From 4ce8687b97ffaad2457bc87eb434985c7fa6e64b Mon Sep 17 00:00:00 2001 From: Christian Lucas Date: Sun, 23 Aug 2015 16:26:27 +0200 Subject: [PATCH 01/18] included real gas thermo in extend 3.1 --- .../compressible/realFluidPisoFoam/Make/files | 3 + .../realFluidPisoFoam/Make/options | 14 + .../compressible/realFluidPisoFoam/UEqn.H | 11 + .../realFluidPisoFoam/createFields.H | 57 ++ .../compressible/realFluidPisoFoam/hEqn.H | 12 + .../compressible/realFluidPisoFoam/pEqn.H | 37 + .../realFluidPisoFoam/realFluidPisoFoam.C | 96 +++ src/thermophysicalModels/basic/Make/files | 2 + .../mixtures/basicMixture/basicMixtures.C | 154 ++++ .../mixtures/basicMixture/makeBasicMixture.H | 11 + .../psiThermo/basicPsiThermo/basicPsiThermo.C | 15 + .../psiThermo/basicPsiThermo/basicPsiThermo.H | 6 + .../basicPsiThermo/makeBasicPsiThermo.H | 22 + .../psiThermo/realGasEThermo/realGasEThermo.C | 516 ++++++++++++++ .../psiThermo/realGasEThermo/realGasEThermo.H | 203 ++++++ .../realGasEThermo/realGasEThermos.C | 237 ++++++ .../psiThermo/realGasHThermo/realGasHThermo.C | 517 ++++++++++++++ .../psiThermo/realGasHThermo/realGasHThermo.H | 203 ++++++ .../realGasHThermo/realGasHThermos.C | 235 ++++++ .../IAPWS_Waterproperties/Allwmake | 26 + .../IAPWSThermo/IAPWS-IF97.C | 602 ++++++++++++++++ .../IAPWSThermo/IAPWS-IF97.H | 231 ++++++ .../IAPWSThermo/IAPWSThermo.C | 476 +++++++++++++ .../IAPWSThermo/IAPWSThermo.H | 198 +++++ .../IAPWSThermo/IAPWSThermos.C | 74 ++ .../IAPWS_Waterproperties/IAPWSThermo/steam.H | 56 ++ .../IAPWS_Waterproperties/Make/files | 4 + .../IAPWS_Waterproperties/Make/options | 8 + src/thermophysicalModels/specie/Make/files | 4 + .../aungierRedlichKwong/aungierRedlichKwong.C | 85 +++ .../aungierRedlichKwong/aungierRedlichKwong.H | 308 ++++++++ .../aungierRedlichKwongI.H | 674 ++++++++++++++++++ .../pengRobinson/pengRobinson.C | 79 ++ .../pengRobinson/pengRobinson.H | 296 ++++++++ .../pengRobinson/pengRobinsonI.H | 646 +++++++++++++++++ .../redlichKwong/redlichKwong.C | 71 ++ .../redlichKwong/redlichKwong.H | 240 +++++++ .../redlichKwong/redlichKwongI.H | 533 ++++++++++++++ .../soaveRedlichKwong/soaveRedlichKwong.C | 78 ++ .../soaveRedlichKwong/soaveRedlichKwong.H | 281 ++++++++ .../soaveRedlichKwong/soaveRedlichKwongI.H | 606 ++++++++++++++++ .../constantHeatCapacity.C | 71 ++ .../constantHeatCapacity.H | 256 +++++++ .../constantHeatCapacityI.H | 402 +++++++++++ .../nasaHeatCapacityPolynomial.C | 76 ++ .../nasaHeatCapacityPolynomial.H | 274 +++++++ .../nasaHeatCapacityPolynomialI.H | 501 +++++++++++++ .../realGasSpecieThermo/realGasSpecieThermo.C | 63 ++ .../realGasSpecieThermo/realGasSpecieThermo.H | 276 +++++++ .../realGasSpecieThermoI.H | 382 ++++++++++ .../constRealGas/constRealGasTransport.C | 56 ++ .../constRealGas/constRealGasTransport.H | 202 ++++++ .../constRealGas/constRealGasTransportI.H | 182 +++++ .../sutherlandRealGasTransport.C | 62 ++ .../sutherlandRealGasTransport.H | 227 ++++++ .../sutherlandRealGasTransportI.H | 266 +++++++ .../realFluidPisoFoam/ras/backStep/0/T | 49 ++ .../realFluidPisoFoam/ras/backStep/0/U | 51 ++ .../realFluidPisoFoam/ras/backStep/0/epsilon | 60 ++ .../realFluidPisoFoam/ras/backStep/0/k | 53 ++ .../realFluidPisoFoam/ras/backStep/0/p | 54 ++ .../realFluidPisoFoam/ras/backStep/Allrun | 9 + .../ras/backStep/constant/RASProperties | 25 + .../backStep/constant/polyMesh/blockMeshDict | 173 +++++ .../constant/thermophysicalProperties | 68 ++ .../backStep/constant/turbulenceProperties | 20 + .../ras/backStep/system/controlDict | 55 ++ .../ras/backStep/system/fvSchemes | 75 ++ .../ras/backStep/system/fvSolution | 97 +++ .../ras/backStep_IAPWS97/0.org/T | 49 ++ .../ras/backStep_IAPWS97/0.org/U | 51 ++ .../ras/backStep_IAPWS97/0.org/epsilon | 58 ++ .../ras/backStep_IAPWS97/0.org/k | 53 ++ .../ras/backStep_IAPWS97/0.org/p | 49 ++ .../ras/backStep_IAPWS97/0/T | 49 ++ .../ras/backStep_IAPWS97/0/U | 51 ++ .../ras/backStep_IAPWS97/0/epsilon | 58 ++ .../ras/backStep_IAPWS97/0/k | 53 ++ .../ras/backStep_IAPWS97/0/p | 49 ++ .../ras/backStep_IAPWS97/Allrun | 9 + .../ras/backStep_IAPWS97/README | 48 ++ .../backStep_IAPWS97/constant/RASProperties | 25 + .../constant/polyMesh/blockMeshDict | 173 +++++ .../constant/polyMesh/boundary | 52 ++ .../constant/thermophysicalProperties | 23 + .../constant/turbulenceProperties | 21 + .../ras/backStep_IAPWS97/system/controlDict | 61 ++ .../ras/backStep_IAPWS97/system/fvSchemes | 75 ++ .../ras/backStep_IAPWS97/system/fvSolution | 97 +++ .../ras/cavity_IAPWS97/0.org/T | 39 + .../ras/cavity_IAPWS97/0.org/U | 43 ++ .../ras/cavity_IAPWS97/0.org/epsilon | 49 ++ .../ras/cavity_IAPWS97/0.org/k | 41 ++ .../ras/cavity_IAPWS97/0.org/p | 39 + .../realFluidPisoFoam/ras/cavity_IAPWS97/0/T | 39 + .../realFluidPisoFoam/ras/cavity_IAPWS97/0/U | 43 ++ .../ras/cavity_IAPWS97/0/epsilon | 49 ++ .../realFluidPisoFoam/ras/cavity_IAPWS97/0/k | 41 ++ .../realFluidPisoFoam/ras/cavity_IAPWS97/0/p | 39 + .../ras/cavity_IAPWS97/Allrun | 9 + .../ras/cavity_IAPWS97/README | 48 ++ .../ras/cavity_IAPWS97/constant/RASProperties | 25 + .../constant/polyMesh/blockMeshDict | 75 ++ .../cavity_IAPWS97/constant/polyMesh/boundary | 40 ++ .../constant/thermophysicalProperties | 23 + .../constant/turbulenceProperties | 21 + .../ras/cavity_IAPWS97/system/controlDict | 62 ++ .../ras/cavity_IAPWS97/system/fvSchemes | 75 ++ .../ras/cavity_IAPWS97/system/fvSolution | 97 +++ .../realFluidPisoFoam/ras/t-junction/0/T | 48 ++ .../realFluidPisoFoam/ras/t-junction/0/U | 47 ++ .../ras/t-junction/0/epsilon | 58 ++ .../realFluidPisoFoam/ras/t-junction/0/k | 52 ++ .../realFluidPisoFoam/ras/t-junction/0/p | 46 ++ .../realFluidPisoFoam/ras/t-junction/Allrun | 9 + .../ras/t-junction/constant/RASProperties | 25 + .../constant/polyMesh/blockMeshDict | 144 ++++ .../constant/thermophysicalProperties | 68 ++ .../t-junction/constant/turbulenceProperties | 20 + .../ras/t-junction/system/controlDict | 55 ++ .../ras/t-junction/system/fvSchemes | 73 ++ .../ras/t-junction/system/fvSolution | 88 +++ 122 files changed, 14746 insertions(+) create mode 100644 applications/solvers/compressible/realFluidPisoFoam/Make/files create mode 100644 applications/solvers/compressible/realFluidPisoFoam/Make/options create mode 100644 applications/solvers/compressible/realFluidPisoFoam/UEqn.H create mode 100644 applications/solvers/compressible/realFluidPisoFoam/createFields.H create mode 100644 applications/solvers/compressible/realFluidPisoFoam/hEqn.H create mode 100644 applications/solvers/compressible/realFluidPisoFoam/pEqn.H create mode 100644 applications/solvers/compressible/realFluidPisoFoam/realFluidPisoFoam.C create mode 100755 src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C create mode 100755 src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H create mode 100755 src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermos.C create mode 100755 src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C create mode 100755 src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H create mode 100755 src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C create mode 100755 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Allwmake create mode 100644 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C create mode 100644 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.H create mode 100755 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C create mode 100755 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H create mode 100755 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermos.C create mode 100644 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/steam.H create mode 100644 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files create mode 100644 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/options create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.H create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwongI.H create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.H create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H create mode 100755 src/thermophysicalModels/specie/thermo/realGasThermo/constantHeatCapacity/constantHeatCapacity.C create mode 100755 src/thermophysicalModels/specie/thermo/realGasThermo/constantHeatCapacity/constantHeatCapacity.H create mode 100755 src/thermophysicalModels/specie/thermo/realGasThermo/constantHeatCapacity/constantHeatCapacityI.H create mode 100755 src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C create mode 100755 src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H create mode 100755 src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H create mode 100755 src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C create mode 100755 src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H create mode 100755 src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H create mode 100644 src/thermophysicalModels/specie/transport/constRealGas/constRealGasTransport.C create mode 100644 src/thermophysicalModels/specie/transport/constRealGas/constRealGasTransport.H create mode 100644 src/thermophysicalModels/specie/transport/constRealGas/constRealGasTransportI.H create mode 100644 src/thermophysicalModels/specie/transport/sutherlandRealGas/sutherlandRealGasTransport.C create mode 100644 src/thermophysicalModels/specie/transport/sutherlandRealGas/sutherlandRealGasTransport.H create mode 100644 src/thermophysicalModels/specie/transport/sutherlandRealGas/sutherlandRealGasTransportI.H create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep/0/T create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep/0/U create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep/0/epsilon create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep/0/k create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep/0/p create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep/Allrun create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/RASProperties create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/polyMesh/blockMeshDict create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/thermophysicalProperties create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/turbulenceProperties create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep/system/controlDict create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSchemes create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSolution create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/T create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/U create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/epsilon create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/k create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/p create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/T create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/U create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/epsilon create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/k create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/p create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/Allrun create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/README create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/RASProperties create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/polyMesh/blockMeshDict create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/polyMesh/boundary create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/thermophysicalProperties create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/turbulenceProperties create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/system/controlDict create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/system/fvSchemes create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/system/fvSolution create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/T create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/U create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/epsilon create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/k create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/p create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/T create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/U create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/epsilon create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/k create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/p create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/Allrun create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/README create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/RASProperties create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/blockMeshDict create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/boundary create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/thermophysicalProperties create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/turbulenceProperties create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/controlDict create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSchemes create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSolution create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/T create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/U create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/epsilon create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/k create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/p create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/t-junction/Allrun create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/RASProperties create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/polyMesh/blockMeshDict create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/thermophysicalProperties create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/turbulenceProperties create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/t-junction/system/controlDict create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/t-junction/system/fvSchemes create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/t-junction/system/fvSolution diff --git a/applications/solvers/compressible/realFluidPisoFoam/Make/files b/applications/solvers/compressible/realFluidPisoFoam/Make/files new file mode 100644 index 000000000..9e9cf08de --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/Make/files @@ -0,0 +1,3 @@ +realFluidPisoFoam.C + +EXE = $(FOAM_APPBIN)/realFluidPisoFoam diff --git a/applications/solvers/compressible/realFluidPisoFoam/Make/options b/applications/solvers/compressible/realFluidPisoFoam/Make/options new file mode 100644 index 000000000..3ae0c0cb7 --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/Make/options @@ -0,0 +1,14 @@ +EXE_INC = \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ + -I$(LIB_SRC)/finiteVolume/lnInclude + +EXE_LIBS = \ + -lfiniteVolume \ + -lmeshTools \ + -lbasicThermophysicalModels \ + -lspecie \ + -lcompressibleTurbulenceModel \ + -lcompressibleRASModels \ + -lcompressibleLESModels diff --git a/applications/solvers/compressible/realFluidPisoFoam/UEqn.H b/applications/solvers/compressible/realFluidPisoFoam/UEqn.H new file mode 100644 index 000000000..64dd52b1b --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/UEqn.H @@ -0,0 +1,11 @@ + fvVectorMatrix UEqn + ( + fvm::ddt(rho, U) + + fvm::div(phi, U) + + turbulence->divDevRhoReff(U) + ); + + if (momentumPredictor) + { + solve(UEqn == -fvc::grad(p)); + } diff --git a/applications/solvers/compressible/realFluidPisoFoam/createFields.H b/applications/solvers/compressible/realFluidPisoFoam/createFields.H new file mode 100644 index 000000000..10110a0f5 --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/createFields.H @@ -0,0 +1,57 @@ + Info<< "Reading thermophysical properties\n" << endl; + + autoPtr pThermo + ( + basicPsiThermo::New(mesh) + ); + basicPsiThermo& thermo = pThermo(); + + volScalarField& p = thermo.p(); + volScalarField& h = thermo.h(); + const volScalarField& psi = thermo.psi(); + const volScalarField& drhodh = thermo.drhodh(); + + volScalarField rho + ( + IOobject + ( + "rho", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + thermo.rho() + ); + + Info<< "\nReading field U\n" << endl; + volVectorField U + ( + IOobject + ( + "U", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh + ); + + #include "compressibleCreatePhi.H" + + Info<< "Creating turbulence model\n" << endl; + autoPtr turbulence + ( + compressible::turbulenceModel::New + ( + rho, + U, + phi, + thermo + ) + ); + + Info<< "Creating field DpDt\n" << endl; + volScalarField DpDt = + fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p); diff --git a/applications/solvers/compressible/realFluidPisoFoam/hEqn.H b/applications/solvers/compressible/realFluidPisoFoam/hEqn.H new file mode 100644 index 000000000..ae60d3316 --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/hEqn.H @@ -0,0 +1,12 @@ +{ + solve + ( + fvm::ddt(rho, h) + + fvm::div(phi, h) + - fvm::laplacian(turbulence->alphaEff(), h) + == + DpDt + ); + + thermo.correct(); +} diff --git a/applications/solvers/compressible/realFluidPisoFoam/pEqn.H b/applications/solvers/compressible/realFluidPisoFoam/pEqn.H new file mode 100644 index 000000000..096076618 --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/pEqn.H @@ -0,0 +1,37 @@ +rho = thermo.rho(); + +volScalarField rUA = 1.0/UEqn.A(); +U = rUA*UEqn.H(); + +phi = + fvc::interpolate(rho)* + ( + (fvc::interpolate(U) & mesh.Sf()) + + fvc::ddtPhiCorr(rUA, rho, U, phi) + ); + +for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) +{ + fvScalarMatrix pEqn + ( + psi*fvm::ddt(p) + + drhodh*fvc::ddt(h) + + fvc::div(phi) + - fvm::laplacian(rho*rUA, p) + ); + + pEqn.solve(); + + if (nonOrth == nNonOrthCorr) + { + phi += pEqn.flux(); + } +} + +#include "rhoEqn.H" +#include "compressibleContinuityErrs.H" + +U -= rUA*fvc::grad(p); +U.correctBoundaryConditions(); + +DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p); diff --git a/applications/solvers/compressible/realFluidPisoFoam/realFluidPisoFoam.C b/applications/solvers/compressible/realFluidPisoFoam/realFluidPisoFoam.C new file mode 100644 index 000000000..d67064aef --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/realFluidPisoFoam.C @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Application + realFluidPisoFoam + +Description + Transient PISO solver for compressible, laminar or turbulent flow o + of real fluids e.g. real gases (cubic equations of state) + + Solver cannot be used with perfect gas library + +\*---------------------------------------------------------------------------*/ + +#include "fvCFD.H" +#include "basicPsiThermo.H" +#include "turbulenceModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + #include "setRootCase.H" + #include "createTime.H" + #include "createMesh.H" + #include "createFields.H" + #include "initContinuityErrs.H" + #include "readTimeControls.H" + #include "compressibleCourantNo.H" + #include "setInitialDeltaT.H" + + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + Info<< "\nStarting time loop\n" << endl; + + while (runTime.run()) + { + #include "readTimeControls.H" + #include "readPISOControls.H" + #include "compressibleCourantNo.H" + #include "setDeltaT.H" + + runTime++; + + Info<< "Time = " << runTime.timeName() << nl << endl; + + #include "rhoEqn.H" + #include "UEqn.H" + + // --- PISO loop + for (int corr=1; corr<=nCorr; corr++) + { + #include "hEqn.H" + #include "pEqn.H" + } + + turbulence->correct(); + + rho = thermo.rho(); + + runTime.write(); + + Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" + << " ClockTime = " << runTime.elapsedClockTime() << " s" + << nl << endl; + } + + Info<< "End\n" << endl; + + return 0; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/Make/files b/src/thermophysicalModels/basic/Make/files index 80bd1f7cf..029c83333 100644 --- a/src/thermophysicalModels/basic/Make/files +++ b/src/thermophysicalModels/basic/Make/files @@ -8,6 +8,8 @@ psiThermo/basicPsiThermo/newBasicPsiThermo.C psiThermo/hPsiThermo/hPsiThermos.C psiThermo/hsPsiThermo/hsPsiThermos.C psiThermo/ePsiThermo/ePsiThermos.C +psiThermo/realGasHThermo/realGasHThermos.C +psiThermo/realGasEThermo/realGasEThermos.C rhoThermo/basicRhoThermo/basicRhoThermo.C rhoThermo/basicRhoThermo/newBasicRhoThermo.C diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C index 380940518..7862d4b11 100644 --- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C +++ b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C @@ -32,15 +32,24 @@ Description #include "makeBasicMixture.H" #include "perfectGas.H" +#include "redlichKwong.H" +#include "pengRobinson.H" +#include "aungierRedlichKwong.H" +#include "soaveRedlichKwong.H" #include "eConstThermo.H" #include "hConstThermo.H" #include "janafThermo.H" +#include "nasaHeatCapacityPolynomial.H" +#include "constantHeatCapacity.H" #include "specieThermo.H" +#include "realGasSpecieThermo.H" #include "constTransport.H" #include "sutherlandTransport.H" +#include "constRealGasTransport.H" +#include "sutherlandRealGasTransport.H" #include "pureMixture.H" @@ -93,6 +102,151 @@ makeBasicMixture perfectGas ); +//CL: Real Gas Mixtures +makeBasicRealFluidMixture +( + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + +makeBasicRealFluidMixture +( + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + +makeBasicRealFluidMixture +( + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + +makeBasicRealFluidMixture +( + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + +makeBasicRealFluidMixture +( + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + +makeBasicRealFluidMixture +( + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + +makeBasicRealFluidMixture +( + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + +makeBasicRealFluidMixture +( + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + +makeBasicRealFluidMixture +( + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + redlichKwong +); + +makeBasicRealFluidMixture +( + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + pengRobinson +); + +makeBasicRealFluidMixture +( + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + aungierRedlichKwong +); + +makeBasicRealFluidMixture +( + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + soaveRedlichKwong +); + +makeBasicRealFluidMixture +( + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + redlichKwong +); + +makeBasicRealFluidMixture +( + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + pengRobinson +); + +makeBasicRealFluidMixture +( + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + aungierRedlichKwong +); + +makeBasicRealFluidMixture +( + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + soaveRedlichKwong +); + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H b/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H index 6dd52fc72..bf9334804 100644 --- a/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H +++ b/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H @@ -46,6 +46,17 @@ defineTemplateTypeNameAndDebugWithName \ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#define makeBasicRealFluidMixture(Mixture,Transport,SpecieThermo,Thermo,EqnOfState) \ + \ +typedef Mixture > > > \ + Mixture##Transport##SpecieThermo##Thermo##EqnOfState; \ + \ +defineTemplateTypeNameAndDebugWithName \ + (Mixture##Transport##SpecieThermo##Thermo##EqnOfState, \ + #Mixture"<"#Transport"<"#SpecieThermo"<"#Thermo"<"#EqnOfState">>>>", 0) + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + #endif // ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.C b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.C index 5cbc60369..e5f8d733b 100644 --- a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.C @@ -48,4 +48,19 @@ Foam::basicPsiThermo::~basicPsiThermo() {} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +const Foam::volScalarField& Foam::basicPsiThermo::drhodh() const +{ + notImplemented("basicPsiThermo::drhodh()"); + return const_cast(volScalarField::null()); +} + +const Foam::volScalarField& Foam::basicPsiThermo::drhode() const +{ + notImplemented("basicPsiThermo::drhode()"); + return const_cast(volScalarField::null()); +} + + // ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H index 41a1e3613..4b8b04e0c 100644 --- a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H @@ -108,6 +108,12 @@ public: { return p_*psi(); } + + //CL: drhodh needed for pressure equation of the real gas solver + virtual const volScalarField& drhodh() const; + + //CL: drhode needed for pressure equation of the real gas solver + virtual const volScalarField& drhode() const; }; diff --git a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H index 2b23c26ed..61fd8bd86 100644 --- a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H @@ -60,6 +60,28 @@ addToRunTimeSelectionTable \ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#define makeBasicRealGasThermo(Cthermo,Mixture,Transport,SpecieThermo,Thermo,EqnOfState)\ + \ +typedef Cthermo > > > > \ + Cthermo##Mixture##Transport##SpecieThermo##Thermo##EqnOfState; \ + \ +defineTemplateTypeNameAndDebugWithName \ +( \ + Cthermo##Mixture##Transport##SpecieThermo##Thermo##EqnOfState, \ + #Cthermo \ + "<"#Mixture"<"#Transport"<"#SpecieThermo"<"#Thermo"<"#EqnOfState">>>>>", \ + 0 \ +); \ + \ +addToRunTimeSelectionTable \ +( \ + basicPsiThermo, \ + Cthermo##Mixture##Transport##SpecieThermo##Thermo##EqnOfState, \ + fvMesh \ +) + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C new file mode 100755 index 000000000..ef9a384fe --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C @@ -0,0 +1,516 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "realGasEThermo.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template +void Foam::realGasEThermo::calculate() +{ + const scalarField& eCells = e_.internalField(); + const scalarField& pCells = this->p_.internalField(); + + scalarField& TCells = this->T_.internalField(); + scalarField& rhoCells= this->rho_.internalField(); + scalarField& psiCells = this->psi_.internalField(); + scalarField& drhodeCells = this->drhode_.internalField(); + scalarField& muCells = this->mu_.internalField(); + scalarField& alphaCells = this->alpha_.internalField(); + + + forAll(TCells, celli) + { + const typename MixtureType::thermoType& mixture_ = + this->cellMixture(celli); + + mixture_.TE(eCells[celli], TCells[celli], pCells[celli], rhoCells[celli]); + psiCells[celli]=mixture_.psiE(rhoCells[celli], TCells[celli]); + drhodeCells[celli]=mixture_.drhodE(rhoCells[celli], TCells[celli]); + muCells[celli] = mixture_.mu(TCells[celli]); + alphaCells[celli] = mixture_.alpha(rhoCells[celli], TCells[celli]); + } + + + forAll(T_.boundaryField(), patchi) + { + fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; + fvPatchScalarField& ppsi = this->psi_.boundaryField()[patchi]; + fvPatchScalarField& pdrhode = this->drhode_.boundaryField()[patchi]; + fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; + fvPatchScalarField& pe = e_.boundaryField()[patchi]; + fvPatchScalarField& pmu = this->mu_.boundaryField()[patchi]; + fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi]; + + + if (pT.fixesValue()) + { + + forAll(pT, facei) + { + const typename MixtureType::thermoType& mixture_ = + this->patchFaceMixture(patchi, facei); + + prho[facei] = mixture_.rho(pp[facei], pT[facei],prho[facei]); + ppsi[facei]=mixture_.psiE(prho[facei],pT[facei]); + pdrhode[facei]=mixture_.drhodE(prho[facei],pT[facei]); + pe[facei] = mixture_.E(prho[facei], pT[facei]); + pmu[facei] = mixture_.mu(pT[facei]); + palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); + } + } + else + { + forAll(pT, facei) + { + const typename MixtureType::thermoType& mixture_ = + this->patchFaceMixture(patchi, facei); + mixture_.TE(pe[facei], pT[facei],pp[facei],prho[facei]); + pmu[facei] = mixture_.mu(pT[facei]); + ppsi[facei]=mixture_.psiE(prho[facei],pT[facei]); + pdrhode[facei]=mixture_.drhodE(prho[facei],pT[facei]); + palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); + } + } + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::realGasEThermo::realGasEThermo +( + const fvMesh& mesh, + const objectRegistry& obj +) +: + basicPsiThermo(mesh, obj), + MixtureType(*this, mesh, obj), + + e_ + ( + IOobject + ( + "e", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, 0, 0), + this->eBoundaryTypes() + ), + + rho_ + ( + IOobject + ( + "rhoThermo", + mesh.time().timeName(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::NO_WRITE + ), + mesh, + dimDensity + ), + + drhode_ + ( + IOobject + ( + "drhode", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(1, -5, 2, 0, 0) + ) +{ + + scalarField& eCells = e_.internalField(); + const scalarField& TCells = this->T_.internalField(); + const scalarField& pCells =this->p_.internalField(); + scalarField& rhoCells =this->rho_.internalField(); + + + forAll(rhoCells, celli) + { + rhoCells[celli]=this->cellMixture(celli).rho(pCells[celli],TCells[celli]); + } + + + forAll(rho_.boundaryField(), patchi) + { + rho_.boundaryField()[patchi] == + rho(this->T_.boundaryField()[patchi], patchi); + } + + + forAll(eCells, celli) + { + eCells[celli] = this->cellMixture(celli).E(rhoCells[celli],TCells[celli]); + } + + + forAll(e_.boundaryField(), patchi) + { + e_.boundaryField()[patchi] == + e(this->T_.boundaryField()[patchi], patchi); + } + + eBoundaryCorrection(e_); + calculate(); + + // Switch on saving old time + this->psi_.oldTime(); + +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template +Foam::realGasEThermo::~realGasEThermo() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template +void Foam::realGasEThermo::correct() +{ + if (debug) + { + Info<< "entering realGasEThermo::correct()" << endl; + } + + // force the saving of the old-time values + this->psi_.oldTime(); + + calculate(); + + if (debug) + { + Info<< "exiting realGasEThermo::correct()" << endl; + } +} + + +template +Foam::tmp Foam::realGasEThermo::e +( + const scalarField& T, + const labelList& cells +) const +{ + //CL: need the pressure of the internal field to calculate the realGas internal energy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const scalarField& pCells = this->p_.internalField(); + + tmp te(new scalarField(T.size())); + scalarField& e = te(); + + forAll(T, celli) + { + e[celli] = this->cellMixture(cells[celli]).E(this->cellMixture(cells[celli]).rho(pCells[cells[celli]],T[celli]),T[celli]); + } + + return te; +} + + +template +Foam::tmp Foam::realGasEThermo::e +( + const scalarField& T, + const label patchi +) const +{ + //CL: need the pressure at the patch to calculate the realGas internal energy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp te(new scalarField(T.size())); + scalarField& e = te(); + + forAll(T, facei) + { + e[facei] = this->patchFaceMixture(patchi, facei).E(this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]),T[facei]); + } + + return te; +} + + +template +Foam::tmp Foam::realGasEThermo::rho +( + const scalarField& T, + const label patchi +) const +{ + //CL: need the pressure at the patch to calculate the realGas density + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp trho(new scalarField(T.size())); + scalarField& rho = trho(); + + forAll(T, facei) + { + rho[facei] = this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]); + } + + return trho; +} + + +template +Foam::tmp Foam::realGasEThermo::Cp +( + const scalarField& T, + const label patchi +) const +{ + //CL: need the pressure at the patch to calculate the realGas cp + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp tCp(new scalarField(T.size())); + scalarField& cp = tCp(); + + forAll(T, facei) + { + cp[facei] = this->patchFaceMixture(patchi, facei).Cp(this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]),T[facei]); + } + + return tCp; +} + + +template +Foam::tmp Foam::realGasEThermo::Cp() const +{ + const fvMesh& mesh = this->T_.mesh(); + + tmp tCp + ( + new volScalarField + ( + IOobject + ( + "Cp", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, -1, 0), + this->T_.boundaryField().types() + ) + ); + + volScalarField& cp = tCp(); + + forAll(this->T_, celli) + { + cp[celli] = this->cellMixture(celli).Cp(this->rho_[celli], this->T_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + const fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; + const fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; + fvPatchScalarField& pCp = cp.boundaryField()[patchi]; + + forAll(pT, facei) + { + pCp[facei] = this->patchFaceMixture(patchi, facei).Cp(prho[facei], pT[facei]); + } + } + + return tCp; +} + + +template +Foam::tmp Foam::realGasEThermo::Cv +( + const scalarField& T, + const label patchi +) const +{ + //CL: need the pressure at the patch to calculate the realGas internal energy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp tCv(new scalarField(T.size())); + scalarField& cv = tCv(); + + forAll(T, facei) + { + cv[facei] = this->patchFaceMixture(patchi, facei).Cv(this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]), T[facei]); + } + + return tCv; +} + + +// CL: Maybe this function should be changed so that it is not "const" function anymore +template +Foam::tmp Foam::realGasEThermo::rho() const +{ + + const fvMesh& mesh = this->T_.mesh(); + + //CL: create an rho Field, which will be return + //CL: the problem is that this function is "const", + //CL: so a new variabel is needed + tmp trho + ( + new volScalarField + ( + IOobject + ( + "rhoFunctionThermo", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimDensity + ) + ); + + //CL: copy "old" rho value onto the new rho field as start point + //CL: for the newton solver used in this->TE( ... ) + trho()=rho_; + + volScalarField& rho = trho(); + + const scalarField& eCells = e_.internalField(); + const scalarField& pCells = this->p_.internalField(); + scalarField TCells = this->T_.internalField(); + + forAll(pCells, celli) + { + const typename MixtureType::thermoType& mixture_ = + this->cellMixture(celli); + + // getting the new rho Field + mixture_.TE(eCells[celli], TCells[celli], pCells[celli], rho[celli]); + } + + forAll(p_.boundaryField(), patchi) + { + fvPatchScalarField pp = this->p_.boundaryField()[patchi]; + fvPatchScalarField pe = e_.boundaryField()[patchi]; + fvPatchScalarField pT = this->T_.boundaryField()[patchi]; + + fvPatchScalarField& prho_ = rho.boundaryField()[patchi]; + + forAll(pp, facei) + { + const typename MixtureType::thermoType& mixture_ = + this->patchFaceMixture(patchi, facei); + + // getting the new rho patch Field + mixture_.TE(pe[facei], pT[facei],pp[facei],prho_[facei]); + } + } + return trho; +} + + +template +Foam::tmp Foam::realGasEThermo::Cv() const +{ + + const fvMesh& mesh = this->T_.mesh(); + + tmp tCv + ( + new volScalarField + ( + IOobject + ( + "Cv", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, -1, 0) + ) + ); + + volScalarField& cv = tCv(); + + forAll(this->T_, celli) + { + cv[celli] = this->cellMixture(celli).Cv(this->rho_[celli], this->T_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + cv.boundaryField()[patchi] = + Cv(this->T_.boundaryField()[patchi], patchi); + } + + return tCv; +} + + +template +bool Foam::realGasEThermo::read() +{ + if (basicPsiThermo::read()) + { + MixtureType::read(*this); + return true; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H new file mode 100755 index 000000000..df1aa4570 --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H @@ -0,0 +1,203 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Class + Foam::realGasEThermo + +Description + Internal energy for a real gas fluid libary + + +SourceFiles + realGasEThermo.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef realGasEThermo_H +#define realGasEThermo_H + +#include "basicPsiThermo.H" +#include "basicMixture.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class realGasEThermo Declaration +\*---------------------------------------------------------------------------*/ + +template +class realGasEThermo +: + public basicPsiThermo, + public MixtureType +{ + // Private data + + //- Enthalpy field + volScalarField e_; + + //- DensityField + volScalarField rho_; + + //- drhode_Field + volScalarField drhode_; + + // Private member functions + + //- Calculate the thermo variables + void calculate(); + + //- Construct as copy (not implemented) + realGasEThermo(const realGasEThermo&); + + +public: + + //- Runtime type information + TypeName("realGasEThermo"); + + + // Constructors + + //- Construct from mesh + realGasEThermo(const fvMesh&, const objectRegistry& obj); + + //- Destructor + virtual ~realGasEThermo(); + + + // Member functions + + //- Return the compostion of the mixture + virtual basicMixture& composition() + { + return *this; + } + + //- Return the compostion of the mixture + virtual const basicMixture& composition() const + { + return *this; + } + + //- Update properties + virtual void correct(); + + + // Access to thermodynamic state variables + + //- Enthalpy [J/kg] + // Non-const access allowed for transport equations + virtual volScalarField& e() + { + return e_; + } + + //- Enthalpy [J/kg] + virtual const volScalarField& e() const + { + return e_; + } + + //CL: drhode needed for pressure equation of the real gas solver + virtual const volScalarField& drhode() const + { + return drhode_; + } + + // Fields derived from thermodynamic state variables + + //- Enthalpy for cell-set [J/kg] + virtual tmp e + ( + const scalarField& T, + const labelList& cells + ) const; + + //- Enthalpy for patch [J/kg] + virtual tmp e + ( + const scalarField& T, + const label patchi + ) const; + + //- Density for patch [J/kg] + virtual tmp rho + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant pressure for patch [J/kg/K] + virtual tmp Cp + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant pressure [J/kg/K] + virtual tmp Cp() const; + + //- Heat capacity at constant volume for patch [J/kg/K] + virtual tmp Cv + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant volume [J/kg/K] + virtual tmp Cv() const; + + //- Density [kg/m^3] - uses current value of pressure + virtual tmp rho() const; + + + //- Read thermophysicalProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + +#ifdef NoRepository +# include "realGasEThermo.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermos.C b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermos.C new file mode 100755 index 000000000..3d9ac2678 --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermos.C @@ -0,0 +1,237 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + + +#include "makeBasicPsiThermo.H" + +#include "redlichKwong.H" +#include "pengRobinson.H" +#include "aungierRedlichKwong.H" +#include "soaveRedlichKwong.H" +#include "nasaHeatCapacityPolynomial.H" +#include "realGasSpecieThermo.H" +#include "constTransport.H" +#include "constRealGasTransport.H" +#include "sutherlandTransport.H" +#include "sutherlandRealGasTransport.H" +#include "constantHeatCapacity.H" +#include "pureMixture.H" +#include "realGasEThermo.H" + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + pengRobinson +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + aungierRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + redlichKwong +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + soaveRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + pengRobinson +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + aungierRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + redlichKwong +); + + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + soaveRedlichKwong +); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C new file mode 100755 index 000000000..970194f6a --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C @@ -0,0 +1,517 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "realGasHThermo.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template +void Foam::realGasHThermo::calculate() +{ + const scalarField& hCells = h_.internalField(); + const scalarField& pCells = this->p_.internalField(); + + scalarField& TCells = this->T_.internalField(); + scalarField& rhoCells= this->rho_.internalField(); + scalarField& psiCells = this->psi_.internalField(); + scalarField& drhodhCells = this->drhodh_.internalField(); + scalarField& muCells = this->mu_.internalField(); + scalarField& alphaCells = this->alpha_.internalField(); + + + forAll(TCells, celli) + { + const typename MixtureType::thermoType& mixture_ = + this->cellMixture(celli); + + mixture_.TH(hCells[celli], TCells[celli], pCells[celli], rhoCells[celli]); + psiCells[celli]=mixture_.psi(rhoCells[celli], TCells[celli]); + drhodhCells[celli]=mixture_.drhodH(rhoCells[celli], TCells[celli]); + muCells[celli] = mixture_.mu(TCells[celli]); + alphaCells[celli] = mixture_.alpha(rhoCells[celli], TCells[celli]); + } + + + forAll(T_.boundaryField(), patchi) + { + fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; + fvPatchScalarField& ppsi = this->psi_.boundaryField()[patchi]; + fvPatchScalarField& pdrhodh = this->drhodh_.boundaryField()[patchi]; + fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; + fvPatchScalarField& ph = h_.boundaryField()[patchi]; + fvPatchScalarField& pmu = this->mu_.boundaryField()[patchi]; + fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi]; + + + if (pT.fixesValue()) + { + + forAll(pT, facei) + { + const typename MixtureType::thermoType& mixture_ = + this->patchFaceMixture(patchi, facei); + + prho[facei] = mixture_.rho(pp[facei], pT[facei],prho[facei]); + ppsi[facei]=mixture_.psi(prho[facei],pT[facei]); + pdrhodh[facei]=mixture_.drhodH(prho[facei],pT[facei]); + ph[facei] = mixture_.H(prho[facei], pT[facei]); + pmu[facei] = mixture_.mu(pT[facei]); + palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); + } + } + else + { + forAll(pT, facei) + { + const typename MixtureType::thermoType& mixture_ = + this->patchFaceMixture(patchi, facei); + + mixture_.TH(ph[facei], pT[facei],pp[facei],prho[facei]); + pmu[facei] = mixture_.mu(pT[facei]); + ppsi[facei]=mixture_.psi(prho[facei],pT[facei]); + pdrhodh[facei]=mixture_.drhodH(prho[facei],pT[facei]); + palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); + } + } + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::realGasHThermo::realGasHThermo +( + const fvMesh& mesh, + const objectRegistry& obj +) +: + basicPsiThermo(mesh, obj), + MixtureType(*this, mesh, obj), + + h_ + ( + IOobject + ( + "h", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, 0, 0), + this->hBoundaryTypes() + ), + + rho_ + ( + IOobject + ( + "rhoThermo", + mesh.time().timeName(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::NO_WRITE + ), + mesh, + dimDensity + ), + + drhodh_ + ( + IOobject + ( + "drhodh", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(1, -5, 2, 0, 0) + ) +{ + + scalarField& hCells = h_.internalField(); + const scalarField& TCells = this->T_.internalField(); + const scalarField& pCells =this->p_.internalField(); + scalarField& rhoCells =this->rho_.internalField(); + + + forAll(rhoCells, celli) + { + rhoCells[celli]=this->cellMixture(celli).rho(pCells[celli],TCells[celli]); + } + + + forAll(rho_.boundaryField(), patchi) + { + rho_.boundaryField()[patchi] == + rho(this->T_.boundaryField()[patchi], patchi); + } + + + forAll(hCells, celli) + { + hCells[celli] = this->cellMixture(celli).H(rhoCells[celli],TCells[celli]); + } + + + forAll(h_.boundaryField(), patchi) + { + h_.boundaryField()[patchi] == + h(this->T_.boundaryField()[patchi], patchi); + } + + hBoundaryCorrection(h_); + calculate(); + + // Switch on saving old time + this->psi_.oldTime(); + +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template +Foam::realGasHThermo::~realGasHThermo() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template +void Foam::realGasHThermo::correct() +{ + if (debug) + { + Info<< "entering realGasHThermo::correct()" << endl; + } + + // force the saving of the old-time values + this->psi_.oldTime(); + + calculate(); + + if (debug) + { + Info<< "exiting realGasHThermo::correct()" << endl; + } +} + + +template +Foam::tmp Foam::realGasHThermo::h +( + const scalarField& T, + const labelList& cells +) const +{ + //CL: need the pressure of the internal field to calculate the realGas enthalpy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const scalarField& pCells = this->p_.internalField(); + + tmp th(new scalarField(T.size())); + scalarField& h = th(); + + forAll(T, celli) + { + h[celli] = this->cellMixture(cells[celli]).H(this->cellMixture(cells[celli]).rho(pCells[cells[celli]],T[celli]),T[celli]); + } + + return th; +} + + +template +Foam::tmp Foam::realGasHThermo::h +( + const scalarField& T, + const label patchi +) const +{ + //CL: need the pressure at the patch to calculate the realGas enthalpy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp th(new scalarField(T.size())); + scalarField& h = th(); + + forAll(T, facei) + { + h[facei] = this->patchFaceMixture(patchi, facei).H(this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]),T[facei]); + } + + return th; +} + + +template +Foam::tmp Foam::realGasHThermo::rho +( + const scalarField& T, + const label patchi +) const +{ + //CL: need the pressure at the patch to calculate the realGas enthalpy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp trho(new scalarField(T.size())); + scalarField& rho = trho(); + + forAll(T, facei) + { + rho[facei] = this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]); + } + + return trho; +} + + +template +Foam::tmp Foam::realGasHThermo::Cp +( + const scalarField& T, + const label patchi +) const +{ + //CL: need the pressure at the patch to calculate the realGas enthalpy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp tCp(new scalarField(T.size())); + scalarField& cp = tCp(); + + forAll(T, facei) + { + cp[facei] = this->patchFaceMixture(patchi, facei).Cp(this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]),T[facei]); + } + + return tCp; +} + + +template +Foam::tmp Foam::realGasHThermo::Cp() const +{ + const fvMesh& mesh = this->T_.mesh(); + + tmp tCp + ( + new volScalarField + ( + IOobject + ( + "Cp", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, -1, 0), + this->T_.boundaryField().types() + ) + ); + + volScalarField& cp = tCp(); + + forAll(this->T_, celli) + { + cp[celli] = this->cellMixture(celli).Cp(this->rho_[celli], this->T_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + const fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; + const fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; + fvPatchScalarField& pCp = cp.boundaryField()[patchi]; + + forAll(pT, facei) + { + pCp[facei] = this->patchFaceMixture(patchi, facei).Cp(prho[facei], pT[facei]); + } + } + + return tCp; +} + + +template +Foam::tmp Foam::realGasHThermo::Cv +( + const scalarField& T, + const label patchi +) const +{ + //CL: need the pressure at the patch to calculate the realGas enthalpy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp tCv(new scalarField(T.size())); + scalarField& cv = tCv(); + + forAll(T, facei) + { + cv[facei] = this->patchFaceMixture(patchi, facei).Cv(this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]), T[facei]); + } + + return tCv; +} + + +// CL: Maybe this function should be changed so that it is not "const" fucntion anymore +template +Foam::tmp Foam::realGasHThermo::rho() const +{ + + const fvMesh& mesh = this->T_.mesh(); + + //CL: create a rho Field, which will be return + //CL: the problem is that this function is "const", + //CL: so a new variabel is needed + tmp trho + ( + new volScalarField + ( + IOobject + ( + "rhoFunctionThermo", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimDensity + ) + ); + + //CL: copy "old" rho value onto the new rho field as start point + //CL: for the newton solver used in this->TH( ... ) + trho()=rho_; + + volScalarField& rho = trho(); + + const scalarField& hCells = h_.internalField(); + const scalarField& pCells = this->p_.internalField(); + scalarField TCells = this->T_.internalField(); + + forAll(pCells, celli) + { + const typename MixtureType::thermoType& mixture_ = + this->cellMixture(celli); + + // getting the new rho Field + mixture_.TH(hCells[celli], TCells[celli], pCells[celli], rho[celli]); + } + + forAll(p_.boundaryField(), patchi) + { + fvPatchScalarField pp = this->p_.boundaryField()[patchi]; + fvPatchScalarField ph = h_.boundaryField()[patchi]; + fvPatchScalarField pT = this->T_.boundaryField()[patchi]; + + fvPatchScalarField& prho_ = rho.boundaryField()[patchi]; + + forAll(pp, facei) + { + const typename MixtureType::thermoType& mixture_ = + this->patchFaceMixture(patchi, facei); + + // getting the new rho patch Field + mixture_.TH(ph[facei], pT[facei],pp[facei],prho_[facei]); + } + } + return trho; +} + + +template +Foam::tmp Foam::realGasHThermo::Cv() const +{ + + const fvMesh& mesh = this->T_.mesh(); + + tmp tCv + ( + new volScalarField + ( + IOobject + ( + "Cv", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, -1, 0) + ) + ); + + volScalarField& cv = tCv(); + + forAll(this->T_, celli) + { + cv[celli] = this->cellMixture(celli).Cv(this->rho_[celli], this->T_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + cv.boundaryField()[patchi] = + Cv(this->T_.boundaryField()[patchi], patchi); + } + + return tCv; +} + + +template +bool Foam::realGasHThermo::read() +{ + if (basicPsiThermo::read()) + { + MixtureType::read(*this); + return true; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H new file mode 100755 index 000000000..05cf9c770 --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H @@ -0,0 +1,203 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Class + Foam::realGasHThermo + +Description + Enthalpy for a real gas fluid libary + + +SourceFiles + realGasHThermo.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef realGasHThermo_H +#define realGasHThermo_H + +#include "basicPsiThermo.H" +#include "basicMixture.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class realGasHThermo Declaration +\*---------------------------------------------------------------------------*/ + +template +class realGasHThermo +: + public basicPsiThermo, + public MixtureType +{ + // Private data + + //- Enthalpy field + volScalarField h_; + + //- DensityField + volScalarField rho_; + + //- drhodh_Field + volScalarField drhodh_; + + // Private member functions + + //- Calculate the thermo variables + void calculate(); + + //- Construct as copy (not implemented) + realGasHThermo(const realGasHThermo&); + + +public: + + //- Runtime type information + TypeName("realGasHThermo"); + + + // Constructors + + //- Construct from mesh + realGasHThermo(const fvMesh&, const objectRegistry& obj); + + //- Destructor + virtual ~realGasHThermo(); + + + // Member functions + + //- Return the compostion of the mixture + virtual basicMixture& composition() + { + return *this; + } + + //- Return the compostion of the mixture + virtual const basicMixture& composition() const + { + return *this; + } + + //- Update properties + virtual void correct(); + + + // Access to thermodynamic state variables + + //- Enthalpy [J/kg] + // Non-const access allowed for transport equations + virtual volScalarField& h() + { + return h_; + } + + //- Enthalpy [J/kg] + virtual const volScalarField& h() const + { + return h_; + } + + //CL: drhodh needed for pressure equation of the real gas solver + virtual const volScalarField& drhodh() const + { + return drhodh_; + } + + // Fields derived from thermodynamic state variables + + //- Enthalpy for cell-set [J/kg] + virtual tmp h + ( + const scalarField& T, + const labelList& cells + ) const; + + //- Enthalpy for patch [J/kg] + virtual tmp h + ( + const scalarField& T, + const label patchi + ) const; + + //- Density for patch [J/kg] + virtual tmp rho + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant pressure for patch [J/kg/K] + virtual tmp Cp + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant pressure [J/kg/K] + virtual tmp Cp() const; + + //- Heat capacity at constant volume for patch [J/kg/K] + virtual tmp Cv + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant volume [J/kg/K] + virtual tmp Cv() const; + + //- Density [kg/m^3] - uses current value of pressure + virtual tmp rho() const; + + + //- Read thermophysicalProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + +#ifdef NoRepository +# include "realGasHThermo.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C new file mode 100755 index 000000000..636632e01 --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C @@ -0,0 +1,235 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "makeBasicPsiThermo.H" +#include "redlichKwong.H" +#include "pengRobinson.H" +#include "aungierRedlichKwong.H" +#include "soaveRedlichKwong.H" +#include "nasaHeatCapacityPolynomial.H" +#include "realGasSpecieThermo.H" +#include "constTransport.H" +#include "constRealGasTransport.H" +#include "sutherlandTransport.H" +#include "sutherlandRealGasTransport.H" +#include "constantHeatCapacity.H" +#include "pureMixture.H" +#include "realGasHThermo.H" + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + pengRobinson +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + aungierRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + redlichKwong +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + sutherlandRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + soaveRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + pengRobinson +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + aungierRedlichKwong +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + redlichKwong +); + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + constRealGasTransport, + realGasSpecieThermo, + constantHeatCapacity, + soaveRedlichKwong +); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Allwmake b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Allwmake new file mode 100755 index 000000000..8f4cb8ce3 --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Allwmake @@ -0,0 +1,26 @@ +#!/bin/bash +cd ${0%/*} || exit 1 # run from this directory + + +# Installing freeSteam 2.1 +if [ ! -d "freesteam-2.1" ]; then + wget http://sourceforge.net/projects/freesteam/files/freesteam/2.1/freesteam-2.1.tar.bz2 + tar xjvf freesteam-2.1.tar.bz2 + rm freesteam-2.1.tar.bz2 +fi + +#installing required packages for freesteam +sudo apt-get install subversion scons libgsl0-dev python-dev swig ipython python-matplotlib + +#compiling freesteam +cd freesteam-2.1 +scons +cd - + +#copy dynamic library to $WM_PROJECT_DIR/lib/ +cp freesteam-2.1/libfreesteam.so $WM_PROJECT_DIR/lib/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_COMPILE_OPTION + +#compiling classes to connect freesteam to foam +wmake libso + +# ----------------------------------------------------------------- end-of-file diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C new file mode 100644 index 000000000..f868ec577 --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C @@ -0,0 +1,602 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + + + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany +\*---------------------------------------------------------------------------*/ + +#include "IAPWS-IF97.H" +#include +#include + + +//CL: calculated all (minimal) needed properties for a given pressure and enthalpy +void Foam::calculateProperties_ph +( + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha +) +{ + SteamState S; + + // CL: vapor mass fraction is also calculated in calculateProperties_h + // CL: in this fuction, x is a dummy variable and x is not return to IAPWSThermo.C + scalar x; + + S=freesteam_set_ph(p,h); + calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); +} + + +//CL: calculated all (minimal) needed properties + the vapor mass fraction for a given pressure and enthalpy +void Foam::calculateProperties_ph +( + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x +) +{ + SteamState S; + + S=freesteam_set_ph(p,h); + calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); +} + + +//CL: calculated all (minimal) needed properties for a given pressure and temperature +void Foam::calculateProperties_pT +( + scalar &p, + scalar &T, + scalar &h, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha +) +{ + SteamState S; + + // CL: vapor mass fraction is also calculated in calculateProperties_h + // CL: in this fuction, x is a dummy variable and x is not return to IAPWSThermo. + scalar x; + + S=freesteam_set_pT(p,T); + calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); +} + + +//CL: calculated all (minimal) needed properties + the vapor mass fraction for a given pressure and temperature +void Foam::calculateProperties_pT +( + scalar &p, + scalar &T, + scalar &h, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x +) +{ + SteamState S; + + S=freesteam_set_pT(p,T); + calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); +} + + +//CL: calculated the properties --> this function is called by the functions above +//CL: does not calulated the internal energy, if this is needed e.g. for sonicFoam +//CL: the function has to be changed a little bit +void Foam::calculateProperties_h +( + SteamState S, + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x +) +{ + label region; + scalar kappa,lambda,cp,beta; + + region=freesteam_region(S); + + if (region==1) + { + p=S.R1.p; + T=S.R1.T; + rho=1/freesteam_region1_v_pT(S.R1.p,S.R1.T); + h=freesteam_region1_h_pT(S.R1.p,S.R1.T); + x=0; + + //Cl: note: in FreeStream, beta=1/V*(dV/dP)_P=const is called alphaV (in this region) + //Cl: note: in FreeStream, kappa=1/V*(dV/dP)_T=const is called kappaT (in this region) + kappa=freesteam_region1_kappaT_pT(S.R1.p,S.R1.T); + beta=freesteam_region1_alphav_pT(S.R1.p,S.R1.T); + cp=freesteam_region1_cp_pT(S.R1.p,S.R1.T); + + //CL: getting derivatives using Bridgmans table + //CL: psi=(drho/dp)_h=const + //CL: drhodh=(drho/dh)_p=const + psi=-((T*beta*beta-beta)/cp-kappa*rho); + drhodh=-rho*beta/cp; + + //CL: getting transport properties + mu=freesteam_mu_rhoT(rho, T); + lambda=freesteam_k_rhoT(rho,T); + alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density + } + else if (region==2) + { + p=S.R2.p; + T=S.R2.T; + rho=1/freesteam_region2_v_pT(S.R2.p,S.R2.T); + h=freesteam_region2_h_pT(S.R2.p,S.R2.T); + x=1; + + //Cl: note: in FreeStream, beta=1/V*(dV/dP)_P=const is called alphaV (in this region) + //Cl: note: in FreeStream, kappa=1/V*(dV/dP)_T=const is called kappaT (in this region) + kappa=freesteam_region2_kappaT_pT(S.R2.p,S.R2.T); + beta=freesteam_region2_alphav_pT(S.R2.p,S.R2.T); + cp=freesteam_region2_cp_pT(S.R2.p,S.R2.T); + + //CL: getting derivatives using Bridgmans table + //CL: psi=(drho/dp)_h=const + //CL: drhodh=(drho/dh)_p=const + psi=-((T*beta*beta-beta)/cp-kappa*rho); + drhodh=-rho*beta/cp; + + //CL: getting transport properties + mu=freesteam_mu_rhoT(rho, T); + lambda=freesteam_k_rhoT(rho,T); + alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density + } + else if (region==3) + { + scalar gamma,cv; + + rho=S.R3.rho; + T=S.R3.T; + p=freesteam_region3_p_rhoT(S.R3.rho,S.R3.T); + h=freesteam_region3_h_rhoT(S.R3.rho,S.R3.T); + + //CL= when hx=0 else x=1 + if (h<2084256.263) + { + x=0; + } + else + { + x=1; + } + + //Cl: note: beta=1/V*(dV/dP)_P=const + //Cl: note: kappa=1/V*(dV/dP)_T=const + //Cl: note: in FreeStream, gamma=1/p*(dp/dT)_v=const is called alphap (in this region) + gamma=freesteam_region3_alphap_rhoT(S.R3.rho,S.R3.T); + cp=freesteam_region3_cp_rhoT(S.R3.rho,S.R3.T); + cv=freesteam_region3_cv_rhoT(S.R3.rho,S.R3.T); + beta=(cp-cv)/(S.R3.T/S.R3.rho*p*gamma); + kappa=(cp-cv)/(S.R3.T/S.R3.rho*p*p*gamma*gamma); + + //CL: getting derivatives using Bridgmans table + //CL: psi=(drho/dp)_h=const + //CL: drhodh=(drho/dh)_p=const + psi=-((T*beta*beta-beta)/cp-kappa*rho); + drhodh=-rho*beta/cp; + + + //CL: getting transport properties + mu=freesteam_mu_rhoT(rho, T); + lambda=freesteam_k_rhoT(rho,T); + alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density + + } + else if (region==4) + { + scalar rhov,rhol,betav,betal,kappav,kappal,vv,vl,cpl,cpv,hl,hv,cp; + scalar dvldp,dvvdp,dhldp,dhvdp; + scalar dpdT,dvdh,dvdp,dxdp; + + SteamState Sl,Sv; + + x=S.R4.x; + T=S.R4.T; + rho=1/freesteam_region4_v_Tx(S.R4.T,S.R4.x); + h=freesteam_region4_h_Tx(S.R4.T,S.R4.x); + p=freesteam_region4_psat_T(S.R4.T); + cp=freesteam_region4_cp_Tx(S.R4.T,S.R4.x); + + + //CL: Getting density on the vapour and liquid lines + rhov=freesteam_region4_rhog_T(S.R4.T); + rhol=freesteam_region4_rhof_T(S.R4.T); + vv=1/rhov; + vl=1/rhol; + + //CL: getting derivatives --> this is a bit tricky inside the vapor dome + + dpdT=freesteam_region4_dpsatdT_T(S.R4.T); + + // getting the states outside the vapour dome + Sl=freesteam_set_pv(p,vl-0.0000001); //inside region 1 + Sv=freesteam_set_pv(p,vv+0.0000001); //inside region 2 + + kappal=freesteam_region1_kappaT_pT(Sl.R1.p,Sl.R1.T); + kappav=freesteam_region2_kappaT_pT(Sv.R2.p,Sv.R2.T); + + betal=freesteam_region1_alphav_pT(Sl.R1.p,Sl.R1.T); + betav=freesteam_region2_alphav_pT(Sv.R2.p,Sv.R2.T); + + cpl=freesteam_region1_cp_pT(Sl.R1.p,Sl.R1.T); + cpv=freesteam_region2_cp_pT(Sv.R2.p,Sv.R2.T); + + hl=freesteam_region1_h_pT(Sl.R1.p,Sl.R1.T); + hv=freesteam_region2_h_pT(Sv.R2.p,Sv.R2.T); + + + //calculation derviatives on liquid and vapour line + dvldp=betal*vl/dpdT-kappal*vl; + dvvdp=betav*vv/dpdT-kappav*vv; + + dhldp=vl*(1-betal*Sl.R1.T)+cpl/dpdT; + dhvdp=vv*(1-betav*Sv.R2.T)+cpv/dpdT; + + dxdp=-dhldp/(hv-hl) + +(h-hl)/((hv-hl)*(hv-hl)) + *(dhvdp-dhldp); + + //CL: psi=(drho/dp)_h=const + dvdp=dvldp+(dvvdp-dvldp)*x+(vv-vl)*dxdp; + psi=-rho*rho*dvdp; + + //CL: drhodh=(drho/dh)_p=const + dvdh=(vv-vl)/(hv-hl); + drhodh=-rho*rho*dvdh; + + //CL: getting transport properties + mu=freesteam_mu_rhoT(rho, T); + lambda=freesteam_k_rhoT(rho,T); + alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density + } + else + { + std::cout<<"IAPWS-IF97 error, outside the regions 1-4"< this is a bit tricky in the vapor dome + + dpdT=freesteam_region4_dpsatdT_T(S.R4.T); + + // getting the states outside the vapour dome + Sl=freesteam_set_pv(p,vl-0.0000001); //inside region 1 + Sv=freesteam_set_pv(p,vv+0.0000001); //inside region 2 + + kappal=freesteam_region1_kappaT_pT(Sl.R1.p,Sl.R1.T); + kappav=freesteam_region2_kappaT_pT(Sv.R2.p,Sv.R2.T); + + betal=freesteam_region1_alphav_pT(Sl.R1.p,Sl.R1.T); + betav=freesteam_region2_alphav_pT(Sv.R2.p,Sv.R2.T); + + cpl=freesteam_region1_cp_pT(Sl.R1.p,Sl.R1.T); + cpv=freesteam_region2_cp_pT(Sv.R2.p,Sv.R2.T); + + hl=freesteam_region1_h_pT(Sl.R1.p,Sl.R1.T); + hv=freesteam_region2_h_pT(Sv.R2.p,Sv.R2.T); + + //calculation derviatives on liquid and vapour line + dvldp=betal*vl/dpdT-kappal*vl; + dvvdp=betav*vv/dpdT-kappav*vv; + + dhldp=vl*(1-betal*Sl.R1.T)+cpl/dpdT; + dhvdp=vv*(1-betav*Sv.R2.T)+cpv/dpdT; + + dxdp=-dhldp/(hv-hl) + +(h-hl)/((hv-hl)*(hv-hl)) + *(dhvdp-dhldp); + + //CL: psiH=(drho/dp)_h=const + dvdp=dvldp+(dvvdp-dvldp)*S.R4.x+(vv-vl)*dxdp; + psiH=-rho*rho*dvdp; + } + else + { + Info<<"IAPWS-IF97.C error, outside the regions 1-4"<. + + +Description + IAPWS-IF97 (water) based thermodynamic class. Water properties calculated by freeSteam. + + This code connects OpenFoam with freeSteam and provides the basic functions needed in OpenFOAM + + For more information about freeSteam and its authors have a look @ http://freesteam.sourceforge.net/example.php + +SourceFiles + IAPWS-IF97.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany +\*---------------------------------------------------------------------------*/ +#ifndef IAPWSIF97_H +#define IAPWSIF97_H + +#include "basicPsiThermo.H" +#include "steam.H" + +#ifdef __cplusplus + #define EXTERN extern "C" +#else + #define EXTERN extern +#endif + + +//CL: +EXTERN double freesteam_p(SteamState S); +EXTERN double freesteam_T(SteamState S); +EXTERN double freesteam_rho(SteamState S); +EXTERN double freesteam_v(SteamState S); +EXTERN double freesteam_u(SteamState S); +EXTERN double freesteam_h(SteamState S); +EXTERN double freesteam_s(SteamState S); +EXTERN double freesteam_cp(SteamState S); +EXTERN double freesteam_cv(SteamState S); +EXTERN double freesteam_w(SteamState S); +EXTERN double freesteam_x(SteamState S); +EXTERN double freesteam_mu(SteamState S); +EXTERN double freesteam_k(SteamState S); + +//CL: getting SteamState for two given properties e.g. pressure and temperatur +EXTERN SteamState freesteam_set_pv(double,double); +EXTERN SteamState freesteam_set_pu(double,double); +EXTERN SteamState freesteam_set_pT(double,double); +EXTERN SteamState freesteam_set_ph(double,double); + +//CL: getting region of the SteamState +EXTERN int freesteam_region(SteamState); + +//CL: transport properties +EXTERN double freesteam_mu_rhoT(double,double); +EXTERN double freesteam_k_rhoT(double,double); + +//CL: Region 1 --> see region1.h (freesteam) +EXTERN double freesteam_region1_v_pT(double,double); +EXTERN double freesteam_region1_h_pT(double,double); +EXTERN double freesteam_region1_kappaT_pT(double,double); +EXTERN double freesteam_region1_alphav_pT(double,double); +EXTERN double freesteam_region1_cp_pT(double,double); +EXTERN double freesteam_region1_u_pT(double,double); +EXTERN double freesteam_region1_s_pT(double,double); +EXTERN double freesteam_region1_cv_pT(double,double); + +//CL: Region 2 --> see region2.h (freesteam) +EXTERN double freesteam_region2_v_pT(double,double); +EXTERN double freesteam_region2_u_pT(double,double); +EXTERN double freesteam_region2_s_pT(double,double); +EXTERN double freesteam_region2_h_pT(double,double); +EXTERN double freesteam_region2_cp_pT(double,double); +EXTERN double freesteam_region2_cv_pT(double,double); +EXTERN double freesteam_region2_alphav_pT(double,double); +EXTERN double freesteam_region2_kappaT_pT(double,double); + +//CL: Region 3 --> see region3.h (freesteam) +EXTERN double freesteam_region3_p_rhoT(double,double); +EXTERN double freesteam_region3_u_rhoT(double,double); +EXTERN double freesteam_region3_s_rhoT(double,double); +EXTERN double freesteam_region3_h_rhoT(double,double); +EXTERN double freesteam_region3_cp_rhoT(double,double); +EXTERN double freesteam_region3_cv_rhoT(double,double); +EXTERN double freesteam_region3_alphap_rhoT(double,double); +EXTERN double freesteam_region3_betap_rhoT(double,double); + +//CL: Region 4 --> see region4.h (freesteam) +EXTERN double freesteam_region4_psat_T(double); +EXTERN double freesteam_region4_Tsat_p(double); +EXTERN double freesteam_region4_rhof_T(double); +EXTERN double freesteam_region4_rhog_T(double); +EXTERN double freesteam_region4_v_Tx(double,double); +EXTERN double freesteam_region4_u_Tx(double,double); +EXTERN double freesteam_region4_h_Tx(double,double); +EXTERN double freesteam_region4_s_Tx(double,double); +EXTERN double freesteam_region4_cp_Tx(double,double); +EXTERN double freesteam_region4_cv_Tx(double,double); +EXTERN double freesteam_region4_dpsatdT_T(double); + +namespace Foam +{ + //CL: Functions to caluculate all fluid properties + void calculateProperties_h + ( + SteamState S, + scalar &rho, + scalar &h, + scalar &T, + scalar &p, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x + ); + + //CL: This functions returns all (minimal) needed propeties (p,T,h,rho,psi,drhodh,mu and alpha) for given p and T + void calculateProperties_pT + ( + scalar &p, + scalar &T, + scalar &h, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha + ); + + //CL: This function returns the same values as the function above for given p and T + //CL: Additionally, the vapor mass fraction x is return + //CL: NOTE: This function is only included to have the possibility to update x at the fixedValue (Temperature) BC + //CL: can only return x=0 and x=1 because it is not possible to describe the vapour dome with p and T + void calculateProperties_pT + ( + scalar &p, + scalar &T, + scalar &h, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x + ); + + //CL: This functions returns all (minimal) needed properties (p,T,h,rho,psi,drhodh,mu and alpha) for given p and h + void calculateProperties_ph + ( + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha + ); + + //CL: This function returns the same values as the function above for given p and h + //CL: Additionally, the vapor mass fraction x is return + void calculateProperties_ph + ( + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x + ); + + + //CL: Return density for given pT or ph; + scalar rho_pT(scalar p,scalar T); + scalar rho_ph(scalar p,scalar h); + + //CL: Return cp for given pT or ph; + scalar cp_pT(scalar p,scalar T); + scalar cp_ph(scalar p,scalar h); + + //CL: Return cv for given pT or ph; + scalar cv_pT(scalar p,scalar T); + scalar cv_ph(scalar p,scalar h); + + //CL: Return enthalpy for given pT; + scalar h_pT(scalar p,scalar T); + + //CL: Return temperature for given ph; + scalar T_ph(scalar p,scalar T); + + //CL: Return psiH=(drho/dp)_h=constant for given pT or ph; + scalar psiH_pT(scalar p,scalar T); + scalar psiH_ph(scalar p,scalar h); + scalar psiH(SteamState S); + + //CL: Return drhodh=(drho/dh)_p=constant for given pT or ph; + scalar drhodh_pT(scalar p,scalar T); + scalar drhodh_ph(scalar p,scalar h); + scalar drhodh(SteamState S); + +} + +#endif //IAPWSIF97_C_ diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C new file mode 100755 index 000000000..3d5b2a1bc --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C @@ -0,0 +1,476 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "IAPWSThermo.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + + +void Foam::IAPWSThermo::calculate() +{ + scalarField& hCells = h_.internalField(); + scalarField& pCells = this->p_.internalField(); + scalarField& TCells = this->T_.internalField(); + scalarField& rhoCells= this->rho_.internalField(); + scalarField& psiCells = this->psi_.internalField(); + scalarField& drhodhCells = this->drhodh_.internalField(); + scalarField& muCells = this->mu_.internalField(); + scalarField& alphaCells = this->alpha_.internalField(); + + //CL: Updating all cell properties + //CL: loop through all cells + forAll(TCells, celli) + { + //CL: see IAPWAS-IF97.H + calculateProperties_ph + ( + pCells[celli], + hCells[celli], + TCells[celli], + rhoCells[celli], + psiCells[celli], + drhodhCells[celli], + muCells[celli], + alphaCells[celli] + ); + } + + //CL: loop through all patches + forAll(T_.boundaryField(), patchi) + { + fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; + fvPatchScalarField& ppsi = this->psi_.boundaryField()[patchi]; + fvPatchScalarField& pdrhodh = this->drhodh_.boundaryField()[patchi]; + fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; + fvPatchScalarField& ph = this->h_.boundaryField()[patchi]; + fvPatchScalarField& pmu = this->mu_.boundaryField()[patchi]; + fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi]; + + //CL: Updating the patch properties for patches with fixed temperature BC's + if (pT.fixesValue()) + { + forAll(pT, facei) + { + //CL: see IAPWAS-IF97.H + calculateProperties_pT + ( + pp[facei], + pT[facei], + ph[facei], + prho[facei], + ppsi[facei], + pdrhodh[facei], + pmu[facei], + palpha[facei] + ); + } + } + //CL: Updating the patch properties for patches without fixed temperature BC's + else + { + forAll(pT, facei) + { + //CL: see IAPWAS-IF97.H + calculateProperties_ph + ( + pp[facei], + ph[facei], + pT[facei], + prho[facei], + ppsi[facei], + pdrhodh[facei], + pmu[facei], + palpha[facei] + ); + } + } + } +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + + +Foam::IAPWSThermo::IAPWSThermo +( + const fvMesh& mesh, + const objectRegistry& obj +) +: + basicPsiThermo(mesh, obj), + + h_ + ( + IOobject + ( + "h", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, 0, 0), + this->hBoundaryTypes() + ), + + rho_ + ( + IOobject + ( + "rhoThermo", + mesh.time().timeName(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::NO_WRITE + ), + mesh, + dimDensity + ), + + drhodh_ + ( + IOobject + ( + "drhodh", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(1, -5, 2, 0, 0) + ) +{ + + scalarField& hCells = h_.internalField(); + scalarField& TCells = this->T_.internalField(); + scalarField& pCells =this->p_.internalField(); + scalarField& rhoCells =this->rho_.internalField(); + + forAll(hCells, celli) + { + hCells[celli] = h_pT(pCells[celli],TCells[celli]); + } + + forAll(h_.boundaryField(), patchi) + { + h_.boundaryField()[patchi] == + h(this->T_.boundaryField()[patchi], patchi); + } + + forAll(rhoCells, celli) + { + rhoCells[celli] = rho_pT(pCells[celli],TCells[celli]); + } + + forAll(rho_.boundaryField(), patchi) + { + rho_.boundaryField()[patchi] == + rho(this->p_.boundaryField()[patchi] ,this->h_.boundaryField()[patchi], patchi); + } + + hBoundaryCorrection(h_); + + calculate(); + + // Switch on saving old time + this->psi_.oldTime(); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::IAPWSThermo::~IAPWSThermo() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::IAPWSThermo::correct() +{ + if (debug) + { + Info<< "entering IAPWSThermo::correct()" << endl; + } + + // force the saving of the old-time values + this->psi_.oldTime(); + + calculate(); + + if (debug) + { + Info<< "exiting IAPWSThermo::correct()" << endl; + } +} + + +Foam::tmp Foam::IAPWSThermo::h +( + const scalarField& T, + const labelList& cells +) const +{ + //getting pressure field + const scalarField& pCells = this->p_.internalField(); + + tmp th(new scalarField(T.size())); + scalarField& h = th(); + + forAll(T, celli) + { + h[celli] = h_pT(pCells[cells[celli]],T[celli]); + } + + return th; +} + + +Foam::tmp Foam::IAPWSThermo::h +( + const scalarField& T, + const label patchi +) const +{ + // getting pressure at the patch + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp th(new scalarField(T.size())); + scalarField& h = th(); + + forAll(T, facei) + { + h[facei] = h_pT(pp[facei], T[facei]); + } + + return th; +} + + +//CL: Calculates rho at patch +Foam::tmp Foam::IAPWSThermo::rho +( + const scalarField& p, + const scalarField& h, + const label patchi +) const +{ + tmp trho(new scalarField(h.size())); + scalarField& rho = trho(); + + forAll(h, facei) + { + rho[facei] = rho_ph(p[facei], h[facei]); + } + + return trho; +} + + +Foam::tmp Foam::IAPWSThermo::Cp +( + const scalarField& T, + const label patchi +) const +{ + // getting pressure at the patch + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp tCp(new scalarField(T.size())); + scalarField& cp = tCp(); + + forAll(T, facei) + { + cp[facei] = cp_ph(pp[facei],h_pT(pp[facei], T[facei])); + } + + return tCp; +} + + +Foam::tmp Foam::IAPWSThermo::Cp() const +{ + const fvMesh& mesh = this->T_.mesh(); + + tmp tCp + ( + new volScalarField + ( + IOobject + ( + "Cp", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, -1, 0), + this->T_.boundaryField().types() + ) + ); + + volScalarField& cp = tCp(); + + forAll(this->T_, celli) + { + cp[celli] = cp_ph(this->p_[celli], this->h_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + const fvPatchScalarField& ph = this->h_.boundaryField()[patchi]; + fvPatchScalarField& pCp = cp.boundaryField()[patchi]; + + forAll(ph, facei) + { + pCp[facei] = cp_ph(pp[facei], ph[facei]); + } + } + + return tCp; +} + + +//CL: Returns an updated field for rho +Foam::tmp Foam::IAPWSThermo::rho() const +{ + const fvMesh& mesh = this->p_.mesh(); + + tmp prho + ( + new volScalarField + ( + IOobject + ( + "rhoThermo2", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimDensity + ) + ); + + volScalarField& rho = prho(); + + forAll(this->p_, celli) + { + rho[celli] = rho_ph(this->p_[celli], this->h_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + const fvPatchScalarField& ph = this->h_.boundaryField()[patchi]; + fvPatchScalarField& prho = rho.boundaryField()[patchi]; + + forAll(ph, facei) + { + prho[facei] = rho_ph(pp[facei], ph[facei]); + } + } + + return prho; +} + + +Foam::tmp Foam::IAPWSThermo::Cv +( + const scalarField& T, + const label patchi +) const +{ + // getting pressure at the patch + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp tCv(new scalarField(T.size())); + scalarField& cv = tCv(); + + forAll(T, facei) + { + cv[facei] = cv_ph(pp[facei], h_pT(pp[facei], T[facei])); + } + + return tCv; +} + + +Foam::tmp Foam::IAPWSThermo::Cv() const +{ + const fvMesh& mesh = this->T_.mesh(); + + tmp tCv + ( + new volScalarField + ( + IOobject + ( + "Cv", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, -1, 0) + ) + ); + + volScalarField& cv = tCv(); + + forAll(this->h_, celli) + { + cv[celli] = cv_ph(this->p_[celli], this->h_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + cv.boundaryField()[patchi] = + Cv(this->T_.boundaryField()[patchi], patchi); + } + + return tCv; +} + + +bool Foam::IAPWSThermo::read() +{ + basicPsiThermo::read(); + return true; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H new file mode 100755 index 000000000..5f7b69bc1 --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H @@ -0,0 +1,198 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + + +Class + Foam::IAPWSThermo + +Description: + + Waterproperties based on the IAPWS 97 tables + The water properties are caluclated using freeSteam (http://freesteam.sourceforge.net/example.php) + + General paper decribing the water tables: + + "Revised Release on the IAPWS Industrial Formulation 1997 for the Thermodynamic Properties of Water and Steam" + +SourceFiles + IAPWSThermo.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#ifndef IAPWSThermo_H +#define IAPWSThermo_H + +#include "basicPsiThermo.H" +#include "IAPWS-IF97.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +/*---------------------------------------------------------------------------*\ + Class IAPWSTHERMO Declaration +\*---------------------------------------------------------------------------*/ + +class IAPWSThermo +: + public basicPsiThermo +{ + + // Private data + + //- Enthalpy field + volScalarField h_; + + //- DensityField + volScalarField rho_; + + // CL:drhodh Field + // CL:needed for pressure equation + volScalarField drhodh_; + + + // Private member functions + + //- Calculate the thermo variables + void calculate(); + +public: + + //- Runtime type information + TypeName("IAPWSThermo"); + + // Constructors + + //- Construct from mesh + IAPWSThermo(const fvMesh&, const objectRegistry& obj); + + //- Destructor + virtual ~IAPWSThermo(); + + // Member functions + + + + //- Update properties + virtual void correct(); + + + // Access to thermodynamic state variables + + //- Enthalpy [J/kg] + // Non-const access allowed for transport equations + virtual volScalarField& h() + { + return h_; + } + + //- Enthalpy [J/kg] + virtual const volScalarField& h() const + { + return h_; + } + + // Fields derived from thermodynamic state variables + + //- Enthalpy for cell-set [J/kg] + virtual tmp h + ( + const scalarField& T, + const labelList& cells + ) const; + + + //- Enthalpy for patch [J/kg] + virtual tmp h + ( + const scalarField& T, + const label patchi + ) const; + + + //- Density for patch [J/kg] + virtual tmp rho + ( + const scalarField& p, + const scalarField& h, + const label patchi + ) const; + + //- Heat capacity at constant pressure for patch [J/kg/K] + // dummy function needed for BC + virtual tmp Cp + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant pressure [J/kg/K] + virtual tmp Cp() const; + + //- Heat capacity at constant volume for patch [J/kg/K] + virtual tmp Cv + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant volume [J/kg/K] + virtual tmp Cv() const; + + //- Gradient drhodh @ constant pressure + virtual const volScalarField& drhodh() const + { + return drhodh_; + } + + //- Density [kg/m^3] - uses current value of pressure + virtual tmp rho() const; + + + //- Read thermophysicalProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "IAPWSThermo.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermos.C b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermos.C new file mode 100755 index 000000000..b217e218c --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermos.C @@ -0,0 +1,74 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "makeBasicPsiThermo.H" +#include "IAPWSThermo.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#define makeBasicExternalLibraryBasedThermo(Cthermo) \ + \ +typedef Cthermo \ + Cthermo; \ + \ +defineTemplateTypeNameAndDebugWithName \ +( \ + Cthermo, \ + #Cthermo, \ + 0 \ +); \ + \ +addToRunTimeSelectionTable \ +( \ + basicPsiThermo, \ + Cthermo, \ + fvMesh \ +) + + +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ + +makeBasicExternalLibraryBasedThermo +( + IAPWSThermo +); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/steam.H b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/steam.H new file mode 100644 index 000000000..e0d804898 --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/steam.H @@ -0,0 +1,56 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Description + +Includes the definition of a struct from freestream +Code copied from freestream --> steam.h + +\*---------------------------------------------------------------------------*/ + + +typedef struct SteamState_R1_struct{ + double p, T; +} SteamState_R1; + +typedef struct SteamState_R2_struct{ + double p, T; +} SteamState_R2; + +typedef struct SteamState_R3_struct{ + double rho, T; +} SteamState_R3; + +typedef struct SteamState_R4_struct{ + double T, x; +} SteamState_R4; + +typedef struct SteamState_struct{ + char region; + union{ + SteamState_R1 R1; + SteamState_R2 R2; + SteamState_R3 R3; + SteamState_R4 R4; + }; +} SteamState; diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files new file mode 100644 index 000000000..2de700ff5 --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files @@ -0,0 +1,4 @@ +IAPWSThermo/IAPWS-IF97.C +IAPWSThermo/IAPWSThermos.C + +LIB = $(FOAM_LIBBIN)/libIAPWSThermo diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/options b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/options new file mode 100644 index 000000000..267982f35 --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/options @@ -0,0 +1,8 @@ +EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude + +LIB_LIBS = \ + -lfiniteVolume\ + -lbasicThermophysicalModels diff --git a/src/thermophysicalModels/specie/Make/files b/src/thermophysicalModels/specie/Make/files index 428f6d8fc..3aa166ed1 100644 --- a/src/thermophysicalModels/specie/Make/files +++ b/src/thermophysicalModels/specie/Make/files @@ -8,6 +8,10 @@ $(atomicWeights)/atomicWeights.C $(specie)/specie.C $(speciesTable)/speciesTable.C $(equationOfState)/perfectGas/perfectGas.C +$(equationOfState)/cubicEquationOfState/redlichKwong/redlichKwong.C +$(equationOfState)/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C +$(equationOfState)/cubicEquationOfState/pengRobinson/pengRobinson.C +$(equationOfState)/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C $(reactions)/makeChemkinReactions.C $(reactions)/makeReactionThermoReactions.C $(reactions)/makeLangmuirHinshelwoodReactions.C diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C new file mode 100755 index 000000000..c45ed0d58 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C @@ -0,0 +1,85 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + + +Description + Aungier Redlich Kwong equation of state. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "aungierRedlichKwong.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::aungierRedlichKwong::aungierRedlichKwong(Istream& is) +: + specie(is), + pcrit_(readScalar(is)), + Tcrit_(readScalar(is)), + azentricFactor_(readScalar(is)), + rhocrit_(readScalar(is)), + a0_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), + b_(0.08664*this->RR*Tcrit_/pcrit_), + c_(this->RR*Tcrit_/(pcrit_+(a0_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), + n_(0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2)), + b2_(pow(b_,2)), + b3_(pow(b_,3)), + b4_(pow(b_,4)), + b5_(pow(b_,5)), + c2_(pow(c_,2)), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))), + //CL: Only uses the default values + rhoMax_(1500), + rhoMin_(1e-3), + aSave(0.0), + daSave(0.0), + d2aSave(0.0), + TSave(0.0) +{ + is.check("aungierRedlichKwong::aungierRedlichKwong(Istream& is)"); +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const aungierRedlichKwong& ark) +{ + os << static_cast(ark)<< token::SPACE + << ark.pcrit_ << tab<< ark.Tcrit_<< tab<. + +Class + Foam::aungierRedlichKwong + +Description + Aungier Redlich Kwong equation of state. + + Paper: + Title: A Fast, Accurate Real Gas Equation of State for Fluid Dynamic Analysis Applications + Authors: R. H. Aungier + Journal: Journal of Fluids Engineering, Vol.117, 1995 + +SourceFiles + aungierRedlichKwongI.H + aungierRedlichKwong.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef aungierRedlichKwong_H +#define aungierRedlichKwong_H + +#include "specie.H" +#include "autoPtr.H" +#include "DynamicList.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class aungierRedlichKwong Declaration +\*---------------------------------------------------------------------------*/ + +class aungierRedlichKwong +: + public specie + +{ + mutable scalar pcrit_; + mutable scalar Tcrit_; + mutable scalar azentricFactor_; + mutable scalar rhocrit_; + + //Aungier Redlich Kwong factors + mutable scalar a0_; + mutable scalar b_; + mutable scalar c_; + mutable scalar n_; + + //CL: pow of constants (b_, c_) used in the code e.g. b2_=b*b; + mutable scalar b2_; + mutable scalar b3_; + mutable scalar b4_; + mutable scalar b5_; + mutable scalar c2_; + + //Density @STD, initialise after a, b! + mutable scalar rhostd_; + + //CL: rhoMin and rhoMax are only used as boundaries for the bisection methode (see rho function) + mutable scalar rhoMax_; + mutable scalar rhoMin_; + +protected: + //CL: Variables to save the values of a, dadT and d2adT2 of the mixture + //CL: Variables must corrected for changing temperatures + mutable scalar aSave; + mutable scalar daSave; + mutable scalar d2aSave; + + //CL: save the temperature for which the save coefficients (amix,dadTmix,d2adT2mix) are correct + mutable scalar TSave; + + //Protected functions + //CL: function updates the coefficients (aSave, daSave, d2aSave) + inline void updateModelCoefficients(const scalar T) const; + + +public: + + // Constructors + + //- Construct from components + inline aungierRedlichKwong + ( + const specie& sp + ); + + //- Construct from Istream + aungierRedlichKwong(Istream&); + + //- Construct as named copy + inline aungierRedlichKwong(const word& name, const aungierRedlichKwong&); + + //- Construct and return a clone + inline autoPtr clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + // Member functions + + inline scalar& rhostd(); + + inline scalar& rhostd() const; + + inline scalar& rhoMin(); + + inline scalar& rhoMin() const; + + inline scalar& rhoMax(); + + inline scalar& rhoMax() const; + + inline scalar& Tcrit(); + + inline scalar& Tcrit() const; + + inline scalar& pcrit(); + + inline scalar& pcrit() const; + + inline scalar& rhocrit(); + + inline scalar& rhocrit() const; + + inline scalar& azentricFactor(); + + inline scalar& azentricFactor() const; + + //CL: Model coefficient a(T) + inline scalar a(const scalar T)const; + + //CL: temperature deriviative of model coefficient a(T) + inline scalar dadT(const scalar T)const; + + //CL: second order temperature deriviative of model coefficient a(T) + inline scalar d2adT2(const scalar T)const; + + //Return Aungier Redlich Kwong factors + inline scalar& a0()const; + + inline scalar& a0(); + + inline scalar& b()const; + + inline scalar& b(); + + inline scalar& c()const; + + inline scalar& c(); + + inline scalar& n()const; + + inline scalar& n(); + + //CL: return power of constants (b_, c_) + inline scalar& b2()const; + + inline scalar& b2(); + + inline scalar& b3()const; + + inline scalar& b3(); + + inline scalar& b4()const; + + inline scalar& b4(); + + inline scalar& b5()const; + + inline scalar& b5(); + + inline scalar& c2()const; + + inline scalar& c2(); + + //CL: Equation of state + inline scalar p(const scalar rho, const scalar T) const; + + //CL: first order derivatives + inline scalar dpdv(const scalar rho, const scalar T) const; + + inline scalar dpdT(const scalar rho, const scalar T) const; + + inline scalar dvdT(const scalar rho, const scalar T) const; + + inline scalar dvdp(const scalar rho, const scalar T) const; + + inline scalar isobarExpCoef(const scalar rho, const scalar T) const; + + inline scalar isothermalCompressiblity + ( + const scalar rho, + const scalar T + ) const; + + //CL: Used for cv + inline scalar integral_d2pdT2_dv + ( + const scalar rho, + const scalar T + ) const ; + + //CL: second order derivatives, not Used At The Moment + inline scalar d2pdv2(const scalar rho, const scalar T) const; + + inline scalar d2pdT2(const scalar rho, scalar T) const; + + inline scalar d2pdvdT(const scalar rho, const scalar T) const; + + inline scalar d2vdT2(const scalar rho, const scalar T) const; + + //CL: Used for internal Energy + inline scalar integral_p_dv(const scalar rho, const scalar T) const; + + //CL: Used for Entropy + inline scalar integral_dpdT_dv(const scalar rho, const scalar T) const; + + //- Return density [kg/m^3] + // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + inline scalar rho(const scalar p, const scalar T) const; + + //- Return compressibility drho/dp at T=constant [s^2/m^2] + inline scalar psi(const scalar rho, const scalar T) const; + + //- Return compression factor [] + inline scalar Z + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + // Member operators + + inline void operator+=(const aungierRedlichKwong&); + inline void operator*=(const scalar s); + + // Friend operators + + inline friend aungierRedlichKwong operator+ + ( + const aungierRedlichKwong&, + const aungierRedlichKwong& + ); + + inline friend aungierRedlichKwong operator* + ( + const scalar s, + const aungierRedlichKwong& + ); + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const aungierRedlichKwong&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "aungierRedlichKwongI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwongI.H new file mode 100755 index 000000000..0f2b6e860 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwongI.H @@ -0,0 +1,674 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "aungierRedlichKwong.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +inline aungierRedlichKwong::aungierRedlichKwong +( + const specie& sp +) +: + specie(sp) +{} + + +// Construct as named copy +inline aungierRedlichKwong::aungierRedlichKwong(const word& name, const aungierRedlichKwong& pg) +: + specie(name, pg), + pcrit_(pg.pcrit_), + Tcrit_(pg.Tcrit_), + azentricFactor_(pg.azentricFactor_), + rhocrit_(pg.rhocrit_), + a0_(pg.a0_), + b_(pg.b_), + c_(pg.c_), + n_(pg.n_), + b2_(pg.b2_), + b3_(pg.b3_), + b4_(pg.b4_), + b5_(pg.b5_), + c2_(pg.c2_), + rhostd_(pg.rhostd_), + rhoMax_(pg.rhoMin_), + rhoMin_(pg.rhoMin_), + aSave(0.0), + daSave(0.0), + d2aSave(0.0), + TSave(0.0) +{} + + +// Construct and return a clone +inline autoPtr aungierRedlichKwong::clone() const +{ + return autoPtr(new aungierRedlichKwong(*this)); +} + + +// Selector from Istream +inline autoPtr aungierRedlichKwong::New(Istream& is) +{ + return autoPtr(new aungierRedlichKwong(is)); +} + + +// * * * * * * * * * * * * * Member Functions * * * * * * * * * * * // + +inline scalar& aungierRedlichKwong::rhostd() +{ + return rhostd_; +} + + +inline scalar& aungierRedlichKwong::rhostd()const +{ + return rhostd_; +} + + +inline scalar& aungierRedlichKwong::rhoMin() +{ + return rhoMin_; +} + + +inline scalar& aungierRedlichKwong::rhoMin()const +{ + return rhoMin_; +} + + +inline scalar& aungierRedlichKwong::rhoMax() +{ + return rhoMax_; +} + + +inline scalar& aungierRedlichKwong::rhoMax()const +{ + return rhoMax_; +} + + +inline scalar& aungierRedlichKwong::Tcrit() +{ + return Tcrit_; +} + + +inline scalar& aungierRedlichKwong::Tcrit()const +{ + return Tcrit_; +} + + +inline scalar& aungierRedlichKwong::pcrit() +{ + return pcrit_; +} + + +inline scalar& aungierRedlichKwong::pcrit()const +{ + return pcrit_; +} + + +inline scalar& aungierRedlichKwong::rhocrit() +{ + return rhocrit_; +} + + +inline scalar& aungierRedlichKwong::rhocrit()const +{ + return rhocrit_; +} + + +inline scalar& aungierRedlichKwong::azentricFactor() +{ + return azentricFactor_; +} + + +inline scalar& aungierRedlichKwong::azentricFactor()const +{ + return azentricFactor_; +} + + +inline void aungierRedlichKwong::updateModelCoefficients(const scalar T)const +{ + aSave=a0_*pow(T/Tcrit_,-n()); + daSave=-a0_*n()*pow(T/Tcrit_,-n())/T; + d2aSave=a0_*(n() *n()+n())/(T*T)*pow(T/Tcrit_,-n()); + + //CL: saving the temperature at which the coefficients are valid + TSave=T; +} + + +//CL: Model coefficient a(T) +inline scalar aungierRedlichKwong::a(const scalar T)const +{ + //CL: check if a has already been calculated for this temperature + if(TSave==T) + { + return aSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return aSave; + } +} + + +//CL: temperature deriviative of model coefficient a(T) +inline scalar aungierRedlichKwong::dadT(const scalar T)const +{ + // check if a has already been calculated for this temperature + if(TSave==T) + { + return daSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return daSave; + } +} + + +//CL: second order temperature deriviative of model coefficient a(T) +inline scalar aungierRedlichKwong::d2adT2(const scalar T)const +{ + // check if a has already been calculated for this temperature + if(TSave==T) + { + return d2aSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return d2aSave; + } +} + + +//Aungier Redlich Kwong factors +inline scalar& aungierRedlichKwong::a0()const +{ + return a0_; +} + + +inline scalar& aungierRedlichKwong::a0() +{ + return a0_; +} + + +inline scalar& aungierRedlichKwong::b()const +{ + return b_; +} + + +inline scalar& aungierRedlichKwong::b() +{ + return b_; +} + + +inline scalar& aungierRedlichKwong::c()const +{ + return c_; +} + + +inline scalar& aungierRedlichKwong::c() +{ + return c_; +} + + +inline scalar& aungierRedlichKwong::n()const +{ + return n_; +} + + +inline scalar& aungierRedlichKwong::n() +{ + return n_; +} + + +//CL: pow of constants (b(), c()) used in the code e.g. b2_=b*b; +inline scalar& aungierRedlichKwong::b2()const +{ + return b2_; +} + + +inline scalar& aungierRedlichKwong::b2() +{ + return b2_; +} + + +//CL: pow of constants (b(), c()) used in the code e.g. b3_=b2*b; +inline scalar& aungierRedlichKwong::b3()const +{ + return b3_; +} + + +inline scalar& aungierRedlichKwong::b3() +{ + return b3_; +} + + +//CL: pow of constants (b(), c()) used in the code e.g. b4_=b3*b; +inline scalar& aungierRedlichKwong::b4()const +{ + return b4_; +} + + +inline scalar& aungierRedlichKwong::b4() +{ + return b4_; +} + + +//CL: pow of constants (b(), c()) used in the code e.g. b5_=b4*b; +inline scalar& aungierRedlichKwong::b5()const +{ + return b5_; +} + + +inline scalar& aungierRedlichKwong::b5() +{ + return b5_; +} + + +//CL: pow of constants (b(), c()) used in the code e.g. b2_=b*b; +inline scalar& aungierRedlichKwong::c2()const +{ + return c2_; +} + + +inline scalar& aungierRedlichKwong::c2() +{ + return c2_; +} + + +//returns the pressure for a given density and temperature +inline scalar aungierRedlichKwong::p(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + + return this->RR*T/(Vm-b()+c()) + -a(T)/(Vm*(Vm+b())); +} + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar aungierRedlichKwong::dpdv(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + + return (a(T)*(b3()-2*b2()*c()+b()*(c()+Vm)*(c()-3*Vm)+2*Vm*pow(c()+Vm,2)) + -this->RR*T*Vm2*(b2()+2*b()*Vm+Vm2)) + /(Vm2*pow(b()-c()-Vm,2)*pow(b()+Vm,2)); +} + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar aungierRedlichKwong::dpdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + + return this->RR/(Vm-b()+c())-dadT(T)/(Vm*(Vm+b())); +} + + +//Real deviative dv/dT at constant pressure +//using implicit differentiation +//(molar values) +inline scalar aungierRedlichKwong::dvdT(const scalar rho,const scalar T) const +{ + return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); +} + + +//Real deviative dv/dp at constant temperature +//(molar values) +inline scalar aungierRedlichKwong::dvdp(const scalar rho,const scalar T) const +{ + return 1/this->dpdv(rho,T); +} + + +//needed to calculate the internal energy +//(molar values) +inline scalar aungierRedlichKwong::integral_p_dv +( + const scalar rho, + const scalar T +) const +{ + scalar Vm = this->W()/rho; + + return this->RR*T*log(-b()+c()+Vm)+a(T)*log(b()+Vm)/b()-a(T)*log(Vm)/b(); +} + + +//needed to calculate the entropy +//(molar values) +inline scalar aungierRedlichKwong::integral_dpdT_dv +( + const scalar rho, + const scalar T +) const +{ + scalar Vm = this->W()/rho; + + return this->RR*log(-b()+c()+Vm)+dadT(T)*log(b()+Vm)/b()-dadT(T)*log(Vm)/b(); +} + + +//(molar values) +inline scalar aungierRedlichKwong::d2pdT2(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + + return -d2adT2(T)/(Vm*(Vm+b())); +} + + +//(molar values) +inline scalar aungierRedlichKwong::d2pdv2(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm*Vm*Vm; + + return -2*(a(T)*(b5()-3*b4()*c()+3*b3()*(c2()-c()*Vm-Vm2) + -b2()*(c()+Vm)*(c2()-7*c()*Vm+Vm2)+3*b()*Vm*pow(c()+Vm,2)*(2*Vm-c()) + -3*Vm2*pow(c()+Vm,3))+this->RR*T*Vm3*(b3()+3*b2()*Vm + +3*b()*Vm2+Vm3)) + /(Vm3*pow(b()-c()-Vm,3)*pow(b()+Vm,3)); +} + + +//(molar values) +//using second order implicit differentiation +inline scalar aungierRedlichKwong::d2vdT2(const scalar rho, const scalar T) const +{ + scalar dpdT2=this->dpdT(rho,T)*this->dpdT(rho,T); + scalar dpdv2=this->dpdv(rho,T)*this->dpdv(rho,T); + scalar dpdv3=dpdv2*this->dpdv(rho,T); + + return + -( + dpdT2*this->d2pdv2(rho,T) + + dpdv2*this->d2pdT2(rho,T) + - 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T) + ) + /(dpdv3); +} + + +//(molar values) +inline scalar aungierRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + + return (dadT(T)*(b3()-2*b2()*c()+b()*(c()+Vm)*(c()-3*Vm)+2*Vm*pow(c()+Vm,2)) + -this->RR*Vm2*(b2()+2*b()*Vm+Vm2)) + /(Vm2*pow(b()-c()-Vm,2)*pow(b()+Vm,2)); +} + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar aungierRedlichKwong::integral_d2pdT2_dv +( + const scalar rho, + const scalar T +) const +{ + scalar Vm = this->W()/rho; + + return d2adT2(T)*log(b()+Vm)/b()-d2adT2(T)*log(Vm)/b(); +} + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar aungierRedlichKwong::isobarExpCoef(const scalar rho,const scalar T) const +{ + return this->dvdT(rho, T)*rho/this->W(); +} + + +//isothemal compressiblity kappa (not Thermal conductivity) +//(molar values) +inline scalar aungierRedlichKwong::isothermalCompressiblity(const scalar rho,const scalar T) const +{ + return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); + //also possible : return -this->dvdp(rho,T)*rho/this->W(); +} + + +//- Return density [kg/m^3] +inline scalar aungierRedlichKwong::rho( + const scalar p, + const scalar T, + const scalar rho0 +) const +{ + + scalar molarVolumePrevIteration; + scalar molarVolume; + label iter=0; + label maxIter_=400; + scalar tol_=1e-8; + scalar rho1=rhoMax_; + scalar rho2=rhoMin_; + + molarVolume=this->W()/rho0; + + do + { + molarVolumePrevIteration= molarVolume; + + label i=0; + do + { + molarVolume=molarVolumePrevIteration + -( + (this->p((this->W()/molarVolumePrevIteration),T) - p) + /(this->dpdv((this->W()/molarVolumePrevIteration),T)) + )/pow(2,i); + + i++; + if (i>8) + { + //CL: using bisection methode as backup, + //CL: solution must be between rho=0.001 to rho=1500; + //CL: if not, change rhoMax_ and rhoMin_ + for(i=0; i<200; i++) + { + scalar f1 = this->p(rho1,T) - p; + scalar f2 = this->p(rho2,T) - p; + scalar rho3 = (rho1 + rho2)/2; + scalar f3 = this->p(rho3,T) - p; + + if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) + { + rho1=rho3; + } + else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) + { + rho2=rho3; + } + else + { + rho2=(rho2 + rho3)/2; + } + + if(mag(f3) < p*tol_) + { + molarVolume=this->W()/rho3; + molarVolumePrevIteration=this->W()/rho3; + break; + } + else + { + molarVolumePrevIteration=this->W()/rho3; + } + } + } + } + while + ( + mag(this->p((this->W()/molarVolume),T) - p) + > mag(this->p((this->W()/molarVolumePrevIteration),T) - p) + ); + + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "inline scalar aungierRedlichKwong::rho(const scalar p, const scalar T, const scalar rho0) const " + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } + } + while(mag(molarVolumePrevIteration-molarVolume) > tol_*(this->W()/rho0)); + + return this->W()/molarVolume; +} + + +//- Return density [kg/m^3] +inline scalar aungierRedlichKwong::rho(const scalar p,const scalar T) const +{ + //using perfect gas equation as starting point + return rho(p,T,p/(this->R()*T)); +} + + +//- Return compressibility drho/dp at T=constant [s^2/m^2] +inline scalar aungierRedlichKwong::psi(const scalar rho, const scalar T) const +{ + return -this->dvdp(rho,T)*rho*rho/this->W(); +} + + +//- Return compression factor [] +inline scalar aungierRedlichKwong::Z( const scalar p, const scalar T,const scalar rho0) const +{ + return p/(this->R()*T*this->rho(p,T,rho0)); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +inline void aungierRedlichKwong::operator+=(const aungierRedlichKwong& ark) +{ + specie::operator+=(ark); +} + + +inline void aungierRedlichKwong::operator*=(const scalar s) +{ + specie::operator*=(s); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +inline aungierRedlichKwong operator+ +( + const aungierRedlichKwong& ark1, + const aungierRedlichKwong& ark2 +) +{ + return aungierRedlichKwong + ( + static_cast(ark1) + + static_cast(ark2) + ); +} + + +inline aungierRedlichKwong operator* +( + const scalar s, + const aungierRedlichKwong& ark +) +{ + return aungierRedlichKwong(s*static_cast(ark)); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C new file mode 100755 index 000000000..843de9319 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C @@ -0,0 +1,79 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Description + Peng Robinson equation of state. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "pengRobinson.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::pengRobinson::pengRobinson(Istream& is) +: + specie(is), + pcrit_(readScalar(is)), + Tcrit_(readScalar(is)), + azentricFactor_(readScalar(is)), + a0_(0.457235*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), + b_(0.077796*this->RR*Tcrit_/pcrit_), + n_(0.37464+1.54226*azentricFactor_-0.26992*pow(azentricFactor_,2)), + b2_(b_*b_), + b3_(b2_*b_), + b4_(b3_*b_), + b5_(b4_*b_), + b6_(b5_*b_), + //CL: Only uses the default values + rhoMax_(1500), + rhoMin_(1e-3), + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))), + aSave(0.0), + daSave(0.0), + d2aSave(0.0), + TSave(0.0) +{ + is.check("pengRobinson::pengRobinson(Istream& is)"); +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const pengRobinson& pr) +{ + os << static_cast(pr)<< token::SPACE + << pr.pcrit_ << tab<< pr.Tcrit_<< tab << pr.azentricFactor_; + + os.check("Ostream& operator<<(Ostream& os, const pengRobinson& st)"); + return os; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H new file mode 100755 index 000000000..de2fec409 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H @@ -0,0 +1,296 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Class + Foam::pengRobinson + +Description + Peng Robinson equation of state. + + Paper: + Title: A New Two-Constant Equation of State + Authors: Ding-Yu Peng and Donald B. Robinson + Journal: Ind. Eng. Chem., Fundam., Vol. 15, No. 1, 1976 + + +SourceFiles + pengRobinsonI.H + pengRobinson.C + + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef pengRobinson_H +#define pengRobinson_H + +#include "specie.H" +#include "autoPtr.H" + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class perfectGas Declaration +\*---------------------------------------------------------------------------*/ + +class pengRobinson +: + public specie + +{ + // private data + scalar pcrit_; + mutable scalar Tcrit_; + scalar azentricFactor_; + + //-Peng Robinson factors + mutable scalar a0_; + mutable scalar b_; + mutable scalar n_; + + //CL: pow of constants b_ used in the code e.g. b2_=b*b; + mutable scalar b2_; + mutable scalar b3_; + mutable scalar b4_; + mutable scalar b5_; + mutable scalar b6_; + + //CL: rhoMin and rhoMax are only used as boundaries for the bisection methode (see rho function) + mutable scalar rhoMax_; + mutable scalar rhoMin_; + + //- Density @STD, initialise after a0, b! + mutable scalar rhostd_; + +protected: + + //CL: Variables to save the values of a, dadT and d2adT2 of the mixture + //CL: Variables must corrected for changing temperatures + mutable scalar aSave; + mutable scalar daSave; + mutable scalar d2aSave; + + //CL: save the temperature for which the save coefficients (amix,dadTmix,d2adT2mix) are correct + mutable scalar TSave; + + //Protected functions + //CL: function updates the coefficients (aSave, daSave, d2aSave) + inline void updateModelCoefficients(const scalar T) const; + +public: + + // Constructors + + //- Construct from components + inline pengRobinson + ( + const specie& sp + ); + + //- Construct from Istream + pengRobinson(Istream&); + + //- Construct as named copy + inline pengRobinson(const word& name,const pengRobinson&); + + //- Construct and return a clone + inline autoPtr clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + // Member functions + inline scalar& rhostd(); + + inline scalar& rhostd() const; + + inline scalar& rhoMin(); + + inline scalar& rhoMin() const; + + inline scalar& rhoMax(); + + inline scalar& rhoMax() const; + + inline scalar& Tcrit(); + + inline scalar& Tcrit() const; + + //CL: Model coefficient a(T) + inline scalar a(const scalar T)const; + + //CL: temperature deriviative of model coefficient a(T) + inline scalar dadT(const scalar T)const; + + //CL: second order temperature deriviative of model coefficient a(T) + inline scalar d2adT2(const scalar T)const; + + //Return Peng Robinson factors + inline scalar& a0()const; + + inline scalar& a0(); + + inline scalar& b()const; + + inline scalar& b(); + + inline scalar& n()const; + + inline scalar& n(); + + //CL: return power of constants b_ + inline scalar& b2()const; + + inline scalar& b2(); + + inline scalar& b3()const; + + inline scalar& b3(); + + inline scalar& b4()const; + + inline scalar& b4(); + + inline scalar& b5()const; + + inline scalar& b5(); + + inline scalar& b6()const; + + inline scalar& b6(); + + //CL: Equation of state + inline scalar p(const scalar rho, const scalar T) const; + + //CL: first order derivatives + inline scalar dpdv(const scalar rho,const scalar T) const; + + inline scalar dpdT(const scalar rho, const scalar T) const; + + inline scalar dvdT(const scalar rho,const scalar T) const; + + inline scalar dvdp(const scalar rho, const scalar T) const; + + inline scalar isobarExpCoef + ( + const scalar rho, + const scalar T + ) const; + + inline scalar isothermalCompressiblity + ( + const scalar rho, + const scalar T + ) const; + + //CL: Used for cv + inline scalar integral_d2pdT2_dv + ( + const scalar rho, + const scalar T + ) const ; + + //CL: second order derivatives, not Used At The Moment + inline scalar d2pdv2(const scalar rho,const scalar T) const; + + inline scalar d2pdT2(const scalar rho,const scalar T) const; + + inline scalar d2pdvdT(const scalar rho,const scalar T) const; + + inline scalar d2vdT2(const scalar rho,const scalar T) const; + + //CL: Used for internal Energy + inline scalar integral_p_dv(const scalar rho,const scalar T) const; + + //CL: Used for Entropy + inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; + + //- Return density [kg/m^3] + // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + inline scalar rho(const scalar p,const scalar T) const; + + //- Return compressibility drho/dp at T=constant [s^2/m^2] + inline scalar psi(const scalar rho, const scalar T) const; + + //- Return compression factor [] + inline scalar Z + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + // Member operators + + inline void operator+=(const pengRobinson&); + + inline void operator*=(const scalar); + + // Friend operators + + inline friend pengRobinson operator+ + ( + const pengRobinson&, + const pengRobinson& + ); + + inline friend pengRobinson operator* + ( + const scalar s, + const pengRobinson& + ); + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const pengRobinson&); +}; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "pengRobinsonI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H new file mode 100755 index 000000000..d0621f745 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H @@ -0,0 +1,646 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "pengRobinson.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +inline pengRobinson::pengRobinson +( + const specie& sp +) +: + specie(sp), + TSave(0) +{} + +// Construct as named copy +inline pengRobinson::pengRobinson(const word& name, const pengRobinson& pr) +: + specie(name, pr), + pcrit_(pr.pcrit_), + Tcrit_(pr.Tcrit_), + azentricFactor_(pr.azentricFactor_), + a0_(pr.a0_), + b_(pr.b_), + n_(pr.n_), + b2_(pr.b2_), + b3_(pr.b3_), + b4_(pr.b4_), + b5_(pr.b5_), + b6_(pr.b6_), + rhoMax_(pr.rhoMax_), + rhoMin_(pr.rhoMin_), + rhostd_(pr.rhostd_), + aSave(0.0), + daSave(0.0), + d2aSave(0.0), + TSave(0.0) +{} + + +// Construct and return a clone +inline autoPtr pengRobinson::clone() const +{ + return autoPtr(new pengRobinson(*this)); +} + + +// Selector from Istream +inline autoPtr pengRobinson::New(Istream& is) +{ + return autoPtr(new pengRobinson(is)); +} + + +// * * * * * * * * * * * * * Member Functions * * * * * * * * * * * // + +inline void pengRobinson::updateModelCoefficients(const scalar T)const +{ + aSave=a0_*pow(1+n_*(1-pow(T/Tcrit_,0.5)),2); + daSave=a0_*n_*(n_*sqrt(T/Tcrit_)-n_-1)*sqrt(T/Tcrit_)/T; + d2aSave=a0_*n_*(n_+1)*sqrt(T/Tcrit_)/(2*T*T); + + //CL: saving the temperature at which the coefficients are valid + TSave=T; +} + + +inline scalar& pengRobinson::rhostd() +{ + return rhostd_; +} + + +inline scalar& pengRobinson::rhostd()const +{ + return rhostd_; +} + +inline scalar& pengRobinson::rhoMin() +{ + return rhoMin_; +} + + +inline scalar& pengRobinson::rhoMin()const +{ + return rhoMin_; +} + + +inline scalar& pengRobinson::rhoMax() +{ + return rhoMax_; +} + + +inline scalar& pengRobinson::rhoMax()const +{ + return rhoMax_; +} + + +inline scalar& pengRobinson::Tcrit() +{ + return Tcrit_; +} + + +inline scalar& pengRobinson::Tcrit()const +{ + return Tcrit_; +} + + +//CL: Model coefficient a(T) +inline scalar pengRobinson::a(const scalar T)const +{ + //CL: check if a has already been calculated for this temperature + if(TSave==T) + { + return aSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return aSave; + } +} + + +//CL: temperature deriviative of model coefficient a(T) +inline scalar pengRobinson::dadT(const scalar T)const +{ + // check if a has already been calculated for this temperature + if(TSave==T) + { + return daSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return daSave; + } +} + + +//CL: second order temperature deriviative of model coefficient a(T) +inline scalar pengRobinson::d2adT2(const scalar T)const +{ + // check if a has already been calculated for this temperature + if(TSave==T) + { + return d2aSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return d2aSave; + } +} + + +inline scalar& pengRobinson::a0()const +{ + return a0_; +} + + +inline scalar& pengRobinson::a0() +{ + return a0_; +} + + +inline scalar& pengRobinson::b()const +{ + return b_; +} + + +inline scalar& pengRobinson::b() +{ + return b_; +} + + +inline scalar& pengRobinson::n()const +{ + return n_; +} + + +inline scalar& pengRobinson::n() +{ + return n_; +} + + +//CL: pow of constant b() used in the code e.g. b2_=b*b; +inline scalar& pengRobinson::b2()const +{ + return b2_; +} + + +inline scalar& pengRobinson::b2() +{ + return b2_; +} + + +inline scalar& pengRobinson::b3()const +{ + return b3_; +} + + +inline scalar& pengRobinson::b3() +{ + return b3_; +} + + +inline scalar& pengRobinson::b4()const +{ + return b4_; +} + + +inline scalar& pengRobinson::b4() +{ + return b4_; +} + + +inline scalar& pengRobinson::b5()const +{ + return b5_; +} + + +inline scalar& pengRobinson::b5() +{ + return b5_; +} + + +inline scalar& pengRobinson::b6()const +{ + return b6_; +} + + +inline scalar& pengRobinson::b6() +{ + return b6_; +} + + +//returns the pressure for a given density and temperature +inline scalar pengRobinson::p(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + + return this->RR*T/(Vm-b())-a(T)/(Vm2+2*b()*Vm-b2()); +} + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar pengRobinson::dpdv(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm2*Vm; + scalar Vm4 = Vm3*Vm; + + return( + 2*a(T)* + ( + b3()-b2()*Vm-b()*Vm2+Vm3 + ) + -this->RR*T* + ( + b4()-4*b3()*Vm+2*b2()*Vm2 + +4*b()*Vm3+Vm4 + ) + ) + /(pow(b()-Vm,2)*pow(b2()-2*b()*Vm-Vm2,2)); +} + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar pengRobinson::dpdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + + return this->RR/(Vm-b())-dadT(T)/(Vm2+2*b()*Vm-b2()); +} + + +//Real deviative dv/dT at constant pressure +//by using implicit differentiation +//(molar values) +inline scalar pengRobinson::dvdT(const scalar rho,const scalar T) const +{ + return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); +} + + +//(molar values) +inline scalar pengRobinson::dvdp(const scalar rho,const scalar T) const +{ + return 1/this->dpdv(rho,T); +} + + +//(molar values) +//needed to calculate the internal energy +inline scalar pengRobinson::integral_p_dv(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar root2=pow(2,0.5); + + return -root2*a(T)*log(b()*(1-root2)+Vm)/(4*b())+this->RR*T*log(Vm-b()) + +root2*a(T)*log(b()*(root2+1)+Vm)/(4*b()); +} + + +//(molar values) +//needed to calculate the entropy +inline scalar pengRobinson::integral_dpdT_dv(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar root2=pow(2,0.5); + + return -root2*dadT(T)*log(b()*(1-root2)+Vm)/(4*b()) + +this->RR*log(Vm-b())+root2*dadT(T)*log(b()*(root2+1)+Vm)/(4*b()); +} + + +//(molar values) +inline scalar pengRobinson::d2pdT2(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + + return -d2adT2(T)/(Vm2+2*b()*Vm-b2()); +} + + +//(molar values) +inline scalar pengRobinson::d2pdv2(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm2*Vm; + scalar Vm4 = Vm3*Vm; + scalar Vm5 = Vm4*Vm; + scalar Vm6 = Vm5*Vm; + + return 2* + ( + a(T)* + ( + 5*b5()-9*b4()*Vm+4*b2()*Vm3+3*b()*Vm4-3*Vm5 + ) + -this->RR*T* + ( + b6()-6*b5()*Vm+9*b4()*Vm2+4*b3()*Vm3 + -9*b2()*Vm4-6*b()*Vm5-Vm6 + ) + ) + /(pow(b()-Vm,3)*pow(b2()-2*b()*Vm-Vm2,3)); +} + + +//(molar values) +//using second order implicit differentiation +inline scalar pengRobinson::d2vdT2(const scalar rho, const scalar T) const +{ + scalar dpdT2=this->dpdT(rho,T)*this->dpdT(rho,T); + scalar dpdv2=this->dpdv(rho,T)*this->dpdv(rho,T); + scalar dpdv3=dpdv2*this->dpdv(rho,T); + + return + -( + dpdT2*this->d2pdv2(rho,T) + + dpdv2*this->d2pdT2(rho,T) + - 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T) + ) + /(dpdv3); +} + + +//(molar values) +inline scalar pengRobinson::d2pdvdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm2*Vm; + scalar Vm4 = Vm3*Vm; + + return( + 2*dadT(T)* + ( + b3()-b2()*Vm-b()*Vm2+Vm3 + ) + -this->RR* + ( + b4()-4*b3()*Vm+2*b2()*Vm2 + +4*b()*Vm3+Vm4 + ) + ) + /(pow(b()-Vm,2)*pow(b2()-2*b()*Vm-Vm2,2)); +} + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar pengRobinson::integral_d2pdT2_dv(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar root2=pow(2,0.5); + + return root2*d2adT2(T)*log(b()*(root2+1)+Vm)/(4*b())-root2*d2adT2(T)*log(b()*(1-root2)+Vm)/(4*b()); +} + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar pengRobinson::isobarExpCoef(const scalar rho,const scalar T) const +{ + return this->dvdT(rho, T)*rho/this->W(); +} + + +//isothemal compressiblity kappa (not Thermal conductivity) +//(molar values) +inline scalar pengRobinson::isothermalCompressiblity(const scalar rho,const scalar T) const +{ + return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); + //CL: also possible + //CL: return -this->dvdp(rho,T)*rho/this->W(); +} + + +//- Return density [kg/m^3] +inline scalar pengRobinson::rho( + const scalar p, + const scalar T, + const scalar rho0 +) const +{ + + scalar molarVolumePrevIteration; + scalar molarVolume; + label iter=0; + label maxIter_=400; + scalar tol_=1e-8; + scalar rho1=rhoMax_; + scalar rho2=rhoMin_; + + molarVolume=this->W()/rho0; + + do + { + molarVolumePrevIteration= molarVolume; + + label i=0; + do + { + molarVolume=molarVolumePrevIteration + -( + (this->p((this->W()/molarVolumePrevIteration),T) - p) + /(this->dpdv((this->W()/molarVolumePrevIteration),T)) + )/pow(2,i); + + i++; + if (i>8) + { + //CL: using bisection methode as backup, + //CL: solution must be between rho=0.001 to rho=1500; + //CL: if not, change rhoMax_ and rhoMin_ + for(i=0; i<200; i++) + { + scalar f1 = this->p(rho1,T) - p; + scalar f2 = this->p(rho2,T) - p; + scalar rho3 = (rho1 + rho2)/2; + scalar f3 = this->p(rho3,T) - p; + + if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) + { + rho1=rho3; + } + else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) + { + rho2=rho3; + } + else + { + rho2=(rho2 + rho3)/2; + } + + if(mag(f3) < p*tol_) + { + molarVolume=this->W()/rho3; + molarVolumePrevIteration=this->W()/rho3; + break; + } + else + { + molarVolumePrevIteration=this->W()/rho3; + } + } + } + } + while + ( + mag(this->p((this->W()/molarVolume),T) - p) + > mag(this->p((this->W()/molarVolumePrevIteration),T) - p) + ); + + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "inline scalar pengRobinson::rho(const scalar p, const scalar T, const scalar rho0) const " + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } + } + while(mag(molarVolumePrevIteration-molarVolume) > tol_*(this->W()/rho0)); + + return this->W()/molarVolume; +} + + +//- Return density [kg/m^3]on +inline scalar pengRobinson::rho(const scalar p,const scalar T) const +{ + // using perfect gas equation as starting point + return rho(p,T,p/(this->R()*T)); +} + + +//- Return compressibility drho/dp at T=constant [s^2/m^2] +inline scalar pengRobinson::psi(const scalar rho, const scalar T) const +{ + return -this->dvdp(rho,T)*rho*rho/this->W(); +} + + +//- Return compression factor [] +inline scalar pengRobinson::Z( const scalar p, const scalar T,const scalar rho0) const +{ + return p/(this->R()*T*this->rho(p,T,rho0)); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +inline void pengRobinson::operator+=(const pengRobinson& pr) +{ + specie::operator+=(pr); +} + + +inline void pengRobinson::operator*=(const scalar s) +{ + specie::operator*=(s); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +inline pengRobinson operator+ +( + const pengRobinson& pr1, + const pengRobinson& pr2 +) +{ + return pengRobinson + ( + static_cast(pr1) + + static_cast(pr2) + ); +} + + +inline pengRobinson operator* +( + const scalar s, + const pengRobinson& pr +) +{ + return pengRobinson(s*static_cast(pr)); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C new file mode 100755 index 000000000..f596ef4b6 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C @@ -0,0 +1,71 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Description + Redlich Kwong equation of state. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "redlichKwong.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::redlichKwong::redlichKwong(Istream& is) +: + specie(is), + pcrit_(readScalar(is)), + Tcrit_(readScalar(is)), + a_(0.42748*pow(this->RR,2)*pow(Tcrit_,2.5)/pcrit_), + b_(0.08664*this->RR*Tcrit_/pcrit_), + //CL: Only uses the default values + rhoMax_(1500), + rhoMin_(1e-3), + b2_(pow(b_,2)), + b3_(pow(b_,3)), + b5_(pow(b_,5)), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd, Tstd, Pstd/(Tstd*this->R()))) +{ + is.check("redlichKwong::redlichKwong(Istream& is)"); +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const redlichKwong& rk) +{ + os << static_cast(rk)<< token::SPACE + << rk.pcrit_ << tab<< rk.Tcrit_; + + os.check("Ostream& operator<<(Ostream& os, const redlichKwong& st)"); + return os; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H new file mode 100755 index 000000000..2270ebced --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H @@ -0,0 +1,240 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Class + Foam::redlichKwong + +Description + Redlich Kwong equation of state. + +SourceFiles + redlichKwongI.H + redlichKwong.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef redlichKwong_H +#define redlichKwong_H + +#include "specie.H" +#include "autoPtr.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class redlichKwong Declaration +\*---------------------------------------------------------------------------*/ + +class redlichKwong +: + public specie +{ + //CL: data at critical point + scalar pcrit_; + scalar Tcrit_; + + //CL: Redlich Kwong factors + mutable scalar a_; + mutable scalar b_; + + //CL: rhoMin and rhoMax are only used as boundaries for the bisection methode (see rho function) + mutable scalar rhoMax_; + mutable scalar rhoMin_; + + //CL: pow of constants b_ used in the code e.g. b2_=b*b; + mutable scalar b2_; + mutable scalar b3_; + mutable scalar b5_; + + //- Density @STD, initialise after a, b! + mutable scalar rhostd_; + +public: + + // Constructors + + //- Construct from components + inline redlichKwong + ( + const specie& sp + ); + + //- Construct from Istream + redlichKwong(Istream&); + + //- Construct as named copy + inline redlichKwong(const word& name, const redlichKwong&); + + //- Construct and return a clone + inline autoPtr clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + // Member functions + + inline scalar& rhostd() const; + + inline scalar& rhostd(); + + inline scalar& rhoMin() const; + + inline scalar& rhoMin(); + + inline scalar& rhoMax() const; + + inline scalar& rhoMax(); + + //Return Redlich Kwong factors + inline scalar& a() const; + + inline scalar& a(); + + inline scalar& b() const; + + inline scalar& b(); + + //CL: return power of constants b_ + inline scalar& b2()const; + + inline scalar& b2(); + + inline scalar& b3()const; + + inline scalar& b3(); + + inline scalar& b5()const; + + inline scalar& b5(); + + //CL: equation of state + inline scalar p(const scalar rho, const scalar T) const; + + //CL: first order derivatives + inline scalar dpdv(const scalar rho, const scalar T) const; + + inline scalar dpdT(const scalar rho, const scalar T) const; + + inline scalar dvdT(const scalar rho, const scalar T) const; + + inline scalar dvdp(const scalar rho, const scalar T) const; + + inline scalar isobarExpCoef(const scalar rho, const scalar T) const; + + inline scalar isothermalCompressiblity + ( + const scalar rho, + const scalar T + ) const; + + //CL: Used for cv + inline scalar integral_d2pdT2_dv + ( + const scalar rho, + const scalar T + ) const; + + //CL: Used for internal Energy + inline scalar integral_p_dv(const scalar rho, const scalar T) const; + + //CL: Used for Entropy + inline scalar integral_dpdT_dv(const scalar rho, const scalar T) const; + + //CL: second order derivatives, not Used At The Moment + inline scalar d2pdv2(const scalar rho, const scalar T) const; + + inline scalar d2pdT2(const scalar rho, const scalar T) const; + + inline scalar d2pdvdT(const scalar rho, const scalar T) const; + + inline scalar d2vdT2(const scalar rho, const scalar T) const; + + //- Return density [kg/m^3] + // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + inline scalar rho(const scalar p, const scalar T) const; + + //- Return compressibility drho/dp at T=constant [s^2/m^2] + inline scalar psi(const scalar rho, const scalar T) const; + + //- Return compression factor [] + inline scalar Z + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + // Member operators + + inline void operator+=(const redlichKwong&); + inline void operator*=(const scalar); + + // Friend operators + + inline friend redlichKwong operator+ + ( + const redlichKwong&, + const redlichKwong& + ); + + inline friend redlichKwong operator* + ( + const scalar s, + const redlichKwong& + ); + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const redlichKwong&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "redlichKwongI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H new file mode 100755 index 000000000..0652b35af --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H @@ -0,0 +1,533 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "redlichKwong.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +inline redlichKwong::redlichKwong +( + const specie& sp +) +: + specie(sp) +{} + + +// Construct as named copy +inline redlichKwong::redlichKwong(const word& name, const redlichKwong& rk) +: + specie(name, rk), + pcrit_(rk.pcrit_), + Tcrit_(rk.Tcrit_), + a_(rk.a_), + b_(rk.b_), + rhoMax_(rk.rhoMax_), + rhoMin_(rk.rhoMin_), + b2_(rk.b2_), + b3_(rk.b3_), + b5_(rk.b5_), + rhostd_(rk.rhostd_) +{} + + +// Construct and return a clone +inline autoPtr redlichKwong::clone() const +{ + return autoPtr(new redlichKwong(*this)); +} + + +// Selector from Istream +inline autoPtr redlichKwong::New(Istream& is) +{ + return autoPtr(new redlichKwong(is)); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline scalar& redlichKwong::rhostd()const +{ + return rhostd_; +} + + +inline scalar& redlichKwong::rhostd() +{ + return rhostd_; +} + + +inline scalar& redlichKwong::rhoMin()const +{ + return rhoMin_; +} + + +inline scalar& redlichKwong::rhoMin() +{ + return rhoMin_; +} + + +inline scalar& redlichKwong::rhoMax()const +{ + return rhoMax_; +} + + +inline scalar& redlichKwong::rhoMax() +{ + return rhoMax_; +} + + +inline scalar& redlichKwong::a()const +{ + return a_; +} + + +inline scalar& redlichKwong::a() +{ + return a_; +} + + +inline scalar& redlichKwong::b()const +{ + return b_; +} + + +inline scalar& redlichKwong::b() +{ + return b_; +} + + +inline scalar& redlichKwong::b2()const +{ + return b2_; +} + + +inline scalar& redlichKwong::b2() +{ + return b2_; +} + + +inline scalar& redlichKwong::b3()const +{ + return b3_; +} + + +inline scalar& redlichKwong::b3() +{ + return b3_; +} + + +inline scalar& redlichKwong::b5()const +{ + return b5_; +} + + +inline scalar& redlichKwong::b5() +{ + return b5_; +} + + +//returns the pressure for a given density and temperature +inline scalar redlichKwong::p(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return this->RR*T/(Vm - b_) - a_/(sqrt(T)*Vm*(Vm + b_)); +} + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar redlichKwong::dpdv(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm2*Vm; + + return (a_*(b3() - 3*b_*Vm2 + 2*Vm3) + - this->RR*pow(T,1.5)*Vm2*(b2() + 2*b_*Vm + Vm2)) + /(sqrt(T)*Vm2*pow((b_ + Vm),2)*pow( (b_ - Vm),2)); +} + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar redlichKwong::dpdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return 0.5*a_/(pow(T,1.5)*Vm*(b_ + Vm))-this->RR/(b_ - Vm); +} + + +//Real deviative dv/dT at constant pressure +//using implicit differentiation +//(molar values) +inline scalar redlichKwong::dvdT(const scalar rho, const scalar T) const +{ + return -this->dpdT(rho,T)/this->dpdv(rho,T); +} + + +//Real deviative dv/dp at constant temperature +//(molar values) +inline scalar redlichKwong::dvdp(const scalar rho, const scalar T) const +{ + return 1/this->dpdv(rho,T); +} + + +//needed to calculate the internal energy +//(molar values) +inline scalar redlichKwong::integral_p_dv +( + const scalar rho, + const scalar T +) const +{ + scalar Vm = this->W()/rho; + return this->RR*T*log(Vm - b_) + + (a_*log(b_ + Vm))/(b_*sqrt(T)) + - (a_*log(Vm))/(b_*sqrt(T)); +} + + +//needed to calculate the entropy +//(molar values) +inline scalar redlichKwong::integral_dpdT_dv +( + const scalar rho, + const scalar T +) const +{ + scalar T15_=pow(T,1.5); + + scalar Vm = this->W()/rho; + return this->RR*log(Vm - b_) + -(a_*log(b_ + Vm))/(2*b_*T15_) + +(a_*log(Vm))/(2*b_*T15_); +} + + +//(molar values) +inline scalar redlichKwong::d2pdT2(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return -0.75*a_/(pow(T,2.5)*Vm*(b_ + Vm)); +} + + +//(molar values) +inline scalar redlichKwong::d2pdv2(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm2*Vm; + scalar Vm4 = Vm3*Vm; + scalar Vm5 = Vm4*Vm; + + return + ( + 2*( + a_*( + b5()-3*b3()*Vm2 + - b2()*Vm3 + + 6*b_*Vm4-3*Vm5 + ) + + this->RR*pow(T,1.5)*Vm3*(b3() + + 3*b2()*Vm + + 3*b_*Vm2+Vm3) + ) + /(sqrt(T)*Vm3*pow((b_ + Vm),3)*pow(Vm-b_,3)) + ); +} + + +//(molar values) +//using second Order implicit differentiation +inline scalar redlichKwong::d2vdT2(const scalar rho, const scalar T) const +{ + scalar dpdT2=this->dpdT(rho,T)*this->dpdT(rho,T); + scalar dpdv2=this->dpdv(rho,T)*this->dpdv(rho,T); + scalar dpdv3=dpdv2*this->dpdv(rho,T); + + return + -( + dpdT2*this->d2pdv2(rho,T) + + dpdv2*this->d2pdT2(rho,T) + - 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T) + ) + /(dpdv3); +} + + +//(molar values) +inline scalar redlichKwong::d2pdvdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm2*Vm; + scalar T15_ = pow(T,1.5); + + return + -(0.5*( + a_*(b3() - 3*b_*Vm2 + 2*Vm3) + + 2*this->RR*T15_*Vm2*(b2() + 2*b_*Vm + Vm2) + )) + /(T15_*Vm2*pow(b_ + Vm,2)*pow(b_ - Vm,2)); +} + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar redlichKwong::integral_d2pdT2_dv +( + const scalar rho, + const scalar T +) const +{ + scalar T25_=pow(T,2.5); + + scalar Vm = this->W()/rho; + return 0.75*a_*log(b_ + Vm)/(T25_*b_) + - 0.75*a_*log(Vm)/(T25_*b_); +} + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar redlichKwong::isobarExpCoef +( + const scalar rho, + const scalar T +) const +{ + return this->dvdT(rho, T)*rho/this->W(); +} + + +//isothemal compressiblity kappa (not Thermal conductivity) +//(molar values) +inline scalar redlichKwong::isothermalCompressiblity +( + const scalar rho, + const scalar T +) const +{ + return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); + //also possible : return -this->dvdp(rho,T)*rho/this->W(); +} + + +//- Return density [kg/m^3] +inline scalar redlichKwong::rho +( + const scalar p, + const scalar T, + const scalar rho0 +) const +{ + + scalar molarVolumePrevIteration; + scalar molarVolume; + label iter=0; + label maxIter_=400; + scalar tol_=1e-8; + scalar rho1=rhoMax(); + scalar rho2=rhoMin(); + + molarVolume=this->W()/rho0; + + do + { + molarVolumePrevIteration= molarVolume; + + label i=0; + do + { + //CL: modified Newton solver + molarVolume=molarVolumePrevIteration + -( + (this->p((this->W()/molarVolumePrevIteration),T) - p) + /(this->dpdv((this->W()/molarVolumePrevIteration),T)) + )/pow(2,i); + + i++; + if (i>8) + { + //CL: using bisection methode as backup, + //CL: solution must be between rhoMin_ to rhoMax + for(i=0; i<200; i++) + { + scalar f1 = this->p(rho1,T) - p; + scalar f2 = this->p(rho2,T) - p; + scalar rho3 = (rho1 + rho2)/2; + scalar f3 = this->p(rho3,T) - p; + + if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) + { + rho1=rho3; + } + else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) + { + rho2=rho3; + } + else + { + rho2=(rho2 + rho3)/2; + } + + if(mag(f3) < p*tol_) + { + molarVolume=this->W()/rho3; + molarVolumePrevIteration=this->W()/rho3; + break; + } + else + { + molarVolumePrevIteration=this->W()/rho3; + } + } + } + } + while + ( + mag(this->p((this->W()/molarVolume),T) - p) + > mag(this->p((this->W()/molarVolumePrevIteration),T) - p) + ); + + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "inline scalar redlichKwong::rho(const scalar p, const scalar T, const scalar rho0) const " + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } + } + while(mag(molarVolumePrevIteration-molarVolume) > tol_*(this->W()/rho0)); + + return this->W()/molarVolume; +} + + +//- Return density [kg/m^3]on +inline scalar redlichKwong::rho(const scalar p, const scalar T) const +{ + // using perfect gas equation as starting point + return rho(p,T,p/(this->R()*T)); +} + + +//- Return compressibility drho/dp at T=constant [s^2/m^2] +inline scalar redlichKwong::psi(const scalar rho, const scalar T) const +{ + return -this->dvdp(rho,T)*rho*rho/this->W(); +} + + +//- Return compression factor [] +inline scalar redlichKwong::Z +( + const scalar p, + const scalar T, + const scalar rho0 +) const +{ + return p/(this->R()*T*this->rho(p,T,rho0)); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +inline void redlichKwong::operator+=(const redlichKwong& rk) +{ + specie::operator+=(rk); +} + + +inline void redlichKwong::operator*=(const scalar s) +{ + specie::operator*=(s); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +inline redlichKwong operator+ +( + const redlichKwong& rk1, + const redlichKwong& rk2 +) +{ + return redlichKwong + ( + static_cast(rk1) + + static_cast(rk2) + ); +} + + +inline redlichKwong operator* +( + const scalar s, + const redlichKwong& rk +) +{ + return redlichKwong(s*static_cast(rk)); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C new file mode 100755 index 000000000..d0ee4fe27 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C @@ -0,0 +1,78 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Description + Soave Redlich Kwong equation of state. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "soaveRedlichKwong.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::soaveRedlichKwong::soaveRedlichKwong(Istream& is) +: + specie(is), + pcrit_(readScalar(is)), + Tcrit_(readScalar(is)), + azentricFactor_(readScalar(is)), + a0_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/(pcrit_)), + b_(0.08664*this->RR*Tcrit_/pcrit_), + n_(0.48508+1.55171*azentricFactor_-0.15613*pow(azentricFactor_,2)), + //CL: Only uses the default values + rhoMin_(1e-3), + rhoMax_(1500), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))), + b2_(b_*b_), + b3_(b2_*b_), + b5_(b2_*b3_), + aSave(0.0), + daSave(0.0), + d2aSave(0.0), + TSave(0.0) +{ + is.check("soaveRedlichKwong::soaveRedlichKwong(Istream& is)"); +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const soaveRedlichKwong& srk) +{ + os << static_cast(srk)<< token::SPACE + << srk.pcrit_ << tab<< srk.Tcrit_<. + +Class + Foam::soaveRedlichKwong + +Description + Soave Redlich Kwong equation of state. + + Paper: + Title: Equilibrium Constants from a Modified Redlich-Kwong Equation of State + Authors: G. Soave + Journal: Chemical Engineering Science, vol. 27(6), 1972, pp. 1197-1203 + +SourceFiles + soaveRedlichKwongI.H + soaveRedlichKwong.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef soaveRedlichKwong_H +#define soaveRedlichKwong_H + +#include "specie.H" +#include "autoPtr.H" + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class Soave Readlich Kwong Declaration +\*---------------------------------------------------------------------------*/ + +class soaveRedlichKwong +: + public specie + +{ + // private data + scalar pcrit_; + mutable scalar Tcrit_; + scalar azentricFactor_; + + //-Soave Redlich Kwong + mutable scalar a0_; + mutable scalar b_; + mutable scalar n_; + + //CL: rhoMin and rhoMax are only used as boundaries for the bisection methode (see rho function) + mutable scalar rhoMin_; + mutable scalar rhoMax_; + + //- Density @STD, initialise after a0, b! + mutable scalar rhostd_; + + //CL: pow of constants b_ used in the code e.g. b2_=b*b; + mutable scalar b2_; + mutable scalar b3_; + mutable scalar b5_; + +protected: + //CL: Variables to save the values of a, dadT and d2adT2 of the mixture + //CL: Variables must corrected for changing temperatures + mutable scalar aSave; + mutable scalar daSave; + mutable scalar d2aSave; + + //CL: save the temperature for which the save coefficients (amix,dadTmix,d2adT2mix) are correct + mutable scalar TSave; + + //Protected functions + //CL: function updates the coefficients (aSave, daSave, d2aSave) + inline void updateModelCoefficients(const scalar T) const; + +public: + + + // Constructors + + //- Construct from components + inline soaveRedlichKwong + ( + const specie& s + ); + + //- Construct from Istream + soaveRedlichKwong(Istream&); + + //- Construct as named copy + inline soaveRedlichKwong(const word& name,const soaveRedlichKwong&); + + //- Construct and return a clone + inline autoPtr clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + // Member functions + inline scalar& rhostd(); + + inline scalar& rhostd() const; + + inline scalar& rhoMin(); + + inline scalar& rhoMin() const; + + inline scalar& rhoMax(); + + inline scalar& rhoMax() const; + + inline scalar& Tcrit(); + + inline scalar& Tcrit() const; + + //CL: Model coefficient a(T) + inline scalar a(const scalar T)const; + + //CL: temperature deriviative of model coefficient a(T) + inline scalar dadT(const scalar T)const; + + //CL: second order temperature deriviative of model coefficient a(T) + inline scalar d2adT2(const scalar T)const; + + //Return Soave Redlich Kwong factors + inline scalar& a0()const; + + inline scalar& a0(); + + inline scalar& b()const; + + inline scalar& b(); + + inline scalar& n()const; + + inline scalar& n(); + + //CL: return power of constants b_ + inline scalar& b2()const; + + inline scalar& b2(); + + inline scalar& b3()const; + + inline scalar& b3(); + + inline scalar& b5()const; + + inline scalar& b5(); + + //CL: Equation of state + inline scalar p(const scalar rho, const scalar T) const; + + //CL: first order derivatives + inline scalar dpdv(const scalar rho,const scalar T) const; + + inline scalar dpdT(const scalar rho, const scalar T) const; + + inline scalar dvdT(const scalar rho,const scalar T) const; + + inline scalar dvdp(const scalar rho, const scalar T) const; + + inline scalar isobarExpCoef + ( + const scalar rho, + const scalar T + ) const; + + inline scalar isothermalCompressiblity + ( + const scalar rho, + const scalar T + ) const; + + //CL: Used for cv + inline scalar integral_d2pdT2_dv(const scalar rho,const scalar T) const ; + + //CL: second order derivatives, not Used At The Moment + inline scalar d2pdv2(const scalar rho,const scalar T) const; + + inline scalar d2pdT2(const scalar rho,const scalar T) const; + + inline scalar d2pdvdT(const scalar rho,const scalar T) const; + + inline scalar d2vdT2(const scalar rho,const scalar T) const; + + //CL: Used for internal Energy + inline scalar integral_p_dv(const scalar rho,const scalar T) const; + + //Used for Entropy + inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; + + //- Return density [kg/m^3] + // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + inline scalar rho(const scalar p,const scalar T) const; + + //- Return compressibility drho/dp at T=constant [s^2/m^2] + inline scalar psi(const scalar rho, const scalar T) const; + + //- Return compression factor [] + inline scalar Z + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + // Member operators + + inline void operator+=(const soaveRedlichKwong&); + + inline void operator*=(const scalar); + + // Friend operators + + inline friend soaveRedlichKwong operator+ + ( + const soaveRedlichKwong&, + const soaveRedlichKwong& + ); + + inline friend soaveRedlichKwong operator* + ( + const scalar s, + const soaveRedlichKwong& + ); + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const soaveRedlichKwong&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "soaveRedlichKwongI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H new file mode 100755 index 000000000..e5a160c3b --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H @@ -0,0 +1,606 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "soaveRedlichKwong.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +inline soaveRedlichKwong::soaveRedlichKwong +( + const specie& sp +) +: + specie(sp), + TSave(0) +{} + + +// Construct as named copy +inline soaveRedlichKwong::soaveRedlichKwong(const word& name,const soaveRedlichKwong& srk) +: + specie(name, srk), + pcrit_(srk.pcrit_), + Tcrit_(srk.Tcrit_), + azentricFactor_(srk.azentricFactor_), + a0_(srk.a0_), + b_(srk.b_), + n_(srk.n_), + rhoMin_(srk.rhoMin_), + rhoMax_(srk.rhoMax_), + rhostd_(srk.rhostd_), + b2_(srk.b2_), + b3_(srk.b3_), + b5_(srk.b5_), + aSave(0.0), + daSave(0.0), + d2aSave(0.0), + TSave(0.0) +{} + + +// Construct and return a clone +inline autoPtr soaveRedlichKwong::clone() const +{ + return autoPtr(new soaveRedlichKwong(*this)); +} + + +// Selector from Istream +inline autoPtr soaveRedlichKwong::New(Istream& is) +{ + return autoPtr(new soaveRedlichKwong(is)); +} + + +// * * * * * * * * * * * * * Member Functions * * * * * * * * * * * // + +inline void soaveRedlichKwong::updateModelCoefficients(const scalar T)const +{ + aSave=a0_*pow(1+n_*(1-pow(T/Tcrit_,0.5)),2); + daSave=a0_*n_*(n_*sqrt(T/Tcrit_)-n_-1)*sqrt(T/Tcrit_)/T; + d2aSave=a0_*n_*(n_+1)*sqrt(T/Tcrit_)/(2*T*T); + + //CL: saving the temperature at which the coefficients are valid + TSave=T; +} + + +inline scalar& soaveRedlichKwong::rhostd() +{ + return rhostd_; +} + + +inline scalar& soaveRedlichKwong::rhostd()const +{ + return rhostd_; +} + + +inline scalar& soaveRedlichKwong::rhoMin() +{ + return rhoMin_; +} + + +inline scalar& soaveRedlichKwong::rhoMin()const +{ + return rhoMin_; +} + + +inline scalar& soaveRedlichKwong::rhoMax() +{ + return rhoMax_; +} + + +inline scalar& soaveRedlichKwong::rhoMax()const +{ + return rhoMax_; +} + + +inline scalar& soaveRedlichKwong::Tcrit() +{ + return Tcrit_; +} + + +inline scalar& soaveRedlichKwong::Tcrit()const +{ + return Tcrit_; +} + + +//CL: Model coefficient a(T) +inline scalar soaveRedlichKwong::a(const scalar T)const +{ + //CL: check if a has already been calculated for this temperature + if(TSave==T) + { + return aSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return aSave; + } +} + + +//CL: temperature deriviative of model coefficient a(T) +inline scalar soaveRedlichKwong::dadT(const scalar T)const +{ + // check if a has already been calculated for this temperature + if(TSave==T) + { + return daSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return daSave; + } +} + + +//CL: second order temperature deriviative of model coefficient a(T) +inline scalar soaveRedlichKwong::d2adT2(const scalar T)const +{ + // check if a has already been calculated for this temperature + if(TSave==T) + { + return d2aSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return d2aSave; + } +} + + +inline scalar& soaveRedlichKwong::a0()const +{ + return a0_; +} + + +inline scalar& soaveRedlichKwong::a0() +{ + return a0_; +} + + +inline scalar& soaveRedlichKwong::b()const +{ + return b_; +} + + +inline scalar& soaveRedlichKwong::b() +{ + return b_; +} + + +inline scalar& soaveRedlichKwong::n()const +{ + return n_; +} + + +inline scalar& soaveRedlichKwong::n() +{ + return n_; +} + + +//CL: pow of constant b() used in the code e.g. b2_=b*b; +inline scalar& soaveRedlichKwong::b2()const +{ + return b2_; +} + + +inline scalar& soaveRedlichKwong::b2() +{ + return b2_; +} + + +inline scalar& soaveRedlichKwong::b3()const +{ + return b3_; +} + + +inline scalar& soaveRedlichKwong::b3() +{ + return b3_; +} + + +inline scalar& soaveRedlichKwong::b5()const +{ + return b5_; +} + + +inline scalar& soaveRedlichKwong::b5() +{ + return b5_; +} + + +//returns the pressure for a given density and temperature +inline scalar soaveRedlichKwong::p(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + + return + ( + this->RR*T/(Vm-b_) + -a(T)/(Vm*(Vm+b_)) + ); +} + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar soaveRedlichKwong::dpdv(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm2*Vm; + + return + ( + a(T)*(b3()-3*b_*Vm2+2*Vm3) + -this->RR*T*Vm2*(b2()+2*b_*Vm+Vm2) + ) + /(Vm2*pow(b_+Vm,2)*pow(b_-Vm,2)); +} + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar soaveRedlichKwong::dpdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + + return + ( + this->RR/(Vm-b_) + -dadT(T)/(Vm*(Vm+b_)) + ); +} + + +//Real deviative dv/dT at constant pressure +//using implicit differentiation +// (molar values) +inline scalar soaveRedlichKwong::dvdT(const scalar rho,const scalar T) const +{ + return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); +} + + +//Real deviative dv/dp at constant temperature +//(molar values) +inline scalar soaveRedlichKwong::dvdp(const scalar rho,const scalar T) const +{ + return 1/this->dpdv(rho,T); +} + + +//needed to calculate the internal energy +//(molar values) +inline scalar soaveRedlichKwong::integral_p_dv(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + + return this->RR*T*log(Vm-b_)+a(T)*log(b_+Vm)/b_-a(T)*log(Vm)/b_; +} + + +//needed to calculate the entropy +//(molar values) +inline scalar soaveRedlichKwong::integral_dpdT_dv(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + + return this->RR*log(Vm-b_)+dadT(T)*log(b_+Vm)/b_-dadT(T)*log(Vm)/b_; +} + + +//(molar values) +inline scalar soaveRedlichKwong::d2pdT2(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + + return -d2adT2(T)/(Vm*(Vm+b_)); +} + + +//(molar values) +inline scalar soaveRedlichKwong::d2pdv2(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm2*Vm; + scalar Vm4 = Vm3*Vm; + scalar Vm5 = Vm4*Vm; + + return + 2* + ( + a(T)* + ( + b5()-3*b3()*Vm2-b2()*Vm3+6*b_*Vm4-3*Vm5 + ) + +this->RR*T*Vm3* + ( + b3()+3*b2()*Vm+3*b_*Vm2+Vm3 + ) + ) + /(Vm3*pow(b_+Vm,3)*pow(Vm-b_,3)); +} + + +//(molar values) +// using second Order implicit differentiation +inline scalar soaveRedlichKwong::d2vdT2(const scalar rho, const scalar T) const +{ + scalar dpdT2=this->dpdT(rho,T)*this->dpdT(rho,T); + scalar dpdv2=this->dpdv(rho,T)*this->dpdv(rho,T); + scalar dpdv3=dpdv2*this->dpdv(rho,T); + + return + -( + dpdT2*this->d2pdv2(rho,T) + + dpdv2*this->d2pdT2(rho,T) + - 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T) + ) + /(dpdv3); +} + + +//(molar values) +inline scalar soaveRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm2*Vm; + + return + ( + dadT(T)*(b3()-3*b_*Vm2+2*Vm3) + -this->RR*Vm2*(b2()+2*b_*Vm+Vm2) + ) + /(Vm2*pow(b_+Vm,2)*pow(b_-Vm,2)); +} + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar soaveRedlichKwong::integral_d2pdT2_dv(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + + return d2adT2(T)*log(b_+Vm)/b_-d2adT2(T)*log(Vm)/b_; +} + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar soaveRedlichKwong::isobarExpCoef(const scalar rho,const scalar T) const +{ + return this->dvdT(rho, T)*rho/this->W(); +} + + +//isothemal compressiblity kappa (not Thermal conductivity) +//(molar values) +inline scalar soaveRedlichKwong::isothermalCompressiblity(const scalar rho,const scalar T) const +{ + return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); +} + + +//- Return density [kg/m^3] +inline scalar soaveRedlichKwong::rho( + const scalar p, + const scalar T, + const scalar rho0 +) const +{ + + scalar molarVolumePrevIteration; + scalar molarVolume; + label iter=0; + label maxIter_=400; + scalar tol_=1e-8; + scalar rho1=rhoMax_; + scalar rho2=rhoMin_; + + molarVolume=this->W()/rho0; + + do + { + molarVolumePrevIteration= molarVolume; + + label i=0; + do + { + molarVolume=molarVolumePrevIteration + -( + (this->p((this->W()/molarVolumePrevIteration),T) - p) + /(this->dpdv((this->W()/molarVolumePrevIteration),T)) + )/pow(2,i); + + i++; + if (i>8) + { + //CL: using bisection methode as backup, + //CL: solution must be between rho=0.001 to rho=1500; + //CL: if not, change rhoMax_ and rhoMin_ + for(i=0; i<200; i++) + { + scalar f1 = this->p(rho1,T) - p; + scalar f2 = this->p(rho2,T) - p; + scalar rho3 = (rho1 + rho2)/2; + scalar f3 = this->p(rho3,T) - p; + + if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) + { + rho1=rho3; + } + else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) + { + rho2=rho3; + } + else + { + rho2=(rho2 + rho3)/2; + } + + if(mag(f3) < p*tol_) + { + molarVolume=this->W()/rho3; + molarVolumePrevIteration=this->W()/rho3; + break; + } + else + { + molarVolumePrevIteration=this->W()/rho3; + } + } + } + } + while + ( + mag(this->p((this->W()/molarVolume),T) - p) + > mag(this->p((this->W()/molarVolumePrevIteration),T) - p) + ); + + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "inline scalar soaveRedlichKwong::rho(const scalar p, const scalar T, const scalar rho0) const " + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } + } + while(mag(molarVolumePrevIteration-molarVolume) > tol_*(this->W()/rho0)); + + return this->W()/molarVolume; +} + + +//- Return density [kg/m^3]on +inline scalar soaveRedlichKwong::rho(const scalar p,const scalar T) const +{ + //CL: using perfect gas equation as starting point + return rho(p,T,p/(this->R()*T)); +} + + +//- Return compressibility drho/dp at T=constant [s^2/m^2] +inline scalar soaveRedlichKwong::psi(const scalar rho, const scalar T) const +{ + return -this->dvdp(rho,T)*rho*rho/this->W(); +} + + +//- Return compression factor [] +inline scalar soaveRedlichKwong::Z( const scalar p, const scalar T,const scalar rho0) const +{ + return p/(this->R()*T*this->rho(p,T,rho0)); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +inline void soaveRedlichKwong::operator+=(const soaveRedlichKwong& srk) +{ + specie::operator+=(srk); +} + + +inline void soaveRedlichKwong::operator*=(const scalar s) +{ + specie::operator*=(s); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +inline soaveRedlichKwong operator+ +( + const soaveRedlichKwong& srk1, + const soaveRedlichKwong& srk2 +) +{ + return soaveRedlichKwong + ( + static_cast(srk1) + + static_cast(srk2) + ); +} + + +inline soaveRedlichKwong operator* +( + const scalar s, + const soaveRedlichKwong& srk +) +{ + return soaveRedlichKwong(s*static_cast(srk)); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/constantHeatCapacity/constantHeatCapacity.C b/src/thermophysicalModels/specie/thermo/realGasThermo/constantHeatCapacity/constantHeatCapacity.C new file mode 100755 index 000000000..440bf888d --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/constantHeatCapacity/constantHeatCapacity.C @@ -0,0 +1,71 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "constantHeatCapacity.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::constantHeatCapacity::constantHeatCapacity(Istream& is) +: + equationOfState(is), + Cp0_(readScalar(is)), + cp0_(Cp0_*this->W()), + //values for some need terms at std + e0_std(e0(this->Tstd)), + s0_std(s0(this->Tstd)), + integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd)), + integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd)), + // cp @ STD (needed to limit cp for stability + cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd)) +{ + is.check("constantHeatCapacity::constantHeatCapacity(Istream& is)"); +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +template +Foam::Ostream& Foam::operator<< +( + Ostream& os, + const constantHeatCapacity& np +) +{ + os << static_cast(np) << tab + << np.Cp0_; + os.check("Ostream& operator<<(Ostream& os, const constantHeatCapacity& np)"); + return os; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/constantHeatCapacity/constantHeatCapacity.H b/src/thermophysicalModels/specie/thermo/realGasThermo/constantHeatCapacity/constantHeatCapacity.H new file mode 100755 index 000000000..438b386f2 --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/constantHeatCapacity/constantHeatCapacity.H @@ -0,0 +1,256 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Class + Foam::constantHeatCapacity + +Description + real gas thermodynamic class --> constant perfect gas heat capacity + Important: the perfect gas heat capacity is constant, the real heat capacity is not constant due to real gas corrections + + templated into the equationOfState + -> uses the equation of state to calculate all real Gas properties like Enthalpy, Entropy ... + -> can not be used with the perfectGas equation of state + + Equations for the real gas correction: Have a look at thermodnamics books e.g. Thermodynamics: + An Engineering Approch, 5 Edition, Chapter 12 + +SourceFiles + constantHeatCapacityI.H + constantHeatCapacity.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef constantHeatCapacity_H +#define constantHeatCapacity_H + + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of friend functions and operators + +template class constantHeatCapacity; + +template +inline constantHeatCapacity operator+ +( + const constantHeatCapacity&, + const constantHeatCapacity& +); + +template +inline constantHeatCapacity operator- +( + const constantHeatCapacity&, + const constantHeatCapacity& +); + +template +inline constantHeatCapacity operator* +( + const scalar, + const constantHeatCapacity& +); + +template +inline constantHeatCapacity operator== +( + const constantHeatCapacity&, + const constantHeatCapacity& +); + +template +Ostream& operator<< +( + Ostream&, + const constantHeatCapacity& +); + + +/*---------------------------------------------------------------------------*\ + Class constantHeatCapacity Thermo Declaration +\*---------------------------------------------------------------------------*/ + +template +class constantHeatCapacity +: + public equationOfState +{ + // Private data + + //CL: spec. cp + scalar Cp0_; + //CL: molar values + scalar cp0_; + scalar e0_std; + scalar s0_std; + scalar integral_p_dv_std; + scalar integral_dpdT_dv_std; + scalar cp_std; + + // Private member functions + + //- Construct from components + //CL: used for the operator+ + inline constantHeatCapacity + ( + const equationOfState& st, + const scalar cp0_ + ); + + //- Construct from components + //CL: used for the operator* + inline constantHeatCapacity + ( + const equationOfState& st, + const scalar cp0_, + const scalar e0_std_, + const scalar s0_std_, + const scalar integral_p_dv_std_, + const scalar integral_dpdT_dv_std_, + const scalar cp_std_ + ); + +public: + +//Variable + + // Constructors + //- Construct from Istream + constantHeatCapacity(Istream&); + + //- Construct as named copy + inline constantHeatCapacity(const word&, const constantHeatCapacity&); + + //- Construct and return a clone + inline autoPtr clone() const; + + //- Selector from Istream + inline static autoPtr New(Istream& is); + + // Member Functions + + //- perfect Gas Enthalpy [J/kmol] + inline scalar h0(const scalar T) const; + + //- perfect Gas Entropy [J/(kmol K)] + inline scalar s0(const scalar T) const; + + //- perfect Gas internal Energy [J/kmol] + inline scalar e0(const scalar T) const; + + //- perfect gas Heat capacity at constant pressure [J/(kmol K)] + inline scalar cv0(const scalar T) const; + + //- perfect gas Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp0(const scalar T) const; + + //- Limited Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp(const scalar rho, const scalar T) const; + + //- non Limited Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp_nonLimited(const scalar rho, const scalar T) const; + + //- Heat capacity at constant pressure [J/(kmol K)] + inline scalar cv(const scalar rho, const scalar T) const; + + //- Enthalpy [J/kmol] + inline scalar h(const scalar rho, const scalar T) const; + + //- Entropy [J/(kmol K)] + inline scalar s(const scalar rho,const scalar T) const; + + //- Internal Energy [J/kmol] + inline scalar e(const scalar rho, const scalar T) const; + + + // Member operators + + inline void operator+=(const constantHeatCapacity&); + inline void operator-=(const constantHeatCapacity&); + + + // Friend operators + + friend constantHeatCapacity operator+ + ( + const constantHeatCapacity&, + const constantHeatCapacity& + ); + + friend constantHeatCapacity operator- + ( + const constantHeatCapacity&, + const constantHeatCapacity& + ); + + friend constantHeatCapacity operator* + ( + const scalar, + const constantHeatCapacity& + ); + + friend constantHeatCapacity operator== + ( + const constantHeatCapacity&, + const constantHeatCapacity& + ); + + + // IOstream Operators + + friend Ostream& operator<< + ( + Ostream&, + const constantHeatCapacity& + ); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "constantHeatCapacityI.H" + +#ifdef NoRepository +# include "constantHeatCapacity.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/constantHeatCapacity/constantHeatCapacityI.H b/src/thermophysicalModels/specie/thermo/realGasThermo/constantHeatCapacity/constantHeatCapacityI.H new file mode 100755 index 000000000..92cc0e91a --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/constantHeatCapacity/constantHeatCapacityI.H @@ -0,0 +1,402 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +//- Construct from components +//CL: used for the operator+ +template +inline Foam::constantHeatCapacity::constantHeatCapacity +( + const equationOfState& st, + const scalar cp0_ +) +: + equationOfState(st), + cp0_(cp0_), + e0_std(e0(this->Tstd)), + s0_std(s0(this->Tstd)), + integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd)), + integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd)), + cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd)) +{} + + +//- Construct from components +//CL: used for the operator* +template +inline Foam::constantHeatCapacity::constantHeatCapacity +( + const equationOfState& st, + const scalar cp0_, + const scalar e0_std_, + const scalar s0_std_, + const scalar integral_p_dv_std_, + const scalar integral_dpdT_dv_std_, + const scalar cp_std_ +) +: + equationOfState(st), + cp0_(cp0_), + e0_std(e0_std_), + s0_std(s0_std_), + integral_p_dv_std(integral_p_dv_std_), + integral_dpdT_dv_std(integral_dpdT_dv_std_), + cp_std(cp_std_) +{} + + +template +inline Foam::constantHeatCapacity::constantHeatCapacity +( + const word& name, + const constantHeatCapacity& np +) +: + equationOfState(name, np), + cp0_(np.cp0_), + e0_std(np.e0_std), + s0_std(np.s0_std), + integral_p_dv_std(np.integral_p_dv_std), + integral_dpdT_dv_std(np.integral_dpdT_dv_std), + cp_std(np.cp_std) +{} + + +template +inline Foam::autoPtr > +Foam::constantHeatCapacity::clone() const +{ + return autoPtr > + ( + new constantHeatCapacity(*this) + ); +} + + +template +inline Foam::autoPtr > +Foam::constantHeatCapacity::New(Istream& is) +{ + return autoPtr > + ( + new constantHeatCapacity(is) + ); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +//used to calculate the internal energy +//perfect gas enthalpy +template +inline Foam::scalar Foam::constantHeatCapacity::h0 +( + const scalar T +) const +{ + return cp0_*T; +} + + +//used to calculate the internal energy +//perfect gas internal energy +template +inline Foam::scalar Foam::constantHeatCapacity::e0 +( + const scalar T +) const +{ + return this->h0(T) - this->RR*T; +} + + +// used to calculate the entropy +// perfect gas entropy +template +inline Foam::scalar Foam::constantHeatCapacity::s0 +( + const scalar T +) const +{ + return cp0_*log(T); +} + + +//perfect gas cp +template +inline Foam::scalar Foam::constantHeatCapacity::cp0 +( + const scalar T +) const +{ + return cp0_; +} + + +//perfect gas cv +template +inline Foam::scalar Foam::constantHeatCapacity::cv0 +( + const scalar T +) const +{ + + return this->cp0(T)-this->RR; +} + + +//function to calculate real gas cp +//using cp=cv+(dp/dT)^2/(dp/dv) +template +inline Foam::scalar Foam::constantHeatCapacity::cp +( + const scalar rho, + const scalar T +) const +{ + // Problem --> dpdv(rho,T) is =0 at some points within the vapour dome. To increase stability, (dp/dv) has to be limited + // cp can be negative within the vapor dome. To avoid this nonphysical result, the absolute value is used. + // within the vapourdome and at the critical point, cp increases to very high values --> infinity, + // this would decrease the stability, so cp will be limited to 20 times the cp @ STD + return + min + ( + cp_std*20, + fabs + ( + this->cv(rho,T) + -T*pow((this->dpdT(rho, T)),2) + /min(this->dpdv(rho, T),-1) + ) + ); +} + + +// this function is needed to get cp @ STD (without the limit imposed in the function above), +// which in turn is needed to limit the cp in the function above +template +inline Foam::scalar Foam::constantHeatCapacity::cp_nonLimited +( + const scalar rho, + const scalar T +) const +{ + return fabs(this->cv(rho,T)-T*pow((this->dpdT(rho, T)),2)/min(this->dpdv(rho, T),-1)); +} + + +//function to calculate real gas cv +//cv=cv0+T*integral d2p/dT2 dv +template +inline Foam::scalar Foam::constantHeatCapacity::cv +( + const scalar rho, + const scalar T + +) const +{ + return this->cv0(T)+T*this->integral_d2pdT2_dv(rho, T); +} + + +//function to calculate real gas enthalpy +template +inline Foam::scalar Foam::constantHeatCapacity::h +( + const scalar rho, + const scalar T +) const +{ + return this->e(rho,T)+this->p(rho,T)/rho*this->W()-this->Pstd/this->rhostd()*this->W(); +} + + +// function to calculate real gas internal energy +// important assumption used: internal Energie is 0 at STD conditions. +// equation: du= cv0 dT +[T*dp/dT -p]dv +template +inline Foam::scalar Foam::constantHeatCapacity::e +( + const scalar rho, + const scalar T +) const +{ + return + ( + -this->Tstd*integral_dpdT_dv_std + +integral_p_dv_std + +this->e0(T)-e0_std + +T*this->integral_dpdT_dv(rho,T) + -this->integral_p_dv(rho,T) + ); +} + + +//function to calculate real gas entropy +// important assumption used: the Entropy is 0 at STD conditions. +// equation: ds= cv0/T * dT + dp/dT *dv +// --> integral cv0/T dT = s0(T) -s0(Tstd) - R*ln(T/Tstd) --> due to s0(T)-s0(Tstd)=integral cp0/T dT +template +inline Foam::scalar Foam::constantHeatCapacity::s +( + const scalar rho, + const scalar T + +) const +{ + return -integral_dpdT_dv_std + +(this->s0(T)-s0_std) + -this->RR*log(T/this->Tstd) + + this->integral_dpdT_dv(rho,T); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +template +inline void Foam::constantHeatCapacity::operator+= +( + const constantHeatCapacity& np +) +{ + + scalar molr1 = this->nMoles(); + + equationOfState::operator+=(np); + + molr1 /= this->nMoles(); + scalar molr2 = np.nMoles()/this->nMoles(); + + cp0_ = molr1*cp0_ + molr2*np.cp0_; +} + + +template +inline void Foam::constantHeatCapacity::operator-= +( + const constantHeatCapacity& np +) +{ + scalar molr1 = this->nMoles(); + + constantHeatCapacity::operator-=(np); + + molr1 /= this->nMoles(); + scalar molr2 = np.nMoles()/this->nMoles(); + + cp0_ = molr1*cp0_ - molr2*np.cp0_; +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +template +inline Foam::constantHeatCapacity Foam::operator+ +( + const constantHeatCapacity& np1, + const constantHeatCapacity& np2 +) +{ + equationOfState eofs + ( + static_cast(np1) + + static_cast(np2) + ); + + //CL: Important, calls a different constructor as operator* + //CL: the coefficients as well as the EOS (coefficients) changed + //CL: therefore, the values at STD needs to be recalculated + return constantHeatCapacity + ( + eofs, + np1.nMoles()/eofs.nMoles()*np1.cp0_ + + np2.nMoles()/eofs.nMoles()*np2.cp0_ + ); +} + + +template +inline Foam::constantHeatCapacity Foam::operator- +( + const constantHeatCapacity& np1, + const constantHeatCapacity& np2 +) +{ + equationOfState eofs + ( + static_cast(np1) + - static_cast(np2) + ); + + return constantHeatCapacity + ( + eofs, + np1.nMoles()/eofs.nMoles()*np1.cp0_ + - np2.nMoles()/eofs.nMoles()*np2.cp0_ + ); +} + + +template +inline Foam::constantHeatCapacity Foam::operator* +( + const scalar s, + const constantHeatCapacity& np +) +{ + //CL: values at STD don't need to be recalculated, + //CL: therefore, providing the values in the constructor + return constantHeatCapacity + ( + s*static_cast(np), + np.cp0_, + np.e0_std, + np.s0_std, + np.integral_p_dv_std, + np.integral_dpdT_dv_std, + np.cp_std + ); +} + + +template +inline Foam::constantHeatCapacity Foam::operator== +( + const constantHeatCapacity& np1, + const constantHeatCapacity& np2 +) +{ + return np2 - np1; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C new file mode 100755 index 000000000..18a8aab1c --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C @@ -0,0 +1,76 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "nasaHeatCapacityPolynomial.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Istream& is) +: + equationOfState(is), + a1_(readScalar(is)), + a2_(readScalar(is)), + a3_(readScalar(is)), + a4_(readScalar(is)), + a5_(readScalar(is)), + a6_(readScalar(is)), + a7_(readScalar(is)), + //values for some need terms at std + e0_std(e0(this->Tstd)), + s0_std(s0(this->Tstd)), + integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd)), + integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd)), + //cp @ STD (needed to limit cp for stability + cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd)) +{ + is.check("nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Istream& is)"); +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +template +Foam::Ostream& Foam::operator<< +( + Ostream& os, + const nasaHeatCapacityPolynomial& np +) +{ + os << static_cast(np) << tab + << np.a1_ << tab<< np.a2_ << tab << np.a3_ << tab << np.a4_ << tab << np.a5_ << tab << np.a6_ << tab << np.a7_ ; + os.check("Ostream& operator<<(Ostream& os, const nasaHeatCapacityPolynomial& np)"); + return os; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H new file mode 100755 index 000000000..dbddd6ea9 --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H @@ -0,0 +1,274 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Class + Foam::nasaHeatCapacityPolynomial + +Description + Nasa Heat Capacity Polynomial for perfect Gas (7.order polynominal) --> freely available for many fluids + --> paper title: NASA Glenn Coefficients for Calculating Thermodynamic Properties of Individual Species + + templated into the equationOfState + -> uses the equation of state to calculate all real Gas properties like Enthalpy, Entropy ... + -> can not be used with the perfectGas equation of state + + Equations for the real gas correction: Have a look at thermodnamics books + e.g. Thermodynamics: An Engineering Approch, 5 Edition, Chapter 12 + +SourceFiles + nasaHeatCapacityPolynomialI.H + nasaHeatCapacityPolynomial.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef nasaHeatCapacityPolynomial_H +#define nasaHeatCapacityPolynomial_H + + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of friend functions and operators + +template class nasaHeatCapacityPolynomial; + +template +inline nasaHeatCapacityPolynomial operator+ +( + const nasaHeatCapacityPolynomial&, + const nasaHeatCapacityPolynomial& +); + +template +inline nasaHeatCapacityPolynomial operator- +( + const nasaHeatCapacityPolynomial&, + const nasaHeatCapacityPolynomial& +); + +template +inline nasaHeatCapacityPolynomial operator* +( + const scalar, + const nasaHeatCapacityPolynomial& +); + +template +inline nasaHeatCapacityPolynomial operator== +( + const nasaHeatCapacityPolynomial&, + const nasaHeatCapacityPolynomial& +); + +template +Ostream& operator<< +( + Ostream&, + const nasaHeatCapacityPolynomial& +); + + +/*---------------------------------------------------------------------------*\ + Class nasaHeatCapacityPolynomial Thermo Declaration +\*---------------------------------------------------------------------------*/ + +template +class nasaHeatCapacityPolynomial +: + public equationOfState +{ + // Private data + + scalar a1_; + scalar a2_; + scalar a3_; + scalar a4_; + scalar a5_; + scalar a6_; + scalar a7_; + scalar e0_std; + scalar s0_std; + scalar integral_p_dv_std; + scalar integral_dpdT_dv_std; + scalar cp_std; + + // Private member functions + + //- Construct from components + //CL: used for the operator+ + inline nasaHeatCapacityPolynomial + ( + const equationOfState& st, + const scalar a1, + const scalar a2, + const scalar a3, + const scalar a4, + const scalar a5, + const scalar a6, + const scalar a7 + ); + + //- Construct from components + //CL: used for the operator* + inline nasaHeatCapacityPolynomial + ( + const equationOfState& st, + const scalar a1, + const scalar a2, + const scalar a3, + const scalar a4, + const scalar a5, + const scalar a6, + const scalar a7, + const scalar e0_std_, + const scalar s0_std_, + const scalar integral_p_dv_std_, + const scalar integral_dpdT_dv_std_, + const scalar cp_std_ + ); + +public: + +//Variable + + // Constructors + //- Construct from Istream + nasaHeatCapacityPolynomial(Istream&); + + //- Construct from dictionary + nasaHeatCapacityPolynomial(const dictionary& dict); + + //- Construct as named copy + inline nasaHeatCapacityPolynomial(const word&, const nasaHeatCapacityPolynomial&); + + //- Construct and return a clone + inline autoPtr clone() const; + + //- Selector from Istream + inline static autoPtr New(Istream& is); + + // Member Functions + + //- perfect Gas Enthalpy [J/kmol] + inline scalar h0(const scalar T) const; + + //- perfect Gas Entropy [J/(kmol K)] + inline scalar s0(const scalar T) const; + + //- perfect Gas internal Energy [J/kmol] + inline scalar e0(const scalar T) const; + + //- perfect gas Heat capacity at constant pressure [J/(kmol K)] + inline scalar cv0(const scalar T) const; + + //- perfect gas Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp0(const scalar T) const; + + //- Limited Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp(const scalar rho, const scalar T) const; + + //- non Limited Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp_nonLimited(const scalar rho, const scalar T) const; + + //- Heat capacity at constant pressure [J/(kmol K)] + inline scalar cv(const scalar rho, const scalar T) const; + + //- Enthalpy [J/kmol] + inline scalar h(const scalar rho, const scalar T) const; + + //- Entropy [J/(kmol K)] + inline scalar s(const scalar rho,const scalar T) const; + + //- Internal Energy [J/kmol] + inline scalar e(const scalar rho, const scalar T) const; + + + // Member operators + + inline void operator+=(const nasaHeatCapacityPolynomial&); + inline void operator-=(const nasaHeatCapacityPolynomial&); + + + // Friend operators + + friend nasaHeatCapacityPolynomial operator+ + ( + const nasaHeatCapacityPolynomial&, + const nasaHeatCapacityPolynomial& + ); + + friend nasaHeatCapacityPolynomial operator- + ( + const nasaHeatCapacityPolynomial&, + const nasaHeatCapacityPolynomial& + ); + + friend nasaHeatCapacityPolynomial operator* + ( + const scalar, + const nasaHeatCapacityPolynomial& + ); + + friend nasaHeatCapacityPolynomial operator== + ( + const nasaHeatCapacityPolynomial&, + const nasaHeatCapacityPolynomial& + ); + + + // IOstream Operators + + friend Ostream& operator<< + ( + Ostream&, + const nasaHeatCapacityPolynomial& + ); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "nasaHeatCapacityPolynomialI.H" + +#ifdef NoRepository +# include "nasaHeatCapacityPolynomial.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H new file mode 100755 index 000000000..3b7987a2c --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H @@ -0,0 +1,501 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +//- Construct from components +//CL: used for the operator+ +template +inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial +( + const equationOfState& st, + const scalar a1, + const scalar a2, + const scalar a3, + const scalar a4, + const scalar a5, + const scalar a6, + const scalar a7 +) +: + equationOfState(st), + a1_(a1), + a2_(a2), + a3_(a3), + a4_(a4), + a5_(a5), + a6_(a6), + a7_(a7), + e0_std(e0(this->Tstd)), + s0_std(s0(this->Tstd)), + integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd)), + integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd)), + cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd)) +{} + + +//- Construct from components +//CL: used for the operator* +template +inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial +( + const equationOfState& st, + const scalar a1, + const scalar a2, + const scalar a3, + const scalar a4, + const scalar a5, + const scalar a6, + const scalar a7, + const scalar e0_std_, + const scalar s0_std_, + const scalar integral_p_dv_std_, + const scalar integral_dpdT_dv_std_, + const scalar cp_std_ +) +: + equationOfState(st), + a1_(a1), + a2_(a2), + a3_(a3), + a4_(a4), + a5_(a5), + a6_(a6), + a7_(a7), + e0_std(e0_std_), + s0_std(s0_std_), + integral_p_dv_std(integral_p_dv_std_), + integral_dpdT_dv_std(integral_dpdT_dv_std_), + cp_std(cp_std_) +{} + + +template +inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial +( + const word& name, + const nasaHeatCapacityPolynomial& np +) +: + equationOfState(name, np), + a1_(np.a1_), + a2_(np.a2_), + a3_(np.a3_), + a4_(np.a4_), + a5_(np.a5_), + a6_(np.a6_), + a7_(np.a7_), + e0_std(np.e0_std), + s0_std(np.s0_std), + integral_p_dv_std(np.integral_p_dv_std), + integral_dpdT_dv_std(np.integral_dpdT_dv_std), + cp_std(np.cp_std) +{} + + +template +inline Foam::autoPtr > +Foam::nasaHeatCapacityPolynomial::clone() const +{ + return autoPtr > + ( + new nasaHeatCapacityPolynomial(*this) + ); +} + + +template +inline Foam::autoPtr > +Foam::nasaHeatCapacityPolynomial::New(Istream& is) +{ + return autoPtr > + ( + new nasaHeatCapacityPolynomial(is) + ); +} + + + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +//used to calculate the internal energy +//perfect gas enthalpy +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h0 +( + const scalar T +) const +{ + return + this->RR*T* + ( + -this->a1_*pow(T,-2) + +this->a2_*log(T)/T + +this->a3_ + +0.5*this->a4_*T + +(this->a5_*pow(T,2))/3 + +(this->a6_*pow(T,3))/4 + +(this->a7_*pow(T,4))/5 + ); +} + + +//used to calculate the internal energy +//perfect gas internal energy +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e0 +( + const scalar T +) const +{ + return this->h0(T) - this->RR*T; +} + + +// used to calculate the entropy +// perfect gas entropy +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s0 +( + const scalar T +) const +{ + return this->RR* + ( + this->a1_*(-1)/(2*pow(T,2)) + -this->a2_/T+this->a3_*log(T) + +this->a4_*T + +(this->a5_*pow(T,2))/2 + +(this->a6_*pow(T,3))/3 + +(this->a7_*pow(T,4))/4 + ); +} + + +//perfect gas cp +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp0 +( + const scalar T +) const +{ + return this->RR* + ( + this->a1_*1/pow(T,2) + +this->a2_*1/T + +this->a3_ + +this->a4_*T + +this->a5_*pow(T,2) + +this->a6_*pow(T,3) + +this->a7_*pow(T,4) + ); +} + + +//perfect gas cv +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cv0 +( + const scalar T +) const +{ + + return this->cp0(T)-this->RR; +} + + +//function to calculate real gas cp +//using cp=cv+(dp/dT)^2/(dp/dv) +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp +( + const scalar rho, + const scalar T +) const +{ + // Problem --> dpdv(rho,T) is =0 at some points within the vapour dome. To increase stability, (dp/dv) has to be limited + // cp can be negative within the vapor dome. To avoid this nonphysical result, the absolute value is used. + // within the vapourdome and at the critical point, cp increases to very high values --> infinity, + // this would decrease the stability, so cp will be limited to 20 times the cp @ STD + return + min + ( + cp_std*20, + fabs + ( + this->cv(rho,T) + -T*pow((this->dpdT(rho, T)),2) + /min(this->dpdv(rho, T),-1) + ) + ); +} + + +// this function is needed to get cp @ STD (without the limit imposed in the function above), +// which in turn is needed to limit the cp in the function above +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp_nonLimited +( + const scalar rho, + const scalar T +) const +{ + return fabs(this->cv(rho,T)-T*pow((this->dpdT(rho, T)),2)/min(this->dpdv(rho, T),-1)); +} + + +//function to calculate real gas cv +//cv=cv0+T*integral d2p/dT2 dv +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cv +( + const scalar rho, + const scalar T + +) const +{ + return this->cv0(T)+T*this->integral_d2pdT2_dv(rho, T); +} + + +//function to calculate real gas enthalpy +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h +( + const scalar rho, + const scalar T +) const +{ + return this->e(rho,T)+this->p(rho,T)/rho*this->W()-this->Pstd/this->rhostd()*this->W(); +} + + +// function to calculate real gas internal energy +// important assumption used: internal Energie is 0 at STD conditions. +// equation: du= cv0 dT +[T*dp/dT -p]dv +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e +( + const scalar rho, + const scalar T +) const +{ + return + ( + -this->Tstd*integral_dpdT_dv_std + +integral_p_dv_std + +this->e0(T)-e0_std + +T*this->integral_dpdT_dv(rho,T) + -this->integral_p_dv(rho,T) + ); +} + + +//function to calculate real gas entropy +// important assumption used: the Entropy is 0 at STD conditions. +// equation: ds= cv0/T * dT + dp/dT *dv +// --> integral cv0/T dT = s0(T) -s0(Tstd) - R*ln(T/Tstd) --> due to s0(T)-s0(Tstd)=integral cp0/T dT +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s +( + const scalar rho, + const scalar T + +) const +{ + return -integral_dpdT_dv_std + +(this->s0(T)-s0_std) + -this->RR*log(T/this->Tstd) + + this->integral_dpdT_dv(rho,T); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +template +inline void Foam::nasaHeatCapacityPolynomial::operator+= +( + const nasaHeatCapacityPolynomial& np +) +{ + + scalar molr1 = this->nMoles(); + + equationOfState::operator+=(np); + + molr1 /= this->nMoles(); + scalar molr2 = np.nMoles()/this->nMoles(); + + a1_ = molr1*a1_ + molr2*np.a1_; + a2_ = molr1*a2_ + molr2*np.a2_; + a3_ = molr1*a3_ + molr2*np.a3_; + a4_ = molr1*a4_ + molr2*np.a4_; + a5_ = molr1*a5_ + molr2*np.a5_; + a6_ = molr1*a6_ + molr2*np.a6_; + a7_ = molr1*a7_ + molr2*np.a7_; +} + + +template +inline void Foam::nasaHeatCapacityPolynomial::operator-= +( + const nasaHeatCapacityPolynomial& np +) +{ + scalar molr1 = this->nMoles(); + + nasaHeatCapacityPolynomial::operator-=(np); + + molr1 /= this->nMoles(); + scalar molr2 = np.nMoles()/this->nMoles(); + + a1_ = molr1*a1_ - molr2*np.a1_; + a2_ = molr1*a2_ - molr2*np.a2_; + a3_ = molr1*a3_ - molr2*np.a3_; + a4_ = molr1*a4_ - molr2*np.a4_; + a5_ = molr1*a5_ - molr2*np.a5_; + a6_ = molr1*a6_ - molr2*np.a6_; + a7_ = molr1*a7_ - molr2*np.a7_; +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +template +inline Foam::nasaHeatCapacityPolynomial Foam::operator+ +( + const nasaHeatCapacityPolynomial& np1, + const nasaHeatCapacityPolynomial& np2 +) +{ + equationOfState eofs + ( + static_cast(np1) + + static_cast(np2) + ); + + //CL: Important, calls a different constructor as operator* + //CL: the coefficients as well as the EOS (coefficients) changed + //CL: therefore, the values at STD needs to be recalculated + return nasaHeatCapacityPolynomial + ( + eofs, + np1.nMoles()/eofs.nMoles()*np1.a1_ + + np2.nMoles()/eofs.nMoles()*np2.a1_, + np1.nMoles()/eofs.nMoles()*np1.a2_ + + np2.nMoles()/eofs.nMoles()*np2.a2_, + np1.nMoles()/eofs.nMoles()*np1.a3_ + + np2.nMoles()/eofs.nMoles()*np2.a3_, + np1.nMoles()/eofs.nMoles()*np1.a4_ + + np2.nMoles()/eofs.nMoles()*np2.a4_, + np1.nMoles()/eofs.nMoles()*np1.a5_ + + np2.nMoles()/eofs.nMoles()*np2.a5_, + np1.nMoles()/eofs.nMoles()*np1.a6_ + + np2.nMoles()/eofs.nMoles()*np2.a6_, + np1.nMoles()/eofs.nMoles()*np1.a7_ + + np2.nMoles()/eofs.nMoles()*np2.a7_ + ); +} + + +template +inline Foam::nasaHeatCapacityPolynomial Foam::operator- +( + const nasaHeatCapacityPolynomial& np1, + const nasaHeatCapacityPolynomial& np2 +) +{ + equationOfState eofs + ( + static_cast(np1) + - static_cast(np2) + ); + + return nasaHeatCapacityPolynomial + ( + eofs, + np1.nMoles()/eofs.nMoles()*np1.a1_ + - np2.nMoles()/eofs.nMoles()*np2.a1_, + np1.nMoles()/eofs.nMoles()*np1.a2_ + - np2.nMoles()/eofs.nMoles()*np2.a2_, + np1.nMoles()/eofs.nMoles()*np1.a3_ + - np2.nMoles()/eofs.nMoles()*np2.a3_, + np1.nMoles()/eofs.nMoles()*np1.a4_ + - np2.nMoles()/eofs.nMoles()*np2.a4_, + np1.nMoles()/eofs.nMoles()*np1.a5_ + - np2.nMoles()/eofs.nMoles()*np2.a5_, + np1.nMoles()/eofs.nMoles()*np1.a6_ + - np2.nMoles()/eofs.nMoles()*np2.a6_, + np1.nMoles()/eofs.nMoles()*np1.a7_ + - np2.nMoles()/eofs.nMoles()*np2.a7_ + ); +} + + +template +inline Foam::nasaHeatCapacityPolynomial Foam::operator* +( + const scalar s, + const nasaHeatCapacityPolynomial& np +) +{ + //CL: values at STD don't need to be recalculated, + //CL: therefore, providing the values in the constructor + return nasaHeatCapacityPolynomial + ( + s*static_cast(np), + np.a1_, + np.a2_, + np.a3_, + np.a4_, + np.a5_, + np.a6_, + np.a7_, + np.e0_std, + np.s0_std, + np.integral_p_dv_std, + np.integral_dpdT_dv_std, + np.cp_std + ); +} + + +template +inline Foam::nasaHeatCapacityPolynomial Foam::operator== +( + const nasaHeatCapacityPolynomial& np1, + const nasaHeatCapacityPolynomial& np2 +) +{ + return np2 - np1; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C new file mode 100755 index 000000000..deca62146 --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C @@ -0,0 +1,63 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "realGasSpecieThermo.H" +#include "IOstreams.H" + +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ + +template +const Foam::scalar Foam::realGasSpecieThermo::tol_ = 1.0e-9; + +template +const int Foam::realGasSpecieThermo::maxIter_ = 500; + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::realGasSpecieThermo::realGasSpecieThermo(Istream& is) +: + thermo(is) +{ + is.check("realGasSpecieThermo::realGasSpecieThermo(Istream& is)"); + + +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +template +Foam::Ostream& Foam::operator<<(Ostream& os, const realGasSpecieThermo& st) +{ + os << static_cast(st); + + os.check("Ostream& operator<<(Ostream& os, const realGasSpecieThermo& st)"); + return os; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H new file mode 100755 index 000000000..3529ba8a9 --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H @@ -0,0 +1,276 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Class + Foam::realGasSpecieThermo + +Description + + This is an subversion of the specieThermo function. While the "orginal" specieThermo function + is only valid for perfect gases, this function is valid for real gases. + + Basic thermodynamics type based on the use of fitting functions for + cp, h, s obtained from the template argument type thermo. All other + properties are derived from these primitive functions. + +SourceFiles + realGasSpecieThermoI.H + realGasSpecieThermo.C + +\*---------------------------------------------------------------------------*/ + +#ifndef realGasSpecieThermo_H +#define realGasSpecieThermo_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of friend functions and operators + +template class realGasSpecieThermo; + +template +inline realGasSpecieThermo operator+ +( + const realGasSpecieThermo&, + const realGasSpecieThermo& +); + +template +inline realGasSpecieThermo operator- +( + const realGasSpecieThermo&, + const realGasSpecieThermo& +); + +template +inline realGasSpecieThermo operator* +( + const scalar, + const realGasSpecieThermo& +); + +template +inline realGasSpecieThermo operator== +( + const realGasSpecieThermo&, + const realGasSpecieThermo& +); + +template +Ostream& operator<< +( + Ostream&, + const realGasSpecieThermo& +); + + +/*---------------------------------------------------------------------------*\ + Class realGasSpecieThermo Declaration +\*---------------------------------------------------------------------------*/ + +template +class realGasSpecieThermo +: + public thermo +{ + // Private data + + //- Convergence tolerance of energy -> temperature inversion functions + static const scalar tol_; + + //- Max number of iterations in energy->temperature inversion functions + static const int maxIter_; + + + // Private member functions + + // return the temperature corresponding to the value of the + // thermodynamic property f, given the function f = F(rho,T) and dF(rho,T)/dT + inline void T + ( + scalar f, + scalar &T0, + scalar p, + scalar &rho0, + scalar (realGasSpecieThermo::*F)(const scalar,const scalar) const, + scalar (realGasSpecieThermo::*dFdT)(const scalar,const scalar) const + ) const; + +public: + + // Constructors + + //- construct from components + inline realGasSpecieThermo(const thermo& sp); + + //- Construct from Istream + realGasSpecieThermo(Istream&); + + //- Construct as named copy + inline realGasSpecieThermo(const word& name, const realGasSpecieThermo&); + + + // Member Functions + + // Fundamaental properties + // (These functions must be provided in derived types) + + // Sensible enthalpy [J/kmol] + //virtual scalar hs(const scalar) const; + + // Chemical enthalpy [J/kmol] + //virtual scalar hc(const scalar) const; + + // Calculate and return derived properties + // (These functions need not provided in derived types) + + //CL: isentropic expansion factor "gamma" (heat capacity ratio for perfect gas) + inline scalar gamma(const scalar T, const scalar rho) const; + + //- Sensible internal energy [J/kmol] + // inline scalar es(const scalar p, const scalar rho) const; + + //- Gibbs free energy [J/kmol] + inline scalar g(const scalar rho, const scalar T ) const; + + //- Helmholtz free energy [J/kmol] + inline scalar a(const scalar rho, const scalar T ) const; + + + // Mass specific properties + + //- Heat capacity at constant pressure [J/(kg K)] + inline scalar Cp(const scalar rho, const scalar T) const; + + //- Heat capacity at constant volume [J/(kg K)] + inline scalar Cv(const scalar rho, const scalar T) const; + + //- Enthalpy [J/kg] + inline scalar H(const scalar rho, const scalar T) const; + + //- Sensible enthalpy [J/kg] + // inline scalar Hs(const scalar T) const; + + //- Chemical enthalpy [J/kg] + // inline scalar Hc() const; + + //- Entropy [J/(kg K)] + inline scalar S(const scalar rho, const scalar T) const; + + //- Internal energy [J/kg] + inline scalar E(const scalar rho, const scalar T) const; + + //- Gibbs free energy [J/kg] + inline scalar G(const scalar rho, const scalar T) const; + + //- Helmholtz free energy [J/kg] + inline scalar A(const scalar rho, const scalar T) const; + + //CL: Other variables + + //- Return compressibility drho/dp at h=constant [s^2/m^2] + inline scalar psiH(const scalar rho, const scalar T) const; + + //- Return compressibility drho/dp at e=constant [s^2/m^2] + inline scalar psiE(const scalar rho, const scalar T) const; + + //- Return compressibility drho/dH at p=constant + inline scalar drhodH(const scalar rho, const scalar T) const; + + //- Return compressibility drho/dE at p=constant + inline scalar drhodE(const scalar rho, const scalar T) const; + + + // Energy->temperature inversion functions + + //- Temperature from Enthalpy given an initial temperature T0 + inline void TH(const scalar H, scalar &T0,const scalar p, scalar &psi0) const; + + //- Temperature from internal energy given an initial temperature T0 + inline void TE(const scalar E, scalar &T0,const scalar p, scalar &psi0) const; + + + // Member operators + + inline void operator+=(const realGasSpecieThermo&); + inline void operator-=(const realGasSpecieThermo&); + inline void operator*=(const scalar); + + + // Friend operators + + friend realGasSpecieThermo operator+ + ( + const realGasSpecieThermo&, + const realGasSpecieThermo& + ); + + friend realGasSpecieThermo operator- + ( + const realGasSpecieThermo&, + const realGasSpecieThermo& + ); + + friend realGasSpecieThermo operator* + ( + const scalar s, + const realGasSpecieThermo& + ); + + friend realGasSpecieThermo operator== + ( + const realGasSpecieThermo&, + const realGasSpecieThermo& + ); + + + // Ostream Operator + + friend Ostream& operator<< + ( + Ostream&, + const realGasSpecieThermo& + ); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "realGasSpecieThermoI.H" + +#ifdef NoRepository +# include "realGasSpecieThermo.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H new file mode 100755 index 000000000..6b0077d5e --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H @@ -0,0 +1,382 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "realGasSpecieThermo.H" + +template +inline Foam::realGasSpecieThermo::realGasSpecieThermo +( + const thermo& sp +) +: + thermo(sp) +{} + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + + +//CL: using two one dimensional newton solvers in a row +template +inline void Foam::realGasSpecieThermo::T +( + scalar f, + scalar &T0, + scalar p, + scalar &rho0, + scalar (realGasSpecieThermo::*F)(const scalar,const scalar) const, + scalar (realGasSpecieThermo::*dFdT)(const scalar,const scalar) const +) const +{ + scalar Test ; + scalar Tnew = T0; + scalar rhoOld; + scalar rho=rho0; + scalar Ttol = T0*tol_; + scalar rhotol=rho0*tol_; + label iter = 0; + label i; + + do + { + Test = Tnew; + rhoOld=rho; + rho=this->rho(p,Test,rhoOld); + i=0; + do + { + //CL: using a stabilizing newton solver + //CL: if the solve is diverging, the step is reduced until the solver converges + Tnew = Test - ((this->*F)(rho,Test) - f)/(this->*dFdT)(rho,Test)/(pow(2,i)); + i++; + }while + ( + (i<20) + && + (( + mag((this->*F)(rho,Tnew) - f) + > + mag((this->*F)(rho,Test) - f) + )) + ); + + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "realGasSpecieThermo::T(scalar f, scalar T0, scalar p, scalar rho0, " + "scalar (realGasSpecieThermo::*F)(const scalar) const, " + "scalar (realGasSpecieThermo::*dFdT)(const scalar) const" + ") const" + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } + } while + //CL: both fields must converge + ( + (mag(mag(Tnew) - mag(Test)) > Ttol) + || + (mag(mag(rho) - mag(rhoOld)) > rhotol) + ); + + rho0=rho; + T0=Tnew; +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +inline Foam::realGasSpecieThermo::realGasSpecieThermo +( + const word& name, + const realGasSpecieThermo& st +) +: + thermo(name, st) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template +inline Foam::scalar Foam::realGasSpecieThermo::gamma(const scalar rho, const scalar T ) const +{ + return -1/(rho*this->p(rho,T))*this->cp(rho,T)/this->cv(rho,T)*this->dpdv(rho,T); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::g(const scalar rho, const scalar T ) const +{ + return this->h(rho, T) - T*this->s(rho, T); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::a(const scalar rho, const scalar T ) const +{ + return this->e(rho,T ) - T*this->s(rho, T); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::Cp( const scalar rho, const scalar T) const +{ + return this->cp(rho, T)/this->W(); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::Cv( const scalar rho, const scalar T) const +{ + return this->cv(rho, T)/this->W(); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::H(const scalar rho, const scalar T) const +{ + return this->h(rho, T)/this->W(); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::S(const scalar rho, const scalar T) const +{ + return this->s(rho, T)/this->W(); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::E(const scalar rho, const scalar T) const +{ + return this->e(rho, T)/this->W(); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::G(const scalar rho, const scalar T) const +{ + return this->g(rho, T)/this->W(); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::A(const scalar rho, const scalar T) const +{ + return this->a(rho, T)/this->W(); +} + + +//CL:- Return compressibility drho/dp at h=constant [s^2/m^2] +//CL:- using Bridgeman's Table +template +inline Foam::scalar Foam::realGasSpecieThermo::psiH +( + const scalar rho, + const scalar T + +) const +{ + scalar beta=this->isobarExpCoef(rho,T); + + return + -( + (T*beta*beta-beta)/this->Cp(rho,T) + -this->isothermalCompressiblity(rho,T)*rho + ); +} + + +//CL:- Return compressibility drho/dp at e=constant [s^2/m^2] +//CL:- using Bridgeman's Table +template +inline Foam::scalar Foam::realGasSpecieThermo::psiE +( + const scalar rho, + const scalar T + +) const +{ + scalar V = 1/rho; + scalar cp=this->Cp(rho,T); + scalar beta=this->isobarExpCoef(rho,T); + + return + -( + ( + T*pow(beta,2)*V + -this->isothermalCompressiblity(rho,T)*cp + ) + / + ( + cp*V + -beta*this->p(rho,T)*pow(V,2) + ) + ); +} + + +//CL:- Returns drho/dH at p=constant +//CL:- using Bridgeman's Table +template +inline Foam::scalar Foam::realGasSpecieThermo::drhodH +( + const scalar rho, + const scalar T + +) const +{ + return -(rho*this->isobarExpCoef(rho,T))/this->Cp(rho,T); +} + + +//CL:- Returns drho/dE at p=constant +//CL:- using Bridgeman's Table +template +inline Foam::scalar Foam::realGasSpecieThermo::drhodE +( + const scalar rho, + const scalar T + +) const +{ + scalar beta=this->isobarExpCoef(rho,T); + + return -(rho*beta)/(this->Cp(rho,T)-beta*this->p(rho,T)/rho); +} + + +template +inline void Foam::realGasSpecieThermo::TH +( + const scalar h, + scalar &T0, + const scalar p, + scalar &rho0 +) const +{ + T(h, T0, p,rho0, &realGasSpecieThermo::H, &realGasSpecieThermo::Cp); +} + + +template +inline void Foam::realGasSpecieThermo::TE +( + const scalar e, + scalar &T0, + const scalar p, + scalar &rho0 +) const +{ + T(e, T0, p,rho0, &realGasSpecieThermo::E, &realGasSpecieThermo::Cv); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +template +inline void Foam::realGasSpecieThermo::operator+= +( + const realGasSpecieThermo& st +) +{ + thermo::operator+=(st); +} + + +template +inline void Foam::realGasSpecieThermo::operator-= +( + const realGasSpecieThermo& st +) +{ + thermo::operator-=(st); +} + + +template +inline void Foam::realGasSpecieThermo::operator*=(const scalar s) +{ + thermo::operator*=(s); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +template +inline Foam::realGasSpecieThermo Foam::operator+ +( + const realGasSpecieThermo& st1, + const realGasSpecieThermo& st2 +) +{ + return realGasSpecieThermo + ( + static_cast(st1) + static_cast(st2) + ); +} + + +template +inline Foam::realGasSpecieThermo Foam::operator- +( + const realGasSpecieThermo& st1, + const realGasSpecieThermo& st2 +) +{ + return realGasSpecieThermo + ( + static_cast(st1) - static_cast(st2) + ); +} + + +template +inline Foam::realGasSpecieThermo Foam::operator* +( + const scalar s, + const realGasSpecieThermo& st +) +{ + return realGasSpecieThermo + ( + s*static_cast(st) + ); +} + + +template +inline Foam::realGasSpecieThermo Foam::operator== +( + const realGasSpecieThermo& st1, + const realGasSpecieThermo& st2 +) +{ + return st2 - st1; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/constRealGas/constRealGasTransport.C b/src/thermophysicalModels/specie/transport/constRealGas/constRealGasTransport.C new file mode 100644 index 000000000..1892116c0 --- /dev/null +++ b/src/thermophysicalModels/specie/transport/constRealGas/constRealGasTransport.C @@ -0,0 +1,56 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "constRealGasTransport.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::constRealGasTransport::constRealGasTransport(Istream& is) +: + Thermo(is), + mu_(readScalar(is)), + rPr_(1.0/readScalar(is)) +{ + is.check("constRealGasTransport::constRealGasTransport(Istream& is)"); +} + + +// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // + +template +Foam::Ostream& Foam::operator<<(Ostream& os, const constRealGasTransport& ct) +{ + operator<<(os, static_cast(ct)); + os << tab << ct.mu_ << tab << 1.0/ct.rPr_; + + os.check("Ostream& operator<<(Ostream&, const constRealGasTransport&)"); + + return os; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/constRealGas/constRealGasTransport.H b/src/thermophysicalModels/specie/transport/constRealGas/constRealGasTransport.H new file mode 100644 index 000000000..7b73a4df1 --- /dev/null +++ b/src/thermophysicalModels/specie/transport/constRealGas/constRealGasTransport.H @@ -0,0 +1,202 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Class + Foam::constRealGasTransport + +Description + Constant properties Transport package. + Templated into a given thermodynamics package (needed for thermal + conductivity). + +SourceFiles + constRealGasTransportI.H + constRealGasTransport.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constRealGasTransport_H +#define constRealGasTransport_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of friend functions and operators + +template class constRealGasTransport; + +template +inline constRealGasTransport operator+ +( + const constRealGasTransport&, + const constRealGasTransport& +); + +template +inline constRealGasTransport operator- +( + const constRealGasTransport&, + const constRealGasTransport& +); + +template +inline constRealGasTransport operator* +( + const scalar, + const constRealGasTransport& +); + +template +inline constRealGasTransport operator== +( + const constRealGasTransport&, + const constRealGasTransport& +); + +template +Ostream& operator<< +( + Ostream&, + const constRealGasTransport& +); + + +/*---------------------------------------------------------------------------*\ + Class constRealGasTransport Declaration +\*---------------------------------------------------------------------------*/ + +template +class constRealGasTransport +: + public Thermo +{ + // Private data + + //- Constant dynamic viscosity [Pa.s] + scalar mu_; + + //- Reciprocal Prandtl Number [] + scalar rPr_; + + + // Private Member Functions + + //- Construct from components + inline constRealGasTransport + ( + const Thermo& t, + const scalar mu, + const scalar Pr + ); + + +public: + + // Constructors + + //- Construct as named copy + inline constRealGasTransport(const word&, const constRealGasTransport&); + + //- Construct from Istream + constRealGasTransport(Istream&); + + + // Member functions + + //- Dynamic viscosity [kg/ms] + inline scalar mu(const scalar T) const; + + //- Thermal conductivity [W/mK] + inline scalar kappa(const scalar rho, const scalar T) const; + + //- Thermal diffusivity for enthalpy [kg/ms] + inline scalar alpha(const scalar rho, const scalar T) const; + + // Species diffusivity + //inline scalar D(const scalar T) const; + + + // Member operators + + inline constRealGasTransport& operator= + ( + const constRealGasTransport& + ); + + + // Friend operators + + friend constRealGasTransport operator+ + ( + const constRealGasTransport&, + const constRealGasTransport& + ); + + friend constRealGasTransport operator- + ( + const constRealGasTransport&, + const constRealGasTransport& + ); + + friend constRealGasTransport operator* + ( + const scalar, + const constRealGasTransport& + ); + + friend constRealGasTransport operator== + ( + const constRealGasTransport&, + const constRealGasTransport& + ); + + + // Ostream Operator + + friend Ostream& operator<< + ( + Ostream&, + const constRealGasTransport& + ); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "constRealGasTransportI.H" + +#ifdef NoRepository +# include "constRealGasTransport.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/constRealGas/constRealGasTransportI.H b/src/thermophysicalModels/specie/transport/constRealGas/constRealGasTransportI.H new file mode 100644 index 000000000..9a0a5b9a0 --- /dev/null +++ b/src/thermophysicalModels/specie/transport/constRealGas/constRealGasTransportI.H @@ -0,0 +1,182 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +inline Foam::constRealGasTransport::constRealGasTransport +( + const Thermo& t, + const scalar mu, + const scalar Pr +) +: + Thermo(t), + mu_(mu), + rPr_(1.0/Pr) +{} + + +template +inline Foam::constRealGasTransport::constRealGasTransport +( + const word& name, + const constRealGasTransport& ct +) +: + Thermo(name, ct), + mu_(ct.mu_), + rPr_(ct.rPr_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template +inline Foam::scalar Foam::constRealGasTransport::mu(const scalar) const +{ + return mu_; +} + + +// CL: for real gas thermo +// Thermal conductivity [W/mK] +template +inline Foam::scalar Foam::constRealGasTransport::kappa(const scalar rho,const scalar T) const +{ + return this->Cp(rho,T)*mu(T)*rPr_; +} + + +// CL: for real gas thermo +// Thermal diffusivity for enthalpy [kg/ms] +template +inline Foam::scalar Foam::constRealGasTransport::alpha(const scalar rho,const scalar T) const +{ + scalar Cp_ = this->Cp(rho,T); + + scalar deltaT = T - specie::Tstd; + scalar CpBar = + (deltaT*(this->H(rho,T) - this->H(this->rhostd(),specie::Tstd)) + Cp_)/(sqr(deltaT) + 1); + + return Cp_*mu(T)*rPr_/CpBar; +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +template +inline Foam::constRealGasTransport& Foam::constRealGasTransport::operator= +( + const constRealGasTransport& ct +) +{ + Thermo::operator=(ct); + + mu_ = ct.mu_; + rPr_ = ct.rPr_; + + return *this; +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +template +inline Foam::constRealGasTransport Foam::operator+ +( + const constRealGasTransport& ct1, + const constRealGasTransport& ct2 +) +{ + Thermo t + ( + static_cast(ct1) + static_cast(ct2) + ); + + scalar molr1 = ct1.nMoles()/t.nMoles(); + scalar molr2 = ct2.nMoles()/t.nMoles(); + + return constRealGasTransport + ( + t, + molr1*ct1.mu_ + molr2*ct2.mu_, + molr1*ct1.rPr_ + molr2*ct2.rPr_ + ); +} + + +template +inline Foam::constRealGasTransport Foam::operator- +( + const constRealGasTransport& ct1, + const constRealGasTransport& ct2 +) +{ + Thermo t + ( + static_cast(ct1) - static_cast(ct2) + ); + + scalar molr1 = ct1.nMoles()/t.nMoles(); + scalar molr2 = ct2.nMoles()/t.nMoles(); + + return constRealGasTransport + ( + t, + molr1*ct1.mu_ - molr2*ct2.mu_, + molr1*ct1.rPr_ - molr2*ct2.rPr_ + ); +} + + +template +inline Foam::constRealGasTransport Foam::operator* +( + const scalar s, + const constRealGasTransport& ct +) +{ + return constRealGasTransport + ( + s*static_cast(ct), + ct.mu_, + ct.rPr_ + ); +} + + +template +inline Foam::constRealGasTransport Foam::operator== +( + const constRealGasTransport& ct1, + const constRealGasTransport& ct2 +) +{ + return ct2 - ct1; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/sutherlandRealGas/sutherlandRealGasTransport.C b/src/thermophysicalModels/specie/transport/sutherlandRealGas/sutherlandRealGasTransport.C new file mode 100644 index 000000000..56ccc9138 --- /dev/null +++ b/src/thermophysicalModels/specie/transport/sutherlandRealGas/sutherlandRealGasTransport.C @@ -0,0 +1,62 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "sutherlandRealGasTransport.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::sutherlandRealGasTransport::sutherlandRealGasTransport(Istream& is) +: + Thermo(is), + As_(readScalar(is)), + Ts_(readScalar(is)) +{ + is.check("sutherlandRealGasTransport::sutherlandRealGasTransport(Istream&)"); +} + + +// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // + +template +Foam::Ostream& Foam::operator<< +( + Ostream& os, + const sutherlandRealGasTransport& st +) +{ + os << static_cast(st) << tab << st.As_ << tab << st.Ts_; + + os.check + ( + "Ostream& operator<<(Ostream&, const sutherlandRealGasTransport&)" + ); + + return os; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/sutherlandRealGas/sutherlandRealGasTransport.H b/src/thermophysicalModels/specie/transport/sutherlandRealGas/sutherlandRealGasTransport.H new file mode 100644 index 000000000..861a06328 --- /dev/null +++ b/src/thermophysicalModels/specie/transport/sutherlandRealGas/sutherlandRealGasTransport.H @@ -0,0 +1,227 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +Class + Foam::sutherlandRealGasTransport + +Description + Transport package using Sutherland's formula. + + Templated into a given thermodynamics package (needed for thermal + conductivity). + + Dynamic viscosity [kg/m.s] + \f[ + \mu = A_s \frac{\sqrt{T}}{1 + T_s / T} + \f] + +SourceFiles + sutherlandRealGasTransportI.H + sutherlandRealGasTransport.C + +\*---------------------------------------------------------------------------*/ + +#ifndef sutherlandRealGasTransport_H +#define sutherlandRealGasTransport_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of friend functions and operators + +template class sutherlandRealGasTransport; + +template +inline sutherlandRealGasTransport operator+ +( + const sutherlandRealGasTransport&, + const sutherlandRealGasTransport& +); + +template +inline sutherlandRealGasTransport operator- +( + const sutherlandRealGasTransport&, + const sutherlandRealGasTransport& +); + +template +inline sutherlandRealGasTransport operator* +( + const scalar, + const sutherlandRealGasTransport& +); + +template +inline sutherlandRealGasTransport operator== +( + const sutherlandRealGasTransport&, + const sutherlandRealGasTransport& +); + +template +Ostream& operator<< +( + Ostream&, + const sutherlandRealGasTransport& +); + + +/*---------------------------------------------------------------------------*\ + Class sutherlandRealGasTransport Declaration +\*---------------------------------------------------------------------------*/ + +template +class sutherlandRealGasTransport +: + public Thermo +{ + // Private data + + // Sutherland's coefficients + scalar As_, Ts_; + + + // Private Member Functions + + //- Calculate the Sutherland coefficients + // given two viscosities and temperatures + inline void calcCoeffs + ( + const scalar mu1, const scalar T1, + const scalar mu2, const scalar T2 + ); + + +public: + + // Constructors + + //- Construct from components + inline sutherlandRealGasTransport + ( + const Thermo& t, + const scalar As, + const scalar Ts + ); + + //- Construct from two viscosities + inline sutherlandRealGasTransport + ( + const Thermo& t, + const scalar mu1, const scalar T1, + const scalar mu2, const scalar T2 + ); + + //- Construct as named copy + inline sutherlandRealGasTransport(const word&, const sutherlandRealGasTransport&); + + //- Construct from Istream + sutherlandRealGasTransport(Istream&); + + //- Construct and return a clone + inline autoPtr clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + // Selector from dictionary + inline static autoPtr New(const dictionary& dict); + + + // Member functions + + //- Dynamic viscosity [kg/ms] + inline scalar mu(const scalar T) const; + + //- Thermal conductivity [W/mK] + inline scalar kappa(const scalar rho,const scalar T) const; + + //- Thermal diffusivity for enthalpy [kg/ms] + inline scalar alpha(const scalar rho,const scalar T) const; + + + // Member operators + + inline sutherlandRealGasTransport& operator= + ( + const sutherlandRealGasTransport& + ); + + + // Friend operators + + friend sutherlandRealGasTransport operator+ + ( + const sutherlandRealGasTransport&, + const sutherlandRealGasTransport& + ); + + friend sutherlandRealGasTransport operator- + ( + const sutherlandRealGasTransport&, + const sutherlandRealGasTransport& + ); + + friend sutherlandRealGasTransport operator* + ( + const scalar, + const sutherlandRealGasTransport& + ); + + friend sutherlandRealGasTransport operator== + ( + const sutherlandRealGasTransport&, + const sutherlandRealGasTransport& + ); + + + // Ostream Operator + + friend Ostream& operator<< + ( + Ostream&, + const sutherlandRealGasTransport& + ); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "sutherlandRealGasTransportI.H" + +#ifdef NoRepository +# include "sutherlandRealGasTransport.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/sutherlandRealGas/sutherlandRealGasTransportI.H b/src/thermophysicalModels/specie/transport/sutherlandRealGas/sutherlandRealGasTransportI.H new file mode 100644 index 000000000..ee94dbc99 --- /dev/null +++ b/src/thermophysicalModels/specie/transport/sutherlandRealGas/sutherlandRealGasTransportI.H @@ -0,0 +1,266 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend 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. + + foam-extend 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 foam-extend. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "specie.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template +inline void Foam::sutherlandRealGasTransport::calcCoeffs +( + const scalar mu1, const scalar T1, + const scalar mu2, const scalar T2 +) +{ + scalar rootT1 = sqrt(T1); + scalar mu1rootT2 = mu1*sqrt(T2); + scalar mu2rootT1 = mu2*rootT1; + + Ts_ = (mu2rootT1 - mu1rootT2)/(mu1rootT2/T1 - mu2rootT1/T2); + + As_ = mu1*(1.0 + Ts_/T1)/rootT1; +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +inline Foam::sutherlandRealGasTransport::sutherlandRealGasTransport +( + const Thermo& t, + const scalar As, + const scalar Ts +) +: + Thermo(t), + As_(As), + Ts_(Ts) +{} + + +template +inline Foam::sutherlandRealGasTransport::sutherlandRealGasTransport +( + const Thermo& t, + const scalar mu1, const scalar T1, + const scalar mu2, const scalar T2 +) +: + Thermo(t) +{ + calcCoeffs(mu1, T1, mu2, T2); +} + + +template +inline Foam::sutherlandRealGasTransport::sutherlandRealGasTransport +( + const word& name, + const sutherlandRealGasTransport& st +) +: + Thermo(name, st), + As_(st.As_), + Ts_(st.Ts_) +{} + + +template +inline Foam::autoPtr > +Foam::sutherlandRealGasTransport::clone() const +{ + return autoPtr > + ( + new sutherlandRealGasTransport(*this) + ); +} + + +template +inline Foam::autoPtr > +Foam::sutherlandRealGasTransport::New +( + Istream& is +) +{ + return autoPtr > + ( + new sutherlandRealGasTransport(is) + ); +} + + +template +inline Foam::autoPtr > +Foam::sutherlandRealGasTransport::New +( + const dictionary& dict +) +{ + return autoPtr > + ( + new sutherlandRealGasTransport(dict) + ); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template +inline Foam::scalar Foam::sutherlandRealGasTransport::mu(const scalar T) const +{ + return As_*::sqrt(T)/(1.0 + Ts_/T); +} + + +// CL: for real gas thermo +// Thermal conductivity [W/mK] +template +inline Foam::scalar Foam::sutherlandRealGasTransport::kappa +( + const scalar rho, + const scalar T +) const +{ + scalar Cv_ = this->Cv(rho,T); + return mu(T)*Cv_*(1.32 + 1.77*this->R()/Cv_); +} + + +// CL: for real gas thermo +// Thermal diffusivity for enthalpy [kg/ms] +template +inline Foam::scalar Foam::sutherlandRealGasTransport::alpha +( + const scalar rho, + const scalar T +) const +{ + scalar Cv_ = this->Cv(rho,T); + scalar Cp_ = this->Cp(rho,T); + + scalar deltaT = T - specie::Tstd; + scalar CpBar = + (deltaT*(this->H(rho, T) - this->H(this->rhostd(),specie::Tstd)) + Cp_)/(sqr(deltaT) + 1); + + return mu(T)*Cv_*(1.32 + 1.77*this->R()/Cv_)/CpBar; +} + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +template +inline Foam::sutherlandRealGasTransport& +Foam::sutherlandRealGasTransport::operator= +( + const sutherlandRealGasTransport& st +) +{ + Thermo::operator=(st); + + As_ = st.As_; + Ts_ = st.Ts_; + + return *this; +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +template +inline Foam::sutherlandRealGasTransport Foam::operator+ +( + const sutherlandRealGasTransport& st1, + const sutherlandRealGasTransport& st2 +) +{ + Thermo t + ( + static_cast(st1) + static_cast(st2) + ); + + scalar molr1 = st1.nMoles()/t.nMoles(); + scalar molr2 = st2.nMoles()/t.nMoles(); + + return sutherlandRealGasTransport + ( + t, + molr1*st1.As_ + molr2*st2.As_, + molr1*st1.Ts_ + molr2*st2.Ts_ + ); +} + + +template +inline Foam::sutherlandRealGasTransport Foam::operator- +( + const sutherlandRealGasTransport& st1, + const sutherlandRealGasTransport& st2 +) +{ + Thermo t + ( + static_cast(st1) - static_cast(st2) + ); + + scalar molr1 = st1.nMoles()/t.nMoles(); + scalar molr2 = st2.nMoles()/t.nMoles(); + + return sutherlandRealGasTransport + ( + t, + molr1*st1.As_ - molr2*st2.As_, + molr1*st1.Ts_ - molr2*st2.Ts_ + ); +} + + +template +inline Foam::sutherlandRealGasTransport Foam::operator* +( + const scalar s, + const sutherlandRealGasTransport& st +) +{ + return sutherlandRealGasTransport + ( + s*static_cast(st), + st.As_, + st.Ts_ + ); +} + + +template +inline Foam::sutherlandRealGasTransport Foam::operator== +( + const sutherlandRealGasTransport& st1, + const sutherlandRealGasTransport& st2 +) +{ + return st2 - st1; +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/T b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/T new file mode 100755 index 000000000..7e5542596 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/T @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 333.15; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 333.15; + } + outlet + { + type zeroGradient; + } + + upperWall + { + type zeroGradient; + } + lowerWall + { + type zeroGradient; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/U b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/U new file mode 100755 index 000000000..1711edb62 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/U @@ -0,0 +1,51 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type pressureInletVelocity; + value uniform (1 0 0); + } + outlet + { + type zeroGradient; + } + + upperWall + { + type fixedValue; + value uniform (0 0 0); + } + lowerWall + { + type fixedValue; + value uniform (0 0 0); + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/epsilon b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/epsilon new file mode 100644 index 000000000..b284626d8 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/epsilon @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1120; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1120; + } + outlet + { + type inletOutlet; + inletValue uniform 1120; + value uniform 1120; + } + upperWall + { + type compressible::epsilonWallFunction; + refValue uniform 0; + value uniform 1120; + Cmu 0.09; + kappa 0.41; + E 9.8; + } + lowerWall + { + type compressible::epsilonWallFunction; + refValue uniform 0; + value uniform 1120; + Cmu 0.09; + kappa 0.41; + E 9.8; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/k b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/k new file mode 100644 index 000000000..b6e33fab5 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/k @@ -0,0 +1,53 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 5; + +boundaryField +{ + inlet + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.01; + U U; + phi phi; + value uniform 5; + } + outlet + { + type zeroGradient; + } + upperWall + { + type compressible::kqRWallFunction; + value uniform 5; + } + lowerWall + { + type compressible::kqRWallFunction; + value uniform 5; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/p b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/p new file mode 100755 index 000000000..781404e7b --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/p @@ -0,0 +1,54 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 80e5; + +boundaryField +{ + inlet + { + type totalPressure; + rho rho; + psi none; + gamma 1.4; + p0 uniform 80.01e5; + value uniform 80.01e5; + } + outlet + { + type fixedValue; + value uniform 8e+06; + } + + upperWall + { + type zeroGradient; + } + lowerWall + { + type zeroGradient; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/Allrun b/tutorials/compressible/realFluidPisoFoam/ras/backStep/Allrun new file mode 100755 index 000000000..30b386dfe --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/Allrun @@ -0,0 +1,9 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +runApplication blockMesh +runApplication `getApplication` diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/RASProperties b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/RASProperties new file mode 100755 index 000000000..334f83e39 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/RASProperties @@ -0,0 +1,25 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object RASProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +RASModel kEpsilon; + +turbulence on; + +printCoeffs on; + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/polyMesh/blockMeshDict b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/polyMesh/blockMeshDict new file mode 100644 index 000000000..c5ed430e1 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/polyMesh/blockMeshDict @@ -0,0 +1,173 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.001; + +vertices +( + (-20.6 0 -0.5) + (-20.6 3 -0.5) + (-20.6 12.7 -0.5) + (-20.6 25.4 -0.5) + (0 -25.4 -0.5) + (0 -5 -0.5) + (0 0 -0.5) + (0 3 -0.5) + (0 12.7 -0.5) + (0 25.4 -0.5) + (206 -25.4 -0.5) + (206 -8.5 -0.5) + (206 0 -0.5) + (206 6.5 -0.5) + (206 17 -0.5) + (206 25.4 -0.5) + (290 -16.6 -0.5) + (290 -6.3 -0.5) + (290 0 -0.5) + (290 4.5 -0.5) + (290 11 -0.5) + (290 16.6 -0.5) + (-20.6 0 0.5) + (-20.6 3 0.5) + (-20.6 12.7 0.5) + (-20.6 25.4 0.5) + (0 -25.4 0.5) + (0 -5 0.5) + (0 0 0.5) + (0 3 0.5) + (0 12.7 0.5) + (0 25.4 0.5) + (206 -25.4 0.5) + (206 -8.5 0.5) + (206 0 0.5) + (206 6.5 0.5) + (206 17 0.5) + (206 25.4 0.5) + (290 -16.6 0.5) + (290 -6.3 0.5) + (290 0 0.5) + (290 4.5 0.5) + (290 11 0.5) + (290 16.6 0.5) +); + +blocks +( + hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) + hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) + hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1) + hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) + hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) + hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) + hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) + hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) + hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) + hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) + hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) + hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) + hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) +); + +edges +( +); + +boundary +( + inlet + { + type patch; + faces + ( + (0 22 23 1) + (1 23 24 2) + (2 24 25 3) + ); + } + outlet + { + type patch; + faces + ( + (16 17 39 38) + (17 18 40 39) + (18 19 41 40) + (19 20 42 41) + (20 21 43 42) + ); + } + upperWall + { + type wall; + faces + ( + (3 25 31 9) + (9 31 37 15) + (15 37 43 21) + ); + } + lowerWall + { + type wall; + faces + ( + (0 6 28 22) + (6 5 27 28) + (5 4 26 27) + (4 10 32 26) + (10 16 38 32) + ); + } + frontAndBack + { + type empty; + faces + ( + (22 28 29 23) + (23 29 30 24) + (24 30 31 25) + (26 32 33 27) + (27 33 34 28) + (28 34 35 29) + (29 35 36 30) + (30 36 37 31) + (32 38 39 33) + (33 39 40 34) + (34 40 41 35) + (35 41 42 36) + (36 42 43 37) + (0 1 7 6) + (1 2 8 7) + (2 3 9 8) + (4 5 11 10) + (5 6 12 11) + (6 7 13 12) + (7 8 14 13) + (8 9 15 14) + (10 11 17 16) + (11 12 18 17) + (12 13 19 18) + (13 14 20 19) + (14 15 21 20) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/thermophysicalProperties b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/thermophysicalProperties new file mode 100755 index 000000000..42c9e9125 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/thermophysicalProperties @@ -0,0 +1,68 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +//CL: List of possible real gas models + +thermoType realGasHThermo>>>>; +mixture CO2 1 44.01 73.773e5 304.13 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 467.6 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801E-13 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; + + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 839 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; + + +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; + +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; + + + +//CL: description of coefficients +// *********************************************************************************************************************** // +// Coefficient: +// CO2 --> Name +// 1 +// 44.01 --> Molar Volume +// 77.773e5 --> critical pressure +// 304.13 --> critical temperatur +// 0.22394 --> acentric factor (not needed for redlich kwong) +// 467.6 --> critical density (only for aungier redlich kwong) +// 49436.5054 --> 2.849677801e-13 --> 7 heat capacity polynomial coefficent's +// .... --> two coefficent's for sutherlandRealGasTransport or for the constRealGasTransport model +// 839 --> perfect gas heat capacity Cp0 (J/kgK), needed for constantHeatCapacity +// *********************************************************************************************************************** // + diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/turbulenceProperties b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/turbulenceProperties new file mode 100755 index 000000000..11e716e4e --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/turbulenceProperties @@ -0,0 +1,20 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RASModel; + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/controlDict b/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/controlDict new file mode 100755 index 000000000..17ef143fc --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/controlDict @@ -0,0 +1,55 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application realFluidPisoFoam; + +startFrom latestTime; + +//startTime 0; + +stopAt endTime; + +endTime 0.5; + +deltaT 1e-5; + +writeControl runTime; + +writeInterval 0.1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 10; + +adjustTimeStep yes; + +maxCo 0.5; + +maxDeltaT 1e-2; + +runTimeModifiable yes; + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSchemes b/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSchemes new file mode 100644 index 000000000..3a594c586 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSchemes @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; + grad(p) Gauss linear; +} + +divSchemes +{ + default Gauss linear; + div(phi,U) Gauss limitedLinearV 1; + div(phid,p) Gauss limitedLinear 1; + div(phiU,p) Gauss linear; + div(phi,h) Gauss limitedLinear 1; + div(phi,k) Gauss limitedLinear 1; + div(phi,epsilon) Gauss limitedLinear 1; + div(phi,R) Gauss limitedLinear 1; + div(phi,omega) Gauss limitedLinear 1; + div((rho*R)) Gauss linear; + div(R) Gauss linear; + div(U) Gauss linear; + div((muEff*dev2(grad(U).T()))) Gauss linear; +} + +laplacianSchemes +{ + default none; + laplacian(muEff,U) Gauss linear corrected; + laplacian(mut,U) Gauss linear corrected; + laplacian(DkEff,k) Gauss linear corrected; + laplacian(DepsilonEff,epsilon) Gauss linear corrected; + laplacian(DREff,R) Gauss linear corrected; + laplacian(DomegaEff,omega) Gauss linear corrected; + laplacian((rho*(1|A(U))),p) Gauss linear corrected; + laplacian(alphaEff,h) Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p ; +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSolution b/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSolution new file mode 100755 index 000000000..7a470c4b8 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSolution @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + +p +{ + solver GAMG; + tolerance 1e-14; + relTol 0.001; + smoother GaussSeidel; + minIter 4; + //maxIter 100; + cacheAgglomeration true; + nPreSweeps 1; + nPostSweeps 3; + nFinestSweeps 3; + nCellsInCoarsestLevel 20; + agglomerator faceAreaPair; + mergeLevels 1; +} + + U + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + rho + { + solver PCG; + preconditioner DIC; + tolerance 1e-10; + relTol 0; + } + + htot + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + h + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + k + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0; + } + epsilon + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0; + } +} + +PISO +{ + nNonOrthogonalCorrectors 0; + nCorrectors 2; + momentumPredictor yes; +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/T b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/T new file mode 100755 index 000000000..de08c916e --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/T @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 500; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 500; + } + outlet + { + type zeroGradient; + } + + upperWall + { + type zeroGradient; + } + lowerWall + { + type zeroGradient; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/U b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/U new file mode 100755 index 000000000..a4d73fd53 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/U @@ -0,0 +1,51 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value uniform (1 0 0); + } + outlet + { + type zeroGradient; + } + + upperWall + { + type fixedValue; + value uniform (0 0 0); + } + lowerWall + { + type fixedValue; + value uniform (0 0 0); + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/epsilon b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/epsilon new file mode 100644 index 000000000..543162521 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/epsilon @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1120; + +boundaryField +{ + upperWall + { + type compressible::epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 1120; + } + lowerWall + { + type compressible::epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 1120; + } + inlet + { + type fixedValue; + value uniform 1120; + } + outlet + { + type inletOutlet; + inletValue uniform 1120; + value uniform 1120; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/k b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/k new file mode 100644 index 000000000..c80afacb1 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/k @@ -0,0 +1,53 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 5; + +boundaryField +{ + upperWall + { + type compressible::kqRWallFunction; + value uniform 5; + } + lowerWall + { + type compressible::kqRWallFunction; + value uniform 5; + } + inlet + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.01; + U U; + phi phi; + value uniform 5; + } + outlet + { + type zeroGradient; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/p b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/p new file mode 100755 index 000000000..4b562e9da --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0.org/p @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 10e5; + +boundaryField +{ + inlet + { + type zeroGradient; + } + outlet + { + type fixedValue; + value uniform 1e+06; + } + + upperWall + { + type zeroGradient; + } + lowerWall + { + type zeroGradient; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/T b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/T new file mode 100755 index 000000000..de08c916e --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/T @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 500; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 500; + } + outlet + { + type zeroGradient; + } + + upperWall + { + type zeroGradient; + } + lowerWall + { + type zeroGradient; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/U b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/U new file mode 100755 index 000000000..a4d73fd53 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/U @@ -0,0 +1,51 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value uniform (1 0 0); + } + outlet + { + type zeroGradient; + } + + upperWall + { + type fixedValue; + value uniform (0 0 0); + } + lowerWall + { + type fixedValue; + value uniform (0 0 0); + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/epsilon b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/epsilon new file mode 100644 index 000000000..543162521 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/epsilon @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1120; + +boundaryField +{ + upperWall + { + type compressible::epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 1120; + } + lowerWall + { + type compressible::epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 1120; + } + inlet + { + type fixedValue; + value uniform 1120; + } + outlet + { + type inletOutlet; + inletValue uniform 1120; + value uniform 1120; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/k b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/k new file mode 100644 index 000000000..c80afacb1 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/k @@ -0,0 +1,53 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 5; + +boundaryField +{ + upperWall + { + type compressible::kqRWallFunction; + value uniform 5; + } + lowerWall + { + type compressible::kqRWallFunction; + value uniform 5; + } + inlet + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.01; + U U; + phi phi; + value uniform 5; + } + outlet + { + type zeroGradient; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/p b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/p new file mode 100755 index 000000000..4b562e9da --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/0/p @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 10e5; + +boundaryField +{ + inlet + { + type zeroGradient; + } + outlet + { + type fixedValue; + value uniform 1e+06; + } + + upperWall + { + type zeroGradient; + } + lowerWall + { + type zeroGradient; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/Allrun b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/Allrun new file mode 100755 index 000000000..30b386dfe --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/Allrun @@ -0,0 +1,9 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +runApplication blockMesh +runApplication `getApplication` diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/README b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/README new file mode 100644 index 000000000..7a48d017c --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/README @@ -0,0 +1,48 @@ +This tutorial is to show how the IAPWSThermo work in foam + +//***********************INFORMATION TO TEST CASE*******************************// + +Important files in this case: + +1. thermophysicalProperties + +--> see thermotype + +2. controlDict: + +the dynamic libraries used for the IAPWS 97 water properties are not directly link into foam. +Therefore, the dynamic libraries need to be defined in controlDict + + +//************************NEW CODE NEEDED FOR THIS CASE*************************// + +1. Code in foam: $WM_PROJECT_DIR/src/thermophysicalModels/externalMedia/ + just run wmake libso in the folder + +2. FreeSteam: download the code @ http://freesteam.sourceforge.net/example.php + +//***********************Problems*******************************// + +If problems occur using the IAPWS 97 water properties, please check the following points + +1. have you successfully compiled freeSteam? + + a: If no, have you installed gsl, scons and so on (see README.txt in the freeSteam) + b: If yes, is the libfreesteam.so in a folder where foam finds it e.g. $WM_PROJECT_DIR/lib/... + +2. have you compiled the thermophysical models that connect freeSteam to foam. They can be found in this folder: $WM_PROJECT_DIR/src/ + thermophysicalModels/externalMedia/ + + +3. IS THE SOLVER STARTING TO RUN THE CASE? NO + + check b23.c file at line 39 (or at least somewhere in the code: + + if you find the following code: + return B23_N[4] + sqrt((pi - B23_N[5])/B23_N[3]) /* * 1{K} */; + + change it to this: + return B23_N[4] + sqrt(fabs(pi - B23_N[5])/B23_N[3]) /* * 1{K} */; + + + diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/RASProperties b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/RASProperties new file mode 100755 index 000000000..334f83e39 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/RASProperties @@ -0,0 +1,25 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object RASProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +RASModel kEpsilon; + +turbulence on; + +printCoeffs on; + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/polyMesh/blockMeshDict b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/polyMesh/blockMeshDict new file mode 100644 index 000000000..c5ed430e1 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/polyMesh/blockMeshDict @@ -0,0 +1,173 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.001; + +vertices +( + (-20.6 0 -0.5) + (-20.6 3 -0.5) + (-20.6 12.7 -0.5) + (-20.6 25.4 -0.5) + (0 -25.4 -0.5) + (0 -5 -0.5) + (0 0 -0.5) + (0 3 -0.5) + (0 12.7 -0.5) + (0 25.4 -0.5) + (206 -25.4 -0.5) + (206 -8.5 -0.5) + (206 0 -0.5) + (206 6.5 -0.5) + (206 17 -0.5) + (206 25.4 -0.5) + (290 -16.6 -0.5) + (290 -6.3 -0.5) + (290 0 -0.5) + (290 4.5 -0.5) + (290 11 -0.5) + (290 16.6 -0.5) + (-20.6 0 0.5) + (-20.6 3 0.5) + (-20.6 12.7 0.5) + (-20.6 25.4 0.5) + (0 -25.4 0.5) + (0 -5 0.5) + (0 0 0.5) + (0 3 0.5) + (0 12.7 0.5) + (0 25.4 0.5) + (206 -25.4 0.5) + (206 -8.5 0.5) + (206 0 0.5) + (206 6.5 0.5) + (206 17 0.5) + (206 25.4 0.5) + (290 -16.6 0.5) + (290 -6.3 0.5) + (290 0 0.5) + (290 4.5 0.5) + (290 11 0.5) + (290 16.6 0.5) +); + +blocks +( + hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) + hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) + hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1) + hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) + hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) + hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) + hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) + hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) + hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) + hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) + hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) + hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) + hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) +); + +edges +( +); + +boundary +( + inlet + { + type patch; + faces + ( + (0 22 23 1) + (1 23 24 2) + (2 24 25 3) + ); + } + outlet + { + type patch; + faces + ( + (16 17 39 38) + (17 18 40 39) + (18 19 41 40) + (19 20 42 41) + (20 21 43 42) + ); + } + upperWall + { + type wall; + faces + ( + (3 25 31 9) + (9 31 37 15) + (15 37 43 21) + ); + } + lowerWall + { + type wall; + faces + ( + (0 6 28 22) + (6 5 27 28) + (5 4 26 27) + (4 10 32 26) + (10 16 38 32) + ); + } + frontAndBack + { + type empty; + faces + ( + (22 28 29 23) + (23 29 30 24) + (24 30 31 25) + (26 32 33 27) + (27 33 34 28) + (28 34 35 29) + (29 35 36 30) + (30 36 37 31) + (32 38 39 33) + (33 39 40 34) + (34 40 41 35) + (35 41 42 36) + (36 42 43 37) + (0 1 7 6) + (1 2 8 7) + (2 3 9 8) + (4 5 11 10) + (5 6 12 11) + (6 7 13 12) + (7 8 14 13) + (8 9 15 14) + (10 11 17 16) + (11 12 18 17) + (12 13 19 18) + (13 14 20 19) + (14 15 21 20) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/polyMesh/boundary b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/polyMesh/boundary new file mode 100644 index 000000000..50905a79d --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/polyMesh/boundary @@ -0,0 +1,52 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +5 +( + inlet + { + type patch; + nFaces 30; + startFace 24170; + } + outlet + { + type patch; + nFaces 57; + startFace 24200; + } + upperWall + { + type wall; + nFaces 223; + startFace 24257; + } + lowerWall + { + type wall; + nFaces 250; + startFace 24480; + } + frontAndBack + { + type empty; + nFaces 24450; + startFace 24730; + } +) + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/thermophysicalProperties b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/thermophysicalProperties new file mode 100755 index 000000000..09ade9ab7 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/thermophysicalProperties @@ -0,0 +1,23 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +//CL: this is all +thermoType IAPWSThermo; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/turbulenceProperties b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/turbulenceProperties new file mode 100755 index 000000000..09e0fc845 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/constant/turbulenceProperties @@ -0,0 +1,21 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RASModel; + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/system/controlDict b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/system/controlDict new file mode 100755 index 000000000..0c49e76d9 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/system/controlDict @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application realFluidPisoFoam; + +startFrom latestTime; + +//startTime 0; + +stopAt endTime; + +endTime 0.5; + +deltaT 1e-5; + +writeControl runTime; + +writeInterval 1e-1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 10; + +adjustTimeStep yes; + +maxCo 0.75; + +maxDeltaT 0.01; + +runTimeModifiable yes; + +libs +( + "libIAPWSThermo.so" + "libfreesteam.so" +); + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/system/fvSchemes b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/system/fvSchemes new file mode 100644 index 000000000..3a594c586 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/system/fvSchemes @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; + grad(p) Gauss linear; +} + +divSchemes +{ + default Gauss linear; + div(phi,U) Gauss limitedLinearV 1; + div(phid,p) Gauss limitedLinear 1; + div(phiU,p) Gauss linear; + div(phi,h) Gauss limitedLinear 1; + div(phi,k) Gauss limitedLinear 1; + div(phi,epsilon) Gauss limitedLinear 1; + div(phi,R) Gauss limitedLinear 1; + div(phi,omega) Gauss limitedLinear 1; + div((rho*R)) Gauss linear; + div(R) Gauss linear; + div(U) Gauss linear; + div((muEff*dev2(grad(U).T()))) Gauss linear; +} + +laplacianSchemes +{ + default none; + laplacian(muEff,U) Gauss linear corrected; + laplacian(mut,U) Gauss linear corrected; + laplacian(DkEff,k) Gauss linear corrected; + laplacian(DepsilonEff,epsilon) Gauss linear corrected; + laplacian(DREff,R) Gauss linear corrected; + laplacian(DomegaEff,omega) Gauss linear corrected; + laplacian((rho*(1|A(U))),p) Gauss linear corrected; + laplacian(alphaEff,h) Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p ; +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/system/fvSolution b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/system/fvSolution new file mode 100755 index 000000000..7a470c4b8 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep_IAPWS97/system/fvSolution @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + +p +{ + solver GAMG; + tolerance 1e-14; + relTol 0.001; + smoother GaussSeidel; + minIter 4; + //maxIter 100; + cacheAgglomeration true; + nPreSweeps 1; + nPostSweeps 3; + nFinestSweeps 3; + nCellsInCoarsestLevel 20; + agglomerator faceAreaPair; + mergeLevels 1; +} + + U + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + rho + { + solver PCG; + preconditioner DIC; + tolerance 1e-10; + relTol 0; + } + + htot + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + h + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + k + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0; + } + epsilon + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0; + } +} + +PISO +{ + nNonOrthogonalCorrectors 0; + nCorrectors 2; + momentumPredictor yes; +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/T b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/T new file mode 100644 index 000000000..c5c4ad3ab --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/T @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + fixedWalls + { + type zeroGradient; + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/U b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/U new file mode 100644 index 000000000..4016c89b8 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/U @@ -0,0 +1,43 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + movingWall + { + type fixedValue; + // Field Value + value uniform (1 0 0); + } + + fixedWalls + { + type fixedValue; + // Field Value + value uniform (0 0 0); + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/epsilon b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/epsilon new file mode 100644 index 000000000..d66cb9f2f --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/epsilon @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.1 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 0.000765; + +boundaryField +{ + movingWall + { + type compressible::epsilonWallFunction; + refValue uniform 0; + value uniform 0.000765; + Cmu 0.09; + kappa 0.41; + E 9.8; + } + fixedWalls + { + type compressible::epsilonWallFunction; + refValue uniform 0; + value uniform 0.000765; + Cmu 0.09; + kappa 0.41; + E 9.8; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/k b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/k new file mode 100644 index 000000000..1ff821e29 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/k @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.1 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.00325; + +boundaryField +{ + movingWall + { + type compressible::kqRWallFunction; + value uniform 0.00325; + } + fixedWalls + { + type compressible::kqRWallFunction; + value uniform 0.00325; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/p b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/p new file mode 100644 index 000000000..343aff8a0 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/p @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 100000; + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + fixedWalls + { + type zeroGradient; + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/T b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/T new file mode 100644 index 000000000..c5c4ad3ab --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/T @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + fixedWalls + { + type zeroGradient; + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/U b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/U new file mode 100644 index 000000000..4016c89b8 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/U @@ -0,0 +1,43 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + movingWall + { + type fixedValue; + // Field Value + value uniform (1 0 0); + } + + fixedWalls + { + type fixedValue; + // Field Value + value uniform (0 0 0); + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/epsilon b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/epsilon new file mode 100644 index 000000000..d66cb9f2f --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/epsilon @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.1 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 0.000765; + +boundaryField +{ + movingWall + { + type compressible::epsilonWallFunction; + refValue uniform 0; + value uniform 0.000765; + Cmu 0.09; + kappa 0.41; + E 9.8; + } + fixedWalls + { + type compressible::epsilonWallFunction; + refValue uniform 0; + value uniform 0.000765; + Cmu 0.09; + kappa 0.41; + E 9.8; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/k b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/k new file mode 100644 index 000000000..1ff821e29 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/k @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.1 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.00325; + +boundaryField +{ + movingWall + { + type compressible::kqRWallFunction; + value uniform 0.00325; + } + fixedWalls + { + type compressible::kqRWallFunction; + value uniform 0.00325; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/p b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/p new file mode 100644 index 000000000..343aff8a0 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/p @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 100000; + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + fixedWalls + { + type zeroGradient; + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/Allrun b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/Allrun new file mode 100755 index 000000000..30b386dfe --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/Allrun @@ -0,0 +1,9 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +runApplication blockMesh +runApplication `getApplication` diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/README b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/README new file mode 100644 index 000000000..7a48d017c --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/README @@ -0,0 +1,48 @@ +This tutorial is to show how the IAPWSThermo work in foam + +//***********************INFORMATION TO TEST CASE*******************************// + +Important files in this case: + +1. thermophysicalProperties + +--> see thermotype + +2. controlDict: + +the dynamic libraries used for the IAPWS 97 water properties are not directly link into foam. +Therefore, the dynamic libraries need to be defined in controlDict + + +//************************NEW CODE NEEDED FOR THIS CASE*************************// + +1. Code in foam: $WM_PROJECT_DIR/src/thermophysicalModels/externalMedia/ + just run wmake libso in the folder + +2. FreeSteam: download the code @ http://freesteam.sourceforge.net/example.php + +//***********************Problems*******************************// + +If problems occur using the IAPWS 97 water properties, please check the following points + +1. have you successfully compiled freeSteam? + + a: If no, have you installed gsl, scons and so on (see README.txt in the freeSteam) + b: If yes, is the libfreesteam.so in a folder where foam finds it e.g. $WM_PROJECT_DIR/lib/... + +2. have you compiled the thermophysical models that connect freeSteam to foam. They can be found in this folder: $WM_PROJECT_DIR/src/ + thermophysicalModels/externalMedia/ + + +3. IS THE SOLVER STARTING TO RUN THE CASE? NO + + check b23.c file at line 39 (or at least somewhere in the code: + + if you find the following code: + return B23_N[4] + sqrt((pi - B23_N[5])/B23_N[3]) /* * 1{K} */; + + change it to this: + return B23_N[4] + sqrt(fabs(pi - B23_N[5])/B23_N[3]) /* * 1{K} */; + + + diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/RASProperties b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/RASProperties new file mode 100755 index 000000000..334f83e39 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/RASProperties @@ -0,0 +1,25 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object RASProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +RASModel kEpsilon; + +turbulence on; + +printCoeffs on; + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/blockMeshDict b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/blockMeshDict new file mode 100644 index 000000000..4a8472f71 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/blockMeshDict @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.1; + +vertices +( + (0 0 0) + (1 0 0) + (1 1 0) + (0 1 0) + (0 0 0.1) + (1 0 0.1) + (1 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + movingWall + { + type wall; + faces + ( + (3 7 6 2) + ); + } + fixedWalls + { + type wall; + faces + ( + (0 4 7 3) + (2 6 5 1) + (1 5 4 0) + ); + } + frontAndBack + { + type empty; + faces + ( + (0 3 2 1) + (4 5 6 7) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/boundary b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/boundary new file mode 100644 index 000000000..78abdf47f --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/boundary @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.1 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +3 +( + movingWall + { + type wall; + nFaces 20; + startFace 760; + } + fixedWalls + { + type wall; + nFaces 60; + startFace 780; + } + frontAndBack + { + type empty; + nFaces 800; + startFace 840; + } +) + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/thermophysicalProperties b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/thermophysicalProperties new file mode 100755 index 000000000..09ade9ab7 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/thermophysicalProperties @@ -0,0 +1,23 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +//CL: this is all +thermoType IAPWSThermo; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/turbulenceProperties b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/turbulenceProperties new file mode 100755 index 000000000..09e0fc845 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/turbulenceProperties @@ -0,0 +1,21 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RASModel; + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/controlDict b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/controlDict new file mode 100755 index 000000000..5dc80a5f3 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/controlDict @@ -0,0 +1,62 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application realFluidPisoFoam; + +startFrom latestTime; + +//startTime 0; + +stopAt endTime; + +endTime 0.2; + +deltaT 1e-5; + +writeControl runTime; + +writeInterval 1e-2; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 10; + +adjustTimeStep yes; + +maxCo 0.75; + +maxDeltaT 0.01; + +runTimeModifiable yes; + +libs +( + "libIAPWSThermo.so" + "libfreesteam.so" + "libfreesteam.so.1.0" +); + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSchemes b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSchemes new file mode 100644 index 000000000..3a594c586 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSchemes @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; + grad(p) Gauss linear; +} + +divSchemes +{ + default Gauss linear; + div(phi,U) Gauss limitedLinearV 1; + div(phid,p) Gauss limitedLinear 1; + div(phiU,p) Gauss linear; + div(phi,h) Gauss limitedLinear 1; + div(phi,k) Gauss limitedLinear 1; + div(phi,epsilon) Gauss limitedLinear 1; + div(phi,R) Gauss limitedLinear 1; + div(phi,omega) Gauss limitedLinear 1; + div((rho*R)) Gauss linear; + div(R) Gauss linear; + div(U) Gauss linear; + div((muEff*dev2(grad(U).T()))) Gauss linear; +} + +laplacianSchemes +{ + default none; + laplacian(muEff,U) Gauss linear corrected; + laplacian(mut,U) Gauss linear corrected; + laplacian(DkEff,k) Gauss linear corrected; + laplacian(DepsilonEff,epsilon) Gauss linear corrected; + laplacian(DREff,R) Gauss linear corrected; + laplacian(DomegaEff,omega) Gauss linear corrected; + laplacian((rho*(1|A(U))),p) Gauss linear corrected; + laplacian(alphaEff,h) Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p ; +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSolution b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSolution new file mode 100755 index 000000000..7a470c4b8 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSolution @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + +p +{ + solver GAMG; + tolerance 1e-14; + relTol 0.001; + smoother GaussSeidel; + minIter 4; + //maxIter 100; + cacheAgglomeration true; + nPreSweeps 1; + nPostSweeps 3; + nFinestSweeps 3; + nCellsInCoarsestLevel 20; + agglomerator faceAreaPair; + mergeLevels 1; +} + + U + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + rho + { + solver PCG; + preconditioner DIC; + tolerance 1e-10; + relTol 0; + } + + htot + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + h + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + k + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0; + } + epsilon + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0; + } +} + +PISO +{ + nNonOrthogonalCorrectors 0; + nCorrectors 2; + momentumPredictor yes; +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/T b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/T new file mode 100755 index 000000000..e9ec126c0 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/T @@ -0,0 +1,48 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 333.15; + +boundaryField +{ + outlet + { + type zeroGradient; + } + + inlet1 + { + type fixedValue; + value uniform 273.15; + } + + inlet2 + { + type fixedValue; + value uniform 333.15; + } + + wall + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/U b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/U new file mode 100644 index 000000000..714cc4465 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/U @@ -0,0 +1,47 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + outlet + { + type zeroGradient; + } + + inlet1 + { + type fixedValue; + value uniform (0 1 0); + } + + inlet2 + { + type fixedValue; + value uniform (0 -1 0); + } + + wall + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/epsilon b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/epsilon new file mode 100644 index 000000000..43e3a5490 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/epsilon @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 200; + +boundaryField +{ + outlet + { + type inletOutlet; + inletValue uniform 200; + value uniform 200; + } + inlet1 + { + type compressible::turbulentMixingLengthDissipationRateInlet; + mixingLength 0.005; + phi phi; + k k; + value uniform 200; + } + inlet2 + { + type compressible::turbulentMixingLengthDissipationRateInlet; + mixingLength 0.005; + phi phi; + k k; + value uniform 200; + } + wall + { + type compressible::epsilonWallFunction; + refValue uniform 0; + value uniform 200; + Cmu 0.09; + kappa 0.41; + E 9.8; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/k b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/k new file mode 100644 index 000000000..de9f8c5dd --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/k @@ -0,0 +1,52 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + outlet + { + type zeroGradient; + } + inlet1 + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.05; + U U; + phi phi; + value uniform 1; + } + inlet2 + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.05; + U U; + phi phi; + value uniform 1; + } + wall + { + type compressible::kqRWallFunction; + value uniform 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/p b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/p new file mode 100644 index 000000000..6c0f9da9a --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/0/p @@ -0,0 +1,46 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 80e5; + +boundaryField +{ + outlet + { + type fixedMeanValue; + meanValue 8e6; + value uniform 8e+06; + } + + inlet1 + { + type zeroGradient; + } + + inlet2 + { + type zeroGradient; + } + + wall + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/Allrun b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/Allrun new file mode 100755 index 000000000..30b386dfe --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/Allrun @@ -0,0 +1,9 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +runApplication blockMesh +runApplication `getApplication` diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/RASProperties b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/RASProperties new file mode 100755 index 000000000..334f83e39 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/RASProperties @@ -0,0 +1,25 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object RASProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +RASModel kEpsilon; + +turbulence on; + +printCoeffs on; + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/polyMesh/blockMeshDict b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/polyMesh/blockMeshDict new file mode 100644 index 000000000..ec058b9c8 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/polyMesh/blockMeshDict @@ -0,0 +1,144 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// inlet1 +// +-+ +// | | +// | | +// | | +// | | +// +-----------+ | +// |outlet | +// +-----------+ | +// | | +// | | +// | | +// | | +// +-+ +// inlet2 + +convertToMeters 1; + +vertices +( + (0.0 -0.01 0) //0 + (0.2 -0.01 0) //1 + (0.2 0.01 0) //2 + (0.0 0.01 0) //3 + + (0.22 -0.01 0) //4 + (0.22 0.01 0) //5 + + (0.2 -0.21 0) //6 + (0.22 -0.21 0) //7 + + (0.2 0.21 0) //8 + (0.22 0.21 0) //9 + + // Z + (0.0 -0.01 0.02) //10 + (0.2 -0.01 0.02) + (0.2 0.01 0.02) //12 + (0.0 0.01 0.02) + + (0.22 -0.01 0.02) //14 + (0.22 0.01 0.02) + + (0.2 -0.21 0.02) //16 + (0.22 -0.21 0.02) + + (0.2 0.21 0.02) //18 + (0.22 0.21 0.02) + +); + +blocks +( + // inlet block + hex (0 1 2 3 10 11 12 13) (50 5 5) simpleGrading (1 1 1) + + // central block + hex (1 4 5 2 11 14 15 12) (5 5 5) simpleGrading (1 1 1) + + // bottom block + hex (6 7 4 1 16 17 14 11) (5 50 5) simpleGrading (1 1 1) + + // top block + hex (2 5 9 8 12 15 19 18) (5 50 5) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + outlet + { + type patch; + faces + ( + (0 10 13 3) + ); + } + + inlet1 + { + type patch; + faces + ( + (6 7 17 16) + ); + } + + inlet2 + { + type patch; + faces + ( + (8 18 19 9) + ); + } + + wall + { + type wall; + faces + ( + (0 1 2 3) + (10 11 12 13) + (8 2 5 9) + (18 12 15 19) + (1 4 5 2) + (11 14 15 12) + (1 6 7 4) + (11 16 17 14) + (6 16 11 1) + (2 12 18 8) + (3 2 12 13) + (0 1 11 10) + (7 17 14 4) + (4 14 15 5) + (5 15 19 9) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/thermophysicalProperties b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/thermophysicalProperties new file mode 100755 index 000000000..42c9e9125 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/thermophysicalProperties @@ -0,0 +1,68 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +//CL: List of possible real gas models + +thermoType realGasHThermo>>>>; +mixture CO2 1 44.01 73.773e5 304.13 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 467.6 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801E-13 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; + + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 839 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; + + +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; + +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; + + + +//CL: description of coefficients +// *********************************************************************************************************************** // +// Coefficient: +// CO2 --> Name +// 1 +// 44.01 --> Molar Volume +// 77.773e5 --> critical pressure +// 304.13 --> critical temperatur +// 0.22394 --> acentric factor (not needed for redlich kwong) +// 467.6 --> critical density (only for aungier redlich kwong) +// 49436.5054 --> 2.849677801e-13 --> 7 heat capacity polynomial coefficent's +// .... --> two coefficent's for sutherlandRealGasTransport or for the constRealGasTransport model +// 839 --> perfect gas heat capacity Cp0 (J/kgK), needed for constantHeatCapacity +// *********************************************************************************************************************** // + diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/turbulenceProperties b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/turbulenceProperties new file mode 100755 index 000000000..11e716e4e --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/constant/turbulenceProperties @@ -0,0 +1,20 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RASModel; + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/system/controlDict b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/system/controlDict new file mode 100755 index 000000000..a6f3b2623 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/system/controlDict @@ -0,0 +1,55 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application realFluidPisoFoam; + +startFrom latestTime; + +//startTime 0; + +stopAt endTime; + +endTime 0.5; + +deltaT 1e-5; + +writeControl runTime; + +writeInterval 1e-2; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 10; + +adjustTimeStep yes; + +maxCo 0.5; + +maxDeltaT 1e-2; + +runTimeModifiable yes; + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/system/fvSchemes b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/system/fvSchemes new file mode 100644 index 000000000..0088063cb --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/system/fvSchemes @@ -0,0 +1,73 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; + grad(p) Gauss linear; +} + +divSchemes +{ + default Gauss linear; + div(phi,U) Gauss upwind; + div(phi,h) Gauss upwind; + div(phi,k) Gauss upwind; + div(phi,epsilon) Gauss upwind; + div(phi,R) Gauss limitedLinear 1; + div(phi,omega) Gauss limitedLinear 1; + div((rho*R)) Gauss linear; + div(R) Gauss linear; + div(U) Gauss linear; + div((muEff*dev2(grad(U).T()))) Gauss linear; +} + +laplacianSchemes +{ + default none; + laplacian(muEff,U) Gauss linear corrected; + laplacian(mut,U) Gauss linear corrected; + laplacian(DkEff,k) Gauss linear corrected; + laplacian(DepsilonEff,epsilon) Gauss linear corrected; + laplacian(DREff,R) Gauss linear corrected; + laplacian(DomegaEff,omega) Gauss linear corrected; + laplacian((rho*(1|A(U))),p) Gauss linear corrected; + laplacian(alphaEff,h) Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p ; +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/t-junction/system/fvSolution b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/system/fvSolution new file mode 100755 index 000000000..59898dbc3 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/t-junction/system/fvSolution @@ -0,0 +1,88 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + +p +{ + solver GAMG; + tolerance 1e-14; + relTol 0.001; + smoother GaussSeidel; + minIter 4; + //maxIter 100; + cacheAgglomeration true; + nPreSweeps 1; + nPostSweeps 3; + nFinestSweeps 3; + nCellsInCoarsestLevel 20; + agglomerator faceAreaPair; + mergeLevels 1; +} + + U + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + rho + { + solver PCG; + preconditioner DIC; + tolerance 1e-10; + relTol 0; + } + + h + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + k + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0; + } + epsilon + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0; + } +} + +PISO +{ + nNonOrthogonalCorrectors 0; + nCorrectors 1; + momentumPredictor yes; +} + + +// ************************************************************************* // From 0a151e7e5b096973242397e3db2abc252baaf1ce Mon Sep 17 00:00:00 2001 From: Christian Lucas Date: Fri, 11 Feb 2011 17:37:40 +0100 Subject: [PATCH 02/18] upload the fully integrated real gas library --- src/thermophysicalModels/basic/Make/files | 11 ++ .../basic/basicThermo/basicThermo.C | 187 ++++++++++++++++++ .../basic/basicThermo/basicThermo.H | 81 ++++++++ .../mixtures/basicMixture/basicMixtures.C | 98 +++++++-- .../mixtures/basicMixture/makeBasicMixture.H | 14 ++ .../basicPsiThermo/makeBasicPsiThermo.H | 25 +++ src/thermophysicalModels/specie/Make/files | 5 + 7 files changed, 406 insertions(+), 15 deletions(-) diff --git a/src/thermophysicalModels/basic/Make/files b/src/thermophysicalModels/basic/Make/files index 80bd1f7cf..87ad10f52 100644 --- a/src/thermophysicalModels/basic/Make/files +++ b/src/thermophysicalModels/basic/Make/files @@ -28,4 +28,15 @@ derivedFvPatchFields/temperatureDirectedInletOutletVelocity/temperatureDirectedI derivedFvPatchFields/isentropicTotalPressure/isentropicTotalPressureFvPatchScalarField.C derivedFvPatchFields/isentropicTotalTemperature/isentropicTotalTemperatureFvPatchScalarField.C + +psiThermo/realGasHThermo/realGasHThermos.C + +derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.C +derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.C +derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.C +derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.C +derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.C +derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.C +derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.C + LIB = $(FOAM_LIBBIN)/libbasicThermophysicalModels diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.C b/src/thermophysicalModels/basic/basicThermo/basicThermo.C index 30c1fec87..896beac6a 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.C +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.C @@ -33,6 +33,13 @@ License #include "fixedInternalEnergyFvPatchScalarField.H" #include "gradientInternalEnergyFvPatchScalarField.H" #include "mixedInternalEnergyFvPatchScalarField.H" +#include "zeroGradientFvPatchFields.H" +#include "fixedEnthalpyRealFluids.H" +#include "gradientEnthalpyRealFluids.H" +#include "mixedEnthalpyRealFluids.H" +#include "fixedInternalEnergyRealFluids.H" +#include "gradientInternalEnergyRealFluids.H" +#include "mixedInternalEnergyRealFluids.H" /* * * * * * * * * * * * * * Private Static Data * * * * * * * * * * * * * * */ @@ -142,6 +149,106 @@ void Foam::basicThermo::eBoundaryCorrection(volScalarField& e) } } +Foam::wordList Foam::basicThermo::hRealBoundaryTypes() +{ + const volScalarField::GeometricBoundaryField& tbf = T_.boundaryField(); + + wordList hbt = tbf.types(); + + forAll(tbf, patchi) + { + if (isA(tbf[patchi])) + { + hbt[patchi] = fixedEnthalpyRealFluids::typeName; + } + else if + ( + isA(tbf[patchi]) + || isA(tbf[patchi]) + ) + { + hbt[patchi] = gradientEnthalpyRealFluids::typeName; + } + else if (isA(tbf[patchi])) + { + hbt[patchi] = mixedEnthalpyRealFluids::typeName; + } + } + + return hbt; +} + + +void Foam::basicThermo::hRealBoundaryCorrection(volScalarField& h) +{ + volScalarField::GeometricBoundaryField& hbf = h.boundaryField(); + + forAll(hbf, patchi) + { + if (isA(hbf[patchi])) + { + refCast(hbf[patchi]).gradient() + = hbf[patchi].fvPatchField::snGrad(); + } + else if (isA(hbf[patchi])) + { + refCast(hbf[patchi]).refGrad() + = hbf[patchi].fvPatchField::snGrad(); + } + } +} + + +Foam::wordList Foam::basicThermo::eRealBoundaryTypes() +{ + const volScalarField::GeometricBoundaryField& tbf = T_.boundaryField(); + + wordList ebt = tbf.types(); + + forAll(tbf, patchi) + { + if (isA(tbf[patchi])) + { + ebt[patchi] = fixedInternalEnergyRealFluids::typeName; + } + else if + ( + isA(tbf[patchi]) + || isA(tbf[patchi]) + ) + { + ebt[patchi] = gradientInternalEnergyRealFluids::typeName; + } + else if (isA(tbf[patchi])) + { + ebt[patchi] = mixedInternalEnergyRealFluids::typeName; + } + } + + return ebt; +} + + +void Foam::basicThermo::eRealBoundaryCorrection(volScalarField& e) +{ + volScalarField::GeometricBoundaryField& ebf = e.boundaryField(); + + forAll(ebf, patchi) + { + if (isA(ebf[patchi])) + { + refCast(ebf[patchi]) + .gradient() = ebf[patchi].fvPatchField::snGrad(); + } + else if (isA(ebf[patchi])) + { + refCast(ebf[patchi]) + .refGrad() = ebf[patchi].fvPatchField::snGrad(); + } + } +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::basicThermo::basicThermo(const fvMesh& mesh, const objectRegistry& obj) @@ -470,6 +577,86 @@ const Foam::volScalarField& Foam::basicThermo::alpha() const } +// real gas functions + +Foam::tmp Foam::basicThermo::h +( + const scalarField& p, + const scalarField& T, + const label patchi +) const +{ +// using ideal gas function (by default) +// template gets overwritten for real gas library + + return this->h(T,patchi); + +} + +Foam::tmp Foam::basicThermo::h +( + const scalarField& p, + const scalarField& T, + const labelList& cells +) const +{ +// using ideal gas function (by default) +// template gets overwritten for real gas library + return this->h(T,cells); +} + +Foam::tmp Foam::basicThermo::e +( + const scalarField& p, + const scalarField& T, + const label patchi +) const +{ +// using ideal gas function (by default) +// template gets overwritten for real gas library + return this->e(T,patchi); +} + +Foam::tmp Foam::basicThermo::e +( + const scalarField& p, + const scalarField& T, + const labelList& cells +) const +{ +// using ideal gas function (by default) +// template gets overwritten for real gas library + return this->e(T,cells); +} + +Foam::tmp Foam::basicThermo::Cp +( + const scalarField& p, + const scalarField& T, + const label patchi +) const +{ +// using ideal gas function (by default) +// template gets overwritten for real gas library + return this->Cp(T,patchi); +} + + + +Foam::tmp Foam::basicThermo::Cv +( + const scalarField& p, + const scalarField& T, + const label patchi +) const +{ +// using ideal gas function (by default) +// template gets overwritten for real gas library + return this->Cv(T,patchi); +} + + + bool Foam::basicThermo::read() { return regIOobject::read(); diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.H b/src/thermophysicalModels/basic/basicThermo/basicThermo.H index c901e4173..317f67927 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.H +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.H @@ -102,6 +102,27 @@ protected: //- Construct as copy (not implemented) basicThermo(const basicThermo&); + //- Return the enthalpy field boundary types by interrogating the + // temperature field boundary types + // for real gases + wordList hRealBoundaryTypes(); + + //- Correct the enthalpy field boundaries + // for real gases + void hRealBoundaryCorrection(volScalarField& h); + + + // Internal energy + + //- Return the internal energy field boundary types by + // interrogating the temperature field boundary types + // for real gases + wordList eRealBoundaryTypes(); + + //- Correct the internal energy field boundaries + // for real gases + void eRealBoundaryCorrection(volScalarField& e); + public: @@ -249,6 +270,66 @@ public: virtual const volScalarField& alpha() const; + + //- enthalpy for cell-set [J/kg] + //function needed for real gases + virtual tmp h + ( + const scalarField& rho, + const scalarField& T, + const labelList& cells + ) const; + + //- enthalpy for patch [J/kg] + //function needed for real gases + virtual tmp h + ( + const scalarField& p, + const scalarField& T, + const label patchi + ) const; + + //- internal energy for cell-set [J/kg] + //function needed for real gases + virtual tmp e + ( + const scalarField& rho, + const scalarField& T, + const labelList& cells + ) const; + + //- internal energy for patch [J/kg] + //function needed for real gases + virtual tmp e + ( + const scalarField& p, + const scalarField& T, + const label patchi + ) const; + + + + //- Heat capacity at constant pressure for patch [J/kg/K] + //function needed for real gases + virtual tmp Cp + ( + const scalarField& p, + const scalarField& T, + const label patchi + ) const; + + + + //- Heat capacity at constant spec.Volume for patch [J/kg/K] + //function needed for real gases + virtual tmp Cv + ( + const scalarField& p, + const scalarField& T, + const label patchi + ) const; + + //- Read thermophysicalProperties dictionary virtual bool read(); }; diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C index 7228eb180..869a2eb1b 100644 --- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C +++ b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C @@ -1,25 +1,26 @@ /*---------------------------------------------------------------------------*\ ========= | - \\ / F ield | foam-extend: Open Source CFD - \\ / O peration | Version: 3.2 - \\ / A nd | Web: http://www.foam-extend.org - \\/ M anipulation | For copyright notice see file Copyright + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | ------------------------------------------------------------------------------- License - This file is part of foam-extend. + This file is part of OpenFOAM. - foam-extend is free software: you can redistribute it and/or modify it + OpenFOAM 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 + Free Software Foundation; either version 2 of the License, or (at your option) any later version. - foam-extend 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. + OpenFOAM 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 foam-extend. If not, see . + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Description Mixture instantiation @@ -44,8 +45,6 @@ Description #include "pureMixture.H" -#include "thermoPhysicsTypes.H" - #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -53,7 +52,7 @@ Description namespace Foam { -/* * * * * * * * * * * * * * * Private Static Data * * * * * * * * * * * * * */ +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ makeBasicMixture ( @@ -101,6 +100,75 @@ makeBasicMixturePhys icoPoly8ThermoPhysics ); +makeBasicRealFluidMixture +( + pureMixture, + realGasSutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + +makeBasicRealFluidMixture +( + pureMixture, + realGasSutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + + +makeBasicRealFluidMixture +( + pureMixture, + realGasSutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + + + +makeBasicRealFluidMixture +( + pureMixture, + realGasConstTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + + +makeBasicRealFluidMixture +( + pureMixture, + realGasConstTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + + +makeBasicRealFluidMixture +( + pureMixture, + realGasConstTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + + +makeBasicRealFluidMixture +( + pureMixture, + realGasConstTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H b/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H index 42e3b41e9..a4a8b0b81 100644 --- a/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H +++ b/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H @@ -57,6 +57,20 @@ defineTemplateTypeNameAndDebugWithName \ ); +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#define makeBasicRealFluidMixture(Mixture,Transport,SpecieThermo,Thermo,EqnOfState) \ + \ +typedef Mixture > > > \ + Mixture##Transport##SpecieThermo##Thermo##EqnOfState; \ + \ +defineTemplateTypeNameAndDebugWithName \ + (Mixture##Transport##SpecieThermo##Thermo##EqnOfState, \ + #Mixture"<"#Transport"<"#SpecieThermo"<"#Thermo"<"#EqnOfState">>>>", 0) + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif diff --git a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H index 05964ec4f..cda848bae 100644 --- a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H @@ -58,6 +58,31 @@ addToRunTimeSelectionTable \ ) +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#define makeBasicRealGasThermo(Cthermo,Mixture,Transport,SpecieThermo,Thermo,EqnOfState) \ + \ +typedef Cthermo > > > > \ + Cthermo##Mixture##Transport##SpecieThermo##Thermo##EqnOfState; \ + \ +defineTemplateTypeNameAndDebugWithName \ +( \ + Cthermo##Mixture##Transport##SpecieThermo##Thermo##EqnOfState, \ + #Cthermo \ + "<"#Mixture"<"#Transport"<"#SpecieThermo"<"#Thermo"<"#EqnOfState">>>>>", \ + 0 \ +); \ + \ +addToRunTimeSelectionTable \ +( \ + basicPsiThermo, \ + Cthermo##Mixture##Transport##SpecieThermo##Thermo##EqnOfState, \ + fvMesh \ +) + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif diff --git a/src/thermophysicalModels/specie/Make/files b/src/thermophysicalModels/specie/Make/files index 428f6d8fc..6d26dfc1f 100644 --- a/src/thermophysicalModels/specie/Make/files +++ b/src/thermophysicalModels/specie/Make/files @@ -12,4 +12,9 @@ $(reactions)/makeChemkinReactions.C $(reactions)/makeReactionThermoReactions.C $(reactions)/makeLangmuirHinshelwoodReactions.C +$(equationOfState)/aungierRedlichKwong/aungierRedlichKwong.C +$(equationOfState)/pengRobinson/pengRobinson.C +$(equationOfState)/redlichKwong/redlichKwong.C +$(equationOfState)/soaveRedlichKwong/soaveRedlichKwong.C + LIB = $(FOAM_LIBBIN)/libspecie From 6a2c85bd4a9ed2b4d730c3b4d5522970ca76b82c Mon Sep 17 00:00:00 2001 From: Christian Lucas Date: Fri, 11 Feb 2011 17:45:52 +0100 Subject: [PATCH 03/18] second upload the fully integrated real gas library --- .../basic/basicThermo/basicThermo.C | 2 + .../fixedEnthalpyRealFluids.C | 147 + .../fixedEnthalpyRealFluids.H | 146 + .../fixedInternalEnergyRealFluids.C | 137 + .../fixedInternalEnergyRealFluids.H | 146 + .../gradientEnthalpyRealFluids.C | 154 + .../gradientEnthalpyRealFluids.H | 146 + .../gradientInternalEnergyRealFluids.C | 146 + .../gradientInternalEnergyRealFluids.H | 146 + .../mixedEnthalpyRealFluids.C | 164 + .../mixedEnthalpyRealFluids.H | 146 + .../mixedInternalEnergyRealFluids.C | 151 + .../mixedInternalEnergyRealFluids.H | 146 + ...lFluidWallHeatTransferFvPatchScalarField.C | 198 + ...lFluidWallHeatTransferFvPatchScalarField.H | 201 + .../psiThermo/realGasHThermo/realGasHThermo.C | 460 + .../psiThermo/realGasHThermo/realGasHThermo.H | 226 + .../realGasHThermo/realGasHThermos.C | 163 + .../aungierRedlichKwong/aungierRedlichKwong.C | 78 + .../aungierRedlichKwong/aungierRedlichKwong.H | 194 + .../aungierRedlichKwongI.H | 497 ++ .../pengRobinson/pengRobinson.C | 79 + .../pengRobinson/pengRobinson.H | 192 + .../pengRobinson/pengRobinsonI.H | 513 ++ .../redlichKwong/redlichKwong.C | 77 + .../redlichKwong/redlichKwong.H | 191 + .../redlichKwong/redlichKwongI.H | 476 + .../soaveRedlichKwong/soaveRedlichKwong.C | 76 + .../soaveRedlichKwong/soaveRedlichKwong.H | 191 + .../soaveRedlichKwong/soaveRedlichKwongI.H | 488 ++ .../nasaHeatCapacityPolynomial.C | 73 + .../nasaHeatCapacityPolynomial.H | 259 + .../nasaHeatCapacityPolynomialI.H | 419 + .../realGasSpecieThermo/realGasSpecieThermo.C | 72 + .../realGasSpecieThermo/realGasSpecieThermo.H | 305 + .../realGasSpecieThermoI.H | 298 + .../realGasConstTransport.C | 79 + .../realGasConstTransport.H | 204 + .../realGasConstTransportI.H | 199 + .../realGasSutherlandTransport.C | 74 + .../realGasSutherlandTransport.H | 237 + .../realGasSutherlandTransportI.H | 262 + .../compressible/rhoPisoFoam/ras/pipe/0/T | 49 + .../compressible/rhoPisoFoam/ras/pipe/0/U | 52 + .../rhoPisoFoam/ras/pipe/0/alphat | 53 + .../rhoPisoFoam/ras/pipe/0/epsilon | 58 + .../rhoPisoFoam/ras/pipe/0/epsilon.old | 59 + .../compressible/rhoPisoFoam/ras/pipe/0/k | 51 + .../compressible/rhoPisoFoam/ras/pipe/0/k.old | 52 + .../compressible/rhoPisoFoam/ras/pipe/0/mut | 57 + .../compressible/rhoPisoFoam/ras/pipe/0/p | 49 + .../ras/pipe/constant/.RASProperties.swp | Bin 0 -> 12288 bytes .../ras/pipe/constant/RASProperties | 25 + .../ras/pipe/constant/polyMesh/boundary | 52 + .../ras/pipe/constant/polyMesh/cellZones | 21 + .../ras/pipe/constant/polyMesh/faceZones | 21 + .../ras/pipe/constant/polyMesh/faces | 7666 ++++++++++++++++ .../ras/pipe/constant/polyMesh/neighbour | 3669 ++++++++ .../ras/pipe/constant/polyMesh/owner | 7667 +++++++++++++++++ .../ras/pipe/constant/polyMesh/pointZones | 21 + .../ras/pipe/constant/polyMesh/points | 4024 +++++++++ .../pipe/constant/polyMesh/zoneToPatchName | 40 + .../pipe/constant/thermophysicalProperties | 59 + .../ras/pipe/constant/turbulenceProperties | 21 + .../rhoPisoFoam/ras/pipe/system/controlDict | 55 + .../rhoPisoFoam/ras/pipe/system/fvSchemes | 76 + .../rhoPisoFoam/ras/pipe/system/fvSolution | 100 + .../rhoPisoFoam/ras/pipe/system/sampleDict | 44 + 68 files changed, 32599 insertions(+) create mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.C create mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.H create mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.C create mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.H create mode 100644 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.C create mode 100644 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.H create mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.C create mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.H create mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.C create mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.H create mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.C create mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.H create mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.C create mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.H create mode 100755 src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C create mode 100755 src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H create mode 100755 src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C create mode 100755 src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C create mode 100755 src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.H create mode 100755 src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H create mode 100755 src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C create mode 100755 src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H create mode 100755 src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H create mode 100755 src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C create mode 100755 src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H create mode 100755 src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H create mode 100755 src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C create mode 100755 src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H create mode 100755 src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H create mode 100755 src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C create mode 100755 src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H create mode 100755 src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H create mode 100755 src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.C create mode 100755 src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H create mode 100755 src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H create mode 100644 src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.C create mode 100644 src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.H create mode 100644 src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransportI.H create mode 100755 src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.C create mode 100755 src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.H create mode 100755 src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransportI.H create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/T create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/U create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/alphat create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon.old create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/k create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/k.old create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/mut create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/p create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/.RASProperties.swp create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/RASProperties create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/boundary create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/cellZones create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faceZones create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faces create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/neighbour create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/owner create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/pointZones create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/points create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/zoneToPatchName create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/turbulenceProperties create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/system/controlDict create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSchemes create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSolution create mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/system/sampleDict diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.C b/src/thermophysicalModels/basic/basicThermo/basicThermo.C index 896beac6a..6b417f32b 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.C +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.C @@ -149,6 +149,8 @@ void Foam::basicThermo::eBoundaryCorrection(volScalarField& e) } } +//real Gas Boundary Conditions + Foam::wordList Foam::basicThermo::hRealBoundaryTypes() { const volScalarField::GeometricBoundaryField& tbf = T_.boundaryField(); diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.C new file mode 100755 index 000000000..a2e65edaa --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.C @@ -0,0 +1,147 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#include "fixedEnthalpyRealFluids.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "volFields.H" +#include "basicPsiThermo.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::fixedEnthalpyRealFluids::fixedEnthalpyRealFluids +( + const fvPatch& p, + const DimensionedField& iF +) +: + fixedValueFvPatchScalarField(p, iF) +{} + + +Foam::fixedEnthalpyRealFluids::fixedEnthalpyRealFluids +( + const fixedEnthalpyRealFluids& ptf, + const fvPatch& p, + const DimensionedField& iF, + const fvPatchFieldMapper& mapper +) +: + fixedValueFvPatchScalarField(ptf, p, iF, mapper) +{} + + +Foam::fixedEnthalpyRealFluids::fixedEnthalpyRealFluids +( + const fvPatch& p, + const DimensionedField& iF, + const dictionary& dict +) +: + fixedValueFvPatchScalarField(p, iF, dict) +{} + + +Foam::fixedEnthalpyRealFluids::fixedEnthalpyRealFluids +( + const fixedEnthalpyRealFluids& tppsf +) +: + fixedValueFvPatchScalarField(tppsf) +{} + + +Foam::fixedEnthalpyRealFluids::fixedEnthalpyRealFluids +( + const fixedEnthalpyRealFluids& tppsf, + const DimensionedField& iF +) +: + fixedValueFvPatchScalarField(tppsf, iF) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::fixedEnthalpyRealFluids::updateCoeffs() +{ + if (updated()) + { + return; + } + + const basicPsiThermo& thermo = db().lookupObject + ( + "thermophysicalProperties" + ); + + const label patchi = patch().index(); + + fvPatchScalarField& Tw = + const_cast(thermo.T().boundaryField()[patchi]); + Tw.evaluate(); + + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + pw.evaluate(); + + + if (dimensionedInternalField().name() == "h") + { + + operator==(thermo.h(pw,Tw, patchi)); + } + else + { + operator==(thermo.hs(Tw, patchi)); + } + + fixedValueFvPatchScalarField::updateCoeffs(); + + +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchScalarField, + fixedEnthalpyRealFluids + ); +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.H new file mode 100755 index 000000000..e8df794e4 --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.H @@ -0,0 +1,146 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::fixedEnthalpyRealFluids + +Description + A fixed boundary condition for enthalpy + +SourceFiles + fixedEnthalpyRealFluids.C + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef fixedEnthalpyRealFluids_H +#define fixedEnthalpyRealFluids_H + +#include "fixedValueFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class fixedEnthalpyRealFluids Declaration +\*---------------------------------------------------------------------------*/ + +class fixedEnthalpyRealFluids +: + public fixedValueFvPatchScalarField +{ + +public: + + //- Runtime type information + TypeName("fixedEnthalpy"); + + + // Constructors + + //- Construct from patch and internal field + fixedEnthalpyRealFluids + ( + const fvPatch&, + const DimensionedField& + ); + + //- Construct from patch, internal field and dictionary + fixedEnthalpyRealFluids + ( + const fvPatch&, + const DimensionedField&, + const dictionary& + ); + + //- Construct by mapping given fixedEnthalpyFvPatchScalarField + // onto a new patch + fixedEnthalpyRealFluids + ( + const fixedEnthalpyRealFluids&, + const fvPatch&, + const DimensionedField&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + fixedEnthalpyRealFluids + ( + const fixedEnthalpyRealFluids& + ); + + //- Construct and return a clone + virtual tmp clone() const + { + return tmp + ( + new fixedEnthalpyRealFluids(*this) + ); + } + + //- Construct as copy setting internal field reference + fixedEnthalpyRealFluids + ( + const fixedEnthalpyRealFluids&, + const DimensionedField& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp clone + ( + const DimensionedField& iF + ) const + { + return tmp + ( + new fixedEnthalpyRealFluids(*this, iF) + ); + } + + + // Member functions + + // Evaluation functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.C new file mode 100755 index 000000000..381358c3d --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.C @@ -0,0 +1,137 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "fixedInternalEnergyRealFluids.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "volFields.H" +#include "basicPsiThermo.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +fixedInternalEnergyRealFluids::fixedInternalEnergyRealFluids +( + const fvPatch& p, + const DimensionedField& iF +) +: + fixedValueFvPatchScalarField(p, iF) +{} + + +fixedInternalEnergyRealFluids::fixedInternalEnergyRealFluids +( + const fixedInternalEnergyRealFluids& ptf, + const fvPatch& p, + const DimensionedField& iF, + const fvPatchFieldMapper& mapper +) +: + fixedValueFvPatchScalarField(ptf, p, iF, mapper) +{} + + +fixedInternalEnergyRealFluids::fixedInternalEnergyRealFluids +( + const fvPatch& p, + const DimensionedField& iF, + const dictionary& dict +) +: + fixedValueFvPatchScalarField(p, iF, dict) +{} + + +fixedInternalEnergyRealFluids::fixedInternalEnergyRealFluids +( + const fixedInternalEnergyRealFluids& tppsf +) +: + fixedValueFvPatchScalarField(tppsf) +{} + + +fixedInternalEnergyRealFluids::fixedInternalEnergyRealFluids +( + const fixedInternalEnergyRealFluids& tppsf, + const DimensionedField& iF +) +: + fixedValueFvPatchScalarField(tppsf, iF) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void fixedInternalEnergyRealFluids::updateCoeffs() +{ + if (updated()) + { + return; + } + + const basicPsiThermo& thermo = db().lookupObject + ( + "thermophysicalProperties" + ); + + + const label patchi = patch().index(); + + fvPatchScalarField& Tw = + const_cast(thermo.T().boundaryField()[patchi]); + Tw.evaluate(); + + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + pw.evaluate(); + + operator==(thermo.e(pw,Tw, patchi)); + + fixedValueFvPatchScalarField::updateCoeffs(); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makePatchTypeField(fvPatchScalarField, fixedInternalEnergyRealFluids); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.H new file mode 100755 index 000000000..176f91c77 --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.H @@ -0,0 +1,146 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::fixedInternalEnergyRealFluids + +Description + A fixed boundary condition for internal energy + +SourceFiles + fixedInternalEnergyRealFluids.C + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef fixedInternalEnergyRealFluids_H +#define fixedInternalEnergyRealFluids_H + +#include "fixedValueFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class fixedInternalEnergyRealFluids Declaration +\*---------------------------------------------------------------------------*/ + +class fixedInternalEnergyRealFluids +: + public fixedValueFvPatchScalarField +{ + +public: + + //- Runtime type information + TypeName("fixedInternalEnergy"); + + + // Constructors + + //- Construct from patch and internal field + fixedInternalEnergyRealFluids + ( + const fvPatch&, + const DimensionedField& + ); + + //- Construct from patch, internal field and dictionary + fixedInternalEnergyRealFluids + ( + const fvPatch&, + const DimensionedField&, + const dictionary& + ); + + //- Construct by mapping given fixedInternalEnergyRealFluids + // onto a new patch + fixedInternalEnergyRealFluids + ( + const fixedInternalEnergyRealFluids&, + const fvPatch&, + const DimensionedField&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + fixedInternalEnergyRealFluids + ( + const fixedInternalEnergyRealFluids& + ); + + //- Construct and return a clone + virtual tmp clone() const + { + return tmp + ( + new fixedInternalEnergyRealFluids(*this) + ); + } + + //- Construct as copy setting internal field reference + fixedInternalEnergyRealFluids + ( + const fixedInternalEnergyRealFluids&, + const DimensionedField& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp clone + ( + const DimensionedField& iF + ) const + { + return tmp + ( + new fixedInternalEnergyRealFluids(*this, iF) + ); + } + + + // Member functions + + // Evaluation functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.C new file mode 100644 index 000000000..0d2005ba1 --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.C @@ -0,0 +1,154 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "gradientEnthalpyRealFluids.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "volFields.H" +#include "basicPsiThermo.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::gradientEnthalpyRealFluids::gradientEnthalpyRealFluids +( + const fvPatch& p, + const DimensionedField& iF +) +: + fixedGradientFvPatchScalarField(p, iF) +{} + + +Foam::gradientEnthalpyRealFluids::gradientEnthalpyRealFluids +( + const gradientEnthalpyRealFluids& ptf, + const fvPatch& p, + const DimensionedField& iF, + const fvPatchFieldMapper& mapper +) +: + fixedGradientFvPatchScalarField(ptf, p, iF, mapper) +{} + + +Foam::gradientEnthalpyRealFluids::gradientEnthalpyRealFluids +( + const fvPatch& p, + const DimensionedField& iF, + const dictionary& dict +) +: + fixedGradientFvPatchScalarField(p, iF, dict) +{} + + +Foam::gradientEnthalpyRealFluids::gradientEnthalpyRealFluids +( + const gradientEnthalpyRealFluids& tppsf +) +: + fixedGradientFvPatchScalarField(tppsf) +{} + + +Foam::gradientEnthalpyRealFluids::gradientEnthalpyRealFluids +( + const gradientEnthalpyRealFluids& tppsf, + const DimensionedField& iF +) +: + fixedGradientFvPatchScalarField(tppsf, iF) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::gradientEnthalpyRealFluids::updateCoeffs() +{ + if (updated()) + { + return; + } + + const basicPsiThermo& thermo = db().lookupObject + ( + "thermophysicalProperties" + ); + + const label patchi = patch().index(); + + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + + pw.evaluate(); + + fvPatchScalarField& Tw = + const_cast(thermo.T().boundaryField()[patchi]); + + Tw.evaluate(); + + if (dimensionedInternalField().name() == "h") + { + gradient() = thermo.Cp(pw,Tw, patchi)*Tw.snGrad() + + patch().deltaCoeffs()* + ( + thermo.h(pw,Tw, patchi) + - thermo.h(pw,Tw, patch().faceCells()) + ); + } + /* else + { + gradient() = thermo.Cp(Tw, patchi)*Tw.snGrad() + + patch().deltaCoeffs()* + ( + thermo.hs(Tw, patchi) + - thermo.hs(Tw, patch().faceCells()) + ); + } +*/ + fixedGradientFvPatchScalarField::updateCoeffs(); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchScalarField, + gradientEnthalpyRealFluids + ); +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.H new file mode 100644 index 000000000..07d1b876f --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.H @@ -0,0 +1,146 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::gradientEnthalpyRealFluids + +Description + Gradient boundary condition for enthalpy + +SourceFiles + gradientEnthalpyRealFluids.C + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef gradientEnthalpyRealFluids_H +#define gradientEnthalpyRealFluids_H + +#include "fixedGradientFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class gradientEnthalpyRealFluids Declaration +\*---------------------------------------------------------------------------*/ + +class gradientEnthalpyRealFluids +: + public fixedGradientFvPatchScalarField +{ + +public: + + //- Runtime type information + TypeName("gradientEnthalpy"); + + + // Constructors + + //- Construct from patch and internal field + gradientEnthalpyRealFluids + ( + const fvPatch&, + const DimensionedField& + ); + + //- Construct from patch, internal field and dictionary + gradientEnthalpyRealFluids + ( + const fvPatch&, + const DimensionedField&, + const dictionary& + ); + + //- Construct by mapping given gradientEnthalpyRealFluids + // onto a new patch + gradientEnthalpyRealFluids + ( + const gradientEnthalpyRealFluids&, + const fvPatch&, + const DimensionedField&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + gradientEnthalpyRealFluids + ( + const gradientEnthalpyRealFluids& + ); + + //- Construct and return a clone + virtual tmp clone() const + { + return tmp + ( + new gradientEnthalpyRealFluids(*this) + ); + } + + //- Construct as copy setting internal field reference + gradientEnthalpyRealFluids + ( + const gradientEnthalpyRealFluids&, + const DimensionedField& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp clone + ( + const DimensionedField& iF + ) const + { + return tmp + ( + new gradientEnthalpyRealFluids(*this, iF) + ); + } + + + // Member functions + + // Evaluation functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.C new file mode 100755 index 000000000..915889d4b --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.C @@ -0,0 +1,146 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "gradientInternalEnergyRealFluids.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "volFields.H" +#include "basicPsiThermo.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +gradientInternalEnergyRealFluids::gradientInternalEnergyRealFluids +( + const fvPatch& p, + const DimensionedField& iF +) +: + fixedGradientFvPatchScalarField(p, iF) +{} + + +gradientInternalEnergyRealFluids::gradientInternalEnergyRealFluids +( + const gradientInternalEnergyRealFluids& ptf, + const fvPatch& p, + const DimensionedField& iF, + const fvPatchFieldMapper& mapper +) +: + fixedGradientFvPatchScalarField(ptf, p, iF, mapper) +{} + + +gradientInternalEnergyRealFluids::gradientInternalEnergyRealFluids +( + const fvPatch& p, + const DimensionedField& iF, + const dictionary& dict +) +: + fixedGradientFvPatchScalarField(p, iF, dict) +{} + + +gradientInternalEnergyRealFluids::gradientInternalEnergyRealFluids +( + const gradientInternalEnergyRealFluids& tppsf +) +: + fixedGradientFvPatchScalarField(tppsf) +{} + + +gradientInternalEnergyRealFluids::gradientInternalEnergyRealFluids +( + const gradientInternalEnergyRealFluids& tppsf, + const DimensionedField& iF +) +: + fixedGradientFvPatchScalarField(tppsf, iF) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void gradientInternalEnergyRealFluids::updateCoeffs() +{ + if (updated()) + { + return; + } + + const basicPsiThermo& thermo = db().lookupObject + ( + "thermophysicalProperties" + ); + + + const label patchi = patch().index(); + + fvPatchScalarField& Tw = + const_cast(thermo.T().boundaryField()[patchi]); + + Tw.evaluate(); + + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + + pw.evaluate(); + + + + gradient() = thermo.Cv(pw,Tw, patchi)*Tw.snGrad() + + patch().deltaCoeffs()* + ( + thermo.e(pw,Tw, patchi) + - thermo.e(pw,Tw, patch().faceCells()) + ); + + fixedGradientFvPatchScalarField::updateCoeffs(); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makePatchTypeField(fvPatchScalarField, gradientInternalEnergyRealFluids); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.H new file mode 100755 index 000000000..cc254c769 --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.H @@ -0,0 +1,146 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::gradientInternalEnergyRealFluids + +Description + Gradient boundary condition for internal energy + +SourceFiles + gradientInternalEnergyRealFluids.C + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef gradientInternalEnergyRealFluids_H +#define gradientInternalEnergyRealFluids_H + +#include "fixedGradientFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class gradientInternalEnergyRealFluids Declaration +\*---------------------------------------------------------------------------*/ + +class gradientInternalEnergyRealFluids +: + public fixedGradientFvPatchScalarField +{ + +public: + + //- Runtime type information + TypeName("gradientInternalEnergy"); + + + // Constructors + + //- Construct from patch and internal field + gradientInternalEnergyRealFluids + ( + const fvPatch&, + const DimensionedField& + ); + + //- Construct from patch, internal field and dictionary + gradientInternalEnergyRealFluids + ( + const fvPatch&, + const DimensionedField&, + const dictionary& + ); + + //- Construct by mapping given gradientInternalEnergyRealFluids + // onto a new patch + gradientInternalEnergyRealFluids + ( + const gradientInternalEnergyRealFluids&, + const fvPatch&, + const DimensionedField&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + gradientInternalEnergyRealFluids + ( + const gradientInternalEnergyRealFluids& + ); + + //- Construct and return a clone + virtual tmp clone() const + { + return tmp + ( + new gradientInternalEnergyRealFluids(*this) + ); + } + + //- Construct as copy setting internal field reference + gradientInternalEnergyRealFluids + ( + const gradientInternalEnergyRealFluids&, + const DimensionedField& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp clone + ( + const DimensionedField& iF + ) const + { + return tmp + ( + new gradientInternalEnergyRealFluids(*this, iF) + ); + } + + + // Member functions + + // Evaluation functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.C new file mode 100755 index 000000000..abd9cc8e3 --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.C @@ -0,0 +1,164 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "mixedEnthalpyRealFluids.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "volFields.H" +#include "basicPsiThermo.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::mixedEnthalpyRealFluids::mixedEnthalpyRealFluids +( + const fvPatch& p, + const DimensionedField& iF +) +: + mixedFvPatchScalarField(p, iF) +{ + valueFraction() = 0.0; + refValue() = 0.0; + refGrad() = 0.0; +} + + +Foam::mixedEnthalpyRealFluids::mixedEnthalpyRealFluids +( + const mixedEnthalpyRealFluids& ptf, + const fvPatch& p, + const DimensionedField& iF, + const fvPatchFieldMapper& mapper +) +: + mixedFvPatchScalarField(ptf, p, iF, mapper) +{} + + +Foam::mixedEnthalpyRealFluids::mixedEnthalpyRealFluids +( + const fvPatch& p, + const DimensionedField& iF, + const dictionary& dict +) +: + mixedFvPatchScalarField(p, iF, dict) +{} + + +Foam::mixedEnthalpyRealFluids::mixedEnthalpyRealFluids +( + const mixedEnthalpyRealFluids& tppsf +) +: + mixedFvPatchScalarField(tppsf) +{} + + +Foam::mixedEnthalpyRealFluids::mixedEnthalpyRealFluids +( + const mixedEnthalpyRealFluids& tppsf, + const DimensionedField& iF +) +: + mixedFvPatchScalarField(tppsf, iF) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::mixedEnthalpyRealFluids::updateCoeffs() +{ + if (updated()) + { + return; + } + + const basicPsiThermo& thermo = db().lookupObject + ( + "thermophysicalProperties" + ); + + + const label patchi = patch().index(); + + mixedFvPatchScalarField& Tw = refCast + ( + const_cast(thermo.T().boundaryField()[patchi]) + ); + + Tw.evaluate(); + + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + pw.evaluate(); + + valueFraction() = Tw.valueFraction(); + + if (dimensionedInternalField().name() == "h") + { + refValue() = thermo.h(pw,Tw.refValue(), patchi); + refGrad() = thermo.Cp(pw,Tw, patchi)*Tw.refGrad() + + patch().deltaCoeffs()* + ( + thermo.h(pw,Tw, patchi) + - thermo.h(pw,Tw, patch().faceCells()) + ); + } + /* else + { + refValue() = thermo.hs(Tw.refValue(), patchi); + refGrad() = thermo.CpBC(pw,Tw, patchi)*Tw.refGrad() + + patch().deltaCoeffs()* + ( + thermo.hs(Tw, patchi) + - thermo.hs(Tw, patch().faceCells()) + ); + }*/ + + mixedFvPatchScalarField::updateCoeffs(); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchScalarField, + mixedEnthalpyRealFluids + ); +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.H new file mode 100755 index 000000000..b74148637 --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.H @@ -0,0 +1,146 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::mixedEnthalpyRealFluids + +Description + Mixed boundary conditions for enthalpy + +SourceFiles + mixedEnthalpyRealFluids.C + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef mixedEnthalpyRealFluids_H +#define mixedEnthalpyRealFluids_H + +#include "mixedFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class mixedEnthalpyRealFluids Declaration +\*---------------------------------------------------------------------------*/ + +class mixedEnthalpyRealFluids +: + public mixedFvPatchScalarField +{ + +public: + + //- Runtime type information + TypeName("mixedEnthalpy"); + + + // Constructors + + //- Construct from patch and internal field + mixedEnthalpyRealFluids + ( + const fvPatch&, + const DimensionedField& + ); + + //- Construct from patch, internal field and dictionary + mixedEnthalpyRealFluids + ( + const fvPatch&, + const DimensionedField&, + const dictionary& + ); + + //- Construct by mapping given mixedEnthalpyRealFluids + // onto a new patch + mixedEnthalpyRealFluids + ( + const mixedEnthalpyRealFluids&, + const fvPatch&, + const DimensionedField&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + mixedEnthalpyRealFluids + ( + const mixedEnthalpyRealFluids& + ); + + //- Construct and return a clone + virtual tmp clone() const + { + return tmp + ( + new mixedEnthalpyRealFluids(*this) + ); + } + + //- Construct as copy setting internal field reference + mixedEnthalpyRealFluids + ( + const mixedEnthalpyRealFluids&, + const DimensionedField& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp clone + ( + const DimensionedField& iF + ) const + { + return tmp + ( + new mixedEnthalpyRealFluids(*this, iF) + ); + } + + + // Member functions + + // Evaluation functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.C new file mode 100755 index 000000000..4d462759c --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.C @@ -0,0 +1,151 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "mixedInternalEnergyRealFluids.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "volFields.H" +#include "basicPsiThermo.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +mixedInternalEnergyRealFluids::mixedInternalEnergyRealFluids +( + const fvPatch& p, + const DimensionedField& iF +) +: + mixedFvPatchScalarField(p, iF) +{ + valueFraction() = 0.0; + refValue() = 0.0; + refGrad() = 0.0; +} + + +mixedInternalEnergyRealFluids::mixedInternalEnergyRealFluids +( + const mixedInternalEnergyRealFluids& ptf, + const fvPatch& p, + const DimensionedField& iF, + const fvPatchFieldMapper& mapper +) +: + mixedFvPatchScalarField(ptf, p, iF, mapper) +{} + + +mixedInternalEnergyRealFluids::mixedInternalEnergyRealFluids +( + const fvPatch& p, + const DimensionedField& iF, + const dictionary& dict +) +: + mixedFvPatchScalarField(p, iF, dict) +{} + + +mixedInternalEnergyRealFluids::mixedInternalEnergyRealFluids +( + const mixedInternalEnergyRealFluids& tppsf +) +: + mixedFvPatchScalarField(tppsf) +{} + + +mixedInternalEnergyRealFluids::mixedInternalEnergyRealFluids +( + const mixedInternalEnergyRealFluids& tppsf, + const DimensionedField& iF +) +: + mixedFvPatchScalarField(tppsf, iF) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void mixedInternalEnergyRealFluids::updateCoeffs() +{ + if (updated()) + { + return; + } + + const basicPsiThermo& thermo = db().lookupObject + ( + "thermophysicalProperties" + ); + + + const label patchi = patch().index(); + + mixedFvPatchScalarField& Tw = refCast + ( + const_cast(thermo.T().boundaryField()[patchi]) + ); + + Tw.evaluate(); + + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + pw.evaluate(); + + valueFraction() = Tw.valueFraction(); + refValue() = thermo.e(pw,Tw.refValue(), patchi); + refGrad() = thermo.Cv(pw,Tw, patchi)*Tw.refGrad() + + patch().deltaCoeffs()* + ( + thermo.e(pw,Tw, patchi) + - thermo.e(pw,Tw, patch().faceCells()) + ); + + mixedFvPatchScalarField::updateCoeffs(); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makePatchTypeField(fvPatchScalarField, mixedInternalEnergyRealFluids); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.H new file mode 100755 index 000000000..491305f59 --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.H @@ -0,0 +1,146 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::mixedInternalEnergyRealFluids + +Description + Mixed boundary conditions for internal energy + +SourceFiles + mixedInternalEnergyRealFluids.C + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef mixedInternalEnergyRealFluids_H +#define mixedInternalEnergyRealFluids_H + +#include "mixedFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class mixedInternalEnergyRealFluids Declaration +\*---------------------------------------------------------------------------*/ + +class mixedInternalEnergyRealFluids +: + public mixedFvPatchScalarField +{ + +public: + + //- Runtime type information + TypeName("mixedInternalEnergy"); + + + // Constructors + + //- Construct from patch and internal field + mixedInternalEnergyRealFluids + ( + const fvPatch&, + const DimensionedField& + ); + + //- Construct from patch, internal field and dictionary + mixedInternalEnergyRealFluids + ( + const fvPatch&, + const DimensionedField&, + const dictionary& + ); + + //- Construct by mapping given mixedInternalEnergyRealFluids + // onto a new patch + mixedInternalEnergyRealFluids + ( + const mixedInternalEnergyRealFluids&, + const fvPatch&, + const DimensionedField&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + mixedInternalEnergyRealFluids + ( + const mixedInternalEnergyRealFluids& + ); + + //- Construct and return a clone + virtual tmp clone() const + { + return tmp + ( + new mixedInternalEnergyRealFluids(*this) + ); + } + + //- Construct as copy setting internal field reference + mixedInternalEnergyRealFluids + ( + const mixedInternalEnergyRealFluids&, + const DimensionedField& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp clone + ( + const DimensionedField& iF + ) const + { + return tmp + ( + new mixedInternalEnergyRealFluids(*this, iF) + ); + } + + + // Member functions + + // Evaluation functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.C new file mode 100755 index 000000000..521b46f3a --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.C @@ -0,0 +1,198 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "realFluidWallHeatTransferFvPatchScalarField.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "volFields.H" +#include "basicPsiThermo.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::realFluidWallHeatTransferFvPatchScalarField::realFluidWallHeatTransferFvPatchScalarField +( + const fvPatch& p, + const DimensionedField& iF +) +: + mixedFvPatchScalarField(p, iF), + Tinf_(p.size(), 0.0), + alphaWall_(p.size(), 0.0) +{ + refValue() = 0.0; + refGrad() = 0.0; + valueFraction() = 0.0; +} + + +Foam::realFluidWallHeatTransferFvPatchScalarField::realFluidWallHeatTransferFvPatchScalarField +( + const realFluidWallHeatTransferFvPatchScalarField& ptf, + const fvPatch& p, + const DimensionedField& iF, + const fvPatchFieldMapper& mapper +) +: + mixedFvPatchScalarField(ptf, p, iF, mapper), + Tinf_(ptf.Tinf_, mapper), + alphaWall_(ptf.alphaWall_, mapper) +{} + + +Foam::realFluidWallHeatTransferFvPatchScalarField::realFluidWallHeatTransferFvPatchScalarField +( + const fvPatch& p, + const DimensionedField& iF, + const dictionary& dict +) +: + mixedFvPatchScalarField(p, iF), + Tinf_("Tinf", dict, p.size()), + alphaWall_("alphaWall", dict, p.size()) +{ + refValue() = Tinf_; + refGrad() = 0.0; + valueFraction() = 0.0; + + if (dict.found("value")) + { + fvPatchField::operator= + ( + scalarField("value", dict, p.size()) + ); + } + else + { + evaluate(); + } +} + + +Foam::realFluidWallHeatTransferFvPatchScalarField::realFluidWallHeatTransferFvPatchScalarField +( + const realFluidWallHeatTransferFvPatchScalarField& tppsf +) +: + mixedFvPatchScalarField(tppsf), + Tinf_(tppsf.Tinf_), + alphaWall_(tppsf.alphaWall_) +{} + + +Foam::realFluidWallHeatTransferFvPatchScalarField::realFluidWallHeatTransferFvPatchScalarField +( + const realFluidWallHeatTransferFvPatchScalarField& tppsf, + const DimensionedField& iF +) +: + mixedFvPatchScalarField(tppsf, iF), + Tinf_(tppsf.Tinf_), + alphaWall_(tppsf.alphaWall_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::realFluidWallHeatTransferFvPatchScalarField::autoMap +( + const fvPatchFieldMapper& m +) +{ + scalarField::autoMap(m); + Tinf_.autoMap(m); + alphaWall_.autoMap(m); +} + + +void Foam::realFluidWallHeatTransferFvPatchScalarField::rmap +( + const fvPatchScalarField& ptf, + const labelList& addr +) +{ + mixedFvPatchScalarField::rmap(ptf, addr); + + const realFluidWallHeatTransferFvPatchScalarField& tiptf = + refCast(ptf); + + Tinf_.rmap(tiptf.Tinf_, addr); + alphaWall_.rmap(tiptf.alphaWall_, addr); +} + + +void Foam::realFluidWallHeatTransferFvPatchScalarField::updateCoeffs() +{ + if (updated()) + { + return; + } + + const basicPsiThermo& thermo = db().lookupObject + ( + "thermophysicalProperties" + ); + + const label patchi = patch().index(); + + const scalarField& Tw = thermo.T().boundaryField()[patchi]; + const scalarField& pw = thermo.p().boundaryField()[patchi]; + scalarField Cpw = thermo.Cp(pw,Tw, patchi); + + valueFraction() = + 1.0/ + ( + 1.0 + + Cpw*thermo.alpha().boundaryField()[patchi] + *patch().deltaCoeffs()/alphaWall_ + ); + + mixedFvPatchScalarField::updateCoeffs(); +} + + +void Foam::realFluidWallHeatTransferFvPatchScalarField::write(Ostream& os) const +{ + fvPatchScalarField::write(os); + Tinf_.writeEntry("Tinf", os); + alphaWall_.writeEntry("alphaWall", os); + writeEntry("value", os); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField(fvPatchScalarField, realFluidWallHeatTransferFvPatchScalarField); +} + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.H new file mode 100755 index 000000000..b50bae77a --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.H @@ -0,0 +1,201 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::realFluidWallHeatTransferFvPatchScalarField + +Description + Enthalpy boundary conditions for wall heat transfer + +SourceFiles + realFluidWallHeatTransferFvPatchScalarField.C + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef realFluidWallHeatTransferFvPatchScalarField_H +#define realFluidWallHeatTransferFvPatchScalarField_H + +#include "mixedFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class wallHeatTransferFvPatch Declaration +\*---------------------------------------------------------------------------*/ + +class realFluidWallHeatTransferFvPatchScalarField +: + public mixedFvPatchScalarField +{ + // Private data + + //- Tinf + scalarField Tinf_; + + //- alphaWall + scalarField alphaWall_; + + +public: + + //- Runtime type information + TypeName("realFluidWallHeatTransfer"); + + + // Constructors + + //- Construct from patch and internal field + realFluidWallHeatTransferFvPatchScalarField + ( + const fvPatch&, + const DimensionedField& + ); + + //- Construct from patch, internal field and dictionary + realFluidWallHeatTransferFvPatchScalarField + ( + const fvPatch&, + const DimensionedField&, + const dictionary& + ); + + //- Construct by mapping given realFluidWallHeatTransferFvPatchScalarField + // onto a new patch + realFluidWallHeatTransferFvPatchScalarField + ( + const realFluidWallHeatTransferFvPatchScalarField&, + const fvPatch&, + const DimensionedField&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + realFluidWallHeatTransferFvPatchScalarField + ( + const realFluidWallHeatTransferFvPatchScalarField& + ); + + //- Construct and return a clone + virtual tmp clone() const + { + return tmp + ( + new realFluidWallHeatTransferFvPatchScalarField(*this) + ); + } + + //- Construct as copy setting internal field reference + realFluidWallHeatTransferFvPatchScalarField + ( + const realFluidWallHeatTransferFvPatchScalarField&, + const DimensionedField& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp clone + ( + const DimensionedField& iF + ) const + { + return tmp + ( + new realFluidWallHeatTransferFvPatchScalarField(*this, iF) + ); + } + + + // Member functions + + // Access + + //- Return Tinf + const scalarField& Tinf() const + { + return Tinf_; + } + + //- Return reference to Tinf to allow adjustment + scalarField& Tinf() + { + return Tinf_; + } + + //- Return alphaWall + const scalarField& alphaWall() const + { + return alphaWall_; + } + + //- Return reference to alphaWall to allow adjustment + scalarField& alphaWall() + { + return alphaWall_; + } + + + // Mapping functions + + //- Map (and resize as needed) from self given a mapping object + virtual void autoMap + ( + const fvPatchFieldMapper& + ); + + //- Reverse map the given fvPatchField onto this fvPatchField + virtual void rmap + ( + const fvPatchScalarField&, + const labelList& + ); + + + // Evaluation functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); + + + //- Write + virtual void write(Ostream&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C new file mode 100755 index 000000000..a5f427949 --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C @@ -0,0 +1,460 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#include "realGasHThermo.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template +void Foam::realGasHThermo::calculate() +{ + + + const scalarField& hCells = h_.internalField(); + const scalarField& pCells = this->p_.internalField(); + + scalarField& TCells = this->T_.internalField(); + scalarField& rhoCells= this->rho_.internalField(); + scalarField& psiCells = this->psi_.internalField(); + scalarField& muCells = this->mu_.internalField(); + scalarField& alphaCells = this->alpha_.internalField(); + + + + forAll(TCells, celli) + { + const typename MixtureType::thermoType& mixture_ = + this->cellMixture(celli); + + mixture_.TH(hCells[celli], TCells[celli],pCells[celli],rhoCells[celli]); + psiCells[celli]=mixture_.psi(rhoCells[celli],TCells[celli]); + muCells[celli] = mixture_.mu(TCells[celli]); + alphaCells[celli] = mixture_.alpha(rhoCells[celli], TCells[celli]); + } + + + forAll(T_.boundaryField(), patchi) + { + fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; + fvPatchScalarField& ppsi = this->psi_.boundaryField()[patchi]; + fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; + fvPatchScalarField& ph = h_.boundaryField()[patchi]; + + fvPatchScalarField& pmu = this->mu_.boundaryField()[patchi]; + fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi]; + + + + if (pT.fixesValue()) + { + + forAll(pT, facei) + { + const typename MixtureType::thermoType& mixture_ = + this->patchFaceMixture(patchi, facei); + + + prho[facei] = mixture_.rho(pp[facei], pT[facei],prho[facei]); + ppsi[facei]=mixture_.psi(prho[facei],pT[facei]); + ph[facei] = mixture_.H(prho[facei], pT[facei]); + + pmu[facei] = mixture_.mu(pT[facei]); + palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); + + } + } + else + { + + forAll(pT, facei) + { + const typename MixtureType::thermoType& mixture_ = + this->patchFaceMixture(patchi, facei); + mixture_.TH(ph[facei], pT[facei],pp[facei],prho[facei]); + pmu[facei] = mixture_.mu(pT[facei]); + ppsi[facei]=mixture_.psi(prho[facei],pT[facei]); + palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); + } + } + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) +: + basicPsiThermo(mesh), + MixtureType(*this, mesh), + + h_ + ( + IOobject + ( + "h", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, 0, 0), + this->hRealBoundaryTypes() + ), + + rho_ + ( + IOobject + ( + "rho1", + mesh.time().timeName(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::NO_WRITE + ), + mesh, + dimDensity + ) +{ + + + + scalarField& hCells = h_.internalField(); + const scalarField& TCells = this->T_.internalField(); + const scalarField& pCells =this->p_.internalField(); + scalarField& rhoCells =this->rho_.internalField(); + + + + forAll(rhoCells, celli) + { + rhoCells[celli]=this->cellMixture(celli).rho(pCells[celli],TCells[celli]); + + } + + + + forAll(rho_.boundaryField(), patchi) + { + rho_.boundaryField()[patchi] == + rho( this->p_.boundaryField()[patchi] , this->T_.boundaryField()[patchi], patchi); + + } + + + forAll(hCells, celli) + { + hCells[celli] = this->cellMixture(celli).H(rhoCells[celli],TCells[celli]); + } + + + forAll(h_.boundaryField(), patchi) + { + h_.boundaryField()[patchi] == + h((this->rho_.boundaryField()[patchi]) , this->T_.boundaryField()[patchi], patchi); + } + + hRealBoundaryCorrection(h_); + calculate(); + + // Switch on saving old time + this->psi_.oldTime(); + +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template +Foam::realGasHThermo::~realGasHThermo() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template +void Foam::realGasHThermo::correct() +{ + if (debug) + { + Info<< "entering realGasHThermo::correct()" << endl; + } + + // force the saving of the old-time values + this->psi_.oldTime(); + + calculate(); + + if (debug) + { + Info<< "exiting realGasHThermo::correct()" << endl; + } +} + + + + +template +Foam::tmp Foam::realGasHThermo::h +( + const scalarField& p, + const scalarField& T, + const labelList& cells +) const +{ + + tmp th(new scalarField(T.size())); + scalarField& h = th(); + + forAll(T, celli) + { + h[celli] = this->cellMixture(cells[celli]).H(this->cellMixture(cells[celli]).rho(p[celli],T[celli]),T[celli]); + } + + return th; +} + + + + +template +Foam::tmp Foam::realGasHThermo::h +( + const scalarField& p, + const scalarField& T, + const label patchi +) const +{ + tmp th(new scalarField(T.size())); + scalarField& h = th(); + + forAll(T, facei) + { + h[facei] = this->patchFaceMixture(patchi, facei).H(this->patchFaceMixture(patchi, facei).rho(p[facei], T[facei]),T[facei]); + } + + return th; +} + + +template +Foam::tmp Foam::realGasHThermo::psi +( + const scalarField& rho, + const scalarField& T, + const label patchi +) const +{ + + tmp tpsi(new scalarField(T.size())); + scalarField& psi = tpsi(); + + forAll(T, facei) + { + psi[facei] = this->patchFaceMixture(patchi, facei).psi(rho[facei], T[facei]); + } + + return tpsi; +} + + +template +Foam::tmp Foam::realGasHThermo::rho +( + const scalarField& p, + const scalarField& T, + const label patchi +) const +{ + + tmp trho(new scalarField(T.size())); + scalarField& rho = trho(); + + forAll(T, facei) + { + rho[facei] = this->patchFaceMixture(patchi, facei).rho(p[facei], T[facei]); + } + + return trho; +} + + + + + + +template +Foam::tmp Foam::realGasHThermo::Cp +( + const scalarField& p, + const scalarField& T, + const label patchi +) const +{ + tmp tCp(new scalarField(T.size())); + scalarField& cp = tCp(); + + forAll(T, facei) + { + cp[facei] = this->patchFaceMixture(patchi, facei).Cp(this->patchFaceMixture(patchi, facei).rho(p[facei], T[facei]),T[facei]); + } + + return tCp; +} + +template +Foam::tmp Foam::realGasHThermo::Cp() const +{ + const fvMesh& mesh = this->T_.mesh(); + + tmp tCp + ( + new volScalarField + ( + IOobject + ( + "Cp", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, -1, 0), + this->T_.boundaryField().types() + ) + ); + + volScalarField& cp = tCp(); + + forAll(this->T_, celli) + { + cp[celli] = this->cellMixture(celli).Cp(this->rho_[celli], this->T_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + const fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; + const fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; + fvPatchScalarField& pCp = cp.boundaryField()[patchi]; + + forAll(pT, facei) + { + pCp[facei] = this->patchFaceMixture(patchi, facei).Cp(prho[facei], pT[facei]); + } + } + + return tCp; +} + + +template +Foam::tmp Foam::realGasHThermo::Cv +( + const scalarField& rho, + const scalarField& T, + const label patchi +) const +{ + + tmp tCv(new scalarField(T.size())); + scalarField& cv = tCv(); + + forAll(T, facei) + { + cv[facei] = this->patchFaceMixture(patchi, facei).Cv(rho[facei], T[facei]); + } + + return tCv; +} + + + +template +Foam::tmp Foam::realGasHThermo::Cv() const +{ + + const fvMesh& mesh = this->T_.mesh(); + + tmp tCv + ( + new volScalarField + ( + IOobject + ( + "Cv", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, -1, 0) + ) + ); + + volScalarField& cv = tCv(); + + forAll(this->T_, celli) + { + cv[celli] = this->cellMixture(celli).Cv(this->rho_[celli], this->T_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + cv.boundaryField()[patchi] = + Cv(this->rho_.boundaryField()[patchi] , this->T_.boundaryField()[patchi], patchi); + } + + return tCv; +} + + +template +bool Foam::realGasHThermo::read() +{ + if (basicPsiThermo::read()) + { + MixtureType::read(*this); + return true; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H new file mode 100755 index 000000000..250be93d5 --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H @@ -0,0 +1,226 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | . + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::realGasHThermo + +Description + Enthalpy for a real gas fluid libary + + +SourceFiles + realGasHThermo.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#ifndef realGasHThermo_H +#define realGasHThermo_H + +#include "basicPsiThermo.H" +#include "basicMixture.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class hPsiThermo Declaration +\*---------------------------------------------------------------------------*/ + +template +class realGasHThermo +: + public basicPsiThermo, + public MixtureType +{ + // Private data + + //- Enthalpy field + volScalarField h_; + + //- DensityField + volScalarField rho_; + + + // Private member functions + + //- Calculate the thermo variables + void calculate(); + + //- Construct as copy (not implemented) + realGasHThermo(const realGasHThermo&); + + +public: + + //- Runtime type information + TypeName("realGasHThermo"); + + + // Constructors + + //- Construct from mesh + realGasHThermo(const fvMesh&); + + + //- Destructor + virtual ~realGasHThermo(); + + + // Member functions + + //- Return the compostion of the mixture + virtual basicMixture& composition() + { + return *this; + } + + //- Return the compostion of the mixture + virtual const basicMixture& composition() const + { + return *this; + } + + //- Update properties + virtual void correct(); + + + // Access to thermodynamic state variables + + //- Enthalpy [J/kg] + // Non-const access allowed for transport equations + virtual volScalarField& h() + { + return h_; + } + + //- Enthalpy [J/kg] + virtual const volScalarField& h() const + { + return h_; + } + + + // Fields derived from thermodynamic state variables + + + + + + //- Enthalpy for cell-set [J/kg] + virtual tmp h + ( + const scalarField& p, + const scalarField& T, + const labelList& cells + ) const; + + + + //- Enthalpy for patch [J/kg] + virtual tmp h + ( + const scalarField& p, + const scalarField& T, + const label patchi + ) const; + + //- Psi for patch [J/kg] + virtual tmp psi + ( + const scalarField& rho, + const scalarField& T, + const label patchi + ) const; + + + //- Density for patch [J/kg] + virtual tmp rho + ( + const scalarField& p, + const scalarField& T, + const label patchi + ) const; + + + + //- Heat capacity at constant pressure for patch [J/kg/K] + virtual tmp Cp + ( + const scalarField& p, + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant pressure [J/kg/K] + virtual tmp Cp() const; + + //- Heat capacity at constant volume for patch [J/kg/K] + virtual tmp Cv + ( + const scalarField& rho, + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant volume [J/kg/K] + virtual tmp Cv() const; + + + //- Density [kg/m^3] - uses current value of pressure + virtual tmp rho() const + { + + return rho_*1; + } + + + //- Read thermophysicalProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + +#ifdef NoRepository +# include "realGasHThermo.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C new file mode 100755 index 000000000..91dfbe76b --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C @@ -0,0 +1,163 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + + +\*---------------------------------------------------------------------------*/ + + +#include "makeBasicPsiThermo.H" + + +#include "redlichKwong.H" +#include "pengRobinson.H" +#include "aungierRedlichKwong.H" +#include "soaveRedlichKwong.H" +#include "nasaHeatCapacityPolynomial.H" +#include "realGasSpecieThermo.H" + +#include "pureMixture.H" +#include "realGasSutherlandTransport.H" +#include "realGasConstTransport.H" +#include "realGasHThermo.H" + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + realGasSutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + + + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + realGasSutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + + + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + realGasSutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + + + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + realGasSutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + realGasConstTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + + + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + realGasConstTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + + + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + realGasConstTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + + + + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + realGasConstTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C new file mode 100755 index 000000000..fb5d01800 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C @@ -0,0 +1,78 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + Aungier Redlich Kwong equation of state. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + + +\*---------------------------------------------------------------------------*/ + +#include "aungierRedlichKwong.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +aungierRedlichKwong::aungierRedlichKwong(Istream& is) +: + specie(is), + pcrit_(readScalar(is)), + Tcrit_(readScalar(is)), + azentricFactor_(readScalar(is)), + rhocrit_(readScalar(is)) +{ + is.check("aungierRedlichKwong::aungierRedlichKwong(Istream& is)"); + rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); + rhoMax_=1500; + rhoMin_=0.001; +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Ostream& operator<<(Ostream& os, const aungierRedlichKwong& pg) +{ + os << static_cast(pg)<< tab + << pg.pcrit_ << tab<< pg.Tcrit_< clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + //Member Variabels + scalar pcrit_; + scalar Tcrit_; + scalar rhostd_; + scalar azentricFactor_; + scalar rhocrit_; + scalar rhoMax_; //should be read from the fvSolution file where rhoMax and rhoMin values must be define ( for rhoSimpleFoam) + scalar rhoMin_; + + // Member functions + inline scalar pcrit() const; + inline scalar Tcrit() const; + inline scalar azentricFactor() const; + inline scalar rhostd()const; + inline scalar rhocrit() const; + inline scalar pReturn(const scalar rho, const scalar T) const; + + //-Redlich Kwong factors + inline scalar a() const; + inline scalar b() const; + inline scalar c() const; + inline scalar n() const; + //derivatives + inline scalar dpdv(const scalar rho,const scalar T) const; + inline scalar dpdT(const scalar rho, const scalar T) const; + inline scalar dvdT(const scalar rho,const scalar T) const; + inline scalar dvdp(const scalar rho, const scalar T) const; + inline scalar isobarExpCoef(const scalar rho,const scalar T) const; + inline scalar isothermalCompressiblity(const scalar rho,const scalar T) const; + inline scalar integral_d2pdT2_dv(const scalar rho,const scalar T) const ; // Used for cv + inline scalar d2pdv2(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar d2pdT2(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar d2pdvdT(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar d2vdT2(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar integral_p_dv(const scalar rho,const scalar T) const; //Used for internal Energy + inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; //Used for Entropy + + //- Return density [kg/m^3] // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho(const scalar p,const scalar T,const scalar rho0) const; + inline scalar rho(const scalar p,const scalar T) const; + + //- Return compressibility drho/dp [s^2/m^2] + inline scalar psi(const scalar rho, const scalar T) const; + + //- Return compression factor [] // rho0 is the starting point of the newton solver used to calculate rho + inline scalar Z(const scalar p,const scalar T,const scalar rho0) const; + + + // Member operators + + inline void operator+=(const aungierRedlichKwong&); + inline void operator-=(const aungierRedlichKwong&); + + inline void operator*=(const scalar); + + + /* // Friend operators + + inline friend aungierRedlichKwong operator+ + ( + const aungierRedlichKwong&, + const aungierRedlichKwong& + ); + + inline friend aungierRedlichKwong operator- + ( + const aungierRedlichKwong&, + const aungierRedlichKwong& + ); + + inline friend aungierRedlichKwong operator* + ( + const scalar s, + const aungierRedlichKwong& + ); + + inline friend aungierRedlichKwong operator== + ( + const aungierRedlichKwong&, + const aungierRedlichKwong& + ); +*/ + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const aungierRedlichKwong&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "aungierRedlichKwongI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H new file mode 100755 index 000000000..b13adb1bd --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H @@ -0,0 +1,497 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#include "aungierRedlichKwong.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + + + + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +inline scalar aungierRedlichKwong::pcrit()const +{ +return pcrit_; +} + + + +inline scalar aungierRedlichKwong::Tcrit()const +{ +return Tcrit_; +} + + +inline scalar aungierRedlichKwong::rhostd()const +{ +return rhostd_; +} + +inline scalar aungierRedlichKwong::rhocrit()const +{ +return rhocrit_; +} + +// Returns the Azentric Factor (Acentric Factor) +inline scalar aungierRedlichKwong::azentricFactor() const +{ +return azentricFactor_; +} + +//returns the pressure for a given density and temperature +inline scalar aungierRedlichKwong::pReturn(const scalar rho,const scalar T) const +{ + +return this->RR*T/((this->W()/rho)-this->b()+this->c()) +-this->a()*pow(T,-this->n())/(pow(this->Tcrit(),-this->n())*(this->W()/rho)*((this->W()/rho)+this->b())); +} + + + +// Factor a of the redlich Kwong equation of state +//(molar values) +inline scalar aungierRedlichKwong::a() const +{ +return 0.42747*pow(this->RR,2)*pow(this->Tcrit(),2)/this->pcrit(); +} + + + +// Faktor b of the redlich Kwong equation of state +//(molar values) +inline scalar aungierRedlichKwong::b() const +{ +return 0.08664*this->RR*this->Tcrit()/this->pcrit(); +} +// Factor c of the redlich Kwong equation of state +//(molar values) +inline scalar aungierRedlichKwong::c() const +{ +return this->RR*this->Tcrit()/(this->pcrit()+(this->a()/(this->W()/this->rhocrit()*(this->W()/this->rhocrit()+this->b()))))+this->b()-this->W()/this->rhocrit(); +} +// Factor n of the redlich Kwong equation of state +inline scalar aungierRedlichKwong::n() const +{ +return 0.4986+1.2735*this->azentricFactor()+0.4754*pow(this->azentricFactor(),2); +} + + +//* * * * * * * * * * * * * Derivatives * * * * * * * * * * * // + + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar aungierRedlichKwong::dpdv(const scalar rho, const scalar T) const +{ + + + return this->a()*pow(T,-this->n())*pow(this->Tcrit(),this->n())*(this->b()+2*(this->W()/rho))/(pow((this->W()/rho),2)*pow((this->b()+(this->W()/rho)),2))-this->RR*T/(pow((this->b()-(this->W()/rho)-this->c()),2)); +} + + + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar aungierRedlichKwong::dpdT(const scalar rho, const scalar T) const +{ +return this->a()*this->n()*pow(T,-this->n()-1)*pow(this->Tcrit(),this->n())/((this->W()/rho)*((this->W()/rho)+this->b()))- +this->RR/(this->b()-(this->W()/rho)-this->c()); +} + + + + +//Real deviative dv/dT at constant pressure +//using implicit differentiation +//(molar values) +inline scalar aungierRedlichKwong::dvdT(const scalar rho,const scalar T) const +{ +return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); +} + + + + +//Real deviative dv/dp at constant temperature +//(molar values) +inline scalar aungierRedlichKwong::dvdp(const scalar rho,const scalar T) const +{ +return 1/this->dpdv(rho,T); +} + + + + + + +//needed to calculate the internal energy +//(molar values) +inline scalar aungierRedlichKwong::integral_p_dv(const scalar rho,const scalar T) const +{ +return -pow((T/this->Tcrit()),-this->n())*(this->a()*log((this->W()/rho))/(this->b())-this->a()*log(this->b()+(this->W()/rho))/this->b())+this->RR*T*log((this->W()/rho)-this->b()+this->c()); +} + + + +//needed to calculate the entropy +//(molar values) +inline scalar aungierRedlichKwong::integral_dpdT_dv(const scalar rho,const scalar T) const +{ +return pow(T,-this->n()-1)*pow(this->Tcrit(),this->n())* +(this->a()*this->n()*log((this->W()/rho))/(this->b()) +-this->a()*this->n()*log(this->b()+(this->W()/rho))/(this->b())) ++ this->RR*log(-this->b()+this->c()+(this->W()/rho)); +} + + + + +//* * * * * * * * * * * * * second order Derivative based functions * * * * * * * * * * * // + + + +//(molar values) +inline scalar aungierRedlichKwong::d2pdT2(const scalar rho,const scalar T) const +{ +return -this->a()*this->n()*pow(T,-this->n()-2)*pow(this->Tcrit(),this->n())*(this->n()+1)/((this->W()/rho)*(this->b()+(this->W()/rho))); +} + + + + +//(molar values) +inline scalar aungierRedlichKwong::d2pdv2(const scalar rho,const scalar T) const +{ + return -2*this->a()*pow(T,-this->n())*pow(this->Tcrit(),this->n())*(pow(this->b(),2)+3*this->b()*(this->W()/rho)+3*pow((this->W()/rho),2))/(pow((this->W()/rho),3)*pow((this->b()+(this->W()/rho)),3))-2*this->RR*T/(pow((this->b()-(this->W()/rho)-this->c()),3)); +} + + + + +//(molar values) +//using second order implicit differentiation +inline scalar aungierRedlichKwong::d2vdT2(const scalar rho, const scalar T) const +{ +return -(pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T)+ pow(this->dpdv(rho,T),2) *this->d2pdT2(rho,T)- 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T))/( pow(this->dpdv(rho,T),3)); +} + + + + +//(molar values) +inline scalar aungierRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const +{ +return -this->a()*this->n()*pow(T,-this->n()-1)*pow(this->Tcrit(),this->n())*(this->b()+2*(this->W()/rho))/(pow((this->W()/rho),2)*pow((this->b()+(this->W()/rho)),2))-this->RR/(pow((this->b()-this->c()-(this->W()/rho)),2)); +} + + + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar aungierRedlichKwong::integral_d2pdT2_dv(const scalar rho,const scalar T) const +{ +return pow(T,-this->n()-2)*pow(this->Tcrit(),this->n())*(this->a()*this->n()*(this->n()+1)*log(this->b()+(this->W()/rho))/this->b()-this->a()*this->n()*(1+this->n())*log((this->W()/rho))/this->b()); +} + + + + + +//* * * * * * * * * * * * * thermodynamic properties * * * * * * * * * * * // + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar aungierRedlichKwong::isobarExpCoef(const scalar rho,const scalar T) const +{ + return this->dvdT(rho, T)*rho/this->W(); +} + +//isothemal compressiblity kappa +//(molar values) +inline scalar aungierRedlichKwong::isothermalCompressiblity(const scalar rho,const scalar T) const +{ +return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); +//also possible : return -this->dvdp(rho,T)*rho/this->W(); +} + + + + + + + + + + +// Construct from components +// Starting GUESS for the density by ideal gas law +inline aungierRedlichKwong::aungierRedlichKwong +( + const specie& sp, + scalar pcrit, + scalar Tcrit, + scalar azentricFactor, + scalar rhocrit +) +: + specie(sp), + pcrit_(pcrit), + Tcrit_(Tcrit), + azentricFactor_(azentricFactor), + rhocrit_(rhocrit) +{ + rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); // Starting GUESS for the density by ideal gas law +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct as named copy + +inline aungierRedlichKwong::aungierRedlichKwong(const word& name, aungierRedlichKwong& pg) +: + specie(name, pg), + pcrit_(pg.pcrit_), + Tcrit_(pg.Tcrit_), + azentricFactor_(pg.azentricFactor_) +{ + pg.rhostd_=this->rho(Pstd,Tstd, (Pstd*this->W()/(Tstd*this->R()))); // Starting GUESS for the density by ideal gas law +} + + +// Construct and return a clone +inline autoPtr aungierRedlichKwong::clone() const +{ + return autoPtr(new aungierRedlichKwong(*this)); +} + + +// Selector from Istream +inline autoPtr aungierRedlichKwong::New(Istream& is) +{ + return autoPtr(new aungierRedlichKwong(is)); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +//- Return density [kg/m^3] +inline scalar aungierRedlichKwong::rho(const scalar p,const scalar T,const scalar rho0) const +{ + + + scalar molarVolumePrevIteration; + scalar molarVolume; + int iter=0; + int maxIter_=400; + scalar tol_=1e-8; + int i; + scalar rho1=rhoMax_, rho2=rhoMin_,rho3, f1,f2,f3; + + +molarVolume=this->W()/rho0; + + + do + { + molarVolumePrevIteration= molarVolume; + + i=0; + do + { + molarVolume=molarVolumePrevIteration-((this->pReturn((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ + molarVolumePrevIteration),T)))/(pow(2,i)); + i++; + if(i>8) + { + + //using bisection methode as backup, solution must be between rho=0.001 to rho=1500; + for(i=0;i<200;i++) + { + f1= (this->pReturn(rho1,T)-p); + f2= (this->pReturn(rho2,T)-p); + rho3=(rho1+rho2)/2; + f3=(this->pReturn(rho3,T)-p); + + if ((f2<0 && f3>0)||(f2>0 &&f3<0)) + { + rho1=rho3; + } + else if ((f1<0 && f3>0)||(f1>0 &&f3<0)) + { + rho2=rho3; + } + + else + { + rho2=(rho2+rho3)/2; + } + + if(mag(f3)W()/rho3; + molarVolumePrevIteration=this->W()/rho3; + break; + } + else + { + molarVolumePrevIteration=this->W()/rho3; + } + } + } + } + while(mag(this->pReturn((this->W()/molarVolume),T)-p)>mag(this->pReturn((this->W()/molarVolumePrevIteration),T)-p)); + + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "inline scalar aungierRedlichKwong::rho(const scalar p,const scalar T,const scalar rho0) const " + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } + + } + while(mag(molarVolumePrevIteration-molarVolume)>tol_*(this->W()/rho0)); + + return this->W()/molarVolume; + +} + +//- Return density [kg/m^3]on +inline scalar aungierRedlichKwong::rho(const scalar p,const scalar T) const +{ + + +scalar rho0=p/(this->R()*T); //using perfect gas equation as starting point +return rho(p,T,rho0); + +} + +//- Return compressibility drho/dp [s^2/m^2] +inline scalar aungierRedlichKwong::psi(const scalar rho, const scalar T) const +{ + return -this->dvdp(rho,T)*pow(rho,2)/this->W(); +} + +//- Return compression factor [] +inline scalar aungierRedlichKwong::Z( const scalar p, const scalar T,const scalar rho0) const +{ + return (p*this->rho(p,T,rho0))/(this->R()*T); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +inline void aungierRedlichKwong::operator+=(const aungierRedlichKwong& pg) +{ + specie::operator+=(pg); +} + + inline void aungierRedlichKwong::operator-=(const aungierRedlichKwong& pg) +{ + specie::operator-=(pg); +} + +inline void aungierRedlichKwong::operator*=(const scalar s) +{ + specie::operator*=(s); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // +//****************not working**************// +/* +inline aungierRedlichKwong operator+ +( + const aungierRedlichKwong& pg1, + const aungierRedlichKwong& pg2 +) +{ + return aungierRedlichKwong + ( + static_cast(pg1) + + static_cast(pg2) + ); +} + + +inline aungierRedlichKwong operator- +( + const aungierRedlichKwong& pg1, + const aungierRedlichKwong& pg2 +) +{ + return aungierRedlichKwong + ( + static_cast(pg1) + - static_cast(pg2) + ); +} + + +inline aungierRedlichKwong operator* +( + const scalar s, + const aungierRedlichKwong& pg +) +{ + return aungierRedlichKwong(s*static_cast(pg)); +} + + +inline aungierRedlichKwong operator== +( + const aungierRedlichKwong& pg1, + const aungierRedlichKwong& pg2 +) +{ + return pg2 - pg1; +} + +*/ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C new file mode 100755 index 000000000..4a55086c0 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C @@ -0,0 +1,79 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + Peng Robinson equation of state. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "pengRobinson.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +pengRobinson::pengRobinson(Istream& is) +: + specie(is), + pcrit_(readScalar(is)), + Tcrit_(readScalar(is)), + azentricFactor_(readScalar(is)) +{ + is.check("pengRobinson::pengRobinson(Istream& is)"); + rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); + rhoMax_=1500; + rhoMin_=0.001; + + + +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Ostream& operator<<(Ostream& os, const pengRobinson& pg) +{ + os << static_cast(pg)<< tab + << pg.pcrit_ << tab<< pg.Tcrit_<< tab << pg.azentricFactor_; + + os.check("Ostream& operator<<(Ostream& os, const pengRobinson& st)"); + return os; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H new file mode 100755 index 000000000..09013aa3a --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H @@ -0,0 +1,192 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::pengRobinson + +Description + Peng Robinson equation of state. + +SourceFiles + pengRobinsonI.H + pengRobinson.C + + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#ifndef pengRobinson_H +#define pengRobinson_H + +#include "specie.H" +#include "autoPtr.H" +#include "word.H" +#include "scalar.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class perfectGas Declaration +\*---------------------------------------------------------------------------*/ + +class pengRobinson +: + public specie + +{ + + +public: + + + // Constructors + + //- Construct from components + inline pengRobinson( + const specie& sp, + scalar pcrit, + scalar Tcrit, + scalar azentricFactor + ); + + //- Construct from Istream + pengRobinson(Istream&); + + //- Construct as named copy + inline pengRobinson(const word& name, pengRobinson&); + + //- Construct and return a clone + inline autoPtr clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + //Member Variabels + scalar pcrit_; + scalar Tcrit_; + scalar rhostd_; + scalar azentricFactor_; + scalar rhoMax_; //should be read from the fvSolution file where rhoMax and rhoMin values must be define ( for rhoSimpleFoam) + scalar rhoMin_; + + // Member functions + inline scalar pcrit() const; + inline scalar Tcrit() const; + inline scalar azentricFactor() const; + inline scalar rhostd()const; + inline scalar pReturn(const scalar rho, const scalar T) const; + + //-Redlich Kwong factors + inline scalar a() const; + inline scalar b() const; + inline scalar n() const; + + //derivatives + inline scalar dpdv(const scalar rho,const scalar T) const; + inline scalar dpdT(const scalar rho, const scalar T) const; + inline scalar dvdT(const scalar rho,const scalar T) const; + inline scalar dvdp(const scalar rho, const scalar T) const; + inline scalar isobarExpCoef(const scalar rho,const scalar T) const; + inline scalar isothermalCompressiblity(const scalar rho,const scalar T) const; + inline scalar integral_d2pdT2_dv(const scalar rho,const scalar T) const ; // Used for cv + inline scalar d2pdv2(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar d2pdT2(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar d2pdvdT(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar d2vdT2(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar integral_p_dv(const scalar rho,const scalar T) const; //Used for internal Energy + inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; //Used for Entropy + + //- Return density [kg/m^3] // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho(const scalar p,const scalar T,const scalar rho0) const; + inline scalar rho(const scalar p,const scalar T) const; + //- Return compressibility rho/p [s^2/m^2] // rho0 is the starting point of the newton solver used to calculate rho + inline scalar psi(const scalar rho, const scalar T) const; + + //- Return compression factor [] + inline scalar Z(const scalar p,const scalar T,const scalar rho0) const; + + + // Member operators + + inline void operator+=(const pengRobinson&); + inline void operator-=(const pengRobinson&); + + inline void operator*=(const scalar); + + + /* // Friend operators + + inline friend pengRobinson operator+ + ( + const pengRobinson&, + const pengRobinson& + ); + + inline friend pengRobinson operator- + ( + const pengRobinson&, + const pengRobinson& + ); + + inline friend pengRobinson operator* + ( + const scalar s, + const pengRobinson& + ); + + inline friend pengRobinson operator== + ( + const pengRobinson&, + const pengRobinson& + ); +*/ + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const pengRobinson&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "pengRobinsonI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H new file mode 100755 index 000000000..45a04d45f --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H @@ -0,0 +1,513 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#include "pengRobinson.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + + + + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +inline scalar pengRobinson::pcrit()const +{ +return pcrit_; +} + + + +inline scalar pengRobinson::Tcrit()const +{ +return Tcrit_; +} + + +inline scalar pengRobinson::rhostd()const +{ +return rhostd_; +} + + +// Returns the Azentric Factor (Acentric Factor) +inline scalar pengRobinson::azentricFactor() const +{ +return azentricFactor_; +} + +//returns the pressure for a given density and temperature +inline scalar pengRobinson::pReturn(const scalar rho,const scalar T) const +{ +return this->RR*T/((this->W()/rho)-this->b())-(this->a()*pow((1+this->n()*(1-pow((T/this->Tcrit()),0.5))),2))/(pow((this->W()/rho),2)+2*this->b()*(this->W()/rho)-pow(this->b(),2)); +} + + + +// Factor a of the pengRobinson equation of state +//(molar values) +inline scalar pengRobinson::a() const +{ +return 0.457235*pow(this->RR,2)*pow(this->Tcrit(),2)/this->pcrit(); +} + + + +// Factor b of the pengRobinson equation of state +//(molar values) +inline scalar pengRobinson::b() const +{ +return 0.077796*this->RR*this->Tcrit()/this->pcrit(); +} + +// Factor nb of the pengRobinson equation of state +//(molar values) +inline scalar pengRobinson::n() const +{ +// this equation is only valid for asentricFactors <0.49. +return 0.37464+1.54226*this->azentricFactor()-0.26992*pow(this->azentricFactor(),2); +} + + +//* * * * * * * * * * * * * Derivatives * * * * * * * * * * * // + + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar pengRobinson::dpdv(const scalar rho, const scalar T) const +{ +return -(4*this->a()*this->n()*this->Tcrit()*(this->b()-(this->W()/rho))*(pow(this->b(),2)-pow((this->W()/rho),2))*(this->n()+1) +*pow((T/this->Tcrit()),0.5) ++this->Tcrit()*(-2*this->a()*pow((this->n()+1),2)*(pow(this->b(),3)-pow(this->b(),2)*(this->W()/rho) +-this->b()*pow((this->W()/rho),2)+pow((this->W()/rho),3)) ++this->RR*T*(pow(this->b(),4)-4*pow(this->b(),3)*(this->W()/rho)+2*pow(this->b(),2)*pow((this->W()/rho),2) ++4*this->b()*pow((this->W()/rho),3)+pow((this->W()/rho),4))) +-2*this->a()*pow(this->n(),2)*T*(pow(this->b(),3)-pow(this->b(),2)*(this->W()/rho)-this->b()*pow((this->W()/rho),2)+pow((this->W()/rho),3))) +/(this->Tcrit()*pow((this->b()-(this->W()/rho)),2)*pow((pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2)),2)); +} + + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar pengRobinson::dpdT(const scalar rho, const scalar T) const +{ +return (-this->a()*this->n()*(this->n()+1)*pow((T/this->Tcrit()),0.5)/(T*(pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2)))+this->a()*pow(this->n(),2)/(this->Tcrit()*(pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2)))-this->RR/(this->b()-(this->W()/rho))); +} + + + + +//Real deviative dv/dT at constant pressure +//by using implicit differentiation +//(molar values) +inline scalar pengRobinson::dvdT(const scalar rho,const scalar T) const +{ +return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); +} + + + + +//(molar values) +inline scalar pengRobinson::dvdp(const scalar rho,const scalar T) const +{ +return 1/this->dpdv(rho,T); +} + + + + + +//(molar values) +//needed to calculate the internal energy +inline scalar pengRobinson::integral_p_dv(const scalar rho,const scalar T) const +{ +return pow(2,0.5)*this->a()*(2*this->n()*this->Tcrit()*(this->n()+1)*pow(T/this->Tcrit(),0.5) +-this->Tcrit()*(pow(this->n(),2)+2*this->n()+1)-pow(this->n(),2)*T)*log(this->b()*(1-pow(2,0.5))+(this->W()/rho))/(4*this->b()*this->Tcrit()) ++this->RR*T*log((this->W()/rho)-this->b()) +-pow(2,0.5)*this->a()*(2*this->n()*this->Tcrit()*(this->n()+1)*pow(T/this->Tcrit(),0.5) +-this->Tcrit()*(pow(this->n(),2)+2*this->n()+1)-pow(this->n(),2)*T) +*log(this->b()*(pow(2,0.5)+1)+(this->W()/rho))/(4*this->b()*this->Tcrit()); +} + + +//(molar values) +//needed to calculate the entropy +inline scalar pengRobinson::integral_dpdT_dv(const scalar rho,const scalar T) const +{ + +return (pow(2,0.5)*this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5)/(4*this->b()*T) +-pow(2,0.5)*this->a()*pow(this->n(),2)/(4*this->b()*this->Tcrit())) +*log(this->b()*(1-pow(2,0.5))+(this->W()/rho)) ++this->RR*log((this->W()/rho)-this->b()) ++(pow(2,0.5)*this->a()*pow(this->n(),2)/(4*this->b()*this->Tcrit()) +-pow(2,0.5)*this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5)/(4*this->b()*T)) +*log(this->b()*(pow(2,0.5)+1)+(this->W()/rho)); + +} + + + + +//* * * * * * * * * * * * * second order Derivative based functions * * * * * * * * * * * // + + + +//(molar values) +inline scalar pengRobinson::d2pdT2(const scalar rho,const scalar T) const +{ +return this->a()*this->n()*(this->n()+1)*pow((T/this->Tcrit()),0.5)/(2*pow(T,2)*(pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2))); +} + + + + +//(molar values) +inline scalar pengRobinson::d2pdv2(const scalar rho,const scalar T) const +{ +return 2*(2*this->a()*this->n()*this->Tcrit()*(this->b()-(this->W()/rho))*(this->n()+1)* +(5*pow(this->b(),4)-4*pow(this->b(),3)*(this->W()/rho)-4*pow(this->b(),2)*pow((this->W()/rho),2) ++3*pow((this->W()/rho),4))*pow(T/this->Tcrit(),0.5) ++this->Tcrit()*(this->RR*T*(pow(this->b(),6)-6*pow(this->b(),5)*(this->W()/rho)+9*pow(this->b(),4)*pow((this->W()/rho),2) ++4*pow(this->b(),3)*pow((this->W()/rho),3)-9*pow(this->b(),2)*pow((this->W()/rho),4)-6*this->b()*pow((this->W()/rho),5) +-pow((this->W()/rho),6)) +-this->a()*pow((this->n()+1),2)*(5*pow(this->b(),5)-9*pow(this->b(),4)*(this->W()/rho) ++4*pow(this->b(),2)*pow((this->W()/rho),3)+3*this->b()*pow((this->W()/rho),4)-3*pow((this->W()/rho),5))) +-this->a()*pow(this->n(),2)*T*(5*pow(this->b(),5)-9*pow(this->b(),4)*(this->W()/rho)+4*pow(this->b(),2)*pow((this->W()/rho),3) ++3*this->b()*pow((this->W()/rho),4)-3*pow((this->W()/rho),5))) +/(this->Tcrit()*pow((pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2)),3)*pow(((this->W()/rho)-this->b()),3)); +} + + + + +//(molar values) +//using second order implicit differentiation +inline scalar pengRobinson::d2vdT2(const scalar rho, const scalar T) const +{ +return -(pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T)+ pow(this->dpdv(rho,T),2) *this->d2pdT2(rho,T)- 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T))/( pow(this->dpdv(rho,T),3)); +} + + + + +//(molar values) +inline scalar pengRobinson::d2pdvdT(const scalar rho, const scalar T) const +{ +return -2*this->a()*this->n()*(this->b()+(this->W()/rho))*(this->n()+1)*pow(T/this->Tcrit(),0.5) +/(T*pow((pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2)),2))+(2*this->a()*pow(this->n(),2)*(this->b()+(this->W()/rho)))/(this->Tcrit()*pow(pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2),2))-this->RR/(pow(this->b()-(this->W()/rho),2)); +} + + + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar pengRobinson::integral_d2pdT2_dv(const scalar rho,const scalar T) const +{ +return pow(2,0.5)*this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5) +*log(this->b()*(pow(2,0.5)+1)+(this->W()/rho))/(8*this->b()*pow(T,2)) +-pow(2,0.5)*this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5) +*log(this->b()*(1-pow(2,0.5))+(this->W()/rho))/(8*this->b()*pow(T,2)); +} + + + + + +//* * * * * * * * * * * * * thermodynamic properties * * * * * * * * * * * // + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar pengRobinson::isobarExpCoef(const scalar rho,const scalar T) const +{ + return this->dvdT(rho, T)*rho/this->W(); +} + +//isothemal compressiblity kappa +//(molar values) +inline scalar pengRobinson::isothermalCompressiblity(const scalar rho,const scalar T) const +{ +return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); +//also possible : return -this->dvdp(rho,T)*rho/this->W(); +} + + + + + + + + + + +// Construct from components +inline pengRobinson::pengRobinson +( + const specie& sp, + scalar pcrit, + scalar Tcrit, + scalar azentricFactor + +) +: + specie(sp), + pcrit_(pcrit), + Tcrit_(Tcrit), + azentricFactor_(azentricFactor) +{ + rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); // Starting GUESS for the density by ideal gas law +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct as named copy + +inline pengRobinson::pengRobinson(const word& name, pengRobinson& pg) +: + specie(name, pg), + pcrit_(pg.pcrit_), + Tcrit_(pg.Tcrit_), + azentricFactor_(pg.azentricFactor_) +{ + pg.rhostd_=this->rho(Pstd,Tstd, (Pstd*this->W()/(Tstd*this->R()))); // Starting GUESS for the density by ideal gas law +} + + +// Construct and return a clone +inline autoPtr pengRobinson::clone() const +{ + return autoPtr(new pengRobinson(*this)); +} + + +// Selector from Istream +inline autoPtr pengRobinson::New(Istream& is) +{ + return autoPtr(new pengRobinson(is)); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +//- Return density [kg/m^3] +// TO DO Include a max Iteration number loop and abort function +inline scalar pengRobinson::rho(const scalar p,const scalar T,const scalar rho0) const +{ + + scalar molarVolumePrevIteration; + scalar molarVolume; + int iter=0; + int i; + int maxIter_=400; + scalar tol_=1e-8; + scalar rho1=rhoMax_, rho2=rhoMin_,rho3, f1,f2,f3; + +molarVolume=this->W()/rho0; + + do + { + molarVolumePrevIteration= molarVolume; + i=0; + do + { + + molarVolume=molarVolumePrevIteration-((this->pReturn((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ + molarVolumePrevIteration),T)))/(pow(2,i)); + + + i++; + if(i>8) + { + //using bisection methode as backup, solution must be between rho=0.001 to rho=1500; + for(i=0;i<200;i++) + { + + f1= (this->pReturn(rho1,T)-p); + f2= (this->pReturn(rho2,T)-p); + rho3=(rho1+rho2)/2; + f3=(this->pReturn(rho3,T)-p); + + if ((f2<0 && f3>0)||(f2>0 &&f3<0)) + { + rho1=rho3; + } + else if ((f1<0 && f3>0)||(f1>0 &&f3<0)) + { + rho2=rho3; + } + + else + { + rho2=(rho2+rho3)/2; + } + + if(mag(f3)W()/rho3; + molarVolumePrevIteration=this->W()/rho3; + break; + } + else + { + molarVolumePrevIteration=this->W()/rho3; + } + } + } + + + } + while(mag(this->pReturn((this->W()/molarVolume),T)-p)>mag(this->pReturn((this->W()/molarVolumePrevIteration),T)-p)); + + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "inline scalar pengRobinson::rho(const scalar p,const scalar T,const scalar rho0) const " + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } + + } + while(mag(molarVolumePrevIteration-molarVolume)>tol_*(this->W()/rho0)); + + + + + + return this->W()/molarVolume; + +} + +//- Return density [kg/m^3]on +inline scalar pengRobinson::rho(const scalar p,const scalar T) const +{ + scalar rho0=p/(this->R()*T); //using perfect gas equation as starting point + return rho(p,T,rho0); +} + +//- Return compressibility drho/dp [s^2/m^2] +inline scalar pengRobinson::psi(const scalar rho, const scalar T) const +{ + return -this->dvdp(rho,T)*pow(rho,2)/this->W(); +} + +//- Return compression factor [] +inline scalar pengRobinson::Z( const scalar p, const scalar T,const scalar rho0) const +{ + return (p*this->rho(p,T,rho0))/(this->R()*T); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +inline void pengRobinson::operator+=(const pengRobinson& pg) +{ + specie::operator+=(pg); +} + + inline void pengRobinson::operator-=(const pengRobinson& pg) +{ + specie::operator-=(pg); +} + +inline void pengRobinson::operator*=(const scalar s) +{ + specie::operator*=(s); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // +//****************not working**************// +/* +inline pengRobinson operator+ +( + const pengRobinson& pg1, + const pengRobinson& pg2 +) +{ + return pengRobinson + ( + static_cast(pg1) + + static_cast(pg2) + ); +} + + +inline pengRobinson operator- +( + const pengRobinson& pg1, + const pengRobinson& pg2 +) +{ + return pengRobinson + ( + static_cast(pg1) + - static_cast(pg2) + ); +} + + +inline pengRobinson operator* +( + const scalar s, + const pengRobinson& pg +) +{ + return pengRobinson(s*static_cast(pg)); +} + + +inline pengRobinson operator== +( + const pengRobinson& pg1, + const pengRobinson& pg2 +) +{ + return pg2 - pg1; +} + +*/ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C new file mode 100755 index 000000000..fd94b80b2 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C @@ -0,0 +1,77 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + Redlich Kwong equation of state. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#include "redlichKwong.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +redlichKwong::redlichKwong(Istream& is) +: + specie(is), + pcrit_(readScalar(is)), + Tcrit_(readScalar(is)), + azentricFactor_(readScalar(is)) +{ + is.check("redlichKwong::redlichKwong(Istream& is)"); + rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); + rhoMax_=1500; + rhoMin_=0.001; +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Ostream& operator<<(Ostream& os, const redlichKwong& pg) +{ + os << static_cast(pg)<< tab + << pg.pcrit_ << tab<< pg.Tcrit_<< tab << pg.azentricFactor_; + + os.check("Ostream& operator<<(Ostream& os, const redlichKwong& st)"); + return os; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H new file mode 100755 index 000000000..2be713d1d --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H @@ -0,0 +1,191 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::redlichKwong + +Description + Redlich Kwong equation of state. + +SourceFiles + redlichKwongI.H + redlichKwong.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#ifndef redlichKwong_H +#define redlichKwong_H + +#include "specie.H" +#include "autoPtr.H" +#include "word.H" +#include "scalar.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class perfectGas Declaration +\*---------------------------------------------------------------------------*/ + +class redlichKwong +: + public specie + +{ + + +public: + + + // Constructors + + //- Construct from components + inline redlichKwong( + const specie& sp, + scalar pcrit, + scalar Tcrit, + scalar azentricFactor + ); + + //- Construct from Istream + redlichKwong(Istream&); + + //- Construct as named copy + inline redlichKwong(const word& name, redlichKwong&); + + //- Construct and return a clone + inline autoPtr clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + //Member Variabels + scalar pcrit_; + scalar Tcrit_; + scalar rhostd_; + scalar azentricFactor_; + scalar rhoMax_; //should be read from the fvSolution file where rhoMax and rhoMin values must be define ( for rhoSimpleFoam) + scalar rhoMin_; + + // Member functions + inline scalar pcrit() const; + inline scalar Tcrit() const; + inline scalar rhostd()const; + inline scalar azentricFactor() const; + inline scalar pReturn(const scalar rho, const scalar T) const; + + //-Redlich Kwong factors + inline scalar a() const; + inline scalar b() const; + + + //derivatives + inline scalar dpdv(const scalar rho,const scalar T) const; + inline scalar dpdT(const scalar rho, const scalar T) const; + inline scalar dvdT(const scalar rho,const scalar T) const; + inline scalar dvdp(const scalar rho, const scalar T) const; + inline scalar isobarExpCoef(const scalar rho,const scalar T) const; + inline scalar isothermalCompressiblity(const scalar rho,const scalar T) const; + inline scalar integral_d2pdT2_dv(const scalar rho,const scalar T) const ; // Used for cv + inline scalar d2pdv2(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar d2pdT2(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar d2pdvdT(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar d2vdT2(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar integral_p_dv(const scalar rho,const scalar T) const; //Used for internal Energy + inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; //Used for Entropy + + //- Return density [kg/m^3] // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho(const scalar p,const scalar T,const scalar rho0) const; + inline scalar rho(const scalar p,const scalar T) const; + //- Return compressibility drho/dp [s^2/m^2] + inline scalar psi(const scalar rho, const scalar T) const; + + //- Return compression factor [] + inline scalar Z(const scalar p,const scalar T,const scalar rho0) const; + + + // Member operators + + inline void operator+=(const redlichKwong&); + inline void operator-=(const redlichKwong&); + + inline void operator*=(const scalar); + + + /* // Friend operators + + inline friend redlichKwong operator+ + ( + const redlichKwong&, + const redlichKwong& + ); + + inline friend redlichKwong operator- + ( + const redlichKwong&, + const redlichKwong& + ); + + inline friend redlichKwong operator* + ( + const scalar s, + const redlichKwong& + ); + + inline friend redlichKwong operator== + ( + const redlichKwong&, + const redlichKwong& + ); +*/ + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const redlichKwong&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "redlichKwongI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H new file mode 100755 index 000000000..a3062d3e6 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H @@ -0,0 +1,476 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#include "redlichKwong.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + + + + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +inline scalar redlichKwong::pcrit()const +{ +return pcrit_; +} + + + +inline scalar redlichKwong::Tcrit()const +{ +return Tcrit_; +} + +// Returns the Azentric Factor (Acentric Factor) +inline scalar redlichKwong::azentricFactor() const +{ +return azentricFactor_; +} + + +inline scalar redlichKwong::rhostd()const +{ +return rhostd_; +} + + +//returns the pressure for a given density and temperature +inline scalar redlichKwong::pReturn(const scalar rho,const scalar T) const +{ +return (this->RR *T/((this->W()/rho)-this->b()) - (this->a()/(sqrt(T)*(this->W()/rho)*((this->W()/rho)+this->b())))); +} + + + +// Faktor a of the redlich Kwong equation of state +//(molar values) +inline scalar redlichKwong::a() const +{ +return 0.42748*pow(this->RR,2)*pow(this->Tcrit(),2.5)/(this->pcrit()); +} + + + +// Faktor b of the redlich Kwong equation of state +//(molar values) +inline scalar redlichKwong::b() const +{ +return 0.08664*this->RR*this->Tcrit()/this->pcrit(); +} + + + +//* * * * * * * * * * * * * Derivatives * * * * * * * * * * * // + + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar redlichKwong::dpdv(const scalar rho, const scalar T) const +{ + return (this->a()*(pow(this->b(),3)-3*this->b()*pow((this->W()/rho),2)+2*pow((this->W()/rho),3))-this->RR*pow(T,1.5)*pow((this->W()/rho),2) *(pow(this->b(),2)+2*this->b()*(this->W()/rho)+pow((this->W()/rho),2))) / ( sqrt(T) * pow((this->W()/rho),2) * pow((this->b()+(this->W()/rho)),2) *pow( (this->b()-(this->W()/rho)),2) ); +} + + + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar redlichKwong::dpdT(const scalar rho, const scalar T) const +{ +return 0.5*this->a()/(pow(T,1.5)*(this->W()/rho)*(this->b()+(this->W()/rho)))-this->RR/(this->b()-(this->W()/rho)); +} + + + + +//Real deviative dv/dT at constant pressure +//using implicit differentiation +//(molar values) +inline scalar redlichKwong::dvdT(const scalar rho,const scalar T) const +{ +return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); +} + + + + +//Real deviative dv/dp at constant temperature +//(molar values) +inline scalar redlichKwong::dvdp(const scalar rho,const scalar T) const +{ +return 1/this->dpdv(rho,T); +} + + + + + +//needed to calculate the internal energy +//(molar values) +inline scalar redlichKwong::integral_p_dv(const scalar rho,const scalar T) const +{ +return this->RR*T*log((this->W()/rho)-this->b())+(this->a()*log(this->b()+(this->W()/rho)))/(this->b()*sqrt(T))-(this->a()*log(this->W()/rho))/(this->b()*sqrt(T)); +} + + + +//needed to calculate the entropy +//(molar values) +inline scalar redlichKwong::integral_dpdT_dv(const scalar rho,const scalar T) const +{ +return this->RR*log((this->W()/rho)-this->b()) +-(this->a()*log(this->b()+(this->W()/rho)))/(2*this->b()* pow(T,1.5) ) ++(this->a()*log(this->W()/rho))/(2*this->b()* pow(T,1.5)); +} + + + + +//* * * * * * * * * * * * * second order Derivative based functions * * * * * * * * * * * // + + + +//(molar values) +inline scalar redlichKwong::d2pdT2(const scalar rho,const scalar T) const +{ +return -0.75*this->a()/( pow(T,2.5)*(this->W()/rho)*(this->b()+(this->W()/rho))); +} + + + + +//(molar values) +inline scalar redlichKwong::d2pdv2(const scalar rho,const scalar T) const +{ +return +( +2*(this->a()*(pow(this->b(),5)-3*pow(this->b(),3)*pow((this->W()/rho),2)-pow(this->b(),2)*pow((this->W()/rho),3)+6*this->b()*pow((this->W()/rho),4)-3*pow((this->W()/rho),5))+this->RR*pow(T,1.5)*pow((this->W()/rho),3) +*(pow(this->b(),3)+3*pow(this->b(),2)*(this->W()/rho)+3*this->b()*pow((this->W()/rho),2)+pow((this->W()/rho),3)))/( sqrt(T)* pow((this->W()/rho),3) *pow( (this->b()+(this->W()/rho)) ,3)* pow((this->W()/rho)-this->b(),3))); +} + + + + +//(molar values) +//using second Order implicit differentiation +inline scalar redlichKwong::d2vdT2(const scalar rho, const scalar T) const +{ +return -(pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T)+ pow(this->dpdv(rho,T),2) *this->d2pdT2(rho,T)- 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T))/( pow(this->dpdv(rho,T),3)); +} + + + + +//(molar values) +inline scalar redlichKwong::d2pdvdT(const scalar rho, const scalar T) const +{ +return -(0.5*(this->a()*( pow(this->b(),3)-3*this->b()* pow((this->W()/rho),2) +2* pow((this->W()/rho),3) )+2*this->RR*pow(T,1.5)* pow((this->W()/rho),2)*( pow(this->b(),2) + 2*this->b()*(this->W()/rho)+ pow((this->W()/rho),2) )))/( pow(T,1.5)* pow((this->W()/rho),2)*pow(this->b()+(this->W()/rho),2)*pow(this->b()-(this->W()/rho),2)); +} + + + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar redlichKwong::integral_d2pdT2_dv(const scalar rho,const scalar T) const +{ +return 0.75*this->a()*log(this->b() + (this->W()/rho))/(pow(T,2.5)*this->b()) - 0.75*this->a()*log((this->W()/rho))/(pow(T,2.5)*this->b()); +} + + + + + +//* * * * * * * * * * * * * thermodynamic properties * * * * * * * * * * * // + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar redlichKwong::isobarExpCoef(const scalar rho,const scalar T) const +{ + return this->dvdT(rho, T)*rho/this->W(); +} + +//isothemal compressiblity kappa +//(molar values) +inline scalar redlichKwong::isothermalCompressiblity(const scalar rho,const scalar T) const +{ +return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); +//also possible : return -this->dvdp(rho,T)*rho/this->W(); +} + + + + + + + + + + +// Construct from components + +inline redlichKwong::redlichKwong +( + const specie& sp, + scalar pcrit, + scalar Tcrit, + scalar azentricFactor +) +: + specie(sp), + pcrit_(pcrit), + Tcrit_(Tcrit), + azentricFactor_(azentricFactor) +{ + rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); // Starting GUESS for the density by ideal gas law + +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct as named copy +// Starting GUESS for the density by ideal gas law +inline redlichKwong::redlichKwong(const word& name, redlichKwong& pg) +: + specie(name, pg), + pcrit_(pg.pcrit_), + Tcrit_(pg.Tcrit_), + azentricFactor_(pg.azentricFactor_) +{ + pg.rhostd_=this->rho(Pstd,Tstd, (Pstd*this->W()/(Tstd*this->R()))); // Starting GUESS for the density by ideal gas law +} + + +// Construct and return a clone +inline autoPtr redlichKwong::clone() const +{ + return autoPtr(new redlichKwong(*this)); +} + + +// Selector from Istream +inline autoPtr redlichKwong::New(Istream& is) +{ + return autoPtr(new redlichKwong(is)); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +//- Return density [kg/m^3]on +inline scalar redlichKwong::rho(const scalar p,const scalar T,const scalar rho0) const +{ + + scalar molarVolumePrevIteration; + scalar molarVolume; + int iter=0; + int maxIter_=400; + scalar tol_=1e-8; + int i; + scalar rho1=rhoMax_, rho2=rhoMin_,rho3, f1,f2,f3; + +molarVolume=this->W()/rho0; + + do + { + molarVolumePrevIteration= molarVolume; + + + i=0; + do + { + molarVolume=molarVolumePrevIteration-((this->pReturn((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ + molarVolumePrevIteration),T)))/(pow(2,i)); + + i++; + if(i>8) + { + //using bisection methode as backup, solution must be between rho=0.001 to rho=1500; + for(i=0;i<200;i++) + { + f1= (this->pReturn(rho1,T)-p); + f2= (this->pReturn(rho2,T)-p); + rho3=(rho1+rho2)/2; + f3=(this->pReturn(rho3,T)-p); + + if ((f2<0 && f3>0)||(f2>0 &&f3<0)) + { + rho1=rho3; + } + else if ((f1<0 && f3>0)||(f1>0 &&f3<0)) + { + rho2=rho3; + } + + else + { + rho2=(rho2+rho3)/2; + } + + if(mag(f3)W()/rho3; + molarVolumePrevIteration=this->W()/rho3; + break; + } + + else + { + molarVolumePrevIteration=this->W()/rho3; + } + } + } + } + while(mag(this->pReturn((this->W()/molarVolume),T)-p)>mag(this->pReturn((this->W()/molarVolumePrevIteration),T)-p)); + + + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "inline scalar redlichKwong::rho(const scalar p,const scalar T,const scalar rho0) const " + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } + + } + while(mag(molarVolumePrevIteration-molarVolume)>tol_*(this->W()/rho0)); + + return this->W()/molarVolume; + +} + +//- Return density [kg/m^3]on +inline scalar redlichKwong::rho(const scalar p,const scalar T) const +{ + + scalar rho0=p/(this->R()*T); //using perfect gas equation as starting point + return rho(p,T,rho0); +} + +//- Return compressibility drho/dp [s^2/m^2] +inline scalar redlichKwong::psi(const scalar rho, const scalar T) const +{ + return -this->dvdp(rho,T)*pow(rho,2)/this->W(); +} + +//- Return compression factor [] +inline scalar redlichKwong::Z( const scalar p, const scalar T,const scalar rho0) const +{ + return (p*this->rho(p,T,rho0))/(this->R()*T); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +inline void redlichKwong::operator+=(const redlichKwong& pg) +{ + specie::operator+=(pg); +} + + inline void redlichKwong::operator-=(const redlichKwong& pg) +{ + specie::operator-=(pg); +} + +inline void redlichKwong::operator*=(const scalar s) +{ + specie::operator*=(s); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // +//****************not working**************//// +/* +inline redlichKwong operator+ +( + const redlichKwong& pg1, + const redlichKwong& pg2 +) +{ + return redlichKwong + ( + static_cast(pg1) + + static_cast(pg2) + ); +} + + +inline redlichKwong operator- +( + const redlichKwong& pg1, + const redlichKwong& pg2 +) +{ + return redlichKwong + ( + static_cast(pg1) + - static_cast(pg2) + ); +} + + +inline redlichKwong operator* +( + const scalar s, + const redlichKwong& pg +) +{ + return redlichKwong(s*static_cast(pg)); +} + + +inline redlichKwong operator== +( + const redlichKwong& pg1, + const redlichKwong& pg2 +) +{ + return pg2 - pg1; +} + +*/ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C new file mode 100755 index 000000000..182bfaf86 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C @@ -0,0 +1,76 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + Soave Redlich Kwong equation of state. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "soaveRedlichKwong.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +soaveRedlichKwong::soaveRedlichKwong(Istream& is) +: + specie(is), + pcrit_(readScalar(is)), + Tcrit_(readScalar(is)), + azentricFactor_(readScalar(is)) +{ + is.check("soaveRedlichKwong::soaveRedlichKwong(Istream& is)"); + rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); + rhoMax_=1500; + rhoMin_=0.001; +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Ostream& operator<<(Ostream& os, const soaveRedlichKwong& pg) +{ + os << static_cast(pg)<< tab + << pg.pcrit_ << tab<< pg.Tcrit_< clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + //Member Variabels + scalar pcrit_; + scalar Tcrit_; + scalar rhostd_; + scalar azentricFactor_; + scalar rhoMax_; //should be read from the fvSolution file where rhoMax and rhoMin values must be define ( for rhoSimpleFoam) + scalar rhoMin_; + + + // Member functions + inline scalar pcrit() const; + inline scalar Tcrit() const; + inline scalar azentricFactor() const; + inline scalar rhostd()const; + inline scalar pReturn(const scalar rho, const scalar T) const; + + //-Redlich Kwong factors + inline scalar a() const; + inline scalar b() const; + inline scalar n() const; + + //derivatives + inline scalar dpdv(const scalar rho,const scalar T) const; + inline scalar dpdT(const scalar rho, const scalar T) const; + inline scalar dvdT(const scalar rho,const scalar T) const; + inline scalar dvdp(const scalar rho, const scalar T) const; + inline scalar isobarExpCoef(const scalar rho,const scalar T) const; + inline scalar isothermalCompressiblity(const scalar rho,const scalar T) const; + inline scalar integral_d2pdT2_dv(const scalar rho,const scalar T) const ; // Used for cv + inline scalar d2pdv2(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar d2pdT2(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar d2pdvdT(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar d2vdT2(const scalar rho,const scalar T) const; // not Used At The Moment + inline scalar integral_p_dv(const scalar rho,const scalar T) const; //Used for internal Energy + inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; //Used for Entropy + + //- Return density [kg/m^3] // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho(const scalar p,const scalar T,const scalar rho0) const; + inline scalar rho(const scalar p,const scalar T) const; + //- Return compressibility rho/p [s^2/m^2] + inline scalar psi(const scalar rho, const scalar T) const; + + //- Return compression factor [] + inline scalar Z(const scalar p,const scalar T,const scalar rho0) const; + + + // Member operators + + inline void operator+=(const soaveRedlichKwong&); + inline void operator-=(const soaveRedlichKwong&); + + inline void operator*=(const scalar); + + + /* // Friend operators + + inline friend soaveRedlichKwong operator+ + ( + const soaveRedlichKwong&, + const soaveRedlichKwong& + ); + + inline friend soaveRedlichKwong operator- + ( + const soaveRedlichKwong&, + const soaveRedlichKwong& + ); + + inline friend soaveRedlichKwong operator* + ( + const scalar s, + const soaveRedlichKwong& + ); + + inline friend soaveRedlichKwong operator== + ( + const soaveRedlichKwong&, + const soaveRedlichKwong& + ); +*/ + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const soaveRedlichKwong&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "soaveRedlichKwongI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H new file mode 100755 index 000000000..0cd134f43 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H @@ -0,0 +1,488 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#include "soaveRedlichKwong.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + + + + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +inline scalar soaveRedlichKwong::pcrit()const +{ +return pcrit_; +} + + + +inline scalar soaveRedlichKwong::Tcrit()const +{ +return Tcrit_; +} + + +inline scalar soaveRedlichKwong::rhostd()const +{ +return rhostd_; +} + + +// Returns the Azentric Factor (Acentric Factor) +inline scalar soaveRedlichKwong::azentricFactor() const +{ +return azentricFactor_; +} + +//returns the pressure for a given density and temperature +inline scalar soaveRedlichKwong::pReturn(const scalar rho,const scalar T) const +{ +return (this->RR*T/((this->W()/rho)-this->b())-this->a()*pow((1+this->n()*(1-pow((T/this->Tcrit()),0.5))),2)/((this->W()/rho)*((this->W()/rho)+this->b()))); +} + + + +// Faktor a of the soave redlich Kwong equation of state +//(molar values) +inline scalar soaveRedlichKwong::a() const +{ +return 0.42747*pow(this->RR,2)*pow(this->Tcrit(),2)/(this->pcrit()); +} + + + +// Faktor b of the soave redlich Kwong equation of state +//(molar values) +inline scalar soaveRedlichKwong::b() const +{ +return 0.08664*this->RR*this->Tcrit()/this->pcrit(); +} + +// Faktor n of the soave redlich Kwong equation of state +//(molar values) +inline scalar soaveRedlichKwong::n() const +{ +return 0.48508+1.55171*this->azentricFactor()-0.15613*pow(this->azentricFactor(),2); +} + + +//* * * * * * * * * * * * * Derivatives * * * * * * * * * * * // + + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar soaveRedlichKwong::dpdv(const scalar rho, const scalar T) const +{ + return -(2*this->a()*this->n()*this->Tcrit()*(this->b()-(this->W()/rho))*(pow(this->b(),2)+this->b()*(this->W()/rho)-2*pow((this->W()/rho),2))*(this->n()+1)*pow((T/this->Tcrit()),0.5)+this->Tcrit()*(this->RR*T*pow((this->W()/rho),2)*(pow(this->b(),2)+2*this->b()*(this->W()/rho)+pow((this->W()/rho),2))-this->a()*(pow(this->b(),3)-3*this->b()*pow((this->W()/rho),2)+2*pow((this->W()/rho),3))*pow((this->n()+1),2))-this->a()*pow(this->n(),2)*T*(pow(this->b(),3)-3*this->b()*pow((this->W()/rho),2)+2*pow((this->W()/rho),3)))/(pow((this->W()/rho),2)*this->Tcrit()*pow((this->b()+(this->W()/rho)),2)*pow((this->b()-(this->W()/rho)),2)); +} + + + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar soaveRedlichKwong::dpdT(const scalar rho, const scalar T) const +{ +return this->a()*this->n()*(this->n()+1)*pow((T/this->Tcrit()),0.5)/(T*(this->W()/rho)*(this->b()+(this->W()/rho)))-this->a()*pow(this->n(),2)/((this->W()/rho)*this->Tcrit()*(this->b()+(this->W()/rho)))-this->RR/(this->b()-(this->W()/rho)); +} + + + + +//Real deviative dv/dT at constant pressure +//using implicit differentiation +// (molar values) +inline scalar soaveRedlichKwong::dvdT(const scalar rho,const scalar T) const +{ +return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); +} + + + + +//Real deviative dv/dp at constant temperature +//(molar values) +inline scalar soaveRedlichKwong::dvdp(const scalar rho,const scalar T) const +{ +return 1/this->dpdv(rho,T); +} + + + +//needed to calculate the internal energy +//(molar values) +inline scalar soaveRedlichKwong::integral_p_dv(const scalar rho,const scalar T) const +{ +return this->RR*T*log((this->W()/rho)-this->b()) +-(this->a()*(2*this->n()*this->Tcrit()*(this->n()+1)*pow(T/this->Tcrit(),0.5)-this->Tcrit()*(pow(this->n(),2)+2*this->n()+1)-pow(this->n(),2)*T)*log(this->b()+(this->W()/rho)))/(this->b()*this->Tcrit()) ++this->a()*(2*this->n()*this->Tcrit()*(this->n()+1)*pow(T/this->Tcrit(),0.5)-this->Tcrit()*(pow(this->n(),2)+2*this->n()+1)-pow(this->n(),2)*T)*log((this->W()/rho))/(this->b()*this->Tcrit()); +} + + + +//needed to calculate the entropy +//(molar values) +inline scalar soaveRedlichKwong::integral_dpdT_dv(const scalar rho,const scalar T) const +{ +return this->RR*log((this->W()/rho)-this->b())+(pow(this->n(),2)*this->a()/(this->b()*this->Tcrit())-this->a()*this->n()*(this->n()+1)*pow((T/this->Tcrit()),0.5)/(this->b()*T))*log(this->b()+(this->W()/rho))+(this->a()*this->n()*(this->n()+1)*pow((T/this->Tcrit()),0.5)/(this->b()*T)-this->a()*pow(this->n(),2)/(this->b()*this->Tcrit()))*log((this->W()/rho)); +} + + + + +//* * * * * * * * * * * * * second order Derivative based functions * * * * * * * * * * * // + + + +//(molar values) +inline scalar soaveRedlichKwong::d2pdT2(const scalar rho,const scalar T) const +{ +return -this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5)/(2*pow(T,2)*(this->W()/rho)*(this->b()+(this->W()/rho))); +} + + + + +//(molar values) +inline scalar soaveRedlichKwong::d2pdv2(const scalar rho,const scalar T) const +{ + return 2*(2*this->a()*this->n()*this->Tcrit()*(this->b()-(this->W()/rho)) + *(pow(this->b(),4)+pow(this->b(),3)*(this->W()/rho)-2*pow(this->b(),2)*pow((this->W()/rho),2) + -3*this->b()*pow((this->W()/rho),3)+3*pow((this->W()/rho),4))*(this->n()+1)*pow(T/this->Tcrit(),0.5) + -this->Tcrit()*(this->a()*(pow(this->b(),5)-3*pow(this->b(),3)*pow((this->W()/rho),2)-pow(this->b(),2)*pow((this->W()/rho),3) + +6*this->b()*pow((this->W()/rho),4)-3*pow((this->W()/rho),5))*pow((this->n()+1),2) + +this->RR*T*pow((this->W()/rho),3)*(pow(this->b(),3)+3*pow(this->b(),2)*(this->W()/rho)+3*this->b()*pow((this->W()/rho),2)+pow((this->W()/rho),3))) + -this->a()*pow(this->n(),2)*T*(pow(this->b(),5)-3*pow(this->b(),3)*pow((this->W()/rho),2)-pow(this->b(),2)*pow((this->W()/rho),3) + +6*this->b()*pow((this->W()/rho),4)-3*pow((this->W()/rho),5))) + /(pow((this->W()/rho),3)*this->Tcrit()*pow(((this->W()/rho)+this->b()),3)*pow((this->b()-(this->W()/rho)),3)); +} + + + + +//(molar values) +// using second Order implicit differentiation +inline scalar soaveRedlichKwong::d2vdT2(const scalar rho, const scalar T) const +{ +return -(pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T)+ pow(this->dpdv(rho,T),2) *this->d2pdT2(rho,T)- 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T))/( pow(this->dpdv(rho,T),3)); +} + + + + +//(molar values) +inline scalar soaveRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const +{ +return -this->a()*this->n()*(this->b()+2*(this->W()/rho))*(this->n()+1)*pow(T/this->Tcrit(),0.5) +/(T*pow((this->W()/rho),2)*pow((this->b()+(this->W()/rho)),2)) +-(this->RR*pow((this->W()/rho),2)*this->Tcrit()*(pow(this->b(),2)+2*this->b()*(this->W()/rho)+pow((this->W()/rho),2)) + -this->a()*pow(this->n(),2)*(pow(this->b(),3)-3*this->b()*pow((this->W()/rho),2)+2*pow((this->W()/rho),3))) + /(pow((this->W()/rho),2)*this->Tcrit()*pow((this->b()+(this->W()/rho)),2)*pow((this->b()-(this->W()/rho)),2)); +} + + + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar soaveRedlichKwong::integral_d2pdT2_dv(const scalar rho,const scalar T) const +{ +return this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5)*log(this->b()+(this->W()/rho)) +/(2*this->b()*pow(T,2)) +-this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5)*log((this->W()/rho))/(2*this->b()*pow(T,2)); +} + + + + + +//* * * * * * * * * * * * * thermodynamic properties * * * * * * * * * * * // + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar soaveRedlichKwong::isobarExpCoef(const scalar rho,const scalar T) const +{ +return this->dvdT(rho, T)*rho/this->W(); +} + +//isothemal compressiblity kappa +//(molar values) +inline scalar soaveRedlichKwong::isothermalCompressiblity(const scalar rho,const scalar T) const +{ +return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); +} + + + + + + + + + + +// Construct from components +inline soaveRedlichKwong::soaveRedlichKwong +( + const specie& sp, + scalar pcrit, + scalar Tcrit, + scalar azentricFactor + +) +: + specie(sp), + pcrit_(pcrit), + Tcrit_(Tcrit), + azentricFactor_(azentricFactor) +{ + rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct as named copy +inline soaveRedlichKwong::soaveRedlichKwong(const word& name, soaveRedlichKwong& pg) +: + specie(name, pg), + pcrit_(pg.pcrit_), + Tcrit_(pg.Tcrit_), + azentricFactor_(pg.azentricFactor_) +{ + pg.rhostd_=this->rho(Pstd,Tstd, (Pstd*this->W()/(Tstd*this->R()))); +} + + +// Construct and return a clone +inline autoPtr soaveRedlichKwong::clone() const +{ + return autoPtr(new soaveRedlichKwong(*this)); +} + + +// Selector from Istream +inline autoPtr soaveRedlichKwong::New(Istream& is) +{ + return autoPtr(new soaveRedlichKwong(is)); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +//- Return density [kg/m^3]on +inline scalar soaveRedlichKwong::rho(const scalar p,const scalar T,const scalar rho0) const +{ + + scalar molarVolumePrevIteration; + scalar molarVolume; + int iter=0; + int maxIter_=400; + scalar tol_=1e-8; + int i; + scalar rho1=rhoMax_, rho2=rhoMin_,rho3, f1,f2,f3; + +molarVolume=this->W()/rho0; + + do + { + molarVolumePrevIteration= molarVolume; + + + i=0; + do + { + molarVolume=molarVolumePrevIteration-((this->pReturn((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ + molarVolumePrevIteration),T)))/(pow(2,i)); + + i++; + if(i>8) + { + //using bisection methode as backup, solution must be between rho=0.001 to rho=1500; + for(i=0;i<200;i++) + { + f1= (this->pReturn(rho1,T)-p); + f2= (this->pReturn(rho2,T)-p); + rho3=(rho1+rho2)/2; + f3=(this->pReturn(rho3,T)-p); + + if ((f2<0 && f3>0)||(f2>0 &&f3<0)) + { + rho1=rho3; + } + else if ((f1<0 && f3>0)||(f1>0 &&f3<0)) + { + rho2=rho3; + } + + else + { + rho2=(rho2+rho3)/2; + } + + if(mag(f3)W()/rho3; + molarVolumePrevIteration=this->W()/rho3; + break; + } + + else + { + molarVolumePrevIteration=this->W()/rho3; + } + } + } + } + while(mag(this->pReturn((this->W()/molarVolume),T)-p)>mag(this->pReturn((this->W()/molarVolumePrevIteration),T)-p)); + + + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "inline scalar soaveRedlichKwong::rho(const scalar p,const scalar T,const scalar rho0) const " + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } + + } + while(mag(molarVolumePrevIteration-molarVolume)>tol_*(this->W()/rho0)); + + return this->W()/molarVolume; + +} + +//- Return density [kg/m^3]on +inline scalar soaveRedlichKwong::rho(const scalar p,const scalar T) const +{ + + scalar rho0=p/(this->R()*T); //using perfect gas equation as starting point + return rho(p,T,rho0); +} + +//- Return compressibility drho/dp [s^2/m^2] +inline scalar soaveRedlichKwong::psi(const scalar rho, const scalar T) const +{ + return -this->dvdp(rho,T)*pow(rho,2)/this->W(); +} + +//- Return compression factor [] +inline scalar soaveRedlichKwong::Z( const scalar p, const scalar T,const scalar rho0) const +{ + return (p*this->rho(p,T,rho0))/(this->R()*T); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +inline void soaveRedlichKwong::operator+=(const soaveRedlichKwong& pg) +{ + specie::operator+=(pg); +} + + inline void soaveRedlichKwong::operator-=(const soaveRedlichKwong& pg) +{ + specie::operator-=(pg); +} + +inline void soaveRedlichKwong::operator*=(const scalar s) +{ + specie::operator*=(s); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // +//**************** not working**************// +/* +inline soaveRedlichKwong operator+ +( + const soaveRedlichKwong& pg1, + const soaveRedlichKwong& pg2 +) +{ + return soaveRedlichKwong + ( + static_cast(pg1) + + static_cast(pg2) + ); +} + + +inline soaveRedlichKwong operator- +( + const soaveRedlichKwong& pg1, + const soaveRedlichKwong& pg2 +) +{ + return soaveRedlichKwong + ( + static_cast(pg1) + - static_cast(pg2) + ); +} + + +inline soaveRedlichKwong operator* +( + const scalar s, + const soaveRedlichKwong& pg +) +{ + return soaveRedlichKwong(s*static_cast(pg)); +} + + +inline soaveRedlichKwong operator== +( + const soaveRedlichKwong& pg1, + const soaveRedlichKwong& pg2 +) +{ + return pg2 - pg1; +} + +*/ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C new file mode 100755 index 000000000..0d7ada3d1 --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C @@ -0,0 +1,73 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#include "nasaHeatCapacityPolynomial.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Istream& is) +: + equationOfState(is), + a1_(readScalar(is)), + a2_(readScalar(is)), + a3_(readScalar(is)), + a4_(readScalar(is)), + a5_(readScalar(is)), + a6_(readScalar(is)), + a7_(readScalar(is)) +{ + is.check("nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Istream& is)"); + cp_std=this->cp_nonLimited(this->rhostd_,this->Tstd); // cp @ STD (needed to limit cp for stability +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +template +Foam::Ostream& Foam::operator<< +( + Ostream& os, + const nasaHeatCapacityPolynomial& ct +) +{ + os << static_cast(ct) << tab + << ct.a1_ << tab<< ct.a2_ << tab << ct.a3_ << tab << ct.a4_ << tab << ct.a5_ << tab << ct.a6_ << tab << ct.a7_ ; + cout<<"nasa polynomal start"< freely available for many fluids + --> paper title: NASA Glenn Coefficients for Calculating Thermodynamic Properties of Individual Species + + templated into the equationOfState + -> uses the equation of state to calculate all real Gas properties like Enthalpy, Entropy ... + -> can not be used with the perfectGas equation of state + + Equations for the real gas correction: Have a look at thermodnamics books e.g. Thermodynamics: An Engineering Approch, 5 Edition, Chapter 12 + +SourceFiles + nasaHeatCapacityPolynomialI.H + nasaHeatCapacityPolynomial.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef nasaHeatCapacityPolynomial_H +#define nasaHeatCapacityPolynomial_H + + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of friend functions and operators + +template class nasaHeatCapacityPolynomial; + +template +inline nasaHeatCapacityPolynomial operator+ +( + const nasaHeatCapacityPolynomial&, + const nasaHeatCapacityPolynomial& +); + +template +inline nasaHeatCapacityPolynomial operator- +( + const nasaHeatCapacityPolynomial&, + const nasaHeatCapacityPolynomial& +); + +template +inline nasaHeatCapacityPolynomial operator* +( + const scalar, + const nasaHeatCapacityPolynomial& +); + +template +inline nasaHeatCapacityPolynomial operator== +( + const nasaHeatCapacityPolynomial&, + const nasaHeatCapacityPolynomial& +); + +template +Ostream& operator<< +( + Ostream&, + const nasaHeatCapacityPolynomial& +); + + +/*---------------------------------------------------------------------------*\ + Class nasaHeatCapacityPolynomial Thermo Declaration +\*---------------------------------------------------------------------------*/ + +template +class nasaHeatCapacityPolynomial +: + public equationOfState +{ + // Private data + + scalar a1_; + scalar a2_; + scalar a3_; + scalar a4_; + scalar a5_; + scalar a6_; + scalar a7_; + scalar cp_std; + + // Private member functions + + //- Construct from components + inline nasaHeatCapacityPolynomial + ( + const equationOfState& st, + const scalar a1, + const scalar a2, + const scalar a3, + const scalar a4, + const scalar a5, + const scalar a6, + const scalar a7 + ); + + +public: + +//Variable + + + // Constructors + + //- Construct from Istream + nasaHeatCapacityPolynomial(Istream&); + + //- Construct as named copy + inline nasaHeatCapacityPolynomial(const word&, const nasaHeatCapacityPolynomial&); + + //- Construct and return a clone + inline autoPtr clone() const; + + //- Selector from Istream + inline static autoPtr New(Istream& is); + + + // Member Functions + + //useful functions + //used to calculate the internal energy + //ideal Gas Enthalpy + inline scalar h0(const scalar T) const; + + + // used to calculate the entropy + //ideal Gas Entropy + inline scalar s0(const scalar T) const; + + + //used to calculate the internal energy + //ideal Gas Enthalpy + inline scalar e0(const scalar T) const; + + // Fundamental properties + + //- ideal gas Heat capacity at constant pressure [J/(kmol K)] + inline scalar cv0(const scalar T) const; + + //- ideal gas Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp0(const scalar T) const; + + //- Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp(const scalar rho, const scalar T) const; + + //- Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp_nonLimited(const scalar rho, const scalar T) const; + + //- Heat capacity at constant pressure [J/(kmol K)] + inline scalar cv(const scalar rho, const scalar T) const; + + //- Enthalpy [J/kmol] + inline scalar h(const scalar rho, const scalar T) const; + + //- Entropy [J/(kmol K)] + inline scalar s(const scalar rho,const scalar T) const; + + //- Internal Energy [J/kmol] + inline scalar e(const scalar rho, const scalar T) const; + + + // Member operators + + inline void operator+=(const nasaHeatCapacityPolynomial&); + inline void operator-=(const nasaHeatCapacityPolynomial&); + + + // Friend operators + + friend nasaHeatCapacityPolynomial operator+ + ( + const nasaHeatCapacityPolynomial&, + const nasaHeatCapacityPolynomial& + ); + + friend nasaHeatCapacityPolynomial operator- + ( + const nasaHeatCapacityPolynomial&, + const nasaHeatCapacityPolynomial& + ); + + friend nasaHeatCapacityPolynomial operator* + ( + const scalar, + const nasaHeatCapacityPolynomial& + ); + + friend nasaHeatCapacityPolynomial operator== + ( + const nasaHeatCapacityPolynomial&, + const nasaHeatCapacityPolynomial& + ); + + + // IOstream Operators + + friend Ostream& operator<< + ( + Ostream&, + const nasaHeatCapacityPolynomial& + ); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "nasaHeatCapacityPolynomialI.H" + +#ifdef NoRepository +# include "nasaHeatCapacityPolynomial.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H new file mode 100755 index 000000000..76ddafe9b --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H @@ -0,0 +1,419 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + + + + +template +inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial +( + const equationOfState& st, + const scalar a1, + const scalar a2, + const scalar a3, + const scalar a4, + const scalar a5, + const scalar a6, + const scalar a7 +) +: + equationOfState(st), + a1_(a1), + a2_(a2), + a3_(a3), + a4_(a4), + a5_(a5), + a6_(a6), + a7_(a7) +{ +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial +( + const word& name, + const nasaHeatCapacityPolynomial& ct +) +: + equationOfState(name, ct), + a1_(ct.a1_), + a2_(ct.a2_), + a3_(ct.a3_), + a4_(ct.a4_), + a5_(ct.a5_), + a6_(ct.a6_), + a7_(ct.a7_) +{ +} + + +template +inline Foam::autoPtr > +Foam::nasaHeatCapacityPolynomial::clone() const +{ + return autoPtr > + ( + new nasaHeatCapacityPolynomial(*this) + ); +} + + +template +inline Foam::autoPtr > +Foam::nasaHeatCapacityPolynomial::New(Istream& is) +{ + return autoPtr > + ( + new nasaHeatCapacityPolynomial(is) + ); +} + + + + + + + // * * * * * * * * * * * * * * *useful functions* * * * * * * * * * * * * // + +//used to calculate the internal energy +//perfect gas enthalpy +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h0 +( + const scalar T +) const +{ +return this->RR*T*(-this->a1_*pow(T,-2)+this->a2_*log(T)/T+this->a3_+0.5*this->a4_*T+(this->a5_*pow(T,2))/3+(this->a6_*pow(T,3))/4+(this->a7_*pow(T,4))/5); +} + + +//used to calculate the internal energy +//perfect gas internal energy +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e0 +( + const scalar T +) const +{ +return this->h0(T) - this->RR*T; +} + +// used to calculate the entropy +// perfect gas entropy +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s0 +( + const scalar T +) const +{ +return this->RR*( this->a1_*(-1)/(2*pow(T,2))-this->a2_/T+this->a3_*log(T)+this->a4_*T+(this->a5_*pow(T,2))/2+(this->a6_*pow(T,3))/3+(this->a7_*pow(T,4))/4); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +//perfect gas cp +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp0 +( + const scalar T +) const +{ + + return this->RR*(this->a1_*1/pow(T,2)+this->a2_*1/T+this->a3_+this->a4_*T+this->a5_*pow(T,2)+this->a6_*pow(T,3)+this->a7_*pow(T,4)); +} + + +//perfect gas cv +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cv0 +( + const scalar T +) const +{ + + return this->cp0(T)-this->RR; +} + + + +//function to calculate real gas cp +//using cp=cv+(dp/dT)^2/(dp/dv) +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp +( + const scalar rho, + const scalar T +) const +{ +// Problem --> dpdv(rho,T) is =0 at some points within the vapour dome. To increase stability, (dp/dv) has to be limited +// cp can be negative within the vapor dome. To avoid this nonphysical result, the absolute value is used. +// within the vapourdome and at the critical point, cp increases to very high values --> infinity, +// this would decrease the stability, so cp will be limited to 20 time the cp @ STD + return min(cp_std*20,fabs(this->cv(rho,T)-T*pow((this->dpdT(rho, T)),2)/min(this->dpdv(rho, T),-1))); +} + +// this function is needed to get cp @ STD (without the limit imposed in the function above), which in turn is needed to limit the cp in the function above +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp_nonLimited +( + const scalar rho, + const scalar T +) const +{ + return fabs(this->cv(rho,T)-T*pow((this->dpdT(rho, T)),2)/min(this->dpdv(rho, T),-1)); +} + + +//function to calculate real gas cv +//cv=cv0+T*integral d2p/dT2 dv +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cv +( + const scalar rho, + const scalar T + +) const +{ + + return this->cv0(T)+T*this->integral_d2pdT2_dv(rho, T); +} + + + + +//function to calculate real gas enthalpy +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h +( + const scalar rho, + const scalar T +) const +{ + return this->e(rho,T)+this->pReturn(rho,T)/rho*this->W()-this->Pstd/this->rhostd()*this->W(); +} + + +// function to calculate real gas internal energy +// important assumption used is that the internal Energie is 0 at STD conditions. +// equation: du= cv0 dT +[T*dp/dT -p]dv +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e +( + const scalar rho, + const scalar T +) const +{ +return ( -this->Tstd*this->integral_dpdT_dv(this->rhostd(),this->Tstd) + +this->integral_p_dv(this->rhostd(),this->Tstd) + +this->e0(T)-this->e0(this->Tstd) + +T*this->integral_dpdT_dv(rho,T) + -this->integral_p_dv(rho,T) + ); + +} + + + +//function to calculate real gas entropy +// important assumption used is that the Entropy is 0 at STD conditions. +// equation: ds= cv0/T * dT + dp/dT *dv +// --> integral cv0/T dT = s0(T) -s0(Tstd) - R*ln(T/Tstd) --> due to s0(T)-s0(Tstd)=integral cp0/T dT +template +inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s +( + const scalar rho, + const scalar T + +) const +{ + return -this->integral_dpdT_dv(this->rhostd(),this->Tstd)+(this->s0(T)-this->s0(this->Tstd))-this->RR*log(T/this->Tstd)+ this->integral_dpdT_dv(rho,T); +} + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + + +template +inline void Foam::nasaHeatCapacityPolynomial::operator+= +( + const nasaHeatCapacityPolynomial& ct +) +{ + + scalar molr1 = this->nMoles(); + + equationOfState::operator+=(ct); + + molr1 /= this->nMoles(); + scalar molr2 = ct.nMoles()/this->nMoles(); + + a1_ = molr1*a1_ + molr2*ct.a1_; + a2_ = molr1*a2_ + molr2*ct.a2_; + a3_ = molr1*a3_ + molr2*ct.a3_; + a4_ = molr1*a4_ + molr2*ct.a4_; + a5_ = molr1*a5_ + molr2*ct.a5_; + a6_ = molr1*a6_ + molr2*ct.a6_; + a7_ = molr1*a7_ + molr2*ct.a7_; +} + + +template +inline void Foam::nasaHeatCapacityPolynomial::operator-= +( + const nasaHeatCapacityPolynomial& ct +) +{ + scalar molr1 = this->nMoles(); + + nasaHeatCapacityPolynomial::operator-=(ct); + + molr1 /= this->nMoles(); + scalar molr2 = ct.nMoles()/this->nMoles(); + + a1_ = molr1*a1_ - molr2*ct.a1_; + a2_ = molr1*a2_ - molr2*ct.a2_; + a3_ = molr1*a3_ - molr2*ct.a3_; + a4_ = molr1*a4_ - molr2*ct.a4_; + a5_ = molr1*a5_ - molr2*ct.a5_; + a6_ = molr1*a6_ - molr2*ct.a6_; + a7_ = molr1*a7_ - molr2*ct.a7_; +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +template +inline Foam::nasaHeatCapacityPolynomial Foam::operator+ +( + const nasaHeatCapacityPolynomial& ct1, + const nasaHeatCapacityPolynomial& ct2 +) +{ + equationOfState eofs + ( + static_cast(ct1) + + static_cast(ct2) + ); + + return nasaHeatCapacityPolynomial + ( + eofs, + ct1.nMoles()/eofs.nMoles()*ct1.a1_ + + ct2.nMoles()/eofs.nMoles()*ct2.a1_, + ct1.nMoles()/eofs.nMoles()*ct1.a2_ + + ct2.nMoles()/eofs.nMoles()*ct2.a2_, + ct1.nMoles()/eofs.nMoles()*ct1.a3_ + + ct2.nMoles()/eofs.nMoles()*ct2.a3_, + ct1.nMoles()/eofs.nMoles()*ct1.a4_ + + ct2.nMoles()/eofs.nMoles()*ct2.a4_, + ct1.nMoles()/eofs.nMoles()*ct1.a5_ + + ct2.nMoles()/eofs.nMoles()*ct2.a5_, + ct1.nMoles()/eofs.nMoles()*ct1.a6_ + + ct2.nMoles()/eofs.nMoles()*ct2.a6_, + ct1.nMoles()/eofs.nMoles()*ct1.a7_ + + ct2.nMoles()/eofs.nMoles()*ct2.a7_ + ); +} + + +template +inline Foam::nasaHeatCapacityPolynomial Foam::operator- +( + const nasaHeatCapacityPolynomial& ct1, + const nasaHeatCapacityPolynomial& ct2 +) +{ + equationOfState eofs + ( + static_cast(ct1) + - static_cast(ct2) + ); + + return nasaHeatCapacityPolynomial + ( + eofs, + ct1.nMoles()/eofs.nMoles()*ct1.a1_ + - ct2.nMoles()/eofs.nMoles()*ct2.a1_, + ct1.nMoles()/eofs.nMoles()*ct1.a2_ + - ct2.nMoles()/eofs.nMoles()*ct2.a2_, + ct1.nMoles()/eofs.nMoles()*ct1.a3_ + - ct2.nMoles()/eofs.nMoles()*ct2.a3_, + ct1.nMoles()/eofs.nMoles()*ct1.a4_ + - ct2.nMoles()/eofs.nMoles()*ct2.a4_, + ct1.nMoles()/eofs.nMoles()*ct1.a5_ + - ct2.nMoles()/eofs.nMoles()*ct2.a5_, + ct1.nMoles()/eofs.nMoles()*ct1.a6_ + - ct2.nMoles()/eofs.nMoles()*ct2.a6_, + ct1.nMoles()/eofs.nMoles()*ct1.a7_ + - ct2.nMoles()/eofs.nMoles()*ct2.a7_ + ); +} + + +template +inline Foam::nasaHeatCapacityPolynomial Foam::operator* +( + const scalar s, + const nasaHeatCapacityPolynomial& ct +) +{ + return nasaHeatCapacityPolynomial + ( + s*static_cast(ct), + ct.a1_, + ct.a2_, + ct.a3_, + ct.a4_, + ct.a5_, + ct.a6_, + ct.a7_ + ); +} + + +template +inline Foam::nasaHeatCapacityPolynomial Foam::operator== +( + const nasaHeatCapacityPolynomial& ct1, + const nasaHeatCapacityPolynomial& ct2 +) +{ + return ct2 - ct1; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.C b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.C new file mode 100755 index 000000000..c192584f8 --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.C @@ -0,0 +1,72 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + + +#include "realGasSpecieThermo.H" +#include "IOstreams.H" + +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ + +template +const Foam::scalar Foam::realGasSpecieThermo::tol_ = 1.0e-9; + +template +const int Foam::realGasSpecieThermo::maxIter_ = 500; + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::realGasSpecieThermo::realGasSpecieThermo(Istream& is) +: + thermo(is) +{ + is.check("realGasSpecieThermo::realGasSpecieThermo(Istream& is)"); + + +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +template +Foam::Ostream& Foam::operator<<(Ostream& os, const realGasSpecieThermo& st) +{ + os << static_cast(st); + + os.check("Ostream& operator<<(Ostream& os, const realGasSpecieThermo& st)"); + return os; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H new file mode 100755 index 000000000..cf8ced519 --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H @@ -0,0 +1,305 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::realGasSpecieThermo + +Description + + This is an subversion of the specieThermo function. While the "orginal" specieThermo function + is only valid for perfect Gases, this function is valid for real gases. + + Basic thermodynamics type based on the use of fitting functions for + cp, h, s obtained from the template argument type thermo. All other + properties are derived from these primitive functions. + + Some function copied from the "orginal" specieThermo! + +SourceFiles + realGasSpecieThermoI.H + realGasSpecieThermo.C + + + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#ifndef realGasSpecieThermo_H +#define realGasSpecieThermo_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of friend functions and operators + +template class realGasSpecieThermo; + +template +inline realGasSpecieThermo operator+ +( + const realGasSpecieThermo&, + const realGasSpecieThermo& +); + +template +inline realGasSpecieThermo operator- +( + const realGasSpecieThermo&, + const realGasSpecieThermo& +); + +template +inline realGasSpecieThermo operator* +( + const scalar, + const realGasSpecieThermo& +); + +template +inline realGasSpecieThermo operator== +( + const realGasSpecieThermo&, + const realGasSpecieThermo& +); + +template +Ostream& operator<< +( + Ostream&, + const realGasSpecieThermo& +); + + +/*---------------------------------------------------------------------------*\ + Class specieThermo Declaration +\*---------------------------------------------------------------------------*/ + +template +class realGasSpecieThermo +: + public thermo +{ + // Private data + + //- Convergence tolerance of energy -> temperature inversion functions + static const scalar tol_; + + //- Max number of iterations in energy->temperature inversion functions + static const int maxIter_; + + + // Private member functions + + // return the temperature corresponding to the value of the + // thermodynamic property f, given the function f = F(T) and dF(T)/dT + inline void T + ( + scalar f, + scalar &T0, + scalar p, + scalar &rho0, + scalar (realGasSpecieThermo::*F)(const scalar,const scalar) const, + scalar (realGasSpecieThermo::*dFdT)(const scalar,const scalar) const + ) const; + + + +public: + + + + // Constructors + + //- construct from components + inline realGasSpecieThermo(const thermo& sp); + + //- Construct from Istream + realGasSpecieThermo(Istream&); + + //- Construct as named copy + inline realGasSpecieThermo(const word& name, const realGasSpecieThermo&); + + + // Member Functions + + // Fundamaental properties + // (These functions must be provided in derived types) + + // Heat capacity at constant pressure [J/(kmol K)] + //scalar cp(const scalar) const; + + // Enthalpy [J/kmol] + //scalar h(const scalar) const; + + // Sensible enthalpy [J/kmol] + //virtual scalar hs(const scalar) const; + + // Chemical enthalpy [J/kmol] + //virtual scalar hc(const scalar) const; + + // Entropy [J/(kmol K)] + //virtual scalar s(const scalar) const; + + + // Calculate and return derived properties + // (These functions need not provided in derived types) + + // Mole specific properties + + //- Heat capacity at constant volume [J/(kmol K)] + //inline scalar cv(const scalar T, const scalar rho) const; + + //- gamma = cp/cv [] + //inline scalar gamma(const scalar T, const scalar rho) const; + + // Internal energy [J/kmol] + // inline scalar e(const scalar rho, const scalar T) const; + + //- Sensible internal energy [J/kmol] + // inline scalar es(const scalar p, const scalar rho) const; + + //- Gibbs free energy [J/kmol] + inline scalar g(const scalar rho, const scalar T ) const; + + //- Helmholtz free energy [J/kmol] + inline scalar a(const scalar rho, const scalar T ) const; + + + // Mass specific properties + + //- Heat capacity at constant pressure [J/(kg K)] + inline scalar Cp(const scalar rho, const scalar T) const; + + //- Heat capacity at constant volume [J/(kg K)] + inline scalar Cv(const scalar rho, const scalar T) const; + + //- Enthalpy [J/kg] + inline scalar H(const scalar rho, const scalar T) const; + + + + //- Sensible enthalpy [J/kg] + // inline scalar Hs(const scalar T) const; + + //- Chemical enthalpy [J/kg] + // inline scalar Hc() const; + + //- Entropy [J/(kg K)] + inline scalar S(const scalar rho, const scalar T) const; + + //- Internal energy [J/kg] + inline scalar E(const scalar rho, const scalar T) const; + + //- Gibbs free energy [J/kg] + inline scalar G(const scalar rho, const scalar T) const; + + //- Helmholtz free energy [J/kg] + inline scalar A(const scalar rho, const scalar T) const; + + + + + + + // Energy->temperature inversion functions + + //- Temperature from Enthalpy given an initial temperature T0 + inline void TH(const scalar H, scalar &T0,const scalar p, scalar &psi0) const; + + + + //- Temperature from internal energy given an initial temperature T0 + inline void TE(const scalar E, scalar &T0,const scalar p, scalar &psi0) const; + + + // Member operators + + inline void operator+=(const realGasSpecieThermo&); + inline void operator-=(const realGasSpecieThermo&); + + inline void operator*=(const scalar); + + + // Friend operators + + friend realGasSpecieThermo operator+ + ( + const realGasSpecieThermo&, + const realGasSpecieThermo& + ); + + friend realGasSpecieThermo operator- + ( + const realGasSpecieThermo&, + const realGasSpecieThermo& + ); + + friend realGasSpecieThermo operator* + ( + const scalar s, + const realGasSpecieThermo& + ); + + friend realGasSpecieThermo operator== + ( + const realGasSpecieThermo&, + const realGasSpecieThermo& + ); + + + // Ostream Operator + + friend Ostream& operator<< + ( + Ostream&, + const realGasSpecieThermo& + ); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "realGasSpecieThermoI.H" + +#ifdef NoRepository +# include "realGasSpecieThermo.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H new file mode 100755 index 000000000..83d612c72 --- /dev/null +++ b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H @@ -0,0 +1,298 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#include "realGasSpecieThermo.H" + +template +inline Foam::realGasSpecieThermo::realGasSpecieThermo +( + const thermo& sp +) +: + thermo(sp) +{} + + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + + +// using a stabilizing newton solver +template +inline void Foam::realGasSpecieThermo::T +( + scalar f, + scalar &T0, + scalar p, + scalar &rho0, + scalar (realGasSpecieThermo::*F)(const scalar,const scalar) const, + scalar (realGasSpecieThermo::*dFdT)(const scalar,const scalar) const +) const +{ + + + scalar Test = T0; + scalar Tnew = T0; + scalar rho=rho0; + scalar Ttol = T0*tol_; + int iter = 0; +int i; + + do + { + Test = Tnew; + + rho=this->rho(p,Test,rho); + + + i=0; +; + do + { + Tnew = Test - ((this->*F)(rho,Test) - f)/(this->*dFdT)(rho,Test)/(pow(2,i)); + i++; // if the solve is diverging, the time step is reduced until the solver converges + }while((i<20)&&((mag((this->*F)(rho,Tnew) - f) > mag((this->*F)(rho,Test) - f)))); + + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "realGasSpecieThermo::T(scalar f, scalar T0, " + "scalar (realGasSpecieThermo::*F)(const scalar) const, " + "scalar (realGasSpecieThermo::*dFdT)(const scalar) const" + ") const" + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } + + + } while (mag(mag(Tnew) - mag(Test)) > Ttol); + + rho0=rho; + T0=Tnew; +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +inline Foam::realGasSpecieThermo::realGasSpecieThermo +( + const word& name, + const realGasSpecieThermo& st +) +: + thermo(name, st) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + + + +template +inline Foam::scalar Foam::realGasSpecieThermo::g(const scalar rho, const scalar T ) const +{ + return this->h(rho, this->pReturn(rho,T)) - T*this->s(rho, this->pReturn(rho,T)); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::a(const scalar rho, const scalar T ) const +{ + return this->e(rho,this->pReturn(rho,T)) - T*this->s(rho,this->pReturn(rho,T)); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::Cp( const scalar rho, const scalar T) const +{ + return this->cp(rho, T)/this->W(); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::Cv( const scalar rho, const scalar T) const +{ + return this->cv(rho, T)/this->W(); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::H(const scalar rho, const scalar T) const +{ + return this->h(rho, T)/this->W(); +} + + + + + +template +inline Foam::scalar Foam::realGasSpecieThermo::S(const scalar rho, const scalar T) const +{ + return this->s(rho, T)/this->W(); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::E(const scalar rho, const scalar T) const +{ + return this->e(rho, T)/this->W(); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::G(const scalar rho, const scalar T) const +{ + return this->g(rho, T)/this->W(); +} + + +template +inline Foam::scalar Foam::realGasSpecieThermo::A(const scalar rho, const scalar T) const +{ + return this->a(rho, T)/this->W(); +} + + + + +template +inline void Foam::realGasSpecieThermo::TH +( + const scalar h, + scalar &T0, + const scalar p, + scalar &rho0 +) const +{ + T(h, T0, p,rho0, &realGasSpecieThermo::H, &realGasSpecieThermo::Cp); +} + + +template +inline void Foam::realGasSpecieThermo::TE +( + const scalar e, + scalar &T0, + const scalar p, + scalar &rho0 +) const +{ + T(e, T0, p,rho0, &realGasSpecieThermo::E, &realGasSpecieThermo::Cv); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +template +inline void Foam::realGasSpecieThermo::operator+= +( + const realGasSpecieThermo& st +) +{ + thermo::operator+=(st); +} + +template +inline void Foam::realGasSpecieThermo::operator-= +( + const realGasSpecieThermo& st +) +{ + thermo::operator-=(st); +} + +template +inline void Foam::realGasSpecieThermo::operator*=(const scalar s) +{ + thermo::operator*=(s); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +template +inline Foam::realGasSpecieThermo Foam::operator+ +( + const realGasSpecieThermo& st1, + const realGasSpecieThermo& st2 +) +{ + return realGasSpecieThermo + ( + static_cast(st1) + static_cast(st2) + ); +} + + +template +inline Foam::realGasSpecieThermo Foam::operator- +( + const realGasSpecieThermo& st1, + const realGasSpecieThermo& st2 +) +{ + return realGasSpecieThermo + ( + static_cast(st1) - static_cast(st2) + ); +} + + +template +inline Foam::realGasSpecieThermo Foam::operator* +( + const scalar s, + const realGasSpecieThermo& st +) +{ + return realGasSpecieThermo + ( + s*static_cast(st) + ); +} + + +template +inline Foam::realGasSpecieThermo Foam::operator== +( + const realGasSpecieThermo& st1, + const realGasSpecieThermo& st2 +) +{ + return st2 - st1; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.C b/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.C new file mode 100644 index 000000000..83bb6b9ca --- /dev/null +++ b/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.C @@ -0,0 +1,79 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + + Modified version of constTransport, modified to be used with realGases + + Constant properties Transport package. Templated ito a given + thermodynamics package (needed for thermal conductivity). + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "realGasConstTransport.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +realGasConstTransport::realGasConstTransport(Istream& is) +: + thermo(is), + Mu(readScalar(is)), + rPr(1.0/readScalar(is)) +{ + is.check("realGasConstTransport::realGasConstTransport(Istream& is)"); +} + + +// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // + +template +Ostream& operator<<(Ostream& os, const realGasConstTransport& ct) +{ + operator<<(os, static_cast(ct)); + os << tab << ct.Mu << tab << 1.0/ct.rPr; + + os.check("Ostream& operator<<(Ostream& os, const realGasConstTransport& ct)"); + + return os; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.H b/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.H new file mode 100644 index 000000000..8153348c4 --- /dev/null +++ b/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.H @@ -0,0 +1,204 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::realGasConstTransport + +Description + Constant properties Transport package. + Templated into a given thermodynamics package (needed for thermal + conductivity). + +SourceFiles + realGasConstTransportI.H + realGasConstTransport.C + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany +\*---------------------------------------------------------------------------*/ + +#ifndef realGasConstTransport_H +#define realGasConstTransport_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of friend functions and operators + +template class realGasConstTransport; + +template +inline realGasConstTransport operator+ +( + const realGasConstTransport&, + const realGasConstTransport& +); + +template +inline realGasConstTransport operator- +( + const realGasConstTransport&, + const realGasConstTransport& +); + +template +inline realGasConstTransport operator* +( + const scalar, + const realGasConstTransport& +); + +template +inline realGasConstTransport operator== +( + const realGasConstTransport&, + const realGasConstTransport& +); + +template +Ostream& operator<< +( + Ostream&, + const realGasConstTransport& +); + + +/*---------------------------------------------------------------------------*\ + Class realGasConstTransport Declaration +\*---------------------------------------------------------------------------*/ + +template +class realGasConstTransport +: + public thermo +{ + // Private data + + //- Constant viscosity and reciprocal Prandtl Number. + scalar Mu, rPr; + + + // Private member functions + + //- Construct from components + inline realGasConstTransport + ( + const thermo& t, + const scalar nu, + const scalar Pr + ); + + +public: + + // Constructors + + //- Construct as named copy + inline realGasConstTransport(const word&, const realGasConstTransport&); + + //- Construct from Istream + realGasConstTransport(Istream&); + + + // Member functions + + //- Dynamic viscosity [kg/ms] + inline scalar mu(const scalar T) const; + + //- Thermal conductivity [W/mK] + inline scalar kappa(const scalar rho,const scalar T) const; + + //- Thermal diffusivity for enthalpy [kg/ms] + inline scalar alpha(const scalar rho,const scalar T) const; + + + + + // Member operators + + inline realGasConstTransport& operator= + ( + const realGasConstTransport& + ); + + + // Friend operators + + friend realGasConstTransport operator+ + ( + const realGasConstTransport&, + const realGasConstTransport& + ); + + friend realGasConstTransport operator- + ( + const realGasConstTransport&, + const realGasConstTransport& + ); + + friend realGasConstTransport operator* + ( + const scalar, + const realGasConstTransport& + ); + + friend realGasConstTransport operator== + ( + const realGasConstTransport&, + const realGasConstTransport& + ); + + + // Ostream Operator + + friend Ostream& operator<< + ( + Ostream&, + const realGasConstTransport& + ); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "realGasConstTransportI.H" + +#ifdef NoRepository +# include "realGasConstTransport.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransportI.H b/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransportI.H new file mode 100644 index 000000000..b64efcacf --- /dev/null +++ b/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransportI.H @@ -0,0 +1,199 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +template +inline realGasConstTransport::realGasConstTransport +( + const thermo& t, + const scalar mu, + const scalar Pr +) +: + thermo(t), + Mu(mu), + rPr(1.0/Pr) +{} + + +// Construct as named copy +template +inline realGasConstTransport::realGasConstTransport +( + const word& name, + const realGasConstTransport& ct +) +: + thermo(name, ct), + Mu(ct.Mu), + rPr(ct.rPr) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +// Dynamic viscosity [kg/ms] +template +inline scalar realGasConstTransport::mu(const scalar T) const +{ + return Mu; +} + + +// Thermal conductivity [W/mK] +template +inline scalar realGasConstTransport::kappa(const scalar rho,const scalar T) const +{ + return this->Cp(rho,T)*mu(T)*rPr; +} + + +// Thermal diffusivity for enthalpy [kg/ms] +template +inline scalar realGasConstTransport::alpha(const scalar rho,const scalar T) const +{ + scalar Cp_ = this->Cp(rho,T); + + scalar deltaT = T - specie::Tstd; + scalar CpBar = + (deltaT*(this->H(rho,T) - this->H(this->rhostd_,specie::Tstd)) + Cp_)/(sqr(deltaT) + 1); + + return Cp_*mu(T)*rPr/CpBar; +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +template +inline realGasConstTransport& realGasConstTransport::operator= +( + const realGasConstTransport& ct +) +{ + thermo::operator=(ct); + + Mu = ct.Mu; + rPr = ct.rPr; + + return *this; +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +template +inline realGasConstTransport operator+ +( + const realGasConstTransport& ct1, + const realGasConstTransport& ct2 +) +{ + thermo t + ( + static_cast(ct1) + static_cast(ct2) + ); + + scalar molr1 = ct1.nMoles()/t.nMoles(); + scalar molr2 = ct2.nMoles()/t.nMoles(); + + return realGasConstTransport + ( + t, + molr1*ct1.Mu + molr2*ct2.Mu, + molr1*ct1.rPr + molr2*ct2.rPr + ); +} + + +template +inline realGasConstTransport operator- +( + const realGasConstTransport& ct1, + const realGasConstTransport& ct2 +) +{ + thermo t + ( + static_cast(ct1) - static_cast(ct2) + ); + + scalar molr1 = ct1.nMoles()/t.nMoles(); + scalar molr2 = ct2.nMoles()/t.nMoles(); + + return realGasConstTransport + ( + t, + molr1*ct1.Mu - molr2*ct2.Mu, + molr1*ct1.rPr - molr2*ct2.rPr + ); +} + + +template +inline realGasConstTransport operator* +( + const scalar s, + const realGasConstTransport& ct +) +{ + return realGasConstTransport + ( + s*static_cast(ct), + ct.Mu, + ct.rPr + ); +} + + +template +inline realGasConstTransport operator== +( + const realGasConstTransport& ct1, + const realGasConstTransport& ct2 +) +{ + return ct2 - ct1; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.C b/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.C new file mode 100755 index 000000000..5ffb91227 --- /dev/null +++ b/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.C @@ -0,0 +1,74 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "realGasSutherlandTransport.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +realGasSutherlandTransport::realGasSutherlandTransport(Istream& is) +: + thermo(is), + As(readScalar(is)), + Ts(readScalar(is)) +{ + is.check("realGasSutherlandTransport::realGasSutherlandTransport(Istream&)"); +} + + +// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // + +template +Ostream& operator<<(Ostream& os, const realGasSutherlandTransport& st) +{ + os << static_cast(st) << tab << st.As << tab << st.Ts; + cout<<"sutherland start"<&)" + ); + + return os; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.H b/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.H new file mode 100755 index 000000000..8278d33de --- /dev/null +++ b/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.H @@ -0,0 +1,237 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::realGasSutherlandTransport + +Description + + Copy of the sutherlandTransport class, modified to be used with real gas properties + + Transport package using Sutherland's formula. + + Templated into a given thermodynamics package (needed for thermal + conductivity). + + Dynamic viscosity [kg/m.s] + @f[ + \mu = A_s \frac{\sqrt{T}}{1 + T_s / T} + @f] + +SourceFiles + realGasSutherlandTransportI.H + realGasSutherlandTransport.C + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef realGasSutherlandTransport_H +#define realGasSutherlandTransport_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of friend functions and operators + +template class realGasSutherlandTransport; + +template +inline realGasSutherlandTransport operator+ +( + const realGasSutherlandTransport&, + const realGasSutherlandTransport& +); + +template +inline realGasSutherlandTransport operator- +( + const realGasSutherlandTransport&, + const realGasSutherlandTransport& +); + +template +inline realGasSutherlandTransport operator* +( + const scalar, + const realGasSutherlandTransport& +); + +template +inline realGasSutherlandTransport operator== +( + const realGasSutherlandTransport&, + const realGasSutherlandTransport& +); + +template +Ostream& operator<< +( + Ostream&, + const realGasSutherlandTransport& +); + + +/*---------------------------------------------------------------------------*\ + Class realGasSutherlandTransport Declaration +\*---------------------------------------------------------------------------*/ + +template +class realGasSutherlandTransport +: + public thermo +{ + // Private data + + // Sutherland's coefficients + scalar As, Ts; + + + // Private member functions + + //- Calculate the Sutherland coefficients + // given two viscosities and temperatures + inline void calcCoeffs + ( + const scalar mu1, const scalar T1, + const scalar mu2, const scalar T2 + ); + + +public: + + // Constructors + + //- Construct from components + inline realGasSutherlandTransport + ( + const thermo& t, + const scalar as, + const scalar ts + ); + + //- Construct from two viscosities + inline realGasSutherlandTransport + ( + const thermo& t, + const scalar mu1, const scalar T1, + const scalar mu2, const scalar T2 + ); + + //- Construct as named copy + inline realGasSutherlandTransport(const word&, const realGasSutherlandTransport&); + + //- Construct from Istream + realGasSutherlandTransport(Istream&); + + //- Construct and return a clone + inline autoPtr clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + + // Member functions + + + //- Dynamic viscosity [kg/ms] + inline scalar mu(const scalar T) const; + + + //- Thermal conductivity [W/mK] + inline scalar kappa(const scalar rho,const scalar T) const; + + //- Thermal diffusivity for enthalpy [kg/ms] + inline scalar alpha(const scalar rho,const scalar T) const; + + + + // Member operators + + inline realGasSutherlandTransport& operator= + ( + const realGasSutherlandTransport& + ); + + + // Friend operators + + friend realGasSutherlandTransport operator+ + ( + const realGasSutherlandTransport&, + const realGasSutherlandTransport& + ); + + friend realGasSutherlandTransport operator- + ( + const realGasSutherlandTransport&, + const realGasSutherlandTransport& + ); + + friend realGasSutherlandTransport operator* + ( + const scalar, + const realGasSutherlandTransport& + ); + + friend realGasSutherlandTransport operator== + ( + const realGasSutherlandTransport&, + const realGasSutherlandTransport& + ); + + + // Ostream Operator + + friend Ostream& operator<< + ( + Ostream&, + const realGasSutherlandTransport& + ); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "realGasSutherlandTransportI.H" + +#ifdef NoRepository +# include "realGasSutherlandTransport.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransportI.H b/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransportI.H new file mode 100755 index 000000000..6e91bc971 --- /dev/null +++ b/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransportI.H @@ -0,0 +1,262 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Modified by +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#include "specie.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template +inline void realGasSutherlandTransport::calcCoeffs +( + const scalar mu1, const scalar T1, + const scalar mu2, const scalar T2 +) +{ + scalar rootT1 = sqrt(T1); + scalar mu1rootT2 = mu1*sqrt(T2); + scalar mu2rootT1 = mu2*rootT1; + + Ts = (mu2rootT1 - mu1rootT2)/(mu1rootT2/T1 - mu2rootT1/T2); + + As = mu1*(1.0 + Ts/T1)/rootT1; +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +template +inline realGasSutherlandTransport::realGasSutherlandTransport +( + const thermo& t, + const scalar as, + const scalar ts +) +: + thermo(t), + As(as), + Ts(ts) +{} + + +// Construct from components +template +inline realGasSutherlandTransport::realGasSutherlandTransport +( + const thermo& t, + const scalar mu1, const scalar T1, + const scalar mu2, const scalar T2 +) +: + thermo(t) +{ + calcCoeffs(mu1, T1, mu2, T2); +} + + +//- Construct as named copy +template +inline realGasSutherlandTransport::realGasSutherlandTransport +( + const word& name, + const realGasSutherlandTransport& st +) +: + thermo(name, st), + As(st.As), + Ts(st.Ts) +{} + + +// Construct and return a clone +template +inline autoPtr > realGasSutherlandTransport::clone +() const +{ + return autoPtr > + ( + new realGasSutherlandTransport(*this) + ); +} + + +// Selector from Istream +template +inline autoPtr > realGasSutherlandTransport::New +( + Istream& is +) +{ + return autoPtr > + ( + new realGasSutherlandTransport(is) + ); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +// Dynamic viscosity [kg/ms] +template +inline scalar realGasSutherlandTransport::mu(const scalar T) const +{ + return As*::sqrt(T)/(1.0 + Ts/T); +} + + +// Thermal conductivity [W/mK] +template +inline scalar realGasSutherlandTransport::kappa(const scalar rho, const scalar T) const +{ + scalar Cv_ = this->Cv(rho,T); + return mu(T)*Cv_*(1.32 + 1.77*this->R()/Cv_); +} + + +// Thermal diffusivity for enthalpy [kg/ms] +template +inline scalar realGasSutherlandTransport::alpha(const scalar rho, const scalar T) const +{ + scalar Cv_ = this->Cv(rho,T); + scalar Cp_ = this->Cp(rho,T); + + scalar deltaT = T - specie::Tstd; + scalar CpBar = + (deltaT*(this->H(rho, T) - this->H(this->rhostd(),specie::Tstd)) + Cp_)/(sqr(deltaT) + 1); + + return mu(T)*Cv_*(1.32 + 1.77*this->R()/Cv_)/CpBar; +} +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +template +inline realGasSutherlandTransport& realGasSutherlandTransport::operator= +( + const realGasSutherlandTransport& st +) +{ + thermo::operator=(st); + + As = st.As; + Ts = st.Ts; + + return *this; +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +template +inline realGasSutherlandTransport operator+ +( + const realGasSutherlandTransport& st1, + const realGasSutherlandTransport& st2 +) +{ + thermo t + ( + static_cast(st1) + static_cast(st2) + ); + + scalar molr1 = st1.nMoles()/t.nMoles(); + scalar molr2 = st2.nMoles()/t.nMoles(); + + return realGasSutherlandTransport + ( + t, + molr1*st1.As + molr2*st2.As, + molr1*st1.Ts + molr2*st2.Ts + ); +} + + +template +inline realGasSutherlandTransport operator- +( + const realGasSutherlandTransport& st1, + const realGasSutherlandTransport& st2 +) +{ + thermo t + ( + static_cast(st1) - static_cast(st2) + ); + + scalar molr1 = st1.nMoles()/t.nMoles(); + scalar molr2 = st2.nMoles()/t.nMoles(); + + return realGasSutherlandTransport + ( + t, + molr1*st1.As - molr2*st2.As, + molr1*st1.Ts - molr2*st2.Ts + ); +} + + +template +inline realGasSutherlandTransport operator* +( + const scalar s, + const realGasSutherlandTransport& st +) +{ + return realGasSutherlandTransport + ( + s*static_cast(st), + st.As, + st.Ts + ); +} + + +template +inline realGasSutherlandTransport operator== +( + const realGasSutherlandTransport& st1, + const realGasSutherlandTransport& st2 +) +{ + return st2 - st1; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/T b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/T new file mode 100755 index 000000000..b71cb876b --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/T @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.7.1 | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 333.15; + +boundaryField +{ + INLET + { + type fixedValue; + value uniform 333.15; + } + OUTLET + { + type zeroGradient; + } + + WALL_1 + { + type zeroGradient; + } + WALL_2 + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/U b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/U new file mode 100755 index 000000000..c5a31aca6 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/U @@ -0,0 +1,52 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.7.1 | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (5 0 0); + +boundaryField +{ + INLET + { + type inletOutlet; + inletValue uniform (5 0 0); + value uniform (5 0 0); + } + OUTLET + { + type zeroGradient; + } + + WALL_1 + { + type fixedValue; + value uniform (0 0 0); + } + WALL_2 + { + type fixedValue; + value uniform (0 0 0); + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/alphat b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/alphat new file mode 100755 index 000000000..52705a220 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/alphat @@ -0,0 +1,53 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alphat; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + WALL_1 + { + type alphatWallFunction; + Prt 0.85; + value uniform 0; + } + WALL_2 + { + type alphatWallFunction; + Prt 0.85; + value uniform 0; + } + INLET + { + type calculated; + value uniform 0; + } + OUTLET + { + type calculated; + value uniform 0; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon new file mode 100755 index 000000000..381b88669 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon @@ -0,0 +1,58 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1120; + +boundaryField +{ + WALL_1 + { + type compressible::epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 1120; + } + WALL_2 + { + type compressible::epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 1120; + } + INLET + { + type fixedValue; + value uniform 1120; + } + OUTLET + { + type inletOutlet; + inletValue uniform 1120; + value uniform 1120; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon.old b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon.old new file mode 100755 index 000000000..e3d97022c --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon.old @@ -0,0 +1,59 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1120; + +boundaryField +{ + WALL_1 + { + type compressible::epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 1120; + } + INLET + { + type fixedValue; + value uniform 1120; + } + OUTLET + { + type inletOutlet; + inletValue uniform 1120; + value uniform 1120; + } + + WALL_2 + { + type compressible::epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 1120; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/k b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/k new file mode 100755 index 000000000..5e6de985a --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/k @@ -0,0 +1,51 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 5; + +boundaryField +{ + WALL_1 + { + type compressible::kqRWallFunction; + value uniform 5; + } + WALL_2 + { + type compressible::kqRWallFunction; + value uniform 5; + } + INLET + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.01; + value uniform 5; + } + OUTLET + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/k.old b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/k.old new file mode 100755 index 000000000..b4f3efbce --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/k.old @@ -0,0 +1,52 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 5; + +boundaryField +{ + WALL_1 + { + type compressible::kqRWallFunction; + value uniform 5; + } + INLET + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.01; + value uniform 5; + } + OUTLET + { + type zeroGradient; + } + + WALL_2 + { + type compressible::kqRWallFunction; + value uniform 5; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/mut b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/mut new file mode 100755 index 000000000..057017b41 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/mut @@ -0,0 +1,57 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object mut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + WALL_1 + { + type mutWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0; + } + WALL_2 + { + type mutWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0; + } + INLET + { + type calculated; + value uniform 0; + } + OUTLET + { + type calculated; + value uniform 0; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/p b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/p new file mode 100755 index 000000000..ed10138df --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/p @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.7.1 | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 80e5; + +boundaryField +{ + INLET + { + type zeroGradient; + } + OUTLET + { + type fixedValue; + value uniform 8e+06; + } + + WALL_1 + { + type zeroGradient; + } + WALL_2 + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/.RASProperties.swp b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/.RASProperties.swp new file mode 100755 index 0000000000000000000000000000000000000000..35d19163d72cd777282a769cc5e7ddd173d27c88 GIT binary patch literal 12288 zcmeI2!EVz)5QeAR5Cp1n;x>evt7Ow4Kx%|U2#SP62%@3oV5zK~4Y+c=mhBKyQg{w{ z0^rm)pcllI10dc49)Vfg0fUNCpkgIB9{ptcMUernxb zDV5<>4IuIYJu&e)&50&5n3H3spQnbR8>*n)ZFWRk%c1D0I1zXB?yj%4V;y*|iEdvO zt`6cv28p=W+_)R*P(_KS;v=lWDNKL~98RDFm+EWu%?7wwzJTXe?jN4UQ6|6ym;e)C z0!)AjFaajO1pZ3`Nw@?r=wv7I)1A-zr9b-omOCcE1egF5U;<2l2`~XBzyz286JP>N z;208+eSoj003MvC&C~z?v)}*wX8|6PmPrR^s4jqnq>m+l52W{`ebP(P9!ZjJkgk)y zlh-%W7t&|a0qGs-E$I#EHOZ{EMdHQ;m;e)C0!)AjFaajO1en0_Cm;k`i)ttY0ST#k zIB97$7{q9r9t;`)$tZG0z6xBG22W;Dsu}L+zVg!;U3@w80vS=h+1J8ew68rdYiMUj zxrrGe{#LKt02A`HD-%x#W?Y^XHkY$G*Ozg2AjH1snlu?rvblkdhBCL6vFmwR_=$?* z+zsp1S_7VeDVlD3z5?5-EUsAsre@E!Elh_Ulz|tH{QNNKTsm>o%QW?~ZN${Di9x^c z=oGhjU251y zPx-%gIK|nH*0J|krFXcYM-hGaTJ4+I)7p3R(}KD2yEbcucsBeOeq!$XYgMqdx{8&# JiIs|F!w+~6`P2Xa literal 0 HcmV?d00001 diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/RASProperties b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/RASProperties new file mode 100755 index 000000000..81b1ec911 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/RASProperties @@ -0,0 +1,25 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object RASProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +RASModel kEpsilon; + +turbulence on; + +printCoeffs on; + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/boundary b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/boundary new file mode 100755 index 000000000..7a59636ef --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/boundary @@ -0,0 +1,52 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +5 +( + WALL_1 + { + type wall; + nFaces 99; + startFace 3644; + } + WALL_2 + { + type wall; + nFaces 99; + startFace 3743; + } + INLET + { + type patch; + nFaces 19; + startFace 3842; + } + OUTLET + { + type patch; + nFaces 19; + startFace 3861; + } + frontAndBackPlanes + { + type empty; + nFaces 3762; + startFace 3880; + } +) + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/cellZones b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/cellZones new file mode 100755 index 000000000..965611ab5 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/cellZones @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class regIOobject; + location "constant/polyMesh"; + object cellZones; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +0 +() + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faceZones b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faceZones new file mode 100755 index 000000000..6469973da --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faceZones @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class regIOobject; + location "constant/polyMesh"; + object faceZones; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +0 +() + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faces b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faces new file mode 100755 index 000000000..d2a85b7dd --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faces @@ -0,0 +1,7666 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class faceList; + location "constant/polyMesh"; + object faces; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +7642 +( +4(3 2003 2002 2) +4(3 1 2001 2003) +4(5 2005 2004 4) +4(3 2003 2005 5) +4(7 2007 2006 6) +4(5 2005 2007 7) +4(9 2009 2008 8) +4(7 2007 2009 9) +4(11 2011 2010 10) +4(9 2009 2011 11) +4(13 2013 2012 12) +4(11 2011 2013 13) +4(15 2015 2014 14) +4(13 2013 2015 15) +4(17 2017 2016 16) +4(15 2015 2017 17) +4(19 2019 2018 18) +4(17 2017 2019 19) +4(21 2021 2020 20) +4(19 2019 2021 21) +4(23 2023 2022 22) +4(21 2021 2023 23) +4(25 2025 2024 24) +4(23 2023 2025 25) +4(27 2027 2026 26) +4(25 2025 2027 27) +4(29 2029 2028 28) +4(27 2027 2029 29) +4(31 2031 2030 30) +4(29 2029 2031 31) +4(33 2033 2032 32) +4(31 2031 2033 33) +4(35 2035 2034 34) +4(33 2033 2035 35) +4(37 2037 2036 36) +4(35 2035 2037 37) +4(37 2037 2039 39) +4(3 41 2041 2003) +4(40 2040 2041 41) +4(5 42 2042 2005) +4(41 2041 2042 42) +4(7 43 2043 2007) +4(42 2042 2043 43) +4(9 44 2044 2009) +4(43 2043 2044 44) +4(11 45 2045 2011) +4(44 2044 2045 45) +4(13 46 2046 2013) +4(45 2045 2046 46) +4(15 47 2047 2015) +4(46 2046 2047 47) +4(17 48 2048 2017) +4(47 2047 2048 48) +4(19 49 2049 2019) +4(48 2048 2049 49) +4(21 50 2050 2021) +4(49 2049 2050 50) +4(23 51 2051 2023) +4(50 2050 2051 51) +4(25 52 2052 2025) +4(51 2051 2052 52) +4(27 53 2053 2027) +4(52 2052 2053 53) +4(29 54 2054 2029) +4(53 2053 2054 54) +4(31 55 2055 2031) +4(54 2054 2055 55) +4(33 56 2056 2033) +4(55 2055 2056 56) +4(35 57 2057 2035) +4(56 2056 2057 57) +4(37 58 2058 2037) +4(57 2057 2058 58) +4(58 2058 2059 59) +4(41 61 2061 2041) +4(60 2060 2061 61) +4(42 62 2062 2042) +4(61 2061 2062 62) +4(43 63 2063 2043) +4(62 2062 2063 63) +4(44 64 2064 2044) +4(63 2063 2064 64) +4(45 65 2065 2045) +4(64 2064 2065 65) +4(46 66 2066 2046) +4(65 2065 2066 66) +4(47 67 2067 2047) +4(66 2066 2067 67) +4(48 68 2068 2048) +4(67 2067 2068 68) +4(49 69 2069 2049) +4(68 2068 2069 69) +4(50 70 2070 2050) +4(69 2069 2070 70) +4(51 71 2071 2051) +4(70 2070 2071 71) +4(52 72 2072 2052) +4(71 2071 2072 72) +4(53 73 2073 2053) +4(72 2072 2073 73) +4(54 74 2074 2054) +4(73 2073 2074 74) +4(55 75 2075 2055) +4(74 2074 2075 75) +4(56 76 2076 2056) +4(75 2075 2076 76) +4(57 77 2077 2057) +4(76 2076 2077 77) +4(58 78 2078 2058) +4(77 2077 2078 78) +4(78 2078 2079 79) +4(61 81 2081 2061) +4(80 2080 2081 81) +4(62 82 2082 2062) +4(81 2081 2082 82) +4(63 83 2083 2063) +4(82 2082 2083 83) +4(64 84 2084 2064) +4(83 2083 2084 84) +4(65 85 2085 2065) +4(84 2084 2085 85) +4(66 86 2086 2066) +4(85 2085 2086 86) +4(67 87 2087 2067) +4(86 2086 2087 87) +4(68 88 2088 2068) +4(87 2087 2088 88) +4(69 89 2089 2069) +4(88 2088 2089 89) +4(70 90 2090 2070) +4(89 2089 2090 90) +4(71 91 2091 2071) +4(90 2090 2091 91) +4(72 92 2092 2072) +4(91 2091 2092 92) +4(73 93 2093 2073) +4(92 2092 2093 93) +4(74 94 2094 2074) +4(93 2093 2094 94) +4(75 95 2095 2075) +4(94 2094 2095 95) +4(76 96 2096 2076) +4(95 2095 2096 96) +4(77 97 2097 2077) +4(96 2096 2097 97) +4(78 98 2098 2078) +4(97 2097 2098 98) +4(98 2098 2099 99) +4(81 101 2101 2081) +4(100 2100 2101 101) +4(82 102 2102 2082) +4(101 2101 2102 102) +4(83 103 2103 2083) +4(102 2102 2103 103) +4(84 104 2104 2084) +4(103 2103 2104 104) +4(85 105 2105 2085) +4(104 2104 2105 105) +4(86 106 2106 2086) +4(105 2105 2106 106) +4(87 107 2107 2087) +4(106 2106 2107 107) +4(88 108 2108 2088) +4(107 2107 2108 108) +4(89 109 2109 2089) +4(108 2108 2109 109) +4(90 110 2110 2090) +4(109 2109 2110 110) +4(91 111 2111 2091) +4(110 2110 2111 111) +4(92 112 2112 2092) +4(111 2111 2112 112) +4(93 113 2113 2093) +4(112 2112 2113 113) +4(94 114 2114 2094) +4(113 2113 2114 114) +4(95 115 2115 2095) +4(114 2114 2115 115) +4(96 116 2116 2096) +4(115 2115 2116 116) +4(97 117 2117 2097) +4(116 2116 2117 117) +4(98 118 2118 2098) +4(117 2117 2118 118) +4(118 2118 2119 119) +4(101 121 2121 2101) +4(120 2120 2121 121) +4(102 122 2122 2102) +4(121 2121 2122 122) +4(103 123 2123 2103) +4(122 2122 2123 123) +4(104 124 2124 2104) +4(123 2123 2124 124) +4(105 125 2125 2105) +4(124 2124 2125 125) +4(106 126 2126 2106) +4(125 2125 2126 126) +4(107 127 2127 2107) +4(126 2126 2127 127) +4(108 128 2128 2108) +4(127 2127 2128 128) +4(109 129 2129 2109) +4(128 2128 2129 129) +4(110 130 2130 2110) +4(129 2129 2130 130) +4(111 131 2131 2111) +4(130 2130 2131 131) +4(112 132 2132 2112) +4(131 2131 2132 132) +4(113 133 2133 2113) +4(132 2132 2133 133) +4(114 134 2134 2114) +4(133 2133 2134 134) +4(115 135 2135 2115) +4(134 2134 2135 135) +4(116 136 2136 2116) +4(135 2135 2136 136) +4(117 137 2137 2117) +4(136 2136 2137 137) +4(118 138 2138 2118) +4(137 2137 2138 138) +4(138 2138 2139 139) +4(121 141 2141 2121) +4(140 2140 2141 141) +4(122 142 2142 2122) +4(141 2141 2142 142) +4(123 143 2143 2123) +4(142 2142 2143 143) +4(124 144 2144 2124) +4(143 2143 2144 144) +4(125 145 2145 2125) +4(144 2144 2145 145) +4(126 146 2146 2126) +4(145 2145 2146 146) +4(127 147 2147 2127) +4(146 2146 2147 147) +4(128 148 2148 2128) +4(147 2147 2148 148) +4(129 149 2149 2129) +4(148 2148 2149 149) +4(130 150 2150 2130) +4(149 2149 2150 150) +4(131 151 2151 2131) +4(150 2150 2151 151) +4(132 152 2152 2132) +4(151 2151 2152 152) +4(133 153 2153 2133) +4(152 2152 2153 153) +4(134 154 2154 2134) +4(153 2153 2154 154) +4(135 155 2155 2135) +4(154 2154 2155 155) +4(136 156 2156 2136) +4(155 2155 2156 156) +4(137 157 2157 2137) +4(156 2156 2157 157) +4(138 158 2158 2138) +4(157 2157 2158 158) +4(158 2158 2159 159) +4(141 161 2161 2141) +4(160 2160 2161 161) +4(142 162 2162 2142) +4(161 2161 2162 162) +4(143 163 2163 2143) +4(162 2162 2163 163) +4(144 164 2164 2144) +4(163 2163 2164 164) +4(145 165 2165 2145) +4(164 2164 2165 165) +4(146 166 2166 2146) +4(165 2165 2166 166) +4(147 167 2167 2147) +4(166 2166 2167 167) +4(148 168 2168 2148) +4(167 2167 2168 168) +4(149 169 2169 2149) +4(168 2168 2169 169) +4(150 170 2170 2150) +4(169 2169 2170 170) +4(151 171 2171 2151) +4(170 2170 2171 171) +4(152 172 2172 2152) +4(171 2171 2172 172) +4(153 173 2173 2153) +4(172 2172 2173 173) +4(154 174 2174 2154) +4(173 2173 2174 174) +4(155 175 2175 2155) +4(174 2174 2175 175) +4(156 176 2176 2156) +4(175 2175 2176 176) +4(157 177 2177 2157) +4(176 2176 2177 177) +4(158 178 2178 2158) +4(177 2177 2178 178) +4(178 2178 2179 179) +4(161 181 2181 2161) +4(180 2180 2181 181) +4(162 182 2182 2162) +4(181 2181 2182 182) +4(163 183 2183 2163) +4(182 2182 2183 183) +4(164 184 2184 2164) +4(183 2183 2184 184) +4(165 185 2185 2165) +4(184 2184 2185 185) +4(166 186 2186 2166) +4(185 2185 2186 186) +4(167 187 2187 2167) +4(186 2186 2187 187) +4(168 188 2188 2168) +4(187 2187 2188 188) +4(169 189 2189 2169) +4(188 2188 2189 189) +4(170 190 2190 2170) +4(189 2189 2190 190) +4(171 191 2191 2171) +4(190 2190 2191 191) +4(172 192 2192 2172) +4(191 2191 2192 192) +4(173 193 2193 2173) +4(192 2192 2193 193) +4(174 194 2194 2174) +4(193 2193 2194 194) +4(175 195 2195 2175) +4(194 2194 2195 195) +4(176 196 2196 2176) +4(195 2195 2196 196) +4(177 197 2197 2177) +4(196 2196 2197 197) +4(178 198 2198 2178) +4(197 2197 2198 198) +4(198 2198 2199 199) +4(181 201 2201 2181) +4(200 2200 2201 201) +4(182 202 2202 2182) +4(201 2201 2202 202) +4(183 203 2203 2183) +4(202 2202 2203 203) +4(184 204 2204 2184) +4(203 2203 2204 204) +4(185 205 2205 2185) +4(204 2204 2205 205) +4(186 206 2206 2186) +4(205 2205 2206 206) +4(187 207 2207 2187) +4(206 2206 2207 207) +4(188 208 2208 2188) +4(207 2207 2208 208) +4(189 209 2209 2189) +4(208 2208 2209 209) +4(190 210 2210 2190) +4(209 2209 2210 210) +4(191 211 2211 2191) +4(210 2210 2211 211) +4(192 212 2212 2192) +4(211 2211 2212 212) +4(193 213 2213 2193) +4(212 2212 2213 213) +4(194 214 2214 2194) +4(213 2213 2214 214) +4(195 215 2215 2195) +4(214 2214 2215 215) +4(196 216 2216 2196) +4(215 2215 2216 216) +4(197 217 2217 2197) +4(216 2216 2217 217) +4(198 218 2218 2198) +4(217 2217 2218 218) +4(218 2218 2219 219) +4(201 221 2221 2201) +4(220 2220 2221 221) +4(202 222 2222 2202) +4(221 2221 2222 222) +4(203 223 2223 2203) +4(222 2222 2223 223) +4(204 224 2224 2204) +4(223 2223 2224 224) +4(205 225 2225 2205) +4(224 2224 2225 225) +4(206 226 2226 2206) +4(225 2225 2226 226) +4(207 227 2227 2207) +4(226 2226 2227 227) +4(208 228 2228 2208) +4(227 2227 2228 228) +4(209 229 2229 2209) +4(228 2228 2229 229) +4(210 230 2230 2210) +4(229 2229 2230 230) +4(211 231 2231 2211) +4(230 2230 2231 231) +4(212 232 2232 2212) +4(231 2231 2232 232) +4(213 233 2233 2213) +4(232 2232 2233 233) +4(214 234 2234 2214) +4(233 2233 2234 234) +4(215 235 2235 2215) +4(234 2234 2235 235) +4(216 236 2236 2216) +4(235 2235 2236 236) +4(217 237 2237 2217) +4(236 2236 2237 237) +4(218 238 2238 2218) +4(237 2237 2238 238) +4(238 2238 2239 239) +4(221 241 2241 2221) +4(240 2240 2241 241) +4(222 242 2242 2222) +4(241 2241 2242 242) +4(223 243 2243 2223) +4(242 2242 2243 243) +4(224 244 2244 2224) +4(243 2243 2244 244) +4(225 245 2245 2225) +4(244 2244 2245 245) +4(226 246 2246 2226) +4(245 2245 2246 246) +4(227 247 2247 2227) +4(246 2246 2247 247) +4(228 248 2248 2228) +4(247 2247 2248 248) +4(229 249 2249 2229) +4(248 2248 2249 249) +4(230 250 2250 2230) +4(249 2249 2250 250) +4(231 251 2251 2231) +4(250 2250 2251 251) +4(232 252 2252 2232) +4(251 2251 2252 252) +4(233 253 2253 2233) +4(252 2252 2253 253) +4(234 254 2254 2234) +4(253 2253 2254 254) +4(235 255 2255 2235) +4(254 2254 2255 255) +4(236 256 2256 2236) +4(255 2255 2256 256) +4(237 257 2257 2237) +4(256 2256 2257 257) +4(238 258 2258 2238) +4(257 2257 2258 258) +4(258 2258 2259 259) +4(241 261 2261 2241) +4(260 2260 2261 261) +4(242 262 2262 2242) +4(261 2261 2262 262) +4(243 263 2263 2243) +4(262 2262 2263 263) +4(244 264 2264 2244) +4(263 2263 2264 264) +4(245 265 2265 2245) +4(264 2264 2265 265) +4(246 266 2266 2246) +4(265 2265 2266 266) +4(247 267 2267 2247) +4(266 2266 2267 267) +4(248 268 2268 2248) +4(267 2267 2268 268) +4(249 269 2269 2249) +4(268 2268 2269 269) +4(250 270 2270 2250) +4(269 2269 2270 270) +4(251 271 2271 2251) +4(270 2270 2271 271) +4(252 272 2272 2252) +4(271 2271 2272 272) +4(253 273 2273 2253) +4(272 2272 2273 273) +4(254 274 2274 2254) +4(273 2273 2274 274) +4(255 275 2275 2255) +4(274 2274 2275 275) +4(256 276 2276 2256) +4(275 2275 2276 276) +4(257 277 2277 2257) +4(276 2276 2277 277) +4(258 278 2278 2258) +4(277 2277 2278 278) +4(278 2278 2279 279) +4(261 281 2281 2261) +4(280 2280 2281 281) +4(262 282 2282 2262) +4(281 2281 2282 282) +4(263 283 2283 2263) +4(282 2282 2283 283) +4(264 284 2284 2264) +4(283 2283 2284 284) +4(265 285 2285 2265) +4(284 2284 2285 285) +4(266 286 2286 2266) +4(285 2285 2286 286) +4(267 287 2287 2267) +4(286 2286 2287 287) +4(268 288 2288 2268) +4(287 2287 2288 288) +4(269 289 2289 2269) +4(288 2288 2289 289) +4(270 290 2290 2270) +4(289 2289 2290 290) +4(271 291 2291 2271) +4(290 2290 2291 291) +4(272 292 2292 2272) +4(291 2291 2292 292) +4(273 293 2293 2273) +4(292 2292 2293 293) +4(274 294 2294 2274) +4(293 2293 2294 294) +4(275 295 2295 2275) +4(294 2294 2295 295) +4(276 296 2296 2276) +4(295 2295 2296 296) +4(277 297 2297 2277) +4(296 2296 2297 297) +4(278 298 2298 2278) +4(297 2297 2298 298) +4(298 2298 2299 299) +4(281 301 2301 2281) +4(300 2300 2301 301) +4(282 302 2302 2282) +4(301 2301 2302 302) +4(283 303 2303 2283) +4(302 2302 2303 303) +4(284 304 2304 2284) +4(303 2303 2304 304) +4(285 305 2305 2285) +4(304 2304 2305 305) +4(286 306 2306 2286) +4(305 2305 2306 306) +4(287 307 2307 2287) +4(306 2306 2307 307) +4(288 308 2308 2288) +4(307 2307 2308 308) +4(289 309 2309 2289) +4(308 2308 2309 309) +4(290 310 2310 2290) +4(309 2309 2310 310) +4(291 311 2311 2291) +4(310 2310 2311 311) +4(292 312 2312 2292) +4(311 2311 2312 312) +4(293 313 2313 2293) +4(312 2312 2313 313) +4(294 314 2314 2294) +4(313 2313 2314 314) +4(295 315 2315 2295) +4(314 2314 2315 315) +4(296 316 2316 2296) +4(315 2315 2316 316) +4(297 317 2317 2297) +4(316 2316 2317 317) +4(298 318 2318 2298) +4(317 2317 2318 318) +4(318 2318 2319 319) +4(301 321 2321 2301) +4(320 2320 2321 321) +4(302 322 2322 2302) +4(321 2321 2322 322) +4(303 323 2323 2303) +4(322 2322 2323 323) +4(304 324 2324 2304) +4(323 2323 2324 324) +4(305 325 2325 2305) +4(324 2324 2325 325) +4(306 326 2326 2306) +4(325 2325 2326 326) +4(307 327 2327 2307) +4(326 2326 2327 327) +4(308 328 2328 2308) +4(327 2327 2328 328) +4(309 329 2329 2309) +4(328 2328 2329 329) +4(310 330 2330 2310) +4(329 2329 2330 330) +4(311 331 2331 2311) +4(330 2330 2331 331) +4(312 332 2332 2312) +4(331 2331 2332 332) +4(313 333 2333 2313) +4(332 2332 2333 333) +4(314 334 2334 2314) +4(333 2333 2334 334) +4(315 335 2335 2315) +4(334 2334 2335 335) +4(316 336 2336 2316) +4(335 2335 2336 336) +4(317 337 2337 2317) +4(336 2336 2337 337) +4(318 338 2338 2318) +4(337 2337 2338 338) +4(338 2338 2339 339) +4(321 341 2341 2321) +4(340 2340 2341 341) +4(322 342 2342 2322) +4(341 2341 2342 342) +4(323 343 2343 2323) +4(342 2342 2343 343) +4(324 344 2344 2324) +4(343 2343 2344 344) +4(325 345 2345 2325) +4(344 2344 2345 345) +4(326 346 2346 2326) +4(345 2345 2346 346) +4(327 347 2347 2327) +4(346 2346 2347 347) +4(328 348 2348 2328) +4(347 2347 2348 348) +4(329 349 2349 2329) +4(348 2348 2349 349) +4(330 350 2350 2330) +4(349 2349 2350 350) +4(331 351 2351 2331) +4(350 2350 2351 351) +4(332 352 2352 2332) +4(351 2351 2352 352) +4(333 353 2353 2333) +4(352 2352 2353 353) +4(334 354 2354 2334) +4(353 2353 2354 354) +4(335 355 2355 2335) +4(354 2354 2355 355) +4(336 356 2356 2336) +4(355 2355 2356 356) +4(337 357 2357 2337) +4(356 2356 2357 357) +4(338 358 2358 2338) +4(357 2357 2358 358) +4(358 2358 2359 359) +4(341 361 2361 2341) +4(360 2360 2361 361) +4(342 362 2362 2342) +4(361 2361 2362 362) +4(343 363 2363 2343) +4(362 2362 2363 363) +4(344 364 2364 2344) +4(363 2363 2364 364) +4(345 365 2365 2345) +4(364 2364 2365 365) +4(346 366 2366 2346) +4(365 2365 2366 366) +4(347 367 2367 2347) +4(366 2366 2367 367) +4(348 368 2368 2348) +4(367 2367 2368 368) +4(349 369 2369 2349) +4(368 2368 2369 369) +4(350 370 2370 2350) +4(369 2369 2370 370) +4(351 371 2371 2351) +4(370 2370 2371 371) +4(352 372 2372 2352) +4(371 2371 2372 372) +4(353 373 2373 2353) +4(372 2372 2373 373) +4(354 374 2374 2354) +4(373 2373 2374 374) +4(355 375 2375 2355) +4(374 2374 2375 375) +4(356 376 2376 2356) +4(375 2375 2376 376) +4(357 377 2377 2357) +4(376 2376 2377 377) +4(358 378 2378 2358) +4(377 2377 2378 378) +4(378 2378 2379 379) +4(361 381 2381 2361) +4(380 2380 2381 381) +4(362 382 2382 2362) +4(381 2381 2382 382) +4(363 383 2383 2363) +4(382 2382 2383 383) +4(364 384 2384 2364) +4(383 2383 2384 384) +4(365 385 2385 2365) +4(384 2384 2385 385) +4(366 386 2386 2366) +4(385 2385 2386 386) +4(367 387 2387 2367) +4(386 2386 2387 387) +4(368 388 2388 2368) +4(387 2387 2388 388) +4(369 389 2389 2369) +4(388 2388 2389 389) +4(370 390 2390 2370) +4(389 2389 2390 390) +4(371 391 2391 2371) +4(390 2390 2391 391) +4(372 392 2392 2372) +4(391 2391 2392 392) +4(373 393 2393 2373) +4(392 2392 2393 393) +4(374 394 2394 2374) +4(393 2393 2394 394) +4(375 395 2395 2375) +4(394 2394 2395 395) +4(376 396 2396 2376) +4(395 2395 2396 396) +4(377 397 2397 2377) +4(396 2396 2397 397) +4(378 398 2398 2378) +4(397 2397 2398 398) +4(398 2398 2399 399) +4(381 401 2401 2381) +4(400 2400 2401 401) +4(382 402 2402 2382) +4(401 2401 2402 402) +4(383 403 2403 2383) +4(402 2402 2403 403) +4(384 404 2404 2384) +4(403 2403 2404 404) +4(385 405 2405 2385) +4(404 2404 2405 405) +4(386 406 2406 2386) +4(405 2405 2406 406) +4(387 407 2407 2387) +4(406 2406 2407 407) +4(388 408 2408 2388) +4(407 2407 2408 408) +4(389 409 2409 2389) +4(408 2408 2409 409) +4(390 410 2410 2390) +4(409 2409 2410 410) +4(391 411 2411 2391) +4(410 2410 2411 411) +4(392 412 2412 2392) +4(411 2411 2412 412) +4(393 413 2413 2393) +4(412 2412 2413 413) +4(394 414 2414 2394) +4(413 2413 2414 414) +4(395 415 2415 2395) +4(414 2414 2415 415) +4(396 416 2416 2396) +4(415 2415 2416 416) +4(397 417 2417 2397) +4(416 2416 2417 417) +4(398 418 2418 2398) +4(417 2417 2418 418) +4(418 2418 2419 419) +4(401 421 2421 2401) +4(420 2420 2421 421) +4(402 422 2422 2402) +4(421 2421 2422 422) +4(403 423 2423 2403) +4(422 2422 2423 423) +4(404 424 2424 2404) +4(423 2423 2424 424) +4(405 425 2425 2405) +4(424 2424 2425 425) +4(406 426 2426 2406) +4(425 2425 2426 426) +4(407 427 2427 2407) +4(426 2426 2427 427) +4(408 428 2428 2408) +4(427 2427 2428 428) +4(409 429 2429 2409) +4(428 2428 2429 429) +4(410 430 2430 2410) +4(429 2429 2430 430) +4(411 431 2431 2411) +4(430 2430 2431 431) +4(412 432 2432 2412) +4(431 2431 2432 432) +4(413 433 2433 2413) +4(432 2432 2433 433) +4(414 434 2434 2414) +4(433 2433 2434 434) +4(415 435 2435 2415) +4(434 2434 2435 435) +4(416 436 2436 2416) +4(435 2435 2436 436) +4(417 437 2437 2417) +4(436 2436 2437 437) +4(418 438 2438 2418) +4(437 2437 2438 438) +4(438 2438 2439 439) +4(421 441 2441 2421) +4(440 2440 2441 441) +4(422 442 2442 2422) +4(441 2441 2442 442) +4(423 443 2443 2423) +4(442 2442 2443 443) +4(424 444 2444 2424) +4(443 2443 2444 444) +4(425 445 2445 2425) +4(444 2444 2445 445) +4(426 446 2446 2426) +4(445 2445 2446 446) +4(427 447 2447 2427) +4(446 2446 2447 447) +4(428 448 2448 2428) +4(447 2447 2448 448) +4(429 449 2449 2429) +4(448 2448 2449 449) +4(430 450 2450 2430) +4(449 2449 2450 450) +4(431 451 2451 2431) +4(450 2450 2451 451) +4(432 452 2452 2432) +4(451 2451 2452 452) +4(433 453 2453 2433) +4(452 2452 2453 453) +4(434 454 2454 2434) +4(453 2453 2454 454) +4(435 455 2455 2435) +4(454 2454 2455 455) +4(436 456 2456 2436) +4(455 2455 2456 456) +4(437 457 2457 2437) +4(456 2456 2457 457) +4(438 458 2458 2438) +4(457 2457 2458 458) +4(458 2458 2459 459) +4(441 461 2461 2441) +4(460 2460 2461 461) +4(442 462 2462 2442) +4(461 2461 2462 462) +4(443 463 2463 2443) +4(462 2462 2463 463) +4(444 464 2464 2444) +4(463 2463 2464 464) +4(445 465 2465 2445) +4(464 2464 2465 465) +4(446 466 2466 2446) +4(465 2465 2466 466) +4(447 467 2467 2447) +4(466 2466 2467 467) +4(448 468 2468 2448) +4(467 2467 2468 468) +4(449 469 2469 2449) +4(468 2468 2469 469) +4(450 470 2470 2450) +4(469 2469 2470 470) +4(451 471 2471 2451) +4(470 2470 2471 471) +4(452 472 2472 2452) +4(471 2471 2472 472) +4(453 473 2473 2453) +4(472 2472 2473 473) +4(454 474 2474 2454) +4(473 2473 2474 474) +4(455 475 2475 2455) +4(474 2474 2475 475) +4(456 476 2476 2456) +4(475 2475 2476 476) +4(457 477 2477 2457) +4(476 2476 2477 477) +4(458 478 2478 2458) +4(477 2477 2478 478) +4(478 2478 2479 479) +4(461 481 2481 2461) +4(480 2480 2481 481) +4(462 482 2482 2462) +4(481 2481 2482 482) +4(463 483 2483 2463) +4(482 2482 2483 483) +4(464 484 2484 2464) +4(483 2483 2484 484) +4(465 485 2485 2465) +4(484 2484 2485 485) +4(466 486 2486 2466) +4(485 2485 2486 486) +4(467 487 2487 2467) +4(486 2486 2487 487) +4(468 488 2488 2468) +4(487 2487 2488 488) +4(469 489 2489 2469) +4(488 2488 2489 489) +4(470 490 2490 2470) +4(489 2489 2490 490) +4(471 491 2491 2471) +4(490 2490 2491 491) +4(472 492 2492 2472) +4(491 2491 2492 492) +4(473 493 2493 2473) +4(492 2492 2493 493) +4(474 494 2494 2474) +4(493 2493 2494 494) +4(475 495 2495 2475) +4(494 2494 2495 495) +4(476 496 2496 2476) +4(495 2495 2496 496) +4(477 497 2497 2477) +4(496 2496 2497 497) +4(478 498 2498 2478) +4(497 2497 2498 498) +4(498 2498 2499 499) +4(481 501 2501 2481) +4(500 2500 2501 501) +4(482 502 2502 2482) +4(501 2501 2502 502) +4(483 503 2503 2483) +4(502 2502 2503 503) +4(484 504 2504 2484) +4(503 2503 2504 504) +4(485 505 2505 2485) +4(504 2504 2505 505) +4(486 506 2506 2486) +4(505 2505 2506 506) +4(487 507 2507 2487) +4(506 2506 2507 507) +4(488 508 2508 2488) +4(507 2507 2508 508) +4(489 509 2509 2489) +4(508 2508 2509 509) +4(490 510 2510 2490) +4(509 2509 2510 510) +4(491 511 2511 2491) +4(510 2510 2511 511) +4(492 512 2512 2492) +4(511 2511 2512 512) +4(493 513 2513 2493) +4(512 2512 2513 513) +4(494 514 2514 2494) +4(513 2513 2514 514) +4(495 515 2515 2495) +4(514 2514 2515 515) +4(496 516 2516 2496) +4(515 2515 2516 516) +4(497 517 2517 2497) +4(516 2516 2517 517) +4(498 518 2518 2498) +4(517 2517 2518 518) +4(518 2518 2519 519) +4(501 521 2521 2501) +4(520 2520 2521 521) +4(502 522 2522 2502) +4(521 2521 2522 522) +4(503 523 2523 2503) +4(522 2522 2523 523) +4(504 524 2524 2504) +4(523 2523 2524 524) +4(505 525 2525 2505) +4(524 2524 2525 525) +4(506 526 2526 2506) +4(525 2525 2526 526) +4(507 527 2527 2507) +4(526 2526 2527 527) +4(508 528 2528 2508) +4(527 2527 2528 528) +4(509 529 2529 2509) +4(528 2528 2529 529) +4(510 530 2530 2510) +4(529 2529 2530 530) +4(511 531 2531 2511) +4(530 2530 2531 531) +4(512 532 2532 2512) +4(531 2531 2532 532) +4(513 533 2533 2513) +4(532 2532 2533 533) +4(514 534 2534 2514) +4(533 2533 2534 534) +4(515 535 2535 2515) +4(534 2534 2535 535) +4(516 536 2536 2516) +4(535 2535 2536 536) +4(517 537 2537 2517) +4(536 2536 2537 537) +4(518 538 2538 2518) +4(537 2537 2538 538) +4(538 2538 2539 539) +4(521 541 2541 2521) +4(540 2540 2541 541) +4(522 542 2542 2522) +4(541 2541 2542 542) +4(523 543 2543 2523) +4(542 2542 2543 543) +4(524 544 2544 2524) +4(543 2543 2544 544) +4(525 545 2545 2525) +4(544 2544 2545 545) +4(526 546 2546 2526) +4(545 2545 2546 546) +4(527 547 2547 2527) +4(546 2546 2547 547) +4(528 548 2548 2528) +4(547 2547 2548 548) +4(529 549 2549 2529) +4(548 2548 2549 549) +4(530 550 2550 2530) +4(549 2549 2550 550) +4(531 551 2551 2531) +4(550 2550 2551 551) +4(532 552 2552 2532) +4(551 2551 2552 552) +4(533 553 2553 2533) +4(552 2552 2553 553) +4(534 554 2554 2534) +4(553 2553 2554 554) +4(535 555 2555 2535) +4(554 2554 2555 555) +4(536 556 2556 2536) +4(555 2555 2556 556) +4(537 557 2557 2537) +4(556 2556 2557 557) +4(538 558 2558 2538) +4(557 2557 2558 558) +4(558 2558 2559 559) +4(541 561 2561 2541) +4(560 2560 2561 561) +4(542 562 2562 2542) +4(561 2561 2562 562) +4(543 563 2563 2543) +4(562 2562 2563 563) +4(544 564 2564 2544) +4(563 2563 2564 564) +4(545 565 2565 2545) +4(564 2564 2565 565) +4(546 566 2566 2546) +4(565 2565 2566 566) +4(547 567 2567 2547) +4(566 2566 2567 567) +4(548 568 2568 2548) +4(567 2567 2568 568) +4(549 569 2569 2549) +4(568 2568 2569 569) +4(550 570 2570 2550) +4(569 2569 2570 570) +4(551 571 2571 2551) +4(570 2570 2571 571) +4(552 572 2572 2552) +4(571 2571 2572 572) +4(553 573 2573 2553) +4(572 2572 2573 573) +4(554 574 2574 2554) +4(573 2573 2574 574) +4(555 575 2575 2555) +4(574 2574 2575 575) +4(556 576 2576 2556) +4(575 2575 2576 576) +4(557 577 2577 2557) +4(576 2576 2577 577) +4(558 578 2578 2558) +4(577 2577 2578 578) +4(578 2578 2579 579) +4(561 581 2581 2561) +4(580 2580 2581 581) +4(562 582 2582 2562) +4(581 2581 2582 582) +4(563 583 2583 2563) +4(582 2582 2583 583) +4(564 584 2584 2564) +4(583 2583 2584 584) +4(565 585 2585 2565) +4(584 2584 2585 585) +4(566 586 2586 2566) +4(585 2585 2586 586) +4(567 587 2587 2567) +4(586 2586 2587 587) +4(568 588 2588 2568) +4(587 2587 2588 588) +4(569 589 2589 2569) +4(588 2588 2589 589) +4(570 590 2590 2570) +4(589 2589 2590 590) +4(571 591 2591 2571) +4(590 2590 2591 591) +4(572 592 2592 2572) +4(591 2591 2592 592) +4(573 593 2593 2573) +4(592 2592 2593 593) +4(574 594 2594 2574) +4(593 2593 2594 594) +4(575 595 2595 2575) +4(594 2594 2595 595) +4(576 596 2596 2576) +4(595 2595 2596 596) +4(577 597 2597 2577) +4(596 2596 2597 597) +4(578 598 2598 2578) +4(597 2597 2598 598) +4(598 2598 2599 599) +4(581 601 2601 2581) +4(600 2600 2601 601) +4(582 602 2602 2582) +4(601 2601 2602 602) +4(583 603 2603 2583) +4(602 2602 2603 603) +4(584 604 2604 2584) +4(603 2603 2604 604) +4(585 605 2605 2585) +4(604 2604 2605 605) +4(586 606 2606 2586) +4(605 2605 2606 606) +4(587 607 2607 2587) +4(606 2606 2607 607) +4(588 608 2608 2588) +4(607 2607 2608 608) +4(589 609 2609 2589) +4(608 2608 2609 609) +4(590 610 2610 2590) +4(609 2609 2610 610) +4(591 611 2611 2591) +4(610 2610 2611 611) +4(592 612 2612 2592) +4(611 2611 2612 612) +4(593 613 2613 2593) +4(612 2612 2613 613) +4(594 614 2614 2594) +4(613 2613 2614 614) +4(595 615 2615 2595) +4(614 2614 2615 615) +4(596 616 2616 2596) +4(615 2615 2616 616) +4(597 617 2617 2597) +4(616 2616 2617 617) +4(598 618 2618 2598) +4(617 2617 2618 618) +4(618 2618 2619 619) +4(601 621 2621 2601) +4(620 2620 2621 621) +4(602 622 2622 2602) +4(621 2621 2622 622) +4(603 623 2623 2603) +4(622 2622 2623 623) +4(604 624 2624 2604) +4(623 2623 2624 624) +4(605 625 2625 2605) +4(624 2624 2625 625) +4(606 626 2626 2606) +4(625 2625 2626 626) +4(607 627 2627 2607) +4(626 2626 2627 627) +4(608 628 2628 2608) +4(627 2627 2628 628) +4(609 629 2629 2609) +4(628 2628 2629 629) +4(610 630 2630 2610) +4(629 2629 2630 630) +4(611 631 2631 2611) +4(630 2630 2631 631) +4(612 632 2632 2612) +4(631 2631 2632 632) +4(613 633 2633 2613) +4(632 2632 2633 633) +4(614 634 2634 2614) +4(633 2633 2634 634) +4(615 635 2635 2615) +4(634 2634 2635 635) +4(616 636 2636 2616) +4(635 2635 2636 636) +4(617 637 2637 2617) +4(636 2636 2637 637) +4(618 638 2638 2618) +4(637 2637 2638 638) +4(638 2638 2639 639) +4(621 641 2641 2621) +4(640 2640 2641 641) +4(622 642 2642 2622) +4(641 2641 2642 642) +4(623 643 2643 2623) +4(642 2642 2643 643) +4(624 644 2644 2624) +4(643 2643 2644 644) +4(625 645 2645 2625) +4(644 2644 2645 645) +4(626 646 2646 2626) +4(645 2645 2646 646) +4(627 647 2647 2627) +4(646 2646 2647 647) +4(628 648 2648 2628) +4(647 2647 2648 648) +4(629 649 2649 2629) +4(648 2648 2649 649) +4(630 650 2650 2630) +4(649 2649 2650 650) +4(631 651 2651 2631) +4(650 2650 2651 651) +4(632 652 2652 2632) +4(651 2651 2652 652) +4(633 653 2653 2633) +4(652 2652 2653 653) +4(634 654 2654 2634) +4(653 2653 2654 654) +4(635 655 2655 2635) +4(654 2654 2655 655) +4(636 656 2656 2636) +4(655 2655 2656 656) +4(637 657 2657 2637) +4(656 2656 2657 657) +4(638 658 2658 2638) +4(657 2657 2658 658) +4(658 2658 2659 659) +4(641 661 2661 2641) +4(660 2660 2661 661) +4(642 662 2662 2642) +4(661 2661 2662 662) +4(643 663 2663 2643) +4(662 2662 2663 663) +4(644 664 2664 2644) +4(663 2663 2664 664) +4(645 665 2665 2645) +4(664 2664 2665 665) +4(646 666 2666 2646) +4(665 2665 2666 666) +4(647 667 2667 2647) +4(666 2666 2667 667) +4(648 668 2668 2648) +4(667 2667 2668 668) +4(649 669 2669 2649) +4(668 2668 2669 669) +4(650 670 2670 2650) +4(669 2669 2670 670) +4(651 671 2671 2651) +4(670 2670 2671 671) +4(652 672 2672 2652) +4(671 2671 2672 672) +4(653 673 2673 2653) +4(672 2672 2673 673) +4(654 674 2674 2654) +4(673 2673 2674 674) +4(655 675 2675 2655) +4(674 2674 2675 675) +4(656 676 2676 2656) +4(675 2675 2676 676) +4(657 677 2677 2657) +4(676 2676 2677 677) +4(658 678 2678 2658) +4(677 2677 2678 678) +4(678 2678 2679 679) +4(661 681 2681 2661) +4(680 2680 2681 681) +4(662 682 2682 2662) +4(681 2681 2682 682) +4(663 683 2683 2663) +4(682 2682 2683 683) +4(664 684 2684 2664) +4(683 2683 2684 684) +4(665 685 2685 2665) +4(684 2684 2685 685) +4(666 686 2686 2666) +4(685 2685 2686 686) +4(667 687 2687 2667) +4(686 2686 2687 687) +4(668 688 2688 2668) +4(687 2687 2688 688) +4(669 689 2689 2669) +4(688 2688 2689 689) +4(670 690 2690 2670) +4(689 2689 2690 690) +4(671 691 2691 2671) +4(690 2690 2691 691) +4(672 692 2692 2672) +4(691 2691 2692 692) +4(673 693 2693 2673) +4(692 2692 2693 693) +4(674 694 2694 2674) +4(693 2693 2694 694) +4(675 695 2695 2675) +4(694 2694 2695 695) +4(676 696 2696 2676) +4(695 2695 2696 696) +4(677 697 2697 2677) +4(696 2696 2697 697) +4(678 698 2698 2678) +4(697 2697 2698 698) +4(698 2698 2699 699) +4(681 701 2701 2681) +4(700 2700 2701 701) +4(682 702 2702 2682) +4(701 2701 2702 702) +4(683 703 2703 2683) +4(702 2702 2703 703) +4(684 704 2704 2684) +4(703 2703 2704 704) +4(685 705 2705 2685) +4(704 2704 2705 705) +4(686 706 2706 2686) +4(705 2705 2706 706) +4(687 707 2707 2687) +4(706 2706 2707 707) +4(688 708 2708 2688) +4(707 2707 2708 708) +4(689 709 2709 2689) +4(708 2708 2709 709) +4(690 710 2710 2690) +4(709 2709 2710 710) +4(691 711 2711 2691) +4(710 2710 2711 711) +4(692 712 2712 2692) +4(711 2711 2712 712) +4(693 713 2713 2693) +4(712 2712 2713 713) +4(694 714 2714 2694) +4(713 2713 2714 714) +4(695 715 2715 2695) +4(714 2714 2715 715) +4(696 716 2716 2696) +4(715 2715 2716 716) +4(697 717 2717 2697) +4(716 2716 2717 717) +4(698 718 2718 2698) +4(717 2717 2718 718) +4(718 2718 2719 719) +4(701 721 2721 2701) +4(720 2720 2721 721) +4(702 722 2722 2702) +4(721 2721 2722 722) +4(703 723 2723 2703) +4(722 2722 2723 723) +4(704 724 2724 2704) +4(723 2723 2724 724) +4(705 725 2725 2705) +4(724 2724 2725 725) +4(706 726 2726 2706) +4(725 2725 2726 726) +4(707 727 2727 2707) +4(726 2726 2727 727) +4(708 728 2728 2708) +4(727 2727 2728 728) +4(709 729 2729 2709) +4(728 2728 2729 729) +4(710 730 2730 2710) +4(729 2729 2730 730) +4(711 731 2731 2711) +4(730 2730 2731 731) +4(712 732 2732 2712) +4(731 2731 2732 732) +4(713 733 2733 2713) +4(732 2732 2733 733) +4(714 734 2734 2714) +4(733 2733 2734 734) +4(715 735 2735 2715) +4(734 2734 2735 735) +4(716 736 2736 2716) +4(735 2735 2736 736) +4(717 737 2737 2717) +4(736 2736 2737 737) +4(718 738 2738 2718) +4(737 2737 2738 738) +4(738 2738 2739 739) +4(721 741 2741 2721) +4(740 2740 2741 741) +4(722 742 2742 2722) +4(741 2741 2742 742) +4(723 743 2743 2723) +4(742 2742 2743 743) +4(724 744 2744 2724) +4(743 2743 2744 744) +4(725 745 2745 2725) +4(744 2744 2745 745) +4(726 746 2746 2726) +4(745 2745 2746 746) +4(727 747 2747 2727) +4(746 2746 2747 747) +4(728 748 2748 2728) +4(747 2747 2748 748) +4(729 749 2749 2729) +4(748 2748 2749 749) +4(730 750 2750 2730) +4(749 2749 2750 750) +4(731 751 2751 2731) +4(750 2750 2751 751) +4(732 752 2752 2732) +4(751 2751 2752 752) +4(733 753 2753 2733) +4(752 2752 2753 753) +4(734 754 2754 2734) +4(753 2753 2754 754) +4(735 755 2755 2735) +4(754 2754 2755 755) +4(736 756 2756 2736) +4(755 2755 2756 756) +4(737 757 2757 2737) +4(756 2756 2757 757) +4(738 758 2758 2738) +4(757 2757 2758 758) +4(758 2758 2759 759) +4(741 761 2761 2741) +4(760 2760 2761 761) +4(742 762 2762 2742) +4(761 2761 2762 762) +4(743 763 2763 2743) +4(762 2762 2763 763) +4(744 764 2764 2744) +4(763 2763 2764 764) +4(745 765 2765 2745) +4(764 2764 2765 765) +4(746 766 2766 2746) +4(765 2765 2766 766) +4(747 767 2767 2747) +4(766 2766 2767 767) +4(748 768 2768 2748) +4(767 2767 2768 768) +4(749 769 2769 2749) +4(768 2768 2769 769) +4(750 770 2770 2750) +4(769 2769 2770 770) +4(751 771 2771 2751) +4(770 2770 2771 771) +4(752 772 2772 2752) +4(771 2771 2772 772) +4(753 773 2773 2753) +4(772 2772 2773 773) +4(754 774 2774 2754) +4(773 2773 2774 774) +4(755 775 2775 2755) +4(774 2774 2775 775) +4(756 776 2776 2756) +4(775 2775 2776 776) +4(757 777 2777 2757) +4(776 2776 2777 777) +4(758 778 2778 2758) +4(777 2777 2778 778) +4(778 2778 2779 779) +4(761 781 2781 2761) +4(780 2780 2781 781) +4(762 782 2782 2762) +4(781 2781 2782 782) +4(763 783 2783 2763) +4(782 2782 2783 783) +4(764 784 2784 2764) +4(783 2783 2784 784) +4(765 785 2785 2765) +4(784 2784 2785 785) +4(766 786 2786 2766) +4(785 2785 2786 786) +4(767 787 2787 2767) +4(786 2786 2787 787) +4(768 788 2788 2768) +4(787 2787 2788 788) +4(769 789 2789 2769) +4(788 2788 2789 789) +4(770 790 2790 2770) +4(789 2789 2790 790) +4(771 791 2791 2771) +4(790 2790 2791 791) +4(772 792 2792 2772) +4(791 2791 2792 792) +4(773 793 2793 2773) +4(792 2792 2793 793) +4(774 794 2794 2774) +4(793 2793 2794 794) +4(775 795 2795 2775) +4(794 2794 2795 795) +4(776 796 2796 2776) +4(795 2795 2796 796) +4(777 797 2797 2777) +4(796 2796 2797 797) +4(778 798 2798 2778) +4(797 2797 2798 798) +4(798 2798 2799 799) +4(781 801 2801 2781) +4(800 2800 2801 801) +4(782 802 2802 2782) +4(801 2801 2802 802) +4(783 803 2803 2783) +4(802 2802 2803 803) +4(784 804 2804 2784) +4(803 2803 2804 804) +4(785 805 2805 2785) +4(804 2804 2805 805) +4(786 806 2806 2786) +4(805 2805 2806 806) +4(787 807 2807 2787) +4(806 2806 2807 807) +4(788 808 2808 2788) +4(807 2807 2808 808) +4(789 809 2809 2789) +4(808 2808 2809 809) +4(790 810 2810 2790) +4(809 2809 2810 810) +4(791 811 2811 2791) +4(810 2810 2811 811) +4(792 812 2812 2792) +4(811 2811 2812 812) +4(793 813 2813 2793) +4(812 2812 2813 813) +4(794 814 2814 2794) +4(813 2813 2814 814) +4(795 815 2815 2795) +4(814 2814 2815 815) +4(796 816 2816 2796) +4(815 2815 2816 816) +4(797 817 2817 2797) +4(816 2816 2817 817) +4(798 818 2818 2798) +4(817 2817 2818 818) +4(818 2818 2819 819) +4(801 821 2821 2801) +4(820 2820 2821 821) +4(802 822 2822 2802) +4(821 2821 2822 822) +4(803 823 2823 2803) +4(822 2822 2823 823) +4(804 824 2824 2804) +4(823 2823 2824 824) +4(805 825 2825 2805) +4(824 2824 2825 825) +4(806 826 2826 2806) +4(825 2825 2826 826) +4(807 827 2827 2807) +4(826 2826 2827 827) +4(808 828 2828 2808) +4(827 2827 2828 828) +4(809 829 2829 2809) +4(828 2828 2829 829) +4(810 830 2830 2810) +4(829 2829 2830 830) +4(811 831 2831 2811) +4(830 2830 2831 831) +4(812 832 2832 2812) +4(831 2831 2832 832) +4(813 833 2833 2813) +4(832 2832 2833 833) +4(814 834 2834 2814) +4(833 2833 2834 834) +4(815 835 2835 2815) +4(834 2834 2835 835) +4(816 836 2836 2816) +4(835 2835 2836 836) +4(817 837 2837 2817) +4(836 2836 2837 837) +4(818 838 2838 2818) +4(837 2837 2838 838) +4(838 2838 2839 839) +4(821 841 2841 2821) +4(840 2840 2841 841) +4(822 842 2842 2822) +4(841 2841 2842 842) +4(823 843 2843 2823) +4(842 2842 2843 843) +4(824 844 2844 2824) +4(843 2843 2844 844) +4(825 845 2845 2825) +4(844 2844 2845 845) +4(826 846 2846 2826) +4(845 2845 2846 846) +4(827 847 2847 2827) +4(846 2846 2847 847) +4(828 848 2848 2828) +4(847 2847 2848 848) +4(829 849 2849 2829) +4(848 2848 2849 849) +4(830 850 2850 2830) +4(849 2849 2850 850) +4(831 851 2851 2831) +4(850 2850 2851 851) +4(832 852 2852 2832) +4(851 2851 2852 852) +4(833 853 2853 2833) +4(852 2852 2853 853) +4(834 854 2854 2834) +4(853 2853 2854 854) +4(835 855 2855 2835) +4(854 2854 2855 855) +4(836 856 2856 2836) +4(855 2855 2856 856) +4(837 857 2857 2837) +4(856 2856 2857 857) +4(838 858 2858 2838) +4(857 2857 2858 858) +4(858 2858 2859 859) +4(841 861 2861 2841) +4(860 2860 2861 861) +4(842 862 2862 2842) +4(861 2861 2862 862) +4(843 863 2863 2843) +4(862 2862 2863 863) +4(844 864 2864 2844) +4(863 2863 2864 864) +4(845 865 2865 2845) +4(864 2864 2865 865) +4(846 866 2866 2846) +4(865 2865 2866 866) +4(847 867 2867 2847) +4(866 2866 2867 867) +4(848 868 2868 2848) +4(867 2867 2868 868) +4(849 869 2869 2849) +4(868 2868 2869 869) +4(850 870 2870 2850) +4(869 2869 2870 870) +4(851 871 2871 2851) +4(870 2870 2871 871) +4(852 872 2872 2852) +4(871 2871 2872 872) +4(853 873 2873 2853) +4(872 2872 2873 873) +4(854 874 2874 2854) +4(873 2873 2874 874) +4(855 875 2875 2855) +4(874 2874 2875 875) +4(856 876 2876 2856) +4(875 2875 2876 876) +4(857 877 2877 2857) +4(876 2876 2877 877) +4(858 878 2878 2858) +4(877 2877 2878 878) +4(878 2878 2879 879) +4(861 881 2881 2861) +4(880 2880 2881 881) +4(862 882 2882 2862) +4(881 2881 2882 882) +4(863 883 2883 2863) +4(882 2882 2883 883) +4(864 884 2884 2864) +4(883 2883 2884 884) +4(865 885 2885 2865) +4(884 2884 2885 885) +4(866 886 2886 2866) +4(885 2885 2886 886) +4(867 887 2887 2867) +4(886 2886 2887 887) +4(868 888 2888 2868) +4(887 2887 2888 888) +4(869 889 2889 2869) +4(888 2888 2889 889) +4(870 890 2890 2870) +4(889 2889 2890 890) +4(871 891 2891 2871) +4(890 2890 2891 891) +4(872 892 2892 2872) +4(891 2891 2892 892) +4(873 893 2893 2873) +4(892 2892 2893 893) +4(874 894 2894 2874) +4(893 2893 2894 894) +4(875 895 2895 2875) +4(894 2894 2895 895) +4(876 896 2896 2876) +4(895 2895 2896 896) +4(877 897 2897 2877) +4(896 2896 2897 897) +4(878 898 2898 2878) +4(897 2897 2898 898) +4(898 2898 2899 899) +4(881 901 2901 2881) +4(900 2900 2901 901) +4(882 902 2902 2882) +4(901 2901 2902 902) +4(883 903 2903 2883) +4(902 2902 2903 903) +4(884 904 2904 2884) +4(903 2903 2904 904) +4(885 905 2905 2885) +4(904 2904 2905 905) +4(886 906 2906 2886) +4(905 2905 2906 906) +4(887 907 2907 2887) +4(906 2906 2907 907) +4(888 908 2908 2888) +4(907 2907 2908 908) +4(889 909 2909 2889) +4(908 2908 2909 909) +4(890 910 2910 2890) +4(909 2909 2910 910) +4(891 911 2911 2891) +4(910 2910 2911 911) +4(892 912 2912 2892) +4(911 2911 2912 912) +4(893 913 2913 2893) +4(912 2912 2913 913) +4(894 914 2914 2894) +4(913 2913 2914 914) +4(895 915 2915 2895) +4(914 2914 2915 915) +4(896 916 2916 2896) +4(915 2915 2916 916) +4(897 917 2917 2897) +4(916 2916 2917 917) +4(898 918 2918 2898) +4(917 2917 2918 918) +4(918 2918 2919 919) +4(901 921 2921 2901) +4(920 2920 2921 921) +4(902 922 2922 2902) +4(921 2921 2922 922) +4(903 923 2923 2903) +4(922 2922 2923 923) +4(904 924 2924 2904) +4(923 2923 2924 924) +4(905 925 2925 2905) +4(924 2924 2925 925) +4(906 926 2926 2906) +4(925 2925 2926 926) +4(907 927 2927 2907) +4(926 2926 2927 927) +4(908 928 2928 2908) +4(927 2927 2928 928) +4(909 929 2929 2909) +4(928 2928 2929 929) +4(910 930 2930 2910) +4(929 2929 2930 930) +4(911 931 2931 2911) +4(930 2930 2931 931) +4(912 932 2932 2912) +4(931 2931 2932 932) +4(913 933 2933 2913) +4(932 2932 2933 933) +4(914 934 2934 2914) +4(933 2933 2934 934) +4(915 935 2935 2915) +4(934 2934 2935 935) +4(916 936 2936 2916) +4(935 2935 2936 936) +4(917 937 2937 2917) +4(936 2936 2937 937) +4(918 938 2938 2918) +4(937 2937 2938 938) +4(938 2938 2939 939) +4(921 941 2941 2921) +4(940 2940 2941 941) +4(922 942 2942 2922) +4(941 2941 2942 942) +4(923 943 2943 2923) +4(942 2942 2943 943) +4(924 944 2944 2924) +4(943 2943 2944 944) +4(925 945 2945 2925) +4(944 2944 2945 945) +4(926 946 2946 2926) +4(945 2945 2946 946) +4(927 947 2947 2927) +4(946 2946 2947 947) +4(928 948 2948 2928) +4(947 2947 2948 948) +4(929 949 2949 2929) +4(948 2948 2949 949) +4(930 950 2950 2930) +4(949 2949 2950 950) +4(931 951 2951 2931) +4(950 2950 2951 951) +4(932 952 2952 2932) +4(951 2951 2952 952) +4(933 953 2953 2933) +4(952 2952 2953 953) +4(934 954 2954 2934) +4(953 2953 2954 954) +4(935 955 2955 2935) +4(954 2954 2955 955) +4(936 956 2956 2936) +4(955 2955 2956 956) +4(937 957 2957 2937) +4(956 2956 2957 957) +4(938 958 2958 2938) +4(957 2957 2958 958) +4(958 2958 2959 959) +4(941 961 2961 2941) +4(960 2960 2961 961) +4(942 962 2962 2942) +4(961 2961 2962 962) +4(943 963 2963 2943) +4(962 2962 2963 963) +4(944 964 2964 2944) +4(963 2963 2964 964) +4(945 965 2965 2945) +4(964 2964 2965 965) +4(946 966 2966 2946) +4(965 2965 2966 966) +4(947 967 2967 2947) +4(966 2966 2967 967) +4(948 968 2968 2948) +4(967 2967 2968 968) +4(949 969 2969 2949) +4(968 2968 2969 969) +4(950 970 2970 2950) +4(969 2969 2970 970) +4(951 971 2971 2951) +4(970 2970 2971 971) +4(952 972 2972 2952) +4(971 2971 2972 972) +4(953 973 2973 2953) +4(972 2972 2973 973) +4(954 974 2974 2954) +4(973 2973 2974 974) +4(955 975 2975 2955) +4(974 2974 2975 975) +4(956 976 2976 2956) +4(975 2975 2976 976) +4(957 977 2977 2957) +4(976 2976 2977 977) +4(958 978 2978 2958) +4(977 2977 2978 978) +4(978 2978 2979 979) +4(961 981 2981 2961) +4(980 2980 2981 981) +4(962 982 2982 2962) +4(981 2981 2982 982) +4(963 983 2983 2963) +4(982 2982 2983 983) +4(964 984 2984 2964) +4(983 2983 2984 984) +4(965 985 2985 2965) +4(984 2984 2985 985) +4(966 986 2986 2966) +4(985 2985 2986 986) +4(967 987 2987 2967) +4(986 2986 2987 987) +4(968 988 2988 2968) +4(987 2987 2988 988) +4(969 989 2989 2969) +4(988 2988 2989 989) +4(970 990 2990 2970) +4(989 2989 2990 990) +4(971 991 2991 2971) +4(990 2990 2991 991) +4(972 992 2992 2972) +4(991 2991 2992 992) +4(973 993 2993 2973) +4(992 2992 2993 993) +4(974 994 2994 2974) +4(993 2993 2994 994) +4(975 995 2995 2975) +4(994 2994 2995 995) +4(976 996 2996 2976) +4(995 2995 2996 996) +4(977 997 2997 2977) +4(996 2996 2997 997) +4(978 998 2998 2978) +4(997 2997 2998 998) +4(998 2998 2999 999) +4(981 1001 3001 2981) +4(1000 3000 3001 1001) +4(982 1002 3002 2982) +4(1001 3001 3002 1002) +4(983 1003 3003 2983) +4(1002 3002 3003 1003) +4(984 1004 3004 2984) +4(1003 3003 3004 1004) +4(985 1005 3005 2985) +4(1004 3004 3005 1005) +4(986 1006 3006 2986) +4(1005 3005 3006 1006) +4(987 1007 3007 2987) +4(1006 3006 3007 1007) +4(988 1008 3008 2988) +4(1007 3007 3008 1008) +4(989 1009 3009 2989) +4(1008 3008 3009 1009) +4(990 1010 3010 2990) +4(1009 3009 3010 1010) +4(991 1011 3011 2991) +4(1010 3010 3011 1011) +4(992 1012 3012 2992) +4(1011 3011 3012 1012) +4(993 1013 3013 2993) +4(1012 3012 3013 1013) +4(994 1014 3014 2994) +4(1013 3013 3014 1014) +4(995 1015 3015 2995) +4(1014 3014 3015 1015) +4(996 1016 3016 2996) +4(1015 3015 3016 1016) +4(997 1017 3017 2997) +4(1016 3016 3017 1017) +4(998 1018 3018 2998) +4(1017 3017 3018 1018) +4(1018 3018 3019 1019) +4(1001 1021 3021 3001) +4(1020 3020 3021 1021) +4(1002 1022 3022 3002) +4(1021 3021 3022 1022) +4(1003 1023 3023 3003) +4(1022 3022 3023 1023) +4(1004 1024 3024 3004) +4(1023 3023 3024 1024) +4(1005 1025 3025 3005) +4(1024 3024 3025 1025) +4(1006 1026 3026 3006) +4(1025 3025 3026 1026) +4(1007 1027 3027 3007) +4(1026 3026 3027 1027) +4(1008 1028 3028 3008) +4(1027 3027 3028 1028) +4(1009 1029 3029 3009) +4(1028 3028 3029 1029) +4(1010 1030 3030 3010) +4(1029 3029 3030 1030) +4(1011 1031 3031 3011) +4(1030 3030 3031 1031) +4(1012 1032 3032 3012) +4(1031 3031 3032 1032) +4(1013 1033 3033 3013) +4(1032 3032 3033 1033) +4(1014 1034 3034 3014) +4(1033 3033 3034 1034) +4(1015 1035 3035 3015) +4(1034 3034 3035 1035) +4(1016 1036 3036 3016) +4(1035 3035 3036 1036) +4(1017 1037 3037 3017) +4(1036 3036 3037 1037) +4(1018 1038 3038 3018) +4(1037 3037 3038 1038) +4(1038 3038 3039 1039) +4(1021 1041 3041 3021) +4(1040 3040 3041 1041) +4(1022 1042 3042 3022) +4(1041 3041 3042 1042) +4(1023 1043 3043 3023) +4(1042 3042 3043 1043) +4(1024 1044 3044 3024) +4(1043 3043 3044 1044) +4(1025 1045 3045 3025) +4(1044 3044 3045 1045) +4(1026 1046 3046 3026) +4(1045 3045 3046 1046) +4(1027 1047 3047 3027) +4(1046 3046 3047 1047) +4(1028 1048 3048 3028) +4(1047 3047 3048 1048) +4(1029 1049 3049 3029) +4(1048 3048 3049 1049) +4(1030 1050 3050 3030) +4(1049 3049 3050 1050) +4(1031 1051 3051 3031) +4(1050 3050 3051 1051) +4(1032 1052 3052 3032) +4(1051 3051 3052 1052) +4(1033 1053 3053 3033) +4(1052 3052 3053 1053) +4(1034 1054 3054 3034) +4(1053 3053 3054 1054) +4(1035 1055 3055 3035) +4(1054 3054 3055 1055) +4(1036 1056 3056 3036) +4(1055 3055 3056 1056) +4(1037 1057 3057 3037) +4(1056 3056 3057 1057) +4(1038 1058 3058 3038) +4(1057 3057 3058 1058) +4(1058 3058 3059 1059) +4(1041 1061 3061 3041) +4(1060 3060 3061 1061) +4(1042 1062 3062 3042) +4(1061 3061 3062 1062) +4(1043 1063 3063 3043) +4(1062 3062 3063 1063) +4(1044 1064 3064 3044) +4(1063 3063 3064 1064) +4(1045 1065 3065 3045) +4(1064 3064 3065 1065) +4(1046 1066 3066 3046) +4(1065 3065 3066 1066) +4(1047 1067 3067 3047) +4(1066 3066 3067 1067) +4(1048 1068 3068 3048) +4(1067 3067 3068 1068) +4(1049 1069 3069 3049) +4(1068 3068 3069 1069) +4(1050 1070 3070 3050) +4(1069 3069 3070 1070) +4(1051 1071 3071 3051) +4(1070 3070 3071 1071) +4(1052 1072 3072 3052) +4(1071 3071 3072 1072) +4(1053 1073 3073 3053) +4(1072 3072 3073 1073) +4(1054 1074 3074 3054) +4(1073 3073 3074 1074) +4(1055 1075 3075 3055) +4(1074 3074 3075 1075) +4(1056 1076 3076 3056) +4(1075 3075 3076 1076) +4(1057 1077 3077 3057) +4(1076 3076 3077 1077) +4(1058 1078 3078 3058) +4(1077 3077 3078 1078) +4(1078 3078 3079 1079) +4(1061 1081 3081 3061) +4(1080 3080 3081 1081) +4(1062 1082 3082 3062) +4(1081 3081 3082 1082) +4(1063 1083 3083 3063) +4(1082 3082 3083 1083) +4(1064 1084 3084 3064) +4(1083 3083 3084 1084) +4(1065 1085 3085 3065) +4(1084 3084 3085 1085) +4(1066 1086 3086 3066) +4(1085 3085 3086 1086) +4(1067 1087 3087 3067) +4(1086 3086 3087 1087) +4(1068 1088 3088 3068) +4(1087 3087 3088 1088) +4(1069 1089 3089 3069) +4(1088 3088 3089 1089) +4(1070 1090 3090 3070) +4(1089 3089 3090 1090) +4(1071 1091 3091 3071) +4(1090 3090 3091 1091) +4(1072 1092 3092 3072) +4(1091 3091 3092 1092) +4(1073 1093 3093 3073) +4(1092 3092 3093 1093) +4(1074 1094 3094 3074) +4(1093 3093 3094 1094) +4(1075 1095 3095 3075) +4(1094 3094 3095 1095) +4(1076 1096 3096 3076) +4(1095 3095 3096 1096) +4(1077 1097 3097 3077) +4(1096 3096 3097 1097) +4(1078 1098 3098 3078) +4(1097 3097 3098 1098) +4(1098 3098 3099 1099) +4(1081 1101 3101 3081) +4(1100 3100 3101 1101) +4(1082 1102 3102 3082) +4(1101 3101 3102 1102) +4(1083 1103 3103 3083) +4(1102 3102 3103 1103) +4(1084 1104 3104 3084) +4(1103 3103 3104 1104) +4(1085 1105 3105 3085) +4(1104 3104 3105 1105) +4(1086 1106 3106 3086) +4(1105 3105 3106 1106) +4(1087 1107 3107 3087) +4(1106 3106 3107 1107) +4(1088 1108 3108 3088) +4(1107 3107 3108 1108) +4(1089 1109 3109 3089) +4(1108 3108 3109 1109) +4(1090 1110 3110 3090) +4(1109 3109 3110 1110) +4(1091 1111 3111 3091) +4(1110 3110 3111 1111) +4(1092 1112 3112 3092) +4(1111 3111 3112 1112) +4(1093 1113 3113 3093) +4(1112 3112 3113 1113) +4(1094 1114 3114 3094) +4(1113 3113 3114 1114) +4(1095 1115 3115 3095) +4(1114 3114 3115 1115) +4(1096 1116 3116 3096) +4(1115 3115 3116 1116) +4(1097 1117 3117 3097) +4(1116 3116 3117 1117) +4(1098 1118 3118 3098) +4(1117 3117 3118 1118) +4(1118 3118 3119 1119) +4(1101 1121 3121 3101) +4(1120 3120 3121 1121) +4(1102 1122 3122 3102) +4(1121 3121 3122 1122) +4(1103 1123 3123 3103) +4(1122 3122 3123 1123) +4(1104 1124 3124 3104) +4(1123 3123 3124 1124) +4(1105 1125 3125 3105) +4(1124 3124 3125 1125) +4(1106 1126 3126 3106) +4(1125 3125 3126 1126) +4(1107 1127 3127 3107) +4(1126 3126 3127 1127) +4(1108 1128 3128 3108) +4(1127 3127 3128 1128) +4(1109 1129 3129 3109) +4(1128 3128 3129 1129) +4(1110 1130 3130 3110) +4(1129 3129 3130 1130) +4(1111 1131 3131 3111) +4(1130 3130 3131 1131) +4(1112 1132 3132 3112) +4(1131 3131 3132 1132) +4(1113 1133 3133 3113) +4(1132 3132 3133 1133) +4(1114 1134 3134 3114) +4(1133 3133 3134 1134) +4(1115 1135 3135 3115) +4(1134 3134 3135 1135) +4(1116 1136 3136 3116) +4(1135 3135 3136 1136) +4(1117 1137 3137 3117) +4(1136 3136 3137 1137) +4(1118 1138 3138 3118) +4(1137 3137 3138 1138) +4(1138 3138 3139 1139) +4(1121 1141 3141 3121) +4(1140 3140 3141 1141) +4(1122 1142 3142 3122) +4(1141 3141 3142 1142) +4(1123 1143 3143 3123) +4(1142 3142 3143 1143) +4(1124 1144 3144 3124) +4(1143 3143 3144 1144) +4(1125 1145 3145 3125) +4(1144 3144 3145 1145) +4(1126 1146 3146 3126) +4(1145 3145 3146 1146) +4(1127 1147 3147 3127) +4(1146 3146 3147 1147) +4(1128 1148 3148 3128) +4(1147 3147 3148 1148) +4(1129 1149 3149 3129) +4(1148 3148 3149 1149) +4(1130 1150 3150 3130) +4(1149 3149 3150 1150) +4(1131 1151 3151 3131) +4(1150 3150 3151 1151) +4(1132 1152 3152 3132) +4(1151 3151 3152 1152) +4(1133 1153 3153 3133) +4(1152 3152 3153 1153) +4(1134 1154 3154 3134) +4(1153 3153 3154 1154) +4(1135 1155 3155 3135) +4(1154 3154 3155 1155) +4(1136 1156 3156 3136) +4(1155 3155 3156 1156) +4(1137 1157 3157 3137) +4(1156 3156 3157 1157) +4(1138 1158 3158 3138) +4(1157 3157 3158 1158) +4(1158 3158 3159 1159) +4(1141 1161 3161 3141) +4(1160 3160 3161 1161) +4(1142 1162 3162 3142) +4(1161 3161 3162 1162) +4(1143 1163 3163 3143) +4(1162 3162 3163 1163) +4(1144 1164 3164 3144) +4(1163 3163 3164 1164) +4(1145 1165 3165 3145) +4(1164 3164 3165 1165) +4(1146 1166 3166 3146) +4(1165 3165 3166 1166) +4(1147 1167 3167 3147) +4(1166 3166 3167 1167) +4(1148 1168 3168 3148) +4(1167 3167 3168 1168) +4(1149 1169 3169 3149) +4(1168 3168 3169 1169) +4(1150 1170 3170 3150) +4(1169 3169 3170 1170) +4(1151 1171 3171 3151) +4(1170 3170 3171 1171) +4(1152 1172 3172 3152) +4(1171 3171 3172 1172) +4(1153 1173 3173 3153) +4(1172 3172 3173 1173) +4(1154 1174 3174 3154) +4(1173 3173 3174 1174) +4(1155 1175 3175 3155) +4(1174 3174 3175 1175) +4(1156 1176 3176 3156) +4(1175 3175 3176 1176) +4(1157 1177 3177 3157) +4(1176 3176 3177 1177) +4(1158 1178 3178 3158) +4(1177 3177 3178 1178) +4(1178 3178 3179 1179) +4(1161 1181 3181 3161) +4(1180 3180 3181 1181) +4(1162 1182 3182 3162) +4(1181 3181 3182 1182) +4(1163 1183 3183 3163) +4(1182 3182 3183 1183) +4(1164 1184 3184 3164) +4(1183 3183 3184 1184) +4(1165 1185 3185 3165) +4(1184 3184 3185 1185) +4(1166 1186 3186 3166) +4(1185 3185 3186 1186) +4(1167 1187 3187 3167) +4(1186 3186 3187 1187) +4(1168 1188 3188 3168) +4(1187 3187 3188 1188) +4(1169 1189 3189 3169) +4(1188 3188 3189 1189) +4(1170 1190 3190 3170) +4(1189 3189 3190 1190) +4(1171 1191 3191 3171) +4(1190 3190 3191 1191) +4(1172 1192 3192 3172) +4(1191 3191 3192 1192) +4(1173 1193 3193 3173) +4(1192 3192 3193 1193) +4(1174 1194 3194 3174) +4(1193 3193 3194 1194) +4(1175 1195 3195 3175) +4(1194 3194 3195 1195) +4(1176 1196 3196 3176) +4(1195 3195 3196 1196) +4(1177 1197 3197 3177) +4(1196 3196 3197 1197) +4(1178 1198 3198 3178) +4(1197 3197 3198 1198) +4(1198 3198 3199 1199) +4(1181 1201 3201 3181) +4(1200 3200 3201 1201) +4(1182 1202 3202 3182) +4(1201 3201 3202 1202) +4(1183 1203 3203 3183) +4(1202 3202 3203 1203) +4(1184 1204 3204 3184) +4(1203 3203 3204 1204) +4(1185 1205 3205 3185) +4(1204 3204 3205 1205) +4(1186 1206 3206 3186) +4(1205 3205 3206 1206) +4(1187 1207 3207 3187) +4(1206 3206 3207 1207) +4(1188 1208 3208 3188) +4(1207 3207 3208 1208) +4(1189 1209 3209 3189) +4(1208 3208 3209 1209) +4(1190 1210 3210 3190) +4(1209 3209 3210 1210) +4(1191 1211 3211 3191) +4(1210 3210 3211 1211) +4(1192 1212 3212 3192) +4(1211 3211 3212 1212) +4(1193 1213 3213 3193) +4(1212 3212 3213 1213) +4(1194 1214 3214 3194) +4(1213 3213 3214 1214) +4(1195 1215 3215 3195) +4(1214 3214 3215 1215) +4(1196 1216 3216 3196) +4(1215 3215 3216 1216) +4(1197 1217 3217 3197) +4(1216 3216 3217 1217) +4(1198 1218 3218 3198) +4(1217 3217 3218 1218) +4(1218 3218 3219 1219) +4(1201 1221 3221 3201) +4(1220 3220 3221 1221) +4(1202 1222 3222 3202) +4(1221 3221 3222 1222) +4(1203 1223 3223 3203) +4(1222 3222 3223 1223) +4(1204 1224 3224 3204) +4(1223 3223 3224 1224) +4(1205 1225 3225 3205) +4(1224 3224 3225 1225) +4(1206 1226 3226 3206) +4(1225 3225 3226 1226) +4(1207 1227 3227 3207) +4(1226 3226 3227 1227) +4(1208 1228 3228 3208) +4(1227 3227 3228 1228) +4(1209 1229 3229 3209) +4(1228 3228 3229 1229) +4(1210 1230 3230 3210) +4(1229 3229 3230 1230) +4(1211 1231 3231 3211) +4(1230 3230 3231 1231) +4(1212 1232 3232 3212) +4(1231 3231 3232 1232) +4(1213 1233 3233 3213) +4(1232 3232 3233 1233) +4(1214 1234 3234 3214) +4(1233 3233 3234 1234) +4(1215 1235 3235 3215) +4(1234 3234 3235 1235) +4(1216 1236 3236 3216) +4(1235 3235 3236 1236) +4(1217 1237 3237 3217) +4(1236 3236 3237 1237) +4(1218 1238 3238 3218) +4(1237 3237 3238 1238) +4(1238 3238 3239 1239) +4(1221 1241 3241 3221) +4(1240 3240 3241 1241) +4(1222 1242 3242 3222) +4(1241 3241 3242 1242) +4(1223 1243 3243 3223) +4(1242 3242 3243 1243) +4(1224 1244 3244 3224) +4(1243 3243 3244 1244) +4(1225 1245 3245 3225) +4(1244 3244 3245 1245) +4(1226 1246 3246 3226) +4(1245 3245 3246 1246) +4(1227 1247 3247 3227) +4(1246 3246 3247 1247) +4(1228 1248 3248 3228) +4(1247 3247 3248 1248) +4(1229 1249 3249 3229) +4(1248 3248 3249 1249) +4(1230 1250 3250 3230) +4(1249 3249 3250 1250) +4(1231 1251 3251 3231) +4(1250 3250 3251 1251) +4(1232 1252 3252 3232) +4(1251 3251 3252 1252) +4(1233 1253 3253 3233) +4(1252 3252 3253 1253) +4(1234 1254 3254 3234) +4(1253 3253 3254 1254) +4(1235 1255 3255 3235) +4(1254 3254 3255 1255) +4(1236 1256 3256 3236) +4(1255 3255 3256 1256) +4(1237 1257 3257 3237) +4(1256 3256 3257 1257) +4(1238 1258 3258 3238) +4(1257 3257 3258 1258) +4(1258 3258 3259 1259) +4(1241 1261 3261 3241) +4(1260 3260 3261 1261) +4(1242 1262 3262 3242) +4(1261 3261 3262 1262) +4(1243 1263 3263 3243) +4(1262 3262 3263 1263) +4(1244 1264 3264 3244) +4(1263 3263 3264 1264) +4(1245 1265 3265 3245) +4(1264 3264 3265 1265) +4(1246 1266 3266 3246) +4(1265 3265 3266 1266) +4(1247 1267 3267 3247) +4(1266 3266 3267 1267) +4(1248 1268 3268 3248) +4(1267 3267 3268 1268) +4(1249 1269 3269 3249) +4(1268 3268 3269 1269) +4(1250 1270 3270 3250) +4(1269 3269 3270 1270) +4(1251 1271 3271 3251) +4(1270 3270 3271 1271) +4(1252 1272 3272 3252) +4(1271 3271 3272 1272) +4(1253 1273 3273 3253) +4(1272 3272 3273 1273) +4(1254 1274 3274 3254) +4(1273 3273 3274 1274) +4(1255 1275 3275 3255) +4(1274 3274 3275 1275) +4(1256 1276 3276 3256) +4(1275 3275 3276 1276) +4(1257 1277 3277 3257) +4(1276 3276 3277 1277) +4(1258 1278 3278 3258) +4(1277 3277 3278 1278) +4(1278 3278 3279 1279) +4(1261 1281 3281 3261) +4(1280 3280 3281 1281) +4(1262 1282 3282 3262) +4(1281 3281 3282 1282) +4(1263 1283 3283 3263) +4(1282 3282 3283 1283) +4(1264 1284 3284 3264) +4(1283 3283 3284 1284) +4(1265 1285 3285 3265) +4(1284 3284 3285 1285) +4(1266 1286 3286 3266) +4(1285 3285 3286 1286) +4(1267 1287 3287 3267) +4(1286 3286 3287 1287) +4(1268 1288 3288 3268) +4(1287 3287 3288 1288) +4(1269 1289 3289 3269) +4(1288 3288 3289 1289) +4(1270 1290 3290 3270) +4(1289 3289 3290 1290) +4(1271 1291 3291 3271) +4(1290 3290 3291 1291) +4(1272 1292 3292 3272) +4(1291 3291 3292 1292) +4(1273 1293 3293 3273) +4(1292 3292 3293 1293) +4(1274 1294 3294 3274) +4(1293 3293 3294 1294) +4(1275 1295 3295 3275) +4(1294 3294 3295 1295) +4(1276 1296 3296 3276) +4(1295 3295 3296 1296) +4(1277 1297 3297 3277) +4(1296 3296 3297 1297) +4(1278 1298 3298 3278) +4(1297 3297 3298 1298) +4(1298 3298 3299 1299) +4(1281 1301 3301 3281) +4(1300 3300 3301 1301) +4(1282 1302 3302 3282) +4(1301 3301 3302 1302) +4(1283 1303 3303 3283) +4(1302 3302 3303 1303) +4(1284 1304 3304 3284) +4(1303 3303 3304 1304) +4(1285 1305 3305 3285) +4(1304 3304 3305 1305) +4(1286 1306 3306 3286) +4(1305 3305 3306 1306) +4(1287 1307 3307 3287) +4(1306 3306 3307 1307) +4(1288 1308 3308 3288) +4(1307 3307 3308 1308) +4(1289 1309 3309 3289) +4(1308 3308 3309 1309) +4(1290 1310 3310 3290) +4(1309 3309 3310 1310) +4(1291 1311 3311 3291) +4(1310 3310 3311 1311) +4(1292 1312 3312 3292) +4(1311 3311 3312 1312) +4(1293 1313 3313 3293) +4(1312 3312 3313 1313) +4(1294 1314 3314 3294) +4(1313 3313 3314 1314) +4(1295 1315 3315 3295) +4(1314 3314 3315 1315) +4(1296 1316 3316 3296) +4(1315 3315 3316 1316) +4(1297 1317 3317 3297) +4(1316 3316 3317 1317) +4(1298 1318 3318 3298) +4(1317 3317 3318 1318) +4(1318 3318 3319 1319) +4(1301 1321 3321 3301) +4(1320 3320 3321 1321) +4(1302 1322 3322 3302) +4(1321 3321 3322 1322) +4(1303 1323 3323 3303) +4(1322 3322 3323 1323) +4(1304 1324 3324 3304) +4(1323 3323 3324 1324) +4(1305 1325 3325 3305) +4(1324 3324 3325 1325) +4(1306 1326 3326 3306) +4(1325 3325 3326 1326) +4(1307 1327 3327 3307) +4(1326 3326 3327 1327) +4(1308 1328 3328 3308) +4(1327 3327 3328 1328) +4(1309 1329 3329 3309) +4(1328 3328 3329 1329) +4(1310 1330 3330 3310) +4(1329 3329 3330 1330) +4(1311 1331 3331 3311) +4(1330 3330 3331 1331) +4(1312 1332 3332 3312) +4(1331 3331 3332 1332) +4(1313 1333 3333 3313) +4(1332 3332 3333 1333) +4(1314 1334 3334 3314) +4(1333 3333 3334 1334) +4(1315 1335 3335 3315) +4(1334 3334 3335 1335) +4(1316 1336 3336 3316) +4(1335 3335 3336 1336) +4(1317 1337 3337 3317) +4(1336 3336 3337 1337) +4(1318 1338 3338 3318) +4(1337 3337 3338 1338) +4(1338 3338 3339 1339) +4(1321 1341 3341 3321) +4(1340 3340 3341 1341) +4(1322 1342 3342 3322) +4(1341 3341 3342 1342) +4(1323 1343 3343 3323) +4(1342 3342 3343 1343) +4(1324 1344 3344 3324) +4(1343 3343 3344 1344) +4(1325 1345 3345 3325) +4(1344 3344 3345 1345) +4(1326 1346 3346 3326) +4(1345 3345 3346 1346) +4(1327 1347 3347 3327) +4(1346 3346 3347 1347) +4(1328 1348 3348 3328) +4(1347 3347 3348 1348) +4(1329 1349 3349 3329) +4(1348 3348 3349 1349) +4(1330 1350 3350 3330) +4(1349 3349 3350 1350) +4(1331 1351 3351 3331) +4(1350 3350 3351 1351) +4(1332 1352 3352 3332) +4(1351 3351 3352 1352) +4(1333 1353 3353 3333) +4(1352 3352 3353 1353) +4(1334 1354 3354 3334) +4(1353 3353 3354 1354) +4(1335 1355 3355 3335) +4(1354 3354 3355 1355) +4(1336 1356 3356 3336) +4(1355 3355 3356 1356) +4(1337 1357 3357 3337) +4(1356 3356 3357 1357) +4(1338 1358 3358 3338) +4(1357 3357 3358 1358) +4(1358 3358 3359 1359) +4(1341 1361 3361 3341) +4(1360 3360 3361 1361) +4(1342 1362 3362 3342) +4(1361 3361 3362 1362) +4(1343 1363 3363 3343) +4(1362 3362 3363 1363) +4(1344 1364 3364 3344) +4(1363 3363 3364 1364) +4(1345 1365 3365 3345) +4(1364 3364 3365 1365) +4(1346 1366 3366 3346) +4(1365 3365 3366 1366) +4(1347 1367 3367 3347) +4(1366 3366 3367 1367) +4(1348 1368 3368 3348) +4(1367 3367 3368 1368) +4(1349 1369 3369 3349) +4(1368 3368 3369 1369) +4(1350 1370 3370 3350) +4(1369 3369 3370 1370) +4(1351 1371 3371 3351) +4(1370 3370 3371 1371) +4(1352 1372 3372 3352) +4(1371 3371 3372 1372) +4(1353 1373 3373 3353) +4(1372 3372 3373 1373) +4(1354 1374 3374 3354) +4(1373 3373 3374 1374) +4(1355 1375 3375 3355) +4(1374 3374 3375 1375) +4(1356 1376 3376 3356) +4(1375 3375 3376 1376) +4(1357 1377 3377 3357) +4(1376 3376 3377 1377) +4(1358 1378 3378 3358) +4(1377 3377 3378 1378) +4(1378 3378 3379 1379) +4(1361 1381 3381 3361) +4(1380 3380 3381 1381) +4(1362 1382 3382 3362) +4(1381 3381 3382 1382) +4(1363 1383 3383 3363) +4(1382 3382 3383 1383) +4(1364 1384 3384 3364) +4(1383 3383 3384 1384) +4(1365 1385 3385 3365) +4(1384 3384 3385 1385) +4(1366 1386 3386 3366) +4(1385 3385 3386 1386) +4(1367 1387 3387 3367) +4(1386 3386 3387 1387) +4(1368 1388 3388 3368) +4(1387 3387 3388 1388) +4(1369 1389 3389 3369) +4(1388 3388 3389 1389) +4(1370 1390 3390 3370) +4(1389 3389 3390 1390) +4(1371 1391 3391 3371) +4(1390 3390 3391 1391) +4(1372 1392 3392 3372) +4(1391 3391 3392 1392) +4(1373 1393 3393 3373) +4(1392 3392 3393 1393) +4(1374 1394 3394 3374) +4(1393 3393 3394 1394) +4(1375 1395 3395 3375) +4(1394 3394 3395 1395) +4(1376 1396 3396 3376) +4(1395 3395 3396 1396) +4(1377 1397 3397 3377) +4(1396 3396 3397 1397) +4(1378 1398 3398 3378) +4(1397 3397 3398 1398) +4(1398 3398 3399 1399) +4(1381 1401 3401 3381) +4(1400 3400 3401 1401) +4(1382 1402 3402 3382) +4(1401 3401 3402 1402) +4(1383 1403 3403 3383) +4(1402 3402 3403 1403) +4(1384 1404 3404 3384) +4(1403 3403 3404 1404) +4(1385 1405 3405 3385) +4(1404 3404 3405 1405) +4(1386 1406 3406 3386) +4(1405 3405 3406 1406) +4(1387 1407 3407 3387) +4(1406 3406 3407 1407) +4(1388 1408 3408 3388) +4(1407 3407 3408 1408) +4(1389 1409 3409 3389) +4(1408 3408 3409 1409) +4(1390 1410 3410 3390) +4(1409 3409 3410 1410) +4(1391 1411 3411 3391) +4(1410 3410 3411 1411) +4(1392 1412 3412 3392) +4(1411 3411 3412 1412) +4(1393 1413 3413 3393) +4(1412 3412 3413 1413) +4(1394 1414 3414 3394) +4(1413 3413 3414 1414) +4(1395 1415 3415 3395) +4(1414 3414 3415 1415) +4(1396 1416 3416 3396) +4(1415 3415 3416 1416) +4(1397 1417 3417 3397) +4(1416 3416 3417 1417) +4(1398 1418 3418 3398) +4(1417 3417 3418 1418) +4(1418 3418 3419 1419) +4(1401 1421 3421 3401) +4(1420 3420 3421 1421) +4(1402 1422 3422 3402) +4(1421 3421 3422 1422) +4(1403 1423 3423 3403) +4(1422 3422 3423 1423) +4(1404 1424 3424 3404) +4(1423 3423 3424 1424) +4(1405 1425 3425 3405) +4(1424 3424 3425 1425) +4(1406 1426 3426 3406) +4(1425 3425 3426 1426) +4(1407 1427 3427 3407) +4(1426 3426 3427 1427) +4(1408 1428 3428 3408) +4(1427 3427 3428 1428) +4(1409 1429 3429 3409) +4(1428 3428 3429 1429) +4(1410 1430 3430 3410) +4(1429 3429 3430 1430) +4(1411 1431 3431 3411) +4(1430 3430 3431 1431) +4(1412 1432 3432 3412) +4(1431 3431 3432 1432) +4(1413 1433 3433 3413) +4(1432 3432 3433 1433) +4(1414 1434 3434 3414) +4(1433 3433 3434 1434) +4(1415 1435 3435 3415) +4(1434 3434 3435 1435) +4(1416 1436 3436 3416) +4(1435 3435 3436 1436) +4(1417 1437 3437 3417) +4(1436 3436 3437 1437) +4(1418 1438 3438 3418) +4(1437 3437 3438 1438) +4(1438 3438 3439 1439) +4(1421 1441 3441 3421) +4(1440 3440 3441 1441) +4(1422 1442 3442 3422) +4(1441 3441 3442 1442) +4(1423 1443 3443 3423) +4(1442 3442 3443 1443) +4(1424 1444 3444 3424) +4(1443 3443 3444 1444) +4(1425 1445 3445 3425) +4(1444 3444 3445 1445) +4(1426 1446 3446 3426) +4(1445 3445 3446 1446) +4(1427 1447 3447 3427) +4(1446 3446 3447 1447) +4(1428 1448 3448 3428) +4(1447 3447 3448 1448) +4(1429 1449 3449 3429) +4(1448 3448 3449 1449) +4(1430 1450 3450 3430) +4(1449 3449 3450 1450) +4(1431 1451 3451 3431) +4(1450 3450 3451 1451) +4(1432 1452 3452 3432) +4(1451 3451 3452 1452) +4(1433 1453 3453 3433) +4(1452 3452 3453 1453) +4(1434 1454 3454 3434) +4(1453 3453 3454 1454) +4(1435 1455 3455 3435) +4(1454 3454 3455 1455) +4(1436 1456 3456 3436) +4(1455 3455 3456 1456) +4(1437 1457 3457 3437) +4(1456 3456 3457 1457) +4(1438 1458 3458 3438) +4(1457 3457 3458 1458) +4(1458 3458 3459 1459) +4(1441 1461 3461 3441) +4(1460 3460 3461 1461) +4(1442 1462 3462 3442) +4(1461 3461 3462 1462) +4(1443 1463 3463 3443) +4(1462 3462 3463 1463) +4(1444 1464 3464 3444) +4(1463 3463 3464 1464) +4(1445 1465 3465 3445) +4(1464 3464 3465 1465) +4(1446 1466 3466 3446) +4(1465 3465 3466 1466) +4(1447 1467 3467 3447) +4(1466 3466 3467 1467) +4(1448 1468 3468 3448) +4(1467 3467 3468 1468) +4(1449 1469 3469 3449) +4(1468 3468 3469 1469) +4(1450 1470 3470 3450) +4(1469 3469 3470 1470) +4(1451 1471 3471 3451) +4(1470 3470 3471 1471) +4(1452 1472 3472 3452) +4(1471 3471 3472 1472) +4(1453 1473 3473 3453) +4(1472 3472 3473 1473) +4(1454 1474 3474 3454) +4(1473 3473 3474 1474) +4(1455 1475 3475 3455) +4(1474 3474 3475 1475) +4(1456 1476 3476 3456) +4(1475 3475 3476 1476) +4(1457 1477 3477 3457) +4(1476 3476 3477 1477) +4(1458 1478 3478 3458) +4(1477 3477 3478 1478) +4(1478 3478 3479 1479) +4(1461 1481 3481 3461) +4(1480 3480 3481 1481) +4(1462 1482 3482 3462) +4(1481 3481 3482 1482) +4(1463 1483 3483 3463) +4(1482 3482 3483 1483) +4(1464 1484 3484 3464) +4(1483 3483 3484 1484) +4(1465 1485 3485 3465) +4(1484 3484 3485 1485) +4(1466 1486 3486 3466) +4(1485 3485 3486 1486) +4(1467 1487 3487 3467) +4(1486 3486 3487 1487) +4(1468 1488 3488 3468) +4(1487 3487 3488 1488) +4(1469 1489 3489 3469) +4(1488 3488 3489 1489) +4(1470 1490 3490 3470) +4(1489 3489 3490 1490) +4(1471 1491 3491 3471) +4(1490 3490 3491 1491) +4(1472 1492 3492 3472) +4(1491 3491 3492 1492) +4(1473 1493 3493 3473) +4(1492 3492 3493 1493) +4(1474 1494 3494 3474) +4(1493 3493 3494 1494) +4(1475 1495 3495 3475) +4(1494 3494 3495 1495) +4(1476 1496 3496 3476) +4(1495 3495 3496 1496) +4(1477 1497 3497 3477) +4(1496 3496 3497 1497) +4(1478 1498 3498 3478) +4(1497 3497 3498 1498) +4(1498 3498 3499 1499) +4(1481 1501 3501 3481) +4(1500 3500 3501 1501) +4(1482 1502 3502 3482) +4(1501 3501 3502 1502) +4(1483 1503 3503 3483) +4(1502 3502 3503 1503) +4(1484 1504 3504 3484) +4(1503 3503 3504 1504) +4(1485 1505 3505 3485) +4(1504 3504 3505 1505) +4(1486 1506 3506 3486) +4(1505 3505 3506 1506) +4(1487 1507 3507 3487) +4(1506 3506 3507 1507) +4(1488 1508 3508 3488) +4(1507 3507 3508 1508) +4(1489 1509 3509 3489) +4(1508 3508 3509 1509) +4(1490 1510 3510 3490) +4(1509 3509 3510 1510) +4(1491 1511 3511 3491) +4(1510 3510 3511 1511) +4(1492 1512 3512 3492) +4(1511 3511 3512 1512) +4(1493 1513 3513 3493) +4(1512 3512 3513 1513) +4(1494 1514 3514 3494) +4(1513 3513 3514 1514) +4(1495 1515 3515 3495) +4(1514 3514 3515 1515) +4(1496 1516 3516 3496) +4(1515 3515 3516 1516) +4(1497 1517 3517 3497) +4(1516 3516 3517 1517) +4(1498 1518 3518 3498) +4(1517 3517 3518 1518) +4(1518 3518 3519 1519) +4(1501 1521 3521 3501) +4(1520 3520 3521 1521) +4(1502 1522 3522 3502) +4(1521 3521 3522 1522) +4(1503 1523 3523 3503) +4(1522 3522 3523 1523) +4(1504 1524 3524 3504) +4(1523 3523 3524 1524) +4(1505 1525 3525 3505) +4(1524 3524 3525 1525) +4(1506 1526 3526 3506) +4(1525 3525 3526 1526) +4(1507 1527 3527 3507) +4(1526 3526 3527 1527) +4(1508 1528 3528 3508) +4(1527 3527 3528 1528) +4(1509 1529 3529 3509) +4(1528 3528 3529 1529) +4(1510 1530 3530 3510) +4(1529 3529 3530 1530) +4(1511 1531 3531 3511) +4(1530 3530 3531 1531) +4(1512 1532 3532 3512) +4(1531 3531 3532 1532) +4(1513 1533 3533 3513) +4(1532 3532 3533 1533) +4(1514 1534 3534 3514) +4(1533 3533 3534 1534) +4(1515 1535 3535 3515) +4(1534 3534 3535 1535) +4(1516 1536 3536 3516) +4(1535 3535 3536 1536) +4(1517 1537 3537 3517) +4(1536 3536 3537 1537) +4(1518 1538 3538 3518) +4(1537 3537 3538 1538) +4(1538 3538 3539 1539) +4(1521 1541 3541 3521) +4(1540 3540 3541 1541) +4(1522 1542 3542 3522) +4(1541 3541 3542 1542) +4(1523 1543 3543 3523) +4(1542 3542 3543 1543) +4(1524 1544 3544 3524) +4(1543 3543 3544 1544) +4(1525 1545 3545 3525) +4(1544 3544 3545 1545) +4(1526 1546 3546 3526) +4(1545 3545 3546 1546) +4(1527 1547 3547 3527) +4(1546 3546 3547 1547) +4(1528 1548 3548 3528) +4(1547 3547 3548 1548) +4(1529 1549 3549 3529) +4(1548 3548 3549 1549) +4(1530 1550 3550 3530) +4(1549 3549 3550 1550) +4(1531 1551 3551 3531) +4(1550 3550 3551 1551) +4(1532 1552 3552 3532) +4(1551 3551 3552 1552) +4(1533 1553 3553 3533) +4(1552 3552 3553 1553) +4(1534 1554 3554 3534) +4(1553 3553 3554 1554) +4(1535 1555 3555 3535) +4(1554 3554 3555 1555) +4(1536 1556 3556 3536) +4(1555 3555 3556 1556) +4(1537 1557 3557 3537) +4(1556 3556 3557 1557) +4(1538 1558 3558 3538) +4(1557 3557 3558 1558) +4(1558 3558 3559 1559) +4(1541 1561 3561 3541) +4(1560 3560 3561 1561) +4(1542 1562 3562 3542) +4(1561 3561 3562 1562) +4(1543 1563 3563 3543) +4(1562 3562 3563 1563) +4(1544 1564 3564 3544) +4(1563 3563 3564 1564) +4(1545 1565 3565 3545) +4(1564 3564 3565 1565) +4(1546 1566 3566 3546) +4(1565 3565 3566 1566) +4(1547 1567 3567 3547) +4(1566 3566 3567 1567) +4(1548 1568 3568 3548) +4(1567 3567 3568 1568) +4(1549 1569 3569 3549) +4(1568 3568 3569 1569) +4(1550 1570 3570 3550) +4(1569 3569 3570 1570) +4(1551 1571 3571 3551) +4(1570 3570 3571 1571) +4(1552 1572 3572 3552) +4(1571 3571 3572 1572) +4(1553 1573 3573 3553) +4(1572 3572 3573 1573) +4(1554 1574 3574 3554) +4(1573 3573 3574 1574) +4(1555 1575 3575 3555) +4(1574 3574 3575 1575) +4(1556 1576 3576 3556) +4(1575 3575 3576 1576) +4(1557 1577 3577 3557) +4(1576 3576 3577 1577) +4(1558 1578 3578 3558) +4(1577 3577 3578 1578) +4(1578 3578 3579 1579) +4(1561 1581 3581 3561) +4(1580 3580 3581 1581) +4(1562 1582 3582 3562) +4(1581 3581 3582 1582) +4(1563 1583 3583 3563) +4(1582 3582 3583 1583) +4(1564 1584 3584 3564) +4(1583 3583 3584 1584) +4(1565 1585 3585 3565) +4(1584 3584 3585 1585) +4(1566 1586 3586 3566) +4(1585 3585 3586 1586) +4(1567 1587 3587 3567) +4(1586 3586 3587 1587) +4(1568 1588 3588 3568) +4(1587 3587 3588 1588) +4(1569 1589 3589 3569) +4(1588 3588 3589 1589) +4(1570 1590 3590 3570) +4(1589 3589 3590 1590) +4(1571 1591 3591 3571) +4(1590 3590 3591 1591) +4(1572 1592 3592 3572) +4(1591 3591 3592 1592) +4(1573 1593 3593 3573) +4(1592 3592 3593 1593) +4(1574 1594 3594 3574) +4(1593 3593 3594 1594) +4(1575 1595 3595 3575) +4(1594 3594 3595 1595) +4(1576 1596 3596 3576) +4(1595 3595 3596 1596) +4(1577 1597 3597 3577) +4(1596 3596 3597 1597) +4(1578 1598 3598 3578) +4(1597 3597 3598 1598) +4(1598 3598 3599 1599) +4(1581 1601 3601 3581) +4(1600 3600 3601 1601) +4(1582 1602 3602 3582) +4(1601 3601 3602 1602) +4(1583 1603 3603 3583) +4(1602 3602 3603 1603) +4(1584 1604 3604 3584) +4(1603 3603 3604 1604) +4(1585 1605 3605 3585) +4(1604 3604 3605 1605) +4(1586 1606 3606 3586) +4(1605 3605 3606 1606) +4(1587 1607 3607 3587) +4(1606 3606 3607 1607) +4(1588 1608 3608 3588) +4(1607 3607 3608 1608) +4(1589 1609 3609 3589) +4(1608 3608 3609 1609) +4(1590 1610 3610 3590) +4(1609 3609 3610 1610) +4(1591 1611 3611 3591) +4(1610 3610 3611 1611) +4(1592 1612 3612 3592) +4(1611 3611 3612 1612) +4(1593 1613 3613 3593) +4(1612 3612 3613 1613) +4(1594 1614 3614 3594) +4(1613 3613 3614 1614) +4(1595 1615 3615 3595) +4(1614 3614 3615 1615) +4(1596 1616 3616 3596) +4(1615 3615 3616 1616) +4(1597 1617 3617 3597) +4(1616 3616 3617 1617) +4(1598 1618 3618 3598) +4(1617 3617 3618 1618) +4(1618 3618 3619 1619) +4(1601 1621 3621 3601) +4(1620 3620 3621 1621) +4(1602 1622 3622 3602) +4(1621 3621 3622 1622) +4(1603 1623 3623 3603) +4(1622 3622 3623 1623) +4(1604 1624 3624 3604) +4(1623 3623 3624 1624) +4(1605 1625 3625 3605) +4(1624 3624 3625 1625) +4(1606 1626 3626 3606) +4(1625 3625 3626 1626) +4(1607 1627 3627 3607) +4(1626 3626 3627 1627) +4(1608 1628 3628 3608) +4(1627 3627 3628 1628) +4(1609 1629 3629 3609) +4(1628 3628 3629 1629) +4(1610 1630 3630 3610) +4(1629 3629 3630 1630) +4(1611 1631 3631 3611) +4(1630 3630 3631 1631) +4(1612 1632 3632 3612) +4(1631 3631 3632 1632) +4(1613 1633 3633 3613) +4(1632 3632 3633 1633) +4(1614 1634 3634 3614) +4(1633 3633 3634 1634) +4(1615 1635 3635 3615) +4(1634 3634 3635 1635) +4(1616 1636 3636 3616) +4(1635 3635 3636 1636) +4(1617 1637 3637 3617) +4(1636 3636 3637 1637) +4(1618 1638 3638 3618) +4(1637 3637 3638 1638) +4(1638 3638 3639 1639) +4(1621 1641 3641 3621) +4(1640 3640 3641 1641) +4(1622 1642 3642 3622) +4(1641 3641 3642 1642) +4(1623 1643 3643 3623) +4(1642 3642 3643 1643) +4(1624 1644 3644 3624) +4(1643 3643 3644 1644) +4(1625 1645 3645 3625) +4(1644 3644 3645 1645) +4(1626 1646 3646 3626) +4(1645 3645 3646 1646) +4(1627 1647 3647 3627) +4(1646 3646 3647 1647) +4(1628 1648 3648 3628) +4(1647 3647 3648 1648) +4(1629 1649 3649 3629) +4(1648 3648 3649 1649) +4(1630 1650 3650 3630) +4(1649 3649 3650 1650) +4(1631 1651 3651 3631) +4(1650 3650 3651 1651) +4(1632 1652 3652 3632) +4(1651 3651 3652 1652) +4(1633 1653 3653 3633) +4(1652 3652 3653 1653) +4(1634 1654 3654 3634) +4(1653 3653 3654 1654) +4(1635 1655 3655 3635) +4(1654 3654 3655 1655) +4(1636 1656 3656 3636) +4(1655 3655 3656 1656) +4(1637 1657 3657 3637) +4(1656 3656 3657 1657) +4(1638 1658 3658 3638) +4(1657 3657 3658 1658) +4(1658 3658 3659 1659) +4(1641 1661 3661 3641) +4(1660 3660 3661 1661) +4(1642 1662 3662 3642) +4(1661 3661 3662 1662) +4(1643 1663 3663 3643) +4(1662 3662 3663 1663) +4(1644 1664 3664 3644) +4(1663 3663 3664 1664) +4(1645 1665 3665 3645) +4(1664 3664 3665 1665) +4(1646 1666 3666 3646) +4(1665 3665 3666 1666) +4(1647 1667 3667 3647) +4(1666 3666 3667 1667) +4(1648 1668 3668 3648) +4(1667 3667 3668 1668) +4(1649 1669 3669 3649) +4(1668 3668 3669 1669) +4(1650 1670 3670 3650) +4(1669 3669 3670 1670) +4(1651 1671 3671 3651) +4(1670 3670 3671 1671) +4(1652 1672 3672 3652) +4(1671 3671 3672 1672) +4(1653 1673 3673 3653) +4(1672 3672 3673 1673) +4(1654 1674 3674 3654) +4(1673 3673 3674 1674) +4(1655 1675 3675 3655) +4(1674 3674 3675 1675) +4(1656 1676 3676 3656) +4(1675 3675 3676 1676) +4(1657 1677 3677 3657) +4(1676 3676 3677 1677) +4(1658 1678 3678 3658) +4(1677 3677 3678 1678) +4(1678 3678 3679 1679) +4(1661 1681 3681 3661) +4(1680 3680 3681 1681) +4(1662 1682 3682 3662) +4(1681 3681 3682 1682) +4(1663 1683 3683 3663) +4(1682 3682 3683 1683) +4(1664 1684 3684 3664) +4(1683 3683 3684 1684) +4(1665 1685 3685 3665) +4(1684 3684 3685 1685) +4(1666 1686 3686 3666) +4(1685 3685 3686 1686) +4(1667 1687 3687 3667) +4(1686 3686 3687 1687) +4(1668 1688 3688 3668) +4(1687 3687 3688 1688) +4(1669 1689 3689 3669) +4(1688 3688 3689 1689) +4(1670 1690 3690 3670) +4(1689 3689 3690 1690) +4(1671 1691 3691 3671) +4(1690 3690 3691 1691) +4(1672 1692 3692 3672) +4(1691 3691 3692 1692) +4(1673 1693 3693 3673) +4(1692 3692 3693 1693) +4(1674 1694 3694 3674) +4(1693 3693 3694 1694) +4(1675 1695 3695 3675) +4(1694 3694 3695 1695) +4(1676 1696 3696 3676) +4(1695 3695 3696 1696) +4(1677 1697 3697 3677) +4(1696 3696 3697 1697) +4(1678 1698 3698 3678) +4(1697 3697 3698 1698) +4(1698 3698 3699 1699) +4(1681 1701 3701 3681) +4(1700 3700 3701 1701) +4(1682 1702 3702 3682) +4(1701 3701 3702 1702) +4(1683 1703 3703 3683) +4(1702 3702 3703 1703) +4(1684 1704 3704 3684) +4(1703 3703 3704 1704) +4(1685 1705 3705 3685) +4(1704 3704 3705 1705) +4(1686 1706 3706 3686) +4(1705 3705 3706 1706) +4(1687 1707 3707 3687) +4(1706 3706 3707 1707) +4(1688 1708 3708 3688) +4(1707 3707 3708 1708) +4(1689 1709 3709 3689) +4(1708 3708 3709 1709) +4(1690 1710 3710 3690) +4(1709 3709 3710 1710) +4(1691 1711 3711 3691) +4(1710 3710 3711 1711) +4(1692 1712 3712 3692) +4(1711 3711 3712 1712) +4(1693 1713 3713 3693) +4(1712 3712 3713 1713) +4(1694 1714 3714 3694) +4(1713 3713 3714 1714) +4(1695 1715 3715 3695) +4(1714 3714 3715 1715) +4(1696 1716 3716 3696) +4(1715 3715 3716 1716) +4(1697 1717 3717 3697) +4(1716 3716 3717 1717) +4(1698 1718 3718 3698) +4(1717 3717 3718 1718) +4(1718 3718 3719 1719) +4(1701 1721 3721 3701) +4(1720 3720 3721 1721) +4(1702 1722 3722 3702) +4(1721 3721 3722 1722) +4(1703 1723 3723 3703) +4(1722 3722 3723 1723) +4(1704 1724 3724 3704) +4(1723 3723 3724 1724) +4(1705 1725 3725 3705) +4(1724 3724 3725 1725) +4(1706 1726 3726 3706) +4(1725 3725 3726 1726) +4(1707 1727 3727 3707) +4(1726 3726 3727 1727) +4(1708 1728 3728 3708) +4(1727 3727 3728 1728) +4(1709 1729 3729 3709) +4(1728 3728 3729 1729) +4(1710 1730 3730 3710) +4(1729 3729 3730 1730) +4(1711 1731 3731 3711) +4(1730 3730 3731 1731) +4(1712 1732 3732 3712) +4(1731 3731 3732 1732) +4(1713 1733 3733 3713) +4(1732 3732 3733 1733) +4(1714 1734 3734 3714) +4(1733 3733 3734 1734) +4(1715 1735 3735 3715) +4(1734 3734 3735 1735) +4(1716 1736 3736 3716) +4(1735 3735 3736 1736) +4(1717 1737 3737 3717) +4(1736 3736 3737 1737) +4(1718 1738 3738 3718) +4(1737 3737 3738 1738) +4(1738 3738 3739 1739) +4(1721 1741 3741 3721) +4(1740 3740 3741 1741) +4(1722 1742 3742 3722) +4(1741 3741 3742 1742) +4(1723 1743 3743 3723) +4(1742 3742 3743 1743) +4(1724 1744 3744 3724) +4(1743 3743 3744 1744) +4(1725 1745 3745 3725) +4(1744 3744 3745 1745) +4(1726 1746 3746 3726) +4(1745 3745 3746 1746) +4(1727 1747 3747 3727) +4(1746 3746 3747 1747) +4(1728 1748 3748 3728) +4(1747 3747 3748 1748) +4(1729 1749 3749 3729) +4(1748 3748 3749 1749) +4(1730 1750 3750 3730) +4(1749 3749 3750 1750) +4(1731 1751 3751 3731) +4(1750 3750 3751 1751) +4(1732 1752 3752 3732) +4(1751 3751 3752 1752) +4(1733 1753 3753 3733) +4(1752 3752 3753 1753) +4(1734 1754 3754 3734) +4(1753 3753 3754 1754) +4(1735 1755 3755 3735) +4(1754 3754 3755 1755) +4(1736 1756 3756 3736) +4(1755 3755 3756 1756) +4(1737 1757 3757 3737) +4(1756 3756 3757 1757) +4(1738 1758 3758 3738) +4(1757 3757 3758 1758) +4(1758 3758 3759 1759) +4(1741 1761 3761 3741) +4(1760 3760 3761 1761) +4(1742 1762 3762 3742) +4(1761 3761 3762 1762) +4(1743 1763 3763 3743) +4(1762 3762 3763 1763) +4(1744 1764 3764 3744) +4(1763 3763 3764 1764) +4(1745 1765 3765 3745) +4(1764 3764 3765 1765) +4(1746 1766 3766 3746) +4(1765 3765 3766 1766) +4(1747 1767 3767 3747) +4(1766 3766 3767 1767) +4(1748 1768 3768 3748) +4(1767 3767 3768 1768) +4(1749 1769 3769 3749) +4(1768 3768 3769 1769) +4(1750 1770 3770 3750) +4(1769 3769 3770 1770) +4(1751 1771 3771 3751) +4(1770 3770 3771 1771) +4(1752 1772 3772 3752) +4(1771 3771 3772 1772) +4(1753 1773 3773 3753) +4(1772 3772 3773 1773) +4(1754 1774 3774 3754) +4(1773 3773 3774 1774) +4(1755 1775 3775 3755) +4(1774 3774 3775 1775) +4(1756 1776 3776 3756) +4(1775 3775 3776 1776) +4(1757 1777 3777 3757) +4(1776 3776 3777 1777) +4(1758 1778 3778 3758) +4(1777 3777 3778 1778) +4(1778 3778 3779 1779) +4(1761 1781 3781 3761) +4(1780 3780 3781 1781) +4(1762 1782 3782 3762) +4(1781 3781 3782 1782) +4(1763 1783 3783 3763) +4(1782 3782 3783 1783) +4(1764 1784 3784 3764) +4(1783 3783 3784 1784) +4(1765 1785 3785 3765) +4(1784 3784 3785 1785) +4(1766 1786 3786 3766) +4(1785 3785 3786 1786) +4(1767 1787 3787 3767) +4(1786 3786 3787 1787) +4(1768 1788 3788 3768) +4(1787 3787 3788 1788) +4(1769 1789 3789 3769) +4(1788 3788 3789 1789) +4(1770 1790 3790 3770) +4(1789 3789 3790 1790) +4(1771 1791 3791 3771) +4(1790 3790 3791 1791) +4(1772 1792 3792 3772) +4(1791 3791 3792 1792) +4(1773 1793 3793 3773) +4(1792 3792 3793 1793) +4(1774 1794 3794 3774) +4(1793 3793 3794 1794) +4(1775 1795 3795 3775) +4(1794 3794 3795 1795) +4(1776 1796 3796 3776) +4(1795 3795 3796 1796) +4(1777 1797 3797 3777) +4(1796 3796 3797 1797) +4(1778 1798 3798 3778) +4(1797 3797 3798 1798) +4(1798 3798 3799 1799) +4(1781 1801 3801 3781) +4(1800 3800 3801 1801) +4(1782 1802 3802 3782) +4(1801 3801 3802 1802) +4(1783 1803 3803 3783) +4(1802 3802 3803 1803) +4(1784 1804 3804 3784) +4(1803 3803 3804 1804) +4(1785 1805 3805 3785) +4(1804 3804 3805 1805) +4(1786 1806 3806 3786) +4(1805 3805 3806 1806) +4(1787 1807 3807 3787) +4(1806 3806 3807 1807) +4(1788 1808 3808 3788) +4(1807 3807 3808 1808) +4(1789 1809 3809 3789) +4(1808 3808 3809 1809) +4(1790 1810 3810 3790) +4(1809 3809 3810 1810) +4(1791 1811 3811 3791) +4(1810 3810 3811 1811) +4(1792 1812 3812 3792) +4(1811 3811 3812 1812) +4(1793 1813 3813 3793) +4(1812 3812 3813 1813) +4(1794 1814 3814 3794) +4(1813 3813 3814 1814) +4(1795 1815 3815 3795) +4(1814 3814 3815 1815) +4(1796 1816 3816 3796) +4(1815 3815 3816 1816) +4(1797 1817 3817 3797) +4(1816 3816 3817 1817) +4(1798 1818 3818 3798) +4(1817 3817 3818 1818) +4(1818 3818 3819 1819) +4(1801 1821 3821 3801) +4(1820 3820 3821 1821) +4(1802 1822 3822 3802) +4(1821 3821 3822 1822) +4(1803 1823 3823 3803) +4(1822 3822 3823 1823) +4(1804 1824 3824 3804) +4(1823 3823 3824 1824) +4(1805 1825 3825 3805) +4(1824 3824 3825 1825) +4(1806 1826 3826 3806) +4(1825 3825 3826 1826) +4(1807 1827 3827 3807) +4(1826 3826 3827 1827) +4(1808 1828 3828 3808) +4(1827 3827 3828 1828) +4(1809 1829 3829 3809) +4(1828 3828 3829 1829) +4(1810 1830 3830 3810) +4(1829 3829 3830 1830) +4(1811 1831 3831 3811) +4(1830 3830 3831 1831) +4(1812 1832 3832 3812) +4(1831 3831 3832 1832) +4(1813 1833 3833 3813) +4(1832 3832 3833 1833) +4(1814 1834 3834 3814) +4(1833 3833 3834 1834) +4(1815 1835 3835 3815) +4(1834 3834 3835 1835) +4(1816 1836 3836 3816) +4(1835 3835 3836 1836) +4(1817 1837 3837 3817) +4(1836 3836 3837 1837) +4(1818 1838 3838 3818) +4(1837 3837 3838 1838) +4(1838 3838 3839 1839) +4(1821 1841 3841 3821) +4(1840 3840 3841 1841) +4(1822 1842 3842 3822) +4(1841 3841 3842 1842) +4(1823 1843 3843 3823) +4(1842 3842 3843 1843) +4(1824 1844 3844 3824) +4(1843 3843 3844 1844) +4(1825 1845 3845 3825) +4(1844 3844 3845 1845) +4(1826 1846 3846 3826) +4(1845 3845 3846 1846) +4(1827 1847 3847 3827) +4(1846 3846 3847 1847) +4(1828 1848 3848 3828) +4(1847 3847 3848 1848) +4(1829 1849 3849 3829) +4(1848 3848 3849 1849) +4(1830 1850 3850 3830) +4(1849 3849 3850 1850) +4(1831 1851 3851 3831) +4(1850 3850 3851 1851) +4(1832 1852 3852 3832) +4(1851 3851 3852 1852) +4(1833 1853 3853 3833) +4(1852 3852 3853 1853) +4(1834 1854 3854 3834) +4(1853 3853 3854 1854) +4(1835 1855 3855 3835) +4(1854 3854 3855 1855) +4(1836 1856 3856 3836) +4(1855 3855 3856 1856) +4(1837 1857 3857 3837) +4(1856 3856 3857 1857) +4(1838 1858 3858 3838) +4(1857 3857 3858 1858) +4(1858 3858 3859 1859) +4(1841 1861 3861 3841) +4(1860 3860 3861 1861) +4(1842 1862 3862 3842) +4(1861 3861 3862 1862) +4(1843 1863 3863 3843) +4(1862 3862 3863 1863) +4(1844 1864 3864 3844) +4(1863 3863 3864 1864) +4(1845 1865 3865 3845) +4(1864 3864 3865 1865) +4(1846 1866 3866 3846) +4(1865 3865 3866 1866) +4(1847 1867 3867 3847) +4(1866 3866 3867 1867) +4(1848 1868 3868 3848) +4(1867 3867 3868 1868) +4(1849 1869 3869 3849) +4(1868 3868 3869 1869) +4(1850 1870 3870 3850) +4(1869 3869 3870 1870) +4(1851 1871 3871 3851) +4(1870 3870 3871 1871) +4(1852 1872 3872 3852) +4(1871 3871 3872 1872) +4(1853 1873 3873 3853) +4(1872 3872 3873 1873) +4(1854 1874 3874 3854) +4(1873 3873 3874 1874) +4(1855 1875 3875 3855) +4(1874 3874 3875 1875) +4(1856 1876 3876 3856) +4(1875 3875 3876 1876) +4(1857 1877 3877 3857) +4(1876 3876 3877 1877) +4(1858 1878 3878 3858) +4(1877 3877 3878 1878) +4(1878 3878 3879 1879) +4(1861 1881 3881 3861) +4(1880 3880 3881 1881) +4(1862 1882 3882 3862) +4(1881 3881 3882 1882) +4(1863 1883 3883 3863) +4(1882 3882 3883 1883) +4(1864 1884 3884 3864) +4(1883 3883 3884 1884) +4(1865 1885 3885 3865) +4(1884 3884 3885 1885) +4(1866 1886 3886 3866) +4(1885 3885 3886 1886) +4(1867 1887 3887 3867) +4(1886 3886 3887 1887) +4(1868 1888 3888 3868) +4(1887 3887 3888 1888) +4(1869 1889 3889 3869) +4(1888 3888 3889 1889) +4(1870 1890 3890 3870) +4(1889 3889 3890 1890) +4(1871 1891 3891 3871) +4(1890 3890 3891 1891) +4(1872 1892 3892 3872) +4(1891 3891 3892 1892) +4(1873 1893 3893 3873) +4(1892 3892 3893 1893) +4(1874 1894 3894 3874) +4(1893 3893 3894 1894) +4(1875 1895 3895 3875) +4(1894 3894 3895 1895) +4(1876 1896 3896 3876) +4(1895 3895 3896 1896) +4(1877 1897 3897 3877) +4(1896 3896 3897 1897) +4(1878 1898 3898 3878) +4(1897 3897 3898 1898) +4(1898 3898 3899 1899) +4(1881 1901 3901 3881) +4(1900 3900 3901 1901) +4(1882 1902 3902 3882) +4(1901 3901 3902 1902) +4(1883 1903 3903 3883) +4(1902 3902 3903 1903) +4(1884 1904 3904 3884) +4(1903 3903 3904 1904) +4(1885 1905 3905 3885) +4(1904 3904 3905 1905) +4(1886 1906 3906 3886) +4(1905 3905 3906 1906) +4(1887 1907 3907 3887) +4(1906 3906 3907 1907) +4(1888 1908 3908 3888) +4(1907 3907 3908 1908) +4(1889 1909 3909 3889) +4(1908 3908 3909 1909) +4(1890 1910 3910 3890) +4(1909 3909 3910 1910) +4(1891 1911 3911 3891) +4(1910 3910 3911 1911) +4(1892 1912 3912 3892) +4(1911 3911 3912 1912) +4(1893 1913 3913 3893) +4(1912 3912 3913 1913) +4(1894 1914 3914 3894) +4(1913 3913 3914 1914) +4(1895 1915 3915 3895) +4(1914 3914 3915 1915) +4(1896 1916 3916 3896) +4(1915 3915 3916 1916) +4(1897 1917 3917 3897) +4(1916 3916 3917 1917) +4(1898 1918 3918 3898) +4(1917 3917 3918 1918) +4(1918 3918 3919 1919) +4(1901 1921 3921 3901) +4(1920 3920 3921 1921) +4(1902 1922 3922 3902) +4(1921 3921 3922 1922) +4(1903 1923 3923 3903) +4(1922 3922 3923 1923) +4(1904 1924 3924 3904) +4(1923 3923 3924 1924) +4(1905 1925 3925 3905) +4(1924 3924 3925 1925) +4(1906 1926 3926 3906) +4(1925 3925 3926 1926) +4(1907 1927 3927 3907) +4(1926 3926 3927 1927) +4(1908 1928 3928 3908) +4(1927 3927 3928 1928) +4(1909 1929 3929 3909) +4(1928 3928 3929 1929) +4(1910 1930 3930 3910) +4(1929 3929 3930 1930) +4(1911 1931 3931 3911) +4(1930 3930 3931 1931) +4(1912 1932 3932 3912) +4(1931 3931 3932 1932) +4(1913 1933 3933 3913) +4(1932 3932 3933 1933) +4(1914 1934 3934 3914) +4(1933 3933 3934 1934) +4(1915 1935 3935 3915) +4(1934 3934 3935 1935) +4(1916 1936 3936 3916) +4(1935 3935 3936 1936) +4(1917 1937 3937 3917) +4(1936 3936 3937 1937) +4(1918 1938 3938 3918) +4(1937 3937 3938 1938) +4(1938 3938 3939 1939) +4(1921 1941 3941 3921) +4(1940 3940 3941 1941) +4(1922 1942 3942 3922) +4(1941 3941 3942 1942) +4(1923 1943 3943 3923) +4(1942 3942 3943 1943) +4(1924 1944 3944 3924) +4(1943 3943 3944 1944) +4(1925 1945 3945 3925) +4(1944 3944 3945 1945) +4(1926 1946 3946 3926) +4(1945 3945 3946 1946) +4(1927 1947 3947 3927) +4(1946 3946 3947 1947) +4(1928 1948 3948 3928) +4(1947 3947 3948 1948) +4(1929 1949 3949 3929) +4(1948 3948 3949 1949) +4(1930 1950 3950 3930) +4(1949 3949 3950 1950) +4(1931 1951 3951 3931) +4(1950 3950 3951 1951) +4(1932 1952 3952 3932) +4(1951 3951 3952 1952) +4(1933 1953 3953 3933) +4(1952 3952 3953 1953) +4(1934 1954 3954 3934) +4(1953 3953 3954 1954) +4(1935 1955 3955 3935) +4(1954 3954 3955 1955) +4(1936 1956 3956 3936) +4(1955 3955 3956 1956) +4(1937 1957 3957 3937) +4(1956 3956 3957 1957) +4(1938 1958 3958 3938) +4(1957 3957 3958 1958) +4(1958 3958 3959 1959) +4(1941 1961 3961 3941) +4(1960 3960 3961 1961) +4(1942 1962 3962 3942) +4(1961 3961 3962 1962) +4(1943 1963 3963 3943) +4(1962 3962 3963 1963) +4(1944 1964 3964 3944) +4(1963 3963 3964 1964) +4(1945 1965 3965 3945) +4(1964 3964 3965 1965) +4(1946 1966 3966 3946) +4(1965 3965 3966 1966) +4(1947 1967 3967 3947) +4(1966 3966 3967 1967) +4(1948 1968 3968 3948) +4(1967 3967 3968 1968) +4(1949 1969 3969 3949) +4(1968 3968 3969 1969) +4(1950 1970 3970 3950) +4(1969 3969 3970 1970) +4(1951 1971 3971 3951) +4(1970 3970 3971 1971) +4(1952 1972 3972 3952) +4(1971 3971 3972 1972) +4(1953 1973 3973 3953) +4(1972 3972 3973 1973) +4(1954 1974 3974 3954) +4(1973 3973 3974 1974) +4(1955 1975 3975 3955) +4(1974 3974 3975 1975) +4(1956 1976 3976 3956) +4(1975 3975 3976 1976) +4(1957 1977 3977 3957) +4(1976 3976 3977 1977) +4(1958 1978 3978 3958) +4(1977 3977 3978 1978) +4(1978 3978 3979 1979) +4(1961 1981 3981 3961) +4(1962 1982 3982 3962) +4(1963 1983 3983 3963) +4(1964 1984 3984 3964) +4(1965 1985 3985 3965) +4(1966 1986 3986 3966) +4(1967 1987 3987 3967) +4(1968 1988 3988 3968) +4(1969 1989 3989 3969) +4(1970 1990 3990 3970) +4(1971 1991 3991 3971) +4(1972 1992 3992 3972) +4(1973 1993 3993 3973) +4(1974 1994 3994 3974) +4(1975 1995 3995 3975) +4(1976 1996 3996 3976) +4(1977 1997 3997 3977) +4(1978 1998 3998 3978) +4(39 2039 2038 38) +4(39 59 2059 2039) +4(59 79 2079 2059) +4(79 99 2099 2079) +4(99 119 2119 2099) +4(119 139 2139 2119) +4(139 159 2159 2139) +4(159 179 2179 2159) +4(179 199 2199 2179) +4(199 219 2219 2199) +4(219 239 2239 2219) +4(239 259 2259 2239) +4(259 279 2279 2259) +4(279 299 2299 2279) +4(299 319 2319 2299) +4(319 339 2339 2319) +4(339 359 2359 2339) +4(359 379 2379 2359) +4(379 399 2399 2379) +4(399 419 2419 2399) +4(419 439 2439 2419) +4(439 459 2459 2439) +4(459 479 2479 2459) +4(479 499 2499 2479) +4(499 519 2519 2499) +4(519 539 2539 2519) +4(539 559 2559 2539) +4(559 579 2579 2559) +4(579 599 2599 2579) +4(599 619 2619 2599) +4(619 639 2639 2619) +4(639 659 2659 2639) +4(659 679 2679 2659) +4(679 699 2699 2679) +4(699 719 2719 2699) +4(719 739 2739 2719) +4(739 759 2759 2739) +4(759 779 2779 2759) +4(779 799 2799 2779) +4(799 819 2819 2799) +4(819 839 2839 2819) +4(839 859 2859 2839) +4(859 879 2879 2859) +4(879 899 2899 2879) +4(899 919 2919 2899) +4(919 939 2939 2919) +4(939 959 2959 2939) +4(959 979 2979 2959) +4(979 999 2999 2979) +4(999 1019 3019 2999) +4(1019 1039 3039 3019) +4(1039 1059 3059 3039) +4(1059 1079 3079 3059) +4(1079 1099 3099 3079) +4(1099 1119 3119 3099) +4(1119 1139 3139 3119) +4(1139 1159 3159 3139) +4(1159 1179 3179 3159) +4(1179 1199 3199 3179) +4(1199 1219 3219 3199) +4(1219 1239 3239 3219) +4(1239 1259 3259 3239) +4(1259 1279 3279 3259) +4(1279 1299 3299 3279) +4(1299 1319 3319 3299) +4(1319 1339 3339 3319) +4(1339 1359 3359 3339) +4(1359 1379 3379 3359) +4(1379 1399 3399 3379) +4(1399 1419 3419 3399) +4(1419 1439 3439 3419) +4(1439 1459 3459 3439) +4(1459 1479 3479 3459) +4(1479 1499 3499 3479) +4(1499 1519 3519 3499) +4(1519 1539 3539 3519) +4(1539 1559 3559 3539) +4(1559 1579 3579 3559) +4(1579 1599 3599 3579) +4(1599 1619 3619 3599) +4(1619 1639 3639 3619) +4(1639 1659 3659 3639) +4(1659 1679 3679 3659) +4(1679 1699 3699 3679) +4(1699 1719 3719 3699) +4(1719 1739 3739 3719) +4(1739 1759 3759 3739) +4(1759 1779 3779 3759) +4(1779 1799 3799 3779) +4(1799 1819 3819 3799) +4(1819 1839 3839 3819) +4(1839 1859 3859 3839) +4(1859 1879 3879 3859) +4(1879 1899 3899 3879) +4(1899 1919 3919 3899) +4(1919 1939 3939 3919) +4(1939 1959 3959 3939) +4(1959 1979 3979 3959) +4(1979 1999 3999 3979) +4(1 0 2000 2001) +4(1 2001 2040 40) +4(40 2040 2060 60) +4(60 2060 2080 80) +4(80 2080 2100 100) +4(100 2100 2120 120) +4(120 2120 2140 140) +4(140 2140 2160 160) +4(160 2160 2180 180) +4(180 2180 2200 200) +4(200 2200 2220 220) +4(220 2220 2240 240) +4(240 2240 2260 260) +4(260 2260 2280 280) +4(280 2280 2300 300) +4(300 2300 2320 320) +4(320 2320 2340 340) +4(340 2340 2360 360) +4(360 2360 2380 380) +4(380 2380 2400 400) +4(400 2400 2420 420) +4(420 2420 2440 440) +4(440 2440 2460 460) +4(460 2460 2480 480) +4(480 2480 2500 500) +4(500 2500 2520 520) +4(520 2520 2540 540) +4(540 2540 2560 560) +4(560 2560 2580 580) +4(580 2580 2600 600) +4(600 2600 2620 620) +4(620 2620 2640 640) +4(640 2640 2660 660) +4(660 2660 2680 680) +4(680 2680 2700 700) +4(700 2700 2720 720) +4(720 2720 2740 740) +4(740 2740 2760 760) +4(760 2760 2780 780) +4(780 2780 2800 800) +4(800 2800 2820 820) +4(820 2820 2840 840) +4(840 2840 2860 860) +4(860 2860 2880 880) +4(880 2880 2900 900) +4(900 2900 2920 920) +4(920 2920 2940 940) +4(940 2940 2960 960) +4(960 2960 2980 980) +4(980 2980 3000 1000) +4(1000 3000 3020 1020) +4(1020 3020 3040 1040) +4(1040 3040 3060 1060) +4(1060 3060 3080 1080) +4(1080 3080 3100 1100) +4(1100 3100 3120 1120) +4(1120 3120 3140 1140) +4(1140 3140 3160 1160) +4(1160 3160 3180 1180) +4(1180 3180 3200 1200) +4(1200 3200 3220 1220) +4(1220 3220 3240 1240) +4(1240 3240 3260 1260) +4(1260 3260 3280 1280) +4(1280 3280 3300 1300) +4(1300 3300 3320 1320) +4(1320 3320 3340 1340) +4(1340 3340 3360 1360) +4(1360 3360 3380 1380) +4(1380 3380 3400 1400) +4(1400 3400 3420 1420) +4(1420 3420 3440 1440) +4(1440 3440 3460 1460) +4(1460 3460 3480 1480) +4(1480 3480 3500 1500) +4(1500 3500 3520 1520) +4(1520 3520 3540 1540) +4(1540 3540 3560 1560) +4(1560 3560 3580 1580) +4(1580 3580 3600 1600) +4(1600 3600 3620 1620) +4(1620 3620 3640 1640) +4(1640 3640 3660 1660) +4(1660 3660 3680 1680) +4(1680 3680 3700 1700) +4(1700 3700 3720 1720) +4(1720 3720 3740 1740) +4(1740 3740 3760 1760) +4(1760 3760 3780 1780) +4(1780 3780 3800 1800) +4(1800 3800 3820 1820) +4(1820 3820 3840 1840) +4(1840 3840 3860 1860) +4(1860 3860 3880 1880) +4(1880 3880 3900 1900) +4(1900 3900 3920 1920) +4(1920 3920 3940 1940) +4(1940 3940 3960 1960) +4(1960 3960 3980 1980) +4(2 2002 2000 0) +4(2 4 2004 2002) +4(4 6 2006 2004) +4(6 8 2008 2006) +4(8 10 2010 2008) +4(10 12 2012 2010) +4(12 14 2014 2012) +4(14 16 2016 2014) +4(16 18 2018 2016) +4(18 20 2020 2018) +4(20 22 2022 2020) +4(22 24 2024 2022) +4(24 26 2026 2024) +4(26 28 2028 2026) +4(28 30 2030 2028) +4(30 32 2032 2030) +4(32 34 2034 2032) +4(34 36 2036 2034) +4(36 38 2038 2036) +4(1980 3980 3981 1981) +4(1981 3981 3982 1982) +4(1982 3982 3983 1983) +4(1983 3983 3984 1984) +4(1984 3984 3985 1985) +4(1985 3985 3986 1986) +4(1986 3986 3987 1987) +4(1987 3987 3988 1988) +4(1988 3988 3989 1989) +4(1989 3989 3990 1990) +4(1990 3990 3991 1991) +4(1991 3991 3992 1992) +4(1992 3992 3993 1993) +4(1993 3993 3994 1994) +4(1994 3994 3995 1995) +4(1995 3995 3996 1996) +4(1996 3996 3997 1997) +4(1997 3997 3998 1998) +4(1998 3998 3999 1999) +4(3 2 0 1) +4(2003 2001 2000 2002) +4(3 5 4 2) +4(2003 2002 2004 2005) +4(5 7 6 4) +4(2005 2004 2006 2007) +4(7 9 8 6) +4(2007 2006 2008 2009) +4(9 11 10 8) +4(2009 2008 2010 2011) +4(11 13 12 10) +4(2011 2010 2012 2013) +4(13 15 14 12) +4(2013 2012 2014 2015) +4(15 17 16 14) +4(2015 2014 2016 2017) +4(17 19 18 16) +4(2017 2016 2018 2019) +4(19 21 20 18) +4(2019 2018 2020 2021) +4(21 23 22 20) +4(2021 2020 2022 2023) +4(23 25 24 22) +4(2023 2022 2024 2025) +4(25 27 26 24) +4(2025 2024 2026 2027) +4(27 29 28 26) +4(2027 2026 2028 2029) +4(29 31 30 28) +4(2029 2028 2030 2031) +4(31 33 32 30) +4(2031 2030 2032 2033) +4(33 35 34 32) +4(2033 2032 2034 2035) +4(35 37 36 34) +4(2035 2034 2036 2037) +4(37 39 38 36) +4(2037 2036 2038 2039) +4(1 40 41 3) +4(2001 2003 2041 2040) +4(3 41 42 5) +4(2003 2005 2042 2041) +4(5 42 43 7) +4(2005 2007 2043 2042) +4(7 43 44 9) +4(2007 2009 2044 2043) +4(9 44 45 11) +4(2009 2011 2045 2044) +4(11 45 46 13) +4(2011 2013 2046 2045) +4(13 46 47 15) +4(2013 2015 2047 2046) +4(15 47 48 17) +4(2015 2017 2048 2047) +4(17 48 49 19) +4(2017 2019 2049 2048) +4(19 49 50 21) +4(2019 2021 2050 2049) +4(21 50 51 23) +4(2021 2023 2051 2050) +4(23 51 52 25) +4(2023 2025 2052 2051) +4(25 52 53 27) +4(2025 2027 2053 2052) +4(27 53 54 29) +4(2027 2029 2054 2053) +4(29 54 55 31) +4(2029 2031 2055 2054) +4(31 55 56 33) +4(2031 2033 2056 2055) +4(33 56 57 35) +4(2033 2035 2057 2056) +4(35 57 58 37) +4(2035 2037 2058 2057) +4(37 58 59 39) +4(2037 2039 2059 2058) +4(40 60 61 41) +4(2040 2041 2061 2060) +4(41 61 62 42) +4(2041 2042 2062 2061) +4(42 62 63 43) +4(2042 2043 2063 2062) +4(43 63 64 44) +4(2043 2044 2064 2063) +4(44 64 65 45) +4(2044 2045 2065 2064) +4(45 65 66 46) +4(2045 2046 2066 2065) +4(46 66 67 47) +4(2046 2047 2067 2066) +4(47 67 68 48) +4(2047 2048 2068 2067) +4(48 68 69 49) +4(2048 2049 2069 2068) +4(49 69 70 50) +4(2049 2050 2070 2069) +4(50 70 71 51) +4(2050 2051 2071 2070) +4(51 71 72 52) +4(2051 2052 2072 2071) +4(52 72 73 53) +4(2052 2053 2073 2072) +4(53 73 74 54) +4(2053 2054 2074 2073) +4(54 74 75 55) +4(2054 2055 2075 2074) +4(55 75 76 56) +4(2055 2056 2076 2075) +4(56 76 77 57) +4(2056 2057 2077 2076) +4(57 77 78 58) +4(2057 2058 2078 2077) +4(58 78 79 59) +4(2058 2059 2079 2078) +4(60 80 81 61) +4(2060 2061 2081 2080) +4(61 81 82 62) +4(2061 2062 2082 2081) +4(62 82 83 63) +4(2062 2063 2083 2082) +4(63 83 84 64) +4(2063 2064 2084 2083) +4(64 84 85 65) +4(2064 2065 2085 2084) +4(65 85 86 66) +4(2065 2066 2086 2085) +4(66 86 87 67) +4(2066 2067 2087 2086) +4(67 87 88 68) +4(2067 2068 2088 2087) +4(68 88 89 69) +4(2068 2069 2089 2088) +4(69 89 90 70) +4(2069 2070 2090 2089) +4(70 90 91 71) +4(2070 2071 2091 2090) +4(71 91 92 72) +4(2071 2072 2092 2091) +4(72 92 93 73) +4(2072 2073 2093 2092) +4(73 93 94 74) +4(2073 2074 2094 2093) +4(74 94 95 75) +4(2074 2075 2095 2094) +4(75 95 96 76) +4(2075 2076 2096 2095) +4(76 96 97 77) +4(2076 2077 2097 2096) +4(77 97 98 78) +4(2077 2078 2098 2097) +4(78 98 99 79) +4(2078 2079 2099 2098) +4(80 100 101 81) +4(2080 2081 2101 2100) +4(81 101 102 82) +4(2081 2082 2102 2101) +4(82 102 103 83) +4(2082 2083 2103 2102) +4(83 103 104 84) +4(2083 2084 2104 2103) +4(84 104 105 85) +4(2084 2085 2105 2104) +4(85 105 106 86) +4(2085 2086 2106 2105) +4(86 106 107 87) +4(2086 2087 2107 2106) +4(87 107 108 88) +4(2087 2088 2108 2107) +4(88 108 109 89) +4(2088 2089 2109 2108) +4(89 109 110 90) +4(2089 2090 2110 2109) +4(90 110 111 91) +4(2090 2091 2111 2110) +4(91 111 112 92) +4(2091 2092 2112 2111) +4(92 112 113 93) +4(2092 2093 2113 2112) +4(93 113 114 94) +4(2093 2094 2114 2113) +4(94 114 115 95) +4(2094 2095 2115 2114) +4(95 115 116 96) +4(2095 2096 2116 2115) +4(96 116 117 97) +4(2096 2097 2117 2116) +4(97 117 118 98) +4(2097 2098 2118 2117) +4(98 118 119 99) +4(2098 2099 2119 2118) +4(100 120 121 101) +4(2100 2101 2121 2120) +4(101 121 122 102) +4(2101 2102 2122 2121) +4(102 122 123 103) +4(2102 2103 2123 2122) +4(103 123 124 104) +4(2103 2104 2124 2123) +4(104 124 125 105) +4(2104 2105 2125 2124) +4(105 125 126 106) +4(2105 2106 2126 2125) +4(106 126 127 107) +4(2106 2107 2127 2126) +4(107 127 128 108) +4(2107 2108 2128 2127) +4(108 128 129 109) +4(2108 2109 2129 2128) +4(109 129 130 110) +4(2109 2110 2130 2129) +4(110 130 131 111) +4(2110 2111 2131 2130) +4(111 131 132 112) +4(2111 2112 2132 2131) +4(112 132 133 113) +4(2112 2113 2133 2132) +4(113 133 134 114) +4(2113 2114 2134 2133) +4(114 134 135 115) +4(2114 2115 2135 2134) +4(115 135 136 116) +4(2115 2116 2136 2135) +4(116 136 137 117) +4(2116 2117 2137 2136) +4(117 137 138 118) +4(2117 2118 2138 2137) +4(118 138 139 119) +4(2118 2119 2139 2138) +4(120 140 141 121) +4(2120 2121 2141 2140) +4(121 141 142 122) +4(2121 2122 2142 2141) +4(122 142 143 123) +4(2122 2123 2143 2142) +4(123 143 144 124) +4(2123 2124 2144 2143) +4(124 144 145 125) +4(2124 2125 2145 2144) +4(125 145 146 126) +4(2125 2126 2146 2145) +4(126 146 147 127) +4(2126 2127 2147 2146) +4(127 147 148 128) +4(2127 2128 2148 2147) +4(128 148 149 129) +4(2128 2129 2149 2148) +4(129 149 150 130) +4(2129 2130 2150 2149) +4(130 150 151 131) +4(2130 2131 2151 2150) +4(131 151 152 132) +4(2131 2132 2152 2151) +4(132 152 153 133) +4(2132 2133 2153 2152) +4(133 153 154 134) +4(2133 2134 2154 2153) +4(134 154 155 135) +4(2134 2135 2155 2154) +4(135 155 156 136) +4(2135 2136 2156 2155) +4(136 156 157 137) +4(2136 2137 2157 2156) +4(137 157 158 138) +4(2137 2138 2158 2157) +4(138 158 159 139) +4(2138 2139 2159 2158) +4(140 160 161 141) +4(2140 2141 2161 2160) +4(141 161 162 142) +4(2141 2142 2162 2161) +4(142 162 163 143) +4(2142 2143 2163 2162) +4(143 163 164 144) +4(2143 2144 2164 2163) +4(144 164 165 145) +4(2144 2145 2165 2164) +4(145 165 166 146) +4(2145 2146 2166 2165) +4(146 166 167 147) +4(2146 2147 2167 2166) +4(147 167 168 148) +4(2147 2148 2168 2167) +4(148 168 169 149) +4(2148 2149 2169 2168) +4(149 169 170 150) +4(2149 2150 2170 2169) +4(150 170 171 151) +4(2150 2151 2171 2170) +4(151 171 172 152) +4(2151 2152 2172 2171) +4(152 172 173 153) +4(2152 2153 2173 2172) +4(153 173 174 154) +4(2153 2154 2174 2173) +4(154 174 175 155) +4(2154 2155 2175 2174) +4(155 175 176 156) +4(2155 2156 2176 2175) +4(156 176 177 157) +4(2156 2157 2177 2176) +4(157 177 178 158) +4(2157 2158 2178 2177) +4(158 178 179 159) +4(2158 2159 2179 2178) +4(160 180 181 161) +4(2160 2161 2181 2180) +4(161 181 182 162) +4(2161 2162 2182 2181) +4(162 182 183 163) +4(2162 2163 2183 2182) +4(163 183 184 164) +4(2163 2164 2184 2183) +4(164 184 185 165) +4(2164 2165 2185 2184) +4(165 185 186 166) +4(2165 2166 2186 2185) +4(166 186 187 167) +4(2166 2167 2187 2186) +4(167 187 188 168) +4(2167 2168 2188 2187) +4(168 188 189 169) +4(2168 2169 2189 2188) +4(169 189 190 170) +4(2169 2170 2190 2189) +4(170 190 191 171) +4(2170 2171 2191 2190) +4(171 191 192 172) +4(2171 2172 2192 2191) +4(172 192 193 173) +4(2172 2173 2193 2192) +4(173 193 194 174) +4(2173 2174 2194 2193) +4(174 194 195 175) +4(2174 2175 2195 2194) +4(175 195 196 176) +4(2175 2176 2196 2195) +4(176 196 197 177) +4(2176 2177 2197 2196) +4(177 197 198 178) +4(2177 2178 2198 2197) +4(178 198 199 179) +4(2178 2179 2199 2198) +4(180 200 201 181) +4(2180 2181 2201 2200) +4(181 201 202 182) +4(2181 2182 2202 2201) +4(182 202 203 183) +4(2182 2183 2203 2202) +4(183 203 204 184) +4(2183 2184 2204 2203) +4(184 204 205 185) +4(2184 2185 2205 2204) +4(185 205 206 186) +4(2185 2186 2206 2205) +4(186 206 207 187) +4(2186 2187 2207 2206) +4(187 207 208 188) +4(2187 2188 2208 2207) +4(188 208 209 189) +4(2188 2189 2209 2208) +4(189 209 210 190) +4(2189 2190 2210 2209) +4(190 210 211 191) +4(2190 2191 2211 2210) +4(191 211 212 192) +4(2191 2192 2212 2211) +4(192 212 213 193) +4(2192 2193 2213 2212) +4(193 213 214 194) +4(2193 2194 2214 2213) +4(194 214 215 195) +4(2194 2195 2215 2214) +4(195 215 216 196) +4(2195 2196 2216 2215) +4(196 216 217 197) +4(2196 2197 2217 2216) +4(197 217 218 198) +4(2197 2198 2218 2217) +4(198 218 219 199) +4(2198 2199 2219 2218) +4(200 220 221 201) +4(2200 2201 2221 2220) +4(201 221 222 202) +4(2201 2202 2222 2221) +4(202 222 223 203) +4(2202 2203 2223 2222) +4(203 223 224 204) +4(2203 2204 2224 2223) +4(204 224 225 205) +4(2204 2205 2225 2224) +4(205 225 226 206) +4(2205 2206 2226 2225) +4(206 226 227 207) +4(2206 2207 2227 2226) +4(207 227 228 208) +4(2207 2208 2228 2227) +4(208 228 229 209) +4(2208 2209 2229 2228) +4(209 229 230 210) +4(2209 2210 2230 2229) +4(210 230 231 211) +4(2210 2211 2231 2230) +4(211 231 232 212) +4(2211 2212 2232 2231) +4(212 232 233 213) +4(2212 2213 2233 2232) +4(213 233 234 214) +4(2213 2214 2234 2233) +4(214 234 235 215) +4(2214 2215 2235 2234) +4(215 235 236 216) +4(2215 2216 2236 2235) +4(216 236 237 217) +4(2216 2217 2237 2236) +4(217 237 238 218) +4(2217 2218 2238 2237) +4(218 238 239 219) +4(2218 2219 2239 2238) +4(220 240 241 221) +4(2220 2221 2241 2240) +4(221 241 242 222) +4(2221 2222 2242 2241) +4(222 242 243 223) +4(2222 2223 2243 2242) +4(223 243 244 224) +4(2223 2224 2244 2243) +4(224 244 245 225) +4(2224 2225 2245 2244) +4(225 245 246 226) +4(2225 2226 2246 2245) +4(226 246 247 227) +4(2226 2227 2247 2246) +4(227 247 248 228) +4(2227 2228 2248 2247) +4(228 248 249 229) +4(2228 2229 2249 2248) +4(229 249 250 230) +4(2229 2230 2250 2249) +4(230 250 251 231) +4(2230 2231 2251 2250) +4(231 251 252 232) +4(2231 2232 2252 2251) +4(232 252 253 233) +4(2232 2233 2253 2252) +4(233 253 254 234) +4(2233 2234 2254 2253) +4(234 254 255 235) +4(2234 2235 2255 2254) +4(235 255 256 236) +4(2235 2236 2256 2255) +4(236 256 257 237) +4(2236 2237 2257 2256) +4(237 257 258 238) +4(2237 2238 2258 2257) +4(238 258 259 239) +4(2238 2239 2259 2258) +4(240 260 261 241) +4(2240 2241 2261 2260) +4(241 261 262 242) +4(2241 2242 2262 2261) +4(242 262 263 243) +4(2242 2243 2263 2262) +4(243 263 264 244) +4(2243 2244 2264 2263) +4(244 264 265 245) +4(2244 2245 2265 2264) +4(245 265 266 246) +4(2245 2246 2266 2265) +4(246 266 267 247) +4(2246 2247 2267 2266) +4(247 267 268 248) +4(2247 2248 2268 2267) +4(248 268 269 249) +4(2248 2249 2269 2268) +4(249 269 270 250) +4(2249 2250 2270 2269) +4(250 270 271 251) +4(2250 2251 2271 2270) +4(251 271 272 252) +4(2251 2252 2272 2271) +4(252 272 273 253) +4(2252 2253 2273 2272) +4(253 273 274 254) +4(2253 2254 2274 2273) +4(254 274 275 255) +4(2254 2255 2275 2274) +4(255 275 276 256) +4(2255 2256 2276 2275) +4(256 276 277 257) +4(2256 2257 2277 2276) +4(257 277 278 258) +4(2257 2258 2278 2277) +4(258 278 279 259) +4(2258 2259 2279 2278) +4(260 280 281 261) +4(2260 2261 2281 2280) +4(261 281 282 262) +4(2261 2262 2282 2281) +4(262 282 283 263) +4(2262 2263 2283 2282) +4(263 283 284 264) +4(2263 2264 2284 2283) +4(264 284 285 265) +4(2264 2265 2285 2284) +4(265 285 286 266) +4(2265 2266 2286 2285) +4(266 286 287 267) +4(2266 2267 2287 2286) +4(267 287 288 268) +4(2267 2268 2288 2287) +4(268 288 289 269) +4(2268 2269 2289 2288) +4(269 289 290 270) +4(2269 2270 2290 2289) +4(270 290 291 271) +4(2270 2271 2291 2290) +4(271 291 292 272) +4(2271 2272 2292 2291) +4(272 292 293 273) +4(2272 2273 2293 2292) +4(273 293 294 274) +4(2273 2274 2294 2293) +4(274 294 295 275) +4(2274 2275 2295 2294) +4(275 295 296 276) +4(2275 2276 2296 2295) +4(276 296 297 277) +4(2276 2277 2297 2296) +4(277 297 298 278) +4(2277 2278 2298 2297) +4(278 298 299 279) +4(2278 2279 2299 2298) +4(280 300 301 281) +4(2280 2281 2301 2300) +4(281 301 302 282) +4(2281 2282 2302 2301) +4(282 302 303 283) +4(2282 2283 2303 2302) +4(283 303 304 284) +4(2283 2284 2304 2303) +4(284 304 305 285) +4(2284 2285 2305 2304) +4(285 305 306 286) +4(2285 2286 2306 2305) +4(286 306 307 287) +4(2286 2287 2307 2306) +4(287 307 308 288) +4(2287 2288 2308 2307) +4(288 308 309 289) +4(2288 2289 2309 2308) +4(289 309 310 290) +4(2289 2290 2310 2309) +4(290 310 311 291) +4(2290 2291 2311 2310) +4(291 311 312 292) +4(2291 2292 2312 2311) +4(292 312 313 293) +4(2292 2293 2313 2312) +4(293 313 314 294) +4(2293 2294 2314 2313) +4(294 314 315 295) +4(2294 2295 2315 2314) +4(295 315 316 296) +4(2295 2296 2316 2315) +4(296 316 317 297) +4(2296 2297 2317 2316) +4(297 317 318 298) +4(2297 2298 2318 2317) +4(298 318 319 299) +4(2298 2299 2319 2318) +4(300 320 321 301) +4(2300 2301 2321 2320) +4(301 321 322 302) +4(2301 2302 2322 2321) +4(302 322 323 303) +4(2302 2303 2323 2322) +4(303 323 324 304) +4(2303 2304 2324 2323) +4(304 324 325 305) +4(2304 2305 2325 2324) +4(305 325 326 306) +4(2305 2306 2326 2325) +4(306 326 327 307) +4(2306 2307 2327 2326) +4(307 327 328 308) +4(2307 2308 2328 2327) +4(308 328 329 309) +4(2308 2309 2329 2328) +4(309 329 330 310) +4(2309 2310 2330 2329) +4(310 330 331 311) +4(2310 2311 2331 2330) +4(311 331 332 312) +4(2311 2312 2332 2331) +4(312 332 333 313) +4(2312 2313 2333 2332) +4(313 333 334 314) +4(2313 2314 2334 2333) +4(314 334 335 315) +4(2314 2315 2335 2334) +4(315 335 336 316) +4(2315 2316 2336 2335) +4(316 336 337 317) +4(2316 2317 2337 2336) +4(317 337 338 318) +4(2317 2318 2338 2337) +4(318 338 339 319) +4(2318 2319 2339 2338) +4(320 340 341 321) +4(2320 2321 2341 2340) +4(321 341 342 322) +4(2321 2322 2342 2341) +4(322 342 343 323) +4(2322 2323 2343 2342) +4(323 343 344 324) +4(2323 2324 2344 2343) +4(324 344 345 325) +4(2324 2325 2345 2344) +4(325 345 346 326) +4(2325 2326 2346 2345) +4(326 346 347 327) +4(2326 2327 2347 2346) +4(327 347 348 328) +4(2327 2328 2348 2347) +4(328 348 349 329) +4(2328 2329 2349 2348) +4(329 349 350 330) +4(2329 2330 2350 2349) +4(330 350 351 331) +4(2330 2331 2351 2350) +4(331 351 352 332) +4(2331 2332 2352 2351) +4(332 352 353 333) +4(2332 2333 2353 2352) +4(333 353 354 334) +4(2333 2334 2354 2353) +4(334 354 355 335) +4(2334 2335 2355 2354) +4(335 355 356 336) +4(2335 2336 2356 2355) +4(336 356 357 337) +4(2336 2337 2357 2356) +4(337 357 358 338) +4(2337 2338 2358 2357) +4(338 358 359 339) +4(2338 2339 2359 2358) +4(340 360 361 341) +4(2340 2341 2361 2360) +4(341 361 362 342) +4(2341 2342 2362 2361) +4(342 362 363 343) +4(2342 2343 2363 2362) +4(343 363 364 344) +4(2343 2344 2364 2363) +4(344 364 365 345) +4(2344 2345 2365 2364) +4(345 365 366 346) +4(2345 2346 2366 2365) +4(346 366 367 347) +4(2346 2347 2367 2366) +4(347 367 368 348) +4(2347 2348 2368 2367) +4(348 368 369 349) +4(2348 2349 2369 2368) +4(349 369 370 350) +4(2349 2350 2370 2369) +4(350 370 371 351) +4(2350 2351 2371 2370) +4(351 371 372 352) +4(2351 2352 2372 2371) +4(352 372 373 353) +4(2352 2353 2373 2372) +4(353 373 374 354) +4(2353 2354 2374 2373) +4(354 374 375 355) +4(2354 2355 2375 2374) +4(355 375 376 356) +4(2355 2356 2376 2375) +4(356 376 377 357) +4(2356 2357 2377 2376) +4(357 377 378 358) +4(2357 2358 2378 2377) +4(358 378 379 359) +4(2358 2359 2379 2378) +4(360 380 381 361) +4(2360 2361 2381 2380) +4(361 381 382 362) +4(2361 2362 2382 2381) +4(362 382 383 363) +4(2362 2363 2383 2382) +4(363 383 384 364) +4(2363 2364 2384 2383) +4(364 384 385 365) +4(2364 2365 2385 2384) +4(365 385 386 366) +4(2365 2366 2386 2385) +4(366 386 387 367) +4(2366 2367 2387 2386) +4(367 387 388 368) +4(2367 2368 2388 2387) +4(368 388 389 369) +4(2368 2369 2389 2388) +4(369 389 390 370) +4(2369 2370 2390 2389) +4(370 390 391 371) +4(2370 2371 2391 2390) +4(371 391 392 372) +4(2371 2372 2392 2391) +4(372 392 393 373) +4(2372 2373 2393 2392) +4(373 393 394 374) +4(2373 2374 2394 2393) +4(374 394 395 375) +4(2374 2375 2395 2394) +4(375 395 396 376) +4(2375 2376 2396 2395) +4(376 396 397 377) +4(2376 2377 2397 2396) +4(377 397 398 378) +4(2377 2378 2398 2397) +4(378 398 399 379) +4(2378 2379 2399 2398) +4(380 400 401 381) +4(2380 2381 2401 2400) +4(381 401 402 382) +4(2381 2382 2402 2401) +4(382 402 403 383) +4(2382 2383 2403 2402) +4(383 403 404 384) +4(2383 2384 2404 2403) +4(384 404 405 385) +4(2384 2385 2405 2404) +4(385 405 406 386) +4(2385 2386 2406 2405) +4(386 406 407 387) +4(2386 2387 2407 2406) +4(387 407 408 388) +4(2387 2388 2408 2407) +4(388 408 409 389) +4(2388 2389 2409 2408) +4(389 409 410 390) +4(2389 2390 2410 2409) +4(390 410 411 391) +4(2390 2391 2411 2410) +4(391 411 412 392) +4(2391 2392 2412 2411) +4(392 412 413 393) +4(2392 2393 2413 2412) +4(393 413 414 394) +4(2393 2394 2414 2413) +4(394 414 415 395) +4(2394 2395 2415 2414) +4(395 415 416 396) +4(2395 2396 2416 2415) +4(396 416 417 397) +4(2396 2397 2417 2416) +4(397 417 418 398) +4(2397 2398 2418 2417) +4(398 418 419 399) +4(2398 2399 2419 2418) +4(400 420 421 401) +4(2400 2401 2421 2420) +4(401 421 422 402) +4(2401 2402 2422 2421) +4(402 422 423 403) +4(2402 2403 2423 2422) +4(403 423 424 404) +4(2403 2404 2424 2423) +4(404 424 425 405) +4(2404 2405 2425 2424) +4(405 425 426 406) +4(2405 2406 2426 2425) +4(406 426 427 407) +4(2406 2407 2427 2426) +4(407 427 428 408) +4(2407 2408 2428 2427) +4(408 428 429 409) +4(2408 2409 2429 2428) +4(409 429 430 410) +4(2409 2410 2430 2429) +4(410 430 431 411) +4(2410 2411 2431 2430) +4(411 431 432 412) +4(2411 2412 2432 2431) +4(412 432 433 413) +4(2412 2413 2433 2432) +4(413 433 434 414) +4(2413 2414 2434 2433) +4(414 434 435 415) +4(2414 2415 2435 2434) +4(415 435 436 416) +4(2415 2416 2436 2435) +4(416 436 437 417) +4(2416 2417 2437 2436) +4(417 437 438 418) +4(2417 2418 2438 2437) +4(418 438 439 419) +4(2418 2419 2439 2438) +4(420 440 441 421) +4(2420 2421 2441 2440) +4(421 441 442 422) +4(2421 2422 2442 2441) +4(422 442 443 423) +4(2422 2423 2443 2442) +4(423 443 444 424) +4(2423 2424 2444 2443) +4(424 444 445 425) +4(2424 2425 2445 2444) +4(425 445 446 426) +4(2425 2426 2446 2445) +4(426 446 447 427) +4(2426 2427 2447 2446) +4(427 447 448 428) +4(2427 2428 2448 2447) +4(428 448 449 429) +4(2428 2429 2449 2448) +4(429 449 450 430) +4(2429 2430 2450 2449) +4(430 450 451 431) +4(2430 2431 2451 2450) +4(431 451 452 432) +4(2431 2432 2452 2451) +4(432 452 453 433) +4(2432 2433 2453 2452) +4(433 453 454 434) +4(2433 2434 2454 2453) +4(434 454 455 435) +4(2434 2435 2455 2454) +4(435 455 456 436) +4(2435 2436 2456 2455) +4(436 456 457 437) +4(2436 2437 2457 2456) +4(437 457 458 438) +4(2437 2438 2458 2457) +4(438 458 459 439) +4(2438 2439 2459 2458) +4(440 460 461 441) +4(2440 2441 2461 2460) +4(441 461 462 442) +4(2441 2442 2462 2461) +4(442 462 463 443) +4(2442 2443 2463 2462) +4(443 463 464 444) +4(2443 2444 2464 2463) +4(444 464 465 445) +4(2444 2445 2465 2464) +4(445 465 466 446) +4(2445 2446 2466 2465) +4(446 466 467 447) +4(2446 2447 2467 2466) +4(447 467 468 448) +4(2447 2448 2468 2467) +4(448 468 469 449) +4(2448 2449 2469 2468) +4(449 469 470 450) +4(2449 2450 2470 2469) +4(450 470 471 451) +4(2450 2451 2471 2470) +4(451 471 472 452) +4(2451 2452 2472 2471) +4(452 472 473 453) +4(2452 2453 2473 2472) +4(453 473 474 454) +4(2453 2454 2474 2473) +4(454 474 475 455) +4(2454 2455 2475 2474) +4(455 475 476 456) +4(2455 2456 2476 2475) +4(456 476 477 457) +4(2456 2457 2477 2476) +4(457 477 478 458) +4(2457 2458 2478 2477) +4(458 478 479 459) +4(2458 2459 2479 2478) +4(460 480 481 461) +4(2460 2461 2481 2480) +4(461 481 482 462) +4(2461 2462 2482 2481) +4(462 482 483 463) +4(2462 2463 2483 2482) +4(463 483 484 464) +4(2463 2464 2484 2483) +4(464 484 485 465) +4(2464 2465 2485 2484) +4(465 485 486 466) +4(2465 2466 2486 2485) +4(466 486 487 467) +4(2466 2467 2487 2486) +4(467 487 488 468) +4(2467 2468 2488 2487) +4(468 488 489 469) +4(2468 2469 2489 2488) +4(469 489 490 470) +4(2469 2470 2490 2489) +4(470 490 491 471) +4(2470 2471 2491 2490) +4(471 491 492 472) +4(2471 2472 2492 2491) +4(472 492 493 473) +4(2472 2473 2493 2492) +4(473 493 494 474) +4(2473 2474 2494 2493) +4(474 494 495 475) +4(2474 2475 2495 2494) +4(475 495 496 476) +4(2475 2476 2496 2495) +4(476 496 497 477) +4(2476 2477 2497 2496) +4(477 497 498 478) +4(2477 2478 2498 2497) +4(478 498 499 479) +4(2478 2479 2499 2498) +4(480 500 501 481) +4(2480 2481 2501 2500) +4(481 501 502 482) +4(2481 2482 2502 2501) +4(482 502 503 483) +4(2482 2483 2503 2502) +4(483 503 504 484) +4(2483 2484 2504 2503) +4(484 504 505 485) +4(2484 2485 2505 2504) +4(485 505 506 486) +4(2485 2486 2506 2505) +4(486 506 507 487) +4(2486 2487 2507 2506) +4(487 507 508 488) +4(2487 2488 2508 2507) +4(488 508 509 489) +4(2488 2489 2509 2508) +4(489 509 510 490) +4(2489 2490 2510 2509) +4(490 510 511 491) +4(2490 2491 2511 2510) +4(491 511 512 492) +4(2491 2492 2512 2511) +4(492 512 513 493) +4(2492 2493 2513 2512) +4(493 513 514 494) +4(2493 2494 2514 2513) +4(494 514 515 495) +4(2494 2495 2515 2514) +4(495 515 516 496) +4(2495 2496 2516 2515) +4(496 516 517 497) +4(2496 2497 2517 2516) +4(497 517 518 498) +4(2497 2498 2518 2517) +4(498 518 519 499) +4(2498 2499 2519 2518) +4(500 520 521 501) +4(2500 2501 2521 2520) +4(501 521 522 502) +4(2501 2502 2522 2521) +4(502 522 523 503) +4(2502 2503 2523 2522) +4(503 523 524 504) +4(2503 2504 2524 2523) +4(504 524 525 505) +4(2504 2505 2525 2524) +4(505 525 526 506) +4(2505 2506 2526 2525) +4(506 526 527 507) +4(2506 2507 2527 2526) +4(507 527 528 508) +4(2507 2508 2528 2527) +4(508 528 529 509) +4(2508 2509 2529 2528) +4(509 529 530 510) +4(2509 2510 2530 2529) +4(510 530 531 511) +4(2510 2511 2531 2530) +4(511 531 532 512) +4(2511 2512 2532 2531) +4(512 532 533 513) +4(2512 2513 2533 2532) +4(513 533 534 514) +4(2513 2514 2534 2533) +4(514 534 535 515) +4(2514 2515 2535 2534) +4(515 535 536 516) +4(2515 2516 2536 2535) +4(516 536 537 517) +4(2516 2517 2537 2536) +4(517 537 538 518) +4(2517 2518 2538 2537) +4(518 538 539 519) +4(2518 2519 2539 2538) +4(520 540 541 521) +4(2520 2521 2541 2540) +4(521 541 542 522) +4(2521 2522 2542 2541) +4(522 542 543 523) +4(2522 2523 2543 2542) +4(523 543 544 524) +4(2523 2524 2544 2543) +4(524 544 545 525) +4(2524 2525 2545 2544) +4(525 545 546 526) +4(2525 2526 2546 2545) +4(526 546 547 527) +4(2526 2527 2547 2546) +4(527 547 548 528) +4(2527 2528 2548 2547) +4(528 548 549 529) +4(2528 2529 2549 2548) +4(529 549 550 530) +4(2529 2530 2550 2549) +4(530 550 551 531) +4(2530 2531 2551 2550) +4(531 551 552 532) +4(2531 2532 2552 2551) +4(532 552 553 533) +4(2532 2533 2553 2552) +4(533 553 554 534) +4(2533 2534 2554 2553) +4(534 554 555 535) +4(2534 2535 2555 2554) +4(535 555 556 536) +4(2535 2536 2556 2555) +4(536 556 557 537) +4(2536 2537 2557 2556) +4(537 557 558 538) +4(2537 2538 2558 2557) +4(538 558 559 539) +4(2538 2539 2559 2558) +4(540 560 561 541) +4(2540 2541 2561 2560) +4(541 561 562 542) +4(2541 2542 2562 2561) +4(542 562 563 543) +4(2542 2543 2563 2562) +4(543 563 564 544) +4(2543 2544 2564 2563) +4(544 564 565 545) +4(2544 2545 2565 2564) +4(545 565 566 546) +4(2545 2546 2566 2565) +4(546 566 567 547) +4(2546 2547 2567 2566) +4(547 567 568 548) +4(2547 2548 2568 2567) +4(548 568 569 549) +4(2548 2549 2569 2568) +4(549 569 570 550) +4(2549 2550 2570 2569) +4(550 570 571 551) +4(2550 2551 2571 2570) +4(551 571 572 552) +4(2551 2552 2572 2571) +4(552 572 573 553) +4(2552 2553 2573 2572) +4(553 573 574 554) +4(2553 2554 2574 2573) +4(554 574 575 555) +4(2554 2555 2575 2574) +4(555 575 576 556) +4(2555 2556 2576 2575) +4(556 576 577 557) +4(2556 2557 2577 2576) +4(557 577 578 558) +4(2557 2558 2578 2577) +4(558 578 579 559) +4(2558 2559 2579 2578) +4(560 580 581 561) +4(2560 2561 2581 2580) +4(561 581 582 562) +4(2561 2562 2582 2581) +4(562 582 583 563) +4(2562 2563 2583 2582) +4(563 583 584 564) +4(2563 2564 2584 2583) +4(564 584 585 565) +4(2564 2565 2585 2584) +4(565 585 586 566) +4(2565 2566 2586 2585) +4(566 586 587 567) +4(2566 2567 2587 2586) +4(567 587 588 568) +4(2567 2568 2588 2587) +4(568 588 589 569) +4(2568 2569 2589 2588) +4(569 589 590 570) +4(2569 2570 2590 2589) +4(570 590 591 571) +4(2570 2571 2591 2590) +4(571 591 592 572) +4(2571 2572 2592 2591) +4(572 592 593 573) +4(2572 2573 2593 2592) +4(573 593 594 574) +4(2573 2574 2594 2593) +4(574 594 595 575) +4(2574 2575 2595 2594) +4(575 595 596 576) +4(2575 2576 2596 2595) +4(576 596 597 577) +4(2576 2577 2597 2596) +4(577 597 598 578) +4(2577 2578 2598 2597) +4(578 598 599 579) +4(2578 2579 2599 2598) +4(580 600 601 581) +4(2580 2581 2601 2600) +4(581 601 602 582) +4(2581 2582 2602 2601) +4(582 602 603 583) +4(2582 2583 2603 2602) +4(583 603 604 584) +4(2583 2584 2604 2603) +4(584 604 605 585) +4(2584 2585 2605 2604) +4(585 605 606 586) +4(2585 2586 2606 2605) +4(586 606 607 587) +4(2586 2587 2607 2606) +4(587 607 608 588) +4(2587 2588 2608 2607) +4(588 608 609 589) +4(2588 2589 2609 2608) +4(589 609 610 590) +4(2589 2590 2610 2609) +4(590 610 611 591) +4(2590 2591 2611 2610) +4(591 611 612 592) +4(2591 2592 2612 2611) +4(592 612 613 593) +4(2592 2593 2613 2612) +4(593 613 614 594) +4(2593 2594 2614 2613) +4(594 614 615 595) +4(2594 2595 2615 2614) +4(595 615 616 596) +4(2595 2596 2616 2615) +4(596 616 617 597) +4(2596 2597 2617 2616) +4(597 617 618 598) +4(2597 2598 2618 2617) +4(598 618 619 599) +4(2598 2599 2619 2618) +4(600 620 621 601) +4(2600 2601 2621 2620) +4(601 621 622 602) +4(2601 2602 2622 2621) +4(602 622 623 603) +4(2602 2603 2623 2622) +4(603 623 624 604) +4(2603 2604 2624 2623) +4(604 624 625 605) +4(2604 2605 2625 2624) +4(605 625 626 606) +4(2605 2606 2626 2625) +4(606 626 627 607) +4(2606 2607 2627 2626) +4(607 627 628 608) +4(2607 2608 2628 2627) +4(608 628 629 609) +4(2608 2609 2629 2628) +4(609 629 630 610) +4(2609 2610 2630 2629) +4(610 630 631 611) +4(2610 2611 2631 2630) +4(611 631 632 612) +4(2611 2612 2632 2631) +4(612 632 633 613) +4(2612 2613 2633 2632) +4(613 633 634 614) +4(2613 2614 2634 2633) +4(614 634 635 615) +4(2614 2615 2635 2634) +4(615 635 636 616) +4(2615 2616 2636 2635) +4(616 636 637 617) +4(2616 2617 2637 2636) +4(617 637 638 618) +4(2617 2618 2638 2637) +4(618 638 639 619) +4(2618 2619 2639 2638) +4(620 640 641 621) +4(2620 2621 2641 2640) +4(621 641 642 622) +4(2621 2622 2642 2641) +4(622 642 643 623) +4(2622 2623 2643 2642) +4(623 643 644 624) +4(2623 2624 2644 2643) +4(624 644 645 625) +4(2624 2625 2645 2644) +4(625 645 646 626) +4(2625 2626 2646 2645) +4(626 646 647 627) +4(2626 2627 2647 2646) +4(627 647 648 628) +4(2627 2628 2648 2647) +4(628 648 649 629) +4(2628 2629 2649 2648) +4(629 649 650 630) +4(2629 2630 2650 2649) +4(630 650 651 631) +4(2630 2631 2651 2650) +4(631 651 652 632) +4(2631 2632 2652 2651) +4(632 652 653 633) +4(2632 2633 2653 2652) +4(633 653 654 634) +4(2633 2634 2654 2653) +4(634 654 655 635) +4(2634 2635 2655 2654) +4(635 655 656 636) +4(2635 2636 2656 2655) +4(636 656 657 637) +4(2636 2637 2657 2656) +4(637 657 658 638) +4(2637 2638 2658 2657) +4(638 658 659 639) +4(2638 2639 2659 2658) +4(640 660 661 641) +4(2640 2641 2661 2660) +4(641 661 662 642) +4(2641 2642 2662 2661) +4(642 662 663 643) +4(2642 2643 2663 2662) +4(643 663 664 644) +4(2643 2644 2664 2663) +4(644 664 665 645) +4(2644 2645 2665 2664) +4(645 665 666 646) +4(2645 2646 2666 2665) +4(646 666 667 647) +4(2646 2647 2667 2666) +4(647 667 668 648) +4(2647 2648 2668 2667) +4(648 668 669 649) +4(2648 2649 2669 2668) +4(649 669 670 650) +4(2649 2650 2670 2669) +4(650 670 671 651) +4(2650 2651 2671 2670) +4(651 671 672 652) +4(2651 2652 2672 2671) +4(652 672 673 653) +4(2652 2653 2673 2672) +4(653 673 674 654) +4(2653 2654 2674 2673) +4(654 674 675 655) +4(2654 2655 2675 2674) +4(655 675 676 656) +4(2655 2656 2676 2675) +4(656 676 677 657) +4(2656 2657 2677 2676) +4(657 677 678 658) +4(2657 2658 2678 2677) +4(658 678 679 659) +4(2658 2659 2679 2678) +4(660 680 681 661) +4(2660 2661 2681 2680) +4(661 681 682 662) +4(2661 2662 2682 2681) +4(662 682 683 663) +4(2662 2663 2683 2682) +4(663 683 684 664) +4(2663 2664 2684 2683) +4(664 684 685 665) +4(2664 2665 2685 2684) +4(665 685 686 666) +4(2665 2666 2686 2685) +4(666 686 687 667) +4(2666 2667 2687 2686) +4(667 687 688 668) +4(2667 2668 2688 2687) +4(668 688 689 669) +4(2668 2669 2689 2688) +4(669 689 690 670) +4(2669 2670 2690 2689) +4(670 690 691 671) +4(2670 2671 2691 2690) +4(671 691 692 672) +4(2671 2672 2692 2691) +4(672 692 693 673) +4(2672 2673 2693 2692) +4(673 693 694 674) +4(2673 2674 2694 2693) +4(674 694 695 675) +4(2674 2675 2695 2694) +4(675 695 696 676) +4(2675 2676 2696 2695) +4(676 696 697 677) +4(2676 2677 2697 2696) +4(677 697 698 678) +4(2677 2678 2698 2697) +4(678 698 699 679) +4(2678 2679 2699 2698) +4(680 700 701 681) +4(2680 2681 2701 2700) +4(681 701 702 682) +4(2681 2682 2702 2701) +4(682 702 703 683) +4(2682 2683 2703 2702) +4(683 703 704 684) +4(2683 2684 2704 2703) +4(684 704 705 685) +4(2684 2685 2705 2704) +4(685 705 706 686) +4(2685 2686 2706 2705) +4(686 706 707 687) +4(2686 2687 2707 2706) +4(687 707 708 688) +4(2687 2688 2708 2707) +4(688 708 709 689) +4(2688 2689 2709 2708) +4(689 709 710 690) +4(2689 2690 2710 2709) +4(690 710 711 691) +4(2690 2691 2711 2710) +4(691 711 712 692) +4(2691 2692 2712 2711) +4(692 712 713 693) +4(2692 2693 2713 2712) +4(693 713 714 694) +4(2693 2694 2714 2713) +4(694 714 715 695) +4(2694 2695 2715 2714) +4(695 715 716 696) +4(2695 2696 2716 2715) +4(696 716 717 697) +4(2696 2697 2717 2716) +4(697 717 718 698) +4(2697 2698 2718 2717) +4(698 718 719 699) +4(2698 2699 2719 2718) +4(700 720 721 701) +4(2700 2701 2721 2720) +4(701 721 722 702) +4(2701 2702 2722 2721) +4(702 722 723 703) +4(2702 2703 2723 2722) +4(703 723 724 704) +4(2703 2704 2724 2723) +4(704 724 725 705) +4(2704 2705 2725 2724) +4(705 725 726 706) +4(2705 2706 2726 2725) +4(706 726 727 707) +4(2706 2707 2727 2726) +4(707 727 728 708) +4(2707 2708 2728 2727) +4(708 728 729 709) +4(2708 2709 2729 2728) +4(709 729 730 710) +4(2709 2710 2730 2729) +4(710 730 731 711) +4(2710 2711 2731 2730) +4(711 731 732 712) +4(2711 2712 2732 2731) +4(712 732 733 713) +4(2712 2713 2733 2732) +4(713 733 734 714) +4(2713 2714 2734 2733) +4(714 734 735 715) +4(2714 2715 2735 2734) +4(715 735 736 716) +4(2715 2716 2736 2735) +4(716 736 737 717) +4(2716 2717 2737 2736) +4(717 737 738 718) +4(2717 2718 2738 2737) +4(718 738 739 719) +4(2718 2719 2739 2738) +4(720 740 741 721) +4(2720 2721 2741 2740) +4(721 741 742 722) +4(2721 2722 2742 2741) +4(722 742 743 723) +4(2722 2723 2743 2742) +4(723 743 744 724) +4(2723 2724 2744 2743) +4(724 744 745 725) +4(2724 2725 2745 2744) +4(725 745 746 726) +4(2725 2726 2746 2745) +4(726 746 747 727) +4(2726 2727 2747 2746) +4(727 747 748 728) +4(2727 2728 2748 2747) +4(728 748 749 729) +4(2728 2729 2749 2748) +4(729 749 750 730) +4(2729 2730 2750 2749) +4(730 750 751 731) +4(2730 2731 2751 2750) +4(731 751 752 732) +4(2731 2732 2752 2751) +4(732 752 753 733) +4(2732 2733 2753 2752) +4(733 753 754 734) +4(2733 2734 2754 2753) +4(734 754 755 735) +4(2734 2735 2755 2754) +4(735 755 756 736) +4(2735 2736 2756 2755) +4(736 756 757 737) +4(2736 2737 2757 2756) +4(737 757 758 738) +4(2737 2738 2758 2757) +4(738 758 759 739) +4(2738 2739 2759 2758) +4(740 760 761 741) +4(2740 2741 2761 2760) +4(741 761 762 742) +4(2741 2742 2762 2761) +4(742 762 763 743) +4(2742 2743 2763 2762) +4(743 763 764 744) +4(2743 2744 2764 2763) +4(744 764 765 745) +4(2744 2745 2765 2764) +4(745 765 766 746) +4(2745 2746 2766 2765) +4(746 766 767 747) +4(2746 2747 2767 2766) +4(747 767 768 748) +4(2747 2748 2768 2767) +4(748 768 769 749) +4(2748 2749 2769 2768) +4(749 769 770 750) +4(2749 2750 2770 2769) +4(750 770 771 751) +4(2750 2751 2771 2770) +4(751 771 772 752) +4(2751 2752 2772 2771) +4(752 772 773 753) +4(2752 2753 2773 2772) +4(753 773 774 754) +4(2753 2754 2774 2773) +4(754 774 775 755) +4(2754 2755 2775 2774) +4(755 775 776 756) +4(2755 2756 2776 2775) +4(756 776 777 757) +4(2756 2757 2777 2776) +4(757 777 778 758) +4(2757 2758 2778 2777) +4(758 778 779 759) +4(2758 2759 2779 2778) +4(760 780 781 761) +4(2760 2761 2781 2780) +4(761 781 782 762) +4(2761 2762 2782 2781) +4(762 782 783 763) +4(2762 2763 2783 2782) +4(763 783 784 764) +4(2763 2764 2784 2783) +4(764 784 785 765) +4(2764 2765 2785 2784) +4(765 785 786 766) +4(2765 2766 2786 2785) +4(766 786 787 767) +4(2766 2767 2787 2786) +4(767 787 788 768) +4(2767 2768 2788 2787) +4(768 788 789 769) +4(2768 2769 2789 2788) +4(769 789 790 770) +4(2769 2770 2790 2789) +4(770 790 791 771) +4(2770 2771 2791 2790) +4(771 791 792 772) +4(2771 2772 2792 2791) +4(772 792 793 773) +4(2772 2773 2793 2792) +4(773 793 794 774) +4(2773 2774 2794 2793) +4(774 794 795 775) +4(2774 2775 2795 2794) +4(775 795 796 776) +4(2775 2776 2796 2795) +4(776 796 797 777) +4(2776 2777 2797 2796) +4(777 797 798 778) +4(2777 2778 2798 2797) +4(778 798 799 779) +4(2778 2779 2799 2798) +4(780 800 801 781) +4(2780 2781 2801 2800) +4(781 801 802 782) +4(2781 2782 2802 2801) +4(782 802 803 783) +4(2782 2783 2803 2802) +4(783 803 804 784) +4(2783 2784 2804 2803) +4(784 804 805 785) +4(2784 2785 2805 2804) +4(785 805 806 786) +4(2785 2786 2806 2805) +4(786 806 807 787) +4(2786 2787 2807 2806) +4(787 807 808 788) +4(2787 2788 2808 2807) +4(788 808 809 789) +4(2788 2789 2809 2808) +4(789 809 810 790) +4(2789 2790 2810 2809) +4(790 810 811 791) +4(2790 2791 2811 2810) +4(791 811 812 792) +4(2791 2792 2812 2811) +4(792 812 813 793) +4(2792 2793 2813 2812) +4(793 813 814 794) +4(2793 2794 2814 2813) +4(794 814 815 795) +4(2794 2795 2815 2814) +4(795 815 816 796) +4(2795 2796 2816 2815) +4(796 816 817 797) +4(2796 2797 2817 2816) +4(797 817 818 798) +4(2797 2798 2818 2817) +4(798 818 819 799) +4(2798 2799 2819 2818) +4(800 820 821 801) +4(2800 2801 2821 2820) +4(801 821 822 802) +4(2801 2802 2822 2821) +4(802 822 823 803) +4(2802 2803 2823 2822) +4(803 823 824 804) +4(2803 2804 2824 2823) +4(804 824 825 805) +4(2804 2805 2825 2824) +4(805 825 826 806) +4(2805 2806 2826 2825) +4(806 826 827 807) +4(2806 2807 2827 2826) +4(807 827 828 808) +4(2807 2808 2828 2827) +4(808 828 829 809) +4(2808 2809 2829 2828) +4(809 829 830 810) +4(2809 2810 2830 2829) +4(810 830 831 811) +4(2810 2811 2831 2830) +4(811 831 832 812) +4(2811 2812 2832 2831) +4(812 832 833 813) +4(2812 2813 2833 2832) +4(813 833 834 814) +4(2813 2814 2834 2833) +4(814 834 835 815) +4(2814 2815 2835 2834) +4(815 835 836 816) +4(2815 2816 2836 2835) +4(816 836 837 817) +4(2816 2817 2837 2836) +4(817 837 838 818) +4(2817 2818 2838 2837) +4(818 838 839 819) +4(2818 2819 2839 2838) +4(820 840 841 821) +4(2820 2821 2841 2840) +4(821 841 842 822) +4(2821 2822 2842 2841) +4(822 842 843 823) +4(2822 2823 2843 2842) +4(823 843 844 824) +4(2823 2824 2844 2843) +4(824 844 845 825) +4(2824 2825 2845 2844) +4(825 845 846 826) +4(2825 2826 2846 2845) +4(826 846 847 827) +4(2826 2827 2847 2846) +4(827 847 848 828) +4(2827 2828 2848 2847) +4(828 848 849 829) +4(2828 2829 2849 2848) +4(829 849 850 830) +4(2829 2830 2850 2849) +4(830 850 851 831) +4(2830 2831 2851 2850) +4(831 851 852 832) +4(2831 2832 2852 2851) +4(832 852 853 833) +4(2832 2833 2853 2852) +4(833 853 854 834) +4(2833 2834 2854 2853) +4(834 854 855 835) +4(2834 2835 2855 2854) +4(835 855 856 836) +4(2835 2836 2856 2855) +4(836 856 857 837) +4(2836 2837 2857 2856) +4(837 857 858 838) +4(2837 2838 2858 2857) +4(838 858 859 839) +4(2838 2839 2859 2858) +4(840 860 861 841) +4(2840 2841 2861 2860) +4(841 861 862 842) +4(2841 2842 2862 2861) +4(842 862 863 843) +4(2842 2843 2863 2862) +4(843 863 864 844) +4(2843 2844 2864 2863) +4(844 864 865 845) +4(2844 2845 2865 2864) +4(845 865 866 846) +4(2845 2846 2866 2865) +4(846 866 867 847) +4(2846 2847 2867 2866) +4(847 867 868 848) +4(2847 2848 2868 2867) +4(848 868 869 849) +4(2848 2849 2869 2868) +4(849 869 870 850) +4(2849 2850 2870 2869) +4(850 870 871 851) +4(2850 2851 2871 2870) +4(851 871 872 852) +4(2851 2852 2872 2871) +4(852 872 873 853) +4(2852 2853 2873 2872) +4(853 873 874 854) +4(2853 2854 2874 2873) +4(854 874 875 855) +4(2854 2855 2875 2874) +4(855 875 876 856) +4(2855 2856 2876 2875) +4(856 876 877 857) +4(2856 2857 2877 2876) +4(857 877 878 858) +4(2857 2858 2878 2877) +4(858 878 879 859) +4(2858 2859 2879 2878) +4(860 880 881 861) +4(2860 2861 2881 2880) +4(861 881 882 862) +4(2861 2862 2882 2881) +4(862 882 883 863) +4(2862 2863 2883 2882) +4(863 883 884 864) +4(2863 2864 2884 2883) +4(864 884 885 865) +4(2864 2865 2885 2884) +4(865 885 886 866) +4(2865 2866 2886 2885) +4(866 886 887 867) +4(2866 2867 2887 2886) +4(867 887 888 868) +4(2867 2868 2888 2887) +4(868 888 889 869) +4(2868 2869 2889 2888) +4(869 889 890 870) +4(2869 2870 2890 2889) +4(870 890 891 871) +4(2870 2871 2891 2890) +4(871 891 892 872) +4(2871 2872 2892 2891) +4(872 892 893 873) +4(2872 2873 2893 2892) +4(873 893 894 874) +4(2873 2874 2894 2893) +4(874 894 895 875) +4(2874 2875 2895 2894) +4(875 895 896 876) +4(2875 2876 2896 2895) +4(876 896 897 877) +4(2876 2877 2897 2896) +4(877 897 898 878) +4(2877 2878 2898 2897) +4(878 898 899 879) +4(2878 2879 2899 2898) +4(880 900 901 881) +4(2880 2881 2901 2900) +4(881 901 902 882) +4(2881 2882 2902 2901) +4(882 902 903 883) +4(2882 2883 2903 2902) +4(883 903 904 884) +4(2883 2884 2904 2903) +4(884 904 905 885) +4(2884 2885 2905 2904) +4(885 905 906 886) +4(2885 2886 2906 2905) +4(886 906 907 887) +4(2886 2887 2907 2906) +4(887 907 908 888) +4(2887 2888 2908 2907) +4(888 908 909 889) +4(2888 2889 2909 2908) +4(889 909 910 890) +4(2889 2890 2910 2909) +4(890 910 911 891) +4(2890 2891 2911 2910) +4(891 911 912 892) +4(2891 2892 2912 2911) +4(892 912 913 893) +4(2892 2893 2913 2912) +4(893 913 914 894) +4(2893 2894 2914 2913) +4(894 914 915 895) +4(2894 2895 2915 2914) +4(895 915 916 896) +4(2895 2896 2916 2915) +4(896 916 917 897) +4(2896 2897 2917 2916) +4(897 917 918 898) +4(2897 2898 2918 2917) +4(898 918 919 899) +4(2898 2899 2919 2918) +4(900 920 921 901) +4(2900 2901 2921 2920) +4(901 921 922 902) +4(2901 2902 2922 2921) +4(902 922 923 903) +4(2902 2903 2923 2922) +4(903 923 924 904) +4(2903 2904 2924 2923) +4(904 924 925 905) +4(2904 2905 2925 2924) +4(905 925 926 906) +4(2905 2906 2926 2925) +4(906 926 927 907) +4(2906 2907 2927 2926) +4(907 927 928 908) +4(2907 2908 2928 2927) +4(908 928 929 909) +4(2908 2909 2929 2928) +4(909 929 930 910) +4(2909 2910 2930 2929) +4(910 930 931 911) +4(2910 2911 2931 2930) +4(911 931 932 912) +4(2911 2912 2932 2931) +4(912 932 933 913) +4(2912 2913 2933 2932) +4(913 933 934 914) +4(2913 2914 2934 2933) +4(914 934 935 915) +4(2914 2915 2935 2934) +4(915 935 936 916) +4(2915 2916 2936 2935) +4(916 936 937 917) +4(2916 2917 2937 2936) +4(917 937 938 918) +4(2917 2918 2938 2937) +4(918 938 939 919) +4(2918 2919 2939 2938) +4(920 940 941 921) +4(2920 2921 2941 2940) +4(921 941 942 922) +4(2921 2922 2942 2941) +4(922 942 943 923) +4(2922 2923 2943 2942) +4(923 943 944 924) +4(2923 2924 2944 2943) +4(924 944 945 925) +4(2924 2925 2945 2944) +4(925 945 946 926) +4(2925 2926 2946 2945) +4(926 946 947 927) +4(2926 2927 2947 2946) +4(927 947 948 928) +4(2927 2928 2948 2947) +4(928 948 949 929) +4(2928 2929 2949 2948) +4(929 949 950 930) +4(2929 2930 2950 2949) +4(930 950 951 931) +4(2930 2931 2951 2950) +4(931 951 952 932) +4(2931 2932 2952 2951) +4(932 952 953 933) +4(2932 2933 2953 2952) +4(933 953 954 934) +4(2933 2934 2954 2953) +4(934 954 955 935) +4(2934 2935 2955 2954) +4(935 955 956 936) +4(2935 2936 2956 2955) +4(936 956 957 937) +4(2936 2937 2957 2956) +4(937 957 958 938) +4(2937 2938 2958 2957) +4(938 958 959 939) +4(2938 2939 2959 2958) +4(940 960 961 941) +4(2940 2941 2961 2960) +4(941 961 962 942) +4(2941 2942 2962 2961) +4(942 962 963 943) +4(2942 2943 2963 2962) +4(943 963 964 944) +4(2943 2944 2964 2963) +4(944 964 965 945) +4(2944 2945 2965 2964) +4(945 965 966 946) +4(2945 2946 2966 2965) +4(946 966 967 947) +4(2946 2947 2967 2966) +4(947 967 968 948) +4(2947 2948 2968 2967) +4(948 968 969 949) +4(2948 2949 2969 2968) +4(949 969 970 950) +4(2949 2950 2970 2969) +4(950 970 971 951) +4(2950 2951 2971 2970) +4(951 971 972 952) +4(2951 2952 2972 2971) +4(952 972 973 953) +4(2952 2953 2973 2972) +4(953 973 974 954) +4(2953 2954 2974 2973) +4(954 974 975 955) +4(2954 2955 2975 2974) +4(955 975 976 956) +4(2955 2956 2976 2975) +4(956 976 977 957) +4(2956 2957 2977 2976) +4(957 977 978 958) +4(2957 2958 2978 2977) +4(958 978 979 959) +4(2958 2959 2979 2978) +4(960 980 981 961) +4(2960 2961 2981 2980) +4(961 981 982 962) +4(2961 2962 2982 2981) +4(962 982 983 963) +4(2962 2963 2983 2982) +4(963 983 984 964) +4(2963 2964 2984 2983) +4(964 984 985 965) +4(2964 2965 2985 2984) +4(965 985 986 966) +4(2965 2966 2986 2985) +4(966 986 987 967) +4(2966 2967 2987 2986) +4(967 987 988 968) +4(2967 2968 2988 2987) +4(968 988 989 969) +4(2968 2969 2989 2988) +4(969 989 990 970) +4(2969 2970 2990 2989) +4(970 990 991 971) +4(2970 2971 2991 2990) +4(971 991 992 972) +4(2971 2972 2992 2991) +4(972 992 993 973) +4(2972 2973 2993 2992) +4(973 993 994 974) +4(2973 2974 2994 2993) +4(974 994 995 975) +4(2974 2975 2995 2994) +4(975 995 996 976) +4(2975 2976 2996 2995) +4(976 996 997 977) +4(2976 2977 2997 2996) +4(977 997 998 978) +4(2977 2978 2998 2997) +4(978 998 999 979) +4(2978 2979 2999 2998) +4(980 1000 1001 981) +4(2980 2981 3001 3000) +4(981 1001 1002 982) +4(2981 2982 3002 3001) +4(982 1002 1003 983) +4(2982 2983 3003 3002) +4(983 1003 1004 984) +4(2983 2984 3004 3003) +4(984 1004 1005 985) +4(2984 2985 3005 3004) +4(985 1005 1006 986) +4(2985 2986 3006 3005) +4(986 1006 1007 987) +4(2986 2987 3007 3006) +4(987 1007 1008 988) +4(2987 2988 3008 3007) +4(988 1008 1009 989) +4(2988 2989 3009 3008) +4(989 1009 1010 990) +4(2989 2990 3010 3009) +4(990 1010 1011 991) +4(2990 2991 3011 3010) +4(991 1011 1012 992) +4(2991 2992 3012 3011) +4(992 1012 1013 993) +4(2992 2993 3013 3012) +4(993 1013 1014 994) +4(2993 2994 3014 3013) +4(994 1014 1015 995) +4(2994 2995 3015 3014) +4(995 1015 1016 996) +4(2995 2996 3016 3015) +4(996 1016 1017 997) +4(2996 2997 3017 3016) +4(997 1017 1018 998) +4(2997 2998 3018 3017) +4(998 1018 1019 999) +4(2998 2999 3019 3018) +4(1000 1020 1021 1001) +4(3000 3001 3021 3020) +4(1001 1021 1022 1002) +4(3001 3002 3022 3021) +4(1002 1022 1023 1003) +4(3002 3003 3023 3022) +4(1003 1023 1024 1004) +4(3003 3004 3024 3023) +4(1004 1024 1025 1005) +4(3004 3005 3025 3024) +4(1005 1025 1026 1006) +4(3005 3006 3026 3025) +4(1006 1026 1027 1007) +4(3006 3007 3027 3026) +4(1007 1027 1028 1008) +4(3007 3008 3028 3027) +4(1008 1028 1029 1009) +4(3008 3009 3029 3028) +4(1009 1029 1030 1010) +4(3009 3010 3030 3029) +4(1010 1030 1031 1011) +4(3010 3011 3031 3030) +4(1011 1031 1032 1012) +4(3011 3012 3032 3031) +4(1012 1032 1033 1013) +4(3012 3013 3033 3032) +4(1013 1033 1034 1014) +4(3013 3014 3034 3033) +4(1014 1034 1035 1015) +4(3014 3015 3035 3034) +4(1015 1035 1036 1016) +4(3015 3016 3036 3035) +4(1016 1036 1037 1017) +4(3016 3017 3037 3036) +4(1017 1037 1038 1018) +4(3017 3018 3038 3037) +4(1018 1038 1039 1019) +4(3018 3019 3039 3038) +4(1020 1040 1041 1021) +4(3020 3021 3041 3040) +4(1021 1041 1042 1022) +4(3021 3022 3042 3041) +4(1022 1042 1043 1023) +4(3022 3023 3043 3042) +4(1023 1043 1044 1024) +4(3023 3024 3044 3043) +4(1024 1044 1045 1025) +4(3024 3025 3045 3044) +4(1025 1045 1046 1026) +4(3025 3026 3046 3045) +4(1026 1046 1047 1027) +4(3026 3027 3047 3046) +4(1027 1047 1048 1028) +4(3027 3028 3048 3047) +4(1028 1048 1049 1029) +4(3028 3029 3049 3048) +4(1029 1049 1050 1030) +4(3029 3030 3050 3049) +4(1030 1050 1051 1031) +4(3030 3031 3051 3050) +4(1031 1051 1052 1032) +4(3031 3032 3052 3051) +4(1032 1052 1053 1033) +4(3032 3033 3053 3052) +4(1033 1053 1054 1034) +4(3033 3034 3054 3053) +4(1034 1054 1055 1035) +4(3034 3035 3055 3054) +4(1035 1055 1056 1036) +4(3035 3036 3056 3055) +4(1036 1056 1057 1037) +4(3036 3037 3057 3056) +4(1037 1057 1058 1038) +4(3037 3038 3058 3057) +4(1038 1058 1059 1039) +4(3038 3039 3059 3058) +4(1040 1060 1061 1041) +4(3040 3041 3061 3060) +4(1041 1061 1062 1042) +4(3041 3042 3062 3061) +4(1042 1062 1063 1043) +4(3042 3043 3063 3062) +4(1043 1063 1064 1044) +4(3043 3044 3064 3063) +4(1044 1064 1065 1045) +4(3044 3045 3065 3064) +4(1045 1065 1066 1046) +4(3045 3046 3066 3065) +4(1046 1066 1067 1047) +4(3046 3047 3067 3066) +4(1047 1067 1068 1048) +4(3047 3048 3068 3067) +4(1048 1068 1069 1049) +4(3048 3049 3069 3068) +4(1049 1069 1070 1050) +4(3049 3050 3070 3069) +4(1050 1070 1071 1051) +4(3050 3051 3071 3070) +4(1051 1071 1072 1052) +4(3051 3052 3072 3071) +4(1052 1072 1073 1053) +4(3052 3053 3073 3072) +4(1053 1073 1074 1054) +4(3053 3054 3074 3073) +4(1054 1074 1075 1055) +4(3054 3055 3075 3074) +4(1055 1075 1076 1056) +4(3055 3056 3076 3075) +4(1056 1076 1077 1057) +4(3056 3057 3077 3076) +4(1057 1077 1078 1058) +4(3057 3058 3078 3077) +4(1058 1078 1079 1059) +4(3058 3059 3079 3078) +4(1060 1080 1081 1061) +4(3060 3061 3081 3080) +4(1061 1081 1082 1062) +4(3061 3062 3082 3081) +4(1062 1082 1083 1063) +4(3062 3063 3083 3082) +4(1063 1083 1084 1064) +4(3063 3064 3084 3083) +4(1064 1084 1085 1065) +4(3064 3065 3085 3084) +4(1065 1085 1086 1066) +4(3065 3066 3086 3085) +4(1066 1086 1087 1067) +4(3066 3067 3087 3086) +4(1067 1087 1088 1068) +4(3067 3068 3088 3087) +4(1068 1088 1089 1069) +4(3068 3069 3089 3088) +4(1069 1089 1090 1070) +4(3069 3070 3090 3089) +4(1070 1090 1091 1071) +4(3070 3071 3091 3090) +4(1071 1091 1092 1072) +4(3071 3072 3092 3091) +4(1072 1092 1093 1073) +4(3072 3073 3093 3092) +4(1073 1093 1094 1074) +4(3073 3074 3094 3093) +4(1074 1094 1095 1075) +4(3074 3075 3095 3094) +4(1075 1095 1096 1076) +4(3075 3076 3096 3095) +4(1076 1096 1097 1077) +4(3076 3077 3097 3096) +4(1077 1097 1098 1078) +4(3077 3078 3098 3097) +4(1078 1098 1099 1079) +4(3078 3079 3099 3098) +4(1080 1100 1101 1081) +4(3080 3081 3101 3100) +4(1081 1101 1102 1082) +4(3081 3082 3102 3101) +4(1082 1102 1103 1083) +4(3082 3083 3103 3102) +4(1083 1103 1104 1084) +4(3083 3084 3104 3103) +4(1084 1104 1105 1085) +4(3084 3085 3105 3104) +4(1085 1105 1106 1086) +4(3085 3086 3106 3105) +4(1086 1106 1107 1087) +4(3086 3087 3107 3106) +4(1087 1107 1108 1088) +4(3087 3088 3108 3107) +4(1088 1108 1109 1089) +4(3088 3089 3109 3108) +4(1089 1109 1110 1090) +4(3089 3090 3110 3109) +4(1090 1110 1111 1091) +4(3090 3091 3111 3110) +4(1091 1111 1112 1092) +4(3091 3092 3112 3111) +4(1092 1112 1113 1093) +4(3092 3093 3113 3112) +4(1093 1113 1114 1094) +4(3093 3094 3114 3113) +4(1094 1114 1115 1095) +4(3094 3095 3115 3114) +4(1095 1115 1116 1096) +4(3095 3096 3116 3115) +4(1096 1116 1117 1097) +4(3096 3097 3117 3116) +4(1097 1117 1118 1098) +4(3097 3098 3118 3117) +4(1098 1118 1119 1099) +4(3098 3099 3119 3118) +4(1100 1120 1121 1101) +4(3100 3101 3121 3120) +4(1101 1121 1122 1102) +4(3101 3102 3122 3121) +4(1102 1122 1123 1103) +4(3102 3103 3123 3122) +4(1103 1123 1124 1104) +4(3103 3104 3124 3123) +4(1104 1124 1125 1105) +4(3104 3105 3125 3124) +4(1105 1125 1126 1106) +4(3105 3106 3126 3125) +4(1106 1126 1127 1107) +4(3106 3107 3127 3126) +4(1107 1127 1128 1108) +4(3107 3108 3128 3127) +4(1108 1128 1129 1109) +4(3108 3109 3129 3128) +4(1109 1129 1130 1110) +4(3109 3110 3130 3129) +4(1110 1130 1131 1111) +4(3110 3111 3131 3130) +4(1111 1131 1132 1112) +4(3111 3112 3132 3131) +4(1112 1132 1133 1113) +4(3112 3113 3133 3132) +4(1113 1133 1134 1114) +4(3113 3114 3134 3133) +4(1114 1134 1135 1115) +4(3114 3115 3135 3134) +4(1115 1135 1136 1116) +4(3115 3116 3136 3135) +4(1116 1136 1137 1117) +4(3116 3117 3137 3136) +4(1117 1137 1138 1118) +4(3117 3118 3138 3137) +4(1118 1138 1139 1119) +4(3118 3119 3139 3138) +4(1120 1140 1141 1121) +4(3120 3121 3141 3140) +4(1121 1141 1142 1122) +4(3121 3122 3142 3141) +4(1122 1142 1143 1123) +4(3122 3123 3143 3142) +4(1123 1143 1144 1124) +4(3123 3124 3144 3143) +4(1124 1144 1145 1125) +4(3124 3125 3145 3144) +4(1125 1145 1146 1126) +4(3125 3126 3146 3145) +4(1126 1146 1147 1127) +4(3126 3127 3147 3146) +4(1127 1147 1148 1128) +4(3127 3128 3148 3147) +4(1128 1148 1149 1129) +4(3128 3129 3149 3148) +4(1129 1149 1150 1130) +4(3129 3130 3150 3149) +4(1130 1150 1151 1131) +4(3130 3131 3151 3150) +4(1131 1151 1152 1132) +4(3131 3132 3152 3151) +4(1132 1152 1153 1133) +4(3132 3133 3153 3152) +4(1133 1153 1154 1134) +4(3133 3134 3154 3153) +4(1134 1154 1155 1135) +4(3134 3135 3155 3154) +4(1135 1155 1156 1136) +4(3135 3136 3156 3155) +4(1136 1156 1157 1137) +4(3136 3137 3157 3156) +4(1137 1157 1158 1138) +4(3137 3138 3158 3157) +4(1138 1158 1159 1139) +4(3138 3139 3159 3158) +4(1140 1160 1161 1141) +4(3140 3141 3161 3160) +4(1141 1161 1162 1142) +4(3141 3142 3162 3161) +4(1142 1162 1163 1143) +4(3142 3143 3163 3162) +4(1143 1163 1164 1144) +4(3143 3144 3164 3163) +4(1144 1164 1165 1145) +4(3144 3145 3165 3164) +4(1145 1165 1166 1146) +4(3145 3146 3166 3165) +4(1146 1166 1167 1147) +4(3146 3147 3167 3166) +4(1147 1167 1168 1148) +4(3147 3148 3168 3167) +4(1148 1168 1169 1149) +4(3148 3149 3169 3168) +4(1149 1169 1170 1150) +4(3149 3150 3170 3169) +4(1150 1170 1171 1151) +4(3150 3151 3171 3170) +4(1151 1171 1172 1152) +4(3151 3152 3172 3171) +4(1152 1172 1173 1153) +4(3152 3153 3173 3172) +4(1153 1173 1174 1154) +4(3153 3154 3174 3173) +4(1154 1174 1175 1155) +4(3154 3155 3175 3174) +4(1155 1175 1176 1156) +4(3155 3156 3176 3175) +4(1156 1176 1177 1157) +4(3156 3157 3177 3176) +4(1157 1177 1178 1158) +4(3157 3158 3178 3177) +4(1158 1178 1179 1159) +4(3158 3159 3179 3178) +4(1160 1180 1181 1161) +4(3160 3161 3181 3180) +4(1161 1181 1182 1162) +4(3161 3162 3182 3181) +4(1162 1182 1183 1163) +4(3162 3163 3183 3182) +4(1163 1183 1184 1164) +4(3163 3164 3184 3183) +4(1164 1184 1185 1165) +4(3164 3165 3185 3184) +4(1165 1185 1186 1166) +4(3165 3166 3186 3185) +4(1166 1186 1187 1167) +4(3166 3167 3187 3186) +4(1167 1187 1188 1168) +4(3167 3168 3188 3187) +4(1168 1188 1189 1169) +4(3168 3169 3189 3188) +4(1169 1189 1190 1170) +4(3169 3170 3190 3189) +4(1170 1190 1191 1171) +4(3170 3171 3191 3190) +4(1171 1191 1192 1172) +4(3171 3172 3192 3191) +4(1172 1192 1193 1173) +4(3172 3173 3193 3192) +4(1173 1193 1194 1174) +4(3173 3174 3194 3193) +4(1174 1194 1195 1175) +4(3174 3175 3195 3194) +4(1175 1195 1196 1176) +4(3175 3176 3196 3195) +4(1176 1196 1197 1177) +4(3176 3177 3197 3196) +4(1177 1197 1198 1178) +4(3177 3178 3198 3197) +4(1178 1198 1199 1179) +4(3178 3179 3199 3198) +4(1180 1200 1201 1181) +4(3180 3181 3201 3200) +4(1181 1201 1202 1182) +4(3181 3182 3202 3201) +4(1182 1202 1203 1183) +4(3182 3183 3203 3202) +4(1183 1203 1204 1184) +4(3183 3184 3204 3203) +4(1184 1204 1205 1185) +4(3184 3185 3205 3204) +4(1185 1205 1206 1186) +4(3185 3186 3206 3205) +4(1186 1206 1207 1187) +4(3186 3187 3207 3206) +4(1187 1207 1208 1188) +4(3187 3188 3208 3207) +4(1188 1208 1209 1189) +4(3188 3189 3209 3208) +4(1189 1209 1210 1190) +4(3189 3190 3210 3209) +4(1190 1210 1211 1191) +4(3190 3191 3211 3210) +4(1191 1211 1212 1192) +4(3191 3192 3212 3211) +4(1192 1212 1213 1193) +4(3192 3193 3213 3212) +4(1193 1213 1214 1194) +4(3193 3194 3214 3213) +4(1194 1214 1215 1195) +4(3194 3195 3215 3214) +4(1195 1215 1216 1196) +4(3195 3196 3216 3215) +4(1196 1216 1217 1197) +4(3196 3197 3217 3216) +4(1197 1217 1218 1198) +4(3197 3198 3218 3217) +4(1198 1218 1219 1199) +4(3198 3199 3219 3218) +4(1200 1220 1221 1201) +4(3200 3201 3221 3220) +4(1201 1221 1222 1202) +4(3201 3202 3222 3221) +4(1202 1222 1223 1203) +4(3202 3203 3223 3222) +4(1203 1223 1224 1204) +4(3203 3204 3224 3223) +4(1204 1224 1225 1205) +4(3204 3205 3225 3224) +4(1205 1225 1226 1206) +4(3205 3206 3226 3225) +4(1206 1226 1227 1207) +4(3206 3207 3227 3226) +4(1207 1227 1228 1208) +4(3207 3208 3228 3227) +4(1208 1228 1229 1209) +4(3208 3209 3229 3228) +4(1209 1229 1230 1210) +4(3209 3210 3230 3229) +4(1210 1230 1231 1211) +4(3210 3211 3231 3230) +4(1211 1231 1232 1212) +4(3211 3212 3232 3231) +4(1212 1232 1233 1213) +4(3212 3213 3233 3232) +4(1213 1233 1234 1214) +4(3213 3214 3234 3233) +4(1214 1234 1235 1215) +4(3214 3215 3235 3234) +4(1215 1235 1236 1216) +4(3215 3216 3236 3235) +4(1216 1236 1237 1217) +4(3216 3217 3237 3236) +4(1217 1237 1238 1218) +4(3217 3218 3238 3237) +4(1218 1238 1239 1219) +4(3218 3219 3239 3238) +4(1220 1240 1241 1221) +4(3220 3221 3241 3240) +4(1221 1241 1242 1222) +4(3221 3222 3242 3241) +4(1222 1242 1243 1223) +4(3222 3223 3243 3242) +4(1223 1243 1244 1224) +4(3223 3224 3244 3243) +4(1224 1244 1245 1225) +4(3224 3225 3245 3244) +4(1225 1245 1246 1226) +4(3225 3226 3246 3245) +4(1226 1246 1247 1227) +4(3226 3227 3247 3246) +4(1227 1247 1248 1228) +4(3227 3228 3248 3247) +4(1228 1248 1249 1229) +4(3228 3229 3249 3248) +4(1229 1249 1250 1230) +4(3229 3230 3250 3249) +4(1230 1250 1251 1231) +4(3230 3231 3251 3250) +4(1231 1251 1252 1232) +4(3231 3232 3252 3251) +4(1232 1252 1253 1233) +4(3232 3233 3253 3252) +4(1233 1253 1254 1234) +4(3233 3234 3254 3253) +4(1234 1254 1255 1235) +4(3234 3235 3255 3254) +4(1235 1255 1256 1236) +4(3235 3236 3256 3255) +4(1236 1256 1257 1237) +4(3236 3237 3257 3256) +4(1237 1257 1258 1238) +4(3237 3238 3258 3257) +4(1238 1258 1259 1239) +4(3238 3239 3259 3258) +4(1240 1260 1261 1241) +4(3240 3241 3261 3260) +4(1241 1261 1262 1242) +4(3241 3242 3262 3261) +4(1242 1262 1263 1243) +4(3242 3243 3263 3262) +4(1243 1263 1264 1244) +4(3243 3244 3264 3263) +4(1244 1264 1265 1245) +4(3244 3245 3265 3264) +4(1245 1265 1266 1246) +4(3245 3246 3266 3265) +4(1246 1266 1267 1247) +4(3246 3247 3267 3266) +4(1247 1267 1268 1248) +4(3247 3248 3268 3267) +4(1248 1268 1269 1249) +4(3248 3249 3269 3268) +4(1249 1269 1270 1250) +4(3249 3250 3270 3269) +4(1250 1270 1271 1251) +4(3250 3251 3271 3270) +4(1251 1271 1272 1252) +4(3251 3252 3272 3271) +4(1252 1272 1273 1253) +4(3252 3253 3273 3272) +4(1253 1273 1274 1254) +4(3253 3254 3274 3273) +4(1254 1274 1275 1255) +4(3254 3255 3275 3274) +4(1255 1275 1276 1256) +4(3255 3256 3276 3275) +4(1256 1276 1277 1257) +4(3256 3257 3277 3276) +4(1257 1277 1278 1258) +4(3257 3258 3278 3277) +4(1258 1278 1279 1259) +4(3258 3259 3279 3278) +4(1260 1280 1281 1261) +4(3260 3261 3281 3280) +4(1261 1281 1282 1262) +4(3261 3262 3282 3281) +4(1262 1282 1283 1263) +4(3262 3263 3283 3282) +4(1263 1283 1284 1264) +4(3263 3264 3284 3283) +4(1264 1284 1285 1265) +4(3264 3265 3285 3284) +4(1265 1285 1286 1266) +4(3265 3266 3286 3285) +4(1266 1286 1287 1267) +4(3266 3267 3287 3286) +4(1267 1287 1288 1268) +4(3267 3268 3288 3287) +4(1268 1288 1289 1269) +4(3268 3269 3289 3288) +4(1269 1289 1290 1270) +4(3269 3270 3290 3289) +4(1270 1290 1291 1271) +4(3270 3271 3291 3290) +4(1271 1291 1292 1272) +4(3271 3272 3292 3291) +4(1272 1292 1293 1273) +4(3272 3273 3293 3292) +4(1273 1293 1294 1274) +4(3273 3274 3294 3293) +4(1274 1294 1295 1275) +4(3274 3275 3295 3294) +4(1275 1295 1296 1276) +4(3275 3276 3296 3295) +4(1276 1296 1297 1277) +4(3276 3277 3297 3296) +4(1277 1297 1298 1278) +4(3277 3278 3298 3297) +4(1278 1298 1299 1279) +4(3278 3279 3299 3298) +4(1280 1300 1301 1281) +4(3280 3281 3301 3300) +4(1281 1301 1302 1282) +4(3281 3282 3302 3301) +4(1282 1302 1303 1283) +4(3282 3283 3303 3302) +4(1283 1303 1304 1284) +4(3283 3284 3304 3303) +4(1284 1304 1305 1285) +4(3284 3285 3305 3304) +4(1285 1305 1306 1286) +4(3285 3286 3306 3305) +4(1286 1306 1307 1287) +4(3286 3287 3307 3306) +4(1287 1307 1308 1288) +4(3287 3288 3308 3307) +4(1288 1308 1309 1289) +4(3288 3289 3309 3308) +4(1289 1309 1310 1290) +4(3289 3290 3310 3309) +4(1290 1310 1311 1291) +4(3290 3291 3311 3310) +4(1291 1311 1312 1292) +4(3291 3292 3312 3311) +4(1292 1312 1313 1293) +4(3292 3293 3313 3312) +4(1293 1313 1314 1294) +4(3293 3294 3314 3313) +4(1294 1314 1315 1295) +4(3294 3295 3315 3314) +4(1295 1315 1316 1296) +4(3295 3296 3316 3315) +4(1296 1316 1317 1297) +4(3296 3297 3317 3316) +4(1297 1317 1318 1298) +4(3297 3298 3318 3317) +4(1298 1318 1319 1299) +4(3298 3299 3319 3318) +4(1300 1320 1321 1301) +4(3300 3301 3321 3320) +4(1301 1321 1322 1302) +4(3301 3302 3322 3321) +4(1302 1322 1323 1303) +4(3302 3303 3323 3322) +4(1303 1323 1324 1304) +4(3303 3304 3324 3323) +4(1304 1324 1325 1305) +4(3304 3305 3325 3324) +4(1305 1325 1326 1306) +4(3305 3306 3326 3325) +4(1306 1326 1327 1307) +4(3306 3307 3327 3326) +4(1307 1327 1328 1308) +4(3307 3308 3328 3327) +4(1308 1328 1329 1309) +4(3308 3309 3329 3328) +4(1309 1329 1330 1310) +4(3309 3310 3330 3329) +4(1310 1330 1331 1311) +4(3310 3311 3331 3330) +4(1311 1331 1332 1312) +4(3311 3312 3332 3331) +4(1312 1332 1333 1313) +4(3312 3313 3333 3332) +4(1313 1333 1334 1314) +4(3313 3314 3334 3333) +4(1314 1334 1335 1315) +4(3314 3315 3335 3334) +4(1315 1335 1336 1316) +4(3315 3316 3336 3335) +4(1316 1336 1337 1317) +4(3316 3317 3337 3336) +4(1317 1337 1338 1318) +4(3317 3318 3338 3337) +4(1318 1338 1339 1319) +4(3318 3319 3339 3338) +4(1320 1340 1341 1321) +4(3320 3321 3341 3340) +4(1321 1341 1342 1322) +4(3321 3322 3342 3341) +4(1322 1342 1343 1323) +4(3322 3323 3343 3342) +4(1323 1343 1344 1324) +4(3323 3324 3344 3343) +4(1324 1344 1345 1325) +4(3324 3325 3345 3344) +4(1325 1345 1346 1326) +4(3325 3326 3346 3345) +4(1326 1346 1347 1327) +4(3326 3327 3347 3346) +4(1327 1347 1348 1328) +4(3327 3328 3348 3347) +4(1328 1348 1349 1329) +4(3328 3329 3349 3348) +4(1329 1349 1350 1330) +4(3329 3330 3350 3349) +4(1330 1350 1351 1331) +4(3330 3331 3351 3350) +4(1331 1351 1352 1332) +4(3331 3332 3352 3351) +4(1332 1352 1353 1333) +4(3332 3333 3353 3352) +4(1333 1353 1354 1334) +4(3333 3334 3354 3353) +4(1334 1354 1355 1335) +4(3334 3335 3355 3354) +4(1335 1355 1356 1336) +4(3335 3336 3356 3355) +4(1336 1356 1357 1337) +4(3336 3337 3357 3356) +4(1337 1357 1358 1338) +4(3337 3338 3358 3357) +4(1338 1358 1359 1339) +4(3338 3339 3359 3358) +4(1340 1360 1361 1341) +4(3340 3341 3361 3360) +4(1341 1361 1362 1342) +4(3341 3342 3362 3361) +4(1342 1362 1363 1343) +4(3342 3343 3363 3362) +4(1343 1363 1364 1344) +4(3343 3344 3364 3363) +4(1344 1364 1365 1345) +4(3344 3345 3365 3364) +4(1345 1365 1366 1346) +4(3345 3346 3366 3365) +4(1346 1366 1367 1347) +4(3346 3347 3367 3366) +4(1347 1367 1368 1348) +4(3347 3348 3368 3367) +4(1348 1368 1369 1349) +4(3348 3349 3369 3368) +4(1349 1369 1370 1350) +4(3349 3350 3370 3369) +4(1350 1370 1371 1351) +4(3350 3351 3371 3370) +4(1351 1371 1372 1352) +4(3351 3352 3372 3371) +4(1352 1372 1373 1353) +4(3352 3353 3373 3372) +4(1353 1373 1374 1354) +4(3353 3354 3374 3373) +4(1354 1374 1375 1355) +4(3354 3355 3375 3374) +4(1355 1375 1376 1356) +4(3355 3356 3376 3375) +4(1356 1376 1377 1357) +4(3356 3357 3377 3376) +4(1357 1377 1378 1358) +4(3357 3358 3378 3377) +4(1358 1378 1379 1359) +4(3358 3359 3379 3378) +4(1360 1380 1381 1361) +4(3360 3361 3381 3380) +4(1361 1381 1382 1362) +4(3361 3362 3382 3381) +4(1362 1382 1383 1363) +4(3362 3363 3383 3382) +4(1363 1383 1384 1364) +4(3363 3364 3384 3383) +4(1364 1384 1385 1365) +4(3364 3365 3385 3384) +4(1365 1385 1386 1366) +4(3365 3366 3386 3385) +4(1366 1386 1387 1367) +4(3366 3367 3387 3386) +4(1367 1387 1388 1368) +4(3367 3368 3388 3387) +4(1368 1388 1389 1369) +4(3368 3369 3389 3388) +4(1369 1389 1390 1370) +4(3369 3370 3390 3389) +4(1370 1390 1391 1371) +4(3370 3371 3391 3390) +4(1371 1391 1392 1372) +4(3371 3372 3392 3391) +4(1372 1392 1393 1373) +4(3372 3373 3393 3392) +4(1373 1393 1394 1374) +4(3373 3374 3394 3393) +4(1374 1394 1395 1375) +4(3374 3375 3395 3394) +4(1375 1395 1396 1376) +4(3375 3376 3396 3395) +4(1376 1396 1397 1377) +4(3376 3377 3397 3396) +4(1377 1397 1398 1378) +4(3377 3378 3398 3397) +4(1378 1398 1399 1379) +4(3378 3379 3399 3398) +4(1380 1400 1401 1381) +4(3380 3381 3401 3400) +4(1381 1401 1402 1382) +4(3381 3382 3402 3401) +4(1382 1402 1403 1383) +4(3382 3383 3403 3402) +4(1383 1403 1404 1384) +4(3383 3384 3404 3403) +4(1384 1404 1405 1385) +4(3384 3385 3405 3404) +4(1385 1405 1406 1386) +4(3385 3386 3406 3405) +4(1386 1406 1407 1387) +4(3386 3387 3407 3406) +4(1387 1407 1408 1388) +4(3387 3388 3408 3407) +4(1388 1408 1409 1389) +4(3388 3389 3409 3408) +4(1389 1409 1410 1390) +4(3389 3390 3410 3409) +4(1390 1410 1411 1391) +4(3390 3391 3411 3410) +4(1391 1411 1412 1392) +4(3391 3392 3412 3411) +4(1392 1412 1413 1393) +4(3392 3393 3413 3412) +4(1393 1413 1414 1394) +4(3393 3394 3414 3413) +4(1394 1414 1415 1395) +4(3394 3395 3415 3414) +4(1395 1415 1416 1396) +4(3395 3396 3416 3415) +4(1396 1416 1417 1397) +4(3396 3397 3417 3416) +4(1397 1417 1418 1398) +4(3397 3398 3418 3417) +4(1398 1418 1419 1399) +4(3398 3399 3419 3418) +4(1400 1420 1421 1401) +4(3400 3401 3421 3420) +4(1401 1421 1422 1402) +4(3401 3402 3422 3421) +4(1402 1422 1423 1403) +4(3402 3403 3423 3422) +4(1403 1423 1424 1404) +4(3403 3404 3424 3423) +4(1404 1424 1425 1405) +4(3404 3405 3425 3424) +4(1405 1425 1426 1406) +4(3405 3406 3426 3425) +4(1406 1426 1427 1407) +4(3406 3407 3427 3426) +4(1407 1427 1428 1408) +4(3407 3408 3428 3427) +4(1408 1428 1429 1409) +4(3408 3409 3429 3428) +4(1409 1429 1430 1410) +4(3409 3410 3430 3429) +4(1410 1430 1431 1411) +4(3410 3411 3431 3430) +4(1411 1431 1432 1412) +4(3411 3412 3432 3431) +4(1412 1432 1433 1413) +4(3412 3413 3433 3432) +4(1413 1433 1434 1414) +4(3413 3414 3434 3433) +4(1414 1434 1435 1415) +4(3414 3415 3435 3434) +4(1415 1435 1436 1416) +4(3415 3416 3436 3435) +4(1416 1436 1437 1417) +4(3416 3417 3437 3436) +4(1417 1437 1438 1418) +4(3417 3418 3438 3437) +4(1418 1438 1439 1419) +4(3418 3419 3439 3438) +4(1420 1440 1441 1421) +4(3420 3421 3441 3440) +4(1421 1441 1442 1422) +4(3421 3422 3442 3441) +4(1422 1442 1443 1423) +4(3422 3423 3443 3442) +4(1423 1443 1444 1424) +4(3423 3424 3444 3443) +4(1424 1444 1445 1425) +4(3424 3425 3445 3444) +4(1425 1445 1446 1426) +4(3425 3426 3446 3445) +4(1426 1446 1447 1427) +4(3426 3427 3447 3446) +4(1427 1447 1448 1428) +4(3427 3428 3448 3447) +4(1428 1448 1449 1429) +4(3428 3429 3449 3448) +4(1429 1449 1450 1430) +4(3429 3430 3450 3449) +4(1430 1450 1451 1431) +4(3430 3431 3451 3450) +4(1431 1451 1452 1432) +4(3431 3432 3452 3451) +4(1432 1452 1453 1433) +4(3432 3433 3453 3452) +4(1433 1453 1454 1434) +4(3433 3434 3454 3453) +4(1434 1454 1455 1435) +4(3434 3435 3455 3454) +4(1435 1455 1456 1436) +4(3435 3436 3456 3455) +4(1436 1456 1457 1437) +4(3436 3437 3457 3456) +4(1437 1457 1458 1438) +4(3437 3438 3458 3457) +4(1438 1458 1459 1439) +4(3438 3439 3459 3458) +4(1440 1460 1461 1441) +4(3440 3441 3461 3460) +4(1441 1461 1462 1442) +4(3441 3442 3462 3461) +4(1442 1462 1463 1443) +4(3442 3443 3463 3462) +4(1443 1463 1464 1444) +4(3443 3444 3464 3463) +4(1444 1464 1465 1445) +4(3444 3445 3465 3464) +4(1445 1465 1466 1446) +4(3445 3446 3466 3465) +4(1446 1466 1467 1447) +4(3446 3447 3467 3466) +4(1447 1467 1468 1448) +4(3447 3448 3468 3467) +4(1448 1468 1469 1449) +4(3448 3449 3469 3468) +4(1449 1469 1470 1450) +4(3449 3450 3470 3469) +4(1450 1470 1471 1451) +4(3450 3451 3471 3470) +4(1451 1471 1472 1452) +4(3451 3452 3472 3471) +4(1452 1472 1473 1453) +4(3452 3453 3473 3472) +4(1453 1473 1474 1454) +4(3453 3454 3474 3473) +4(1454 1474 1475 1455) +4(3454 3455 3475 3474) +4(1455 1475 1476 1456) +4(3455 3456 3476 3475) +4(1456 1476 1477 1457) +4(3456 3457 3477 3476) +4(1457 1477 1478 1458) +4(3457 3458 3478 3477) +4(1458 1478 1479 1459) +4(3458 3459 3479 3478) +4(1460 1480 1481 1461) +4(3460 3461 3481 3480) +4(1461 1481 1482 1462) +4(3461 3462 3482 3481) +4(1462 1482 1483 1463) +4(3462 3463 3483 3482) +4(1463 1483 1484 1464) +4(3463 3464 3484 3483) +4(1464 1484 1485 1465) +4(3464 3465 3485 3484) +4(1465 1485 1486 1466) +4(3465 3466 3486 3485) +4(1466 1486 1487 1467) +4(3466 3467 3487 3486) +4(1467 1487 1488 1468) +4(3467 3468 3488 3487) +4(1468 1488 1489 1469) +4(3468 3469 3489 3488) +4(1469 1489 1490 1470) +4(3469 3470 3490 3489) +4(1470 1490 1491 1471) +4(3470 3471 3491 3490) +4(1471 1491 1492 1472) +4(3471 3472 3492 3491) +4(1472 1492 1493 1473) +4(3472 3473 3493 3492) +4(1473 1493 1494 1474) +4(3473 3474 3494 3493) +4(1474 1494 1495 1475) +4(3474 3475 3495 3494) +4(1475 1495 1496 1476) +4(3475 3476 3496 3495) +4(1476 1496 1497 1477) +4(3476 3477 3497 3496) +4(1477 1497 1498 1478) +4(3477 3478 3498 3497) +4(1478 1498 1499 1479) +4(3478 3479 3499 3498) +4(1480 1500 1501 1481) +4(3480 3481 3501 3500) +4(1481 1501 1502 1482) +4(3481 3482 3502 3501) +4(1482 1502 1503 1483) +4(3482 3483 3503 3502) +4(1483 1503 1504 1484) +4(3483 3484 3504 3503) +4(1484 1504 1505 1485) +4(3484 3485 3505 3504) +4(1485 1505 1506 1486) +4(3485 3486 3506 3505) +4(1486 1506 1507 1487) +4(3486 3487 3507 3506) +4(1487 1507 1508 1488) +4(3487 3488 3508 3507) +4(1488 1508 1509 1489) +4(3488 3489 3509 3508) +4(1489 1509 1510 1490) +4(3489 3490 3510 3509) +4(1490 1510 1511 1491) +4(3490 3491 3511 3510) +4(1491 1511 1512 1492) +4(3491 3492 3512 3511) +4(1492 1512 1513 1493) +4(3492 3493 3513 3512) +4(1493 1513 1514 1494) +4(3493 3494 3514 3513) +4(1494 1514 1515 1495) +4(3494 3495 3515 3514) +4(1495 1515 1516 1496) +4(3495 3496 3516 3515) +4(1496 1516 1517 1497) +4(3496 3497 3517 3516) +4(1497 1517 1518 1498) +4(3497 3498 3518 3517) +4(1498 1518 1519 1499) +4(3498 3499 3519 3518) +4(1500 1520 1521 1501) +4(3500 3501 3521 3520) +4(1501 1521 1522 1502) +4(3501 3502 3522 3521) +4(1502 1522 1523 1503) +4(3502 3503 3523 3522) +4(1503 1523 1524 1504) +4(3503 3504 3524 3523) +4(1504 1524 1525 1505) +4(3504 3505 3525 3524) +4(1505 1525 1526 1506) +4(3505 3506 3526 3525) +4(1506 1526 1527 1507) +4(3506 3507 3527 3526) +4(1507 1527 1528 1508) +4(3507 3508 3528 3527) +4(1508 1528 1529 1509) +4(3508 3509 3529 3528) +4(1509 1529 1530 1510) +4(3509 3510 3530 3529) +4(1510 1530 1531 1511) +4(3510 3511 3531 3530) +4(1511 1531 1532 1512) +4(3511 3512 3532 3531) +4(1512 1532 1533 1513) +4(3512 3513 3533 3532) +4(1513 1533 1534 1514) +4(3513 3514 3534 3533) +4(1514 1534 1535 1515) +4(3514 3515 3535 3534) +4(1515 1535 1536 1516) +4(3515 3516 3536 3535) +4(1516 1536 1537 1517) +4(3516 3517 3537 3536) +4(1517 1537 1538 1518) +4(3517 3518 3538 3537) +4(1518 1538 1539 1519) +4(3518 3519 3539 3538) +4(1520 1540 1541 1521) +4(3520 3521 3541 3540) +4(1521 1541 1542 1522) +4(3521 3522 3542 3541) +4(1522 1542 1543 1523) +4(3522 3523 3543 3542) +4(1523 1543 1544 1524) +4(3523 3524 3544 3543) +4(1524 1544 1545 1525) +4(3524 3525 3545 3544) +4(1525 1545 1546 1526) +4(3525 3526 3546 3545) +4(1526 1546 1547 1527) +4(3526 3527 3547 3546) +4(1527 1547 1548 1528) +4(3527 3528 3548 3547) +4(1528 1548 1549 1529) +4(3528 3529 3549 3548) +4(1529 1549 1550 1530) +4(3529 3530 3550 3549) +4(1530 1550 1551 1531) +4(3530 3531 3551 3550) +4(1531 1551 1552 1532) +4(3531 3532 3552 3551) +4(1532 1552 1553 1533) +4(3532 3533 3553 3552) +4(1533 1553 1554 1534) +4(3533 3534 3554 3553) +4(1534 1554 1555 1535) +4(3534 3535 3555 3554) +4(1535 1555 1556 1536) +4(3535 3536 3556 3555) +4(1536 1556 1557 1537) +4(3536 3537 3557 3556) +4(1537 1557 1558 1538) +4(3537 3538 3558 3557) +4(1538 1558 1559 1539) +4(3538 3539 3559 3558) +4(1540 1560 1561 1541) +4(3540 3541 3561 3560) +4(1541 1561 1562 1542) +4(3541 3542 3562 3561) +4(1542 1562 1563 1543) +4(3542 3543 3563 3562) +4(1543 1563 1564 1544) +4(3543 3544 3564 3563) +4(1544 1564 1565 1545) +4(3544 3545 3565 3564) +4(1545 1565 1566 1546) +4(3545 3546 3566 3565) +4(1546 1566 1567 1547) +4(3546 3547 3567 3566) +4(1547 1567 1568 1548) +4(3547 3548 3568 3567) +4(1548 1568 1569 1549) +4(3548 3549 3569 3568) +4(1549 1569 1570 1550) +4(3549 3550 3570 3569) +4(1550 1570 1571 1551) +4(3550 3551 3571 3570) +4(1551 1571 1572 1552) +4(3551 3552 3572 3571) +4(1552 1572 1573 1553) +4(3552 3553 3573 3572) +4(1553 1573 1574 1554) +4(3553 3554 3574 3573) +4(1554 1574 1575 1555) +4(3554 3555 3575 3574) +4(1555 1575 1576 1556) +4(3555 3556 3576 3575) +4(1556 1576 1577 1557) +4(3556 3557 3577 3576) +4(1557 1577 1578 1558) +4(3557 3558 3578 3577) +4(1558 1578 1579 1559) +4(3558 3559 3579 3578) +4(1560 1580 1581 1561) +4(3560 3561 3581 3580) +4(1561 1581 1582 1562) +4(3561 3562 3582 3581) +4(1562 1582 1583 1563) +4(3562 3563 3583 3582) +4(1563 1583 1584 1564) +4(3563 3564 3584 3583) +4(1564 1584 1585 1565) +4(3564 3565 3585 3584) +4(1565 1585 1586 1566) +4(3565 3566 3586 3585) +4(1566 1586 1587 1567) +4(3566 3567 3587 3586) +4(1567 1587 1588 1568) +4(3567 3568 3588 3587) +4(1568 1588 1589 1569) +4(3568 3569 3589 3588) +4(1569 1589 1590 1570) +4(3569 3570 3590 3589) +4(1570 1590 1591 1571) +4(3570 3571 3591 3590) +4(1571 1591 1592 1572) +4(3571 3572 3592 3591) +4(1572 1592 1593 1573) +4(3572 3573 3593 3592) +4(1573 1593 1594 1574) +4(3573 3574 3594 3593) +4(1574 1594 1595 1575) +4(3574 3575 3595 3594) +4(1575 1595 1596 1576) +4(3575 3576 3596 3595) +4(1576 1596 1597 1577) +4(3576 3577 3597 3596) +4(1577 1597 1598 1578) +4(3577 3578 3598 3597) +4(1578 1598 1599 1579) +4(3578 3579 3599 3598) +4(1580 1600 1601 1581) +4(3580 3581 3601 3600) +4(1581 1601 1602 1582) +4(3581 3582 3602 3601) +4(1582 1602 1603 1583) +4(3582 3583 3603 3602) +4(1583 1603 1604 1584) +4(3583 3584 3604 3603) +4(1584 1604 1605 1585) +4(3584 3585 3605 3604) +4(1585 1605 1606 1586) +4(3585 3586 3606 3605) +4(1586 1606 1607 1587) +4(3586 3587 3607 3606) +4(1587 1607 1608 1588) +4(3587 3588 3608 3607) +4(1588 1608 1609 1589) +4(3588 3589 3609 3608) +4(1589 1609 1610 1590) +4(3589 3590 3610 3609) +4(1590 1610 1611 1591) +4(3590 3591 3611 3610) +4(1591 1611 1612 1592) +4(3591 3592 3612 3611) +4(1592 1612 1613 1593) +4(3592 3593 3613 3612) +4(1593 1613 1614 1594) +4(3593 3594 3614 3613) +4(1594 1614 1615 1595) +4(3594 3595 3615 3614) +4(1595 1615 1616 1596) +4(3595 3596 3616 3615) +4(1596 1616 1617 1597) +4(3596 3597 3617 3616) +4(1597 1617 1618 1598) +4(3597 3598 3618 3617) +4(1598 1618 1619 1599) +4(3598 3599 3619 3618) +4(1600 1620 1621 1601) +4(3600 3601 3621 3620) +4(1601 1621 1622 1602) +4(3601 3602 3622 3621) +4(1602 1622 1623 1603) +4(3602 3603 3623 3622) +4(1603 1623 1624 1604) +4(3603 3604 3624 3623) +4(1604 1624 1625 1605) +4(3604 3605 3625 3624) +4(1605 1625 1626 1606) +4(3605 3606 3626 3625) +4(1606 1626 1627 1607) +4(3606 3607 3627 3626) +4(1607 1627 1628 1608) +4(3607 3608 3628 3627) +4(1608 1628 1629 1609) +4(3608 3609 3629 3628) +4(1609 1629 1630 1610) +4(3609 3610 3630 3629) +4(1610 1630 1631 1611) +4(3610 3611 3631 3630) +4(1611 1631 1632 1612) +4(3611 3612 3632 3631) +4(1612 1632 1633 1613) +4(3612 3613 3633 3632) +4(1613 1633 1634 1614) +4(3613 3614 3634 3633) +4(1614 1634 1635 1615) +4(3614 3615 3635 3634) +4(1615 1635 1636 1616) +4(3615 3616 3636 3635) +4(1616 1636 1637 1617) +4(3616 3617 3637 3636) +4(1617 1637 1638 1618) +4(3617 3618 3638 3637) +4(1618 1638 1639 1619) +4(3618 3619 3639 3638) +4(1620 1640 1641 1621) +4(3620 3621 3641 3640) +4(1621 1641 1642 1622) +4(3621 3622 3642 3641) +4(1622 1642 1643 1623) +4(3622 3623 3643 3642) +4(1623 1643 1644 1624) +4(3623 3624 3644 3643) +4(1624 1644 1645 1625) +4(3624 3625 3645 3644) +4(1625 1645 1646 1626) +4(3625 3626 3646 3645) +4(1626 1646 1647 1627) +4(3626 3627 3647 3646) +4(1627 1647 1648 1628) +4(3627 3628 3648 3647) +4(1628 1648 1649 1629) +4(3628 3629 3649 3648) +4(1629 1649 1650 1630) +4(3629 3630 3650 3649) +4(1630 1650 1651 1631) +4(3630 3631 3651 3650) +4(1631 1651 1652 1632) +4(3631 3632 3652 3651) +4(1632 1652 1653 1633) +4(3632 3633 3653 3652) +4(1633 1653 1654 1634) +4(3633 3634 3654 3653) +4(1634 1654 1655 1635) +4(3634 3635 3655 3654) +4(1635 1655 1656 1636) +4(3635 3636 3656 3655) +4(1636 1656 1657 1637) +4(3636 3637 3657 3656) +4(1637 1657 1658 1638) +4(3637 3638 3658 3657) +4(1638 1658 1659 1639) +4(3638 3639 3659 3658) +4(1640 1660 1661 1641) +4(3640 3641 3661 3660) +4(1641 1661 1662 1642) +4(3641 3642 3662 3661) +4(1642 1662 1663 1643) +4(3642 3643 3663 3662) +4(1643 1663 1664 1644) +4(3643 3644 3664 3663) +4(1644 1664 1665 1645) +4(3644 3645 3665 3664) +4(1645 1665 1666 1646) +4(3645 3646 3666 3665) +4(1646 1666 1667 1647) +4(3646 3647 3667 3666) +4(1647 1667 1668 1648) +4(3647 3648 3668 3667) +4(1648 1668 1669 1649) +4(3648 3649 3669 3668) +4(1649 1669 1670 1650) +4(3649 3650 3670 3669) +4(1650 1670 1671 1651) +4(3650 3651 3671 3670) +4(1651 1671 1672 1652) +4(3651 3652 3672 3671) +4(1652 1672 1673 1653) +4(3652 3653 3673 3672) +4(1653 1673 1674 1654) +4(3653 3654 3674 3673) +4(1654 1674 1675 1655) +4(3654 3655 3675 3674) +4(1655 1675 1676 1656) +4(3655 3656 3676 3675) +4(1656 1676 1677 1657) +4(3656 3657 3677 3676) +4(1657 1677 1678 1658) +4(3657 3658 3678 3677) +4(1658 1678 1679 1659) +4(3658 3659 3679 3678) +4(1660 1680 1681 1661) +4(3660 3661 3681 3680) +4(1661 1681 1682 1662) +4(3661 3662 3682 3681) +4(1662 1682 1683 1663) +4(3662 3663 3683 3682) +4(1663 1683 1684 1664) +4(3663 3664 3684 3683) +4(1664 1684 1685 1665) +4(3664 3665 3685 3684) +4(1665 1685 1686 1666) +4(3665 3666 3686 3685) +4(1666 1686 1687 1667) +4(3666 3667 3687 3686) +4(1667 1687 1688 1668) +4(3667 3668 3688 3687) +4(1668 1688 1689 1669) +4(3668 3669 3689 3688) +4(1669 1689 1690 1670) +4(3669 3670 3690 3689) +4(1670 1690 1691 1671) +4(3670 3671 3691 3690) +4(1671 1691 1692 1672) +4(3671 3672 3692 3691) +4(1672 1692 1693 1673) +4(3672 3673 3693 3692) +4(1673 1693 1694 1674) +4(3673 3674 3694 3693) +4(1674 1694 1695 1675) +4(3674 3675 3695 3694) +4(1675 1695 1696 1676) +4(3675 3676 3696 3695) +4(1676 1696 1697 1677) +4(3676 3677 3697 3696) +4(1677 1697 1698 1678) +4(3677 3678 3698 3697) +4(1678 1698 1699 1679) +4(3678 3679 3699 3698) +4(1680 1700 1701 1681) +4(3680 3681 3701 3700) +4(1681 1701 1702 1682) +4(3681 3682 3702 3701) +4(1682 1702 1703 1683) +4(3682 3683 3703 3702) +4(1683 1703 1704 1684) +4(3683 3684 3704 3703) +4(1684 1704 1705 1685) +4(3684 3685 3705 3704) +4(1685 1705 1706 1686) +4(3685 3686 3706 3705) +4(1686 1706 1707 1687) +4(3686 3687 3707 3706) +4(1687 1707 1708 1688) +4(3687 3688 3708 3707) +4(1688 1708 1709 1689) +4(3688 3689 3709 3708) +4(1689 1709 1710 1690) +4(3689 3690 3710 3709) +4(1690 1710 1711 1691) +4(3690 3691 3711 3710) +4(1691 1711 1712 1692) +4(3691 3692 3712 3711) +4(1692 1712 1713 1693) +4(3692 3693 3713 3712) +4(1693 1713 1714 1694) +4(3693 3694 3714 3713) +4(1694 1714 1715 1695) +4(3694 3695 3715 3714) +4(1695 1715 1716 1696) +4(3695 3696 3716 3715) +4(1696 1716 1717 1697) +4(3696 3697 3717 3716) +4(1697 1717 1718 1698) +4(3697 3698 3718 3717) +4(1698 1718 1719 1699) +4(3698 3699 3719 3718) +4(1700 1720 1721 1701) +4(3700 3701 3721 3720) +4(1701 1721 1722 1702) +4(3701 3702 3722 3721) +4(1702 1722 1723 1703) +4(3702 3703 3723 3722) +4(1703 1723 1724 1704) +4(3703 3704 3724 3723) +4(1704 1724 1725 1705) +4(3704 3705 3725 3724) +4(1705 1725 1726 1706) +4(3705 3706 3726 3725) +4(1706 1726 1727 1707) +4(3706 3707 3727 3726) +4(1707 1727 1728 1708) +4(3707 3708 3728 3727) +4(1708 1728 1729 1709) +4(3708 3709 3729 3728) +4(1709 1729 1730 1710) +4(3709 3710 3730 3729) +4(1710 1730 1731 1711) +4(3710 3711 3731 3730) +4(1711 1731 1732 1712) +4(3711 3712 3732 3731) +4(1712 1732 1733 1713) +4(3712 3713 3733 3732) +4(1713 1733 1734 1714) +4(3713 3714 3734 3733) +4(1714 1734 1735 1715) +4(3714 3715 3735 3734) +4(1715 1735 1736 1716) +4(3715 3716 3736 3735) +4(1716 1736 1737 1717) +4(3716 3717 3737 3736) +4(1717 1737 1738 1718) +4(3717 3718 3738 3737) +4(1718 1738 1739 1719) +4(3718 3719 3739 3738) +4(1720 1740 1741 1721) +4(3720 3721 3741 3740) +4(1721 1741 1742 1722) +4(3721 3722 3742 3741) +4(1722 1742 1743 1723) +4(3722 3723 3743 3742) +4(1723 1743 1744 1724) +4(3723 3724 3744 3743) +4(1724 1744 1745 1725) +4(3724 3725 3745 3744) +4(1725 1745 1746 1726) +4(3725 3726 3746 3745) +4(1726 1746 1747 1727) +4(3726 3727 3747 3746) +4(1727 1747 1748 1728) +4(3727 3728 3748 3747) +4(1728 1748 1749 1729) +4(3728 3729 3749 3748) +4(1729 1749 1750 1730) +4(3729 3730 3750 3749) +4(1730 1750 1751 1731) +4(3730 3731 3751 3750) +4(1731 1751 1752 1732) +4(3731 3732 3752 3751) +4(1732 1752 1753 1733) +4(3732 3733 3753 3752) +4(1733 1753 1754 1734) +4(3733 3734 3754 3753) +4(1734 1754 1755 1735) +4(3734 3735 3755 3754) +4(1735 1755 1756 1736) +4(3735 3736 3756 3755) +4(1736 1756 1757 1737) +4(3736 3737 3757 3756) +4(1737 1757 1758 1738) +4(3737 3738 3758 3757) +4(1738 1758 1759 1739) +4(3738 3739 3759 3758) +4(1740 1760 1761 1741) +4(3740 3741 3761 3760) +4(1741 1761 1762 1742) +4(3741 3742 3762 3761) +4(1742 1762 1763 1743) +4(3742 3743 3763 3762) +4(1743 1763 1764 1744) +4(3743 3744 3764 3763) +4(1744 1764 1765 1745) +4(3744 3745 3765 3764) +4(1745 1765 1766 1746) +4(3745 3746 3766 3765) +4(1746 1766 1767 1747) +4(3746 3747 3767 3766) +4(1747 1767 1768 1748) +4(3747 3748 3768 3767) +4(1748 1768 1769 1749) +4(3748 3749 3769 3768) +4(1749 1769 1770 1750) +4(3749 3750 3770 3769) +4(1750 1770 1771 1751) +4(3750 3751 3771 3770) +4(1751 1771 1772 1752) +4(3751 3752 3772 3771) +4(1752 1772 1773 1753) +4(3752 3753 3773 3772) +4(1753 1773 1774 1754) +4(3753 3754 3774 3773) +4(1754 1774 1775 1755) +4(3754 3755 3775 3774) +4(1755 1775 1776 1756) +4(3755 3756 3776 3775) +4(1756 1776 1777 1757) +4(3756 3757 3777 3776) +4(1757 1777 1778 1758) +4(3757 3758 3778 3777) +4(1758 1778 1779 1759) +4(3758 3759 3779 3778) +4(1760 1780 1781 1761) +4(3760 3761 3781 3780) +4(1761 1781 1782 1762) +4(3761 3762 3782 3781) +4(1762 1782 1783 1763) +4(3762 3763 3783 3782) +4(1763 1783 1784 1764) +4(3763 3764 3784 3783) +4(1764 1784 1785 1765) +4(3764 3765 3785 3784) +4(1765 1785 1786 1766) +4(3765 3766 3786 3785) +4(1766 1786 1787 1767) +4(3766 3767 3787 3786) +4(1767 1787 1788 1768) +4(3767 3768 3788 3787) +4(1768 1788 1789 1769) +4(3768 3769 3789 3788) +4(1769 1789 1790 1770) +4(3769 3770 3790 3789) +4(1770 1790 1791 1771) +4(3770 3771 3791 3790) +4(1771 1791 1792 1772) +4(3771 3772 3792 3791) +4(1772 1792 1793 1773) +4(3772 3773 3793 3792) +4(1773 1793 1794 1774) +4(3773 3774 3794 3793) +4(1774 1794 1795 1775) +4(3774 3775 3795 3794) +4(1775 1795 1796 1776) +4(3775 3776 3796 3795) +4(1776 1796 1797 1777) +4(3776 3777 3797 3796) +4(1777 1797 1798 1778) +4(3777 3778 3798 3797) +4(1778 1798 1799 1779) +4(3778 3779 3799 3798) +4(1780 1800 1801 1781) +4(3780 3781 3801 3800) +4(1781 1801 1802 1782) +4(3781 3782 3802 3801) +4(1782 1802 1803 1783) +4(3782 3783 3803 3802) +4(1783 1803 1804 1784) +4(3783 3784 3804 3803) +4(1784 1804 1805 1785) +4(3784 3785 3805 3804) +4(1785 1805 1806 1786) +4(3785 3786 3806 3805) +4(1786 1806 1807 1787) +4(3786 3787 3807 3806) +4(1787 1807 1808 1788) +4(3787 3788 3808 3807) +4(1788 1808 1809 1789) +4(3788 3789 3809 3808) +4(1789 1809 1810 1790) +4(3789 3790 3810 3809) +4(1790 1810 1811 1791) +4(3790 3791 3811 3810) +4(1791 1811 1812 1792) +4(3791 3792 3812 3811) +4(1792 1812 1813 1793) +4(3792 3793 3813 3812) +4(1793 1813 1814 1794) +4(3793 3794 3814 3813) +4(1794 1814 1815 1795) +4(3794 3795 3815 3814) +4(1795 1815 1816 1796) +4(3795 3796 3816 3815) +4(1796 1816 1817 1797) +4(3796 3797 3817 3816) +4(1797 1817 1818 1798) +4(3797 3798 3818 3817) +4(1798 1818 1819 1799) +4(3798 3799 3819 3818) +4(1800 1820 1821 1801) +4(3800 3801 3821 3820) +4(1801 1821 1822 1802) +4(3801 3802 3822 3821) +4(1802 1822 1823 1803) +4(3802 3803 3823 3822) +4(1803 1823 1824 1804) +4(3803 3804 3824 3823) +4(1804 1824 1825 1805) +4(3804 3805 3825 3824) +4(1805 1825 1826 1806) +4(3805 3806 3826 3825) +4(1806 1826 1827 1807) +4(3806 3807 3827 3826) +4(1807 1827 1828 1808) +4(3807 3808 3828 3827) +4(1808 1828 1829 1809) +4(3808 3809 3829 3828) +4(1809 1829 1830 1810) +4(3809 3810 3830 3829) +4(1810 1830 1831 1811) +4(3810 3811 3831 3830) +4(1811 1831 1832 1812) +4(3811 3812 3832 3831) +4(1812 1832 1833 1813) +4(3812 3813 3833 3832) +4(1813 1833 1834 1814) +4(3813 3814 3834 3833) +4(1814 1834 1835 1815) +4(3814 3815 3835 3834) +4(1815 1835 1836 1816) +4(3815 3816 3836 3835) +4(1816 1836 1837 1817) +4(3816 3817 3837 3836) +4(1817 1837 1838 1818) +4(3817 3818 3838 3837) +4(1818 1838 1839 1819) +4(3818 3819 3839 3838) +4(1820 1840 1841 1821) +4(3820 3821 3841 3840) +4(1821 1841 1842 1822) +4(3821 3822 3842 3841) +4(1822 1842 1843 1823) +4(3822 3823 3843 3842) +4(1823 1843 1844 1824) +4(3823 3824 3844 3843) +4(1824 1844 1845 1825) +4(3824 3825 3845 3844) +4(1825 1845 1846 1826) +4(3825 3826 3846 3845) +4(1826 1846 1847 1827) +4(3826 3827 3847 3846) +4(1827 1847 1848 1828) +4(3827 3828 3848 3847) +4(1828 1848 1849 1829) +4(3828 3829 3849 3848) +4(1829 1849 1850 1830) +4(3829 3830 3850 3849) +4(1830 1850 1851 1831) +4(3830 3831 3851 3850) +4(1831 1851 1852 1832) +4(3831 3832 3852 3851) +4(1832 1852 1853 1833) +4(3832 3833 3853 3852) +4(1833 1853 1854 1834) +4(3833 3834 3854 3853) +4(1834 1854 1855 1835) +4(3834 3835 3855 3854) +4(1835 1855 1856 1836) +4(3835 3836 3856 3855) +4(1836 1856 1857 1837) +4(3836 3837 3857 3856) +4(1837 1857 1858 1838) +4(3837 3838 3858 3857) +4(1838 1858 1859 1839) +4(3838 3839 3859 3858) +4(1840 1860 1861 1841) +4(3840 3841 3861 3860) +4(1841 1861 1862 1842) +4(3841 3842 3862 3861) +4(1842 1862 1863 1843) +4(3842 3843 3863 3862) +4(1843 1863 1864 1844) +4(3843 3844 3864 3863) +4(1844 1864 1865 1845) +4(3844 3845 3865 3864) +4(1845 1865 1866 1846) +4(3845 3846 3866 3865) +4(1846 1866 1867 1847) +4(3846 3847 3867 3866) +4(1847 1867 1868 1848) +4(3847 3848 3868 3867) +4(1848 1868 1869 1849) +4(3848 3849 3869 3868) +4(1849 1869 1870 1850) +4(3849 3850 3870 3869) +4(1850 1870 1871 1851) +4(3850 3851 3871 3870) +4(1851 1871 1872 1852) +4(3851 3852 3872 3871) +4(1852 1872 1873 1853) +4(3852 3853 3873 3872) +4(1853 1873 1874 1854) +4(3853 3854 3874 3873) +4(1854 1874 1875 1855) +4(3854 3855 3875 3874) +4(1855 1875 1876 1856) +4(3855 3856 3876 3875) +4(1856 1876 1877 1857) +4(3856 3857 3877 3876) +4(1857 1877 1878 1858) +4(3857 3858 3878 3877) +4(1858 1878 1879 1859) +4(3858 3859 3879 3878) +4(1860 1880 1881 1861) +4(3860 3861 3881 3880) +4(1861 1881 1882 1862) +4(3861 3862 3882 3881) +4(1862 1882 1883 1863) +4(3862 3863 3883 3882) +4(1863 1883 1884 1864) +4(3863 3864 3884 3883) +4(1864 1884 1885 1865) +4(3864 3865 3885 3884) +4(1865 1885 1886 1866) +4(3865 3866 3886 3885) +4(1866 1886 1887 1867) +4(3866 3867 3887 3886) +4(1867 1887 1888 1868) +4(3867 3868 3888 3887) +4(1868 1888 1889 1869) +4(3868 3869 3889 3888) +4(1869 1889 1890 1870) +4(3869 3870 3890 3889) +4(1870 1890 1891 1871) +4(3870 3871 3891 3890) +4(1871 1891 1892 1872) +4(3871 3872 3892 3891) +4(1872 1892 1893 1873) +4(3872 3873 3893 3892) +4(1873 1893 1894 1874) +4(3873 3874 3894 3893) +4(1874 1894 1895 1875) +4(3874 3875 3895 3894) +4(1875 1895 1896 1876) +4(3875 3876 3896 3895) +4(1876 1896 1897 1877) +4(3876 3877 3897 3896) +4(1877 1897 1898 1878) +4(3877 3878 3898 3897) +4(1878 1898 1899 1879) +4(3878 3879 3899 3898) +4(1880 1900 1901 1881) +4(3880 3881 3901 3900) +4(1881 1901 1902 1882) +4(3881 3882 3902 3901) +4(1882 1902 1903 1883) +4(3882 3883 3903 3902) +4(1883 1903 1904 1884) +4(3883 3884 3904 3903) +4(1884 1904 1905 1885) +4(3884 3885 3905 3904) +4(1885 1905 1906 1886) +4(3885 3886 3906 3905) +4(1886 1906 1907 1887) +4(3886 3887 3907 3906) +4(1887 1907 1908 1888) +4(3887 3888 3908 3907) +4(1888 1908 1909 1889) +4(3888 3889 3909 3908) +4(1889 1909 1910 1890) +4(3889 3890 3910 3909) +4(1890 1910 1911 1891) +4(3890 3891 3911 3910) +4(1891 1911 1912 1892) +4(3891 3892 3912 3911) +4(1892 1912 1913 1893) +4(3892 3893 3913 3912) +4(1893 1913 1914 1894) +4(3893 3894 3914 3913) +4(1894 1914 1915 1895) +4(3894 3895 3915 3914) +4(1895 1915 1916 1896) +4(3895 3896 3916 3915) +4(1896 1916 1917 1897) +4(3896 3897 3917 3916) +4(1897 1917 1918 1898) +4(3897 3898 3918 3917) +4(1898 1918 1919 1899) +4(3898 3899 3919 3918) +4(1900 1920 1921 1901) +4(3900 3901 3921 3920) +4(1901 1921 1922 1902) +4(3901 3902 3922 3921) +4(1902 1922 1923 1903) +4(3902 3903 3923 3922) +4(1903 1923 1924 1904) +4(3903 3904 3924 3923) +4(1904 1924 1925 1905) +4(3904 3905 3925 3924) +4(1905 1925 1926 1906) +4(3905 3906 3926 3925) +4(1906 1926 1927 1907) +4(3906 3907 3927 3926) +4(1907 1927 1928 1908) +4(3907 3908 3928 3927) +4(1908 1928 1929 1909) +4(3908 3909 3929 3928) +4(1909 1929 1930 1910) +4(3909 3910 3930 3929) +4(1910 1930 1931 1911) +4(3910 3911 3931 3930) +4(1911 1931 1932 1912) +4(3911 3912 3932 3931) +4(1912 1932 1933 1913) +4(3912 3913 3933 3932) +4(1913 1933 1934 1914) +4(3913 3914 3934 3933) +4(1914 1934 1935 1915) +4(3914 3915 3935 3934) +4(1915 1935 1936 1916) +4(3915 3916 3936 3935) +4(1916 1936 1937 1917) +4(3916 3917 3937 3936) +4(1917 1937 1938 1918) +4(3917 3918 3938 3937) +4(1918 1938 1939 1919) +4(3918 3919 3939 3938) +4(1920 1940 1941 1921) +4(3920 3921 3941 3940) +4(1921 1941 1942 1922) +4(3921 3922 3942 3941) +4(1922 1942 1943 1923) +4(3922 3923 3943 3942) +4(1923 1943 1944 1924) +4(3923 3924 3944 3943) +4(1924 1944 1945 1925) +4(3924 3925 3945 3944) +4(1925 1945 1946 1926) +4(3925 3926 3946 3945) +4(1926 1946 1947 1927) +4(3926 3927 3947 3946) +4(1927 1947 1948 1928) +4(3927 3928 3948 3947) +4(1928 1948 1949 1929) +4(3928 3929 3949 3948) +4(1929 1949 1950 1930) +4(3929 3930 3950 3949) +4(1930 1950 1951 1931) +4(3930 3931 3951 3950) +4(1931 1951 1952 1932) +4(3931 3932 3952 3951) +4(1932 1952 1953 1933) +4(3932 3933 3953 3952) +4(1933 1953 1954 1934) +4(3933 3934 3954 3953) +4(1934 1954 1955 1935) +4(3934 3935 3955 3954) +4(1935 1955 1956 1936) +4(3935 3936 3956 3955) +4(1936 1956 1957 1937) +4(3936 3937 3957 3956) +4(1937 1957 1958 1938) +4(3937 3938 3958 3957) +4(1938 1958 1959 1939) +4(3938 3939 3959 3958) +4(1940 1960 1961 1941) +4(3940 3941 3961 3960) +4(1941 1961 1962 1942) +4(3941 3942 3962 3961) +4(1942 1962 1963 1943) +4(3942 3943 3963 3962) +4(1943 1963 1964 1944) +4(3943 3944 3964 3963) +4(1944 1964 1965 1945) +4(3944 3945 3965 3964) +4(1945 1965 1966 1946) +4(3945 3946 3966 3965) +4(1946 1966 1967 1947) +4(3946 3947 3967 3966) +4(1947 1967 1968 1948) +4(3947 3948 3968 3967) +4(1948 1968 1969 1949) +4(3948 3949 3969 3968) +4(1949 1969 1970 1950) +4(3949 3950 3970 3969) +4(1950 1970 1971 1951) +4(3950 3951 3971 3970) +4(1951 1971 1972 1952) +4(3951 3952 3972 3971) +4(1952 1972 1973 1953) +4(3952 3953 3973 3972) +4(1953 1973 1974 1954) +4(3953 3954 3974 3973) +4(1954 1974 1975 1955) +4(3954 3955 3975 3974) +4(1955 1975 1976 1956) +4(3955 3956 3976 3975) +4(1956 1976 1977 1957) +4(3956 3957 3977 3976) +4(1957 1977 1978 1958) +4(3957 3958 3978 3977) +4(1958 1978 1979 1959) +4(3958 3959 3979 3978) +4(1960 1980 1981 1961) +4(3960 3961 3981 3980) +4(1961 1981 1982 1962) +4(3961 3962 3982 3981) +4(1962 1982 1983 1963) +4(3962 3963 3983 3982) +4(1963 1983 1984 1964) +4(3963 3964 3984 3983) +4(1964 1984 1985 1965) +4(3964 3965 3985 3984) +4(1965 1985 1986 1966) +4(3965 3966 3986 3985) +4(1966 1986 1987 1967) +4(3966 3967 3987 3986) +4(1967 1987 1988 1968) +4(3967 3968 3988 3987) +4(1968 1988 1989 1969) +4(3968 3969 3989 3988) +4(1969 1989 1990 1970) +4(3969 3970 3990 3989) +4(1970 1990 1991 1971) +4(3970 3971 3991 3990) +4(1971 1991 1992 1972) +4(3971 3972 3992 3991) +4(1972 1992 1993 1973) +4(3972 3973 3993 3992) +4(1973 1993 1994 1974) +4(3973 3974 3994 3993) +4(1974 1994 1995 1975) +4(3974 3975 3995 3994) +4(1975 1995 1996 1976) +4(3975 3976 3996 3995) +4(1976 1996 1997 1977) +4(3976 3977 3997 3996) +4(1977 1997 1998 1978) +4(3977 3978 3998 3997) +4(1978 1998 1999 1979) +4(3978 3979 3999 3998) +) + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/neighbour b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/neighbour new file mode 100755 index 000000000..c58d3b2b1 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/neighbour @@ -0,0 +1,3669 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class labelList; + note "nPoints: 4000 nCells: 1881 nFaces: 7642 nInternalFaces: 3644"; + location "constant/polyMesh"; + object neighbour; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +3644 +( +1 +19 +2 +20 +3 +21 +4 +22 +5 +23 +6 +24 +7 +25 +8 +26 +9 +27 +10 +28 +11 +29 +12 +30 +13 +31 +14 +32 +15 +33 +16 +34 +17 +35 +18 +36 +37 +20 +38 +21 +39 +22 +40 +23 +41 +24 +42 +25 +43 +26 +44 +27 +45 +28 +46 +29 +47 +30 +48 +31 +49 +32 +50 +33 +51 +34 +52 +35 +53 +36 +54 +37 +55 +56 +39 +57 +40 +58 +41 +59 +42 +60 +43 +61 +44 +62 +45 +63 +46 +64 +47 +65 +48 +66 +49 +67 +50 +68 +51 +69 +52 +70 +53 +71 +54 +72 +55 +73 +56 +74 +75 +58 +76 +59 +77 +60 +78 +61 +79 +62 +80 +63 +81 +64 +82 +65 +83 +66 +84 +67 +85 +68 +86 +69 +87 +70 +88 +71 +89 +72 +90 +73 +91 +74 +92 +75 +93 +94 +77 +95 +78 +96 +79 +97 +80 +98 +81 +99 +82 +100 +83 +101 +84 +102 +85 +103 +86 +104 +87 +105 +88 +106 +89 +107 +90 +108 +91 +109 +92 +110 +93 +111 +94 +112 +113 +96 +114 +97 +115 +98 +116 +99 +117 +100 +118 +101 +119 +102 +120 +103 +121 +104 +122 +105 +123 +106 +124 +107 +125 +108 +126 +109 +127 +110 +128 +111 +129 +112 +130 +113 +131 +132 +115 +133 +116 +134 +117 +135 +118 +136 +119 +137 +120 +138 +121 +139 +122 +140 +123 +141 +124 +142 +125 +143 +126 +144 +127 +145 +128 +146 +129 +147 +130 +148 +131 +149 +132 +150 +151 +134 +152 +135 +153 +136 +154 +137 +155 +138 +156 +139 +157 +140 +158 +141 +159 +142 +160 +143 +161 +144 +162 +145 +163 +146 +164 +147 +165 +148 +166 +149 +167 +150 +168 +151 +169 +170 +153 +171 +154 +172 +155 +173 +156 +174 +157 +175 +158 +176 +159 +177 +160 +178 +161 +179 +162 +180 +163 +181 +164 +182 +165 +183 +166 +184 +167 +185 +168 +186 +169 +187 +170 +188 +189 +172 +190 +173 +191 +174 +192 +175 +193 +176 +194 +177 +195 +178 +196 +179 +197 +180 +198 +181 +199 +182 +200 +183 +201 +184 +202 +185 +203 +186 +204 +187 +205 +188 +206 +189 +207 +208 +191 +209 +192 +210 +193 +211 +194 +212 +195 +213 +196 +214 +197 +215 +198 +216 +199 +217 +200 +218 +201 +219 +202 +220 +203 +221 +204 +222 +205 +223 +206 +224 +207 +225 +208 +226 +227 +210 +228 +211 +229 +212 +230 +213 +231 +214 +232 +215 +233 +216 +234 +217 +235 +218 +236 +219 +237 +220 +238 +221 +239 +222 +240 +223 +241 +224 +242 +225 +243 +226 +244 +227 +245 +246 +229 +247 +230 +248 +231 +249 +232 +250 +233 +251 +234 +252 +235 +253 +236 +254 +237 +255 +238 +256 +239 +257 +240 +258 +241 +259 +242 +260 +243 +261 +244 +262 +245 +263 +246 +264 +265 +248 +266 +249 +267 +250 +268 +251 +269 +252 +270 +253 +271 +254 +272 +255 +273 +256 +274 +257 +275 +258 +276 +259 +277 +260 +278 +261 +279 +262 +280 +263 +281 +264 +282 +265 +283 +284 +267 +285 +268 +286 +269 +287 +270 +288 +271 +289 +272 +290 +273 +291 +274 +292 +275 +293 +276 +294 +277 +295 +278 +296 +279 +297 +280 +298 +281 +299 +282 +300 +283 +301 +284 +302 +303 +286 +304 +287 +305 +288 +306 +289 +307 +290 +308 +291 +309 +292 +310 +293 +311 +294 +312 +295 +313 +296 +314 +297 +315 +298 +316 +299 +317 +300 +318 +301 +319 +302 +320 +303 +321 +322 +305 +323 +306 +324 +307 +325 +308 +326 +309 +327 +310 +328 +311 +329 +312 +330 +313 +331 +314 +332 +315 +333 +316 +334 +317 +335 +318 +336 +319 +337 +320 +338 +321 +339 +322 +340 +341 +324 +342 +325 +343 +326 +344 +327 +345 +328 +346 +329 +347 +330 +348 +331 +349 +332 +350 +333 +351 +334 +352 +335 +353 +336 +354 +337 +355 +338 +356 +339 +357 +340 +358 +341 +359 +360 +343 +361 +344 +362 +345 +363 +346 +364 +347 +365 +348 +366 +349 +367 +350 +368 +351 +369 +352 +370 +353 +371 +354 +372 +355 +373 +356 +374 +357 +375 +358 +376 +359 +377 +360 +378 +379 +362 +380 +363 +381 +364 +382 +365 +383 +366 +384 +367 +385 +368 +386 +369 +387 +370 +388 +371 +389 +372 +390 +373 +391 +374 +392 +375 +393 +376 +394 +377 +395 +378 +396 +379 +397 +398 +381 +399 +382 +400 +383 +401 +384 +402 +385 +403 +386 +404 +387 +405 +388 +406 +389 +407 +390 +408 +391 +409 +392 +410 +393 +411 +394 +412 +395 +413 +396 +414 +397 +415 +398 +416 +417 +400 +418 +401 +419 +402 +420 +403 +421 +404 +422 +405 +423 +406 +424 +407 +425 +408 +426 +409 +427 +410 +428 +411 +429 +412 +430 +413 +431 +414 +432 +415 +433 +416 +434 +417 +435 +436 +419 +437 +420 +438 +421 +439 +422 +440 +423 +441 +424 +442 +425 +443 +426 +444 +427 +445 +428 +446 +429 +447 +430 +448 +431 +449 +432 +450 +433 +451 +434 +452 +435 +453 +436 +454 +455 +438 +456 +439 +457 +440 +458 +441 +459 +442 +460 +443 +461 +444 +462 +445 +463 +446 +464 +447 +465 +448 +466 +449 +467 +450 +468 +451 +469 +452 +470 +453 +471 +454 +472 +455 +473 +474 +457 +475 +458 +476 +459 +477 +460 +478 +461 +479 +462 +480 +463 +481 +464 +482 +465 +483 +466 +484 +467 +485 +468 +486 +469 +487 +470 +488 +471 +489 +472 +490 +473 +491 +474 +492 +493 +476 +494 +477 +495 +478 +496 +479 +497 +480 +498 +481 +499 +482 +500 +483 +501 +484 +502 +485 +503 +486 +504 +487 +505 +488 +506 +489 +507 +490 +508 +491 +509 +492 +510 +493 +511 +512 +495 +513 +496 +514 +497 +515 +498 +516 +499 +517 +500 +518 +501 +519 +502 +520 +503 +521 +504 +522 +505 +523 +506 +524 +507 +525 +508 +526 +509 +527 +510 +528 +511 +529 +512 +530 +531 +514 +532 +515 +533 +516 +534 +517 +535 +518 +536 +519 +537 +520 +538 +521 +539 +522 +540 +523 +541 +524 +542 +525 +543 +526 +544 +527 +545 +528 +546 +529 +547 +530 +548 +531 +549 +550 +533 +551 +534 +552 +535 +553 +536 +554 +537 +555 +538 +556 +539 +557 +540 +558 +541 +559 +542 +560 +543 +561 +544 +562 +545 +563 +546 +564 +547 +565 +548 +566 +549 +567 +550 +568 +569 +552 +570 +553 +571 +554 +572 +555 +573 +556 +574 +557 +575 +558 +576 +559 +577 +560 +578 +561 +579 +562 +580 +563 +581 +564 +582 +565 +583 +566 +584 +567 +585 +568 +586 +569 +587 +588 +571 +589 +572 +590 +573 +591 +574 +592 +575 +593 +576 +594 +577 +595 +578 +596 +579 +597 +580 +598 +581 +599 +582 +600 +583 +601 +584 +602 +585 +603 +586 +604 +587 +605 +588 +606 +607 +590 +608 +591 +609 +592 +610 +593 +611 +594 +612 +595 +613 +596 +614 +597 +615 +598 +616 +599 +617 +600 +618 +601 +619 +602 +620 +603 +621 +604 +622 +605 +623 +606 +624 +607 +625 +626 +609 +627 +610 +628 +611 +629 +612 +630 +613 +631 +614 +632 +615 +633 +616 +634 +617 +635 +618 +636 +619 +637 +620 +638 +621 +639 +622 +640 +623 +641 +624 +642 +625 +643 +626 +644 +645 +628 +646 +629 +647 +630 +648 +631 +649 +632 +650 +633 +651 +634 +652 +635 +653 +636 +654 +637 +655 +638 +656 +639 +657 +640 +658 +641 +659 +642 +660 +643 +661 +644 +662 +645 +663 +664 +647 +665 +648 +666 +649 +667 +650 +668 +651 +669 +652 +670 +653 +671 +654 +672 +655 +673 +656 +674 +657 +675 +658 +676 +659 +677 +660 +678 +661 +679 +662 +680 +663 +681 +664 +682 +683 +666 +684 +667 +685 +668 +686 +669 +687 +670 +688 +671 +689 +672 +690 +673 +691 +674 +692 +675 +693 +676 +694 +677 +695 +678 +696 +679 +697 +680 +698 +681 +699 +682 +700 +683 +701 +702 +685 +703 +686 +704 +687 +705 +688 +706 +689 +707 +690 +708 +691 +709 +692 +710 +693 +711 +694 +712 +695 +713 +696 +714 +697 +715 +698 +716 +699 +717 +700 +718 +701 +719 +702 +720 +721 +704 +722 +705 +723 +706 +724 +707 +725 +708 +726 +709 +727 +710 +728 +711 +729 +712 +730 +713 +731 +714 +732 +715 +733 +716 +734 +717 +735 +718 +736 +719 +737 +720 +738 +721 +739 +740 +723 +741 +724 +742 +725 +743 +726 +744 +727 +745 +728 +746 +729 +747 +730 +748 +731 +749 +732 +750 +733 +751 +734 +752 +735 +753 +736 +754 +737 +755 +738 +756 +739 +757 +740 +758 +759 +742 +760 +743 +761 +744 +762 +745 +763 +746 +764 +747 +765 +748 +766 +749 +767 +750 +768 +751 +769 +752 +770 +753 +771 +754 +772 +755 +773 +756 +774 +757 +775 +758 +776 +759 +777 +778 +761 +779 +762 +780 +763 +781 +764 +782 +765 +783 +766 +784 +767 +785 +768 +786 +769 +787 +770 +788 +771 +789 +772 +790 +773 +791 +774 +792 +775 +793 +776 +794 +777 +795 +778 +796 +797 +780 +798 +781 +799 +782 +800 +783 +801 +784 +802 +785 +803 +786 +804 +787 +805 +788 +806 +789 +807 +790 +808 +791 +809 +792 +810 +793 +811 +794 +812 +795 +813 +796 +814 +797 +815 +816 +799 +817 +800 +818 +801 +819 +802 +820 +803 +821 +804 +822 +805 +823 +806 +824 +807 +825 +808 +826 +809 +827 +810 +828 +811 +829 +812 +830 +813 +831 +814 +832 +815 +833 +816 +834 +835 +818 +836 +819 +837 +820 +838 +821 +839 +822 +840 +823 +841 +824 +842 +825 +843 +826 +844 +827 +845 +828 +846 +829 +847 +830 +848 +831 +849 +832 +850 +833 +851 +834 +852 +835 +853 +854 +837 +855 +838 +856 +839 +857 +840 +858 +841 +859 +842 +860 +843 +861 +844 +862 +845 +863 +846 +864 +847 +865 +848 +866 +849 +867 +850 +868 +851 +869 +852 +870 +853 +871 +854 +872 +873 +856 +874 +857 +875 +858 +876 +859 +877 +860 +878 +861 +879 +862 +880 +863 +881 +864 +882 +865 +883 +866 +884 +867 +885 +868 +886 +869 +887 +870 +888 +871 +889 +872 +890 +873 +891 +892 +875 +893 +876 +894 +877 +895 +878 +896 +879 +897 +880 +898 +881 +899 +882 +900 +883 +901 +884 +902 +885 +903 +886 +904 +887 +905 +888 +906 +889 +907 +890 +908 +891 +909 +892 +910 +911 +894 +912 +895 +913 +896 +914 +897 +915 +898 +916 +899 +917 +900 +918 +901 +919 +902 +920 +903 +921 +904 +922 +905 +923 +906 +924 +907 +925 +908 +926 +909 +927 +910 +928 +911 +929 +930 +913 +931 +914 +932 +915 +933 +916 +934 +917 +935 +918 +936 +919 +937 +920 +938 +921 +939 +922 +940 +923 +941 +924 +942 +925 +943 +926 +944 +927 +945 +928 +946 +929 +947 +930 +948 +949 +932 +950 +933 +951 +934 +952 +935 +953 +936 +954 +937 +955 +938 +956 +939 +957 +940 +958 +941 +959 +942 +960 +943 +961 +944 +962 +945 +963 +946 +964 +947 +965 +948 +966 +949 +967 +968 +951 +969 +952 +970 +953 +971 +954 +972 +955 +973 +956 +974 +957 +975 +958 +976 +959 +977 +960 +978 +961 +979 +962 +980 +963 +981 +964 +982 +965 +983 +966 +984 +967 +985 +968 +986 +987 +970 +988 +971 +989 +972 +990 +973 +991 +974 +992 +975 +993 +976 +994 +977 +995 +978 +996 +979 +997 +980 +998 +981 +999 +982 +1000 +983 +1001 +984 +1002 +985 +1003 +986 +1004 +987 +1005 +1006 +989 +1007 +990 +1008 +991 +1009 +992 +1010 +993 +1011 +994 +1012 +995 +1013 +996 +1014 +997 +1015 +998 +1016 +999 +1017 +1000 +1018 +1001 +1019 +1002 +1020 +1003 +1021 +1004 +1022 +1005 +1023 +1006 +1024 +1025 +1008 +1026 +1009 +1027 +1010 +1028 +1011 +1029 +1012 +1030 +1013 +1031 +1014 +1032 +1015 +1033 +1016 +1034 +1017 +1035 +1018 +1036 +1019 +1037 +1020 +1038 +1021 +1039 +1022 +1040 +1023 +1041 +1024 +1042 +1025 +1043 +1044 +1027 +1045 +1028 +1046 +1029 +1047 +1030 +1048 +1031 +1049 +1032 +1050 +1033 +1051 +1034 +1052 +1035 +1053 +1036 +1054 +1037 +1055 +1038 +1056 +1039 +1057 +1040 +1058 +1041 +1059 +1042 +1060 +1043 +1061 +1044 +1062 +1063 +1046 +1064 +1047 +1065 +1048 +1066 +1049 +1067 +1050 +1068 +1051 +1069 +1052 +1070 +1053 +1071 +1054 +1072 +1055 +1073 +1056 +1074 +1057 +1075 +1058 +1076 +1059 +1077 +1060 +1078 +1061 +1079 +1062 +1080 +1063 +1081 +1082 +1065 +1083 +1066 +1084 +1067 +1085 +1068 +1086 +1069 +1087 +1070 +1088 +1071 +1089 +1072 +1090 +1073 +1091 +1074 +1092 +1075 +1093 +1076 +1094 +1077 +1095 +1078 +1096 +1079 +1097 +1080 +1098 +1081 +1099 +1082 +1100 +1101 +1084 +1102 +1085 +1103 +1086 +1104 +1087 +1105 +1088 +1106 +1089 +1107 +1090 +1108 +1091 +1109 +1092 +1110 +1093 +1111 +1094 +1112 +1095 +1113 +1096 +1114 +1097 +1115 +1098 +1116 +1099 +1117 +1100 +1118 +1101 +1119 +1120 +1103 +1121 +1104 +1122 +1105 +1123 +1106 +1124 +1107 +1125 +1108 +1126 +1109 +1127 +1110 +1128 +1111 +1129 +1112 +1130 +1113 +1131 +1114 +1132 +1115 +1133 +1116 +1134 +1117 +1135 +1118 +1136 +1119 +1137 +1120 +1138 +1139 +1122 +1140 +1123 +1141 +1124 +1142 +1125 +1143 +1126 +1144 +1127 +1145 +1128 +1146 +1129 +1147 +1130 +1148 +1131 +1149 +1132 +1150 +1133 +1151 +1134 +1152 +1135 +1153 +1136 +1154 +1137 +1155 +1138 +1156 +1139 +1157 +1158 +1141 +1159 +1142 +1160 +1143 +1161 +1144 +1162 +1145 +1163 +1146 +1164 +1147 +1165 +1148 +1166 +1149 +1167 +1150 +1168 +1151 +1169 +1152 +1170 +1153 +1171 +1154 +1172 +1155 +1173 +1156 +1174 +1157 +1175 +1158 +1176 +1177 +1160 +1178 +1161 +1179 +1162 +1180 +1163 +1181 +1164 +1182 +1165 +1183 +1166 +1184 +1167 +1185 +1168 +1186 +1169 +1187 +1170 +1188 +1171 +1189 +1172 +1190 +1173 +1191 +1174 +1192 +1175 +1193 +1176 +1194 +1177 +1195 +1196 +1179 +1197 +1180 +1198 +1181 +1199 +1182 +1200 +1183 +1201 +1184 +1202 +1185 +1203 +1186 +1204 +1187 +1205 +1188 +1206 +1189 +1207 +1190 +1208 +1191 +1209 +1192 +1210 +1193 +1211 +1194 +1212 +1195 +1213 +1196 +1214 +1215 +1198 +1216 +1199 +1217 +1200 +1218 +1201 +1219 +1202 +1220 +1203 +1221 +1204 +1222 +1205 +1223 +1206 +1224 +1207 +1225 +1208 +1226 +1209 +1227 +1210 +1228 +1211 +1229 +1212 +1230 +1213 +1231 +1214 +1232 +1215 +1233 +1234 +1217 +1235 +1218 +1236 +1219 +1237 +1220 +1238 +1221 +1239 +1222 +1240 +1223 +1241 +1224 +1242 +1225 +1243 +1226 +1244 +1227 +1245 +1228 +1246 +1229 +1247 +1230 +1248 +1231 +1249 +1232 +1250 +1233 +1251 +1234 +1252 +1253 +1236 +1254 +1237 +1255 +1238 +1256 +1239 +1257 +1240 +1258 +1241 +1259 +1242 +1260 +1243 +1261 +1244 +1262 +1245 +1263 +1246 +1264 +1247 +1265 +1248 +1266 +1249 +1267 +1250 +1268 +1251 +1269 +1252 +1270 +1253 +1271 +1272 +1255 +1273 +1256 +1274 +1257 +1275 +1258 +1276 +1259 +1277 +1260 +1278 +1261 +1279 +1262 +1280 +1263 +1281 +1264 +1282 +1265 +1283 +1266 +1284 +1267 +1285 +1268 +1286 +1269 +1287 +1270 +1288 +1271 +1289 +1272 +1290 +1291 +1274 +1292 +1275 +1293 +1276 +1294 +1277 +1295 +1278 +1296 +1279 +1297 +1280 +1298 +1281 +1299 +1282 +1300 +1283 +1301 +1284 +1302 +1285 +1303 +1286 +1304 +1287 +1305 +1288 +1306 +1289 +1307 +1290 +1308 +1291 +1309 +1310 +1293 +1311 +1294 +1312 +1295 +1313 +1296 +1314 +1297 +1315 +1298 +1316 +1299 +1317 +1300 +1318 +1301 +1319 +1302 +1320 +1303 +1321 +1304 +1322 +1305 +1323 +1306 +1324 +1307 +1325 +1308 +1326 +1309 +1327 +1310 +1328 +1329 +1312 +1330 +1313 +1331 +1314 +1332 +1315 +1333 +1316 +1334 +1317 +1335 +1318 +1336 +1319 +1337 +1320 +1338 +1321 +1339 +1322 +1340 +1323 +1341 +1324 +1342 +1325 +1343 +1326 +1344 +1327 +1345 +1328 +1346 +1329 +1347 +1348 +1331 +1349 +1332 +1350 +1333 +1351 +1334 +1352 +1335 +1353 +1336 +1354 +1337 +1355 +1338 +1356 +1339 +1357 +1340 +1358 +1341 +1359 +1342 +1360 +1343 +1361 +1344 +1362 +1345 +1363 +1346 +1364 +1347 +1365 +1348 +1366 +1367 +1350 +1368 +1351 +1369 +1352 +1370 +1353 +1371 +1354 +1372 +1355 +1373 +1356 +1374 +1357 +1375 +1358 +1376 +1359 +1377 +1360 +1378 +1361 +1379 +1362 +1380 +1363 +1381 +1364 +1382 +1365 +1383 +1366 +1384 +1367 +1385 +1386 +1369 +1387 +1370 +1388 +1371 +1389 +1372 +1390 +1373 +1391 +1374 +1392 +1375 +1393 +1376 +1394 +1377 +1395 +1378 +1396 +1379 +1397 +1380 +1398 +1381 +1399 +1382 +1400 +1383 +1401 +1384 +1402 +1385 +1403 +1386 +1404 +1405 +1388 +1406 +1389 +1407 +1390 +1408 +1391 +1409 +1392 +1410 +1393 +1411 +1394 +1412 +1395 +1413 +1396 +1414 +1397 +1415 +1398 +1416 +1399 +1417 +1400 +1418 +1401 +1419 +1402 +1420 +1403 +1421 +1404 +1422 +1405 +1423 +1424 +1407 +1425 +1408 +1426 +1409 +1427 +1410 +1428 +1411 +1429 +1412 +1430 +1413 +1431 +1414 +1432 +1415 +1433 +1416 +1434 +1417 +1435 +1418 +1436 +1419 +1437 +1420 +1438 +1421 +1439 +1422 +1440 +1423 +1441 +1424 +1442 +1443 +1426 +1444 +1427 +1445 +1428 +1446 +1429 +1447 +1430 +1448 +1431 +1449 +1432 +1450 +1433 +1451 +1434 +1452 +1435 +1453 +1436 +1454 +1437 +1455 +1438 +1456 +1439 +1457 +1440 +1458 +1441 +1459 +1442 +1460 +1443 +1461 +1462 +1445 +1463 +1446 +1464 +1447 +1465 +1448 +1466 +1449 +1467 +1450 +1468 +1451 +1469 +1452 +1470 +1453 +1471 +1454 +1472 +1455 +1473 +1456 +1474 +1457 +1475 +1458 +1476 +1459 +1477 +1460 +1478 +1461 +1479 +1462 +1480 +1481 +1464 +1482 +1465 +1483 +1466 +1484 +1467 +1485 +1468 +1486 +1469 +1487 +1470 +1488 +1471 +1489 +1472 +1490 +1473 +1491 +1474 +1492 +1475 +1493 +1476 +1494 +1477 +1495 +1478 +1496 +1479 +1497 +1480 +1498 +1481 +1499 +1500 +1483 +1501 +1484 +1502 +1485 +1503 +1486 +1504 +1487 +1505 +1488 +1506 +1489 +1507 +1490 +1508 +1491 +1509 +1492 +1510 +1493 +1511 +1494 +1512 +1495 +1513 +1496 +1514 +1497 +1515 +1498 +1516 +1499 +1517 +1500 +1518 +1519 +1502 +1520 +1503 +1521 +1504 +1522 +1505 +1523 +1506 +1524 +1507 +1525 +1508 +1526 +1509 +1527 +1510 +1528 +1511 +1529 +1512 +1530 +1513 +1531 +1514 +1532 +1515 +1533 +1516 +1534 +1517 +1535 +1518 +1536 +1519 +1537 +1538 +1521 +1539 +1522 +1540 +1523 +1541 +1524 +1542 +1525 +1543 +1526 +1544 +1527 +1545 +1528 +1546 +1529 +1547 +1530 +1548 +1531 +1549 +1532 +1550 +1533 +1551 +1534 +1552 +1535 +1553 +1536 +1554 +1537 +1555 +1538 +1556 +1557 +1540 +1558 +1541 +1559 +1542 +1560 +1543 +1561 +1544 +1562 +1545 +1563 +1546 +1564 +1547 +1565 +1548 +1566 +1549 +1567 +1550 +1568 +1551 +1569 +1552 +1570 +1553 +1571 +1554 +1572 +1555 +1573 +1556 +1574 +1557 +1575 +1576 +1559 +1577 +1560 +1578 +1561 +1579 +1562 +1580 +1563 +1581 +1564 +1582 +1565 +1583 +1566 +1584 +1567 +1585 +1568 +1586 +1569 +1587 +1570 +1588 +1571 +1589 +1572 +1590 +1573 +1591 +1574 +1592 +1575 +1593 +1576 +1594 +1595 +1578 +1596 +1579 +1597 +1580 +1598 +1581 +1599 +1582 +1600 +1583 +1601 +1584 +1602 +1585 +1603 +1586 +1604 +1587 +1605 +1588 +1606 +1589 +1607 +1590 +1608 +1591 +1609 +1592 +1610 +1593 +1611 +1594 +1612 +1595 +1613 +1614 +1597 +1615 +1598 +1616 +1599 +1617 +1600 +1618 +1601 +1619 +1602 +1620 +1603 +1621 +1604 +1622 +1605 +1623 +1606 +1624 +1607 +1625 +1608 +1626 +1609 +1627 +1610 +1628 +1611 +1629 +1612 +1630 +1613 +1631 +1614 +1632 +1633 +1616 +1634 +1617 +1635 +1618 +1636 +1619 +1637 +1620 +1638 +1621 +1639 +1622 +1640 +1623 +1641 +1624 +1642 +1625 +1643 +1626 +1644 +1627 +1645 +1628 +1646 +1629 +1647 +1630 +1648 +1631 +1649 +1632 +1650 +1633 +1651 +1652 +1635 +1653 +1636 +1654 +1637 +1655 +1638 +1656 +1639 +1657 +1640 +1658 +1641 +1659 +1642 +1660 +1643 +1661 +1644 +1662 +1645 +1663 +1646 +1664 +1647 +1665 +1648 +1666 +1649 +1667 +1650 +1668 +1651 +1669 +1652 +1670 +1671 +1654 +1672 +1655 +1673 +1656 +1674 +1657 +1675 +1658 +1676 +1659 +1677 +1660 +1678 +1661 +1679 +1662 +1680 +1663 +1681 +1664 +1682 +1665 +1683 +1666 +1684 +1667 +1685 +1668 +1686 +1669 +1687 +1670 +1688 +1671 +1689 +1690 +1673 +1691 +1674 +1692 +1675 +1693 +1676 +1694 +1677 +1695 +1678 +1696 +1679 +1697 +1680 +1698 +1681 +1699 +1682 +1700 +1683 +1701 +1684 +1702 +1685 +1703 +1686 +1704 +1687 +1705 +1688 +1706 +1689 +1707 +1690 +1708 +1709 +1692 +1710 +1693 +1711 +1694 +1712 +1695 +1713 +1696 +1714 +1697 +1715 +1698 +1716 +1699 +1717 +1700 +1718 +1701 +1719 +1702 +1720 +1703 +1721 +1704 +1722 +1705 +1723 +1706 +1724 +1707 +1725 +1708 +1726 +1709 +1727 +1728 +1711 +1729 +1712 +1730 +1713 +1731 +1714 +1732 +1715 +1733 +1716 +1734 +1717 +1735 +1718 +1736 +1719 +1737 +1720 +1738 +1721 +1739 +1722 +1740 +1723 +1741 +1724 +1742 +1725 +1743 +1726 +1744 +1727 +1745 +1728 +1746 +1747 +1730 +1748 +1731 +1749 +1732 +1750 +1733 +1751 +1734 +1752 +1735 +1753 +1736 +1754 +1737 +1755 +1738 +1756 +1739 +1757 +1740 +1758 +1741 +1759 +1742 +1760 +1743 +1761 +1744 +1762 +1745 +1763 +1746 +1764 +1747 +1765 +1766 +1749 +1767 +1750 +1768 +1751 +1769 +1752 +1770 +1753 +1771 +1754 +1772 +1755 +1773 +1756 +1774 +1757 +1775 +1758 +1776 +1759 +1777 +1760 +1778 +1761 +1779 +1762 +1780 +1763 +1781 +1764 +1782 +1765 +1783 +1766 +1784 +1785 +1768 +1786 +1769 +1787 +1770 +1788 +1771 +1789 +1772 +1790 +1773 +1791 +1774 +1792 +1775 +1793 +1776 +1794 +1777 +1795 +1778 +1796 +1779 +1797 +1780 +1798 +1781 +1799 +1782 +1800 +1783 +1801 +1784 +1802 +1785 +1803 +1804 +1787 +1805 +1788 +1806 +1789 +1807 +1790 +1808 +1791 +1809 +1792 +1810 +1793 +1811 +1794 +1812 +1795 +1813 +1796 +1814 +1797 +1815 +1798 +1816 +1799 +1817 +1800 +1818 +1801 +1819 +1802 +1820 +1803 +1821 +1804 +1822 +1823 +1806 +1824 +1807 +1825 +1808 +1826 +1809 +1827 +1810 +1828 +1811 +1829 +1812 +1830 +1813 +1831 +1814 +1832 +1815 +1833 +1816 +1834 +1817 +1835 +1818 +1836 +1819 +1837 +1820 +1838 +1821 +1839 +1822 +1840 +1823 +1841 +1842 +1825 +1843 +1826 +1844 +1827 +1845 +1828 +1846 +1829 +1847 +1830 +1848 +1831 +1849 +1832 +1850 +1833 +1851 +1834 +1852 +1835 +1853 +1836 +1854 +1837 +1855 +1838 +1856 +1839 +1857 +1840 +1858 +1841 +1859 +1842 +1860 +1861 +1844 +1862 +1845 +1863 +1846 +1864 +1847 +1865 +1848 +1866 +1849 +1867 +1850 +1868 +1851 +1869 +1852 +1870 +1853 +1871 +1854 +1872 +1855 +1873 +1856 +1874 +1857 +1875 +1858 +1876 +1859 +1877 +1860 +1878 +1861 +1879 +1880 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +1880 +) + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/owner b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/owner new file mode 100755 index 000000000..244904734 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/owner @@ -0,0 +1,7667 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class labelList; + note "nPoints: 4000 nCells: 1881 nFaces: 7642 nInternalFaces: 3644"; + location "constant/polyMesh"; + object owner; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +7642 +( +0 +0 +1 +1 +2 +2 +3 +3 +4 +4 +5 +5 +6 +6 +7 +7 +8 +8 +9 +9 +10 +10 +11 +11 +12 +12 +13 +13 +14 +14 +15 +15 +16 +16 +17 +17 +18 +19 +19 +20 +20 +21 +21 +22 +22 +23 +23 +24 +24 +25 +25 +26 +26 +27 +27 +28 +28 +29 +29 +30 +30 +31 +31 +32 +32 +33 +33 +34 +34 +35 +35 +36 +36 +37 +38 +38 +39 +39 +40 +40 +41 +41 +42 +42 +43 +43 +44 +44 +45 +45 +46 +46 +47 +47 +48 +48 +49 +49 +50 +50 +51 +51 +52 +52 +53 +53 +54 +54 +55 +55 +56 +57 +57 +58 +58 +59 +59 +60 +60 +61 +61 +62 +62 +63 +63 +64 +64 +65 +65 +66 +66 +67 +67 +68 +68 +69 +69 +70 +70 +71 +71 +72 +72 +73 +73 +74 +74 +75 +76 +76 +77 +77 +78 +78 +79 +79 +80 +80 +81 +81 +82 +82 +83 +83 +84 +84 +85 +85 +86 +86 +87 +87 +88 +88 +89 +89 +90 +90 +91 +91 +92 +92 +93 +93 +94 +95 +95 +96 +96 +97 +97 +98 +98 +99 +99 +100 +100 +101 +101 +102 +102 +103 +103 +104 +104 +105 +105 +106 +106 +107 +107 +108 +108 +109 +109 +110 +110 +111 +111 +112 +112 +113 +114 +114 +115 +115 +116 +116 +117 +117 +118 +118 +119 +119 +120 +120 +121 +121 +122 +122 +123 +123 +124 +124 +125 +125 +126 +126 +127 +127 +128 +128 +129 +129 +130 +130 +131 +131 +132 +133 +133 +134 +134 +135 +135 +136 +136 +137 +137 +138 +138 +139 +139 +140 +140 +141 +141 +142 +142 +143 +143 +144 +144 +145 +145 +146 +146 +147 +147 +148 +148 +149 +149 +150 +150 +151 +152 +152 +153 +153 +154 +154 +155 +155 +156 +156 +157 +157 +158 +158 +159 +159 +160 +160 +161 +161 +162 +162 +163 +163 +164 +164 +165 +165 +166 +166 +167 +167 +168 +168 +169 +169 +170 +171 +171 +172 +172 +173 +173 +174 +174 +175 +175 +176 +176 +177 +177 +178 +178 +179 +179 +180 +180 +181 +181 +182 +182 +183 +183 +184 +184 +185 +185 +186 +186 +187 +187 +188 +188 +189 +190 +190 +191 +191 +192 +192 +193 +193 +194 +194 +195 +195 +196 +196 +197 +197 +198 +198 +199 +199 +200 +200 +201 +201 +202 +202 +203 +203 +204 +204 +205 +205 +206 +206 +207 +207 +208 +209 +209 +210 +210 +211 +211 +212 +212 +213 +213 +214 +214 +215 +215 +216 +216 +217 +217 +218 +218 +219 +219 +220 +220 +221 +221 +222 +222 +223 +223 +224 +224 +225 +225 +226 +226 +227 +228 +228 +229 +229 +230 +230 +231 +231 +232 +232 +233 +233 +234 +234 +235 +235 +236 +236 +237 +237 +238 +238 +239 +239 +240 +240 +241 +241 +242 +242 +243 +243 +244 +244 +245 +245 +246 +247 +247 +248 +248 +249 +249 +250 +250 +251 +251 +252 +252 +253 +253 +254 +254 +255 +255 +256 +256 +257 +257 +258 +258 +259 +259 +260 +260 +261 +261 +262 +262 +263 +263 +264 +264 +265 +266 +266 +267 +267 +268 +268 +269 +269 +270 +270 +271 +271 +272 +272 +273 +273 +274 +274 +275 +275 +276 +276 +277 +277 +278 +278 +279 +279 +280 +280 +281 +281 +282 +282 +283 +283 +284 +285 +285 +286 +286 +287 +287 +288 +288 +289 +289 +290 +290 +291 +291 +292 +292 +293 +293 +294 +294 +295 +295 +296 +296 +297 +297 +298 +298 +299 +299 +300 +300 +301 +301 +302 +302 +303 +304 +304 +305 +305 +306 +306 +307 +307 +308 +308 +309 +309 +310 +310 +311 +311 +312 +312 +313 +313 +314 +314 +315 +315 +316 +316 +317 +317 +318 +318 +319 +319 +320 +320 +321 +321 +322 +323 +323 +324 +324 +325 +325 +326 +326 +327 +327 +328 +328 +329 +329 +330 +330 +331 +331 +332 +332 +333 +333 +334 +334 +335 +335 +336 +336 +337 +337 +338 +338 +339 +339 +340 +340 +341 +342 +342 +343 +343 +344 +344 +345 +345 +346 +346 +347 +347 +348 +348 +349 +349 +350 +350 +351 +351 +352 +352 +353 +353 +354 +354 +355 +355 +356 +356 +357 +357 +358 +358 +359 +359 +360 +361 +361 +362 +362 +363 +363 +364 +364 +365 +365 +366 +366 +367 +367 +368 +368 +369 +369 +370 +370 +371 +371 +372 +372 +373 +373 +374 +374 +375 +375 +376 +376 +377 +377 +378 +378 +379 +380 +380 +381 +381 +382 +382 +383 +383 +384 +384 +385 +385 +386 +386 +387 +387 +388 +388 +389 +389 +390 +390 +391 +391 +392 +392 +393 +393 +394 +394 +395 +395 +396 +396 +397 +397 +398 +399 +399 +400 +400 +401 +401 +402 +402 +403 +403 +404 +404 +405 +405 +406 +406 +407 +407 +408 +408 +409 +409 +410 +410 +411 +411 +412 +412 +413 +413 +414 +414 +415 +415 +416 +416 +417 +418 +418 +419 +419 +420 +420 +421 +421 +422 +422 +423 +423 +424 +424 +425 +425 +426 +426 +427 +427 +428 +428 +429 +429 +430 +430 +431 +431 +432 +432 +433 +433 +434 +434 +435 +435 +436 +437 +437 +438 +438 +439 +439 +440 +440 +441 +441 +442 +442 +443 +443 +444 +444 +445 +445 +446 +446 +447 +447 +448 +448 +449 +449 +450 +450 +451 +451 +452 +452 +453 +453 +454 +454 +455 +456 +456 +457 +457 +458 +458 +459 +459 +460 +460 +461 +461 +462 +462 +463 +463 +464 +464 +465 +465 +466 +466 +467 +467 +468 +468 +469 +469 +470 +470 +471 +471 +472 +472 +473 +473 +474 +475 +475 +476 +476 +477 +477 +478 +478 +479 +479 +480 +480 +481 +481 +482 +482 +483 +483 +484 +484 +485 +485 +486 +486 +487 +487 +488 +488 +489 +489 +490 +490 +491 +491 +492 +492 +493 +494 +494 +495 +495 +496 +496 +497 +497 +498 +498 +499 +499 +500 +500 +501 +501 +502 +502 +503 +503 +504 +504 +505 +505 +506 +506 +507 +507 +508 +508 +509 +509 +510 +510 +511 +511 +512 +513 +513 +514 +514 +515 +515 +516 +516 +517 +517 +518 +518 +519 +519 +520 +520 +521 +521 +522 +522 +523 +523 +524 +524 +525 +525 +526 +526 +527 +527 +528 +528 +529 +529 +530 +530 +531 +532 +532 +533 +533 +534 +534 +535 +535 +536 +536 +537 +537 +538 +538 +539 +539 +540 +540 +541 +541 +542 +542 +543 +543 +544 +544 +545 +545 +546 +546 +547 +547 +548 +548 +549 +549 +550 +551 +551 +552 +552 +553 +553 +554 +554 +555 +555 +556 +556 +557 +557 +558 +558 +559 +559 +560 +560 +561 +561 +562 +562 +563 +563 +564 +564 +565 +565 +566 +566 +567 +567 +568 +568 +569 +570 +570 +571 +571 +572 +572 +573 +573 +574 +574 +575 +575 +576 +576 +577 +577 +578 +578 +579 +579 +580 +580 +581 +581 +582 +582 +583 +583 +584 +584 +585 +585 +586 +586 +587 +587 +588 +589 +589 +590 +590 +591 +591 +592 +592 +593 +593 +594 +594 +595 +595 +596 +596 +597 +597 +598 +598 +599 +599 +600 +600 +601 +601 +602 +602 +603 +603 +604 +604 +605 +605 +606 +606 +607 +608 +608 +609 +609 +610 +610 +611 +611 +612 +612 +613 +613 +614 +614 +615 +615 +616 +616 +617 +617 +618 +618 +619 +619 +620 +620 +621 +621 +622 +622 +623 +623 +624 +624 +625 +625 +626 +627 +627 +628 +628 +629 +629 +630 +630 +631 +631 +632 +632 +633 +633 +634 +634 +635 +635 +636 +636 +637 +637 +638 +638 +639 +639 +640 +640 +641 +641 +642 +642 +643 +643 +644 +644 +645 +646 +646 +647 +647 +648 +648 +649 +649 +650 +650 +651 +651 +652 +652 +653 +653 +654 +654 +655 +655 +656 +656 +657 +657 +658 +658 +659 +659 +660 +660 +661 +661 +662 +662 +663 +663 +664 +665 +665 +666 +666 +667 +667 +668 +668 +669 +669 +670 +670 +671 +671 +672 +672 +673 +673 +674 +674 +675 +675 +676 +676 +677 +677 +678 +678 +679 +679 +680 +680 +681 +681 +682 +682 +683 +684 +684 +685 +685 +686 +686 +687 +687 +688 +688 +689 +689 +690 +690 +691 +691 +692 +692 +693 +693 +694 +694 +695 +695 +696 +696 +697 +697 +698 +698 +699 +699 +700 +700 +701 +701 +702 +703 +703 +704 +704 +705 +705 +706 +706 +707 +707 +708 +708 +709 +709 +710 +710 +711 +711 +712 +712 +713 +713 +714 +714 +715 +715 +716 +716 +717 +717 +718 +718 +719 +719 +720 +720 +721 +722 +722 +723 +723 +724 +724 +725 +725 +726 +726 +727 +727 +728 +728 +729 +729 +730 +730 +731 +731 +732 +732 +733 +733 +734 +734 +735 +735 +736 +736 +737 +737 +738 +738 +739 +739 +740 +741 +741 +742 +742 +743 +743 +744 +744 +745 +745 +746 +746 +747 +747 +748 +748 +749 +749 +750 +750 +751 +751 +752 +752 +753 +753 +754 +754 +755 +755 +756 +756 +757 +757 +758 +758 +759 +760 +760 +761 +761 +762 +762 +763 +763 +764 +764 +765 +765 +766 +766 +767 +767 +768 +768 +769 +769 +770 +770 +771 +771 +772 +772 +773 +773 +774 +774 +775 +775 +776 +776 +777 +777 +778 +779 +779 +780 +780 +781 +781 +782 +782 +783 +783 +784 +784 +785 +785 +786 +786 +787 +787 +788 +788 +789 +789 +790 +790 +791 +791 +792 +792 +793 +793 +794 +794 +795 +795 +796 +796 +797 +798 +798 +799 +799 +800 +800 +801 +801 +802 +802 +803 +803 +804 +804 +805 +805 +806 +806 +807 +807 +808 +808 +809 +809 +810 +810 +811 +811 +812 +812 +813 +813 +814 +814 +815 +815 +816 +817 +817 +818 +818 +819 +819 +820 +820 +821 +821 +822 +822 +823 +823 +824 +824 +825 +825 +826 +826 +827 +827 +828 +828 +829 +829 +830 +830 +831 +831 +832 +832 +833 +833 +834 +834 +835 +836 +836 +837 +837 +838 +838 +839 +839 +840 +840 +841 +841 +842 +842 +843 +843 +844 +844 +845 +845 +846 +846 +847 +847 +848 +848 +849 +849 +850 +850 +851 +851 +852 +852 +853 +853 +854 +855 +855 +856 +856 +857 +857 +858 +858 +859 +859 +860 +860 +861 +861 +862 +862 +863 +863 +864 +864 +865 +865 +866 +866 +867 +867 +868 +868 +869 +869 +870 +870 +871 +871 +872 +872 +873 +874 +874 +875 +875 +876 +876 +877 +877 +878 +878 +879 +879 +880 +880 +881 +881 +882 +882 +883 +883 +884 +884 +885 +885 +886 +886 +887 +887 +888 +888 +889 +889 +890 +890 +891 +891 +892 +893 +893 +894 +894 +895 +895 +896 +896 +897 +897 +898 +898 +899 +899 +900 +900 +901 +901 +902 +902 +903 +903 +904 +904 +905 +905 +906 +906 +907 +907 +908 +908 +909 +909 +910 +910 +911 +912 +912 +913 +913 +914 +914 +915 +915 +916 +916 +917 +917 +918 +918 +919 +919 +920 +920 +921 +921 +922 +922 +923 +923 +924 +924 +925 +925 +926 +926 +927 +927 +928 +928 +929 +929 +930 +931 +931 +932 +932 +933 +933 +934 +934 +935 +935 +936 +936 +937 +937 +938 +938 +939 +939 +940 +940 +941 +941 +942 +942 +943 +943 +944 +944 +945 +945 +946 +946 +947 +947 +948 +948 +949 +950 +950 +951 +951 +952 +952 +953 +953 +954 +954 +955 +955 +956 +956 +957 +957 +958 +958 +959 +959 +960 +960 +961 +961 +962 +962 +963 +963 +964 +964 +965 +965 +966 +966 +967 +967 +968 +969 +969 +970 +970 +971 +971 +972 +972 +973 +973 +974 +974 +975 +975 +976 +976 +977 +977 +978 +978 +979 +979 +980 +980 +981 +981 +982 +982 +983 +983 +984 +984 +985 +985 +986 +986 +987 +988 +988 +989 +989 +990 +990 +991 +991 +992 +992 +993 +993 +994 +994 +995 +995 +996 +996 +997 +997 +998 +998 +999 +999 +1000 +1000 +1001 +1001 +1002 +1002 +1003 +1003 +1004 +1004 +1005 +1005 +1006 +1007 +1007 +1008 +1008 +1009 +1009 +1010 +1010 +1011 +1011 +1012 +1012 +1013 +1013 +1014 +1014 +1015 +1015 +1016 +1016 +1017 +1017 +1018 +1018 +1019 +1019 +1020 +1020 +1021 +1021 +1022 +1022 +1023 +1023 +1024 +1024 +1025 +1026 +1026 +1027 +1027 +1028 +1028 +1029 +1029 +1030 +1030 +1031 +1031 +1032 +1032 +1033 +1033 +1034 +1034 +1035 +1035 +1036 +1036 +1037 +1037 +1038 +1038 +1039 +1039 +1040 +1040 +1041 +1041 +1042 +1042 +1043 +1043 +1044 +1045 +1045 +1046 +1046 +1047 +1047 +1048 +1048 +1049 +1049 +1050 +1050 +1051 +1051 +1052 +1052 +1053 +1053 +1054 +1054 +1055 +1055 +1056 +1056 +1057 +1057 +1058 +1058 +1059 +1059 +1060 +1060 +1061 +1061 +1062 +1062 +1063 +1064 +1064 +1065 +1065 +1066 +1066 +1067 +1067 +1068 +1068 +1069 +1069 +1070 +1070 +1071 +1071 +1072 +1072 +1073 +1073 +1074 +1074 +1075 +1075 +1076 +1076 +1077 +1077 +1078 +1078 +1079 +1079 +1080 +1080 +1081 +1081 +1082 +1083 +1083 +1084 +1084 +1085 +1085 +1086 +1086 +1087 +1087 +1088 +1088 +1089 +1089 +1090 +1090 +1091 +1091 +1092 +1092 +1093 +1093 +1094 +1094 +1095 +1095 +1096 +1096 +1097 +1097 +1098 +1098 +1099 +1099 +1100 +1100 +1101 +1102 +1102 +1103 +1103 +1104 +1104 +1105 +1105 +1106 +1106 +1107 +1107 +1108 +1108 +1109 +1109 +1110 +1110 +1111 +1111 +1112 +1112 +1113 +1113 +1114 +1114 +1115 +1115 +1116 +1116 +1117 +1117 +1118 +1118 +1119 +1119 +1120 +1121 +1121 +1122 +1122 +1123 +1123 +1124 +1124 +1125 +1125 +1126 +1126 +1127 +1127 +1128 +1128 +1129 +1129 +1130 +1130 +1131 +1131 +1132 +1132 +1133 +1133 +1134 +1134 +1135 +1135 +1136 +1136 +1137 +1137 +1138 +1138 +1139 +1140 +1140 +1141 +1141 +1142 +1142 +1143 +1143 +1144 +1144 +1145 +1145 +1146 +1146 +1147 +1147 +1148 +1148 +1149 +1149 +1150 +1150 +1151 +1151 +1152 +1152 +1153 +1153 +1154 +1154 +1155 +1155 +1156 +1156 +1157 +1157 +1158 +1159 +1159 +1160 +1160 +1161 +1161 +1162 +1162 +1163 +1163 +1164 +1164 +1165 +1165 +1166 +1166 +1167 +1167 +1168 +1168 +1169 +1169 +1170 +1170 +1171 +1171 +1172 +1172 +1173 +1173 +1174 +1174 +1175 +1175 +1176 +1176 +1177 +1178 +1178 +1179 +1179 +1180 +1180 +1181 +1181 +1182 +1182 +1183 +1183 +1184 +1184 +1185 +1185 +1186 +1186 +1187 +1187 +1188 +1188 +1189 +1189 +1190 +1190 +1191 +1191 +1192 +1192 +1193 +1193 +1194 +1194 +1195 +1195 +1196 +1197 +1197 +1198 +1198 +1199 +1199 +1200 +1200 +1201 +1201 +1202 +1202 +1203 +1203 +1204 +1204 +1205 +1205 +1206 +1206 +1207 +1207 +1208 +1208 +1209 +1209 +1210 +1210 +1211 +1211 +1212 +1212 +1213 +1213 +1214 +1214 +1215 +1216 +1216 +1217 +1217 +1218 +1218 +1219 +1219 +1220 +1220 +1221 +1221 +1222 +1222 +1223 +1223 +1224 +1224 +1225 +1225 +1226 +1226 +1227 +1227 +1228 +1228 +1229 +1229 +1230 +1230 +1231 +1231 +1232 +1232 +1233 +1233 +1234 +1235 +1235 +1236 +1236 +1237 +1237 +1238 +1238 +1239 +1239 +1240 +1240 +1241 +1241 +1242 +1242 +1243 +1243 +1244 +1244 +1245 +1245 +1246 +1246 +1247 +1247 +1248 +1248 +1249 +1249 +1250 +1250 +1251 +1251 +1252 +1252 +1253 +1254 +1254 +1255 +1255 +1256 +1256 +1257 +1257 +1258 +1258 +1259 +1259 +1260 +1260 +1261 +1261 +1262 +1262 +1263 +1263 +1264 +1264 +1265 +1265 +1266 +1266 +1267 +1267 +1268 +1268 +1269 +1269 +1270 +1270 +1271 +1271 +1272 +1273 +1273 +1274 +1274 +1275 +1275 +1276 +1276 +1277 +1277 +1278 +1278 +1279 +1279 +1280 +1280 +1281 +1281 +1282 +1282 +1283 +1283 +1284 +1284 +1285 +1285 +1286 +1286 +1287 +1287 +1288 +1288 +1289 +1289 +1290 +1290 +1291 +1292 +1292 +1293 +1293 +1294 +1294 +1295 +1295 +1296 +1296 +1297 +1297 +1298 +1298 +1299 +1299 +1300 +1300 +1301 +1301 +1302 +1302 +1303 +1303 +1304 +1304 +1305 +1305 +1306 +1306 +1307 +1307 +1308 +1308 +1309 +1309 +1310 +1311 +1311 +1312 +1312 +1313 +1313 +1314 +1314 +1315 +1315 +1316 +1316 +1317 +1317 +1318 +1318 +1319 +1319 +1320 +1320 +1321 +1321 +1322 +1322 +1323 +1323 +1324 +1324 +1325 +1325 +1326 +1326 +1327 +1327 +1328 +1328 +1329 +1330 +1330 +1331 +1331 +1332 +1332 +1333 +1333 +1334 +1334 +1335 +1335 +1336 +1336 +1337 +1337 +1338 +1338 +1339 +1339 +1340 +1340 +1341 +1341 +1342 +1342 +1343 +1343 +1344 +1344 +1345 +1345 +1346 +1346 +1347 +1347 +1348 +1349 +1349 +1350 +1350 +1351 +1351 +1352 +1352 +1353 +1353 +1354 +1354 +1355 +1355 +1356 +1356 +1357 +1357 +1358 +1358 +1359 +1359 +1360 +1360 +1361 +1361 +1362 +1362 +1363 +1363 +1364 +1364 +1365 +1365 +1366 +1366 +1367 +1368 +1368 +1369 +1369 +1370 +1370 +1371 +1371 +1372 +1372 +1373 +1373 +1374 +1374 +1375 +1375 +1376 +1376 +1377 +1377 +1378 +1378 +1379 +1379 +1380 +1380 +1381 +1381 +1382 +1382 +1383 +1383 +1384 +1384 +1385 +1385 +1386 +1387 +1387 +1388 +1388 +1389 +1389 +1390 +1390 +1391 +1391 +1392 +1392 +1393 +1393 +1394 +1394 +1395 +1395 +1396 +1396 +1397 +1397 +1398 +1398 +1399 +1399 +1400 +1400 +1401 +1401 +1402 +1402 +1403 +1403 +1404 +1404 +1405 +1406 +1406 +1407 +1407 +1408 +1408 +1409 +1409 +1410 +1410 +1411 +1411 +1412 +1412 +1413 +1413 +1414 +1414 +1415 +1415 +1416 +1416 +1417 +1417 +1418 +1418 +1419 +1419 +1420 +1420 +1421 +1421 +1422 +1422 +1423 +1423 +1424 +1425 +1425 +1426 +1426 +1427 +1427 +1428 +1428 +1429 +1429 +1430 +1430 +1431 +1431 +1432 +1432 +1433 +1433 +1434 +1434 +1435 +1435 +1436 +1436 +1437 +1437 +1438 +1438 +1439 +1439 +1440 +1440 +1441 +1441 +1442 +1442 +1443 +1444 +1444 +1445 +1445 +1446 +1446 +1447 +1447 +1448 +1448 +1449 +1449 +1450 +1450 +1451 +1451 +1452 +1452 +1453 +1453 +1454 +1454 +1455 +1455 +1456 +1456 +1457 +1457 +1458 +1458 +1459 +1459 +1460 +1460 +1461 +1461 +1462 +1463 +1463 +1464 +1464 +1465 +1465 +1466 +1466 +1467 +1467 +1468 +1468 +1469 +1469 +1470 +1470 +1471 +1471 +1472 +1472 +1473 +1473 +1474 +1474 +1475 +1475 +1476 +1476 +1477 +1477 +1478 +1478 +1479 +1479 +1480 +1480 +1481 +1482 +1482 +1483 +1483 +1484 +1484 +1485 +1485 +1486 +1486 +1487 +1487 +1488 +1488 +1489 +1489 +1490 +1490 +1491 +1491 +1492 +1492 +1493 +1493 +1494 +1494 +1495 +1495 +1496 +1496 +1497 +1497 +1498 +1498 +1499 +1499 +1500 +1501 +1501 +1502 +1502 +1503 +1503 +1504 +1504 +1505 +1505 +1506 +1506 +1507 +1507 +1508 +1508 +1509 +1509 +1510 +1510 +1511 +1511 +1512 +1512 +1513 +1513 +1514 +1514 +1515 +1515 +1516 +1516 +1517 +1517 +1518 +1518 +1519 +1520 +1520 +1521 +1521 +1522 +1522 +1523 +1523 +1524 +1524 +1525 +1525 +1526 +1526 +1527 +1527 +1528 +1528 +1529 +1529 +1530 +1530 +1531 +1531 +1532 +1532 +1533 +1533 +1534 +1534 +1535 +1535 +1536 +1536 +1537 +1537 +1538 +1539 +1539 +1540 +1540 +1541 +1541 +1542 +1542 +1543 +1543 +1544 +1544 +1545 +1545 +1546 +1546 +1547 +1547 +1548 +1548 +1549 +1549 +1550 +1550 +1551 +1551 +1552 +1552 +1553 +1553 +1554 +1554 +1555 +1555 +1556 +1556 +1557 +1558 +1558 +1559 +1559 +1560 +1560 +1561 +1561 +1562 +1562 +1563 +1563 +1564 +1564 +1565 +1565 +1566 +1566 +1567 +1567 +1568 +1568 +1569 +1569 +1570 +1570 +1571 +1571 +1572 +1572 +1573 +1573 +1574 +1574 +1575 +1575 +1576 +1577 +1577 +1578 +1578 +1579 +1579 +1580 +1580 +1581 +1581 +1582 +1582 +1583 +1583 +1584 +1584 +1585 +1585 +1586 +1586 +1587 +1587 +1588 +1588 +1589 +1589 +1590 +1590 +1591 +1591 +1592 +1592 +1593 +1593 +1594 +1594 +1595 +1596 +1596 +1597 +1597 +1598 +1598 +1599 +1599 +1600 +1600 +1601 +1601 +1602 +1602 +1603 +1603 +1604 +1604 +1605 +1605 +1606 +1606 +1607 +1607 +1608 +1608 +1609 +1609 +1610 +1610 +1611 +1611 +1612 +1612 +1613 +1613 +1614 +1615 +1615 +1616 +1616 +1617 +1617 +1618 +1618 +1619 +1619 +1620 +1620 +1621 +1621 +1622 +1622 +1623 +1623 +1624 +1624 +1625 +1625 +1626 +1626 +1627 +1627 +1628 +1628 +1629 +1629 +1630 +1630 +1631 +1631 +1632 +1632 +1633 +1634 +1634 +1635 +1635 +1636 +1636 +1637 +1637 +1638 +1638 +1639 +1639 +1640 +1640 +1641 +1641 +1642 +1642 +1643 +1643 +1644 +1644 +1645 +1645 +1646 +1646 +1647 +1647 +1648 +1648 +1649 +1649 +1650 +1650 +1651 +1651 +1652 +1653 +1653 +1654 +1654 +1655 +1655 +1656 +1656 +1657 +1657 +1658 +1658 +1659 +1659 +1660 +1660 +1661 +1661 +1662 +1662 +1663 +1663 +1664 +1664 +1665 +1665 +1666 +1666 +1667 +1667 +1668 +1668 +1669 +1669 +1670 +1670 +1671 +1672 +1672 +1673 +1673 +1674 +1674 +1675 +1675 +1676 +1676 +1677 +1677 +1678 +1678 +1679 +1679 +1680 +1680 +1681 +1681 +1682 +1682 +1683 +1683 +1684 +1684 +1685 +1685 +1686 +1686 +1687 +1687 +1688 +1688 +1689 +1689 +1690 +1691 +1691 +1692 +1692 +1693 +1693 +1694 +1694 +1695 +1695 +1696 +1696 +1697 +1697 +1698 +1698 +1699 +1699 +1700 +1700 +1701 +1701 +1702 +1702 +1703 +1703 +1704 +1704 +1705 +1705 +1706 +1706 +1707 +1707 +1708 +1708 +1709 +1710 +1710 +1711 +1711 +1712 +1712 +1713 +1713 +1714 +1714 +1715 +1715 +1716 +1716 +1717 +1717 +1718 +1718 +1719 +1719 +1720 +1720 +1721 +1721 +1722 +1722 +1723 +1723 +1724 +1724 +1725 +1725 +1726 +1726 +1727 +1727 +1728 +1729 +1729 +1730 +1730 +1731 +1731 +1732 +1732 +1733 +1733 +1734 +1734 +1735 +1735 +1736 +1736 +1737 +1737 +1738 +1738 +1739 +1739 +1740 +1740 +1741 +1741 +1742 +1742 +1743 +1743 +1744 +1744 +1745 +1745 +1746 +1746 +1747 +1748 +1748 +1749 +1749 +1750 +1750 +1751 +1751 +1752 +1752 +1753 +1753 +1754 +1754 +1755 +1755 +1756 +1756 +1757 +1757 +1758 +1758 +1759 +1759 +1760 +1760 +1761 +1761 +1762 +1762 +1763 +1763 +1764 +1764 +1765 +1765 +1766 +1767 +1767 +1768 +1768 +1769 +1769 +1770 +1770 +1771 +1771 +1772 +1772 +1773 +1773 +1774 +1774 +1775 +1775 +1776 +1776 +1777 +1777 +1778 +1778 +1779 +1779 +1780 +1780 +1781 +1781 +1782 +1782 +1783 +1783 +1784 +1784 +1785 +1786 +1786 +1787 +1787 +1788 +1788 +1789 +1789 +1790 +1790 +1791 +1791 +1792 +1792 +1793 +1793 +1794 +1794 +1795 +1795 +1796 +1796 +1797 +1797 +1798 +1798 +1799 +1799 +1800 +1800 +1801 +1801 +1802 +1802 +1803 +1803 +1804 +1805 +1805 +1806 +1806 +1807 +1807 +1808 +1808 +1809 +1809 +1810 +1810 +1811 +1811 +1812 +1812 +1813 +1813 +1814 +1814 +1815 +1815 +1816 +1816 +1817 +1817 +1818 +1818 +1819 +1819 +1820 +1820 +1821 +1821 +1822 +1822 +1823 +1824 +1824 +1825 +1825 +1826 +1826 +1827 +1827 +1828 +1828 +1829 +1829 +1830 +1830 +1831 +1831 +1832 +1832 +1833 +1833 +1834 +1834 +1835 +1835 +1836 +1836 +1837 +1837 +1838 +1838 +1839 +1839 +1840 +1840 +1841 +1841 +1842 +1843 +1843 +1844 +1844 +1845 +1845 +1846 +1846 +1847 +1847 +1848 +1848 +1849 +1849 +1850 +1850 +1851 +1851 +1852 +1852 +1853 +1853 +1854 +1854 +1855 +1855 +1856 +1856 +1857 +1857 +1858 +1858 +1859 +1859 +1860 +1860 +1861 +1862 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +18 +37 +56 +75 +94 +113 +132 +151 +170 +189 +208 +227 +246 +265 +284 +303 +322 +341 +360 +379 +398 +417 +436 +455 +474 +493 +512 +531 +550 +569 +588 +607 +626 +645 +664 +683 +702 +721 +740 +759 +778 +797 +816 +835 +854 +873 +892 +911 +930 +949 +968 +987 +1006 +1025 +1044 +1063 +1082 +1101 +1120 +1139 +1158 +1177 +1196 +1215 +1234 +1253 +1272 +1291 +1310 +1329 +1348 +1367 +1386 +1405 +1424 +1443 +1462 +1481 +1500 +1519 +1538 +1557 +1576 +1595 +1614 +1633 +1652 +1671 +1690 +1709 +1728 +1747 +1766 +1785 +1804 +1823 +1842 +1861 +1880 +0 +19 +38 +57 +76 +95 +114 +133 +152 +171 +190 +209 +228 +247 +266 +285 +304 +323 +342 +361 +380 +399 +418 +437 +456 +475 +494 +513 +532 +551 +570 +589 +608 +627 +646 +665 +684 +703 +722 +741 +760 +779 +798 +817 +836 +855 +874 +893 +912 +931 +950 +969 +988 +1007 +1026 +1045 +1064 +1083 +1102 +1121 +1140 +1159 +1178 +1197 +1216 +1235 +1254 +1273 +1292 +1311 +1330 +1349 +1368 +1387 +1406 +1425 +1444 +1463 +1482 +1501 +1520 +1539 +1558 +1577 +1596 +1615 +1634 +1653 +1672 +1691 +1710 +1729 +1748 +1767 +1786 +1805 +1824 +1843 +1862 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +1862 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +1880 +0 +0 +1 +1 +2 +2 +3 +3 +4 +4 +5 +5 +6 +6 +7 +7 +8 +8 +9 +9 +10 +10 +11 +11 +12 +12 +13 +13 +14 +14 +15 +15 +16 +16 +17 +17 +18 +18 +19 +19 +20 +20 +21 +21 +22 +22 +23 +23 +24 +24 +25 +25 +26 +26 +27 +27 +28 +28 +29 +29 +30 +30 +31 +31 +32 +32 +33 +33 +34 +34 +35 +35 +36 +36 +37 +37 +38 +38 +39 +39 +40 +40 +41 +41 +42 +42 +43 +43 +44 +44 +45 +45 +46 +46 +47 +47 +48 +48 +49 +49 +50 +50 +51 +51 +52 +52 +53 +53 +54 +54 +55 +55 +56 +56 +57 +57 +58 +58 +59 +59 +60 +60 +61 +61 +62 +62 +63 +63 +64 +64 +65 +65 +66 +66 +67 +67 +68 +68 +69 +69 +70 +70 +71 +71 +72 +72 +73 +73 +74 +74 +75 +75 +76 +76 +77 +77 +78 +78 +79 +79 +80 +80 +81 +81 +82 +82 +83 +83 +84 +84 +85 +85 +86 +86 +87 +87 +88 +88 +89 +89 +90 +90 +91 +91 +92 +92 +93 +93 +94 +94 +95 +95 +96 +96 +97 +97 +98 +98 +99 +99 +100 +100 +101 +101 +102 +102 +103 +103 +104 +104 +105 +105 +106 +106 +107 +107 +108 +108 +109 +109 +110 +110 +111 +111 +112 +112 +113 +113 +114 +114 +115 +115 +116 +116 +117 +117 +118 +118 +119 +119 +120 +120 +121 +121 +122 +122 +123 +123 +124 +124 +125 +125 +126 +126 +127 +127 +128 +128 +129 +129 +130 +130 +131 +131 +132 +132 +133 +133 +134 +134 +135 +135 +136 +136 +137 +137 +138 +138 +139 +139 +140 +140 +141 +141 +142 +142 +143 +143 +144 +144 +145 +145 +146 +146 +147 +147 +148 +148 +149 +149 +150 +150 +151 +151 +152 +152 +153 +153 +154 +154 +155 +155 +156 +156 +157 +157 +158 +158 +159 +159 +160 +160 +161 +161 +162 +162 +163 +163 +164 +164 +165 +165 +166 +166 +167 +167 +168 +168 +169 +169 +170 +170 +171 +171 +172 +172 +173 +173 +174 +174 +175 +175 +176 +176 +177 +177 +178 +178 +179 +179 +180 +180 +181 +181 +182 +182 +183 +183 +184 +184 +185 +185 +186 +186 +187 +187 +188 +188 +189 +189 +190 +190 +191 +191 +192 +192 +193 +193 +194 +194 +195 +195 +196 +196 +197 +197 +198 +198 +199 +199 +200 +200 +201 +201 +202 +202 +203 +203 +204 +204 +205 +205 +206 +206 +207 +207 +208 +208 +209 +209 +210 +210 +211 +211 +212 +212 +213 +213 +214 +214 +215 +215 +216 +216 +217 +217 +218 +218 +219 +219 +220 +220 +221 +221 +222 +222 +223 +223 +224 +224 +225 +225 +226 +226 +227 +227 +228 +228 +229 +229 +230 +230 +231 +231 +232 +232 +233 +233 +234 +234 +235 +235 +236 +236 +237 +237 +238 +238 +239 +239 +240 +240 +241 +241 +242 +242 +243 +243 +244 +244 +245 +245 +246 +246 +247 +247 +248 +248 +249 +249 +250 +250 +251 +251 +252 +252 +253 +253 +254 +254 +255 +255 +256 +256 +257 +257 +258 +258 +259 +259 +260 +260 +261 +261 +262 +262 +263 +263 +264 +264 +265 +265 +266 +266 +267 +267 +268 +268 +269 +269 +270 +270 +271 +271 +272 +272 +273 +273 +274 +274 +275 +275 +276 +276 +277 +277 +278 +278 +279 +279 +280 +280 +281 +281 +282 +282 +283 +283 +284 +284 +285 +285 +286 +286 +287 +287 +288 +288 +289 +289 +290 +290 +291 +291 +292 +292 +293 +293 +294 +294 +295 +295 +296 +296 +297 +297 +298 +298 +299 +299 +300 +300 +301 +301 +302 +302 +303 +303 +304 +304 +305 +305 +306 +306 +307 +307 +308 +308 +309 +309 +310 +310 +311 +311 +312 +312 +313 +313 +314 +314 +315 +315 +316 +316 +317 +317 +318 +318 +319 +319 +320 +320 +321 +321 +322 +322 +323 +323 +324 +324 +325 +325 +326 +326 +327 +327 +328 +328 +329 +329 +330 +330 +331 +331 +332 +332 +333 +333 +334 +334 +335 +335 +336 +336 +337 +337 +338 +338 +339 +339 +340 +340 +341 +341 +342 +342 +343 +343 +344 +344 +345 +345 +346 +346 +347 +347 +348 +348 +349 +349 +350 +350 +351 +351 +352 +352 +353 +353 +354 +354 +355 +355 +356 +356 +357 +357 +358 +358 +359 +359 +360 +360 +361 +361 +362 +362 +363 +363 +364 +364 +365 +365 +366 +366 +367 +367 +368 +368 +369 +369 +370 +370 +371 +371 +372 +372 +373 +373 +374 +374 +375 +375 +376 +376 +377 +377 +378 +378 +379 +379 +380 +380 +381 +381 +382 +382 +383 +383 +384 +384 +385 +385 +386 +386 +387 +387 +388 +388 +389 +389 +390 +390 +391 +391 +392 +392 +393 +393 +394 +394 +395 +395 +396 +396 +397 +397 +398 +398 +399 +399 +400 +400 +401 +401 +402 +402 +403 +403 +404 +404 +405 +405 +406 +406 +407 +407 +408 +408 +409 +409 +410 +410 +411 +411 +412 +412 +413 +413 +414 +414 +415 +415 +416 +416 +417 +417 +418 +418 +419 +419 +420 +420 +421 +421 +422 +422 +423 +423 +424 +424 +425 +425 +426 +426 +427 +427 +428 +428 +429 +429 +430 +430 +431 +431 +432 +432 +433 +433 +434 +434 +435 +435 +436 +436 +437 +437 +438 +438 +439 +439 +440 +440 +441 +441 +442 +442 +443 +443 +444 +444 +445 +445 +446 +446 +447 +447 +448 +448 +449 +449 +450 +450 +451 +451 +452 +452 +453 +453 +454 +454 +455 +455 +456 +456 +457 +457 +458 +458 +459 +459 +460 +460 +461 +461 +462 +462 +463 +463 +464 +464 +465 +465 +466 +466 +467 +467 +468 +468 +469 +469 +470 +470 +471 +471 +472 +472 +473 +473 +474 +474 +475 +475 +476 +476 +477 +477 +478 +478 +479 +479 +480 +480 +481 +481 +482 +482 +483 +483 +484 +484 +485 +485 +486 +486 +487 +487 +488 +488 +489 +489 +490 +490 +491 +491 +492 +492 +493 +493 +494 +494 +495 +495 +496 +496 +497 +497 +498 +498 +499 +499 +500 +500 +501 +501 +502 +502 +503 +503 +504 +504 +505 +505 +506 +506 +507 +507 +508 +508 +509 +509 +510 +510 +511 +511 +512 +512 +513 +513 +514 +514 +515 +515 +516 +516 +517 +517 +518 +518 +519 +519 +520 +520 +521 +521 +522 +522 +523 +523 +524 +524 +525 +525 +526 +526 +527 +527 +528 +528 +529 +529 +530 +530 +531 +531 +532 +532 +533 +533 +534 +534 +535 +535 +536 +536 +537 +537 +538 +538 +539 +539 +540 +540 +541 +541 +542 +542 +543 +543 +544 +544 +545 +545 +546 +546 +547 +547 +548 +548 +549 +549 +550 +550 +551 +551 +552 +552 +553 +553 +554 +554 +555 +555 +556 +556 +557 +557 +558 +558 +559 +559 +560 +560 +561 +561 +562 +562 +563 +563 +564 +564 +565 +565 +566 +566 +567 +567 +568 +568 +569 +569 +570 +570 +571 +571 +572 +572 +573 +573 +574 +574 +575 +575 +576 +576 +577 +577 +578 +578 +579 +579 +580 +580 +581 +581 +582 +582 +583 +583 +584 +584 +585 +585 +586 +586 +587 +587 +588 +588 +589 +589 +590 +590 +591 +591 +592 +592 +593 +593 +594 +594 +595 +595 +596 +596 +597 +597 +598 +598 +599 +599 +600 +600 +601 +601 +602 +602 +603 +603 +604 +604 +605 +605 +606 +606 +607 +607 +608 +608 +609 +609 +610 +610 +611 +611 +612 +612 +613 +613 +614 +614 +615 +615 +616 +616 +617 +617 +618 +618 +619 +619 +620 +620 +621 +621 +622 +622 +623 +623 +624 +624 +625 +625 +626 +626 +627 +627 +628 +628 +629 +629 +630 +630 +631 +631 +632 +632 +633 +633 +634 +634 +635 +635 +636 +636 +637 +637 +638 +638 +639 +639 +640 +640 +641 +641 +642 +642 +643 +643 +644 +644 +645 +645 +646 +646 +647 +647 +648 +648 +649 +649 +650 +650 +651 +651 +652 +652 +653 +653 +654 +654 +655 +655 +656 +656 +657 +657 +658 +658 +659 +659 +660 +660 +661 +661 +662 +662 +663 +663 +664 +664 +665 +665 +666 +666 +667 +667 +668 +668 +669 +669 +670 +670 +671 +671 +672 +672 +673 +673 +674 +674 +675 +675 +676 +676 +677 +677 +678 +678 +679 +679 +680 +680 +681 +681 +682 +682 +683 +683 +684 +684 +685 +685 +686 +686 +687 +687 +688 +688 +689 +689 +690 +690 +691 +691 +692 +692 +693 +693 +694 +694 +695 +695 +696 +696 +697 +697 +698 +698 +699 +699 +700 +700 +701 +701 +702 +702 +703 +703 +704 +704 +705 +705 +706 +706 +707 +707 +708 +708 +709 +709 +710 +710 +711 +711 +712 +712 +713 +713 +714 +714 +715 +715 +716 +716 +717 +717 +718 +718 +719 +719 +720 +720 +721 +721 +722 +722 +723 +723 +724 +724 +725 +725 +726 +726 +727 +727 +728 +728 +729 +729 +730 +730 +731 +731 +732 +732 +733 +733 +734 +734 +735 +735 +736 +736 +737 +737 +738 +738 +739 +739 +740 +740 +741 +741 +742 +742 +743 +743 +744 +744 +745 +745 +746 +746 +747 +747 +748 +748 +749 +749 +750 +750 +751 +751 +752 +752 +753 +753 +754 +754 +755 +755 +756 +756 +757 +757 +758 +758 +759 +759 +760 +760 +761 +761 +762 +762 +763 +763 +764 +764 +765 +765 +766 +766 +767 +767 +768 +768 +769 +769 +770 +770 +771 +771 +772 +772 +773 +773 +774 +774 +775 +775 +776 +776 +777 +777 +778 +778 +779 +779 +780 +780 +781 +781 +782 +782 +783 +783 +784 +784 +785 +785 +786 +786 +787 +787 +788 +788 +789 +789 +790 +790 +791 +791 +792 +792 +793 +793 +794 +794 +795 +795 +796 +796 +797 +797 +798 +798 +799 +799 +800 +800 +801 +801 +802 +802 +803 +803 +804 +804 +805 +805 +806 +806 +807 +807 +808 +808 +809 +809 +810 +810 +811 +811 +812 +812 +813 +813 +814 +814 +815 +815 +816 +816 +817 +817 +818 +818 +819 +819 +820 +820 +821 +821 +822 +822 +823 +823 +824 +824 +825 +825 +826 +826 +827 +827 +828 +828 +829 +829 +830 +830 +831 +831 +832 +832 +833 +833 +834 +834 +835 +835 +836 +836 +837 +837 +838 +838 +839 +839 +840 +840 +841 +841 +842 +842 +843 +843 +844 +844 +845 +845 +846 +846 +847 +847 +848 +848 +849 +849 +850 +850 +851 +851 +852 +852 +853 +853 +854 +854 +855 +855 +856 +856 +857 +857 +858 +858 +859 +859 +860 +860 +861 +861 +862 +862 +863 +863 +864 +864 +865 +865 +866 +866 +867 +867 +868 +868 +869 +869 +870 +870 +871 +871 +872 +872 +873 +873 +874 +874 +875 +875 +876 +876 +877 +877 +878 +878 +879 +879 +880 +880 +881 +881 +882 +882 +883 +883 +884 +884 +885 +885 +886 +886 +887 +887 +888 +888 +889 +889 +890 +890 +891 +891 +892 +892 +893 +893 +894 +894 +895 +895 +896 +896 +897 +897 +898 +898 +899 +899 +900 +900 +901 +901 +902 +902 +903 +903 +904 +904 +905 +905 +906 +906 +907 +907 +908 +908 +909 +909 +910 +910 +911 +911 +912 +912 +913 +913 +914 +914 +915 +915 +916 +916 +917 +917 +918 +918 +919 +919 +920 +920 +921 +921 +922 +922 +923 +923 +924 +924 +925 +925 +926 +926 +927 +927 +928 +928 +929 +929 +930 +930 +931 +931 +932 +932 +933 +933 +934 +934 +935 +935 +936 +936 +937 +937 +938 +938 +939 +939 +940 +940 +941 +941 +942 +942 +943 +943 +944 +944 +945 +945 +946 +946 +947 +947 +948 +948 +949 +949 +950 +950 +951 +951 +952 +952 +953 +953 +954 +954 +955 +955 +956 +956 +957 +957 +958 +958 +959 +959 +960 +960 +961 +961 +962 +962 +963 +963 +964 +964 +965 +965 +966 +966 +967 +967 +968 +968 +969 +969 +970 +970 +971 +971 +972 +972 +973 +973 +974 +974 +975 +975 +976 +976 +977 +977 +978 +978 +979 +979 +980 +980 +981 +981 +982 +982 +983 +983 +984 +984 +985 +985 +986 +986 +987 +987 +988 +988 +989 +989 +990 +990 +991 +991 +992 +992 +993 +993 +994 +994 +995 +995 +996 +996 +997 +997 +998 +998 +999 +999 +1000 +1000 +1001 +1001 +1002 +1002 +1003 +1003 +1004 +1004 +1005 +1005 +1006 +1006 +1007 +1007 +1008 +1008 +1009 +1009 +1010 +1010 +1011 +1011 +1012 +1012 +1013 +1013 +1014 +1014 +1015 +1015 +1016 +1016 +1017 +1017 +1018 +1018 +1019 +1019 +1020 +1020 +1021 +1021 +1022 +1022 +1023 +1023 +1024 +1024 +1025 +1025 +1026 +1026 +1027 +1027 +1028 +1028 +1029 +1029 +1030 +1030 +1031 +1031 +1032 +1032 +1033 +1033 +1034 +1034 +1035 +1035 +1036 +1036 +1037 +1037 +1038 +1038 +1039 +1039 +1040 +1040 +1041 +1041 +1042 +1042 +1043 +1043 +1044 +1044 +1045 +1045 +1046 +1046 +1047 +1047 +1048 +1048 +1049 +1049 +1050 +1050 +1051 +1051 +1052 +1052 +1053 +1053 +1054 +1054 +1055 +1055 +1056 +1056 +1057 +1057 +1058 +1058 +1059 +1059 +1060 +1060 +1061 +1061 +1062 +1062 +1063 +1063 +1064 +1064 +1065 +1065 +1066 +1066 +1067 +1067 +1068 +1068 +1069 +1069 +1070 +1070 +1071 +1071 +1072 +1072 +1073 +1073 +1074 +1074 +1075 +1075 +1076 +1076 +1077 +1077 +1078 +1078 +1079 +1079 +1080 +1080 +1081 +1081 +1082 +1082 +1083 +1083 +1084 +1084 +1085 +1085 +1086 +1086 +1087 +1087 +1088 +1088 +1089 +1089 +1090 +1090 +1091 +1091 +1092 +1092 +1093 +1093 +1094 +1094 +1095 +1095 +1096 +1096 +1097 +1097 +1098 +1098 +1099 +1099 +1100 +1100 +1101 +1101 +1102 +1102 +1103 +1103 +1104 +1104 +1105 +1105 +1106 +1106 +1107 +1107 +1108 +1108 +1109 +1109 +1110 +1110 +1111 +1111 +1112 +1112 +1113 +1113 +1114 +1114 +1115 +1115 +1116 +1116 +1117 +1117 +1118 +1118 +1119 +1119 +1120 +1120 +1121 +1121 +1122 +1122 +1123 +1123 +1124 +1124 +1125 +1125 +1126 +1126 +1127 +1127 +1128 +1128 +1129 +1129 +1130 +1130 +1131 +1131 +1132 +1132 +1133 +1133 +1134 +1134 +1135 +1135 +1136 +1136 +1137 +1137 +1138 +1138 +1139 +1139 +1140 +1140 +1141 +1141 +1142 +1142 +1143 +1143 +1144 +1144 +1145 +1145 +1146 +1146 +1147 +1147 +1148 +1148 +1149 +1149 +1150 +1150 +1151 +1151 +1152 +1152 +1153 +1153 +1154 +1154 +1155 +1155 +1156 +1156 +1157 +1157 +1158 +1158 +1159 +1159 +1160 +1160 +1161 +1161 +1162 +1162 +1163 +1163 +1164 +1164 +1165 +1165 +1166 +1166 +1167 +1167 +1168 +1168 +1169 +1169 +1170 +1170 +1171 +1171 +1172 +1172 +1173 +1173 +1174 +1174 +1175 +1175 +1176 +1176 +1177 +1177 +1178 +1178 +1179 +1179 +1180 +1180 +1181 +1181 +1182 +1182 +1183 +1183 +1184 +1184 +1185 +1185 +1186 +1186 +1187 +1187 +1188 +1188 +1189 +1189 +1190 +1190 +1191 +1191 +1192 +1192 +1193 +1193 +1194 +1194 +1195 +1195 +1196 +1196 +1197 +1197 +1198 +1198 +1199 +1199 +1200 +1200 +1201 +1201 +1202 +1202 +1203 +1203 +1204 +1204 +1205 +1205 +1206 +1206 +1207 +1207 +1208 +1208 +1209 +1209 +1210 +1210 +1211 +1211 +1212 +1212 +1213 +1213 +1214 +1214 +1215 +1215 +1216 +1216 +1217 +1217 +1218 +1218 +1219 +1219 +1220 +1220 +1221 +1221 +1222 +1222 +1223 +1223 +1224 +1224 +1225 +1225 +1226 +1226 +1227 +1227 +1228 +1228 +1229 +1229 +1230 +1230 +1231 +1231 +1232 +1232 +1233 +1233 +1234 +1234 +1235 +1235 +1236 +1236 +1237 +1237 +1238 +1238 +1239 +1239 +1240 +1240 +1241 +1241 +1242 +1242 +1243 +1243 +1244 +1244 +1245 +1245 +1246 +1246 +1247 +1247 +1248 +1248 +1249 +1249 +1250 +1250 +1251 +1251 +1252 +1252 +1253 +1253 +1254 +1254 +1255 +1255 +1256 +1256 +1257 +1257 +1258 +1258 +1259 +1259 +1260 +1260 +1261 +1261 +1262 +1262 +1263 +1263 +1264 +1264 +1265 +1265 +1266 +1266 +1267 +1267 +1268 +1268 +1269 +1269 +1270 +1270 +1271 +1271 +1272 +1272 +1273 +1273 +1274 +1274 +1275 +1275 +1276 +1276 +1277 +1277 +1278 +1278 +1279 +1279 +1280 +1280 +1281 +1281 +1282 +1282 +1283 +1283 +1284 +1284 +1285 +1285 +1286 +1286 +1287 +1287 +1288 +1288 +1289 +1289 +1290 +1290 +1291 +1291 +1292 +1292 +1293 +1293 +1294 +1294 +1295 +1295 +1296 +1296 +1297 +1297 +1298 +1298 +1299 +1299 +1300 +1300 +1301 +1301 +1302 +1302 +1303 +1303 +1304 +1304 +1305 +1305 +1306 +1306 +1307 +1307 +1308 +1308 +1309 +1309 +1310 +1310 +1311 +1311 +1312 +1312 +1313 +1313 +1314 +1314 +1315 +1315 +1316 +1316 +1317 +1317 +1318 +1318 +1319 +1319 +1320 +1320 +1321 +1321 +1322 +1322 +1323 +1323 +1324 +1324 +1325 +1325 +1326 +1326 +1327 +1327 +1328 +1328 +1329 +1329 +1330 +1330 +1331 +1331 +1332 +1332 +1333 +1333 +1334 +1334 +1335 +1335 +1336 +1336 +1337 +1337 +1338 +1338 +1339 +1339 +1340 +1340 +1341 +1341 +1342 +1342 +1343 +1343 +1344 +1344 +1345 +1345 +1346 +1346 +1347 +1347 +1348 +1348 +1349 +1349 +1350 +1350 +1351 +1351 +1352 +1352 +1353 +1353 +1354 +1354 +1355 +1355 +1356 +1356 +1357 +1357 +1358 +1358 +1359 +1359 +1360 +1360 +1361 +1361 +1362 +1362 +1363 +1363 +1364 +1364 +1365 +1365 +1366 +1366 +1367 +1367 +1368 +1368 +1369 +1369 +1370 +1370 +1371 +1371 +1372 +1372 +1373 +1373 +1374 +1374 +1375 +1375 +1376 +1376 +1377 +1377 +1378 +1378 +1379 +1379 +1380 +1380 +1381 +1381 +1382 +1382 +1383 +1383 +1384 +1384 +1385 +1385 +1386 +1386 +1387 +1387 +1388 +1388 +1389 +1389 +1390 +1390 +1391 +1391 +1392 +1392 +1393 +1393 +1394 +1394 +1395 +1395 +1396 +1396 +1397 +1397 +1398 +1398 +1399 +1399 +1400 +1400 +1401 +1401 +1402 +1402 +1403 +1403 +1404 +1404 +1405 +1405 +1406 +1406 +1407 +1407 +1408 +1408 +1409 +1409 +1410 +1410 +1411 +1411 +1412 +1412 +1413 +1413 +1414 +1414 +1415 +1415 +1416 +1416 +1417 +1417 +1418 +1418 +1419 +1419 +1420 +1420 +1421 +1421 +1422 +1422 +1423 +1423 +1424 +1424 +1425 +1425 +1426 +1426 +1427 +1427 +1428 +1428 +1429 +1429 +1430 +1430 +1431 +1431 +1432 +1432 +1433 +1433 +1434 +1434 +1435 +1435 +1436 +1436 +1437 +1437 +1438 +1438 +1439 +1439 +1440 +1440 +1441 +1441 +1442 +1442 +1443 +1443 +1444 +1444 +1445 +1445 +1446 +1446 +1447 +1447 +1448 +1448 +1449 +1449 +1450 +1450 +1451 +1451 +1452 +1452 +1453 +1453 +1454 +1454 +1455 +1455 +1456 +1456 +1457 +1457 +1458 +1458 +1459 +1459 +1460 +1460 +1461 +1461 +1462 +1462 +1463 +1463 +1464 +1464 +1465 +1465 +1466 +1466 +1467 +1467 +1468 +1468 +1469 +1469 +1470 +1470 +1471 +1471 +1472 +1472 +1473 +1473 +1474 +1474 +1475 +1475 +1476 +1476 +1477 +1477 +1478 +1478 +1479 +1479 +1480 +1480 +1481 +1481 +1482 +1482 +1483 +1483 +1484 +1484 +1485 +1485 +1486 +1486 +1487 +1487 +1488 +1488 +1489 +1489 +1490 +1490 +1491 +1491 +1492 +1492 +1493 +1493 +1494 +1494 +1495 +1495 +1496 +1496 +1497 +1497 +1498 +1498 +1499 +1499 +1500 +1500 +1501 +1501 +1502 +1502 +1503 +1503 +1504 +1504 +1505 +1505 +1506 +1506 +1507 +1507 +1508 +1508 +1509 +1509 +1510 +1510 +1511 +1511 +1512 +1512 +1513 +1513 +1514 +1514 +1515 +1515 +1516 +1516 +1517 +1517 +1518 +1518 +1519 +1519 +1520 +1520 +1521 +1521 +1522 +1522 +1523 +1523 +1524 +1524 +1525 +1525 +1526 +1526 +1527 +1527 +1528 +1528 +1529 +1529 +1530 +1530 +1531 +1531 +1532 +1532 +1533 +1533 +1534 +1534 +1535 +1535 +1536 +1536 +1537 +1537 +1538 +1538 +1539 +1539 +1540 +1540 +1541 +1541 +1542 +1542 +1543 +1543 +1544 +1544 +1545 +1545 +1546 +1546 +1547 +1547 +1548 +1548 +1549 +1549 +1550 +1550 +1551 +1551 +1552 +1552 +1553 +1553 +1554 +1554 +1555 +1555 +1556 +1556 +1557 +1557 +1558 +1558 +1559 +1559 +1560 +1560 +1561 +1561 +1562 +1562 +1563 +1563 +1564 +1564 +1565 +1565 +1566 +1566 +1567 +1567 +1568 +1568 +1569 +1569 +1570 +1570 +1571 +1571 +1572 +1572 +1573 +1573 +1574 +1574 +1575 +1575 +1576 +1576 +1577 +1577 +1578 +1578 +1579 +1579 +1580 +1580 +1581 +1581 +1582 +1582 +1583 +1583 +1584 +1584 +1585 +1585 +1586 +1586 +1587 +1587 +1588 +1588 +1589 +1589 +1590 +1590 +1591 +1591 +1592 +1592 +1593 +1593 +1594 +1594 +1595 +1595 +1596 +1596 +1597 +1597 +1598 +1598 +1599 +1599 +1600 +1600 +1601 +1601 +1602 +1602 +1603 +1603 +1604 +1604 +1605 +1605 +1606 +1606 +1607 +1607 +1608 +1608 +1609 +1609 +1610 +1610 +1611 +1611 +1612 +1612 +1613 +1613 +1614 +1614 +1615 +1615 +1616 +1616 +1617 +1617 +1618 +1618 +1619 +1619 +1620 +1620 +1621 +1621 +1622 +1622 +1623 +1623 +1624 +1624 +1625 +1625 +1626 +1626 +1627 +1627 +1628 +1628 +1629 +1629 +1630 +1630 +1631 +1631 +1632 +1632 +1633 +1633 +1634 +1634 +1635 +1635 +1636 +1636 +1637 +1637 +1638 +1638 +1639 +1639 +1640 +1640 +1641 +1641 +1642 +1642 +1643 +1643 +1644 +1644 +1645 +1645 +1646 +1646 +1647 +1647 +1648 +1648 +1649 +1649 +1650 +1650 +1651 +1651 +1652 +1652 +1653 +1653 +1654 +1654 +1655 +1655 +1656 +1656 +1657 +1657 +1658 +1658 +1659 +1659 +1660 +1660 +1661 +1661 +1662 +1662 +1663 +1663 +1664 +1664 +1665 +1665 +1666 +1666 +1667 +1667 +1668 +1668 +1669 +1669 +1670 +1670 +1671 +1671 +1672 +1672 +1673 +1673 +1674 +1674 +1675 +1675 +1676 +1676 +1677 +1677 +1678 +1678 +1679 +1679 +1680 +1680 +1681 +1681 +1682 +1682 +1683 +1683 +1684 +1684 +1685 +1685 +1686 +1686 +1687 +1687 +1688 +1688 +1689 +1689 +1690 +1690 +1691 +1691 +1692 +1692 +1693 +1693 +1694 +1694 +1695 +1695 +1696 +1696 +1697 +1697 +1698 +1698 +1699 +1699 +1700 +1700 +1701 +1701 +1702 +1702 +1703 +1703 +1704 +1704 +1705 +1705 +1706 +1706 +1707 +1707 +1708 +1708 +1709 +1709 +1710 +1710 +1711 +1711 +1712 +1712 +1713 +1713 +1714 +1714 +1715 +1715 +1716 +1716 +1717 +1717 +1718 +1718 +1719 +1719 +1720 +1720 +1721 +1721 +1722 +1722 +1723 +1723 +1724 +1724 +1725 +1725 +1726 +1726 +1727 +1727 +1728 +1728 +1729 +1729 +1730 +1730 +1731 +1731 +1732 +1732 +1733 +1733 +1734 +1734 +1735 +1735 +1736 +1736 +1737 +1737 +1738 +1738 +1739 +1739 +1740 +1740 +1741 +1741 +1742 +1742 +1743 +1743 +1744 +1744 +1745 +1745 +1746 +1746 +1747 +1747 +1748 +1748 +1749 +1749 +1750 +1750 +1751 +1751 +1752 +1752 +1753 +1753 +1754 +1754 +1755 +1755 +1756 +1756 +1757 +1757 +1758 +1758 +1759 +1759 +1760 +1760 +1761 +1761 +1762 +1762 +1763 +1763 +1764 +1764 +1765 +1765 +1766 +1766 +1767 +1767 +1768 +1768 +1769 +1769 +1770 +1770 +1771 +1771 +1772 +1772 +1773 +1773 +1774 +1774 +1775 +1775 +1776 +1776 +1777 +1777 +1778 +1778 +1779 +1779 +1780 +1780 +1781 +1781 +1782 +1782 +1783 +1783 +1784 +1784 +1785 +1785 +1786 +1786 +1787 +1787 +1788 +1788 +1789 +1789 +1790 +1790 +1791 +1791 +1792 +1792 +1793 +1793 +1794 +1794 +1795 +1795 +1796 +1796 +1797 +1797 +1798 +1798 +1799 +1799 +1800 +1800 +1801 +1801 +1802 +1802 +1803 +1803 +1804 +1804 +1805 +1805 +1806 +1806 +1807 +1807 +1808 +1808 +1809 +1809 +1810 +1810 +1811 +1811 +1812 +1812 +1813 +1813 +1814 +1814 +1815 +1815 +1816 +1816 +1817 +1817 +1818 +1818 +1819 +1819 +1820 +1820 +1821 +1821 +1822 +1822 +1823 +1823 +1824 +1824 +1825 +1825 +1826 +1826 +1827 +1827 +1828 +1828 +1829 +1829 +1830 +1830 +1831 +1831 +1832 +1832 +1833 +1833 +1834 +1834 +1835 +1835 +1836 +1836 +1837 +1837 +1838 +1838 +1839 +1839 +1840 +1840 +1841 +1841 +1842 +1842 +1843 +1843 +1844 +1844 +1845 +1845 +1846 +1846 +1847 +1847 +1848 +1848 +1849 +1849 +1850 +1850 +1851 +1851 +1852 +1852 +1853 +1853 +1854 +1854 +1855 +1855 +1856 +1856 +1857 +1857 +1858 +1858 +1859 +1859 +1860 +1860 +1861 +1861 +1862 +1862 +1863 +1863 +1864 +1864 +1865 +1865 +1866 +1866 +1867 +1867 +1868 +1868 +1869 +1869 +1870 +1870 +1871 +1871 +1872 +1872 +1873 +1873 +1874 +1874 +1875 +1875 +1876 +1876 +1877 +1877 +1878 +1878 +1879 +1879 +1880 +1880 +) + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/pointZones b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/pointZones new file mode 100755 index 000000000..8730f1423 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/pointZones @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class regIOobject; + location "constant/polyMesh"; + object pointZones; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +0 +() + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/points b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/points new file mode 100755 index 000000000..dae0fb5e8 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/points @@ -0,0 +1,4024 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class vectorField; + location "constant/polyMesh"; + object points; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +4000 +( +(0 0 0.00050009999) +(0.005050505051 0 0.00050009999) +(0 2.5e-05 0.00050009999) +(0.005050505051 2.5e-05 0.00050009999) +(0 7.08119053e-05 0.00050009999) +(0.005050505051 7.08119053e-05 0.00050009999) +(0 0.00015426567 0.00050009999) +(0.005050505051 0.00015426567 0.00050009999) +(0 0.0003046635713 0.00050009999) +(0.005050505051 0.0003046635713 0.00050009999) +(0 0.0005705243934 0.00050009999) +(0.005050505051 0.0005705243934 0.00050009999) +(0 0.001024837958 0.00050009999) +(0.005050505051 0.001024837958 0.00050009999) +(0 0.001758019915 0.00050009999) +(0.005050505051 0.001758019915 0.00050009999) +(0 0.002838575912 0.00050009999) +(0.005050505051 0.002838575912 0.00050009999) +(0 0.004235474916 0.00050009999) +(0.005050505051 0.004235474916 0.00050009999) +(0 0.005764525084 0.00050009999) +(0.005050505051 0.005764525084 0.00050009999) +(0 0.007161424088 0.00050009999) +(0.005050505051 0.007161424088 0.00050009999) +(0 0.008241980085 0.00050009999) +(0.005050505051 0.008241980085 0.00050009999) +(0 0.008975162042 0.00050009999) +(0.005050505051 0.008975162042 0.00050009999) +(0 0.009429475607 0.00050009999) +(0.005050505051 0.009429475607 0.00050009999) +(0 0.009695336429 0.00050009999) +(0.005050505051 0.009695336429 0.00050009999) +(0 0.00984573433 0.00050009999) +(0.005050505051 0.00984573433 0.00050009999) +(0 0.009929188095 0.00050009999) +(0.005050505051 0.009929188095 0.00050009999) +(0 0.009975 0.00050009999) +(0.005050505051 0.009975 0.00050009999) +(0 0.01 0.00050009999) +(0.005050505051 0.01 0.00050009999) +(0.0101010101 0 0.00050009999) +(0.0101010101 2.5e-05 0.00050009999) +(0.0101010101 7.08119053e-05 0.00050009999) +(0.0101010101 0.00015426567 0.00050009999) +(0.0101010101 0.0003046635713 0.00050009999) +(0.0101010101 0.0005705243934 0.00050009999) +(0.0101010101 0.001024837958 0.00050009999) +(0.0101010101 0.001758019915 0.00050009999) +(0.0101010101 0.002838575912 0.00050009999) +(0.0101010101 0.004235474916 0.00050009999) +(0.0101010101 0.005764525084 0.00050009999) +(0.0101010101 0.007161424088 0.00050009999) +(0.0101010101 0.008241980085 0.00050009999) +(0.0101010101 0.008975162042 0.00050009999) +(0.0101010101 0.009429475607 0.00050009999) +(0.0101010101 0.009695336429 0.00050009999) +(0.0101010101 0.00984573433 0.00050009999) +(0.0101010101 0.009929188095 0.00050009999) +(0.0101010101 0.009975 0.00050009999) +(0.0101010101 0.01 0.00050009999) +(0.01515151515 0 0.00050009999) +(0.01515151515 2.5e-05 0.00050009999) +(0.01515151515 7.08119053e-05 0.00050009999) +(0.01515151515 0.00015426567 0.00050009999) +(0.01515151515 0.0003046635713 0.00050009999) +(0.01515151515 0.0005705243934 0.00050009999) +(0.01515151515 0.001024837958 0.00050009999) +(0.01515151515 0.001758019915 0.00050009999) +(0.01515151515 0.002838575912 0.00050009999) +(0.01515151515 0.004235474916 0.00050009999) +(0.01515151515 0.005764525084 0.00050009999) +(0.01515151515 0.007161424088 0.00050009999) +(0.01515151515 0.008241980085 0.00050009999) +(0.01515151515 0.008975162042 0.00050009999) +(0.01515151515 0.009429475607 0.00050009999) +(0.01515151515 0.009695336429 0.00050009999) +(0.01515151515 0.00984573433 0.00050009999) +(0.01515151515 0.009929188095 0.00050009999) +(0.01515151515 0.009975 0.00050009999) +(0.01515151515 0.01 0.00050009999) +(0.0202020202 0 0.00050009999) +(0.0202020202 2.5e-05 0.00050009999) +(0.0202020202 7.08119053e-05 0.00050009999) +(0.0202020202 0.00015426567 0.00050009999) +(0.0202020202 0.0003046635713 0.00050009999) +(0.0202020202 0.0005705243934 0.00050009999) +(0.0202020202 0.001024837958 0.00050009999) +(0.0202020202 0.001758019915 0.00050009999) +(0.0202020202 0.002838575912 0.00050009999) +(0.0202020202 0.004235474916 0.00050009999) +(0.0202020202 0.005764525084 0.00050009999) +(0.0202020202 0.007161424088 0.00050009999) +(0.0202020202 0.008241980085 0.00050009999) +(0.0202020202 0.008975162042 0.00050009999) +(0.0202020202 0.009429475607 0.00050009999) +(0.0202020202 0.009695336429 0.00050009999) +(0.0202020202 0.00984573433 0.00050009999) +(0.0202020202 0.009929188095 0.00050009999) +(0.0202020202 0.009975 0.00050009999) +(0.0202020202 0.01 0.00050009999) +(0.02525252525 0 0.00050009999) +(0.02525252525 2.5e-05 0.00050009999) +(0.02525252525 7.08119053e-05 0.00050009999) +(0.02525252525 0.00015426567 0.00050009999) +(0.02525252525 0.0003046635713 0.00050009999) +(0.02525252525 0.0005705243934 0.00050009999) +(0.02525252525 0.001024837958 0.00050009999) +(0.02525252525 0.001758019915 0.00050009999) +(0.02525252525 0.002838575912 0.00050009999) +(0.02525252525 0.004235474916 0.00050009999) +(0.02525252525 0.005764525084 0.00050009999) +(0.02525252525 0.007161424088 0.00050009999) +(0.02525252525 0.008241980085 0.00050009999) +(0.02525252525 0.008975162042 0.00050009999) +(0.02525252525 0.009429475607 0.00050009999) +(0.02525252525 0.009695336429 0.00050009999) +(0.02525252525 0.00984573433 0.00050009999) +(0.02525252525 0.009929188095 0.00050009999) +(0.02525252525 0.009975 0.00050009999) +(0.02525252525 0.01 0.00050009999) +(0.0303030303 0 0.00050009999) +(0.0303030303 2.5e-05 0.00050009999) +(0.0303030303 7.08119053e-05 0.00050009999) +(0.0303030303 0.00015426567 0.00050009999) +(0.0303030303 0.0003046635713 0.00050009999) +(0.0303030303 0.0005705243934 0.00050009999) +(0.0303030303 0.001024837958 0.00050009999) +(0.0303030303 0.001758019915 0.00050009999) +(0.0303030303 0.002838575912 0.00050009999) +(0.0303030303 0.004235474916 0.00050009999) +(0.0303030303 0.005764525084 0.00050009999) +(0.0303030303 0.007161424088 0.00050009999) +(0.0303030303 0.008241980085 0.00050009999) +(0.0303030303 0.008975162042 0.00050009999) +(0.0303030303 0.009429475607 0.00050009999) +(0.0303030303 0.009695336429 0.00050009999) +(0.0303030303 0.00984573433 0.00050009999) +(0.0303030303 0.009929188095 0.00050009999) +(0.0303030303 0.009975 0.00050009999) +(0.0303030303 0.01 0.00050009999) +(0.03535353535 0 0.00050009999) +(0.03535353535 2.5e-05 0.00050009999) +(0.03535353535 7.08119053e-05 0.00050009999) +(0.03535353535 0.00015426567 0.00050009999) +(0.03535353535 0.0003046635713 0.00050009999) +(0.03535353535 0.0005705243934 0.00050009999) +(0.03535353535 0.001024837958 0.00050009999) +(0.03535353535 0.001758019915 0.00050009999) +(0.03535353535 0.002838575912 0.00050009999) +(0.03535353535 0.004235474916 0.00050009999) +(0.03535353535 0.005764525084 0.00050009999) +(0.03535353535 0.007161424088 0.00050009999) +(0.03535353535 0.008241980085 0.00050009999) +(0.03535353535 0.008975162042 0.00050009999) +(0.03535353535 0.009429475607 0.00050009999) +(0.03535353535 0.009695336429 0.00050009999) +(0.03535353535 0.00984573433 0.00050009999) +(0.03535353535 0.009929188095 0.00050009999) +(0.03535353535 0.009975 0.00050009999) +(0.03535353535 0.01 0.00050009999) +(0.0404040404 0 0.00050009999) +(0.0404040404 2.5e-05 0.00050009999) +(0.0404040404 7.08119053e-05 0.00050009999) +(0.0404040404 0.00015426567 0.00050009999) +(0.0404040404 0.0003046635713 0.00050009999) +(0.0404040404 0.0005705243934 0.00050009999) +(0.0404040404 0.001024837958 0.00050009999) +(0.0404040404 0.001758019915 0.00050009999) +(0.0404040404 0.002838575912 0.00050009999) +(0.0404040404 0.004235474916 0.00050009999) +(0.0404040404 0.005764525084 0.00050009999) +(0.0404040404 0.007161424088 0.00050009999) +(0.0404040404 0.008241980085 0.00050009999) +(0.0404040404 0.008975162042 0.00050009999) +(0.0404040404 0.009429475607 0.00050009999) +(0.0404040404 0.009695336429 0.00050009999) +(0.0404040404 0.00984573433 0.00050009999) +(0.0404040404 0.009929188095 0.00050009999) +(0.0404040404 0.009975 0.00050009999) +(0.0404040404 0.01 0.00050009999) +(0.04545454545 0 0.00050009999) +(0.04545454545 2.5e-05 0.00050009999) +(0.04545454545 7.08119053e-05 0.00050009999) +(0.04545454545 0.00015426567 0.00050009999) +(0.04545454545 0.0003046635713 0.00050009999) +(0.04545454545 0.0005705243934 0.00050009999) +(0.04545454545 0.001024837958 0.00050009999) +(0.04545454545 0.001758019915 0.00050009999) +(0.04545454545 0.002838575912 0.00050009999) +(0.04545454545 0.004235474916 0.00050009999) +(0.04545454545 0.005764525084 0.00050009999) +(0.04545454545 0.007161424088 0.00050009999) +(0.04545454545 0.008241980085 0.00050009999) +(0.04545454545 0.008975162042 0.00050009999) +(0.04545454545 0.009429475607 0.00050009999) +(0.04545454545 0.009695336429 0.00050009999) +(0.04545454545 0.00984573433 0.00050009999) +(0.04545454545 0.009929188095 0.00050009999) +(0.04545454545 0.009975 0.00050009999) +(0.04545454545 0.01 0.00050009999) +(0.05050505051 0 0.00050009999) +(0.05050505051 2.5e-05 0.00050009999) +(0.05050505051 7.08119053e-05 0.00050009999) +(0.05050505051 0.00015426567 0.00050009999) +(0.05050505051 0.0003046635713 0.00050009999) +(0.05050505051 0.0005705243934 0.00050009999) +(0.05050505051 0.001024837958 0.00050009999) +(0.05050505051 0.001758019915 0.00050009999) +(0.05050505051 0.002838575912 0.00050009999) +(0.05050505051 0.004235474916 0.00050009999) +(0.05050505051 0.005764525084 0.00050009999) +(0.05050505051 0.007161424088 0.00050009999) +(0.05050505051 0.008241980085 0.00050009999) +(0.05050505051 0.008975162042 0.00050009999) +(0.05050505051 0.009429475607 0.00050009999) +(0.05050505051 0.009695336429 0.00050009999) +(0.05050505051 0.00984573433 0.00050009999) +(0.05050505051 0.009929188095 0.00050009999) +(0.05050505051 0.009975 0.00050009999) +(0.05050505051 0.01 0.00050009999) +(0.05555555556 0 0.00050009999) +(0.05555555556 2.5e-05 0.00050009999) +(0.05555555556 7.08119053e-05 0.00050009999) +(0.05555555556 0.00015426567 0.00050009999) +(0.05555555556 0.0003046635713 0.00050009999) +(0.05555555556 0.0005705243934 0.00050009999) +(0.05555555556 0.001024837958 0.00050009999) +(0.05555555556 0.001758019915 0.00050009999) +(0.05555555556 0.002838575912 0.00050009999) +(0.05555555556 0.004235474916 0.00050009999) +(0.05555555556 0.005764525084 0.00050009999) +(0.05555555556 0.007161424088 0.00050009999) +(0.05555555556 0.008241980085 0.00050009999) +(0.05555555556 0.008975162042 0.00050009999) +(0.05555555556 0.009429475607 0.00050009999) +(0.05555555556 0.009695336429 0.00050009999) +(0.05555555556 0.00984573433 0.00050009999) +(0.05555555556 0.009929188095 0.00050009999) +(0.05555555556 0.009975 0.00050009999) +(0.05555555556 0.01 0.00050009999) +(0.06060606061 0 0.00050009999) +(0.06060606061 2.5e-05 0.00050009999) +(0.06060606061 7.08119053e-05 0.00050009999) +(0.06060606061 0.00015426567 0.00050009999) +(0.06060606061 0.0003046635713 0.00050009999) +(0.06060606061 0.0005705243934 0.00050009999) +(0.06060606061 0.001024837958 0.00050009999) +(0.06060606061 0.001758019915 0.00050009999) +(0.06060606061 0.002838575912 0.00050009999) +(0.06060606061 0.004235474916 0.00050009999) +(0.06060606061 0.005764525084 0.00050009999) +(0.06060606061 0.007161424088 0.00050009999) +(0.06060606061 0.008241980085 0.00050009999) +(0.06060606061 0.008975162042 0.00050009999) +(0.06060606061 0.009429475607 0.00050009999) +(0.06060606061 0.009695336429 0.00050009999) +(0.06060606061 0.00984573433 0.00050009999) +(0.06060606061 0.009929188095 0.00050009999) +(0.06060606061 0.009975 0.00050009999) +(0.06060606061 0.01 0.00050009999) +(0.06565656566 0 0.00050009999) +(0.06565656566 2.5e-05 0.00050009999) +(0.06565656566 7.08119053e-05 0.00050009999) +(0.06565656566 0.00015426567 0.00050009999) +(0.06565656566 0.0003046635713 0.00050009999) +(0.06565656566 0.0005705243934 0.00050009999) +(0.06565656566 0.001024837958 0.00050009999) +(0.06565656566 0.001758019915 0.00050009999) +(0.06565656566 0.002838575912 0.00050009999) +(0.06565656566 0.004235474916 0.00050009999) +(0.06565656566 0.005764525084 0.00050009999) +(0.06565656566 0.007161424088 0.00050009999) +(0.06565656566 0.008241980085 0.00050009999) +(0.06565656566 0.008975162042 0.00050009999) +(0.06565656566 0.009429475607 0.00050009999) +(0.06565656566 0.009695336429 0.00050009999) +(0.06565656566 0.00984573433 0.00050009999) +(0.06565656566 0.009929188095 0.00050009999) +(0.06565656566 0.009975 0.00050009999) +(0.06565656566 0.01 0.00050009999) +(0.07070707071 0 0.00050009999) +(0.07070707071 2.5e-05 0.00050009999) +(0.07070707071 7.08119053e-05 0.00050009999) +(0.07070707071 0.00015426567 0.00050009999) +(0.07070707071 0.0003046635713 0.00050009999) +(0.07070707071 0.0005705243934 0.00050009999) +(0.07070707071 0.001024837958 0.00050009999) +(0.07070707071 0.001758019915 0.00050009999) +(0.07070707071 0.002838575912 0.00050009999) +(0.07070707071 0.004235474916 0.00050009999) +(0.07070707071 0.005764525084 0.00050009999) +(0.07070707071 0.007161424088 0.00050009999) +(0.07070707071 0.008241980085 0.00050009999) +(0.07070707071 0.008975162042 0.00050009999) +(0.07070707071 0.009429475607 0.00050009999) +(0.07070707071 0.009695336429 0.00050009999) +(0.07070707071 0.00984573433 0.00050009999) +(0.07070707071 0.009929188095 0.00050009999) +(0.07070707071 0.009975 0.00050009999) +(0.07070707071 0.01 0.00050009999) +(0.07575757576 0 0.00050009999) +(0.07575757576 2.5e-05 0.00050009999) +(0.07575757576 7.08119053e-05 0.00050009999) +(0.07575757576 0.00015426567 0.00050009999) +(0.07575757576 0.0003046635713 0.00050009999) +(0.07575757576 0.0005705243934 0.00050009999) +(0.07575757576 0.001024837958 0.00050009999) +(0.07575757576 0.001758019915 0.00050009999) +(0.07575757576 0.002838575912 0.00050009999) +(0.07575757576 0.004235474916 0.00050009999) +(0.07575757576 0.005764525084 0.00050009999) +(0.07575757576 0.007161424088 0.00050009999) +(0.07575757576 0.008241980085 0.00050009999) +(0.07575757576 0.008975162042 0.00050009999) +(0.07575757576 0.009429475607 0.00050009999) +(0.07575757576 0.009695336429 0.00050009999) +(0.07575757576 0.00984573433 0.00050009999) +(0.07575757576 0.009929188095 0.00050009999) +(0.07575757576 0.009975 0.00050009999) +(0.07575757576 0.01 0.00050009999) +(0.08080808081 0 0.00050009999) +(0.08080808081 2.5e-05 0.00050009999) +(0.08080808081 7.08119053e-05 0.00050009999) +(0.08080808081 0.00015426567 0.00050009999) +(0.08080808081 0.0003046635713 0.00050009999) +(0.08080808081 0.0005705243934 0.00050009999) +(0.08080808081 0.001024837958 0.00050009999) +(0.08080808081 0.001758019915 0.00050009999) +(0.08080808081 0.002838575912 0.00050009999) +(0.08080808081 0.004235474916 0.00050009999) +(0.08080808081 0.005764525084 0.00050009999) +(0.08080808081 0.007161424088 0.00050009999) +(0.08080808081 0.008241980085 0.00050009999) +(0.08080808081 0.008975162042 0.00050009999) +(0.08080808081 0.009429475607 0.00050009999) +(0.08080808081 0.009695336429 0.00050009999) +(0.08080808081 0.00984573433 0.00050009999) +(0.08080808081 0.009929188095 0.00050009999) +(0.08080808081 0.009975 0.00050009999) +(0.08080808081 0.01 0.00050009999) +(0.08585858586 0 0.00050009999) +(0.08585858586 2.5e-05 0.00050009999) +(0.08585858586 7.08119053e-05 0.00050009999) +(0.08585858586 0.00015426567 0.00050009999) +(0.08585858586 0.0003046635713 0.00050009999) +(0.08585858586 0.0005705243934 0.00050009999) +(0.08585858586 0.001024837958 0.00050009999) +(0.08585858586 0.001758019915 0.00050009999) +(0.08585858586 0.002838575912 0.00050009999) +(0.08585858586 0.004235474916 0.00050009999) +(0.08585858586 0.005764525084 0.00050009999) +(0.08585858586 0.007161424088 0.00050009999) +(0.08585858586 0.008241980085 0.00050009999) +(0.08585858586 0.008975162042 0.00050009999) +(0.08585858586 0.009429475607 0.00050009999) +(0.08585858586 0.009695336429 0.00050009999) +(0.08585858586 0.00984573433 0.00050009999) +(0.08585858586 0.009929188095 0.00050009999) +(0.08585858586 0.009975 0.00050009999) +(0.08585858586 0.01 0.00050009999) +(0.09090909091 0 0.00050009999) +(0.09090909091 2.5e-05 0.00050009999) +(0.09090909091 7.08119053e-05 0.00050009999) +(0.09090909091 0.00015426567 0.00050009999) +(0.09090909091 0.0003046635713 0.00050009999) +(0.09090909091 0.0005705243934 0.00050009999) +(0.09090909091 0.001024837958 0.00050009999) +(0.09090909091 0.001758019915 0.00050009999) +(0.09090909091 0.002838575912 0.00050009999) +(0.09090909091 0.004235474916 0.00050009999) +(0.09090909091 0.005764525084 0.00050009999) +(0.09090909091 0.007161424088 0.00050009999) +(0.09090909091 0.008241980085 0.00050009999) +(0.09090909091 0.008975162042 0.00050009999) +(0.09090909091 0.009429475607 0.00050009999) +(0.09090909091 0.009695336429 0.00050009999) +(0.09090909091 0.00984573433 0.00050009999) +(0.09090909091 0.009929188095 0.00050009999) +(0.09090909091 0.009975 0.00050009999) +(0.09090909091 0.01 0.00050009999) +(0.09595959596 0 0.00050009999) +(0.09595959596 2.5e-05 0.00050009999) +(0.09595959596 7.08119053e-05 0.00050009999) +(0.09595959596 0.00015426567 0.00050009999) +(0.09595959596 0.0003046635713 0.00050009999) +(0.09595959596 0.0005705243934 0.00050009999) +(0.09595959596 0.001024837958 0.00050009999) +(0.09595959596 0.001758019915 0.00050009999) +(0.09595959596 0.002838575912 0.00050009999) +(0.09595959596 0.004235474916 0.00050009999) +(0.09595959596 0.005764525084 0.00050009999) +(0.09595959596 0.007161424088 0.00050009999) +(0.09595959596 0.008241980085 0.00050009999) +(0.09595959596 0.008975162042 0.00050009999) +(0.09595959596 0.009429475607 0.00050009999) +(0.09595959596 0.009695336429 0.00050009999) +(0.09595959596 0.00984573433 0.00050009999) +(0.09595959596 0.009929188095 0.00050009999) +(0.09595959596 0.009975 0.00050009999) +(0.09595959596 0.01 0.00050009999) +(0.101010101 0 0.00050009999) +(0.101010101 2.5e-05 0.00050009999) +(0.101010101 7.08119053e-05 0.00050009999) +(0.101010101 0.00015426567 0.00050009999) +(0.101010101 0.0003046635713 0.00050009999) +(0.101010101 0.0005705243934 0.00050009999) +(0.101010101 0.001024837958 0.00050009999) +(0.101010101 0.001758019915 0.00050009999) +(0.101010101 0.002838575912 0.00050009999) +(0.101010101 0.004235474916 0.00050009999) +(0.101010101 0.005764525084 0.00050009999) +(0.101010101 0.007161424088 0.00050009999) +(0.101010101 0.008241980085 0.00050009999) +(0.101010101 0.008975162042 0.00050009999) +(0.101010101 0.009429475607 0.00050009999) +(0.101010101 0.009695336429 0.00050009999) +(0.101010101 0.00984573433 0.00050009999) +(0.101010101 0.009929188095 0.00050009999) +(0.101010101 0.009975 0.00050009999) +(0.101010101 0.01 0.00050009999) +(0.1060606061 0 0.00050009999) +(0.1060606061 2.5e-05 0.00050009999) +(0.1060606061 7.08119053e-05 0.00050009999) +(0.1060606061 0.00015426567 0.00050009999) +(0.1060606061 0.0003046635713 0.00050009999) +(0.1060606061 0.0005705243934 0.00050009999) +(0.1060606061 0.001024837958 0.00050009999) +(0.1060606061 0.001758019915 0.00050009999) +(0.1060606061 0.002838575912 0.00050009999) +(0.1060606061 0.004235474916 0.00050009999) +(0.1060606061 0.005764525084 0.00050009999) +(0.1060606061 0.007161424088 0.00050009999) +(0.1060606061 0.008241980085 0.00050009999) +(0.1060606061 0.008975162042 0.00050009999) +(0.1060606061 0.009429475607 0.00050009999) +(0.1060606061 0.009695336429 0.00050009999) +(0.1060606061 0.00984573433 0.00050009999) +(0.1060606061 0.009929188095 0.00050009999) +(0.1060606061 0.009975 0.00050009999) +(0.1060606061 0.01 0.00050009999) +(0.1111111111 0 0.00050009999) +(0.1111111111 2.5e-05 0.00050009999) +(0.1111111111 7.08119053e-05 0.00050009999) +(0.1111111111 0.00015426567 0.00050009999) +(0.1111111111 0.0003046635713 0.00050009999) +(0.1111111111 0.0005705243934 0.00050009999) +(0.1111111111 0.001024837958 0.00050009999) +(0.1111111111 0.001758019915 0.00050009999) +(0.1111111111 0.002838575912 0.00050009999) +(0.1111111111 0.004235474916 0.00050009999) +(0.1111111111 0.005764525084 0.00050009999) +(0.1111111111 0.007161424088 0.00050009999) +(0.1111111111 0.008241980085 0.00050009999) +(0.1111111111 0.008975162042 0.00050009999) +(0.1111111111 0.009429475607 0.00050009999) +(0.1111111111 0.009695336429 0.00050009999) +(0.1111111111 0.00984573433 0.00050009999) +(0.1111111111 0.009929188095 0.00050009999) +(0.1111111111 0.009975 0.00050009999) +(0.1111111111 0.01 0.00050009999) +(0.1161616162 0 0.00050009999) +(0.1161616162 2.5e-05 0.00050009999) +(0.1161616162 7.08119053e-05 0.00050009999) +(0.1161616162 0.00015426567 0.00050009999) +(0.1161616162 0.0003046635713 0.00050009999) +(0.1161616162 0.0005705243934 0.00050009999) +(0.1161616162 0.001024837958 0.00050009999) +(0.1161616162 0.001758019915 0.00050009999) +(0.1161616162 0.002838575912 0.00050009999) +(0.1161616162 0.004235474916 0.00050009999) +(0.1161616162 0.005764525084 0.00050009999) +(0.1161616162 0.007161424088 0.00050009999) +(0.1161616162 0.008241980085 0.00050009999) +(0.1161616162 0.008975162042 0.00050009999) +(0.1161616162 0.009429475607 0.00050009999) +(0.1161616162 0.009695336429 0.00050009999) +(0.1161616162 0.00984573433 0.00050009999) +(0.1161616162 0.009929188095 0.00050009999) +(0.1161616162 0.009975 0.00050009999) +(0.1161616162 0.01 0.00050009999) +(0.1212121212 0 0.00050009999) +(0.1212121212 2.5e-05 0.00050009999) +(0.1212121212 7.08119053e-05 0.00050009999) +(0.1212121212 0.00015426567 0.00050009999) +(0.1212121212 0.0003046635713 0.00050009999) +(0.1212121212 0.0005705243934 0.00050009999) +(0.1212121212 0.001024837958 0.00050009999) +(0.1212121212 0.001758019915 0.00050009999) +(0.1212121212 0.002838575912 0.00050009999) +(0.1212121212 0.004235474916 0.00050009999) +(0.1212121212 0.005764525084 0.00050009999) +(0.1212121212 0.007161424088 0.00050009999) +(0.1212121212 0.008241980085 0.00050009999) +(0.1212121212 0.008975162042 0.00050009999) +(0.1212121212 0.009429475607 0.00050009999) +(0.1212121212 0.009695336429 0.00050009999) +(0.1212121212 0.00984573433 0.00050009999) +(0.1212121212 0.009929188095 0.00050009999) +(0.1212121212 0.009975 0.00050009999) +(0.1212121212 0.01 0.00050009999) +(0.1262626263 0 0.00050009999) +(0.1262626263 2.5e-05 0.00050009999) +(0.1262626263 7.08119053e-05 0.00050009999) +(0.1262626263 0.00015426567 0.00050009999) +(0.1262626263 0.0003046635713 0.00050009999) +(0.1262626263 0.0005705243934 0.00050009999) +(0.1262626263 0.001024837958 0.00050009999) +(0.1262626263 0.001758019915 0.00050009999) +(0.1262626263 0.002838575912 0.00050009999) +(0.1262626263 0.004235474916 0.00050009999) +(0.1262626263 0.005764525084 0.00050009999) +(0.1262626263 0.007161424088 0.00050009999) +(0.1262626263 0.008241980085 0.00050009999) +(0.1262626263 0.008975162042 0.00050009999) +(0.1262626263 0.009429475607 0.00050009999) +(0.1262626263 0.009695336429 0.00050009999) +(0.1262626263 0.00984573433 0.00050009999) +(0.1262626263 0.009929188095 0.00050009999) +(0.1262626263 0.009975 0.00050009999) +(0.1262626263 0.01 0.00050009999) +(0.1313131313 0 0.00050009999) +(0.1313131313 2.5e-05 0.00050009999) +(0.1313131313 7.08119053e-05 0.00050009999) +(0.1313131313 0.00015426567 0.00050009999) +(0.1313131313 0.0003046635713 0.00050009999) +(0.1313131313 0.0005705243934 0.00050009999) +(0.1313131313 0.001024837958 0.00050009999) +(0.1313131313 0.001758019915 0.00050009999) +(0.1313131313 0.002838575912 0.00050009999) +(0.1313131313 0.004235474916 0.00050009999) +(0.1313131313 0.005764525084 0.00050009999) +(0.1313131313 0.007161424088 0.00050009999) +(0.1313131313 0.008241980085 0.00050009999) +(0.1313131313 0.008975162042 0.00050009999) +(0.1313131313 0.009429475607 0.00050009999) +(0.1313131313 0.009695336429 0.00050009999) +(0.1313131313 0.00984573433 0.00050009999) +(0.1313131313 0.009929188095 0.00050009999) +(0.1313131313 0.009975 0.00050009999) +(0.1313131313 0.01 0.00050009999) +(0.1363636364 0 0.00050009999) +(0.1363636364 2.5e-05 0.00050009999) +(0.1363636364 7.08119053e-05 0.00050009999) +(0.1363636364 0.00015426567 0.00050009999) +(0.1363636364 0.0003046635713 0.00050009999) +(0.1363636364 0.0005705243934 0.00050009999) +(0.1363636364 0.001024837958 0.00050009999) +(0.1363636364 0.001758019915 0.00050009999) +(0.1363636364 0.002838575912 0.00050009999) +(0.1363636364 0.004235474916 0.00050009999) +(0.1363636364 0.005764525084 0.00050009999) +(0.1363636364 0.007161424088 0.00050009999) +(0.1363636364 0.008241980085 0.00050009999) +(0.1363636364 0.008975162042 0.00050009999) +(0.1363636364 0.009429475607 0.00050009999) +(0.1363636364 0.009695336429 0.00050009999) +(0.1363636364 0.00984573433 0.00050009999) +(0.1363636364 0.009929188095 0.00050009999) +(0.1363636364 0.009975 0.00050009999) +(0.1363636364 0.01 0.00050009999) +(0.1414141414 0 0.00050009999) +(0.1414141414 2.5e-05 0.00050009999) +(0.1414141414 7.08119053e-05 0.00050009999) +(0.1414141414 0.00015426567 0.00050009999) +(0.1414141414 0.0003046635713 0.00050009999) +(0.1414141414 0.0005705243934 0.00050009999) +(0.1414141414 0.001024837958 0.00050009999) +(0.1414141414 0.001758019915 0.00050009999) +(0.1414141414 0.002838575912 0.00050009999) +(0.1414141414 0.004235474916 0.00050009999) +(0.1414141414 0.005764525084 0.00050009999) +(0.1414141414 0.007161424088 0.00050009999) +(0.1414141414 0.008241980085 0.00050009999) +(0.1414141414 0.008975162042 0.00050009999) +(0.1414141414 0.009429475607 0.00050009999) +(0.1414141414 0.009695336429 0.00050009999) +(0.1414141414 0.00984573433 0.00050009999) +(0.1414141414 0.009929188095 0.00050009999) +(0.1414141414 0.009975 0.00050009999) +(0.1414141414 0.01 0.00050009999) +(0.1464646465 0 0.00050009999) +(0.1464646465 2.5e-05 0.00050009999) +(0.1464646465 7.08119053e-05 0.00050009999) +(0.1464646465 0.00015426567 0.00050009999) +(0.1464646465 0.0003046635713 0.00050009999) +(0.1464646465 0.0005705243934 0.00050009999) +(0.1464646465 0.001024837958 0.00050009999) +(0.1464646465 0.001758019915 0.00050009999) +(0.1464646465 0.002838575912 0.00050009999) +(0.1464646465 0.004235474916 0.00050009999) +(0.1464646465 0.005764525084 0.00050009999) +(0.1464646465 0.007161424088 0.00050009999) +(0.1464646465 0.008241980085 0.00050009999) +(0.1464646465 0.008975162042 0.00050009999) +(0.1464646465 0.009429475607 0.00050009999) +(0.1464646465 0.009695336429 0.00050009999) +(0.1464646465 0.00984573433 0.00050009999) +(0.1464646465 0.009929188095 0.00050009999) +(0.1464646465 0.009975 0.00050009999) +(0.1464646465 0.01 0.00050009999) +(0.1515151515 0 0.00050009999) +(0.1515151515 2.5e-05 0.00050009999) +(0.1515151515 7.08119053e-05 0.00050009999) +(0.1515151515 0.00015426567 0.00050009999) +(0.1515151515 0.0003046635713 0.00050009999) +(0.1515151515 0.0005705243934 0.00050009999) +(0.1515151515 0.001024837958 0.00050009999) +(0.1515151515 0.001758019915 0.00050009999) +(0.1515151515 0.002838575912 0.00050009999) +(0.1515151515 0.004235474916 0.00050009999) +(0.1515151515 0.005764525084 0.00050009999) +(0.1515151515 0.007161424088 0.00050009999) +(0.1515151515 0.008241980085 0.00050009999) +(0.1515151515 0.008975162042 0.00050009999) +(0.1515151515 0.009429475607 0.00050009999) +(0.1515151515 0.009695336429 0.00050009999) +(0.1515151515 0.00984573433 0.00050009999) +(0.1515151515 0.009929188095 0.00050009999) +(0.1515151515 0.009975 0.00050009999) +(0.1515151515 0.01 0.00050009999) +(0.1565656566 0 0.00050009999) +(0.1565656566 2.5e-05 0.00050009999) +(0.1565656566 7.08119053e-05 0.00050009999) +(0.1565656566 0.00015426567 0.00050009999) +(0.1565656566 0.0003046635713 0.00050009999) +(0.1565656566 0.0005705243934 0.00050009999) +(0.1565656566 0.001024837958 0.00050009999) +(0.1565656566 0.001758019915 0.00050009999) +(0.1565656566 0.002838575912 0.00050009999) +(0.1565656566 0.004235474916 0.00050009999) +(0.1565656566 0.005764525084 0.00050009999) +(0.1565656566 0.007161424088 0.00050009999) +(0.1565656566 0.008241980085 0.00050009999) +(0.1565656566 0.008975162042 0.00050009999) +(0.1565656566 0.009429475607 0.00050009999) +(0.1565656566 0.009695336429 0.00050009999) +(0.1565656566 0.00984573433 0.00050009999) +(0.1565656566 0.009929188095 0.00050009999) +(0.1565656566 0.009975 0.00050009999) +(0.1565656566 0.01 0.00050009999) +(0.1616161616 0 0.00050009999) +(0.1616161616 2.5e-05 0.00050009999) +(0.1616161616 7.08119053e-05 0.00050009999) +(0.1616161616 0.00015426567 0.00050009999) +(0.1616161616 0.0003046635713 0.00050009999) +(0.1616161616 0.0005705243934 0.00050009999) +(0.1616161616 0.001024837958 0.00050009999) +(0.1616161616 0.001758019915 0.00050009999) +(0.1616161616 0.002838575912 0.00050009999) +(0.1616161616 0.004235474916 0.00050009999) +(0.1616161616 0.005764525084 0.00050009999) +(0.1616161616 0.007161424088 0.00050009999) +(0.1616161616 0.008241980085 0.00050009999) +(0.1616161616 0.008975162042 0.00050009999) +(0.1616161616 0.009429475607 0.00050009999) +(0.1616161616 0.009695336429 0.00050009999) +(0.1616161616 0.00984573433 0.00050009999) +(0.1616161616 0.009929188095 0.00050009999) +(0.1616161616 0.009975 0.00050009999) +(0.1616161616 0.01 0.00050009999) +(0.1666666667 0 0.00050009999) +(0.1666666667 2.5e-05 0.00050009999) +(0.1666666667 7.08119053e-05 0.00050009999) +(0.1666666667 0.00015426567 0.00050009999) +(0.1666666667 0.0003046635713 0.00050009999) +(0.1666666667 0.0005705243934 0.00050009999) +(0.1666666667 0.001024837958 0.00050009999) +(0.1666666667 0.001758019915 0.00050009999) +(0.1666666667 0.002838575912 0.00050009999) +(0.1666666667 0.004235474916 0.00050009999) +(0.1666666667 0.005764525084 0.00050009999) +(0.1666666667 0.007161424088 0.00050009999) +(0.1666666667 0.008241980085 0.00050009999) +(0.1666666667 0.008975162042 0.00050009999) +(0.1666666667 0.009429475607 0.00050009999) +(0.1666666667 0.009695336429 0.00050009999) +(0.1666666667 0.00984573433 0.00050009999) +(0.1666666667 0.009929188095 0.00050009999) +(0.1666666667 0.009975 0.00050009999) +(0.1666666667 0.01 0.00050009999) +(0.1717171717 0 0.00050009999) +(0.1717171717 2.5e-05 0.00050009999) +(0.1717171717 7.08119053e-05 0.00050009999) +(0.1717171717 0.00015426567 0.00050009999) +(0.1717171717 0.0003046635713 0.00050009999) +(0.1717171717 0.0005705243934 0.00050009999) +(0.1717171717 0.001024837958 0.00050009999) +(0.1717171717 0.001758019915 0.00050009999) +(0.1717171717 0.002838575912 0.00050009999) +(0.1717171717 0.004235474916 0.00050009999) +(0.1717171717 0.005764525084 0.00050009999) +(0.1717171717 0.007161424088 0.00050009999) +(0.1717171717 0.008241980085 0.00050009999) +(0.1717171717 0.008975162042 0.00050009999) +(0.1717171717 0.009429475607 0.00050009999) +(0.1717171717 0.009695336429 0.00050009999) +(0.1717171717 0.00984573433 0.00050009999) +(0.1717171717 0.009929188095 0.00050009999) +(0.1717171717 0.009975 0.00050009999) +(0.1717171717 0.01 0.00050009999) +(0.1767676768 0 0.00050009999) +(0.1767676768 2.5e-05 0.00050009999) +(0.1767676768 7.08119053e-05 0.00050009999) +(0.1767676768 0.00015426567 0.00050009999) +(0.1767676768 0.0003046635713 0.00050009999) +(0.1767676768 0.0005705243934 0.00050009999) +(0.1767676768 0.001024837958 0.00050009999) +(0.1767676768 0.001758019915 0.00050009999) +(0.1767676768 0.002838575912 0.00050009999) +(0.1767676768 0.004235474916 0.00050009999) +(0.1767676768 0.005764525084 0.00050009999) +(0.1767676768 0.007161424088 0.00050009999) +(0.1767676768 0.008241980085 0.00050009999) +(0.1767676768 0.008975162042 0.00050009999) +(0.1767676768 0.009429475607 0.00050009999) +(0.1767676768 0.009695336429 0.00050009999) +(0.1767676768 0.00984573433 0.00050009999) +(0.1767676768 0.009929188095 0.00050009999) +(0.1767676768 0.009975 0.00050009999) +(0.1767676768 0.01 0.00050009999) +(0.1818181818 0 0.00050009999) +(0.1818181818 2.5e-05 0.00050009999) +(0.1818181818 7.08119053e-05 0.00050009999) +(0.1818181818 0.00015426567 0.00050009999) +(0.1818181818 0.0003046635713 0.00050009999) +(0.1818181818 0.0005705243934 0.00050009999) +(0.1818181818 0.001024837958 0.00050009999) +(0.1818181818 0.001758019915 0.00050009999) +(0.1818181818 0.002838575912 0.00050009999) +(0.1818181818 0.004235474916 0.00050009999) +(0.1818181818 0.005764525084 0.00050009999) +(0.1818181818 0.007161424088 0.00050009999) +(0.1818181818 0.008241980085 0.00050009999) +(0.1818181818 0.008975162042 0.00050009999) +(0.1818181818 0.009429475607 0.00050009999) +(0.1818181818 0.009695336429 0.00050009999) +(0.1818181818 0.00984573433 0.00050009999) +(0.1818181818 0.009929188095 0.00050009999) +(0.1818181818 0.009975 0.00050009999) +(0.1818181818 0.01 0.00050009999) +(0.1868686869 0 0.00050009999) +(0.1868686869 2.5e-05 0.00050009999) +(0.1868686869 7.08119053e-05 0.00050009999) +(0.1868686869 0.00015426567 0.00050009999) +(0.1868686869 0.0003046635713 0.00050009999) +(0.1868686869 0.0005705243934 0.00050009999) +(0.1868686869 0.001024837958 0.00050009999) +(0.1868686869 0.001758019915 0.00050009999) +(0.1868686869 0.002838575912 0.00050009999) +(0.1868686869 0.004235474916 0.00050009999) +(0.1868686869 0.005764525084 0.00050009999) +(0.1868686869 0.007161424088 0.00050009999) +(0.1868686869 0.008241980085 0.00050009999) +(0.1868686869 0.008975162042 0.00050009999) +(0.1868686869 0.009429475607 0.00050009999) +(0.1868686869 0.009695336429 0.00050009999) +(0.1868686869 0.00984573433 0.00050009999) +(0.1868686869 0.009929188095 0.00050009999) +(0.1868686869 0.009975 0.00050009999) +(0.1868686869 0.01 0.00050009999) +(0.1919191919 0 0.00050009999) +(0.1919191919 2.5e-05 0.00050009999) +(0.1919191919 7.08119053e-05 0.00050009999) +(0.1919191919 0.00015426567 0.00050009999) +(0.1919191919 0.0003046635713 0.00050009999) +(0.1919191919 0.0005705243934 0.00050009999) +(0.1919191919 0.001024837958 0.00050009999) +(0.1919191919 0.001758019915 0.00050009999) +(0.1919191919 0.002838575912 0.00050009999) +(0.1919191919 0.004235474916 0.00050009999) +(0.1919191919 0.005764525084 0.00050009999) +(0.1919191919 0.007161424088 0.00050009999) +(0.1919191919 0.008241980085 0.00050009999) +(0.1919191919 0.008975162042 0.00050009999) +(0.1919191919 0.009429475607 0.00050009999) +(0.1919191919 0.009695336429 0.00050009999) +(0.1919191919 0.00984573433 0.00050009999) +(0.1919191919 0.009929188095 0.00050009999) +(0.1919191919 0.009975 0.00050009999) +(0.1919191919 0.01 0.00050009999) +(0.196969697 0 0.00050009999) +(0.196969697 2.5e-05 0.00050009999) +(0.196969697 7.08119053e-05 0.00050009999) +(0.196969697 0.00015426567 0.00050009999) +(0.196969697 0.0003046635713 0.00050009999) +(0.196969697 0.0005705243934 0.00050009999) +(0.196969697 0.001024837958 0.00050009999) +(0.196969697 0.001758019915 0.00050009999) +(0.196969697 0.002838575912 0.00050009999) +(0.196969697 0.004235474916 0.00050009999) +(0.196969697 0.005764525084 0.00050009999) +(0.196969697 0.007161424088 0.00050009999) +(0.196969697 0.008241980085 0.00050009999) +(0.196969697 0.008975162042 0.00050009999) +(0.196969697 0.009429475607 0.00050009999) +(0.196969697 0.009695336429 0.00050009999) +(0.196969697 0.00984573433 0.00050009999) +(0.196969697 0.009929188095 0.00050009999) +(0.196969697 0.009975 0.00050009999) +(0.196969697 0.01 0.00050009999) +(0.202020202 0 0.00050009999) +(0.202020202 2.5e-05 0.00050009999) +(0.202020202 7.08119053e-05 0.00050009999) +(0.202020202 0.00015426567 0.00050009999) +(0.202020202 0.0003046635713 0.00050009999) +(0.202020202 0.0005705243934 0.00050009999) +(0.202020202 0.001024837958 0.00050009999) +(0.202020202 0.001758019915 0.00050009999) +(0.202020202 0.002838575912 0.00050009999) +(0.202020202 0.004235474916 0.00050009999) +(0.202020202 0.005764525084 0.00050009999) +(0.202020202 0.007161424088 0.00050009999) +(0.202020202 0.008241980085 0.00050009999) +(0.202020202 0.008975162042 0.00050009999) +(0.202020202 0.009429475607 0.00050009999) +(0.202020202 0.009695336429 0.00050009999) +(0.202020202 0.00984573433 0.00050009999) +(0.202020202 0.009929188095 0.00050009999) +(0.202020202 0.009975 0.00050009999) +(0.202020202 0.01 0.00050009999) +(0.2070707071 0 0.00050009999) +(0.2070707071 2.5e-05 0.00050009999) +(0.2070707071 7.08119053e-05 0.00050009999) +(0.2070707071 0.00015426567 0.00050009999) +(0.2070707071 0.0003046635713 0.00050009999) +(0.2070707071 0.0005705243934 0.00050009999) +(0.2070707071 0.001024837958 0.00050009999) +(0.2070707071 0.001758019915 0.00050009999) +(0.2070707071 0.002838575912 0.00050009999) +(0.2070707071 0.004235474916 0.00050009999) +(0.2070707071 0.005764525084 0.00050009999) +(0.2070707071 0.007161424088 0.00050009999) +(0.2070707071 0.008241980085 0.00050009999) +(0.2070707071 0.008975162042 0.00050009999) +(0.2070707071 0.009429475607 0.00050009999) +(0.2070707071 0.009695336429 0.00050009999) +(0.2070707071 0.00984573433 0.00050009999) +(0.2070707071 0.009929188095 0.00050009999) +(0.2070707071 0.009975 0.00050009999) +(0.2070707071 0.01 0.00050009999) +(0.2121212121 0 0.00050009999) +(0.2121212121 2.5e-05 0.00050009999) +(0.2121212121 7.08119053e-05 0.00050009999) +(0.2121212121 0.00015426567 0.00050009999) +(0.2121212121 0.0003046635713 0.00050009999) +(0.2121212121 0.0005705243934 0.00050009999) +(0.2121212121 0.001024837958 0.00050009999) +(0.2121212121 0.001758019915 0.00050009999) +(0.2121212121 0.002838575912 0.00050009999) +(0.2121212121 0.004235474916 0.00050009999) +(0.2121212121 0.005764525084 0.00050009999) +(0.2121212121 0.007161424088 0.00050009999) +(0.2121212121 0.008241980085 0.00050009999) +(0.2121212121 0.008975162042 0.00050009999) +(0.2121212121 0.009429475607 0.00050009999) +(0.2121212121 0.009695336429 0.00050009999) +(0.2121212121 0.00984573433 0.00050009999) +(0.2121212121 0.009929188095 0.00050009999) +(0.2121212121 0.009975 0.00050009999) +(0.2121212121 0.01 0.00050009999) +(0.2171717172 0 0.00050009999) +(0.2171717172 2.5e-05 0.00050009999) +(0.2171717172 7.08119053e-05 0.00050009999) +(0.2171717172 0.00015426567 0.00050009999) +(0.2171717172 0.0003046635713 0.00050009999) +(0.2171717172 0.0005705243934 0.00050009999) +(0.2171717172 0.001024837958 0.00050009999) +(0.2171717172 0.001758019915 0.00050009999) +(0.2171717172 0.002838575912 0.00050009999) +(0.2171717172 0.004235474916 0.00050009999) +(0.2171717172 0.005764525084 0.00050009999) +(0.2171717172 0.007161424088 0.00050009999) +(0.2171717172 0.008241980085 0.00050009999) +(0.2171717172 0.008975162042 0.00050009999) +(0.2171717172 0.009429475607 0.00050009999) +(0.2171717172 0.009695336429 0.00050009999) +(0.2171717172 0.00984573433 0.00050009999) +(0.2171717172 0.009929188095 0.00050009999) +(0.2171717172 0.009975 0.00050009999) +(0.2171717172 0.01 0.00050009999) +(0.2222222222 0 0.00050009999) +(0.2222222222 2.5e-05 0.00050009999) +(0.2222222222 7.08119053e-05 0.00050009999) +(0.2222222222 0.00015426567 0.00050009999) +(0.2222222222 0.0003046635713 0.00050009999) +(0.2222222222 0.0005705243934 0.00050009999) +(0.2222222222 0.001024837958 0.00050009999) +(0.2222222222 0.001758019915 0.00050009999) +(0.2222222222 0.002838575912 0.00050009999) +(0.2222222222 0.004235474916 0.00050009999) +(0.2222222222 0.005764525084 0.00050009999) +(0.2222222222 0.007161424088 0.00050009999) +(0.2222222222 0.008241980085 0.00050009999) +(0.2222222222 0.008975162042 0.00050009999) +(0.2222222222 0.009429475607 0.00050009999) +(0.2222222222 0.009695336429 0.00050009999) +(0.2222222222 0.00984573433 0.00050009999) +(0.2222222222 0.009929188095 0.00050009999) +(0.2222222222 0.009975 0.00050009999) +(0.2222222222 0.01 0.00050009999) +(0.2272727273 0 0.00050009999) +(0.2272727273 2.5e-05 0.00050009999) +(0.2272727273 7.08119053e-05 0.00050009999) +(0.2272727273 0.00015426567 0.00050009999) +(0.2272727273 0.0003046635713 0.00050009999) +(0.2272727273 0.0005705243934 0.00050009999) +(0.2272727273 0.001024837958 0.00050009999) +(0.2272727273 0.001758019915 0.00050009999) +(0.2272727273 0.002838575912 0.00050009999) +(0.2272727273 0.004235474916 0.00050009999) +(0.2272727273 0.005764525084 0.00050009999) +(0.2272727273 0.007161424088 0.00050009999) +(0.2272727273 0.008241980085 0.00050009999) +(0.2272727273 0.008975162042 0.00050009999) +(0.2272727273 0.009429475607 0.00050009999) +(0.2272727273 0.009695336429 0.00050009999) +(0.2272727273 0.00984573433 0.00050009999) +(0.2272727273 0.009929188095 0.00050009999) +(0.2272727273 0.009975 0.00050009999) +(0.2272727273 0.01 0.00050009999) +(0.2323232323 0 0.00050009999) +(0.2323232323 2.5e-05 0.00050009999) +(0.2323232323 7.08119053e-05 0.00050009999) +(0.2323232323 0.00015426567 0.00050009999) +(0.2323232323 0.0003046635713 0.00050009999) +(0.2323232323 0.0005705243934 0.00050009999) +(0.2323232323 0.001024837958 0.00050009999) +(0.2323232323 0.001758019915 0.00050009999) +(0.2323232323 0.002838575912 0.00050009999) +(0.2323232323 0.004235474916 0.00050009999) +(0.2323232323 0.005764525084 0.00050009999) +(0.2323232323 0.007161424088 0.00050009999) +(0.2323232323 0.008241980085 0.00050009999) +(0.2323232323 0.008975162042 0.00050009999) +(0.2323232323 0.009429475607 0.00050009999) +(0.2323232323 0.009695336429 0.00050009999) +(0.2323232323 0.00984573433 0.00050009999) +(0.2323232323 0.009929188095 0.00050009999) +(0.2323232323 0.009975 0.00050009999) +(0.2323232323 0.01 0.00050009999) +(0.2373737374 0 0.00050009999) +(0.2373737374 2.5e-05 0.00050009999) +(0.2373737374 7.08119053e-05 0.00050009999) +(0.2373737374 0.00015426567 0.00050009999) +(0.2373737374 0.0003046635713 0.00050009999) +(0.2373737374 0.0005705243934 0.00050009999) +(0.2373737374 0.001024837958 0.00050009999) +(0.2373737374 0.001758019915 0.00050009999) +(0.2373737374 0.002838575912 0.00050009999) +(0.2373737374 0.004235474916 0.00050009999) +(0.2373737374 0.005764525084 0.00050009999) +(0.2373737374 0.007161424088 0.00050009999) +(0.2373737374 0.008241980085 0.00050009999) +(0.2373737374 0.008975162042 0.00050009999) +(0.2373737374 0.009429475607 0.00050009999) +(0.2373737374 0.009695336429 0.00050009999) +(0.2373737374 0.00984573433 0.00050009999) +(0.2373737374 0.009929188095 0.00050009999) +(0.2373737374 0.009975 0.00050009999) +(0.2373737374 0.01 0.00050009999) +(0.2424242424 0 0.00050009999) +(0.2424242424 2.5e-05 0.00050009999) +(0.2424242424 7.08119053e-05 0.00050009999) +(0.2424242424 0.00015426567 0.00050009999) +(0.2424242424 0.0003046635713 0.00050009999) +(0.2424242424 0.0005705243934 0.00050009999) +(0.2424242424 0.001024837958 0.00050009999) +(0.2424242424 0.001758019915 0.00050009999) +(0.2424242424 0.002838575912 0.00050009999) +(0.2424242424 0.004235474916 0.00050009999) +(0.2424242424 0.005764525084 0.00050009999) +(0.2424242424 0.007161424088 0.00050009999) +(0.2424242424 0.008241980085 0.00050009999) +(0.2424242424 0.008975162042 0.00050009999) +(0.2424242424 0.009429475607 0.00050009999) +(0.2424242424 0.009695336429 0.00050009999) +(0.2424242424 0.00984573433 0.00050009999) +(0.2424242424 0.009929188095 0.00050009999) +(0.2424242424 0.009975 0.00050009999) +(0.2424242424 0.01 0.00050009999) +(0.2474747475 0 0.00050009999) +(0.2474747475 2.5e-05 0.00050009999) +(0.2474747475 7.08119053e-05 0.00050009999) +(0.2474747475 0.00015426567 0.00050009999) +(0.2474747475 0.0003046635713 0.00050009999) +(0.2474747475 0.0005705243934 0.00050009999) +(0.2474747475 0.001024837958 0.00050009999) +(0.2474747475 0.001758019915 0.00050009999) +(0.2474747475 0.002838575912 0.00050009999) +(0.2474747475 0.004235474916 0.00050009999) +(0.2474747475 0.005764525084 0.00050009999) +(0.2474747475 0.007161424088 0.00050009999) +(0.2474747475 0.008241980085 0.00050009999) +(0.2474747475 0.008975162042 0.00050009999) +(0.2474747475 0.009429475607 0.00050009999) +(0.2474747475 0.009695336429 0.00050009999) +(0.2474747475 0.00984573433 0.00050009999) +(0.2474747475 0.009929188095 0.00050009999) +(0.2474747475 0.009975 0.00050009999) +(0.2474747475 0.01 0.00050009999) +(0.2525252525 0 0.00050009999) +(0.2525252525 2.5e-05 0.00050009999) +(0.2525252525 7.08119053e-05 0.00050009999) +(0.2525252525 0.00015426567 0.00050009999) +(0.2525252525 0.0003046635713 0.00050009999) +(0.2525252525 0.0005705243934 0.00050009999) +(0.2525252525 0.001024837958 0.00050009999) +(0.2525252525 0.001758019915 0.00050009999) +(0.2525252525 0.002838575912 0.00050009999) +(0.2525252525 0.004235474916 0.00050009999) +(0.2525252525 0.005764525084 0.00050009999) +(0.2525252525 0.007161424088 0.00050009999) +(0.2525252525 0.008241980085 0.00050009999) +(0.2525252525 0.008975162042 0.00050009999) +(0.2525252525 0.009429475607 0.00050009999) +(0.2525252525 0.009695336429 0.00050009999) +(0.2525252525 0.00984573433 0.00050009999) +(0.2525252525 0.009929188095 0.00050009999) +(0.2525252525 0.009975 0.00050009999) +(0.2525252525 0.01 0.00050009999) +(0.2575757576 0 0.00050009999) +(0.2575757576 2.5e-05 0.00050009999) +(0.2575757576 7.08119053e-05 0.00050009999) +(0.2575757576 0.00015426567 0.00050009999) +(0.2575757576 0.0003046635713 0.00050009999) +(0.2575757576 0.0005705243934 0.00050009999) +(0.2575757576 0.001024837958 0.00050009999) +(0.2575757576 0.001758019915 0.00050009999) +(0.2575757576 0.002838575912 0.00050009999) +(0.2575757576 0.004235474916 0.00050009999) +(0.2575757576 0.005764525084 0.00050009999) +(0.2575757576 0.007161424088 0.00050009999) +(0.2575757576 0.008241980085 0.00050009999) +(0.2575757576 0.008975162042 0.00050009999) +(0.2575757576 0.009429475607 0.00050009999) +(0.2575757576 0.009695336429 0.00050009999) +(0.2575757576 0.00984573433 0.00050009999) +(0.2575757576 0.009929188095 0.00050009999) +(0.2575757576 0.009975 0.00050009999) +(0.2575757576 0.01 0.00050009999) +(0.2626262626 0 0.00050009999) +(0.2626262626 2.5e-05 0.00050009999) +(0.2626262626 7.08119053e-05 0.00050009999) +(0.2626262626 0.00015426567 0.00050009999) +(0.2626262626 0.0003046635713 0.00050009999) +(0.2626262626 0.0005705243934 0.00050009999) +(0.2626262626 0.001024837958 0.00050009999) +(0.2626262626 0.001758019915 0.00050009999) +(0.2626262626 0.002838575912 0.00050009999) +(0.2626262626 0.004235474916 0.00050009999) +(0.2626262626 0.005764525084 0.00050009999) +(0.2626262626 0.007161424088 0.00050009999) +(0.2626262626 0.008241980085 0.00050009999) +(0.2626262626 0.008975162042 0.00050009999) +(0.2626262626 0.009429475607 0.00050009999) +(0.2626262626 0.009695336429 0.00050009999) +(0.2626262626 0.00984573433 0.00050009999) +(0.2626262626 0.009929188095 0.00050009999) +(0.2626262626 0.009975 0.00050009999) +(0.2626262626 0.01 0.00050009999) +(0.2676767677 0 0.00050009999) +(0.2676767677 2.5e-05 0.00050009999) +(0.2676767677 7.08119053e-05 0.00050009999) +(0.2676767677 0.00015426567 0.00050009999) +(0.2676767677 0.0003046635713 0.00050009999) +(0.2676767677 0.0005705243934 0.00050009999) +(0.2676767677 0.001024837958 0.00050009999) +(0.2676767677 0.001758019915 0.00050009999) +(0.2676767677 0.002838575912 0.00050009999) +(0.2676767677 0.004235474916 0.00050009999) +(0.2676767677 0.005764525084 0.00050009999) +(0.2676767677 0.007161424088 0.00050009999) +(0.2676767677 0.008241980085 0.00050009999) +(0.2676767677 0.008975162042 0.00050009999) +(0.2676767677 0.009429475607 0.00050009999) +(0.2676767677 0.009695336429 0.00050009999) +(0.2676767677 0.00984573433 0.00050009999) +(0.2676767677 0.009929188095 0.00050009999) +(0.2676767677 0.009975 0.00050009999) +(0.2676767677 0.01 0.00050009999) +(0.2727272727 0 0.00050009999) +(0.2727272727 2.5e-05 0.00050009999) +(0.2727272727 7.08119053e-05 0.00050009999) +(0.2727272727 0.00015426567 0.00050009999) +(0.2727272727 0.0003046635713 0.00050009999) +(0.2727272727 0.0005705243934 0.00050009999) +(0.2727272727 0.001024837958 0.00050009999) +(0.2727272727 0.001758019915 0.00050009999) +(0.2727272727 0.002838575912 0.00050009999) +(0.2727272727 0.004235474916 0.00050009999) +(0.2727272727 0.005764525084 0.00050009999) +(0.2727272727 0.007161424088 0.00050009999) +(0.2727272727 0.008241980085 0.00050009999) +(0.2727272727 0.008975162042 0.00050009999) +(0.2727272727 0.009429475607 0.00050009999) +(0.2727272727 0.009695336429 0.00050009999) +(0.2727272727 0.00984573433 0.00050009999) +(0.2727272727 0.009929188095 0.00050009999) +(0.2727272727 0.009975 0.00050009999) +(0.2727272727 0.01 0.00050009999) +(0.2777777778 0 0.00050009999) +(0.2777777778 2.5e-05 0.00050009999) +(0.2777777778 7.08119053e-05 0.00050009999) +(0.2777777778 0.00015426567 0.00050009999) +(0.2777777778 0.0003046635713 0.00050009999) +(0.2777777778 0.0005705243934 0.00050009999) +(0.2777777778 0.001024837958 0.00050009999) +(0.2777777778 0.001758019915 0.00050009999) +(0.2777777778 0.002838575912 0.00050009999) +(0.2777777778 0.004235474916 0.00050009999) +(0.2777777778 0.005764525084 0.00050009999) +(0.2777777778 0.007161424088 0.00050009999) +(0.2777777778 0.008241980085 0.00050009999) +(0.2777777778 0.008975162042 0.00050009999) +(0.2777777778 0.009429475607 0.00050009999) +(0.2777777778 0.009695336429 0.00050009999) +(0.2777777778 0.00984573433 0.00050009999) +(0.2777777778 0.009929188095 0.00050009999) +(0.2777777778 0.009975 0.00050009999) +(0.2777777778 0.01 0.00050009999) +(0.2828282828 0 0.00050009999) +(0.2828282828 2.5e-05 0.00050009999) +(0.2828282828 7.08119053e-05 0.00050009999) +(0.2828282828 0.00015426567 0.00050009999) +(0.2828282828 0.0003046635713 0.00050009999) +(0.2828282828 0.0005705243934 0.00050009999) +(0.2828282828 0.001024837958 0.00050009999) +(0.2828282828 0.001758019915 0.00050009999) +(0.2828282828 0.002838575912 0.00050009999) +(0.2828282828 0.004235474916 0.00050009999) +(0.2828282828 0.005764525084 0.00050009999) +(0.2828282828 0.007161424088 0.00050009999) +(0.2828282828 0.008241980085 0.00050009999) +(0.2828282828 0.008975162042 0.00050009999) +(0.2828282828 0.009429475607 0.00050009999) +(0.2828282828 0.009695336429 0.00050009999) +(0.2828282828 0.00984573433 0.00050009999) +(0.2828282828 0.009929188095 0.00050009999) +(0.2828282828 0.009975 0.00050009999) +(0.2828282828 0.01 0.00050009999) +(0.2878787879 0 0.00050009999) +(0.2878787879 2.5e-05 0.00050009999) +(0.2878787879 7.08119053e-05 0.00050009999) +(0.2878787879 0.00015426567 0.00050009999) +(0.2878787879 0.0003046635713 0.00050009999) +(0.2878787879 0.0005705243934 0.00050009999) +(0.2878787879 0.001024837958 0.00050009999) +(0.2878787879 0.001758019915 0.00050009999) +(0.2878787879 0.002838575912 0.00050009999) +(0.2878787879 0.004235474916 0.00050009999) +(0.2878787879 0.005764525084 0.00050009999) +(0.2878787879 0.007161424088 0.00050009999) +(0.2878787879 0.008241980085 0.00050009999) +(0.2878787879 0.008975162042 0.00050009999) +(0.2878787879 0.009429475607 0.00050009999) +(0.2878787879 0.009695336429 0.00050009999) +(0.2878787879 0.00984573433 0.00050009999) +(0.2878787879 0.009929188095 0.00050009999) +(0.2878787879 0.009975 0.00050009999) +(0.2878787879 0.01 0.00050009999) +(0.2929292929 0 0.00050009999) +(0.2929292929 2.5e-05 0.00050009999) +(0.2929292929 7.08119053e-05 0.00050009999) +(0.2929292929 0.00015426567 0.00050009999) +(0.2929292929 0.0003046635713 0.00050009999) +(0.2929292929 0.0005705243934 0.00050009999) +(0.2929292929 0.001024837958 0.00050009999) +(0.2929292929 0.001758019915 0.00050009999) +(0.2929292929 0.002838575912 0.00050009999) +(0.2929292929 0.004235474916 0.00050009999) +(0.2929292929 0.005764525084 0.00050009999) +(0.2929292929 0.007161424088 0.00050009999) +(0.2929292929 0.008241980085 0.00050009999) +(0.2929292929 0.008975162042 0.00050009999) +(0.2929292929 0.009429475607 0.00050009999) +(0.2929292929 0.009695336429 0.00050009999) +(0.2929292929 0.00984573433 0.00050009999) +(0.2929292929 0.009929188095 0.00050009999) +(0.2929292929 0.009975 0.00050009999) +(0.2929292929 0.01 0.00050009999) +(0.297979798 0 0.00050009999) +(0.297979798 2.5e-05 0.00050009999) +(0.297979798 7.08119053e-05 0.00050009999) +(0.297979798 0.00015426567 0.00050009999) +(0.297979798 0.0003046635713 0.00050009999) +(0.297979798 0.0005705243934 0.00050009999) +(0.297979798 0.001024837958 0.00050009999) +(0.297979798 0.001758019915 0.00050009999) +(0.297979798 0.002838575912 0.00050009999) +(0.297979798 0.004235474916 0.00050009999) +(0.297979798 0.005764525084 0.00050009999) +(0.297979798 0.007161424088 0.00050009999) +(0.297979798 0.008241980085 0.00050009999) +(0.297979798 0.008975162042 0.00050009999) +(0.297979798 0.009429475607 0.00050009999) +(0.297979798 0.009695336429 0.00050009999) +(0.297979798 0.00984573433 0.00050009999) +(0.297979798 0.009929188095 0.00050009999) +(0.297979798 0.009975 0.00050009999) +(0.297979798 0.01 0.00050009999) +(0.303030303 0 0.00050009999) +(0.303030303 2.5e-05 0.00050009999) +(0.303030303 7.08119053e-05 0.00050009999) +(0.303030303 0.00015426567 0.00050009999) +(0.303030303 0.0003046635713 0.00050009999) +(0.303030303 0.0005705243934 0.00050009999) +(0.303030303 0.001024837958 0.00050009999) +(0.303030303 0.001758019915 0.00050009999) +(0.303030303 0.002838575912 0.00050009999) +(0.303030303 0.004235474916 0.00050009999) +(0.303030303 0.005764525084 0.00050009999) +(0.303030303 0.007161424088 0.00050009999) +(0.303030303 0.008241980085 0.00050009999) +(0.303030303 0.008975162042 0.00050009999) +(0.303030303 0.009429475607 0.00050009999) +(0.303030303 0.009695336429 0.00050009999) +(0.303030303 0.00984573433 0.00050009999) +(0.303030303 0.009929188095 0.00050009999) +(0.303030303 0.009975 0.00050009999) +(0.303030303 0.01 0.00050009999) +(0.3080808081 0 0.00050009999) +(0.3080808081 2.5e-05 0.00050009999) +(0.3080808081 7.08119053e-05 0.00050009999) +(0.3080808081 0.00015426567 0.00050009999) +(0.3080808081 0.0003046635713 0.00050009999) +(0.3080808081 0.0005705243934 0.00050009999) +(0.3080808081 0.001024837958 0.00050009999) +(0.3080808081 0.001758019915 0.00050009999) +(0.3080808081 0.002838575912 0.00050009999) +(0.3080808081 0.004235474916 0.00050009999) +(0.3080808081 0.005764525084 0.00050009999) +(0.3080808081 0.007161424088 0.00050009999) +(0.3080808081 0.008241980085 0.00050009999) +(0.3080808081 0.008975162042 0.00050009999) +(0.3080808081 0.009429475607 0.00050009999) +(0.3080808081 0.009695336429 0.00050009999) +(0.3080808081 0.00984573433 0.00050009999) +(0.3080808081 0.009929188095 0.00050009999) +(0.3080808081 0.009975 0.00050009999) +(0.3080808081 0.01 0.00050009999) +(0.3131313131 0 0.00050009999) +(0.3131313131 2.5e-05 0.00050009999) +(0.3131313131 7.08119053e-05 0.00050009999) +(0.3131313131 0.00015426567 0.00050009999) +(0.3131313131 0.0003046635713 0.00050009999) +(0.3131313131 0.0005705243934 0.00050009999) +(0.3131313131 0.001024837958 0.00050009999) +(0.3131313131 0.001758019915 0.00050009999) +(0.3131313131 0.002838575912 0.00050009999) +(0.3131313131 0.004235474916 0.00050009999) +(0.3131313131 0.005764525084 0.00050009999) +(0.3131313131 0.007161424088 0.00050009999) +(0.3131313131 0.008241980085 0.00050009999) +(0.3131313131 0.008975162042 0.00050009999) +(0.3131313131 0.009429475607 0.00050009999) +(0.3131313131 0.009695336429 0.00050009999) +(0.3131313131 0.00984573433 0.00050009999) +(0.3131313131 0.009929188095 0.00050009999) +(0.3131313131 0.009975 0.00050009999) +(0.3131313131 0.01 0.00050009999) +(0.3181818182 0 0.00050009999) +(0.3181818182 2.5e-05 0.00050009999) +(0.3181818182 7.08119053e-05 0.00050009999) +(0.3181818182 0.00015426567 0.00050009999) +(0.3181818182 0.0003046635713 0.00050009999) +(0.3181818182 0.0005705243934 0.00050009999) +(0.3181818182 0.001024837958 0.00050009999) +(0.3181818182 0.001758019915 0.00050009999) +(0.3181818182 0.002838575912 0.00050009999) +(0.3181818182 0.004235474916 0.00050009999) +(0.3181818182 0.005764525084 0.00050009999) +(0.3181818182 0.007161424088 0.00050009999) +(0.3181818182 0.008241980085 0.00050009999) +(0.3181818182 0.008975162042 0.00050009999) +(0.3181818182 0.009429475607 0.00050009999) +(0.3181818182 0.009695336429 0.00050009999) +(0.3181818182 0.00984573433 0.00050009999) +(0.3181818182 0.009929188095 0.00050009999) +(0.3181818182 0.009975 0.00050009999) +(0.3181818182 0.01 0.00050009999) +(0.3232323232 0 0.00050009999) +(0.3232323232 2.5e-05 0.00050009999) +(0.3232323232 7.08119053e-05 0.00050009999) +(0.3232323232 0.00015426567 0.00050009999) +(0.3232323232 0.0003046635713 0.00050009999) +(0.3232323232 0.0005705243934 0.00050009999) +(0.3232323232 0.001024837958 0.00050009999) +(0.3232323232 0.001758019915 0.00050009999) +(0.3232323232 0.002838575912 0.00050009999) +(0.3232323232 0.004235474916 0.00050009999) +(0.3232323232 0.005764525084 0.00050009999) +(0.3232323232 0.007161424088 0.00050009999) +(0.3232323232 0.008241980085 0.00050009999) +(0.3232323232 0.008975162042 0.00050009999) +(0.3232323232 0.009429475607 0.00050009999) +(0.3232323232 0.009695336429 0.00050009999) +(0.3232323232 0.00984573433 0.00050009999) +(0.3232323232 0.009929188095 0.00050009999) +(0.3232323232 0.009975 0.00050009999) +(0.3232323232 0.01 0.00050009999) +(0.3282828283 0 0.00050009999) +(0.3282828283 2.5e-05 0.00050009999) +(0.3282828283 7.08119053e-05 0.00050009999) +(0.3282828283 0.00015426567 0.00050009999) +(0.3282828283 0.0003046635713 0.00050009999) +(0.3282828283 0.0005705243934 0.00050009999) +(0.3282828283 0.001024837958 0.00050009999) +(0.3282828283 0.001758019915 0.00050009999) +(0.3282828283 0.002838575912 0.00050009999) +(0.3282828283 0.004235474916 0.00050009999) +(0.3282828283 0.005764525084 0.00050009999) +(0.3282828283 0.007161424088 0.00050009999) +(0.3282828283 0.008241980085 0.00050009999) +(0.3282828283 0.008975162042 0.00050009999) +(0.3282828283 0.009429475607 0.00050009999) +(0.3282828283 0.009695336429 0.00050009999) +(0.3282828283 0.00984573433 0.00050009999) +(0.3282828283 0.009929188095 0.00050009999) +(0.3282828283 0.009975 0.00050009999) +(0.3282828283 0.01 0.00050009999) +(0.3333333333 0 0.00050009999) +(0.3333333333 2.5e-05 0.00050009999) +(0.3333333333 7.08119053e-05 0.00050009999) +(0.3333333333 0.00015426567 0.00050009999) +(0.3333333333 0.0003046635713 0.00050009999) +(0.3333333333 0.0005705243934 0.00050009999) +(0.3333333333 0.001024837958 0.00050009999) +(0.3333333333 0.001758019915 0.00050009999) +(0.3333333333 0.002838575912 0.00050009999) +(0.3333333333 0.004235474916 0.00050009999) +(0.3333333333 0.005764525084 0.00050009999) +(0.3333333333 0.007161424088 0.00050009999) +(0.3333333333 0.008241980085 0.00050009999) +(0.3333333333 0.008975162042 0.00050009999) +(0.3333333333 0.009429475607 0.00050009999) +(0.3333333333 0.009695336429 0.00050009999) +(0.3333333333 0.00984573433 0.00050009999) +(0.3333333333 0.009929188095 0.00050009999) +(0.3333333333 0.009975 0.00050009999) +(0.3333333333 0.01 0.00050009999) +(0.3383838384 0 0.00050009999) +(0.3383838384 2.5e-05 0.00050009999) +(0.3383838384 7.08119053e-05 0.00050009999) +(0.3383838384 0.00015426567 0.00050009999) +(0.3383838384 0.0003046635713 0.00050009999) +(0.3383838384 0.0005705243934 0.00050009999) +(0.3383838384 0.001024837958 0.00050009999) +(0.3383838384 0.001758019915 0.00050009999) +(0.3383838384 0.002838575912 0.00050009999) +(0.3383838384 0.004235474916 0.00050009999) +(0.3383838384 0.005764525084 0.00050009999) +(0.3383838384 0.007161424088 0.00050009999) +(0.3383838384 0.008241980085 0.00050009999) +(0.3383838384 0.008975162042 0.00050009999) +(0.3383838384 0.009429475607 0.00050009999) +(0.3383838384 0.009695336429 0.00050009999) +(0.3383838384 0.00984573433 0.00050009999) +(0.3383838384 0.009929188095 0.00050009999) +(0.3383838384 0.009975 0.00050009999) +(0.3383838384 0.01 0.00050009999) +(0.3434343434 0 0.00050009999) +(0.3434343434 2.5e-05 0.00050009999) +(0.3434343434 7.08119053e-05 0.00050009999) +(0.3434343434 0.00015426567 0.00050009999) +(0.3434343434 0.0003046635713 0.00050009999) +(0.3434343434 0.0005705243934 0.00050009999) +(0.3434343434 0.001024837958 0.00050009999) +(0.3434343434 0.001758019915 0.00050009999) +(0.3434343434 0.002838575912 0.00050009999) +(0.3434343434 0.004235474916 0.00050009999) +(0.3434343434 0.005764525084 0.00050009999) +(0.3434343434 0.007161424088 0.00050009999) +(0.3434343434 0.008241980085 0.00050009999) +(0.3434343434 0.008975162042 0.00050009999) +(0.3434343434 0.009429475607 0.00050009999) +(0.3434343434 0.009695336429 0.00050009999) +(0.3434343434 0.00984573433 0.00050009999) +(0.3434343434 0.009929188095 0.00050009999) +(0.3434343434 0.009975 0.00050009999) +(0.3434343434 0.01 0.00050009999) +(0.3484848485 0 0.00050009999) +(0.3484848485 2.5e-05 0.00050009999) +(0.3484848485 7.08119053e-05 0.00050009999) +(0.3484848485 0.00015426567 0.00050009999) +(0.3484848485 0.0003046635713 0.00050009999) +(0.3484848485 0.0005705243934 0.00050009999) +(0.3484848485 0.001024837958 0.00050009999) +(0.3484848485 0.001758019915 0.00050009999) +(0.3484848485 0.002838575912 0.00050009999) +(0.3484848485 0.004235474916 0.00050009999) +(0.3484848485 0.005764525084 0.00050009999) +(0.3484848485 0.007161424088 0.00050009999) +(0.3484848485 0.008241980085 0.00050009999) +(0.3484848485 0.008975162042 0.00050009999) +(0.3484848485 0.009429475607 0.00050009999) +(0.3484848485 0.009695336429 0.00050009999) +(0.3484848485 0.00984573433 0.00050009999) +(0.3484848485 0.009929188095 0.00050009999) +(0.3484848485 0.009975 0.00050009999) +(0.3484848485 0.01 0.00050009999) +(0.3535353535 0 0.00050009999) +(0.3535353535 2.5e-05 0.00050009999) +(0.3535353535 7.08119053e-05 0.00050009999) +(0.3535353535 0.00015426567 0.00050009999) +(0.3535353535 0.0003046635713 0.00050009999) +(0.3535353535 0.0005705243934 0.00050009999) +(0.3535353535 0.001024837958 0.00050009999) +(0.3535353535 0.001758019915 0.00050009999) +(0.3535353535 0.002838575912 0.00050009999) +(0.3535353535 0.004235474916 0.00050009999) +(0.3535353535 0.005764525084 0.00050009999) +(0.3535353535 0.007161424088 0.00050009999) +(0.3535353535 0.008241980085 0.00050009999) +(0.3535353535 0.008975162042 0.00050009999) +(0.3535353535 0.009429475607 0.00050009999) +(0.3535353535 0.009695336429 0.00050009999) +(0.3535353535 0.00984573433 0.00050009999) +(0.3535353535 0.009929188095 0.00050009999) +(0.3535353535 0.009975 0.00050009999) +(0.3535353535 0.01 0.00050009999) +(0.3585858586 0 0.00050009999) +(0.3585858586 2.5e-05 0.00050009999) +(0.3585858586 7.08119053e-05 0.00050009999) +(0.3585858586 0.00015426567 0.00050009999) +(0.3585858586 0.0003046635713 0.00050009999) +(0.3585858586 0.0005705243934 0.00050009999) +(0.3585858586 0.001024837958 0.00050009999) +(0.3585858586 0.001758019915 0.00050009999) +(0.3585858586 0.002838575912 0.00050009999) +(0.3585858586 0.004235474916 0.00050009999) +(0.3585858586 0.005764525084 0.00050009999) +(0.3585858586 0.007161424088 0.00050009999) +(0.3585858586 0.008241980085 0.00050009999) +(0.3585858586 0.008975162042 0.00050009999) +(0.3585858586 0.009429475607 0.00050009999) +(0.3585858586 0.009695336429 0.00050009999) +(0.3585858586 0.00984573433 0.00050009999) +(0.3585858586 0.009929188095 0.00050009999) +(0.3585858586 0.009975 0.00050009999) +(0.3585858586 0.01 0.00050009999) +(0.3636363636 0 0.00050009999) +(0.3636363636 2.5e-05 0.00050009999) +(0.3636363636 7.08119053e-05 0.00050009999) +(0.3636363636 0.00015426567 0.00050009999) +(0.3636363636 0.0003046635713 0.00050009999) +(0.3636363636 0.0005705243934 0.00050009999) +(0.3636363636 0.001024837958 0.00050009999) +(0.3636363636 0.001758019915 0.00050009999) +(0.3636363636 0.002838575912 0.00050009999) +(0.3636363636 0.004235474916 0.00050009999) +(0.3636363636 0.005764525084 0.00050009999) +(0.3636363636 0.007161424088 0.00050009999) +(0.3636363636 0.008241980085 0.00050009999) +(0.3636363636 0.008975162042 0.00050009999) +(0.3636363636 0.009429475607 0.00050009999) +(0.3636363636 0.009695336429 0.00050009999) +(0.3636363636 0.00984573433 0.00050009999) +(0.3636363636 0.009929188095 0.00050009999) +(0.3636363636 0.009975 0.00050009999) +(0.3636363636 0.01 0.00050009999) +(0.3686868687 0 0.00050009999) +(0.3686868687 2.5e-05 0.00050009999) +(0.3686868687 7.08119053e-05 0.00050009999) +(0.3686868687 0.00015426567 0.00050009999) +(0.3686868687 0.0003046635713 0.00050009999) +(0.3686868687 0.0005705243934 0.00050009999) +(0.3686868687 0.001024837958 0.00050009999) +(0.3686868687 0.001758019915 0.00050009999) +(0.3686868687 0.002838575912 0.00050009999) +(0.3686868687 0.004235474916 0.00050009999) +(0.3686868687 0.005764525084 0.00050009999) +(0.3686868687 0.007161424088 0.00050009999) +(0.3686868687 0.008241980085 0.00050009999) +(0.3686868687 0.008975162042 0.00050009999) +(0.3686868687 0.009429475607 0.00050009999) +(0.3686868687 0.009695336429 0.00050009999) +(0.3686868687 0.00984573433 0.00050009999) +(0.3686868687 0.009929188095 0.00050009999) +(0.3686868687 0.009975 0.00050009999) +(0.3686868687 0.01 0.00050009999) +(0.3737373737 0 0.00050009999) +(0.3737373737 2.5e-05 0.00050009999) +(0.3737373737 7.08119053e-05 0.00050009999) +(0.3737373737 0.00015426567 0.00050009999) +(0.3737373737 0.0003046635713 0.00050009999) +(0.3737373737 0.0005705243934 0.00050009999) +(0.3737373737 0.001024837958 0.00050009999) +(0.3737373737 0.001758019915 0.00050009999) +(0.3737373737 0.002838575912 0.00050009999) +(0.3737373737 0.004235474916 0.00050009999) +(0.3737373737 0.005764525084 0.00050009999) +(0.3737373737 0.007161424088 0.00050009999) +(0.3737373737 0.008241980085 0.00050009999) +(0.3737373737 0.008975162042 0.00050009999) +(0.3737373737 0.009429475607 0.00050009999) +(0.3737373737 0.009695336429 0.00050009999) +(0.3737373737 0.00984573433 0.00050009999) +(0.3737373737 0.009929188095 0.00050009999) +(0.3737373737 0.009975 0.00050009999) +(0.3737373737 0.01 0.00050009999) +(0.3787878788 0 0.00050009999) +(0.3787878788 2.5e-05 0.00050009999) +(0.3787878788 7.08119053e-05 0.00050009999) +(0.3787878788 0.00015426567 0.00050009999) +(0.3787878788 0.0003046635713 0.00050009999) +(0.3787878788 0.0005705243934 0.00050009999) +(0.3787878788 0.001024837958 0.00050009999) +(0.3787878788 0.001758019915 0.00050009999) +(0.3787878788 0.002838575912 0.00050009999) +(0.3787878788 0.004235474916 0.00050009999) +(0.3787878788 0.005764525084 0.00050009999) +(0.3787878788 0.007161424088 0.00050009999) +(0.3787878788 0.008241980085 0.00050009999) +(0.3787878788 0.008975162042 0.00050009999) +(0.3787878788 0.009429475607 0.00050009999) +(0.3787878788 0.009695336429 0.00050009999) +(0.3787878788 0.00984573433 0.00050009999) +(0.3787878788 0.009929188095 0.00050009999) +(0.3787878788 0.009975 0.00050009999) +(0.3787878788 0.01 0.00050009999) +(0.3838383838 0 0.00050009999) +(0.3838383838 2.5e-05 0.00050009999) +(0.3838383838 7.08119053e-05 0.00050009999) +(0.3838383838 0.00015426567 0.00050009999) +(0.3838383838 0.0003046635713 0.00050009999) +(0.3838383838 0.0005705243934 0.00050009999) +(0.3838383838 0.001024837958 0.00050009999) +(0.3838383838 0.001758019915 0.00050009999) +(0.3838383838 0.002838575912 0.00050009999) +(0.3838383838 0.004235474916 0.00050009999) +(0.3838383838 0.005764525084 0.00050009999) +(0.3838383838 0.007161424088 0.00050009999) +(0.3838383838 0.008241980085 0.00050009999) +(0.3838383838 0.008975162042 0.00050009999) +(0.3838383838 0.009429475607 0.00050009999) +(0.3838383838 0.009695336429 0.00050009999) +(0.3838383838 0.00984573433 0.00050009999) +(0.3838383838 0.009929188095 0.00050009999) +(0.3838383838 0.009975 0.00050009999) +(0.3838383838 0.01 0.00050009999) +(0.3888888889 0 0.00050009999) +(0.3888888889 2.5e-05 0.00050009999) +(0.3888888889 7.08119053e-05 0.00050009999) +(0.3888888889 0.00015426567 0.00050009999) +(0.3888888889 0.0003046635713 0.00050009999) +(0.3888888889 0.0005705243934 0.00050009999) +(0.3888888889 0.001024837958 0.00050009999) +(0.3888888889 0.001758019915 0.00050009999) +(0.3888888889 0.002838575912 0.00050009999) +(0.3888888889 0.004235474916 0.00050009999) +(0.3888888889 0.005764525084 0.00050009999) +(0.3888888889 0.007161424088 0.00050009999) +(0.3888888889 0.008241980085 0.00050009999) +(0.3888888889 0.008975162042 0.00050009999) +(0.3888888889 0.009429475607 0.00050009999) +(0.3888888889 0.009695336429 0.00050009999) +(0.3888888889 0.00984573433 0.00050009999) +(0.3888888889 0.009929188095 0.00050009999) +(0.3888888889 0.009975 0.00050009999) +(0.3888888889 0.01 0.00050009999) +(0.3939393939 0 0.00050009999) +(0.3939393939 2.5e-05 0.00050009999) +(0.3939393939 7.08119053e-05 0.00050009999) +(0.3939393939 0.00015426567 0.00050009999) +(0.3939393939 0.0003046635713 0.00050009999) +(0.3939393939 0.0005705243934 0.00050009999) +(0.3939393939 0.001024837958 0.00050009999) +(0.3939393939 0.001758019915 0.00050009999) +(0.3939393939 0.002838575912 0.00050009999) +(0.3939393939 0.004235474916 0.00050009999) +(0.3939393939 0.005764525084 0.00050009999) +(0.3939393939 0.007161424088 0.00050009999) +(0.3939393939 0.008241980085 0.00050009999) +(0.3939393939 0.008975162042 0.00050009999) +(0.3939393939 0.009429475607 0.00050009999) +(0.3939393939 0.009695336429 0.00050009999) +(0.3939393939 0.00984573433 0.00050009999) +(0.3939393939 0.009929188095 0.00050009999) +(0.3939393939 0.009975 0.00050009999) +(0.3939393939 0.01 0.00050009999) +(0.398989899 0 0.00050009999) +(0.398989899 2.5e-05 0.00050009999) +(0.398989899 7.08119053e-05 0.00050009999) +(0.398989899 0.00015426567 0.00050009999) +(0.398989899 0.0003046635713 0.00050009999) +(0.398989899 0.0005705243934 0.00050009999) +(0.398989899 0.001024837958 0.00050009999) +(0.398989899 0.001758019915 0.00050009999) +(0.398989899 0.002838575912 0.00050009999) +(0.398989899 0.004235474916 0.00050009999) +(0.398989899 0.005764525084 0.00050009999) +(0.398989899 0.007161424088 0.00050009999) +(0.398989899 0.008241980085 0.00050009999) +(0.398989899 0.008975162042 0.00050009999) +(0.398989899 0.009429475607 0.00050009999) +(0.398989899 0.009695336429 0.00050009999) +(0.398989899 0.00984573433 0.00050009999) +(0.398989899 0.009929188095 0.00050009999) +(0.398989899 0.009975 0.00050009999) +(0.398989899 0.01 0.00050009999) +(0.404040404 0 0.00050009999) +(0.404040404 2.5e-05 0.00050009999) +(0.404040404 7.08119053e-05 0.00050009999) +(0.404040404 0.00015426567 0.00050009999) +(0.404040404 0.0003046635713 0.00050009999) +(0.404040404 0.0005705243934 0.00050009999) +(0.404040404 0.001024837958 0.00050009999) +(0.404040404 0.001758019915 0.00050009999) +(0.404040404 0.002838575912 0.00050009999) +(0.404040404 0.004235474916 0.00050009999) +(0.404040404 0.005764525084 0.00050009999) +(0.404040404 0.007161424088 0.00050009999) +(0.404040404 0.008241980085 0.00050009999) +(0.404040404 0.008975162042 0.00050009999) +(0.404040404 0.009429475607 0.00050009999) +(0.404040404 0.009695336429 0.00050009999) +(0.404040404 0.00984573433 0.00050009999) +(0.404040404 0.009929188095 0.00050009999) +(0.404040404 0.009975 0.00050009999) +(0.404040404 0.01 0.00050009999) +(0.4090909091 0 0.00050009999) +(0.4090909091 2.5e-05 0.00050009999) +(0.4090909091 7.08119053e-05 0.00050009999) +(0.4090909091 0.00015426567 0.00050009999) +(0.4090909091 0.0003046635713 0.00050009999) +(0.4090909091 0.0005705243934 0.00050009999) +(0.4090909091 0.001024837958 0.00050009999) +(0.4090909091 0.001758019915 0.00050009999) +(0.4090909091 0.002838575912 0.00050009999) +(0.4090909091 0.004235474916 0.00050009999) +(0.4090909091 0.005764525084 0.00050009999) +(0.4090909091 0.007161424088 0.00050009999) +(0.4090909091 0.008241980085 0.00050009999) +(0.4090909091 0.008975162042 0.00050009999) +(0.4090909091 0.009429475607 0.00050009999) +(0.4090909091 0.009695336429 0.00050009999) +(0.4090909091 0.00984573433 0.00050009999) +(0.4090909091 0.009929188095 0.00050009999) +(0.4090909091 0.009975 0.00050009999) +(0.4090909091 0.01 0.00050009999) +(0.4141414141 0 0.00050009999) +(0.4141414141 2.5e-05 0.00050009999) +(0.4141414141 7.08119053e-05 0.00050009999) +(0.4141414141 0.00015426567 0.00050009999) +(0.4141414141 0.0003046635713 0.00050009999) +(0.4141414141 0.0005705243934 0.00050009999) +(0.4141414141 0.001024837958 0.00050009999) +(0.4141414141 0.001758019915 0.00050009999) +(0.4141414141 0.002838575912 0.00050009999) +(0.4141414141 0.004235474916 0.00050009999) +(0.4141414141 0.005764525084 0.00050009999) +(0.4141414141 0.007161424088 0.00050009999) +(0.4141414141 0.008241980085 0.00050009999) +(0.4141414141 0.008975162042 0.00050009999) +(0.4141414141 0.009429475607 0.00050009999) +(0.4141414141 0.009695336429 0.00050009999) +(0.4141414141 0.00984573433 0.00050009999) +(0.4141414141 0.009929188095 0.00050009999) +(0.4141414141 0.009975 0.00050009999) +(0.4141414141 0.01 0.00050009999) +(0.4191919192 0 0.00050009999) +(0.4191919192 2.5e-05 0.00050009999) +(0.4191919192 7.08119053e-05 0.00050009999) +(0.4191919192 0.00015426567 0.00050009999) +(0.4191919192 0.0003046635713 0.00050009999) +(0.4191919192 0.0005705243934 0.00050009999) +(0.4191919192 0.001024837958 0.00050009999) +(0.4191919192 0.001758019915 0.00050009999) +(0.4191919192 0.002838575912 0.00050009999) +(0.4191919192 0.004235474916 0.00050009999) +(0.4191919192 0.005764525084 0.00050009999) +(0.4191919192 0.007161424088 0.00050009999) +(0.4191919192 0.008241980085 0.00050009999) +(0.4191919192 0.008975162042 0.00050009999) +(0.4191919192 0.009429475607 0.00050009999) +(0.4191919192 0.009695336429 0.00050009999) +(0.4191919192 0.00984573433 0.00050009999) +(0.4191919192 0.009929188095 0.00050009999) +(0.4191919192 0.009975 0.00050009999) +(0.4191919192 0.01 0.00050009999) +(0.4242424242 0 0.00050009999) +(0.4242424242 2.5e-05 0.00050009999) +(0.4242424242 7.08119053e-05 0.00050009999) +(0.4242424242 0.00015426567 0.00050009999) +(0.4242424242 0.0003046635713 0.00050009999) +(0.4242424242 0.0005705243934 0.00050009999) +(0.4242424242 0.001024837958 0.00050009999) +(0.4242424242 0.001758019915 0.00050009999) +(0.4242424242 0.002838575912 0.00050009999) +(0.4242424242 0.004235474916 0.00050009999) +(0.4242424242 0.005764525084 0.00050009999) +(0.4242424242 0.007161424088 0.00050009999) +(0.4242424242 0.008241980085 0.00050009999) +(0.4242424242 0.008975162042 0.00050009999) +(0.4242424242 0.009429475607 0.00050009999) +(0.4242424242 0.009695336429 0.00050009999) +(0.4242424242 0.00984573433 0.00050009999) +(0.4242424242 0.009929188095 0.00050009999) +(0.4242424242 0.009975 0.00050009999) +(0.4242424242 0.01 0.00050009999) +(0.4292929293 0 0.00050009999) +(0.4292929293 2.5e-05 0.00050009999) +(0.4292929293 7.08119053e-05 0.00050009999) +(0.4292929293 0.00015426567 0.00050009999) +(0.4292929293 0.0003046635713 0.00050009999) +(0.4292929293 0.0005705243934 0.00050009999) +(0.4292929293 0.001024837958 0.00050009999) +(0.4292929293 0.001758019915 0.00050009999) +(0.4292929293 0.002838575912 0.00050009999) +(0.4292929293 0.004235474916 0.00050009999) +(0.4292929293 0.005764525084 0.00050009999) +(0.4292929293 0.007161424088 0.00050009999) +(0.4292929293 0.008241980085 0.00050009999) +(0.4292929293 0.008975162042 0.00050009999) +(0.4292929293 0.009429475607 0.00050009999) +(0.4292929293 0.009695336429 0.00050009999) +(0.4292929293 0.00984573433 0.00050009999) +(0.4292929293 0.009929188095 0.00050009999) +(0.4292929293 0.009975 0.00050009999) +(0.4292929293 0.01 0.00050009999) +(0.4343434343 0 0.00050009999) +(0.4343434343 2.5e-05 0.00050009999) +(0.4343434343 7.08119053e-05 0.00050009999) +(0.4343434343 0.00015426567 0.00050009999) +(0.4343434343 0.0003046635713 0.00050009999) +(0.4343434343 0.0005705243934 0.00050009999) +(0.4343434343 0.001024837958 0.00050009999) +(0.4343434343 0.001758019915 0.00050009999) +(0.4343434343 0.002838575912 0.00050009999) +(0.4343434343 0.004235474916 0.00050009999) +(0.4343434343 0.005764525084 0.00050009999) +(0.4343434343 0.007161424088 0.00050009999) +(0.4343434343 0.008241980085 0.00050009999) +(0.4343434343 0.008975162042 0.00050009999) +(0.4343434343 0.009429475607 0.00050009999) +(0.4343434343 0.009695336429 0.00050009999) +(0.4343434343 0.00984573433 0.00050009999) +(0.4343434343 0.009929188095 0.00050009999) +(0.4343434343 0.009975 0.00050009999) +(0.4343434343 0.01 0.00050009999) +(0.4393939394 0 0.00050009999) +(0.4393939394 2.5e-05 0.00050009999) +(0.4393939394 7.08119053e-05 0.00050009999) +(0.4393939394 0.00015426567 0.00050009999) +(0.4393939394 0.0003046635713 0.00050009999) +(0.4393939394 0.0005705243934 0.00050009999) +(0.4393939394 0.001024837958 0.00050009999) +(0.4393939394 0.001758019915 0.00050009999) +(0.4393939394 0.002838575912 0.00050009999) +(0.4393939394 0.004235474916 0.00050009999) +(0.4393939394 0.005764525084 0.00050009999) +(0.4393939394 0.007161424088 0.00050009999) +(0.4393939394 0.008241980085 0.00050009999) +(0.4393939394 0.008975162042 0.00050009999) +(0.4393939394 0.009429475607 0.00050009999) +(0.4393939394 0.009695336429 0.00050009999) +(0.4393939394 0.00984573433 0.00050009999) +(0.4393939394 0.009929188095 0.00050009999) +(0.4393939394 0.009975 0.00050009999) +(0.4393939394 0.01 0.00050009999) +(0.4444444444 0 0.00050009999) +(0.4444444444 2.5e-05 0.00050009999) +(0.4444444444 7.08119053e-05 0.00050009999) +(0.4444444444 0.00015426567 0.00050009999) +(0.4444444444 0.0003046635713 0.00050009999) +(0.4444444444 0.0005705243934 0.00050009999) +(0.4444444444 0.001024837958 0.00050009999) +(0.4444444444 0.001758019915 0.00050009999) +(0.4444444444 0.002838575912 0.00050009999) +(0.4444444444 0.004235474916 0.00050009999) +(0.4444444444 0.005764525084 0.00050009999) +(0.4444444444 0.007161424088 0.00050009999) +(0.4444444444 0.008241980085 0.00050009999) +(0.4444444444 0.008975162042 0.00050009999) +(0.4444444444 0.009429475607 0.00050009999) +(0.4444444444 0.009695336429 0.00050009999) +(0.4444444444 0.00984573433 0.00050009999) +(0.4444444444 0.009929188095 0.00050009999) +(0.4444444444 0.009975 0.00050009999) +(0.4444444444 0.01 0.00050009999) +(0.4494949495 0 0.00050009999) +(0.4494949495 2.5e-05 0.00050009999) +(0.4494949495 7.08119053e-05 0.00050009999) +(0.4494949495 0.00015426567 0.00050009999) +(0.4494949495 0.0003046635713 0.00050009999) +(0.4494949495 0.0005705243934 0.00050009999) +(0.4494949495 0.001024837958 0.00050009999) +(0.4494949495 0.001758019915 0.00050009999) +(0.4494949495 0.002838575912 0.00050009999) +(0.4494949495 0.004235474916 0.00050009999) +(0.4494949495 0.005764525084 0.00050009999) +(0.4494949495 0.007161424088 0.00050009999) +(0.4494949495 0.008241980085 0.00050009999) +(0.4494949495 0.008975162042 0.00050009999) +(0.4494949495 0.009429475607 0.00050009999) +(0.4494949495 0.009695336429 0.00050009999) +(0.4494949495 0.00984573433 0.00050009999) +(0.4494949495 0.009929188095 0.00050009999) +(0.4494949495 0.009975 0.00050009999) +(0.4494949495 0.01 0.00050009999) +(0.4545454545 0 0.00050009999) +(0.4545454545 2.5e-05 0.00050009999) +(0.4545454545 7.08119053e-05 0.00050009999) +(0.4545454545 0.00015426567 0.00050009999) +(0.4545454545 0.0003046635713 0.00050009999) +(0.4545454545 0.0005705243934 0.00050009999) +(0.4545454545 0.001024837958 0.00050009999) +(0.4545454545 0.001758019915 0.00050009999) +(0.4545454545 0.002838575912 0.00050009999) +(0.4545454545 0.004235474916 0.00050009999) +(0.4545454545 0.005764525084 0.00050009999) +(0.4545454545 0.007161424088 0.00050009999) +(0.4545454545 0.008241980085 0.00050009999) +(0.4545454545 0.008975162042 0.00050009999) +(0.4545454545 0.009429475607 0.00050009999) +(0.4545454545 0.009695336429 0.00050009999) +(0.4545454545 0.00984573433 0.00050009999) +(0.4545454545 0.009929188095 0.00050009999) +(0.4545454545 0.009975 0.00050009999) +(0.4545454545 0.01 0.00050009999) +(0.4595959596 0 0.00050009999) +(0.4595959596 2.5e-05 0.00050009999) +(0.4595959596 7.08119053e-05 0.00050009999) +(0.4595959596 0.00015426567 0.00050009999) +(0.4595959596 0.0003046635713 0.00050009999) +(0.4595959596 0.0005705243934 0.00050009999) +(0.4595959596 0.001024837958 0.00050009999) +(0.4595959596 0.001758019915 0.00050009999) +(0.4595959596 0.002838575912 0.00050009999) +(0.4595959596 0.004235474916 0.00050009999) +(0.4595959596 0.005764525084 0.00050009999) +(0.4595959596 0.007161424088 0.00050009999) +(0.4595959596 0.008241980085 0.00050009999) +(0.4595959596 0.008975162042 0.00050009999) +(0.4595959596 0.009429475607 0.00050009999) +(0.4595959596 0.009695336429 0.00050009999) +(0.4595959596 0.00984573433 0.00050009999) +(0.4595959596 0.009929188095 0.00050009999) +(0.4595959596 0.009975 0.00050009999) +(0.4595959596 0.01 0.00050009999) +(0.4646464646 0 0.00050009999) +(0.4646464646 2.5e-05 0.00050009999) +(0.4646464646 7.08119053e-05 0.00050009999) +(0.4646464646 0.00015426567 0.00050009999) +(0.4646464646 0.0003046635713 0.00050009999) +(0.4646464646 0.0005705243934 0.00050009999) +(0.4646464646 0.001024837958 0.00050009999) +(0.4646464646 0.001758019915 0.00050009999) +(0.4646464646 0.002838575912 0.00050009999) +(0.4646464646 0.004235474916 0.00050009999) +(0.4646464646 0.005764525084 0.00050009999) +(0.4646464646 0.007161424088 0.00050009999) +(0.4646464646 0.008241980085 0.00050009999) +(0.4646464646 0.008975162042 0.00050009999) +(0.4646464646 0.009429475607 0.00050009999) +(0.4646464646 0.009695336429 0.00050009999) +(0.4646464646 0.00984573433 0.00050009999) +(0.4646464646 0.009929188095 0.00050009999) +(0.4646464646 0.009975 0.00050009999) +(0.4646464646 0.01 0.00050009999) +(0.4696969697 0 0.00050009999) +(0.4696969697 2.5e-05 0.00050009999) +(0.4696969697 7.08119053e-05 0.00050009999) +(0.4696969697 0.00015426567 0.00050009999) +(0.4696969697 0.0003046635713 0.00050009999) +(0.4696969697 0.0005705243934 0.00050009999) +(0.4696969697 0.001024837958 0.00050009999) +(0.4696969697 0.001758019915 0.00050009999) +(0.4696969697 0.002838575912 0.00050009999) +(0.4696969697 0.004235474916 0.00050009999) +(0.4696969697 0.005764525084 0.00050009999) +(0.4696969697 0.007161424088 0.00050009999) +(0.4696969697 0.008241980085 0.00050009999) +(0.4696969697 0.008975162042 0.00050009999) +(0.4696969697 0.009429475607 0.00050009999) +(0.4696969697 0.009695336429 0.00050009999) +(0.4696969697 0.00984573433 0.00050009999) +(0.4696969697 0.009929188095 0.00050009999) +(0.4696969697 0.009975 0.00050009999) +(0.4696969697 0.01 0.00050009999) +(0.4747474747 0 0.00050009999) +(0.4747474747 2.5e-05 0.00050009999) +(0.4747474747 7.08119053e-05 0.00050009999) +(0.4747474747 0.00015426567 0.00050009999) +(0.4747474747 0.0003046635713 0.00050009999) +(0.4747474747 0.0005705243934 0.00050009999) +(0.4747474747 0.001024837958 0.00050009999) +(0.4747474747 0.001758019915 0.00050009999) +(0.4747474747 0.002838575912 0.00050009999) +(0.4747474747 0.004235474916 0.00050009999) +(0.4747474747 0.005764525084 0.00050009999) +(0.4747474747 0.007161424088 0.00050009999) +(0.4747474747 0.008241980085 0.00050009999) +(0.4747474747 0.008975162042 0.00050009999) +(0.4747474747 0.009429475607 0.00050009999) +(0.4747474747 0.009695336429 0.00050009999) +(0.4747474747 0.00984573433 0.00050009999) +(0.4747474747 0.009929188095 0.00050009999) +(0.4747474747 0.009975 0.00050009999) +(0.4747474747 0.01 0.00050009999) +(0.4797979798 0 0.00050009999) +(0.4797979798 2.5e-05 0.00050009999) +(0.4797979798 7.08119053e-05 0.00050009999) +(0.4797979798 0.00015426567 0.00050009999) +(0.4797979798 0.0003046635713 0.00050009999) +(0.4797979798 0.0005705243934 0.00050009999) +(0.4797979798 0.001024837958 0.00050009999) +(0.4797979798 0.001758019915 0.00050009999) +(0.4797979798 0.002838575912 0.00050009999) +(0.4797979798 0.004235474916 0.00050009999) +(0.4797979798 0.005764525084 0.00050009999) +(0.4797979798 0.007161424088 0.00050009999) +(0.4797979798 0.008241980085 0.00050009999) +(0.4797979798 0.008975162042 0.00050009999) +(0.4797979798 0.009429475607 0.00050009999) +(0.4797979798 0.009695336429 0.00050009999) +(0.4797979798 0.00984573433 0.00050009999) +(0.4797979798 0.009929188095 0.00050009999) +(0.4797979798 0.009975 0.00050009999) +(0.4797979798 0.01 0.00050009999) +(0.4848484848 0 0.00050009999) +(0.4848484848 2.5e-05 0.00050009999) +(0.4848484848 7.08119053e-05 0.00050009999) +(0.4848484848 0.00015426567 0.00050009999) +(0.4848484848 0.0003046635713 0.00050009999) +(0.4848484848 0.0005705243934 0.00050009999) +(0.4848484848 0.001024837958 0.00050009999) +(0.4848484848 0.001758019915 0.00050009999) +(0.4848484848 0.002838575912 0.00050009999) +(0.4848484848 0.004235474916 0.00050009999) +(0.4848484848 0.005764525084 0.00050009999) +(0.4848484848 0.007161424088 0.00050009999) +(0.4848484848 0.008241980085 0.00050009999) +(0.4848484848 0.008975162042 0.00050009999) +(0.4848484848 0.009429475607 0.00050009999) +(0.4848484848 0.009695336429 0.00050009999) +(0.4848484848 0.00984573433 0.00050009999) +(0.4848484848 0.009929188095 0.00050009999) +(0.4848484848 0.009975 0.00050009999) +(0.4848484848 0.01 0.00050009999) +(0.4898989899 0 0.00050009999) +(0.4898989899 2.5e-05 0.00050009999) +(0.4898989899 7.08119053e-05 0.00050009999) +(0.4898989899 0.00015426567 0.00050009999) +(0.4898989899 0.0003046635713 0.00050009999) +(0.4898989899 0.0005705243934 0.00050009999) +(0.4898989899 0.001024837958 0.00050009999) +(0.4898989899 0.001758019915 0.00050009999) +(0.4898989899 0.002838575912 0.00050009999) +(0.4898989899 0.004235474916 0.00050009999) +(0.4898989899 0.005764525084 0.00050009999) +(0.4898989899 0.007161424088 0.00050009999) +(0.4898989899 0.008241980085 0.00050009999) +(0.4898989899 0.008975162042 0.00050009999) +(0.4898989899 0.009429475607 0.00050009999) +(0.4898989899 0.009695336429 0.00050009999) +(0.4898989899 0.00984573433 0.00050009999) +(0.4898989899 0.009929188095 0.00050009999) +(0.4898989899 0.009975 0.00050009999) +(0.4898989899 0.01 0.00050009999) +(0.4949494949 0 0.00050009999) +(0.4949494949 2.5e-05 0.00050009999) +(0.4949494949 7.08119053e-05 0.00050009999) +(0.4949494949 0.00015426567 0.00050009999) +(0.4949494949 0.0003046635713 0.00050009999) +(0.4949494949 0.0005705243934 0.00050009999) +(0.4949494949 0.001024837958 0.00050009999) +(0.4949494949 0.001758019915 0.00050009999) +(0.4949494949 0.002838575912 0.00050009999) +(0.4949494949 0.004235474916 0.00050009999) +(0.4949494949 0.005764525084 0.00050009999) +(0.4949494949 0.007161424088 0.00050009999) +(0.4949494949 0.008241980085 0.00050009999) +(0.4949494949 0.008975162042 0.00050009999) +(0.4949494949 0.009429475607 0.00050009999) +(0.4949494949 0.009695336429 0.00050009999) +(0.4949494949 0.00984573433 0.00050009999) +(0.4949494949 0.009929188095 0.00050009999) +(0.4949494949 0.009975 0.00050009999) +(0.4949494949 0.01 0.00050009999) +(0.5 0 0.00050009999) +(0.5 2.5e-05 0.00050009999) +(0.5 7.08119053e-05 0.00050009999) +(0.5 0.00015426567 0.00050009999) +(0.5 0.0003046635713 0.00050009999) +(0.5 0.0005705243934 0.00050009999) +(0.5 0.001024837958 0.00050009999) +(0.5 0.001758019915 0.00050009999) +(0.5 0.002838575912 0.00050009999) +(0.5 0.004235474916 0.00050009999) +(0.5 0.005764525084 0.00050009999) +(0.5 0.007161424088 0.00050009999) +(0.5 0.008241980085 0.00050009999) +(0.5 0.008975162042 0.00050009999) +(0.5 0.009429475607 0.00050009999) +(0.5 0.009695336429 0.00050009999) +(0.5 0.00984573433 0.00050009999) +(0.5 0.009929188095 0.00050009999) +(0.5 0.009975 0.00050009999) +(0.5 0.01 0.00050009999) +(0 0 -0.00050009999) +(0.005050505051 0 -0.00050009999) +(0 2.5e-05 -0.00050009999) +(0.005050505051 2.5e-05 -0.00050009999) +(0 7.08119053e-05 -0.00050009999) +(0.005050505051 7.08119053e-05 -0.00050009999) +(0 0.00015426567 -0.00050009999) +(0.005050505051 0.00015426567 -0.00050009999) +(0 0.0003046635713 -0.00050009999) +(0.005050505051 0.0003046635713 -0.00050009999) +(0 0.0005705243934 -0.00050009999) +(0.005050505051 0.0005705243934 -0.00050009999) +(0 0.001024837958 -0.00050009999) +(0.005050505051 0.001024837958 -0.00050009999) +(0 0.001758019915 -0.00050009999) +(0.005050505051 0.001758019915 -0.00050009999) +(0 0.002838575912 -0.00050009999) +(0.005050505051 0.002838575912 -0.00050009999) +(0 0.004235474916 -0.00050009999) +(0.005050505051 0.004235474916 -0.00050009999) +(0 0.005764525084 -0.00050009999) +(0.005050505051 0.005764525084 -0.00050009999) +(0 0.007161424088 -0.00050009999) +(0.005050505051 0.007161424088 -0.00050009999) +(0 0.008241980085 -0.00050009999) +(0.005050505051 0.008241980085 -0.00050009999) +(0 0.008975162042 -0.00050009999) +(0.005050505051 0.008975162042 -0.00050009999) +(0 0.009429475607 -0.00050009999) +(0.005050505051 0.009429475607 -0.00050009999) +(0 0.009695336429 -0.00050009999) +(0.005050505051 0.009695336429 -0.00050009999) +(0 0.00984573433 -0.00050009999) +(0.005050505051 0.00984573433 -0.00050009999) +(0 0.009929188095 -0.00050009999) +(0.005050505051 0.009929188095 -0.00050009999) +(0 0.009975 -0.00050009999) +(0.005050505051 0.009975 -0.00050009999) +(0 0.01 -0.00050009999) +(0.005050505051 0.01 -0.00050009999) +(0.0101010101 0 -0.00050009999) +(0.0101010101 2.5e-05 -0.00050009999) +(0.0101010101 7.08119053e-05 -0.00050009999) +(0.0101010101 0.00015426567 -0.00050009999) +(0.0101010101 0.0003046635713 -0.00050009999) +(0.0101010101 0.0005705243934 -0.00050009999) +(0.0101010101 0.001024837958 -0.00050009999) +(0.0101010101 0.001758019915 -0.00050009999) +(0.0101010101 0.002838575912 -0.00050009999) +(0.0101010101 0.004235474916 -0.00050009999) +(0.0101010101 0.005764525084 -0.00050009999) +(0.0101010101 0.007161424088 -0.00050009999) +(0.0101010101 0.008241980085 -0.00050009999) +(0.0101010101 0.008975162042 -0.00050009999) +(0.0101010101 0.009429475607 -0.00050009999) +(0.0101010101 0.009695336429 -0.00050009999) +(0.0101010101 0.00984573433 -0.00050009999) +(0.0101010101 0.009929188095 -0.00050009999) +(0.0101010101 0.009975 -0.00050009999) +(0.0101010101 0.01 -0.00050009999) +(0.01515151515 0 -0.00050009999) +(0.01515151515 2.5e-05 -0.00050009999) +(0.01515151515 7.08119053e-05 -0.00050009999) +(0.01515151515 0.00015426567 -0.00050009999) +(0.01515151515 0.0003046635713 -0.00050009999) +(0.01515151515 0.0005705243934 -0.00050009999) +(0.01515151515 0.001024837958 -0.00050009999) +(0.01515151515 0.001758019915 -0.00050009999) +(0.01515151515 0.002838575912 -0.00050009999) +(0.01515151515 0.004235474916 -0.00050009999) +(0.01515151515 0.005764525084 -0.00050009999) +(0.01515151515 0.007161424088 -0.00050009999) +(0.01515151515 0.008241980085 -0.00050009999) +(0.01515151515 0.008975162042 -0.00050009999) +(0.01515151515 0.009429475607 -0.00050009999) +(0.01515151515 0.009695336429 -0.00050009999) +(0.01515151515 0.00984573433 -0.00050009999) +(0.01515151515 0.009929188095 -0.00050009999) +(0.01515151515 0.009975 -0.00050009999) +(0.01515151515 0.01 -0.00050009999) +(0.0202020202 0 -0.00050009999) +(0.0202020202 2.5e-05 -0.00050009999) +(0.0202020202 7.08119053e-05 -0.00050009999) +(0.0202020202 0.00015426567 -0.00050009999) +(0.0202020202 0.0003046635713 -0.00050009999) +(0.0202020202 0.0005705243934 -0.00050009999) +(0.0202020202 0.001024837958 -0.00050009999) +(0.0202020202 0.001758019915 -0.00050009999) +(0.0202020202 0.002838575912 -0.00050009999) +(0.0202020202 0.004235474916 -0.00050009999) +(0.0202020202 0.005764525084 -0.00050009999) +(0.0202020202 0.007161424088 -0.00050009999) +(0.0202020202 0.008241980085 -0.00050009999) +(0.0202020202 0.008975162042 -0.00050009999) +(0.0202020202 0.009429475607 -0.00050009999) +(0.0202020202 0.009695336429 -0.00050009999) +(0.0202020202 0.00984573433 -0.00050009999) +(0.0202020202 0.009929188095 -0.00050009999) +(0.0202020202 0.009975 -0.00050009999) +(0.0202020202 0.01 -0.00050009999) +(0.02525252525 0 -0.00050009999) +(0.02525252525 2.5e-05 -0.00050009999) +(0.02525252525 7.08119053e-05 -0.00050009999) +(0.02525252525 0.00015426567 -0.00050009999) +(0.02525252525 0.0003046635713 -0.00050009999) +(0.02525252525 0.0005705243934 -0.00050009999) +(0.02525252525 0.001024837958 -0.00050009999) +(0.02525252525 0.001758019915 -0.00050009999) +(0.02525252525 0.002838575912 -0.00050009999) +(0.02525252525 0.004235474916 -0.00050009999) +(0.02525252525 0.005764525084 -0.00050009999) +(0.02525252525 0.007161424088 -0.00050009999) +(0.02525252525 0.008241980085 -0.00050009999) +(0.02525252525 0.008975162042 -0.00050009999) +(0.02525252525 0.009429475607 -0.00050009999) +(0.02525252525 0.009695336429 -0.00050009999) +(0.02525252525 0.00984573433 -0.00050009999) +(0.02525252525 0.009929188095 -0.00050009999) +(0.02525252525 0.009975 -0.00050009999) +(0.02525252525 0.01 -0.00050009999) +(0.0303030303 0 -0.00050009999) +(0.0303030303 2.5e-05 -0.00050009999) +(0.0303030303 7.08119053e-05 -0.00050009999) +(0.0303030303 0.00015426567 -0.00050009999) +(0.0303030303 0.0003046635713 -0.00050009999) +(0.0303030303 0.0005705243934 -0.00050009999) +(0.0303030303 0.001024837958 -0.00050009999) +(0.0303030303 0.001758019915 -0.00050009999) +(0.0303030303 0.002838575912 -0.00050009999) +(0.0303030303 0.004235474916 -0.00050009999) +(0.0303030303 0.005764525084 -0.00050009999) +(0.0303030303 0.007161424088 -0.00050009999) +(0.0303030303 0.008241980085 -0.00050009999) +(0.0303030303 0.008975162042 -0.00050009999) +(0.0303030303 0.009429475607 -0.00050009999) +(0.0303030303 0.009695336429 -0.00050009999) +(0.0303030303 0.00984573433 -0.00050009999) +(0.0303030303 0.009929188095 -0.00050009999) +(0.0303030303 0.009975 -0.00050009999) +(0.0303030303 0.01 -0.00050009999) +(0.03535353535 0 -0.00050009999) +(0.03535353535 2.5e-05 -0.00050009999) +(0.03535353535 7.08119053e-05 -0.00050009999) +(0.03535353535 0.00015426567 -0.00050009999) +(0.03535353535 0.0003046635713 -0.00050009999) +(0.03535353535 0.0005705243934 -0.00050009999) +(0.03535353535 0.001024837958 -0.00050009999) +(0.03535353535 0.001758019915 -0.00050009999) +(0.03535353535 0.002838575912 -0.00050009999) +(0.03535353535 0.004235474916 -0.00050009999) +(0.03535353535 0.005764525084 -0.00050009999) +(0.03535353535 0.007161424088 -0.00050009999) +(0.03535353535 0.008241980085 -0.00050009999) +(0.03535353535 0.008975162042 -0.00050009999) +(0.03535353535 0.009429475607 -0.00050009999) +(0.03535353535 0.009695336429 -0.00050009999) +(0.03535353535 0.00984573433 -0.00050009999) +(0.03535353535 0.009929188095 -0.00050009999) +(0.03535353535 0.009975 -0.00050009999) +(0.03535353535 0.01 -0.00050009999) +(0.0404040404 0 -0.00050009999) +(0.0404040404 2.5e-05 -0.00050009999) +(0.0404040404 7.08119053e-05 -0.00050009999) +(0.0404040404 0.00015426567 -0.00050009999) +(0.0404040404 0.0003046635713 -0.00050009999) +(0.0404040404 0.0005705243934 -0.00050009999) +(0.0404040404 0.001024837958 -0.00050009999) +(0.0404040404 0.001758019915 -0.00050009999) +(0.0404040404 0.002838575912 -0.00050009999) +(0.0404040404 0.004235474916 -0.00050009999) +(0.0404040404 0.005764525084 -0.00050009999) +(0.0404040404 0.007161424088 -0.00050009999) +(0.0404040404 0.008241980085 -0.00050009999) +(0.0404040404 0.008975162042 -0.00050009999) +(0.0404040404 0.009429475607 -0.00050009999) +(0.0404040404 0.009695336429 -0.00050009999) +(0.0404040404 0.00984573433 -0.00050009999) +(0.0404040404 0.009929188095 -0.00050009999) +(0.0404040404 0.009975 -0.00050009999) +(0.0404040404 0.01 -0.00050009999) +(0.04545454545 0 -0.00050009999) +(0.04545454545 2.5e-05 -0.00050009999) +(0.04545454545 7.08119053e-05 -0.00050009999) +(0.04545454545 0.00015426567 -0.00050009999) +(0.04545454545 0.0003046635713 -0.00050009999) +(0.04545454545 0.0005705243934 -0.00050009999) +(0.04545454545 0.001024837958 -0.00050009999) +(0.04545454545 0.001758019915 -0.00050009999) +(0.04545454545 0.002838575912 -0.00050009999) +(0.04545454545 0.004235474916 -0.00050009999) +(0.04545454545 0.005764525084 -0.00050009999) +(0.04545454545 0.007161424088 -0.00050009999) +(0.04545454545 0.008241980085 -0.00050009999) +(0.04545454545 0.008975162042 -0.00050009999) +(0.04545454545 0.009429475607 -0.00050009999) +(0.04545454545 0.009695336429 -0.00050009999) +(0.04545454545 0.00984573433 -0.00050009999) +(0.04545454545 0.009929188095 -0.00050009999) +(0.04545454545 0.009975 -0.00050009999) +(0.04545454545 0.01 -0.00050009999) +(0.05050505051 0 -0.00050009999) +(0.05050505051 2.5e-05 -0.00050009999) +(0.05050505051 7.08119053e-05 -0.00050009999) +(0.05050505051 0.00015426567 -0.00050009999) +(0.05050505051 0.0003046635713 -0.00050009999) +(0.05050505051 0.0005705243934 -0.00050009999) +(0.05050505051 0.001024837958 -0.00050009999) +(0.05050505051 0.001758019915 -0.00050009999) +(0.05050505051 0.002838575912 -0.00050009999) +(0.05050505051 0.004235474916 -0.00050009999) +(0.05050505051 0.005764525084 -0.00050009999) +(0.05050505051 0.007161424088 -0.00050009999) +(0.05050505051 0.008241980085 -0.00050009999) +(0.05050505051 0.008975162042 -0.00050009999) +(0.05050505051 0.009429475607 -0.00050009999) +(0.05050505051 0.009695336429 -0.00050009999) +(0.05050505051 0.00984573433 -0.00050009999) +(0.05050505051 0.009929188095 -0.00050009999) +(0.05050505051 0.009975 -0.00050009999) +(0.05050505051 0.01 -0.00050009999) +(0.05555555556 0 -0.00050009999) +(0.05555555556 2.5e-05 -0.00050009999) +(0.05555555556 7.08119053e-05 -0.00050009999) +(0.05555555556 0.00015426567 -0.00050009999) +(0.05555555556 0.0003046635713 -0.00050009999) +(0.05555555556 0.0005705243934 -0.00050009999) +(0.05555555556 0.001024837958 -0.00050009999) +(0.05555555556 0.001758019915 -0.00050009999) +(0.05555555556 0.002838575912 -0.00050009999) +(0.05555555556 0.004235474916 -0.00050009999) +(0.05555555556 0.005764525084 -0.00050009999) +(0.05555555556 0.007161424088 -0.00050009999) +(0.05555555556 0.008241980085 -0.00050009999) +(0.05555555556 0.008975162042 -0.00050009999) +(0.05555555556 0.009429475607 -0.00050009999) +(0.05555555556 0.009695336429 -0.00050009999) +(0.05555555556 0.00984573433 -0.00050009999) +(0.05555555556 0.009929188095 -0.00050009999) +(0.05555555556 0.009975 -0.00050009999) +(0.05555555556 0.01 -0.00050009999) +(0.06060606061 0 -0.00050009999) +(0.06060606061 2.5e-05 -0.00050009999) +(0.06060606061 7.08119053e-05 -0.00050009999) +(0.06060606061 0.00015426567 -0.00050009999) +(0.06060606061 0.0003046635713 -0.00050009999) +(0.06060606061 0.0005705243934 -0.00050009999) +(0.06060606061 0.001024837958 -0.00050009999) +(0.06060606061 0.001758019915 -0.00050009999) +(0.06060606061 0.002838575912 -0.00050009999) +(0.06060606061 0.004235474916 -0.00050009999) +(0.06060606061 0.005764525084 -0.00050009999) +(0.06060606061 0.007161424088 -0.00050009999) +(0.06060606061 0.008241980085 -0.00050009999) +(0.06060606061 0.008975162042 -0.00050009999) +(0.06060606061 0.009429475607 -0.00050009999) +(0.06060606061 0.009695336429 -0.00050009999) +(0.06060606061 0.00984573433 -0.00050009999) +(0.06060606061 0.009929188095 -0.00050009999) +(0.06060606061 0.009975 -0.00050009999) +(0.06060606061 0.01 -0.00050009999) +(0.06565656566 0 -0.00050009999) +(0.06565656566 2.5e-05 -0.00050009999) +(0.06565656566 7.08119053e-05 -0.00050009999) +(0.06565656566 0.00015426567 -0.00050009999) +(0.06565656566 0.0003046635713 -0.00050009999) +(0.06565656566 0.0005705243934 -0.00050009999) +(0.06565656566 0.001024837958 -0.00050009999) +(0.06565656566 0.001758019915 -0.00050009999) +(0.06565656566 0.002838575912 -0.00050009999) +(0.06565656566 0.004235474916 -0.00050009999) +(0.06565656566 0.005764525084 -0.00050009999) +(0.06565656566 0.007161424088 -0.00050009999) +(0.06565656566 0.008241980085 -0.00050009999) +(0.06565656566 0.008975162042 -0.00050009999) +(0.06565656566 0.009429475607 -0.00050009999) +(0.06565656566 0.009695336429 -0.00050009999) +(0.06565656566 0.00984573433 -0.00050009999) +(0.06565656566 0.009929188095 -0.00050009999) +(0.06565656566 0.009975 -0.00050009999) +(0.06565656566 0.01 -0.00050009999) +(0.07070707071 0 -0.00050009999) +(0.07070707071 2.5e-05 -0.00050009999) +(0.07070707071 7.08119053e-05 -0.00050009999) +(0.07070707071 0.00015426567 -0.00050009999) +(0.07070707071 0.0003046635713 -0.00050009999) +(0.07070707071 0.0005705243934 -0.00050009999) +(0.07070707071 0.001024837958 -0.00050009999) +(0.07070707071 0.001758019915 -0.00050009999) +(0.07070707071 0.002838575912 -0.00050009999) +(0.07070707071 0.004235474916 -0.00050009999) +(0.07070707071 0.005764525084 -0.00050009999) +(0.07070707071 0.007161424088 -0.00050009999) +(0.07070707071 0.008241980085 -0.00050009999) +(0.07070707071 0.008975162042 -0.00050009999) +(0.07070707071 0.009429475607 -0.00050009999) +(0.07070707071 0.009695336429 -0.00050009999) +(0.07070707071 0.00984573433 -0.00050009999) +(0.07070707071 0.009929188095 -0.00050009999) +(0.07070707071 0.009975 -0.00050009999) +(0.07070707071 0.01 -0.00050009999) +(0.07575757576 0 -0.00050009999) +(0.07575757576 2.5e-05 -0.00050009999) +(0.07575757576 7.08119053e-05 -0.00050009999) +(0.07575757576 0.00015426567 -0.00050009999) +(0.07575757576 0.0003046635713 -0.00050009999) +(0.07575757576 0.0005705243934 -0.00050009999) +(0.07575757576 0.001024837958 -0.00050009999) +(0.07575757576 0.001758019915 -0.00050009999) +(0.07575757576 0.002838575912 -0.00050009999) +(0.07575757576 0.004235474916 -0.00050009999) +(0.07575757576 0.005764525084 -0.00050009999) +(0.07575757576 0.007161424088 -0.00050009999) +(0.07575757576 0.008241980085 -0.00050009999) +(0.07575757576 0.008975162042 -0.00050009999) +(0.07575757576 0.009429475607 -0.00050009999) +(0.07575757576 0.009695336429 -0.00050009999) +(0.07575757576 0.00984573433 -0.00050009999) +(0.07575757576 0.009929188095 -0.00050009999) +(0.07575757576 0.009975 -0.00050009999) +(0.07575757576 0.01 -0.00050009999) +(0.08080808081 0 -0.00050009999) +(0.08080808081 2.5e-05 -0.00050009999) +(0.08080808081 7.08119053e-05 -0.00050009999) +(0.08080808081 0.00015426567 -0.00050009999) +(0.08080808081 0.0003046635713 -0.00050009999) +(0.08080808081 0.0005705243934 -0.00050009999) +(0.08080808081 0.001024837958 -0.00050009999) +(0.08080808081 0.001758019915 -0.00050009999) +(0.08080808081 0.002838575912 -0.00050009999) +(0.08080808081 0.004235474916 -0.00050009999) +(0.08080808081 0.005764525084 -0.00050009999) +(0.08080808081 0.007161424088 -0.00050009999) +(0.08080808081 0.008241980085 -0.00050009999) +(0.08080808081 0.008975162042 -0.00050009999) +(0.08080808081 0.009429475607 -0.00050009999) +(0.08080808081 0.009695336429 -0.00050009999) +(0.08080808081 0.00984573433 -0.00050009999) +(0.08080808081 0.009929188095 -0.00050009999) +(0.08080808081 0.009975 -0.00050009999) +(0.08080808081 0.01 -0.00050009999) +(0.08585858586 0 -0.00050009999) +(0.08585858586 2.5e-05 -0.00050009999) +(0.08585858586 7.08119053e-05 -0.00050009999) +(0.08585858586 0.00015426567 -0.00050009999) +(0.08585858586 0.0003046635713 -0.00050009999) +(0.08585858586 0.0005705243934 -0.00050009999) +(0.08585858586 0.001024837958 -0.00050009999) +(0.08585858586 0.001758019915 -0.00050009999) +(0.08585858586 0.002838575912 -0.00050009999) +(0.08585858586 0.004235474916 -0.00050009999) +(0.08585858586 0.005764525084 -0.00050009999) +(0.08585858586 0.007161424088 -0.00050009999) +(0.08585858586 0.008241980085 -0.00050009999) +(0.08585858586 0.008975162042 -0.00050009999) +(0.08585858586 0.009429475607 -0.00050009999) +(0.08585858586 0.009695336429 -0.00050009999) +(0.08585858586 0.00984573433 -0.00050009999) +(0.08585858586 0.009929188095 -0.00050009999) +(0.08585858586 0.009975 -0.00050009999) +(0.08585858586 0.01 -0.00050009999) +(0.09090909091 0 -0.00050009999) +(0.09090909091 2.5e-05 -0.00050009999) +(0.09090909091 7.08119053e-05 -0.00050009999) +(0.09090909091 0.00015426567 -0.00050009999) +(0.09090909091 0.0003046635713 -0.00050009999) +(0.09090909091 0.0005705243934 -0.00050009999) +(0.09090909091 0.001024837958 -0.00050009999) +(0.09090909091 0.001758019915 -0.00050009999) +(0.09090909091 0.002838575912 -0.00050009999) +(0.09090909091 0.004235474916 -0.00050009999) +(0.09090909091 0.005764525084 -0.00050009999) +(0.09090909091 0.007161424088 -0.00050009999) +(0.09090909091 0.008241980085 -0.00050009999) +(0.09090909091 0.008975162042 -0.00050009999) +(0.09090909091 0.009429475607 -0.00050009999) +(0.09090909091 0.009695336429 -0.00050009999) +(0.09090909091 0.00984573433 -0.00050009999) +(0.09090909091 0.009929188095 -0.00050009999) +(0.09090909091 0.009975 -0.00050009999) +(0.09090909091 0.01 -0.00050009999) +(0.09595959596 0 -0.00050009999) +(0.09595959596 2.5e-05 -0.00050009999) +(0.09595959596 7.08119053e-05 -0.00050009999) +(0.09595959596 0.00015426567 -0.00050009999) +(0.09595959596 0.0003046635713 -0.00050009999) +(0.09595959596 0.0005705243934 -0.00050009999) +(0.09595959596 0.001024837958 -0.00050009999) +(0.09595959596 0.001758019915 -0.00050009999) +(0.09595959596 0.002838575912 -0.00050009999) +(0.09595959596 0.004235474916 -0.00050009999) +(0.09595959596 0.005764525084 -0.00050009999) +(0.09595959596 0.007161424088 -0.00050009999) +(0.09595959596 0.008241980085 -0.00050009999) +(0.09595959596 0.008975162042 -0.00050009999) +(0.09595959596 0.009429475607 -0.00050009999) +(0.09595959596 0.009695336429 -0.00050009999) +(0.09595959596 0.00984573433 -0.00050009999) +(0.09595959596 0.009929188095 -0.00050009999) +(0.09595959596 0.009975 -0.00050009999) +(0.09595959596 0.01 -0.00050009999) +(0.101010101 0 -0.00050009999) +(0.101010101 2.5e-05 -0.00050009999) +(0.101010101 7.08119053e-05 -0.00050009999) +(0.101010101 0.00015426567 -0.00050009999) +(0.101010101 0.0003046635713 -0.00050009999) +(0.101010101 0.0005705243934 -0.00050009999) +(0.101010101 0.001024837958 -0.00050009999) +(0.101010101 0.001758019915 -0.00050009999) +(0.101010101 0.002838575912 -0.00050009999) +(0.101010101 0.004235474916 -0.00050009999) +(0.101010101 0.005764525084 -0.00050009999) +(0.101010101 0.007161424088 -0.00050009999) +(0.101010101 0.008241980085 -0.00050009999) +(0.101010101 0.008975162042 -0.00050009999) +(0.101010101 0.009429475607 -0.00050009999) +(0.101010101 0.009695336429 -0.00050009999) +(0.101010101 0.00984573433 -0.00050009999) +(0.101010101 0.009929188095 -0.00050009999) +(0.101010101 0.009975 -0.00050009999) +(0.101010101 0.01 -0.00050009999) +(0.1060606061 0 -0.00050009999) +(0.1060606061 2.5e-05 -0.00050009999) +(0.1060606061 7.08119053e-05 -0.00050009999) +(0.1060606061 0.00015426567 -0.00050009999) +(0.1060606061 0.0003046635713 -0.00050009999) +(0.1060606061 0.0005705243934 -0.00050009999) +(0.1060606061 0.001024837958 -0.00050009999) +(0.1060606061 0.001758019915 -0.00050009999) +(0.1060606061 0.002838575912 -0.00050009999) +(0.1060606061 0.004235474916 -0.00050009999) +(0.1060606061 0.005764525084 -0.00050009999) +(0.1060606061 0.007161424088 -0.00050009999) +(0.1060606061 0.008241980085 -0.00050009999) +(0.1060606061 0.008975162042 -0.00050009999) +(0.1060606061 0.009429475607 -0.00050009999) +(0.1060606061 0.009695336429 -0.00050009999) +(0.1060606061 0.00984573433 -0.00050009999) +(0.1060606061 0.009929188095 -0.00050009999) +(0.1060606061 0.009975 -0.00050009999) +(0.1060606061 0.01 -0.00050009999) +(0.1111111111 0 -0.00050009999) +(0.1111111111 2.5e-05 -0.00050009999) +(0.1111111111 7.08119053e-05 -0.00050009999) +(0.1111111111 0.00015426567 -0.00050009999) +(0.1111111111 0.0003046635713 -0.00050009999) +(0.1111111111 0.0005705243934 -0.00050009999) +(0.1111111111 0.001024837958 -0.00050009999) +(0.1111111111 0.001758019915 -0.00050009999) +(0.1111111111 0.002838575912 -0.00050009999) +(0.1111111111 0.004235474916 -0.00050009999) +(0.1111111111 0.005764525084 -0.00050009999) +(0.1111111111 0.007161424088 -0.00050009999) +(0.1111111111 0.008241980085 -0.00050009999) +(0.1111111111 0.008975162042 -0.00050009999) +(0.1111111111 0.009429475607 -0.00050009999) +(0.1111111111 0.009695336429 -0.00050009999) +(0.1111111111 0.00984573433 -0.00050009999) +(0.1111111111 0.009929188095 -0.00050009999) +(0.1111111111 0.009975 -0.00050009999) +(0.1111111111 0.01 -0.00050009999) +(0.1161616162 0 -0.00050009999) +(0.1161616162 2.5e-05 -0.00050009999) +(0.1161616162 7.08119053e-05 -0.00050009999) +(0.1161616162 0.00015426567 -0.00050009999) +(0.1161616162 0.0003046635713 -0.00050009999) +(0.1161616162 0.0005705243934 -0.00050009999) +(0.1161616162 0.001024837958 -0.00050009999) +(0.1161616162 0.001758019915 -0.00050009999) +(0.1161616162 0.002838575912 -0.00050009999) +(0.1161616162 0.004235474916 -0.00050009999) +(0.1161616162 0.005764525084 -0.00050009999) +(0.1161616162 0.007161424088 -0.00050009999) +(0.1161616162 0.008241980085 -0.00050009999) +(0.1161616162 0.008975162042 -0.00050009999) +(0.1161616162 0.009429475607 -0.00050009999) +(0.1161616162 0.009695336429 -0.00050009999) +(0.1161616162 0.00984573433 -0.00050009999) +(0.1161616162 0.009929188095 -0.00050009999) +(0.1161616162 0.009975 -0.00050009999) +(0.1161616162 0.01 -0.00050009999) +(0.1212121212 0 -0.00050009999) +(0.1212121212 2.5e-05 -0.00050009999) +(0.1212121212 7.08119053e-05 -0.00050009999) +(0.1212121212 0.00015426567 -0.00050009999) +(0.1212121212 0.0003046635713 -0.00050009999) +(0.1212121212 0.0005705243934 -0.00050009999) +(0.1212121212 0.001024837958 -0.00050009999) +(0.1212121212 0.001758019915 -0.00050009999) +(0.1212121212 0.002838575912 -0.00050009999) +(0.1212121212 0.004235474916 -0.00050009999) +(0.1212121212 0.005764525084 -0.00050009999) +(0.1212121212 0.007161424088 -0.00050009999) +(0.1212121212 0.008241980085 -0.00050009999) +(0.1212121212 0.008975162042 -0.00050009999) +(0.1212121212 0.009429475607 -0.00050009999) +(0.1212121212 0.009695336429 -0.00050009999) +(0.1212121212 0.00984573433 -0.00050009999) +(0.1212121212 0.009929188095 -0.00050009999) +(0.1212121212 0.009975 -0.00050009999) +(0.1212121212 0.01 -0.00050009999) +(0.1262626263 0 -0.00050009999) +(0.1262626263 2.5e-05 -0.00050009999) +(0.1262626263 7.08119053e-05 -0.00050009999) +(0.1262626263 0.00015426567 -0.00050009999) +(0.1262626263 0.0003046635713 -0.00050009999) +(0.1262626263 0.0005705243934 -0.00050009999) +(0.1262626263 0.001024837958 -0.00050009999) +(0.1262626263 0.001758019915 -0.00050009999) +(0.1262626263 0.002838575912 -0.00050009999) +(0.1262626263 0.004235474916 -0.00050009999) +(0.1262626263 0.005764525084 -0.00050009999) +(0.1262626263 0.007161424088 -0.00050009999) +(0.1262626263 0.008241980085 -0.00050009999) +(0.1262626263 0.008975162042 -0.00050009999) +(0.1262626263 0.009429475607 -0.00050009999) +(0.1262626263 0.009695336429 -0.00050009999) +(0.1262626263 0.00984573433 -0.00050009999) +(0.1262626263 0.009929188095 -0.00050009999) +(0.1262626263 0.009975 -0.00050009999) +(0.1262626263 0.01 -0.00050009999) +(0.1313131313 0 -0.00050009999) +(0.1313131313 2.5e-05 -0.00050009999) +(0.1313131313 7.08119053e-05 -0.00050009999) +(0.1313131313 0.00015426567 -0.00050009999) +(0.1313131313 0.0003046635713 -0.00050009999) +(0.1313131313 0.0005705243934 -0.00050009999) +(0.1313131313 0.001024837958 -0.00050009999) +(0.1313131313 0.001758019915 -0.00050009999) +(0.1313131313 0.002838575912 -0.00050009999) +(0.1313131313 0.004235474916 -0.00050009999) +(0.1313131313 0.005764525084 -0.00050009999) +(0.1313131313 0.007161424088 -0.00050009999) +(0.1313131313 0.008241980085 -0.00050009999) +(0.1313131313 0.008975162042 -0.00050009999) +(0.1313131313 0.009429475607 -0.00050009999) +(0.1313131313 0.009695336429 -0.00050009999) +(0.1313131313 0.00984573433 -0.00050009999) +(0.1313131313 0.009929188095 -0.00050009999) +(0.1313131313 0.009975 -0.00050009999) +(0.1313131313 0.01 -0.00050009999) +(0.1363636364 0 -0.00050009999) +(0.1363636364 2.5e-05 -0.00050009999) +(0.1363636364 7.08119053e-05 -0.00050009999) +(0.1363636364 0.00015426567 -0.00050009999) +(0.1363636364 0.0003046635713 -0.00050009999) +(0.1363636364 0.0005705243934 -0.00050009999) +(0.1363636364 0.001024837958 -0.00050009999) +(0.1363636364 0.001758019915 -0.00050009999) +(0.1363636364 0.002838575912 -0.00050009999) +(0.1363636364 0.004235474916 -0.00050009999) +(0.1363636364 0.005764525084 -0.00050009999) +(0.1363636364 0.007161424088 -0.00050009999) +(0.1363636364 0.008241980085 -0.00050009999) +(0.1363636364 0.008975162042 -0.00050009999) +(0.1363636364 0.009429475607 -0.00050009999) +(0.1363636364 0.009695336429 -0.00050009999) +(0.1363636364 0.00984573433 -0.00050009999) +(0.1363636364 0.009929188095 -0.00050009999) +(0.1363636364 0.009975 -0.00050009999) +(0.1363636364 0.01 -0.00050009999) +(0.1414141414 0 -0.00050009999) +(0.1414141414 2.5e-05 -0.00050009999) +(0.1414141414 7.08119053e-05 -0.00050009999) +(0.1414141414 0.00015426567 -0.00050009999) +(0.1414141414 0.0003046635713 -0.00050009999) +(0.1414141414 0.0005705243934 -0.00050009999) +(0.1414141414 0.001024837958 -0.00050009999) +(0.1414141414 0.001758019915 -0.00050009999) +(0.1414141414 0.002838575912 -0.00050009999) +(0.1414141414 0.004235474916 -0.00050009999) +(0.1414141414 0.005764525084 -0.00050009999) +(0.1414141414 0.007161424088 -0.00050009999) +(0.1414141414 0.008241980085 -0.00050009999) +(0.1414141414 0.008975162042 -0.00050009999) +(0.1414141414 0.009429475607 -0.00050009999) +(0.1414141414 0.009695336429 -0.00050009999) +(0.1414141414 0.00984573433 -0.00050009999) +(0.1414141414 0.009929188095 -0.00050009999) +(0.1414141414 0.009975 -0.00050009999) +(0.1414141414 0.01 -0.00050009999) +(0.1464646465 0 -0.00050009999) +(0.1464646465 2.5e-05 -0.00050009999) +(0.1464646465 7.08119053e-05 -0.00050009999) +(0.1464646465 0.00015426567 -0.00050009999) +(0.1464646465 0.0003046635713 -0.00050009999) +(0.1464646465 0.0005705243934 -0.00050009999) +(0.1464646465 0.001024837958 -0.00050009999) +(0.1464646465 0.001758019915 -0.00050009999) +(0.1464646465 0.002838575912 -0.00050009999) +(0.1464646465 0.004235474916 -0.00050009999) +(0.1464646465 0.005764525084 -0.00050009999) +(0.1464646465 0.007161424088 -0.00050009999) +(0.1464646465 0.008241980085 -0.00050009999) +(0.1464646465 0.008975162042 -0.00050009999) +(0.1464646465 0.009429475607 -0.00050009999) +(0.1464646465 0.009695336429 -0.00050009999) +(0.1464646465 0.00984573433 -0.00050009999) +(0.1464646465 0.009929188095 -0.00050009999) +(0.1464646465 0.009975 -0.00050009999) +(0.1464646465 0.01 -0.00050009999) +(0.1515151515 0 -0.00050009999) +(0.1515151515 2.5e-05 -0.00050009999) +(0.1515151515 7.08119053e-05 -0.00050009999) +(0.1515151515 0.00015426567 -0.00050009999) +(0.1515151515 0.0003046635713 -0.00050009999) +(0.1515151515 0.0005705243934 -0.00050009999) +(0.1515151515 0.001024837958 -0.00050009999) +(0.1515151515 0.001758019915 -0.00050009999) +(0.1515151515 0.002838575912 -0.00050009999) +(0.1515151515 0.004235474916 -0.00050009999) +(0.1515151515 0.005764525084 -0.00050009999) +(0.1515151515 0.007161424088 -0.00050009999) +(0.1515151515 0.008241980085 -0.00050009999) +(0.1515151515 0.008975162042 -0.00050009999) +(0.1515151515 0.009429475607 -0.00050009999) +(0.1515151515 0.009695336429 -0.00050009999) +(0.1515151515 0.00984573433 -0.00050009999) +(0.1515151515 0.009929188095 -0.00050009999) +(0.1515151515 0.009975 -0.00050009999) +(0.1515151515 0.01 -0.00050009999) +(0.1565656566 0 -0.00050009999) +(0.1565656566 2.5e-05 -0.00050009999) +(0.1565656566 7.08119053e-05 -0.00050009999) +(0.1565656566 0.00015426567 -0.00050009999) +(0.1565656566 0.0003046635713 -0.00050009999) +(0.1565656566 0.0005705243934 -0.00050009999) +(0.1565656566 0.001024837958 -0.00050009999) +(0.1565656566 0.001758019915 -0.00050009999) +(0.1565656566 0.002838575912 -0.00050009999) +(0.1565656566 0.004235474916 -0.00050009999) +(0.1565656566 0.005764525084 -0.00050009999) +(0.1565656566 0.007161424088 -0.00050009999) +(0.1565656566 0.008241980085 -0.00050009999) +(0.1565656566 0.008975162042 -0.00050009999) +(0.1565656566 0.009429475607 -0.00050009999) +(0.1565656566 0.009695336429 -0.00050009999) +(0.1565656566 0.00984573433 -0.00050009999) +(0.1565656566 0.009929188095 -0.00050009999) +(0.1565656566 0.009975 -0.00050009999) +(0.1565656566 0.01 -0.00050009999) +(0.1616161616 0 -0.00050009999) +(0.1616161616 2.5e-05 -0.00050009999) +(0.1616161616 7.08119053e-05 -0.00050009999) +(0.1616161616 0.00015426567 -0.00050009999) +(0.1616161616 0.0003046635713 -0.00050009999) +(0.1616161616 0.0005705243934 -0.00050009999) +(0.1616161616 0.001024837958 -0.00050009999) +(0.1616161616 0.001758019915 -0.00050009999) +(0.1616161616 0.002838575912 -0.00050009999) +(0.1616161616 0.004235474916 -0.00050009999) +(0.1616161616 0.005764525084 -0.00050009999) +(0.1616161616 0.007161424088 -0.00050009999) +(0.1616161616 0.008241980085 -0.00050009999) +(0.1616161616 0.008975162042 -0.00050009999) +(0.1616161616 0.009429475607 -0.00050009999) +(0.1616161616 0.009695336429 -0.00050009999) +(0.1616161616 0.00984573433 -0.00050009999) +(0.1616161616 0.009929188095 -0.00050009999) +(0.1616161616 0.009975 -0.00050009999) +(0.1616161616 0.01 -0.00050009999) +(0.1666666667 0 -0.00050009999) +(0.1666666667 2.5e-05 -0.00050009999) +(0.1666666667 7.08119053e-05 -0.00050009999) +(0.1666666667 0.00015426567 -0.00050009999) +(0.1666666667 0.0003046635713 -0.00050009999) +(0.1666666667 0.0005705243934 -0.00050009999) +(0.1666666667 0.001024837958 -0.00050009999) +(0.1666666667 0.001758019915 -0.00050009999) +(0.1666666667 0.002838575912 -0.00050009999) +(0.1666666667 0.004235474916 -0.00050009999) +(0.1666666667 0.005764525084 -0.00050009999) +(0.1666666667 0.007161424088 -0.00050009999) +(0.1666666667 0.008241980085 -0.00050009999) +(0.1666666667 0.008975162042 -0.00050009999) +(0.1666666667 0.009429475607 -0.00050009999) +(0.1666666667 0.009695336429 -0.00050009999) +(0.1666666667 0.00984573433 -0.00050009999) +(0.1666666667 0.009929188095 -0.00050009999) +(0.1666666667 0.009975 -0.00050009999) +(0.1666666667 0.01 -0.00050009999) +(0.1717171717 0 -0.00050009999) +(0.1717171717 2.5e-05 -0.00050009999) +(0.1717171717 7.08119053e-05 -0.00050009999) +(0.1717171717 0.00015426567 -0.00050009999) +(0.1717171717 0.0003046635713 -0.00050009999) +(0.1717171717 0.0005705243934 -0.00050009999) +(0.1717171717 0.001024837958 -0.00050009999) +(0.1717171717 0.001758019915 -0.00050009999) +(0.1717171717 0.002838575912 -0.00050009999) +(0.1717171717 0.004235474916 -0.00050009999) +(0.1717171717 0.005764525084 -0.00050009999) +(0.1717171717 0.007161424088 -0.00050009999) +(0.1717171717 0.008241980085 -0.00050009999) +(0.1717171717 0.008975162042 -0.00050009999) +(0.1717171717 0.009429475607 -0.00050009999) +(0.1717171717 0.009695336429 -0.00050009999) +(0.1717171717 0.00984573433 -0.00050009999) +(0.1717171717 0.009929188095 -0.00050009999) +(0.1717171717 0.009975 -0.00050009999) +(0.1717171717 0.01 -0.00050009999) +(0.1767676768 0 -0.00050009999) +(0.1767676768 2.5e-05 -0.00050009999) +(0.1767676768 7.08119053e-05 -0.00050009999) +(0.1767676768 0.00015426567 -0.00050009999) +(0.1767676768 0.0003046635713 -0.00050009999) +(0.1767676768 0.0005705243934 -0.00050009999) +(0.1767676768 0.001024837958 -0.00050009999) +(0.1767676768 0.001758019915 -0.00050009999) +(0.1767676768 0.002838575912 -0.00050009999) +(0.1767676768 0.004235474916 -0.00050009999) +(0.1767676768 0.005764525084 -0.00050009999) +(0.1767676768 0.007161424088 -0.00050009999) +(0.1767676768 0.008241980085 -0.00050009999) +(0.1767676768 0.008975162042 -0.00050009999) +(0.1767676768 0.009429475607 -0.00050009999) +(0.1767676768 0.009695336429 -0.00050009999) +(0.1767676768 0.00984573433 -0.00050009999) +(0.1767676768 0.009929188095 -0.00050009999) +(0.1767676768 0.009975 -0.00050009999) +(0.1767676768 0.01 -0.00050009999) +(0.1818181818 0 -0.00050009999) +(0.1818181818 2.5e-05 -0.00050009999) +(0.1818181818 7.08119053e-05 -0.00050009999) +(0.1818181818 0.00015426567 -0.00050009999) +(0.1818181818 0.0003046635713 -0.00050009999) +(0.1818181818 0.0005705243934 -0.00050009999) +(0.1818181818 0.001024837958 -0.00050009999) +(0.1818181818 0.001758019915 -0.00050009999) +(0.1818181818 0.002838575912 -0.00050009999) +(0.1818181818 0.004235474916 -0.00050009999) +(0.1818181818 0.005764525084 -0.00050009999) +(0.1818181818 0.007161424088 -0.00050009999) +(0.1818181818 0.008241980085 -0.00050009999) +(0.1818181818 0.008975162042 -0.00050009999) +(0.1818181818 0.009429475607 -0.00050009999) +(0.1818181818 0.009695336429 -0.00050009999) +(0.1818181818 0.00984573433 -0.00050009999) +(0.1818181818 0.009929188095 -0.00050009999) +(0.1818181818 0.009975 -0.00050009999) +(0.1818181818 0.01 -0.00050009999) +(0.1868686869 0 -0.00050009999) +(0.1868686869 2.5e-05 -0.00050009999) +(0.1868686869 7.08119053e-05 -0.00050009999) +(0.1868686869 0.00015426567 -0.00050009999) +(0.1868686869 0.0003046635713 -0.00050009999) +(0.1868686869 0.0005705243934 -0.00050009999) +(0.1868686869 0.001024837958 -0.00050009999) +(0.1868686869 0.001758019915 -0.00050009999) +(0.1868686869 0.002838575912 -0.00050009999) +(0.1868686869 0.004235474916 -0.00050009999) +(0.1868686869 0.005764525084 -0.00050009999) +(0.1868686869 0.007161424088 -0.00050009999) +(0.1868686869 0.008241980085 -0.00050009999) +(0.1868686869 0.008975162042 -0.00050009999) +(0.1868686869 0.009429475607 -0.00050009999) +(0.1868686869 0.009695336429 -0.00050009999) +(0.1868686869 0.00984573433 -0.00050009999) +(0.1868686869 0.009929188095 -0.00050009999) +(0.1868686869 0.009975 -0.00050009999) +(0.1868686869 0.01 -0.00050009999) +(0.1919191919 0 -0.00050009999) +(0.1919191919 2.5e-05 -0.00050009999) +(0.1919191919 7.08119053e-05 -0.00050009999) +(0.1919191919 0.00015426567 -0.00050009999) +(0.1919191919 0.0003046635713 -0.00050009999) +(0.1919191919 0.0005705243934 -0.00050009999) +(0.1919191919 0.001024837958 -0.00050009999) +(0.1919191919 0.001758019915 -0.00050009999) +(0.1919191919 0.002838575912 -0.00050009999) +(0.1919191919 0.004235474916 -0.00050009999) +(0.1919191919 0.005764525084 -0.00050009999) +(0.1919191919 0.007161424088 -0.00050009999) +(0.1919191919 0.008241980085 -0.00050009999) +(0.1919191919 0.008975162042 -0.00050009999) +(0.1919191919 0.009429475607 -0.00050009999) +(0.1919191919 0.009695336429 -0.00050009999) +(0.1919191919 0.00984573433 -0.00050009999) +(0.1919191919 0.009929188095 -0.00050009999) +(0.1919191919 0.009975 -0.00050009999) +(0.1919191919 0.01 -0.00050009999) +(0.196969697 0 -0.00050009999) +(0.196969697 2.5e-05 -0.00050009999) +(0.196969697 7.08119053e-05 -0.00050009999) +(0.196969697 0.00015426567 -0.00050009999) +(0.196969697 0.0003046635713 -0.00050009999) +(0.196969697 0.0005705243934 -0.00050009999) +(0.196969697 0.001024837958 -0.00050009999) +(0.196969697 0.001758019915 -0.00050009999) +(0.196969697 0.002838575912 -0.00050009999) +(0.196969697 0.004235474916 -0.00050009999) +(0.196969697 0.005764525084 -0.00050009999) +(0.196969697 0.007161424088 -0.00050009999) +(0.196969697 0.008241980085 -0.00050009999) +(0.196969697 0.008975162042 -0.00050009999) +(0.196969697 0.009429475607 -0.00050009999) +(0.196969697 0.009695336429 -0.00050009999) +(0.196969697 0.00984573433 -0.00050009999) +(0.196969697 0.009929188095 -0.00050009999) +(0.196969697 0.009975 -0.00050009999) +(0.196969697 0.01 -0.00050009999) +(0.202020202 0 -0.00050009999) +(0.202020202 2.5e-05 -0.00050009999) +(0.202020202 7.08119053e-05 -0.00050009999) +(0.202020202 0.00015426567 -0.00050009999) +(0.202020202 0.0003046635713 -0.00050009999) +(0.202020202 0.0005705243934 -0.00050009999) +(0.202020202 0.001024837958 -0.00050009999) +(0.202020202 0.001758019915 -0.00050009999) +(0.202020202 0.002838575912 -0.00050009999) +(0.202020202 0.004235474916 -0.00050009999) +(0.202020202 0.005764525084 -0.00050009999) +(0.202020202 0.007161424088 -0.00050009999) +(0.202020202 0.008241980085 -0.00050009999) +(0.202020202 0.008975162042 -0.00050009999) +(0.202020202 0.009429475607 -0.00050009999) +(0.202020202 0.009695336429 -0.00050009999) +(0.202020202 0.00984573433 -0.00050009999) +(0.202020202 0.009929188095 -0.00050009999) +(0.202020202 0.009975 -0.00050009999) +(0.202020202 0.01 -0.00050009999) +(0.2070707071 0 -0.00050009999) +(0.2070707071 2.5e-05 -0.00050009999) +(0.2070707071 7.08119053e-05 -0.00050009999) +(0.2070707071 0.00015426567 -0.00050009999) +(0.2070707071 0.0003046635713 -0.00050009999) +(0.2070707071 0.0005705243934 -0.00050009999) +(0.2070707071 0.001024837958 -0.00050009999) +(0.2070707071 0.001758019915 -0.00050009999) +(0.2070707071 0.002838575912 -0.00050009999) +(0.2070707071 0.004235474916 -0.00050009999) +(0.2070707071 0.005764525084 -0.00050009999) +(0.2070707071 0.007161424088 -0.00050009999) +(0.2070707071 0.008241980085 -0.00050009999) +(0.2070707071 0.008975162042 -0.00050009999) +(0.2070707071 0.009429475607 -0.00050009999) +(0.2070707071 0.009695336429 -0.00050009999) +(0.2070707071 0.00984573433 -0.00050009999) +(0.2070707071 0.009929188095 -0.00050009999) +(0.2070707071 0.009975 -0.00050009999) +(0.2070707071 0.01 -0.00050009999) +(0.2121212121 0 -0.00050009999) +(0.2121212121 2.5e-05 -0.00050009999) +(0.2121212121 7.08119053e-05 -0.00050009999) +(0.2121212121 0.00015426567 -0.00050009999) +(0.2121212121 0.0003046635713 -0.00050009999) +(0.2121212121 0.0005705243934 -0.00050009999) +(0.2121212121 0.001024837958 -0.00050009999) +(0.2121212121 0.001758019915 -0.00050009999) +(0.2121212121 0.002838575912 -0.00050009999) +(0.2121212121 0.004235474916 -0.00050009999) +(0.2121212121 0.005764525084 -0.00050009999) +(0.2121212121 0.007161424088 -0.00050009999) +(0.2121212121 0.008241980085 -0.00050009999) +(0.2121212121 0.008975162042 -0.00050009999) +(0.2121212121 0.009429475607 -0.00050009999) +(0.2121212121 0.009695336429 -0.00050009999) +(0.2121212121 0.00984573433 -0.00050009999) +(0.2121212121 0.009929188095 -0.00050009999) +(0.2121212121 0.009975 -0.00050009999) +(0.2121212121 0.01 -0.00050009999) +(0.2171717172 0 -0.00050009999) +(0.2171717172 2.5e-05 -0.00050009999) +(0.2171717172 7.08119053e-05 -0.00050009999) +(0.2171717172 0.00015426567 -0.00050009999) +(0.2171717172 0.0003046635713 -0.00050009999) +(0.2171717172 0.0005705243934 -0.00050009999) +(0.2171717172 0.001024837958 -0.00050009999) +(0.2171717172 0.001758019915 -0.00050009999) +(0.2171717172 0.002838575912 -0.00050009999) +(0.2171717172 0.004235474916 -0.00050009999) +(0.2171717172 0.005764525084 -0.00050009999) +(0.2171717172 0.007161424088 -0.00050009999) +(0.2171717172 0.008241980085 -0.00050009999) +(0.2171717172 0.008975162042 -0.00050009999) +(0.2171717172 0.009429475607 -0.00050009999) +(0.2171717172 0.009695336429 -0.00050009999) +(0.2171717172 0.00984573433 -0.00050009999) +(0.2171717172 0.009929188095 -0.00050009999) +(0.2171717172 0.009975 -0.00050009999) +(0.2171717172 0.01 -0.00050009999) +(0.2222222222 0 -0.00050009999) +(0.2222222222 2.5e-05 -0.00050009999) +(0.2222222222 7.08119053e-05 -0.00050009999) +(0.2222222222 0.00015426567 -0.00050009999) +(0.2222222222 0.0003046635713 -0.00050009999) +(0.2222222222 0.0005705243934 -0.00050009999) +(0.2222222222 0.001024837958 -0.00050009999) +(0.2222222222 0.001758019915 -0.00050009999) +(0.2222222222 0.002838575912 -0.00050009999) +(0.2222222222 0.004235474916 -0.00050009999) +(0.2222222222 0.005764525084 -0.00050009999) +(0.2222222222 0.007161424088 -0.00050009999) +(0.2222222222 0.008241980085 -0.00050009999) +(0.2222222222 0.008975162042 -0.00050009999) +(0.2222222222 0.009429475607 -0.00050009999) +(0.2222222222 0.009695336429 -0.00050009999) +(0.2222222222 0.00984573433 -0.00050009999) +(0.2222222222 0.009929188095 -0.00050009999) +(0.2222222222 0.009975 -0.00050009999) +(0.2222222222 0.01 -0.00050009999) +(0.2272727273 0 -0.00050009999) +(0.2272727273 2.5e-05 -0.00050009999) +(0.2272727273 7.08119053e-05 -0.00050009999) +(0.2272727273 0.00015426567 -0.00050009999) +(0.2272727273 0.0003046635713 -0.00050009999) +(0.2272727273 0.0005705243934 -0.00050009999) +(0.2272727273 0.001024837958 -0.00050009999) +(0.2272727273 0.001758019915 -0.00050009999) +(0.2272727273 0.002838575912 -0.00050009999) +(0.2272727273 0.004235474916 -0.00050009999) +(0.2272727273 0.005764525084 -0.00050009999) +(0.2272727273 0.007161424088 -0.00050009999) +(0.2272727273 0.008241980085 -0.00050009999) +(0.2272727273 0.008975162042 -0.00050009999) +(0.2272727273 0.009429475607 -0.00050009999) +(0.2272727273 0.009695336429 -0.00050009999) +(0.2272727273 0.00984573433 -0.00050009999) +(0.2272727273 0.009929188095 -0.00050009999) +(0.2272727273 0.009975 -0.00050009999) +(0.2272727273 0.01 -0.00050009999) +(0.2323232323 0 -0.00050009999) +(0.2323232323 2.5e-05 -0.00050009999) +(0.2323232323 7.08119053e-05 -0.00050009999) +(0.2323232323 0.00015426567 -0.00050009999) +(0.2323232323 0.0003046635713 -0.00050009999) +(0.2323232323 0.0005705243934 -0.00050009999) +(0.2323232323 0.001024837958 -0.00050009999) +(0.2323232323 0.001758019915 -0.00050009999) +(0.2323232323 0.002838575912 -0.00050009999) +(0.2323232323 0.004235474916 -0.00050009999) +(0.2323232323 0.005764525084 -0.00050009999) +(0.2323232323 0.007161424088 -0.00050009999) +(0.2323232323 0.008241980085 -0.00050009999) +(0.2323232323 0.008975162042 -0.00050009999) +(0.2323232323 0.009429475607 -0.00050009999) +(0.2323232323 0.009695336429 -0.00050009999) +(0.2323232323 0.00984573433 -0.00050009999) +(0.2323232323 0.009929188095 -0.00050009999) +(0.2323232323 0.009975 -0.00050009999) +(0.2323232323 0.01 -0.00050009999) +(0.2373737374 0 -0.00050009999) +(0.2373737374 2.5e-05 -0.00050009999) +(0.2373737374 7.08119053e-05 -0.00050009999) +(0.2373737374 0.00015426567 -0.00050009999) +(0.2373737374 0.0003046635713 -0.00050009999) +(0.2373737374 0.0005705243934 -0.00050009999) +(0.2373737374 0.001024837958 -0.00050009999) +(0.2373737374 0.001758019915 -0.00050009999) +(0.2373737374 0.002838575912 -0.00050009999) +(0.2373737374 0.004235474916 -0.00050009999) +(0.2373737374 0.005764525084 -0.00050009999) +(0.2373737374 0.007161424088 -0.00050009999) +(0.2373737374 0.008241980085 -0.00050009999) +(0.2373737374 0.008975162042 -0.00050009999) +(0.2373737374 0.009429475607 -0.00050009999) +(0.2373737374 0.009695336429 -0.00050009999) +(0.2373737374 0.00984573433 -0.00050009999) +(0.2373737374 0.009929188095 -0.00050009999) +(0.2373737374 0.009975 -0.00050009999) +(0.2373737374 0.01 -0.00050009999) +(0.2424242424 0 -0.00050009999) +(0.2424242424 2.5e-05 -0.00050009999) +(0.2424242424 7.08119053e-05 -0.00050009999) +(0.2424242424 0.00015426567 -0.00050009999) +(0.2424242424 0.0003046635713 -0.00050009999) +(0.2424242424 0.0005705243934 -0.00050009999) +(0.2424242424 0.001024837958 -0.00050009999) +(0.2424242424 0.001758019915 -0.00050009999) +(0.2424242424 0.002838575912 -0.00050009999) +(0.2424242424 0.004235474916 -0.00050009999) +(0.2424242424 0.005764525084 -0.00050009999) +(0.2424242424 0.007161424088 -0.00050009999) +(0.2424242424 0.008241980085 -0.00050009999) +(0.2424242424 0.008975162042 -0.00050009999) +(0.2424242424 0.009429475607 -0.00050009999) +(0.2424242424 0.009695336429 -0.00050009999) +(0.2424242424 0.00984573433 -0.00050009999) +(0.2424242424 0.009929188095 -0.00050009999) +(0.2424242424 0.009975 -0.00050009999) +(0.2424242424 0.01 -0.00050009999) +(0.2474747475 0 -0.00050009999) +(0.2474747475 2.5e-05 -0.00050009999) +(0.2474747475 7.08119053e-05 -0.00050009999) +(0.2474747475 0.00015426567 -0.00050009999) +(0.2474747475 0.0003046635713 -0.00050009999) +(0.2474747475 0.0005705243934 -0.00050009999) +(0.2474747475 0.001024837958 -0.00050009999) +(0.2474747475 0.001758019915 -0.00050009999) +(0.2474747475 0.002838575912 -0.00050009999) +(0.2474747475 0.004235474916 -0.00050009999) +(0.2474747475 0.005764525084 -0.00050009999) +(0.2474747475 0.007161424088 -0.00050009999) +(0.2474747475 0.008241980085 -0.00050009999) +(0.2474747475 0.008975162042 -0.00050009999) +(0.2474747475 0.009429475607 -0.00050009999) +(0.2474747475 0.009695336429 -0.00050009999) +(0.2474747475 0.00984573433 -0.00050009999) +(0.2474747475 0.009929188095 -0.00050009999) +(0.2474747475 0.009975 -0.00050009999) +(0.2474747475 0.01 -0.00050009999) +(0.2525252525 0 -0.00050009999) +(0.2525252525 2.5e-05 -0.00050009999) +(0.2525252525 7.08119053e-05 -0.00050009999) +(0.2525252525 0.00015426567 -0.00050009999) +(0.2525252525 0.0003046635713 -0.00050009999) +(0.2525252525 0.0005705243934 -0.00050009999) +(0.2525252525 0.001024837958 -0.00050009999) +(0.2525252525 0.001758019915 -0.00050009999) +(0.2525252525 0.002838575912 -0.00050009999) +(0.2525252525 0.004235474916 -0.00050009999) +(0.2525252525 0.005764525084 -0.00050009999) +(0.2525252525 0.007161424088 -0.00050009999) +(0.2525252525 0.008241980085 -0.00050009999) +(0.2525252525 0.008975162042 -0.00050009999) +(0.2525252525 0.009429475607 -0.00050009999) +(0.2525252525 0.009695336429 -0.00050009999) +(0.2525252525 0.00984573433 -0.00050009999) +(0.2525252525 0.009929188095 -0.00050009999) +(0.2525252525 0.009975 -0.00050009999) +(0.2525252525 0.01 -0.00050009999) +(0.2575757576 0 -0.00050009999) +(0.2575757576 2.5e-05 -0.00050009999) +(0.2575757576 7.08119053e-05 -0.00050009999) +(0.2575757576 0.00015426567 -0.00050009999) +(0.2575757576 0.0003046635713 -0.00050009999) +(0.2575757576 0.0005705243934 -0.00050009999) +(0.2575757576 0.001024837958 -0.00050009999) +(0.2575757576 0.001758019915 -0.00050009999) +(0.2575757576 0.002838575912 -0.00050009999) +(0.2575757576 0.004235474916 -0.00050009999) +(0.2575757576 0.005764525084 -0.00050009999) +(0.2575757576 0.007161424088 -0.00050009999) +(0.2575757576 0.008241980085 -0.00050009999) +(0.2575757576 0.008975162042 -0.00050009999) +(0.2575757576 0.009429475607 -0.00050009999) +(0.2575757576 0.009695336429 -0.00050009999) +(0.2575757576 0.00984573433 -0.00050009999) +(0.2575757576 0.009929188095 -0.00050009999) +(0.2575757576 0.009975 -0.00050009999) +(0.2575757576 0.01 -0.00050009999) +(0.2626262626 0 -0.00050009999) +(0.2626262626 2.5e-05 -0.00050009999) +(0.2626262626 7.08119053e-05 -0.00050009999) +(0.2626262626 0.00015426567 -0.00050009999) +(0.2626262626 0.0003046635713 -0.00050009999) +(0.2626262626 0.0005705243934 -0.00050009999) +(0.2626262626 0.001024837958 -0.00050009999) +(0.2626262626 0.001758019915 -0.00050009999) +(0.2626262626 0.002838575912 -0.00050009999) +(0.2626262626 0.004235474916 -0.00050009999) +(0.2626262626 0.005764525084 -0.00050009999) +(0.2626262626 0.007161424088 -0.00050009999) +(0.2626262626 0.008241980085 -0.00050009999) +(0.2626262626 0.008975162042 -0.00050009999) +(0.2626262626 0.009429475607 -0.00050009999) +(0.2626262626 0.009695336429 -0.00050009999) +(0.2626262626 0.00984573433 -0.00050009999) +(0.2626262626 0.009929188095 -0.00050009999) +(0.2626262626 0.009975 -0.00050009999) +(0.2626262626 0.01 -0.00050009999) +(0.2676767677 0 -0.00050009999) +(0.2676767677 2.5e-05 -0.00050009999) +(0.2676767677 7.08119053e-05 -0.00050009999) +(0.2676767677 0.00015426567 -0.00050009999) +(0.2676767677 0.0003046635713 -0.00050009999) +(0.2676767677 0.0005705243934 -0.00050009999) +(0.2676767677 0.001024837958 -0.00050009999) +(0.2676767677 0.001758019915 -0.00050009999) +(0.2676767677 0.002838575912 -0.00050009999) +(0.2676767677 0.004235474916 -0.00050009999) +(0.2676767677 0.005764525084 -0.00050009999) +(0.2676767677 0.007161424088 -0.00050009999) +(0.2676767677 0.008241980085 -0.00050009999) +(0.2676767677 0.008975162042 -0.00050009999) +(0.2676767677 0.009429475607 -0.00050009999) +(0.2676767677 0.009695336429 -0.00050009999) +(0.2676767677 0.00984573433 -0.00050009999) +(0.2676767677 0.009929188095 -0.00050009999) +(0.2676767677 0.009975 -0.00050009999) +(0.2676767677 0.01 -0.00050009999) +(0.2727272727 0 -0.00050009999) +(0.2727272727 2.5e-05 -0.00050009999) +(0.2727272727 7.08119053e-05 -0.00050009999) +(0.2727272727 0.00015426567 -0.00050009999) +(0.2727272727 0.0003046635713 -0.00050009999) +(0.2727272727 0.0005705243934 -0.00050009999) +(0.2727272727 0.001024837958 -0.00050009999) +(0.2727272727 0.001758019915 -0.00050009999) +(0.2727272727 0.002838575912 -0.00050009999) +(0.2727272727 0.004235474916 -0.00050009999) +(0.2727272727 0.005764525084 -0.00050009999) +(0.2727272727 0.007161424088 -0.00050009999) +(0.2727272727 0.008241980085 -0.00050009999) +(0.2727272727 0.008975162042 -0.00050009999) +(0.2727272727 0.009429475607 -0.00050009999) +(0.2727272727 0.009695336429 -0.00050009999) +(0.2727272727 0.00984573433 -0.00050009999) +(0.2727272727 0.009929188095 -0.00050009999) +(0.2727272727 0.009975 -0.00050009999) +(0.2727272727 0.01 -0.00050009999) +(0.2777777778 0 -0.00050009999) +(0.2777777778 2.5e-05 -0.00050009999) +(0.2777777778 7.08119053e-05 -0.00050009999) +(0.2777777778 0.00015426567 -0.00050009999) +(0.2777777778 0.0003046635713 -0.00050009999) +(0.2777777778 0.0005705243934 -0.00050009999) +(0.2777777778 0.001024837958 -0.00050009999) +(0.2777777778 0.001758019915 -0.00050009999) +(0.2777777778 0.002838575912 -0.00050009999) +(0.2777777778 0.004235474916 -0.00050009999) +(0.2777777778 0.005764525084 -0.00050009999) +(0.2777777778 0.007161424088 -0.00050009999) +(0.2777777778 0.008241980085 -0.00050009999) +(0.2777777778 0.008975162042 -0.00050009999) +(0.2777777778 0.009429475607 -0.00050009999) +(0.2777777778 0.009695336429 -0.00050009999) +(0.2777777778 0.00984573433 -0.00050009999) +(0.2777777778 0.009929188095 -0.00050009999) +(0.2777777778 0.009975 -0.00050009999) +(0.2777777778 0.01 -0.00050009999) +(0.2828282828 0 -0.00050009999) +(0.2828282828 2.5e-05 -0.00050009999) +(0.2828282828 7.08119053e-05 -0.00050009999) +(0.2828282828 0.00015426567 -0.00050009999) +(0.2828282828 0.0003046635713 -0.00050009999) +(0.2828282828 0.0005705243934 -0.00050009999) +(0.2828282828 0.001024837958 -0.00050009999) +(0.2828282828 0.001758019915 -0.00050009999) +(0.2828282828 0.002838575912 -0.00050009999) +(0.2828282828 0.004235474916 -0.00050009999) +(0.2828282828 0.005764525084 -0.00050009999) +(0.2828282828 0.007161424088 -0.00050009999) +(0.2828282828 0.008241980085 -0.00050009999) +(0.2828282828 0.008975162042 -0.00050009999) +(0.2828282828 0.009429475607 -0.00050009999) +(0.2828282828 0.009695336429 -0.00050009999) +(0.2828282828 0.00984573433 -0.00050009999) +(0.2828282828 0.009929188095 -0.00050009999) +(0.2828282828 0.009975 -0.00050009999) +(0.2828282828 0.01 -0.00050009999) +(0.2878787879 0 -0.00050009999) +(0.2878787879 2.5e-05 -0.00050009999) +(0.2878787879 7.08119053e-05 -0.00050009999) +(0.2878787879 0.00015426567 -0.00050009999) +(0.2878787879 0.0003046635713 -0.00050009999) +(0.2878787879 0.0005705243934 -0.00050009999) +(0.2878787879 0.001024837958 -0.00050009999) +(0.2878787879 0.001758019915 -0.00050009999) +(0.2878787879 0.002838575912 -0.00050009999) +(0.2878787879 0.004235474916 -0.00050009999) +(0.2878787879 0.005764525084 -0.00050009999) +(0.2878787879 0.007161424088 -0.00050009999) +(0.2878787879 0.008241980085 -0.00050009999) +(0.2878787879 0.008975162042 -0.00050009999) +(0.2878787879 0.009429475607 -0.00050009999) +(0.2878787879 0.009695336429 -0.00050009999) +(0.2878787879 0.00984573433 -0.00050009999) +(0.2878787879 0.009929188095 -0.00050009999) +(0.2878787879 0.009975 -0.00050009999) +(0.2878787879 0.01 -0.00050009999) +(0.2929292929 0 -0.00050009999) +(0.2929292929 2.5e-05 -0.00050009999) +(0.2929292929 7.08119053e-05 -0.00050009999) +(0.2929292929 0.00015426567 -0.00050009999) +(0.2929292929 0.0003046635713 -0.00050009999) +(0.2929292929 0.0005705243934 -0.00050009999) +(0.2929292929 0.001024837958 -0.00050009999) +(0.2929292929 0.001758019915 -0.00050009999) +(0.2929292929 0.002838575912 -0.00050009999) +(0.2929292929 0.004235474916 -0.00050009999) +(0.2929292929 0.005764525084 -0.00050009999) +(0.2929292929 0.007161424088 -0.00050009999) +(0.2929292929 0.008241980085 -0.00050009999) +(0.2929292929 0.008975162042 -0.00050009999) +(0.2929292929 0.009429475607 -0.00050009999) +(0.2929292929 0.009695336429 -0.00050009999) +(0.2929292929 0.00984573433 -0.00050009999) +(0.2929292929 0.009929188095 -0.00050009999) +(0.2929292929 0.009975 -0.00050009999) +(0.2929292929 0.01 -0.00050009999) +(0.297979798 0 -0.00050009999) +(0.297979798 2.5e-05 -0.00050009999) +(0.297979798 7.08119053e-05 -0.00050009999) +(0.297979798 0.00015426567 -0.00050009999) +(0.297979798 0.0003046635713 -0.00050009999) +(0.297979798 0.0005705243934 -0.00050009999) +(0.297979798 0.001024837958 -0.00050009999) +(0.297979798 0.001758019915 -0.00050009999) +(0.297979798 0.002838575912 -0.00050009999) +(0.297979798 0.004235474916 -0.00050009999) +(0.297979798 0.005764525084 -0.00050009999) +(0.297979798 0.007161424088 -0.00050009999) +(0.297979798 0.008241980085 -0.00050009999) +(0.297979798 0.008975162042 -0.00050009999) +(0.297979798 0.009429475607 -0.00050009999) +(0.297979798 0.009695336429 -0.00050009999) +(0.297979798 0.00984573433 -0.00050009999) +(0.297979798 0.009929188095 -0.00050009999) +(0.297979798 0.009975 -0.00050009999) +(0.297979798 0.01 -0.00050009999) +(0.303030303 0 -0.00050009999) +(0.303030303 2.5e-05 -0.00050009999) +(0.303030303 7.08119053e-05 -0.00050009999) +(0.303030303 0.00015426567 -0.00050009999) +(0.303030303 0.0003046635713 -0.00050009999) +(0.303030303 0.0005705243934 -0.00050009999) +(0.303030303 0.001024837958 -0.00050009999) +(0.303030303 0.001758019915 -0.00050009999) +(0.303030303 0.002838575912 -0.00050009999) +(0.303030303 0.004235474916 -0.00050009999) +(0.303030303 0.005764525084 -0.00050009999) +(0.303030303 0.007161424088 -0.00050009999) +(0.303030303 0.008241980085 -0.00050009999) +(0.303030303 0.008975162042 -0.00050009999) +(0.303030303 0.009429475607 -0.00050009999) +(0.303030303 0.009695336429 -0.00050009999) +(0.303030303 0.00984573433 -0.00050009999) +(0.303030303 0.009929188095 -0.00050009999) +(0.303030303 0.009975 -0.00050009999) +(0.303030303 0.01 -0.00050009999) +(0.3080808081 0 -0.00050009999) +(0.3080808081 2.5e-05 -0.00050009999) +(0.3080808081 7.08119053e-05 -0.00050009999) +(0.3080808081 0.00015426567 -0.00050009999) +(0.3080808081 0.0003046635713 -0.00050009999) +(0.3080808081 0.0005705243934 -0.00050009999) +(0.3080808081 0.001024837958 -0.00050009999) +(0.3080808081 0.001758019915 -0.00050009999) +(0.3080808081 0.002838575912 -0.00050009999) +(0.3080808081 0.004235474916 -0.00050009999) +(0.3080808081 0.005764525084 -0.00050009999) +(0.3080808081 0.007161424088 -0.00050009999) +(0.3080808081 0.008241980085 -0.00050009999) +(0.3080808081 0.008975162042 -0.00050009999) +(0.3080808081 0.009429475607 -0.00050009999) +(0.3080808081 0.009695336429 -0.00050009999) +(0.3080808081 0.00984573433 -0.00050009999) +(0.3080808081 0.009929188095 -0.00050009999) +(0.3080808081 0.009975 -0.00050009999) +(0.3080808081 0.01 -0.00050009999) +(0.3131313131 0 -0.00050009999) +(0.3131313131 2.5e-05 -0.00050009999) +(0.3131313131 7.08119053e-05 -0.00050009999) +(0.3131313131 0.00015426567 -0.00050009999) +(0.3131313131 0.0003046635713 -0.00050009999) +(0.3131313131 0.0005705243934 -0.00050009999) +(0.3131313131 0.001024837958 -0.00050009999) +(0.3131313131 0.001758019915 -0.00050009999) +(0.3131313131 0.002838575912 -0.00050009999) +(0.3131313131 0.004235474916 -0.00050009999) +(0.3131313131 0.005764525084 -0.00050009999) +(0.3131313131 0.007161424088 -0.00050009999) +(0.3131313131 0.008241980085 -0.00050009999) +(0.3131313131 0.008975162042 -0.00050009999) +(0.3131313131 0.009429475607 -0.00050009999) +(0.3131313131 0.009695336429 -0.00050009999) +(0.3131313131 0.00984573433 -0.00050009999) +(0.3131313131 0.009929188095 -0.00050009999) +(0.3131313131 0.009975 -0.00050009999) +(0.3131313131 0.01 -0.00050009999) +(0.3181818182 0 -0.00050009999) +(0.3181818182 2.5e-05 -0.00050009999) +(0.3181818182 7.08119053e-05 -0.00050009999) +(0.3181818182 0.00015426567 -0.00050009999) +(0.3181818182 0.0003046635713 -0.00050009999) +(0.3181818182 0.0005705243934 -0.00050009999) +(0.3181818182 0.001024837958 -0.00050009999) +(0.3181818182 0.001758019915 -0.00050009999) +(0.3181818182 0.002838575912 -0.00050009999) +(0.3181818182 0.004235474916 -0.00050009999) +(0.3181818182 0.005764525084 -0.00050009999) +(0.3181818182 0.007161424088 -0.00050009999) +(0.3181818182 0.008241980085 -0.00050009999) +(0.3181818182 0.008975162042 -0.00050009999) +(0.3181818182 0.009429475607 -0.00050009999) +(0.3181818182 0.009695336429 -0.00050009999) +(0.3181818182 0.00984573433 -0.00050009999) +(0.3181818182 0.009929188095 -0.00050009999) +(0.3181818182 0.009975 -0.00050009999) +(0.3181818182 0.01 -0.00050009999) +(0.3232323232 0 -0.00050009999) +(0.3232323232 2.5e-05 -0.00050009999) +(0.3232323232 7.08119053e-05 -0.00050009999) +(0.3232323232 0.00015426567 -0.00050009999) +(0.3232323232 0.0003046635713 -0.00050009999) +(0.3232323232 0.0005705243934 -0.00050009999) +(0.3232323232 0.001024837958 -0.00050009999) +(0.3232323232 0.001758019915 -0.00050009999) +(0.3232323232 0.002838575912 -0.00050009999) +(0.3232323232 0.004235474916 -0.00050009999) +(0.3232323232 0.005764525084 -0.00050009999) +(0.3232323232 0.007161424088 -0.00050009999) +(0.3232323232 0.008241980085 -0.00050009999) +(0.3232323232 0.008975162042 -0.00050009999) +(0.3232323232 0.009429475607 -0.00050009999) +(0.3232323232 0.009695336429 -0.00050009999) +(0.3232323232 0.00984573433 -0.00050009999) +(0.3232323232 0.009929188095 -0.00050009999) +(0.3232323232 0.009975 -0.00050009999) +(0.3232323232 0.01 -0.00050009999) +(0.3282828283 0 -0.00050009999) +(0.3282828283 2.5e-05 -0.00050009999) +(0.3282828283 7.08119053e-05 -0.00050009999) +(0.3282828283 0.00015426567 -0.00050009999) +(0.3282828283 0.0003046635713 -0.00050009999) +(0.3282828283 0.0005705243934 -0.00050009999) +(0.3282828283 0.001024837958 -0.00050009999) +(0.3282828283 0.001758019915 -0.00050009999) +(0.3282828283 0.002838575912 -0.00050009999) +(0.3282828283 0.004235474916 -0.00050009999) +(0.3282828283 0.005764525084 -0.00050009999) +(0.3282828283 0.007161424088 -0.00050009999) +(0.3282828283 0.008241980085 -0.00050009999) +(0.3282828283 0.008975162042 -0.00050009999) +(0.3282828283 0.009429475607 -0.00050009999) +(0.3282828283 0.009695336429 -0.00050009999) +(0.3282828283 0.00984573433 -0.00050009999) +(0.3282828283 0.009929188095 -0.00050009999) +(0.3282828283 0.009975 -0.00050009999) +(0.3282828283 0.01 -0.00050009999) +(0.3333333333 0 -0.00050009999) +(0.3333333333 2.5e-05 -0.00050009999) +(0.3333333333 7.08119053e-05 -0.00050009999) +(0.3333333333 0.00015426567 -0.00050009999) +(0.3333333333 0.0003046635713 -0.00050009999) +(0.3333333333 0.0005705243934 -0.00050009999) +(0.3333333333 0.001024837958 -0.00050009999) +(0.3333333333 0.001758019915 -0.00050009999) +(0.3333333333 0.002838575912 -0.00050009999) +(0.3333333333 0.004235474916 -0.00050009999) +(0.3333333333 0.005764525084 -0.00050009999) +(0.3333333333 0.007161424088 -0.00050009999) +(0.3333333333 0.008241980085 -0.00050009999) +(0.3333333333 0.008975162042 -0.00050009999) +(0.3333333333 0.009429475607 -0.00050009999) +(0.3333333333 0.009695336429 -0.00050009999) +(0.3333333333 0.00984573433 -0.00050009999) +(0.3333333333 0.009929188095 -0.00050009999) +(0.3333333333 0.009975 -0.00050009999) +(0.3333333333 0.01 -0.00050009999) +(0.3383838384 0 -0.00050009999) +(0.3383838384 2.5e-05 -0.00050009999) +(0.3383838384 7.08119053e-05 -0.00050009999) +(0.3383838384 0.00015426567 -0.00050009999) +(0.3383838384 0.0003046635713 -0.00050009999) +(0.3383838384 0.0005705243934 -0.00050009999) +(0.3383838384 0.001024837958 -0.00050009999) +(0.3383838384 0.001758019915 -0.00050009999) +(0.3383838384 0.002838575912 -0.00050009999) +(0.3383838384 0.004235474916 -0.00050009999) +(0.3383838384 0.005764525084 -0.00050009999) +(0.3383838384 0.007161424088 -0.00050009999) +(0.3383838384 0.008241980085 -0.00050009999) +(0.3383838384 0.008975162042 -0.00050009999) +(0.3383838384 0.009429475607 -0.00050009999) +(0.3383838384 0.009695336429 -0.00050009999) +(0.3383838384 0.00984573433 -0.00050009999) +(0.3383838384 0.009929188095 -0.00050009999) +(0.3383838384 0.009975 -0.00050009999) +(0.3383838384 0.01 -0.00050009999) +(0.3434343434 0 -0.00050009999) +(0.3434343434 2.5e-05 -0.00050009999) +(0.3434343434 7.08119053e-05 -0.00050009999) +(0.3434343434 0.00015426567 -0.00050009999) +(0.3434343434 0.0003046635713 -0.00050009999) +(0.3434343434 0.0005705243934 -0.00050009999) +(0.3434343434 0.001024837958 -0.00050009999) +(0.3434343434 0.001758019915 -0.00050009999) +(0.3434343434 0.002838575912 -0.00050009999) +(0.3434343434 0.004235474916 -0.00050009999) +(0.3434343434 0.005764525084 -0.00050009999) +(0.3434343434 0.007161424088 -0.00050009999) +(0.3434343434 0.008241980085 -0.00050009999) +(0.3434343434 0.008975162042 -0.00050009999) +(0.3434343434 0.009429475607 -0.00050009999) +(0.3434343434 0.009695336429 -0.00050009999) +(0.3434343434 0.00984573433 -0.00050009999) +(0.3434343434 0.009929188095 -0.00050009999) +(0.3434343434 0.009975 -0.00050009999) +(0.3434343434 0.01 -0.00050009999) +(0.3484848485 0 -0.00050009999) +(0.3484848485 2.5e-05 -0.00050009999) +(0.3484848485 7.08119053e-05 -0.00050009999) +(0.3484848485 0.00015426567 -0.00050009999) +(0.3484848485 0.0003046635713 -0.00050009999) +(0.3484848485 0.0005705243934 -0.00050009999) +(0.3484848485 0.001024837958 -0.00050009999) +(0.3484848485 0.001758019915 -0.00050009999) +(0.3484848485 0.002838575912 -0.00050009999) +(0.3484848485 0.004235474916 -0.00050009999) +(0.3484848485 0.005764525084 -0.00050009999) +(0.3484848485 0.007161424088 -0.00050009999) +(0.3484848485 0.008241980085 -0.00050009999) +(0.3484848485 0.008975162042 -0.00050009999) +(0.3484848485 0.009429475607 -0.00050009999) +(0.3484848485 0.009695336429 -0.00050009999) +(0.3484848485 0.00984573433 -0.00050009999) +(0.3484848485 0.009929188095 -0.00050009999) +(0.3484848485 0.009975 -0.00050009999) +(0.3484848485 0.01 -0.00050009999) +(0.3535353535 0 -0.00050009999) +(0.3535353535 2.5e-05 -0.00050009999) +(0.3535353535 7.08119053e-05 -0.00050009999) +(0.3535353535 0.00015426567 -0.00050009999) +(0.3535353535 0.0003046635713 -0.00050009999) +(0.3535353535 0.0005705243934 -0.00050009999) +(0.3535353535 0.001024837958 -0.00050009999) +(0.3535353535 0.001758019915 -0.00050009999) +(0.3535353535 0.002838575912 -0.00050009999) +(0.3535353535 0.004235474916 -0.00050009999) +(0.3535353535 0.005764525084 -0.00050009999) +(0.3535353535 0.007161424088 -0.00050009999) +(0.3535353535 0.008241980085 -0.00050009999) +(0.3535353535 0.008975162042 -0.00050009999) +(0.3535353535 0.009429475607 -0.00050009999) +(0.3535353535 0.009695336429 -0.00050009999) +(0.3535353535 0.00984573433 -0.00050009999) +(0.3535353535 0.009929188095 -0.00050009999) +(0.3535353535 0.009975 -0.00050009999) +(0.3535353535 0.01 -0.00050009999) +(0.3585858586 0 -0.00050009999) +(0.3585858586 2.5e-05 -0.00050009999) +(0.3585858586 7.08119053e-05 -0.00050009999) +(0.3585858586 0.00015426567 -0.00050009999) +(0.3585858586 0.0003046635713 -0.00050009999) +(0.3585858586 0.0005705243934 -0.00050009999) +(0.3585858586 0.001024837958 -0.00050009999) +(0.3585858586 0.001758019915 -0.00050009999) +(0.3585858586 0.002838575912 -0.00050009999) +(0.3585858586 0.004235474916 -0.00050009999) +(0.3585858586 0.005764525084 -0.00050009999) +(0.3585858586 0.007161424088 -0.00050009999) +(0.3585858586 0.008241980085 -0.00050009999) +(0.3585858586 0.008975162042 -0.00050009999) +(0.3585858586 0.009429475607 -0.00050009999) +(0.3585858586 0.009695336429 -0.00050009999) +(0.3585858586 0.00984573433 -0.00050009999) +(0.3585858586 0.009929188095 -0.00050009999) +(0.3585858586 0.009975 -0.00050009999) +(0.3585858586 0.01 -0.00050009999) +(0.3636363636 0 -0.00050009999) +(0.3636363636 2.5e-05 -0.00050009999) +(0.3636363636 7.08119053e-05 -0.00050009999) +(0.3636363636 0.00015426567 -0.00050009999) +(0.3636363636 0.0003046635713 -0.00050009999) +(0.3636363636 0.0005705243934 -0.00050009999) +(0.3636363636 0.001024837958 -0.00050009999) +(0.3636363636 0.001758019915 -0.00050009999) +(0.3636363636 0.002838575912 -0.00050009999) +(0.3636363636 0.004235474916 -0.00050009999) +(0.3636363636 0.005764525084 -0.00050009999) +(0.3636363636 0.007161424088 -0.00050009999) +(0.3636363636 0.008241980085 -0.00050009999) +(0.3636363636 0.008975162042 -0.00050009999) +(0.3636363636 0.009429475607 -0.00050009999) +(0.3636363636 0.009695336429 -0.00050009999) +(0.3636363636 0.00984573433 -0.00050009999) +(0.3636363636 0.009929188095 -0.00050009999) +(0.3636363636 0.009975 -0.00050009999) +(0.3636363636 0.01 -0.00050009999) +(0.3686868687 0 -0.00050009999) +(0.3686868687 2.5e-05 -0.00050009999) +(0.3686868687 7.08119053e-05 -0.00050009999) +(0.3686868687 0.00015426567 -0.00050009999) +(0.3686868687 0.0003046635713 -0.00050009999) +(0.3686868687 0.0005705243934 -0.00050009999) +(0.3686868687 0.001024837958 -0.00050009999) +(0.3686868687 0.001758019915 -0.00050009999) +(0.3686868687 0.002838575912 -0.00050009999) +(0.3686868687 0.004235474916 -0.00050009999) +(0.3686868687 0.005764525084 -0.00050009999) +(0.3686868687 0.007161424088 -0.00050009999) +(0.3686868687 0.008241980085 -0.00050009999) +(0.3686868687 0.008975162042 -0.00050009999) +(0.3686868687 0.009429475607 -0.00050009999) +(0.3686868687 0.009695336429 -0.00050009999) +(0.3686868687 0.00984573433 -0.00050009999) +(0.3686868687 0.009929188095 -0.00050009999) +(0.3686868687 0.009975 -0.00050009999) +(0.3686868687 0.01 -0.00050009999) +(0.3737373737 0 -0.00050009999) +(0.3737373737 2.5e-05 -0.00050009999) +(0.3737373737 7.08119053e-05 -0.00050009999) +(0.3737373737 0.00015426567 -0.00050009999) +(0.3737373737 0.0003046635713 -0.00050009999) +(0.3737373737 0.0005705243934 -0.00050009999) +(0.3737373737 0.001024837958 -0.00050009999) +(0.3737373737 0.001758019915 -0.00050009999) +(0.3737373737 0.002838575912 -0.00050009999) +(0.3737373737 0.004235474916 -0.00050009999) +(0.3737373737 0.005764525084 -0.00050009999) +(0.3737373737 0.007161424088 -0.00050009999) +(0.3737373737 0.008241980085 -0.00050009999) +(0.3737373737 0.008975162042 -0.00050009999) +(0.3737373737 0.009429475607 -0.00050009999) +(0.3737373737 0.009695336429 -0.00050009999) +(0.3737373737 0.00984573433 -0.00050009999) +(0.3737373737 0.009929188095 -0.00050009999) +(0.3737373737 0.009975 -0.00050009999) +(0.3737373737 0.01 -0.00050009999) +(0.3787878788 0 -0.00050009999) +(0.3787878788 2.5e-05 -0.00050009999) +(0.3787878788 7.08119053e-05 -0.00050009999) +(0.3787878788 0.00015426567 -0.00050009999) +(0.3787878788 0.0003046635713 -0.00050009999) +(0.3787878788 0.0005705243934 -0.00050009999) +(0.3787878788 0.001024837958 -0.00050009999) +(0.3787878788 0.001758019915 -0.00050009999) +(0.3787878788 0.002838575912 -0.00050009999) +(0.3787878788 0.004235474916 -0.00050009999) +(0.3787878788 0.005764525084 -0.00050009999) +(0.3787878788 0.007161424088 -0.00050009999) +(0.3787878788 0.008241980085 -0.00050009999) +(0.3787878788 0.008975162042 -0.00050009999) +(0.3787878788 0.009429475607 -0.00050009999) +(0.3787878788 0.009695336429 -0.00050009999) +(0.3787878788 0.00984573433 -0.00050009999) +(0.3787878788 0.009929188095 -0.00050009999) +(0.3787878788 0.009975 -0.00050009999) +(0.3787878788 0.01 -0.00050009999) +(0.3838383838 0 -0.00050009999) +(0.3838383838 2.5e-05 -0.00050009999) +(0.3838383838 7.08119053e-05 -0.00050009999) +(0.3838383838 0.00015426567 -0.00050009999) +(0.3838383838 0.0003046635713 -0.00050009999) +(0.3838383838 0.0005705243934 -0.00050009999) +(0.3838383838 0.001024837958 -0.00050009999) +(0.3838383838 0.001758019915 -0.00050009999) +(0.3838383838 0.002838575912 -0.00050009999) +(0.3838383838 0.004235474916 -0.00050009999) +(0.3838383838 0.005764525084 -0.00050009999) +(0.3838383838 0.007161424088 -0.00050009999) +(0.3838383838 0.008241980085 -0.00050009999) +(0.3838383838 0.008975162042 -0.00050009999) +(0.3838383838 0.009429475607 -0.00050009999) +(0.3838383838 0.009695336429 -0.00050009999) +(0.3838383838 0.00984573433 -0.00050009999) +(0.3838383838 0.009929188095 -0.00050009999) +(0.3838383838 0.009975 -0.00050009999) +(0.3838383838 0.01 -0.00050009999) +(0.3888888889 0 -0.00050009999) +(0.3888888889 2.5e-05 -0.00050009999) +(0.3888888889 7.08119053e-05 -0.00050009999) +(0.3888888889 0.00015426567 -0.00050009999) +(0.3888888889 0.0003046635713 -0.00050009999) +(0.3888888889 0.0005705243934 -0.00050009999) +(0.3888888889 0.001024837958 -0.00050009999) +(0.3888888889 0.001758019915 -0.00050009999) +(0.3888888889 0.002838575912 -0.00050009999) +(0.3888888889 0.004235474916 -0.00050009999) +(0.3888888889 0.005764525084 -0.00050009999) +(0.3888888889 0.007161424088 -0.00050009999) +(0.3888888889 0.008241980085 -0.00050009999) +(0.3888888889 0.008975162042 -0.00050009999) +(0.3888888889 0.009429475607 -0.00050009999) +(0.3888888889 0.009695336429 -0.00050009999) +(0.3888888889 0.00984573433 -0.00050009999) +(0.3888888889 0.009929188095 -0.00050009999) +(0.3888888889 0.009975 -0.00050009999) +(0.3888888889 0.01 -0.00050009999) +(0.3939393939 0 -0.00050009999) +(0.3939393939 2.5e-05 -0.00050009999) +(0.3939393939 7.08119053e-05 -0.00050009999) +(0.3939393939 0.00015426567 -0.00050009999) +(0.3939393939 0.0003046635713 -0.00050009999) +(0.3939393939 0.0005705243934 -0.00050009999) +(0.3939393939 0.001024837958 -0.00050009999) +(0.3939393939 0.001758019915 -0.00050009999) +(0.3939393939 0.002838575912 -0.00050009999) +(0.3939393939 0.004235474916 -0.00050009999) +(0.3939393939 0.005764525084 -0.00050009999) +(0.3939393939 0.007161424088 -0.00050009999) +(0.3939393939 0.008241980085 -0.00050009999) +(0.3939393939 0.008975162042 -0.00050009999) +(0.3939393939 0.009429475607 -0.00050009999) +(0.3939393939 0.009695336429 -0.00050009999) +(0.3939393939 0.00984573433 -0.00050009999) +(0.3939393939 0.009929188095 -0.00050009999) +(0.3939393939 0.009975 -0.00050009999) +(0.3939393939 0.01 -0.00050009999) +(0.398989899 0 -0.00050009999) +(0.398989899 2.5e-05 -0.00050009999) +(0.398989899 7.08119053e-05 -0.00050009999) +(0.398989899 0.00015426567 -0.00050009999) +(0.398989899 0.0003046635713 -0.00050009999) +(0.398989899 0.0005705243934 -0.00050009999) +(0.398989899 0.001024837958 -0.00050009999) +(0.398989899 0.001758019915 -0.00050009999) +(0.398989899 0.002838575912 -0.00050009999) +(0.398989899 0.004235474916 -0.00050009999) +(0.398989899 0.005764525084 -0.00050009999) +(0.398989899 0.007161424088 -0.00050009999) +(0.398989899 0.008241980085 -0.00050009999) +(0.398989899 0.008975162042 -0.00050009999) +(0.398989899 0.009429475607 -0.00050009999) +(0.398989899 0.009695336429 -0.00050009999) +(0.398989899 0.00984573433 -0.00050009999) +(0.398989899 0.009929188095 -0.00050009999) +(0.398989899 0.009975 -0.00050009999) +(0.398989899 0.01 -0.00050009999) +(0.404040404 0 -0.00050009999) +(0.404040404 2.5e-05 -0.00050009999) +(0.404040404 7.08119053e-05 -0.00050009999) +(0.404040404 0.00015426567 -0.00050009999) +(0.404040404 0.0003046635713 -0.00050009999) +(0.404040404 0.0005705243934 -0.00050009999) +(0.404040404 0.001024837958 -0.00050009999) +(0.404040404 0.001758019915 -0.00050009999) +(0.404040404 0.002838575912 -0.00050009999) +(0.404040404 0.004235474916 -0.00050009999) +(0.404040404 0.005764525084 -0.00050009999) +(0.404040404 0.007161424088 -0.00050009999) +(0.404040404 0.008241980085 -0.00050009999) +(0.404040404 0.008975162042 -0.00050009999) +(0.404040404 0.009429475607 -0.00050009999) +(0.404040404 0.009695336429 -0.00050009999) +(0.404040404 0.00984573433 -0.00050009999) +(0.404040404 0.009929188095 -0.00050009999) +(0.404040404 0.009975 -0.00050009999) +(0.404040404 0.01 -0.00050009999) +(0.4090909091 0 -0.00050009999) +(0.4090909091 2.5e-05 -0.00050009999) +(0.4090909091 7.08119053e-05 -0.00050009999) +(0.4090909091 0.00015426567 -0.00050009999) +(0.4090909091 0.0003046635713 -0.00050009999) +(0.4090909091 0.0005705243934 -0.00050009999) +(0.4090909091 0.001024837958 -0.00050009999) +(0.4090909091 0.001758019915 -0.00050009999) +(0.4090909091 0.002838575912 -0.00050009999) +(0.4090909091 0.004235474916 -0.00050009999) +(0.4090909091 0.005764525084 -0.00050009999) +(0.4090909091 0.007161424088 -0.00050009999) +(0.4090909091 0.008241980085 -0.00050009999) +(0.4090909091 0.008975162042 -0.00050009999) +(0.4090909091 0.009429475607 -0.00050009999) +(0.4090909091 0.009695336429 -0.00050009999) +(0.4090909091 0.00984573433 -0.00050009999) +(0.4090909091 0.009929188095 -0.00050009999) +(0.4090909091 0.009975 -0.00050009999) +(0.4090909091 0.01 -0.00050009999) +(0.4141414141 0 -0.00050009999) +(0.4141414141 2.5e-05 -0.00050009999) +(0.4141414141 7.08119053e-05 -0.00050009999) +(0.4141414141 0.00015426567 -0.00050009999) +(0.4141414141 0.0003046635713 -0.00050009999) +(0.4141414141 0.0005705243934 -0.00050009999) +(0.4141414141 0.001024837958 -0.00050009999) +(0.4141414141 0.001758019915 -0.00050009999) +(0.4141414141 0.002838575912 -0.00050009999) +(0.4141414141 0.004235474916 -0.00050009999) +(0.4141414141 0.005764525084 -0.00050009999) +(0.4141414141 0.007161424088 -0.00050009999) +(0.4141414141 0.008241980085 -0.00050009999) +(0.4141414141 0.008975162042 -0.00050009999) +(0.4141414141 0.009429475607 -0.00050009999) +(0.4141414141 0.009695336429 -0.00050009999) +(0.4141414141 0.00984573433 -0.00050009999) +(0.4141414141 0.009929188095 -0.00050009999) +(0.4141414141 0.009975 -0.00050009999) +(0.4141414141 0.01 -0.00050009999) +(0.4191919192 0 -0.00050009999) +(0.4191919192 2.5e-05 -0.00050009999) +(0.4191919192 7.08119053e-05 -0.00050009999) +(0.4191919192 0.00015426567 -0.00050009999) +(0.4191919192 0.0003046635713 -0.00050009999) +(0.4191919192 0.0005705243934 -0.00050009999) +(0.4191919192 0.001024837958 -0.00050009999) +(0.4191919192 0.001758019915 -0.00050009999) +(0.4191919192 0.002838575912 -0.00050009999) +(0.4191919192 0.004235474916 -0.00050009999) +(0.4191919192 0.005764525084 -0.00050009999) +(0.4191919192 0.007161424088 -0.00050009999) +(0.4191919192 0.008241980085 -0.00050009999) +(0.4191919192 0.008975162042 -0.00050009999) +(0.4191919192 0.009429475607 -0.00050009999) +(0.4191919192 0.009695336429 -0.00050009999) +(0.4191919192 0.00984573433 -0.00050009999) +(0.4191919192 0.009929188095 -0.00050009999) +(0.4191919192 0.009975 -0.00050009999) +(0.4191919192 0.01 -0.00050009999) +(0.4242424242 0 -0.00050009999) +(0.4242424242 2.5e-05 -0.00050009999) +(0.4242424242 7.08119053e-05 -0.00050009999) +(0.4242424242 0.00015426567 -0.00050009999) +(0.4242424242 0.0003046635713 -0.00050009999) +(0.4242424242 0.0005705243934 -0.00050009999) +(0.4242424242 0.001024837958 -0.00050009999) +(0.4242424242 0.001758019915 -0.00050009999) +(0.4242424242 0.002838575912 -0.00050009999) +(0.4242424242 0.004235474916 -0.00050009999) +(0.4242424242 0.005764525084 -0.00050009999) +(0.4242424242 0.007161424088 -0.00050009999) +(0.4242424242 0.008241980085 -0.00050009999) +(0.4242424242 0.008975162042 -0.00050009999) +(0.4242424242 0.009429475607 -0.00050009999) +(0.4242424242 0.009695336429 -0.00050009999) +(0.4242424242 0.00984573433 -0.00050009999) +(0.4242424242 0.009929188095 -0.00050009999) +(0.4242424242 0.009975 -0.00050009999) +(0.4242424242 0.01 -0.00050009999) +(0.4292929293 0 -0.00050009999) +(0.4292929293 2.5e-05 -0.00050009999) +(0.4292929293 7.08119053e-05 -0.00050009999) +(0.4292929293 0.00015426567 -0.00050009999) +(0.4292929293 0.0003046635713 -0.00050009999) +(0.4292929293 0.0005705243934 -0.00050009999) +(0.4292929293 0.001024837958 -0.00050009999) +(0.4292929293 0.001758019915 -0.00050009999) +(0.4292929293 0.002838575912 -0.00050009999) +(0.4292929293 0.004235474916 -0.00050009999) +(0.4292929293 0.005764525084 -0.00050009999) +(0.4292929293 0.007161424088 -0.00050009999) +(0.4292929293 0.008241980085 -0.00050009999) +(0.4292929293 0.008975162042 -0.00050009999) +(0.4292929293 0.009429475607 -0.00050009999) +(0.4292929293 0.009695336429 -0.00050009999) +(0.4292929293 0.00984573433 -0.00050009999) +(0.4292929293 0.009929188095 -0.00050009999) +(0.4292929293 0.009975 -0.00050009999) +(0.4292929293 0.01 -0.00050009999) +(0.4343434343 0 -0.00050009999) +(0.4343434343 2.5e-05 -0.00050009999) +(0.4343434343 7.08119053e-05 -0.00050009999) +(0.4343434343 0.00015426567 -0.00050009999) +(0.4343434343 0.0003046635713 -0.00050009999) +(0.4343434343 0.0005705243934 -0.00050009999) +(0.4343434343 0.001024837958 -0.00050009999) +(0.4343434343 0.001758019915 -0.00050009999) +(0.4343434343 0.002838575912 -0.00050009999) +(0.4343434343 0.004235474916 -0.00050009999) +(0.4343434343 0.005764525084 -0.00050009999) +(0.4343434343 0.007161424088 -0.00050009999) +(0.4343434343 0.008241980085 -0.00050009999) +(0.4343434343 0.008975162042 -0.00050009999) +(0.4343434343 0.009429475607 -0.00050009999) +(0.4343434343 0.009695336429 -0.00050009999) +(0.4343434343 0.00984573433 -0.00050009999) +(0.4343434343 0.009929188095 -0.00050009999) +(0.4343434343 0.009975 -0.00050009999) +(0.4343434343 0.01 -0.00050009999) +(0.4393939394 0 -0.00050009999) +(0.4393939394 2.5e-05 -0.00050009999) +(0.4393939394 7.08119053e-05 -0.00050009999) +(0.4393939394 0.00015426567 -0.00050009999) +(0.4393939394 0.0003046635713 -0.00050009999) +(0.4393939394 0.0005705243934 -0.00050009999) +(0.4393939394 0.001024837958 -0.00050009999) +(0.4393939394 0.001758019915 -0.00050009999) +(0.4393939394 0.002838575912 -0.00050009999) +(0.4393939394 0.004235474916 -0.00050009999) +(0.4393939394 0.005764525084 -0.00050009999) +(0.4393939394 0.007161424088 -0.00050009999) +(0.4393939394 0.008241980085 -0.00050009999) +(0.4393939394 0.008975162042 -0.00050009999) +(0.4393939394 0.009429475607 -0.00050009999) +(0.4393939394 0.009695336429 -0.00050009999) +(0.4393939394 0.00984573433 -0.00050009999) +(0.4393939394 0.009929188095 -0.00050009999) +(0.4393939394 0.009975 -0.00050009999) +(0.4393939394 0.01 -0.00050009999) +(0.4444444444 0 -0.00050009999) +(0.4444444444 2.5e-05 -0.00050009999) +(0.4444444444 7.08119053e-05 -0.00050009999) +(0.4444444444 0.00015426567 -0.00050009999) +(0.4444444444 0.0003046635713 -0.00050009999) +(0.4444444444 0.0005705243934 -0.00050009999) +(0.4444444444 0.001024837958 -0.00050009999) +(0.4444444444 0.001758019915 -0.00050009999) +(0.4444444444 0.002838575912 -0.00050009999) +(0.4444444444 0.004235474916 -0.00050009999) +(0.4444444444 0.005764525084 -0.00050009999) +(0.4444444444 0.007161424088 -0.00050009999) +(0.4444444444 0.008241980085 -0.00050009999) +(0.4444444444 0.008975162042 -0.00050009999) +(0.4444444444 0.009429475607 -0.00050009999) +(0.4444444444 0.009695336429 -0.00050009999) +(0.4444444444 0.00984573433 -0.00050009999) +(0.4444444444 0.009929188095 -0.00050009999) +(0.4444444444 0.009975 -0.00050009999) +(0.4444444444 0.01 -0.00050009999) +(0.4494949495 0 -0.00050009999) +(0.4494949495 2.5e-05 -0.00050009999) +(0.4494949495 7.08119053e-05 -0.00050009999) +(0.4494949495 0.00015426567 -0.00050009999) +(0.4494949495 0.0003046635713 -0.00050009999) +(0.4494949495 0.0005705243934 -0.00050009999) +(0.4494949495 0.001024837958 -0.00050009999) +(0.4494949495 0.001758019915 -0.00050009999) +(0.4494949495 0.002838575912 -0.00050009999) +(0.4494949495 0.004235474916 -0.00050009999) +(0.4494949495 0.005764525084 -0.00050009999) +(0.4494949495 0.007161424088 -0.00050009999) +(0.4494949495 0.008241980085 -0.00050009999) +(0.4494949495 0.008975162042 -0.00050009999) +(0.4494949495 0.009429475607 -0.00050009999) +(0.4494949495 0.009695336429 -0.00050009999) +(0.4494949495 0.00984573433 -0.00050009999) +(0.4494949495 0.009929188095 -0.00050009999) +(0.4494949495 0.009975 -0.00050009999) +(0.4494949495 0.01 -0.00050009999) +(0.4545454545 0 -0.00050009999) +(0.4545454545 2.5e-05 -0.00050009999) +(0.4545454545 7.08119053e-05 -0.00050009999) +(0.4545454545 0.00015426567 -0.00050009999) +(0.4545454545 0.0003046635713 -0.00050009999) +(0.4545454545 0.0005705243934 -0.00050009999) +(0.4545454545 0.001024837958 -0.00050009999) +(0.4545454545 0.001758019915 -0.00050009999) +(0.4545454545 0.002838575912 -0.00050009999) +(0.4545454545 0.004235474916 -0.00050009999) +(0.4545454545 0.005764525084 -0.00050009999) +(0.4545454545 0.007161424088 -0.00050009999) +(0.4545454545 0.008241980085 -0.00050009999) +(0.4545454545 0.008975162042 -0.00050009999) +(0.4545454545 0.009429475607 -0.00050009999) +(0.4545454545 0.009695336429 -0.00050009999) +(0.4545454545 0.00984573433 -0.00050009999) +(0.4545454545 0.009929188095 -0.00050009999) +(0.4545454545 0.009975 -0.00050009999) +(0.4545454545 0.01 -0.00050009999) +(0.4595959596 0 -0.00050009999) +(0.4595959596 2.5e-05 -0.00050009999) +(0.4595959596 7.08119053e-05 -0.00050009999) +(0.4595959596 0.00015426567 -0.00050009999) +(0.4595959596 0.0003046635713 -0.00050009999) +(0.4595959596 0.0005705243934 -0.00050009999) +(0.4595959596 0.001024837958 -0.00050009999) +(0.4595959596 0.001758019915 -0.00050009999) +(0.4595959596 0.002838575912 -0.00050009999) +(0.4595959596 0.004235474916 -0.00050009999) +(0.4595959596 0.005764525084 -0.00050009999) +(0.4595959596 0.007161424088 -0.00050009999) +(0.4595959596 0.008241980085 -0.00050009999) +(0.4595959596 0.008975162042 -0.00050009999) +(0.4595959596 0.009429475607 -0.00050009999) +(0.4595959596 0.009695336429 -0.00050009999) +(0.4595959596 0.00984573433 -0.00050009999) +(0.4595959596 0.009929188095 -0.00050009999) +(0.4595959596 0.009975 -0.00050009999) +(0.4595959596 0.01 -0.00050009999) +(0.4646464646 0 -0.00050009999) +(0.4646464646 2.5e-05 -0.00050009999) +(0.4646464646 7.08119053e-05 -0.00050009999) +(0.4646464646 0.00015426567 -0.00050009999) +(0.4646464646 0.0003046635713 -0.00050009999) +(0.4646464646 0.0005705243934 -0.00050009999) +(0.4646464646 0.001024837958 -0.00050009999) +(0.4646464646 0.001758019915 -0.00050009999) +(0.4646464646 0.002838575912 -0.00050009999) +(0.4646464646 0.004235474916 -0.00050009999) +(0.4646464646 0.005764525084 -0.00050009999) +(0.4646464646 0.007161424088 -0.00050009999) +(0.4646464646 0.008241980085 -0.00050009999) +(0.4646464646 0.008975162042 -0.00050009999) +(0.4646464646 0.009429475607 -0.00050009999) +(0.4646464646 0.009695336429 -0.00050009999) +(0.4646464646 0.00984573433 -0.00050009999) +(0.4646464646 0.009929188095 -0.00050009999) +(0.4646464646 0.009975 -0.00050009999) +(0.4646464646 0.01 -0.00050009999) +(0.4696969697 0 -0.00050009999) +(0.4696969697 2.5e-05 -0.00050009999) +(0.4696969697 7.08119053e-05 -0.00050009999) +(0.4696969697 0.00015426567 -0.00050009999) +(0.4696969697 0.0003046635713 -0.00050009999) +(0.4696969697 0.0005705243934 -0.00050009999) +(0.4696969697 0.001024837958 -0.00050009999) +(0.4696969697 0.001758019915 -0.00050009999) +(0.4696969697 0.002838575912 -0.00050009999) +(0.4696969697 0.004235474916 -0.00050009999) +(0.4696969697 0.005764525084 -0.00050009999) +(0.4696969697 0.007161424088 -0.00050009999) +(0.4696969697 0.008241980085 -0.00050009999) +(0.4696969697 0.008975162042 -0.00050009999) +(0.4696969697 0.009429475607 -0.00050009999) +(0.4696969697 0.009695336429 -0.00050009999) +(0.4696969697 0.00984573433 -0.00050009999) +(0.4696969697 0.009929188095 -0.00050009999) +(0.4696969697 0.009975 -0.00050009999) +(0.4696969697 0.01 -0.00050009999) +(0.4747474747 0 -0.00050009999) +(0.4747474747 2.5e-05 -0.00050009999) +(0.4747474747 7.08119053e-05 -0.00050009999) +(0.4747474747 0.00015426567 -0.00050009999) +(0.4747474747 0.0003046635713 -0.00050009999) +(0.4747474747 0.0005705243934 -0.00050009999) +(0.4747474747 0.001024837958 -0.00050009999) +(0.4747474747 0.001758019915 -0.00050009999) +(0.4747474747 0.002838575912 -0.00050009999) +(0.4747474747 0.004235474916 -0.00050009999) +(0.4747474747 0.005764525084 -0.00050009999) +(0.4747474747 0.007161424088 -0.00050009999) +(0.4747474747 0.008241980085 -0.00050009999) +(0.4747474747 0.008975162042 -0.00050009999) +(0.4747474747 0.009429475607 -0.00050009999) +(0.4747474747 0.009695336429 -0.00050009999) +(0.4747474747 0.00984573433 -0.00050009999) +(0.4747474747 0.009929188095 -0.00050009999) +(0.4747474747 0.009975 -0.00050009999) +(0.4747474747 0.01 -0.00050009999) +(0.4797979798 0 -0.00050009999) +(0.4797979798 2.5e-05 -0.00050009999) +(0.4797979798 7.08119053e-05 -0.00050009999) +(0.4797979798 0.00015426567 -0.00050009999) +(0.4797979798 0.0003046635713 -0.00050009999) +(0.4797979798 0.0005705243934 -0.00050009999) +(0.4797979798 0.001024837958 -0.00050009999) +(0.4797979798 0.001758019915 -0.00050009999) +(0.4797979798 0.002838575912 -0.00050009999) +(0.4797979798 0.004235474916 -0.00050009999) +(0.4797979798 0.005764525084 -0.00050009999) +(0.4797979798 0.007161424088 -0.00050009999) +(0.4797979798 0.008241980085 -0.00050009999) +(0.4797979798 0.008975162042 -0.00050009999) +(0.4797979798 0.009429475607 -0.00050009999) +(0.4797979798 0.009695336429 -0.00050009999) +(0.4797979798 0.00984573433 -0.00050009999) +(0.4797979798 0.009929188095 -0.00050009999) +(0.4797979798 0.009975 -0.00050009999) +(0.4797979798 0.01 -0.00050009999) +(0.4848484848 0 -0.00050009999) +(0.4848484848 2.5e-05 -0.00050009999) +(0.4848484848 7.08119053e-05 -0.00050009999) +(0.4848484848 0.00015426567 -0.00050009999) +(0.4848484848 0.0003046635713 -0.00050009999) +(0.4848484848 0.0005705243934 -0.00050009999) +(0.4848484848 0.001024837958 -0.00050009999) +(0.4848484848 0.001758019915 -0.00050009999) +(0.4848484848 0.002838575912 -0.00050009999) +(0.4848484848 0.004235474916 -0.00050009999) +(0.4848484848 0.005764525084 -0.00050009999) +(0.4848484848 0.007161424088 -0.00050009999) +(0.4848484848 0.008241980085 -0.00050009999) +(0.4848484848 0.008975162042 -0.00050009999) +(0.4848484848 0.009429475607 -0.00050009999) +(0.4848484848 0.009695336429 -0.00050009999) +(0.4848484848 0.00984573433 -0.00050009999) +(0.4848484848 0.009929188095 -0.00050009999) +(0.4848484848 0.009975 -0.00050009999) +(0.4848484848 0.01 -0.00050009999) +(0.4898989899 0 -0.00050009999) +(0.4898989899 2.5e-05 -0.00050009999) +(0.4898989899 7.08119053e-05 -0.00050009999) +(0.4898989899 0.00015426567 -0.00050009999) +(0.4898989899 0.0003046635713 -0.00050009999) +(0.4898989899 0.0005705243934 -0.00050009999) +(0.4898989899 0.001024837958 -0.00050009999) +(0.4898989899 0.001758019915 -0.00050009999) +(0.4898989899 0.002838575912 -0.00050009999) +(0.4898989899 0.004235474916 -0.00050009999) +(0.4898989899 0.005764525084 -0.00050009999) +(0.4898989899 0.007161424088 -0.00050009999) +(0.4898989899 0.008241980085 -0.00050009999) +(0.4898989899 0.008975162042 -0.00050009999) +(0.4898989899 0.009429475607 -0.00050009999) +(0.4898989899 0.009695336429 -0.00050009999) +(0.4898989899 0.00984573433 -0.00050009999) +(0.4898989899 0.009929188095 -0.00050009999) +(0.4898989899 0.009975 -0.00050009999) +(0.4898989899 0.01 -0.00050009999) +(0.4949494949 0 -0.00050009999) +(0.4949494949 2.5e-05 -0.00050009999) +(0.4949494949 7.08119053e-05 -0.00050009999) +(0.4949494949 0.00015426567 -0.00050009999) +(0.4949494949 0.0003046635713 -0.00050009999) +(0.4949494949 0.0005705243934 -0.00050009999) +(0.4949494949 0.001024837958 -0.00050009999) +(0.4949494949 0.001758019915 -0.00050009999) +(0.4949494949 0.002838575912 -0.00050009999) +(0.4949494949 0.004235474916 -0.00050009999) +(0.4949494949 0.005764525084 -0.00050009999) +(0.4949494949 0.007161424088 -0.00050009999) +(0.4949494949 0.008241980085 -0.00050009999) +(0.4949494949 0.008975162042 -0.00050009999) +(0.4949494949 0.009429475607 -0.00050009999) +(0.4949494949 0.009695336429 -0.00050009999) +(0.4949494949 0.00984573433 -0.00050009999) +(0.4949494949 0.009929188095 -0.00050009999) +(0.4949494949 0.009975 -0.00050009999) +(0.4949494949 0.01 -0.00050009999) +(0.5 0 -0.00050009999) +(0.5 2.5e-05 -0.00050009999) +(0.5 7.08119053e-05 -0.00050009999) +(0.5 0.00015426567 -0.00050009999) +(0.5 0.0003046635713 -0.00050009999) +(0.5 0.0005705243934 -0.00050009999) +(0.5 0.001024837958 -0.00050009999) +(0.5 0.001758019915 -0.00050009999) +(0.5 0.002838575912 -0.00050009999) +(0.5 0.004235474916 -0.00050009999) +(0.5 0.005764525084 -0.00050009999) +(0.5 0.007161424088 -0.00050009999) +(0.5 0.008241980085 -0.00050009999) +(0.5 0.008975162042 -0.00050009999) +(0.5 0.009429475607 -0.00050009999) +(0.5 0.009695336429 -0.00050009999) +(0.5 0.00984573433 -0.00050009999) +(0.5 0.009929188095 -0.00050009999) +(0.5 0.009975 -0.00050009999) +(0.5 0.01 -0.00050009999) +) + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/zoneToPatchName b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/zoneToPatchName new file mode 100755 index 000000000..929cab1d7 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/zoneToPatchName @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class wordList; + location "constant/polyMesh"; + object zoneToPatchName; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +16 +( +unknown +unknown +unknown +unknown +unknown +unknown +unknown +unknown +unknown +unknown +unknown +int_SOLID +WALL_1 +WALL_2 +INLET +OUTLET +) + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties new file mode 100755 index 000000000..814cf9cc2 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties @@ -0,0 +1,59 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + + +thermoType realGasHThermo>>>>; +mixture CO2 1 44.01 73.773e5 304.13 0.22394 467.6 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801E-13 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 467.6 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801E-13 1e-06 0.7; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1e-06 0.7; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1e-06 0.7; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1e-06 0.7; + + + +// *********************************************************************************************************************** // +// Coefficient +// CO2 --> Name +// 1 +// 44.01 --> Molar Volume +// 77.773e5 --> critical pressure +// 304.13 --> critical temperatur +// 0.22394 --> acentric factor +// 467.6 --> critical density (only for aungier redlich kwong +// 49436.5054 --> 2.849677801e-13 --> 7 heat capacity polynomial coefficent's +// .... --> two coefficent's for sutherland model or for the constTransport model +// *********************************************************************************************************************** // +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/turbulenceProperties b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/turbulenceProperties new file mode 100755 index 000000000..f6753662e --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/turbulenceProperties @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RASModel; + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/controlDict b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/controlDict new file mode 100755 index 000000000..5fd9ef5a4 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/controlDict @@ -0,0 +1,55 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application rhoPisoFoam; + +startFrom latestTime; + +//startTime 0; + +stopAt endTime; + +endTime 0.5; + +deltaT 1e-5; + +writeControl runTime; + +writeInterval 1e-2; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 20; + +adjustTimeStep yes; + +maxCo 0.05; + +maxDeltaT 1e-4; + +runTimeModifiable yes; + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSchemes b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSchemes new file mode 100755 index 000000000..1e9cfe831 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSchemes @@ -0,0 +1,76 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default cellMDLimited Gauss linear 0.333; + grad(p) cellMDLimited Gauss linear 0.333; +} + +divSchemes +{ + default none; + div(phi,U) Gauss limitedLinearV 0.5; + div(phid,p) Gauss limitedLinear 0.5; + div(phiU,p) Gauss limitedLinear 0.5; + div(phi,h) Gauss limitedLinear 0.5; + div(phi,k) Gauss limitedLinear 0.5; + div(phi,epsilon) Gauss limitedLinear 0.5; + div(phi,R) Gauss limitedLinear 0.5; + div(phi,omega) Gauss limitedLinear 0.5;; + div(U) Gauss limitedLinear 0.5; + div((muEff*dev2(grad(U).T()))) Gauss linear; + +} + +laplacianSchemes +{ + default none; + laplacian(muEff,U) Gauss linear corrected; + laplacian(mut,U) Gauss linear corrected; + laplacian(DkEff,k) Gauss linear corrected; + laplacian(DepsilonEff,epsilon) Gauss linear corrected; + laplacian(DREff,R) Gauss linear corrected; + laplacian(DomegaEff,omega) Gauss linear corrected; + laplacian((rho*(1|A(U))),p) Gauss linear corrected; + laplacian(alphaEff,h) Gauss linear corrected; + +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p ; +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSolution b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSolution new file mode 100755 index 000000000..bfb9df381 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSolution @@ -0,0 +1,100 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | | +| \\ / A nd | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + +p +{ + solver GAMG; + tolerance 1e-14; + relTol 0.001; + smoother GaussSeidel; + minIter 4; + //maxIter 100; + cacheAgglomeration true; + nPreSweeps 1; + nPostSweeps 3; + nFinestSweeps 3; + nCellsInCoarsestLevel 20; + agglomerator faceAreaPair; + mergeLevels 1; +} + + + + U + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + rho + { + solver PCG; + preconditioner DIC; + tolerance 1e-10; + relTol 0; + } + + htot + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + h + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + k + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0; + } + epsilon + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0; + } +} + +PISO +{ + nNonOrthogonalCorrectors 0; + nCorrectors 6; + momentumPredictor yes; + // transonic true; +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/sampleDict b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/sampleDict new file mode 100755 index 000000000..53ae79690 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/sampleDict @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open Source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object sampleDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +interpolationScheme cellPoint; + +setFormat raw; + +sets +( + leftPatch + { + + type uniform; + axis y; + start (0.49 0 0.0); + end (0.49 0.01 0); + nPoints 100; + } +); + +fields +( + U p T +); + +surfaces +( +); + +// ************************************************************************* // From fa742cadc1a0897ebc927610d3c142447289b1f5 Mon Sep 17 00:00:00 2001 From: Henrik Rusche Date: Fri, 11 Feb 2011 19:06:24 +0100 Subject: [PATCH 04/18] Deleting unnecessary files --- .../rhoPisoFoam/ras/pipe/0/epsilon.old | 59 ------------------ .../compressible/rhoPisoFoam/ras/pipe/0/k.old | 52 --------------- .../ras/pipe/constant/.RASProperties.swp | Bin 12288 -> 0 bytes 3 files changed, 111 deletions(-) delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon.old delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/k.old delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/.RASProperties.swp diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon.old b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon.old deleted file mode 100755 index e3d97022c..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon.old +++ /dev/null @@ -1,59 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class volScalarField; - location "0"; - object epsilon; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -dimensions [0 2 -3 0 0 0 0]; - -internalField uniform 1120; - -boundaryField -{ - WALL_1 - { - type compressible::epsilonWallFunction; - Cmu 0.09; - kappa 0.41; - E 9.8; - value uniform 1120; - } - INLET - { - type fixedValue; - value uniform 1120; - } - OUTLET - { - type inletOutlet; - inletValue uniform 1120; - value uniform 1120; - } - - WALL_2 - { - type compressible::epsilonWallFunction; - Cmu 0.09; - kappa 0.41; - E 9.8; - value uniform 1120; - } - frontAndBackPlanes - { - type empty; - } -} - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/k.old b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/k.old deleted file mode 100755 index b4f3efbce..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/k.old +++ /dev/null @@ -1,52 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class volScalarField; - location "0"; - object k; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -dimensions [0 2 -2 0 0 0 0]; - -internalField uniform 5; - -boundaryField -{ - WALL_1 - { - type compressible::kqRWallFunction; - value uniform 5; - } - INLET - { - type turbulentIntensityKineticEnergyInlet; - intensity 0.01; - value uniform 5; - } - OUTLET - { - type zeroGradient; - } - - WALL_2 - { - type compressible::kqRWallFunction; - value uniform 5; - } - frontAndBackPlanes - { - type empty; - } -} - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/.RASProperties.swp b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/.RASProperties.swp deleted file mode 100755 index 35d19163d72cd777282a769cc5e7ddd173d27c88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2!EVz)5QeAR5Cp1n;x>evt7Ow4Kx%|U2#SP62%@3oV5zK~4Y+c=mhBKyQg{w{ z0^rm)pcllI10dc49)Vfg0fUNCpkgIB9{ptcMUernxb zDV5<>4IuIYJu&e)&50&5n3H3spQnbR8>*n)ZFWRk%c1D0I1zXB?yj%4V;y*|iEdvO zt`6cv28p=W+_)R*P(_KS;v=lWDNKL~98RDFm+EWu%?7wwzJTXe?jN4UQ6|6ym;e)C z0!)AjFaajO1pZ3`Nw@?r=wv7I)1A-zr9b-omOCcE1egF5U;<2l2`~XBzyz286JP>N z;208+eSoj003MvC&C~z?v)}*wX8|6PmPrR^s4jqnq>m+l52W{`ebP(P9!ZjJkgk)y zlh-%W7t&|a0qGs-E$I#EHOZ{EMdHQ;m;e)C0!)AjFaajO1en0_Cm;k`i)ttY0ST#k zIB97$7{q9r9t;`)$tZG0z6xBG22W;Dsu}L+zVg!;U3@w80vS=h+1J8ew68rdYiMUj zxrrGe{#LKt02A`HD-%x#W?Y^XHkY$G*Ozg2AjH1snlu?rvblkdhBCL6vFmwR_=$?* z+zsp1S_7VeDVlD3z5?5-EUsAsre@E!Elh_Ulz|tH{QNNKTsm>o%QW?~ZN${Di9x^c z=oGhjU251y zPx-%gIK|nH*0J|krFXcYM-hGaTJ4+I)7p3R(}KD2yEbcucsBeOeq!$XYgMqdx{8&# JiIs|F!w+~6`P2Xa From 4fd335f12a1d698fd15e09a90de10a7ac6253567 Mon Sep 17 00:00:00 2001 From: Henrik Rusche Date: Sat, 12 Feb 2011 19:41:42 +0100 Subject: [PATCH 05/18] First clean-up of RedlichKwong (with some side effects) --- .../psiThermo/realGasHThermo/realGasHThermo.C | 10 +- .../aungierRedlichKwong/aungierRedlichKwong.H | 2 +- .../aungierRedlichKwongI.H | 12 +- .../pengRobinson/pengRobinson.H | 2 +- .../pengRobinson/pengRobinsonI.H | 12 +- .../redlichKwong/redlichKwong.C | 22 +- .../redlichKwong/redlichKwong.H | 130 ++-- .../redlichKwong/redlichKwongI.H | 575 +++++++++--------- .../soaveRedlichKwong/soaveRedlichKwong.H | 2 +- .../soaveRedlichKwong/soaveRedlichKwongI.H | 12 +- .../nasaHeatCapacityPolynomial.C | 2 +- .../nasaHeatCapacityPolynomialI.H | 2 +- .../realGasConstTransportI.H | 2 +- 13 files changed, 413 insertions(+), 372 deletions(-) diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C index a5f427949..18c6daa87 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C @@ -38,8 +38,6 @@ Germany template void Foam::realGasHThermo::calculate() { - - const scalarField& hCells = h_.internalField(); const scalarField& pCells = this->p_.internalField(); @@ -56,10 +54,10 @@ void Foam::realGasHThermo::calculate() const typename MixtureType::thermoType& mixture_ = this->cellMixture(celli); - mixture_.TH(hCells[celli], TCells[celli],pCells[celli],rhoCells[celli]); - psiCells[celli]=mixture_.psi(rhoCells[celli],TCells[celli]); + mixture_.TH(hCells[celli], TCells[celli], pCells[celli], rhoCells[celli]); + psiCells[celli]=mixture_.psi(rhoCells[celli], TCells[celli]); muCells[celli] = mixture_.mu(TCells[celli]); - alphaCells[celli] = mixture_.alpha(rhoCells[celli], TCells[celli]); + alphaCells[celli] = mixture_.alpha(rhoCells[celli], TCells[celli]); } @@ -138,7 +136,7 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) ( IOobject ( - "rho1", + "rho1", mesh.time().timeName(), mesh, IOobject::READ_IF_PRESENT, diff --git a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.H index de6967de3..3df68f310 100755 --- a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.H @@ -105,7 +105,7 @@ public: inline scalar azentricFactor() const; inline scalar rhostd()const; inline scalar rhocrit() const; - inline scalar pReturn(const scalar rho, const scalar T) const; + inline scalar p(const scalar rho, const scalar T) const; //-Redlich Kwong factors inline scalar a() const; diff --git a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H index b13adb1bd..f4294f85a 100755 --- a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H @@ -74,7 +74,7 @@ return azentricFactor_; } //returns the pressure for a given density and temperature -inline scalar aungierRedlichKwong::pReturn(const scalar rho,const scalar T) const +inline scalar aungierRedlichKwong::p(const scalar rho,const scalar T) const { return this->RR*T/((this->W()/rho)-this->b()+this->c()) @@ -338,7 +338,7 @@ molarVolume=this->W()/rho0; i=0; do { - molarVolume=molarVolumePrevIteration-((this->pReturn((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ + molarVolume=molarVolumePrevIteration-((this->p((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ molarVolumePrevIteration),T)))/(pow(2,i)); i++; if(i>8) @@ -347,10 +347,10 @@ molarVolume=this->W()/rho0; //using bisection methode as backup, solution must be between rho=0.001 to rho=1500; for(i=0;i<200;i++) { - f1= (this->pReturn(rho1,T)-p); - f2= (this->pReturn(rho2,T)-p); + f1= (this->p(rho1,T)-p); + f2= (this->p(rho2,T)-p); rho3=(rho1+rho2)/2; - f3=(this->pReturn(rho3,T)-p); + f3=(this->p(rho3,T)-p); if ((f2<0 && f3>0)||(f2>0 &&f3<0)) { @@ -379,7 +379,7 @@ molarVolume=this->W()/rho0; } } } - while(mag(this->pReturn((this->W()/molarVolume),T)-p)>mag(this->pReturn((this->W()/molarVolumePrevIteration),T)-p)); + while(mag(this->p((this->W()/molarVolume),T)-p)>mag(this->p((this->W()/molarVolumePrevIteration),T)-p)); if (iter++ > maxIter_) { diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H index 09013aa3a..ddd7b03ed 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H @@ -104,7 +104,7 @@ public: inline scalar Tcrit() const; inline scalar azentricFactor() const; inline scalar rhostd()const; - inline scalar pReturn(const scalar rho, const scalar T) const; + inline scalar p(const scalar rho, const scalar T) const; //-Redlich Kwong factors inline scalar a() const; diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H index 45a04d45f..f2a07ac97 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H @@ -70,7 +70,7 @@ return azentricFactor_; } //returns the pressure for a given density and temperature -inline scalar pengRobinson::pReturn(const scalar rho,const scalar T) const +inline scalar pengRobinson::p(const scalar rho,const scalar T) const { return this->RR*T/((this->W()/rho)-this->b())-(this->a()*pow((1+this->n()*(1-pow((T/this->Tcrit()),0.5))),2))/(pow((this->W()/rho),2)+2*this->b()*(this->W()/rho)-pow(this->b(),2)); } @@ -349,7 +349,7 @@ molarVolume=this->W()/rho0; do { - molarVolume=molarVolumePrevIteration-((this->pReturn((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ + molarVolume=molarVolumePrevIteration-((this->p((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ molarVolumePrevIteration),T)))/(pow(2,i)); @@ -360,10 +360,10 @@ molarVolume=this->W()/rho0; for(i=0;i<200;i++) { - f1= (this->pReturn(rho1,T)-p); - f2= (this->pReturn(rho2,T)-p); + f1= (this->p(rho1,T)-p); + f2= (this->p(rho2,T)-p); rho3=(rho1+rho2)/2; - f3=(this->pReturn(rho3,T)-p); + f3=(this->p(rho3,T)-p); if ((f2<0 && f3>0)||(f2>0 &&f3<0)) { @@ -394,7 +394,7 @@ molarVolume=this->W()/rho0; } - while(mag(this->pReturn((this->W()/molarVolume),T)-p)>mag(this->pReturn((this->W()/molarVolumePrevIteration),T)-p)); + while(mag(this->p((this->W()/molarVolume),T)-p)>mag(this->p((this->W()/molarVolumePrevIteration),T)-p)); if (iter++ > maxIter_) { diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C index fd94b80b2..24fadc6f0 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C @@ -42,6 +42,18 @@ Germany namespace Foam { +/* * * * * * * * * * * * * * * Private static data * * * * * * * * * * * * * */ + +const scalar redlichKwong::rhoMin_ +( + debug::tolerances("redlichKwongRhoMin", 1e-3) +); + +const scalar redlichKwong::rhoMax_ +( + debug::tolerances("redlichKwongRhoMax", 1500) +); + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // redlichKwong::redlichKwong(Istream& is) @@ -49,12 +61,12 @@ redlichKwong::redlichKwong(Istream& is) specie(is), pcrit_(readScalar(is)), Tcrit_(readScalar(is)), - azentricFactor_(readScalar(is)) + a_(0.42748*pow(this->RR,2)*pow(Tcrit_,2.5)/pcrit_), + b_(0.08664*this->RR*Tcrit_/pcrit_), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R()))) { is.check("redlichKwong::redlichKwong(Istream& is)"); - rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); - rhoMax_=1500; - rhoMin_=0.001; } @@ -63,7 +75,7 @@ redlichKwong::redlichKwong(Istream& is) Ostream& operator<<(Ostream& os, const redlichKwong& pg) { os << static_cast(pg)<< tab - << pg.pcrit_ << tab<< pg.Tcrit_<< tab << pg.azentricFactor_; + << pg.pcrit_ << tab<< pg.Tcrit_; os.check("Ostream& operator<<(Ostream& os, const redlichKwong& st)"); return os; diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H index 2be713d1d..3e4b8de98 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H @@ -46,8 +46,6 @@ Germany #include "specie.H" #include "autoPtr.H" -#include "word.H" -#include "scalar.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -61,8 +59,30 @@ namespace Foam class redlichKwong : public specie - { + // Private data + + scalar pcrit_; + + scalar Tcrit_; + + //-Redlich Kwong factors + + scalar a_; + + scalar b_; + + //- Density @STD, initialise after a, b! + + scalar rhostd_; + + // Static Private data + + //should be read from the fvSolution file where rhoMax and rhoMin values must be defined (for rhoSimpleFoam) + //HR: Don't know, yet. Let's make these static for starters + static const scalar rhoMax_; + + static const scalar rhoMin_; public: @@ -71,18 +91,18 @@ public: // Constructors //- Construct from components - inline redlichKwong( - const specie& sp, - scalar pcrit, - scalar Tcrit, - scalar azentricFactor + inline redlichKwong + ( + const specie& sp, + scalar pcrit, + scalar Tcrit ); //- Construct from Istream redlichKwong(Istream&); //- Construct as named copy - inline redlichKwong(const word& name, redlichKwong&); + inline redlichKwong(const word& name, const redlichKwong&); //- Construct and return a clone inline autoPtr clone() const; @@ -90,49 +110,73 @@ public: // Selector from Istream inline static autoPtr New(Istream& is); - //Member Variabels - scalar pcrit_; - scalar Tcrit_; - scalar rhostd_; - scalar azentricFactor_; - scalar rhoMax_; //should be read from the fvSolution file where rhoMax and rhoMin values must be define ( for rhoSimpleFoam) - scalar rhoMin_; - // Member functions - inline scalar pcrit() const; - inline scalar Tcrit() const; - inline scalar rhostd()const; - inline scalar azentricFactor() const; - inline scalar pReturn(const scalar rho, const scalar T) const; - //-Redlich Kwong factors - inline scalar a() const; - inline scalar b() const; - + inline scalar rhostd() const; + + inline scalar p(const scalar rho, const scalar T) const; + + + // Derivatives + inline scalar dpdv(const scalar rho, const scalar T) const; - //derivatives - inline scalar dpdv(const scalar rho,const scalar T) const; inline scalar dpdT(const scalar rho, const scalar T) const; - inline scalar dvdT(const scalar rho,const scalar T) const; - inline scalar dvdp(const scalar rho, const scalar T) const; - inline scalar isobarExpCoef(const scalar rho,const scalar T) const; - inline scalar isothermalCompressiblity(const scalar rho,const scalar T) const; - inline scalar integral_d2pdT2_dv(const scalar rho,const scalar T) const ; // Used for cv - inline scalar d2pdv2(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar d2pdT2(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar d2pdvdT(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar d2vdT2(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar integral_p_dv(const scalar rho,const scalar T) const; //Used for internal Energy - inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; //Used for Entropy - //- Return density [kg/m^3] // rho0 is the starting point of the newton solver used to calculate rho - inline scalar rho(const scalar p,const scalar T,const scalar rho0) const; - inline scalar rho(const scalar p,const scalar T) const; + inline scalar dvdT(const scalar rho, const scalar T) const; + + inline scalar dvdp(const scalar rho, const scalar T) const; + + inline scalar isobarExpCoef(const scalar rho, const scalar T) const; + + inline scalar isothermalCompressiblity + ( + const scalar rho, + const scalar T + ) const; + + // Used for cv + inline scalar integral_d2pdT2_dv + ( + const scalar rho, + const scalar T + ) const; + + //Used for internal Energy + inline scalar integral_p_dv(const scalar rho, const scalar T) const; + + // Used for Entropy + inline scalar integral_dpdT_dv(const scalar rho, const scalar T) const; + + // Not Used At The Moment + inline scalar d2pdv2(const scalar rho, const scalar T) const; + + inline scalar d2pdT2(const scalar rho, const scalar T) const; + + inline scalar d2pdvdT(const scalar rho, const scalar T) const; + + inline scalar d2vdT2(const scalar rho, const scalar T) const; + + //- Return density [kg/m^3] + // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + inline scalar rho(const scalar p, const scalar T) const; + //- Return compressibility drho/dp [s^2/m^2] inline scalar psi(const scalar rho, const scalar T) const; //- Return compression factor [] - inline scalar Z(const scalar p,const scalar T,const scalar rho0) const; + inline scalar Z + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; // Member operators diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H index a3062d3e6..cdac92a68 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H @@ -38,245 +38,36 @@ Germany namespace Foam { - - - - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -inline scalar redlichKwong::pcrit()const -{ -return pcrit_; -} - - - -inline scalar redlichKwong::Tcrit()const -{ -return Tcrit_; -} - -// Returns the Azentric Factor (Acentric Factor) -inline scalar redlichKwong::azentricFactor() const -{ -return azentricFactor_; -} - - -inline scalar redlichKwong::rhostd()const -{ -return rhostd_; -} - - -//returns the pressure for a given density and temperature -inline scalar redlichKwong::pReturn(const scalar rho,const scalar T) const -{ -return (this->RR *T/((this->W()/rho)-this->b()) - (this->a()/(sqrt(T)*(this->W()/rho)*((this->W()/rho)+this->b())))); -} - - - -// Faktor a of the redlich Kwong equation of state -//(molar values) -inline scalar redlichKwong::a() const -{ -return 0.42748*pow(this->RR,2)*pow(this->Tcrit(),2.5)/(this->pcrit()); -} - - - -// Faktor b of the redlich Kwong equation of state -//(molar values) -inline scalar redlichKwong::b() const -{ -return 0.08664*this->RR*this->Tcrit()/this->pcrit(); -} - - - -//* * * * * * * * * * * * * Derivatives * * * * * * * * * * * // - - - -//Real deviative dp/dv at constant temperature -//(molar values) -inline scalar redlichKwong::dpdv(const scalar rho, const scalar T) const -{ - return (this->a()*(pow(this->b(),3)-3*this->b()*pow((this->W()/rho),2)+2*pow((this->W()/rho),3))-this->RR*pow(T,1.5)*pow((this->W()/rho),2) *(pow(this->b(),2)+2*this->b()*(this->W()/rho)+pow((this->W()/rho),2))) / ( sqrt(T) * pow((this->W()/rho),2) * pow((this->b()+(this->W()/rho)),2) *pow( (this->b()-(this->W()/rho)),2) ); -} - - - - -//Real deviative dp/dT at constant molar volume -//(molar values) -inline scalar redlichKwong::dpdT(const scalar rho, const scalar T) const -{ -return 0.5*this->a()/(pow(T,1.5)*(this->W()/rho)*(this->b()+(this->W()/rho)))-this->RR/(this->b()-(this->W()/rho)); -} - - - - -//Real deviative dv/dT at constant pressure -//using implicit differentiation -//(molar values) -inline scalar redlichKwong::dvdT(const scalar rho,const scalar T) const -{ -return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); -} - - - - -//Real deviative dv/dp at constant temperature -//(molar values) -inline scalar redlichKwong::dvdp(const scalar rho,const scalar T) const -{ -return 1/this->dpdv(rho,T); -} - - - - - -//needed to calculate the internal energy -//(molar values) -inline scalar redlichKwong::integral_p_dv(const scalar rho,const scalar T) const -{ -return this->RR*T*log((this->W()/rho)-this->b())+(this->a()*log(this->b()+(this->W()/rho)))/(this->b()*sqrt(T))-(this->a()*log(this->W()/rho))/(this->b()*sqrt(T)); -} - - - -//needed to calculate the entropy -//(molar values) -inline scalar redlichKwong::integral_dpdT_dv(const scalar rho,const scalar T) const -{ -return this->RR*log((this->W()/rho)-this->b()) --(this->a()*log(this->b()+(this->W()/rho)))/(2*this->b()* pow(T,1.5) ) -+(this->a()*log(this->W()/rho))/(2*this->b()* pow(T,1.5)); -} - - - - -//* * * * * * * * * * * * * second order Derivative based functions * * * * * * * * * * * // - - - -//(molar values) -inline scalar redlichKwong::d2pdT2(const scalar rho,const scalar T) const -{ -return -0.75*this->a()/( pow(T,2.5)*(this->W()/rho)*(this->b()+(this->W()/rho))); -} - - - - -//(molar values) -inline scalar redlichKwong::d2pdv2(const scalar rho,const scalar T) const -{ -return -( -2*(this->a()*(pow(this->b(),5)-3*pow(this->b(),3)*pow((this->W()/rho),2)-pow(this->b(),2)*pow((this->W()/rho),3)+6*this->b()*pow((this->W()/rho),4)-3*pow((this->W()/rho),5))+this->RR*pow(T,1.5)*pow((this->W()/rho),3) -*(pow(this->b(),3)+3*pow(this->b(),2)*(this->W()/rho)+3*this->b()*pow((this->W()/rho),2)+pow((this->W()/rho),3)))/( sqrt(T)* pow((this->W()/rho),3) *pow( (this->b()+(this->W()/rho)) ,3)* pow((this->W()/rho)-this->b(),3))); -} - - - - -//(molar values) -//using second Order implicit differentiation -inline scalar redlichKwong::d2vdT2(const scalar rho, const scalar T) const -{ -return -(pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T)+ pow(this->dpdv(rho,T),2) *this->d2pdT2(rho,T)- 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T))/( pow(this->dpdv(rho,T),3)); -} - - - - -//(molar values) -inline scalar redlichKwong::d2pdvdT(const scalar rho, const scalar T) const -{ -return -(0.5*(this->a()*( pow(this->b(),3)-3*this->b()* pow((this->W()/rho),2) +2* pow((this->W()/rho),3) )+2*this->RR*pow(T,1.5)* pow((this->W()/rho),2)*( pow(this->b(),2) + 2*this->b()*(this->W()/rho)+ pow((this->W()/rho),2) )))/( pow(T,1.5)* pow((this->W()/rho),2)*pow(this->b()+(this->W()/rho),2)*pow(this->b()-(this->W()/rho),2)); -} - - - - -// the result of this intergal is needed for the nasa based cp polynomial -//(molar values) -inline scalar redlichKwong::integral_d2pdT2_dv(const scalar rho,const scalar T) const -{ -return 0.75*this->a()*log(this->b() + (this->W()/rho))/(pow(T,2.5)*this->b()) - 0.75*this->a()*log((this->W()/rho))/(pow(T,2.5)*this->b()); -} - - - - - -//* * * * * * * * * * * * * thermodynamic properties * * * * * * * * * * * // - - -//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p -//(molar values) -inline scalar redlichKwong::isobarExpCoef(const scalar rho,const scalar T) const -{ - return this->dvdT(rho, T)*rho/this->W(); -} - -//isothemal compressiblity kappa -//(molar values) -inline scalar redlichKwong::isothermalCompressiblity(const scalar rho,const scalar T) const -{ -return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); -//also possible : return -this->dvdp(rho,T)*rho/this->W(); -} - - - - - - - - - +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // Construct from components - inline redlichKwong::redlichKwong ( const specie& sp, - scalar pcrit, - scalar Tcrit, - scalar azentricFactor + scalar pcrit, + scalar Tcrit ) : - specie(sp), + specie(sp), pcrit_(pcrit), Tcrit_(Tcrit), - azentricFactor_(azentricFactor) -{ - rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); // Starting GUESS for the density by ideal gas law - -} + a_(0.42748*pow(this->RR,2)*pow(Tcrit_,2.5)/pcrit_), + b_(0.08664*this->RR*Tcrit_/pcrit_), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R()))) +{} -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - // Construct as named copy -// Starting GUESS for the density by ideal gas law -inline redlichKwong::redlichKwong(const word& name, redlichKwong& pg) +inline redlichKwong::redlichKwong(const word& name, const redlichKwong& pg) : specie(name, pg), pcrit_(pg.pcrit_), Tcrit_(pg.Tcrit_), - azentricFactor_(pg.azentricFactor_) -{ - pg.rhostd_=this->rho(Pstd,Tstd, (Pstd*this->W()/(Tstd*this->R()))); // Starting GUESS for the density by ideal gas law -} + a_(pg.a_), + b_(pg.b_), + rhostd_(pg.rhostd_) +{} // Construct and return a clone @@ -293,124 +84,320 @@ inline autoPtr redlichKwong::New(Istream& is) } + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline scalar redlichKwong::rhostd()const +{ + return rhostd_; +} + + +//returns the pressure for a given density and temperature +inline scalar redlichKwong::p(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return this->RR*T/(Vm - b_) - a_/(sqrt(T)*Vm*(Vm + b_)); +} + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar redlichKwong::dpdv(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return (a_*(pow(b_,3) - 3*b_*pow(Vm,2) + 2*pow(Vm,3)) + - this->RR*pow(T,1.5)*pow(Vm,2)*(pow(b_,2) + 2*b_*Vm + pow(Vm,2))) + /(sqrt(T)*pow(Vm,2)*pow((b_ + Vm),2)*pow( (b_ - Vm),2)); +} + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar redlichKwong::dpdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return 0.5*a_/(pow(T,1.5)*Vm*(b_ + Vm))-this->RR/(b_ - Vm); +} + + +//Real deviative dv/dT at constant pressure +//using implicit differentiation +//(molar values) +inline scalar redlichKwong::dvdT(const scalar rho, const scalar T) const +{ + return -this->dpdT(rho,T)/this->dpdv(rho,T); +} + + +//Real deviative dv/dp at constant temperature +//(molar values) +inline scalar redlichKwong::dvdp(const scalar rho, const scalar T) const +{ + return 1/this->dpdv(rho,T); +} + + +//needed to calculate the internal energy +//(molar values) +inline scalar redlichKwong::integral_p_dv +( + const scalar rho, + const scalar T +) const +{ + scalar Vm = this->W()/rho; + return this->RR*T*log(Vm - b_) + + (a_*log(b_ + Vm))/(b_*sqrt(T)) + - (a_*log(Vm))/(b_*sqrt(T)); +} + + +//needed to calculate the entropy +//(molar values) +inline scalar redlichKwong::integral_dpdT_dv +( + const scalar rho, + const scalar T +) const +{ + scalar Vm = this->W()/rho; + return this->RR*log(Vm - b_) + -(a_*log(b_ + Vm))/(2*b_*pow(T,1.5)) + +(a_*log(Vm))/(2*b_*pow(T,1.5)); +} + + +//(molar values) +inline scalar redlichKwong::d2pdT2(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return -0.75*a_/(pow(T,2.5)*Vm*(b_ + Vm)); +} + + +//(molar values) +inline scalar redlichKwong::d2pdv2(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return + ( + 2*( + a_*( + pow(b_,5)-3*pow(b_,3)*pow(Vm,2) + - pow(b_,2)*pow(Vm,3) + + 6*b_*pow(Vm,4)-3*pow(Vm,5) + ) + + this->RR*pow(T,1.5)*pow(Vm,3)*(pow(b_,3) + + 3*pow(b_,2)*Vm + + 3*b_*pow(Vm,2)+pow(Vm,3)) + ) + /(sqrt(T)*pow(Vm,3)*pow((b_ + Vm),3)*pow(Vm-b_,3)) + ); +} + + +//(molar values) +//using second Order implicit differentiation +inline scalar redlichKwong::d2vdT2(const scalar rho, const scalar T) const +{ + return + -( + pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T) + + pow(this->dpdv(rho,T),2)*this->d2pdT2(rho,T) + - 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T) + ) + /(pow(this->dpdv(rho,T),3)); +} + + +//(molar values) +inline scalar redlichKwong::d2pdvdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + + return + -(0.5*( + a_*(pow(b_,3) - 3*b_*pow(Vm,2) + 2*pow(Vm,3)) + + 2*this->RR*pow(T,1.5)*pow(Vm,2)*(pow(b_,2) + 2*b_*Vm + pow(Vm,2)) + )) + /(pow(T,1.5)*pow(Vm,2)*pow(b_ + Vm,2)*pow(b_ - Vm,2)); +} + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar redlichKwong::integral_d2pdT2_dv +( + const scalar rho, + const scalar T +) const +{ + scalar Vm = this->W()/rho; + return 0.75*a_*log(b_ + Vm)/(pow(T,2.5)*b_) + - 0.75*a_*log(Vm)/(pow(T,2.5)*b_); +} + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar redlichKwong::isobarExpCoef +( + const scalar rho, + const scalar T +) const +{ + return this->dvdT(rho, T)*rho/this->W(); +} + + +//isothemal compressiblity kappa +//(molar values) +inline scalar redlichKwong::isothermalCompressiblity +( + const scalar rho, + const scalar T +) const +{ + return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); + //also possible : return -this->dvdp(rho,T)*rho/this->W(); +} + + //- Return density [kg/m^3]on -inline scalar redlichKwong::rho(const scalar p,const scalar T,const scalar rho0) const +inline scalar redlichKwong::rho +( + const scalar p, + const scalar T, + const scalar rho0 +) const { scalar molarVolumePrevIteration; scalar molarVolume; - int iter=0; + int iter=0; int maxIter_=400; scalar tol_=1e-8; - int i; - scalar rho1=rhoMax_, rho2=rhoMin_,rho3, f1,f2,f3; + scalar rho1=rhoMax_; + scalar rho2=rhoMin_; -molarVolume=this->W()/rho0; + molarVolume=this->W()/rho0; do { - molarVolumePrevIteration= molarVolume; - + molarVolumePrevIteration= molarVolume; - i=0; - do - { - molarVolume=molarVolumePrevIteration-((this->pReturn((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ - molarVolumePrevIteration),T)))/(pow(2,i)); - - i++; - if(i>8) - { - //using bisection methode as backup, solution must be between rho=0.001 to rho=1500; - for(i=0;i<200;i++) - { - f1= (this->pReturn(rho1,T)-p); - f2= (this->pReturn(rho2,T)-p); - rho3=(rho1+rho2)/2; - f3=(this->pReturn(rho3,T)-p); + label i=0; + do + { + molarVolume=molarVolumePrevIteration + -( + (this->p((this->W()/molarVolumePrevIteration),T) - p) + /(this->dpdv((this->W()/molarVolumePrevIteration),T)) + )/pow(2,i); + + i++; + if (i>8) + { + //using bisection methode as backup, + //solution must be between rho=0.001 to rho=1500; + for(i=0; i<200; i++) + { + scalar f1 = this->p(rho1,T) - p; + scalar f2 = this->p(rho2,T) - p; + scalar rho3 = (rho1 + rho2)/2; + scalar f3 = this->p(rho3,T) - p; - if ((f2<0 && f3>0)||(f2>0 &&f3<0)) - { - rho1=rho3; - } - else if ((f1<0 && f3>0)||(f1>0 &&f3<0)) - { - rho2=rho3; - } - - else - { - rho2=(rho2+rho3)/2; - } + if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) + { + rho1=rho3; + } + else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) + { + rho2=rho3; + } + else + { + rho2=(rho2 + rho3)/2; + } - if(mag(f3)W()/rho3; - molarVolumePrevIteration=this->W()/rho3; - break; - } - - else - { - molarVolumePrevIteration=this->W()/rho3; - } - } - } - } - while(mag(this->pReturn((this->W()/molarVolume),T)-p)>mag(this->pReturn((this->W()/molarVolumePrevIteration),T)-p)); - - - if (iter++ > maxIter_) - { - FatalErrorIn - ( - "inline scalar redlichKwong::rho(const scalar p,const scalar T,const scalar rho0) const " - ) << "Maximum number of iterations exceeded" - << abort(FatalError); - } + if(mag(f3) < p*tol_) + { + molarVolume=this->W()/rho3; + molarVolumePrevIteration=this->W()/rho3; + break; + } + else + { + molarVolumePrevIteration=this->W()/rho3; + } + } + } + } + while + ( + mag(this->p((this->W()/molarVolume),T) - p) + > mag(this->p((this->W()/molarVolumePrevIteration),T) - p) + ); + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "inline scalar redlichKwong::rho(const scalar p, const scalar T, const scalar rho0) const " + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } } - while(mag(molarVolumePrevIteration-molarVolume)>tol_*(this->W()/rho0)); - - return this->W()/molarVolume; + while(mag(molarVolumePrevIteration-molarVolume) > tol_*(this->W()/rho0)); + return this->W()/molarVolume; } + //- Return density [kg/m^3]on -inline scalar redlichKwong::rho(const scalar p,const scalar T) const +inline scalar redlichKwong::rho(const scalar p, const scalar T) const { - - scalar rho0=p/(this->R()*T); //using perfect gas equation as starting point - return rho(p,T,rho0); + // using perfect gas equation as starting point + return rho(p,T,p/(this->R()*T)); } + //- Return compressibility drho/dp [s^2/m^2] inline scalar redlichKwong::psi(const scalar rho, const scalar T) const { return -this->dvdp(rho,T)*pow(rho,2)/this->W(); } + //- Return compression factor [] -inline scalar redlichKwong::Z( const scalar p, const scalar T,const scalar rho0) const +inline scalar redlichKwong::Z +( + const scalar p, + const scalar T, + const scalar rho0 +) const { - return (p*this->rho(p,T,rho0))/(this->R()*T); + return p*this->rho(p,T,rho0)/(this->R()*T); } // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + inline void redlichKwong::operator+=(const redlichKwong& pg) { specie::operator+=(pg); } - inline void redlichKwong::operator-=(const redlichKwong& pg) + +inline void redlichKwong::operator-=(const redlichKwong& pg) { specie::operator-=(pg); } + inline void redlichKwong::operator*=(const scalar s) { specie::operator*=(s); diff --git a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H index a6e8e728c..0d5f071d2 100755 --- a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H @@ -103,7 +103,7 @@ public: inline scalar Tcrit() const; inline scalar azentricFactor() const; inline scalar rhostd()const; - inline scalar pReturn(const scalar rho, const scalar T) const; + inline scalar p(const scalar rho, const scalar T) const; //-Redlich Kwong factors inline scalar a() const; diff --git a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H index 0cd134f43..633a18a04 100755 --- a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H @@ -70,7 +70,7 @@ return azentricFactor_; } //returns the pressure for a given density and temperature -inline scalar soaveRedlichKwong::pReturn(const scalar rho,const scalar T) const +inline scalar soaveRedlichKwong::p(const scalar rho,const scalar T) const { return (this->RR*T/((this->W()/rho)-this->b())-this->a()*pow((1+this->n()*(1-pow((T/this->Tcrit()),0.5))),2)/((this->W()/rho)*((this->W()/rho)+this->b()))); } @@ -329,7 +329,7 @@ molarVolume=this->W()/rho0; i=0; do { - molarVolume=molarVolumePrevIteration-((this->pReturn((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ + molarVolume=molarVolumePrevIteration-((this->p((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ molarVolumePrevIteration),T)))/(pow(2,i)); i++; @@ -338,10 +338,10 @@ molarVolume=this->W()/rho0; //using bisection methode as backup, solution must be between rho=0.001 to rho=1500; for(i=0;i<200;i++) { - f1= (this->pReturn(rho1,T)-p); - f2= (this->pReturn(rho2,T)-p); + f1= (this->p(rho1,T)-p); + f2= (this->p(rho2,T)-p); rho3=(rho1+rho2)/2; - f3=(this->pReturn(rho3,T)-p); + f3=(this->p(rho3,T)-p); if ((f2<0 && f3>0)||(f2>0 &&f3<0)) { @@ -371,7 +371,7 @@ molarVolume=this->W()/rho0; } } } - while(mag(this->pReturn((this->W()/molarVolume),T)-p)>mag(this->pReturn((this->W()/molarVolumePrevIteration),T)-p)); + while(mag(this->p((this->W()/molarVolume),T)-p)>mag(this->p((this->W()/molarVolumePrevIteration),T)-p)); if (iter++ > maxIter_) diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C index 0d7ada3d1..ddbe824fa 100755 --- a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C +++ b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C @@ -49,7 +49,7 @@ Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Is a7_(readScalar(is)) { is.check("nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Istream& is)"); - cp_std=this->cp_nonLimited(this->rhostd_,this->Tstd); // cp @ STD (needed to limit cp for stability + cp_std=this->cp_nonLimited(this->rhostd(),this->Tstd); // cp @ STD (needed to limit cp for stability } diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H index 76ddafe9b..3f782752f 100755 --- a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H +++ b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H @@ -224,7 +224,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h const scalar T ) const { - return this->e(rho,T)+this->pReturn(rho,T)/rho*this->W()-this->Pstd/this->rhostd()*this->W(); + return this->e(rho,T)+this->p(rho,T)/rho*this->W()-this->Pstd/this->rhostd()*this->W(); } diff --git a/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransportI.H b/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransportI.H index b64efcacf..f82d1ba50 100644 --- a/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransportI.H +++ b/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransportI.H @@ -92,7 +92,7 @@ inline scalar realGasConstTransport::alpha(const scalar rho,const scalar scalar deltaT = T - specie::Tstd; scalar CpBar = - (deltaT*(this->H(rho,T) - this->H(this->rhostd_,specie::Tstd)) + Cp_)/(sqr(deltaT) + 1); + (deltaT*(this->H(rho,T) - this->H(this->rhostd(),specie::Tstd)) + Cp_)/(sqr(deltaT) + 1); return Cp_*mu(T)*rPr/CpBar; } From f7dc47a4c4a9721174aacbdca1856ea5be672ee9 Mon Sep 17 00:00:00 2001 From: Christian Lucas Date: Mon, 28 Feb 2011 14:16:57 +0100 Subject: [PATCH 06/18] changed realGas EqnOfState + nasaPoly + realGasSpecieThermo --- src/thermophysicalModels/basic/Make/files | 12 +- .../basic/basicThermo/basicThermo.C | 107 --- .../fixedEnthalpyFvPatchScalarField.C | 8 +- .../fixedInternalEnergyFvPatchScalarField.C | 7 +- .../gradientEnthalpyFvPatchScalarField.C | 13 +- ...gradientInternalEnergyFvPatchScalarField.C | 10 +- .../mixedEnthalpyFvPatchScalarField.C | 37 +- .../mixedInternalEnergyFvPatchScalarField.C | 12 +- .../wallHeatTransferFvPatchScalarField.C | 7 +- .../fixedEnthalpyRealFluids.C | 147 ---- .../fixedEnthalpyRealFluids.H | 146 ---- .../fixedInternalEnergyRealFluids.C | 137 ---- .../fixedInternalEnergyRealFluids.H | 146 ---- .../gradientEnthalpyRealFluids.C | 154 ----- .../gradientEnthalpyRealFluids.H | 146 ---- .../gradientInternalEnergyRealFluids.C | 146 ---- .../gradientInternalEnergyRealFluids.H | 146 ---- .../mixedEnthalpyRealFluids.C | 164 ----- .../mixedEnthalpyRealFluids.H | 146 ---- .../mixedInternalEnergyRealFluids.C | 151 ----- .../mixedInternalEnergyRealFluids.H | 146 ---- ...lFluidWallHeatTransferFvPatchScalarField.C | 198 ------ ...lFluidWallHeatTransferFvPatchScalarField.H | 201 ------ .../mixtures/basicMixture/basicMixtures.C | 31 +- .../psiThermo/realGasHThermo/realGasHThermo.C | 4 +- .../realGasHThermo/realGasHThermos.C | 109 ++- .../aungierRedlichKwong/aungierRedlichKwong.C | 29 +- .../aungierRedlichKwong/aungierRedlichKwong.H | 133 ++-- .../aungierRedlichKwongI.H | 567 +++++++--------- .../pengRobinson/pengRobinson.C | 25 +- .../pengRobinson/pengRobinson.H | 117 +++- .../pengRobinson/pengRobinsonI.H | 637 +++++++++--------- .../redlichKwong/redlichKwong.C | 4 +- .../redlichKwong/redlichKwong.H | 35 +- .../redlichKwong/redlichKwongI.H | 6 +- .../soaveRedlichKwong/soaveRedlichKwong.C | 23 +- .../soaveRedlichKwong/soaveRedlichKwong.H | 118 ++-- .../soaveRedlichKwong/soaveRedlichKwongI.H | 631 ++++++++--------- .../nasaHeatCapacityPolynomial.C | 11 +- .../nasaHeatCapacityPolynomial.H | 86 ++- .../nasaHeatCapacityPolynomialI.H | 166 +++-- .../realGasSpecieThermo/realGasSpecieThermo.H | 8 +- .../realGasSpecieThermoI.H | 104 ++- .../specie/transport/const/constTransport.H | 8 + .../specie/transport/const/constTransportI.H | 19 + .../realGasConstTransport.C | 79 --- .../realGasConstTransport.H | 204 ------ .../realGasConstTransportI.H | 199 ------ .../realGasSutherlandTransport.C | 74 -- .../realGasSutherlandTransport.H | 237 ------- .../realGasSutherlandTransportI.H | 262 ------- .../sutherland/sutherlandTransport.H | 8 + .../sutherland/sutherlandTransportI.H | 21 + .../rhoPisoFoam/ras/pipe/0/alphat | 53 -- .../compressible/rhoPisoFoam/ras/pipe/0/mut | 57 -- .../pipe/constant/thermophysicalProperties | 4 +- 56 files changed, 1657 insertions(+), 4799 deletions(-) delete mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.C delete mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.H delete mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.C delete mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.H delete mode 100644 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.C delete mode 100644 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.H delete mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.C delete mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.H delete mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.C delete mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.H delete mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.C delete mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.H delete mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.C delete mode 100755 src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.H delete mode 100644 src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.C delete mode 100644 src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.H delete mode 100644 src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransportI.H delete mode 100755 src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.C delete mode 100755 src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.H delete mode 100755 src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransportI.H delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/alphat delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/0/mut diff --git a/src/thermophysicalModels/basic/Make/files b/src/thermophysicalModels/basic/Make/files index 87ad10f52..269ef6f1a 100644 --- a/src/thermophysicalModels/basic/Make/files +++ b/src/thermophysicalModels/basic/Make/files @@ -8,6 +8,7 @@ psiThermo/basicPsiThermo/newBasicPsiThermo.C psiThermo/hPsiThermo/hPsiThermos.C psiThermo/hsPsiThermo/hsPsiThermos.C psiThermo/ePsiThermo/ePsiThermos.C +psiThermo/realGasHThermo/realGasHThermos.C rhoThermo/basicRhoThermo/basicRhoThermo.C rhoThermo/basicRhoThermo/newBasicRhoThermo.C @@ -28,15 +29,4 @@ derivedFvPatchFields/temperatureDirectedInletOutletVelocity/temperatureDirectedI derivedFvPatchFields/isentropicTotalPressure/isentropicTotalPressureFvPatchScalarField.C derivedFvPatchFields/isentropicTotalTemperature/isentropicTotalTemperatureFvPatchScalarField.C - -psiThermo/realGasHThermo/realGasHThermos.C - -derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.C -derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.C -derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.C -derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.C -derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.C -derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.C -derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.C - LIB = $(FOAM_LIBBIN)/libbasicThermophysicalModels diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.C b/src/thermophysicalModels/basic/basicThermo/basicThermo.C index 6b417f32b..84eaa7137 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.C +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.C @@ -33,13 +33,6 @@ License #include "fixedInternalEnergyFvPatchScalarField.H" #include "gradientInternalEnergyFvPatchScalarField.H" #include "mixedInternalEnergyFvPatchScalarField.H" -#include "zeroGradientFvPatchFields.H" -#include "fixedEnthalpyRealFluids.H" -#include "gradientEnthalpyRealFluids.H" -#include "mixedEnthalpyRealFluids.H" -#include "fixedInternalEnergyRealFluids.H" -#include "gradientInternalEnergyRealFluids.H" -#include "mixedInternalEnergyRealFluids.H" /* * * * * * * * * * * * * * Private Static Data * * * * * * * * * * * * * * */ @@ -149,106 +142,6 @@ void Foam::basicThermo::eBoundaryCorrection(volScalarField& e) } } -//real Gas Boundary Conditions - -Foam::wordList Foam::basicThermo::hRealBoundaryTypes() -{ - const volScalarField::GeometricBoundaryField& tbf = T_.boundaryField(); - - wordList hbt = tbf.types(); - - forAll(tbf, patchi) - { - if (isA(tbf[patchi])) - { - hbt[patchi] = fixedEnthalpyRealFluids::typeName; - } - else if - ( - isA(tbf[patchi]) - || isA(tbf[patchi]) - ) - { - hbt[patchi] = gradientEnthalpyRealFluids::typeName; - } - else if (isA(tbf[patchi])) - { - hbt[patchi] = mixedEnthalpyRealFluids::typeName; - } - } - - return hbt; -} - - -void Foam::basicThermo::hRealBoundaryCorrection(volScalarField& h) -{ - volScalarField::GeometricBoundaryField& hbf = h.boundaryField(); - - forAll(hbf, patchi) - { - if (isA(hbf[patchi])) - { - refCast(hbf[patchi]).gradient() - = hbf[patchi].fvPatchField::snGrad(); - } - else if (isA(hbf[patchi])) - { - refCast(hbf[patchi]).refGrad() - = hbf[patchi].fvPatchField::snGrad(); - } - } -} - - -Foam::wordList Foam::basicThermo::eRealBoundaryTypes() -{ - const volScalarField::GeometricBoundaryField& tbf = T_.boundaryField(); - - wordList ebt = tbf.types(); - - forAll(tbf, patchi) - { - if (isA(tbf[patchi])) - { - ebt[patchi] = fixedInternalEnergyRealFluids::typeName; - } - else if - ( - isA(tbf[patchi]) - || isA(tbf[patchi]) - ) - { - ebt[patchi] = gradientInternalEnergyRealFluids::typeName; - } - else if (isA(tbf[patchi])) - { - ebt[patchi] = mixedInternalEnergyRealFluids::typeName; - } - } - - return ebt; -} - - -void Foam::basicThermo::eRealBoundaryCorrection(volScalarField& e) -{ - volScalarField::GeometricBoundaryField& ebf = e.boundaryField(); - - forAll(ebf, patchi) - { - if (isA(ebf[patchi])) - { - refCast(ebf[patchi]) - .gradient() = ebf[patchi].fvPatchField::snGrad(); - } - else if (isA(ebf[patchi])) - { - refCast(ebf[patchi]) - .refGrad() = ebf[patchi].fvPatchField::snGrad(); - } - } -} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C index 603b94265..51f74ade5 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C @@ -103,12 +103,16 @@ void Foam::fixedEnthalpyFvPatchScalarField::updateCoeffs() const_cast(thermo.T().boundaryField()[patchi]); Tw.evaluate(); + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + pw.evaluate(); + if ( dimensionedInternalField().name() == db().mangleFileName("h") ) { - operator==(thermo.h(Tw, patchi)); + operator==(pw,thermo.h(Tw, patchi)); } else if ( @@ -118,7 +122,7 @@ void Foam::fixedEnthalpyFvPatchScalarField::updateCoeffs() } else { - operator==(thermo.hs(Tw, patchi)); + operator==(pw,thermo.hs(Tw, patchi)); } fixedValueFvPatchScalarField::updateCoeffs(); diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/fixedInternalEnergy/fixedInternalEnergyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/fixedInternalEnergy/fixedInternalEnergyFvPatchScalarField.C index 486a1f330..8cef32263 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/fixedInternalEnergy/fixedInternalEnergyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/fixedInternalEnergy/fixedInternalEnergyFvPatchScalarField.C @@ -107,7 +107,12 @@ void fixedInternalEnergyFvPatchScalarField::updateCoeffs() fvPatchScalarField& Tw = const_cast(thermo.T().boundaryField()[patchi]); Tw.evaluate(); - operator==(thermo.e(Tw, patchi)); + + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + pw.evaluate(); + + operator==(thermo.e(pw,Tw, patchi)); fixedValueFvPatchScalarField::updateCoeffs(); } diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnthalpy/gradientEnthalpyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnthalpy/gradientEnthalpyFvPatchScalarField.C index 2639a4fc6..c0bda5782 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnthalpy/gradientEnthalpyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnthalpy/gradientEnthalpyFvPatchScalarField.C @@ -104,6 +104,11 @@ void Foam::gradientEnthalpyFvPatchScalarField::updateCoeffs() Tw.evaluate(); + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + + pw.evaluate(); + if ( dimensionedInternalField().name() == db().mangleFileName("h") @@ -112,8 +117,8 @@ void Foam::gradientEnthalpyFvPatchScalarField::updateCoeffs() gradient() = thermo.Cp(Tw, patchi)*Tw.snGrad() + patch().deltaCoeffs()* ( - thermo.h(Tw, patchi) - - thermo.h(Tw, patch().faceCells()) + thermo.h(pw, Tw, patchi) + - thermo.h(pw, Tw, patch().faceCells()) ); } else if @@ -127,8 +132,8 @@ void Foam::gradientEnthalpyFvPatchScalarField::updateCoeffs() gradient() = thermo.Cp(Tw, patchi)*Tw.snGrad() + patch().deltaCoeffs()* ( - thermo.hs(Tw, patchi) - - thermo.hs(Tw, patch().faceCells()) + thermo.hs(pw, Tw, patchi) + - thermo.hs(pw, Tw, patch().faceCells()) ); } diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientInternalEnergy/gradientInternalEnergyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientInternalEnergy/gradientInternalEnergyFvPatchScalarField.C index e64265ee8..b3e24f8dd 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientInternalEnergy/gradientInternalEnergyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientInternalEnergy/gradientInternalEnergyFvPatchScalarField.C @@ -114,11 +114,15 @@ void gradientInternalEnergyFvPatchScalarField::updateCoeffs() Tw.evaluate(); - gradient() = thermo.Cv(Tw, patchi)*Tw.snGrad() + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + pw.evaluate(); + + gradient() = thermo.Cv(pw,Tw, patchi)*Tw.snGrad() + patch().deltaCoeffs()* ( - thermo.e(Tw, patchi) - - thermo.e(Tw, patch().faceCells()) + thermo.e(pw,Tw, patchi) + - thermo.e(pw,Tw, patch().faceCells()) ); fixedGradientFvPatchScalarField::updateCoeffs(); diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/mixedEnthalpy/mixedEnthalpyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/mixedEnthalpy/mixedEnthalpyFvPatchScalarField.C index 6670b3d1d..0c63c5a24 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/mixedEnthalpy/mixedEnthalpyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/mixedEnthalpy/mixedEnthalpyFvPatchScalarField.C @@ -1,25 +1,26 @@ /*---------------------------------------------------------------------------*\ ========= | - \\ / F ield | foam-extend: Open Source CFD - \\ / O peration | Version: 3.2 - \\ / A nd | Web: http://www.foam-extend.org - \\/ M anipulation | For copyright notice see file Copyright + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | ------------------------------------------------------------------------------- License - This file is part of foam-extend. + This file is part of OpenFOAM. - foam-extend is free software: you can redistribute it and/or modify it + OpenFOAM 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 + Free Software Foundation; either version 2 of the License, or (at your option) any later version. - foam-extend 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. + OpenFOAM 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 foam-extend. If not, see . + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA \*---------------------------------------------------------------------------*/ @@ -110,6 +111,10 @@ void Foam::mixedEnthalpyFvPatchScalarField::updateCoeffs() Tw.evaluate(); + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + pw.evaluate(); + valueFraction() = Tw.valueFraction(); if @@ -121,8 +126,8 @@ void Foam::mixedEnthalpyFvPatchScalarField::updateCoeffs() refGrad() = thermo.Cp(Tw, patchi)*Tw.refGrad() + patch().deltaCoeffs()* ( - thermo.h(Tw, patchi) - - thermo.h(Tw, patch().faceCells()) + thermo.h(pw, Tw, patchi) + - thermo.h(pw, Tw, patch().faceCells()) ); } else if @@ -137,8 +142,8 @@ void Foam::mixedEnthalpyFvPatchScalarField::updateCoeffs() refGrad() = thermo.Cp(Tw, patchi)*Tw.refGrad() + patch().deltaCoeffs()* ( - thermo.hs(Tw, patchi) - - thermo.hs(Tw, patch().faceCells()) + thermo.hs(pw, Tw, patchi) + - thermo.hs(pw, Tw, patch().faceCells()) ); } diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/mixedInternalEnergy/mixedInternalEnergyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/mixedInternalEnergy/mixedInternalEnergyFvPatchScalarField.C index d1dc738fa..6885da6ec 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/mixedInternalEnergy/mixedInternalEnergyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/mixedInternalEnergy/mixedInternalEnergyFvPatchScalarField.C @@ -115,13 +115,17 @@ void mixedInternalEnergyFvPatchScalarField::updateCoeffs() Tw.evaluate(); + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + pw.evaluate(); + valueFraction() = Tw.valueFraction(); - refValue() = thermo.e(Tw.refValue(), patchi); - refGrad() = thermo.Cv(Tw, patchi)*Tw.refGrad() + refValue() = thermo.e(pw,Tw.refValue(), patchi); + refGrad() = thermo.Cv(pw,Tw, patchi)*Tw.refGrad() + patch().deltaCoeffs()* ( - thermo.e(Tw, patchi) - - thermo.e(Tw, patch().faceCells()) + thermo.e(pw,Tw, patchi) + - thermo.e(pw,Tw, patch().faceCells()) ); mixedFvPatchScalarField::updateCoeffs(); diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C index fa92fd2bb..62c3bff69 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C @@ -157,7 +157,12 @@ void Foam::wallHeatTransferFvPatchScalarField::updateCoeffs() const label patchi = patch().index(); const scalarField& Tw = thermo.T().boundaryField()[patchi]; - scalarField Cpw = thermo.Cp(Tw, patchi); + + fvPatchScalarField& pw = + const_cast(thermo.p().boundaryField()[patchi]); + pw.evaluate(); + + scalarField Cpw = thermo.Cp(pw,Tw, patchi); valueFraction() = 1.0/ diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.C deleted file mode 100755 index a2e65edaa..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.C +++ /dev/null @@ -1,147 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - - -\*---------------------------------------------------------------------------*/ - -#include "fixedEnthalpyRealFluids.H" -#include "addToRunTimeSelectionTable.H" -#include "fvPatchFieldMapper.H" -#include "volFields.H" -#include "basicPsiThermo.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::fixedEnthalpyRealFluids::fixedEnthalpyRealFluids -( - const fvPatch& p, - const DimensionedField& iF -) -: - fixedValueFvPatchScalarField(p, iF) -{} - - -Foam::fixedEnthalpyRealFluids::fixedEnthalpyRealFluids -( - const fixedEnthalpyRealFluids& ptf, - const fvPatch& p, - const DimensionedField& iF, - const fvPatchFieldMapper& mapper -) -: - fixedValueFvPatchScalarField(ptf, p, iF, mapper) -{} - - -Foam::fixedEnthalpyRealFluids::fixedEnthalpyRealFluids -( - const fvPatch& p, - const DimensionedField& iF, - const dictionary& dict -) -: - fixedValueFvPatchScalarField(p, iF, dict) -{} - - -Foam::fixedEnthalpyRealFluids::fixedEnthalpyRealFluids -( - const fixedEnthalpyRealFluids& tppsf -) -: - fixedValueFvPatchScalarField(tppsf) -{} - - -Foam::fixedEnthalpyRealFluids::fixedEnthalpyRealFluids -( - const fixedEnthalpyRealFluids& tppsf, - const DimensionedField& iF -) -: - fixedValueFvPatchScalarField(tppsf, iF) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void Foam::fixedEnthalpyRealFluids::updateCoeffs() -{ - if (updated()) - { - return; - } - - const basicPsiThermo& thermo = db().lookupObject - ( - "thermophysicalProperties" - ); - - const label patchi = patch().index(); - - fvPatchScalarField& Tw = - const_cast(thermo.T().boundaryField()[patchi]); - Tw.evaluate(); - - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - pw.evaluate(); - - - if (dimensionedInternalField().name() == "h") - { - - operator==(thermo.h(pw,Tw, patchi)); - } - else - { - operator==(thermo.hs(Tw, patchi)); - } - - fixedValueFvPatchScalarField::updateCoeffs(); - - -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - makePatchTypeField - ( - fvPatchScalarField, - fixedEnthalpyRealFluids - ); -} - - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.H deleted file mode 100755 index e8df794e4..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedEnthalpyRealFluids/fixedEnthalpyRealFluids.H +++ /dev/null @@ -1,146 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::fixedEnthalpyRealFluids - -Description - A fixed boundary condition for enthalpy - -SourceFiles - fixedEnthalpyRealFluids.C - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#ifndef fixedEnthalpyRealFluids_H -#define fixedEnthalpyRealFluids_H - -#include "fixedValueFvPatchFields.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class fixedEnthalpyRealFluids Declaration -\*---------------------------------------------------------------------------*/ - -class fixedEnthalpyRealFluids -: - public fixedValueFvPatchScalarField -{ - -public: - - //- Runtime type information - TypeName("fixedEnthalpy"); - - - // Constructors - - //- Construct from patch and internal field - fixedEnthalpyRealFluids - ( - const fvPatch&, - const DimensionedField& - ); - - //- Construct from patch, internal field and dictionary - fixedEnthalpyRealFluids - ( - const fvPatch&, - const DimensionedField&, - const dictionary& - ); - - //- Construct by mapping given fixedEnthalpyFvPatchScalarField - // onto a new patch - fixedEnthalpyRealFluids - ( - const fixedEnthalpyRealFluids&, - const fvPatch&, - const DimensionedField&, - const fvPatchFieldMapper& - ); - - //- Construct as copy - fixedEnthalpyRealFluids - ( - const fixedEnthalpyRealFluids& - ); - - //- Construct and return a clone - virtual tmp clone() const - { - return tmp - ( - new fixedEnthalpyRealFluids(*this) - ); - } - - //- Construct as copy setting internal field reference - fixedEnthalpyRealFluids - ( - const fixedEnthalpyRealFluids&, - const DimensionedField& - ); - - //- Construct and return a clone setting internal field reference - virtual tmp clone - ( - const DimensionedField& iF - ) const - { - return tmp - ( - new fixedEnthalpyRealFluids(*this, iF) - ); - } - - - // Member functions - - // Evaluation functions - - //- Update the coefficients associated with the patch field - virtual void updateCoeffs(); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.C deleted file mode 100755 index 381358c3d..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.C +++ /dev/null @@ -1,137 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#include "fixedInternalEnergyRealFluids.H" -#include "addToRunTimeSelectionTable.H" -#include "fvPatchFieldMapper.H" -#include "volFields.H" -#include "basicPsiThermo.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -fixedInternalEnergyRealFluids::fixedInternalEnergyRealFluids -( - const fvPatch& p, - const DimensionedField& iF -) -: - fixedValueFvPatchScalarField(p, iF) -{} - - -fixedInternalEnergyRealFluids::fixedInternalEnergyRealFluids -( - const fixedInternalEnergyRealFluids& ptf, - const fvPatch& p, - const DimensionedField& iF, - const fvPatchFieldMapper& mapper -) -: - fixedValueFvPatchScalarField(ptf, p, iF, mapper) -{} - - -fixedInternalEnergyRealFluids::fixedInternalEnergyRealFluids -( - const fvPatch& p, - const DimensionedField& iF, - const dictionary& dict -) -: - fixedValueFvPatchScalarField(p, iF, dict) -{} - - -fixedInternalEnergyRealFluids::fixedInternalEnergyRealFluids -( - const fixedInternalEnergyRealFluids& tppsf -) -: - fixedValueFvPatchScalarField(tppsf) -{} - - -fixedInternalEnergyRealFluids::fixedInternalEnergyRealFluids -( - const fixedInternalEnergyRealFluids& tppsf, - const DimensionedField& iF -) -: - fixedValueFvPatchScalarField(tppsf, iF) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void fixedInternalEnergyRealFluids::updateCoeffs() -{ - if (updated()) - { - return; - } - - const basicPsiThermo& thermo = db().lookupObject - ( - "thermophysicalProperties" - ); - - - const label patchi = patch().index(); - - fvPatchScalarField& Tw = - const_cast(thermo.T().boundaryField()[patchi]); - Tw.evaluate(); - - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - pw.evaluate(); - - operator==(thermo.e(pw,Tw, patchi)); - - fixedValueFvPatchScalarField::updateCoeffs(); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -makePatchTypeField(fvPatchScalarField, fixedInternalEnergyRealFluids); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.H deleted file mode 100755 index 176f91c77..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/fixedInternalEnergyRealFluids/fixedInternalEnergyRealFluids.H +++ /dev/null @@ -1,146 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::fixedInternalEnergyRealFluids - -Description - A fixed boundary condition for internal energy - -SourceFiles - fixedInternalEnergyRealFluids.C - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#ifndef fixedInternalEnergyRealFluids_H -#define fixedInternalEnergyRealFluids_H - -#include "fixedValueFvPatchFields.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class fixedInternalEnergyRealFluids Declaration -\*---------------------------------------------------------------------------*/ - -class fixedInternalEnergyRealFluids -: - public fixedValueFvPatchScalarField -{ - -public: - - //- Runtime type information - TypeName("fixedInternalEnergy"); - - - // Constructors - - //- Construct from patch and internal field - fixedInternalEnergyRealFluids - ( - const fvPatch&, - const DimensionedField& - ); - - //- Construct from patch, internal field and dictionary - fixedInternalEnergyRealFluids - ( - const fvPatch&, - const DimensionedField&, - const dictionary& - ); - - //- Construct by mapping given fixedInternalEnergyRealFluids - // onto a new patch - fixedInternalEnergyRealFluids - ( - const fixedInternalEnergyRealFluids&, - const fvPatch&, - const DimensionedField&, - const fvPatchFieldMapper& - ); - - //- Construct as copy - fixedInternalEnergyRealFluids - ( - const fixedInternalEnergyRealFluids& - ); - - //- Construct and return a clone - virtual tmp clone() const - { - return tmp - ( - new fixedInternalEnergyRealFluids(*this) - ); - } - - //- Construct as copy setting internal field reference - fixedInternalEnergyRealFluids - ( - const fixedInternalEnergyRealFluids&, - const DimensionedField& - ); - - //- Construct and return a clone setting internal field reference - virtual tmp clone - ( - const DimensionedField& iF - ) const - { - return tmp - ( - new fixedInternalEnergyRealFluids(*this, iF) - ); - } - - - // Member functions - - // Evaluation functions - - //- Update the coefficients associated with the patch field - virtual void updateCoeffs(); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.C deleted file mode 100644 index 0d2005ba1..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.C +++ /dev/null @@ -1,154 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright held by original author - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#include "gradientEnthalpyRealFluids.H" -#include "addToRunTimeSelectionTable.H" -#include "fvPatchFieldMapper.H" -#include "volFields.H" -#include "basicPsiThermo.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::gradientEnthalpyRealFluids::gradientEnthalpyRealFluids -( - const fvPatch& p, - const DimensionedField& iF -) -: - fixedGradientFvPatchScalarField(p, iF) -{} - - -Foam::gradientEnthalpyRealFluids::gradientEnthalpyRealFluids -( - const gradientEnthalpyRealFluids& ptf, - const fvPatch& p, - const DimensionedField& iF, - const fvPatchFieldMapper& mapper -) -: - fixedGradientFvPatchScalarField(ptf, p, iF, mapper) -{} - - -Foam::gradientEnthalpyRealFluids::gradientEnthalpyRealFluids -( - const fvPatch& p, - const DimensionedField& iF, - const dictionary& dict -) -: - fixedGradientFvPatchScalarField(p, iF, dict) -{} - - -Foam::gradientEnthalpyRealFluids::gradientEnthalpyRealFluids -( - const gradientEnthalpyRealFluids& tppsf -) -: - fixedGradientFvPatchScalarField(tppsf) -{} - - -Foam::gradientEnthalpyRealFluids::gradientEnthalpyRealFluids -( - const gradientEnthalpyRealFluids& tppsf, - const DimensionedField& iF -) -: - fixedGradientFvPatchScalarField(tppsf, iF) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void Foam::gradientEnthalpyRealFluids::updateCoeffs() -{ - if (updated()) - { - return; - } - - const basicPsiThermo& thermo = db().lookupObject - ( - "thermophysicalProperties" - ); - - const label patchi = patch().index(); - - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - - pw.evaluate(); - - fvPatchScalarField& Tw = - const_cast(thermo.T().boundaryField()[patchi]); - - Tw.evaluate(); - - if (dimensionedInternalField().name() == "h") - { - gradient() = thermo.Cp(pw,Tw, patchi)*Tw.snGrad() - + patch().deltaCoeffs()* - ( - thermo.h(pw,Tw, patchi) - - thermo.h(pw,Tw, patch().faceCells()) - ); - } - /* else - { - gradient() = thermo.Cp(Tw, patchi)*Tw.snGrad() - + patch().deltaCoeffs()* - ( - thermo.hs(Tw, patchi) - - thermo.hs(Tw, patch().faceCells()) - ); - } -*/ - fixedGradientFvPatchScalarField::updateCoeffs(); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - makePatchTypeField - ( - fvPatchScalarField, - gradientEnthalpyRealFluids - ); -} - - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.H deleted file mode 100644 index 07d1b876f..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientEnthalpyRealFluids/gradientEnthalpyRealFluids.H +++ /dev/null @@ -1,146 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright held by original author - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::gradientEnthalpyRealFluids - -Description - Gradient boundary condition for enthalpy - -SourceFiles - gradientEnthalpyRealFluids.C - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#ifndef gradientEnthalpyRealFluids_H -#define gradientEnthalpyRealFluids_H - -#include "fixedGradientFvPatchFields.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class gradientEnthalpyRealFluids Declaration -\*---------------------------------------------------------------------------*/ - -class gradientEnthalpyRealFluids -: - public fixedGradientFvPatchScalarField -{ - -public: - - //- Runtime type information - TypeName("gradientEnthalpy"); - - - // Constructors - - //- Construct from patch and internal field - gradientEnthalpyRealFluids - ( - const fvPatch&, - const DimensionedField& - ); - - //- Construct from patch, internal field and dictionary - gradientEnthalpyRealFluids - ( - const fvPatch&, - const DimensionedField&, - const dictionary& - ); - - //- Construct by mapping given gradientEnthalpyRealFluids - // onto a new patch - gradientEnthalpyRealFluids - ( - const gradientEnthalpyRealFluids&, - const fvPatch&, - const DimensionedField&, - const fvPatchFieldMapper& - ); - - //- Construct as copy - gradientEnthalpyRealFluids - ( - const gradientEnthalpyRealFluids& - ); - - //- Construct and return a clone - virtual tmp clone() const - { - return tmp - ( - new gradientEnthalpyRealFluids(*this) - ); - } - - //- Construct as copy setting internal field reference - gradientEnthalpyRealFluids - ( - const gradientEnthalpyRealFluids&, - const DimensionedField& - ); - - //- Construct and return a clone setting internal field reference - virtual tmp clone - ( - const DimensionedField& iF - ) const - { - return tmp - ( - new gradientEnthalpyRealFluids(*this, iF) - ); - } - - - // Member functions - - // Evaluation functions - - //- Update the coefficients associated with the patch field - virtual void updateCoeffs(); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.C deleted file mode 100755 index 915889d4b..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.C +++ /dev/null @@ -1,146 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#include "gradientInternalEnergyRealFluids.H" -#include "addToRunTimeSelectionTable.H" -#include "fvPatchFieldMapper.H" -#include "volFields.H" -#include "basicPsiThermo.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -gradientInternalEnergyRealFluids::gradientInternalEnergyRealFluids -( - const fvPatch& p, - const DimensionedField& iF -) -: - fixedGradientFvPatchScalarField(p, iF) -{} - - -gradientInternalEnergyRealFluids::gradientInternalEnergyRealFluids -( - const gradientInternalEnergyRealFluids& ptf, - const fvPatch& p, - const DimensionedField& iF, - const fvPatchFieldMapper& mapper -) -: - fixedGradientFvPatchScalarField(ptf, p, iF, mapper) -{} - - -gradientInternalEnergyRealFluids::gradientInternalEnergyRealFluids -( - const fvPatch& p, - const DimensionedField& iF, - const dictionary& dict -) -: - fixedGradientFvPatchScalarField(p, iF, dict) -{} - - -gradientInternalEnergyRealFluids::gradientInternalEnergyRealFluids -( - const gradientInternalEnergyRealFluids& tppsf -) -: - fixedGradientFvPatchScalarField(tppsf) -{} - - -gradientInternalEnergyRealFluids::gradientInternalEnergyRealFluids -( - const gradientInternalEnergyRealFluids& tppsf, - const DimensionedField& iF -) -: - fixedGradientFvPatchScalarField(tppsf, iF) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void gradientInternalEnergyRealFluids::updateCoeffs() -{ - if (updated()) - { - return; - } - - const basicPsiThermo& thermo = db().lookupObject - ( - "thermophysicalProperties" - ); - - - const label patchi = patch().index(); - - fvPatchScalarField& Tw = - const_cast(thermo.T().boundaryField()[patchi]); - - Tw.evaluate(); - - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - - pw.evaluate(); - - - - gradient() = thermo.Cv(pw,Tw, patchi)*Tw.snGrad() - + patch().deltaCoeffs()* - ( - thermo.e(pw,Tw, patchi) - - thermo.e(pw,Tw, patch().faceCells()) - ); - - fixedGradientFvPatchScalarField::updateCoeffs(); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -makePatchTypeField(fvPatchScalarField, gradientInternalEnergyRealFluids); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.H deleted file mode 100755 index cc254c769..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/gradientInternalEnergyRealFluids/gradientInternalEnergyRealFluids.H +++ /dev/null @@ -1,146 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::gradientInternalEnergyRealFluids - -Description - Gradient boundary condition for internal energy - -SourceFiles - gradientInternalEnergyRealFluids.C - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#ifndef gradientInternalEnergyRealFluids_H -#define gradientInternalEnergyRealFluids_H - -#include "fixedGradientFvPatchFields.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class gradientInternalEnergyRealFluids Declaration -\*---------------------------------------------------------------------------*/ - -class gradientInternalEnergyRealFluids -: - public fixedGradientFvPatchScalarField -{ - -public: - - //- Runtime type information - TypeName("gradientInternalEnergy"); - - - // Constructors - - //- Construct from patch and internal field - gradientInternalEnergyRealFluids - ( - const fvPatch&, - const DimensionedField& - ); - - //- Construct from patch, internal field and dictionary - gradientInternalEnergyRealFluids - ( - const fvPatch&, - const DimensionedField&, - const dictionary& - ); - - //- Construct by mapping given gradientInternalEnergyRealFluids - // onto a new patch - gradientInternalEnergyRealFluids - ( - const gradientInternalEnergyRealFluids&, - const fvPatch&, - const DimensionedField&, - const fvPatchFieldMapper& - ); - - //- Construct as copy - gradientInternalEnergyRealFluids - ( - const gradientInternalEnergyRealFluids& - ); - - //- Construct and return a clone - virtual tmp clone() const - { - return tmp - ( - new gradientInternalEnergyRealFluids(*this) - ); - } - - //- Construct as copy setting internal field reference - gradientInternalEnergyRealFluids - ( - const gradientInternalEnergyRealFluids&, - const DimensionedField& - ); - - //- Construct and return a clone setting internal field reference - virtual tmp clone - ( - const DimensionedField& iF - ) const - { - return tmp - ( - new gradientInternalEnergyRealFluids(*this, iF) - ); - } - - - // Member functions - - // Evaluation functions - - //- Update the coefficients associated with the patch field - virtual void updateCoeffs(); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.C deleted file mode 100755 index abd9cc8e3..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.C +++ /dev/null @@ -1,164 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#include "mixedEnthalpyRealFluids.H" -#include "addToRunTimeSelectionTable.H" -#include "fvPatchFieldMapper.H" -#include "volFields.H" -#include "basicPsiThermo.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::mixedEnthalpyRealFluids::mixedEnthalpyRealFluids -( - const fvPatch& p, - const DimensionedField& iF -) -: - mixedFvPatchScalarField(p, iF) -{ - valueFraction() = 0.0; - refValue() = 0.0; - refGrad() = 0.0; -} - - -Foam::mixedEnthalpyRealFluids::mixedEnthalpyRealFluids -( - const mixedEnthalpyRealFluids& ptf, - const fvPatch& p, - const DimensionedField& iF, - const fvPatchFieldMapper& mapper -) -: - mixedFvPatchScalarField(ptf, p, iF, mapper) -{} - - -Foam::mixedEnthalpyRealFluids::mixedEnthalpyRealFluids -( - const fvPatch& p, - const DimensionedField& iF, - const dictionary& dict -) -: - mixedFvPatchScalarField(p, iF, dict) -{} - - -Foam::mixedEnthalpyRealFluids::mixedEnthalpyRealFluids -( - const mixedEnthalpyRealFluids& tppsf -) -: - mixedFvPatchScalarField(tppsf) -{} - - -Foam::mixedEnthalpyRealFluids::mixedEnthalpyRealFluids -( - const mixedEnthalpyRealFluids& tppsf, - const DimensionedField& iF -) -: - mixedFvPatchScalarField(tppsf, iF) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void Foam::mixedEnthalpyRealFluids::updateCoeffs() -{ - if (updated()) - { - return; - } - - const basicPsiThermo& thermo = db().lookupObject - ( - "thermophysicalProperties" - ); - - - const label patchi = patch().index(); - - mixedFvPatchScalarField& Tw = refCast - ( - const_cast(thermo.T().boundaryField()[patchi]) - ); - - Tw.evaluate(); - - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - pw.evaluate(); - - valueFraction() = Tw.valueFraction(); - - if (dimensionedInternalField().name() == "h") - { - refValue() = thermo.h(pw,Tw.refValue(), patchi); - refGrad() = thermo.Cp(pw,Tw, patchi)*Tw.refGrad() - + patch().deltaCoeffs()* - ( - thermo.h(pw,Tw, patchi) - - thermo.h(pw,Tw, patch().faceCells()) - ); - } - /* else - { - refValue() = thermo.hs(Tw.refValue(), patchi); - refGrad() = thermo.CpBC(pw,Tw, patchi)*Tw.refGrad() - + patch().deltaCoeffs()* - ( - thermo.hs(Tw, patchi) - - thermo.hs(Tw, patch().faceCells()) - ); - }*/ - - mixedFvPatchScalarField::updateCoeffs(); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - makePatchTypeField - ( - fvPatchScalarField, - mixedEnthalpyRealFluids - ); -} - - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.H deleted file mode 100755 index b74148637..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedEnthalpyRealFluids/mixedEnthalpyRealFluids.H +++ /dev/null @@ -1,146 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::mixedEnthalpyRealFluids - -Description - Mixed boundary conditions for enthalpy - -SourceFiles - mixedEnthalpyRealFluids.C - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#ifndef mixedEnthalpyRealFluids_H -#define mixedEnthalpyRealFluids_H - -#include "mixedFvPatchFields.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class mixedEnthalpyRealFluids Declaration -\*---------------------------------------------------------------------------*/ - -class mixedEnthalpyRealFluids -: - public mixedFvPatchScalarField -{ - -public: - - //- Runtime type information - TypeName("mixedEnthalpy"); - - - // Constructors - - //- Construct from patch and internal field - mixedEnthalpyRealFluids - ( - const fvPatch&, - const DimensionedField& - ); - - //- Construct from patch, internal field and dictionary - mixedEnthalpyRealFluids - ( - const fvPatch&, - const DimensionedField&, - const dictionary& - ); - - //- Construct by mapping given mixedEnthalpyRealFluids - // onto a new patch - mixedEnthalpyRealFluids - ( - const mixedEnthalpyRealFluids&, - const fvPatch&, - const DimensionedField&, - const fvPatchFieldMapper& - ); - - //- Construct as copy - mixedEnthalpyRealFluids - ( - const mixedEnthalpyRealFluids& - ); - - //- Construct and return a clone - virtual tmp clone() const - { - return tmp - ( - new mixedEnthalpyRealFluids(*this) - ); - } - - //- Construct as copy setting internal field reference - mixedEnthalpyRealFluids - ( - const mixedEnthalpyRealFluids&, - const DimensionedField& - ); - - //- Construct and return a clone setting internal field reference - virtual tmp clone - ( - const DimensionedField& iF - ) const - { - return tmp - ( - new mixedEnthalpyRealFluids(*this, iF) - ); - } - - - // Member functions - - // Evaluation functions - - //- Update the coefficients associated with the patch field - virtual void updateCoeffs(); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.C deleted file mode 100755 index 4d462759c..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.C +++ /dev/null @@ -1,151 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#include "mixedInternalEnergyRealFluids.H" -#include "addToRunTimeSelectionTable.H" -#include "fvPatchFieldMapper.H" -#include "volFields.H" -#include "basicPsiThermo.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -mixedInternalEnergyRealFluids::mixedInternalEnergyRealFluids -( - const fvPatch& p, - const DimensionedField& iF -) -: - mixedFvPatchScalarField(p, iF) -{ - valueFraction() = 0.0; - refValue() = 0.0; - refGrad() = 0.0; -} - - -mixedInternalEnergyRealFluids::mixedInternalEnergyRealFluids -( - const mixedInternalEnergyRealFluids& ptf, - const fvPatch& p, - const DimensionedField& iF, - const fvPatchFieldMapper& mapper -) -: - mixedFvPatchScalarField(ptf, p, iF, mapper) -{} - - -mixedInternalEnergyRealFluids::mixedInternalEnergyRealFluids -( - const fvPatch& p, - const DimensionedField& iF, - const dictionary& dict -) -: - mixedFvPatchScalarField(p, iF, dict) -{} - - -mixedInternalEnergyRealFluids::mixedInternalEnergyRealFluids -( - const mixedInternalEnergyRealFluids& tppsf -) -: - mixedFvPatchScalarField(tppsf) -{} - - -mixedInternalEnergyRealFluids::mixedInternalEnergyRealFluids -( - const mixedInternalEnergyRealFluids& tppsf, - const DimensionedField& iF -) -: - mixedFvPatchScalarField(tppsf, iF) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void mixedInternalEnergyRealFluids::updateCoeffs() -{ - if (updated()) - { - return; - } - - const basicPsiThermo& thermo = db().lookupObject - ( - "thermophysicalProperties" - ); - - - const label patchi = patch().index(); - - mixedFvPatchScalarField& Tw = refCast - ( - const_cast(thermo.T().boundaryField()[patchi]) - ); - - Tw.evaluate(); - - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - pw.evaluate(); - - valueFraction() = Tw.valueFraction(); - refValue() = thermo.e(pw,Tw.refValue(), patchi); - refGrad() = thermo.Cv(pw,Tw, patchi)*Tw.refGrad() - + patch().deltaCoeffs()* - ( - thermo.e(pw,Tw, patchi) - - thermo.e(pw,Tw, patch().faceCells()) - ); - - mixedFvPatchScalarField::updateCoeffs(); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -makePatchTypeField(fvPatchScalarField, mixedInternalEnergyRealFluids); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.H deleted file mode 100755 index 491305f59..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/mixedInternalEnergyRealFluids/mixedInternalEnergyRealFluids.H +++ /dev/null @@ -1,146 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::mixedInternalEnergyRealFluids - -Description - Mixed boundary conditions for internal energy - -SourceFiles - mixedInternalEnergyRealFluids.C - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#ifndef mixedInternalEnergyRealFluids_H -#define mixedInternalEnergyRealFluids_H - -#include "mixedFvPatchFields.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class mixedInternalEnergyRealFluids Declaration -\*---------------------------------------------------------------------------*/ - -class mixedInternalEnergyRealFluids -: - public mixedFvPatchScalarField -{ - -public: - - //- Runtime type information - TypeName("mixedInternalEnergy"); - - - // Constructors - - //- Construct from patch and internal field - mixedInternalEnergyRealFluids - ( - const fvPatch&, - const DimensionedField& - ); - - //- Construct from patch, internal field and dictionary - mixedInternalEnergyRealFluids - ( - const fvPatch&, - const DimensionedField&, - const dictionary& - ); - - //- Construct by mapping given mixedInternalEnergyRealFluids - // onto a new patch - mixedInternalEnergyRealFluids - ( - const mixedInternalEnergyRealFluids&, - const fvPatch&, - const DimensionedField&, - const fvPatchFieldMapper& - ); - - //- Construct as copy - mixedInternalEnergyRealFluids - ( - const mixedInternalEnergyRealFluids& - ); - - //- Construct and return a clone - virtual tmp clone() const - { - return tmp - ( - new mixedInternalEnergyRealFluids(*this) - ); - } - - //- Construct as copy setting internal field reference - mixedInternalEnergyRealFluids - ( - const mixedInternalEnergyRealFluids&, - const DimensionedField& - ); - - //- Construct and return a clone setting internal field reference - virtual tmp clone - ( - const DimensionedField& iF - ) const - { - return tmp - ( - new mixedInternalEnergyRealFluids(*this, iF) - ); - } - - - // Member functions - - // Evaluation functions - - //- Update the coefficients associated with the patch field - virtual void updateCoeffs(); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.C deleted file mode 100755 index 521b46f3a..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.C +++ /dev/null @@ -1,198 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#include "realFluidWallHeatTransferFvPatchScalarField.H" -#include "addToRunTimeSelectionTable.H" -#include "fvPatchFieldMapper.H" -#include "volFields.H" -#include "basicPsiThermo.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::realFluidWallHeatTransferFvPatchScalarField::realFluidWallHeatTransferFvPatchScalarField -( - const fvPatch& p, - const DimensionedField& iF -) -: - mixedFvPatchScalarField(p, iF), - Tinf_(p.size(), 0.0), - alphaWall_(p.size(), 0.0) -{ - refValue() = 0.0; - refGrad() = 0.0; - valueFraction() = 0.0; -} - - -Foam::realFluidWallHeatTransferFvPatchScalarField::realFluidWallHeatTransferFvPatchScalarField -( - const realFluidWallHeatTransferFvPatchScalarField& ptf, - const fvPatch& p, - const DimensionedField& iF, - const fvPatchFieldMapper& mapper -) -: - mixedFvPatchScalarField(ptf, p, iF, mapper), - Tinf_(ptf.Tinf_, mapper), - alphaWall_(ptf.alphaWall_, mapper) -{} - - -Foam::realFluidWallHeatTransferFvPatchScalarField::realFluidWallHeatTransferFvPatchScalarField -( - const fvPatch& p, - const DimensionedField& iF, - const dictionary& dict -) -: - mixedFvPatchScalarField(p, iF), - Tinf_("Tinf", dict, p.size()), - alphaWall_("alphaWall", dict, p.size()) -{ - refValue() = Tinf_; - refGrad() = 0.0; - valueFraction() = 0.0; - - if (dict.found("value")) - { - fvPatchField::operator= - ( - scalarField("value", dict, p.size()) - ); - } - else - { - evaluate(); - } -} - - -Foam::realFluidWallHeatTransferFvPatchScalarField::realFluidWallHeatTransferFvPatchScalarField -( - const realFluidWallHeatTransferFvPatchScalarField& tppsf -) -: - mixedFvPatchScalarField(tppsf), - Tinf_(tppsf.Tinf_), - alphaWall_(tppsf.alphaWall_) -{} - - -Foam::realFluidWallHeatTransferFvPatchScalarField::realFluidWallHeatTransferFvPatchScalarField -( - const realFluidWallHeatTransferFvPatchScalarField& tppsf, - const DimensionedField& iF -) -: - mixedFvPatchScalarField(tppsf, iF), - Tinf_(tppsf.Tinf_), - alphaWall_(tppsf.alphaWall_) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void Foam::realFluidWallHeatTransferFvPatchScalarField::autoMap -( - const fvPatchFieldMapper& m -) -{ - scalarField::autoMap(m); - Tinf_.autoMap(m); - alphaWall_.autoMap(m); -} - - -void Foam::realFluidWallHeatTransferFvPatchScalarField::rmap -( - const fvPatchScalarField& ptf, - const labelList& addr -) -{ - mixedFvPatchScalarField::rmap(ptf, addr); - - const realFluidWallHeatTransferFvPatchScalarField& tiptf = - refCast(ptf); - - Tinf_.rmap(tiptf.Tinf_, addr); - alphaWall_.rmap(tiptf.alphaWall_, addr); -} - - -void Foam::realFluidWallHeatTransferFvPatchScalarField::updateCoeffs() -{ - if (updated()) - { - return; - } - - const basicPsiThermo& thermo = db().lookupObject - ( - "thermophysicalProperties" - ); - - const label patchi = patch().index(); - - const scalarField& Tw = thermo.T().boundaryField()[patchi]; - const scalarField& pw = thermo.p().boundaryField()[patchi]; - scalarField Cpw = thermo.Cp(pw,Tw, patchi); - - valueFraction() = - 1.0/ - ( - 1.0 - + Cpw*thermo.alpha().boundaryField()[patchi] - *patch().deltaCoeffs()/alphaWall_ - ); - - mixedFvPatchScalarField::updateCoeffs(); -} - - -void Foam::realFluidWallHeatTransferFvPatchScalarField::write(Ostream& os) const -{ - fvPatchScalarField::write(os); - Tinf_.writeEntry("Tinf", os); - alphaWall_.writeEntry("alphaWall", os); - writeEntry("value", os); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - makePatchTypeField(fvPatchScalarField, realFluidWallHeatTransferFvPatchScalarField); -} - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.H b/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.H deleted file mode 100755 index b50bae77a..000000000 --- a/src/thermophysicalModels/basic/derivedFvPatchFieldsRealGas/realFluidWallHeatTransfer/realFluidWallHeatTransferFvPatchScalarField.H +++ /dev/null @@ -1,201 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::realFluidWallHeatTransferFvPatchScalarField - -Description - Enthalpy boundary conditions for wall heat transfer - -SourceFiles - realFluidWallHeatTransferFvPatchScalarField.C - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#ifndef realFluidWallHeatTransferFvPatchScalarField_H -#define realFluidWallHeatTransferFvPatchScalarField_H - -#include "mixedFvPatchFields.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class wallHeatTransferFvPatch Declaration -\*---------------------------------------------------------------------------*/ - -class realFluidWallHeatTransferFvPatchScalarField -: - public mixedFvPatchScalarField -{ - // Private data - - //- Tinf - scalarField Tinf_; - - //- alphaWall - scalarField alphaWall_; - - -public: - - //- Runtime type information - TypeName("realFluidWallHeatTransfer"); - - - // Constructors - - //- Construct from patch and internal field - realFluidWallHeatTransferFvPatchScalarField - ( - const fvPatch&, - const DimensionedField& - ); - - //- Construct from patch, internal field and dictionary - realFluidWallHeatTransferFvPatchScalarField - ( - const fvPatch&, - const DimensionedField&, - const dictionary& - ); - - //- Construct by mapping given realFluidWallHeatTransferFvPatchScalarField - // onto a new patch - realFluidWallHeatTransferFvPatchScalarField - ( - const realFluidWallHeatTransferFvPatchScalarField&, - const fvPatch&, - const DimensionedField&, - const fvPatchFieldMapper& - ); - - //- Construct as copy - realFluidWallHeatTransferFvPatchScalarField - ( - const realFluidWallHeatTransferFvPatchScalarField& - ); - - //- Construct and return a clone - virtual tmp clone() const - { - return tmp - ( - new realFluidWallHeatTransferFvPatchScalarField(*this) - ); - } - - //- Construct as copy setting internal field reference - realFluidWallHeatTransferFvPatchScalarField - ( - const realFluidWallHeatTransferFvPatchScalarField&, - const DimensionedField& - ); - - //- Construct and return a clone setting internal field reference - virtual tmp clone - ( - const DimensionedField& iF - ) const - { - return tmp - ( - new realFluidWallHeatTransferFvPatchScalarField(*this, iF) - ); - } - - - // Member functions - - // Access - - //- Return Tinf - const scalarField& Tinf() const - { - return Tinf_; - } - - //- Return reference to Tinf to allow adjustment - scalarField& Tinf() - { - return Tinf_; - } - - //- Return alphaWall - const scalarField& alphaWall() const - { - return alphaWall_; - } - - //- Return reference to alphaWall to allow adjustment - scalarField& alphaWall() - { - return alphaWall_; - } - - - // Mapping functions - - //- Map (and resize as needed) from self given a mapping object - virtual void autoMap - ( - const fvPatchFieldMapper& - ); - - //- Reverse map the given fvPatchField onto this fvPatchField - virtual void rmap - ( - const fvPatchScalarField&, - const labelList& - ); - - - // Evaluation functions - - //- Update the coefficients associated with the patch field - virtual void updateCoeffs(); - - - //- Write - virtual void write(Ostream&) const; -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C index 869a2eb1b..0d9ecb899 100644 --- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C +++ b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C @@ -47,6 +47,13 @@ Description #include "addToRunTimeSelectionTable.H" +#include "redlichKwong.H" +#include "pengRobinson.H" +#include "aungierRedlichKwong.H" +#include "soaveRedlichKwong.H" +#include "realGasSpecieThermo.H" +#include "nasaHeatCapacityPolynomial.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam @@ -103,7 +110,17 @@ makeBasicMixturePhys makeBasicRealFluidMixture ( pureMixture, - realGasSutherlandTransport, + sutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + + +makeBasicRealFluidMixture +( + pureMixture, + sutherlandTransport, realGasSpecieThermo, nasaHeatCapacityPolynomial, pengRobinson @@ -112,7 +129,7 @@ makeBasicRealFluidMixture makeBasicRealFluidMixture ( pureMixture, - realGasSutherlandTransport, + sutherlandTransport, realGasSpecieThermo, nasaHeatCapacityPolynomial, aungierRedlichKwong @@ -122,7 +139,7 @@ makeBasicRealFluidMixture makeBasicRealFluidMixture ( pureMixture, - realGasSutherlandTransport, + sutherlandTransport, realGasSpecieThermo, nasaHeatCapacityPolynomial, soaveRedlichKwong @@ -133,7 +150,7 @@ makeBasicRealFluidMixture makeBasicRealFluidMixture ( pureMixture, - realGasConstTransport, + constTransport, realGasSpecieThermo, nasaHeatCapacityPolynomial, redlichKwong @@ -143,7 +160,7 @@ makeBasicRealFluidMixture makeBasicRealFluidMixture ( pureMixture, - realGasConstTransport, + constTransport, realGasSpecieThermo, nasaHeatCapacityPolynomial, pengRobinson @@ -153,7 +170,7 @@ makeBasicRealFluidMixture makeBasicRealFluidMixture ( pureMixture, - realGasConstTransport, + constTransport, realGasSpecieThermo, nasaHeatCapacityPolynomial, aungierRedlichKwong @@ -163,7 +180,7 @@ makeBasicRealFluidMixture makeBasicRealFluidMixture ( pureMixture, - realGasConstTransport, + constTransport, realGasSpecieThermo, nasaHeatCapacityPolynomial, soaveRedlichKwong diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C index 18c6daa87..e408ddd7b 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C @@ -129,7 +129,7 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) ), mesh, dimensionSet(0, 2, -2, 0, 0), - this->hRealBoundaryTypes() + this->hBoundaryTypes() ), rho_ @@ -184,7 +184,7 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) h((this->rho_.boundaryField()[patchi]) , this->T_.boundaryField()[patchi], patchi); } - hRealBoundaryCorrection(h_); + hBoundaryCorrection(h_); calculate(); // Switch on saving old time diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C index 91dfbe76b..547fcee63 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C @@ -42,10 +42,10 @@ Germany #include "soaveRedlichKwong.H" #include "nasaHeatCapacityPolynomial.H" #include "realGasSpecieThermo.H" +#include "constTransport.H" +#include "sutherlandTransport.H" #include "pureMixture.H" -#include "realGasSutherlandTransport.H" -#include "realGasConstTransport.H" #include "realGasHThermo.H" @@ -60,7 +60,47 @@ makeBasicRealGasThermo ( realGasHThermo, pureMixture, - realGasSutherlandTransport, + sutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + sutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + sutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + sutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + +makeBasicRealGasThermo +( + realGasHThermo, + pureMixture, + constTransport, realGasSpecieThermo, nasaHeatCapacityPolynomial, pengRobinson @@ -73,89 +113,32 @@ makeBasicRealGasThermo ( realGasHThermo, pureMixture, - realGasSutherlandTransport, + constTransport, realGasSpecieThermo, nasaHeatCapacityPolynomial, aungierRedlichKwong ); - - - makeBasicRealGasThermo ( realGasHThermo, pureMixture, - realGasSutherlandTransport, + constTransport, realGasSpecieThermo, nasaHeatCapacityPolynomial, redlichKwong ); - - - makeBasicRealGasThermo ( realGasHThermo, pureMixture, - realGasSutherlandTransport, + constTransport, realGasSpecieThermo, nasaHeatCapacityPolynomial, soaveRedlichKwong ); -makeBasicRealGasThermo -( - realGasHThermo, - pureMixture, - realGasConstTransport, - realGasSpecieThermo, - nasaHeatCapacityPolynomial, - pengRobinson -); - - - - -makeBasicRealGasThermo -( - realGasHThermo, - pureMixture, - realGasConstTransport, - realGasSpecieThermo, - nasaHeatCapacityPolynomial, - aungierRedlichKwong -); - - - - -makeBasicRealGasThermo -( - realGasHThermo, - pureMixture, - realGasConstTransport, - realGasSpecieThermo, - nasaHeatCapacityPolynomial, - redlichKwong -); - - - - -makeBasicRealGasThermo -( - realGasHThermo, - pureMixture, - realGasConstTransport, - realGasSpecieThermo, - nasaHeatCapacityPolynomial, - soaveRedlichKwong -); - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C index fb5d01800..b142ff72c 100755 --- a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C @@ -43,6 +43,19 @@ Germany namespace Foam { + +/* * * * * * * * * * * * * * * Private static data * * * * * * * * * * * * * */ + +const scalar aungierRedlichKwong::rhoMin_ +( + debug::tolerances("aungierRedlichKwongRhoMin", 1e-3) +); + +const scalar aungierRedlichKwong::rhoMax_ +( + debug::tolerances("aungierRedlichKwongRhoMax", 1500) +); + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // aungierRedlichKwong::aungierRedlichKwong(Istream& is) @@ -50,13 +63,16 @@ aungierRedlichKwong::aungierRedlichKwong(Istream& is) specie(is), pcrit_(readScalar(is)), Tcrit_(readScalar(is)), - azentricFactor_(readScalar(is)), - rhocrit_(readScalar(is)) + azentricFactor_(readScalar(is)), + rhocrit_(readScalar(is)), + a_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), + b_(0.08664*this->RR*Tcrit_/pcrit_), + c_(this->RR*Tcrit_/(pcrit_+(a_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), + n_(0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2)), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R()))) { is.check("aungierRedlichKwong::aungierRedlichKwong(Istream& is)"); - rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); - rhoMax_=1500; - rhoMin_=0.001; } @@ -65,7 +81,8 @@ aungierRedlichKwong::aungierRedlichKwong(Istream& is) Ostream& operator<<(Ostream& os, const aungierRedlichKwong& pg) { os << static_cast(pg)<< tab - << pg.pcrit_ << tab<< pg.Tcrit_< clone() const; @@ -90,52 +109,72 @@ public: // Selector from Istream inline static autoPtr New(Istream& is); - //Member Variabels - scalar pcrit_; - scalar Tcrit_; - scalar rhostd_; - scalar azentricFactor_; - scalar rhocrit_; - scalar rhoMax_; //should be read from the fvSolution file where rhoMax and rhoMin values must be define ( for rhoSimpleFoam) - scalar rhoMin_; + // Member functions + + inline scalar rhostd() const; - // Member functions - inline scalar pcrit() const; - inline scalar Tcrit() const; - inline scalar azentricFactor() const; - inline scalar rhostd()const; - inline scalar rhocrit() const; inline scalar p(const scalar rho, const scalar T) const; - //-Redlich Kwong factors - inline scalar a() const; - inline scalar b() const; - inline scalar c() const; - inline scalar n() const; - //derivatives - inline scalar dpdv(const scalar rho,const scalar T) const; + //first order derivatives + inline scalar dpdv(const scalar rho, const scalar T) const; + inline scalar dpdT(const scalar rho, const scalar T) const; - inline scalar dvdT(const scalar rho,const scalar T) const; + + inline scalar dvdT(const scalar rho, const scalar T) const; + inline scalar dvdp(const scalar rho, const scalar T) const; - inline scalar isobarExpCoef(const scalar rho,const scalar T) const; - inline scalar isothermalCompressiblity(const scalar rho,const scalar T) const; - inline scalar integral_d2pdT2_dv(const scalar rho,const scalar T) const ; // Used for cv - inline scalar d2pdv2(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar d2pdT2(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar d2pdvdT(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar d2vdT2(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar integral_p_dv(const scalar rho,const scalar T) const; //Used for internal Energy - inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; //Used for Entropy - //- Return density [kg/m^3] // rho0 is the starting point of the newton solver used to calculate rho - inline scalar rho(const scalar p,const scalar T,const scalar rho0) const; - inline scalar rho(const scalar p,const scalar T) const; + inline scalar isobarExpCoef(const scalar rho, const scalar T) const; - //- Return compressibility drho/dp [s^2/m^2] + inline scalar isothermalCompressiblity + ( + const scalar rho, + const scalar T + ) const; + + // Used for cv + inline scalar integral_d2pdT2_dv + ( + const scalar rho, + const scalar T + ) const ; + + // second order derivatives, not Used At The Moment + inline scalar d2pdv2(const scalar rho, const scalar T) const; + + inline scalar d2pdT2(const scalar rho, scalar T) const; + + inline scalar d2pdvdT(const scalar rho, const scalar T) const; + + inline scalar d2vdT2(const scalar rho, const scalar T) const; + + //Used for internal Energy + inline scalar integral_p_dv(const scalar rho, const scalar T) const; + + //Used for Entropy + inline scalar integral_dpdT_dv(const scalar rho, const scalar T) const; + + //- Return density [kg/m^3] + // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + inline scalar rho(const scalar p, const scalar T) const; + + //- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar psi(const scalar rho, const scalar T) const; - //- Return compression factor [] // rho0 is the starting point of the newton solver used to calculate rho - inline scalar Z(const scalar p,const scalar T,const scalar rho0) const; + //- Return compression factor [] + inline scalar Z + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; // Member operators diff --git a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H index f4294f85a..45ee2c1f9 100755 --- a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H @@ -40,230 +40,9 @@ namespace Foam - - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -inline scalar aungierRedlichKwong::pcrit()const -{ -return pcrit_; -} - - - -inline scalar aungierRedlichKwong::Tcrit()const -{ -return Tcrit_; -} - - -inline scalar aungierRedlichKwong::rhostd()const -{ -return rhostd_; -} - -inline scalar aungierRedlichKwong::rhocrit()const -{ -return rhocrit_; -} - -// Returns the Azentric Factor (Acentric Factor) -inline scalar aungierRedlichKwong::azentricFactor() const -{ -return azentricFactor_; -} - -//returns the pressure for a given density and temperature -inline scalar aungierRedlichKwong::p(const scalar rho,const scalar T) const -{ - -return this->RR*T/((this->W()/rho)-this->b()+this->c()) --this->a()*pow(T,-this->n())/(pow(this->Tcrit(),-this->n())*(this->W()/rho)*((this->W()/rho)+this->b())); -} - - - -// Factor a of the redlich Kwong equation of state -//(molar values) -inline scalar aungierRedlichKwong::a() const -{ -return 0.42747*pow(this->RR,2)*pow(this->Tcrit(),2)/this->pcrit(); -} - - - -// Faktor b of the redlich Kwong equation of state -//(molar values) -inline scalar aungierRedlichKwong::b() const -{ -return 0.08664*this->RR*this->Tcrit()/this->pcrit(); -} -// Factor c of the redlich Kwong equation of state -//(molar values) -inline scalar aungierRedlichKwong::c() const -{ -return this->RR*this->Tcrit()/(this->pcrit()+(this->a()/(this->W()/this->rhocrit()*(this->W()/this->rhocrit()+this->b()))))+this->b()-this->W()/this->rhocrit(); -} -// Factor n of the redlich Kwong equation of state -inline scalar aungierRedlichKwong::n() const -{ -return 0.4986+1.2735*this->azentricFactor()+0.4754*pow(this->azentricFactor(),2); -} - - -//* * * * * * * * * * * * * Derivatives * * * * * * * * * * * // - - - -//Real deviative dp/dv at constant temperature -//(molar values) -inline scalar aungierRedlichKwong::dpdv(const scalar rho, const scalar T) const -{ - - - return this->a()*pow(T,-this->n())*pow(this->Tcrit(),this->n())*(this->b()+2*(this->W()/rho))/(pow((this->W()/rho),2)*pow((this->b()+(this->W()/rho)),2))-this->RR*T/(pow((this->b()-(this->W()/rho)-this->c()),2)); -} - - - - -//Real deviative dp/dT at constant molar volume -//(molar values) -inline scalar aungierRedlichKwong::dpdT(const scalar rho, const scalar T) const -{ -return this->a()*this->n()*pow(T,-this->n()-1)*pow(this->Tcrit(),this->n())/((this->W()/rho)*((this->W()/rho)+this->b()))- -this->RR/(this->b()-(this->W()/rho)-this->c()); -} - - - - -//Real deviative dv/dT at constant pressure -//using implicit differentiation -//(molar values) -inline scalar aungierRedlichKwong::dvdT(const scalar rho,const scalar T) const -{ -return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); -} - - - - -//Real deviative dv/dp at constant temperature -//(molar values) -inline scalar aungierRedlichKwong::dvdp(const scalar rho,const scalar T) const -{ -return 1/this->dpdv(rho,T); -} - - - - - - -//needed to calculate the internal energy -//(molar values) -inline scalar aungierRedlichKwong::integral_p_dv(const scalar rho,const scalar T) const -{ -return -pow((T/this->Tcrit()),-this->n())*(this->a()*log((this->W()/rho))/(this->b())-this->a()*log(this->b()+(this->W()/rho))/this->b())+this->RR*T*log((this->W()/rho)-this->b()+this->c()); -} - - - -//needed to calculate the entropy -//(molar values) -inline scalar aungierRedlichKwong::integral_dpdT_dv(const scalar rho,const scalar T) const -{ -return pow(T,-this->n()-1)*pow(this->Tcrit(),this->n())* -(this->a()*this->n()*log((this->W()/rho))/(this->b()) --this->a()*this->n()*log(this->b()+(this->W()/rho))/(this->b())) -+ this->RR*log(-this->b()+this->c()+(this->W()/rho)); -} - - - - -//* * * * * * * * * * * * * second order Derivative based functions * * * * * * * * * * * // - - - -//(molar values) -inline scalar aungierRedlichKwong::d2pdT2(const scalar rho,const scalar T) const -{ -return -this->a()*this->n()*pow(T,-this->n()-2)*pow(this->Tcrit(),this->n())*(this->n()+1)/((this->W()/rho)*(this->b()+(this->W()/rho))); -} - - - - -//(molar values) -inline scalar aungierRedlichKwong::d2pdv2(const scalar rho,const scalar T) const -{ - return -2*this->a()*pow(T,-this->n())*pow(this->Tcrit(),this->n())*(pow(this->b(),2)+3*this->b()*(this->W()/rho)+3*pow((this->W()/rho),2))/(pow((this->W()/rho),3)*pow((this->b()+(this->W()/rho)),3))-2*this->RR*T/(pow((this->b()-(this->W()/rho)-this->c()),3)); -} - - - - -//(molar values) -//using second order implicit differentiation -inline scalar aungierRedlichKwong::d2vdT2(const scalar rho, const scalar T) const -{ -return -(pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T)+ pow(this->dpdv(rho,T),2) *this->d2pdT2(rho,T)- 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T))/( pow(this->dpdv(rho,T),3)); -} - - - - -//(molar values) -inline scalar aungierRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const -{ -return -this->a()*this->n()*pow(T,-this->n()-1)*pow(this->Tcrit(),this->n())*(this->b()+2*(this->W()/rho))/(pow((this->W()/rho),2)*pow((this->b()+(this->W()/rho)),2))-this->RR/(pow((this->b()-this->c()-(this->W()/rho)),2)); -} - - - - -// the result of this intergal is needed for the nasa based cp polynomial -//(molar values) -inline scalar aungierRedlichKwong::integral_d2pdT2_dv(const scalar rho,const scalar T) const -{ -return pow(T,-this->n()-2)*pow(this->Tcrit(),this->n())*(this->a()*this->n()*(this->n()+1)*log(this->b()+(this->W()/rho))/this->b()-this->a()*this->n()*(1+this->n())*log((this->W()/rho))/this->b()); -} - - - - - -//* * * * * * * * * * * * * thermodynamic properties * * * * * * * * * * * // - - -//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p -//(molar values) -inline scalar aungierRedlichKwong::isobarExpCoef(const scalar rho,const scalar T) const -{ - return this->dvdT(rho, T)*rho/this->W(); -} - -//isothemal compressiblity kappa -//(molar values) -inline scalar aungierRedlichKwong::isothermalCompressiblity(const scalar rho,const scalar T) const -{ -return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); -//also possible : return -this->dvdp(rho,T)*rho/this->W(); -} - - - - - - - - - +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // Construct from components -// Starting GUESS for the density by ideal gas law inline aungierRedlichKwong::aungierRedlichKwong ( const specie& sp, @@ -276,26 +55,32 @@ inline aungierRedlichKwong::aungierRedlichKwong specie(sp), pcrit_(pcrit), Tcrit_(Tcrit), - azentricFactor_(azentricFactor), - rhocrit_(rhocrit) -{ - rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); // Starting GUESS for the density by ideal gas law -} + azentricFactor_(azentricFactor), + rhocrit_(rhocrit), + a_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), + b_(0.08664*this->RR*Tcrit_/pcrit_), + c_(this->RR*Tcrit_/(pcrit_+(a_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), + n_(0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2)), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R()))) +{} -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - // Construct as named copy - -inline aungierRedlichKwong::aungierRedlichKwong(const word& name, aungierRedlichKwong& pg) +inline aungierRedlichKwong::aungierRedlichKwong(const word& name, const aungierRedlichKwong& pg) : specie(name, pg), pcrit_(pg.pcrit_), Tcrit_(pg.Tcrit_), - azentricFactor_(pg.azentricFactor_) -{ - pg.rhostd_=this->rho(Pstd,Tstd, (Pstd*this->W()/(Tstd*this->R()))); // Starting GUESS for the density by ideal gas law -} + azentricFactor_(pg.azentricFactor_), + rhocrit_(pg.rhocrit_), + a_(pg.a_), + b_(pg.b_), + c_(pg.c_), + n_(pg.n_), + rhostd_(pg.rhostd_) +{} + // Construct and return a clone @@ -312,105 +97,267 @@ inline autoPtr aungierRedlichKwong::New(Istream& is) } -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +// * * * * * * * * * * * * * Member Functions * * * * * * * * * * * // +inline scalar aungierRedlichKwong::rhostd()const +{ + return rhostd_; +} + +//returns the pressure for a given density and temperature +inline scalar aungierRedlichKwong::p(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return this->RR*T/(Vm-b_+c_) + -a_*pow(T,-n_)/(pow(Tcrit_,-n_)*Vm*(Vm+b_)); +} + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar aungierRedlichKwong::dpdv(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return a_*pow(T,-n_)*pow(Tcrit_,n_)*(b_+2*Vm)/(pow(Vm,2)*pow((b_+Vm),2)) + -this->RR*T/(pow((b_-Vm-c_),2)); +} + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar aungierRedlichKwong::dpdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return a_*n_*pow(T,-n_-1)*pow(Tcrit_,n_)/(Vm*(Vm+b_)) + -this->RR/(b_-Vm-c_); +} + + +//Real deviative dv/dT at constant pressure +//using implicit differentiation +//(molar values) +inline scalar aungierRedlichKwong::dvdT(const scalar rho,const scalar T) const +{ + return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); +} + + +//Real deviative dv/dp at constant temperature +//(molar values) +inline scalar aungierRedlichKwong::dvdp(const scalar rho,const scalar T) const +{ + return 1/this->dpdv(rho,T); +} + + +//needed to calculate the internal energy +//(molar values) +inline scalar aungierRedlichKwong::integral_p_dv +( + const scalar rho, + const scalar T +) const +{ + scalar Vm = this->W()/rho; + return -pow((T/Tcrit_),-n_)*(a_*log(Vm)/(b_) + -a_*log(b_+Vm)/b_)+this->RR*T*log(Vm-b_+c_); +} + + + +//needed to calculate the entropy +//(molar values) +inline scalar aungierRedlichKwong::integral_dpdT_dv +( + const scalar rho, + const scalar T +) const +{ + scalar Vm = this->W()/rho; + return pow(T,-n_-1)*pow(Tcrit_,n_)*(a_*n_*log(Vm)/(b_) + -a_*n_*log(b_+Vm)/(b_))+ this->RR*log(-b_+c_+Vm); +} + + +//(molar values) +inline scalar aungierRedlichKwong::d2pdT2(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return -a_*n_*pow(T,-n_-2)*pow(Tcrit_,n_)*(n_+1)/(Vm*(b_+Vm)); +} + + + + +//(molar values) +inline scalar aungierRedlichKwong::d2pdv2(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return -2*a_*pow(T,-n_)*pow(Tcrit_,n_)*(pow(b_,2) + +3*b_*Vm+3*pow(Vm,2))/(pow(Vm,3)*pow((b_+Vm),3)) + -2*this->RR*T/(pow((b_-Vm-c_),3)); +} + + + + +//(molar values) +//using second order implicit differentiation +inline scalar aungierRedlichKwong::d2vdT2(const scalar rho, const scalar T) const +{ + return + -( + pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T) + + pow(this->dpdv(rho,T),2)*this->d2pdT2(rho,T) + - 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T) + ) + /(pow(this->dpdv(rho,T),3)); +} + + + + +//(molar values) +inline scalar aungierRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return -a_*n_*pow(T,-n_-1)*pow(Tcrit_,n_)*(b_+2*Vm)/(pow(Vm,2)*pow((b_+Vm),2)) + -this->RR/(pow((b_-c_-Vm),2)); +} + + + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar aungierRedlichKwong::integral_d2pdT2_dv +( + const scalar rho, + const scalar T +) const +{ + scalar Vm = this->W()/rho; + return pow(T,-n_-2)*pow(Tcrit_,n_)*(a_*n_*(n_+1)*log(b_+Vm) + /b_-a_*n_*(1+n_)*log(Vm)/b_); +} + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar aungierRedlichKwong::isobarExpCoef(const scalar rho,const scalar T) const +{ + return this->dvdT(rho, T)*rho/this->W(); +} + + +//isothemal compressiblity kappa (not Thermal conductivity) +//(molar values) +inline scalar aungierRedlichKwong::isothermalCompressiblity(const scalar rho,const scalar T) const +{ + return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); + //also possible : return -this->dvdp(rho,T)*rho/this->W(); +} + //- Return density [kg/m^3] -inline scalar aungierRedlichKwong::rho(const scalar p,const scalar T,const scalar rho0) const +inline scalar aungierRedlichKwong::rho( + const scalar p, + const scalar T, + const scalar rho0 +) const { - - + scalar molarVolumePrevIteration; scalar molarVolume; - int iter=0; + int iter=0; int maxIter_=400; scalar tol_=1e-8; - int i; - scalar rho1=rhoMax_, rho2=rhoMin_,rho3, f1,f2,f3; - - -molarVolume=this->W()/rho0; + scalar rho1=rhoMax_; + scalar rho2=rhoMin_; + molarVolume=this->W()/rho0; do { - molarVolumePrevIteration= molarVolume; + molarVolumePrevIteration= molarVolume; + + label i=0; + do + { + molarVolume=molarVolumePrevIteration + -( + (this->p((this->W()/molarVolumePrevIteration),T) - p) + /(this->dpdv((this->W()/molarVolumePrevIteration),T)) + )/pow(2,i); - i=0; - do - { - molarVolume=molarVolumePrevIteration-((this->p((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ - molarVolumePrevIteration),T)))/(pow(2,i)); - i++; - if(i>8) - { - - //using bisection methode as backup, solution must be between rho=0.001 to rho=1500; - for(i=0;i<200;i++) - { - f1= (this->p(rho1,T)-p); - f2= (this->p(rho2,T)-p); - rho3=(rho1+rho2)/2; - f3=(this->p(rho3,T)-p); + i++; + if (i>8) + { + //using bisection methode as backup, + //solution must be between rho=0.001 to rho=1500; + for(i=0; i<200; i++) + { + scalar f1 = this->p(rho1,T) - p; + scalar f2 = this->p(rho2,T) - p; + scalar rho3 = (rho1 + rho2)/2; + scalar f3 = this->p(rho3,T) - p; - if ((f2<0 && f3>0)||(f2>0 &&f3<0)) - { - rho1=rho3; - } - else if ((f1<0 && f3>0)||(f1>0 &&f3<0)) - { - rho2=rho3; - } - - else - { - rho2=(rho2+rho3)/2; - } + if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) + { + rho1=rho3; + } + else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) + { + rho2=rho3; + } + else + { + rho2=(rho2 + rho3)/2; + } - if(mag(f3)W()/rho3; - molarVolumePrevIteration=this->W()/rho3; - break; - } - else - { - molarVolumePrevIteration=this->W()/rho3; - } - } - } - } - while(mag(this->p((this->W()/molarVolume),T)-p)>mag(this->p((this->W()/molarVolumePrevIteration),T)-p)); - - if (iter++ > maxIter_) - { - FatalErrorIn - ( - "inline scalar aungierRedlichKwong::rho(const scalar p,const scalar T,const scalar rho0) const " - ) << "Maximum number of iterations exceeded" - << abort(FatalError); - } + if(mag(f3) < p*tol_) + { + molarVolume=this->W()/rho3; + molarVolumePrevIteration=this->W()/rho3; + break; + } + else + { + molarVolumePrevIteration=this->W()/rho3; + } + } + } + } + while + ( + mag(this->p((this->W()/molarVolume),T) - p) + > mag(this->p((this->W()/molarVolumePrevIteration),T) - p) + ); + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "inline scalar redlichKwong::rho(const scalar p, const scalar T, const scalar rho0) const " + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } } - while(mag(molarVolumePrevIteration-molarVolume)>tol_*(this->W()/rho0)); - - return this->W()/molarVolume; - + while(mag(molarVolumePrevIteration-molarVolume) > tol_*(this->W()/rho0)); + + return this->W()/molarVolume; } -//- Return density [kg/m^3]on +//- Return density [kg/m^3] inline scalar aungierRedlichKwong::rho(const scalar p,const scalar T) const { - - -scalar rho0=p/(this->R()*T); //using perfect gas equation as starting point -return rho(p,T,rho0); - + //using perfect gas equation as starting point + return rho(p,T,p/(this->R()*T)); } -//- Return compressibility drho/dp [s^2/m^2] +//- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar aungierRedlichKwong::psi(const scalar rho, const scalar T) const { - return -this->dvdp(rho,T)*pow(rho,2)/this->W(); + return -this->dvdp(rho,T)*pow(rho,2)/this->W(); } //- Return compression factor [] diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C index 4a55086c0..61c1e244d 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C @@ -41,6 +41,18 @@ Germany namespace Foam { +/* * * * * * * * * * * * * * * Private static data * * * * * * * * * * * * * */ + +const scalar pengRobinson::rhoMin_ +( + debug::tolerances("pengRobinsonRhoMin", 1e-3) +); + +const scalar pengRobinson::rhoMax_ +( + debug::tolerances("pengRobinsonRhoMax", 1500) +); + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // pengRobinson::pengRobinson(Istream& is) @@ -48,15 +60,14 @@ pengRobinson::pengRobinson(Istream& is) specie(is), pcrit_(readScalar(is)), Tcrit_(readScalar(is)), - azentricFactor_(readScalar(is)) + azentricFactor_(readScalar(is)), + a_(0.457235*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), + b_(0.077796*this->RR*Tcrit_/pcrit_), + n_(0.37464+1.54226*azentricFactor_-0.26992*pow(azentricFactor_,2)), + rhostd_(this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R()))) { is.check("pengRobinson::pengRobinson(Istream& is)"); - rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); - rhoMax_=1500; - rhoMin_=0.001; - - - + } diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H index ddd7b03ed..0d8bc74f6 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H @@ -47,8 +47,7 @@ Germany #include "specie.H" #include "autoPtr.H" -#include "word.H" -#include "scalar.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -64,6 +63,25 @@ class pengRobinson public specie { + //Member Variabels + scalar pcrit_; + scalar Tcrit_; + scalar azentricFactor_; + + //-Peng Robinson factors + scalar a_; + scalar b_; + scalar n_; + + //- Density @STD, initialise after a, b! + scalar rhostd_; + + // Static Private data + + //should be read from the fvSolution file where rhoMax and rhoMin values must be defined (for rhoSimpleFoam) + //HR: Don't know, yet. Let's make these static for starters + static const scalar rhoMax_; + static const scalar rhoMin_; public: @@ -83,7 +101,7 @@ public: pengRobinson(Istream&); //- Construct as named copy - inline pengRobinson(const word& name, pengRobinson&); + inline pengRobinson(const word& name,const pengRobinson&); //- Construct and return a clone inline autoPtr clone() const; @@ -91,49 +109,78 @@ public: // Selector from Istream inline static autoPtr New(Istream& is); - //Member Variabels - scalar pcrit_; - scalar Tcrit_; - scalar rhostd_; - scalar azentricFactor_; - scalar rhoMax_; //should be read from the fvSolution file where rhoMax and rhoMin values must be define ( for rhoSimpleFoam) - scalar rhoMin_; + + // Member functions - inline scalar pcrit() const; - inline scalar Tcrit() const; - inline scalar azentricFactor() const; inline scalar rhostd()const; + inline scalar p(const scalar rho, const scalar T) const; - //-Redlich Kwong factors - inline scalar a() const; - inline scalar b() const; - inline scalar n() const; - - //derivatives + //first order derivatives inline scalar dpdv(const scalar rho,const scalar T) const; - inline scalar dpdT(const scalar rho, const scalar T) const; - inline scalar dvdT(const scalar rho,const scalar T) const; - inline scalar dvdp(const scalar rho, const scalar T) const; - inline scalar isobarExpCoef(const scalar rho,const scalar T) const; - inline scalar isothermalCompressiblity(const scalar rho,const scalar T) const; - inline scalar integral_d2pdT2_dv(const scalar rho,const scalar T) const ; // Used for cv - inline scalar d2pdv2(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar d2pdT2(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar d2pdvdT(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar d2vdT2(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar integral_p_dv(const scalar rho,const scalar T) const; //Used for internal Energy - inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; //Used for Entropy - //- Return density [kg/m^3] // rho0 is the starting point of the newton solver used to calculate rho - inline scalar rho(const scalar p,const scalar T,const scalar rho0) const; + inline scalar dpdT(const scalar rho, const scalar T) const; + + inline scalar dvdT(const scalar rho,const scalar T) const; + + inline scalar dvdp(const scalar rho, const scalar T) const; + + inline scalar isobarExpCoef + ( + const scalar rho, + const scalar T + ) const; + + inline scalar isothermalCompressiblity + ( + const scalar rho, + const scalar T + ) const; + + // Used for cv + inline scalar integral_d2pdT2_dv + ( + const scalar rho, + const scalar T + ) const ; + + // second order derivatives, not Used At The Moment + inline scalar d2pdv2(const scalar rho,const scalar T) const; + + inline scalar d2pdT2(const scalar rho,const scalar T) const; + + inline scalar d2pdvdT(const scalar rho,const scalar T) const; + + inline scalar d2vdT2(const scalar rho,const scalar T) const; + + //Used for internal Energy + inline scalar integral_p_dv(const scalar rho,const scalar T) const; + + //Used for Entropy + inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; + + //- Return density [kg/m^3] + // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + inline scalar rho(const scalar p,const scalar T) const; - //- Return compressibility rho/p [s^2/m^2] // rho0 is the starting point of the newton solver used to calculate rho + + //- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar psi(const scalar rho, const scalar T) const; //- Return compression factor [] - inline scalar Z(const scalar p,const scalar T,const scalar rho0) const; + inline scalar Z + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; // Member operators diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H index f2a07ac97..2be1bba5b 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H @@ -39,243 +39,7 @@ namespace Foam { - - - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -inline scalar pengRobinson::pcrit()const -{ -return pcrit_; -} - - - -inline scalar pengRobinson::Tcrit()const -{ -return Tcrit_; -} - - -inline scalar pengRobinson::rhostd()const -{ -return rhostd_; -} - - -// Returns the Azentric Factor (Acentric Factor) -inline scalar pengRobinson::azentricFactor() const -{ -return azentricFactor_; -} - -//returns the pressure for a given density and temperature -inline scalar pengRobinson::p(const scalar rho,const scalar T) const -{ -return this->RR*T/((this->W()/rho)-this->b())-(this->a()*pow((1+this->n()*(1-pow((T/this->Tcrit()),0.5))),2))/(pow((this->W()/rho),2)+2*this->b()*(this->W()/rho)-pow(this->b(),2)); -} - - - -// Factor a of the pengRobinson equation of state -//(molar values) -inline scalar pengRobinson::a() const -{ -return 0.457235*pow(this->RR,2)*pow(this->Tcrit(),2)/this->pcrit(); -} - - - -// Factor b of the pengRobinson equation of state -//(molar values) -inline scalar pengRobinson::b() const -{ -return 0.077796*this->RR*this->Tcrit()/this->pcrit(); -} - -// Factor nb of the pengRobinson equation of state -//(molar values) -inline scalar pengRobinson::n() const -{ -// this equation is only valid for asentricFactors <0.49. -return 0.37464+1.54226*this->azentricFactor()-0.26992*pow(this->azentricFactor(),2); -} - - -//* * * * * * * * * * * * * Derivatives * * * * * * * * * * * // - - - -//Real deviative dp/dv at constant temperature -//(molar values) -inline scalar pengRobinson::dpdv(const scalar rho, const scalar T) const -{ -return -(4*this->a()*this->n()*this->Tcrit()*(this->b()-(this->W()/rho))*(pow(this->b(),2)-pow((this->W()/rho),2))*(this->n()+1) -*pow((T/this->Tcrit()),0.5) -+this->Tcrit()*(-2*this->a()*pow((this->n()+1),2)*(pow(this->b(),3)-pow(this->b(),2)*(this->W()/rho) --this->b()*pow((this->W()/rho),2)+pow((this->W()/rho),3)) -+this->RR*T*(pow(this->b(),4)-4*pow(this->b(),3)*(this->W()/rho)+2*pow(this->b(),2)*pow((this->W()/rho),2) -+4*this->b()*pow((this->W()/rho),3)+pow((this->W()/rho),4))) --2*this->a()*pow(this->n(),2)*T*(pow(this->b(),3)-pow(this->b(),2)*(this->W()/rho)-this->b()*pow((this->W()/rho),2)+pow((this->W()/rho),3))) -/(this->Tcrit()*pow((this->b()-(this->W()/rho)),2)*pow((pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2)),2)); -} - - - -//Real deviative dp/dT at constant molar volume -//(molar values) -inline scalar pengRobinson::dpdT(const scalar rho, const scalar T) const -{ -return (-this->a()*this->n()*(this->n()+1)*pow((T/this->Tcrit()),0.5)/(T*(pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2)))+this->a()*pow(this->n(),2)/(this->Tcrit()*(pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2)))-this->RR/(this->b()-(this->W()/rho))); -} - - - - -//Real deviative dv/dT at constant pressure -//by using implicit differentiation -//(molar values) -inline scalar pengRobinson::dvdT(const scalar rho,const scalar T) const -{ -return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); -} - - - - -//(molar values) -inline scalar pengRobinson::dvdp(const scalar rho,const scalar T) const -{ -return 1/this->dpdv(rho,T); -} - - - - - -//(molar values) -//needed to calculate the internal energy -inline scalar pengRobinson::integral_p_dv(const scalar rho,const scalar T) const -{ -return pow(2,0.5)*this->a()*(2*this->n()*this->Tcrit()*(this->n()+1)*pow(T/this->Tcrit(),0.5) --this->Tcrit()*(pow(this->n(),2)+2*this->n()+1)-pow(this->n(),2)*T)*log(this->b()*(1-pow(2,0.5))+(this->W()/rho))/(4*this->b()*this->Tcrit()) -+this->RR*T*log((this->W()/rho)-this->b()) --pow(2,0.5)*this->a()*(2*this->n()*this->Tcrit()*(this->n()+1)*pow(T/this->Tcrit(),0.5) --this->Tcrit()*(pow(this->n(),2)+2*this->n()+1)-pow(this->n(),2)*T) -*log(this->b()*(pow(2,0.5)+1)+(this->W()/rho))/(4*this->b()*this->Tcrit()); -} - - -//(molar values) -//needed to calculate the entropy -inline scalar pengRobinson::integral_dpdT_dv(const scalar rho,const scalar T) const -{ - -return (pow(2,0.5)*this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5)/(4*this->b()*T) --pow(2,0.5)*this->a()*pow(this->n(),2)/(4*this->b()*this->Tcrit())) -*log(this->b()*(1-pow(2,0.5))+(this->W()/rho)) -+this->RR*log((this->W()/rho)-this->b()) -+(pow(2,0.5)*this->a()*pow(this->n(),2)/(4*this->b()*this->Tcrit()) --pow(2,0.5)*this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5)/(4*this->b()*T)) -*log(this->b()*(pow(2,0.5)+1)+(this->W()/rho)); - -} - - - - -//* * * * * * * * * * * * * second order Derivative based functions * * * * * * * * * * * // - - - -//(molar values) -inline scalar pengRobinson::d2pdT2(const scalar rho,const scalar T) const -{ -return this->a()*this->n()*(this->n()+1)*pow((T/this->Tcrit()),0.5)/(2*pow(T,2)*(pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2))); -} - - - - -//(molar values) -inline scalar pengRobinson::d2pdv2(const scalar rho,const scalar T) const -{ -return 2*(2*this->a()*this->n()*this->Tcrit()*(this->b()-(this->W()/rho))*(this->n()+1)* -(5*pow(this->b(),4)-4*pow(this->b(),3)*(this->W()/rho)-4*pow(this->b(),2)*pow((this->W()/rho),2) -+3*pow((this->W()/rho),4))*pow(T/this->Tcrit(),0.5) -+this->Tcrit()*(this->RR*T*(pow(this->b(),6)-6*pow(this->b(),5)*(this->W()/rho)+9*pow(this->b(),4)*pow((this->W()/rho),2) -+4*pow(this->b(),3)*pow((this->W()/rho),3)-9*pow(this->b(),2)*pow((this->W()/rho),4)-6*this->b()*pow((this->W()/rho),5) --pow((this->W()/rho),6)) --this->a()*pow((this->n()+1),2)*(5*pow(this->b(),5)-9*pow(this->b(),4)*(this->W()/rho) -+4*pow(this->b(),2)*pow((this->W()/rho),3)+3*this->b()*pow((this->W()/rho),4)-3*pow((this->W()/rho),5))) --this->a()*pow(this->n(),2)*T*(5*pow(this->b(),5)-9*pow(this->b(),4)*(this->W()/rho)+4*pow(this->b(),2)*pow((this->W()/rho),3) -+3*this->b()*pow((this->W()/rho),4)-3*pow((this->W()/rho),5))) -/(this->Tcrit()*pow((pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2)),3)*pow(((this->W()/rho)-this->b()),3)); -} - - - - -//(molar values) -//using second order implicit differentiation -inline scalar pengRobinson::d2vdT2(const scalar rho, const scalar T) const -{ -return -(pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T)+ pow(this->dpdv(rho,T),2) *this->d2pdT2(rho,T)- 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T))/( pow(this->dpdv(rho,T),3)); -} - - - - -//(molar values) -inline scalar pengRobinson::d2pdvdT(const scalar rho, const scalar T) const -{ -return -2*this->a()*this->n()*(this->b()+(this->W()/rho))*(this->n()+1)*pow(T/this->Tcrit(),0.5) -/(T*pow((pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2)),2))+(2*this->a()*pow(this->n(),2)*(this->b()+(this->W()/rho)))/(this->Tcrit()*pow(pow(this->b(),2)-2*this->b()*(this->W()/rho)-pow((this->W()/rho),2),2))-this->RR/(pow(this->b()-(this->W()/rho),2)); -} - - - - -// the result of this intergal is needed for the nasa based cp polynomial -//(molar values) -inline scalar pengRobinson::integral_d2pdT2_dv(const scalar rho,const scalar T) const -{ -return pow(2,0.5)*this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5) -*log(this->b()*(pow(2,0.5)+1)+(this->W()/rho))/(8*this->b()*pow(T,2)) --pow(2,0.5)*this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5) -*log(this->b()*(1-pow(2,0.5))+(this->W()/rho))/(8*this->b()*pow(T,2)); -} - - - - - -//* * * * * * * * * * * * * thermodynamic properties * * * * * * * * * * * // - - -//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p -//(molar values) -inline scalar pengRobinson::isobarExpCoef(const scalar rho,const scalar T) const -{ - return this->dvdT(rho, T)*rho/this->W(); -} - -//isothemal compressiblity kappa -//(molar values) -inline scalar pengRobinson::isothermalCompressiblity(const scalar rho,const scalar T) const -{ -return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); -//also possible : return -this->dvdp(rho,T)*rho/this->W(); -} - - - - - - - - - +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // Construct from components inline pengRobinson::pengRobinson @@ -290,25 +54,25 @@ inline pengRobinson::pengRobinson specie(sp), pcrit_(pcrit), Tcrit_(Tcrit), - azentricFactor_(azentricFactor) -{ - rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); // Starting GUESS for the density by ideal gas law -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + azentricFactor_(azentricFactor), + a_(0.457235*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), + b_(0.077796*this->RR*Tcrit_/pcrit_), + n_(0.37464+1.54226*azentricFactor_-0.26992*pow(azentricFactor_,2)), + rhostd_(this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R()))) +{} // Construct as named copy - -inline pengRobinson::pengRobinson(const word& name, pengRobinson& pg) +inline pengRobinson::pengRobinson(const word& name, const pengRobinson& pg) : specie(name, pg), pcrit_(pg.pcrit_), Tcrit_(pg.Tcrit_), - azentricFactor_(pg.azentricFactor_) -{ - pg.rhostd_=this->rho(Pstd,Tstd, (Pstd*this->W()/(Tstd*this->R()))); // Starting GUESS for the density by ideal gas law -} + azentricFactor_(pg.azentricFactor_), + a_(pg.a_), + b_(pg.b_), + n_(pg.n_), + rhostd_(pg.rhostd_) +{} // Construct and return a clone @@ -325,110 +89,333 @@ inline autoPtr pengRobinson::New(Istream& is) } -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +// * * * * * * * * * * * * * Member Functions * * * * * * * * * * * // + +inline scalar pengRobinson::rhostd()const +{ + return rhostd_; +} + + +//returns the pressure for a given density and temperature +inline scalar pengRobinson::p(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return this->RR*T/(Vm-b_) + -(a_*pow((1+n_*(1-pow((T/Tcrit_),0.5))),2)) + /(pow(Vm,2)+2*b_*Vm-pow(b_,2)); +} + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar pengRobinson::dpdv(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return + -( + 4*a_*n_*Tcrit_*(b_-Vm)*(pow(b_,2) + -pow(Vm,2))*(n_+1)*pow((T/Tcrit_),0.5) + +Tcrit_*(-2*a_*pow((n_+1),2)*(pow(b_,3)-pow(b_,2)*Vm + -b_*pow(Vm,2)+pow(Vm,3)) + +this->RR*T*(pow(b_,4)-4*pow(b_,3)*Vm + +2*pow(b_,2)*pow(Vm,2) + +4*b_*pow(Vm,3)+pow(Vm,4))) + -2*a_*pow(n_,2)*T*(pow(b_,3)-pow(b_,2)*Vm + -b_*pow(Vm,2)+pow(Vm,3)) + ) + /(Tcrit_*pow((b_-Vm),2)*pow((pow(b_,2) + -2*b_*Vm-pow(Vm,2)),2)); +} + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar pengRobinson::dpdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return + ( + -a_*n_*(n_+1)*pow((T/Tcrit_),0.5) + /(T*(pow(b_,2) + -2*b_*Vm-pow(Vm,2))) + +a_*pow(n_,2)/(Tcrit_*(pow(b_,2) + -2*b_*Vm-pow(Vm,2))) + -this->RR/(b_-Vm) + ); +} + + +//Real deviative dv/dT at constant pressure +//by using implicit differentiation +//(molar values) +inline scalar pengRobinson::dvdT(const scalar rho,const scalar T) const +{ + return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); +} + + +//(molar values) +inline scalar pengRobinson::dvdp(const scalar rho,const scalar T) const +{ + return 1/this->dpdv(rho,T); +} + + +//(molar values) +//needed to calculate the internal energy +inline scalar pengRobinson::integral_p_dv(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return pow(2,0.5)*a_*(2*n_*Tcrit_*(n_+1)*pow(T/Tcrit_,0.5) + -Tcrit_*(pow(n_,2)+2*n_+1)-pow(n_,2)*T) + *log(b_*(1-pow(2,0.5))+Vm)/(4*b_*Tcrit_) + +this->RR*T*log(Vm-b_) + -pow(2,0.5)*a_*(2*n_*Tcrit_*(n_+1)*pow(T/Tcrit_,0.5) + -Tcrit_*(pow(n_,2)+2*n_+1) + -pow(n_,2)*T)*log(b_*(pow(2,0.5)+1)+Vm) + /(4*b_*Tcrit_); +} + + +//(molar values) +//needed to calculate the entropy +inline scalar pengRobinson::integral_dpdT_dv(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return (pow(2,0.5)*a_*n_*(n_+1)*pow(T/Tcrit_,0.5)/(4*b_*T) + -pow(2,0.5)*a_*pow(n_,2)/(4*b_*Tcrit_)) + *log(b_*(1-pow(2,0.5))+Vm) + +this->RR*log(Vm-b_) + +(pow(2,0.5)*a_*pow(n_,2)/(4*b_*Tcrit_) + -pow(2,0.5)*a_*n_*(n_+1)*pow(T/Tcrit_,0.5)/(4*b_*T)) + *log(b_*(pow(2,0.5)+1)+Vm); +} + + +//(molar values) +inline scalar pengRobinson::d2pdT2(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return + a_*n_*(n_+1)*pow((T/Tcrit_),0.5) + /(2*pow(T,2)*(pow(b_,2) + -2*b_*Vm-pow(Vm,2))); +} + + +//(molar values) +inline scalar pengRobinson::d2pdv2(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return + 2*( + 2*a_*n_*Tcrit_*(b_-Vm)*(n_+1)* + ( + 5*pow(b_,4)-4*pow(b_,3)*Vm + -4*pow(b_,2)*pow(Vm,2) + +3*pow(Vm,4) + ) + *pow(T/Tcrit_,0.5) + +Tcrit_* + ( + this->RR*T* + ( + pow(b_,6) + -6*pow(b_,5)*Vm + +9*pow(b_,4)*pow(Vm,2) + +4*pow(b_,3)*pow(Vm,3) + -9*pow(b_,2)*pow(Vm,4) + -6*b_*pow(Vm,5) + -pow(Vm,6) + ) + -a_*pow((n_+1),2)* + ( + 5*pow(b_,5) + -9*pow(b_,4)*Vm + +4*pow(b_,2)*pow(Vm,3) + +3*b_*pow(Vm,4)-3*pow(Vm,5) + ) + ) + -a_*pow(n_,2)*T* + ( + 5*pow(b_,5) + -9*pow(b_,4)*Vm + +4*pow(b_,2)*pow(Vm,3) + +3*b_*pow(Vm,4) + -3*pow(Vm,5) + ) + ) + / + ( + Tcrit_* + pow((pow(b_,2) + -2*b_*Vm-pow(Vm,2)),3) + *pow((Vm-b_),3) + ); +} + + +//(molar values) +//using second order implicit differentiation +inline scalar pengRobinson::d2vdT2(const scalar rho, const scalar T) const +{ + return + -( + pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T) + + pow(this->dpdv(rho,T),2)*this->d2pdT2(rho,T) + - 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T) + ) + /(pow(this->dpdv(rho,T),3)); +} + + +//(molar values) +inline scalar pengRobinson::d2pdvdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return -2*a_*n_*(b_+Vm)*(n_+1)*pow(T/Tcrit_,0.5) + /(T*pow((pow(b_,2)-2*b_*Vm-pow(Vm,2)),2)) + +(2*a_*pow(n_,2)*(b_+Vm)) + /(Tcrit_*pow(pow(b_,2)-2*b_*Vm-pow(Vm,2),2)) + -this->RR/(pow(b_-Vm,2)); +} + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar pengRobinson::integral_d2pdT2_dv(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return pow(2,0.5)*a_*n_*(n_+1)*pow(T/Tcrit_,0.5) + *log(b_*(pow(2,0.5)+1)+Vm)/(8*b_*pow(T,2)) + -pow(2,0.5)*a_*n_*(n_+1)*pow(T/Tcrit_,0.5) + *log(b_*(1-pow(2,0.5))+Vm)/(8*b_*pow(T,2)); +} + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar pengRobinson::isobarExpCoef(const scalar rho,const scalar T) const +{ + return this->dvdT(rho, T)*rho/this->W(); +} + + +//isothemal compressiblity kappa (not Thermal conductivity) +//(molar values) +inline scalar pengRobinson::isothermalCompressiblity(const scalar rho,const scalar T) const +{ + return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); + //also possible : return -this->dvdp(rho,T)*rho/this->W(); +} + //- Return density [kg/m^3] -// TO DO Include a max Iteration number loop and abort function -inline scalar pengRobinson::rho(const scalar p,const scalar T,const scalar rho0) const +inline scalar pengRobinson::rho( + const scalar p, + const scalar T, + const scalar rho0 +) const { - + scalar molarVolumePrevIteration; scalar molarVolume; - int iter=0; - int i; + int iter=0; int maxIter_=400; scalar tol_=1e-8; - scalar rho1=rhoMax_, rho2=rhoMin_,rho3, f1,f2,f3; + scalar rho1=rhoMax_; + scalar rho2=rhoMin_; -molarVolume=this->W()/rho0; + molarVolume=this->W()/rho0; do { - molarVolumePrevIteration= molarVolume; - i=0; - do - { - - molarVolume=molarVolumePrevIteration-((this->p((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ - molarVolumePrevIteration),T)))/(pow(2,i)); + molarVolumePrevIteration= molarVolume; + + label i=0; + do + { + molarVolume=molarVolumePrevIteration + -( + (this->p((this->W()/molarVolumePrevIteration),T) - p) + /(this->dpdv((this->W()/molarVolumePrevIteration),T)) + )/pow(2,i); - - i++; - if(i>8) - { - //using bisection methode as backup, solution must be between rho=0.001 to rho=1500; - for(i=0;i<200;i++) - { - - f1= (this->p(rho1,T)-p); - f2= (this->p(rho2,T)-p); - rho3=(rho1+rho2)/2; - f3=(this->p(rho3,T)-p); + i++; + if (i>8) + { + //using bisection methode as backup, + //solution must be between rho=0.001 to rho=1500; + for(i=0; i<200; i++) + { + scalar f1 = this->p(rho1,T) - p; + scalar f2 = this->p(rho2,T) - p; + scalar rho3 = (rho1 + rho2)/2; + scalar f3 = this->p(rho3,T) - p; - if ((f2<0 && f3>0)||(f2>0 &&f3<0)) - { - rho1=rho3; - } - else if ((f1<0 && f3>0)||(f1>0 &&f3<0)) - { - rho2=rho3; - } - - else - { - rho2=(rho2+rho3)/2; - } + if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) + { + rho1=rho3; + } + else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) + { + rho2=rho3; + } + else + { + rho2=(rho2 + rho3)/2; + } - if(mag(f3)W()/rho3; - molarVolumePrevIteration=this->W()/rho3; - break; - } - else - { - molarVolumePrevIteration=this->W()/rho3; - } - } - } - - - } - while(mag(this->p((this->W()/molarVolume),T)-p)>mag(this->p((this->W()/molarVolumePrevIteration),T)-p)); - - if (iter++ > maxIter_) - { - FatalErrorIn - ( - "inline scalar pengRobinson::rho(const scalar p,const scalar T,const scalar rho0) const " - ) << "Maximum number of iterations exceeded" - << abort(FatalError); - } + if(mag(f3) < p*tol_) + { + molarVolume=this->W()/rho3; + molarVolumePrevIteration=this->W()/rho3; + break; + } + else + { + molarVolumePrevIteration=this->W()/rho3; + } + } + } + } + while + ( + mag(this->p((this->W()/molarVolume),T) - p) + > mag(this->p((this->W()/molarVolumePrevIteration),T) - p) + ); + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "inline scalar redlichKwong::rho(const scalar p, const scalar T, const scalar rho0) const " + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } } - while(mag(molarVolumePrevIteration-molarVolume)>tol_*(this->W()/rho0)); + while(mag(molarVolumePrevIteration-molarVolume) > tol_*(this->W()/rho0)); - - - - - return this->W()/molarVolume; - + return this->W()/molarVolume; } + //- Return density [kg/m^3]on inline scalar pengRobinson::rho(const scalar p,const scalar T) const { - scalar rho0=p/(this->R()*T); //using perfect gas equation as starting point - return rho(p,T,rho0); + // using perfect gas equation as starting point + return rho(p,T,p/(this->R()*T)); } -//- Return compressibility drho/dp [s^2/m^2] + +//- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar pengRobinson::psi(const scalar rho, const scalar T) const { return -this->dvdp(rho,T)*pow(rho,2)/this->W(); } + //- Return compression factor [] inline scalar pengRobinson::Z( const scalar p, const scalar T,const scalar rho0) const { diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C index 24fadc6f0..6f9e59d1d 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C @@ -63,8 +63,8 @@ redlichKwong::redlichKwong(Istream& is) Tcrit_(readScalar(is)), a_(0.42748*pow(this->RR,2)*pow(Tcrit_,2.5)/pcrit_), b_(0.08664*this->RR*Tcrit_/pcrit_), - // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R()))) + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R()))) { is.check("redlichKwong::redlichKwong(Istream& is)"); } diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H index 3e4b8de98..ec793c53b 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H @@ -53,7 +53,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class perfectGas Declaration + Class redlichKwong Declaration \*---------------------------------------------------------------------------*/ class redlichKwong @@ -62,27 +62,22 @@ class redlichKwong { // Private data - scalar pcrit_; + scalar pcrit_; + scalar Tcrit_; - scalar Tcrit_; - - //-Redlich Kwong factors - - scalar a_; - - scalar b_; + //-Redlich Kwong factors + scalar a_; + scalar b_; //- Density @STD, initialise after a, b! - - scalar rhostd_; + scalar rhostd_; // Static Private data - //should be read from the fvSolution file where rhoMax and rhoMin values must be defined (for rhoSimpleFoam) + //should be read from the fvSolution file where rhoMax and rhoMin values must be defined (for rhoSimpleFoam) //HR: Don't know, yet. Let's make these static for starters - static const scalar rhoMax_; - - static const scalar rhoMin_; + static const scalar rhoMax_; + static const scalar rhoMin_; public: @@ -96,7 +91,7 @@ public: const specie& sp, scalar pcrit, scalar Tcrit - ); + ); //- Construct from Istream redlichKwong(Istream&); @@ -117,7 +112,7 @@ public: inline scalar p(const scalar rho, const scalar T) const; - // Derivatives + //first order derivatives inline scalar dpdv(const scalar rho, const scalar T) const; inline scalar dpdT(const scalar rho, const scalar T) const; @@ -147,7 +142,7 @@ public: // Used for Entropy inline scalar integral_dpdT_dv(const scalar rho, const scalar T) const; - // Not Used At The Moment + // second order derivatives, not Used At The Moment inline scalar d2pdv2(const scalar rho, const scalar T) const; inline scalar d2pdT2(const scalar rho, const scalar T) const; @@ -161,13 +156,13 @@ public: inline scalar rho ( const scalar p, - const scalar T, + const scalar T, const scalar rho0 ) const; inline scalar rho(const scalar p, const scalar T) const; - //- Return compressibility drho/dp [s^2/m^2] + //- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar psi(const scalar rho, const scalar T) const; //- Return compression factor [] diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H index cdac92a68..8d592ec4e 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H @@ -252,7 +252,7 @@ inline scalar redlichKwong::isobarExpCoef } -//isothemal compressiblity kappa +//isothemal compressiblity kappa (not Thermal conductivity) //(molar values) inline scalar redlichKwong::isothermalCompressiblity ( @@ -360,11 +360,11 @@ inline scalar redlichKwong::rho inline scalar redlichKwong::rho(const scalar p, const scalar T) const { // using perfect gas equation as starting point - return rho(p,T,p/(this->R()*T)); + return rho(p,T,p/(this->R()*T)); } -//- Return compressibility drho/dp [s^2/m^2] +//- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar redlichKwong::psi(const scalar rho, const scalar T) const { return -this->dvdp(rho,T)*pow(rho,2)/this->W(); diff --git a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C index 182bfaf86..74376e2c4 100755 --- a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C @@ -41,6 +41,17 @@ Germany namespace Foam { +/* * * * * * * * * * * * * * * Private static data * * * * * * * * * * * * * */ +const scalar soaveRedlichKwong::rhoMin_ +( + debug::tolerances("soaveRedlichKwongRhoMin", 1e-3) +); + +const scalar soaveRedlichKwong::rhoMax_ +( + debug::tolerances("soaveRedlichKwongRhoMax", 1500) +); + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // soaveRedlichKwong::soaveRedlichKwong(Istream& is) @@ -48,12 +59,14 @@ soaveRedlichKwong::soaveRedlichKwong(Istream& is) specie(is), pcrit_(readScalar(is)), Tcrit_(readScalar(is)), - azentricFactor_(readScalar(is)) + azentricFactor_(readScalar(is)), + a_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/(pcrit_)), + b_(0.08664*this->RR*Tcrit_/pcrit_), + n_(0.48508+1.55171*azentricFactor_-0.15613*pow(azentricFactor_,2)), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R()))) { - is.check("soaveRedlichKwong::soaveRedlichKwong(Istream& is)"); - rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); - rhoMax_=1500; - rhoMin_=0.001; + is.check("soaveRedlichKwong::soaveRedlichKwong(Istream& is)"); } diff --git a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H index 0d5f071d2..ed03c15c6 100755 --- a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. + \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -45,8 +45,7 @@ Germany #include "specie.H" #include "autoPtr.H" -#include "word.H" -#include "scalar.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -54,7 +53,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class perfectGas Declaration + Class Soave Readlich Kwong Declaration \*---------------------------------------------------------------------------*/ class soaveRedlichKwong @@ -62,7 +61,26 @@ class soaveRedlichKwong public specie { + // Private data + scalar pcrit_; + scalar Tcrit_; + scalar azentricFactor_; + + //-Soave Redlich Kwong factors + scalar a_; + scalar b_; + scalar n_; + + //- Density @STD, initialise after a, b! + scalar rhostd_; + + // Static Private data + + //should be read from the fvSolution file where rhoMax and rhoMin values must be defined (for rhoSimpleFoam) + //HR: Don't know, yet. Let's make these static for starters + static const scalar rhoMax_; + static const scalar rhoMin_; public: @@ -81,58 +99,80 @@ public: soaveRedlichKwong(Istream&); //- Construct as named copy - inline soaveRedlichKwong(const word& name, soaveRedlichKwong&); + inline soaveRedlichKwong(const word& name,const soaveRedlichKwong&); //- Construct and return a clone inline autoPtr clone() const; // Selector from Istream inline static autoPtr New(Istream& is); - - //Member Variabels - scalar pcrit_; - scalar Tcrit_; - scalar rhostd_; - scalar azentricFactor_; - scalar rhoMax_; //should be read from the fvSolution file where rhoMax and rhoMin values must be define ( for rhoSimpleFoam) - scalar rhoMin_; - - + // Member functions - inline scalar pcrit() const; - inline scalar Tcrit() const; - inline scalar azentricFactor() const; inline scalar rhostd()const; + inline scalar p(const scalar rho, const scalar T) const; - //-Redlich Kwong factors - inline scalar a() const; - inline scalar b() const; - inline scalar n() const; - //derivatives + //first order derivatives inline scalar dpdv(const scalar rho,const scalar T) const; - inline scalar dpdT(const scalar rho, const scalar T) const; - inline scalar dvdT(const scalar rho,const scalar T) const; - inline scalar dvdp(const scalar rho, const scalar T) const; - inline scalar isobarExpCoef(const scalar rho,const scalar T) const; - inline scalar isothermalCompressiblity(const scalar rho,const scalar T) const; - inline scalar integral_d2pdT2_dv(const scalar rho,const scalar T) const ; // Used for cv - inline scalar d2pdv2(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar d2pdT2(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar d2pdvdT(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar d2vdT2(const scalar rho,const scalar T) const; // not Used At The Moment - inline scalar integral_p_dv(const scalar rho,const scalar T) const; //Used for internal Energy - inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; //Used for Entropy - //- Return density [kg/m^3] // rho0 is the starting point of the newton solver used to calculate rho - inline scalar rho(const scalar p,const scalar T,const scalar rho0) const; + inline scalar dpdT(const scalar rho, const scalar T) const; + + inline scalar dvdT(const scalar rho,const scalar T) const; + + inline scalar dvdp(const scalar rho, const scalar T) const; + + inline scalar isobarExpCoef + ( + const scalar rho, + const scalar T + ) const; + + inline scalar isothermalCompressiblity + ( + const scalar rho, + const scalar T + ) const; + + // Used for cv + inline scalar integral_d2pdT2_dv(const scalar rho,const scalar T) const ; + + // second order derivatives, not Used At The Moment + inline scalar d2pdv2(const scalar rho,const scalar T) const; + + inline scalar d2pdT2(const scalar rho,const scalar T) const; + + inline scalar d2pdvdT(const scalar rho,const scalar T) const; + + inline scalar d2vdT2(const scalar rho,const scalar T) const; + + //Used for internal Energy + inline scalar integral_p_dv(const scalar rho,const scalar T) const; + + //Used for Entropy + inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; + + //- Return density [kg/m^3] + // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + inline scalar rho(const scalar p,const scalar T) const; - //- Return compressibility rho/p [s^2/m^2] + + //- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar psi(const scalar rho, const scalar T) const; //- Return compression factor [] - inline scalar Z(const scalar p,const scalar T,const scalar rho0) const; + inline scalar Z + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; // Member operators diff --git a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H index 633a18a04..3799e5e95 100755 --- a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H @@ -38,225 +38,7 @@ Germany namespace Foam { - - - - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -inline scalar soaveRedlichKwong::pcrit()const -{ -return pcrit_; -} - - - -inline scalar soaveRedlichKwong::Tcrit()const -{ -return Tcrit_; -} - - -inline scalar soaveRedlichKwong::rhostd()const -{ -return rhostd_; -} - - -// Returns the Azentric Factor (Acentric Factor) -inline scalar soaveRedlichKwong::azentricFactor() const -{ -return azentricFactor_; -} - -//returns the pressure for a given density and temperature -inline scalar soaveRedlichKwong::p(const scalar rho,const scalar T) const -{ -return (this->RR*T/((this->W()/rho)-this->b())-this->a()*pow((1+this->n()*(1-pow((T/this->Tcrit()),0.5))),2)/((this->W()/rho)*((this->W()/rho)+this->b()))); -} - - - -// Faktor a of the soave redlich Kwong equation of state -//(molar values) -inline scalar soaveRedlichKwong::a() const -{ -return 0.42747*pow(this->RR,2)*pow(this->Tcrit(),2)/(this->pcrit()); -} - - - -// Faktor b of the soave redlich Kwong equation of state -//(molar values) -inline scalar soaveRedlichKwong::b() const -{ -return 0.08664*this->RR*this->Tcrit()/this->pcrit(); -} - -// Faktor n of the soave redlich Kwong equation of state -//(molar values) -inline scalar soaveRedlichKwong::n() const -{ -return 0.48508+1.55171*this->azentricFactor()-0.15613*pow(this->azentricFactor(),2); -} - - -//* * * * * * * * * * * * * Derivatives * * * * * * * * * * * // - - - -//Real deviative dp/dv at constant temperature -//(molar values) -inline scalar soaveRedlichKwong::dpdv(const scalar rho, const scalar T) const -{ - return -(2*this->a()*this->n()*this->Tcrit()*(this->b()-(this->W()/rho))*(pow(this->b(),2)+this->b()*(this->W()/rho)-2*pow((this->W()/rho),2))*(this->n()+1)*pow((T/this->Tcrit()),0.5)+this->Tcrit()*(this->RR*T*pow((this->W()/rho),2)*(pow(this->b(),2)+2*this->b()*(this->W()/rho)+pow((this->W()/rho),2))-this->a()*(pow(this->b(),3)-3*this->b()*pow((this->W()/rho),2)+2*pow((this->W()/rho),3))*pow((this->n()+1),2))-this->a()*pow(this->n(),2)*T*(pow(this->b(),3)-3*this->b()*pow((this->W()/rho),2)+2*pow((this->W()/rho),3)))/(pow((this->W()/rho),2)*this->Tcrit()*pow((this->b()+(this->W()/rho)),2)*pow((this->b()-(this->W()/rho)),2)); -} - - - - -//Real deviative dp/dT at constant molar volume -//(molar values) -inline scalar soaveRedlichKwong::dpdT(const scalar rho, const scalar T) const -{ -return this->a()*this->n()*(this->n()+1)*pow((T/this->Tcrit()),0.5)/(T*(this->W()/rho)*(this->b()+(this->W()/rho)))-this->a()*pow(this->n(),2)/((this->W()/rho)*this->Tcrit()*(this->b()+(this->W()/rho)))-this->RR/(this->b()-(this->W()/rho)); -} - - - - -//Real deviative dv/dT at constant pressure -//using implicit differentiation -// (molar values) -inline scalar soaveRedlichKwong::dvdT(const scalar rho,const scalar T) const -{ -return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); -} - - - - -//Real deviative dv/dp at constant temperature -//(molar values) -inline scalar soaveRedlichKwong::dvdp(const scalar rho,const scalar T) const -{ -return 1/this->dpdv(rho,T); -} - - - -//needed to calculate the internal energy -//(molar values) -inline scalar soaveRedlichKwong::integral_p_dv(const scalar rho,const scalar T) const -{ -return this->RR*T*log((this->W()/rho)-this->b()) --(this->a()*(2*this->n()*this->Tcrit()*(this->n()+1)*pow(T/this->Tcrit(),0.5)-this->Tcrit()*(pow(this->n(),2)+2*this->n()+1)-pow(this->n(),2)*T)*log(this->b()+(this->W()/rho)))/(this->b()*this->Tcrit()) -+this->a()*(2*this->n()*this->Tcrit()*(this->n()+1)*pow(T/this->Tcrit(),0.5)-this->Tcrit()*(pow(this->n(),2)+2*this->n()+1)-pow(this->n(),2)*T)*log((this->W()/rho))/(this->b()*this->Tcrit()); -} - - - -//needed to calculate the entropy -//(molar values) -inline scalar soaveRedlichKwong::integral_dpdT_dv(const scalar rho,const scalar T) const -{ -return this->RR*log((this->W()/rho)-this->b())+(pow(this->n(),2)*this->a()/(this->b()*this->Tcrit())-this->a()*this->n()*(this->n()+1)*pow((T/this->Tcrit()),0.5)/(this->b()*T))*log(this->b()+(this->W()/rho))+(this->a()*this->n()*(this->n()+1)*pow((T/this->Tcrit()),0.5)/(this->b()*T)-this->a()*pow(this->n(),2)/(this->b()*this->Tcrit()))*log((this->W()/rho)); -} - - - - -//* * * * * * * * * * * * * second order Derivative based functions * * * * * * * * * * * // - - - -//(molar values) -inline scalar soaveRedlichKwong::d2pdT2(const scalar rho,const scalar T) const -{ -return -this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5)/(2*pow(T,2)*(this->W()/rho)*(this->b()+(this->W()/rho))); -} - - - - -//(molar values) -inline scalar soaveRedlichKwong::d2pdv2(const scalar rho,const scalar T) const -{ - return 2*(2*this->a()*this->n()*this->Tcrit()*(this->b()-(this->W()/rho)) - *(pow(this->b(),4)+pow(this->b(),3)*(this->W()/rho)-2*pow(this->b(),2)*pow((this->W()/rho),2) - -3*this->b()*pow((this->W()/rho),3)+3*pow((this->W()/rho),4))*(this->n()+1)*pow(T/this->Tcrit(),0.5) - -this->Tcrit()*(this->a()*(pow(this->b(),5)-3*pow(this->b(),3)*pow((this->W()/rho),2)-pow(this->b(),2)*pow((this->W()/rho),3) - +6*this->b()*pow((this->W()/rho),4)-3*pow((this->W()/rho),5))*pow((this->n()+1),2) - +this->RR*T*pow((this->W()/rho),3)*(pow(this->b(),3)+3*pow(this->b(),2)*(this->W()/rho)+3*this->b()*pow((this->W()/rho),2)+pow((this->W()/rho),3))) - -this->a()*pow(this->n(),2)*T*(pow(this->b(),5)-3*pow(this->b(),3)*pow((this->W()/rho),2)-pow(this->b(),2)*pow((this->W()/rho),3) - +6*this->b()*pow((this->W()/rho),4)-3*pow((this->W()/rho),5))) - /(pow((this->W()/rho),3)*this->Tcrit()*pow(((this->W()/rho)+this->b()),3)*pow((this->b()-(this->W()/rho)),3)); -} - - - - -//(molar values) -// using second Order implicit differentiation -inline scalar soaveRedlichKwong::d2vdT2(const scalar rho, const scalar T) const -{ -return -(pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T)+ pow(this->dpdv(rho,T),2) *this->d2pdT2(rho,T)- 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T))/( pow(this->dpdv(rho,T),3)); -} - - - - -//(molar values) -inline scalar soaveRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const -{ -return -this->a()*this->n()*(this->b()+2*(this->W()/rho))*(this->n()+1)*pow(T/this->Tcrit(),0.5) -/(T*pow((this->W()/rho),2)*pow((this->b()+(this->W()/rho)),2)) --(this->RR*pow((this->W()/rho),2)*this->Tcrit()*(pow(this->b(),2)+2*this->b()*(this->W()/rho)+pow((this->W()/rho),2)) - -this->a()*pow(this->n(),2)*(pow(this->b(),3)-3*this->b()*pow((this->W()/rho),2)+2*pow((this->W()/rho),3))) - /(pow((this->W()/rho),2)*this->Tcrit()*pow((this->b()+(this->W()/rho)),2)*pow((this->b()-(this->W()/rho)),2)); -} - - - - -// the result of this intergal is needed for the nasa based cp polynomial -//(molar values) -inline scalar soaveRedlichKwong::integral_d2pdT2_dv(const scalar rho,const scalar T) const -{ -return this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5)*log(this->b()+(this->W()/rho)) -/(2*this->b()*pow(T,2)) --this->a()*this->n()*(this->n()+1)*pow(T/this->Tcrit(),0.5)*log((this->W()/rho))/(2*this->b()*pow(T,2)); -} - - - - - -//* * * * * * * * * * * * * thermodynamic properties * * * * * * * * * * * // - - -//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p -//(molar values) -inline scalar soaveRedlichKwong::isobarExpCoef(const scalar rho,const scalar T) const -{ -return this->dvdT(rho, T)*rho/this->W(); -} - -//isothemal compressiblity kappa -//(molar values) -inline scalar soaveRedlichKwong::isothermalCompressiblity(const scalar rho,const scalar T) const -{ -return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); -} - - - - - - - - - +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // Construct from components inline soaveRedlichKwong::soaveRedlichKwong @@ -264,31 +46,36 @@ inline soaveRedlichKwong::soaveRedlichKwong const specie& sp, scalar pcrit, scalar Tcrit, - scalar azentricFactor + scalar azentricFactor ) : specie(sp), pcrit_(pcrit), Tcrit_(Tcrit), - azentricFactor_(azentricFactor) -{ - rhostd_=this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R())); -} + azentricFactor_(azentricFactor), + a_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/(pcrit_)), + b_(0.08664*this->RR*Tcrit_/pcrit_), + n_(0.48508+1.55171*azentricFactor_-0.15613*pow(azentricFactor_,2)), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R()))) +{} + -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // Construct as named copy -inline soaveRedlichKwong::soaveRedlichKwong(const word& name, soaveRedlichKwong& pg) +inline soaveRedlichKwong::soaveRedlichKwong(const word& name,const soaveRedlichKwong& pg) : specie(name, pg), pcrit_(pg.pcrit_), Tcrit_(pg.Tcrit_), - azentricFactor_(pg.azentricFactor_) -{ - pg.rhostd_=this->rho(Pstd,Tstd, (Pstd*this->W()/(Tstd*this->R()))); -} + azentricFactor_(pg.azentricFactor_), + a_(pg.a_), + b_(pg.b_), + n_(pg.n_), + rhostd_(pg.rhostd_) +{} // Construct and return a clone @@ -305,112 +92,352 @@ inline autoPtr soaveRedlichKwong::New(Istream& is) } -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +// * * * * * * * * * * * * * Member Functions * * * * * * * * * * * // -//- Return density [kg/m^3]on -inline scalar soaveRedlichKwong::rho(const scalar p,const scalar T,const scalar rho0) const +inline scalar soaveRedlichKwong::rhostd()const +{ + return rhostd_; +} + + +//returns the pressure for a given density and temperature +inline scalar soaveRedlichKwong::p(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return + ( + this->RR*T/(Vm-b_) + -a_*pow((1+n_*(1-pow((T/Tcrit_),0.5))),2) + /(Vm*(Vm+b_)) + ); +} + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar soaveRedlichKwong::dpdv(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return + -( + 2*a_*n_*Tcrit_*(b_-Vm)*(pow(b_,2) + +b_*Vm-2*pow(Vm,2))*(n_+1)*pow((T/Tcrit_),0.5) + +Tcrit_* + ( + this->RR*T*pow(Vm,2)*(pow(b_,2) + +2*b_*Vm+pow(Vm,2)) + -a_* + (pow(b_,3)-3*b_*pow(Vm,2)+ + 2*pow(Vm,3)) + *pow((n_+1),2) + ) + -a_*pow(n_,2)*T*(pow(b_,3) + -3*b_*pow(Vm,2)+2*pow(Vm,3)) + ) + / + ( + pow(Vm,2)*Tcrit_*pow((b_+Vm),2) + *pow((b_-Vm),2) + ); +} + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar soaveRedlichKwong::dpdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return a_*n_*(n_+1)*pow((T/Tcrit_),0.5) + /(T*Vm*(b_+Vm)) + -a_*pow(n_,2) + /(Vm*Tcrit_*(b_+Vm)) + -this->RR/(b_-Vm); +} + + +//Real deviative dv/dT at constant pressure +//using implicit differentiation +// (molar values) +inline scalar soaveRedlichKwong::dvdT(const scalar rho,const scalar T) const +{ + return (-1)*this->dpdT(rho,T)/this->dpdv(rho,T); +} + + +//Real deviative dv/dp at constant temperature +//(molar values) +inline scalar soaveRedlichKwong::dvdp(const scalar rho,const scalar T) const +{ + return 1/this->dpdv(rho,T); +} + + +//needed to calculate the internal energy +//(molar values) +inline scalar soaveRedlichKwong::integral_p_dv(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return this->RR*T*log(Vm-b_) + -( + a_*(2*n_*Tcrit_*(n_+1)*pow(T/Tcrit_,0.5) + -Tcrit_*(pow(n_,2)+2*n_+1) + -pow(n_,2)*T)*log(b_+Vm) + ) + /(b_*Tcrit_) + +a_* + ( + 2*n_*Tcrit_*(n_+1)*pow(T/Tcrit_,0.5) + -Tcrit_*(pow(n_,2)+2*n_+1)-pow(n_,2)*T + ) + *log(Vm)/(b_*Tcrit_); +} + + +//needed to calculate the entropy +//(molar values) +inline scalar soaveRedlichKwong::integral_dpdT_dv(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return this->RR*log(Vm-b_) + +( + pow(n_,2)*a_/(b_*Tcrit_) + -a_*n_*(n_+1)*pow((T/Tcrit_),0.5) + /(b_*T) + )*log(b_+Vm) + +(a_*n_*(n_+1)*pow((T/Tcrit_),0.5) + /(b_*T) + -a_*pow(n_,2)/(b_*Tcrit_))*log(Vm); +} + + +//(molar values) +inline scalar soaveRedlichKwong::d2pdT2(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return -a_*n_*(n_+1)*pow(T/Tcrit_,0.5) + /(2*pow(T,2)*Vm*(b_+Vm)); +} + + +//(molar values) +inline scalar soaveRedlichKwong::d2pdv2(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return + 2*( + 2*a_*n_*Tcrit_*(b_-Vm)* + ( + pow(b_,4)+pow(b_,3)*Vm + -2*pow(b_,2)*pow(Vm,2) + -3*b_*pow(Vm,3) + +3*pow(Vm,4) + ) + *(n_+1)*pow(T/Tcrit_,0.5) + -Tcrit_* + ( + a_* + ( + pow(b_,5) + -3*pow(b_,3)*pow(Vm,2) + -pow(b_,2)*pow(Vm,3) + +6*b_*pow(Vm,4) + -3*pow(Vm,5) + )*pow((n_+1),2) + +this->RR*T*pow(Vm,3)* + ( + pow(b_,3) + +3*pow(b_,2)*Vm + +3*b_*pow(Vm,2) + +pow(Vm,3) + ) + ) + -a_*pow(n_,2)*T* + ( + pow(b_,5) + -3*pow(b_,3)*pow(Vm,2) + -pow(b_,2)*pow(Vm,3) + +6*b_*pow(Vm,4) + -3*pow(Vm,5) + ) + ) + /(pow(Vm,3)*Tcrit_*pow((Vm+b_),3) + *pow((b_-Vm),3)); +} + + +//(molar values) +// using second Order implicit differentiation +inline scalar soaveRedlichKwong::d2vdT2(const scalar rho, const scalar T) const +{ + return + -( + pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T) + + pow(this->dpdv(rho,T),2)*this->d2pdT2(rho,T) + - 2*this->dpdv(rho,T)*this->dpdT(rho,T)*this->d2pdvdT(rho,T) + ) + /(pow(this->dpdv(rho,T),3)); +} + + +//(molar values) +inline scalar soaveRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const +{ + scalar Vm = this->W()/rho; + return -a_*n_*(b_+2*Vm)*(n_+1)*pow(T/Tcrit_,0.5) + /(T*pow(Vm,2)*pow((b_+Vm),2)) + -( + this->RR*pow(Vm,2)*Tcrit_*(pow(b_,2) + +2*b_*Vm+pow(Vm,2)) + -a_*pow(n_,2)* + ( + pow(b_,3) + -3*b_*pow(Vm,2) + +2*pow(Vm,3) + ) + ) + /(pow(Vm,2)*Tcrit_*pow((b_+Vm),2)*pow((b_-Vm),2)); +} + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar soaveRedlichKwong::integral_d2pdT2_dv(const scalar rho,const scalar T) const +{ + scalar Vm = this->W()/rho; + return a_*n_*(n_+1)*pow(T/Tcrit_,0.5)*log(b_+Vm) + /(2*b_*pow(T,2)) + -a_*n_*(n_+1)*pow(T/Tcrit_,0.5)*log(Vm) + /(2*b_*pow(T,2)); +} + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar soaveRedlichKwong::isobarExpCoef(const scalar rho,const scalar T) const +{ + return this->dvdT(rho, T)*rho/this->W(); +} + + +//isothemal compressiblity kappa (not Thermal conductivity) +//(molar values) +inline scalar soaveRedlichKwong::isothermalCompressiblity(const scalar rho,const scalar T) const +{ + return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); +} + + +//- Return density [kg/m^3] +inline scalar soaveRedlichKwong::rho( + const scalar p, + const scalar T, + const scalar rho0 +) const { scalar molarVolumePrevIteration; scalar molarVolume; - int iter=0; + int iter=0; int maxIter_=400; scalar tol_=1e-8; - int i; - scalar rho1=rhoMax_, rho2=rhoMin_,rho3, f1,f2,f3; + scalar rho1=rhoMax_; + scalar rho2=rhoMin_; -molarVolume=this->W()/rho0; + molarVolume=this->W()/rho0; do { - molarVolumePrevIteration= molarVolume; - + molarVolumePrevIteration= molarVolume; - i=0; - do - { - molarVolume=molarVolumePrevIteration-((this->p((this->W()/molarVolumePrevIteration),T)-p)/(this->dpdv((this->W()/ - molarVolumePrevIteration),T)))/(pow(2,i)); - - i++; - if(i>8) - { - //using bisection methode as backup, solution must be between rho=0.001 to rho=1500; - for(i=0;i<200;i++) - { - f1= (this->p(rho1,T)-p); - f2= (this->p(rho2,T)-p); - rho3=(rho1+rho2)/2; - f3=(this->p(rho3,T)-p); + label i=0; + do + { + molarVolume=molarVolumePrevIteration + -( + (this->p((this->W()/molarVolumePrevIteration),T) - p) + /(this->dpdv((this->W()/molarVolumePrevIteration),T)) + )/pow(2,i); + + i++; + if (i>8) + { + //using bisection methode as backup, + //solution must be between rho=0.001 to rho=1500; + for(i=0; i<200; i++) + { + scalar f1 = this->p(rho1,T) - p; + scalar f2 = this->p(rho2,T) - p; + scalar rho3 = (rho1 + rho2)/2; + scalar f3 = this->p(rho3,T) - p; - if ((f2<0 && f3>0)||(f2>0 &&f3<0)) - { - rho1=rho3; - } - else if ((f1<0 && f3>0)||(f1>0 &&f3<0)) - { - rho2=rho3; - } - - else - { - rho2=(rho2+rho3)/2; - } + if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) + { + rho1=rho3; + } + else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) + { + rho2=rho3; + } + else + { + rho2=(rho2 + rho3)/2; + } - if(mag(f3)W()/rho3; - molarVolumePrevIteration=this->W()/rho3; - break; - } - - else - { - molarVolumePrevIteration=this->W()/rho3; - } - } - } - } - while(mag(this->p((this->W()/molarVolume),T)-p)>mag(this->p((this->W()/molarVolumePrevIteration),T)-p)); - - - if (iter++ > maxIter_) - { - FatalErrorIn - ( - "inline scalar soaveRedlichKwong::rho(const scalar p,const scalar T,const scalar rho0) const " - ) << "Maximum number of iterations exceeded" - << abort(FatalError); - } + if(mag(f3) < p*tol_) + { + molarVolume=this->W()/rho3; + molarVolumePrevIteration=this->W()/rho3; + break; + } + else + { + molarVolumePrevIteration=this->W()/rho3; + } + } + } + } + while + ( + mag(this->p((this->W()/molarVolume),T) - p) + > mag(this->p((this->W()/molarVolumePrevIteration),T) - p) + ); + if (iter++ > maxIter_) + { + FatalErrorIn + ( + "inline scalar redlichKwong::rho(const scalar p, const scalar T, const scalar rho0) const " + ) << "Maximum number of iterations exceeded" + << abort(FatalError); + } } - while(mag(molarVolumePrevIteration-molarVolume)>tol_*(this->W()/rho0)); - - return this->W()/molarVolume; + while(mag(molarVolumePrevIteration-molarVolume) > tol_*(this->W()/rho0)); + return this->W()/molarVolume; } //- Return density [kg/m^3]on inline scalar soaveRedlichKwong::rho(const scalar p,const scalar T) const { - scalar rho0=p/(this->R()*T); //using perfect gas equation as starting point - return rho(p,T,rho0); + //using perfect gas equation as starting point + return rho(p,T,p/(this->R()*T)); } -//- Return compressibility drho/dp [s^2/m^2] + +//- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar soaveRedlichKwong::psi(const scalar rho, const scalar T) const { - return -this->dvdp(rho,T)*pow(rho,2)/this->W(); + return -this->dvdp(rho,T)*pow(rho,2)/this->W(); } + //- Return compression factor [] inline scalar soaveRedlichKwong::Z( const scalar p, const scalar T,const scalar rho0) const { - return (p*this->rho(p,T,rho0))/(this->R()*T); + return (p*this->rho(p,T,rho0))/(this->R()*T); } - // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // inline void soaveRedlichKwong::operator+=(const soaveRedlichKwong& pg) diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C index ddbe824fa..6126e87d7 100755 --- a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C +++ b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C @@ -46,10 +46,16 @@ Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Is a4_(readScalar(is)), a5_(readScalar(is)), a6_(readScalar(is)), - a7_(readScalar(is)) + a7_(readScalar(is)), + //values for some need terms at std + e0_std(e0(this->Tstd)), + s0_std(s0(this->Tstd)), + integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd)), + integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd)), + // cp @ STD (needed to limit cp for stability + cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd)) { is.check("nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Istream& is)"); - cp_std=this->cp_nonLimited(this->rhostd(),this->Tstd); // cp @ STD (needed to limit cp for stability } @@ -64,7 +70,6 @@ Foam::Ostream& Foam::operator<< { os << static_cast(ct) << tab << ct.a1_ << tab<< ct.a2_ << tab << ct.a3_ << tab << ct.a4_ << tab << ct.a5_ << tab << ct.a6_ << tab << ct.a7_ ; - cout<<"nasa polynomal start"< New(Istream& is); - // Member Functions - - //useful functions - //used to calculate the internal energy - //ideal Gas Enthalpy - inline scalar h0(const scalar T) const; + + //- perfect Gas Enthalpy [J/kmol] + inline scalar h0(const scalar T) const; - - // used to calculate the entropy - //ideal Gas Entropy - inline scalar s0(const scalar T) const; + //- perfect Gas Entropy [J/(kmol K)] + inline scalar s0(const scalar T) const; + //- perfect Gas internal Energy [J/kmol] + inline scalar e0(const scalar T) const; + + //- perfect gas Heat capacity at constant pressure [J/(kmol K)] + inline scalar cv0(const scalar T) const; + + //- perfect gas Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp0(const scalar T) const; + + //- Limited Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp(const scalar rho, const scalar T) const; + + //- non Limited Heat capacity at constant pressure [J/(kmol K)] + inline scalar cp_nonLimited(const scalar rho, const scalar T) const; + + //- Heat capacity at constant pressure [J/(kmol K)] + inline scalar cv(const scalar rho, const scalar T) const; + + //- Enthalpy [J/kmol] + inline scalar h(const scalar rho, const scalar T) const; + + //- Entropy [J/(kmol K)] + inline scalar s(const scalar rho,const scalar T) const; - //used to calculate the internal energy - //ideal Gas Enthalpy - inline scalar e0(const scalar T) const; + //- Internal Energy [J/kmol] + inline scalar e(const scalar rho, const scalar T) const; - // Fundamental properties - - //- ideal gas Heat capacity at constant pressure [J/(kmol K)] - inline scalar cv0(const scalar T) const; - - //- ideal gas Heat capacity at constant pressure [J/(kmol K)] - inline scalar cp0(const scalar T) const; - - //- Heat capacity at constant pressure [J/(kmol K)] - inline scalar cp(const scalar rho, const scalar T) const; - - //- Heat capacity at constant pressure [J/(kmol K)] - inline scalar cp_nonLimited(const scalar rho, const scalar T) const; - - //- Heat capacity at constant pressure [J/(kmol K)] - inline scalar cv(const scalar rho, const scalar T) const; - - //- Enthalpy [J/kmol] - inline scalar h(const scalar rho, const scalar T) const; - - //- Entropy [J/(kmol K)] - inline scalar s(const scalar rho,const scalar T) const; - - //- Internal Energy [J/kmol] - inline scalar e(const scalar rho, const scalar T) const; // Member operators diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H index 3f782752f..f423d41c8 100755 --- a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H +++ b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H @@ -33,7 +33,7 @@ Germany // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial @@ -55,12 +55,16 @@ inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolyno a4_(a4), a5_(a5), a6_(a6), - a7_(a7) -{ -} + a7_(a7), + e0_std(e0(this->Tstd)), + s0_std(s0(this->Tstd)), + integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd)), + integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd)), + cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd)) +{} + -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial @@ -76,9 +80,13 @@ inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolyno a4_(ct.a4_), a5_(ct.a5_), a6_(ct.a6_), - a7_(ct.a7_) -{ -} + a7_(ct.a7_), + e0_std(ct.e0_std), + s0_std(ct.s0_std), + integral_p_dv_std(ct.integral_p_dv_std), + integral_dpdT_dv_std(ct.integral_dpdT_dv_std), + cp_std(ct.cp_std) +{} template @@ -102,13 +110,8 @@ Foam::nasaHeatCapacityPolynomial::New(Istream& is) ); } + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - - - - - // * * * * * * * * * * * * * * *useful functions* * * * * * * * * * * * * // - //used to calculate the internal energy //perfect gas enthalpy template @@ -117,7 +120,17 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h0 const scalar T ) const { -return this->RR*T*(-this->a1_*pow(T,-2)+this->a2_*log(T)/T+this->a3_+0.5*this->a4_*T+(this->a5_*pow(T,2))/3+(this->a6_*pow(T,3))/4+(this->a7_*pow(T,4))/5); + return + this->RR*T* + ( + -this->a1_*pow(T,-2) + +this->a2_*log(T)/T + +this->a3_ + +0.5*this->a4_*T + +(this->a5_*pow(T,2))/3 + +(this->a6_*pow(T,3))/4 + +(this->a7_*pow(T,4))/5 + ); } @@ -129,7 +142,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e0 const scalar T ) const { -return this->h0(T) - this->RR*T; + return this->h0(T) - this->RR*T; } // used to calculate the entropy @@ -140,11 +153,19 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s0 const scalar T ) const { -return this->RR*( this->a1_*(-1)/(2*pow(T,2))-this->a2_/T+this->a3_*log(T)+this->a4_*T+(this->a5_*pow(T,2))/2+(this->a6_*pow(T,3))/3+(this->a7_*pow(T,4))/4); + return this->RR* + ( + this->a1_*(-1)/(2*pow(T,2)) + -this->a2_/T+this->a3_*log(T) + +this->a4_*T + +(this->a5_*pow(T,2))/2 + +(this->a6_*pow(T,3))/3 + +(this->a7_*pow(T,4))/4 + ); } -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + //perfect gas cp template @@ -153,8 +174,16 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp0 const scalar T ) const { - - return this->RR*(this->a1_*1/pow(T,2)+this->a2_*1/T+this->a3_+this->a4_*T+this->a5_*pow(T,2)+this->a6_*pow(T,3)+this->a7_*pow(T,4)); + return this->RR* + ( + this->a1_*1/pow(T,2) + +this->a2_*1/T + +this->a3_ + +this->a4_*T + +this->a5_*pow(T,2) + +this->a6_*pow(T,3) + +this->a7_*pow(T,4) + ); } @@ -166,7 +195,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cv0 ) const { - return this->cp0(T)-this->RR; + return this->cp0(T)-this->RR; } @@ -180,14 +209,25 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp const scalar T ) const { -// Problem --> dpdv(rho,T) is =0 at some points within the vapour dome. To increase stability, (dp/dv) has to be limited -// cp can be negative within the vapor dome. To avoid this nonphysical result, the absolute value is used. -// within the vapourdome and at the critical point, cp increases to very high values --> infinity, -// this would decrease the stability, so cp will be limited to 20 time the cp @ STD - return min(cp_std*20,fabs(this->cv(rho,T)-T*pow((this->dpdT(rho, T)),2)/min(this->dpdv(rho, T),-1))); + // Problem --> dpdv(rho,T) is =0 at some points within the vapour dome. To increase stability, (dp/dv) has to be limited + // cp can be negative within the vapor dome. To avoid this nonphysical result, the absolute value is used. + // within the vapourdome and at the critical point, cp increases to very high values --> infinity, + // this would decrease the stability, so cp will be limited to 20 time the cp @ STD + return + min + ( + cp_std*20, + fabs + ( + this->cv(rho,T) + -T*pow((this->dpdT(rho, T)),2) + /min(this->dpdv(rho, T),-1) + ) + ); } -// this function is needed to get cp @ STD (without the limit imposed in the function above), which in turn is needed to limit the cp in the function above +// this function is needed to get cp @ STD (without the limit imposed in the function above), +// which in turn is needed to limit the cp in the function above template inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp_nonLimited ( @@ -195,7 +235,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp_nonLim const scalar T ) const { - return fabs(this->cv(rho,T)-T*pow((this->dpdT(rho, T)),2)/min(this->dpdv(rho, T),-1)); + return fabs(this->cv(rho,T)-T*pow((this->dpdT(rho, T)),2)/min(this->dpdv(rho, T),-1)); } @@ -209,8 +249,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cv ) const { - - return this->cv0(T)+T*this->integral_d2pdT2_dv(rho, T); + return this->cv0(T)+T*this->integral_d2pdT2_dv(rho, T); } @@ -224,12 +263,12 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h const scalar T ) const { - return this->e(rho,T)+this->p(rho,T)/rho*this->W()-this->Pstd/this->rhostd()*this->W(); + return this->e(rho,T)+this->p(rho,T)/rho*this->W()-this->Pstd/this->rhostd()*this->W(); } // function to calculate real gas internal energy -// important assumption used is that the internal Energie is 0 at STD conditions. +// important assumption used: internal Energie is 0 at STD conditions. // equation: du= cv0 dT +[T*dp/dT -p]dv template inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e @@ -238,19 +277,20 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e const scalar T ) const { -return ( -this->Tstd*this->integral_dpdT_dv(this->rhostd(),this->Tstd) - +this->integral_p_dv(this->rhostd(),this->Tstd) - +this->e0(T)-this->e0(this->Tstd) - +T*this->integral_dpdT_dv(rho,T) - -this->integral_p_dv(rho,T) - ); - + return + ( + -this->Tstd*integral_dpdT_dv_std + +integral_p_dv_std + +this->e0(T)-e0_std + +T*this->integral_dpdT_dv(rho,T) + -this->integral_p_dv(rho,T) + ); } //function to calculate real gas entropy -// important assumption used is that the Entropy is 0 at STD conditions. +// important assumption used: the Entropy is 0 at STD conditions. // equation: ds= cv0/T * dT + dp/dT *dv // --> integral cv0/T dT = s0(T) -s0(Tstd) - R*ln(T/Tstd) --> due to s0(T)-s0(Tstd)=integral cp0/T dT template @@ -261,9 +301,15 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s ) const { - return -this->integral_dpdT_dv(this->rhostd(),this->Tstd)+(this->s0(T)-this->s0(this->Tstd))-this->RR*log(T/this->Tstd)+ this->integral_dpdT_dv(rho,T); + return -integral_dpdT_dv_std + +(this->s0(T)-s0_std) + -this->RR*log(T/this->Tstd) + + this->integral_dpdT_dv(rho,T); } + + + // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // @@ -283,11 +329,11 @@ inline void Foam::nasaHeatCapacityPolynomial::operator+= a1_ = molr1*a1_ + molr2*ct.a1_; a2_ = molr1*a2_ + molr2*ct.a2_; - a3_ = molr1*a3_ + molr2*ct.a3_; - a4_ = molr1*a4_ + molr2*ct.a4_; - a5_ = molr1*a5_ + molr2*ct.a5_; - a6_ = molr1*a6_ + molr2*ct.a6_; - a7_ = molr1*a7_ + molr2*ct.a7_; + a3_ = molr1*a3_ + molr2*ct.a3_; + a4_ = molr1*a4_ + molr2*ct.a4_; + a5_ = molr1*a5_ + molr2*ct.a5_; + a6_ = molr1*a6_ + molr2*ct.a6_; + a7_ = molr1*a7_ + molr2*ct.a7_; } @@ -306,11 +352,11 @@ inline void Foam::nasaHeatCapacityPolynomial::operator-= a1_ = molr1*a1_ - molr2*ct.a1_; a2_ = molr1*a2_ - molr2*ct.a2_; - a3_ = molr1*a3_ - molr2*ct.a3_; - a4_ = molr1*a4_ - molr2*ct.a4_; - a5_ = molr1*a5_ - molr2*ct.a5_; - a6_ = molr1*a6_ - molr2*ct.a6_; - a7_ = molr1*a7_ - molr2*ct.a7_; + a3_ = molr1*a3_ - molr2*ct.a3_; + a4_ = molr1*a4_ - molr2*ct.a4_; + a5_ = molr1*a5_ - molr2*ct.a5_; + a6_ = molr1*a6_ - molr2*ct.a6_; + a7_ = molr1*a7_ - molr2*ct.a7_; } @@ -336,15 +382,15 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator+ + ct2.nMoles()/eofs.nMoles()*ct2.a1_, ct1.nMoles()/eofs.nMoles()*ct1.a2_ + ct2.nMoles()/eofs.nMoles()*ct2.a2_, - ct1.nMoles()/eofs.nMoles()*ct1.a3_ + ct1.nMoles()/eofs.nMoles()*ct1.a3_ + ct2.nMoles()/eofs.nMoles()*ct2.a3_, ct1.nMoles()/eofs.nMoles()*ct1.a4_ + ct2.nMoles()/eofs.nMoles()*ct2.a4_, - ct1.nMoles()/eofs.nMoles()*ct1.a5_ + ct1.nMoles()/eofs.nMoles()*ct1.a5_ + ct2.nMoles()/eofs.nMoles()*ct2.a5_, ct1.nMoles()/eofs.nMoles()*ct1.a6_ + ct2.nMoles()/eofs.nMoles()*ct2.a6_, - ct1.nMoles()/eofs.nMoles()*ct1.a7_ + ct1.nMoles()/eofs.nMoles()*ct1.a7_ + ct2.nMoles()/eofs.nMoles()*ct2.a7_ ); } @@ -370,15 +416,15 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator- - ct2.nMoles()/eofs.nMoles()*ct2.a1_, ct1.nMoles()/eofs.nMoles()*ct1.a2_ - ct2.nMoles()/eofs.nMoles()*ct2.a2_, - ct1.nMoles()/eofs.nMoles()*ct1.a3_ + ct1.nMoles()/eofs.nMoles()*ct1.a3_ - ct2.nMoles()/eofs.nMoles()*ct2.a3_, ct1.nMoles()/eofs.nMoles()*ct1.a4_ - ct2.nMoles()/eofs.nMoles()*ct2.a4_, - ct1.nMoles()/eofs.nMoles()*ct1.a5_ + ct1.nMoles()/eofs.nMoles()*ct1.a5_ - ct2.nMoles()/eofs.nMoles()*ct2.a5_, ct1.nMoles()/eofs.nMoles()*ct1.a6_ - ct2.nMoles()/eofs.nMoles()*ct2.a6_, - ct1.nMoles()/eofs.nMoles()*ct1.a7_ + ct1.nMoles()/eofs.nMoles()*ct1.a7_ - ct2.nMoles()/eofs.nMoles()*ct2.a7_ ); } @@ -396,11 +442,11 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator* s*static_cast(ct), ct.a1_, ct.a2_, - ct.a3_, + ct.a3_, ct.a4_, - ct.a5_, + ct.a5_, ct.a6_, - ct.a7_ + ct.a7_ ); } diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H index cf8ced519..051d55ce8 100755 --- a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H +++ b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H @@ -205,8 +205,6 @@ public: //- Enthalpy [J/kg] inline scalar H(const scalar rho, const scalar T) const; - - //- Sensible enthalpy [J/kg] // inline scalar Hs(const scalar T) const; @@ -225,9 +223,13 @@ public: //- Helmholtz free energy [J/kg] inline scalar A(const scalar rho, const scalar T) const; + //Other variables + //- Return compressibility drho/dp at h=constant [s^2/m^2] + inline scalar psiH(const scalar rho, const scalar T) const; - + //- Return compressibility drho/dp at e=constant [s^2/m^2] + inline scalar psiE(const scalar rho, const scalar T) const; // Energy->temperature inversion functions diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H index 83d612c72..2eddbfde1 100755 --- a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H +++ b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H @@ -47,7 +47,7 @@ inline Foam::realGasSpecieThermo::realGasSpecieThermo // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -// using a stabilizing newton solver +// using two one dimensional newton solvers in a row template inline void Foam::realGasSpecieThermo::T ( @@ -59,47 +59,59 @@ inline void Foam::realGasSpecieThermo::T scalar (realGasSpecieThermo::*dFdT)(const scalar,const scalar) const ) const { - - - scalar Test = T0; + scalar Test ; scalar Tnew = T0; + scalar rhoOld; scalar rho=rho0; scalar Ttol = T0*tol_; - int iter = 0; -int i; + scalar rhotol=rho0*tol_; + int iter = 0; + int i; do { - Test = Tnew; - - rho=this->rho(p,Test,rho); - - - i=0; -; + Test = Tnew; + rhoOld=rho; + rho=this->rho(p,Test,rhoOld); + i=0; do - { - Tnew = Test - ((this->*F)(rho,Test) - f)/(this->*dFdT)(rho,Test)/(pow(2,i)); - i++; // if the solve is diverging, the time step is reduced until the solver converges - }while((i<20)&&((mag((this->*F)(rho,Tnew) - f) > mag((this->*F)(rho,Test) - f)))); + { + // using a stabilizing newton solver + // if the solve is diverging, the time step is reduced until the solver converges + Tnew = Test - ((this->*F)(rho,Test) - f)/(this->*dFdT)(rho,Test)/(pow(2,i)); + i++; + }while + ( + (i<20) + && + (( + mag((this->*F)(rho,Tnew) - f) + > + mag((this->*F)(rho,Test) - f) + )) + ); if (iter++ > maxIter_) { FatalErrorIn ( - "realGasSpecieThermo::T(scalar f, scalar T0, " + "realGasSpecieThermo::T(scalar f, scalar T0, scalar p, scalar rho0, " "scalar (realGasSpecieThermo::*F)(const scalar) const, " "scalar (realGasSpecieThermo::*dFdT)(const scalar) const" ") const" ) << "Maximum number of iterations exceeded" << abort(FatalError); } + } while + // both fields must converge + ( + (mag(mag(Tnew) - mag(Test)) > Ttol) + || + (mag(mag(rho) - mag(rhoOld)) > rhotol) + ); - - } while (mag(mag(Tnew) - mag(Test)) > Ttol); - - rho0=rho; - T0=Tnew; + rho0=rho; + T0=Tnew; } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -184,8 +196,52 @@ inline Foam::scalar Foam::realGasSpecieThermo::A(const scalar rho, cons return this->a(rho, T)/this->W(); } +//- Return compressibility drho/dp at h=constant [s^2/m^2] +//- using Bridgeman's Table +template +inline Foam::scalar Foam::realGasSpecieThermo::psiH +( + const scalar rho, + const scalar T + +) const +{ + scalar cp=this->cp(rho,T); + scalar beta=this->isobarExpCoef(rho,T); + return + -( + T*pow(beta,2)/cp + -beta/cp + -this->isothermalCompressiblity(rho,T)*rho/this->W() + )*this->W(); +} - +//- Return compressibility drho/dp at e=constant [s^2/m^2] +//- using Bridgeman's Table +template +inline Foam::scalar Foam::realGasSpecieThermo::psiE +( + const scalar rho, + const scalar T + +) const +{ + scalar Vm = this->W()/rho; + scalar cp=this->cp(rho,T); + scalar beta=this->isobarExpCoef(rho,T); + return + -( + ( + T*pow(beta,2)*Vm + -this->isothermalCompressiblity(rho,T)*cp + ) + / + ( + cp*Vm + -beta*this->p(rho,T)*pow(Vm,2) + ) + )*this->W(); +} template inline void Foam::realGasSpecieThermo::TH diff --git a/src/thermophysicalModels/specie/transport/const/constTransport.H b/src/thermophysicalModels/specie/transport/const/constTransport.H index a19d9809c..0c40ec861 100644 --- a/src/thermophysicalModels/specie/transport/const/constTransport.H +++ b/src/thermophysicalModels/specie/transport/const/constTransport.H @@ -137,6 +137,14 @@ public: //- Thermal diffusivity for enthalpy [kg/ms] inline scalar alpha(const scalar T) const; + + //- Thermal conductivity [W/mK] + inline scalar kappa(const scalar rho,const scalar T) const; + + //- Thermal diffusivity for enthalpy [kg/ms] + inline scalar alpha(const scalar rho,const scalar T) const; + + // Species diffusivity //inline scalar D(const scalar T) const; diff --git a/src/thermophysicalModels/specie/transport/const/constTransportI.H b/src/thermophysicalModels/specie/transport/const/constTransportI.H index 2f45f02bc..289f14b0f 100644 --- a/src/thermophysicalModels/specie/transport/const/constTransportI.H +++ b/src/thermophysicalModels/specie/transport/const/constTransportI.H @@ -116,7 +116,26 @@ inline scalar constTransport::alpha(const scalar T) const return Cp_*mu(T)*rPr/CpBar; } +// Thermal conductivity [W/mK] +template +inline scalar constTransport::kappa(const scalar rho,const scalar T) const +{ + return this->Cp(rho,T)*mu(T)*rPr; +} + +// Thermal diffusivity for enthalpy [kg/ms] +template +inline scalar constTransport::alpha(const scalar rho,const scalar T) const +{ + scalar Cp_ = this->Cp(rho,T); + + scalar deltaT = T - specie::Tstd; + scalar CpBar = + (deltaT*(this->H(rho,T) - this->H(this->rhostd(),specie::Tstd)) + Cp_)/(sqr(deltaT) + 1); + + return Cp_*mu(T)*rPr/CpBar; +} // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // template diff --git a/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.C b/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.C deleted file mode 100644 index 83bb6b9ca..000000000 --- a/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.C +++ /dev/null @@ -1,79 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright held by original author - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Description - - Modified version of constTransport, modified to be used with realGases - - Constant properties Transport package. Templated ito a given - thermodynamics package (needed for thermal conductivity). - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#include "realGasConstTransport.H" -#include "IOstreams.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template -realGasConstTransport::realGasConstTransport(Istream& is) -: - thermo(is), - Mu(readScalar(is)), - rPr(1.0/readScalar(is)) -{ - is.check("realGasConstTransport::realGasConstTransport(Istream& is)"); -} - - -// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // - -template -Ostream& operator<<(Ostream& os, const realGasConstTransport& ct) -{ - operator<<(os, static_cast(ct)); - os << tab << ct.Mu << tab << 1.0/ct.rPr; - - os.check("Ostream& operator<<(Ostream& os, const realGasConstTransport& ct)"); - - return os; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.H b/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.H deleted file mode 100644 index 8153348c4..000000000 --- a/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransport.H +++ /dev/null @@ -1,204 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright held by original author - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::realGasConstTransport - -Description - Constant properties Transport package. - Templated into a given thermodynamics package (needed for thermal - conductivity). - -SourceFiles - realGasConstTransportI.H - realGasConstTransport.C - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany -\*---------------------------------------------------------------------------*/ - -#ifndef realGasConstTransport_H -#define realGasConstTransport_H - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// Forward declaration of friend functions and operators - -template class realGasConstTransport; - -template -inline realGasConstTransport operator+ -( - const realGasConstTransport&, - const realGasConstTransport& -); - -template -inline realGasConstTransport operator- -( - const realGasConstTransport&, - const realGasConstTransport& -); - -template -inline realGasConstTransport operator* -( - const scalar, - const realGasConstTransport& -); - -template -inline realGasConstTransport operator== -( - const realGasConstTransport&, - const realGasConstTransport& -); - -template -Ostream& operator<< -( - Ostream&, - const realGasConstTransport& -); - - -/*---------------------------------------------------------------------------*\ - Class realGasConstTransport Declaration -\*---------------------------------------------------------------------------*/ - -template -class realGasConstTransport -: - public thermo -{ - // Private data - - //- Constant viscosity and reciprocal Prandtl Number. - scalar Mu, rPr; - - - // Private member functions - - //- Construct from components - inline realGasConstTransport - ( - const thermo& t, - const scalar nu, - const scalar Pr - ); - - -public: - - // Constructors - - //- Construct as named copy - inline realGasConstTransport(const word&, const realGasConstTransport&); - - //- Construct from Istream - realGasConstTransport(Istream&); - - - // Member functions - - //- Dynamic viscosity [kg/ms] - inline scalar mu(const scalar T) const; - - //- Thermal conductivity [W/mK] - inline scalar kappa(const scalar rho,const scalar T) const; - - //- Thermal diffusivity for enthalpy [kg/ms] - inline scalar alpha(const scalar rho,const scalar T) const; - - - - - // Member operators - - inline realGasConstTransport& operator= - ( - const realGasConstTransport& - ); - - - // Friend operators - - friend realGasConstTransport operator+ - ( - const realGasConstTransport&, - const realGasConstTransport& - ); - - friend realGasConstTransport operator- - ( - const realGasConstTransport&, - const realGasConstTransport& - ); - - friend realGasConstTransport operator* - ( - const scalar, - const realGasConstTransport& - ); - - friend realGasConstTransport operator== - ( - const realGasConstTransport&, - const realGasConstTransport& - ); - - - // Ostream Operator - - friend Ostream& operator<< - ( - Ostream&, - const realGasConstTransport& - ); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "realGasConstTransportI.H" - -#ifdef NoRepository -# include "realGasConstTransport.C" -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransportI.H b/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransportI.H deleted file mode 100644 index f82d1ba50..000000000 --- a/src/thermophysicalModels/specie/transport/realGasConstTransport/realGasConstTransportI.H +++ /dev/null @@ -1,199 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright held by original author - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -// Construct from components -template -inline realGasConstTransport::realGasConstTransport -( - const thermo& t, - const scalar mu, - const scalar Pr -) -: - thermo(t), - Mu(mu), - rPr(1.0/Pr) -{} - - -// Construct as named copy -template -inline realGasConstTransport::realGasConstTransport -( - const word& name, - const realGasConstTransport& ct -) -: - thermo(name, ct), - Mu(ct.Mu), - rPr(ct.rPr) -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -// Dynamic viscosity [kg/ms] -template -inline scalar realGasConstTransport::mu(const scalar T) const -{ - return Mu; -} - - -// Thermal conductivity [W/mK] -template -inline scalar realGasConstTransport::kappa(const scalar rho,const scalar T) const -{ - return this->Cp(rho,T)*mu(T)*rPr; -} - - -// Thermal diffusivity for enthalpy [kg/ms] -template -inline scalar realGasConstTransport::alpha(const scalar rho,const scalar T) const -{ - scalar Cp_ = this->Cp(rho,T); - - scalar deltaT = T - specie::Tstd; - scalar CpBar = - (deltaT*(this->H(rho,T) - this->H(this->rhostd(),specie::Tstd)) + Cp_)/(sqr(deltaT) + 1); - - return Cp_*mu(T)*rPr/CpBar; -} - - -// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // - -template -inline realGasConstTransport& realGasConstTransport::operator= -( - const realGasConstTransport& ct -) -{ - thermo::operator=(ct); - - Mu = ct.Mu; - rPr = ct.rPr; - - return *this; -} - - -// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // - -template -inline realGasConstTransport operator+ -( - const realGasConstTransport& ct1, - const realGasConstTransport& ct2 -) -{ - thermo t - ( - static_cast(ct1) + static_cast(ct2) - ); - - scalar molr1 = ct1.nMoles()/t.nMoles(); - scalar molr2 = ct2.nMoles()/t.nMoles(); - - return realGasConstTransport - ( - t, - molr1*ct1.Mu + molr2*ct2.Mu, - molr1*ct1.rPr + molr2*ct2.rPr - ); -} - - -template -inline realGasConstTransport operator- -( - const realGasConstTransport& ct1, - const realGasConstTransport& ct2 -) -{ - thermo t - ( - static_cast(ct1) - static_cast(ct2) - ); - - scalar molr1 = ct1.nMoles()/t.nMoles(); - scalar molr2 = ct2.nMoles()/t.nMoles(); - - return realGasConstTransport - ( - t, - molr1*ct1.Mu - molr2*ct2.Mu, - molr1*ct1.rPr - molr2*ct2.rPr - ); -} - - -template -inline realGasConstTransport operator* -( - const scalar s, - const realGasConstTransport& ct -) -{ - return realGasConstTransport - ( - s*static_cast(ct), - ct.Mu, - ct.rPr - ); -} - - -template -inline realGasConstTransport operator== -( - const realGasConstTransport& ct1, - const realGasConstTransport& ct2 -) -{ - return ct2 - ct1; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.C b/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.C deleted file mode 100755 index 5ffb91227..000000000 --- a/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.C +++ /dev/null @@ -1,74 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#include "realGasSutherlandTransport.H" -#include "IOstreams.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template -realGasSutherlandTransport::realGasSutherlandTransport(Istream& is) -: - thermo(is), - As(readScalar(is)), - Ts(readScalar(is)) -{ - is.check("realGasSutherlandTransport::realGasSutherlandTransport(Istream&)"); -} - - -// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // - -template -Ostream& operator<<(Ostream& os, const realGasSutherlandTransport& st) -{ - os << static_cast(st) << tab << st.As << tab << st.Ts; - cout<<"sutherland start"<&)" - ); - - return os; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.H b/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.H deleted file mode 100755 index 8278d33de..000000000 --- a/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransport.H +++ /dev/null @@ -1,237 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::realGasSutherlandTransport - -Description - - Copy of the sutherlandTransport class, modified to be used with real gas properties - - Transport package using Sutherland's formula. - - Templated into a given thermodynamics package (needed for thermal - conductivity). - - Dynamic viscosity [kg/m.s] - @f[ - \mu = A_s \frac{\sqrt{T}}{1 + T_s / T} - @f] - -SourceFiles - realGasSutherlandTransportI.H - realGasSutherlandTransport.C - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#ifndef realGasSutherlandTransport_H -#define realGasSutherlandTransport_H - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// Forward declaration of friend functions and operators - -template class realGasSutherlandTransport; - -template -inline realGasSutherlandTransport operator+ -( - const realGasSutherlandTransport&, - const realGasSutherlandTransport& -); - -template -inline realGasSutherlandTransport operator- -( - const realGasSutherlandTransport&, - const realGasSutherlandTransport& -); - -template -inline realGasSutherlandTransport operator* -( - const scalar, - const realGasSutherlandTransport& -); - -template -inline realGasSutherlandTransport operator== -( - const realGasSutherlandTransport&, - const realGasSutherlandTransport& -); - -template -Ostream& operator<< -( - Ostream&, - const realGasSutherlandTransport& -); - - -/*---------------------------------------------------------------------------*\ - Class realGasSutherlandTransport Declaration -\*---------------------------------------------------------------------------*/ - -template -class realGasSutherlandTransport -: - public thermo -{ - // Private data - - // Sutherland's coefficients - scalar As, Ts; - - - // Private member functions - - //- Calculate the Sutherland coefficients - // given two viscosities and temperatures - inline void calcCoeffs - ( - const scalar mu1, const scalar T1, - const scalar mu2, const scalar T2 - ); - - -public: - - // Constructors - - //- Construct from components - inline realGasSutherlandTransport - ( - const thermo& t, - const scalar as, - const scalar ts - ); - - //- Construct from two viscosities - inline realGasSutherlandTransport - ( - const thermo& t, - const scalar mu1, const scalar T1, - const scalar mu2, const scalar T2 - ); - - //- Construct as named copy - inline realGasSutherlandTransport(const word&, const realGasSutherlandTransport&); - - //- Construct from Istream - realGasSutherlandTransport(Istream&); - - //- Construct and return a clone - inline autoPtr clone() const; - - // Selector from Istream - inline static autoPtr New(Istream& is); - - - // Member functions - - - //- Dynamic viscosity [kg/ms] - inline scalar mu(const scalar T) const; - - - //- Thermal conductivity [W/mK] - inline scalar kappa(const scalar rho,const scalar T) const; - - //- Thermal diffusivity for enthalpy [kg/ms] - inline scalar alpha(const scalar rho,const scalar T) const; - - - - // Member operators - - inline realGasSutherlandTransport& operator= - ( - const realGasSutherlandTransport& - ); - - - // Friend operators - - friend realGasSutherlandTransport operator+ - ( - const realGasSutherlandTransport&, - const realGasSutherlandTransport& - ); - - friend realGasSutherlandTransport operator- - ( - const realGasSutherlandTransport&, - const realGasSutherlandTransport& - ); - - friend realGasSutherlandTransport operator* - ( - const scalar, - const realGasSutherlandTransport& - ); - - friend realGasSutherlandTransport operator== - ( - const realGasSutherlandTransport&, - const realGasSutherlandTransport& - ); - - - // Ostream Operator - - friend Ostream& operator<< - ( - Ostream&, - const realGasSutherlandTransport& - ); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "realGasSutherlandTransportI.H" - -#ifdef NoRepository -# include "realGasSutherlandTransport.C" -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransportI.H b/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransportI.H deleted file mode 100755 index 6e91bc971..000000000 --- a/src/thermophysicalModels/specie/transport/realGasSutherlandTransport/realGasSutherlandTransportI.H +++ /dev/null @@ -1,262 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Modified by -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - - -\*---------------------------------------------------------------------------*/ - -#include "specie.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -template -inline void realGasSutherlandTransport::calcCoeffs -( - const scalar mu1, const scalar T1, - const scalar mu2, const scalar T2 -) -{ - scalar rootT1 = sqrt(T1); - scalar mu1rootT2 = mu1*sqrt(T2); - scalar mu2rootT1 = mu2*rootT1; - - Ts = (mu2rootT1 - mu1rootT2)/(mu1rootT2/T1 - mu2rootT1/T2); - - As = mu1*(1.0 + Ts/T1)/rootT1; -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -// Construct from components -template -inline realGasSutherlandTransport::realGasSutherlandTransport -( - const thermo& t, - const scalar as, - const scalar ts -) -: - thermo(t), - As(as), - Ts(ts) -{} - - -// Construct from components -template -inline realGasSutherlandTransport::realGasSutherlandTransport -( - const thermo& t, - const scalar mu1, const scalar T1, - const scalar mu2, const scalar T2 -) -: - thermo(t) -{ - calcCoeffs(mu1, T1, mu2, T2); -} - - -//- Construct as named copy -template -inline realGasSutherlandTransport::realGasSutherlandTransport -( - const word& name, - const realGasSutherlandTransport& st -) -: - thermo(name, st), - As(st.As), - Ts(st.Ts) -{} - - -// Construct and return a clone -template -inline autoPtr > realGasSutherlandTransport::clone -() const -{ - return autoPtr > - ( - new realGasSutherlandTransport(*this) - ); -} - - -// Selector from Istream -template -inline autoPtr > realGasSutherlandTransport::New -( - Istream& is -) -{ - return autoPtr > - ( - new realGasSutherlandTransport(is) - ); -} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -// Dynamic viscosity [kg/ms] -template -inline scalar realGasSutherlandTransport::mu(const scalar T) const -{ - return As*::sqrt(T)/(1.0 + Ts/T); -} - - -// Thermal conductivity [W/mK] -template -inline scalar realGasSutherlandTransport::kappa(const scalar rho, const scalar T) const -{ - scalar Cv_ = this->Cv(rho,T); - return mu(T)*Cv_*(1.32 + 1.77*this->R()/Cv_); -} - - -// Thermal diffusivity for enthalpy [kg/ms] -template -inline scalar realGasSutherlandTransport::alpha(const scalar rho, const scalar T) const -{ - scalar Cv_ = this->Cv(rho,T); - scalar Cp_ = this->Cp(rho,T); - - scalar deltaT = T - specie::Tstd; - scalar CpBar = - (deltaT*(this->H(rho, T) - this->H(this->rhostd(),specie::Tstd)) + Cp_)/(sqr(deltaT) + 1); - - return mu(T)*Cv_*(1.32 + 1.77*this->R()/Cv_)/CpBar; -} -// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // - -template -inline realGasSutherlandTransport& realGasSutherlandTransport::operator= -( - const realGasSutherlandTransport& st -) -{ - thermo::operator=(st); - - As = st.As; - Ts = st.Ts; - - return *this; -} - - -// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // - -template -inline realGasSutherlandTransport operator+ -( - const realGasSutherlandTransport& st1, - const realGasSutherlandTransport& st2 -) -{ - thermo t - ( - static_cast(st1) + static_cast(st2) - ); - - scalar molr1 = st1.nMoles()/t.nMoles(); - scalar molr2 = st2.nMoles()/t.nMoles(); - - return realGasSutherlandTransport - ( - t, - molr1*st1.As + molr2*st2.As, - molr1*st1.Ts + molr2*st2.Ts - ); -} - - -template -inline realGasSutherlandTransport operator- -( - const realGasSutherlandTransport& st1, - const realGasSutherlandTransport& st2 -) -{ - thermo t - ( - static_cast(st1) - static_cast(st2) - ); - - scalar molr1 = st1.nMoles()/t.nMoles(); - scalar molr2 = st2.nMoles()/t.nMoles(); - - return realGasSutherlandTransport - ( - t, - molr1*st1.As - molr2*st2.As, - molr1*st1.Ts - molr2*st2.Ts - ); -} - - -template -inline realGasSutherlandTransport operator* -( - const scalar s, - const realGasSutherlandTransport& st -) -{ - return realGasSutherlandTransport - ( - s*static_cast(st), - st.As, - st.Ts - ); -} - - -template -inline realGasSutherlandTransport operator== -( - const realGasSutherlandTransport& st1, - const realGasSutherlandTransport& st2 -) -{ - return st2 - st1; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransport.H b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransport.H index 9cc9d0c09..18c1ca69a 100644 --- a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransport.H +++ b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransport.H @@ -159,6 +159,14 @@ public: //- Thermal diffusivity for enthalpy [kg/ms] inline scalar alpha(const scalar T) const; + + //- Thermal conductivity [W/mK] + inline scalar kappa(const scalar rho,const scalar T) const; + + //- Thermal diffusivity for enthalpy [kg/ms] + inline scalar alpha(const scalar rho,const scalar T) const; + + // Species diffusivity //inline scalar D(const scalar T) const; diff --git a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H index 241605991..21d03a6b8 100644 --- a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H +++ b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H @@ -155,7 +155,28 @@ inline scalar sutherlandTransport::alpha(const scalar T) const return mu(T)*Cv_*(1.32 + 1.77*this->R()/Cv_)/CpBar; } +// Thermal conductivity [W/mK] +template +inline scalar sutherlandTransport::kappa(const scalar rho, const scalar T) const +{ + scalar Cv_ = this->Cv(rho,T); + return mu(T)*Cv_*(1.32 + 1.77*this->R()/Cv_); +} + +// Thermal diffusivity for enthalpy [kg/ms] +template +inline scalar sutherlandTransport::alpha(const scalar rho, const scalar T) const +{ + scalar Cv_ = this->Cv(rho,T); + scalar Cp_ = this->Cp(rho,T); + + scalar deltaT = T - specie::Tstd; + scalar CpBar = + (deltaT*(this->H(rho, T) - this->H(this->rhostd(),specie::Tstd)) + Cp_)/(sqr(deltaT) + 1); + + return mu(T)*Cv_*(1.32 + 1.77*this->R()/Cv_)/CpBar; +} // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // template diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/alphat b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/alphat deleted file mode 100755 index 52705a220..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/alphat +++ /dev/null @@ -1,53 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class volScalarField; - location "0"; - object alphat; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -dimensions [1 -1 -1 0 0 0 0]; - -internalField uniform 0; - -boundaryField -{ - WALL_1 - { - type alphatWallFunction; - Prt 0.85; - value uniform 0; - } - WALL_2 - { - type alphatWallFunction; - Prt 0.85; - value uniform 0; - } - INLET - { - type calculated; - value uniform 0; - } - OUTLET - { - type calculated; - value uniform 0; - } - frontAndBackPlanes - { - type empty; - } -} - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/mut b/tutorials/compressible/rhoPisoFoam/ras/pipe/0/mut deleted file mode 100755 index 057017b41..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/mut +++ /dev/null @@ -1,57 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class volScalarField; - location "0"; - object mut; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -dimensions [1 -1 -1 0 0 0 0]; - -internalField uniform 0; - -boundaryField -{ - WALL_1 - { - type mutWallFunction; - Cmu 0.09; - kappa 0.41; - E 9.8; - value uniform 0; - } - WALL_2 - { - type mutWallFunction; - Cmu 0.09; - kappa 0.41; - E 9.8; - value uniform 0; - } - INLET - { - type calculated; - value uniform 0; - } - OUTLET - { - type calculated; - value uniform 0; - } - frontAndBackPlanes - { - type empty; - } -} - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties index 814cf9cc2..a2e453dda 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties @@ -22,7 +22,7 @@ thermoType realGasHThermo>>>>; -//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; +//mixture CO2 1 44.01 73.773e5 304.13 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; //thermoType realGasHThermo>>>>; //mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; @@ -34,7 +34,7 @@ mixture CO2 1 44.01 73.773e5 304.13 0.22394 467.6 49436.5054 -626.411601 //mixture CO2 1 44.01 73.773e5 304.13 0.22394 467.6 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801E-13 1e-06 0.7; //thermoType realGasHThermo>>>>; -//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1e-06 0.7; +//mixture CO2 1 44.01 73.773e5 304.13 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1e-06 0.7; //thermoType realGasHThermo>>>>; //mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1e-06 0.7; From 96747f2ea57298ec02c515c053051020ac03a85c Mon Sep 17 00:00:00 2001 From: Christian Lucas Date: Tue, 8 Mar 2011 18:06:23 +0100 Subject: [PATCH 07/18] modified BC and hRealGasThermo --- .../basic/basicThermo/basicThermo.C | 80 ---------- .../basic/basicThermo/basicThermo.H | 62 +------- .../fixedEnthalpyFvPatchScalarField.C | 4 +- .../fixedInternalEnergyFvPatchScalarField.C | 7 +- ...gradientInternalEnergyFvPatchScalarField.C | 10 +- .../mixedInternalEnergyFvPatchScalarField.C | 12 +- .../wallHeatTransferFvPatchScalarField.C | 7 +- .../psiThermo/realGasHThermo/realGasHThermo.C | 147 +++++++++++------- .../psiThermo/realGasHThermo/realGasHThermo.H | 33 +--- .../aungierRedlichKwongI.H | 4 +- .../pengRobinson/pengRobinsonI.H | 4 +- .../redlichKwong/redlichKwongI.H | 4 +- .../soaveRedlichKwong/soaveRedlichKwongI.H | 4 +- .../nasaHeatCapacityPolynomialI.H | 2 +- .../realGasSpecieThermoI.H | 9 +- 15 files changed, 117 insertions(+), 272 deletions(-) diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.C b/src/thermophysicalModels/basic/basicThermo/basicThermo.C index 84eaa7137..aa8f5e96f 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.C +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.C @@ -472,86 +472,6 @@ const Foam::volScalarField& Foam::basicThermo::alpha() const } -// real gas functions - -Foam::tmp Foam::basicThermo::h -( - const scalarField& p, - const scalarField& T, - const label patchi -) const -{ -// using ideal gas function (by default) -// template gets overwritten for real gas library - - return this->h(T,patchi); - -} - -Foam::tmp Foam::basicThermo::h -( - const scalarField& p, - const scalarField& T, - const labelList& cells -) const -{ -// using ideal gas function (by default) -// template gets overwritten for real gas library - return this->h(T,cells); -} - -Foam::tmp Foam::basicThermo::e -( - const scalarField& p, - const scalarField& T, - const label patchi -) const -{ -// using ideal gas function (by default) -// template gets overwritten for real gas library - return this->e(T,patchi); -} - -Foam::tmp Foam::basicThermo::e -( - const scalarField& p, - const scalarField& T, - const labelList& cells -) const -{ -// using ideal gas function (by default) -// template gets overwritten for real gas library - return this->e(T,cells); -} - -Foam::tmp Foam::basicThermo::Cp -( - const scalarField& p, - const scalarField& T, - const label patchi -) const -{ -// using ideal gas function (by default) -// template gets overwritten for real gas library - return this->Cp(T,patchi); -} - - - -Foam::tmp Foam::basicThermo::Cv -( - const scalarField& p, - const scalarField& T, - const label patchi -) const -{ -// using ideal gas function (by default) -// template gets overwritten for real gas library - return this->Cv(T,patchi); -} - - - bool Foam::basicThermo::read() { return regIOobject::read(); diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.H b/src/thermophysicalModels/basic/basicThermo/basicThermo.H index 317f67927..74bab5d92 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.H +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.H @@ -269,67 +269,7 @@ public: //- Thermal diffusivity for enthalpy of mixture [kg/m/s] virtual const volScalarField& alpha() const; - - - //- enthalpy for cell-set [J/kg] - //function needed for real gases - virtual tmp h - ( - const scalarField& rho, - const scalarField& T, - const labelList& cells - ) const; - - //- enthalpy for patch [J/kg] - //function needed for real gases - virtual tmp h - ( - const scalarField& p, - const scalarField& T, - const label patchi - ) const; - - //- internal energy for cell-set [J/kg] - //function needed for real gases - virtual tmp e - ( - const scalarField& rho, - const scalarField& T, - const labelList& cells - ) const; - - //- internal energy for patch [J/kg] - //function needed for real gases - virtual tmp e - ( - const scalarField& p, - const scalarField& T, - const label patchi - ) const; - - - - //- Heat capacity at constant pressure for patch [J/kg/K] - //function needed for real gases - virtual tmp Cp - ( - const scalarField& p, - const scalarField& T, - const label patchi - ) const; - - - - //- Heat capacity at constant spec.Volume for patch [J/kg/K] - //function needed for real gases - virtual tmp Cv - ( - const scalarField& p, - const scalarField& T, - const label patchi - ) const; - - + //- Read thermophysicalProperties dictionary virtual bool read(); }; diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C index 51f74ade5..1f6d69a3c 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C @@ -112,7 +112,7 @@ void Foam::fixedEnthalpyFvPatchScalarField::updateCoeffs() dimensionedInternalField().name() == db().mangleFileName("h") ) { - operator==(pw,thermo.h(Tw, patchi)); + operator==(pw, thermo.h(Tw, patchi)); } else if ( @@ -122,7 +122,7 @@ void Foam::fixedEnthalpyFvPatchScalarField::updateCoeffs() } else { - operator==(pw,thermo.hs(Tw, patchi)); + operator==(pw, thermo.hs(Tw, patchi)); } fixedValueFvPatchScalarField::updateCoeffs(); diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/fixedInternalEnergy/fixedInternalEnergyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/fixedInternalEnergy/fixedInternalEnergyFvPatchScalarField.C index 8cef32263..486a1f330 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/fixedInternalEnergy/fixedInternalEnergyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/fixedInternalEnergy/fixedInternalEnergyFvPatchScalarField.C @@ -107,12 +107,7 @@ void fixedInternalEnergyFvPatchScalarField::updateCoeffs() fvPatchScalarField& Tw = const_cast(thermo.T().boundaryField()[patchi]); Tw.evaluate(); - - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - pw.evaluate(); - - operator==(thermo.e(pw,Tw, patchi)); + operator==(thermo.e(Tw, patchi)); fixedValueFvPatchScalarField::updateCoeffs(); } diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientInternalEnergy/gradientInternalEnergyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientInternalEnergy/gradientInternalEnergyFvPatchScalarField.C index b3e24f8dd..e64265ee8 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientInternalEnergy/gradientInternalEnergyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientInternalEnergy/gradientInternalEnergyFvPatchScalarField.C @@ -114,15 +114,11 @@ void gradientInternalEnergyFvPatchScalarField::updateCoeffs() Tw.evaluate(); - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - pw.evaluate(); - - gradient() = thermo.Cv(pw,Tw, patchi)*Tw.snGrad() + gradient() = thermo.Cv(Tw, patchi)*Tw.snGrad() + patch().deltaCoeffs()* ( - thermo.e(pw,Tw, patchi) - - thermo.e(pw,Tw, patch().faceCells()) + thermo.e(Tw, patchi) + - thermo.e(Tw, patch().faceCells()) ); fixedGradientFvPatchScalarField::updateCoeffs(); diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/mixedInternalEnergy/mixedInternalEnergyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/mixedInternalEnergy/mixedInternalEnergyFvPatchScalarField.C index 6885da6ec..d1dc738fa 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/mixedInternalEnergy/mixedInternalEnergyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/mixedInternalEnergy/mixedInternalEnergyFvPatchScalarField.C @@ -115,17 +115,13 @@ void mixedInternalEnergyFvPatchScalarField::updateCoeffs() Tw.evaluate(); - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - pw.evaluate(); - valueFraction() = Tw.valueFraction(); - refValue() = thermo.e(pw,Tw.refValue(), patchi); - refGrad() = thermo.Cv(pw,Tw, patchi)*Tw.refGrad() + refValue() = thermo.e(Tw.refValue(), patchi); + refGrad() = thermo.Cv(Tw, patchi)*Tw.refGrad() + patch().deltaCoeffs()* ( - thermo.e(pw,Tw, patchi) - - thermo.e(pw,Tw, patch().faceCells()) + thermo.e(Tw, patchi) + - thermo.e(Tw, patch().faceCells()) ); mixedFvPatchScalarField::updateCoeffs(); diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C index 62c3bff69..fa92fd2bb 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C @@ -157,12 +157,7 @@ void Foam::wallHeatTransferFvPatchScalarField::updateCoeffs() const label patchi = patch().index(); const scalarField& Tw = thermo.T().boundaryField()[patchi]; - - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - pw.evaluate(); - - scalarField Cpw = thermo.Cp(pw,Tw, patchi); + scalarField Cpw = thermo.Cp(Tw, patchi); valueFraction() = 1.0/ diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C index e408ddd7b..b1ad79a2e 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C @@ -28,7 +28,6 @@ Institut für Thermodynamik Technische Universität Braunschweig Germany - \*---------------------------------------------------------------------------*/ #include "realGasHThermo.H" @@ -48,7 +47,6 @@ void Foam::realGasHThermo::calculate() scalarField& alphaCells = this->alpha_.internalField(); - forAll(TCells, celli) { const typename MixtureType::thermoType& mixture_ = @@ -73,7 +71,6 @@ void Foam::realGasHThermo::calculate() fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi]; - if (pT.fixesValue()) { @@ -82,19 +79,16 @@ void Foam::realGasHThermo::calculate() const typename MixtureType::thermoType& mixture_ = this->patchFaceMixture(patchi, facei); - prho[facei] = mixture_.rho(pp[facei], pT[facei],prho[facei]); ppsi[facei]=mixture_.psi(prho[facei],pT[facei]); ph[facei] = mixture_.H(prho[facei], pT[facei]); pmu[facei] = mixture_.mu(pT[facei]); palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); - } } else { - forAll(pT, facei) { const typename MixtureType::thermoType& mixture_ = @@ -136,7 +130,7 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) ( IOobject ( - "rho1", + "rhoThermo", mesh.time().timeName(), mesh, IOobject::READ_IF_PRESENT, @@ -147,15 +141,12 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) ) { - - scalarField& hCells = h_.internalField(); const scalarField& TCells = this->T_.internalField(); const scalarField& pCells =this->p_.internalField(); scalarField& rhoCells =this->rho_.internalField(); - forAll(rhoCells, celli) { rhoCells[celli]=this->cellMixture(celli).rho(pCells[celli],TCells[celli]); @@ -163,11 +154,10 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) } - forAll(rho_.boundaryField(), patchi) { rho_.boundaryField()[patchi] == - rho( this->p_.boundaryField()[patchi] , this->T_.boundaryField()[patchi], patchi); + rho(this->T_.boundaryField()[patchi], patchi); } @@ -181,7 +171,7 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) forAll(h_.boundaryField(), patchi) { h_.boundaryField()[patchi] == - h((this->rho_.boundaryField()[patchi]) , this->T_.boundaryField()[patchi], patchi); + h(this->T_.boundaryField()[patchi], patchi); } hBoundaryCorrection(h_); @@ -221,112 +211,89 @@ void Foam::realGasHThermo::correct() } } - - - template Foam::tmp Foam::realGasHThermo::h ( - const scalarField& p, const scalarField& T, const labelList& cells ) const { + //CL: needing the pressure of the internal field to calculate the realGas enthalpy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const scalarField& pCells = this->p_.internalField(); tmp th(new scalarField(T.size())); scalarField& h = th(); forAll(T, celli) { - h[celli] = this->cellMixture(cells[celli]).H(this->cellMixture(cells[celli]).rho(p[celli],T[celli]),T[celli]); + h[celli] = this->cellMixture(cells[celli]).H(this->cellMixture(cells[celli]).rho(pCells[cells[celli]],T[celli]),T[celli]); } return th; } - - - template Foam::tmp Foam::realGasHThermo::h ( - const scalarField& p, const scalarField& T, const label patchi ) const { + //CL: needing the pressure at the patch to calculate the realGas enthalpy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + tmp th(new scalarField(T.size())); scalarField& h = th(); forAll(T, facei) { - h[facei] = this->patchFaceMixture(patchi, facei).H(this->patchFaceMixture(patchi, facei).rho(p[facei], T[facei]),T[facei]); + h[facei] = this->patchFaceMixture(patchi, facei).H(this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]),T[facei]); } return th; } - -template -Foam::tmp Foam::realGasHThermo::psi -( - const scalarField& rho, - const scalarField& T, - const label patchi -) const -{ - - tmp tpsi(new scalarField(T.size())); - scalarField& psi = tpsi(); - - forAll(T, facei) - { - psi[facei] = this->patchFaceMixture(patchi, facei).psi(rho[facei], T[facei]); - } - - return tpsi; -} - - template Foam::tmp Foam::realGasHThermo::rho ( - const scalarField& p, const scalarField& T, const label patchi ) const { + //CL: needing the pressure at the patch to calculate the realGas enthalpy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; tmp trho(new scalarField(T.size())); scalarField& rho = trho(); forAll(T, facei) { - rho[facei] = this->patchFaceMixture(patchi, facei).rho(p[facei], T[facei]); + rho[facei] = this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]); } return trho; } - - - - - template Foam::tmp Foam::realGasHThermo::Cp ( - const scalarField& p, const scalarField& T, const label patchi ) const { + //CL: needing the pressure at the patch to calculate the realGas enthalpy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + tmp tCp(new scalarField(T.size())); scalarField& cp = tCp(); forAll(T, facei) { - cp[facei] = this->patchFaceMixture(patchi, facei).Cp(this->patchFaceMixture(patchi, facei).rho(p[facei], T[facei]),T[facei]); + cp[facei] = this->patchFaceMixture(patchi, facei).Cp(this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]),T[facei]); } return tCp; @@ -381,24 +348,90 @@ Foam::tmp Foam::realGasHThermo::Cp() const template Foam::tmp Foam::realGasHThermo::Cv ( - const scalarField& rho, const scalarField& T, const label patchi ) const { + //CL: needing the pressure at the patch to calculate the realGas enthalpy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; tmp tCv(new scalarField(T.size())); scalarField& cv = tCv(); forAll(T, facei) { - cv[facei] = this->patchFaceMixture(patchi, facei).Cv(rho[facei], T[facei]); + cv[facei] = this->patchFaceMixture(patchi, facei).Cv(this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]), T[facei]); } return tCv; } +// CL: Maybe this function should be changed so that it is not "const" fucntion anymore +template +Foam::tmp Foam::realGasHThermo::rho() const +{ + const fvMesh& mesh = this->T_.mesh(); + + //CL: create an rho Field, which will be return + //CL: the problem is that this function is "const", + //CL: so a new variabel is needed + tmp trho + ( + new volScalarField + ( + IOobject + ( + "rhoFunctionThermo", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimDensity + ) + ); + + //CL: copy "old" rho value onto the new rho field as start point + //CL: for the newton solver used in this->TH( ... ) + trho()=rho_; + + volScalarField& rho = trho(); + + const scalarField& hCells = h_.internalField(); + const scalarField& pCells = this->p_.internalField(); + scalarField TCells = this->T_.internalField(); + + forAll(pCells, celli) + { + const typename MixtureType::thermoType& mixture_ = + this->cellMixture(celli); + + // getting the new rho Field + mixture_.TH(hCells[celli], TCells[celli], pCells[celli], rho[celli]); + } + + forAll(p_.boundaryField(), patchi) + { + fvPatchScalarField pp = this->p_.boundaryField()[patchi]; + fvPatchScalarField ph = h_.boundaryField()[patchi]; + fvPatchScalarField pT = this->T_.boundaryField()[patchi]; + + fvPatchScalarField& prho_ = rho.boundaryField()[patchi]; + + forAll(pp, facei) + { + const typename MixtureType::thermoType& mixture_ = + this->patchFaceMixture(patchi, facei); + + // getting the new rho patch Field + mixture_.TH(ph[facei], pT[facei],pp[facei],prho_[facei]); + } + } + return trho; +} template Foam::tmp Foam::realGasHThermo::Cv() const @@ -433,7 +466,7 @@ Foam::tmp Foam::realGasHThermo::Cv() const forAll(this->T_.boundaryField(), patchi) { cv.boundaryField()[patchi] = - Cv(this->rho_.boundaryField()[patchi] , this->T_.boundaryField()[patchi], patchi); + Cv(this->T_.boundaryField()[patchi], patchi); } return tCv; diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H index 250be93d5..ef0ed7ee4 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H @@ -91,7 +91,6 @@ public: //- Construct from mesh realGasHThermo(const fvMesh&); - //- Destructor virtual ~realGasHThermo(); @@ -129,54 +128,32 @@ public: return h_; } - // Fields derived from thermodynamic state variables - - - - //- Enthalpy for cell-set [J/kg] virtual tmp h ( - const scalarField& p, const scalarField& T, const labelList& cells ) const; - - //- Enthalpy for patch [J/kg] virtual tmp h ( - const scalarField& p, const scalarField& T, const label patchi ) const; - //- Psi for patch [J/kg] - virtual tmp psi - ( - const scalarField& rho, - const scalarField& T, - const label patchi - ) const; - - //- Density for patch [J/kg] virtual tmp rho ( - const scalarField& p, const scalarField& T, const label patchi ) const; - - //- Heat capacity at constant pressure for patch [J/kg/K] virtual tmp Cp ( - const scalarField& p, const scalarField& T, const label patchi ) const; @@ -187,7 +164,6 @@ public: //- Heat capacity at constant volume for patch [J/kg/K] virtual tmp Cv ( - const scalarField& rho, const scalarField& T, const label patchi ) const; @@ -195,13 +171,8 @@ public: //- Heat capacity at constant volume [J/kg/K] virtual tmp Cv() const; - - //- Density [kg/m^3] - uses current value of pressure - virtual tmp rho() const - { - - return rho_*1; - } + //- Density [kg/m^3] - uses current value of pressure + virtual tmp rho() const; //- Read thermophysicalProperties dictionary diff --git a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H index 45ee2c1f9..f82356e29 100755 --- a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwongI.H @@ -268,8 +268,8 @@ inline scalar aungierRedlichKwong::rho( scalar molarVolumePrevIteration; scalar molarVolume; - int iter=0; - int maxIter_=400; + label iter=0; + label maxIter_=400; scalar tol_=1e-8; scalar rho1=rhoMax_; scalar rho2=rhoMin_; diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H index 2be1bba5b..54b900c18 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H @@ -321,8 +321,8 @@ inline scalar pengRobinson::rho( scalar molarVolumePrevIteration; scalar molarVolume; - int iter=0; - int maxIter_=400; + label iter=0; + label maxIter_=400; scalar tol_=1e-8; scalar rho1=rhoMax_; scalar rho2=rhoMin_; diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H index 8d592ec4e..fe0ebb08a 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H @@ -276,8 +276,8 @@ inline scalar redlichKwong::rho scalar molarVolumePrevIteration; scalar molarVolume; - int iter=0; - int maxIter_=400; + label iter=0; + label maxIter_=400; scalar tol_=1e-8; scalar rho1=rhoMax_; scalar rho2=rhoMin_; diff --git a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H index 3799e5e95..04089cc0b 100755 --- a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H @@ -337,8 +337,8 @@ inline scalar soaveRedlichKwong::rho( scalar molarVolumePrevIteration; scalar molarVolume; - int iter=0; - int maxIter_=400; + label iter=0; + label maxIter_=400; scalar tol_=1e-8; scalar rho1=rhoMax_; scalar rho2=rhoMin_; diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H index f423d41c8..aab6e2bdc 100755 --- a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H +++ b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H @@ -212,7 +212,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp // Problem --> dpdv(rho,T) is =0 at some points within the vapour dome. To increase stability, (dp/dv) has to be limited // cp can be negative within the vapor dome. To avoid this nonphysical result, the absolute value is used. // within the vapourdome and at the critical point, cp increases to very high values --> infinity, - // this would decrease the stability, so cp will be limited to 20 time the cp @ STD + // this would decrease the stability, so cp will be limited to 20 times the cp @ STD return min ( diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H index 2eddbfde1..95755a358 100755 --- a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H +++ b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H @@ -65,8 +65,8 @@ inline void Foam::realGasSpecieThermo::T scalar rho=rho0; scalar Ttol = T0*tol_; scalar rhotol=rho0*tol_; - int iter = 0; - int i; + label iter = 0; + label i; do { @@ -206,12 +206,11 @@ inline Foam::scalar Foam::realGasSpecieThermo::psiH ) const { - scalar cp=this->cp(rho,T); + scalar beta=this->isobarExpCoef(rho,T); return -( - T*pow(beta,2)/cp - -beta/cp + (T*pow(beta,2)-beta)/this->cp(rho,T) -this->isothermalCompressiblity(rho,T)*rho/this->W() )*this->W(); } From e8b0b4968a0c7c004bae69dd1293d76a69bb7f69 Mon Sep 17 00:00:00 2001 From: Christian Lucas Date: Thu, 9 Feb 2012 17:11:01 +0100 Subject: [PATCH 08/18] realGasEThermo + realGas_pEqn 4 rhoPisoFoam --- .../compressible/rhoPisoFoam/createFields.H | 3 + .../solvers/compressible/rhoPisoFoam/pEqn.H | 92 ++++++++++++------- src/thermophysicalModels/basic/Make/files | 1 + .../psiThermo/basicPsiThermo/basicPsiThermo.C | 14 +++ .../psiThermo/basicPsiThermo/basicPsiThermo.H | 6 ++ .../psiThermo/realGasHThermo/realGasHThermo.C | 46 +++++++--- .../psiThermo/realGasHThermo/realGasHThermo.H | 10 +- .../realGasSpecieThermo/realGasSpecieThermo.C | 2 - .../realGasSpecieThermo/realGasSpecieThermo.H | 41 ++------- .../realGasSpecieThermoI.H | 79 +++++++++++----- .../specie/transport/const/constTransportI.H | 3 +- .../sutherland/sutherlandTransportI.H | 3 +- .../pipe/constant/thermophysicalProperties | 28 +++--- .../rhoPisoFoam/ras/pipe/system/controlDict | 6 +- .../rhoPisoFoam/ras/pipe/system/fvSchemes | 33 ++++--- .../rhoPisoFoam/ras/pipe/system/fvSolution | 6 +- .../rhoPisoFoam/ras/pipe/system/sampleDict | 44 --------- 17 files changed, 230 insertions(+), 187 deletions(-) mode change 100755 => 100644 tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSchemes delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/system/sampleDict diff --git a/applications/solvers/compressible/rhoPisoFoam/createFields.H b/applications/solvers/compressible/rhoPisoFoam/createFields.H index fdb706a14..f514ce6e5 100644 --- a/applications/solvers/compressible/rhoPisoFoam/createFields.H +++ b/applications/solvers/compressible/rhoPisoFoam/createFields.H @@ -9,6 +9,9 @@ volScalarField& p = thermo.p(); volScalarField& h = thermo.h(); const volScalarField& psi = thermo.psi(); + const volScalarField& drhodh = thermo.drhodh(); + + bool realFluid=mesh.solutionDict().subDict("PISO").lookupOrDefault("realFluid",false); volScalarField rho ( diff --git a/applications/solvers/compressible/rhoPisoFoam/pEqn.H b/applications/solvers/compressible/rhoPisoFoam/pEqn.H index 280842ecc..2e884a146 100644 --- a/applications/solvers/compressible/rhoPisoFoam/pEqn.H +++ b/applications/solvers/compressible/rhoPisoFoam/pEqn.H @@ -3,36 +3,7 @@ rho = thermo.rho(); volScalarField rUA = 1.0/UEqn.A(); U = rUA*UEqn.H(); -if (transonic) -{ - surfaceScalarField phid - ( - "phid", - fvc::interpolate(psi) - *( - (fvc::interpolate(U) & mesh.Sf()) - + fvc::ddtPhiCorr(rUA, rho, U, phi) - ) - ); - - for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) - { - fvScalarMatrix pEqn - ( - fvm::ddt(psi, p) - + fvm::div(phid, p) - - fvm::laplacian(rho*rUA, p) - ); - - pEqn.solve(); - - if (nonOrth == nNonOrthCorr) - { - phi == pEqn.flux(); - } - } -} -else +if (realFluid) { phi = fvc::interpolate(rho)* @@ -45,7 +16,8 @@ else { fvScalarMatrix pEqn ( - fvm::ddt(psi, p) + psi*fvm::ddt(p) + + drhodh*fvc::ddt(h) + fvc::div(phi) - fvm::laplacian(rho*rUA, p) ); @@ -58,6 +30,64 @@ else } } } +else +{ + if (transonic) + { + surfaceScalarField phid + ( + "phid", + fvc::interpolate(psi) + *( + (fvc::interpolate(U) & mesh.Sf()) + + fvc::ddtPhiCorr(rUA, rho, U, phi) + ) + ); + + for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + { + fvScalarMatrix pEqn + ( + fvm::ddt(psi, p) + + fvm::div(phid, p) + - fvm::laplacian(rho*rUA, p) + ); + + pEqn.solve(); + + if (nonOrth == nNonOrthCorr) + { + phi == pEqn.flux(); + } + } + } + else + { + phi = + fvc::interpolate(rho)* + ( + (fvc::interpolate(U) & mesh.Sf()) + + fvc::ddtPhiCorr(rUA, rho, U, phi) + ); + + for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + { + fvScalarMatrix pEqn + ( + fvm::ddt(psi, p) + + fvc::div(phi) + - fvm::laplacian(rho*rUA, p) + ); + + pEqn.solve(); + + if (nonOrth == nNonOrthCorr) + { + phi += pEqn.flux(); + } + } + } +} #include "rhoEqn.H" #include "compressibleContinuityErrs.H" diff --git a/src/thermophysicalModels/basic/Make/files b/src/thermophysicalModels/basic/Make/files index 269ef6f1a..029c83333 100644 --- a/src/thermophysicalModels/basic/Make/files +++ b/src/thermophysicalModels/basic/Make/files @@ -9,6 +9,7 @@ psiThermo/hPsiThermo/hPsiThermos.C psiThermo/hsPsiThermo/hsPsiThermos.C psiThermo/ePsiThermo/ePsiThermos.C psiThermo/realGasHThermo/realGasHThermos.C +psiThermo/realGasEThermo/realGasEThermos.C rhoThermo/basicRhoThermo/basicRhoThermo.C rhoThermo/basicRhoThermo/newBasicRhoThermo.C diff --git a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.C b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.C index 10bd1d4b4..e6a6e50ad 100644 --- a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.C @@ -48,4 +48,18 @@ Foam::basicPsiThermo::~basicPsiThermo() {} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +const Foam::volScalarField& Foam::basicPsiThermo::drhodh() const +{ + notImplemented("basicPsiThermo::drhodh()"); + return const_cast(volScalarField::null()); +} + +const Foam::volScalarField& Foam::basicPsiThermo::drhode() const +{ + notImplemented("basicPsiThermo::drhode()"); + return const_cast(volScalarField::null()); +} + // ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H index 2bd1e1e46..99c7a2c85 100644 --- a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H @@ -108,6 +108,12 @@ public: { return p_*psi(); } + + //CL: drhodh needed for pressure equation of the real gas solver + virtual const volScalarField& drhodh() const; + + //CL: drhode needed for pressure equation of the real gas solver + virtual const volScalarField& drhode() const; }; diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C index b1ad79a2e..1cd53345b 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C @@ -43,6 +43,7 @@ void Foam::realGasHThermo::calculate() scalarField& TCells = this->T_.internalField(); scalarField& rhoCells= this->rho_.internalField(); scalarField& psiCells = this->psi_.internalField(); + scalarField& drhodhCells = this->drhodh_.internalField(); scalarField& muCells = this->mu_.internalField(); scalarField& alphaCells = this->alpha_.internalField(); @@ -54,6 +55,7 @@ void Foam::realGasHThermo::calculate() mixture_.TH(hCells[celli], TCells[celli], pCells[celli], rhoCells[celli]); psiCells[celli]=mixture_.psi(rhoCells[celli], TCells[celli]); + drhodhCells[celli]=mixture_.drhodH(rhoCells[celli], TCells[celli]); muCells[celli] = mixture_.mu(TCells[celli]); alphaCells[celli] = mixture_.alpha(rhoCells[celli], TCells[celli]); } @@ -64,9 +66,9 @@ void Foam::realGasHThermo::calculate() fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; fvPatchScalarField& ppsi = this->psi_.boundaryField()[patchi]; + fvPatchScalarField& pdrhodh = this->drhodh_.boundaryField()[patchi]; fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; fvPatchScalarField& ph = h_.boundaryField()[patchi]; - fvPatchScalarField& pmu = this->mu_.boundaryField()[patchi]; fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi]; @@ -81,8 +83,8 @@ void Foam::realGasHThermo::calculate() prho[facei] = mixture_.rho(pp[facei], pT[facei],prho[facei]); ppsi[facei]=mixture_.psi(prho[facei],pT[facei]); + pdrhodh[facei]=mixture_.drhodH(prho[facei],pT[facei]); ph[facei] = mixture_.H(prho[facei], pT[facei]); - pmu[facei] = mixture_.mu(pT[facei]); palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); } @@ -93,9 +95,11 @@ void Foam::realGasHThermo::calculate() { const typename MixtureType::thermoType& mixture_ = this->patchFaceMixture(patchi, facei); + mixture_.TH(ph[facei], pT[facei],pp[facei],prho[facei]); pmu[facei] = mixture_.mu(pT[facei]); ppsi[facei]=mixture_.psi(prho[facei],pT[facei]); + pdrhodh[facei]=mixture_.drhodH(prho[facei],pT[facei]); palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); } } @@ -121,11 +125,11 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) IOobject::NO_READ, IOobject::NO_WRITE ), - mesh, + mesh, dimensionSet(0, 2, -2, 0, 0), this->hBoundaryTypes() - ), - + ), + rho_ ( IOobject @@ -138,7 +142,23 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) ), mesh, dimDensity + ), + + drhodh_ + ( + IOobject + ( + "drhodh", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(1, -5, 2, 0, 0) ) + + { scalarField& hCells = h_.internalField(); @@ -150,15 +170,13 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) forAll(rhoCells, celli) { rhoCells[celli]=this->cellMixture(celli).rho(pCells[celli],TCells[celli]); - } forAll(rho_.boundaryField(), patchi) { rho_.boundaryField()[patchi] == - rho(this->T_.boundaryField()[patchi], patchi); - + rho(this->T_.boundaryField()[patchi], patchi); } @@ -218,7 +236,7 @@ Foam::tmp Foam::realGasHThermo::h const labelList& cells ) const { - //CL: needing the pressure of the internal field to calculate the realGas enthalpy + //CL: need the pressure of the internal field to calculate the realGas enthalpy //CL: this is done this way to assure compatibility to old OF Thermo-Versions const scalarField& pCells = this->p_.internalField(); @@ -240,7 +258,7 @@ Foam::tmp Foam::realGasHThermo::h const label patchi ) const { - //CL: needing the pressure at the patch to calculate the realGas enthalpy + //CL: need the pressure at the patch to calculate the realGas enthalpy //CL: this is done this way to assure compatibility to old OF Thermo-Versions const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; @@ -262,7 +280,7 @@ Foam::tmp Foam::realGasHThermo::rho const label patchi ) const { - //CL: needing the pressure at the patch to calculate the realGas enthalpy + //CL: need the pressure at the patch to calculate the realGas enthalpy //CL: this is done this way to assure compatibility to old OF Thermo-Versions const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; @@ -284,7 +302,7 @@ Foam::tmp Foam::realGasHThermo::Cp const label patchi ) const { - //CL: needing the pressure at the patch to calculate the realGas enthalpy + //CL: need the pressure at the patch to calculate the realGas enthalpy //CL: this is done this way to assure compatibility to old OF Thermo-Versions const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; @@ -352,7 +370,7 @@ Foam::tmp Foam::realGasHThermo::Cv const label patchi ) const { - //CL: needing the pressure at the patch to calculate the realGas enthalpy + //CL: need the pressure at the patch to calculate the realGas enthalpy //CL: this is done this way to assure compatibility to old OF Thermo-Versions const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; @@ -374,7 +392,7 @@ Foam::tmp Foam::realGasHThermo::rho() const const fvMesh& mesh = this->T_.mesh(); - //CL: create an rho Field, which will be return + //CL: create a rho Field, which will be return //CL: the problem is that this function is "const", //CL: so a new variabel is needed tmp trho diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H index ef0ed7ee4..a8026871d 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H @@ -53,7 +53,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class hPsiThermo Declaration + Class realGasHThermo Declaration \*---------------------------------------------------------------------------*/ template @@ -70,6 +70,8 @@ class realGasHThermo //- DensityField volScalarField rho_; + //- drhodh_Field + volScalarField drhodh_; // Private member functions @@ -128,6 +130,12 @@ public: return h_; } + //CL: drhodh needed for pressure equation of the real gas solver + virtual const volScalarField& drhodh() const + { + return drhodh_; + } + // Fields derived from thermodynamic state variables //- Enthalpy for cell-set [J/kg] diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.C b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.C index c192584f8..c2e2ca81c 100755 --- a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.C +++ b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.C @@ -28,10 +28,8 @@ Institut für Thermodynamik Technische Universität Braunschweig Germany - \*---------------------------------------------------------------------------*/ - #include "realGasSpecieThermo.H" #include "IOstreams.H" diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H index 051d55ce8..10f4f981c 100755 --- a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H +++ b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H @@ -40,8 +40,6 @@ SourceFiles realGasSpecieThermoI.H realGasSpecieThermo.C - - Author Christian Lucas Institut für Thermodynamik @@ -100,7 +98,7 @@ Ostream& operator<< /*---------------------------------------------------------------------------*\ - Class specieThermo Declaration + Class realGasSpecieThermo Declaration \*---------------------------------------------------------------------------*/ template @@ -120,7 +118,7 @@ class realGasSpecieThermo // Private member functions // return the temperature corresponding to the value of the - // thermodynamic property f, given the function f = F(T) and dF(T)/dT + // thermodynamic property f, given the function f = F(rho,T) and dF(rho,T)/dT inline void T ( scalar f, @@ -131,12 +129,8 @@ class realGasSpecieThermo scalar (realGasSpecieThermo::*dFdT)(const scalar,const scalar) const ) const; - - public: - - // Constructors //- construct from components @@ -154,35 +148,17 @@ public: // Fundamaental properties // (These functions must be provided in derived types) - // Heat capacity at constant pressure [J/(kmol K)] - //scalar cp(const scalar) const; - - // Enthalpy [J/kmol] - //scalar h(const scalar) const; - // Sensible enthalpy [J/kmol] //virtual scalar hs(const scalar) const; // Chemical enthalpy [J/kmol] //virtual scalar hc(const scalar) const; - // Entropy [J/(kmol K)] - //virtual scalar s(const scalar) const; - - // Calculate and return derived properties // (These functions need not provided in derived types) - // Mole specific properties - - //- Heat capacity at constant volume [J/(kmol K)] - //inline scalar cv(const scalar T, const scalar rho) const; - - //- gamma = cp/cv [] - //inline scalar gamma(const scalar T, const scalar rho) const; - - // Internal energy [J/kmol] - // inline scalar e(const scalar rho, const scalar T) const; + //CL: isentropic expansion factor "gamma" (heat capacity ratio for perfect gas) + inline scalar gamma(const scalar T, const scalar rho) const; //- Sensible internal energy [J/kmol] // inline scalar es(const scalar p, const scalar rho) const; @@ -223,7 +199,7 @@ public: //- Helmholtz free energy [J/kg] inline scalar A(const scalar rho, const scalar T) const; - //Other variables + //CL: Other variables //- Return compressibility drho/dp at h=constant [s^2/m^2] inline scalar psiH(const scalar rho, const scalar T) const; @@ -231,14 +207,17 @@ public: //- Return compressibility drho/dp at e=constant [s^2/m^2] inline scalar psiE(const scalar rho, const scalar T) const; + //- Return compressibility drho/dH at p=constant + inline scalar drhodH(const scalar rho, const scalar T) const; + + //- Return compressibility drho/dE at p=constant + inline scalar drhodE(const scalar rho, const scalar T) const; // Energy->temperature inversion functions //- Temperature from Enthalpy given an initial temperature T0 inline void TH(const scalar H, scalar &T0,const scalar p, scalar &psi0) const; - - //- Temperature from internal energy given an initial temperature T0 inline void TE(const scalar E, scalar &T0,const scalar p, scalar &psi0) const; diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H index 95755a358..96f6e91a5 100755 --- a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H +++ b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H @@ -43,11 +43,10 @@ inline Foam::realGasSpecieThermo::realGasSpecieThermo {} - // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -// using two one dimensional newton solvers in a row +//CL: using two one dimensional newton solvers in a row template inline void Foam::realGasSpecieThermo::T ( @@ -76,8 +75,8 @@ inline void Foam::realGasSpecieThermo::T i=0; do { - // using a stabilizing newton solver - // if the solve is diverging, the time step is reduced until the solver converges + //CL: using a stabilizing newton solver + //CL: if the solve is diverging, the time step is reduced until the solver converges Tnew = Test - ((this->*F)(rho,Test) - f)/(this->*dFdT)(rho,Test)/(pow(2,i)); i++; }while @@ -103,7 +102,7 @@ inline void Foam::realGasSpecieThermo::T << abort(FatalError); } } while - // both fields must converge + //CL: both fields must converge ( (mag(mag(Tnew) - mag(Test)) > Ttol) || @@ -130,18 +129,24 @@ inline Foam::realGasSpecieThermo::realGasSpecieThermo // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template +inline Foam::scalar Foam::realGasSpecieThermo::gamma(const scalar rho, const scalar T ) const +{ + return -1/(rho*this->p(rho,T))*this->cp(rho,T)/this->cv(rho,T)*this->dpdv(rho,T); +} + template inline Foam::scalar Foam::realGasSpecieThermo::g(const scalar rho, const scalar T ) const { - return this->h(rho, this->pReturn(rho,T)) - T*this->s(rho, this->pReturn(rho,T)); + return this->h(rho, this->p(rho,T)) - T*this->s(rho, this->p(rho,T)); } template inline Foam::scalar Foam::realGasSpecieThermo::a(const scalar rho, const scalar T ) const { - return this->e(rho,this->pReturn(rho,T)) - T*this->s(rho,this->pReturn(rho,T)); + return this->e(rho,this->p(rho,T)) - T*this->s(rho,this->p(rho,T)); } @@ -166,9 +171,6 @@ inline Foam::scalar Foam::realGasSpecieThermo::H(const scalar rho, const } - - - template inline Foam::scalar Foam::realGasSpecieThermo::S(const scalar rho, const scalar T) const { @@ -196,8 +198,8 @@ inline Foam::scalar Foam::realGasSpecieThermo::A(const scalar rho, cons return this->a(rho, T)/this->W(); } -//- Return compressibility drho/dp at h=constant [s^2/m^2] -//- using Bridgeman's Table +//CL:- Return compressibility drho/dp at h=constant [s^2/m^2] +//CL:- using Bridgeman's Table template inline Foam::scalar Foam::realGasSpecieThermo::psiH ( @@ -206,17 +208,17 @@ inline Foam::scalar Foam::realGasSpecieThermo::psiH ) const { - scalar beta=this->isobarExpCoef(rho,T); + return -( - (T*pow(beta,2)-beta)/this->cp(rho,T) - -this->isothermalCompressiblity(rho,T)*rho/this->W() - )*this->W(); + (T*beta*beta-beta)/this->Cp(rho,T) + -this->isothermalCompressiblity(rho,T)*rho + ); } -//- Return compressibility drho/dp at e=constant [s^2/m^2] -//- using Bridgeman's Table +//CL:- Return compressibility drho/dp at e=constant [s^2/m^2] +//CL:- using Bridgeman's Table template inline Foam::scalar Foam::realGasSpecieThermo::psiE ( @@ -225,21 +227,50 @@ inline Foam::scalar Foam::realGasSpecieThermo::psiE ) const { - scalar Vm = this->W()/rho; - scalar cp=this->cp(rho,T); + scalar V = 1/rho; + scalar cp=this->Cp(rho,T); scalar beta=this->isobarExpCoef(rho,T); + return -( ( - T*pow(beta,2)*Vm + T*pow(beta,2)*V -this->isothermalCompressiblity(rho,T)*cp ) / ( - cp*Vm - -beta*this->p(rho,T)*pow(Vm,2) + cp*V + -beta*this->p(rho,T)*pow(V,2) ) - )*this->W(); + ); +} + +//CL:- Returns drho/dH at p=constant +//CL:- using Bridgeman's Table +template +inline Foam::scalar Foam::realGasSpecieThermo::drhodH +( + const scalar rho, + const scalar T + +) const +{ + return -(rho*this->isobarExpCoef(rho,T))/this->Cp(rho,T); +} + +//CL:- Returns drho/dE at p=constant +//CL:- using Bridgeman's Table +template +inline Foam::scalar Foam::realGasSpecieThermo::drhodE +( + const scalar rho, + const scalar T + +) const +{ + scalar beta=this->isobarExpCoef(rho,T); + + return -(rho*beta)/(this->Cp(rho,T)-beta*this->p(rho,T)/rho); } template diff --git a/src/thermophysicalModels/specie/transport/const/constTransportI.H b/src/thermophysicalModels/specie/transport/const/constTransportI.H index 289f14b0f..5df481a0a 100644 --- a/src/thermophysicalModels/specie/transport/const/constTransportI.H +++ b/src/thermophysicalModels/specie/transport/const/constTransportI.H @@ -116,6 +116,7 @@ inline scalar constTransport::alpha(const scalar T) const return Cp_*mu(T)*rPr/CpBar; } +// CL: for real gas thermo // Thermal conductivity [W/mK] template inline scalar constTransport::kappa(const scalar rho,const scalar T) const @@ -123,7 +124,7 @@ inline scalar constTransport::kappa(const scalar rho,const scalar T) con return this->Cp(rho,T)*mu(T)*rPr; } - +// CL: for real gas thermo // Thermal diffusivity for enthalpy [kg/ms] template inline scalar constTransport::alpha(const scalar rho,const scalar T) const diff --git a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H index 21d03a6b8..08e658cb6 100644 --- a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H +++ b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H @@ -155,6 +155,7 @@ inline scalar sutherlandTransport::alpha(const scalar T) const return mu(T)*Cv_*(1.32 + 1.77*this->R()/Cv_)/CpBar; } +// CL: for real gas thermo // Thermal conductivity [W/mK] template inline scalar sutherlandTransport::kappa(const scalar rho, const scalar T) const @@ -163,7 +164,7 @@ inline scalar sutherlandTransport::kappa(const scalar rho, const scalar return mu(T)*Cv_*(1.32 + 1.77*this->R()/Cv_); } - +// CL: for real gas thermo // Thermal diffusivity for enthalpy [kg/ms] template inline scalar sutherlandTransport::alpha(const scalar rho, const scalar T) const diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties index a2e453dda..61fd291f2 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties @@ -18,28 +18,28 @@ FoamFile -thermoType realGasHThermo>>>>; +thermoType realGasHThermo>>>>; mixture CO2 1 44.01 73.773e5 304.13 0.22394 467.6 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801E-13 1.4792e-06 116; -//thermoType realGasHThermo>>>>; -//mixture CO2 1 44.01 73.773e5 304.13 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; - -//thermoType realGasHThermo>>>>; -//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; - -//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; //mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; -//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; + +//thermoType realGasHThermo>>>>; //mixture CO2 1 44.01 73.773e5 304.13 0.22394 467.6 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801E-13 1e-06 0.7; -//thermoType realGasHThermo>>>>; -//mixture CO2 1 44.01 73.773e5 304.13 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1e-06 0.7; +//thermoType realGasHThermo>>>>; +//mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1e-06 0.7; -//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; //mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1e-06 0.7; -//thermoType realGasHThermo>>>>; +//thermoType realGasHThermo>>>>; //mixture CO2 1 44.01 73.773e5 304.13 0.22394 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1e-06 0.7; @@ -52,7 +52,7 @@ mixture CO2 1 44.01 73.773e5 304.13 0.22394 467.6 49436.5054 -626.411601 // 77.773e5 --> critical pressure // 304.13 --> critical temperatur // 0.22394 --> acentric factor -// 467.6 --> critical density (only for aungier redlich kwong +// 467.6 --> critical density (only for aungier redlich kwong) // 49436.5054 --> 2.849677801e-13 --> 7 heat capacity polynomial coefficent's // .... --> two coefficent's for sutherland model or for the constTransport model // *********************************************************************************************************************** // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/controlDict b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/controlDict index 5fd9ef5a4..57a0bc712 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/controlDict +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/controlDict @@ -41,13 +41,13 @@ writeCompression uncompressed; timeFormat general; -timePrecision 20; +timePrecision 10; adjustTimeStep yes; -maxCo 0.05; +maxCo 0.5; -maxDeltaT 1e-4; +maxDeltaT 1e-2; runTimeModifiable yes; diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSchemes b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSchemes old mode 100755 new mode 100644 index 1e9cfe831..7b89eff9d --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSchemes +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSchemes @@ -1,8 +1,8 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 1.6 | -| \\ / A nd | Web: www.OpenFOAM.org | +| \\ / F ield | OpenFOAM Extend Project: Open Source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile @@ -22,24 +22,25 @@ ddtSchemes gradSchemes { - default cellMDLimited Gauss linear 0.333; - grad(p) cellMDLimited Gauss linear 0.333; + default Gauss linear; + grad(p) Gauss linear; } divSchemes { default none; - div(phi,U) Gauss limitedLinearV 0.5; - div(phid,p) Gauss limitedLinear 0.5; - div(phiU,p) Gauss limitedLinear 0.5; - div(phi,h) Gauss limitedLinear 0.5; - div(phi,k) Gauss limitedLinear 0.5; - div(phi,epsilon) Gauss limitedLinear 0.5; - div(phi,R) Gauss limitedLinear 0.5; - div(phi,omega) Gauss limitedLinear 0.5;; - div(U) Gauss limitedLinear 0.5; + div(phi,U) Gauss limitedLinearV 1; + div(phid,p) Gauss limitedLinear 1; + div(phiU,p) Gauss linear; + div(phi,h) Gauss limitedLinear 1; + div(phi,k) Gauss limitedLinear 1; + div(phi,epsilon) Gauss limitedLinear 1; + div(phi,R) Gauss limitedLinear 1; + div(phi,omega) Gauss limitedLinear 1; + div((rho*R)) Gauss linear; + div(R) Gauss linear; + div(U) Gauss linear; div((muEff*dev2(grad(U).T()))) Gauss linear; - } laplacianSchemes @@ -53,7 +54,6 @@ laplacianSchemes laplacian(DomegaEff,omega) Gauss linear corrected; laplacian((rho*(1|A(U))),p) Gauss linear corrected; laplacian(alphaEff,h) Gauss linear corrected; - } interpolationSchemes @@ -72,5 +72,4 @@ fluxRequired p ; } - // ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSolution b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSolution index bfb9df381..b1de7826e 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSolution +++ b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSolution @@ -35,8 +35,6 @@ p mergeLevels 1; } - - U { solver smoothSolver; @@ -90,10 +88,10 @@ p PISO { + realFluid true; nNonOrthogonalCorrectors 0; - nCorrectors 6; + nCorrectors 2; momentumPredictor yes; - // transonic true; } diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/sampleDict b/tutorials/compressible/rhoPisoFoam/ras/pipe/system/sampleDict deleted file mode 100755 index 53ae79690..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/sampleDict +++ /dev/null @@ -1,44 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open Source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "system"; - object sampleDict; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -interpolationScheme cellPoint; - -setFormat raw; - -sets -( - leftPatch - { - - type uniform; - axis y; - start (0.49 0 0.0); - end (0.49 0.01 0); - nPoints 100; - } -); - -fields -( - U p T -); - -surfaces -( -); - -// ************************************************************************* // From 47c93e34473b99d5435f15dfeb6034a7681147a5 Mon Sep 17 00:00:00 2001 From: Christian Lucas Date: Mon, 28 May 2012 20:55:24 +0200 Subject: [PATCH 09/18] real gas EOS for mixtures --- .../basic/basicThermo/basicThermo.H | 22 -- .../psiThermo/realGasHThermo/realGasHThermo.C | 2 - src/thermophysicalModels/specie/Make/files | 3 + .../aungierRedlichKwong/aungierRedlichKwong.C | 13 +- .../aungierRedlichKwong/aungierRedlichKwong.H | 64 ++-- .../aungierRedlichKwongI.H | 93 +---- .../pengRobinson/pengRobinson.C | 16 +- .../pengRobinson/pengRobinson.H | 105 +++--- .../pengRobinson/pengRobinsonI.H | 336 +++++++++--------- .../redlichKwong/redlichKwong.C | 11 +- .../redlichKwong/redlichKwong.H | 54 ++- .../redlichKwong/redlichKwongI.H | 107 +++--- .../soaveRedlichKwong/soaveRedlichKwong.C | 12 +- .../soaveRedlichKwong/soaveRedlichKwong.H | 105 +++--- .../soaveRedlichKwong/soaveRedlichKwongI.H | 320 ++++++++--------- .../nasaHeatCapacityPolynomial.C | 9 +- .../nasaHeatCapacityPolynomialI.H | 164 ++++----- .../realGasSpecieThermoI.H | 6 +- 18 files changed, 649 insertions(+), 793 deletions(-) diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.H b/src/thermophysicalModels/basic/basicThermo/basicThermo.H index 74bab5d92..13ec9a9d3 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.H +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.H @@ -102,28 +102,6 @@ protected: //- Construct as copy (not implemented) basicThermo(const basicThermo&); - //- Return the enthalpy field boundary types by interrogating the - // temperature field boundary types - // for real gases - wordList hRealBoundaryTypes(); - - //- Correct the enthalpy field boundaries - // for real gases - void hRealBoundaryCorrection(volScalarField& h); - - - // Internal energy - - //- Return the internal energy field boundary types by - // interrogating the temperature field boundary types - // for real gases - wordList eRealBoundaryTypes(); - - //- Correct the internal energy field boundaries - // for real gases - void eRealBoundaryCorrection(volScalarField& e); - - public: //- Runtime type information diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C index 1cd53345b..92a41963b 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C @@ -157,8 +157,6 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) mesh, dimensionSet(1, -5, 2, 0, 0) ) - - { scalarField& hCells = h_.internalField(); diff --git a/src/thermophysicalModels/specie/Make/files b/src/thermophysicalModels/specie/Make/files index 6d26dfc1f..7f4ccccfe 100644 --- a/src/thermophysicalModels/specie/Make/files +++ b/src/thermophysicalModels/specie/Make/files @@ -16,5 +16,8 @@ $(equationOfState)/aungierRedlichKwong/aungierRedlichKwong.C $(equationOfState)/pengRobinson/pengRobinson.C $(equationOfState)/redlichKwong/redlichKwong.C $(equationOfState)/soaveRedlichKwong/soaveRedlichKwong.C +$(equationOfState)/mixtureRedlichKwong/mixtureRedlichKwong.C +$(equationOfState)/mixturePengRobinson/mixturePengRobinson.C +$(equationOfState)/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C LIB = $(FOAM_LIBBIN)/libspecie diff --git a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C index b142ff72c..d6d76596d 100755 --- a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright held by original author \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,8 +31,6 @@ Institut für Thermodynamik Technische Universität Braunschweig Germany - - \*---------------------------------------------------------------------------*/ #include "aungierRedlichKwong.H" @@ -43,7 +41,6 @@ Germany namespace Foam { - /* * * * * * * * * * * * * * * Private static data * * * * * * * * * * * * * */ const scalar aungierRedlichKwong::rhoMin_ @@ -70,7 +67,7 @@ aungierRedlichKwong::aungierRedlichKwong(Istream& is) c_(this->RR*Tcrit_/(pcrit_+(a_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), n_(0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2)), // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R()))) + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) { is.check("aungierRedlichKwong::aungierRedlichKwong(Istream& is)"); } @@ -78,10 +75,10 @@ aungierRedlichKwong::aungierRedlichKwong(Istream& is) // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // -Ostream& operator<<(Ostream& os, const aungierRedlichKwong& pg) +Ostream& operator<<(Ostream& os, const aungierRedlichKwong& ark) { - os << static_cast(pg)<< tab - << pg.pcrit_ << tab<< pg.Tcrit_<< tab<(ark)<< tab + << ark.pcrit_ << tab<< ark.Tcrit_<< tab<RR*Tcrit_/(pcrit_+(a_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), n_(0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2)), // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R()))) + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) {} @@ -103,6 +100,7 @@ inline scalar aungierRedlichKwong::rhostd()const return rhostd_; } + //returns the pressure for a given density and temperature inline scalar aungierRedlichKwong::p(const scalar rho,const scalar T) const { @@ -163,7 +161,6 @@ inline scalar aungierRedlichKwong::integral_p_dv } - //needed to calculate the entropy //(molar values) inline scalar aungierRedlichKwong::integral_dpdT_dv @@ -186,8 +183,6 @@ inline scalar aungierRedlichKwong::d2pdT2(const scalar rho,const scalar T) const } - - //(molar values) inline scalar aungierRedlichKwong::d2pdv2(const scalar rho,const scalar T) const { @@ -198,8 +193,6 @@ inline scalar aungierRedlichKwong::d2pdv2(const scalar rho,const scalar T) const } - - //(molar values) //using second order implicit differentiation inline scalar aungierRedlichKwong::d2vdT2(const scalar rho, const scalar T) const @@ -214,8 +207,6 @@ inline scalar aungierRedlichKwong::d2vdT2(const scalar rho, const scalar T) cons } - - //(molar values) inline scalar aungierRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const { @@ -225,8 +216,6 @@ inline scalar aungierRedlichKwong::d2pdvdT(const scalar rho, const scalar T) con } - - // the result of this intergal is needed for the nasa based cp polynomial //(molar values) inline scalar aungierRedlichKwong::integral_d2pdT2_dv @@ -292,8 +281,9 @@ inline scalar aungierRedlichKwong::rho( i++; if (i>8) { - //using bisection methode as backup, - //solution must be between rho=0.001 to rho=1500; + //CL: using bisection methode as backup, + //CL: solution must be between rho=0.001 to rho=1500; + //CL: if not, change rhoMax_ and rhoMin_ for(i=0; i<200; i++) { scalar f1 = this->p(rho1,T) - p; @@ -347,6 +337,7 @@ inline scalar aungierRedlichKwong::rho( return this->W()/molarVolume; } + //- Return density [kg/m^3] inline scalar aungierRedlichKwong::rho(const scalar p,const scalar T) const { @@ -354,88 +345,24 @@ inline scalar aungierRedlichKwong::rho(const scalar p,const scalar T) const return rho(p,T,p/(this->R()*T)); } + //- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar aungierRedlichKwong::psi(const scalar rho, const scalar T) const { return -this->dvdp(rho,T)*pow(rho,2)/this->W(); } + //- Return compression factor [] inline scalar aungierRedlichKwong::Z( const scalar p, const scalar T,const scalar rho0) const { - return (p*this->rho(p,T,rho0))/(this->R()*T); + return p/(this->R()*T*this->rho(p,T,rho0)); } // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // -inline void aungierRedlichKwong::operator+=(const aungierRedlichKwong& pg) -{ - specie::operator+=(pg); -} - - inline void aungierRedlichKwong::operator-=(const aungierRedlichKwong& pg) -{ - specie::operator-=(pg); -} - -inline void aungierRedlichKwong::operator*=(const scalar s) -{ - specie::operator*=(s); -} - - // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // -//****************not working**************// -/* -inline aungierRedlichKwong operator+ -( - const aungierRedlichKwong& pg1, - const aungierRedlichKwong& pg2 -) -{ - return aungierRedlichKwong - ( - static_cast(pg1) - + static_cast(pg2) - ); -} - - -inline aungierRedlichKwong operator- -( - const aungierRedlichKwong& pg1, - const aungierRedlichKwong& pg2 -) -{ - return aungierRedlichKwong - ( - static_cast(pg1) - - static_cast(pg2) - ); -} - - -inline aungierRedlichKwong operator* -( - const scalar s, - const aungierRedlichKwong& pg -) -{ - return aungierRedlichKwong(s*static_cast(pg)); -} - - -inline aungierRedlichKwong operator== -( - const aungierRedlichKwong& pg1, - const aungierRedlichKwong& pg2 -) -{ - return pg2 - pg1; -} - -*/ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C index 61c1e244d..0474ae1d9 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright held by original author \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -61,22 +61,22 @@ pengRobinson::pengRobinson(Istream& is) pcrit_(readScalar(is)), Tcrit_(readScalar(is)), azentricFactor_(readScalar(is)), - a_(0.457235*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), + a0_(0.457235*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), b_(0.077796*this->RR*Tcrit_/pcrit_), - n_(0.37464+1.54226*azentricFactor_-0.26992*pow(azentricFactor_,2)), - rhostd_(this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R()))) + n_(0.37464+1.54226*azentricFactor_-0.26992*pow(azentricFactor_,2)), + TSave(0.0), + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) { is.check("pengRobinson::pengRobinson(Istream& is)"); - } // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // -Ostream& operator<<(Ostream& os, const pengRobinson& pg) +Ostream& operator<<(Ostream& os, const pengRobinson& pr) { - os << static_cast(pg)<< tab - << pg.pcrit_ << tab<< pg.Tcrit_<< tab << pg.azentricFactor_; + os << static_cast(pr)<< tab + << pr.pcrit_ << tab<< pr.Tcrit_<< tab << pr.azentricFactor_; os.check("Ostream& operator<<(Ostream& os, const pengRobinson& st)"); return os; diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H index 0d8bc74f6..4954c6960 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright held by original author \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,6 +28,12 @@ Class Description Peng Robinson equation of state. + Paper: + Title: A New Two-Constant Equation of State + Authors: Ding-Yu Peng and Donald B. Robinson + Journal: Ind. Eng. Chem., Fundam., Vol. 15, No. 1, 1976 + + SourceFiles pengRobinsonI.H pengRobinson.C @@ -39,7 +45,6 @@ Institut für Thermodynamik Technische Universität Braunschweig Germany - \*---------------------------------------------------------------------------*/ #ifndef pengRobinson_H @@ -63,19 +68,6 @@ class pengRobinson public specie { - //Member Variabels - scalar pcrit_; - scalar Tcrit_; - scalar azentricFactor_; - - //-Peng Robinson factors - scalar a_; - scalar b_; - scalar n_; - - //- Density @STD, initialise after a, b! - scalar rhostd_; - // Static Private data //should be read from the fvSolution file where rhoMax and rhoMin values must be defined (for rhoSimpleFoam) @@ -83,6 +75,34 @@ class pengRobinson static const scalar rhoMax_; static const scalar rhoMin_; +protected: + // Protected data + scalar pcrit_; + scalar Tcrit_; + scalar azentricFactor_; + + //-Peng Robinson factors + scalar n_; + scalar a0_; + mutable scalar b_; + + + //CL: Variables to save the values of a, dadT and d2adT2 of the mixture + //CL: Variables must corrected for changing temperatures + mutable scalar aSave; + mutable scalar daSave; + mutable scalar d2aSave; + + //CL: save the temperature for which the save coefficients (amix,dadTmix,d2adT2mix) are correct + mutable scalar TSave; + + //- Density @STD, initialise after a0, b! + mutable scalar rhostd_; + + + //Protected functions + //CL: function updates the coefficients (aSave, daSave, d2aSave) + inline void updateModelCoefficients(const scalar T) const; public: @@ -90,11 +110,9 @@ public: // Constructors //- Construct from components - inline pengRobinson( - const specie& sp, - scalar pcrit, - scalar Tcrit, - scalar azentricFactor + inline pengRobinson + ( + const specie& sp ); //- Construct from Istream @@ -109,15 +127,28 @@ public: // Selector from Istream inline static autoPtr New(Istream& is); - - - // Member functions inline scalar rhostd()const; + //CL: Model coefficient a(T) + inline scalar a(const scalar T)const; + + //CL: temperature deriviative of model coefficient a(T) + inline scalar dadT(const scalar T)const; + + //CL: second order temperature deriviative of model coefficient a(T) + inline scalar d2adT2(const scalar T)const; + + inline scalar a0()const; + + inline scalar b()const; + + inline scalar n()const; + + //CL: Equation of state inline scalar p(const scalar rho, const scalar T) const; - //first order derivatives + //CL: first order derivatives inline scalar dpdv(const scalar rho,const scalar T) const; inline scalar dpdT(const scalar rho, const scalar T) const; @@ -138,14 +169,14 @@ public: const scalar T ) const; - // Used for cv + //CL: Used for cv inline scalar integral_d2pdT2_dv ( const scalar rho, const scalar T ) const ; - // second order derivatives, not Used At The Moment + //CL: second order derivatives, not Used At The Moment inline scalar d2pdv2(const scalar rho,const scalar T) const; inline scalar d2pdT2(const scalar rho,const scalar T) const; @@ -154,10 +185,10 @@ public: inline scalar d2vdT2(const scalar rho,const scalar T) const; - //Used for internal Energy + //CL: Used for internal Energy inline scalar integral_p_dv(const scalar rho,const scalar T) const; - //Used for Entropy + //CL: Used for Entropy inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; //- Return density [kg/m^3] @@ -185,13 +216,16 @@ public: // Member operators + /* inline void operator+=(const pengRobinson&); + inline void operator-=(const pengRobinson&); inline void operator*=(const scalar); + */ - /* // Friend operators + // Friend operators inline friend pengRobinson operator+ ( @@ -199,25 +233,12 @@ public: const pengRobinson& ); - inline friend pengRobinson operator- - ( - const pengRobinson&, - const pengRobinson& - ); - inline friend pengRobinson operator* ( const scalar s, const pengRobinson& ); - inline friend pengRobinson operator== - ( - const pengRobinson&, - const pengRobinson& - ); -*/ - // Ostream Operator friend Ostream& operator<<(Ostream&, const pengRobinson&); diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H index 54b900c18..402b1f386 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright held by original author \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,7 +28,6 @@ Institut für Thermodynamik Technische Universität Braunschweig Germany - \*---------------------------------------------------------------------------*/ #include "pengRobinson.H" @@ -38,40 +37,31 @@ Germany namespace Foam { - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // Construct from components inline pengRobinson::pengRobinson ( - const specie& sp, - scalar pcrit, - scalar Tcrit, - scalar azentricFactor - + const specie& sp ) : - specie(sp), - pcrit_(pcrit), - Tcrit_(Tcrit), - azentricFactor_(azentricFactor), - a_(0.457235*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), - b_(0.077796*this->RR*Tcrit_/pcrit_), - n_(0.37464+1.54226*azentricFactor_-0.26992*pow(azentricFactor_,2)), - rhostd_(this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R()))) + specie(sp), + TSave(0) {} + // Construct as named copy -inline pengRobinson::pengRobinson(const word& name, const pengRobinson& pg) +inline pengRobinson::pengRobinson(const word& name, const pengRobinson& pr) : - specie(name, pg), - pcrit_(pg.pcrit_), - Tcrit_(pg.Tcrit_), - azentricFactor_(pg.azentricFactor_), - a_(pg.a_), - b_(pg.b_), - n_(pg.n_), - rhostd_(pg.rhostd_) + specie(name, pr), + pcrit_(pr.pcrit_), + Tcrit_(pr.Tcrit_), + azentricFactor_(pr.azentricFactor_), + a0_(pr.a0_), + b_(pr.b_), + n_(pr.n_), + rhostd_(pr.rhostd_), + TSave(0) {} @@ -91,19 +81,98 @@ inline autoPtr pengRobinson::New(Istream& is) // * * * * * * * * * * * * * Member Functions * * * * * * * * * * * // +inline void pengRobinson::updateModelCoefficients(const scalar T)const +{ + aSave=a0_*pow(1+n_*(1-pow(T/Tcrit_,0.5)),2); + daSave=a0_*n_*(n_*sqrt(T/Tcrit_)-n_-1)*sqrt(T/Tcrit_)/T; + d2aSave=a0_*n_*(n_+1)*sqrt(T/Tcrit_)/(2*pow(T,2)); + + //CL: saving the temperature at which the coefficients are valid + TSave=T; +} + + inline scalar pengRobinson::rhostd()const { return rhostd_; } +//CL: Model coefficient a(T) +inline scalar pengRobinson::a(const scalar T)const +{ + //CL: check if a has already been calculated for this temperature + if(TSave==T) + { + return aSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return aSave; + } +} + + +//CL: temperature deriviative of model coefficient a(T) +inline scalar pengRobinson::dadT(const scalar T)const +{ + // check if a has already been calculated for this temperature + if(TSave==T) + { + return daSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return daSave; + } +} + + +//CL: second order temperature deriviative of model coefficient a(T) +inline scalar pengRobinson::d2adT2(const scalar T)const +{ + // check if a has already been calculated for this temperature + if(TSave==T) + { + return d2aSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return d2aSave; + } +} + + +inline scalar pengRobinson::a0()const +{ + return a0_; +} + + +inline scalar pengRobinson::b()const +{ + return b_; +} + + +inline scalar pengRobinson::n()const +{ + return n_; +} + + //returns the pressure for a given density and temperature inline scalar pengRobinson::p(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return this->RR*T/(Vm-b_) - -(a_*pow((1+n_*(1-pow((T/Tcrit_),0.5))),2)) - /(pow(Vm,2)+2*b_*Vm-pow(b_,2)); + + return this->RR*T/(Vm-b_)-a(T)/(pow(Vm,2)+2*b_*Vm-pow(b_,2)); } @@ -112,20 +181,19 @@ inline scalar pengRobinson::p(const scalar rho,const scalar T) const inline scalar pengRobinson::dpdv(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return - -( - 4*a_*n_*Tcrit_*(b_-Vm)*(pow(b_,2) - -pow(Vm,2))*(n_+1)*pow((T/Tcrit_),0.5) - +Tcrit_*(-2*a_*pow((n_+1),2)*(pow(b_,3)-pow(b_,2)*Vm - -b_*pow(Vm,2)+pow(Vm,3)) - +this->RR*T*(pow(b_,4)-4*pow(b_,3)*Vm - +2*pow(b_,2)*pow(Vm,2) - +4*b_*pow(Vm,3)+pow(Vm,4))) - -2*a_*pow(n_,2)*T*(pow(b_,3)-pow(b_,2)*Vm - -b_*pow(Vm,2)+pow(Vm,3)) - ) - /(Tcrit_*pow((b_-Vm),2)*pow((pow(b_,2) - -2*b_*Vm-pow(Vm,2)),2)); + + return( + 2*a(T)* + ( + pow(b_,3)-pow(b_,2)*Vm-b_*pow(Vm,2)+pow(Vm,3) + ) + -this->RR*T* + ( + pow(b_,4)-4*pow(b_,3)*Vm+2*pow(b_,2)*pow(Vm,2) + +4*b_*pow(Vm,3)+pow(Vm,4) + ) + ) + /(pow(b_-Vm,2)*pow(pow(b_,2)-2*b_*Vm-pow(Vm,2),2)); } @@ -134,15 +202,8 @@ inline scalar pengRobinson::dpdv(const scalar rho, const scalar T) const inline scalar pengRobinson::dpdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return - ( - -a_*n_*(n_+1)*pow((T/Tcrit_),0.5) - /(T*(pow(b_,2) - -2*b_*Vm-pow(Vm,2))) - +a_*pow(n_,2)/(Tcrit_*(pow(b_,2) - -2*b_*Vm-pow(Vm,2))) - -this->RR/(b_-Vm) - ); + + return this->RR/(Vm-b_)-dadT(T)/(pow(Vm,2)+2*b_*Vm-pow(b_,2)); } @@ -167,14 +228,8 @@ inline scalar pengRobinson::dvdp(const scalar rho,const scalar T) const inline scalar pengRobinson::integral_p_dv(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return pow(2,0.5)*a_*(2*n_*Tcrit_*(n_+1)*pow(T/Tcrit_,0.5) - -Tcrit_*(pow(n_,2)+2*n_+1)-pow(n_,2)*T) - *log(b_*(1-pow(2,0.5))+Vm)/(4*b_*Tcrit_) - +this->RR*T*log(Vm-b_) - -pow(2,0.5)*a_*(2*n_*Tcrit_*(n_+1)*pow(T/Tcrit_,0.5) - -Tcrit_*(pow(n_,2)+2*n_+1) - -pow(n_,2)*T)*log(b_*(pow(2,0.5)+1)+Vm) - /(4*b_*Tcrit_); + + return -pow(2,0.5)*a(T)*log(b_*(1-pow(2,0.5))+Vm)/(4*b_)+this->RR*T*log(Vm-b_)+pow(2,0.5)*a(T)*log(b_*(pow(2,0.5)+1)+Vm)/(4*b_); } @@ -183,13 +238,8 @@ inline scalar pengRobinson::integral_p_dv(const scalar rho,const scalar T) const inline scalar pengRobinson::integral_dpdT_dv(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return (pow(2,0.5)*a_*n_*(n_+1)*pow(T/Tcrit_,0.5)/(4*b_*T) - -pow(2,0.5)*a_*pow(n_,2)/(4*b_*Tcrit_)) - *log(b_*(1-pow(2,0.5))+Vm) - +this->RR*log(Vm-b_) - +(pow(2,0.5)*a_*pow(n_,2)/(4*b_*Tcrit_) - -pow(2,0.5)*a_*n_*(n_+1)*pow(T/Tcrit_,0.5)/(4*b_*T)) - *log(b_*(pow(2,0.5)+1)+Vm); + + return -pow(2,0.5)*dadT(T)*log(b_*(1-pow(2,0.5))+Vm)/(4*b_)+this->RR*log(Vm-b_)+pow(2,0.5)*dadT(T)*log(b_*(pow(2,0.5)+1)+Vm)/(4*b_); } @@ -197,10 +247,8 @@ inline scalar pengRobinson::integral_dpdT_dv(const scalar rho,const scalar T) co inline scalar pengRobinson::d2pdT2(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return - a_*n_*(n_+1)*pow((T/Tcrit_),0.5) - /(2*pow(T,2)*(pow(b_,2) - -2*b_*Vm-pow(Vm,2))); + + return -d2adT2(T)/(pow(Vm,2)+2*b_*Vm-pow(b_,2)); } @@ -208,51 +256,20 @@ inline scalar pengRobinson::d2pdT2(const scalar rho,const scalar T) const inline scalar pengRobinson::d2pdv2(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return - 2*( - 2*a_*n_*Tcrit_*(b_-Vm)*(n_+1)* - ( - 5*pow(b_,4)-4*pow(b_,3)*Vm - -4*pow(b_,2)*pow(Vm,2) - +3*pow(Vm,4) - ) - *pow(T/Tcrit_,0.5) - +Tcrit_* - ( - this->RR*T* - ( - pow(b_,6) - -6*pow(b_,5)*Vm - +9*pow(b_,4)*pow(Vm,2) - +4*pow(b_,3)*pow(Vm,3) - -9*pow(b_,2)*pow(Vm,4) - -6*b_*pow(Vm,5) - -pow(Vm,6) - ) - -a_*pow((n_+1),2)* - ( - 5*pow(b_,5) - -9*pow(b_,4)*Vm - +4*pow(b_,2)*pow(Vm,3) - +3*b_*pow(Vm,4)-3*pow(Vm,5) - ) - ) - -a_*pow(n_,2)*T* - ( - 5*pow(b_,5) - -9*pow(b_,4)*Vm - +4*pow(b_,2)*pow(Vm,3) - +3*b_*pow(Vm,4) - -3*pow(Vm,5) - ) - ) - / - ( - Tcrit_* - pow((pow(b_,2) - -2*b_*Vm-pow(Vm,2)),3) - *pow((Vm-b_),3) - ); + + return 2* + ( + a(T)* + ( + 5*pow(b_,5)-9*pow(b_,4)*Vm+4*pow(b_,2)*pow(Vm,3)+3*b_*pow(Vm,4)-3*pow(Vm,5) + ) + -this->RR*T* + ( + pow(b_,6)-6*pow(b_,5)*Vm+9*pow(b_,4)*pow(Vm,2)+4*pow(b_,3)*pow(Vm,3) + -9*pow(b_,2)*pow(Vm,4)-6*b_*pow(Vm,5)-pow(Vm,6) + ) + ) + /(pow(b_-Vm,3)*pow(pow(b_,2)-2*b_*Vm-pow(Vm,2),3)); } @@ -274,11 +291,19 @@ inline scalar pengRobinson::d2vdT2(const scalar rho, const scalar T) const inline scalar pengRobinson::d2pdvdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return -2*a_*n_*(b_+Vm)*(n_+1)*pow(T/Tcrit_,0.5) - /(T*pow((pow(b_,2)-2*b_*Vm-pow(Vm,2)),2)) - +(2*a_*pow(n_,2)*(b_+Vm)) - /(Tcrit_*pow(pow(b_,2)-2*b_*Vm-pow(Vm,2),2)) - -this->RR/(pow(b_-Vm,2)); + + return( + 2*dadT(T)* + ( + pow(b_,3)-pow(b_,2)*Vm-b_*pow(Vm,2)+pow(Vm,3) + ) + -this->RR* + ( + pow(b_,4)-4*pow(b_,3)*Vm+2*pow(b_,2)*pow(Vm,2) + +4*b_*pow(Vm,3)+pow(Vm,4) + ) + ) + /(pow(b_-Vm,2)*pow(pow(b_,2)-2*b_*Vm-pow(Vm,2),2)); } @@ -287,10 +312,8 @@ inline scalar pengRobinson::d2pdvdT(const scalar rho, const scalar T) const inline scalar pengRobinson::integral_d2pdT2_dv(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return pow(2,0.5)*a_*n_*(n_+1)*pow(T/Tcrit_,0.5) - *log(b_*(pow(2,0.5)+1)+Vm)/(8*b_*pow(T,2)) - -pow(2,0.5)*a_*n_*(n_+1)*pow(T/Tcrit_,0.5) - *log(b_*(1-pow(2,0.5))+Vm)/(8*b_*pow(T,2)); + + return pow(2,0.5)*d2adT2(T)*log(b_*(pow(2,0.5)+1)+Vm)/(4*b_)-pow(2,0.5)*d2adT2(T)*log(b_*(1-pow(2,0.5))+Vm)/(4*b_); } @@ -307,7 +330,8 @@ inline scalar pengRobinson::isobarExpCoef(const scalar rho,const scalar T) cons inline scalar pengRobinson::isothermalCompressiblity(const scalar rho,const scalar T) const { return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); - //also possible : return -this->dvdp(rho,T)*rho/this->W(); + //CL: also possible + //CL: return -this->dvdp(rho,T)*rho/this->W(); } @@ -332,7 +356,7 @@ inline scalar pengRobinson::rho( do { molarVolumePrevIteration= molarVolume; - + label i=0; do { @@ -345,8 +369,9 @@ inline scalar pengRobinson::rho( i++; if (i>8) { - //using bisection methode as backup, - //solution must be between rho=0.001 to rho=1500; + //CL: using bisection methode as backup, + //CL: solution must be between rho=0.001 to rho=1500; + //CL: if not, change rhoMax_ and rhoMin_ for(i=0; i<200; i++) { scalar f1 = this->p(rho1,T) - p; @@ -419,20 +444,21 @@ inline scalar pengRobinson::psi(const scalar rho, const scalar T) const //- Return compression factor [] inline scalar pengRobinson::Z( const scalar p, const scalar T,const scalar rho0) const { - return (p*this->rho(p,T,rho0))/(this->R()*T); + return p/(this->R()*T*this->rho(p,T,rho0)); } // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // -inline void pengRobinson::operator+=(const pengRobinson& pg) +/* +inline void pengRobinson::operator+=(const pengRobinson& pr) { - specie::operator+=(pg); + specie::operator+=(pr); } - inline void pengRobinson::operator-=(const pengRobinson& pg) + inline void pengRobinson::operator-=(const pengRobinson& pr) { - specie::operator-=(pg); + specie::operator-=(pr); } inline void pengRobinson::operator*=(const scalar s) @@ -440,59 +466,31 @@ inline void pengRobinson::operator*=(const scalar s) specie::operator*=(s); } - +*/ // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // -//****************not working**************// -/* + inline pengRobinson operator+ ( - const pengRobinson& pg1, - const pengRobinson& pg2 + const pengRobinson& pr1, + const pengRobinson& pr2 ) { return pengRobinson ( - static_cast(pg1) - + static_cast(pg2) + static_cast(pr1) + + static_cast(pr2) ); } - -inline pengRobinson operator- -( - const pengRobinson& pg1, - const pengRobinson& pg2 -) -{ - return pengRobinson - ( - static_cast(pg1) - - static_cast(pg2) - ); -} - - inline pengRobinson operator* ( const scalar s, - const pengRobinson& pg + const pengRobinson& pr ) { - return pengRobinson(s*static_cast(pg)); + return pengRobinson(s*static_cast(pr)); } - -inline pengRobinson operator== -( - const pengRobinson& pg1, - const pengRobinson& pg2 -) -{ - return pg2 - pg1; -} - -*/ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C index 6f9e59d1d..b546fc15a 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright held by original author \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,6 @@ Institut für Thermodynamik Technische Universität Braunschweig Germany - \*---------------------------------------------------------------------------*/ #include "redlichKwong.H" @@ -64,7 +63,7 @@ redlichKwong::redlichKwong(Istream& is) a_(0.42748*pow(this->RR,2)*pow(Tcrit_,2.5)/pcrit_), b_(0.08664*this->RR*Tcrit_/pcrit_), // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R()))) + rhostd_(this->rho(Pstd, Tstd, Pstd/(Tstd*this->R()))) { is.check("redlichKwong::redlichKwong(Istream& is)"); } @@ -72,10 +71,10 @@ redlichKwong::redlichKwong(Istream& is) // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // -Ostream& operator<<(Ostream& os, const redlichKwong& pg) +Ostream& operator<<(Ostream& os, const redlichKwong& rk) { - os << static_cast(pg)<< tab - << pg.pcrit_ << tab<< pg.Tcrit_; + os << static_cast(rk)<< tab + << rk.pcrit_ << tab<< rk.Tcrit_; os.check("Ostream& operator<<(Ostream& os, const redlichKwong& st)"); return os; diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H index ec793c53b..921c9c902 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright held by original author \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,7 +38,6 @@ Institut für Thermodynamik Technische Universität Braunschweig Germany - \*---------------------------------------------------------------------------*/ #ifndef redlichKwong_H @@ -60,18 +59,6 @@ class redlichKwong : public specie { - // Private data - - scalar pcrit_; - scalar Tcrit_; - - //-Redlich Kwong factors - scalar a_; - scalar b_; - - //- Density @STD, initialise after a, b! - scalar rhostd_; - // Static Private data //should be read from the fvSolution file where rhoMax and rhoMin values must be defined (for rhoSimpleFoam) @@ -79,18 +66,26 @@ class redlichKwong static const scalar rhoMax_; static const scalar rhoMin_; +protected: + // Protected data + scalar pcrit_; + scalar Tcrit_; + + //-Redlich Kwong factors + mutable scalar a_; + mutable scalar b_; + + //- Density @STD, initialise after a, b! + mutable scalar rhostd_; public: - // Constructors //- Construct from components inline redlichKwong ( - const specie& sp, - scalar pcrit, - scalar Tcrit + const specie& sp ); //- Construct from Istream @@ -109,6 +104,10 @@ public: inline scalar rhostd() const; + inline scalar a() const; + + inline scalar b() const; + inline scalar p(const scalar rho, const scalar T) const; @@ -173,16 +172,16 @@ public: const scalar rho0 ) const; - +/* // Member operators inline void operator+=(const redlichKwong&); inline void operator-=(const redlichKwong&); inline void operator*=(const scalar); +*/ - - /* // Friend operators + // Friend operators inline friend redlichKwong operator+ ( @@ -190,25 +189,12 @@ public: const redlichKwong& ); - inline friend redlichKwong operator- - ( - const redlichKwong&, - const redlichKwong& - ); - inline friend redlichKwong operator* ( const scalar s, const redlichKwong& ); - inline friend redlichKwong operator== - ( - const redlichKwong&, - const redlichKwong& - ); -*/ - // Ostream Operator friend Ostream& operator<<(Ostream&, const redlichKwong&); diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H index fe0ebb08a..de5846271 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright held by original author \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,7 +28,6 @@ Institut für Thermodynamik Technische Universität Braunschweig Germany - \*---------------------------------------------------------------------------*/ #include "redlichKwong.H" @@ -43,30 +42,22 @@ namespace Foam // Construct from components inline redlichKwong::redlichKwong ( - const specie& sp, - scalar pcrit, - scalar Tcrit + const specie& sp ) : - specie(sp), - pcrit_(pcrit), - Tcrit_(Tcrit), - a_(0.42748*pow(this->RR,2)*pow(Tcrit_,2.5)/pcrit_), - b_(0.08664*this->RR*Tcrit_/pcrit_), - // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R()))) + specie(sp) {} // Construct as named copy -inline redlichKwong::redlichKwong(const word& name, const redlichKwong& pg) +inline redlichKwong::redlichKwong(const word& name, const redlichKwong& rk) : - specie(name, pg), - pcrit_(pg.pcrit_), - Tcrit_(pg.Tcrit_), - a_(pg.a_), - b_(pg.b_), - rhostd_(pg.rhostd_) + specie(name, rk), + pcrit_(rk.pcrit_), + Tcrit_(rk.Tcrit_), + a_(rk.a_), + b_(rk.b_), + rhostd_(rk.rhostd_) {} @@ -84,20 +75,30 @@ inline autoPtr redlichKwong::New(Istream& is) } - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - inline scalar redlichKwong::rhostd()const { return rhostd_; } +inline scalar redlichKwong::a()const +{ + return a_; +} + + +inline scalar redlichKwong::b()const +{ + return b_; +} + + //returns the pressure for a given density and temperature inline scalar redlichKwong::p(const scalar rho, const scalar T) const { - scalar Vm = this->W()/rho; + scalar Vm = this->W()/rho; return this->RR*T/(Vm - b_) - a_/(sqrt(T)*Vm*(Vm + b_)); } @@ -300,8 +301,9 @@ inline scalar redlichKwong::rho i++; if (i>8) { - //using bisection methode as backup, - //solution must be between rho=0.001 to rho=1500; + //CL: using bisection methode as backup, + //CL: solution must be between rho=0.001 to rho=1500; + //CL: if not, change rhoMax_ and rhoMin_ for(i=0; i<200; i++) { scalar f1 = this->p(rho1,T) - p; @@ -379,22 +381,22 @@ inline scalar redlichKwong::Z const scalar rho0 ) const { - return p*this->rho(p,T,rho0)/(this->R()*T); + return p/(this->R()*T*this->rho(p,T,rho0)); } // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // +/* - -inline void redlichKwong::operator+=(const redlichKwong& pg) +inline void redlichKwong::operator+=(const redlichKwong& rk) { - specie::operator+=(pg); + specie::operator+=(rk); } -inline void redlichKwong::operator-=(const redlichKwong& pg) +inline void redlichKwong::operator-=(const redlichKwong& rk) { - specie::operator-=(pg); + specie::operator-=(rk); } @@ -403,59 +405,32 @@ inline void redlichKwong::operator*=(const scalar s) specie::operator*=(s); } - +*/ // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // -//****************not working**************//// -/* + + inline redlichKwong operator+ ( - const redlichKwong& pg1, - const redlichKwong& pg2 + const redlichKwong& rk1, + const redlichKwong& rk2 ) { return redlichKwong ( - static_cast(pg1) - + static_cast(pg2) + static_cast(rk1) + + static_cast(rk2) ); } - -inline redlichKwong operator- -( - const redlichKwong& pg1, - const redlichKwong& pg2 -) -{ - return redlichKwong - ( - static_cast(pg1) - - static_cast(pg2) - ); -} - - inline redlichKwong operator* ( const scalar s, - const redlichKwong& pg + const redlichKwong& rk ) { - return redlichKwong(s*static_cast(pg)); + return redlichKwong(s*static_cast(rk)); } - -inline redlichKwong operator== -( - const redlichKwong& pg1, - const redlichKwong& pg2 -) -{ - return pg2 - pg1; -} - -*/ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C index 74376e2c4..997bbe85f 100755 --- a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright held by original author \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -60,11 +60,11 @@ soaveRedlichKwong::soaveRedlichKwong(Istream& is) pcrit_(readScalar(is)), Tcrit_(readScalar(is)), azentricFactor_(readScalar(is)), - a_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/(pcrit_)), + a0_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/(pcrit_)), b_(0.08664*this->RR*Tcrit_/pcrit_), n_(0.48508+1.55171*azentricFactor_-0.15613*pow(azentricFactor_,2)), // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R()))) + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) { is.check("soaveRedlichKwong::soaveRedlichKwong(Istream& is)"); } @@ -72,10 +72,10 @@ soaveRedlichKwong::soaveRedlichKwong(Istream& is) // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // -Ostream& operator<<(Ostream& os, const soaveRedlichKwong& pg) +Ostream& operator<<(Ostream& os, const soaveRedlichKwong& srk) { - os << static_cast(pg)<< tab - << pg.pcrit_ << tab<< pg.Tcrit_<(srk)<< tab + << srk.pcrit_ << tab<< srk.Tcrit_<RR,2)*pow(Tcrit_,2)/(pcrit_)), - b_(0.08664*this->RR*Tcrit_/pcrit_), - n_(0.48508+1.55171*azentricFactor_-0.15613*pow(azentricFactor_,2)), - // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd,Tstd,Pstd*this->W()/(Tstd*this->R()))) + specie(sp), + TSave(0) {} - - // Construct as named copy -inline soaveRedlichKwong::soaveRedlichKwong(const word& name,const soaveRedlichKwong& pg) +inline soaveRedlichKwong::soaveRedlichKwong(const word& name,const soaveRedlichKwong& srk) : - specie(name, pg), - pcrit_(pg.pcrit_), - Tcrit_(pg.Tcrit_), - azentricFactor_(pg.azentricFactor_), - a_(pg.a_), - b_(pg.b_), - n_(pg.n_), - rhostd_(pg.rhostd_) + specie(name, srk), + pcrit_(srk.pcrit_), + Tcrit_(srk.Tcrit_), + azentricFactor_(srk.azentricFactor_), + a0_(srk.a0_), + b_(srk.b_), + n_(srk.n_), + rhostd_(srk.rhostd_), + TSave(0) {} @@ -94,21 +82,101 @@ inline autoPtr soaveRedlichKwong::New(Istream& is) // * * * * * * * * * * * * * Member Functions * * * * * * * * * * * // +inline void soaveRedlichKwong::updateModelCoefficients(const scalar T)const +{ + aSave=a0_*pow(1+n_*(1-pow(T/Tcrit_,0.5)),2); + daSave=a0_*n_*(n_*sqrt(T/Tcrit_)-n_-1)*sqrt(T/Tcrit_)/T; + d2aSave=a0_*n_*(n_+1)*sqrt(T/Tcrit_)/(2*pow(T,2)); + + //CL: saving the temperature at which the coefficients are valid + TSave=T; +} + + inline scalar soaveRedlichKwong::rhostd()const { return rhostd_; } +//CL: Model coefficient a(T) +inline scalar soaveRedlichKwong::a(const scalar T)const +{ + //CL: check if a has already been calculated for this temperature + if(TSave==T) + { + return aSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return aSave; + } +} + + +//CL: temperature deriviative of model coefficient a(T) +inline scalar soaveRedlichKwong::dadT(const scalar T)const +{ + // check if a has already been calculated for this temperature + if(TSave==T) + { + return daSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return daSave; + } +} + + +//CL: second order temperature deriviative of model coefficient a(T) +inline scalar soaveRedlichKwong::d2adT2(const scalar T)const +{ + // check if a has already been calculated for this temperature + if(TSave==T) + { + return d2aSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return d2aSave; + } +} + + +inline scalar soaveRedlichKwong::a0()const +{ + return a0_; +} + + +inline scalar soaveRedlichKwong::b()const +{ + return b_; +} + + +inline scalar soaveRedlichKwong::n()const +{ + return n_; +} + + //returns the pressure for a given density and temperature inline scalar soaveRedlichKwong::p(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; + return ( this->RR*T/(Vm-b_) - -a_*pow((1+n_*(1-pow((T/Tcrit_),0.5))),2) - /(Vm*(Vm+b_)) + -a(T)/(Vm*(Vm+b_)) ); } @@ -118,27 +186,13 @@ inline scalar soaveRedlichKwong::p(const scalar rho,const scalar T) const inline scalar soaveRedlichKwong::dpdv(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; + return - -( - 2*a_*n_*Tcrit_*(b_-Vm)*(pow(b_,2) - +b_*Vm-2*pow(Vm,2))*(n_+1)*pow((T/Tcrit_),0.5) - +Tcrit_* - ( - this->RR*T*pow(Vm,2)*(pow(b_,2) - +2*b_*Vm+pow(Vm,2)) - -a_* - (pow(b_,3)-3*b_*pow(Vm,2)+ - 2*pow(Vm,3)) - *pow((n_+1),2) - ) - -a_*pow(n_,2)*T*(pow(b_,3) - -3*b_*pow(Vm,2)+2*pow(Vm,3)) - ) - / - ( - pow(Vm,2)*Tcrit_*pow((b_+Vm),2) - *pow((b_-Vm),2) - ); + ( + a(T)*(pow(b_,3)-3*b_*pow(Vm,2)+2*pow(Vm,3)) + -this->RR*T*pow(Vm,2)*(pow(b_,2)+2*b_*Vm+pow(Vm,2)) + ) + /(pow(Vm,2)*pow(b_+Vm,2)*pow(b_-Vm,2)); } @@ -147,11 +201,12 @@ inline scalar soaveRedlichKwong::dpdv(const scalar rho, const scalar T) const inline scalar soaveRedlichKwong::dpdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return a_*n_*(n_+1)*pow((T/Tcrit_),0.5) - /(T*Vm*(b_+Vm)) - -a_*pow(n_,2) - /(Vm*Tcrit_*(b_+Vm)) - -this->RR/(b_-Vm); + + return + ( + this->RR/(Vm-b_) + -dadT(T)/(Vm*(Vm+b_)) + ); } @@ -177,19 +232,8 @@ inline scalar soaveRedlichKwong::dvdp(const scalar rho,const scalar T) const inline scalar soaveRedlichKwong::integral_p_dv(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return this->RR*T*log(Vm-b_) - -( - a_*(2*n_*Tcrit_*(n_+1)*pow(T/Tcrit_,0.5) - -Tcrit_*(pow(n_,2)+2*n_+1) - -pow(n_,2)*T)*log(b_+Vm) - ) - /(b_*Tcrit_) - +a_* - ( - 2*n_*Tcrit_*(n_+1)*pow(T/Tcrit_,0.5) - -Tcrit_*(pow(n_,2)+2*n_+1)-pow(n_,2)*T - ) - *log(Vm)/(b_*Tcrit_); + + return this->RR*T*log(Vm-b_)+a(T)*log(b_+Vm)/b_-a(T)*log(Vm)/b_; } @@ -198,15 +242,8 @@ inline scalar soaveRedlichKwong::integral_p_dv(const scalar rho,const scalar T) inline scalar soaveRedlichKwong::integral_dpdT_dv(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return this->RR*log(Vm-b_) - +( - pow(n_,2)*a_/(b_*Tcrit_) - -a_*n_*(n_+1)*pow((T/Tcrit_),0.5) - /(b_*T) - )*log(b_+Vm) - +(a_*n_*(n_+1)*pow((T/Tcrit_),0.5) - /(b_*T) - -a_*pow(n_,2)/(b_*Tcrit_))*log(Vm); + + return this->RR*log(Vm-b_)+dadT(T)*log(b_+Vm)/b_-dadT(T)*log(Vm)/b_; } @@ -214,8 +251,8 @@ inline scalar soaveRedlichKwong::integral_dpdT_dv(const scalar rho,const scalar inline scalar soaveRedlichKwong::d2pdT2(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return -a_*n_*(n_+1)*pow(T/Tcrit_,0.5) - /(2*pow(T,2)*Vm*(b_+Vm)); + + return -d2adT2(T)/(Vm*(Vm+b_)); } @@ -223,45 +260,20 @@ inline scalar soaveRedlichKwong::d2pdT2(const scalar rho,const scalar T) const inline scalar soaveRedlichKwong::d2pdv2(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; + return - 2*( - 2*a_*n_*Tcrit_*(b_-Vm)* + 2* + ( + a(T)* ( - pow(b_,4)+pow(b_,3)*Vm - -2*pow(b_,2)*pow(Vm,2) - -3*b_*pow(Vm,3) - +3*pow(Vm,4) + pow(b_,5)-3*pow(b_,3)*pow(Vm,2)-pow(b_,2)*pow(Vm,3)+6*b_*pow(Vm,4)-3*pow(Vm,5) ) - *(n_+1)*pow(T/Tcrit_,0.5) - -Tcrit_* + +this->RR*T*pow(Vm,3)* ( - a_* - ( - pow(b_,5) - -3*pow(b_,3)*pow(Vm,2) - -pow(b_,2)*pow(Vm,3) - +6*b_*pow(Vm,4) - -3*pow(Vm,5) - )*pow((n_+1),2) - +this->RR*T*pow(Vm,3)* - ( - pow(b_,3) - +3*pow(b_,2)*Vm - +3*b_*pow(Vm,2) - +pow(Vm,3) - ) - ) - -a_*pow(n_,2)*T* - ( - pow(b_,5) - -3*pow(b_,3)*pow(Vm,2) - -pow(b_,2)*pow(Vm,3) - +6*b_*pow(Vm,4) - -3*pow(Vm,5) + pow(b_,3)+3*pow(b_,2)*Vm+3*b_*pow(Vm,2)+pow(Vm,3) ) ) - /(pow(Vm,3)*Tcrit_*pow((Vm+b_),3) - *pow((b_-Vm),3)); + /(pow(Vm,3)*pow(b_+Vm,3)*pow(Vm-b_,3)); } @@ -283,19 +295,13 @@ inline scalar soaveRedlichKwong::d2vdT2(const scalar rho, const scalar T) const inline scalar soaveRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return -a_*n_*(b_+2*Vm)*(n_+1)*pow(T/Tcrit_,0.5) - /(T*pow(Vm,2)*pow((b_+Vm),2)) - -( - this->RR*pow(Vm,2)*Tcrit_*(pow(b_,2) - +2*b_*Vm+pow(Vm,2)) - -a_*pow(n_,2)* - ( - pow(b_,3) - -3*b_*pow(Vm,2) - +2*pow(Vm,3) - ) + + return + ( + dadT(T)*(pow(b_,3)-3*b_*pow(Vm,2)+2*pow(Vm,3)) + -this->RR*pow(Vm,2)*(pow(b_,2)+2*b_*Vm+pow(Vm,2)) ) - /(pow(Vm,2)*Tcrit_*pow((b_+Vm),2)*pow((b_-Vm),2)); + /(pow(Vm,2)*pow(b_+Vm,2)*pow(b_-Vm,2)); } @@ -304,10 +310,8 @@ inline scalar soaveRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const inline scalar soaveRedlichKwong::integral_d2pdT2_dv(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return a_*n_*(n_+1)*pow(T/Tcrit_,0.5)*log(b_+Vm) - /(2*b_*pow(T,2)) - -a_*n_*(n_+1)*pow(T/Tcrit_,0.5)*log(Vm) - /(2*b_*pow(T,2)); + + return d2adT2(T)*log(b_+Vm)/b_-d2adT2(T)*log(Vm)/b_; } @@ -361,8 +365,9 @@ inline scalar soaveRedlichKwong::rho( i++; if (i>8) { - //using bisection methode as backup, - //solution must be between rho=0.001 to rho=1500; + //CL: using bisection methode as backup, + //CL: solution must be between rho=0.001 to rho=1500; + //CL: if not, change rhoMax_ and rhoMin_ for(i=0; i<200; i++) { scalar f1 = this->p(rho1,T) - p; @@ -419,8 +424,7 @@ inline scalar soaveRedlichKwong::rho( //- Return density [kg/m^3]on inline scalar soaveRedlichKwong::rho(const scalar p,const scalar T) const { - - //using perfect gas equation as starting point + //CL: using perfect gas equation as starting point return rho(p,T,p/(this->R()*T)); } @@ -435,19 +439,19 @@ inline scalar soaveRedlichKwong::psi(const scalar rho, const scalar T) const //- Return compression factor [] inline scalar soaveRedlichKwong::Z( const scalar p, const scalar T,const scalar rho0) const { - return (p*this->rho(p,T,rho0))/(this->R()*T); + return p/(this->R()*T*this->rho(p,T,rho0)); } // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // - -inline void soaveRedlichKwong::operator+=(const soaveRedlichKwong& pg) +/* +inline void soaveRedlichKwong::operator+=(const soaveRedlichKwong& srk) { - specie::operator+=(pg); + specie::operator+=(srk); } - inline void soaveRedlichKwong::operator-=(const soaveRedlichKwong& pg) + inline void soaveRedlichKwong::operator-=(const soaveRedlichKwong& srk) { - specie::operator-=(pg); + specie::operator-=(srk); } inline void soaveRedlichKwong::operator*=(const scalar s) @@ -455,59 +459,31 @@ inline void soaveRedlichKwong::operator*=(const scalar s) specie::operator*=(s); } - +*/ // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // -//**************** not working**************// -/* + inline soaveRedlichKwong operator+ ( - const soaveRedlichKwong& pg1, - const soaveRedlichKwong& pg2 + const soaveRedlichKwong& srk1, + const soaveRedlichKwong& srk2 ) { return soaveRedlichKwong ( - static_cast(pg1) - + static_cast(pg2) + static_cast(srk1) + + static_cast(srk2) ); } - -inline soaveRedlichKwong operator- -( - const soaveRedlichKwong& pg1, - const soaveRedlichKwong& pg2 -) -{ - return soaveRedlichKwong - ( - static_cast(pg1) - - static_cast(pg2) - ); -} - - inline soaveRedlichKwong operator* ( const scalar s, - const soaveRedlichKwong& pg + const soaveRedlichKwong& srk ) { - return soaveRedlichKwong(s*static_cast(pg)); + return soaveRedlichKwong(s*static_cast(srk)); } - -inline soaveRedlichKwong operator== -( - const soaveRedlichKwong& pg1, - const soaveRedlichKwong& pg2 -) -{ - return pg2 - pg1; -} - -*/ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C index 6126e87d7..feaeffa1c 100755 --- a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C +++ b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C @@ -28,7 +28,6 @@ Institut für Thermodynamik Technische Universität Braunschweig Germany - \*---------------------------------------------------------------------------*/ #include "nasaHeatCapacityPolynomial.H" @@ -65,12 +64,12 @@ template Foam::Ostream& Foam::operator<< ( Ostream& os, - const nasaHeatCapacityPolynomial& ct + const nasaHeatCapacityPolynomial& np ) { - os << static_cast(ct) << tab - << ct.a1_ << tab<< ct.a2_ << tab << ct.a3_ << tab << ct.a4_ << tab << ct.a5_ << tab << ct.a6_ << tab << ct.a7_ ; - os.check("Ostream& operator<<(Ostream& os, const nasaHeatCapacityPolynomial& ct)"); + os << static_cast(np) << tab + << np.a1_ << tab<< np.a2_ << tab << np.a3_ << tab << np.a4_ << tab << np.a5_ << tab << np.a6_ << tab << np.a7_ ; + os.check("Ostream& operator<<(Ostream& os, const nasaHeatCapacityPolynomial& np)"); return os; } diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H index aab6e2bdc..87256d650 100755 --- a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H +++ b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H @@ -70,22 +70,22 @@ template inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial ( const word& name, - const nasaHeatCapacityPolynomial& ct + const nasaHeatCapacityPolynomial& np ) : - equationOfState(name, ct), - a1_(ct.a1_), - a2_(ct.a2_), - a3_(ct.a3_), - a4_(ct.a4_), - a5_(ct.a5_), - a6_(ct.a6_), - a7_(ct.a7_), - e0_std(ct.e0_std), - s0_std(ct.s0_std), - integral_p_dv_std(ct.integral_p_dv_std), - integral_dpdT_dv_std(ct.integral_dpdT_dv_std), - cp_std(ct.cp_std) + equationOfState(name, np), + a1_(np.a1_), + a2_(np.a2_), + a3_(np.a3_), + a4_(np.a4_), + a5_(np.a5_), + a6_(np.a6_), + a7_(np.a7_), + e0_std(np.e0_std), + s0_std(np.s0_std), + integral_p_dv_std(np.integral_p_dv_std), + integral_dpdT_dv_std(np.integral_dpdT_dv_std), + cp_std(np.cp_std) {} @@ -316,47 +316,47 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s template inline void Foam::nasaHeatCapacityPolynomial::operator+= ( - const nasaHeatCapacityPolynomial& ct + const nasaHeatCapacityPolynomial& np ) { scalar molr1 = this->nMoles(); - equationOfState::operator+=(ct); + equationOfState::operator+=(np); molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); + scalar molr2 = np.nMoles()/this->nMoles(); - a1_ = molr1*a1_ + molr2*ct.a1_; - a2_ = molr1*a2_ + molr2*ct.a2_; - a3_ = molr1*a3_ + molr2*ct.a3_; - a4_ = molr1*a4_ + molr2*ct.a4_; - a5_ = molr1*a5_ + molr2*ct.a5_; - a6_ = molr1*a6_ + molr2*ct.a6_; - a7_ = molr1*a7_ + molr2*ct.a7_; + a1_ = molr1*a1_ + molr2*np.a1_; + a2_ = molr1*a2_ + molr2*np.a2_; + a3_ = molr1*a3_ + molr2*np.a3_; + a4_ = molr1*a4_ + molr2*np.a4_; + a5_ = molr1*a5_ + molr2*np.a5_; + a6_ = molr1*a6_ + molr2*np.a6_; + a7_ = molr1*a7_ + molr2*np.a7_; } template inline void Foam::nasaHeatCapacityPolynomial::operator-= ( - const nasaHeatCapacityPolynomial& ct + const nasaHeatCapacityPolynomial& np ) { scalar molr1 = this->nMoles(); - nasaHeatCapacityPolynomial::operator-=(ct); + nasaHeatCapacityPolynomial::operator-=(np); molr1 /= this->nMoles(); - scalar molr2 = ct.nMoles()/this->nMoles(); + scalar molr2 = np.nMoles()/this->nMoles(); - a1_ = molr1*a1_ - molr2*ct.a1_; - a2_ = molr1*a2_ - molr2*ct.a2_; - a3_ = molr1*a3_ - molr2*ct.a3_; - a4_ = molr1*a4_ - molr2*ct.a4_; - a5_ = molr1*a5_ - molr2*ct.a5_; - a6_ = molr1*a6_ - molr2*ct.a6_; - a7_ = molr1*a7_ - molr2*ct.a7_; + a1_ = molr1*a1_ - molr2*np.a1_; + a2_ = molr1*a2_ - molr2*np.a2_; + a3_ = molr1*a3_ - molr2*np.a3_; + a4_ = molr1*a4_ - molr2*np.a4_; + a5_ = molr1*a5_ - molr2*np.a5_; + a6_ = molr1*a6_ - molr2*np.a6_; + a7_ = molr1*a7_ - molr2*np.a7_; } @@ -365,33 +365,33 @@ inline void Foam::nasaHeatCapacityPolynomial::operator-= template inline Foam::nasaHeatCapacityPolynomial Foam::operator+ ( - const nasaHeatCapacityPolynomial& ct1, - const nasaHeatCapacityPolynomial& ct2 + const nasaHeatCapacityPolynomial& np1, + const nasaHeatCapacityPolynomial& np2 ) { equationOfState eofs ( - static_cast(ct1) - + static_cast(ct2) + static_cast(np1) + + static_cast(np2) ); return nasaHeatCapacityPolynomial ( eofs, - ct1.nMoles()/eofs.nMoles()*ct1.a1_ - + ct2.nMoles()/eofs.nMoles()*ct2.a1_, - ct1.nMoles()/eofs.nMoles()*ct1.a2_ - + ct2.nMoles()/eofs.nMoles()*ct2.a2_, - ct1.nMoles()/eofs.nMoles()*ct1.a3_ - + ct2.nMoles()/eofs.nMoles()*ct2.a3_, - ct1.nMoles()/eofs.nMoles()*ct1.a4_ - + ct2.nMoles()/eofs.nMoles()*ct2.a4_, - ct1.nMoles()/eofs.nMoles()*ct1.a5_ - + ct2.nMoles()/eofs.nMoles()*ct2.a5_, - ct1.nMoles()/eofs.nMoles()*ct1.a6_ - + ct2.nMoles()/eofs.nMoles()*ct2.a6_, - ct1.nMoles()/eofs.nMoles()*ct1.a7_ - + ct2.nMoles()/eofs.nMoles()*ct2.a7_ + np1.nMoles()/eofs.nMoles()*np1.a1_ + + np2.nMoles()/eofs.nMoles()*np2.a1_, + np1.nMoles()/eofs.nMoles()*np1.a2_ + + np2.nMoles()/eofs.nMoles()*np2.a2_, + np1.nMoles()/eofs.nMoles()*np1.a3_ + + np2.nMoles()/eofs.nMoles()*np2.a3_, + np1.nMoles()/eofs.nMoles()*np1.a4_ + + np2.nMoles()/eofs.nMoles()*np2.a4_, + np1.nMoles()/eofs.nMoles()*np1.a5_ + + np2.nMoles()/eofs.nMoles()*np2.a5_, + np1.nMoles()/eofs.nMoles()*np1.a6_ + + np2.nMoles()/eofs.nMoles()*np2.a6_, + np1.nMoles()/eofs.nMoles()*np1.a7_ + + np2.nMoles()/eofs.nMoles()*np2.a7_ ); } @@ -399,33 +399,33 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator+ template inline Foam::nasaHeatCapacityPolynomial Foam::operator- ( - const nasaHeatCapacityPolynomial& ct1, - const nasaHeatCapacityPolynomial& ct2 + const nasaHeatCapacityPolynomial& np1, + const nasaHeatCapacityPolynomial& np2 ) { equationOfState eofs ( - static_cast(ct1) - - static_cast(ct2) + static_cast(np1) + - static_cast(np2) ); return nasaHeatCapacityPolynomial ( eofs, - ct1.nMoles()/eofs.nMoles()*ct1.a1_ - - ct2.nMoles()/eofs.nMoles()*ct2.a1_, - ct1.nMoles()/eofs.nMoles()*ct1.a2_ - - ct2.nMoles()/eofs.nMoles()*ct2.a2_, - ct1.nMoles()/eofs.nMoles()*ct1.a3_ - - ct2.nMoles()/eofs.nMoles()*ct2.a3_, - ct1.nMoles()/eofs.nMoles()*ct1.a4_ - - ct2.nMoles()/eofs.nMoles()*ct2.a4_, - ct1.nMoles()/eofs.nMoles()*ct1.a5_ - - ct2.nMoles()/eofs.nMoles()*ct2.a5_, - ct1.nMoles()/eofs.nMoles()*ct1.a6_ - - ct2.nMoles()/eofs.nMoles()*ct2.a6_, - ct1.nMoles()/eofs.nMoles()*ct1.a7_ - - ct2.nMoles()/eofs.nMoles()*ct2.a7_ + np1.nMoles()/eofs.nMoles()*np1.a1_ + - np2.nMoles()/eofs.nMoles()*np2.a1_, + np1.nMoles()/eofs.nMoles()*np1.a2_ + - np2.nMoles()/eofs.nMoles()*np2.a2_, + np1.nMoles()/eofs.nMoles()*np1.a3_ + - np2.nMoles()/eofs.nMoles()*np2.a3_, + np1.nMoles()/eofs.nMoles()*np1.a4_ + - np2.nMoles()/eofs.nMoles()*np2.a4_, + np1.nMoles()/eofs.nMoles()*np1.a5_ + - np2.nMoles()/eofs.nMoles()*np2.a5_, + np1.nMoles()/eofs.nMoles()*np1.a6_ + - np2.nMoles()/eofs.nMoles()*np2.a6_, + np1.nMoles()/eofs.nMoles()*np1.a7_ + - np2.nMoles()/eofs.nMoles()*np2.a7_ ); } @@ -434,19 +434,19 @@ template inline Foam::nasaHeatCapacityPolynomial Foam::operator* ( const scalar s, - const nasaHeatCapacityPolynomial& ct + const nasaHeatCapacityPolynomial& np ) { return nasaHeatCapacityPolynomial ( - s*static_cast(ct), - ct.a1_, - ct.a2_, - ct.a3_, - ct.a4_, - ct.a5_, - ct.a6_, - ct.a7_ + s*static_cast(np), + np.a1_, + np.a2_, + np.a3_, + np.a4_, + np.a5_, + np.a6_, + np.a7_ ); } @@ -454,11 +454,11 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator* template inline Foam::nasaHeatCapacityPolynomial Foam::operator== ( - const nasaHeatCapacityPolynomial& ct1, - const nasaHeatCapacityPolynomial& ct2 + const nasaHeatCapacityPolynomial& np1, + const nasaHeatCapacityPolynomial& np2 ) { - return ct2 - ct1; + return np2 - np1; } diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H index 96f6e91a5..18c53f0c2 100755 --- a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H +++ b/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H @@ -76,7 +76,7 @@ inline void Foam::realGasSpecieThermo::T do { //CL: using a stabilizing newton solver - //CL: if the solve is diverging, the time step is reduced until the solver converges + //CL: if the solve is diverging, the step is reduced until the solver converges Tnew = Test - ((this->*F)(rho,Test) - f)/(this->*dFdT)(rho,Test)/(pow(2,i)); i++; }while @@ -139,14 +139,14 @@ inline Foam::scalar Foam::realGasSpecieThermo::gamma(const scalar rho, template inline Foam::scalar Foam::realGasSpecieThermo::g(const scalar rho, const scalar T ) const { - return this->h(rho, this->p(rho,T)) - T*this->s(rho, this->p(rho,T)); + return this->h(rho, T) - T*this->s(rho, T); } template inline Foam::scalar Foam::realGasSpecieThermo::a(const scalar rho, const scalar T ) const { - return this->e(rho,this->p(rho,T)) - T*this->s(rho,this->p(rho,T)); + return this->e(rho,T ) - T*this->s(rho, T); } From f3aad569987117fde0f634ccfb61db6e1305d2bd Mon Sep 17 00:00:00 2001 From: Christian Lucas Date: Mon, 28 May 2012 21:00:14 +0200 Subject: [PATCH 10/18] mixture version of real gas EOS --- .../mixturePengRobinson/mixturePengRobinson.C | 73 ++++ .../mixturePengRobinson/mixturePengRobinson.H | 246 +++++++++++ .../mixturePengRobinsonI.H | 407 +++++++++++++++++ .../mixtureRedlichKwong/mixtureRedlichKwong.C | 72 +++ .../mixtureRedlichKwong/mixtureRedlichKwong.H | 167 +++++++ .../mixtureRedlichKwongI.H | 175 ++++++++ .../mixtureSoaveRedlichKwong.C | 73 ++++ .../mixtureSoaveRedlichKwong.H | 246 +++++++++++ .../mixtureSoaveRedlichKwongI.H | 411 ++++++++++++++++++ 9 files changed, 1870 insertions(+) create mode 100755 src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.C create mode 100755 src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.H create mode 100755 src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinsonI.H create mode 100755 src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.C create mode 100755 src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.H create mode 100755 src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwongI.H create mode 100755 src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C create mode 100755 src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H create mode 100755 src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H diff --git a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.C b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.C new file mode 100755 index 000000000..a7b4ca884 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.C @@ -0,0 +1,73 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + Peng Robionson equation of state for mixtures. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "mixturePengRobinson.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +mixturePengRobinson::mixturePengRobinson(Istream& is) +: + pengRobinson(is), + numOfComp(1), + singleComponent(1) +{ + //CL: Save a pointer of this object in the mixtureComponents array + mixtureComponents.push_back(this); + is.check("mixturePengRobinson::mixturePengRobinson(Istream& is)"); +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Ostream& operator<<(Ostream& os, const mixturePengRobinson& pr) +{ + os << static_cast(pr)<< tab; + + os.check("Ostream& operator<<(Ostream& os, const mixturePengRobinson& st)"); + return os; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.H b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.H new file mode 100755 index 000000000..d3fc882b2 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.H @@ -0,0 +1,246 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::mixturePengRobinson + +Description + Peng Robinson equation of state for multiple component mixtures using the van der Waals mixing rule + + Mixing Rule --> see Paper + + Title: Van der eaals mixting rules for cublic equations of state. Applications for supercritical fluids extraction modelling + Authors: T.Y. Kwak and G.A. Mansoori + Journal: Chemical Engineering Science, Vol 41, No. 5, pp. 1303-1309, 1986 + +SourceFiles + mixturePengRobinsonI.H + mixturePengRobinson.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef mixturePengRobinson_H +#define mixturePengRobinson_H + +#include "specie.H" +#include "autoPtr.H" +#include "pengRobinson.H" +#include "scalarList.H" +#include +#include "label.H" +#include "List.H" +#include "dictionary.H" +#include "scalar.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class mixturePengRobinson Declaration +\*---------------------------------------------------------------------------*/ + +class mixturePengRobinson +: + public pengRobinson +{ + +protected: + + //CL: bool used to make sure the model behaves like a single component model when needed + //CL: this is needed during the construction of the mixture + mutable bool singleComponent; + + //CL: save the concentrations of each component of the mixture + //CL: needs to be multiplied by this->W() to get the molar fractions + mutable std::vector weigths; + + //CL: stores the values of a(T) of all componentes + mutable std::vector aComponents; + + //CL: stores the values of the derivatives da/dT of all componentes + mutable std::vector daComponents; + + //CL: stores the values of the second order derivatives d2a/dT2 of all componentes + mutable std::vector d2aComponents; + + //CL: saves a pointer to the pure component classes of the mixture + mutable std::vector mixtureComponents; + + //CL: counts the number of components + mutable label numOfComp; + + //Protected functions + + //CL: function updates the coefficients (aSave, daSave, d2aSave, b) of the mixture + inline void updateModelCoefficients(const scalar T) const; + +public: + + // Constructors + + //- Construct from components + //CL: needed for operator* + inline mixturePengRobinson + ( + const pengRobinson& pr, + label numOfComp, + std::vector weigths, + std::vector mixtureComponents, + scalar a0, + scalar b, + scalar Tcrit, + scalar n, + scalar rhostd + ); + + //- Construct from components + //CL: needed for operator+ + inline mixturePengRobinson + ( + const pengRobinson& pr, + label numOfComp, + std::vector weigths, + std::vector mixtureComponents + ); + + //- Construct from Istream + mixturePengRobinson(Istream&); + + //- Construct as named copy + inline mixturePengRobinson(const word& name, const mixturePengRobinson&); + + //- Construct and return a clone + inline autoPtr clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + // Member functions + + inline scalar p(const scalar rho, const scalar T) const; + + //first order derivatives + inline scalar dpdv(const scalar rho, const scalar T) const; + + inline scalar dpdT(const scalar rho, const scalar T) const; + + inline scalar dvdT(const scalar rho, const scalar T) const; + + inline scalar dvdp(const scalar rho, const scalar T) const; + + inline scalar isobarExpCoef(const scalar rho, const scalar T) const; + + inline scalar isothermalCompressiblity + ( + const scalar rho, + const scalar T + ) const; + + // Used for cv + inline scalar integral_d2pdT2_dv + ( + const scalar rho, + const scalar T + ) const; + + //Used for internal Energy + inline scalar integral_p_dv(const scalar rho, const scalar T) const; + + // Used for Entropy + inline scalar integral_dpdT_dv(const scalar rho, const scalar T) const; + + // second order derivatives, not Used At The Moment + inline scalar d2pdv2(const scalar rho, const scalar T) const; + + inline scalar d2pdT2(const scalar rho, const scalar T) const; + + inline scalar d2pdvdT(const scalar rho, const scalar T) const; + + inline scalar d2vdT2(const scalar rho, const scalar T) const; + + //- Return density [kg/m^3] + // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + inline scalar rho(const scalar p, const scalar T) const; + + //- Return compressibility drho/dp at T=constant [s^2/m^2] + inline scalar psi(const scalar rho, const scalar T) const; + + //- Return compression factor [] + inline scalar Z + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + + // Friend operators + + inline friend mixturePengRobinson operator+ + ( + const mixturePengRobinson&, + const mixturePengRobinson& + ); + + inline friend mixturePengRobinson operator* + ( + const scalar s, + const mixturePengRobinson& + ); + + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const mixturePengRobinson&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "mixturePengRobinsonI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinsonI.H new file mode 100755 index 000000000..2c2f32194 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinsonI.H @@ -0,0 +1,407 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "mixturePengRobinson.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +// CL: needed for operator* +inline mixturePengRobinson::mixturePengRobinson +( + const pengRobinson& pr, + label numOfComp, + std::vector weigths, + std::vector mixtureComponents, + scalar a0, + scalar b, + scalar Tcrit, + scalar n, + scalar rhostd +) +: + pengRobinson(pr), + numOfComp(numOfComp), + weigths(weigths), + mixtureComponents(mixtureComponents), + singleComponent(1) +{ + a0_=a0; + b_=b; + Tcrit_=Tcrit; + n_=n; + rhostd_=rhostd; +} + +// Construct from components +// CL: needed for operator+ +inline mixturePengRobinson::mixturePengRobinson +( + const pengRobinson& pr, + label numOfComp, + std::vector weigths, + std::vector mixtureComponents +) +: + pengRobinson(pr), + numOfComp(numOfComp), + weigths(weigths), + mixtureComponents(mixtureComponents), + singleComponent(0) + +{ + TSave=0.0; + aComponents.resize(numOfComp); + daComponents.resize(numOfComp); + d2aComponents.resize(numOfComp); + rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); +} + + +// Construct as named copy +inline mixturePengRobinson::mixturePengRobinson(const word& name, const mixturePengRobinson& pr) +: + pengRobinson(name, pr) +{} + + +// Construct and return a clone +inline autoPtr mixturePengRobinson::clone() const +{ + return autoPtr(new mixturePengRobinson(*this)); +} + + +// Selector from Istream +inline autoPtr mixturePengRobinson::New(Istream& is) +{ + return autoPtr(new mixturePengRobinson(is)); +} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +//CL: updates the coefficents of the model after the construction of the mixture +//CL: uses the van der waals mixing rule +inline void mixturePengRobinson::updateModelCoefficients(const scalar T) const +{ + // CL: to make sure that the coefficents are only updated if the mixture has more than 1 component + if (singleComponent==0) + { + // Checking if the mixture coefficient were already calculated for this temperature + if(TSave!=T) + { + label i,j; + + aSave=0; + daSave=0; + d2aSave=0; + b_=0; + + //CL: filling vector a, dadT and d2adT2 + for (i=0;ia(T); + daComponents.at(i)=mixtureComponents[i]->dadT(T); + d2aComponents.at(i)=mixtureComponents[i]->d2adT2(T); + } + + for (i=0;iW()*this->W(); + + // first and second order temperature derivative of the van der waals mixing rule for a(T) + if(i==j) + { + daSave=daSave+weigths[i]*weigths[i]*daComponents[i]*this->W()*this->W(); + d2aSave=d2aSave+weigths[i]*weigths[i]*d2aComponents[i]*this->W()*this->W(); + } + else + { + daSave=daSave+0.5*weigths[i]*weigths[j]*this->W()*this->W() + *(pow(aComponents[i]/aComponents[j],0.5)*daComponents[j]+pow(aComponents[j]/aComponents[i],0.5)*daComponents[i]); + + d2aSave=d2aSave+0.5*weigths[i]*weigths[j]*this->W()*this->W()* + ( + pow(aComponents[i]/aComponents[j],0.5)*d2aComponents[i]+pow(aComponents[j]/aComponents[i],0.5)*d2aComponents[j] + +0.5*pow(aComponents[i]*aComponents[j],-0.5)*(pow(daComponents[i],2)+pow(daComponents[j],2)) + -0.5*daComponents[i]*daComponents[j]*(pow(aComponents[i]/aComponents[j],0.5)/aComponents[j] + +pow(aComponents[j]/aComponents[i],0.5)/aComponents[i]) + ); + } + } + + //CL: getting b for the mixture + //CL: using van der waals mixing rule + b_=b_+weigths[i]*mixtureComponents[i]->b()*this->W(); + + //CL: saving the temperature at which the mixture coefficients are valid + TSave=T; + } + } + } +} + + +//returns the pressure for a given density and temperature +inline scalar mixturePengRobinson::p(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return pengRobinson::p(rho,T); +} + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar mixturePengRobinson::dpdv(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return pengRobinson::dpdv(rho,T); +} + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar mixturePengRobinson::dpdT(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return pengRobinson::dpdT(rho,T); +} + + +//Real deviative dv/dT at constant pressure +//(molar values) +inline scalar mixturePengRobinson::dvdT(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return pengRobinson::dvdT(rho,T); +} + + +//Real deviative dv/dp at constant temperature +//(molar values) +inline scalar mixturePengRobinson::dvdp(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return pengRobinson::dvdp(rho,T); +} + + +//needed to calculate the internal energy +//(molar values) +inline scalar mixturePengRobinson::integral_p_dv +( + const scalar rho, + const scalar T +) const +{ + updateModelCoefficients(T); + return pengRobinson::integral_p_dv(rho,T); +} + + +//needed to calculate the entropy +//(molar values) +inline scalar mixturePengRobinson::integral_dpdT_dv +( + const scalar rho, + const scalar T +) const +{ + updateModelCoefficients(T); + return pengRobinson::integral_dpdT_dv(rho,T); +} + + +//(molar values) +inline scalar mixturePengRobinson::d2pdT2(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return pengRobinson::d2pdT2(rho,T); +} + + +//(molar values) +inline scalar mixturePengRobinson::d2pdv2(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return pengRobinson::d2pdv2(rho,T); +} + + +//(molar values) +inline scalar mixturePengRobinson::d2vdT2(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return pengRobinson::d2vdT2(rho,T); +} + + +//(molar values) +inline scalar mixturePengRobinson::d2pdvdT(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return pengRobinson::d2pdvdT(rho,T); +} + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar mixturePengRobinson::integral_d2pdT2_dv +( + const scalar rho, + const scalar T +) const +{ + updateModelCoefficients(T); + return pengRobinson::integral_d2pdT2_dv(rho,T); +} + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar mixturePengRobinson::isobarExpCoef +( + const scalar rho, + const scalar T +) const +{ + updateModelCoefficients(T); + return pengRobinson::isobarExpCoef(rho,T); +} + + +//isothemal compressiblity kappa (not Thermal conductivity) +//(molar values) +inline scalar mixturePengRobinson::isothermalCompressiblity +( + const scalar rho, + const scalar T +) const +{ + updateModelCoefficients(T); + return pengRobinson::isothermalCompressiblity(rho,T); +} + + +//- Return density [kg/m^3]on +inline scalar mixturePengRobinson::rho +( + const scalar p, + const scalar T, + const scalar rho0 +) const +{ + updateModelCoefficients(T); + + return pengRobinson::rho(p,T,rho0); +} + + +//- Return density [kg/m^3]on +inline scalar mixturePengRobinson::rho(const scalar p, const scalar T) const +{ + updateModelCoefficients(T); + return pengRobinson::rho(p,T); +} + + +//- Return compressibility drho/dp at T=constant [s^2/m^2] +inline scalar mixturePengRobinson::psi(const scalar rho, const scalar T) const +{ + this->updateModelCoefficients(T); + return pengRobinson::psi(rho,T); +} + + +//- Return compression factor [] +inline scalar mixturePengRobinson::Z +( + const scalar p, + const scalar T, + const scalar rho0 +) const +{ + updateModelCoefficients(T); + return pengRobinson::Z(p,T,rho0); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +inline mixturePengRobinson operator+ +( + const mixturePengRobinson& pr1, + const mixturePengRobinson& pr2 +) +{ + //CL:save both a pointer to the objector pr1 and pr2 and the weights in the new object + std::vector weigths=pr1.weigths; + std::vector mixtureComponents=pr1.mixtureComponents; + + //CL: Getting the new weigths and mixtureComponents lists, + //CL: Saving the object pointer and weigths of pr2 (which is @ mixtureComponents[0] and weigths[0]) at the numOfComp's value of the new object + weigths.push_back(pr2.weigths[0]); + mixtureComponents.push_back(pr2.mixtureComponents[0]); + + return mixturePengRobinson(static_cast(pr1)+static_cast(pr2), + pr1.numOfComp+1, weigths, mixtureComponents); +} + + +inline mixturePengRobinson operator* +( + const scalar s, + const mixturePengRobinson& pr +) +{ + //CL: saving the "concentraction" of the component of the mixture in the vector weights + std::vector weigths=pr.weigths; + weigths.push_back(s*pr.nMoles()); + + return mixturePengRobinson(s*static_cast(pr), pr.numOfComp, weigths, + pr.mixtureComponents,pr.a0_,pr.b_,pr.Tcrit_,pr.n_,pr.rhostd_); +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.C new file mode 100755 index 000000000..96dd18f28 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.C @@ -0,0 +1,72 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + Redlich Kwong equation of state for mixtures. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "mixtureRedlichKwong.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +mixtureRedlichKwong::mixtureRedlichKwong(Istream& is) +: + redlichKwong(is), + numOfComp(1) +{ + //Save a pointer of this object in the mixtureComponents array + mixtureComponents.push_back(this); + is.check("mixtureRedlichKwong::mixtureRedlichKwong(Istream& is)"); +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Ostream& operator<<(Ostream& os, const mixtureRedlichKwong& rk) +{ + os << static_cast(rk)<< tab; + + os.check("Ostream& operator<<(Ostream& os, const mixtureRedlichKwong& st)"); + return os; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.H new file mode 100755 index 000000000..5c20d83c4 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.H @@ -0,0 +1,167 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::mixtureRedlichKwong + +Description + Redlich Kwong equation of state for multiple component mixtures using the van der Waals mixing rule + + Mixing Rule --> see Paper + + Title: Van der eaals mixting rules for cublic equations of state. Applications for supercritical fluids extraction modelling + Authors: T.Y. Kwak and G.A. Mansoori + Journal: Chemical Engineering Science, Vol 41, No. 5, pp. 1303-1309, 1986 + +SourceFiles + mixtureRedlichKwongI.H + mixtureRedlichKwong.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef mixtureRedlichKwong_H +#define mixtureRedlichKwong_H + +#include "specie.H" +#include "autoPtr.H" +#include "redlichKwong.H" +#include "scalarList.H" +#include +#include "label.H" +#include "List.H" +#include "dictionary.H" +#include "scalar.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class mixtureRedlichKwong Declaration +\*---------------------------------------------------------------------------*/ + +class mixtureRedlichKwong +: + public redlichKwong +{ + // Private data + + // Private functions + + //CL: function updates the model coefficients (a,b) of the mixture + inline void updateModelCoefficients() const; + +protected: + + //CL: save the concentrations of each component of the mixture + //CL: needs to be multiplied by this->W() to get the molar fractions + mutable std::vector weigths; + + //CL: saves a pointer to the pure component classes of the mixture + mutable std::vector mixtureComponents; + + //CL: counts the number of components + mutable label numOfComp; + +public: + + // Constructors + + //- Construct from components + //CL: needed for operator* + inline mixtureRedlichKwong + ( + const redlichKwong& rK, + label numOfComp, + std::vector weigths, + std::vector mixtureComponents, + scalar a, + scalar b, + scalar rhostd + ); + + //- Construct from components + //CL: needed for operator+ + inline mixtureRedlichKwong + ( + const redlichKwong& rK, + label numOfComp, + std::vector weigths, + std::vector mixtureComponents + ); + + //- Construct from Istream + mixtureRedlichKwong(Istream&); + + //- Construct as named copy + inline mixtureRedlichKwong(const word& name, const mixtureRedlichKwong&); + + //- Construct and return a clone + inline autoPtr clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + + // Friend operators + + inline friend mixtureRedlichKwong operator+ + ( + const mixtureRedlichKwong&, + const mixtureRedlichKwong& + ); + + inline friend mixtureRedlichKwong operator* + ( + const scalar s, + const mixtureRedlichKwong& + ); + + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const mixtureRedlichKwong&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "mixtureRedlichKwongI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwongI.H new file mode 100755 index 000000000..028a4dbab --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwongI.H @@ -0,0 +1,175 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "mixtureRedlichKwong.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +// CL: needed for operator* +inline mixtureRedlichKwong::mixtureRedlichKwong +( + const redlichKwong& rK, + label numOfComp, + std::vector weigths, + std::vector mixtureComponents, + scalar a, + scalar b, + scalar rhostd +) +: + redlichKwong(rK), + numOfComp(numOfComp), + weigths(weigths), + mixtureComponents(mixtureComponents) +{ + a_=a; + b_=b; + rhostd_=rhostd; +} + +// Construct from components +// CL: needed for operator+ +inline mixtureRedlichKwong::mixtureRedlichKwong +( + const redlichKwong& rK, + label numOfComp, + std::vector weigths, + std::vector mixtureComponents +) +: + redlichKwong(rK), + numOfComp(numOfComp), + weigths(weigths), + mixtureComponents(mixtureComponents) +{ + //CL: update model coefficients + updateModelCoefficients(); + rhostd_=this->rho(Pstd, Tstd, Pstd/(Tstd*this->R())); +} + + +// Construct as named copy +inline mixtureRedlichKwong::mixtureRedlichKwong(const word& name, const mixtureRedlichKwong& rK) +: + redlichKwong(name, rK) +{} + + +// Construct and return a clone +inline autoPtr mixtureRedlichKwong::clone() const +{ + return autoPtr(new mixtureRedlichKwong(*this)); +} + + +// Selector from Istream +inline autoPtr mixtureRedlichKwong::New(Istream& is) +{ + return autoPtr(new mixtureRedlichKwong(is)); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +//CL: updates the coefficents of the model after the final construction of the mixture +//CL: uses the van der waals mixing rule +inline void mixtureRedlichKwong::updateModelCoefficients() const +{ + label i,j; + + a_=0; + b_=0; + + for (i=0;ia()*mixtureComponents[j]->a(),0.5)*this->W()*this->W(); + } + + //CL: getting b for the mixture + //CL: using van der waals mixing rule + b_=b_+weigths[i]*mixtureComponents[i]->b()*this->W(); + } +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + + +inline mixtureRedlichKwong operator+ +( + const mixtureRedlichKwong& rK1, + const mixtureRedlichKwong& rK2 +) +{ + //CL:save both a pointer to the objector rK1 and rK2 and the weights in the new object + std::vector weigths=rK1.weigths; + std::vector mixtureComponents=rK1.mixtureComponents; + + //CL: Getting the new weigths and mixtureComponents lists, + //CL: Saving the object pointer and weigths of rK2 (which is @ mixtureComponents[0] and weigths[0]) at the numOfComp's value of the new object + weigths.push_back(rK2.weigths[0]); + mixtureComponents.push_back(rK2.mixtureComponents[0]); + + return mixtureRedlichKwong(static_cast(rK1)+static_cast(rK2), + rK1.numOfComp+1, weigths, mixtureComponents); +} + + +inline mixtureRedlichKwong operator* +( + const scalar s, + const mixtureRedlichKwong& rK +) +{ + //CL: saving the "concentraction" of the component of the mixture in the vector weights + std::vector weigths=rK.weigths; + weigths.push_back(s*rK.nMoles()); + + return mixtureRedlichKwong(s*static_cast(rK), rK.numOfComp, weigths, rK.mixtureComponents,rK.a_,rK.b_,rK.rhostd_); +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C new file mode 100755 index 000000000..4ffcf40de --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C @@ -0,0 +1,73 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + Soave Redlich Kwong equation of state for mixtures. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "mixtureSoaveRedlichKwong.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(Istream& is) +: + soaveRedlichKwong(is), + numOfComp(1), + singleComponent(1) +{ + //CL: Save a pointer of this object in the mixtureComponents array + mixtureComponents.push_back(this); + is.check("mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(Istream& is)"); +} + + +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Ostream& operator<<(Ostream& os, const mixtureSoaveRedlichKwong& srk) +{ + os << static_cast(srk)<< tab; + + os.check("Ostream& operator<<(Ostream& os, const mixtureSoaveRedlichKwong& st)"); + return os; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H new file mode 100755 index 000000000..a3dea1487 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H @@ -0,0 +1,246 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::mixtureSoaveRedlichKwong + +Description + Soave Redlich Kwong equation of state for multiple component mixtures using the van der Waals mixing rule + + Mixing Rule --> see Paper + + Title: Van der eaals mixting rules for cublic equations of state. Applications for supercritical fluids extraction modelling + Authors: T.Y. Kwak and G.A. Mansoori + Journal: Chemical Engineering Science, Vol 41, No. 5, pp. 1303-1309, 1986 + +SourceFiles + mixtureSoaveRedlichKwongI.H + mixtureSoaveRedlichKwong.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef mixtureSoaveRedlichKwong_H +#define mixtureSoaveRedlichKwong_H + +#include "specie.H" +#include "autoPtr.H" +#include "soaveRedlichKwong.H" +#include "scalarList.H" +#include +#include "label.H" +#include "List.H" +#include "dictionary.H" +#include "scalar.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class mixtureSoaveRedlichKwong Declaration +\*---------------------------------------------------------------------------*/ + +class mixtureSoaveRedlichKwong +: + public soaveRedlichKwong +{ + +protected: + + //CL: bool used to make sure the model behaves like a single component model when needed + //CL: this is needed during the construction of the mixture + mutable bool singleComponent; + + //CL: save the concentrations of each component of the mixture + //CL: needs to be multiplied by this->W() to get the molar fractions + mutable std::vector weigths; + + //CL: stores the values of a(T) of all componentes + mutable std::vector aComponents; + + //CL: stores the values of the derivatives of da/dT of all componentes + mutable std::vector daComponents; + + //CL: stores the values of the second order derivatives of d2a/dT2 of all componentes + mutable std::vector d2aComponents; + + //CL: saves a pointer to the pure component classes of the mixture + mutable std::vector mixtureComponents; + + //CL: counts the number of components + mutable label numOfComp; + + //Protected functions + + //CL: function updates the coefficients (aSave, daSave, d2aSave, b) of the mixture + inline void updateModelCoefficients(const scalar T) const; + +public: + + // Constructors + + //- Construct from components + //CL: needed for operator* + inline mixtureSoaveRedlichKwong + ( + const soaveRedlichKwong& srk, + label numOfComp, + std::vector weigths, + std::vector mixtureComponents, + scalar a0, + scalar b, + scalar Tcrit, + scalar n, + scalar rhostd + ); + + //- Construct from components + //CL: needed for operator+ + inline mixtureSoaveRedlichKwong + ( + const soaveRedlichKwong& srk, + label numOfComp, + std::vector weigths, + std::vector mixtureComponents + ); + + //- Construct from Istream + mixtureSoaveRedlichKwong(Istream&); + + //- Construct as named copy + inline mixtureSoaveRedlichKwong(const word& name, const mixtureSoaveRedlichKwong&); + + //- Construct and return a clone + inline autoPtr clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + // Member functions + + inline scalar p(const scalar rho, const scalar T) const; + + //first order derivatives + inline scalar dpdv(const scalar rho, const scalar T) const; + + inline scalar dpdT(const scalar rho, const scalar T) const; + + inline scalar dvdT(const scalar rho, const scalar T) const; + + inline scalar dvdp(const scalar rho, const scalar T) const; + + inline scalar isobarExpCoef(const scalar rho, const scalar T) const; + + inline scalar isothermalCompressiblity + ( + const scalar rho, + const scalar T + ) const; + + // Used for cv + inline scalar integral_d2pdT2_dv + ( + const scalar rho, + const scalar T + ) const; + + //Used for internal Energy + inline scalar integral_p_dv(const scalar rho, const scalar T) const; + + // Used for Entropy + inline scalar integral_dpdT_dv(const scalar rho, const scalar T) const; + + // second order derivatives, not Used At The Moment + inline scalar d2pdv2(const scalar rho, const scalar T) const; + + inline scalar d2pdT2(const scalar rho, const scalar T) const; + + inline scalar d2pdvdT(const scalar rho, const scalar T) const; + + inline scalar d2vdT2(const scalar rho, const scalar T) const; + + //- Return density [kg/m^3] + // rho0 is the starting point of the newton solver used to calculate rho + inline scalar rho + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + inline scalar rho(const scalar p, const scalar T) const; + + //- Return compressibility drho/dp at T=constant [s^2/m^2] + inline scalar psi(const scalar rho, const scalar T) const; + + //- Return compression factor [] + inline scalar Z + ( + const scalar p, + const scalar T, + const scalar rho0 + ) const; + + + // Friend operators + + inline friend mixtureSoaveRedlichKwong operator+ + ( + const mixtureSoaveRedlichKwong&, + const mixtureSoaveRedlichKwong& + ); + + inline friend mixtureSoaveRedlichKwong operator* + ( + const scalar s, + const mixtureSoaveRedlichKwong& + ); + + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const mixtureSoaveRedlichKwong&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "mixtureSoaveRedlichKwongI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H new file mode 100755 index 000000000..7d5892090 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H @@ -0,0 +1,411 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "mixtureSoaveRedlichKwong.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +// CL: needed for operator* +inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong +( + const soaveRedlichKwong& srk, + label numOfComp, + std::vector weigths, + std::vector mixtureComponents, + scalar a0, + scalar b, + scalar Tcrit, + scalar n, + scalar rhostd +) +: + soaveRedlichKwong(srk), + numOfComp(numOfComp), + weigths(weigths), + mixtureComponents(mixtureComponents), + singleComponent(1) +{ + a0_=a0; + b_=b; + Tcrit_=Tcrit; + n_=n; + rhostd_=rhostd; +} + + +// Construct from components +// CL: needed for operator+ +inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong +( + const soaveRedlichKwong& srk, + label numOfComp, + std::vector weigths, + std::vector mixtureComponents +) +: + soaveRedlichKwong(srk), + numOfComp(numOfComp), + weigths(weigths), + mixtureComponents(mixtureComponents), + singleComponent(0) + +{ + TSave=0.0; + aComponents.resize(numOfComp); + daComponents.resize(numOfComp); + d2aComponents.resize(numOfComp); + rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); +} + + +// Construct as named copy +inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(const word& name, const mixtureSoaveRedlichKwong& srk) +: + soaveRedlichKwong(name, srk) +{} + + +// Construct and return a clone +inline autoPtr mixtureSoaveRedlichKwong::clone() const +{ + return autoPtr(new mixtureSoaveRedlichKwong(*this)); +} + + +// Selector from Istream +inline autoPtr mixtureSoaveRedlichKwong::New(Istream& is) +{ + return autoPtr(new mixtureSoaveRedlichKwong(is)); +} + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + + +//CL: updates the coefficents of the model after the final construction of the mixture +//CL: uses the van der waals mixing rule +inline void mixtureSoaveRedlichKwong::updateModelCoefficients(const scalar T) const +{ + // CL: to make sure that the coefficents are only updated if the mixture has more than 1 component + if (singleComponent==0) + { + // Checking if the mixture coefficient were already calculated for this temperature + if(TSave!=T) + { + label i,j; + + aSave=0; + daSave=0; + d2aSave=0; + b_=0; + + //CL: filling vector a, dadT and d2adT2 + for (i=0;ia(T); + daComponents.at(i)=mixtureComponents[i]->dadT(T); + d2aComponents.at(i)=mixtureComponents[i]->d2adT2(T); + } + + for (i=0;iW()*this->W(); + + // first and second order temperature derivative of the van der waals mixing rule for a(T) + if(i==j) + { + daSave=daSave+weigths[i]*weigths[i]*daComponents[i]*this->W()*this->W(); + d2aSave=d2aSave+weigths[i]*weigths[i]*d2aComponents[i]*this->W()*this->W(); + } + else + { + daSave=daSave+0.5*weigths[i]*weigths[j]*this->W()*this->W() + *(pow(aComponents[i]/aComponents[j],0.5)*daComponents[j]+pow(aComponents[j]/aComponents[i],0.5)*daComponents[i]); + + d2aSave=d2aSave+0.5*weigths[i]*weigths[j]*this->W()*this->W()* + ( + pow(aComponents[i]/aComponents[j],0.5)*d2aComponents[i]+pow(aComponents[j]/aComponents[i],0.5)*d2aComponents[j] + +0.5*pow(aComponents[i]*aComponents[j],-0.5)*(pow(daComponents[i],2)+pow(daComponents[j],2)) + -0.5*daComponents[i]*daComponents[j]*(pow(aComponents[i]/aComponents[j],0.5)/aComponents[j] + +pow(aComponents[j]/aComponents[i],0.5)/aComponents[i]) + ); + } + } + + //CL: getting b for the mixture + //CL: using van der waals mixing rule + b_=b_+weigths[i]*mixtureComponents[i]->b()*this->W(); + + //CL: saving the temperature at which the mixture coefficients are valid + TSave=T; + } + } + } +} + + +//returns the pressure for a given density and temperature +inline scalar mixtureSoaveRedlichKwong::p(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::p(rho,T); +} + + +//Real deviative dp/dv at constant temperature +//(molar values) +inline scalar mixtureSoaveRedlichKwong::dpdv(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::dpdv(rho,T); +} + + +//Real deviative dp/dT at constant molar volume +//(molar values) +inline scalar mixtureSoaveRedlichKwong::dpdT(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::dpdT(rho,T); +} + + +//Real deviative dv/dT at constant pressure +//(molar values) +inline scalar mixtureSoaveRedlichKwong::dvdT(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::dvdT(rho,T); +} + + +//Real deviative dv/dp at constant temperature +//(molar values) +inline scalar mixtureSoaveRedlichKwong::dvdp(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::dvdp(rho,T); +} + + +//needed to calculate the internal energy +//(molar values) +inline scalar mixtureSoaveRedlichKwong::integral_p_dv +( + const scalar rho, + const scalar T +) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::integral_p_dv(rho,T); +} + + +//needed to calculate the entropy +//(molar values) +inline scalar mixtureSoaveRedlichKwong::integral_dpdT_dv +( + const scalar rho, + const scalar T +) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::integral_dpdT_dv(rho,T); +} + + +//(molar values) +inline scalar mixtureSoaveRedlichKwong::d2pdT2(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::d2pdT2(rho,T); +} + + +//(molar values) +inline scalar mixtureSoaveRedlichKwong::d2pdv2(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::d2pdv2(rho,T); +} + + +//(molar values) +inline scalar mixtureSoaveRedlichKwong::d2vdT2(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::d2vdT2(rho,T); +} + + +//(molar values) +inline scalar mixtureSoaveRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::d2pdvdT(rho,T); +} + + +// the result of this intergal is needed for the nasa based cp polynomial +//(molar values) +inline scalar mixtureSoaveRedlichKwong::integral_d2pdT2_dv +( + const scalar rho, + const scalar T +) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::integral_d2pdT2_dv(rho,T); +} + + +//Isobar expansion Coefficent beta = 1/v (dv/dt) at constant p +//(molar values) +inline scalar mixtureSoaveRedlichKwong::isobarExpCoef +( + const scalar rho, + const scalar T +) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::isobarExpCoef(rho,T); +} + + +//isothemal compressiblity kappa (not Thermal conductivity) +//(molar values) +inline scalar mixtureSoaveRedlichKwong::isothermalCompressiblity +( + const scalar rho, + const scalar T +) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::isothermalCompressiblity(rho,T); +} + + +//- Return density [kg/m^3]on +inline scalar mixtureSoaveRedlichKwong::rho +( + const scalar p, + const scalar T, + const scalar rho0 +) const +{ + updateModelCoefficients(T); + + return soaveRedlichKwong::rho(p,T,rho0); +} + + +//- Return density [kg/m^3]on +inline scalar mixtureSoaveRedlichKwong::rho(const scalar p, const scalar T) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::rho(p,T); +} + + +//- Return compressibility drho/dp at T=constant [s^2/m^2] +inline scalar mixtureSoaveRedlichKwong::psi(const scalar rho, const scalar T) const +{ + this->updateModelCoefficients(T); + return soaveRedlichKwong::psi(rho,T); +} + + +//- Return compression factor [] +inline scalar mixtureSoaveRedlichKwong::Z +( + const scalar p, + const scalar T, + const scalar rho0 +) const +{ + updateModelCoefficients(T); + return soaveRedlichKwong::Z(p,T,rho0); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + + +inline mixtureSoaveRedlichKwong operator+ +( + const mixtureSoaveRedlichKwong& srk1, + const mixtureSoaveRedlichKwong& srk2 +) +{ + //CL:save both a pointer to the objector srk1 and srk2 and the weights in the new object + std::vector weigths=srk1.weigths; + std::vector mixtureComponents=srk1.mixtureComponents; + + //CL: Getting the new weigths and mixtureComponents lists, + //CL: Saving the object pointer and weigths of srk2 (which is @ mixtureComponents[0] and weigths[0]) at the numOfComp's value of the new object + weigths.push_back(srk2.weigths[0]); + mixtureComponents.push_back(srk2.mixtureComponents[0]); + + return mixtureSoaveRedlichKwong(static_cast(srk1)+static_cast(srk2), + srk1.numOfComp+1, weigths, mixtureComponents); +} + + +inline mixtureSoaveRedlichKwong operator* +( + const scalar s, + const mixtureSoaveRedlichKwong& srk +) +{ + //CL: saving the "concentraction" of the component of the mixture in the vector weights + std::vector weigths=srk.weigths; + weigths.push_back(s*srk.nMoles()); + + return mixtureSoaveRedlichKwong(s*static_cast(srk), srk.numOfComp, weigths, + srk.mixtureComponents,srk.a0_,srk.b_,srk.Tcrit_,srk.n_,srk.rhostd_); +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // From d0a3f801841262e8ab302a050f6b93c50be659b5 Mon Sep 17 00:00:00 2001 From: Christian Lucas Date: Tue, 29 May 2012 09:22:35 +0200 Subject: [PATCH 11/18] internal energy for real gas --- .../psiThermo/realGasEThermo/realGasEThermo.C | 506 ++++++++++++++++++ .../psiThermo/realGasEThermo/realGasEThermo.H | 205 +++++++ .../realGasEThermo/realGasEThermos.C | 143 +++++ 3 files changed, 854 insertions(+) create mode 100755 src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C create mode 100755 src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H create mode 100755 src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermos.C diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C new file mode 100755 index 000000000..72fc7f5d7 --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C @@ -0,0 +1,506 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "realGasEThermo.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template +void Foam::realGasEThermo::calculate() +{ + const scalarField& eCells = e_.internalField(); + const scalarField& pCells = this->p_.internalField(); + + scalarField& TCells = this->T_.internalField(); + scalarField& rhoCells= this->rho_.internalField(); + scalarField& psiCells = this->psi_.internalField(); + scalarField& drhodeCells = this->drhode_.internalField(); + scalarField& muCells = this->mu_.internalField(); + scalarField& alphaCells = this->alpha_.internalField(); + + + forAll(TCells, celli) + { + const typename MixtureType::thermoType& mixture_ = + this->cellMixture(celli); + + mixture_.TE(eCells[celli], TCells[celli], pCells[celli], rhoCells[celli]); + psiCells[celli]=mixture_.psiE(rhoCells[celli], TCells[celli]); + drhodeCells[celli]=mixture_.drhodE(rhoCells[celli], TCells[celli]); + muCells[celli] = mixture_.mu(TCells[celli]); + alphaCells[celli] = mixture_.alpha(rhoCells[celli], TCells[celli]); + } + + + forAll(T_.boundaryField(), patchi) + { + fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; + fvPatchScalarField& ppsi = this->psi_.boundaryField()[patchi]; + fvPatchScalarField& pdrhode = this->drhode_.boundaryField()[patchi]; + fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; + fvPatchScalarField& pe = e_.boundaryField()[patchi]; + fvPatchScalarField& pmu = this->mu_.boundaryField()[patchi]; + fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi]; + + + if (pT.fixesValue()) + { + + forAll(pT, facei) + { + const typename MixtureType::thermoType& mixture_ = + this->patchFaceMixture(patchi, facei); + + prho[facei] = mixture_.rho(pp[facei], pT[facei],prho[facei]); + ppsi[facei]=mixture_.psiE(prho[facei],pT[facei]); + pdrhode[facei]=mixture_.drhodE(prho[facei],pT[facei]); + pe[facei] = mixture_.E(prho[facei], pT[facei]); + pmu[facei] = mixture_.mu(pT[facei]); + palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); + } + } + else + { + forAll(pT, facei) + { + const typename MixtureType::thermoType& mixture_ = + this->patchFaceMixture(patchi, facei); + mixture_.TE(pe[facei], pT[facei],pp[facei],prho[facei]); + pmu[facei] = mixture_.mu(pT[facei]); + ppsi[facei]=mixture_.psiE(prho[facei],pT[facei]); + pdrhode[facei]=mixture_.drhodE(prho[facei],pT[facei]); + palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); + } + } + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::realGasEThermo::realGasEThermo(const fvMesh& mesh) +: + basicPsiThermo(mesh), + MixtureType(*this, mesh), + + e_ + ( + IOobject + ( + "e", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, 0, 0), + this->eBoundaryTypes() + ), + + rho_ + ( + IOobject + ( + "rhoThermo", + mesh.time().timeName(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::NO_WRITE + ), + mesh, + dimDensity + ), + + drhode_ + ( + IOobject + ( + "drhode", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(1, -5, 2, 0, 0) + ) +{ + + scalarField& eCells = e_.internalField(); + const scalarField& TCells = this->T_.internalField(); + const scalarField& pCells =this->p_.internalField(); + scalarField& rhoCells =this->rho_.internalField(); + + + forAll(rhoCells, celli) + { + rhoCells[celli]=this->cellMixture(celli).rho(pCells[celli],TCells[celli]); + } + + + forAll(rho_.boundaryField(), patchi) + { + rho_.boundaryField()[patchi] == + rho(this->T_.boundaryField()[patchi], patchi); + } + + + forAll(eCells, celli) + { + eCells[celli] = this->cellMixture(celli).E(rhoCells[celli],TCells[celli]); + } + + + forAll(e_.boundaryField(), patchi) + { + e_.boundaryField()[patchi] == + e(this->T_.boundaryField()[patchi], patchi); + } + + eBoundaryCorrection(e_); + calculate(); + + // Switch on saving old time + this->psi_.oldTime(); + +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template +Foam::realGasEThermo::~realGasEThermo() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template +void Foam::realGasEThermo::correct() +{ + if (debug) + { + Info<< "entering realGasEThermo::correct()" << endl; + } + + // force the saving of the old-time values + this->psi_.oldTime(); + + calculate(); + + if (debug) + { + Info<< "exiting realGasEThermo::correct()" << endl; + } +} + +template +Foam::tmp Foam::realGasEThermo::e +( + const scalarField& T, + const labelList& cells +) const +{ + //CL: need the pressure of the internal field to calculate the realGas internal energy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const scalarField& pCells = this->p_.internalField(); + + tmp te(new scalarField(T.size())); + scalarField& e = te(); + + forAll(T, celli) + { + e[celli] = this->cellMixture(cells[celli]).E(this->cellMixture(cells[celli]).rho(pCells[cells[celli]],T[celli]),T[celli]); + } + + return te; +} + +template +Foam::tmp Foam::realGasEThermo::e +( + const scalarField& T, + const label patchi +) const +{ + //CL: need the pressure at the patch to calculate the realGas internal energy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp te(new scalarField(T.size())); + scalarField& e = te(); + + forAll(T, facei) + { + e[facei] = this->patchFaceMixture(patchi, facei).E(this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]),T[facei]); + } + + return te; +} + +template +Foam::tmp Foam::realGasEThermo::rho +( + const scalarField& T, + const label patchi +) const +{ + //CL: need the pressure at the patch to calculate the realGas density + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp trho(new scalarField(T.size())); + scalarField& rho = trho(); + + forAll(T, facei) + { + rho[facei] = this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]); + } + + return trho; +} + +template +Foam::tmp Foam::realGasEThermo::Cp +( + const scalarField& T, + const label patchi +) const +{ + //CL: need the pressure at the patch to calculate the realGas cp + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp tCp(new scalarField(T.size())); + scalarField& cp = tCp(); + + forAll(T, facei) + { + cp[facei] = this->patchFaceMixture(patchi, facei).Cp(this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]),T[facei]); + } + + return tCp; +} + +template +Foam::tmp Foam::realGasEThermo::Cp() const +{ + const fvMesh& mesh = this->T_.mesh(); + + tmp tCp + ( + new volScalarField + ( + IOobject + ( + "Cp", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, -1, 0), + this->T_.boundaryField().types() + ) + ); + + volScalarField& cp = tCp(); + + forAll(this->T_, celli) + { + cp[celli] = this->cellMixture(celli).Cp(this->rho_[celli], this->T_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + const fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; + const fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; + fvPatchScalarField& pCp = cp.boundaryField()[patchi]; + + forAll(pT, facei) + { + pCp[facei] = this->patchFaceMixture(patchi, facei).Cp(prho[facei], pT[facei]); + } + } + + return tCp; +} + + +template +Foam::tmp Foam::realGasEThermo::Cv +( + const scalarField& T, + const label patchi +) const +{ + //CL: need the pressure at the patch to calculate the realGas internal energy + //CL: this is done this way to assure compatibility to old OF Thermo-Versions + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp tCv(new scalarField(T.size())); + scalarField& cv = tCv(); + + forAll(T, facei) + { + cv[facei] = this->patchFaceMixture(patchi, facei).Cv(this->patchFaceMixture(patchi, facei).rho(pp[facei], T[facei]), T[facei]); + } + + return tCv; +} + +// CL: Maybe this function should be changed so that it is not "const" function anymore +template +Foam::tmp Foam::realGasEThermo::rho() const +{ + + const fvMesh& mesh = this->T_.mesh(); + + //CL: create an rho Field, which will be return + //CL: the problem is that this function is "const", + //CL: so a new variabel is needed + tmp trho + ( + new volScalarField + ( + IOobject + ( + "rhoFunctionThermo", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimDensity + ) + ); + + //CL: copy "old" rho value onto the new rho field as start point + //CL: for the newton solver used in this->TE( ... ) + trho()=rho_; + + volScalarField& rho = trho(); + + const scalarField& eCells = e_.internalField(); + const scalarField& pCells = this->p_.internalField(); + scalarField TCells = this->T_.internalField(); + + forAll(pCells, celli) + { + const typename MixtureType::thermoType& mixture_ = + this->cellMixture(celli); + + // getting the new rho Field + mixture_.TE(eCells[celli], TCells[celli], pCells[celli], rho[celli]); + } + + forAll(p_.boundaryField(), patchi) + { + fvPatchScalarField pp = this->p_.boundaryField()[patchi]; + fvPatchScalarField pe = e_.boundaryField()[patchi]; + fvPatchScalarField pT = this->T_.boundaryField()[patchi]; + + fvPatchScalarField& prho_ = rho.boundaryField()[patchi]; + + forAll(pp, facei) + { + const typename MixtureType::thermoType& mixture_ = + this->patchFaceMixture(patchi, facei); + + // getting the new rho patch Field + mixture_.TE(pe[facei], pT[facei],pp[facei],prho_[facei]); + } + } + return trho; +} + +template +Foam::tmp Foam::realGasEThermo::Cv() const +{ + + const fvMesh& mesh = this->T_.mesh(); + + tmp tCv + ( + new volScalarField + ( + IOobject + ( + "Cv", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, -1, 0) + ) + ); + + volScalarField& cv = tCv(); + + forAll(this->T_, celli) + { + cv[celli] = this->cellMixture(celli).Cv(this->rho_[celli], this->T_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + cv.boundaryField()[patchi] = + Cv(this->T_.boundaryField()[patchi], patchi); + } + + return tCv; +} + + +template +bool Foam::realGasEThermo::read() +{ + if (basicPsiThermo::read()) + { + MixtureType::read(*this); + return true; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H new file mode 100755 index 000000000..444bf9780 --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H @@ -0,0 +1,205 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | . + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::realGasEThermo + +Description + Internal energy for a real gas fluid libary + + +SourceFiles + realGasEThermo.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#ifndef realGasEThermo_H +#define realGasEThermo_H + +#include "basicPsiThermo.H" +#include "basicMixture.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class realGasEThermo Declaration +\*---------------------------------------------------------------------------*/ + +template +class realGasEThermo +: + public basicPsiThermo, + public MixtureType +{ + // Private data + + //- Enthalpy field + volScalarField e_; + + //- DensityField + volScalarField rho_; + + //- drhode_Field + volScalarField drhode_; + + // Private member functions + + //- Calculate the thermo variables + void calculate(); + + //- Construct as copy (not implemented) + realGasEThermo(const realGasEThermo&); + + +public: + + //- Runtime type information + TypeName("realGasEThermo"); + + + // Constructors + + //- Construct from mesh + realGasEThermo(const fvMesh&); + + //- Destructor + virtual ~realGasEThermo(); + + + // Member functions + + //- Return the compostion of the mixture + virtual basicMixture& composition() + { + return *this; + } + + //- Return the compostion of the mixture + virtual const basicMixture& composition() const + { + return *this; + } + + //- Update properties + virtual void correct(); + + + // Access to thermodynamic state variables + + //- Enthalpy [J/kg] + // Non-const access allowed for transport equations + virtual volScalarField& e() + { + return e_; + } + + //- Enthalpy [J/kg] + virtual const volScalarField& e() const + { + return e_; + } + + //CL: drhode needed for pressure equation of the real gas solver + virtual const volScalarField& drhode() const + { + return drhode_; + } + + // Fields derived from thermodynamic state variables + + //- Enthalpy for cell-set [J/kg] + virtual tmp e + ( + const scalarField& T, + const labelList& cells + ) const; + + //- Enthalpy for patch [J/kg] + virtual tmp e + ( + const scalarField& T, + const label patchi + ) const; + + //- Density for patch [J/kg] + virtual tmp rho + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant pressure for patch [J/kg/K] + virtual tmp Cp + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant pressure [J/kg/K] + virtual tmp Cp() const; + + //- Heat capacity at constant volume for patch [J/kg/K] + virtual tmp Cv + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant volume [J/kg/K] + virtual tmp Cv() const; + + //- Density [kg/m^3] - uses current value of pressure + virtual tmp rho() const; + + + //- Read thermophysicalProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + +#ifdef NoRepository +# include "realGasEThermo.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermos.C b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermos.C new file mode 100755 index 000000000..96737ed1b --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermos.C @@ -0,0 +1,143 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + + +\*---------------------------------------------------------------------------*/ + + +#include "makeBasicPsiThermo.H" + + +#include "redlichKwong.H" +#include "pengRobinson.H" +#include "aungierRedlichKwong.H" +#include "soaveRedlichKwong.H" +#include "nasaHeatCapacityPolynomial.H" +#include "realGasSpecieThermo.H" +#include "constTransport.H" +#include "sutherlandTransport.H" + +#include "pureMixture.H" +#include "realGasEThermo.H" + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + sutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + sutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + sutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + sutherlandTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + constTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + pengRobinson +); + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + constTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + aungierRedlichKwong +); + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + constTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + redlichKwong +); + +makeBasicRealGasThermo +( + realGasEThermo, + pureMixture, + constTransport, + realGasSpecieThermo, + nasaHeatCapacityPolynomial, + soaveRedlichKwong +); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // From 4c3f6f105da129e8d3b94d0a58018d319fdf31e2 Mon Sep 17 00:00:00 2001 From: Christian Lucas Date: Wed, 5 Sep 2012 19:12:10 +0200 Subject: [PATCH 12/18] IAPWS Water Properties usinge freeSteam --- .../basicPsiThermo/makeBasicPsiThermo.H | 22 + .../IAPWSThermo/IAPWS-IF97.C | 589 ++ .../IAPWSThermo/IAPWS-IF97.H | 231 + .../IAPWSThermo/IAPWSThermo.C | 476 + .../IAPWSThermo/IAPWSThermo.H | 198 + .../IAPWSThermo/IAPWSThermos.C | 73 + .../IAPWS_Waterproperties/IAPWSThermo/steam.H | 58 + .../IAPWS_Waterproperties/Make/files | 5 + .../IAPWS_Waterproperties/Make/options | 8 + src/thermophysicalModels/externalMedia/README | 5 + .../rhoPisoFoam/ras/IAPWS97_Pipe/0/T | 51 + .../rhoPisoFoam/ras/IAPWS97_Pipe/0/U | 53 + .../rhoPisoFoam/ras/IAPWS97_Pipe/0/epsilon | 58 + .../rhoPisoFoam/ras/IAPWS97_Pipe/0/k | 51 + .../rhoPisoFoam/ras/IAPWS97_Pipe/0/p | 54 + .../rhoPisoFoam/ras/IAPWS97_Pipe/README | 61 + .../IAPWS97_Pipe/constant/.RASProperties.swp | Bin 0 -> 12288 bytes .../ras/IAPWS97_Pipe/constant/RASProperties | 25 + .../IAPWS97_Pipe/constant/polyMesh/boundary | 52 + .../IAPWS97_Pipe/constant/polyMesh/cellZones | 21 + .../IAPWS97_Pipe/constant/polyMesh/faceZones | 21 + .../ras/IAPWS97_Pipe/constant/polyMesh/faces | 7666 ++++++++++++++++ .../IAPWS97_Pipe/constant/polyMesh/neighbour | 3669 ++++++++ .../ras/IAPWS97_Pipe/constant/polyMesh/owner | 7667 +++++++++++++++++ .../IAPWS97_Pipe/constant/polyMesh/pointZones | 21 + .../ras/IAPWS97_Pipe/constant/polyMesh/points | 4024 +++++++++ .../constant/polyMesh/zoneToPatchName | 40 + .../constant/thermophysicalProperties | 26 + .../constant/turbulenceProperties | 21 + .../ras/IAPWS97_Pipe/system/controlDict | 61 + .../ras/IAPWS97_Pipe/system/fvSchemes | 76 + .../ras/IAPWS97_Pipe/system/fvSolution | 98 + 32 files changed, 25481 insertions(+) create mode 100644 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C create mode 100644 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.H create mode 100755 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C create mode 100755 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H create mode 100755 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermos.C create mode 100644 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/steam.H create mode 100644 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files create mode 100644 src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/options create mode 100644 src/thermophysicalModels/externalMedia/README create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/T create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/U create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/epsilon create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/k create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/p create mode 100644 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/README create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/.RASProperties.swp create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/RASProperties create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/boundary create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/cellZones create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faceZones create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faces create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/neighbour create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/owner create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/pointZones create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/points create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/zoneToPatchName create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/thermophysicalProperties create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/turbulenceProperties create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/controlDict create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSchemes create mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSolution diff --git a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H index cda848bae..bb0a1ecc2 100644 --- a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H @@ -82,6 +82,28 @@ addToRunTimeSelectionTable \ fvMesh \ ) +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#define makeBasicExternalLibraryBasedThermo(Cthermo) \ + \ +typedef Cthermo \ + Cthermo; \ + \ +defineTemplateTypeNameAndDebugWithName \ +( \ + Cthermo, \ + #Cthermo, \ + 0 \ +); \ + \ +addToRunTimeSelectionTable \ +( \ + basicPsiThermo, \ + Cthermo, \ + fvMesh \ +) // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C new file mode 100644 index 000000000..cc3b8480d --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C @@ -0,0 +1,589 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany +\*---------------------------------------------------------------------------*/ + + +#include "IAPWS-IF97.H" +#include +#include + + +//CL: calculated all (minimal) needed properties for a given pressure and enthalpy +void Foam::calculateProperties_ph +( + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha +) +{ + SteamState S; + + // CL: vapor mass fraction is also calculated in calculateProperties_h + // CL: in this fuction, x is a dummy variable and x is not return to IAPWSThermo.C + scalar x; + + S=freesteam_set_ph(p,h); + calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); +} + +//CL: calculated all (minimal) needed properties + the vapor mass fraction for a given pressure and enthalpy +void Foam::calculateProperties_ph +( + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x +) +{ + SteamState S; + + S=freesteam_set_ph(p,h); + calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); +} + +//CL: calculated all (minimal) needed properties for a given pressure and temperature +void Foam::calculateProperties_pT +( + scalar &p, + scalar &T, + scalar &h, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha +) +{ + SteamState S; + + // CL: vapor mass fraction is also calculated in calculateProperties_h + // CL: in this fuction, x is a dummy variable and x is not return to IAPWSThermo. + scalar x; + + S=freesteam_set_pT(p,T); + calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); +} + +//CL: calculated all (minimal) needed properties + the vapor mass fraction for a given pressure and temperature +void Foam::calculateProperties_pT +( + scalar &p, + scalar &T, + scalar &h, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x +) +{ + SteamState S; + + S=freesteam_set_pT(p,T); + calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); +} + + +//CL: calculated the properties --> this function is called by the functions above +//CL: does not calulated the internal energy, if this is needed e.g. for sonicFoam +//CL: the function has to be changed a little bit +void Foam::calculateProperties_h +( + SteamState S, + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x +) +{ + label region; + scalar kappa,lambda,cp,beta; + + region=freesteam_region(S); + + if (region==1) + { + p=S.R1.p; + T=S.R1.T; + rho=1/freesteam_region1_v_pT(S.R1.p,S.R1.T); + h=freesteam_region1_h_pT(S.R1.p,S.R1.T); + x=0; + + //Cl: note: in FreeStream, beta=1/V*(dV/dP)_P=const is called alphaV (in this region) + //Cl: note: in FreeStream, kappa=1/V*(dV/dP)_T=const is called kappaT (in this region) + kappa=freesteam_region1_kappaT_pT(S.R1.p,S.R1.T); + beta=freesteam_region1_alphav_pT(S.R1.p,S.R1.T); + cp=freesteam_region1_cp_pT(S.R1.p,S.R1.T); + + //CL: getting derivatives using Bridgmans table + //CL: psi=(drho/dp)_h=const + //CL: drhodh=(drho/dh)_p=const + psi=-((T*beta*beta-beta)/cp-kappa*rho); + drhodh=-rho*beta/cp; + + //CL: getting transport properties + mu=freesteam_mu_rhoT(rho, T); + lambda=freesteam_k_rhoT(rho,T); + alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density + } + else if (region==2) + { + p=S.R2.p; + T=S.R2.T; + rho=1/freesteam_region2_v_pT(S.R2.p,S.R2.T); + h=freesteam_region2_h_pT(S.R2.p,S.R2.T); + x=1; + + //Cl: note: in FreeStream, beta=1/V*(dV/dP)_P=const is called alphaV (in this region) + //Cl: note: in FreeStream, kappa=1/V*(dV/dP)_T=const is called kappaT (in this region) + kappa=freesteam_region2_kappaT_pT(S.R2.p,S.R2.T); + beta=freesteam_region2_alphav_pT(S.R2.p,S.R2.T); + cp=freesteam_region2_cp_pT(S.R2.p,S.R2.T); + + //CL: getting derivatives using Bridgmans table + //CL: psi=(drho/dp)_h=const + //CL: drhodh=(drho/dh)_p=const + psi=-((T*beta*beta-beta)/cp-kappa*rho); + drhodh=-rho*beta/cp; + + //CL: getting transport properties + mu=freesteam_mu_rhoT(rho, T); + lambda=freesteam_k_rhoT(rho,T); + alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density + } + else if (region==3) + { + scalar gamma,cv; + + rho=S.R3.rho; + T=S.R3.T; + p=freesteam_region3_p_rhoT(S.R3.rho,S.R3.T); + h=freesteam_region3_h_rhoT(S.R3.rho,S.R3.T); + + //CL= when hx=0 else x=1 + if (h<2084256.263) + { + x=0; + } + else + { + x=1; + } + + //Cl: note: beta=1/V*(dV/dP)_P=const + //Cl: note: kappa=1/V*(dV/dP)_T=const + //Cl: note: in FreeStream, gamma=1/p*(dp/dT)_v=const is called alphap (in this region) + gamma=freesteam_region3_alphap_rhoT(S.R3.rho,S.R3.T); + cp=freesteam_region3_cp_rhoT(S.R3.rho,S.R3.T); + cv=freesteam_region3_cv_rhoT(S.R3.rho,S.R3.T); + beta=(cp-cv)/(S.R3.T/S.R3.rho*p*gamma); + kappa=(cp-cv)/(S.R3.T/S.R3.rho*p*p*gamma*gamma); + + //CL: getting derivatives using Bridgmans table + //CL: psi=(drho/dp)_h=const + //CL: drhodh=(drho/dh)_p=const + psi=-((T*beta*beta-beta)/cp-kappa*rho); + drhodh=-rho*beta/cp; + + + //CL: getting transport properties + mu=freesteam_mu_rhoT(rho, T); + lambda=freesteam_k_rhoT(rho,T); + alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density + + } + else if (region==4) + { + scalar rhov,rhol,betav,betal,kappav,kappal,vv,vl,cpl,cpv,hl,hv,cp; + scalar dvldp,dvvdp,dhldp,dhvdp; + scalar dpdT,dvdh,dvdp,dxdp; + + SteamState Sl,Sv; + + x=S.R4.x; + T=S.R4.T; + rho=1/freesteam_region4_v_Tx(S.R4.T,S.R4.x); + h=freesteam_region4_h_Tx(S.R4.T,S.R4.x); + p=freesteam_region4_psat_T(S.R4.T); + cp=freesteam_region4_cp_Tx(S.R4.T,S.R4.x); + + + //CL: Getting density on the vapour and liquid lines + rhov=freesteam_region4_rhog_T(S.R4.T); + rhol=freesteam_region4_rhof_T(S.R4.T); + vv=1/rhov; + vl=1/rhol; + + //CL: getting derivatives --> this is a bit tricky inside the vapor dome + + dpdT=freesteam_region4_dpsatdT_T(S.R4.T); + + // getting the states outside the vapour dome + Sl=freesteam_set_pv(p,vl-0.0000001); //inside region 1 + Sv=freesteam_set_pv(p,vv+0.0000001); //inside region 2 + + kappal=freesteam_region1_kappaT_pT(Sl.R1.p,Sl.R1.T); + kappav=freesteam_region2_kappaT_pT(Sv.R2.p,Sv.R2.T); + + betal=freesteam_region1_alphav_pT(Sl.R1.p,Sl.R1.T); + betav=freesteam_region2_alphav_pT(Sv.R2.p,Sv.R2.T); + + cpl=freesteam_region1_cp_pT(Sl.R1.p,Sl.R1.T); + cpv=freesteam_region2_cp_pT(Sv.R2.p,Sv.R2.T); + + hl=freesteam_region1_h_pT(Sl.R1.p,Sl.R1.T); + hv=freesteam_region2_h_pT(Sv.R2.p,Sv.R2.T); + + + //calculation derviatives on liquid and vapour line + dvldp=betal*vl/dpdT-kappal*vl; + dvvdp=betav*vv/dpdT-kappav*vv; + + dhldp=vl*(1-betal*Sl.R1.T)+cpl/dpdT; + dhvdp=vv*(1-betav*Sv.R2.T)+cpl/dpdT; + + dxdp=-dhldp/(hv-hl) + +(h-hl)/((hv-hl)*(hv-hl)) + *(dhvdp-dhldp); + + //CL: psi=(drho/dp)_h=const + dvdp=dvldp+(dvvdp-dvldp)*x+(vv-vl)*dxdp; + psi=-rho*rho*dvdp; + + //CL: drhodh=(drho/dh)_p=const + dvdh=(vv-vl)/(hv-hl); + drhodh=-rho*rho*dvdh; + + //CL: getting transport properties + mu=freesteam_mu_rhoT(rho, T); + lambda=freesteam_k_rhoT(rho,T); + alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density + } + else + { + std::cout<<"IAPWS-IF97 error, outside the regions 1-4"< this is a bit tricky in the vapor dome + + dpdT=freesteam_region4_dpsatdT_T(S.R4.T); + + // getting the states outside the vapour dome + Sl=freesteam_set_pv(p,vl-0.0000001); //inside region 1 + Sv=freesteam_set_pv(p,vv+0.0000001); //inside region 2 + + kappal=freesteam_region1_kappaT_pT(Sl.R1.p,Sl.R1.T); + kappav=freesteam_region2_kappaT_pT(Sv.R2.p,Sv.R2.T); + + betal=freesteam_region1_alphav_pT(Sl.R1.p,Sl.R1.T); + betav=freesteam_region2_alphav_pT(Sv.R2.p,Sv.R2.T); + + cpl=freesteam_region1_cp_pT(Sl.R1.p,Sl.R1.T); + cpv=freesteam_region2_cp_pT(Sv.R2.p,Sv.R2.T); + + hl=freesteam_region1_h_pT(Sl.R1.p,Sl.R1.T); + hv=freesteam_region2_h_pT(Sv.R2.p,Sv.R2.T); + + //calculation derviatives on liquid and vapour line + dvldp=betal*vl/dpdT-kappal*vl; + dvvdp=betav*vv/dpdT-kappav*vv; + + dhldp=vl*(1-betal*Sl.R1.T)+cpl/dpdT; + dhvdp=vv*(1-betav*Sv.R2.T)+cpl/dpdT; + + dxdp=-dhldp/(hv-hl) + +(h-hl)/((hv-hl)*(hv-hl)) + *(dhvdp-dhldp); + + //CL: psiH=(drho/dp)_h=const + dvdp=dvldp+(dvvdp-dvldp)*S.R4.x+(vv-vl)*dxdp; + psiH=-rho*rho*dvdp; + } + else + { + Info<<"IAPWS-IF97.C error, outside the regions 1-4"< see region1.h (freesteam) +EXTERN double freesteam_region1_v_pT(double,double); +EXTERN double freesteam_region1_h_pT(double,double); +EXTERN double freesteam_region1_kappaT_pT(double,double); +EXTERN double freesteam_region1_alphav_pT(double,double); +EXTERN double freesteam_region1_cp_pT(double,double); +EXTERN double freesteam_region1_u_pT(double,double); +EXTERN double freesteam_region1_s_pT(double,double); +EXTERN double freesteam_region1_cv_pT(double,double); + +//CL: Region 2 --> see region2.h (freesteam) +EXTERN double freesteam_region2_v_pT(double,double); +EXTERN double freesteam_region2_u_pT(double,double); +EXTERN double freesteam_region2_s_pT(double,double); +EXTERN double freesteam_region2_h_pT(double,double); +EXTERN double freesteam_region2_cp_pT(double,double); +EXTERN double freesteam_region2_cv_pT(double,double); +EXTERN double freesteam_region2_alphav_pT(double,double); +EXTERN double freesteam_region2_kappaT_pT(double,double); + +//CL: Region 3 --> see region3.h (freesteam) +EXTERN double freesteam_region3_p_rhoT(double,double); +EXTERN double freesteam_region3_u_rhoT(double,double); +EXTERN double freesteam_region3_s_rhoT(double,double); +EXTERN double freesteam_region3_h_rhoT(double,double); +EXTERN double freesteam_region3_cp_rhoT(double,double); +EXTERN double freesteam_region3_cv_rhoT(double,double); +EXTERN double freesteam_region3_alphap_rhoT(double,double); +EXTERN double freesteam_region3_betap_rhoT(double,double); + +//CL: Region 4 --> see region4.h (freesteam) +EXTERN double freesteam_region4_psat_T(double); +EXTERN double freesteam_region4_Tsat_p(double); +EXTERN double freesteam_region4_rhof_T(double); +EXTERN double freesteam_region4_rhog_T(double); +EXTERN double freesteam_region4_v_Tx(double,double); +EXTERN double freesteam_region4_u_Tx(double,double); +EXTERN double freesteam_region4_h_Tx(double,double); +EXTERN double freesteam_region4_s_Tx(double,double); +EXTERN double freesteam_region4_cp_Tx(double,double); +EXTERN double freesteam_region4_cv_Tx(double,double); +EXTERN double freesteam_region4_dpsatdT_T(double); + +namespace Foam +{ + //CL: Functions to caluculate all fluid properties + void calculateProperties_h + ( + SteamState S, + scalar &rho, + scalar &h, + scalar &T, + scalar &p, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x + ); + + //CL: This functions returns all (minimal) needed propeties (p,T,h,rho,psi,drhodh,mu and alpha) for given p and T + void calculateProperties_pT + ( + scalar &p, + scalar &T, + scalar &h, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha + ); + + //CL: This function returns the same values as the function above for given p and T + //CL: Additionally, the vapor mass fraction x is return + //CL: NOTE: This function is only included to have the possibility to update x at the fixedValue (Temperature) BC + //CL: can only return x=0 and x=1 because it is not possible to describe the vapour dome with p and T + void calculateProperties_pT + ( + scalar &p, + scalar &T, + scalar &h, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x + ); + + //CL: This functions returns all (minimal) needed properties (p,T,h,rho,psi,drhodh,mu and alpha) for given p and h + void calculateProperties_ph + ( + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha + ); + + //CL: This function returns the same values as the function above for given p and h + //CL: Additionally, the vapor mass fraction x is return + void calculateProperties_ph + ( + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x + ); + + + //CL: Return density for given pT or ph; + scalar rho_pT(scalar p,scalar T); + scalar rho_ph(scalar p,scalar h); + + //CL: Return cp for given pT or ph; + scalar cp_pT(scalar p,scalar T); + scalar cp_ph(scalar p,scalar h); + + //CL: Return cv for given pT or ph; + scalar cv_pT(scalar p,scalar T); + scalar cv_ph(scalar p,scalar h); + + //CL: Return enthalpy for given pT; + scalar h_pT(scalar p,scalar T); + + //CL: Return temperature for given ph; + scalar T_ph(scalar p,scalar T); + + //CL: Return psiH=(drho/dp)_h=constant for given pT or ph; + scalar psiH_pT(scalar p,scalar T); + scalar psiH_ph(scalar p,scalar h); + scalar psiH(SteamState S); + + //CL: Return drhodh=(drho/dh)_p=constant for given pT or ph; + scalar drhodh_pT(scalar p,scalar T); + scalar drhodh_ph(scalar p,scalar h); + scalar drhodh(SteamState S); + +} + +#endif //IAPWSIF97_C_ diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C new file mode 100755 index 000000000..dae4bd1f9 --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C @@ -0,0 +1,476 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "IAPWSThermo.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + + +void Foam::IAPWSThermo::calculate() +{ + scalarField& hCells = h_.internalField(); + scalarField& pCells = this->p_.internalField(); + scalarField& TCells = this->T_.internalField(); + scalarField& rhoCells= this->rho_.internalField(); + scalarField& psiCells = this->psi_.internalField(); + scalarField& drhodhCells = this->drhodh_.internalField(); + scalarField& muCells = this->mu_.internalField(); + scalarField& alphaCells = this->alpha_.internalField(); + + //CL: Updating all cell properties + //CL: loop through all cells + forAll(TCells, celli) + { + //CL: see IAPWAS-IF97.H + calculateProperties_ph + ( + pCells[celli], + hCells[celli], + TCells[celli], + rhoCells[celli], + psiCells[celli], + drhodhCells[celli], + muCells[celli], + alphaCells[celli] + ); + } + + //CL: loop through all patches + forAll(T_.boundaryField(), patchi) + { + fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; + fvPatchScalarField& ppsi = this->psi_.boundaryField()[patchi]; + fvPatchScalarField& pdrhodh = this->drhodh_.boundaryField()[patchi]; + fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; + fvPatchScalarField& ph = this->h_.boundaryField()[patchi]; + fvPatchScalarField& pmu = this->mu_.boundaryField()[patchi]; + fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi]; + + //CL: Updating the patch properties for patches with fixed temperature BC's + if (pT.fixesValue()) + { + forAll(pT, facei) + { + //CL: see IAPWAS-IF97.H + calculateProperties_pT + ( + pp[facei], + pT[facei], + ph[facei], + prho[facei], + ppsi[facei], + pdrhodh[facei], + pmu[facei], + palpha[facei] + ); + } + } + //CL: Updating the patch properties for patches without fixed temperature BC's + else + { + forAll(pT, facei) + { + //CL: see IAPWAS-IF97.H + calculateProperties_ph + ( + pp[facei], + ph[facei], + pT[facei], + prho[facei], + ppsi[facei], + pdrhodh[facei], + pmu[facei], + palpha[facei] + ); + } + } + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + + +Foam::IAPWSThermo::IAPWSThermo(const fvMesh& mesh) +: + basicPsiThermo(mesh), + + h_ + ( + IOobject + ( + "h", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, 0, 0), + this->hBoundaryTypes() + ), + + rho_ + ( + IOobject + ( + "rhoThermo", + mesh.time().timeName(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::NO_WRITE + ), + mesh, + dimDensity + ), + + drhodh_ + ( + IOobject + ( + "drhodh", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(1, -5, 2, 0, 0) + ) +{ + + scalarField& hCells = h_.internalField(); + scalarField& TCells = this->T_.internalField(); + scalarField& pCells =this->p_.internalField(); + scalarField& rhoCells =this->rho_.internalField(); + + forAll(hCells, celli) + { + hCells[celli] = h_pT(pCells[celli],TCells[celli]); + } + + forAll(h_.boundaryField(), patchi) + { + h_.boundaryField()[patchi] == + h(this->T_.boundaryField()[patchi], patchi); + } + + forAll(rhoCells, celli) + { + rhoCells[celli] = rho_pT(pCells[celli],TCells[celli]); + } + + forAll(rho_.boundaryField(), patchi) + { + rho_.boundaryField()[patchi] == + rho(this->p_.boundaryField()[patchi] ,this->h_.boundaryField()[patchi], patchi); + } + + hBoundaryCorrection(h_); + + calculate(); + + // Switch on saving old time + this->psi_.oldTime(); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + + +Foam::IAPWSThermo::~IAPWSThermo() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + + +void Foam::IAPWSThermo::correct() +{ + if (debug) + { + Info<< "entering IAPWSThermo::correct()" << endl; + } + + // force the saving of the old-time values + this->psi_.oldTime(); + + calculate(); + + if (debug) + { + Info<< "exiting IAPWSThermo::correct()" << endl; + } +} + + +Foam::tmp Foam::IAPWSThermo::h +( + const scalarField& T, + const labelList& cells +) const +{ + //getting pressure field + const scalarField& pCells = this->p_.internalField(); + + tmp th(new scalarField(T.size())); + scalarField& h = th(); + + forAll(T, celli) + { + h[celli] = h_pT(pCells[cells[celli]],T[celli]); + } + + return th; +} + + +Foam::tmp Foam::IAPWSThermo::h +( + const scalarField& T, + const label patchi +) const +{ + // getting pressure at the patch + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp th(new scalarField(T.size())); + scalarField& h = th(); + + forAll(T, facei) + { + h[facei] = h_pT(pp[facei], T[facei]); + } + + return th; +} + + +//CL: Calculates rho at patch +Foam::tmp Foam::IAPWSThermo::rho +( + const scalarField& p, + const scalarField& h, + const label patchi +) const +{ + tmp trho(new scalarField(h.size())); + scalarField& rho = trho(); + + forAll(h, facei) + { + rho[facei] = rho_ph(p[facei], h[facei]); + } + + return trho; +} + + +Foam::tmp Foam::IAPWSThermo::Cp +( + const scalarField& T, + const label patchi +) const +{ + // getting pressure at the patch + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp tCp(new scalarField(T.size())); + scalarField& cp = tCp(); + + forAll(T, facei) + { + cp[facei] = cp_ph(pp[facei],h_pT(pp[facei], T[facei])); + } + + return tCp; +} + + +Foam::tmp Foam::IAPWSThermo::Cp() const +{ + const fvMesh& mesh = this->T_.mesh(); + + tmp tCp + ( + new volScalarField + ( + IOobject + ( + "Cp", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, -1, 0), + this->T_.boundaryField().types() + ) + ); + + volScalarField& cp = tCp(); + + forAll(this->T_, celli) + { + cp[celli] = cp_ph(this->p_[celli], this->h_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + const fvPatchScalarField& ph = this->h_.boundaryField()[patchi]; + fvPatchScalarField& pCp = cp.boundaryField()[patchi]; + + forAll(ph, facei) + { + pCp[facei] = cp_ph(pp[facei], ph[facei]); + } + } + + return tCp; +} + + +//CL: Returns an updated field for rho +Foam::tmp Foam::IAPWSThermo::rho() const +{ + const fvMesh& mesh = this->p_.mesh(); + + tmp prho + ( + new volScalarField + ( + IOobject + ( + "rhoThermo2", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimDensity + ) + ); + + volScalarField& rho = prho(); + + forAll(this->p_, celli) + { + rho[celli] = rho_ph(this->p_[celli], this->h_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + const fvPatchScalarField& ph = this->h_.boundaryField()[patchi]; + fvPatchScalarField& prho = rho.boundaryField()[patchi]; + + forAll(ph, facei) + { + prho[facei] = rho_ph(pp[facei], ph[facei]); + } + } + + return prho; +} + + +Foam::tmp Foam::IAPWSThermo::Cv +( + const scalarField& T, + const label patchi +) const +{ + // getting pressure at the patch + const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; + + tmp tCv(new scalarField(T.size())); + scalarField& cv = tCv(); + + forAll(T, facei) + { + cv[facei] = cv_ph(pp[facei], h_pT(pp[facei], T[facei])); + } + + return tCv; +} + + +Foam::tmp Foam::IAPWSThermo::Cv() const +{ + const fvMesh& mesh = this->T_.mesh(); + + tmp tCv + ( + new volScalarField + ( + IOobject + ( + "Cv", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionSet(0, 2, -2, -1, 0) + ) + ); + + volScalarField& cv = tCv(); + + forAll(this->h_, celli) + { + cv[celli] = cv_ph(this->p_[celli], this->h_[celli]); + } + + forAll(this->T_.boundaryField(), patchi) + { + cv.boundaryField()[patchi] = + Cv(this->T_.boundaryField()[patchi], patchi); + } + + return tCv; +} + + +bool Foam::IAPWSThermo::read() +{ + basicPsiThermo::read(); + return true; +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H new file mode 100755 index 000000000..9b253a33c --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H @@ -0,0 +1,198 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::IAPWSThermo + +Description: + + Waterproperties based on the IAPWS 97 tables + The water properties are caluclated using freeSteam (http://freesteam.sourceforge.net/example.php) + + General paper decribing the water tables: + + "Revised Release on the IAPWS Industrial Formulation 1997 for the Thermodynamic Properties of Water and Steam" + +SourceFiles + IAPWSThermo.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + + +\*---------------------------------------------------------------------------*/ + +#ifndef IAPWSThermo_H +#define IAPWSThermo_H + +#include "basicPsiThermo.H" +#include "IAPWS-IF97.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +/*---------------------------------------------------------------------------*\ + Class IAPWSTHERMO Declaration +\*---------------------------------------------------------------------------*/ + +class IAPWSThermo +: + public basicPsiThermo +{ + + // Private data + + //- Enthalpy field + volScalarField h_; + + //- DensityField + volScalarField rho_; + + // CL:drhodh Field + // CL:needed for pressure equation + volScalarField drhodh_; + + + // Private member functions + + //- Calculate the thermo variables + void calculate(); + +public: + + //- Runtime type information + TypeName("IAPWSThermo"); + + // Constructors + + //- Construct from mesh + IAPWSThermo(const fvMesh&); + + //- Destructor + virtual ~IAPWSThermo(); + + // Member functions + + + + //- Update properties + virtual void correct(); + + + // Access to thermodynamic state variables + + //- Enthalpy [J/kg] + // Non-const access allowed for transport equations + virtual volScalarField& h() + { + return h_; + } + + //- Enthalpy [J/kg] + virtual const volScalarField& h() const + { + return h_; + } + + // Fields derived from thermodynamic state variables + + //- Enthalpy for cell-set [J/kg] + virtual tmp h + ( + const scalarField& T, + const labelList& cells + ) const; + + + //- Enthalpy for patch [J/kg] + virtual tmp h + ( + const scalarField& T, + const label patchi + ) const; + + + //- Density for patch [J/kg] + virtual tmp rho + ( + const scalarField& p, + const scalarField& h, + const label patchi + ) const; + + //- Heat capacity at constant pressure for patch [J/kg/K] + // dummy function needed for BC + virtual tmp Cp + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant pressure [J/kg/K] + virtual tmp Cp() const; + + //- Heat capacity at constant volume for patch [J/kg/K] + virtual tmp Cv + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant volume [J/kg/K] + virtual tmp Cv() const; + + //- Gradient drhodh @ constant pressure + virtual const volScalarField& drhodh() const + { + return drhodh_; + } + + //- Density [kg/m^3] - uses current value of pressure + virtual tmp rho() const; + + + //- Read thermophysicalProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + +#ifdef NoRepository +# include "IAPWSThermo.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermos.C b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermos.C new file mode 100755 index 000000000..14172cbf3 --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermos.C @@ -0,0 +1,73 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + + +#include "makeBasicPsiThermo.H" +#include "IAPWSThermo.H" + +// including dummy classes --> this classes do nothing +// except satisfy the template structure +//#include "dummyEqnOfState.H" +//#include "dummyThermo.H" +//#include "dummyH.H" +//#include "dummyTransport.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ + +/* +makeBasicRealGasThermo +( + IAPWSThermo, + pureMixture, + dummyTransport, + dummyThermo, + dummyH, + dummyEqnOfState +); +*/ + +makeBasicExternalLibraryBasedThermo +( + IAPWSThermo +); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/steam.H b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/steam.H new file mode 100644 index 000000000..c99778bf5 --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/steam.H @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Description: + +Includes the definition of a struct from freestream +Code copied from freestream --> steam.h + +\*---------------------------------------------------------------------------*/ + + +typedef struct SteamState_R1_struct{ + double p, T; +} SteamState_R1; + +typedef struct SteamState_R2_struct{ + double p, T; +} SteamState_R2; + +typedef struct SteamState_R3_struct{ + double rho, T; +} SteamState_R3; + +typedef struct SteamState_R4_struct{ + double T, x; +} SteamState_R4; + +typedef struct SteamState_struct{ + char region; + union{ + SteamState_R1 R1; + SteamState_R2 R2; + SteamState_R3 R3; + SteamState_R4 R4; + }; +} SteamState; diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files new file mode 100644 index 000000000..79e5948aa --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files @@ -0,0 +1,5 @@ +//CL: IAPWS water properties thermodynamic classes +IAPWSThermo/IAPWS-IF97.C +IAPWSThermo/IAPWSThermos.C + +LIB = $(FOAM_LIBBIN)/libIAPWSThermo diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/options b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/options new file mode 100644 index 000000000..267982f35 --- /dev/null +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/options @@ -0,0 +1,8 @@ +EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude + +LIB_LIBS = \ + -lfiniteVolume\ + -lbasicThermophysicalModels diff --git a/src/thermophysicalModels/externalMedia/README b/src/thermophysicalModels/externalMedia/README new file mode 100644 index 000000000..b22394bf9 --- /dev/null +++ b/src/thermophysicalModels/externalMedia/README @@ -0,0 +1,5 @@ +CL: +In this folder, thermodynamic classes similar to "hPsiThermo" are provided. These classes use external fluid property libraries e.g. freesteam for water.The classes are not directly linked into the basicThermophysicalModels dynamic library (see folder OpenFOAM-x.x/src/thermophysicalModels/basic). To use the code, add the dynamic library (the one you want to use from this folder + the one from the external library) in the controldict of your case + + + diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/T b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/T new file mode 100755 index 000000000..c80d17527 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/T @@ -0,0 +1,51 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.7.1 | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 533.15; + +boundaryField +{ + INLET + { + type fixedValue; + value uniform 533.15; + } + OUTLET + { + type inletOutlet; + inletValue uniform 533.15; + value uniform 533.15; + } + + WALL_1 + { + type zeroGradient; + } + WALL_2 + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/U b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/U new file mode 100755 index 000000000..0a85d15ad --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/U @@ -0,0 +1,53 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.7.1 | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (4.8 0 0); + +boundaryField +{ + INLET + { + type pressureInletVelocity; + value uniform (4.8 0 0); + } + OUTLET + { + type inletOutlet; + inletValue uniform (0 0 0); + value uniform (4.8 0 0); + } + + WALL_1 + { + type fixedValue; + value uniform (0 0 0); + } + WALL_2 + { + type fixedValue; + value uniform (0 0 0); + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/epsilon b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/epsilon new file mode 100755 index 000000000..381b88669 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/epsilon @@ -0,0 +1,58 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1120; + +boundaryField +{ + WALL_1 + { + type compressible::epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 1120; + } + WALL_2 + { + type compressible::epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 1120; + } + INLET + { + type fixedValue; + value uniform 1120; + } + OUTLET + { + type inletOutlet; + inletValue uniform 1120; + value uniform 1120; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/k b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/k new file mode 100755 index 000000000..5e6de985a --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/k @@ -0,0 +1,51 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 5; + +boundaryField +{ + WALL_1 + { + type compressible::kqRWallFunction; + value uniform 5; + } + WALL_2 + { + type compressible::kqRWallFunction; + value uniform 5; + } + INLET + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.01; + value uniform 5; + } + OUTLET + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/p b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/p new file mode 100755 index 000000000..cbc7fd109 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/p @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.7.1 | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 80e5; + +boundaryField +{ + INLET + { + type totalPressure; + rho rho; + psi none; + gamma 1.4; + p0 uniform 8.01e+06; + value uniform 8.01e+06; + } + OUTLET + { + type fixedValue; + value uniform 8e+06; + } + + WALL_1 + { + type zeroGradient; + } + WALL_2 + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/README b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/README new file mode 100644 index 000000000..480e7610e --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/README @@ -0,0 +1,61 @@ +This tutorial is to show how the IAPWSThermo work in OpenFOAM + + + + +//***********************INFORMATION TO TEST CASE*******************************// + + +Important files in this case: + +1. thermophysicalProperties + +--> see thermotype + +1. fvSolution + +PISO subdict --> see the realFluid --> this must be true (see modification in the pEqn of rhoPisoFoam) + +2. controlDict: + +the dynamic libraries used for the IAPWS 97 water properties are not directly link into OpenFOAM. +Therefore, the dynamic libraries need to be defined in controlDict + + +//************************NEW CODE NEEDED FOR THIS CASE*************************// + +1. Code in OpenFOAM: $WM_PROJECT_DIR/src/thermophysicalModels/externalMedia/ + just run wmake libso in the folder + +2. FreeSteam: download the code @ http://freesteam.sourceforge.net/example.php + get the sourceCode --> I'm not sure of the packages work with this code + see README.txt file to see what libraries you need to compile freeSteam + + +//***********************Problems*******************************// + +If problems occur using the IAPWS 97 water properties, please check the following points + + +1. have you suggesfully compiled freeSteam. + + a: If no, have you installed gsl, scons and so on (see README.txt in the freeSteam) + b: If yes, is the libfreesteam.so in a folder where OpenFOAM finds it e.g. $WM_PROJECT_DIR/lib/linux64GccDPOpt + (last folder name depends on your machine, compiler ...) + +2. have you compiled the thermophysical models that connect freeSteam to OpenFOAM. They can be found in this folder: $WM_PROJECT_DIR/src/ + thermophysicalModels/externalMedia/ + + +3. IS THE SOLVER STARTIGN TO RUN THE CASE? NO + + check b23.c file at line 39 (or at least somewhere in the code: + + if you find the following code: + return B23_N[4] + sqrt((pi - B23_N[5])/B23_N[3]) /* * 1{K} */; + + change it to this: + return B23_N[4] + sqrt(fabs(pi - B23_N[5])/B23_N[3]) /* * 1{K} */; + + + diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/.RASProperties.swp b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/.RASProperties.swp new file mode 100755 index 0000000000000000000000000000000000000000..35d19163d72cd777282a769cc5e7ddd173d27c88 GIT binary patch literal 12288 zcmeI2!EVz)5QeAR5Cp1n;x>evt7Ow4Kx%|U2#SP62%@3oV5zK~4Y+c=mhBKyQg{w{ z0^rm)pcllI10dc49)Vfg0fUNCpkgIB9{ptcMUernxb zDV5<>4IuIYJu&e)&50&5n3H3spQnbR8>*n)ZFWRk%c1D0I1zXB?yj%4V;y*|iEdvO zt`6cv28p=W+_)R*P(_KS;v=lWDNKL~98RDFm+EWu%?7wwzJTXe?jN4UQ6|6ym;e)C z0!)AjFaajO1pZ3`Nw@?r=wv7I)1A-zr9b-omOCcE1egF5U;<2l2`~XBzyz286JP>N z;208+eSoj003MvC&C~z?v)}*wX8|6PmPrR^s4jqnq>m+l52W{`ebP(P9!ZjJkgk)y zlh-%W7t&|a0qGs-E$I#EHOZ{EMdHQ;m;e)C0!)AjFaajO1en0_Cm;k`i)ttY0ST#k zIB97$7{q9r9t;`)$tZG0z6xBG22W;Dsu}L+zVg!;U3@w80vS=h+1J8ew68rdYiMUj zxrrGe{#LKt02A`HD-%x#W?Y^XHkY$G*Ozg2AjH1snlu?rvblkdhBCL6vFmwR_=$?* z+zsp1S_7VeDVlD3z5?5-EUsAsre@E!Elh_Ulz|tH{QNNKTsm>o%QW?~ZN${Di9x^c z=oGhjU251y zPx-%gIK|nH*0J|krFXcYM-hGaTJ4+I)7p3R(}KD2yEbcucsBeOeq!$XYgMqdx{8&# JiIs|F!w+~6`P2Xa literal 0 HcmV?d00001 diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/RASProperties b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/RASProperties new file mode 100755 index 000000000..81b1ec911 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/RASProperties @@ -0,0 +1,25 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object RASProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +RASModel kEpsilon; + +turbulence on; + +printCoeffs on; + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/boundary b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/boundary new file mode 100755 index 000000000..7a59636ef --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/boundary @@ -0,0 +1,52 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +5 +( + WALL_1 + { + type wall; + nFaces 99; + startFace 3644; + } + WALL_2 + { + type wall; + nFaces 99; + startFace 3743; + } + INLET + { + type patch; + nFaces 19; + startFace 3842; + } + OUTLET + { + type patch; + nFaces 19; + startFace 3861; + } + frontAndBackPlanes + { + type empty; + nFaces 3762; + startFace 3880; + } +) + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/cellZones b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/cellZones new file mode 100755 index 000000000..965611ab5 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/cellZones @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class regIOobject; + location "constant/polyMesh"; + object cellZones; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +0 +() + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faceZones b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faceZones new file mode 100755 index 000000000..6469973da --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faceZones @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class regIOobject; + location "constant/polyMesh"; + object faceZones; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +0 +() + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faces b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faces new file mode 100755 index 000000000..d2a85b7dd --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faces @@ -0,0 +1,7666 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class faceList; + location "constant/polyMesh"; + object faces; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +7642 +( +4(3 2003 2002 2) +4(3 1 2001 2003) +4(5 2005 2004 4) +4(3 2003 2005 5) +4(7 2007 2006 6) +4(5 2005 2007 7) +4(9 2009 2008 8) +4(7 2007 2009 9) +4(11 2011 2010 10) +4(9 2009 2011 11) +4(13 2013 2012 12) +4(11 2011 2013 13) +4(15 2015 2014 14) +4(13 2013 2015 15) +4(17 2017 2016 16) +4(15 2015 2017 17) +4(19 2019 2018 18) +4(17 2017 2019 19) +4(21 2021 2020 20) +4(19 2019 2021 21) +4(23 2023 2022 22) +4(21 2021 2023 23) +4(25 2025 2024 24) +4(23 2023 2025 25) +4(27 2027 2026 26) +4(25 2025 2027 27) +4(29 2029 2028 28) +4(27 2027 2029 29) +4(31 2031 2030 30) +4(29 2029 2031 31) +4(33 2033 2032 32) +4(31 2031 2033 33) +4(35 2035 2034 34) +4(33 2033 2035 35) +4(37 2037 2036 36) +4(35 2035 2037 37) +4(37 2037 2039 39) +4(3 41 2041 2003) +4(40 2040 2041 41) +4(5 42 2042 2005) +4(41 2041 2042 42) +4(7 43 2043 2007) +4(42 2042 2043 43) +4(9 44 2044 2009) +4(43 2043 2044 44) +4(11 45 2045 2011) +4(44 2044 2045 45) +4(13 46 2046 2013) +4(45 2045 2046 46) +4(15 47 2047 2015) +4(46 2046 2047 47) +4(17 48 2048 2017) +4(47 2047 2048 48) +4(19 49 2049 2019) +4(48 2048 2049 49) +4(21 50 2050 2021) +4(49 2049 2050 50) +4(23 51 2051 2023) +4(50 2050 2051 51) +4(25 52 2052 2025) +4(51 2051 2052 52) +4(27 53 2053 2027) +4(52 2052 2053 53) +4(29 54 2054 2029) +4(53 2053 2054 54) +4(31 55 2055 2031) +4(54 2054 2055 55) +4(33 56 2056 2033) +4(55 2055 2056 56) +4(35 57 2057 2035) +4(56 2056 2057 57) +4(37 58 2058 2037) +4(57 2057 2058 58) +4(58 2058 2059 59) +4(41 61 2061 2041) +4(60 2060 2061 61) +4(42 62 2062 2042) +4(61 2061 2062 62) +4(43 63 2063 2043) +4(62 2062 2063 63) +4(44 64 2064 2044) +4(63 2063 2064 64) +4(45 65 2065 2045) +4(64 2064 2065 65) +4(46 66 2066 2046) +4(65 2065 2066 66) +4(47 67 2067 2047) +4(66 2066 2067 67) +4(48 68 2068 2048) +4(67 2067 2068 68) +4(49 69 2069 2049) +4(68 2068 2069 69) +4(50 70 2070 2050) +4(69 2069 2070 70) +4(51 71 2071 2051) +4(70 2070 2071 71) +4(52 72 2072 2052) +4(71 2071 2072 72) +4(53 73 2073 2053) +4(72 2072 2073 73) +4(54 74 2074 2054) +4(73 2073 2074 74) +4(55 75 2075 2055) +4(74 2074 2075 75) +4(56 76 2076 2056) +4(75 2075 2076 76) +4(57 77 2077 2057) +4(76 2076 2077 77) +4(58 78 2078 2058) +4(77 2077 2078 78) +4(78 2078 2079 79) +4(61 81 2081 2061) +4(80 2080 2081 81) +4(62 82 2082 2062) +4(81 2081 2082 82) +4(63 83 2083 2063) +4(82 2082 2083 83) +4(64 84 2084 2064) +4(83 2083 2084 84) +4(65 85 2085 2065) +4(84 2084 2085 85) +4(66 86 2086 2066) +4(85 2085 2086 86) +4(67 87 2087 2067) +4(86 2086 2087 87) +4(68 88 2088 2068) +4(87 2087 2088 88) +4(69 89 2089 2069) +4(88 2088 2089 89) +4(70 90 2090 2070) +4(89 2089 2090 90) +4(71 91 2091 2071) +4(90 2090 2091 91) +4(72 92 2092 2072) +4(91 2091 2092 92) +4(73 93 2093 2073) +4(92 2092 2093 93) +4(74 94 2094 2074) +4(93 2093 2094 94) +4(75 95 2095 2075) +4(94 2094 2095 95) +4(76 96 2096 2076) +4(95 2095 2096 96) +4(77 97 2097 2077) +4(96 2096 2097 97) +4(78 98 2098 2078) +4(97 2097 2098 98) +4(98 2098 2099 99) +4(81 101 2101 2081) +4(100 2100 2101 101) +4(82 102 2102 2082) +4(101 2101 2102 102) +4(83 103 2103 2083) +4(102 2102 2103 103) +4(84 104 2104 2084) +4(103 2103 2104 104) +4(85 105 2105 2085) +4(104 2104 2105 105) +4(86 106 2106 2086) +4(105 2105 2106 106) +4(87 107 2107 2087) +4(106 2106 2107 107) +4(88 108 2108 2088) +4(107 2107 2108 108) +4(89 109 2109 2089) +4(108 2108 2109 109) +4(90 110 2110 2090) +4(109 2109 2110 110) +4(91 111 2111 2091) +4(110 2110 2111 111) +4(92 112 2112 2092) +4(111 2111 2112 112) +4(93 113 2113 2093) +4(112 2112 2113 113) +4(94 114 2114 2094) +4(113 2113 2114 114) +4(95 115 2115 2095) +4(114 2114 2115 115) +4(96 116 2116 2096) +4(115 2115 2116 116) +4(97 117 2117 2097) +4(116 2116 2117 117) +4(98 118 2118 2098) +4(117 2117 2118 118) +4(118 2118 2119 119) +4(101 121 2121 2101) +4(120 2120 2121 121) +4(102 122 2122 2102) +4(121 2121 2122 122) +4(103 123 2123 2103) +4(122 2122 2123 123) +4(104 124 2124 2104) +4(123 2123 2124 124) +4(105 125 2125 2105) +4(124 2124 2125 125) +4(106 126 2126 2106) +4(125 2125 2126 126) +4(107 127 2127 2107) +4(126 2126 2127 127) +4(108 128 2128 2108) +4(127 2127 2128 128) +4(109 129 2129 2109) +4(128 2128 2129 129) +4(110 130 2130 2110) +4(129 2129 2130 130) +4(111 131 2131 2111) +4(130 2130 2131 131) +4(112 132 2132 2112) +4(131 2131 2132 132) +4(113 133 2133 2113) +4(132 2132 2133 133) +4(114 134 2134 2114) +4(133 2133 2134 134) +4(115 135 2135 2115) +4(134 2134 2135 135) +4(116 136 2136 2116) +4(135 2135 2136 136) +4(117 137 2137 2117) +4(136 2136 2137 137) +4(118 138 2138 2118) +4(137 2137 2138 138) +4(138 2138 2139 139) +4(121 141 2141 2121) +4(140 2140 2141 141) +4(122 142 2142 2122) +4(141 2141 2142 142) +4(123 143 2143 2123) +4(142 2142 2143 143) +4(124 144 2144 2124) +4(143 2143 2144 144) +4(125 145 2145 2125) +4(144 2144 2145 145) +4(126 146 2146 2126) +4(145 2145 2146 146) +4(127 147 2147 2127) +4(146 2146 2147 147) +4(128 148 2148 2128) +4(147 2147 2148 148) +4(129 149 2149 2129) +4(148 2148 2149 149) +4(130 150 2150 2130) +4(149 2149 2150 150) +4(131 151 2151 2131) +4(150 2150 2151 151) +4(132 152 2152 2132) +4(151 2151 2152 152) +4(133 153 2153 2133) +4(152 2152 2153 153) +4(134 154 2154 2134) +4(153 2153 2154 154) +4(135 155 2155 2135) +4(154 2154 2155 155) +4(136 156 2156 2136) +4(155 2155 2156 156) +4(137 157 2157 2137) +4(156 2156 2157 157) +4(138 158 2158 2138) +4(157 2157 2158 158) +4(158 2158 2159 159) +4(141 161 2161 2141) +4(160 2160 2161 161) +4(142 162 2162 2142) +4(161 2161 2162 162) +4(143 163 2163 2143) +4(162 2162 2163 163) +4(144 164 2164 2144) +4(163 2163 2164 164) +4(145 165 2165 2145) +4(164 2164 2165 165) +4(146 166 2166 2146) +4(165 2165 2166 166) +4(147 167 2167 2147) +4(166 2166 2167 167) +4(148 168 2168 2148) +4(167 2167 2168 168) +4(149 169 2169 2149) +4(168 2168 2169 169) +4(150 170 2170 2150) +4(169 2169 2170 170) +4(151 171 2171 2151) +4(170 2170 2171 171) +4(152 172 2172 2152) +4(171 2171 2172 172) +4(153 173 2173 2153) +4(172 2172 2173 173) +4(154 174 2174 2154) +4(173 2173 2174 174) +4(155 175 2175 2155) +4(174 2174 2175 175) +4(156 176 2176 2156) +4(175 2175 2176 176) +4(157 177 2177 2157) +4(176 2176 2177 177) +4(158 178 2178 2158) +4(177 2177 2178 178) +4(178 2178 2179 179) +4(161 181 2181 2161) +4(180 2180 2181 181) +4(162 182 2182 2162) +4(181 2181 2182 182) +4(163 183 2183 2163) +4(182 2182 2183 183) +4(164 184 2184 2164) +4(183 2183 2184 184) +4(165 185 2185 2165) +4(184 2184 2185 185) +4(166 186 2186 2166) +4(185 2185 2186 186) +4(167 187 2187 2167) +4(186 2186 2187 187) +4(168 188 2188 2168) +4(187 2187 2188 188) +4(169 189 2189 2169) +4(188 2188 2189 189) +4(170 190 2190 2170) +4(189 2189 2190 190) +4(171 191 2191 2171) +4(190 2190 2191 191) +4(172 192 2192 2172) +4(191 2191 2192 192) +4(173 193 2193 2173) +4(192 2192 2193 193) +4(174 194 2194 2174) +4(193 2193 2194 194) +4(175 195 2195 2175) +4(194 2194 2195 195) +4(176 196 2196 2176) +4(195 2195 2196 196) +4(177 197 2197 2177) +4(196 2196 2197 197) +4(178 198 2198 2178) +4(197 2197 2198 198) +4(198 2198 2199 199) +4(181 201 2201 2181) +4(200 2200 2201 201) +4(182 202 2202 2182) +4(201 2201 2202 202) +4(183 203 2203 2183) +4(202 2202 2203 203) +4(184 204 2204 2184) +4(203 2203 2204 204) +4(185 205 2205 2185) +4(204 2204 2205 205) +4(186 206 2206 2186) +4(205 2205 2206 206) +4(187 207 2207 2187) +4(206 2206 2207 207) +4(188 208 2208 2188) +4(207 2207 2208 208) +4(189 209 2209 2189) +4(208 2208 2209 209) +4(190 210 2210 2190) +4(209 2209 2210 210) +4(191 211 2211 2191) +4(210 2210 2211 211) +4(192 212 2212 2192) +4(211 2211 2212 212) +4(193 213 2213 2193) +4(212 2212 2213 213) +4(194 214 2214 2194) +4(213 2213 2214 214) +4(195 215 2215 2195) +4(214 2214 2215 215) +4(196 216 2216 2196) +4(215 2215 2216 216) +4(197 217 2217 2197) +4(216 2216 2217 217) +4(198 218 2218 2198) +4(217 2217 2218 218) +4(218 2218 2219 219) +4(201 221 2221 2201) +4(220 2220 2221 221) +4(202 222 2222 2202) +4(221 2221 2222 222) +4(203 223 2223 2203) +4(222 2222 2223 223) +4(204 224 2224 2204) +4(223 2223 2224 224) +4(205 225 2225 2205) +4(224 2224 2225 225) +4(206 226 2226 2206) +4(225 2225 2226 226) +4(207 227 2227 2207) +4(226 2226 2227 227) +4(208 228 2228 2208) +4(227 2227 2228 228) +4(209 229 2229 2209) +4(228 2228 2229 229) +4(210 230 2230 2210) +4(229 2229 2230 230) +4(211 231 2231 2211) +4(230 2230 2231 231) +4(212 232 2232 2212) +4(231 2231 2232 232) +4(213 233 2233 2213) +4(232 2232 2233 233) +4(214 234 2234 2214) +4(233 2233 2234 234) +4(215 235 2235 2215) +4(234 2234 2235 235) +4(216 236 2236 2216) +4(235 2235 2236 236) +4(217 237 2237 2217) +4(236 2236 2237 237) +4(218 238 2238 2218) +4(237 2237 2238 238) +4(238 2238 2239 239) +4(221 241 2241 2221) +4(240 2240 2241 241) +4(222 242 2242 2222) +4(241 2241 2242 242) +4(223 243 2243 2223) +4(242 2242 2243 243) +4(224 244 2244 2224) +4(243 2243 2244 244) +4(225 245 2245 2225) +4(244 2244 2245 245) +4(226 246 2246 2226) +4(245 2245 2246 246) +4(227 247 2247 2227) +4(246 2246 2247 247) +4(228 248 2248 2228) +4(247 2247 2248 248) +4(229 249 2249 2229) +4(248 2248 2249 249) +4(230 250 2250 2230) +4(249 2249 2250 250) +4(231 251 2251 2231) +4(250 2250 2251 251) +4(232 252 2252 2232) +4(251 2251 2252 252) +4(233 253 2253 2233) +4(252 2252 2253 253) +4(234 254 2254 2234) +4(253 2253 2254 254) +4(235 255 2255 2235) +4(254 2254 2255 255) +4(236 256 2256 2236) +4(255 2255 2256 256) +4(237 257 2257 2237) +4(256 2256 2257 257) +4(238 258 2258 2238) +4(257 2257 2258 258) +4(258 2258 2259 259) +4(241 261 2261 2241) +4(260 2260 2261 261) +4(242 262 2262 2242) +4(261 2261 2262 262) +4(243 263 2263 2243) +4(262 2262 2263 263) +4(244 264 2264 2244) +4(263 2263 2264 264) +4(245 265 2265 2245) +4(264 2264 2265 265) +4(246 266 2266 2246) +4(265 2265 2266 266) +4(247 267 2267 2247) +4(266 2266 2267 267) +4(248 268 2268 2248) +4(267 2267 2268 268) +4(249 269 2269 2249) +4(268 2268 2269 269) +4(250 270 2270 2250) +4(269 2269 2270 270) +4(251 271 2271 2251) +4(270 2270 2271 271) +4(252 272 2272 2252) +4(271 2271 2272 272) +4(253 273 2273 2253) +4(272 2272 2273 273) +4(254 274 2274 2254) +4(273 2273 2274 274) +4(255 275 2275 2255) +4(274 2274 2275 275) +4(256 276 2276 2256) +4(275 2275 2276 276) +4(257 277 2277 2257) +4(276 2276 2277 277) +4(258 278 2278 2258) +4(277 2277 2278 278) +4(278 2278 2279 279) +4(261 281 2281 2261) +4(280 2280 2281 281) +4(262 282 2282 2262) +4(281 2281 2282 282) +4(263 283 2283 2263) +4(282 2282 2283 283) +4(264 284 2284 2264) +4(283 2283 2284 284) +4(265 285 2285 2265) +4(284 2284 2285 285) +4(266 286 2286 2266) +4(285 2285 2286 286) +4(267 287 2287 2267) +4(286 2286 2287 287) +4(268 288 2288 2268) +4(287 2287 2288 288) +4(269 289 2289 2269) +4(288 2288 2289 289) +4(270 290 2290 2270) +4(289 2289 2290 290) +4(271 291 2291 2271) +4(290 2290 2291 291) +4(272 292 2292 2272) +4(291 2291 2292 292) +4(273 293 2293 2273) +4(292 2292 2293 293) +4(274 294 2294 2274) +4(293 2293 2294 294) +4(275 295 2295 2275) +4(294 2294 2295 295) +4(276 296 2296 2276) +4(295 2295 2296 296) +4(277 297 2297 2277) +4(296 2296 2297 297) +4(278 298 2298 2278) +4(297 2297 2298 298) +4(298 2298 2299 299) +4(281 301 2301 2281) +4(300 2300 2301 301) +4(282 302 2302 2282) +4(301 2301 2302 302) +4(283 303 2303 2283) +4(302 2302 2303 303) +4(284 304 2304 2284) +4(303 2303 2304 304) +4(285 305 2305 2285) +4(304 2304 2305 305) +4(286 306 2306 2286) +4(305 2305 2306 306) +4(287 307 2307 2287) +4(306 2306 2307 307) +4(288 308 2308 2288) +4(307 2307 2308 308) +4(289 309 2309 2289) +4(308 2308 2309 309) +4(290 310 2310 2290) +4(309 2309 2310 310) +4(291 311 2311 2291) +4(310 2310 2311 311) +4(292 312 2312 2292) +4(311 2311 2312 312) +4(293 313 2313 2293) +4(312 2312 2313 313) +4(294 314 2314 2294) +4(313 2313 2314 314) +4(295 315 2315 2295) +4(314 2314 2315 315) +4(296 316 2316 2296) +4(315 2315 2316 316) +4(297 317 2317 2297) +4(316 2316 2317 317) +4(298 318 2318 2298) +4(317 2317 2318 318) +4(318 2318 2319 319) +4(301 321 2321 2301) +4(320 2320 2321 321) +4(302 322 2322 2302) +4(321 2321 2322 322) +4(303 323 2323 2303) +4(322 2322 2323 323) +4(304 324 2324 2304) +4(323 2323 2324 324) +4(305 325 2325 2305) +4(324 2324 2325 325) +4(306 326 2326 2306) +4(325 2325 2326 326) +4(307 327 2327 2307) +4(326 2326 2327 327) +4(308 328 2328 2308) +4(327 2327 2328 328) +4(309 329 2329 2309) +4(328 2328 2329 329) +4(310 330 2330 2310) +4(329 2329 2330 330) +4(311 331 2331 2311) +4(330 2330 2331 331) +4(312 332 2332 2312) +4(331 2331 2332 332) +4(313 333 2333 2313) +4(332 2332 2333 333) +4(314 334 2334 2314) +4(333 2333 2334 334) +4(315 335 2335 2315) +4(334 2334 2335 335) +4(316 336 2336 2316) +4(335 2335 2336 336) +4(317 337 2337 2317) +4(336 2336 2337 337) +4(318 338 2338 2318) +4(337 2337 2338 338) +4(338 2338 2339 339) +4(321 341 2341 2321) +4(340 2340 2341 341) +4(322 342 2342 2322) +4(341 2341 2342 342) +4(323 343 2343 2323) +4(342 2342 2343 343) +4(324 344 2344 2324) +4(343 2343 2344 344) +4(325 345 2345 2325) +4(344 2344 2345 345) +4(326 346 2346 2326) +4(345 2345 2346 346) +4(327 347 2347 2327) +4(346 2346 2347 347) +4(328 348 2348 2328) +4(347 2347 2348 348) +4(329 349 2349 2329) +4(348 2348 2349 349) +4(330 350 2350 2330) +4(349 2349 2350 350) +4(331 351 2351 2331) +4(350 2350 2351 351) +4(332 352 2352 2332) +4(351 2351 2352 352) +4(333 353 2353 2333) +4(352 2352 2353 353) +4(334 354 2354 2334) +4(353 2353 2354 354) +4(335 355 2355 2335) +4(354 2354 2355 355) +4(336 356 2356 2336) +4(355 2355 2356 356) +4(337 357 2357 2337) +4(356 2356 2357 357) +4(338 358 2358 2338) +4(357 2357 2358 358) +4(358 2358 2359 359) +4(341 361 2361 2341) +4(360 2360 2361 361) +4(342 362 2362 2342) +4(361 2361 2362 362) +4(343 363 2363 2343) +4(362 2362 2363 363) +4(344 364 2364 2344) +4(363 2363 2364 364) +4(345 365 2365 2345) +4(364 2364 2365 365) +4(346 366 2366 2346) +4(365 2365 2366 366) +4(347 367 2367 2347) +4(366 2366 2367 367) +4(348 368 2368 2348) +4(367 2367 2368 368) +4(349 369 2369 2349) +4(368 2368 2369 369) +4(350 370 2370 2350) +4(369 2369 2370 370) +4(351 371 2371 2351) +4(370 2370 2371 371) +4(352 372 2372 2352) +4(371 2371 2372 372) +4(353 373 2373 2353) +4(372 2372 2373 373) +4(354 374 2374 2354) +4(373 2373 2374 374) +4(355 375 2375 2355) +4(374 2374 2375 375) +4(356 376 2376 2356) +4(375 2375 2376 376) +4(357 377 2377 2357) +4(376 2376 2377 377) +4(358 378 2378 2358) +4(377 2377 2378 378) +4(378 2378 2379 379) +4(361 381 2381 2361) +4(380 2380 2381 381) +4(362 382 2382 2362) +4(381 2381 2382 382) +4(363 383 2383 2363) +4(382 2382 2383 383) +4(364 384 2384 2364) +4(383 2383 2384 384) +4(365 385 2385 2365) +4(384 2384 2385 385) +4(366 386 2386 2366) +4(385 2385 2386 386) +4(367 387 2387 2367) +4(386 2386 2387 387) +4(368 388 2388 2368) +4(387 2387 2388 388) +4(369 389 2389 2369) +4(388 2388 2389 389) +4(370 390 2390 2370) +4(389 2389 2390 390) +4(371 391 2391 2371) +4(390 2390 2391 391) +4(372 392 2392 2372) +4(391 2391 2392 392) +4(373 393 2393 2373) +4(392 2392 2393 393) +4(374 394 2394 2374) +4(393 2393 2394 394) +4(375 395 2395 2375) +4(394 2394 2395 395) +4(376 396 2396 2376) +4(395 2395 2396 396) +4(377 397 2397 2377) +4(396 2396 2397 397) +4(378 398 2398 2378) +4(397 2397 2398 398) +4(398 2398 2399 399) +4(381 401 2401 2381) +4(400 2400 2401 401) +4(382 402 2402 2382) +4(401 2401 2402 402) +4(383 403 2403 2383) +4(402 2402 2403 403) +4(384 404 2404 2384) +4(403 2403 2404 404) +4(385 405 2405 2385) +4(404 2404 2405 405) +4(386 406 2406 2386) +4(405 2405 2406 406) +4(387 407 2407 2387) +4(406 2406 2407 407) +4(388 408 2408 2388) +4(407 2407 2408 408) +4(389 409 2409 2389) +4(408 2408 2409 409) +4(390 410 2410 2390) +4(409 2409 2410 410) +4(391 411 2411 2391) +4(410 2410 2411 411) +4(392 412 2412 2392) +4(411 2411 2412 412) +4(393 413 2413 2393) +4(412 2412 2413 413) +4(394 414 2414 2394) +4(413 2413 2414 414) +4(395 415 2415 2395) +4(414 2414 2415 415) +4(396 416 2416 2396) +4(415 2415 2416 416) +4(397 417 2417 2397) +4(416 2416 2417 417) +4(398 418 2418 2398) +4(417 2417 2418 418) +4(418 2418 2419 419) +4(401 421 2421 2401) +4(420 2420 2421 421) +4(402 422 2422 2402) +4(421 2421 2422 422) +4(403 423 2423 2403) +4(422 2422 2423 423) +4(404 424 2424 2404) +4(423 2423 2424 424) +4(405 425 2425 2405) +4(424 2424 2425 425) +4(406 426 2426 2406) +4(425 2425 2426 426) +4(407 427 2427 2407) +4(426 2426 2427 427) +4(408 428 2428 2408) +4(427 2427 2428 428) +4(409 429 2429 2409) +4(428 2428 2429 429) +4(410 430 2430 2410) +4(429 2429 2430 430) +4(411 431 2431 2411) +4(430 2430 2431 431) +4(412 432 2432 2412) +4(431 2431 2432 432) +4(413 433 2433 2413) +4(432 2432 2433 433) +4(414 434 2434 2414) +4(433 2433 2434 434) +4(415 435 2435 2415) +4(434 2434 2435 435) +4(416 436 2436 2416) +4(435 2435 2436 436) +4(417 437 2437 2417) +4(436 2436 2437 437) +4(418 438 2438 2418) +4(437 2437 2438 438) +4(438 2438 2439 439) +4(421 441 2441 2421) +4(440 2440 2441 441) +4(422 442 2442 2422) +4(441 2441 2442 442) +4(423 443 2443 2423) +4(442 2442 2443 443) +4(424 444 2444 2424) +4(443 2443 2444 444) +4(425 445 2445 2425) +4(444 2444 2445 445) +4(426 446 2446 2426) +4(445 2445 2446 446) +4(427 447 2447 2427) +4(446 2446 2447 447) +4(428 448 2448 2428) +4(447 2447 2448 448) +4(429 449 2449 2429) +4(448 2448 2449 449) +4(430 450 2450 2430) +4(449 2449 2450 450) +4(431 451 2451 2431) +4(450 2450 2451 451) +4(432 452 2452 2432) +4(451 2451 2452 452) +4(433 453 2453 2433) +4(452 2452 2453 453) +4(434 454 2454 2434) +4(453 2453 2454 454) +4(435 455 2455 2435) +4(454 2454 2455 455) +4(436 456 2456 2436) +4(455 2455 2456 456) +4(437 457 2457 2437) +4(456 2456 2457 457) +4(438 458 2458 2438) +4(457 2457 2458 458) +4(458 2458 2459 459) +4(441 461 2461 2441) +4(460 2460 2461 461) +4(442 462 2462 2442) +4(461 2461 2462 462) +4(443 463 2463 2443) +4(462 2462 2463 463) +4(444 464 2464 2444) +4(463 2463 2464 464) +4(445 465 2465 2445) +4(464 2464 2465 465) +4(446 466 2466 2446) +4(465 2465 2466 466) +4(447 467 2467 2447) +4(466 2466 2467 467) +4(448 468 2468 2448) +4(467 2467 2468 468) +4(449 469 2469 2449) +4(468 2468 2469 469) +4(450 470 2470 2450) +4(469 2469 2470 470) +4(451 471 2471 2451) +4(470 2470 2471 471) +4(452 472 2472 2452) +4(471 2471 2472 472) +4(453 473 2473 2453) +4(472 2472 2473 473) +4(454 474 2474 2454) +4(473 2473 2474 474) +4(455 475 2475 2455) +4(474 2474 2475 475) +4(456 476 2476 2456) +4(475 2475 2476 476) +4(457 477 2477 2457) +4(476 2476 2477 477) +4(458 478 2478 2458) +4(477 2477 2478 478) +4(478 2478 2479 479) +4(461 481 2481 2461) +4(480 2480 2481 481) +4(462 482 2482 2462) +4(481 2481 2482 482) +4(463 483 2483 2463) +4(482 2482 2483 483) +4(464 484 2484 2464) +4(483 2483 2484 484) +4(465 485 2485 2465) +4(484 2484 2485 485) +4(466 486 2486 2466) +4(485 2485 2486 486) +4(467 487 2487 2467) +4(486 2486 2487 487) +4(468 488 2488 2468) +4(487 2487 2488 488) +4(469 489 2489 2469) +4(488 2488 2489 489) +4(470 490 2490 2470) +4(489 2489 2490 490) +4(471 491 2491 2471) +4(490 2490 2491 491) +4(472 492 2492 2472) +4(491 2491 2492 492) +4(473 493 2493 2473) +4(492 2492 2493 493) +4(474 494 2494 2474) +4(493 2493 2494 494) +4(475 495 2495 2475) +4(494 2494 2495 495) +4(476 496 2496 2476) +4(495 2495 2496 496) +4(477 497 2497 2477) +4(496 2496 2497 497) +4(478 498 2498 2478) +4(497 2497 2498 498) +4(498 2498 2499 499) +4(481 501 2501 2481) +4(500 2500 2501 501) +4(482 502 2502 2482) +4(501 2501 2502 502) +4(483 503 2503 2483) +4(502 2502 2503 503) +4(484 504 2504 2484) +4(503 2503 2504 504) +4(485 505 2505 2485) +4(504 2504 2505 505) +4(486 506 2506 2486) +4(505 2505 2506 506) +4(487 507 2507 2487) +4(506 2506 2507 507) +4(488 508 2508 2488) +4(507 2507 2508 508) +4(489 509 2509 2489) +4(508 2508 2509 509) +4(490 510 2510 2490) +4(509 2509 2510 510) +4(491 511 2511 2491) +4(510 2510 2511 511) +4(492 512 2512 2492) +4(511 2511 2512 512) +4(493 513 2513 2493) +4(512 2512 2513 513) +4(494 514 2514 2494) +4(513 2513 2514 514) +4(495 515 2515 2495) +4(514 2514 2515 515) +4(496 516 2516 2496) +4(515 2515 2516 516) +4(497 517 2517 2497) +4(516 2516 2517 517) +4(498 518 2518 2498) +4(517 2517 2518 518) +4(518 2518 2519 519) +4(501 521 2521 2501) +4(520 2520 2521 521) +4(502 522 2522 2502) +4(521 2521 2522 522) +4(503 523 2523 2503) +4(522 2522 2523 523) +4(504 524 2524 2504) +4(523 2523 2524 524) +4(505 525 2525 2505) +4(524 2524 2525 525) +4(506 526 2526 2506) +4(525 2525 2526 526) +4(507 527 2527 2507) +4(526 2526 2527 527) +4(508 528 2528 2508) +4(527 2527 2528 528) +4(509 529 2529 2509) +4(528 2528 2529 529) +4(510 530 2530 2510) +4(529 2529 2530 530) +4(511 531 2531 2511) +4(530 2530 2531 531) +4(512 532 2532 2512) +4(531 2531 2532 532) +4(513 533 2533 2513) +4(532 2532 2533 533) +4(514 534 2534 2514) +4(533 2533 2534 534) +4(515 535 2535 2515) +4(534 2534 2535 535) +4(516 536 2536 2516) +4(535 2535 2536 536) +4(517 537 2537 2517) +4(536 2536 2537 537) +4(518 538 2538 2518) +4(537 2537 2538 538) +4(538 2538 2539 539) +4(521 541 2541 2521) +4(540 2540 2541 541) +4(522 542 2542 2522) +4(541 2541 2542 542) +4(523 543 2543 2523) +4(542 2542 2543 543) +4(524 544 2544 2524) +4(543 2543 2544 544) +4(525 545 2545 2525) +4(544 2544 2545 545) +4(526 546 2546 2526) +4(545 2545 2546 546) +4(527 547 2547 2527) +4(546 2546 2547 547) +4(528 548 2548 2528) +4(547 2547 2548 548) +4(529 549 2549 2529) +4(548 2548 2549 549) +4(530 550 2550 2530) +4(549 2549 2550 550) +4(531 551 2551 2531) +4(550 2550 2551 551) +4(532 552 2552 2532) +4(551 2551 2552 552) +4(533 553 2553 2533) +4(552 2552 2553 553) +4(534 554 2554 2534) +4(553 2553 2554 554) +4(535 555 2555 2535) +4(554 2554 2555 555) +4(536 556 2556 2536) +4(555 2555 2556 556) +4(537 557 2557 2537) +4(556 2556 2557 557) +4(538 558 2558 2538) +4(557 2557 2558 558) +4(558 2558 2559 559) +4(541 561 2561 2541) +4(560 2560 2561 561) +4(542 562 2562 2542) +4(561 2561 2562 562) +4(543 563 2563 2543) +4(562 2562 2563 563) +4(544 564 2564 2544) +4(563 2563 2564 564) +4(545 565 2565 2545) +4(564 2564 2565 565) +4(546 566 2566 2546) +4(565 2565 2566 566) +4(547 567 2567 2547) +4(566 2566 2567 567) +4(548 568 2568 2548) +4(567 2567 2568 568) +4(549 569 2569 2549) +4(568 2568 2569 569) +4(550 570 2570 2550) +4(569 2569 2570 570) +4(551 571 2571 2551) +4(570 2570 2571 571) +4(552 572 2572 2552) +4(571 2571 2572 572) +4(553 573 2573 2553) +4(572 2572 2573 573) +4(554 574 2574 2554) +4(573 2573 2574 574) +4(555 575 2575 2555) +4(574 2574 2575 575) +4(556 576 2576 2556) +4(575 2575 2576 576) +4(557 577 2577 2557) +4(576 2576 2577 577) +4(558 578 2578 2558) +4(577 2577 2578 578) +4(578 2578 2579 579) +4(561 581 2581 2561) +4(580 2580 2581 581) +4(562 582 2582 2562) +4(581 2581 2582 582) +4(563 583 2583 2563) +4(582 2582 2583 583) +4(564 584 2584 2564) +4(583 2583 2584 584) +4(565 585 2585 2565) +4(584 2584 2585 585) +4(566 586 2586 2566) +4(585 2585 2586 586) +4(567 587 2587 2567) +4(586 2586 2587 587) +4(568 588 2588 2568) +4(587 2587 2588 588) +4(569 589 2589 2569) +4(588 2588 2589 589) +4(570 590 2590 2570) +4(589 2589 2590 590) +4(571 591 2591 2571) +4(590 2590 2591 591) +4(572 592 2592 2572) +4(591 2591 2592 592) +4(573 593 2593 2573) +4(592 2592 2593 593) +4(574 594 2594 2574) +4(593 2593 2594 594) +4(575 595 2595 2575) +4(594 2594 2595 595) +4(576 596 2596 2576) +4(595 2595 2596 596) +4(577 597 2597 2577) +4(596 2596 2597 597) +4(578 598 2598 2578) +4(597 2597 2598 598) +4(598 2598 2599 599) +4(581 601 2601 2581) +4(600 2600 2601 601) +4(582 602 2602 2582) +4(601 2601 2602 602) +4(583 603 2603 2583) +4(602 2602 2603 603) +4(584 604 2604 2584) +4(603 2603 2604 604) +4(585 605 2605 2585) +4(604 2604 2605 605) +4(586 606 2606 2586) +4(605 2605 2606 606) +4(587 607 2607 2587) +4(606 2606 2607 607) +4(588 608 2608 2588) +4(607 2607 2608 608) +4(589 609 2609 2589) +4(608 2608 2609 609) +4(590 610 2610 2590) +4(609 2609 2610 610) +4(591 611 2611 2591) +4(610 2610 2611 611) +4(592 612 2612 2592) +4(611 2611 2612 612) +4(593 613 2613 2593) +4(612 2612 2613 613) +4(594 614 2614 2594) +4(613 2613 2614 614) +4(595 615 2615 2595) +4(614 2614 2615 615) +4(596 616 2616 2596) +4(615 2615 2616 616) +4(597 617 2617 2597) +4(616 2616 2617 617) +4(598 618 2618 2598) +4(617 2617 2618 618) +4(618 2618 2619 619) +4(601 621 2621 2601) +4(620 2620 2621 621) +4(602 622 2622 2602) +4(621 2621 2622 622) +4(603 623 2623 2603) +4(622 2622 2623 623) +4(604 624 2624 2604) +4(623 2623 2624 624) +4(605 625 2625 2605) +4(624 2624 2625 625) +4(606 626 2626 2606) +4(625 2625 2626 626) +4(607 627 2627 2607) +4(626 2626 2627 627) +4(608 628 2628 2608) +4(627 2627 2628 628) +4(609 629 2629 2609) +4(628 2628 2629 629) +4(610 630 2630 2610) +4(629 2629 2630 630) +4(611 631 2631 2611) +4(630 2630 2631 631) +4(612 632 2632 2612) +4(631 2631 2632 632) +4(613 633 2633 2613) +4(632 2632 2633 633) +4(614 634 2634 2614) +4(633 2633 2634 634) +4(615 635 2635 2615) +4(634 2634 2635 635) +4(616 636 2636 2616) +4(635 2635 2636 636) +4(617 637 2637 2617) +4(636 2636 2637 637) +4(618 638 2638 2618) +4(637 2637 2638 638) +4(638 2638 2639 639) +4(621 641 2641 2621) +4(640 2640 2641 641) +4(622 642 2642 2622) +4(641 2641 2642 642) +4(623 643 2643 2623) +4(642 2642 2643 643) +4(624 644 2644 2624) +4(643 2643 2644 644) +4(625 645 2645 2625) +4(644 2644 2645 645) +4(626 646 2646 2626) +4(645 2645 2646 646) +4(627 647 2647 2627) +4(646 2646 2647 647) +4(628 648 2648 2628) +4(647 2647 2648 648) +4(629 649 2649 2629) +4(648 2648 2649 649) +4(630 650 2650 2630) +4(649 2649 2650 650) +4(631 651 2651 2631) +4(650 2650 2651 651) +4(632 652 2652 2632) +4(651 2651 2652 652) +4(633 653 2653 2633) +4(652 2652 2653 653) +4(634 654 2654 2634) +4(653 2653 2654 654) +4(635 655 2655 2635) +4(654 2654 2655 655) +4(636 656 2656 2636) +4(655 2655 2656 656) +4(637 657 2657 2637) +4(656 2656 2657 657) +4(638 658 2658 2638) +4(657 2657 2658 658) +4(658 2658 2659 659) +4(641 661 2661 2641) +4(660 2660 2661 661) +4(642 662 2662 2642) +4(661 2661 2662 662) +4(643 663 2663 2643) +4(662 2662 2663 663) +4(644 664 2664 2644) +4(663 2663 2664 664) +4(645 665 2665 2645) +4(664 2664 2665 665) +4(646 666 2666 2646) +4(665 2665 2666 666) +4(647 667 2667 2647) +4(666 2666 2667 667) +4(648 668 2668 2648) +4(667 2667 2668 668) +4(649 669 2669 2649) +4(668 2668 2669 669) +4(650 670 2670 2650) +4(669 2669 2670 670) +4(651 671 2671 2651) +4(670 2670 2671 671) +4(652 672 2672 2652) +4(671 2671 2672 672) +4(653 673 2673 2653) +4(672 2672 2673 673) +4(654 674 2674 2654) +4(673 2673 2674 674) +4(655 675 2675 2655) +4(674 2674 2675 675) +4(656 676 2676 2656) +4(675 2675 2676 676) +4(657 677 2677 2657) +4(676 2676 2677 677) +4(658 678 2678 2658) +4(677 2677 2678 678) +4(678 2678 2679 679) +4(661 681 2681 2661) +4(680 2680 2681 681) +4(662 682 2682 2662) +4(681 2681 2682 682) +4(663 683 2683 2663) +4(682 2682 2683 683) +4(664 684 2684 2664) +4(683 2683 2684 684) +4(665 685 2685 2665) +4(684 2684 2685 685) +4(666 686 2686 2666) +4(685 2685 2686 686) +4(667 687 2687 2667) +4(686 2686 2687 687) +4(668 688 2688 2668) +4(687 2687 2688 688) +4(669 689 2689 2669) +4(688 2688 2689 689) +4(670 690 2690 2670) +4(689 2689 2690 690) +4(671 691 2691 2671) +4(690 2690 2691 691) +4(672 692 2692 2672) +4(691 2691 2692 692) +4(673 693 2693 2673) +4(692 2692 2693 693) +4(674 694 2694 2674) +4(693 2693 2694 694) +4(675 695 2695 2675) +4(694 2694 2695 695) +4(676 696 2696 2676) +4(695 2695 2696 696) +4(677 697 2697 2677) +4(696 2696 2697 697) +4(678 698 2698 2678) +4(697 2697 2698 698) +4(698 2698 2699 699) +4(681 701 2701 2681) +4(700 2700 2701 701) +4(682 702 2702 2682) +4(701 2701 2702 702) +4(683 703 2703 2683) +4(702 2702 2703 703) +4(684 704 2704 2684) +4(703 2703 2704 704) +4(685 705 2705 2685) +4(704 2704 2705 705) +4(686 706 2706 2686) +4(705 2705 2706 706) +4(687 707 2707 2687) +4(706 2706 2707 707) +4(688 708 2708 2688) +4(707 2707 2708 708) +4(689 709 2709 2689) +4(708 2708 2709 709) +4(690 710 2710 2690) +4(709 2709 2710 710) +4(691 711 2711 2691) +4(710 2710 2711 711) +4(692 712 2712 2692) +4(711 2711 2712 712) +4(693 713 2713 2693) +4(712 2712 2713 713) +4(694 714 2714 2694) +4(713 2713 2714 714) +4(695 715 2715 2695) +4(714 2714 2715 715) +4(696 716 2716 2696) +4(715 2715 2716 716) +4(697 717 2717 2697) +4(716 2716 2717 717) +4(698 718 2718 2698) +4(717 2717 2718 718) +4(718 2718 2719 719) +4(701 721 2721 2701) +4(720 2720 2721 721) +4(702 722 2722 2702) +4(721 2721 2722 722) +4(703 723 2723 2703) +4(722 2722 2723 723) +4(704 724 2724 2704) +4(723 2723 2724 724) +4(705 725 2725 2705) +4(724 2724 2725 725) +4(706 726 2726 2706) +4(725 2725 2726 726) +4(707 727 2727 2707) +4(726 2726 2727 727) +4(708 728 2728 2708) +4(727 2727 2728 728) +4(709 729 2729 2709) +4(728 2728 2729 729) +4(710 730 2730 2710) +4(729 2729 2730 730) +4(711 731 2731 2711) +4(730 2730 2731 731) +4(712 732 2732 2712) +4(731 2731 2732 732) +4(713 733 2733 2713) +4(732 2732 2733 733) +4(714 734 2734 2714) +4(733 2733 2734 734) +4(715 735 2735 2715) +4(734 2734 2735 735) +4(716 736 2736 2716) +4(735 2735 2736 736) +4(717 737 2737 2717) +4(736 2736 2737 737) +4(718 738 2738 2718) +4(737 2737 2738 738) +4(738 2738 2739 739) +4(721 741 2741 2721) +4(740 2740 2741 741) +4(722 742 2742 2722) +4(741 2741 2742 742) +4(723 743 2743 2723) +4(742 2742 2743 743) +4(724 744 2744 2724) +4(743 2743 2744 744) +4(725 745 2745 2725) +4(744 2744 2745 745) +4(726 746 2746 2726) +4(745 2745 2746 746) +4(727 747 2747 2727) +4(746 2746 2747 747) +4(728 748 2748 2728) +4(747 2747 2748 748) +4(729 749 2749 2729) +4(748 2748 2749 749) +4(730 750 2750 2730) +4(749 2749 2750 750) +4(731 751 2751 2731) +4(750 2750 2751 751) +4(732 752 2752 2732) +4(751 2751 2752 752) +4(733 753 2753 2733) +4(752 2752 2753 753) +4(734 754 2754 2734) +4(753 2753 2754 754) +4(735 755 2755 2735) +4(754 2754 2755 755) +4(736 756 2756 2736) +4(755 2755 2756 756) +4(737 757 2757 2737) +4(756 2756 2757 757) +4(738 758 2758 2738) +4(757 2757 2758 758) +4(758 2758 2759 759) +4(741 761 2761 2741) +4(760 2760 2761 761) +4(742 762 2762 2742) +4(761 2761 2762 762) +4(743 763 2763 2743) +4(762 2762 2763 763) +4(744 764 2764 2744) +4(763 2763 2764 764) +4(745 765 2765 2745) +4(764 2764 2765 765) +4(746 766 2766 2746) +4(765 2765 2766 766) +4(747 767 2767 2747) +4(766 2766 2767 767) +4(748 768 2768 2748) +4(767 2767 2768 768) +4(749 769 2769 2749) +4(768 2768 2769 769) +4(750 770 2770 2750) +4(769 2769 2770 770) +4(751 771 2771 2751) +4(770 2770 2771 771) +4(752 772 2772 2752) +4(771 2771 2772 772) +4(753 773 2773 2753) +4(772 2772 2773 773) +4(754 774 2774 2754) +4(773 2773 2774 774) +4(755 775 2775 2755) +4(774 2774 2775 775) +4(756 776 2776 2756) +4(775 2775 2776 776) +4(757 777 2777 2757) +4(776 2776 2777 777) +4(758 778 2778 2758) +4(777 2777 2778 778) +4(778 2778 2779 779) +4(761 781 2781 2761) +4(780 2780 2781 781) +4(762 782 2782 2762) +4(781 2781 2782 782) +4(763 783 2783 2763) +4(782 2782 2783 783) +4(764 784 2784 2764) +4(783 2783 2784 784) +4(765 785 2785 2765) +4(784 2784 2785 785) +4(766 786 2786 2766) +4(785 2785 2786 786) +4(767 787 2787 2767) +4(786 2786 2787 787) +4(768 788 2788 2768) +4(787 2787 2788 788) +4(769 789 2789 2769) +4(788 2788 2789 789) +4(770 790 2790 2770) +4(789 2789 2790 790) +4(771 791 2791 2771) +4(790 2790 2791 791) +4(772 792 2792 2772) +4(791 2791 2792 792) +4(773 793 2793 2773) +4(792 2792 2793 793) +4(774 794 2794 2774) +4(793 2793 2794 794) +4(775 795 2795 2775) +4(794 2794 2795 795) +4(776 796 2796 2776) +4(795 2795 2796 796) +4(777 797 2797 2777) +4(796 2796 2797 797) +4(778 798 2798 2778) +4(797 2797 2798 798) +4(798 2798 2799 799) +4(781 801 2801 2781) +4(800 2800 2801 801) +4(782 802 2802 2782) +4(801 2801 2802 802) +4(783 803 2803 2783) +4(802 2802 2803 803) +4(784 804 2804 2784) +4(803 2803 2804 804) +4(785 805 2805 2785) +4(804 2804 2805 805) +4(786 806 2806 2786) +4(805 2805 2806 806) +4(787 807 2807 2787) +4(806 2806 2807 807) +4(788 808 2808 2788) +4(807 2807 2808 808) +4(789 809 2809 2789) +4(808 2808 2809 809) +4(790 810 2810 2790) +4(809 2809 2810 810) +4(791 811 2811 2791) +4(810 2810 2811 811) +4(792 812 2812 2792) +4(811 2811 2812 812) +4(793 813 2813 2793) +4(812 2812 2813 813) +4(794 814 2814 2794) +4(813 2813 2814 814) +4(795 815 2815 2795) +4(814 2814 2815 815) +4(796 816 2816 2796) +4(815 2815 2816 816) +4(797 817 2817 2797) +4(816 2816 2817 817) +4(798 818 2818 2798) +4(817 2817 2818 818) +4(818 2818 2819 819) +4(801 821 2821 2801) +4(820 2820 2821 821) +4(802 822 2822 2802) +4(821 2821 2822 822) +4(803 823 2823 2803) +4(822 2822 2823 823) +4(804 824 2824 2804) +4(823 2823 2824 824) +4(805 825 2825 2805) +4(824 2824 2825 825) +4(806 826 2826 2806) +4(825 2825 2826 826) +4(807 827 2827 2807) +4(826 2826 2827 827) +4(808 828 2828 2808) +4(827 2827 2828 828) +4(809 829 2829 2809) +4(828 2828 2829 829) +4(810 830 2830 2810) +4(829 2829 2830 830) +4(811 831 2831 2811) +4(830 2830 2831 831) +4(812 832 2832 2812) +4(831 2831 2832 832) +4(813 833 2833 2813) +4(832 2832 2833 833) +4(814 834 2834 2814) +4(833 2833 2834 834) +4(815 835 2835 2815) +4(834 2834 2835 835) +4(816 836 2836 2816) +4(835 2835 2836 836) +4(817 837 2837 2817) +4(836 2836 2837 837) +4(818 838 2838 2818) +4(837 2837 2838 838) +4(838 2838 2839 839) +4(821 841 2841 2821) +4(840 2840 2841 841) +4(822 842 2842 2822) +4(841 2841 2842 842) +4(823 843 2843 2823) +4(842 2842 2843 843) +4(824 844 2844 2824) +4(843 2843 2844 844) +4(825 845 2845 2825) +4(844 2844 2845 845) +4(826 846 2846 2826) +4(845 2845 2846 846) +4(827 847 2847 2827) +4(846 2846 2847 847) +4(828 848 2848 2828) +4(847 2847 2848 848) +4(829 849 2849 2829) +4(848 2848 2849 849) +4(830 850 2850 2830) +4(849 2849 2850 850) +4(831 851 2851 2831) +4(850 2850 2851 851) +4(832 852 2852 2832) +4(851 2851 2852 852) +4(833 853 2853 2833) +4(852 2852 2853 853) +4(834 854 2854 2834) +4(853 2853 2854 854) +4(835 855 2855 2835) +4(854 2854 2855 855) +4(836 856 2856 2836) +4(855 2855 2856 856) +4(837 857 2857 2837) +4(856 2856 2857 857) +4(838 858 2858 2838) +4(857 2857 2858 858) +4(858 2858 2859 859) +4(841 861 2861 2841) +4(860 2860 2861 861) +4(842 862 2862 2842) +4(861 2861 2862 862) +4(843 863 2863 2843) +4(862 2862 2863 863) +4(844 864 2864 2844) +4(863 2863 2864 864) +4(845 865 2865 2845) +4(864 2864 2865 865) +4(846 866 2866 2846) +4(865 2865 2866 866) +4(847 867 2867 2847) +4(866 2866 2867 867) +4(848 868 2868 2848) +4(867 2867 2868 868) +4(849 869 2869 2849) +4(868 2868 2869 869) +4(850 870 2870 2850) +4(869 2869 2870 870) +4(851 871 2871 2851) +4(870 2870 2871 871) +4(852 872 2872 2852) +4(871 2871 2872 872) +4(853 873 2873 2853) +4(872 2872 2873 873) +4(854 874 2874 2854) +4(873 2873 2874 874) +4(855 875 2875 2855) +4(874 2874 2875 875) +4(856 876 2876 2856) +4(875 2875 2876 876) +4(857 877 2877 2857) +4(876 2876 2877 877) +4(858 878 2878 2858) +4(877 2877 2878 878) +4(878 2878 2879 879) +4(861 881 2881 2861) +4(880 2880 2881 881) +4(862 882 2882 2862) +4(881 2881 2882 882) +4(863 883 2883 2863) +4(882 2882 2883 883) +4(864 884 2884 2864) +4(883 2883 2884 884) +4(865 885 2885 2865) +4(884 2884 2885 885) +4(866 886 2886 2866) +4(885 2885 2886 886) +4(867 887 2887 2867) +4(886 2886 2887 887) +4(868 888 2888 2868) +4(887 2887 2888 888) +4(869 889 2889 2869) +4(888 2888 2889 889) +4(870 890 2890 2870) +4(889 2889 2890 890) +4(871 891 2891 2871) +4(890 2890 2891 891) +4(872 892 2892 2872) +4(891 2891 2892 892) +4(873 893 2893 2873) +4(892 2892 2893 893) +4(874 894 2894 2874) +4(893 2893 2894 894) +4(875 895 2895 2875) +4(894 2894 2895 895) +4(876 896 2896 2876) +4(895 2895 2896 896) +4(877 897 2897 2877) +4(896 2896 2897 897) +4(878 898 2898 2878) +4(897 2897 2898 898) +4(898 2898 2899 899) +4(881 901 2901 2881) +4(900 2900 2901 901) +4(882 902 2902 2882) +4(901 2901 2902 902) +4(883 903 2903 2883) +4(902 2902 2903 903) +4(884 904 2904 2884) +4(903 2903 2904 904) +4(885 905 2905 2885) +4(904 2904 2905 905) +4(886 906 2906 2886) +4(905 2905 2906 906) +4(887 907 2907 2887) +4(906 2906 2907 907) +4(888 908 2908 2888) +4(907 2907 2908 908) +4(889 909 2909 2889) +4(908 2908 2909 909) +4(890 910 2910 2890) +4(909 2909 2910 910) +4(891 911 2911 2891) +4(910 2910 2911 911) +4(892 912 2912 2892) +4(911 2911 2912 912) +4(893 913 2913 2893) +4(912 2912 2913 913) +4(894 914 2914 2894) +4(913 2913 2914 914) +4(895 915 2915 2895) +4(914 2914 2915 915) +4(896 916 2916 2896) +4(915 2915 2916 916) +4(897 917 2917 2897) +4(916 2916 2917 917) +4(898 918 2918 2898) +4(917 2917 2918 918) +4(918 2918 2919 919) +4(901 921 2921 2901) +4(920 2920 2921 921) +4(902 922 2922 2902) +4(921 2921 2922 922) +4(903 923 2923 2903) +4(922 2922 2923 923) +4(904 924 2924 2904) +4(923 2923 2924 924) +4(905 925 2925 2905) +4(924 2924 2925 925) +4(906 926 2926 2906) +4(925 2925 2926 926) +4(907 927 2927 2907) +4(926 2926 2927 927) +4(908 928 2928 2908) +4(927 2927 2928 928) +4(909 929 2929 2909) +4(928 2928 2929 929) +4(910 930 2930 2910) +4(929 2929 2930 930) +4(911 931 2931 2911) +4(930 2930 2931 931) +4(912 932 2932 2912) +4(931 2931 2932 932) +4(913 933 2933 2913) +4(932 2932 2933 933) +4(914 934 2934 2914) +4(933 2933 2934 934) +4(915 935 2935 2915) +4(934 2934 2935 935) +4(916 936 2936 2916) +4(935 2935 2936 936) +4(917 937 2937 2917) +4(936 2936 2937 937) +4(918 938 2938 2918) +4(937 2937 2938 938) +4(938 2938 2939 939) +4(921 941 2941 2921) +4(940 2940 2941 941) +4(922 942 2942 2922) +4(941 2941 2942 942) +4(923 943 2943 2923) +4(942 2942 2943 943) +4(924 944 2944 2924) +4(943 2943 2944 944) +4(925 945 2945 2925) +4(944 2944 2945 945) +4(926 946 2946 2926) +4(945 2945 2946 946) +4(927 947 2947 2927) +4(946 2946 2947 947) +4(928 948 2948 2928) +4(947 2947 2948 948) +4(929 949 2949 2929) +4(948 2948 2949 949) +4(930 950 2950 2930) +4(949 2949 2950 950) +4(931 951 2951 2931) +4(950 2950 2951 951) +4(932 952 2952 2932) +4(951 2951 2952 952) +4(933 953 2953 2933) +4(952 2952 2953 953) +4(934 954 2954 2934) +4(953 2953 2954 954) +4(935 955 2955 2935) +4(954 2954 2955 955) +4(936 956 2956 2936) +4(955 2955 2956 956) +4(937 957 2957 2937) +4(956 2956 2957 957) +4(938 958 2958 2938) +4(957 2957 2958 958) +4(958 2958 2959 959) +4(941 961 2961 2941) +4(960 2960 2961 961) +4(942 962 2962 2942) +4(961 2961 2962 962) +4(943 963 2963 2943) +4(962 2962 2963 963) +4(944 964 2964 2944) +4(963 2963 2964 964) +4(945 965 2965 2945) +4(964 2964 2965 965) +4(946 966 2966 2946) +4(965 2965 2966 966) +4(947 967 2967 2947) +4(966 2966 2967 967) +4(948 968 2968 2948) +4(967 2967 2968 968) +4(949 969 2969 2949) +4(968 2968 2969 969) +4(950 970 2970 2950) +4(969 2969 2970 970) +4(951 971 2971 2951) +4(970 2970 2971 971) +4(952 972 2972 2952) +4(971 2971 2972 972) +4(953 973 2973 2953) +4(972 2972 2973 973) +4(954 974 2974 2954) +4(973 2973 2974 974) +4(955 975 2975 2955) +4(974 2974 2975 975) +4(956 976 2976 2956) +4(975 2975 2976 976) +4(957 977 2977 2957) +4(976 2976 2977 977) +4(958 978 2978 2958) +4(977 2977 2978 978) +4(978 2978 2979 979) +4(961 981 2981 2961) +4(980 2980 2981 981) +4(962 982 2982 2962) +4(981 2981 2982 982) +4(963 983 2983 2963) +4(982 2982 2983 983) +4(964 984 2984 2964) +4(983 2983 2984 984) +4(965 985 2985 2965) +4(984 2984 2985 985) +4(966 986 2986 2966) +4(985 2985 2986 986) +4(967 987 2987 2967) +4(986 2986 2987 987) +4(968 988 2988 2968) +4(987 2987 2988 988) +4(969 989 2989 2969) +4(988 2988 2989 989) +4(970 990 2990 2970) +4(989 2989 2990 990) +4(971 991 2991 2971) +4(990 2990 2991 991) +4(972 992 2992 2972) +4(991 2991 2992 992) +4(973 993 2993 2973) +4(992 2992 2993 993) +4(974 994 2994 2974) +4(993 2993 2994 994) +4(975 995 2995 2975) +4(994 2994 2995 995) +4(976 996 2996 2976) +4(995 2995 2996 996) +4(977 997 2997 2977) +4(996 2996 2997 997) +4(978 998 2998 2978) +4(997 2997 2998 998) +4(998 2998 2999 999) +4(981 1001 3001 2981) +4(1000 3000 3001 1001) +4(982 1002 3002 2982) +4(1001 3001 3002 1002) +4(983 1003 3003 2983) +4(1002 3002 3003 1003) +4(984 1004 3004 2984) +4(1003 3003 3004 1004) +4(985 1005 3005 2985) +4(1004 3004 3005 1005) +4(986 1006 3006 2986) +4(1005 3005 3006 1006) +4(987 1007 3007 2987) +4(1006 3006 3007 1007) +4(988 1008 3008 2988) +4(1007 3007 3008 1008) +4(989 1009 3009 2989) +4(1008 3008 3009 1009) +4(990 1010 3010 2990) +4(1009 3009 3010 1010) +4(991 1011 3011 2991) +4(1010 3010 3011 1011) +4(992 1012 3012 2992) +4(1011 3011 3012 1012) +4(993 1013 3013 2993) +4(1012 3012 3013 1013) +4(994 1014 3014 2994) +4(1013 3013 3014 1014) +4(995 1015 3015 2995) +4(1014 3014 3015 1015) +4(996 1016 3016 2996) +4(1015 3015 3016 1016) +4(997 1017 3017 2997) +4(1016 3016 3017 1017) +4(998 1018 3018 2998) +4(1017 3017 3018 1018) +4(1018 3018 3019 1019) +4(1001 1021 3021 3001) +4(1020 3020 3021 1021) +4(1002 1022 3022 3002) +4(1021 3021 3022 1022) +4(1003 1023 3023 3003) +4(1022 3022 3023 1023) +4(1004 1024 3024 3004) +4(1023 3023 3024 1024) +4(1005 1025 3025 3005) +4(1024 3024 3025 1025) +4(1006 1026 3026 3006) +4(1025 3025 3026 1026) +4(1007 1027 3027 3007) +4(1026 3026 3027 1027) +4(1008 1028 3028 3008) +4(1027 3027 3028 1028) +4(1009 1029 3029 3009) +4(1028 3028 3029 1029) +4(1010 1030 3030 3010) +4(1029 3029 3030 1030) +4(1011 1031 3031 3011) +4(1030 3030 3031 1031) +4(1012 1032 3032 3012) +4(1031 3031 3032 1032) +4(1013 1033 3033 3013) +4(1032 3032 3033 1033) +4(1014 1034 3034 3014) +4(1033 3033 3034 1034) +4(1015 1035 3035 3015) +4(1034 3034 3035 1035) +4(1016 1036 3036 3016) +4(1035 3035 3036 1036) +4(1017 1037 3037 3017) +4(1036 3036 3037 1037) +4(1018 1038 3038 3018) +4(1037 3037 3038 1038) +4(1038 3038 3039 1039) +4(1021 1041 3041 3021) +4(1040 3040 3041 1041) +4(1022 1042 3042 3022) +4(1041 3041 3042 1042) +4(1023 1043 3043 3023) +4(1042 3042 3043 1043) +4(1024 1044 3044 3024) +4(1043 3043 3044 1044) +4(1025 1045 3045 3025) +4(1044 3044 3045 1045) +4(1026 1046 3046 3026) +4(1045 3045 3046 1046) +4(1027 1047 3047 3027) +4(1046 3046 3047 1047) +4(1028 1048 3048 3028) +4(1047 3047 3048 1048) +4(1029 1049 3049 3029) +4(1048 3048 3049 1049) +4(1030 1050 3050 3030) +4(1049 3049 3050 1050) +4(1031 1051 3051 3031) +4(1050 3050 3051 1051) +4(1032 1052 3052 3032) +4(1051 3051 3052 1052) +4(1033 1053 3053 3033) +4(1052 3052 3053 1053) +4(1034 1054 3054 3034) +4(1053 3053 3054 1054) +4(1035 1055 3055 3035) +4(1054 3054 3055 1055) +4(1036 1056 3056 3036) +4(1055 3055 3056 1056) +4(1037 1057 3057 3037) +4(1056 3056 3057 1057) +4(1038 1058 3058 3038) +4(1057 3057 3058 1058) +4(1058 3058 3059 1059) +4(1041 1061 3061 3041) +4(1060 3060 3061 1061) +4(1042 1062 3062 3042) +4(1061 3061 3062 1062) +4(1043 1063 3063 3043) +4(1062 3062 3063 1063) +4(1044 1064 3064 3044) +4(1063 3063 3064 1064) +4(1045 1065 3065 3045) +4(1064 3064 3065 1065) +4(1046 1066 3066 3046) +4(1065 3065 3066 1066) +4(1047 1067 3067 3047) +4(1066 3066 3067 1067) +4(1048 1068 3068 3048) +4(1067 3067 3068 1068) +4(1049 1069 3069 3049) +4(1068 3068 3069 1069) +4(1050 1070 3070 3050) +4(1069 3069 3070 1070) +4(1051 1071 3071 3051) +4(1070 3070 3071 1071) +4(1052 1072 3072 3052) +4(1071 3071 3072 1072) +4(1053 1073 3073 3053) +4(1072 3072 3073 1073) +4(1054 1074 3074 3054) +4(1073 3073 3074 1074) +4(1055 1075 3075 3055) +4(1074 3074 3075 1075) +4(1056 1076 3076 3056) +4(1075 3075 3076 1076) +4(1057 1077 3077 3057) +4(1076 3076 3077 1077) +4(1058 1078 3078 3058) +4(1077 3077 3078 1078) +4(1078 3078 3079 1079) +4(1061 1081 3081 3061) +4(1080 3080 3081 1081) +4(1062 1082 3082 3062) +4(1081 3081 3082 1082) +4(1063 1083 3083 3063) +4(1082 3082 3083 1083) +4(1064 1084 3084 3064) +4(1083 3083 3084 1084) +4(1065 1085 3085 3065) +4(1084 3084 3085 1085) +4(1066 1086 3086 3066) +4(1085 3085 3086 1086) +4(1067 1087 3087 3067) +4(1086 3086 3087 1087) +4(1068 1088 3088 3068) +4(1087 3087 3088 1088) +4(1069 1089 3089 3069) +4(1088 3088 3089 1089) +4(1070 1090 3090 3070) +4(1089 3089 3090 1090) +4(1071 1091 3091 3071) +4(1090 3090 3091 1091) +4(1072 1092 3092 3072) +4(1091 3091 3092 1092) +4(1073 1093 3093 3073) +4(1092 3092 3093 1093) +4(1074 1094 3094 3074) +4(1093 3093 3094 1094) +4(1075 1095 3095 3075) +4(1094 3094 3095 1095) +4(1076 1096 3096 3076) +4(1095 3095 3096 1096) +4(1077 1097 3097 3077) +4(1096 3096 3097 1097) +4(1078 1098 3098 3078) +4(1097 3097 3098 1098) +4(1098 3098 3099 1099) +4(1081 1101 3101 3081) +4(1100 3100 3101 1101) +4(1082 1102 3102 3082) +4(1101 3101 3102 1102) +4(1083 1103 3103 3083) +4(1102 3102 3103 1103) +4(1084 1104 3104 3084) +4(1103 3103 3104 1104) +4(1085 1105 3105 3085) +4(1104 3104 3105 1105) +4(1086 1106 3106 3086) +4(1105 3105 3106 1106) +4(1087 1107 3107 3087) +4(1106 3106 3107 1107) +4(1088 1108 3108 3088) +4(1107 3107 3108 1108) +4(1089 1109 3109 3089) +4(1108 3108 3109 1109) +4(1090 1110 3110 3090) +4(1109 3109 3110 1110) +4(1091 1111 3111 3091) +4(1110 3110 3111 1111) +4(1092 1112 3112 3092) +4(1111 3111 3112 1112) +4(1093 1113 3113 3093) +4(1112 3112 3113 1113) +4(1094 1114 3114 3094) +4(1113 3113 3114 1114) +4(1095 1115 3115 3095) +4(1114 3114 3115 1115) +4(1096 1116 3116 3096) +4(1115 3115 3116 1116) +4(1097 1117 3117 3097) +4(1116 3116 3117 1117) +4(1098 1118 3118 3098) +4(1117 3117 3118 1118) +4(1118 3118 3119 1119) +4(1101 1121 3121 3101) +4(1120 3120 3121 1121) +4(1102 1122 3122 3102) +4(1121 3121 3122 1122) +4(1103 1123 3123 3103) +4(1122 3122 3123 1123) +4(1104 1124 3124 3104) +4(1123 3123 3124 1124) +4(1105 1125 3125 3105) +4(1124 3124 3125 1125) +4(1106 1126 3126 3106) +4(1125 3125 3126 1126) +4(1107 1127 3127 3107) +4(1126 3126 3127 1127) +4(1108 1128 3128 3108) +4(1127 3127 3128 1128) +4(1109 1129 3129 3109) +4(1128 3128 3129 1129) +4(1110 1130 3130 3110) +4(1129 3129 3130 1130) +4(1111 1131 3131 3111) +4(1130 3130 3131 1131) +4(1112 1132 3132 3112) +4(1131 3131 3132 1132) +4(1113 1133 3133 3113) +4(1132 3132 3133 1133) +4(1114 1134 3134 3114) +4(1133 3133 3134 1134) +4(1115 1135 3135 3115) +4(1134 3134 3135 1135) +4(1116 1136 3136 3116) +4(1135 3135 3136 1136) +4(1117 1137 3137 3117) +4(1136 3136 3137 1137) +4(1118 1138 3138 3118) +4(1137 3137 3138 1138) +4(1138 3138 3139 1139) +4(1121 1141 3141 3121) +4(1140 3140 3141 1141) +4(1122 1142 3142 3122) +4(1141 3141 3142 1142) +4(1123 1143 3143 3123) +4(1142 3142 3143 1143) +4(1124 1144 3144 3124) +4(1143 3143 3144 1144) +4(1125 1145 3145 3125) +4(1144 3144 3145 1145) +4(1126 1146 3146 3126) +4(1145 3145 3146 1146) +4(1127 1147 3147 3127) +4(1146 3146 3147 1147) +4(1128 1148 3148 3128) +4(1147 3147 3148 1148) +4(1129 1149 3149 3129) +4(1148 3148 3149 1149) +4(1130 1150 3150 3130) +4(1149 3149 3150 1150) +4(1131 1151 3151 3131) +4(1150 3150 3151 1151) +4(1132 1152 3152 3132) +4(1151 3151 3152 1152) +4(1133 1153 3153 3133) +4(1152 3152 3153 1153) +4(1134 1154 3154 3134) +4(1153 3153 3154 1154) +4(1135 1155 3155 3135) +4(1154 3154 3155 1155) +4(1136 1156 3156 3136) +4(1155 3155 3156 1156) +4(1137 1157 3157 3137) +4(1156 3156 3157 1157) +4(1138 1158 3158 3138) +4(1157 3157 3158 1158) +4(1158 3158 3159 1159) +4(1141 1161 3161 3141) +4(1160 3160 3161 1161) +4(1142 1162 3162 3142) +4(1161 3161 3162 1162) +4(1143 1163 3163 3143) +4(1162 3162 3163 1163) +4(1144 1164 3164 3144) +4(1163 3163 3164 1164) +4(1145 1165 3165 3145) +4(1164 3164 3165 1165) +4(1146 1166 3166 3146) +4(1165 3165 3166 1166) +4(1147 1167 3167 3147) +4(1166 3166 3167 1167) +4(1148 1168 3168 3148) +4(1167 3167 3168 1168) +4(1149 1169 3169 3149) +4(1168 3168 3169 1169) +4(1150 1170 3170 3150) +4(1169 3169 3170 1170) +4(1151 1171 3171 3151) +4(1170 3170 3171 1171) +4(1152 1172 3172 3152) +4(1171 3171 3172 1172) +4(1153 1173 3173 3153) +4(1172 3172 3173 1173) +4(1154 1174 3174 3154) +4(1173 3173 3174 1174) +4(1155 1175 3175 3155) +4(1174 3174 3175 1175) +4(1156 1176 3176 3156) +4(1175 3175 3176 1176) +4(1157 1177 3177 3157) +4(1176 3176 3177 1177) +4(1158 1178 3178 3158) +4(1177 3177 3178 1178) +4(1178 3178 3179 1179) +4(1161 1181 3181 3161) +4(1180 3180 3181 1181) +4(1162 1182 3182 3162) +4(1181 3181 3182 1182) +4(1163 1183 3183 3163) +4(1182 3182 3183 1183) +4(1164 1184 3184 3164) +4(1183 3183 3184 1184) +4(1165 1185 3185 3165) +4(1184 3184 3185 1185) +4(1166 1186 3186 3166) +4(1185 3185 3186 1186) +4(1167 1187 3187 3167) +4(1186 3186 3187 1187) +4(1168 1188 3188 3168) +4(1187 3187 3188 1188) +4(1169 1189 3189 3169) +4(1188 3188 3189 1189) +4(1170 1190 3190 3170) +4(1189 3189 3190 1190) +4(1171 1191 3191 3171) +4(1190 3190 3191 1191) +4(1172 1192 3192 3172) +4(1191 3191 3192 1192) +4(1173 1193 3193 3173) +4(1192 3192 3193 1193) +4(1174 1194 3194 3174) +4(1193 3193 3194 1194) +4(1175 1195 3195 3175) +4(1194 3194 3195 1195) +4(1176 1196 3196 3176) +4(1195 3195 3196 1196) +4(1177 1197 3197 3177) +4(1196 3196 3197 1197) +4(1178 1198 3198 3178) +4(1197 3197 3198 1198) +4(1198 3198 3199 1199) +4(1181 1201 3201 3181) +4(1200 3200 3201 1201) +4(1182 1202 3202 3182) +4(1201 3201 3202 1202) +4(1183 1203 3203 3183) +4(1202 3202 3203 1203) +4(1184 1204 3204 3184) +4(1203 3203 3204 1204) +4(1185 1205 3205 3185) +4(1204 3204 3205 1205) +4(1186 1206 3206 3186) +4(1205 3205 3206 1206) +4(1187 1207 3207 3187) +4(1206 3206 3207 1207) +4(1188 1208 3208 3188) +4(1207 3207 3208 1208) +4(1189 1209 3209 3189) +4(1208 3208 3209 1209) +4(1190 1210 3210 3190) +4(1209 3209 3210 1210) +4(1191 1211 3211 3191) +4(1210 3210 3211 1211) +4(1192 1212 3212 3192) +4(1211 3211 3212 1212) +4(1193 1213 3213 3193) +4(1212 3212 3213 1213) +4(1194 1214 3214 3194) +4(1213 3213 3214 1214) +4(1195 1215 3215 3195) +4(1214 3214 3215 1215) +4(1196 1216 3216 3196) +4(1215 3215 3216 1216) +4(1197 1217 3217 3197) +4(1216 3216 3217 1217) +4(1198 1218 3218 3198) +4(1217 3217 3218 1218) +4(1218 3218 3219 1219) +4(1201 1221 3221 3201) +4(1220 3220 3221 1221) +4(1202 1222 3222 3202) +4(1221 3221 3222 1222) +4(1203 1223 3223 3203) +4(1222 3222 3223 1223) +4(1204 1224 3224 3204) +4(1223 3223 3224 1224) +4(1205 1225 3225 3205) +4(1224 3224 3225 1225) +4(1206 1226 3226 3206) +4(1225 3225 3226 1226) +4(1207 1227 3227 3207) +4(1226 3226 3227 1227) +4(1208 1228 3228 3208) +4(1227 3227 3228 1228) +4(1209 1229 3229 3209) +4(1228 3228 3229 1229) +4(1210 1230 3230 3210) +4(1229 3229 3230 1230) +4(1211 1231 3231 3211) +4(1230 3230 3231 1231) +4(1212 1232 3232 3212) +4(1231 3231 3232 1232) +4(1213 1233 3233 3213) +4(1232 3232 3233 1233) +4(1214 1234 3234 3214) +4(1233 3233 3234 1234) +4(1215 1235 3235 3215) +4(1234 3234 3235 1235) +4(1216 1236 3236 3216) +4(1235 3235 3236 1236) +4(1217 1237 3237 3217) +4(1236 3236 3237 1237) +4(1218 1238 3238 3218) +4(1237 3237 3238 1238) +4(1238 3238 3239 1239) +4(1221 1241 3241 3221) +4(1240 3240 3241 1241) +4(1222 1242 3242 3222) +4(1241 3241 3242 1242) +4(1223 1243 3243 3223) +4(1242 3242 3243 1243) +4(1224 1244 3244 3224) +4(1243 3243 3244 1244) +4(1225 1245 3245 3225) +4(1244 3244 3245 1245) +4(1226 1246 3246 3226) +4(1245 3245 3246 1246) +4(1227 1247 3247 3227) +4(1246 3246 3247 1247) +4(1228 1248 3248 3228) +4(1247 3247 3248 1248) +4(1229 1249 3249 3229) +4(1248 3248 3249 1249) +4(1230 1250 3250 3230) +4(1249 3249 3250 1250) +4(1231 1251 3251 3231) +4(1250 3250 3251 1251) +4(1232 1252 3252 3232) +4(1251 3251 3252 1252) +4(1233 1253 3253 3233) +4(1252 3252 3253 1253) +4(1234 1254 3254 3234) +4(1253 3253 3254 1254) +4(1235 1255 3255 3235) +4(1254 3254 3255 1255) +4(1236 1256 3256 3236) +4(1255 3255 3256 1256) +4(1237 1257 3257 3237) +4(1256 3256 3257 1257) +4(1238 1258 3258 3238) +4(1257 3257 3258 1258) +4(1258 3258 3259 1259) +4(1241 1261 3261 3241) +4(1260 3260 3261 1261) +4(1242 1262 3262 3242) +4(1261 3261 3262 1262) +4(1243 1263 3263 3243) +4(1262 3262 3263 1263) +4(1244 1264 3264 3244) +4(1263 3263 3264 1264) +4(1245 1265 3265 3245) +4(1264 3264 3265 1265) +4(1246 1266 3266 3246) +4(1265 3265 3266 1266) +4(1247 1267 3267 3247) +4(1266 3266 3267 1267) +4(1248 1268 3268 3248) +4(1267 3267 3268 1268) +4(1249 1269 3269 3249) +4(1268 3268 3269 1269) +4(1250 1270 3270 3250) +4(1269 3269 3270 1270) +4(1251 1271 3271 3251) +4(1270 3270 3271 1271) +4(1252 1272 3272 3252) +4(1271 3271 3272 1272) +4(1253 1273 3273 3253) +4(1272 3272 3273 1273) +4(1254 1274 3274 3254) +4(1273 3273 3274 1274) +4(1255 1275 3275 3255) +4(1274 3274 3275 1275) +4(1256 1276 3276 3256) +4(1275 3275 3276 1276) +4(1257 1277 3277 3257) +4(1276 3276 3277 1277) +4(1258 1278 3278 3258) +4(1277 3277 3278 1278) +4(1278 3278 3279 1279) +4(1261 1281 3281 3261) +4(1280 3280 3281 1281) +4(1262 1282 3282 3262) +4(1281 3281 3282 1282) +4(1263 1283 3283 3263) +4(1282 3282 3283 1283) +4(1264 1284 3284 3264) +4(1283 3283 3284 1284) +4(1265 1285 3285 3265) +4(1284 3284 3285 1285) +4(1266 1286 3286 3266) +4(1285 3285 3286 1286) +4(1267 1287 3287 3267) +4(1286 3286 3287 1287) +4(1268 1288 3288 3268) +4(1287 3287 3288 1288) +4(1269 1289 3289 3269) +4(1288 3288 3289 1289) +4(1270 1290 3290 3270) +4(1289 3289 3290 1290) +4(1271 1291 3291 3271) +4(1290 3290 3291 1291) +4(1272 1292 3292 3272) +4(1291 3291 3292 1292) +4(1273 1293 3293 3273) +4(1292 3292 3293 1293) +4(1274 1294 3294 3274) +4(1293 3293 3294 1294) +4(1275 1295 3295 3275) +4(1294 3294 3295 1295) +4(1276 1296 3296 3276) +4(1295 3295 3296 1296) +4(1277 1297 3297 3277) +4(1296 3296 3297 1297) +4(1278 1298 3298 3278) +4(1297 3297 3298 1298) +4(1298 3298 3299 1299) +4(1281 1301 3301 3281) +4(1300 3300 3301 1301) +4(1282 1302 3302 3282) +4(1301 3301 3302 1302) +4(1283 1303 3303 3283) +4(1302 3302 3303 1303) +4(1284 1304 3304 3284) +4(1303 3303 3304 1304) +4(1285 1305 3305 3285) +4(1304 3304 3305 1305) +4(1286 1306 3306 3286) +4(1305 3305 3306 1306) +4(1287 1307 3307 3287) +4(1306 3306 3307 1307) +4(1288 1308 3308 3288) +4(1307 3307 3308 1308) +4(1289 1309 3309 3289) +4(1308 3308 3309 1309) +4(1290 1310 3310 3290) +4(1309 3309 3310 1310) +4(1291 1311 3311 3291) +4(1310 3310 3311 1311) +4(1292 1312 3312 3292) +4(1311 3311 3312 1312) +4(1293 1313 3313 3293) +4(1312 3312 3313 1313) +4(1294 1314 3314 3294) +4(1313 3313 3314 1314) +4(1295 1315 3315 3295) +4(1314 3314 3315 1315) +4(1296 1316 3316 3296) +4(1315 3315 3316 1316) +4(1297 1317 3317 3297) +4(1316 3316 3317 1317) +4(1298 1318 3318 3298) +4(1317 3317 3318 1318) +4(1318 3318 3319 1319) +4(1301 1321 3321 3301) +4(1320 3320 3321 1321) +4(1302 1322 3322 3302) +4(1321 3321 3322 1322) +4(1303 1323 3323 3303) +4(1322 3322 3323 1323) +4(1304 1324 3324 3304) +4(1323 3323 3324 1324) +4(1305 1325 3325 3305) +4(1324 3324 3325 1325) +4(1306 1326 3326 3306) +4(1325 3325 3326 1326) +4(1307 1327 3327 3307) +4(1326 3326 3327 1327) +4(1308 1328 3328 3308) +4(1327 3327 3328 1328) +4(1309 1329 3329 3309) +4(1328 3328 3329 1329) +4(1310 1330 3330 3310) +4(1329 3329 3330 1330) +4(1311 1331 3331 3311) +4(1330 3330 3331 1331) +4(1312 1332 3332 3312) +4(1331 3331 3332 1332) +4(1313 1333 3333 3313) +4(1332 3332 3333 1333) +4(1314 1334 3334 3314) +4(1333 3333 3334 1334) +4(1315 1335 3335 3315) +4(1334 3334 3335 1335) +4(1316 1336 3336 3316) +4(1335 3335 3336 1336) +4(1317 1337 3337 3317) +4(1336 3336 3337 1337) +4(1318 1338 3338 3318) +4(1337 3337 3338 1338) +4(1338 3338 3339 1339) +4(1321 1341 3341 3321) +4(1340 3340 3341 1341) +4(1322 1342 3342 3322) +4(1341 3341 3342 1342) +4(1323 1343 3343 3323) +4(1342 3342 3343 1343) +4(1324 1344 3344 3324) +4(1343 3343 3344 1344) +4(1325 1345 3345 3325) +4(1344 3344 3345 1345) +4(1326 1346 3346 3326) +4(1345 3345 3346 1346) +4(1327 1347 3347 3327) +4(1346 3346 3347 1347) +4(1328 1348 3348 3328) +4(1347 3347 3348 1348) +4(1329 1349 3349 3329) +4(1348 3348 3349 1349) +4(1330 1350 3350 3330) +4(1349 3349 3350 1350) +4(1331 1351 3351 3331) +4(1350 3350 3351 1351) +4(1332 1352 3352 3332) +4(1351 3351 3352 1352) +4(1333 1353 3353 3333) +4(1352 3352 3353 1353) +4(1334 1354 3354 3334) +4(1353 3353 3354 1354) +4(1335 1355 3355 3335) +4(1354 3354 3355 1355) +4(1336 1356 3356 3336) +4(1355 3355 3356 1356) +4(1337 1357 3357 3337) +4(1356 3356 3357 1357) +4(1338 1358 3358 3338) +4(1357 3357 3358 1358) +4(1358 3358 3359 1359) +4(1341 1361 3361 3341) +4(1360 3360 3361 1361) +4(1342 1362 3362 3342) +4(1361 3361 3362 1362) +4(1343 1363 3363 3343) +4(1362 3362 3363 1363) +4(1344 1364 3364 3344) +4(1363 3363 3364 1364) +4(1345 1365 3365 3345) +4(1364 3364 3365 1365) +4(1346 1366 3366 3346) +4(1365 3365 3366 1366) +4(1347 1367 3367 3347) +4(1366 3366 3367 1367) +4(1348 1368 3368 3348) +4(1367 3367 3368 1368) +4(1349 1369 3369 3349) +4(1368 3368 3369 1369) +4(1350 1370 3370 3350) +4(1369 3369 3370 1370) +4(1351 1371 3371 3351) +4(1370 3370 3371 1371) +4(1352 1372 3372 3352) +4(1371 3371 3372 1372) +4(1353 1373 3373 3353) +4(1372 3372 3373 1373) +4(1354 1374 3374 3354) +4(1373 3373 3374 1374) +4(1355 1375 3375 3355) +4(1374 3374 3375 1375) +4(1356 1376 3376 3356) +4(1375 3375 3376 1376) +4(1357 1377 3377 3357) +4(1376 3376 3377 1377) +4(1358 1378 3378 3358) +4(1377 3377 3378 1378) +4(1378 3378 3379 1379) +4(1361 1381 3381 3361) +4(1380 3380 3381 1381) +4(1362 1382 3382 3362) +4(1381 3381 3382 1382) +4(1363 1383 3383 3363) +4(1382 3382 3383 1383) +4(1364 1384 3384 3364) +4(1383 3383 3384 1384) +4(1365 1385 3385 3365) +4(1384 3384 3385 1385) +4(1366 1386 3386 3366) +4(1385 3385 3386 1386) +4(1367 1387 3387 3367) +4(1386 3386 3387 1387) +4(1368 1388 3388 3368) +4(1387 3387 3388 1388) +4(1369 1389 3389 3369) +4(1388 3388 3389 1389) +4(1370 1390 3390 3370) +4(1389 3389 3390 1390) +4(1371 1391 3391 3371) +4(1390 3390 3391 1391) +4(1372 1392 3392 3372) +4(1391 3391 3392 1392) +4(1373 1393 3393 3373) +4(1392 3392 3393 1393) +4(1374 1394 3394 3374) +4(1393 3393 3394 1394) +4(1375 1395 3395 3375) +4(1394 3394 3395 1395) +4(1376 1396 3396 3376) +4(1395 3395 3396 1396) +4(1377 1397 3397 3377) +4(1396 3396 3397 1397) +4(1378 1398 3398 3378) +4(1397 3397 3398 1398) +4(1398 3398 3399 1399) +4(1381 1401 3401 3381) +4(1400 3400 3401 1401) +4(1382 1402 3402 3382) +4(1401 3401 3402 1402) +4(1383 1403 3403 3383) +4(1402 3402 3403 1403) +4(1384 1404 3404 3384) +4(1403 3403 3404 1404) +4(1385 1405 3405 3385) +4(1404 3404 3405 1405) +4(1386 1406 3406 3386) +4(1405 3405 3406 1406) +4(1387 1407 3407 3387) +4(1406 3406 3407 1407) +4(1388 1408 3408 3388) +4(1407 3407 3408 1408) +4(1389 1409 3409 3389) +4(1408 3408 3409 1409) +4(1390 1410 3410 3390) +4(1409 3409 3410 1410) +4(1391 1411 3411 3391) +4(1410 3410 3411 1411) +4(1392 1412 3412 3392) +4(1411 3411 3412 1412) +4(1393 1413 3413 3393) +4(1412 3412 3413 1413) +4(1394 1414 3414 3394) +4(1413 3413 3414 1414) +4(1395 1415 3415 3395) +4(1414 3414 3415 1415) +4(1396 1416 3416 3396) +4(1415 3415 3416 1416) +4(1397 1417 3417 3397) +4(1416 3416 3417 1417) +4(1398 1418 3418 3398) +4(1417 3417 3418 1418) +4(1418 3418 3419 1419) +4(1401 1421 3421 3401) +4(1420 3420 3421 1421) +4(1402 1422 3422 3402) +4(1421 3421 3422 1422) +4(1403 1423 3423 3403) +4(1422 3422 3423 1423) +4(1404 1424 3424 3404) +4(1423 3423 3424 1424) +4(1405 1425 3425 3405) +4(1424 3424 3425 1425) +4(1406 1426 3426 3406) +4(1425 3425 3426 1426) +4(1407 1427 3427 3407) +4(1426 3426 3427 1427) +4(1408 1428 3428 3408) +4(1427 3427 3428 1428) +4(1409 1429 3429 3409) +4(1428 3428 3429 1429) +4(1410 1430 3430 3410) +4(1429 3429 3430 1430) +4(1411 1431 3431 3411) +4(1430 3430 3431 1431) +4(1412 1432 3432 3412) +4(1431 3431 3432 1432) +4(1413 1433 3433 3413) +4(1432 3432 3433 1433) +4(1414 1434 3434 3414) +4(1433 3433 3434 1434) +4(1415 1435 3435 3415) +4(1434 3434 3435 1435) +4(1416 1436 3436 3416) +4(1435 3435 3436 1436) +4(1417 1437 3437 3417) +4(1436 3436 3437 1437) +4(1418 1438 3438 3418) +4(1437 3437 3438 1438) +4(1438 3438 3439 1439) +4(1421 1441 3441 3421) +4(1440 3440 3441 1441) +4(1422 1442 3442 3422) +4(1441 3441 3442 1442) +4(1423 1443 3443 3423) +4(1442 3442 3443 1443) +4(1424 1444 3444 3424) +4(1443 3443 3444 1444) +4(1425 1445 3445 3425) +4(1444 3444 3445 1445) +4(1426 1446 3446 3426) +4(1445 3445 3446 1446) +4(1427 1447 3447 3427) +4(1446 3446 3447 1447) +4(1428 1448 3448 3428) +4(1447 3447 3448 1448) +4(1429 1449 3449 3429) +4(1448 3448 3449 1449) +4(1430 1450 3450 3430) +4(1449 3449 3450 1450) +4(1431 1451 3451 3431) +4(1450 3450 3451 1451) +4(1432 1452 3452 3432) +4(1451 3451 3452 1452) +4(1433 1453 3453 3433) +4(1452 3452 3453 1453) +4(1434 1454 3454 3434) +4(1453 3453 3454 1454) +4(1435 1455 3455 3435) +4(1454 3454 3455 1455) +4(1436 1456 3456 3436) +4(1455 3455 3456 1456) +4(1437 1457 3457 3437) +4(1456 3456 3457 1457) +4(1438 1458 3458 3438) +4(1457 3457 3458 1458) +4(1458 3458 3459 1459) +4(1441 1461 3461 3441) +4(1460 3460 3461 1461) +4(1442 1462 3462 3442) +4(1461 3461 3462 1462) +4(1443 1463 3463 3443) +4(1462 3462 3463 1463) +4(1444 1464 3464 3444) +4(1463 3463 3464 1464) +4(1445 1465 3465 3445) +4(1464 3464 3465 1465) +4(1446 1466 3466 3446) +4(1465 3465 3466 1466) +4(1447 1467 3467 3447) +4(1466 3466 3467 1467) +4(1448 1468 3468 3448) +4(1467 3467 3468 1468) +4(1449 1469 3469 3449) +4(1468 3468 3469 1469) +4(1450 1470 3470 3450) +4(1469 3469 3470 1470) +4(1451 1471 3471 3451) +4(1470 3470 3471 1471) +4(1452 1472 3472 3452) +4(1471 3471 3472 1472) +4(1453 1473 3473 3453) +4(1472 3472 3473 1473) +4(1454 1474 3474 3454) +4(1473 3473 3474 1474) +4(1455 1475 3475 3455) +4(1474 3474 3475 1475) +4(1456 1476 3476 3456) +4(1475 3475 3476 1476) +4(1457 1477 3477 3457) +4(1476 3476 3477 1477) +4(1458 1478 3478 3458) +4(1477 3477 3478 1478) +4(1478 3478 3479 1479) +4(1461 1481 3481 3461) +4(1480 3480 3481 1481) +4(1462 1482 3482 3462) +4(1481 3481 3482 1482) +4(1463 1483 3483 3463) +4(1482 3482 3483 1483) +4(1464 1484 3484 3464) +4(1483 3483 3484 1484) +4(1465 1485 3485 3465) +4(1484 3484 3485 1485) +4(1466 1486 3486 3466) +4(1485 3485 3486 1486) +4(1467 1487 3487 3467) +4(1486 3486 3487 1487) +4(1468 1488 3488 3468) +4(1487 3487 3488 1488) +4(1469 1489 3489 3469) +4(1488 3488 3489 1489) +4(1470 1490 3490 3470) +4(1489 3489 3490 1490) +4(1471 1491 3491 3471) +4(1490 3490 3491 1491) +4(1472 1492 3492 3472) +4(1491 3491 3492 1492) +4(1473 1493 3493 3473) +4(1492 3492 3493 1493) +4(1474 1494 3494 3474) +4(1493 3493 3494 1494) +4(1475 1495 3495 3475) +4(1494 3494 3495 1495) +4(1476 1496 3496 3476) +4(1495 3495 3496 1496) +4(1477 1497 3497 3477) +4(1496 3496 3497 1497) +4(1478 1498 3498 3478) +4(1497 3497 3498 1498) +4(1498 3498 3499 1499) +4(1481 1501 3501 3481) +4(1500 3500 3501 1501) +4(1482 1502 3502 3482) +4(1501 3501 3502 1502) +4(1483 1503 3503 3483) +4(1502 3502 3503 1503) +4(1484 1504 3504 3484) +4(1503 3503 3504 1504) +4(1485 1505 3505 3485) +4(1504 3504 3505 1505) +4(1486 1506 3506 3486) +4(1505 3505 3506 1506) +4(1487 1507 3507 3487) +4(1506 3506 3507 1507) +4(1488 1508 3508 3488) +4(1507 3507 3508 1508) +4(1489 1509 3509 3489) +4(1508 3508 3509 1509) +4(1490 1510 3510 3490) +4(1509 3509 3510 1510) +4(1491 1511 3511 3491) +4(1510 3510 3511 1511) +4(1492 1512 3512 3492) +4(1511 3511 3512 1512) +4(1493 1513 3513 3493) +4(1512 3512 3513 1513) +4(1494 1514 3514 3494) +4(1513 3513 3514 1514) +4(1495 1515 3515 3495) +4(1514 3514 3515 1515) +4(1496 1516 3516 3496) +4(1515 3515 3516 1516) +4(1497 1517 3517 3497) +4(1516 3516 3517 1517) +4(1498 1518 3518 3498) +4(1517 3517 3518 1518) +4(1518 3518 3519 1519) +4(1501 1521 3521 3501) +4(1520 3520 3521 1521) +4(1502 1522 3522 3502) +4(1521 3521 3522 1522) +4(1503 1523 3523 3503) +4(1522 3522 3523 1523) +4(1504 1524 3524 3504) +4(1523 3523 3524 1524) +4(1505 1525 3525 3505) +4(1524 3524 3525 1525) +4(1506 1526 3526 3506) +4(1525 3525 3526 1526) +4(1507 1527 3527 3507) +4(1526 3526 3527 1527) +4(1508 1528 3528 3508) +4(1527 3527 3528 1528) +4(1509 1529 3529 3509) +4(1528 3528 3529 1529) +4(1510 1530 3530 3510) +4(1529 3529 3530 1530) +4(1511 1531 3531 3511) +4(1530 3530 3531 1531) +4(1512 1532 3532 3512) +4(1531 3531 3532 1532) +4(1513 1533 3533 3513) +4(1532 3532 3533 1533) +4(1514 1534 3534 3514) +4(1533 3533 3534 1534) +4(1515 1535 3535 3515) +4(1534 3534 3535 1535) +4(1516 1536 3536 3516) +4(1535 3535 3536 1536) +4(1517 1537 3537 3517) +4(1536 3536 3537 1537) +4(1518 1538 3538 3518) +4(1537 3537 3538 1538) +4(1538 3538 3539 1539) +4(1521 1541 3541 3521) +4(1540 3540 3541 1541) +4(1522 1542 3542 3522) +4(1541 3541 3542 1542) +4(1523 1543 3543 3523) +4(1542 3542 3543 1543) +4(1524 1544 3544 3524) +4(1543 3543 3544 1544) +4(1525 1545 3545 3525) +4(1544 3544 3545 1545) +4(1526 1546 3546 3526) +4(1545 3545 3546 1546) +4(1527 1547 3547 3527) +4(1546 3546 3547 1547) +4(1528 1548 3548 3528) +4(1547 3547 3548 1548) +4(1529 1549 3549 3529) +4(1548 3548 3549 1549) +4(1530 1550 3550 3530) +4(1549 3549 3550 1550) +4(1531 1551 3551 3531) +4(1550 3550 3551 1551) +4(1532 1552 3552 3532) +4(1551 3551 3552 1552) +4(1533 1553 3553 3533) +4(1552 3552 3553 1553) +4(1534 1554 3554 3534) +4(1553 3553 3554 1554) +4(1535 1555 3555 3535) +4(1554 3554 3555 1555) +4(1536 1556 3556 3536) +4(1555 3555 3556 1556) +4(1537 1557 3557 3537) +4(1556 3556 3557 1557) +4(1538 1558 3558 3538) +4(1557 3557 3558 1558) +4(1558 3558 3559 1559) +4(1541 1561 3561 3541) +4(1560 3560 3561 1561) +4(1542 1562 3562 3542) +4(1561 3561 3562 1562) +4(1543 1563 3563 3543) +4(1562 3562 3563 1563) +4(1544 1564 3564 3544) +4(1563 3563 3564 1564) +4(1545 1565 3565 3545) +4(1564 3564 3565 1565) +4(1546 1566 3566 3546) +4(1565 3565 3566 1566) +4(1547 1567 3567 3547) +4(1566 3566 3567 1567) +4(1548 1568 3568 3548) +4(1567 3567 3568 1568) +4(1549 1569 3569 3549) +4(1568 3568 3569 1569) +4(1550 1570 3570 3550) +4(1569 3569 3570 1570) +4(1551 1571 3571 3551) +4(1570 3570 3571 1571) +4(1552 1572 3572 3552) +4(1571 3571 3572 1572) +4(1553 1573 3573 3553) +4(1572 3572 3573 1573) +4(1554 1574 3574 3554) +4(1573 3573 3574 1574) +4(1555 1575 3575 3555) +4(1574 3574 3575 1575) +4(1556 1576 3576 3556) +4(1575 3575 3576 1576) +4(1557 1577 3577 3557) +4(1576 3576 3577 1577) +4(1558 1578 3578 3558) +4(1577 3577 3578 1578) +4(1578 3578 3579 1579) +4(1561 1581 3581 3561) +4(1580 3580 3581 1581) +4(1562 1582 3582 3562) +4(1581 3581 3582 1582) +4(1563 1583 3583 3563) +4(1582 3582 3583 1583) +4(1564 1584 3584 3564) +4(1583 3583 3584 1584) +4(1565 1585 3585 3565) +4(1584 3584 3585 1585) +4(1566 1586 3586 3566) +4(1585 3585 3586 1586) +4(1567 1587 3587 3567) +4(1586 3586 3587 1587) +4(1568 1588 3588 3568) +4(1587 3587 3588 1588) +4(1569 1589 3589 3569) +4(1588 3588 3589 1589) +4(1570 1590 3590 3570) +4(1589 3589 3590 1590) +4(1571 1591 3591 3571) +4(1590 3590 3591 1591) +4(1572 1592 3592 3572) +4(1591 3591 3592 1592) +4(1573 1593 3593 3573) +4(1592 3592 3593 1593) +4(1574 1594 3594 3574) +4(1593 3593 3594 1594) +4(1575 1595 3595 3575) +4(1594 3594 3595 1595) +4(1576 1596 3596 3576) +4(1595 3595 3596 1596) +4(1577 1597 3597 3577) +4(1596 3596 3597 1597) +4(1578 1598 3598 3578) +4(1597 3597 3598 1598) +4(1598 3598 3599 1599) +4(1581 1601 3601 3581) +4(1600 3600 3601 1601) +4(1582 1602 3602 3582) +4(1601 3601 3602 1602) +4(1583 1603 3603 3583) +4(1602 3602 3603 1603) +4(1584 1604 3604 3584) +4(1603 3603 3604 1604) +4(1585 1605 3605 3585) +4(1604 3604 3605 1605) +4(1586 1606 3606 3586) +4(1605 3605 3606 1606) +4(1587 1607 3607 3587) +4(1606 3606 3607 1607) +4(1588 1608 3608 3588) +4(1607 3607 3608 1608) +4(1589 1609 3609 3589) +4(1608 3608 3609 1609) +4(1590 1610 3610 3590) +4(1609 3609 3610 1610) +4(1591 1611 3611 3591) +4(1610 3610 3611 1611) +4(1592 1612 3612 3592) +4(1611 3611 3612 1612) +4(1593 1613 3613 3593) +4(1612 3612 3613 1613) +4(1594 1614 3614 3594) +4(1613 3613 3614 1614) +4(1595 1615 3615 3595) +4(1614 3614 3615 1615) +4(1596 1616 3616 3596) +4(1615 3615 3616 1616) +4(1597 1617 3617 3597) +4(1616 3616 3617 1617) +4(1598 1618 3618 3598) +4(1617 3617 3618 1618) +4(1618 3618 3619 1619) +4(1601 1621 3621 3601) +4(1620 3620 3621 1621) +4(1602 1622 3622 3602) +4(1621 3621 3622 1622) +4(1603 1623 3623 3603) +4(1622 3622 3623 1623) +4(1604 1624 3624 3604) +4(1623 3623 3624 1624) +4(1605 1625 3625 3605) +4(1624 3624 3625 1625) +4(1606 1626 3626 3606) +4(1625 3625 3626 1626) +4(1607 1627 3627 3607) +4(1626 3626 3627 1627) +4(1608 1628 3628 3608) +4(1627 3627 3628 1628) +4(1609 1629 3629 3609) +4(1628 3628 3629 1629) +4(1610 1630 3630 3610) +4(1629 3629 3630 1630) +4(1611 1631 3631 3611) +4(1630 3630 3631 1631) +4(1612 1632 3632 3612) +4(1631 3631 3632 1632) +4(1613 1633 3633 3613) +4(1632 3632 3633 1633) +4(1614 1634 3634 3614) +4(1633 3633 3634 1634) +4(1615 1635 3635 3615) +4(1634 3634 3635 1635) +4(1616 1636 3636 3616) +4(1635 3635 3636 1636) +4(1617 1637 3637 3617) +4(1636 3636 3637 1637) +4(1618 1638 3638 3618) +4(1637 3637 3638 1638) +4(1638 3638 3639 1639) +4(1621 1641 3641 3621) +4(1640 3640 3641 1641) +4(1622 1642 3642 3622) +4(1641 3641 3642 1642) +4(1623 1643 3643 3623) +4(1642 3642 3643 1643) +4(1624 1644 3644 3624) +4(1643 3643 3644 1644) +4(1625 1645 3645 3625) +4(1644 3644 3645 1645) +4(1626 1646 3646 3626) +4(1645 3645 3646 1646) +4(1627 1647 3647 3627) +4(1646 3646 3647 1647) +4(1628 1648 3648 3628) +4(1647 3647 3648 1648) +4(1629 1649 3649 3629) +4(1648 3648 3649 1649) +4(1630 1650 3650 3630) +4(1649 3649 3650 1650) +4(1631 1651 3651 3631) +4(1650 3650 3651 1651) +4(1632 1652 3652 3632) +4(1651 3651 3652 1652) +4(1633 1653 3653 3633) +4(1652 3652 3653 1653) +4(1634 1654 3654 3634) +4(1653 3653 3654 1654) +4(1635 1655 3655 3635) +4(1654 3654 3655 1655) +4(1636 1656 3656 3636) +4(1655 3655 3656 1656) +4(1637 1657 3657 3637) +4(1656 3656 3657 1657) +4(1638 1658 3658 3638) +4(1657 3657 3658 1658) +4(1658 3658 3659 1659) +4(1641 1661 3661 3641) +4(1660 3660 3661 1661) +4(1642 1662 3662 3642) +4(1661 3661 3662 1662) +4(1643 1663 3663 3643) +4(1662 3662 3663 1663) +4(1644 1664 3664 3644) +4(1663 3663 3664 1664) +4(1645 1665 3665 3645) +4(1664 3664 3665 1665) +4(1646 1666 3666 3646) +4(1665 3665 3666 1666) +4(1647 1667 3667 3647) +4(1666 3666 3667 1667) +4(1648 1668 3668 3648) +4(1667 3667 3668 1668) +4(1649 1669 3669 3649) +4(1668 3668 3669 1669) +4(1650 1670 3670 3650) +4(1669 3669 3670 1670) +4(1651 1671 3671 3651) +4(1670 3670 3671 1671) +4(1652 1672 3672 3652) +4(1671 3671 3672 1672) +4(1653 1673 3673 3653) +4(1672 3672 3673 1673) +4(1654 1674 3674 3654) +4(1673 3673 3674 1674) +4(1655 1675 3675 3655) +4(1674 3674 3675 1675) +4(1656 1676 3676 3656) +4(1675 3675 3676 1676) +4(1657 1677 3677 3657) +4(1676 3676 3677 1677) +4(1658 1678 3678 3658) +4(1677 3677 3678 1678) +4(1678 3678 3679 1679) +4(1661 1681 3681 3661) +4(1680 3680 3681 1681) +4(1662 1682 3682 3662) +4(1681 3681 3682 1682) +4(1663 1683 3683 3663) +4(1682 3682 3683 1683) +4(1664 1684 3684 3664) +4(1683 3683 3684 1684) +4(1665 1685 3685 3665) +4(1684 3684 3685 1685) +4(1666 1686 3686 3666) +4(1685 3685 3686 1686) +4(1667 1687 3687 3667) +4(1686 3686 3687 1687) +4(1668 1688 3688 3668) +4(1687 3687 3688 1688) +4(1669 1689 3689 3669) +4(1688 3688 3689 1689) +4(1670 1690 3690 3670) +4(1689 3689 3690 1690) +4(1671 1691 3691 3671) +4(1690 3690 3691 1691) +4(1672 1692 3692 3672) +4(1691 3691 3692 1692) +4(1673 1693 3693 3673) +4(1692 3692 3693 1693) +4(1674 1694 3694 3674) +4(1693 3693 3694 1694) +4(1675 1695 3695 3675) +4(1694 3694 3695 1695) +4(1676 1696 3696 3676) +4(1695 3695 3696 1696) +4(1677 1697 3697 3677) +4(1696 3696 3697 1697) +4(1678 1698 3698 3678) +4(1697 3697 3698 1698) +4(1698 3698 3699 1699) +4(1681 1701 3701 3681) +4(1700 3700 3701 1701) +4(1682 1702 3702 3682) +4(1701 3701 3702 1702) +4(1683 1703 3703 3683) +4(1702 3702 3703 1703) +4(1684 1704 3704 3684) +4(1703 3703 3704 1704) +4(1685 1705 3705 3685) +4(1704 3704 3705 1705) +4(1686 1706 3706 3686) +4(1705 3705 3706 1706) +4(1687 1707 3707 3687) +4(1706 3706 3707 1707) +4(1688 1708 3708 3688) +4(1707 3707 3708 1708) +4(1689 1709 3709 3689) +4(1708 3708 3709 1709) +4(1690 1710 3710 3690) +4(1709 3709 3710 1710) +4(1691 1711 3711 3691) +4(1710 3710 3711 1711) +4(1692 1712 3712 3692) +4(1711 3711 3712 1712) +4(1693 1713 3713 3693) +4(1712 3712 3713 1713) +4(1694 1714 3714 3694) +4(1713 3713 3714 1714) +4(1695 1715 3715 3695) +4(1714 3714 3715 1715) +4(1696 1716 3716 3696) +4(1715 3715 3716 1716) +4(1697 1717 3717 3697) +4(1716 3716 3717 1717) +4(1698 1718 3718 3698) +4(1717 3717 3718 1718) +4(1718 3718 3719 1719) +4(1701 1721 3721 3701) +4(1720 3720 3721 1721) +4(1702 1722 3722 3702) +4(1721 3721 3722 1722) +4(1703 1723 3723 3703) +4(1722 3722 3723 1723) +4(1704 1724 3724 3704) +4(1723 3723 3724 1724) +4(1705 1725 3725 3705) +4(1724 3724 3725 1725) +4(1706 1726 3726 3706) +4(1725 3725 3726 1726) +4(1707 1727 3727 3707) +4(1726 3726 3727 1727) +4(1708 1728 3728 3708) +4(1727 3727 3728 1728) +4(1709 1729 3729 3709) +4(1728 3728 3729 1729) +4(1710 1730 3730 3710) +4(1729 3729 3730 1730) +4(1711 1731 3731 3711) +4(1730 3730 3731 1731) +4(1712 1732 3732 3712) +4(1731 3731 3732 1732) +4(1713 1733 3733 3713) +4(1732 3732 3733 1733) +4(1714 1734 3734 3714) +4(1733 3733 3734 1734) +4(1715 1735 3735 3715) +4(1734 3734 3735 1735) +4(1716 1736 3736 3716) +4(1735 3735 3736 1736) +4(1717 1737 3737 3717) +4(1736 3736 3737 1737) +4(1718 1738 3738 3718) +4(1737 3737 3738 1738) +4(1738 3738 3739 1739) +4(1721 1741 3741 3721) +4(1740 3740 3741 1741) +4(1722 1742 3742 3722) +4(1741 3741 3742 1742) +4(1723 1743 3743 3723) +4(1742 3742 3743 1743) +4(1724 1744 3744 3724) +4(1743 3743 3744 1744) +4(1725 1745 3745 3725) +4(1744 3744 3745 1745) +4(1726 1746 3746 3726) +4(1745 3745 3746 1746) +4(1727 1747 3747 3727) +4(1746 3746 3747 1747) +4(1728 1748 3748 3728) +4(1747 3747 3748 1748) +4(1729 1749 3749 3729) +4(1748 3748 3749 1749) +4(1730 1750 3750 3730) +4(1749 3749 3750 1750) +4(1731 1751 3751 3731) +4(1750 3750 3751 1751) +4(1732 1752 3752 3732) +4(1751 3751 3752 1752) +4(1733 1753 3753 3733) +4(1752 3752 3753 1753) +4(1734 1754 3754 3734) +4(1753 3753 3754 1754) +4(1735 1755 3755 3735) +4(1754 3754 3755 1755) +4(1736 1756 3756 3736) +4(1755 3755 3756 1756) +4(1737 1757 3757 3737) +4(1756 3756 3757 1757) +4(1738 1758 3758 3738) +4(1757 3757 3758 1758) +4(1758 3758 3759 1759) +4(1741 1761 3761 3741) +4(1760 3760 3761 1761) +4(1742 1762 3762 3742) +4(1761 3761 3762 1762) +4(1743 1763 3763 3743) +4(1762 3762 3763 1763) +4(1744 1764 3764 3744) +4(1763 3763 3764 1764) +4(1745 1765 3765 3745) +4(1764 3764 3765 1765) +4(1746 1766 3766 3746) +4(1765 3765 3766 1766) +4(1747 1767 3767 3747) +4(1766 3766 3767 1767) +4(1748 1768 3768 3748) +4(1767 3767 3768 1768) +4(1749 1769 3769 3749) +4(1768 3768 3769 1769) +4(1750 1770 3770 3750) +4(1769 3769 3770 1770) +4(1751 1771 3771 3751) +4(1770 3770 3771 1771) +4(1752 1772 3772 3752) +4(1771 3771 3772 1772) +4(1753 1773 3773 3753) +4(1772 3772 3773 1773) +4(1754 1774 3774 3754) +4(1773 3773 3774 1774) +4(1755 1775 3775 3755) +4(1774 3774 3775 1775) +4(1756 1776 3776 3756) +4(1775 3775 3776 1776) +4(1757 1777 3777 3757) +4(1776 3776 3777 1777) +4(1758 1778 3778 3758) +4(1777 3777 3778 1778) +4(1778 3778 3779 1779) +4(1761 1781 3781 3761) +4(1780 3780 3781 1781) +4(1762 1782 3782 3762) +4(1781 3781 3782 1782) +4(1763 1783 3783 3763) +4(1782 3782 3783 1783) +4(1764 1784 3784 3764) +4(1783 3783 3784 1784) +4(1765 1785 3785 3765) +4(1784 3784 3785 1785) +4(1766 1786 3786 3766) +4(1785 3785 3786 1786) +4(1767 1787 3787 3767) +4(1786 3786 3787 1787) +4(1768 1788 3788 3768) +4(1787 3787 3788 1788) +4(1769 1789 3789 3769) +4(1788 3788 3789 1789) +4(1770 1790 3790 3770) +4(1789 3789 3790 1790) +4(1771 1791 3791 3771) +4(1790 3790 3791 1791) +4(1772 1792 3792 3772) +4(1791 3791 3792 1792) +4(1773 1793 3793 3773) +4(1792 3792 3793 1793) +4(1774 1794 3794 3774) +4(1793 3793 3794 1794) +4(1775 1795 3795 3775) +4(1794 3794 3795 1795) +4(1776 1796 3796 3776) +4(1795 3795 3796 1796) +4(1777 1797 3797 3777) +4(1796 3796 3797 1797) +4(1778 1798 3798 3778) +4(1797 3797 3798 1798) +4(1798 3798 3799 1799) +4(1781 1801 3801 3781) +4(1800 3800 3801 1801) +4(1782 1802 3802 3782) +4(1801 3801 3802 1802) +4(1783 1803 3803 3783) +4(1802 3802 3803 1803) +4(1784 1804 3804 3784) +4(1803 3803 3804 1804) +4(1785 1805 3805 3785) +4(1804 3804 3805 1805) +4(1786 1806 3806 3786) +4(1805 3805 3806 1806) +4(1787 1807 3807 3787) +4(1806 3806 3807 1807) +4(1788 1808 3808 3788) +4(1807 3807 3808 1808) +4(1789 1809 3809 3789) +4(1808 3808 3809 1809) +4(1790 1810 3810 3790) +4(1809 3809 3810 1810) +4(1791 1811 3811 3791) +4(1810 3810 3811 1811) +4(1792 1812 3812 3792) +4(1811 3811 3812 1812) +4(1793 1813 3813 3793) +4(1812 3812 3813 1813) +4(1794 1814 3814 3794) +4(1813 3813 3814 1814) +4(1795 1815 3815 3795) +4(1814 3814 3815 1815) +4(1796 1816 3816 3796) +4(1815 3815 3816 1816) +4(1797 1817 3817 3797) +4(1816 3816 3817 1817) +4(1798 1818 3818 3798) +4(1817 3817 3818 1818) +4(1818 3818 3819 1819) +4(1801 1821 3821 3801) +4(1820 3820 3821 1821) +4(1802 1822 3822 3802) +4(1821 3821 3822 1822) +4(1803 1823 3823 3803) +4(1822 3822 3823 1823) +4(1804 1824 3824 3804) +4(1823 3823 3824 1824) +4(1805 1825 3825 3805) +4(1824 3824 3825 1825) +4(1806 1826 3826 3806) +4(1825 3825 3826 1826) +4(1807 1827 3827 3807) +4(1826 3826 3827 1827) +4(1808 1828 3828 3808) +4(1827 3827 3828 1828) +4(1809 1829 3829 3809) +4(1828 3828 3829 1829) +4(1810 1830 3830 3810) +4(1829 3829 3830 1830) +4(1811 1831 3831 3811) +4(1830 3830 3831 1831) +4(1812 1832 3832 3812) +4(1831 3831 3832 1832) +4(1813 1833 3833 3813) +4(1832 3832 3833 1833) +4(1814 1834 3834 3814) +4(1833 3833 3834 1834) +4(1815 1835 3835 3815) +4(1834 3834 3835 1835) +4(1816 1836 3836 3816) +4(1835 3835 3836 1836) +4(1817 1837 3837 3817) +4(1836 3836 3837 1837) +4(1818 1838 3838 3818) +4(1837 3837 3838 1838) +4(1838 3838 3839 1839) +4(1821 1841 3841 3821) +4(1840 3840 3841 1841) +4(1822 1842 3842 3822) +4(1841 3841 3842 1842) +4(1823 1843 3843 3823) +4(1842 3842 3843 1843) +4(1824 1844 3844 3824) +4(1843 3843 3844 1844) +4(1825 1845 3845 3825) +4(1844 3844 3845 1845) +4(1826 1846 3846 3826) +4(1845 3845 3846 1846) +4(1827 1847 3847 3827) +4(1846 3846 3847 1847) +4(1828 1848 3848 3828) +4(1847 3847 3848 1848) +4(1829 1849 3849 3829) +4(1848 3848 3849 1849) +4(1830 1850 3850 3830) +4(1849 3849 3850 1850) +4(1831 1851 3851 3831) +4(1850 3850 3851 1851) +4(1832 1852 3852 3832) +4(1851 3851 3852 1852) +4(1833 1853 3853 3833) +4(1852 3852 3853 1853) +4(1834 1854 3854 3834) +4(1853 3853 3854 1854) +4(1835 1855 3855 3835) +4(1854 3854 3855 1855) +4(1836 1856 3856 3836) +4(1855 3855 3856 1856) +4(1837 1857 3857 3837) +4(1856 3856 3857 1857) +4(1838 1858 3858 3838) +4(1857 3857 3858 1858) +4(1858 3858 3859 1859) +4(1841 1861 3861 3841) +4(1860 3860 3861 1861) +4(1842 1862 3862 3842) +4(1861 3861 3862 1862) +4(1843 1863 3863 3843) +4(1862 3862 3863 1863) +4(1844 1864 3864 3844) +4(1863 3863 3864 1864) +4(1845 1865 3865 3845) +4(1864 3864 3865 1865) +4(1846 1866 3866 3846) +4(1865 3865 3866 1866) +4(1847 1867 3867 3847) +4(1866 3866 3867 1867) +4(1848 1868 3868 3848) +4(1867 3867 3868 1868) +4(1849 1869 3869 3849) +4(1868 3868 3869 1869) +4(1850 1870 3870 3850) +4(1869 3869 3870 1870) +4(1851 1871 3871 3851) +4(1870 3870 3871 1871) +4(1852 1872 3872 3852) +4(1871 3871 3872 1872) +4(1853 1873 3873 3853) +4(1872 3872 3873 1873) +4(1854 1874 3874 3854) +4(1873 3873 3874 1874) +4(1855 1875 3875 3855) +4(1874 3874 3875 1875) +4(1856 1876 3876 3856) +4(1875 3875 3876 1876) +4(1857 1877 3877 3857) +4(1876 3876 3877 1877) +4(1858 1878 3878 3858) +4(1877 3877 3878 1878) +4(1878 3878 3879 1879) +4(1861 1881 3881 3861) +4(1880 3880 3881 1881) +4(1862 1882 3882 3862) +4(1881 3881 3882 1882) +4(1863 1883 3883 3863) +4(1882 3882 3883 1883) +4(1864 1884 3884 3864) +4(1883 3883 3884 1884) +4(1865 1885 3885 3865) +4(1884 3884 3885 1885) +4(1866 1886 3886 3866) +4(1885 3885 3886 1886) +4(1867 1887 3887 3867) +4(1886 3886 3887 1887) +4(1868 1888 3888 3868) +4(1887 3887 3888 1888) +4(1869 1889 3889 3869) +4(1888 3888 3889 1889) +4(1870 1890 3890 3870) +4(1889 3889 3890 1890) +4(1871 1891 3891 3871) +4(1890 3890 3891 1891) +4(1872 1892 3892 3872) +4(1891 3891 3892 1892) +4(1873 1893 3893 3873) +4(1892 3892 3893 1893) +4(1874 1894 3894 3874) +4(1893 3893 3894 1894) +4(1875 1895 3895 3875) +4(1894 3894 3895 1895) +4(1876 1896 3896 3876) +4(1895 3895 3896 1896) +4(1877 1897 3897 3877) +4(1896 3896 3897 1897) +4(1878 1898 3898 3878) +4(1897 3897 3898 1898) +4(1898 3898 3899 1899) +4(1881 1901 3901 3881) +4(1900 3900 3901 1901) +4(1882 1902 3902 3882) +4(1901 3901 3902 1902) +4(1883 1903 3903 3883) +4(1902 3902 3903 1903) +4(1884 1904 3904 3884) +4(1903 3903 3904 1904) +4(1885 1905 3905 3885) +4(1904 3904 3905 1905) +4(1886 1906 3906 3886) +4(1905 3905 3906 1906) +4(1887 1907 3907 3887) +4(1906 3906 3907 1907) +4(1888 1908 3908 3888) +4(1907 3907 3908 1908) +4(1889 1909 3909 3889) +4(1908 3908 3909 1909) +4(1890 1910 3910 3890) +4(1909 3909 3910 1910) +4(1891 1911 3911 3891) +4(1910 3910 3911 1911) +4(1892 1912 3912 3892) +4(1911 3911 3912 1912) +4(1893 1913 3913 3893) +4(1912 3912 3913 1913) +4(1894 1914 3914 3894) +4(1913 3913 3914 1914) +4(1895 1915 3915 3895) +4(1914 3914 3915 1915) +4(1896 1916 3916 3896) +4(1915 3915 3916 1916) +4(1897 1917 3917 3897) +4(1916 3916 3917 1917) +4(1898 1918 3918 3898) +4(1917 3917 3918 1918) +4(1918 3918 3919 1919) +4(1901 1921 3921 3901) +4(1920 3920 3921 1921) +4(1902 1922 3922 3902) +4(1921 3921 3922 1922) +4(1903 1923 3923 3903) +4(1922 3922 3923 1923) +4(1904 1924 3924 3904) +4(1923 3923 3924 1924) +4(1905 1925 3925 3905) +4(1924 3924 3925 1925) +4(1906 1926 3926 3906) +4(1925 3925 3926 1926) +4(1907 1927 3927 3907) +4(1926 3926 3927 1927) +4(1908 1928 3928 3908) +4(1927 3927 3928 1928) +4(1909 1929 3929 3909) +4(1928 3928 3929 1929) +4(1910 1930 3930 3910) +4(1929 3929 3930 1930) +4(1911 1931 3931 3911) +4(1930 3930 3931 1931) +4(1912 1932 3932 3912) +4(1931 3931 3932 1932) +4(1913 1933 3933 3913) +4(1932 3932 3933 1933) +4(1914 1934 3934 3914) +4(1933 3933 3934 1934) +4(1915 1935 3935 3915) +4(1934 3934 3935 1935) +4(1916 1936 3936 3916) +4(1935 3935 3936 1936) +4(1917 1937 3937 3917) +4(1936 3936 3937 1937) +4(1918 1938 3938 3918) +4(1937 3937 3938 1938) +4(1938 3938 3939 1939) +4(1921 1941 3941 3921) +4(1940 3940 3941 1941) +4(1922 1942 3942 3922) +4(1941 3941 3942 1942) +4(1923 1943 3943 3923) +4(1942 3942 3943 1943) +4(1924 1944 3944 3924) +4(1943 3943 3944 1944) +4(1925 1945 3945 3925) +4(1944 3944 3945 1945) +4(1926 1946 3946 3926) +4(1945 3945 3946 1946) +4(1927 1947 3947 3927) +4(1946 3946 3947 1947) +4(1928 1948 3948 3928) +4(1947 3947 3948 1948) +4(1929 1949 3949 3929) +4(1948 3948 3949 1949) +4(1930 1950 3950 3930) +4(1949 3949 3950 1950) +4(1931 1951 3951 3931) +4(1950 3950 3951 1951) +4(1932 1952 3952 3932) +4(1951 3951 3952 1952) +4(1933 1953 3953 3933) +4(1952 3952 3953 1953) +4(1934 1954 3954 3934) +4(1953 3953 3954 1954) +4(1935 1955 3955 3935) +4(1954 3954 3955 1955) +4(1936 1956 3956 3936) +4(1955 3955 3956 1956) +4(1937 1957 3957 3937) +4(1956 3956 3957 1957) +4(1938 1958 3958 3938) +4(1957 3957 3958 1958) +4(1958 3958 3959 1959) +4(1941 1961 3961 3941) +4(1960 3960 3961 1961) +4(1942 1962 3962 3942) +4(1961 3961 3962 1962) +4(1943 1963 3963 3943) +4(1962 3962 3963 1963) +4(1944 1964 3964 3944) +4(1963 3963 3964 1964) +4(1945 1965 3965 3945) +4(1964 3964 3965 1965) +4(1946 1966 3966 3946) +4(1965 3965 3966 1966) +4(1947 1967 3967 3947) +4(1966 3966 3967 1967) +4(1948 1968 3968 3948) +4(1967 3967 3968 1968) +4(1949 1969 3969 3949) +4(1968 3968 3969 1969) +4(1950 1970 3970 3950) +4(1969 3969 3970 1970) +4(1951 1971 3971 3951) +4(1970 3970 3971 1971) +4(1952 1972 3972 3952) +4(1971 3971 3972 1972) +4(1953 1973 3973 3953) +4(1972 3972 3973 1973) +4(1954 1974 3974 3954) +4(1973 3973 3974 1974) +4(1955 1975 3975 3955) +4(1974 3974 3975 1975) +4(1956 1976 3976 3956) +4(1975 3975 3976 1976) +4(1957 1977 3977 3957) +4(1976 3976 3977 1977) +4(1958 1978 3978 3958) +4(1977 3977 3978 1978) +4(1978 3978 3979 1979) +4(1961 1981 3981 3961) +4(1962 1982 3982 3962) +4(1963 1983 3983 3963) +4(1964 1984 3984 3964) +4(1965 1985 3985 3965) +4(1966 1986 3986 3966) +4(1967 1987 3987 3967) +4(1968 1988 3988 3968) +4(1969 1989 3989 3969) +4(1970 1990 3990 3970) +4(1971 1991 3991 3971) +4(1972 1992 3992 3972) +4(1973 1993 3993 3973) +4(1974 1994 3994 3974) +4(1975 1995 3995 3975) +4(1976 1996 3996 3976) +4(1977 1997 3997 3977) +4(1978 1998 3998 3978) +4(39 2039 2038 38) +4(39 59 2059 2039) +4(59 79 2079 2059) +4(79 99 2099 2079) +4(99 119 2119 2099) +4(119 139 2139 2119) +4(139 159 2159 2139) +4(159 179 2179 2159) +4(179 199 2199 2179) +4(199 219 2219 2199) +4(219 239 2239 2219) +4(239 259 2259 2239) +4(259 279 2279 2259) +4(279 299 2299 2279) +4(299 319 2319 2299) +4(319 339 2339 2319) +4(339 359 2359 2339) +4(359 379 2379 2359) +4(379 399 2399 2379) +4(399 419 2419 2399) +4(419 439 2439 2419) +4(439 459 2459 2439) +4(459 479 2479 2459) +4(479 499 2499 2479) +4(499 519 2519 2499) +4(519 539 2539 2519) +4(539 559 2559 2539) +4(559 579 2579 2559) +4(579 599 2599 2579) +4(599 619 2619 2599) +4(619 639 2639 2619) +4(639 659 2659 2639) +4(659 679 2679 2659) +4(679 699 2699 2679) +4(699 719 2719 2699) +4(719 739 2739 2719) +4(739 759 2759 2739) +4(759 779 2779 2759) +4(779 799 2799 2779) +4(799 819 2819 2799) +4(819 839 2839 2819) +4(839 859 2859 2839) +4(859 879 2879 2859) +4(879 899 2899 2879) +4(899 919 2919 2899) +4(919 939 2939 2919) +4(939 959 2959 2939) +4(959 979 2979 2959) +4(979 999 2999 2979) +4(999 1019 3019 2999) +4(1019 1039 3039 3019) +4(1039 1059 3059 3039) +4(1059 1079 3079 3059) +4(1079 1099 3099 3079) +4(1099 1119 3119 3099) +4(1119 1139 3139 3119) +4(1139 1159 3159 3139) +4(1159 1179 3179 3159) +4(1179 1199 3199 3179) +4(1199 1219 3219 3199) +4(1219 1239 3239 3219) +4(1239 1259 3259 3239) +4(1259 1279 3279 3259) +4(1279 1299 3299 3279) +4(1299 1319 3319 3299) +4(1319 1339 3339 3319) +4(1339 1359 3359 3339) +4(1359 1379 3379 3359) +4(1379 1399 3399 3379) +4(1399 1419 3419 3399) +4(1419 1439 3439 3419) +4(1439 1459 3459 3439) +4(1459 1479 3479 3459) +4(1479 1499 3499 3479) +4(1499 1519 3519 3499) +4(1519 1539 3539 3519) +4(1539 1559 3559 3539) +4(1559 1579 3579 3559) +4(1579 1599 3599 3579) +4(1599 1619 3619 3599) +4(1619 1639 3639 3619) +4(1639 1659 3659 3639) +4(1659 1679 3679 3659) +4(1679 1699 3699 3679) +4(1699 1719 3719 3699) +4(1719 1739 3739 3719) +4(1739 1759 3759 3739) +4(1759 1779 3779 3759) +4(1779 1799 3799 3779) +4(1799 1819 3819 3799) +4(1819 1839 3839 3819) +4(1839 1859 3859 3839) +4(1859 1879 3879 3859) +4(1879 1899 3899 3879) +4(1899 1919 3919 3899) +4(1919 1939 3939 3919) +4(1939 1959 3959 3939) +4(1959 1979 3979 3959) +4(1979 1999 3999 3979) +4(1 0 2000 2001) +4(1 2001 2040 40) +4(40 2040 2060 60) +4(60 2060 2080 80) +4(80 2080 2100 100) +4(100 2100 2120 120) +4(120 2120 2140 140) +4(140 2140 2160 160) +4(160 2160 2180 180) +4(180 2180 2200 200) +4(200 2200 2220 220) +4(220 2220 2240 240) +4(240 2240 2260 260) +4(260 2260 2280 280) +4(280 2280 2300 300) +4(300 2300 2320 320) +4(320 2320 2340 340) +4(340 2340 2360 360) +4(360 2360 2380 380) +4(380 2380 2400 400) +4(400 2400 2420 420) +4(420 2420 2440 440) +4(440 2440 2460 460) +4(460 2460 2480 480) +4(480 2480 2500 500) +4(500 2500 2520 520) +4(520 2520 2540 540) +4(540 2540 2560 560) +4(560 2560 2580 580) +4(580 2580 2600 600) +4(600 2600 2620 620) +4(620 2620 2640 640) +4(640 2640 2660 660) +4(660 2660 2680 680) +4(680 2680 2700 700) +4(700 2700 2720 720) +4(720 2720 2740 740) +4(740 2740 2760 760) +4(760 2760 2780 780) +4(780 2780 2800 800) +4(800 2800 2820 820) +4(820 2820 2840 840) +4(840 2840 2860 860) +4(860 2860 2880 880) +4(880 2880 2900 900) +4(900 2900 2920 920) +4(920 2920 2940 940) +4(940 2940 2960 960) +4(960 2960 2980 980) +4(980 2980 3000 1000) +4(1000 3000 3020 1020) +4(1020 3020 3040 1040) +4(1040 3040 3060 1060) +4(1060 3060 3080 1080) +4(1080 3080 3100 1100) +4(1100 3100 3120 1120) +4(1120 3120 3140 1140) +4(1140 3140 3160 1160) +4(1160 3160 3180 1180) +4(1180 3180 3200 1200) +4(1200 3200 3220 1220) +4(1220 3220 3240 1240) +4(1240 3240 3260 1260) +4(1260 3260 3280 1280) +4(1280 3280 3300 1300) +4(1300 3300 3320 1320) +4(1320 3320 3340 1340) +4(1340 3340 3360 1360) +4(1360 3360 3380 1380) +4(1380 3380 3400 1400) +4(1400 3400 3420 1420) +4(1420 3420 3440 1440) +4(1440 3440 3460 1460) +4(1460 3460 3480 1480) +4(1480 3480 3500 1500) +4(1500 3500 3520 1520) +4(1520 3520 3540 1540) +4(1540 3540 3560 1560) +4(1560 3560 3580 1580) +4(1580 3580 3600 1600) +4(1600 3600 3620 1620) +4(1620 3620 3640 1640) +4(1640 3640 3660 1660) +4(1660 3660 3680 1680) +4(1680 3680 3700 1700) +4(1700 3700 3720 1720) +4(1720 3720 3740 1740) +4(1740 3740 3760 1760) +4(1760 3760 3780 1780) +4(1780 3780 3800 1800) +4(1800 3800 3820 1820) +4(1820 3820 3840 1840) +4(1840 3840 3860 1860) +4(1860 3860 3880 1880) +4(1880 3880 3900 1900) +4(1900 3900 3920 1920) +4(1920 3920 3940 1940) +4(1940 3940 3960 1960) +4(1960 3960 3980 1980) +4(2 2002 2000 0) +4(2 4 2004 2002) +4(4 6 2006 2004) +4(6 8 2008 2006) +4(8 10 2010 2008) +4(10 12 2012 2010) +4(12 14 2014 2012) +4(14 16 2016 2014) +4(16 18 2018 2016) +4(18 20 2020 2018) +4(20 22 2022 2020) +4(22 24 2024 2022) +4(24 26 2026 2024) +4(26 28 2028 2026) +4(28 30 2030 2028) +4(30 32 2032 2030) +4(32 34 2034 2032) +4(34 36 2036 2034) +4(36 38 2038 2036) +4(1980 3980 3981 1981) +4(1981 3981 3982 1982) +4(1982 3982 3983 1983) +4(1983 3983 3984 1984) +4(1984 3984 3985 1985) +4(1985 3985 3986 1986) +4(1986 3986 3987 1987) +4(1987 3987 3988 1988) +4(1988 3988 3989 1989) +4(1989 3989 3990 1990) +4(1990 3990 3991 1991) +4(1991 3991 3992 1992) +4(1992 3992 3993 1993) +4(1993 3993 3994 1994) +4(1994 3994 3995 1995) +4(1995 3995 3996 1996) +4(1996 3996 3997 1997) +4(1997 3997 3998 1998) +4(1998 3998 3999 1999) +4(3 2 0 1) +4(2003 2001 2000 2002) +4(3 5 4 2) +4(2003 2002 2004 2005) +4(5 7 6 4) +4(2005 2004 2006 2007) +4(7 9 8 6) +4(2007 2006 2008 2009) +4(9 11 10 8) +4(2009 2008 2010 2011) +4(11 13 12 10) +4(2011 2010 2012 2013) +4(13 15 14 12) +4(2013 2012 2014 2015) +4(15 17 16 14) +4(2015 2014 2016 2017) +4(17 19 18 16) +4(2017 2016 2018 2019) +4(19 21 20 18) +4(2019 2018 2020 2021) +4(21 23 22 20) +4(2021 2020 2022 2023) +4(23 25 24 22) +4(2023 2022 2024 2025) +4(25 27 26 24) +4(2025 2024 2026 2027) +4(27 29 28 26) +4(2027 2026 2028 2029) +4(29 31 30 28) +4(2029 2028 2030 2031) +4(31 33 32 30) +4(2031 2030 2032 2033) +4(33 35 34 32) +4(2033 2032 2034 2035) +4(35 37 36 34) +4(2035 2034 2036 2037) +4(37 39 38 36) +4(2037 2036 2038 2039) +4(1 40 41 3) +4(2001 2003 2041 2040) +4(3 41 42 5) +4(2003 2005 2042 2041) +4(5 42 43 7) +4(2005 2007 2043 2042) +4(7 43 44 9) +4(2007 2009 2044 2043) +4(9 44 45 11) +4(2009 2011 2045 2044) +4(11 45 46 13) +4(2011 2013 2046 2045) +4(13 46 47 15) +4(2013 2015 2047 2046) +4(15 47 48 17) +4(2015 2017 2048 2047) +4(17 48 49 19) +4(2017 2019 2049 2048) +4(19 49 50 21) +4(2019 2021 2050 2049) +4(21 50 51 23) +4(2021 2023 2051 2050) +4(23 51 52 25) +4(2023 2025 2052 2051) +4(25 52 53 27) +4(2025 2027 2053 2052) +4(27 53 54 29) +4(2027 2029 2054 2053) +4(29 54 55 31) +4(2029 2031 2055 2054) +4(31 55 56 33) +4(2031 2033 2056 2055) +4(33 56 57 35) +4(2033 2035 2057 2056) +4(35 57 58 37) +4(2035 2037 2058 2057) +4(37 58 59 39) +4(2037 2039 2059 2058) +4(40 60 61 41) +4(2040 2041 2061 2060) +4(41 61 62 42) +4(2041 2042 2062 2061) +4(42 62 63 43) +4(2042 2043 2063 2062) +4(43 63 64 44) +4(2043 2044 2064 2063) +4(44 64 65 45) +4(2044 2045 2065 2064) +4(45 65 66 46) +4(2045 2046 2066 2065) +4(46 66 67 47) +4(2046 2047 2067 2066) +4(47 67 68 48) +4(2047 2048 2068 2067) +4(48 68 69 49) +4(2048 2049 2069 2068) +4(49 69 70 50) +4(2049 2050 2070 2069) +4(50 70 71 51) +4(2050 2051 2071 2070) +4(51 71 72 52) +4(2051 2052 2072 2071) +4(52 72 73 53) +4(2052 2053 2073 2072) +4(53 73 74 54) +4(2053 2054 2074 2073) +4(54 74 75 55) +4(2054 2055 2075 2074) +4(55 75 76 56) +4(2055 2056 2076 2075) +4(56 76 77 57) +4(2056 2057 2077 2076) +4(57 77 78 58) +4(2057 2058 2078 2077) +4(58 78 79 59) +4(2058 2059 2079 2078) +4(60 80 81 61) +4(2060 2061 2081 2080) +4(61 81 82 62) +4(2061 2062 2082 2081) +4(62 82 83 63) +4(2062 2063 2083 2082) +4(63 83 84 64) +4(2063 2064 2084 2083) +4(64 84 85 65) +4(2064 2065 2085 2084) +4(65 85 86 66) +4(2065 2066 2086 2085) +4(66 86 87 67) +4(2066 2067 2087 2086) +4(67 87 88 68) +4(2067 2068 2088 2087) +4(68 88 89 69) +4(2068 2069 2089 2088) +4(69 89 90 70) +4(2069 2070 2090 2089) +4(70 90 91 71) +4(2070 2071 2091 2090) +4(71 91 92 72) +4(2071 2072 2092 2091) +4(72 92 93 73) +4(2072 2073 2093 2092) +4(73 93 94 74) +4(2073 2074 2094 2093) +4(74 94 95 75) +4(2074 2075 2095 2094) +4(75 95 96 76) +4(2075 2076 2096 2095) +4(76 96 97 77) +4(2076 2077 2097 2096) +4(77 97 98 78) +4(2077 2078 2098 2097) +4(78 98 99 79) +4(2078 2079 2099 2098) +4(80 100 101 81) +4(2080 2081 2101 2100) +4(81 101 102 82) +4(2081 2082 2102 2101) +4(82 102 103 83) +4(2082 2083 2103 2102) +4(83 103 104 84) +4(2083 2084 2104 2103) +4(84 104 105 85) +4(2084 2085 2105 2104) +4(85 105 106 86) +4(2085 2086 2106 2105) +4(86 106 107 87) +4(2086 2087 2107 2106) +4(87 107 108 88) +4(2087 2088 2108 2107) +4(88 108 109 89) +4(2088 2089 2109 2108) +4(89 109 110 90) +4(2089 2090 2110 2109) +4(90 110 111 91) +4(2090 2091 2111 2110) +4(91 111 112 92) +4(2091 2092 2112 2111) +4(92 112 113 93) +4(2092 2093 2113 2112) +4(93 113 114 94) +4(2093 2094 2114 2113) +4(94 114 115 95) +4(2094 2095 2115 2114) +4(95 115 116 96) +4(2095 2096 2116 2115) +4(96 116 117 97) +4(2096 2097 2117 2116) +4(97 117 118 98) +4(2097 2098 2118 2117) +4(98 118 119 99) +4(2098 2099 2119 2118) +4(100 120 121 101) +4(2100 2101 2121 2120) +4(101 121 122 102) +4(2101 2102 2122 2121) +4(102 122 123 103) +4(2102 2103 2123 2122) +4(103 123 124 104) +4(2103 2104 2124 2123) +4(104 124 125 105) +4(2104 2105 2125 2124) +4(105 125 126 106) +4(2105 2106 2126 2125) +4(106 126 127 107) +4(2106 2107 2127 2126) +4(107 127 128 108) +4(2107 2108 2128 2127) +4(108 128 129 109) +4(2108 2109 2129 2128) +4(109 129 130 110) +4(2109 2110 2130 2129) +4(110 130 131 111) +4(2110 2111 2131 2130) +4(111 131 132 112) +4(2111 2112 2132 2131) +4(112 132 133 113) +4(2112 2113 2133 2132) +4(113 133 134 114) +4(2113 2114 2134 2133) +4(114 134 135 115) +4(2114 2115 2135 2134) +4(115 135 136 116) +4(2115 2116 2136 2135) +4(116 136 137 117) +4(2116 2117 2137 2136) +4(117 137 138 118) +4(2117 2118 2138 2137) +4(118 138 139 119) +4(2118 2119 2139 2138) +4(120 140 141 121) +4(2120 2121 2141 2140) +4(121 141 142 122) +4(2121 2122 2142 2141) +4(122 142 143 123) +4(2122 2123 2143 2142) +4(123 143 144 124) +4(2123 2124 2144 2143) +4(124 144 145 125) +4(2124 2125 2145 2144) +4(125 145 146 126) +4(2125 2126 2146 2145) +4(126 146 147 127) +4(2126 2127 2147 2146) +4(127 147 148 128) +4(2127 2128 2148 2147) +4(128 148 149 129) +4(2128 2129 2149 2148) +4(129 149 150 130) +4(2129 2130 2150 2149) +4(130 150 151 131) +4(2130 2131 2151 2150) +4(131 151 152 132) +4(2131 2132 2152 2151) +4(132 152 153 133) +4(2132 2133 2153 2152) +4(133 153 154 134) +4(2133 2134 2154 2153) +4(134 154 155 135) +4(2134 2135 2155 2154) +4(135 155 156 136) +4(2135 2136 2156 2155) +4(136 156 157 137) +4(2136 2137 2157 2156) +4(137 157 158 138) +4(2137 2138 2158 2157) +4(138 158 159 139) +4(2138 2139 2159 2158) +4(140 160 161 141) +4(2140 2141 2161 2160) +4(141 161 162 142) +4(2141 2142 2162 2161) +4(142 162 163 143) +4(2142 2143 2163 2162) +4(143 163 164 144) +4(2143 2144 2164 2163) +4(144 164 165 145) +4(2144 2145 2165 2164) +4(145 165 166 146) +4(2145 2146 2166 2165) +4(146 166 167 147) +4(2146 2147 2167 2166) +4(147 167 168 148) +4(2147 2148 2168 2167) +4(148 168 169 149) +4(2148 2149 2169 2168) +4(149 169 170 150) +4(2149 2150 2170 2169) +4(150 170 171 151) +4(2150 2151 2171 2170) +4(151 171 172 152) +4(2151 2152 2172 2171) +4(152 172 173 153) +4(2152 2153 2173 2172) +4(153 173 174 154) +4(2153 2154 2174 2173) +4(154 174 175 155) +4(2154 2155 2175 2174) +4(155 175 176 156) +4(2155 2156 2176 2175) +4(156 176 177 157) +4(2156 2157 2177 2176) +4(157 177 178 158) +4(2157 2158 2178 2177) +4(158 178 179 159) +4(2158 2159 2179 2178) +4(160 180 181 161) +4(2160 2161 2181 2180) +4(161 181 182 162) +4(2161 2162 2182 2181) +4(162 182 183 163) +4(2162 2163 2183 2182) +4(163 183 184 164) +4(2163 2164 2184 2183) +4(164 184 185 165) +4(2164 2165 2185 2184) +4(165 185 186 166) +4(2165 2166 2186 2185) +4(166 186 187 167) +4(2166 2167 2187 2186) +4(167 187 188 168) +4(2167 2168 2188 2187) +4(168 188 189 169) +4(2168 2169 2189 2188) +4(169 189 190 170) +4(2169 2170 2190 2189) +4(170 190 191 171) +4(2170 2171 2191 2190) +4(171 191 192 172) +4(2171 2172 2192 2191) +4(172 192 193 173) +4(2172 2173 2193 2192) +4(173 193 194 174) +4(2173 2174 2194 2193) +4(174 194 195 175) +4(2174 2175 2195 2194) +4(175 195 196 176) +4(2175 2176 2196 2195) +4(176 196 197 177) +4(2176 2177 2197 2196) +4(177 197 198 178) +4(2177 2178 2198 2197) +4(178 198 199 179) +4(2178 2179 2199 2198) +4(180 200 201 181) +4(2180 2181 2201 2200) +4(181 201 202 182) +4(2181 2182 2202 2201) +4(182 202 203 183) +4(2182 2183 2203 2202) +4(183 203 204 184) +4(2183 2184 2204 2203) +4(184 204 205 185) +4(2184 2185 2205 2204) +4(185 205 206 186) +4(2185 2186 2206 2205) +4(186 206 207 187) +4(2186 2187 2207 2206) +4(187 207 208 188) +4(2187 2188 2208 2207) +4(188 208 209 189) +4(2188 2189 2209 2208) +4(189 209 210 190) +4(2189 2190 2210 2209) +4(190 210 211 191) +4(2190 2191 2211 2210) +4(191 211 212 192) +4(2191 2192 2212 2211) +4(192 212 213 193) +4(2192 2193 2213 2212) +4(193 213 214 194) +4(2193 2194 2214 2213) +4(194 214 215 195) +4(2194 2195 2215 2214) +4(195 215 216 196) +4(2195 2196 2216 2215) +4(196 216 217 197) +4(2196 2197 2217 2216) +4(197 217 218 198) +4(2197 2198 2218 2217) +4(198 218 219 199) +4(2198 2199 2219 2218) +4(200 220 221 201) +4(2200 2201 2221 2220) +4(201 221 222 202) +4(2201 2202 2222 2221) +4(202 222 223 203) +4(2202 2203 2223 2222) +4(203 223 224 204) +4(2203 2204 2224 2223) +4(204 224 225 205) +4(2204 2205 2225 2224) +4(205 225 226 206) +4(2205 2206 2226 2225) +4(206 226 227 207) +4(2206 2207 2227 2226) +4(207 227 228 208) +4(2207 2208 2228 2227) +4(208 228 229 209) +4(2208 2209 2229 2228) +4(209 229 230 210) +4(2209 2210 2230 2229) +4(210 230 231 211) +4(2210 2211 2231 2230) +4(211 231 232 212) +4(2211 2212 2232 2231) +4(212 232 233 213) +4(2212 2213 2233 2232) +4(213 233 234 214) +4(2213 2214 2234 2233) +4(214 234 235 215) +4(2214 2215 2235 2234) +4(215 235 236 216) +4(2215 2216 2236 2235) +4(216 236 237 217) +4(2216 2217 2237 2236) +4(217 237 238 218) +4(2217 2218 2238 2237) +4(218 238 239 219) +4(2218 2219 2239 2238) +4(220 240 241 221) +4(2220 2221 2241 2240) +4(221 241 242 222) +4(2221 2222 2242 2241) +4(222 242 243 223) +4(2222 2223 2243 2242) +4(223 243 244 224) +4(2223 2224 2244 2243) +4(224 244 245 225) +4(2224 2225 2245 2244) +4(225 245 246 226) +4(2225 2226 2246 2245) +4(226 246 247 227) +4(2226 2227 2247 2246) +4(227 247 248 228) +4(2227 2228 2248 2247) +4(228 248 249 229) +4(2228 2229 2249 2248) +4(229 249 250 230) +4(2229 2230 2250 2249) +4(230 250 251 231) +4(2230 2231 2251 2250) +4(231 251 252 232) +4(2231 2232 2252 2251) +4(232 252 253 233) +4(2232 2233 2253 2252) +4(233 253 254 234) +4(2233 2234 2254 2253) +4(234 254 255 235) +4(2234 2235 2255 2254) +4(235 255 256 236) +4(2235 2236 2256 2255) +4(236 256 257 237) +4(2236 2237 2257 2256) +4(237 257 258 238) +4(2237 2238 2258 2257) +4(238 258 259 239) +4(2238 2239 2259 2258) +4(240 260 261 241) +4(2240 2241 2261 2260) +4(241 261 262 242) +4(2241 2242 2262 2261) +4(242 262 263 243) +4(2242 2243 2263 2262) +4(243 263 264 244) +4(2243 2244 2264 2263) +4(244 264 265 245) +4(2244 2245 2265 2264) +4(245 265 266 246) +4(2245 2246 2266 2265) +4(246 266 267 247) +4(2246 2247 2267 2266) +4(247 267 268 248) +4(2247 2248 2268 2267) +4(248 268 269 249) +4(2248 2249 2269 2268) +4(249 269 270 250) +4(2249 2250 2270 2269) +4(250 270 271 251) +4(2250 2251 2271 2270) +4(251 271 272 252) +4(2251 2252 2272 2271) +4(252 272 273 253) +4(2252 2253 2273 2272) +4(253 273 274 254) +4(2253 2254 2274 2273) +4(254 274 275 255) +4(2254 2255 2275 2274) +4(255 275 276 256) +4(2255 2256 2276 2275) +4(256 276 277 257) +4(2256 2257 2277 2276) +4(257 277 278 258) +4(2257 2258 2278 2277) +4(258 278 279 259) +4(2258 2259 2279 2278) +4(260 280 281 261) +4(2260 2261 2281 2280) +4(261 281 282 262) +4(2261 2262 2282 2281) +4(262 282 283 263) +4(2262 2263 2283 2282) +4(263 283 284 264) +4(2263 2264 2284 2283) +4(264 284 285 265) +4(2264 2265 2285 2284) +4(265 285 286 266) +4(2265 2266 2286 2285) +4(266 286 287 267) +4(2266 2267 2287 2286) +4(267 287 288 268) +4(2267 2268 2288 2287) +4(268 288 289 269) +4(2268 2269 2289 2288) +4(269 289 290 270) +4(2269 2270 2290 2289) +4(270 290 291 271) +4(2270 2271 2291 2290) +4(271 291 292 272) +4(2271 2272 2292 2291) +4(272 292 293 273) +4(2272 2273 2293 2292) +4(273 293 294 274) +4(2273 2274 2294 2293) +4(274 294 295 275) +4(2274 2275 2295 2294) +4(275 295 296 276) +4(2275 2276 2296 2295) +4(276 296 297 277) +4(2276 2277 2297 2296) +4(277 297 298 278) +4(2277 2278 2298 2297) +4(278 298 299 279) +4(2278 2279 2299 2298) +4(280 300 301 281) +4(2280 2281 2301 2300) +4(281 301 302 282) +4(2281 2282 2302 2301) +4(282 302 303 283) +4(2282 2283 2303 2302) +4(283 303 304 284) +4(2283 2284 2304 2303) +4(284 304 305 285) +4(2284 2285 2305 2304) +4(285 305 306 286) +4(2285 2286 2306 2305) +4(286 306 307 287) +4(2286 2287 2307 2306) +4(287 307 308 288) +4(2287 2288 2308 2307) +4(288 308 309 289) +4(2288 2289 2309 2308) +4(289 309 310 290) +4(2289 2290 2310 2309) +4(290 310 311 291) +4(2290 2291 2311 2310) +4(291 311 312 292) +4(2291 2292 2312 2311) +4(292 312 313 293) +4(2292 2293 2313 2312) +4(293 313 314 294) +4(2293 2294 2314 2313) +4(294 314 315 295) +4(2294 2295 2315 2314) +4(295 315 316 296) +4(2295 2296 2316 2315) +4(296 316 317 297) +4(2296 2297 2317 2316) +4(297 317 318 298) +4(2297 2298 2318 2317) +4(298 318 319 299) +4(2298 2299 2319 2318) +4(300 320 321 301) +4(2300 2301 2321 2320) +4(301 321 322 302) +4(2301 2302 2322 2321) +4(302 322 323 303) +4(2302 2303 2323 2322) +4(303 323 324 304) +4(2303 2304 2324 2323) +4(304 324 325 305) +4(2304 2305 2325 2324) +4(305 325 326 306) +4(2305 2306 2326 2325) +4(306 326 327 307) +4(2306 2307 2327 2326) +4(307 327 328 308) +4(2307 2308 2328 2327) +4(308 328 329 309) +4(2308 2309 2329 2328) +4(309 329 330 310) +4(2309 2310 2330 2329) +4(310 330 331 311) +4(2310 2311 2331 2330) +4(311 331 332 312) +4(2311 2312 2332 2331) +4(312 332 333 313) +4(2312 2313 2333 2332) +4(313 333 334 314) +4(2313 2314 2334 2333) +4(314 334 335 315) +4(2314 2315 2335 2334) +4(315 335 336 316) +4(2315 2316 2336 2335) +4(316 336 337 317) +4(2316 2317 2337 2336) +4(317 337 338 318) +4(2317 2318 2338 2337) +4(318 338 339 319) +4(2318 2319 2339 2338) +4(320 340 341 321) +4(2320 2321 2341 2340) +4(321 341 342 322) +4(2321 2322 2342 2341) +4(322 342 343 323) +4(2322 2323 2343 2342) +4(323 343 344 324) +4(2323 2324 2344 2343) +4(324 344 345 325) +4(2324 2325 2345 2344) +4(325 345 346 326) +4(2325 2326 2346 2345) +4(326 346 347 327) +4(2326 2327 2347 2346) +4(327 347 348 328) +4(2327 2328 2348 2347) +4(328 348 349 329) +4(2328 2329 2349 2348) +4(329 349 350 330) +4(2329 2330 2350 2349) +4(330 350 351 331) +4(2330 2331 2351 2350) +4(331 351 352 332) +4(2331 2332 2352 2351) +4(332 352 353 333) +4(2332 2333 2353 2352) +4(333 353 354 334) +4(2333 2334 2354 2353) +4(334 354 355 335) +4(2334 2335 2355 2354) +4(335 355 356 336) +4(2335 2336 2356 2355) +4(336 356 357 337) +4(2336 2337 2357 2356) +4(337 357 358 338) +4(2337 2338 2358 2357) +4(338 358 359 339) +4(2338 2339 2359 2358) +4(340 360 361 341) +4(2340 2341 2361 2360) +4(341 361 362 342) +4(2341 2342 2362 2361) +4(342 362 363 343) +4(2342 2343 2363 2362) +4(343 363 364 344) +4(2343 2344 2364 2363) +4(344 364 365 345) +4(2344 2345 2365 2364) +4(345 365 366 346) +4(2345 2346 2366 2365) +4(346 366 367 347) +4(2346 2347 2367 2366) +4(347 367 368 348) +4(2347 2348 2368 2367) +4(348 368 369 349) +4(2348 2349 2369 2368) +4(349 369 370 350) +4(2349 2350 2370 2369) +4(350 370 371 351) +4(2350 2351 2371 2370) +4(351 371 372 352) +4(2351 2352 2372 2371) +4(352 372 373 353) +4(2352 2353 2373 2372) +4(353 373 374 354) +4(2353 2354 2374 2373) +4(354 374 375 355) +4(2354 2355 2375 2374) +4(355 375 376 356) +4(2355 2356 2376 2375) +4(356 376 377 357) +4(2356 2357 2377 2376) +4(357 377 378 358) +4(2357 2358 2378 2377) +4(358 378 379 359) +4(2358 2359 2379 2378) +4(360 380 381 361) +4(2360 2361 2381 2380) +4(361 381 382 362) +4(2361 2362 2382 2381) +4(362 382 383 363) +4(2362 2363 2383 2382) +4(363 383 384 364) +4(2363 2364 2384 2383) +4(364 384 385 365) +4(2364 2365 2385 2384) +4(365 385 386 366) +4(2365 2366 2386 2385) +4(366 386 387 367) +4(2366 2367 2387 2386) +4(367 387 388 368) +4(2367 2368 2388 2387) +4(368 388 389 369) +4(2368 2369 2389 2388) +4(369 389 390 370) +4(2369 2370 2390 2389) +4(370 390 391 371) +4(2370 2371 2391 2390) +4(371 391 392 372) +4(2371 2372 2392 2391) +4(372 392 393 373) +4(2372 2373 2393 2392) +4(373 393 394 374) +4(2373 2374 2394 2393) +4(374 394 395 375) +4(2374 2375 2395 2394) +4(375 395 396 376) +4(2375 2376 2396 2395) +4(376 396 397 377) +4(2376 2377 2397 2396) +4(377 397 398 378) +4(2377 2378 2398 2397) +4(378 398 399 379) +4(2378 2379 2399 2398) +4(380 400 401 381) +4(2380 2381 2401 2400) +4(381 401 402 382) +4(2381 2382 2402 2401) +4(382 402 403 383) +4(2382 2383 2403 2402) +4(383 403 404 384) +4(2383 2384 2404 2403) +4(384 404 405 385) +4(2384 2385 2405 2404) +4(385 405 406 386) +4(2385 2386 2406 2405) +4(386 406 407 387) +4(2386 2387 2407 2406) +4(387 407 408 388) +4(2387 2388 2408 2407) +4(388 408 409 389) +4(2388 2389 2409 2408) +4(389 409 410 390) +4(2389 2390 2410 2409) +4(390 410 411 391) +4(2390 2391 2411 2410) +4(391 411 412 392) +4(2391 2392 2412 2411) +4(392 412 413 393) +4(2392 2393 2413 2412) +4(393 413 414 394) +4(2393 2394 2414 2413) +4(394 414 415 395) +4(2394 2395 2415 2414) +4(395 415 416 396) +4(2395 2396 2416 2415) +4(396 416 417 397) +4(2396 2397 2417 2416) +4(397 417 418 398) +4(2397 2398 2418 2417) +4(398 418 419 399) +4(2398 2399 2419 2418) +4(400 420 421 401) +4(2400 2401 2421 2420) +4(401 421 422 402) +4(2401 2402 2422 2421) +4(402 422 423 403) +4(2402 2403 2423 2422) +4(403 423 424 404) +4(2403 2404 2424 2423) +4(404 424 425 405) +4(2404 2405 2425 2424) +4(405 425 426 406) +4(2405 2406 2426 2425) +4(406 426 427 407) +4(2406 2407 2427 2426) +4(407 427 428 408) +4(2407 2408 2428 2427) +4(408 428 429 409) +4(2408 2409 2429 2428) +4(409 429 430 410) +4(2409 2410 2430 2429) +4(410 430 431 411) +4(2410 2411 2431 2430) +4(411 431 432 412) +4(2411 2412 2432 2431) +4(412 432 433 413) +4(2412 2413 2433 2432) +4(413 433 434 414) +4(2413 2414 2434 2433) +4(414 434 435 415) +4(2414 2415 2435 2434) +4(415 435 436 416) +4(2415 2416 2436 2435) +4(416 436 437 417) +4(2416 2417 2437 2436) +4(417 437 438 418) +4(2417 2418 2438 2437) +4(418 438 439 419) +4(2418 2419 2439 2438) +4(420 440 441 421) +4(2420 2421 2441 2440) +4(421 441 442 422) +4(2421 2422 2442 2441) +4(422 442 443 423) +4(2422 2423 2443 2442) +4(423 443 444 424) +4(2423 2424 2444 2443) +4(424 444 445 425) +4(2424 2425 2445 2444) +4(425 445 446 426) +4(2425 2426 2446 2445) +4(426 446 447 427) +4(2426 2427 2447 2446) +4(427 447 448 428) +4(2427 2428 2448 2447) +4(428 448 449 429) +4(2428 2429 2449 2448) +4(429 449 450 430) +4(2429 2430 2450 2449) +4(430 450 451 431) +4(2430 2431 2451 2450) +4(431 451 452 432) +4(2431 2432 2452 2451) +4(432 452 453 433) +4(2432 2433 2453 2452) +4(433 453 454 434) +4(2433 2434 2454 2453) +4(434 454 455 435) +4(2434 2435 2455 2454) +4(435 455 456 436) +4(2435 2436 2456 2455) +4(436 456 457 437) +4(2436 2437 2457 2456) +4(437 457 458 438) +4(2437 2438 2458 2457) +4(438 458 459 439) +4(2438 2439 2459 2458) +4(440 460 461 441) +4(2440 2441 2461 2460) +4(441 461 462 442) +4(2441 2442 2462 2461) +4(442 462 463 443) +4(2442 2443 2463 2462) +4(443 463 464 444) +4(2443 2444 2464 2463) +4(444 464 465 445) +4(2444 2445 2465 2464) +4(445 465 466 446) +4(2445 2446 2466 2465) +4(446 466 467 447) +4(2446 2447 2467 2466) +4(447 467 468 448) +4(2447 2448 2468 2467) +4(448 468 469 449) +4(2448 2449 2469 2468) +4(449 469 470 450) +4(2449 2450 2470 2469) +4(450 470 471 451) +4(2450 2451 2471 2470) +4(451 471 472 452) +4(2451 2452 2472 2471) +4(452 472 473 453) +4(2452 2453 2473 2472) +4(453 473 474 454) +4(2453 2454 2474 2473) +4(454 474 475 455) +4(2454 2455 2475 2474) +4(455 475 476 456) +4(2455 2456 2476 2475) +4(456 476 477 457) +4(2456 2457 2477 2476) +4(457 477 478 458) +4(2457 2458 2478 2477) +4(458 478 479 459) +4(2458 2459 2479 2478) +4(460 480 481 461) +4(2460 2461 2481 2480) +4(461 481 482 462) +4(2461 2462 2482 2481) +4(462 482 483 463) +4(2462 2463 2483 2482) +4(463 483 484 464) +4(2463 2464 2484 2483) +4(464 484 485 465) +4(2464 2465 2485 2484) +4(465 485 486 466) +4(2465 2466 2486 2485) +4(466 486 487 467) +4(2466 2467 2487 2486) +4(467 487 488 468) +4(2467 2468 2488 2487) +4(468 488 489 469) +4(2468 2469 2489 2488) +4(469 489 490 470) +4(2469 2470 2490 2489) +4(470 490 491 471) +4(2470 2471 2491 2490) +4(471 491 492 472) +4(2471 2472 2492 2491) +4(472 492 493 473) +4(2472 2473 2493 2492) +4(473 493 494 474) +4(2473 2474 2494 2493) +4(474 494 495 475) +4(2474 2475 2495 2494) +4(475 495 496 476) +4(2475 2476 2496 2495) +4(476 496 497 477) +4(2476 2477 2497 2496) +4(477 497 498 478) +4(2477 2478 2498 2497) +4(478 498 499 479) +4(2478 2479 2499 2498) +4(480 500 501 481) +4(2480 2481 2501 2500) +4(481 501 502 482) +4(2481 2482 2502 2501) +4(482 502 503 483) +4(2482 2483 2503 2502) +4(483 503 504 484) +4(2483 2484 2504 2503) +4(484 504 505 485) +4(2484 2485 2505 2504) +4(485 505 506 486) +4(2485 2486 2506 2505) +4(486 506 507 487) +4(2486 2487 2507 2506) +4(487 507 508 488) +4(2487 2488 2508 2507) +4(488 508 509 489) +4(2488 2489 2509 2508) +4(489 509 510 490) +4(2489 2490 2510 2509) +4(490 510 511 491) +4(2490 2491 2511 2510) +4(491 511 512 492) +4(2491 2492 2512 2511) +4(492 512 513 493) +4(2492 2493 2513 2512) +4(493 513 514 494) +4(2493 2494 2514 2513) +4(494 514 515 495) +4(2494 2495 2515 2514) +4(495 515 516 496) +4(2495 2496 2516 2515) +4(496 516 517 497) +4(2496 2497 2517 2516) +4(497 517 518 498) +4(2497 2498 2518 2517) +4(498 518 519 499) +4(2498 2499 2519 2518) +4(500 520 521 501) +4(2500 2501 2521 2520) +4(501 521 522 502) +4(2501 2502 2522 2521) +4(502 522 523 503) +4(2502 2503 2523 2522) +4(503 523 524 504) +4(2503 2504 2524 2523) +4(504 524 525 505) +4(2504 2505 2525 2524) +4(505 525 526 506) +4(2505 2506 2526 2525) +4(506 526 527 507) +4(2506 2507 2527 2526) +4(507 527 528 508) +4(2507 2508 2528 2527) +4(508 528 529 509) +4(2508 2509 2529 2528) +4(509 529 530 510) +4(2509 2510 2530 2529) +4(510 530 531 511) +4(2510 2511 2531 2530) +4(511 531 532 512) +4(2511 2512 2532 2531) +4(512 532 533 513) +4(2512 2513 2533 2532) +4(513 533 534 514) +4(2513 2514 2534 2533) +4(514 534 535 515) +4(2514 2515 2535 2534) +4(515 535 536 516) +4(2515 2516 2536 2535) +4(516 536 537 517) +4(2516 2517 2537 2536) +4(517 537 538 518) +4(2517 2518 2538 2537) +4(518 538 539 519) +4(2518 2519 2539 2538) +4(520 540 541 521) +4(2520 2521 2541 2540) +4(521 541 542 522) +4(2521 2522 2542 2541) +4(522 542 543 523) +4(2522 2523 2543 2542) +4(523 543 544 524) +4(2523 2524 2544 2543) +4(524 544 545 525) +4(2524 2525 2545 2544) +4(525 545 546 526) +4(2525 2526 2546 2545) +4(526 546 547 527) +4(2526 2527 2547 2546) +4(527 547 548 528) +4(2527 2528 2548 2547) +4(528 548 549 529) +4(2528 2529 2549 2548) +4(529 549 550 530) +4(2529 2530 2550 2549) +4(530 550 551 531) +4(2530 2531 2551 2550) +4(531 551 552 532) +4(2531 2532 2552 2551) +4(532 552 553 533) +4(2532 2533 2553 2552) +4(533 553 554 534) +4(2533 2534 2554 2553) +4(534 554 555 535) +4(2534 2535 2555 2554) +4(535 555 556 536) +4(2535 2536 2556 2555) +4(536 556 557 537) +4(2536 2537 2557 2556) +4(537 557 558 538) +4(2537 2538 2558 2557) +4(538 558 559 539) +4(2538 2539 2559 2558) +4(540 560 561 541) +4(2540 2541 2561 2560) +4(541 561 562 542) +4(2541 2542 2562 2561) +4(542 562 563 543) +4(2542 2543 2563 2562) +4(543 563 564 544) +4(2543 2544 2564 2563) +4(544 564 565 545) +4(2544 2545 2565 2564) +4(545 565 566 546) +4(2545 2546 2566 2565) +4(546 566 567 547) +4(2546 2547 2567 2566) +4(547 567 568 548) +4(2547 2548 2568 2567) +4(548 568 569 549) +4(2548 2549 2569 2568) +4(549 569 570 550) +4(2549 2550 2570 2569) +4(550 570 571 551) +4(2550 2551 2571 2570) +4(551 571 572 552) +4(2551 2552 2572 2571) +4(552 572 573 553) +4(2552 2553 2573 2572) +4(553 573 574 554) +4(2553 2554 2574 2573) +4(554 574 575 555) +4(2554 2555 2575 2574) +4(555 575 576 556) +4(2555 2556 2576 2575) +4(556 576 577 557) +4(2556 2557 2577 2576) +4(557 577 578 558) +4(2557 2558 2578 2577) +4(558 578 579 559) +4(2558 2559 2579 2578) +4(560 580 581 561) +4(2560 2561 2581 2580) +4(561 581 582 562) +4(2561 2562 2582 2581) +4(562 582 583 563) +4(2562 2563 2583 2582) +4(563 583 584 564) +4(2563 2564 2584 2583) +4(564 584 585 565) +4(2564 2565 2585 2584) +4(565 585 586 566) +4(2565 2566 2586 2585) +4(566 586 587 567) +4(2566 2567 2587 2586) +4(567 587 588 568) +4(2567 2568 2588 2587) +4(568 588 589 569) +4(2568 2569 2589 2588) +4(569 589 590 570) +4(2569 2570 2590 2589) +4(570 590 591 571) +4(2570 2571 2591 2590) +4(571 591 592 572) +4(2571 2572 2592 2591) +4(572 592 593 573) +4(2572 2573 2593 2592) +4(573 593 594 574) +4(2573 2574 2594 2593) +4(574 594 595 575) +4(2574 2575 2595 2594) +4(575 595 596 576) +4(2575 2576 2596 2595) +4(576 596 597 577) +4(2576 2577 2597 2596) +4(577 597 598 578) +4(2577 2578 2598 2597) +4(578 598 599 579) +4(2578 2579 2599 2598) +4(580 600 601 581) +4(2580 2581 2601 2600) +4(581 601 602 582) +4(2581 2582 2602 2601) +4(582 602 603 583) +4(2582 2583 2603 2602) +4(583 603 604 584) +4(2583 2584 2604 2603) +4(584 604 605 585) +4(2584 2585 2605 2604) +4(585 605 606 586) +4(2585 2586 2606 2605) +4(586 606 607 587) +4(2586 2587 2607 2606) +4(587 607 608 588) +4(2587 2588 2608 2607) +4(588 608 609 589) +4(2588 2589 2609 2608) +4(589 609 610 590) +4(2589 2590 2610 2609) +4(590 610 611 591) +4(2590 2591 2611 2610) +4(591 611 612 592) +4(2591 2592 2612 2611) +4(592 612 613 593) +4(2592 2593 2613 2612) +4(593 613 614 594) +4(2593 2594 2614 2613) +4(594 614 615 595) +4(2594 2595 2615 2614) +4(595 615 616 596) +4(2595 2596 2616 2615) +4(596 616 617 597) +4(2596 2597 2617 2616) +4(597 617 618 598) +4(2597 2598 2618 2617) +4(598 618 619 599) +4(2598 2599 2619 2618) +4(600 620 621 601) +4(2600 2601 2621 2620) +4(601 621 622 602) +4(2601 2602 2622 2621) +4(602 622 623 603) +4(2602 2603 2623 2622) +4(603 623 624 604) +4(2603 2604 2624 2623) +4(604 624 625 605) +4(2604 2605 2625 2624) +4(605 625 626 606) +4(2605 2606 2626 2625) +4(606 626 627 607) +4(2606 2607 2627 2626) +4(607 627 628 608) +4(2607 2608 2628 2627) +4(608 628 629 609) +4(2608 2609 2629 2628) +4(609 629 630 610) +4(2609 2610 2630 2629) +4(610 630 631 611) +4(2610 2611 2631 2630) +4(611 631 632 612) +4(2611 2612 2632 2631) +4(612 632 633 613) +4(2612 2613 2633 2632) +4(613 633 634 614) +4(2613 2614 2634 2633) +4(614 634 635 615) +4(2614 2615 2635 2634) +4(615 635 636 616) +4(2615 2616 2636 2635) +4(616 636 637 617) +4(2616 2617 2637 2636) +4(617 637 638 618) +4(2617 2618 2638 2637) +4(618 638 639 619) +4(2618 2619 2639 2638) +4(620 640 641 621) +4(2620 2621 2641 2640) +4(621 641 642 622) +4(2621 2622 2642 2641) +4(622 642 643 623) +4(2622 2623 2643 2642) +4(623 643 644 624) +4(2623 2624 2644 2643) +4(624 644 645 625) +4(2624 2625 2645 2644) +4(625 645 646 626) +4(2625 2626 2646 2645) +4(626 646 647 627) +4(2626 2627 2647 2646) +4(627 647 648 628) +4(2627 2628 2648 2647) +4(628 648 649 629) +4(2628 2629 2649 2648) +4(629 649 650 630) +4(2629 2630 2650 2649) +4(630 650 651 631) +4(2630 2631 2651 2650) +4(631 651 652 632) +4(2631 2632 2652 2651) +4(632 652 653 633) +4(2632 2633 2653 2652) +4(633 653 654 634) +4(2633 2634 2654 2653) +4(634 654 655 635) +4(2634 2635 2655 2654) +4(635 655 656 636) +4(2635 2636 2656 2655) +4(636 656 657 637) +4(2636 2637 2657 2656) +4(637 657 658 638) +4(2637 2638 2658 2657) +4(638 658 659 639) +4(2638 2639 2659 2658) +4(640 660 661 641) +4(2640 2641 2661 2660) +4(641 661 662 642) +4(2641 2642 2662 2661) +4(642 662 663 643) +4(2642 2643 2663 2662) +4(643 663 664 644) +4(2643 2644 2664 2663) +4(644 664 665 645) +4(2644 2645 2665 2664) +4(645 665 666 646) +4(2645 2646 2666 2665) +4(646 666 667 647) +4(2646 2647 2667 2666) +4(647 667 668 648) +4(2647 2648 2668 2667) +4(648 668 669 649) +4(2648 2649 2669 2668) +4(649 669 670 650) +4(2649 2650 2670 2669) +4(650 670 671 651) +4(2650 2651 2671 2670) +4(651 671 672 652) +4(2651 2652 2672 2671) +4(652 672 673 653) +4(2652 2653 2673 2672) +4(653 673 674 654) +4(2653 2654 2674 2673) +4(654 674 675 655) +4(2654 2655 2675 2674) +4(655 675 676 656) +4(2655 2656 2676 2675) +4(656 676 677 657) +4(2656 2657 2677 2676) +4(657 677 678 658) +4(2657 2658 2678 2677) +4(658 678 679 659) +4(2658 2659 2679 2678) +4(660 680 681 661) +4(2660 2661 2681 2680) +4(661 681 682 662) +4(2661 2662 2682 2681) +4(662 682 683 663) +4(2662 2663 2683 2682) +4(663 683 684 664) +4(2663 2664 2684 2683) +4(664 684 685 665) +4(2664 2665 2685 2684) +4(665 685 686 666) +4(2665 2666 2686 2685) +4(666 686 687 667) +4(2666 2667 2687 2686) +4(667 687 688 668) +4(2667 2668 2688 2687) +4(668 688 689 669) +4(2668 2669 2689 2688) +4(669 689 690 670) +4(2669 2670 2690 2689) +4(670 690 691 671) +4(2670 2671 2691 2690) +4(671 691 692 672) +4(2671 2672 2692 2691) +4(672 692 693 673) +4(2672 2673 2693 2692) +4(673 693 694 674) +4(2673 2674 2694 2693) +4(674 694 695 675) +4(2674 2675 2695 2694) +4(675 695 696 676) +4(2675 2676 2696 2695) +4(676 696 697 677) +4(2676 2677 2697 2696) +4(677 697 698 678) +4(2677 2678 2698 2697) +4(678 698 699 679) +4(2678 2679 2699 2698) +4(680 700 701 681) +4(2680 2681 2701 2700) +4(681 701 702 682) +4(2681 2682 2702 2701) +4(682 702 703 683) +4(2682 2683 2703 2702) +4(683 703 704 684) +4(2683 2684 2704 2703) +4(684 704 705 685) +4(2684 2685 2705 2704) +4(685 705 706 686) +4(2685 2686 2706 2705) +4(686 706 707 687) +4(2686 2687 2707 2706) +4(687 707 708 688) +4(2687 2688 2708 2707) +4(688 708 709 689) +4(2688 2689 2709 2708) +4(689 709 710 690) +4(2689 2690 2710 2709) +4(690 710 711 691) +4(2690 2691 2711 2710) +4(691 711 712 692) +4(2691 2692 2712 2711) +4(692 712 713 693) +4(2692 2693 2713 2712) +4(693 713 714 694) +4(2693 2694 2714 2713) +4(694 714 715 695) +4(2694 2695 2715 2714) +4(695 715 716 696) +4(2695 2696 2716 2715) +4(696 716 717 697) +4(2696 2697 2717 2716) +4(697 717 718 698) +4(2697 2698 2718 2717) +4(698 718 719 699) +4(2698 2699 2719 2718) +4(700 720 721 701) +4(2700 2701 2721 2720) +4(701 721 722 702) +4(2701 2702 2722 2721) +4(702 722 723 703) +4(2702 2703 2723 2722) +4(703 723 724 704) +4(2703 2704 2724 2723) +4(704 724 725 705) +4(2704 2705 2725 2724) +4(705 725 726 706) +4(2705 2706 2726 2725) +4(706 726 727 707) +4(2706 2707 2727 2726) +4(707 727 728 708) +4(2707 2708 2728 2727) +4(708 728 729 709) +4(2708 2709 2729 2728) +4(709 729 730 710) +4(2709 2710 2730 2729) +4(710 730 731 711) +4(2710 2711 2731 2730) +4(711 731 732 712) +4(2711 2712 2732 2731) +4(712 732 733 713) +4(2712 2713 2733 2732) +4(713 733 734 714) +4(2713 2714 2734 2733) +4(714 734 735 715) +4(2714 2715 2735 2734) +4(715 735 736 716) +4(2715 2716 2736 2735) +4(716 736 737 717) +4(2716 2717 2737 2736) +4(717 737 738 718) +4(2717 2718 2738 2737) +4(718 738 739 719) +4(2718 2719 2739 2738) +4(720 740 741 721) +4(2720 2721 2741 2740) +4(721 741 742 722) +4(2721 2722 2742 2741) +4(722 742 743 723) +4(2722 2723 2743 2742) +4(723 743 744 724) +4(2723 2724 2744 2743) +4(724 744 745 725) +4(2724 2725 2745 2744) +4(725 745 746 726) +4(2725 2726 2746 2745) +4(726 746 747 727) +4(2726 2727 2747 2746) +4(727 747 748 728) +4(2727 2728 2748 2747) +4(728 748 749 729) +4(2728 2729 2749 2748) +4(729 749 750 730) +4(2729 2730 2750 2749) +4(730 750 751 731) +4(2730 2731 2751 2750) +4(731 751 752 732) +4(2731 2732 2752 2751) +4(732 752 753 733) +4(2732 2733 2753 2752) +4(733 753 754 734) +4(2733 2734 2754 2753) +4(734 754 755 735) +4(2734 2735 2755 2754) +4(735 755 756 736) +4(2735 2736 2756 2755) +4(736 756 757 737) +4(2736 2737 2757 2756) +4(737 757 758 738) +4(2737 2738 2758 2757) +4(738 758 759 739) +4(2738 2739 2759 2758) +4(740 760 761 741) +4(2740 2741 2761 2760) +4(741 761 762 742) +4(2741 2742 2762 2761) +4(742 762 763 743) +4(2742 2743 2763 2762) +4(743 763 764 744) +4(2743 2744 2764 2763) +4(744 764 765 745) +4(2744 2745 2765 2764) +4(745 765 766 746) +4(2745 2746 2766 2765) +4(746 766 767 747) +4(2746 2747 2767 2766) +4(747 767 768 748) +4(2747 2748 2768 2767) +4(748 768 769 749) +4(2748 2749 2769 2768) +4(749 769 770 750) +4(2749 2750 2770 2769) +4(750 770 771 751) +4(2750 2751 2771 2770) +4(751 771 772 752) +4(2751 2752 2772 2771) +4(752 772 773 753) +4(2752 2753 2773 2772) +4(753 773 774 754) +4(2753 2754 2774 2773) +4(754 774 775 755) +4(2754 2755 2775 2774) +4(755 775 776 756) +4(2755 2756 2776 2775) +4(756 776 777 757) +4(2756 2757 2777 2776) +4(757 777 778 758) +4(2757 2758 2778 2777) +4(758 778 779 759) +4(2758 2759 2779 2778) +4(760 780 781 761) +4(2760 2761 2781 2780) +4(761 781 782 762) +4(2761 2762 2782 2781) +4(762 782 783 763) +4(2762 2763 2783 2782) +4(763 783 784 764) +4(2763 2764 2784 2783) +4(764 784 785 765) +4(2764 2765 2785 2784) +4(765 785 786 766) +4(2765 2766 2786 2785) +4(766 786 787 767) +4(2766 2767 2787 2786) +4(767 787 788 768) +4(2767 2768 2788 2787) +4(768 788 789 769) +4(2768 2769 2789 2788) +4(769 789 790 770) +4(2769 2770 2790 2789) +4(770 790 791 771) +4(2770 2771 2791 2790) +4(771 791 792 772) +4(2771 2772 2792 2791) +4(772 792 793 773) +4(2772 2773 2793 2792) +4(773 793 794 774) +4(2773 2774 2794 2793) +4(774 794 795 775) +4(2774 2775 2795 2794) +4(775 795 796 776) +4(2775 2776 2796 2795) +4(776 796 797 777) +4(2776 2777 2797 2796) +4(777 797 798 778) +4(2777 2778 2798 2797) +4(778 798 799 779) +4(2778 2779 2799 2798) +4(780 800 801 781) +4(2780 2781 2801 2800) +4(781 801 802 782) +4(2781 2782 2802 2801) +4(782 802 803 783) +4(2782 2783 2803 2802) +4(783 803 804 784) +4(2783 2784 2804 2803) +4(784 804 805 785) +4(2784 2785 2805 2804) +4(785 805 806 786) +4(2785 2786 2806 2805) +4(786 806 807 787) +4(2786 2787 2807 2806) +4(787 807 808 788) +4(2787 2788 2808 2807) +4(788 808 809 789) +4(2788 2789 2809 2808) +4(789 809 810 790) +4(2789 2790 2810 2809) +4(790 810 811 791) +4(2790 2791 2811 2810) +4(791 811 812 792) +4(2791 2792 2812 2811) +4(792 812 813 793) +4(2792 2793 2813 2812) +4(793 813 814 794) +4(2793 2794 2814 2813) +4(794 814 815 795) +4(2794 2795 2815 2814) +4(795 815 816 796) +4(2795 2796 2816 2815) +4(796 816 817 797) +4(2796 2797 2817 2816) +4(797 817 818 798) +4(2797 2798 2818 2817) +4(798 818 819 799) +4(2798 2799 2819 2818) +4(800 820 821 801) +4(2800 2801 2821 2820) +4(801 821 822 802) +4(2801 2802 2822 2821) +4(802 822 823 803) +4(2802 2803 2823 2822) +4(803 823 824 804) +4(2803 2804 2824 2823) +4(804 824 825 805) +4(2804 2805 2825 2824) +4(805 825 826 806) +4(2805 2806 2826 2825) +4(806 826 827 807) +4(2806 2807 2827 2826) +4(807 827 828 808) +4(2807 2808 2828 2827) +4(808 828 829 809) +4(2808 2809 2829 2828) +4(809 829 830 810) +4(2809 2810 2830 2829) +4(810 830 831 811) +4(2810 2811 2831 2830) +4(811 831 832 812) +4(2811 2812 2832 2831) +4(812 832 833 813) +4(2812 2813 2833 2832) +4(813 833 834 814) +4(2813 2814 2834 2833) +4(814 834 835 815) +4(2814 2815 2835 2834) +4(815 835 836 816) +4(2815 2816 2836 2835) +4(816 836 837 817) +4(2816 2817 2837 2836) +4(817 837 838 818) +4(2817 2818 2838 2837) +4(818 838 839 819) +4(2818 2819 2839 2838) +4(820 840 841 821) +4(2820 2821 2841 2840) +4(821 841 842 822) +4(2821 2822 2842 2841) +4(822 842 843 823) +4(2822 2823 2843 2842) +4(823 843 844 824) +4(2823 2824 2844 2843) +4(824 844 845 825) +4(2824 2825 2845 2844) +4(825 845 846 826) +4(2825 2826 2846 2845) +4(826 846 847 827) +4(2826 2827 2847 2846) +4(827 847 848 828) +4(2827 2828 2848 2847) +4(828 848 849 829) +4(2828 2829 2849 2848) +4(829 849 850 830) +4(2829 2830 2850 2849) +4(830 850 851 831) +4(2830 2831 2851 2850) +4(831 851 852 832) +4(2831 2832 2852 2851) +4(832 852 853 833) +4(2832 2833 2853 2852) +4(833 853 854 834) +4(2833 2834 2854 2853) +4(834 854 855 835) +4(2834 2835 2855 2854) +4(835 855 856 836) +4(2835 2836 2856 2855) +4(836 856 857 837) +4(2836 2837 2857 2856) +4(837 857 858 838) +4(2837 2838 2858 2857) +4(838 858 859 839) +4(2838 2839 2859 2858) +4(840 860 861 841) +4(2840 2841 2861 2860) +4(841 861 862 842) +4(2841 2842 2862 2861) +4(842 862 863 843) +4(2842 2843 2863 2862) +4(843 863 864 844) +4(2843 2844 2864 2863) +4(844 864 865 845) +4(2844 2845 2865 2864) +4(845 865 866 846) +4(2845 2846 2866 2865) +4(846 866 867 847) +4(2846 2847 2867 2866) +4(847 867 868 848) +4(2847 2848 2868 2867) +4(848 868 869 849) +4(2848 2849 2869 2868) +4(849 869 870 850) +4(2849 2850 2870 2869) +4(850 870 871 851) +4(2850 2851 2871 2870) +4(851 871 872 852) +4(2851 2852 2872 2871) +4(852 872 873 853) +4(2852 2853 2873 2872) +4(853 873 874 854) +4(2853 2854 2874 2873) +4(854 874 875 855) +4(2854 2855 2875 2874) +4(855 875 876 856) +4(2855 2856 2876 2875) +4(856 876 877 857) +4(2856 2857 2877 2876) +4(857 877 878 858) +4(2857 2858 2878 2877) +4(858 878 879 859) +4(2858 2859 2879 2878) +4(860 880 881 861) +4(2860 2861 2881 2880) +4(861 881 882 862) +4(2861 2862 2882 2881) +4(862 882 883 863) +4(2862 2863 2883 2882) +4(863 883 884 864) +4(2863 2864 2884 2883) +4(864 884 885 865) +4(2864 2865 2885 2884) +4(865 885 886 866) +4(2865 2866 2886 2885) +4(866 886 887 867) +4(2866 2867 2887 2886) +4(867 887 888 868) +4(2867 2868 2888 2887) +4(868 888 889 869) +4(2868 2869 2889 2888) +4(869 889 890 870) +4(2869 2870 2890 2889) +4(870 890 891 871) +4(2870 2871 2891 2890) +4(871 891 892 872) +4(2871 2872 2892 2891) +4(872 892 893 873) +4(2872 2873 2893 2892) +4(873 893 894 874) +4(2873 2874 2894 2893) +4(874 894 895 875) +4(2874 2875 2895 2894) +4(875 895 896 876) +4(2875 2876 2896 2895) +4(876 896 897 877) +4(2876 2877 2897 2896) +4(877 897 898 878) +4(2877 2878 2898 2897) +4(878 898 899 879) +4(2878 2879 2899 2898) +4(880 900 901 881) +4(2880 2881 2901 2900) +4(881 901 902 882) +4(2881 2882 2902 2901) +4(882 902 903 883) +4(2882 2883 2903 2902) +4(883 903 904 884) +4(2883 2884 2904 2903) +4(884 904 905 885) +4(2884 2885 2905 2904) +4(885 905 906 886) +4(2885 2886 2906 2905) +4(886 906 907 887) +4(2886 2887 2907 2906) +4(887 907 908 888) +4(2887 2888 2908 2907) +4(888 908 909 889) +4(2888 2889 2909 2908) +4(889 909 910 890) +4(2889 2890 2910 2909) +4(890 910 911 891) +4(2890 2891 2911 2910) +4(891 911 912 892) +4(2891 2892 2912 2911) +4(892 912 913 893) +4(2892 2893 2913 2912) +4(893 913 914 894) +4(2893 2894 2914 2913) +4(894 914 915 895) +4(2894 2895 2915 2914) +4(895 915 916 896) +4(2895 2896 2916 2915) +4(896 916 917 897) +4(2896 2897 2917 2916) +4(897 917 918 898) +4(2897 2898 2918 2917) +4(898 918 919 899) +4(2898 2899 2919 2918) +4(900 920 921 901) +4(2900 2901 2921 2920) +4(901 921 922 902) +4(2901 2902 2922 2921) +4(902 922 923 903) +4(2902 2903 2923 2922) +4(903 923 924 904) +4(2903 2904 2924 2923) +4(904 924 925 905) +4(2904 2905 2925 2924) +4(905 925 926 906) +4(2905 2906 2926 2925) +4(906 926 927 907) +4(2906 2907 2927 2926) +4(907 927 928 908) +4(2907 2908 2928 2927) +4(908 928 929 909) +4(2908 2909 2929 2928) +4(909 929 930 910) +4(2909 2910 2930 2929) +4(910 930 931 911) +4(2910 2911 2931 2930) +4(911 931 932 912) +4(2911 2912 2932 2931) +4(912 932 933 913) +4(2912 2913 2933 2932) +4(913 933 934 914) +4(2913 2914 2934 2933) +4(914 934 935 915) +4(2914 2915 2935 2934) +4(915 935 936 916) +4(2915 2916 2936 2935) +4(916 936 937 917) +4(2916 2917 2937 2936) +4(917 937 938 918) +4(2917 2918 2938 2937) +4(918 938 939 919) +4(2918 2919 2939 2938) +4(920 940 941 921) +4(2920 2921 2941 2940) +4(921 941 942 922) +4(2921 2922 2942 2941) +4(922 942 943 923) +4(2922 2923 2943 2942) +4(923 943 944 924) +4(2923 2924 2944 2943) +4(924 944 945 925) +4(2924 2925 2945 2944) +4(925 945 946 926) +4(2925 2926 2946 2945) +4(926 946 947 927) +4(2926 2927 2947 2946) +4(927 947 948 928) +4(2927 2928 2948 2947) +4(928 948 949 929) +4(2928 2929 2949 2948) +4(929 949 950 930) +4(2929 2930 2950 2949) +4(930 950 951 931) +4(2930 2931 2951 2950) +4(931 951 952 932) +4(2931 2932 2952 2951) +4(932 952 953 933) +4(2932 2933 2953 2952) +4(933 953 954 934) +4(2933 2934 2954 2953) +4(934 954 955 935) +4(2934 2935 2955 2954) +4(935 955 956 936) +4(2935 2936 2956 2955) +4(936 956 957 937) +4(2936 2937 2957 2956) +4(937 957 958 938) +4(2937 2938 2958 2957) +4(938 958 959 939) +4(2938 2939 2959 2958) +4(940 960 961 941) +4(2940 2941 2961 2960) +4(941 961 962 942) +4(2941 2942 2962 2961) +4(942 962 963 943) +4(2942 2943 2963 2962) +4(943 963 964 944) +4(2943 2944 2964 2963) +4(944 964 965 945) +4(2944 2945 2965 2964) +4(945 965 966 946) +4(2945 2946 2966 2965) +4(946 966 967 947) +4(2946 2947 2967 2966) +4(947 967 968 948) +4(2947 2948 2968 2967) +4(948 968 969 949) +4(2948 2949 2969 2968) +4(949 969 970 950) +4(2949 2950 2970 2969) +4(950 970 971 951) +4(2950 2951 2971 2970) +4(951 971 972 952) +4(2951 2952 2972 2971) +4(952 972 973 953) +4(2952 2953 2973 2972) +4(953 973 974 954) +4(2953 2954 2974 2973) +4(954 974 975 955) +4(2954 2955 2975 2974) +4(955 975 976 956) +4(2955 2956 2976 2975) +4(956 976 977 957) +4(2956 2957 2977 2976) +4(957 977 978 958) +4(2957 2958 2978 2977) +4(958 978 979 959) +4(2958 2959 2979 2978) +4(960 980 981 961) +4(2960 2961 2981 2980) +4(961 981 982 962) +4(2961 2962 2982 2981) +4(962 982 983 963) +4(2962 2963 2983 2982) +4(963 983 984 964) +4(2963 2964 2984 2983) +4(964 984 985 965) +4(2964 2965 2985 2984) +4(965 985 986 966) +4(2965 2966 2986 2985) +4(966 986 987 967) +4(2966 2967 2987 2986) +4(967 987 988 968) +4(2967 2968 2988 2987) +4(968 988 989 969) +4(2968 2969 2989 2988) +4(969 989 990 970) +4(2969 2970 2990 2989) +4(970 990 991 971) +4(2970 2971 2991 2990) +4(971 991 992 972) +4(2971 2972 2992 2991) +4(972 992 993 973) +4(2972 2973 2993 2992) +4(973 993 994 974) +4(2973 2974 2994 2993) +4(974 994 995 975) +4(2974 2975 2995 2994) +4(975 995 996 976) +4(2975 2976 2996 2995) +4(976 996 997 977) +4(2976 2977 2997 2996) +4(977 997 998 978) +4(2977 2978 2998 2997) +4(978 998 999 979) +4(2978 2979 2999 2998) +4(980 1000 1001 981) +4(2980 2981 3001 3000) +4(981 1001 1002 982) +4(2981 2982 3002 3001) +4(982 1002 1003 983) +4(2982 2983 3003 3002) +4(983 1003 1004 984) +4(2983 2984 3004 3003) +4(984 1004 1005 985) +4(2984 2985 3005 3004) +4(985 1005 1006 986) +4(2985 2986 3006 3005) +4(986 1006 1007 987) +4(2986 2987 3007 3006) +4(987 1007 1008 988) +4(2987 2988 3008 3007) +4(988 1008 1009 989) +4(2988 2989 3009 3008) +4(989 1009 1010 990) +4(2989 2990 3010 3009) +4(990 1010 1011 991) +4(2990 2991 3011 3010) +4(991 1011 1012 992) +4(2991 2992 3012 3011) +4(992 1012 1013 993) +4(2992 2993 3013 3012) +4(993 1013 1014 994) +4(2993 2994 3014 3013) +4(994 1014 1015 995) +4(2994 2995 3015 3014) +4(995 1015 1016 996) +4(2995 2996 3016 3015) +4(996 1016 1017 997) +4(2996 2997 3017 3016) +4(997 1017 1018 998) +4(2997 2998 3018 3017) +4(998 1018 1019 999) +4(2998 2999 3019 3018) +4(1000 1020 1021 1001) +4(3000 3001 3021 3020) +4(1001 1021 1022 1002) +4(3001 3002 3022 3021) +4(1002 1022 1023 1003) +4(3002 3003 3023 3022) +4(1003 1023 1024 1004) +4(3003 3004 3024 3023) +4(1004 1024 1025 1005) +4(3004 3005 3025 3024) +4(1005 1025 1026 1006) +4(3005 3006 3026 3025) +4(1006 1026 1027 1007) +4(3006 3007 3027 3026) +4(1007 1027 1028 1008) +4(3007 3008 3028 3027) +4(1008 1028 1029 1009) +4(3008 3009 3029 3028) +4(1009 1029 1030 1010) +4(3009 3010 3030 3029) +4(1010 1030 1031 1011) +4(3010 3011 3031 3030) +4(1011 1031 1032 1012) +4(3011 3012 3032 3031) +4(1012 1032 1033 1013) +4(3012 3013 3033 3032) +4(1013 1033 1034 1014) +4(3013 3014 3034 3033) +4(1014 1034 1035 1015) +4(3014 3015 3035 3034) +4(1015 1035 1036 1016) +4(3015 3016 3036 3035) +4(1016 1036 1037 1017) +4(3016 3017 3037 3036) +4(1017 1037 1038 1018) +4(3017 3018 3038 3037) +4(1018 1038 1039 1019) +4(3018 3019 3039 3038) +4(1020 1040 1041 1021) +4(3020 3021 3041 3040) +4(1021 1041 1042 1022) +4(3021 3022 3042 3041) +4(1022 1042 1043 1023) +4(3022 3023 3043 3042) +4(1023 1043 1044 1024) +4(3023 3024 3044 3043) +4(1024 1044 1045 1025) +4(3024 3025 3045 3044) +4(1025 1045 1046 1026) +4(3025 3026 3046 3045) +4(1026 1046 1047 1027) +4(3026 3027 3047 3046) +4(1027 1047 1048 1028) +4(3027 3028 3048 3047) +4(1028 1048 1049 1029) +4(3028 3029 3049 3048) +4(1029 1049 1050 1030) +4(3029 3030 3050 3049) +4(1030 1050 1051 1031) +4(3030 3031 3051 3050) +4(1031 1051 1052 1032) +4(3031 3032 3052 3051) +4(1032 1052 1053 1033) +4(3032 3033 3053 3052) +4(1033 1053 1054 1034) +4(3033 3034 3054 3053) +4(1034 1054 1055 1035) +4(3034 3035 3055 3054) +4(1035 1055 1056 1036) +4(3035 3036 3056 3055) +4(1036 1056 1057 1037) +4(3036 3037 3057 3056) +4(1037 1057 1058 1038) +4(3037 3038 3058 3057) +4(1038 1058 1059 1039) +4(3038 3039 3059 3058) +4(1040 1060 1061 1041) +4(3040 3041 3061 3060) +4(1041 1061 1062 1042) +4(3041 3042 3062 3061) +4(1042 1062 1063 1043) +4(3042 3043 3063 3062) +4(1043 1063 1064 1044) +4(3043 3044 3064 3063) +4(1044 1064 1065 1045) +4(3044 3045 3065 3064) +4(1045 1065 1066 1046) +4(3045 3046 3066 3065) +4(1046 1066 1067 1047) +4(3046 3047 3067 3066) +4(1047 1067 1068 1048) +4(3047 3048 3068 3067) +4(1048 1068 1069 1049) +4(3048 3049 3069 3068) +4(1049 1069 1070 1050) +4(3049 3050 3070 3069) +4(1050 1070 1071 1051) +4(3050 3051 3071 3070) +4(1051 1071 1072 1052) +4(3051 3052 3072 3071) +4(1052 1072 1073 1053) +4(3052 3053 3073 3072) +4(1053 1073 1074 1054) +4(3053 3054 3074 3073) +4(1054 1074 1075 1055) +4(3054 3055 3075 3074) +4(1055 1075 1076 1056) +4(3055 3056 3076 3075) +4(1056 1076 1077 1057) +4(3056 3057 3077 3076) +4(1057 1077 1078 1058) +4(3057 3058 3078 3077) +4(1058 1078 1079 1059) +4(3058 3059 3079 3078) +4(1060 1080 1081 1061) +4(3060 3061 3081 3080) +4(1061 1081 1082 1062) +4(3061 3062 3082 3081) +4(1062 1082 1083 1063) +4(3062 3063 3083 3082) +4(1063 1083 1084 1064) +4(3063 3064 3084 3083) +4(1064 1084 1085 1065) +4(3064 3065 3085 3084) +4(1065 1085 1086 1066) +4(3065 3066 3086 3085) +4(1066 1086 1087 1067) +4(3066 3067 3087 3086) +4(1067 1087 1088 1068) +4(3067 3068 3088 3087) +4(1068 1088 1089 1069) +4(3068 3069 3089 3088) +4(1069 1089 1090 1070) +4(3069 3070 3090 3089) +4(1070 1090 1091 1071) +4(3070 3071 3091 3090) +4(1071 1091 1092 1072) +4(3071 3072 3092 3091) +4(1072 1092 1093 1073) +4(3072 3073 3093 3092) +4(1073 1093 1094 1074) +4(3073 3074 3094 3093) +4(1074 1094 1095 1075) +4(3074 3075 3095 3094) +4(1075 1095 1096 1076) +4(3075 3076 3096 3095) +4(1076 1096 1097 1077) +4(3076 3077 3097 3096) +4(1077 1097 1098 1078) +4(3077 3078 3098 3097) +4(1078 1098 1099 1079) +4(3078 3079 3099 3098) +4(1080 1100 1101 1081) +4(3080 3081 3101 3100) +4(1081 1101 1102 1082) +4(3081 3082 3102 3101) +4(1082 1102 1103 1083) +4(3082 3083 3103 3102) +4(1083 1103 1104 1084) +4(3083 3084 3104 3103) +4(1084 1104 1105 1085) +4(3084 3085 3105 3104) +4(1085 1105 1106 1086) +4(3085 3086 3106 3105) +4(1086 1106 1107 1087) +4(3086 3087 3107 3106) +4(1087 1107 1108 1088) +4(3087 3088 3108 3107) +4(1088 1108 1109 1089) +4(3088 3089 3109 3108) +4(1089 1109 1110 1090) +4(3089 3090 3110 3109) +4(1090 1110 1111 1091) +4(3090 3091 3111 3110) +4(1091 1111 1112 1092) +4(3091 3092 3112 3111) +4(1092 1112 1113 1093) +4(3092 3093 3113 3112) +4(1093 1113 1114 1094) +4(3093 3094 3114 3113) +4(1094 1114 1115 1095) +4(3094 3095 3115 3114) +4(1095 1115 1116 1096) +4(3095 3096 3116 3115) +4(1096 1116 1117 1097) +4(3096 3097 3117 3116) +4(1097 1117 1118 1098) +4(3097 3098 3118 3117) +4(1098 1118 1119 1099) +4(3098 3099 3119 3118) +4(1100 1120 1121 1101) +4(3100 3101 3121 3120) +4(1101 1121 1122 1102) +4(3101 3102 3122 3121) +4(1102 1122 1123 1103) +4(3102 3103 3123 3122) +4(1103 1123 1124 1104) +4(3103 3104 3124 3123) +4(1104 1124 1125 1105) +4(3104 3105 3125 3124) +4(1105 1125 1126 1106) +4(3105 3106 3126 3125) +4(1106 1126 1127 1107) +4(3106 3107 3127 3126) +4(1107 1127 1128 1108) +4(3107 3108 3128 3127) +4(1108 1128 1129 1109) +4(3108 3109 3129 3128) +4(1109 1129 1130 1110) +4(3109 3110 3130 3129) +4(1110 1130 1131 1111) +4(3110 3111 3131 3130) +4(1111 1131 1132 1112) +4(3111 3112 3132 3131) +4(1112 1132 1133 1113) +4(3112 3113 3133 3132) +4(1113 1133 1134 1114) +4(3113 3114 3134 3133) +4(1114 1134 1135 1115) +4(3114 3115 3135 3134) +4(1115 1135 1136 1116) +4(3115 3116 3136 3135) +4(1116 1136 1137 1117) +4(3116 3117 3137 3136) +4(1117 1137 1138 1118) +4(3117 3118 3138 3137) +4(1118 1138 1139 1119) +4(3118 3119 3139 3138) +4(1120 1140 1141 1121) +4(3120 3121 3141 3140) +4(1121 1141 1142 1122) +4(3121 3122 3142 3141) +4(1122 1142 1143 1123) +4(3122 3123 3143 3142) +4(1123 1143 1144 1124) +4(3123 3124 3144 3143) +4(1124 1144 1145 1125) +4(3124 3125 3145 3144) +4(1125 1145 1146 1126) +4(3125 3126 3146 3145) +4(1126 1146 1147 1127) +4(3126 3127 3147 3146) +4(1127 1147 1148 1128) +4(3127 3128 3148 3147) +4(1128 1148 1149 1129) +4(3128 3129 3149 3148) +4(1129 1149 1150 1130) +4(3129 3130 3150 3149) +4(1130 1150 1151 1131) +4(3130 3131 3151 3150) +4(1131 1151 1152 1132) +4(3131 3132 3152 3151) +4(1132 1152 1153 1133) +4(3132 3133 3153 3152) +4(1133 1153 1154 1134) +4(3133 3134 3154 3153) +4(1134 1154 1155 1135) +4(3134 3135 3155 3154) +4(1135 1155 1156 1136) +4(3135 3136 3156 3155) +4(1136 1156 1157 1137) +4(3136 3137 3157 3156) +4(1137 1157 1158 1138) +4(3137 3138 3158 3157) +4(1138 1158 1159 1139) +4(3138 3139 3159 3158) +4(1140 1160 1161 1141) +4(3140 3141 3161 3160) +4(1141 1161 1162 1142) +4(3141 3142 3162 3161) +4(1142 1162 1163 1143) +4(3142 3143 3163 3162) +4(1143 1163 1164 1144) +4(3143 3144 3164 3163) +4(1144 1164 1165 1145) +4(3144 3145 3165 3164) +4(1145 1165 1166 1146) +4(3145 3146 3166 3165) +4(1146 1166 1167 1147) +4(3146 3147 3167 3166) +4(1147 1167 1168 1148) +4(3147 3148 3168 3167) +4(1148 1168 1169 1149) +4(3148 3149 3169 3168) +4(1149 1169 1170 1150) +4(3149 3150 3170 3169) +4(1150 1170 1171 1151) +4(3150 3151 3171 3170) +4(1151 1171 1172 1152) +4(3151 3152 3172 3171) +4(1152 1172 1173 1153) +4(3152 3153 3173 3172) +4(1153 1173 1174 1154) +4(3153 3154 3174 3173) +4(1154 1174 1175 1155) +4(3154 3155 3175 3174) +4(1155 1175 1176 1156) +4(3155 3156 3176 3175) +4(1156 1176 1177 1157) +4(3156 3157 3177 3176) +4(1157 1177 1178 1158) +4(3157 3158 3178 3177) +4(1158 1178 1179 1159) +4(3158 3159 3179 3178) +4(1160 1180 1181 1161) +4(3160 3161 3181 3180) +4(1161 1181 1182 1162) +4(3161 3162 3182 3181) +4(1162 1182 1183 1163) +4(3162 3163 3183 3182) +4(1163 1183 1184 1164) +4(3163 3164 3184 3183) +4(1164 1184 1185 1165) +4(3164 3165 3185 3184) +4(1165 1185 1186 1166) +4(3165 3166 3186 3185) +4(1166 1186 1187 1167) +4(3166 3167 3187 3186) +4(1167 1187 1188 1168) +4(3167 3168 3188 3187) +4(1168 1188 1189 1169) +4(3168 3169 3189 3188) +4(1169 1189 1190 1170) +4(3169 3170 3190 3189) +4(1170 1190 1191 1171) +4(3170 3171 3191 3190) +4(1171 1191 1192 1172) +4(3171 3172 3192 3191) +4(1172 1192 1193 1173) +4(3172 3173 3193 3192) +4(1173 1193 1194 1174) +4(3173 3174 3194 3193) +4(1174 1194 1195 1175) +4(3174 3175 3195 3194) +4(1175 1195 1196 1176) +4(3175 3176 3196 3195) +4(1176 1196 1197 1177) +4(3176 3177 3197 3196) +4(1177 1197 1198 1178) +4(3177 3178 3198 3197) +4(1178 1198 1199 1179) +4(3178 3179 3199 3198) +4(1180 1200 1201 1181) +4(3180 3181 3201 3200) +4(1181 1201 1202 1182) +4(3181 3182 3202 3201) +4(1182 1202 1203 1183) +4(3182 3183 3203 3202) +4(1183 1203 1204 1184) +4(3183 3184 3204 3203) +4(1184 1204 1205 1185) +4(3184 3185 3205 3204) +4(1185 1205 1206 1186) +4(3185 3186 3206 3205) +4(1186 1206 1207 1187) +4(3186 3187 3207 3206) +4(1187 1207 1208 1188) +4(3187 3188 3208 3207) +4(1188 1208 1209 1189) +4(3188 3189 3209 3208) +4(1189 1209 1210 1190) +4(3189 3190 3210 3209) +4(1190 1210 1211 1191) +4(3190 3191 3211 3210) +4(1191 1211 1212 1192) +4(3191 3192 3212 3211) +4(1192 1212 1213 1193) +4(3192 3193 3213 3212) +4(1193 1213 1214 1194) +4(3193 3194 3214 3213) +4(1194 1214 1215 1195) +4(3194 3195 3215 3214) +4(1195 1215 1216 1196) +4(3195 3196 3216 3215) +4(1196 1216 1217 1197) +4(3196 3197 3217 3216) +4(1197 1217 1218 1198) +4(3197 3198 3218 3217) +4(1198 1218 1219 1199) +4(3198 3199 3219 3218) +4(1200 1220 1221 1201) +4(3200 3201 3221 3220) +4(1201 1221 1222 1202) +4(3201 3202 3222 3221) +4(1202 1222 1223 1203) +4(3202 3203 3223 3222) +4(1203 1223 1224 1204) +4(3203 3204 3224 3223) +4(1204 1224 1225 1205) +4(3204 3205 3225 3224) +4(1205 1225 1226 1206) +4(3205 3206 3226 3225) +4(1206 1226 1227 1207) +4(3206 3207 3227 3226) +4(1207 1227 1228 1208) +4(3207 3208 3228 3227) +4(1208 1228 1229 1209) +4(3208 3209 3229 3228) +4(1209 1229 1230 1210) +4(3209 3210 3230 3229) +4(1210 1230 1231 1211) +4(3210 3211 3231 3230) +4(1211 1231 1232 1212) +4(3211 3212 3232 3231) +4(1212 1232 1233 1213) +4(3212 3213 3233 3232) +4(1213 1233 1234 1214) +4(3213 3214 3234 3233) +4(1214 1234 1235 1215) +4(3214 3215 3235 3234) +4(1215 1235 1236 1216) +4(3215 3216 3236 3235) +4(1216 1236 1237 1217) +4(3216 3217 3237 3236) +4(1217 1237 1238 1218) +4(3217 3218 3238 3237) +4(1218 1238 1239 1219) +4(3218 3219 3239 3238) +4(1220 1240 1241 1221) +4(3220 3221 3241 3240) +4(1221 1241 1242 1222) +4(3221 3222 3242 3241) +4(1222 1242 1243 1223) +4(3222 3223 3243 3242) +4(1223 1243 1244 1224) +4(3223 3224 3244 3243) +4(1224 1244 1245 1225) +4(3224 3225 3245 3244) +4(1225 1245 1246 1226) +4(3225 3226 3246 3245) +4(1226 1246 1247 1227) +4(3226 3227 3247 3246) +4(1227 1247 1248 1228) +4(3227 3228 3248 3247) +4(1228 1248 1249 1229) +4(3228 3229 3249 3248) +4(1229 1249 1250 1230) +4(3229 3230 3250 3249) +4(1230 1250 1251 1231) +4(3230 3231 3251 3250) +4(1231 1251 1252 1232) +4(3231 3232 3252 3251) +4(1232 1252 1253 1233) +4(3232 3233 3253 3252) +4(1233 1253 1254 1234) +4(3233 3234 3254 3253) +4(1234 1254 1255 1235) +4(3234 3235 3255 3254) +4(1235 1255 1256 1236) +4(3235 3236 3256 3255) +4(1236 1256 1257 1237) +4(3236 3237 3257 3256) +4(1237 1257 1258 1238) +4(3237 3238 3258 3257) +4(1238 1258 1259 1239) +4(3238 3239 3259 3258) +4(1240 1260 1261 1241) +4(3240 3241 3261 3260) +4(1241 1261 1262 1242) +4(3241 3242 3262 3261) +4(1242 1262 1263 1243) +4(3242 3243 3263 3262) +4(1243 1263 1264 1244) +4(3243 3244 3264 3263) +4(1244 1264 1265 1245) +4(3244 3245 3265 3264) +4(1245 1265 1266 1246) +4(3245 3246 3266 3265) +4(1246 1266 1267 1247) +4(3246 3247 3267 3266) +4(1247 1267 1268 1248) +4(3247 3248 3268 3267) +4(1248 1268 1269 1249) +4(3248 3249 3269 3268) +4(1249 1269 1270 1250) +4(3249 3250 3270 3269) +4(1250 1270 1271 1251) +4(3250 3251 3271 3270) +4(1251 1271 1272 1252) +4(3251 3252 3272 3271) +4(1252 1272 1273 1253) +4(3252 3253 3273 3272) +4(1253 1273 1274 1254) +4(3253 3254 3274 3273) +4(1254 1274 1275 1255) +4(3254 3255 3275 3274) +4(1255 1275 1276 1256) +4(3255 3256 3276 3275) +4(1256 1276 1277 1257) +4(3256 3257 3277 3276) +4(1257 1277 1278 1258) +4(3257 3258 3278 3277) +4(1258 1278 1279 1259) +4(3258 3259 3279 3278) +4(1260 1280 1281 1261) +4(3260 3261 3281 3280) +4(1261 1281 1282 1262) +4(3261 3262 3282 3281) +4(1262 1282 1283 1263) +4(3262 3263 3283 3282) +4(1263 1283 1284 1264) +4(3263 3264 3284 3283) +4(1264 1284 1285 1265) +4(3264 3265 3285 3284) +4(1265 1285 1286 1266) +4(3265 3266 3286 3285) +4(1266 1286 1287 1267) +4(3266 3267 3287 3286) +4(1267 1287 1288 1268) +4(3267 3268 3288 3287) +4(1268 1288 1289 1269) +4(3268 3269 3289 3288) +4(1269 1289 1290 1270) +4(3269 3270 3290 3289) +4(1270 1290 1291 1271) +4(3270 3271 3291 3290) +4(1271 1291 1292 1272) +4(3271 3272 3292 3291) +4(1272 1292 1293 1273) +4(3272 3273 3293 3292) +4(1273 1293 1294 1274) +4(3273 3274 3294 3293) +4(1274 1294 1295 1275) +4(3274 3275 3295 3294) +4(1275 1295 1296 1276) +4(3275 3276 3296 3295) +4(1276 1296 1297 1277) +4(3276 3277 3297 3296) +4(1277 1297 1298 1278) +4(3277 3278 3298 3297) +4(1278 1298 1299 1279) +4(3278 3279 3299 3298) +4(1280 1300 1301 1281) +4(3280 3281 3301 3300) +4(1281 1301 1302 1282) +4(3281 3282 3302 3301) +4(1282 1302 1303 1283) +4(3282 3283 3303 3302) +4(1283 1303 1304 1284) +4(3283 3284 3304 3303) +4(1284 1304 1305 1285) +4(3284 3285 3305 3304) +4(1285 1305 1306 1286) +4(3285 3286 3306 3305) +4(1286 1306 1307 1287) +4(3286 3287 3307 3306) +4(1287 1307 1308 1288) +4(3287 3288 3308 3307) +4(1288 1308 1309 1289) +4(3288 3289 3309 3308) +4(1289 1309 1310 1290) +4(3289 3290 3310 3309) +4(1290 1310 1311 1291) +4(3290 3291 3311 3310) +4(1291 1311 1312 1292) +4(3291 3292 3312 3311) +4(1292 1312 1313 1293) +4(3292 3293 3313 3312) +4(1293 1313 1314 1294) +4(3293 3294 3314 3313) +4(1294 1314 1315 1295) +4(3294 3295 3315 3314) +4(1295 1315 1316 1296) +4(3295 3296 3316 3315) +4(1296 1316 1317 1297) +4(3296 3297 3317 3316) +4(1297 1317 1318 1298) +4(3297 3298 3318 3317) +4(1298 1318 1319 1299) +4(3298 3299 3319 3318) +4(1300 1320 1321 1301) +4(3300 3301 3321 3320) +4(1301 1321 1322 1302) +4(3301 3302 3322 3321) +4(1302 1322 1323 1303) +4(3302 3303 3323 3322) +4(1303 1323 1324 1304) +4(3303 3304 3324 3323) +4(1304 1324 1325 1305) +4(3304 3305 3325 3324) +4(1305 1325 1326 1306) +4(3305 3306 3326 3325) +4(1306 1326 1327 1307) +4(3306 3307 3327 3326) +4(1307 1327 1328 1308) +4(3307 3308 3328 3327) +4(1308 1328 1329 1309) +4(3308 3309 3329 3328) +4(1309 1329 1330 1310) +4(3309 3310 3330 3329) +4(1310 1330 1331 1311) +4(3310 3311 3331 3330) +4(1311 1331 1332 1312) +4(3311 3312 3332 3331) +4(1312 1332 1333 1313) +4(3312 3313 3333 3332) +4(1313 1333 1334 1314) +4(3313 3314 3334 3333) +4(1314 1334 1335 1315) +4(3314 3315 3335 3334) +4(1315 1335 1336 1316) +4(3315 3316 3336 3335) +4(1316 1336 1337 1317) +4(3316 3317 3337 3336) +4(1317 1337 1338 1318) +4(3317 3318 3338 3337) +4(1318 1338 1339 1319) +4(3318 3319 3339 3338) +4(1320 1340 1341 1321) +4(3320 3321 3341 3340) +4(1321 1341 1342 1322) +4(3321 3322 3342 3341) +4(1322 1342 1343 1323) +4(3322 3323 3343 3342) +4(1323 1343 1344 1324) +4(3323 3324 3344 3343) +4(1324 1344 1345 1325) +4(3324 3325 3345 3344) +4(1325 1345 1346 1326) +4(3325 3326 3346 3345) +4(1326 1346 1347 1327) +4(3326 3327 3347 3346) +4(1327 1347 1348 1328) +4(3327 3328 3348 3347) +4(1328 1348 1349 1329) +4(3328 3329 3349 3348) +4(1329 1349 1350 1330) +4(3329 3330 3350 3349) +4(1330 1350 1351 1331) +4(3330 3331 3351 3350) +4(1331 1351 1352 1332) +4(3331 3332 3352 3351) +4(1332 1352 1353 1333) +4(3332 3333 3353 3352) +4(1333 1353 1354 1334) +4(3333 3334 3354 3353) +4(1334 1354 1355 1335) +4(3334 3335 3355 3354) +4(1335 1355 1356 1336) +4(3335 3336 3356 3355) +4(1336 1356 1357 1337) +4(3336 3337 3357 3356) +4(1337 1357 1358 1338) +4(3337 3338 3358 3357) +4(1338 1358 1359 1339) +4(3338 3339 3359 3358) +4(1340 1360 1361 1341) +4(3340 3341 3361 3360) +4(1341 1361 1362 1342) +4(3341 3342 3362 3361) +4(1342 1362 1363 1343) +4(3342 3343 3363 3362) +4(1343 1363 1364 1344) +4(3343 3344 3364 3363) +4(1344 1364 1365 1345) +4(3344 3345 3365 3364) +4(1345 1365 1366 1346) +4(3345 3346 3366 3365) +4(1346 1366 1367 1347) +4(3346 3347 3367 3366) +4(1347 1367 1368 1348) +4(3347 3348 3368 3367) +4(1348 1368 1369 1349) +4(3348 3349 3369 3368) +4(1349 1369 1370 1350) +4(3349 3350 3370 3369) +4(1350 1370 1371 1351) +4(3350 3351 3371 3370) +4(1351 1371 1372 1352) +4(3351 3352 3372 3371) +4(1352 1372 1373 1353) +4(3352 3353 3373 3372) +4(1353 1373 1374 1354) +4(3353 3354 3374 3373) +4(1354 1374 1375 1355) +4(3354 3355 3375 3374) +4(1355 1375 1376 1356) +4(3355 3356 3376 3375) +4(1356 1376 1377 1357) +4(3356 3357 3377 3376) +4(1357 1377 1378 1358) +4(3357 3358 3378 3377) +4(1358 1378 1379 1359) +4(3358 3359 3379 3378) +4(1360 1380 1381 1361) +4(3360 3361 3381 3380) +4(1361 1381 1382 1362) +4(3361 3362 3382 3381) +4(1362 1382 1383 1363) +4(3362 3363 3383 3382) +4(1363 1383 1384 1364) +4(3363 3364 3384 3383) +4(1364 1384 1385 1365) +4(3364 3365 3385 3384) +4(1365 1385 1386 1366) +4(3365 3366 3386 3385) +4(1366 1386 1387 1367) +4(3366 3367 3387 3386) +4(1367 1387 1388 1368) +4(3367 3368 3388 3387) +4(1368 1388 1389 1369) +4(3368 3369 3389 3388) +4(1369 1389 1390 1370) +4(3369 3370 3390 3389) +4(1370 1390 1391 1371) +4(3370 3371 3391 3390) +4(1371 1391 1392 1372) +4(3371 3372 3392 3391) +4(1372 1392 1393 1373) +4(3372 3373 3393 3392) +4(1373 1393 1394 1374) +4(3373 3374 3394 3393) +4(1374 1394 1395 1375) +4(3374 3375 3395 3394) +4(1375 1395 1396 1376) +4(3375 3376 3396 3395) +4(1376 1396 1397 1377) +4(3376 3377 3397 3396) +4(1377 1397 1398 1378) +4(3377 3378 3398 3397) +4(1378 1398 1399 1379) +4(3378 3379 3399 3398) +4(1380 1400 1401 1381) +4(3380 3381 3401 3400) +4(1381 1401 1402 1382) +4(3381 3382 3402 3401) +4(1382 1402 1403 1383) +4(3382 3383 3403 3402) +4(1383 1403 1404 1384) +4(3383 3384 3404 3403) +4(1384 1404 1405 1385) +4(3384 3385 3405 3404) +4(1385 1405 1406 1386) +4(3385 3386 3406 3405) +4(1386 1406 1407 1387) +4(3386 3387 3407 3406) +4(1387 1407 1408 1388) +4(3387 3388 3408 3407) +4(1388 1408 1409 1389) +4(3388 3389 3409 3408) +4(1389 1409 1410 1390) +4(3389 3390 3410 3409) +4(1390 1410 1411 1391) +4(3390 3391 3411 3410) +4(1391 1411 1412 1392) +4(3391 3392 3412 3411) +4(1392 1412 1413 1393) +4(3392 3393 3413 3412) +4(1393 1413 1414 1394) +4(3393 3394 3414 3413) +4(1394 1414 1415 1395) +4(3394 3395 3415 3414) +4(1395 1415 1416 1396) +4(3395 3396 3416 3415) +4(1396 1416 1417 1397) +4(3396 3397 3417 3416) +4(1397 1417 1418 1398) +4(3397 3398 3418 3417) +4(1398 1418 1419 1399) +4(3398 3399 3419 3418) +4(1400 1420 1421 1401) +4(3400 3401 3421 3420) +4(1401 1421 1422 1402) +4(3401 3402 3422 3421) +4(1402 1422 1423 1403) +4(3402 3403 3423 3422) +4(1403 1423 1424 1404) +4(3403 3404 3424 3423) +4(1404 1424 1425 1405) +4(3404 3405 3425 3424) +4(1405 1425 1426 1406) +4(3405 3406 3426 3425) +4(1406 1426 1427 1407) +4(3406 3407 3427 3426) +4(1407 1427 1428 1408) +4(3407 3408 3428 3427) +4(1408 1428 1429 1409) +4(3408 3409 3429 3428) +4(1409 1429 1430 1410) +4(3409 3410 3430 3429) +4(1410 1430 1431 1411) +4(3410 3411 3431 3430) +4(1411 1431 1432 1412) +4(3411 3412 3432 3431) +4(1412 1432 1433 1413) +4(3412 3413 3433 3432) +4(1413 1433 1434 1414) +4(3413 3414 3434 3433) +4(1414 1434 1435 1415) +4(3414 3415 3435 3434) +4(1415 1435 1436 1416) +4(3415 3416 3436 3435) +4(1416 1436 1437 1417) +4(3416 3417 3437 3436) +4(1417 1437 1438 1418) +4(3417 3418 3438 3437) +4(1418 1438 1439 1419) +4(3418 3419 3439 3438) +4(1420 1440 1441 1421) +4(3420 3421 3441 3440) +4(1421 1441 1442 1422) +4(3421 3422 3442 3441) +4(1422 1442 1443 1423) +4(3422 3423 3443 3442) +4(1423 1443 1444 1424) +4(3423 3424 3444 3443) +4(1424 1444 1445 1425) +4(3424 3425 3445 3444) +4(1425 1445 1446 1426) +4(3425 3426 3446 3445) +4(1426 1446 1447 1427) +4(3426 3427 3447 3446) +4(1427 1447 1448 1428) +4(3427 3428 3448 3447) +4(1428 1448 1449 1429) +4(3428 3429 3449 3448) +4(1429 1449 1450 1430) +4(3429 3430 3450 3449) +4(1430 1450 1451 1431) +4(3430 3431 3451 3450) +4(1431 1451 1452 1432) +4(3431 3432 3452 3451) +4(1432 1452 1453 1433) +4(3432 3433 3453 3452) +4(1433 1453 1454 1434) +4(3433 3434 3454 3453) +4(1434 1454 1455 1435) +4(3434 3435 3455 3454) +4(1435 1455 1456 1436) +4(3435 3436 3456 3455) +4(1436 1456 1457 1437) +4(3436 3437 3457 3456) +4(1437 1457 1458 1438) +4(3437 3438 3458 3457) +4(1438 1458 1459 1439) +4(3438 3439 3459 3458) +4(1440 1460 1461 1441) +4(3440 3441 3461 3460) +4(1441 1461 1462 1442) +4(3441 3442 3462 3461) +4(1442 1462 1463 1443) +4(3442 3443 3463 3462) +4(1443 1463 1464 1444) +4(3443 3444 3464 3463) +4(1444 1464 1465 1445) +4(3444 3445 3465 3464) +4(1445 1465 1466 1446) +4(3445 3446 3466 3465) +4(1446 1466 1467 1447) +4(3446 3447 3467 3466) +4(1447 1467 1468 1448) +4(3447 3448 3468 3467) +4(1448 1468 1469 1449) +4(3448 3449 3469 3468) +4(1449 1469 1470 1450) +4(3449 3450 3470 3469) +4(1450 1470 1471 1451) +4(3450 3451 3471 3470) +4(1451 1471 1472 1452) +4(3451 3452 3472 3471) +4(1452 1472 1473 1453) +4(3452 3453 3473 3472) +4(1453 1473 1474 1454) +4(3453 3454 3474 3473) +4(1454 1474 1475 1455) +4(3454 3455 3475 3474) +4(1455 1475 1476 1456) +4(3455 3456 3476 3475) +4(1456 1476 1477 1457) +4(3456 3457 3477 3476) +4(1457 1477 1478 1458) +4(3457 3458 3478 3477) +4(1458 1478 1479 1459) +4(3458 3459 3479 3478) +4(1460 1480 1481 1461) +4(3460 3461 3481 3480) +4(1461 1481 1482 1462) +4(3461 3462 3482 3481) +4(1462 1482 1483 1463) +4(3462 3463 3483 3482) +4(1463 1483 1484 1464) +4(3463 3464 3484 3483) +4(1464 1484 1485 1465) +4(3464 3465 3485 3484) +4(1465 1485 1486 1466) +4(3465 3466 3486 3485) +4(1466 1486 1487 1467) +4(3466 3467 3487 3486) +4(1467 1487 1488 1468) +4(3467 3468 3488 3487) +4(1468 1488 1489 1469) +4(3468 3469 3489 3488) +4(1469 1489 1490 1470) +4(3469 3470 3490 3489) +4(1470 1490 1491 1471) +4(3470 3471 3491 3490) +4(1471 1491 1492 1472) +4(3471 3472 3492 3491) +4(1472 1492 1493 1473) +4(3472 3473 3493 3492) +4(1473 1493 1494 1474) +4(3473 3474 3494 3493) +4(1474 1494 1495 1475) +4(3474 3475 3495 3494) +4(1475 1495 1496 1476) +4(3475 3476 3496 3495) +4(1476 1496 1497 1477) +4(3476 3477 3497 3496) +4(1477 1497 1498 1478) +4(3477 3478 3498 3497) +4(1478 1498 1499 1479) +4(3478 3479 3499 3498) +4(1480 1500 1501 1481) +4(3480 3481 3501 3500) +4(1481 1501 1502 1482) +4(3481 3482 3502 3501) +4(1482 1502 1503 1483) +4(3482 3483 3503 3502) +4(1483 1503 1504 1484) +4(3483 3484 3504 3503) +4(1484 1504 1505 1485) +4(3484 3485 3505 3504) +4(1485 1505 1506 1486) +4(3485 3486 3506 3505) +4(1486 1506 1507 1487) +4(3486 3487 3507 3506) +4(1487 1507 1508 1488) +4(3487 3488 3508 3507) +4(1488 1508 1509 1489) +4(3488 3489 3509 3508) +4(1489 1509 1510 1490) +4(3489 3490 3510 3509) +4(1490 1510 1511 1491) +4(3490 3491 3511 3510) +4(1491 1511 1512 1492) +4(3491 3492 3512 3511) +4(1492 1512 1513 1493) +4(3492 3493 3513 3512) +4(1493 1513 1514 1494) +4(3493 3494 3514 3513) +4(1494 1514 1515 1495) +4(3494 3495 3515 3514) +4(1495 1515 1516 1496) +4(3495 3496 3516 3515) +4(1496 1516 1517 1497) +4(3496 3497 3517 3516) +4(1497 1517 1518 1498) +4(3497 3498 3518 3517) +4(1498 1518 1519 1499) +4(3498 3499 3519 3518) +4(1500 1520 1521 1501) +4(3500 3501 3521 3520) +4(1501 1521 1522 1502) +4(3501 3502 3522 3521) +4(1502 1522 1523 1503) +4(3502 3503 3523 3522) +4(1503 1523 1524 1504) +4(3503 3504 3524 3523) +4(1504 1524 1525 1505) +4(3504 3505 3525 3524) +4(1505 1525 1526 1506) +4(3505 3506 3526 3525) +4(1506 1526 1527 1507) +4(3506 3507 3527 3526) +4(1507 1527 1528 1508) +4(3507 3508 3528 3527) +4(1508 1528 1529 1509) +4(3508 3509 3529 3528) +4(1509 1529 1530 1510) +4(3509 3510 3530 3529) +4(1510 1530 1531 1511) +4(3510 3511 3531 3530) +4(1511 1531 1532 1512) +4(3511 3512 3532 3531) +4(1512 1532 1533 1513) +4(3512 3513 3533 3532) +4(1513 1533 1534 1514) +4(3513 3514 3534 3533) +4(1514 1534 1535 1515) +4(3514 3515 3535 3534) +4(1515 1535 1536 1516) +4(3515 3516 3536 3535) +4(1516 1536 1537 1517) +4(3516 3517 3537 3536) +4(1517 1537 1538 1518) +4(3517 3518 3538 3537) +4(1518 1538 1539 1519) +4(3518 3519 3539 3538) +4(1520 1540 1541 1521) +4(3520 3521 3541 3540) +4(1521 1541 1542 1522) +4(3521 3522 3542 3541) +4(1522 1542 1543 1523) +4(3522 3523 3543 3542) +4(1523 1543 1544 1524) +4(3523 3524 3544 3543) +4(1524 1544 1545 1525) +4(3524 3525 3545 3544) +4(1525 1545 1546 1526) +4(3525 3526 3546 3545) +4(1526 1546 1547 1527) +4(3526 3527 3547 3546) +4(1527 1547 1548 1528) +4(3527 3528 3548 3547) +4(1528 1548 1549 1529) +4(3528 3529 3549 3548) +4(1529 1549 1550 1530) +4(3529 3530 3550 3549) +4(1530 1550 1551 1531) +4(3530 3531 3551 3550) +4(1531 1551 1552 1532) +4(3531 3532 3552 3551) +4(1532 1552 1553 1533) +4(3532 3533 3553 3552) +4(1533 1553 1554 1534) +4(3533 3534 3554 3553) +4(1534 1554 1555 1535) +4(3534 3535 3555 3554) +4(1535 1555 1556 1536) +4(3535 3536 3556 3555) +4(1536 1556 1557 1537) +4(3536 3537 3557 3556) +4(1537 1557 1558 1538) +4(3537 3538 3558 3557) +4(1538 1558 1559 1539) +4(3538 3539 3559 3558) +4(1540 1560 1561 1541) +4(3540 3541 3561 3560) +4(1541 1561 1562 1542) +4(3541 3542 3562 3561) +4(1542 1562 1563 1543) +4(3542 3543 3563 3562) +4(1543 1563 1564 1544) +4(3543 3544 3564 3563) +4(1544 1564 1565 1545) +4(3544 3545 3565 3564) +4(1545 1565 1566 1546) +4(3545 3546 3566 3565) +4(1546 1566 1567 1547) +4(3546 3547 3567 3566) +4(1547 1567 1568 1548) +4(3547 3548 3568 3567) +4(1548 1568 1569 1549) +4(3548 3549 3569 3568) +4(1549 1569 1570 1550) +4(3549 3550 3570 3569) +4(1550 1570 1571 1551) +4(3550 3551 3571 3570) +4(1551 1571 1572 1552) +4(3551 3552 3572 3571) +4(1552 1572 1573 1553) +4(3552 3553 3573 3572) +4(1553 1573 1574 1554) +4(3553 3554 3574 3573) +4(1554 1574 1575 1555) +4(3554 3555 3575 3574) +4(1555 1575 1576 1556) +4(3555 3556 3576 3575) +4(1556 1576 1577 1557) +4(3556 3557 3577 3576) +4(1557 1577 1578 1558) +4(3557 3558 3578 3577) +4(1558 1578 1579 1559) +4(3558 3559 3579 3578) +4(1560 1580 1581 1561) +4(3560 3561 3581 3580) +4(1561 1581 1582 1562) +4(3561 3562 3582 3581) +4(1562 1582 1583 1563) +4(3562 3563 3583 3582) +4(1563 1583 1584 1564) +4(3563 3564 3584 3583) +4(1564 1584 1585 1565) +4(3564 3565 3585 3584) +4(1565 1585 1586 1566) +4(3565 3566 3586 3585) +4(1566 1586 1587 1567) +4(3566 3567 3587 3586) +4(1567 1587 1588 1568) +4(3567 3568 3588 3587) +4(1568 1588 1589 1569) +4(3568 3569 3589 3588) +4(1569 1589 1590 1570) +4(3569 3570 3590 3589) +4(1570 1590 1591 1571) +4(3570 3571 3591 3590) +4(1571 1591 1592 1572) +4(3571 3572 3592 3591) +4(1572 1592 1593 1573) +4(3572 3573 3593 3592) +4(1573 1593 1594 1574) +4(3573 3574 3594 3593) +4(1574 1594 1595 1575) +4(3574 3575 3595 3594) +4(1575 1595 1596 1576) +4(3575 3576 3596 3595) +4(1576 1596 1597 1577) +4(3576 3577 3597 3596) +4(1577 1597 1598 1578) +4(3577 3578 3598 3597) +4(1578 1598 1599 1579) +4(3578 3579 3599 3598) +4(1580 1600 1601 1581) +4(3580 3581 3601 3600) +4(1581 1601 1602 1582) +4(3581 3582 3602 3601) +4(1582 1602 1603 1583) +4(3582 3583 3603 3602) +4(1583 1603 1604 1584) +4(3583 3584 3604 3603) +4(1584 1604 1605 1585) +4(3584 3585 3605 3604) +4(1585 1605 1606 1586) +4(3585 3586 3606 3605) +4(1586 1606 1607 1587) +4(3586 3587 3607 3606) +4(1587 1607 1608 1588) +4(3587 3588 3608 3607) +4(1588 1608 1609 1589) +4(3588 3589 3609 3608) +4(1589 1609 1610 1590) +4(3589 3590 3610 3609) +4(1590 1610 1611 1591) +4(3590 3591 3611 3610) +4(1591 1611 1612 1592) +4(3591 3592 3612 3611) +4(1592 1612 1613 1593) +4(3592 3593 3613 3612) +4(1593 1613 1614 1594) +4(3593 3594 3614 3613) +4(1594 1614 1615 1595) +4(3594 3595 3615 3614) +4(1595 1615 1616 1596) +4(3595 3596 3616 3615) +4(1596 1616 1617 1597) +4(3596 3597 3617 3616) +4(1597 1617 1618 1598) +4(3597 3598 3618 3617) +4(1598 1618 1619 1599) +4(3598 3599 3619 3618) +4(1600 1620 1621 1601) +4(3600 3601 3621 3620) +4(1601 1621 1622 1602) +4(3601 3602 3622 3621) +4(1602 1622 1623 1603) +4(3602 3603 3623 3622) +4(1603 1623 1624 1604) +4(3603 3604 3624 3623) +4(1604 1624 1625 1605) +4(3604 3605 3625 3624) +4(1605 1625 1626 1606) +4(3605 3606 3626 3625) +4(1606 1626 1627 1607) +4(3606 3607 3627 3626) +4(1607 1627 1628 1608) +4(3607 3608 3628 3627) +4(1608 1628 1629 1609) +4(3608 3609 3629 3628) +4(1609 1629 1630 1610) +4(3609 3610 3630 3629) +4(1610 1630 1631 1611) +4(3610 3611 3631 3630) +4(1611 1631 1632 1612) +4(3611 3612 3632 3631) +4(1612 1632 1633 1613) +4(3612 3613 3633 3632) +4(1613 1633 1634 1614) +4(3613 3614 3634 3633) +4(1614 1634 1635 1615) +4(3614 3615 3635 3634) +4(1615 1635 1636 1616) +4(3615 3616 3636 3635) +4(1616 1636 1637 1617) +4(3616 3617 3637 3636) +4(1617 1637 1638 1618) +4(3617 3618 3638 3637) +4(1618 1638 1639 1619) +4(3618 3619 3639 3638) +4(1620 1640 1641 1621) +4(3620 3621 3641 3640) +4(1621 1641 1642 1622) +4(3621 3622 3642 3641) +4(1622 1642 1643 1623) +4(3622 3623 3643 3642) +4(1623 1643 1644 1624) +4(3623 3624 3644 3643) +4(1624 1644 1645 1625) +4(3624 3625 3645 3644) +4(1625 1645 1646 1626) +4(3625 3626 3646 3645) +4(1626 1646 1647 1627) +4(3626 3627 3647 3646) +4(1627 1647 1648 1628) +4(3627 3628 3648 3647) +4(1628 1648 1649 1629) +4(3628 3629 3649 3648) +4(1629 1649 1650 1630) +4(3629 3630 3650 3649) +4(1630 1650 1651 1631) +4(3630 3631 3651 3650) +4(1631 1651 1652 1632) +4(3631 3632 3652 3651) +4(1632 1652 1653 1633) +4(3632 3633 3653 3652) +4(1633 1653 1654 1634) +4(3633 3634 3654 3653) +4(1634 1654 1655 1635) +4(3634 3635 3655 3654) +4(1635 1655 1656 1636) +4(3635 3636 3656 3655) +4(1636 1656 1657 1637) +4(3636 3637 3657 3656) +4(1637 1657 1658 1638) +4(3637 3638 3658 3657) +4(1638 1658 1659 1639) +4(3638 3639 3659 3658) +4(1640 1660 1661 1641) +4(3640 3641 3661 3660) +4(1641 1661 1662 1642) +4(3641 3642 3662 3661) +4(1642 1662 1663 1643) +4(3642 3643 3663 3662) +4(1643 1663 1664 1644) +4(3643 3644 3664 3663) +4(1644 1664 1665 1645) +4(3644 3645 3665 3664) +4(1645 1665 1666 1646) +4(3645 3646 3666 3665) +4(1646 1666 1667 1647) +4(3646 3647 3667 3666) +4(1647 1667 1668 1648) +4(3647 3648 3668 3667) +4(1648 1668 1669 1649) +4(3648 3649 3669 3668) +4(1649 1669 1670 1650) +4(3649 3650 3670 3669) +4(1650 1670 1671 1651) +4(3650 3651 3671 3670) +4(1651 1671 1672 1652) +4(3651 3652 3672 3671) +4(1652 1672 1673 1653) +4(3652 3653 3673 3672) +4(1653 1673 1674 1654) +4(3653 3654 3674 3673) +4(1654 1674 1675 1655) +4(3654 3655 3675 3674) +4(1655 1675 1676 1656) +4(3655 3656 3676 3675) +4(1656 1676 1677 1657) +4(3656 3657 3677 3676) +4(1657 1677 1678 1658) +4(3657 3658 3678 3677) +4(1658 1678 1679 1659) +4(3658 3659 3679 3678) +4(1660 1680 1681 1661) +4(3660 3661 3681 3680) +4(1661 1681 1682 1662) +4(3661 3662 3682 3681) +4(1662 1682 1683 1663) +4(3662 3663 3683 3682) +4(1663 1683 1684 1664) +4(3663 3664 3684 3683) +4(1664 1684 1685 1665) +4(3664 3665 3685 3684) +4(1665 1685 1686 1666) +4(3665 3666 3686 3685) +4(1666 1686 1687 1667) +4(3666 3667 3687 3686) +4(1667 1687 1688 1668) +4(3667 3668 3688 3687) +4(1668 1688 1689 1669) +4(3668 3669 3689 3688) +4(1669 1689 1690 1670) +4(3669 3670 3690 3689) +4(1670 1690 1691 1671) +4(3670 3671 3691 3690) +4(1671 1691 1692 1672) +4(3671 3672 3692 3691) +4(1672 1692 1693 1673) +4(3672 3673 3693 3692) +4(1673 1693 1694 1674) +4(3673 3674 3694 3693) +4(1674 1694 1695 1675) +4(3674 3675 3695 3694) +4(1675 1695 1696 1676) +4(3675 3676 3696 3695) +4(1676 1696 1697 1677) +4(3676 3677 3697 3696) +4(1677 1697 1698 1678) +4(3677 3678 3698 3697) +4(1678 1698 1699 1679) +4(3678 3679 3699 3698) +4(1680 1700 1701 1681) +4(3680 3681 3701 3700) +4(1681 1701 1702 1682) +4(3681 3682 3702 3701) +4(1682 1702 1703 1683) +4(3682 3683 3703 3702) +4(1683 1703 1704 1684) +4(3683 3684 3704 3703) +4(1684 1704 1705 1685) +4(3684 3685 3705 3704) +4(1685 1705 1706 1686) +4(3685 3686 3706 3705) +4(1686 1706 1707 1687) +4(3686 3687 3707 3706) +4(1687 1707 1708 1688) +4(3687 3688 3708 3707) +4(1688 1708 1709 1689) +4(3688 3689 3709 3708) +4(1689 1709 1710 1690) +4(3689 3690 3710 3709) +4(1690 1710 1711 1691) +4(3690 3691 3711 3710) +4(1691 1711 1712 1692) +4(3691 3692 3712 3711) +4(1692 1712 1713 1693) +4(3692 3693 3713 3712) +4(1693 1713 1714 1694) +4(3693 3694 3714 3713) +4(1694 1714 1715 1695) +4(3694 3695 3715 3714) +4(1695 1715 1716 1696) +4(3695 3696 3716 3715) +4(1696 1716 1717 1697) +4(3696 3697 3717 3716) +4(1697 1717 1718 1698) +4(3697 3698 3718 3717) +4(1698 1718 1719 1699) +4(3698 3699 3719 3718) +4(1700 1720 1721 1701) +4(3700 3701 3721 3720) +4(1701 1721 1722 1702) +4(3701 3702 3722 3721) +4(1702 1722 1723 1703) +4(3702 3703 3723 3722) +4(1703 1723 1724 1704) +4(3703 3704 3724 3723) +4(1704 1724 1725 1705) +4(3704 3705 3725 3724) +4(1705 1725 1726 1706) +4(3705 3706 3726 3725) +4(1706 1726 1727 1707) +4(3706 3707 3727 3726) +4(1707 1727 1728 1708) +4(3707 3708 3728 3727) +4(1708 1728 1729 1709) +4(3708 3709 3729 3728) +4(1709 1729 1730 1710) +4(3709 3710 3730 3729) +4(1710 1730 1731 1711) +4(3710 3711 3731 3730) +4(1711 1731 1732 1712) +4(3711 3712 3732 3731) +4(1712 1732 1733 1713) +4(3712 3713 3733 3732) +4(1713 1733 1734 1714) +4(3713 3714 3734 3733) +4(1714 1734 1735 1715) +4(3714 3715 3735 3734) +4(1715 1735 1736 1716) +4(3715 3716 3736 3735) +4(1716 1736 1737 1717) +4(3716 3717 3737 3736) +4(1717 1737 1738 1718) +4(3717 3718 3738 3737) +4(1718 1738 1739 1719) +4(3718 3719 3739 3738) +4(1720 1740 1741 1721) +4(3720 3721 3741 3740) +4(1721 1741 1742 1722) +4(3721 3722 3742 3741) +4(1722 1742 1743 1723) +4(3722 3723 3743 3742) +4(1723 1743 1744 1724) +4(3723 3724 3744 3743) +4(1724 1744 1745 1725) +4(3724 3725 3745 3744) +4(1725 1745 1746 1726) +4(3725 3726 3746 3745) +4(1726 1746 1747 1727) +4(3726 3727 3747 3746) +4(1727 1747 1748 1728) +4(3727 3728 3748 3747) +4(1728 1748 1749 1729) +4(3728 3729 3749 3748) +4(1729 1749 1750 1730) +4(3729 3730 3750 3749) +4(1730 1750 1751 1731) +4(3730 3731 3751 3750) +4(1731 1751 1752 1732) +4(3731 3732 3752 3751) +4(1732 1752 1753 1733) +4(3732 3733 3753 3752) +4(1733 1753 1754 1734) +4(3733 3734 3754 3753) +4(1734 1754 1755 1735) +4(3734 3735 3755 3754) +4(1735 1755 1756 1736) +4(3735 3736 3756 3755) +4(1736 1756 1757 1737) +4(3736 3737 3757 3756) +4(1737 1757 1758 1738) +4(3737 3738 3758 3757) +4(1738 1758 1759 1739) +4(3738 3739 3759 3758) +4(1740 1760 1761 1741) +4(3740 3741 3761 3760) +4(1741 1761 1762 1742) +4(3741 3742 3762 3761) +4(1742 1762 1763 1743) +4(3742 3743 3763 3762) +4(1743 1763 1764 1744) +4(3743 3744 3764 3763) +4(1744 1764 1765 1745) +4(3744 3745 3765 3764) +4(1745 1765 1766 1746) +4(3745 3746 3766 3765) +4(1746 1766 1767 1747) +4(3746 3747 3767 3766) +4(1747 1767 1768 1748) +4(3747 3748 3768 3767) +4(1748 1768 1769 1749) +4(3748 3749 3769 3768) +4(1749 1769 1770 1750) +4(3749 3750 3770 3769) +4(1750 1770 1771 1751) +4(3750 3751 3771 3770) +4(1751 1771 1772 1752) +4(3751 3752 3772 3771) +4(1752 1772 1773 1753) +4(3752 3753 3773 3772) +4(1753 1773 1774 1754) +4(3753 3754 3774 3773) +4(1754 1774 1775 1755) +4(3754 3755 3775 3774) +4(1755 1775 1776 1756) +4(3755 3756 3776 3775) +4(1756 1776 1777 1757) +4(3756 3757 3777 3776) +4(1757 1777 1778 1758) +4(3757 3758 3778 3777) +4(1758 1778 1779 1759) +4(3758 3759 3779 3778) +4(1760 1780 1781 1761) +4(3760 3761 3781 3780) +4(1761 1781 1782 1762) +4(3761 3762 3782 3781) +4(1762 1782 1783 1763) +4(3762 3763 3783 3782) +4(1763 1783 1784 1764) +4(3763 3764 3784 3783) +4(1764 1784 1785 1765) +4(3764 3765 3785 3784) +4(1765 1785 1786 1766) +4(3765 3766 3786 3785) +4(1766 1786 1787 1767) +4(3766 3767 3787 3786) +4(1767 1787 1788 1768) +4(3767 3768 3788 3787) +4(1768 1788 1789 1769) +4(3768 3769 3789 3788) +4(1769 1789 1790 1770) +4(3769 3770 3790 3789) +4(1770 1790 1791 1771) +4(3770 3771 3791 3790) +4(1771 1791 1792 1772) +4(3771 3772 3792 3791) +4(1772 1792 1793 1773) +4(3772 3773 3793 3792) +4(1773 1793 1794 1774) +4(3773 3774 3794 3793) +4(1774 1794 1795 1775) +4(3774 3775 3795 3794) +4(1775 1795 1796 1776) +4(3775 3776 3796 3795) +4(1776 1796 1797 1777) +4(3776 3777 3797 3796) +4(1777 1797 1798 1778) +4(3777 3778 3798 3797) +4(1778 1798 1799 1779) +4(3778 3779 3799 3798) +4(1780 1800 1801 1781) +4(3780 3781 3801 3800) +4(1781 1801 1802 1782) +4(3781 3782 3802 3801) +4(1782 1802 1803 1783) +4(3782 3783 3803 3802) +4(1783 1803 1804 1784) +4(3783 3784 3804 3803) +4(1784 1804 1805 1785) +4(3784 3785 3805 3804) +4(1785 1805 1806 1786) +4(3785 3786 3806 3805) +4(1786 1806 1807 1787) +4(3786 3787 3807 3806) +4(1787 1807 1808 1788) +4(3787 3788 3808 3807) +4(1788 1808 1809 1789) +4(3788 3789 3809 3808) +4(1789 1809 1810 1790) +4(3789 3790 3810 3809) +4(1790 1810 1811 1791) +4(3790 3791 3811 3810) +4(1791 1811 1812 1792) +4(3791 3792 3812 3811) +4(1792 1812 1813 1793) +4(3792 3793 3813 3812) +4(1793 1813 1814 1794) +4(3793 3794 3814 3813) +4(1794 1814 1815 1795) +4(3794 3795 3815 3814) +4(1795 1815 1816 1796) +4(3795 3796 3816 3815) +4(1796 1816 1817 1797) +4(3796 3797 3817 3816) +4(1797 1817 1818 1798) +4(3797 3798 3818 3817) +4(1798 1818 1819 1799) +4(3798 3799 3819 3818) +4(1800 1820 1821 1801) +4(3800 3801 3821 3820) +4(1801 1821 1822 1802) +4(3801 3802 3822 3821) +4(1802 1822 1823 1803) +4(3802 3803 3823 3822) +4(1803 1823 1824 1804) +4(3803 3804 3824 3823) +4(1804 1824 1825 1805) +4(3804 3805 3825 3824) +4(1805 1825 1826 1806) +4(3805 3806 3826 3825) +4(1806 1826 1827 1807) +4(3806 3807 3827 3826) +4(1807 1827 1828 1808) +4(3807 3808 3828 3827) +4(1808 1828 1829 1809) +4(3808 3809 3829 3828) +4(1809 1829 1830 1810) +4(3809 3810 3830 3829) +4(1810 1830 1831 1811) +4(3810 3811 3831 3830) +4(1811 1831 1832 1812) +4(3811 3812 3832 3831) +4(1812 1832 1833 1813) +4(3812 3813 3833 3832) +4(1813 1833 1834 1814) +4(3813 3814 3834 3833) +4(1814 1834 1835 1815) +4(3814 3815 3835 3834) +4(1815 1835 1836 1816) +4(3815 3816 3836 3835) +4(1816 1836 1837 1817) +4(3816 3817 3837 3836) +4(1817 1837 1838 1818) +4(3817 3818 3838 3837) +4(1818 1838 1839 1819) +4(3818 3819 3839 3838) +4(1820 1840 1841 1821) +4(3820 3821 3841 3840) +4(1821 1841 1842 1822) +4(3821 3822 3842 3841) +4(1822 1842 1843 1823) +4(3822 3823 3843 3842) +4(1823 1843 1844 1824) +4(3823 3824 3844 3843) +4(1824 1844 1845 1825) +4(3824 3825 3845 3844) +4(1825 1845 1846 1826) +4(3825 3826 3846 3845) +4(1826 1846 1847 1827) +4(3826 3827 3847 3846) +4(1827 1847 1848 1828) +4(3827 3828 3848 3847) +4(1828 1848 1849 1829) +4(3828 3829 3849 3848) +4(1829 1849 1850 1830) +4(3829 3830 3850 3849) +4(1830 1850 1851 1831) +4(3830 3831 3851 3850) +4(1831 1851 1852 1832) +4(3831 3832 3852 3851) +4(1832 1852 1853 1833) +4(3832 3833 3853 3852) +4(1833 1853 1854 1834) +4(3833 3834 3854 3853) +4(1834 1854 1855 1835) +4(3834 3835 3855 3854) +4(1835 1855 1856 1836) +4(3835 3836 3856 3855) +4(1836 1856 1857 1837) +4(3836 3837 3857 3856) +4(1837 1857 1858 1838) +4(3837 3838 3858 3857) +4(1838 1858 1859 1839) +4(3838 3839 3859 3858) +4(1840 1860 1861 1841) +4(3840 3841 3861 3860) +4(1841 1861 1862 1842) +4(3841 3842 3862 3861) +4(1842 1862 1863 1843) +4(3842 3843 3863 3862) +4(1843 1863 1864 1844) +4(3843 3844 3864 3863) +4(1844 1864 1865 1845) +4(3844 3845 3865 3864) +4(1845 1865 1866 1846) +4(3845 3846 3866 3865) +4(1846 1866 1867 1847) +4(3846 3847 3867 3866) +4(1847 1867 1868 1848) +4(3847 3848 3868 3867) +4(1848 1868 1869 1849) +4(3848 3849 3869 3868) +4(1849 1869 1870 1850) +4(3849 3850 3870 3869) +4(1850 1870 1871 1851) +4(3850 3851 3871 3870) +4(1851 1871 1872 1852) +4(3851 3852 3872 3871) +4(1852 1872 1873 1853) +4(3852 3853 3873 3872) +4(1853 1873 1874 1854) +4(3853 3854 3874 3873) +4(1854 1874 1875 1855) +4(3854 3855 3875 3874) +4(1855 1875 1876 1856) +4(3855 3856 3876 3875) +4(1856 1876 1877 1857) +4(3856 3857 3877 3876) +4(1857 1877 1878 1858) +4(3857 3858 3878 3877) +4(1858 1878 1879 1859) +4(3858 3859 3879 3878) +4(1860 1880 1881 1861) +4(3860 3861 3881 3880) +4(1861 1881 1882 1862) +4(3861 3862 3882 3881) +4(1862 1882 1883 1863) +4(3862 3863 3883 3882) +4(1863 1883 1884 1864) +4(3863 3864 3884 3883) +4(1864 1884 1885 1865) +4(3864 3865 3885 3884) +4(1865 1885 1886 1866) +4(3865 3866 3886 3885) +4(1866 1886 1887 1867) +4(3866 3867 3887 3886) +4(1867 1887 1888 1868) +4(3867 3868 3888 3887) +4(1868 1888 1889 1869) +4(3868 3869 3889 3888) +4(1869 1889 1890 1870) +4(3869 3870 3890 3889) +4(1870 1890 1891 1871) +4(3870 3871 3891 3890) +4(1871 1891 1892 1872) +4(3871 3872 3892 3891) +4(1872 1892 1893 1873) +4(3872 3873 3893 3892) +4(1873 1893 1894 1874) +4(3873 3874 3894 3893) +4(1874 1894 1895 1875) +4(3874 3875 3895 3894) +4(1875 1895 1896 1876) +4(3875 3876 3896 3895) +4(1876 1896 1897 1877) +4(3876 3877 3897 3896) +4(1877 1897 1898 1878) +4(3877 3878 3898 3897) +4(1878 1898 1899 1879) +4(3878 3879 3899 3898) +4(1880 1900 1901 1881) +4(3880 3881 3901 3900) +4(1881 1901 1902 1882) +4(3881 3882 3902 3901) +4(1882 1902 1903 1883) +4(3882 3883 3903 3902) +4(1883 1903 1904 1884) +4(3883 3884 3904 3903) +4(1884 1904 1905 1885) +4(3884 3885 3905 3904) +4(1885 1905 1906 1886) +4(3885 3886 3906 3905) +4(1886 1906 1907 1887) +4(3886 3887 3907 3906) +4(1887 1907 1908 1888) +4(3887 3888 3908 3907) +4(1888 1908 1909 1889) +4(3888 3889 3909 3908) +4(1889 1909 1910 1890) +4(3889 3890 3910 3909) +4(1890 1910 1911 1891) +4(3890 3891 3911 3910) +4(1891 1911 1912 1892) +4(3891 3892 3912 3911) +4(1892 1912 1913 1893) +4(3892 3893 3913 3912) +4(1893 1913 1914 1894) +4(3893 3894 3914 3913) +4(1894 1914 1915 1895) +4(3894 3895 3915 3914) +4(1895 1915 1916 1896) +4(3895 3896 3916 3915) +4(1896 1916 1917 1897) +4(3896 3897 3917 3916) +4(1897 1917 1918 1898) +4(3897 3898 3918 3917) +4(1898 1918 1919 1899) +4(3898 3899 3919 3918) +4(1900 1920 1921 1901) +4(3900 3901 3921 3920) +4(1901 1921 1922 1902) +4(3901 3902 3922 3921) +4(1902 1922 1923 1903) +4(3902 3903 3923 3922) +4(1903 1923 1924 1904) +4(3903 3904 3924 3923) +4(1904 1924 1925 1905) +4(3904 3905 3925 3924) +4(1905 1925 1926 1906) +4(3905 3906 3926 3925) +4(1906 1926 1927 1907) +4(3906 3907 3927 3926) +4(1907 1927 1928 1908) +4(3907 3908 3928 3927) +4(1908 1928 1929 1909) +4(3908 3909 3929 3928) +4(1909 1929 1930 1910) +4(3909 3910 3930 3929) +4(1910 1930 1931 1911) +4(3910 3911 3931 3930) +4(1911 1931 1932 1912) +4(3911 3912 3932 3931) +4(1912 1932 1933 1913) +4(3912 3913 3933 3932) +4(1913 1933 1934 1914) +4(3913 3914 3934 3933) +4(1914 1934 1935 1915) +4(3914 3915 3935 3934) +4(1915 1935 1936 1916) +4(3915 3916 3936 3935) +4(1916 1936 1937 1917) +4(3916 3917 3937 3936) +4(1917 1937 1938 1918) +4(3917 3918 3938 3937) +4(1918 1938 1939 1919) +4(3918 3919 3939 3938) +4(1920 1940 1941 1921) +4(3920 3921 3941 3940) +4(1921 1941 1942 1922) +4(3921 3922 3942 3941) +4(1922 1942 1943 1923) +4(3922 3923 3943 3942) +4(1923 1943 1944 1924) +4(3923 3924 3944 3943) +4(1924 1944 1945 1925) +4(3924 3925 3945 3944) +4(1925 1945 1946 1926) +4(3925 3926 3946 3945) +4(1926 1946 1947 1927) +4(3926 3927 3947 3946) +4(1927 1947 1948 1928) +4(3927 3928 3948 3947) +4(1928 1948 1949 1929) +4(3928 3929 3949 3948) +4(1929 1949 1950 1930) +4(3929 3930 3950 3949) +4(1930 1950 1951 1931) +4(3930 3931 3951 3950) +4(1931 1951 1952 1932) +4(3931 3932 3952 3951) +4(1932 1952 1953 1933) +4(3932 3933 3953 3952) +4(1933 1953 1954 1934) +4(3933 3934 3954 3953) +4(1934 1954 1955 1935) +4(3934 3935 3955 3954) +4(1935 1955 1956 1936) +4(3935 3936 3956 3955) +4(1936 1956 1957 1937) +4(3936 3937 3957 3956) +4(1937 1957 1958 1938) +4(3937 3938 3958 3957) +4(1938 1958 1959 1939) +4(3938 3939 3959 3958) +4(1940 1960 1961 1941) +4(3940 3941 3961 3960) +4(1941 1961 1962 1942) +4(3941 3942 3962 3961) +4(1942 1962 1963 1943) +4(3942 3943 3963 3962) +4(1943 1963 1964 1944) +4(3943 3944 3964 3963) +4(1944 1964 1965 1945) +4(3944 3945 3965 3964) +4(1945 1965 1966 1946) +4(3945 3946 3966 3965) +4(1946 1966 1967 1947) +4(3946 3947 3967 3966) +4(1947 1967 1968 1948) +4(3947 3948 3968 3967) +4(1948 1968 1969 1949) +4(3948 3949 3969 3968) +4(1949 1969 1970 1950) +4(3949 3950 3970 3969) +4(1950 1970 1971 1951) +4(3950 3951 3971 3970) +4(1951 1971 1972 1952) +4(3951 3952 3972 3971) +4(1952 1972 1973 1953) +4(3952 3953 3973 3972) +4(1953 1973 1974 1954) +4(3953 3954 3974 3973) +4(1954 1974 1975 1955) +4(3954 3955 3975 3974) +4(1955 1975 1976 1956) +4(3955 3956 3976 3975) +4(1956 1976 1977 1957) +4(3956 3957 3977 3976) +4(1957 1977 1978 1958) +4(3957 3958 3978 3977) +4(1958 1978 1979 1959) +4(3958 3959 3979 3978) +4(1960 1980 1981 1961) +4(3960 3961 3981 3980) +4(1961 1981 1982 1962) +4(3961 3962 3982 3981) +4(1962 1982 1983 1963) +4(3962 3963 3983 3982) +4(1963 1983 1984 1964) +4(3963 3964 3984 3983) +4(1964 1984 1985 1965) +4(3964 3965 3985 3984) +4(1965 1985 1986 1966) +4(3965 3966 3986 3985) +4(1966 1986 1987 1967) +4(3966 3967 3987 3986) +4(1967 1987 1988 1968) +4(3967 3968 3988 3987) +4(1968 1988 1989 1969) +4(3968 3969 3989 3988) +4(1969 1989 1990 1970) +4(3969 3970 3990 3989) +4(1970 1990 1991 1971) +4(3970 3971 3991 3990) +4(1971 1991 1992 1972) +4(3971 3972 3992 3991) +4(1972 1992 1993 1973) +4(3972 3973 3993 3992) +4(1973 1993 1994 1974) +4(3973 3974 3994 3993) +4(1974 1994 1995 1975) +4(3974 3975 3995 3994) +4(1975 1995 1996 1976) +4(3975 3976 3996 3995) +4(1976 1996 1997 1977) +4(3976 3977 3997 3996) +4(1977 1997 1998 1978) +4(3977 3978 3998 3997) +4(1978 1998 1999 1979) +4(3978 3979 3999 3998) +) + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/neighbour b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/neighbour new file mode 100755 index 000000000..c58d3b2b1 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/neighbour @@ -0,0 +1,3669 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class labelList; + note "nPoints: 4000 nCells: 1881 nFaces: 7642 nInternalFaces: 3644"; + location "constant/polyMesh"; + object neighbour; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +3644 +( +1 +19 +2 +20 +3 +21 +4 +22 +5 +23 +6 +24 +7 +25 +8 +26 +9 +27 +10 +28 +11 +29 +12 +30 +13 +31 +14 +32 +15 +33 +16 +34 +17 +35 +18 +36 +37 +20 +38 +21 +39 +22 +40 +23 +41 +24 +42 +25 +43 +26 +44 +27 +45 +28 +46 +29 +47 +30 +48 +31 +49 +32 +50 +33 +51 +34 +52 +35 +53 +36 +54 +37 +55 +56 +39 +57 +40 +58 +41 +59 +42 +60 +43 +61 +44 +62 +45 +63 +46 +64 +47 +65 +48 +66 +49 +67 +50 +68 +51 +69 +52 +70 +53 +71 +54 +72 +55 +73 +56 +74 +75 +58 +76 +59 +77 +60 +78 +61 +79 +62 +80 +63 +81 +64 +82 +65 +83 +66 +84 +67 +85 +68 +86 +69 +87 +70 +88 +71 +89 +72 +90 +73 +91 +74 +92 +75 +93 +94 +77 +95 +78 +96 +79 +97 +80 +98 +81 +99 +82 +100 +83 +101 +84 +102 +85 +103 +86 +104 +87 +105 +88 +106 +89 +107 +90 +108 +91 +109 +92 +110 +93 +111 +94 +112 +113 +96 +114 +97 +115 +98 +116 +99 +117 +100 +118 +101 +119 +102 +120 +103 +121 +104 +122 +105 +123 +106 +124 +107 +125 +108 +126 +109 +127 +110 +128 +111 +129 +112 +130 +113 +131 +132 +115 +133 +116 +134 +117 +135 +118 +136 +119 +137 +120 +138 +121 +139 +122 +140 +123 +141 +124 +142 +125 +143 +126 +144 +127 +145 +128 +146 +129 +147 +130 +148 +131 +149 +132 +150 +151 +134 +152 +135 +153 +136 +154 +137 +155 +138 +156 +139 +157 +140 +158 +141 +159 +142 +160 +143 +161 +144 +162 +145 +163 +146 +164 +147 +165 +148 +166 +149 +167 +150 +168 +151 +169 +170 +153 +171 +154 +172 +155 +173 +156 +174 +157 +175 +158 +176 +159 +177 +160 +178 +161 +179 +162 +180 +163 +181 +164 +182 +165 +183 +166 +184 +167 +185 +168 +186 +169 +187 +170 +188 +189 +172 +190 +173 +191 +174 +192 +175 +193 +176 +194 +177 +195 +178 +196 +179 +197 +180 +198 +181 +199 +182 +200 +183 +201 +184 +202 +185 +203 +186 +204 +187 +205 +188 +206 +189 +207 +208 +191 +209 +192 +210 +193 +211 +194 +212 +195 +213 +196 +214 +197 +215 +198 +216 +199 +217 +200 +218 +201 +219 +202 +220 +203 +221 +204 +222 +205 +223 +206 +224 +207 +225 +208 +226 +227 +210 +228 +211 +229 +212 +230 +213 +231 +214 +232 +215 +233 +216 +234 +217 +235 +218 +236 +219 +237 +220 +238 +221 +239 +222 +240 +223 +241 +224 +242 +225 +243 +226 +244 +227 +245 +246 +229 +247 +230 +248 +231 +249 +232 +250 +233 +251 +234 +252 +235 +253 +236 +254 +237 +255 +238 +256 +239 +257 +240 +258 +241 +259 +242 +260 +243 +261 +244 +262 +245 +263 +246 +264 +265 +248 +266 +249 +267 +250 +268 +251 +269 +252 +270 +253 +271 +254 +272 +255 +273 +256 +274 +257 +275 +258 +276 +259 +277 +260 +278 +261 +279 +262 +280 +263 +281 +264 +282 +265 +283 +284 +267 +285 +268 +286 +269 +287 +270 +288 +271 +289 +272 +290 +273 +291 +274 +292 +275 +293 +276 +294 +277 +295 +278 +296 +279 +297 +280 +298 +281 +299 +282 +300 +283 +301 +284 +302 +303 +286 +304 +287 +305 +288 +306 +289 +307 +290 +308 +291 +309 +292 +310 +293 +311 +294 +312 +295 +313 +296 +314 +297 +315 +298 +316 +299 +317 +300 +318 +301 +319 +302 +320 +303 +321 +322 +305 +323 +306 +324 +307 +325 +308 +326 +309 +327 +310 +328 +311 +329 +312 +330 +313 +331 +314 +332 +315 +333 +316 +334 +317 +335 +318 +336 +319 +337 +320 +338 +321 +339 +322 +340 +341 +324 +342 +325 +343 +326 +344 +327 +345 +328 +346 +329 +347 +330 +348 +331 +349 +332 +350 +333 +351 +334 +352 +335 +353 +336 +354 +337 +355 +338 +356 +339 +357 +340 +358 +341 +359 +360 +343 +361 +344 +362 +345 +363 +346 +364 +347 +365 +348 +366 +349 +367 +350 +368 +351 +369 +352 +370 +353 +371 +354 +372 +355 +373 +356 +374 +357 +375 +358 +376 +359 +377 +360 +378 +379 +362 +380 +363 +381 +364 +382 +365 +383 +366 +384 +367 +385 +368 +386 +369 +387 +370 +388 +371 +389 +372 +390 +373 +391 +374 +392 +375 +393 +376 +394 +377 +395 +378 +396 +379 +397 +398 +381 +399 +382 +400 +383 +401 +384 +402 +385 +403 +386 +404 +387 +405 +388 +406 +389 +407 +390 +408 +391 +409 +392 +410 +393 +411 +394 +412 +395 +413 +396 +414 +397 +415 +398 +416 +417 +400 +418 +401 +419 +402 +420 +403 +421 +404 +422 +405 +423 +406 +424 +407 +425 +408 +426 +409 +427 +410 +428 +411 +429 +412 +430 +413 +431 +414 +432 +415 +433 +416 +434 +417 +435 +436 +419 +437 +420 +438 +421 +439 +422 +440 +423 +441 +424 +442 +425 +443 +426 +444 +427 +445 +428 +446 +429 +447 +430 +448 +431 +449 +432 +450 +433 +451 +434 +452 +435 +453 +436 +454 +455 +438 +456 +439 +457 +440 +458 +441 +459 +442 +460 +443 +461 +444 +462 +445 +463 +446 +464 +447 +465 +448 +466 +449 +467 +450 +468 +451 +469 +452 +470 +453 +471 +454 +472 +455 +473 +474 +457 +475 +458 +476 +459 +477 +460 +478 +461 +479 +462 +480 +463 +481 +464 +482 +465 +483 +466 +484 +467 +485 +468 +486 +469 +487 +470 +488 +471 +489 +472 +490 +473 +491 +474 +492 +493 +476 +494 +477 +495 +478 +496 +479 +497 +480 +498 +481 +499 +482 +500 +483 +501 +484 +502 +485 +503 +486 +504 +487 +505 +488 +506 +489 +507 +490 +508 +491 +509 +492 +510 +493 +511 +512 +495 +513 +496 +514 +497 +515 +498 +516 +499 +517 +500 +518 +501 +519 +502 +520 +503 +521 +504 +522 +505 +523 +506 +524 +507 +525 +508 +526 +509 +527 +510 +528 +511 +529 +512 +530 +531 +514 +532 +515 +533 +516 +534 +517 +535 +518 +536 +519 +537 +520 +538 +521 +539 +522 +540 +523 +541 +524 +542 +525 +543 +526 +544 +527 +545 +528 +546 +529 +547 +530 +548 +531 +549 +550 +533 +551 +534 +552 +535 +553 +536 +554 +537 +555 +538 +556 +539 +557 +540 +558 +541 +559 +542 +560 +543 +561 +544 +562 +545 +563 +546 +564 +547 +565 +548 +566 +549 +567 +550 +568 +569 +552 +570 +553 +571 +554 +572 +555 +573 +556 +574 +557 +575 +558 +576 +559 +577 +560 +578 +561 +579 +562 +580 +563 +581 +564 +582 +565 +583 +566 +584 +567 +585 +568 +586 +569 +587 +588 +571 +589 +572 +590 +573 +591 +574 +592 +575 +593 +576 +594 +577 +595 +578 +596 +579 +597 +580 +598 +581 +599 +582 +600 +583 +601 +584 +602 +585 +603 +586 +604 +587 +605 +588 +606 +607 +590 +608 +591 +609 +592 +610 +593 +611 +594 +612 +595 +613 +596 +614 +597 +615 +598 +616 +599 +617 +600 +618 +601 +619 +602 +620 +603 +621 +604 +622 +605 +623 +606 +624 +607 +625 +626 +609 +627 +610 +628 +611 +629 +612 +630 +613 +631 +614 +632 +615 +633 +616 +634 +617 +635 +618 +636 +619 +637 +620 +638 +621 +639 +622 +640 +623 +641 +624 +642 +625 +643 +626 +644 +645 +628 +646 +629 +647 +630 +648 +631 +649 +632 +650 +633 +651 +634 +652 +635 +653 +636 +654 +637 +655 +638 +656 +639 +657 +640 +658 +641 +659 +642 +660 +643 +661 +644 +662 +645 +663 +664 +647 +665 +648 +666 +649 +667 +650 +668 +651 +669 +652 +670 +653 +671 +654 +672 +655 +673 +656 +674 +657 +675 +658 +676 +659 +677 +660 +678 +661 +679 +662 +680 +663 +681 +664 +682 +683 +666 +684 +667 +685 +668 +686 +669 +687 +670 +688 +671 +689 +672 +690 +673 +691 +674 +692 +675 +693 +676 +694 +677 +695 +678 +696 +679 +697 +680 +698 +681 +699 +682 +700 +683 +701 +702 +685 +703 +686 +704 +687 +705 +688 +706 +689 +707 +690 +708 +691 +709 +692 +710 +693 +711 +694 +712 +695 +713 +696 +714 +697 +715 +698 +716 +699 +717 +700 +718 +701 +719 +702 +720 +721 +704 +722 +705 +723 +706 +724 +707 +725 +708 +726 +709 +727 +710 +728 +711 +729 +712 +730 +713 +731 +714 +732 +715 +733 +716 +734 +717 +735 +718 +736 +719 +737 +720 +738 +721 +739 +740 +723 +741 +724 +742 +725 +743 +726 +744 +727 +745 +728 +746 +729 +747 +730 +748 +731 +749 +732 +750 +733 +751 +734 +752 +735 +753 +736 +754 +737 +755 +738 +756 +739 +757 +740 +758 +759 +742 +760 +743 +761 +744 +762 +745 +763 +746 +764 +747 +765 +748 +766 +749 +767 +750 +768 +751 +769 +752 +770 +753 +771 +754 +772 +755 +773 +756 +774 +757 +775 +758 +776 +759 +777 +778 +761 +779 +762 +780 +763 +781 +764 +782 +765 +783 +766 +784 +767 +785 +768 +786 +769 +787 +770 +788 +771 +789 +772 +790 +773 +791 +774 +792 +775 +793 +776 +794 +777 +795 +778 +796 +797 +780 +798 +781 +799 +782 +800 +783 +801 +784 +802 +785 +803 +786 +804 +787 +805 +788 +806 +789 +807 +790 +808 +791 +809 +792 +810 +793 +811 +794 +812 +795 +813 +796 +814 +797 +815 +816 +799 +817 +800 +818 +801 +819 +802 +820 +803 +821 +804 +822 +805 +823 +806 +824 +807 +825 +808 +826 +809 +827 +810 +828 +811 +829 +812 +830 +813 +831 +814 +832 +815 +833 +816 +834 +835 +818 +836 +819 +837 +820 +838 +821 +839 +822 +840 +823 +841 +824 +842 +825 +843 +826 +844 +827 +845 +828 +846 +829 +847 +830 +848 +831 +849 +832 +850 +833 +851 +834 +852 +835 +853 +854 +837 +855 +838 +856 +839 +857 +840 +858 +841 +859 +842 +860 +843 +861 +844 +862 +845 +863 +846 +864 +847 +865 +848 +866 +849 +867 +850 +868 +851 +869 +852 +870 +853 +871 +854 +872 +873 +856 +874 +857 +875 +858 +876 +859 +877 +860 +878 +861 +879 +862 +880 +863 +881 +864 +882 +865 +883 +866 +884 +867 +885 +868 +886 +869 +887 +870 +888 +871 +889 +872 +890 +873 +891 +892 +875 +893 +876 +894 +877 +895 +878 +896 +879 +897 +880 +898 +881 +899 +882 +900 +883 +901 +884 +902 +885 +903 +886 +904 +887 +905 +888 +906 +889 +907 +890 +908 +891 +909 +892 +910 +911 +894 +912 +895 +913 +896 +914 +897 +915 +898 +916 +899 +917 +900 +918 +901 +919 +902 +920 +903 +921 +904 +922 +905 +923 +906 +924 +907 +925 +908 +926 +909 +927 +910 +928 +911 +929 +930 +913 +931 +914 +932 +915 +933 +916 +934 +917 +935 +918 +936 +919 +937 +920 +938 +921 +939 +922 +940 +923 +941 +924 +942 +925 +943 +926 +944 +927 +945 +928 +946 +929 +947 +930 +948 +949 +932 +950 +933 +951 +934 +952 +935 +953 +936 +954 +937 +955 +938 +956 +939 +957 +940 +958 +941 +959 +942 +960 +943 +961 +944 +962 +945 +963 +946 +964 +947 +965 +948 +966 +949 +967 +968 +951 +969 +952 +970 +953 +971 +954 +972 +955 +973 +956 +974 +957 +975 +958 +976 +959 +977 +960 +978 +961 +979 +962 +980 +963 +981 +964 +982 +965 +983 +966 +984 +967 +985 +968 +986 +987 +970 +988 +971 +989 +972 +990 +973 +991 +974 +992 +975 +993 +976 +994 +977 +995 +978 +996 +979 +997 +980 +998 +981 +999 +982 +1000 +983 +1001 +984 +1002 +985 +1003 +986 +1004 +987 +1005 +1006 +989 +1007 +990 +1008 +991 +1009 +992 +1010 +993 +1011 +994 +1012 +995 +1013 +996 +1014 +997 +1015 +998 +1016 +999 +1017 +1000 +1018 +1001 +1019 +1002 +1020 +1003 +1021 +1004 +1022 +1005 +1023 +1006 +1024 +1025 +1008 +1026 +1009 +1027 +1010 +1028 +1011 +1029 +1012 +1030 +1013 +1031 +1014 +1032 +1015 +1033 +1016 +1034 +1017 +1035 +1018 +1036 +1019 +1037 +1020 +1038 +1021 +1039 +1022 +1040 +1023 +1041 +1024 +1042 +1025 +1043 +1044 +1027 +1045 +1028 +1046 +1029 +1047 +1030 +1048 +1031 +1049 +1032 +1050 +1033 +1051 +1034 +1052 +1035 +1053 +1036 +1054 +1037 +1055 +1038 +1056 +1039 +1057 +1040 +1058 +1041 +1059 +1042 +1060 +1043 +1061 +1044 +1062 +1063 +1046 +1064 +1047 +1065 +1048 +1066 +1049 +1067 +1050 +1068 +1051 +1069 +1052 +1070 +1053 +1071 +1054 +1072 +1055 +1073 +1056 +1074 +1057 +1075 +1058 +1076 +1059 +1077 +1060 +1078 +1061 +1079 +1062 +1080 +1063 +1081 +1082 +1065 +1083 +1066 +1084 +1067 +1085 +1068 +1086 +1069 +1087 +1070 +1088 +1071 +1089 +1072 +1090 +1073 +1091 +1074 +1092 +1075 +1093 +1076 +1094 +1077 +1095 +1078 +1096 +1079 +1097 +1080 +1098 +1081 +1099 +1082 +1100 +1101 +1084 +1102 +1085 +1103 +1086 +1104 +1087 +1105 +1088 +1106 +1089 +1107 +1090 +1108 +1091 +1109 +1092 +1110 +1093 +1111 +1094 +1112 +1095 +1113 +1096 +1114 +1097 +1115 +1098 +1116 +1099 +1117 +1100 +1118 +1101 +1119 +1120 +1103 +1121 +1104 +1122 +1105 +1123 +1106 +1124 +1107 +1125 +1108 +1126 +1109 +1127 +1110 +1128 +1111 +1129 +1112 +1130 +1113 +1131 +1114 +1132 +1115 +1133 +1116 +1134 +1117 +1135 +1118 +1136 +1119 +1137 +1120 +1138 +1139 +1122 +1140 +1123 +1141 +1124 +1142 +1125 +1143 +1126 +1144 +1127 +1145 +1128 +1146 +1129 +1147 +1130 +1148 +1131 +1149 +1132 +1150 +1133 +1151 +1134 +1152 +1135 +1153 +1136 +1154 +1137 +1155 +1138 +1156 +1139 +1157 +1158 +1141 +1159 +1142 +1160 +1143 +1161 +1144 +1162 +1145 +1163 +1146 +1164 +1147 +1165 +1148 +1166 +1149 +1167 +1150 +1168 +1151 +1169 +1152 +1170 +1153 +1171 +1154 +1172 +1155 +1173 +1156 +1174 +1157 +1175 +1158 +1176 +1177 +1160 +1178 +1161 +1179 +1162 +1180 +1163 +1181 +1164 +1182 +1165 +1183 +1166 +1184 +1167 +1185 +1168 +1186 +1169 +1187 +1170 +1188 +1171 +1189 +1172 +1190 +1173 +1191 +1174 +1192 +1175 +1193 +1176 +1194 +1177 +1195 +1196 +1179 +1197 +1180 +1198 +1181 +1199 +1182 +1200 +1183 +1201 +1184 +1202 +1185 +1203 +1186 +1204 +1187 +1205 +1188 +1206 +1189 +1207 +1190 +1208 +1191 +1209 +1192 +1210 +1193 +1211 +1194 +1212 +1195 +1213 +1196 +1214 +1215 +1198 +1216 +1199 +1217 +1200 +1218 +1201 +1219 +1202 +1220 +1203 +1221 +1204 +1222 +1205 +1223 +1206 +1224 +1207 +1225 +1208 +1226 +1209 +1227 +1210 +1228 +1211 +1229 +1212 +1230 +1213 +1231 +1214 +1232 +1215 +1233 +1234 +1217 +1235 +1218 +1236 +1219 +1237 +1220 +1238 +1221 +1239 +1222 +1240 +1223 +1241 +1224 +1242 +1225 +1243 +1226 +1244 +1227 +1245 +1228 +1246 +1229 +1247 +1230 +1248 +1231 +1249 +1232 +1250 +1233 +1251 +1234 +1252 +1253 +1236 +1254 +1237 +1255 +1238 +1256 +1239 +1257 +1240 +1258 +1241 +1259 +1242 +1260 +1243 +1261 +1244 +1262 +1245 +1263 +1246 +1264 +1247 +1265 +1248 +1266 +1249 +1267 +1250 +1268 +1251 +1269 +1252 +1270 +1253 +1271 +1272 +1255 +1273 +1256 +1274 +1257 +1275 +1258 +1276 +1259 +1277 +1260 +1278 +1261 +1279 +1262 +1280 +1263 +1281 +1264 +1282 +1265 +1283 +1266 +1284 +1267 +1285 +1268 +1286 +1269 +1287 +1270 +1288 +1271 +1289 +1272 +1290 +1291 +1274 +1292 +1275 +1293 +1276 +1294 +1277 +1295 +1278 +1296 +1279 +1297 +1280 +1298 +1281 +1299 +1282 +1300 +1283 +1301 +1284 +1302 +1285 +1303 +1286 +1304 +1287 +1305 +1288 +1306 +1289 +1307 +1290 +1308 +1291 +1309 +1310 +1293 +1311 +1294 +1312 +1295 +1313 +1296 +1314 +1297 +1315 +1298 +1316 +1299 +1317 +1300 +1318 +1301 +1319 +1302 +1320 +1303 +1321 +1304 +1322 +1305 +1323 +1306 +1324 +1307 +1325 +1308 +1326 +1309 +1327 +1310 +1328 +1329 +1312 +1330 +1313 +1331 +1314 +1332 +1315 +1333 +1316 +1334 +1317 +1335 +1318 +1336 +1319 +1337 +1320 +1338 +1321 +1339 +1322 +1340 +1323 +1341 +1324 +1342 +1325 +1343 +1326 +1344 +1327 +1345 +1328 +1346 +1329 +1347 +1348 +1331 +1349 +1332 +1350 +1333 +1351 +1334 +1352 +1335 +1353 +1336 +1354 +1337 +1355 +1338 +1356 +1339 +1357 +1340 +1358 +1341 +1359 +1342 +1360 +1343 +1361 +1344 +1362 +1345 +1363 +1346 +1364 +1347 +1365 +1348 +1366 +1367 +1350 +1368 +1351 +1369 +1352 +1370 +1353 +1371 +1354 +1372 +1355 +1373 +1356 +1374 +1357 +1375 +1358 +1376 +1359 +1377 +1360 +1378 +1361 +1379 +1362 +1380 +1363 +1381 +1364 +1382 +1365 +1383 +1366 +1384 +1367 +1385 +1386 +1369 +1387 +1370 +1388 +1371 +1389 +1372 +1390 +1373 +1391 +1374 +1392 +1375 +1393 +1376 +1394 +1377 +1395 +1378 +1396 +1379 +1397 +1380 +1398 +1381 +1399 +1382 +1400 +1383 +1401 +1384 +1402 +1385 +1403 +1386 +1404 +1405 +1388 +1406 +1389 +1407 +1390 +1408 +1391 +1409 +1392 +1410 +1393 +1411 +1394 +1412 +1395 +1413 +1396 +1414 +1397 +1415 +1398 +1416 +1399 +1417 +1400 +1418 +1401 +1419 +1402 +1420 +1403 +1421 +1404 +1422 +1405 +1423 +1424 +1407 +1425 +1408 +1426 +1409 +1427 +1410 +1428 +1411 +1429 +1412 +1430 +1413 +1431 +1414 +1432 +1415 +1433 +1416 +1434 +1417 +1435 +1418 +1436 +1419 +1437 +1420 +1438 +1421 +1439 +1422 +1440 +1423 +1441 +1424 +1442 +1443 +1426 +1444 +1427 +1445 +1428 +1446 +1429 +1447 +1430 +1448 +1431 +1449 +1432 +1450 +1433 +1451 +1434 +1452 +1435 +1453 +1436 +1454 +1437 +1455 +1438 +1456 +1439 +1457 +1440 +1458 +1441 +1459 +1442 +1460 +1443 +1461 +1462 +1445 +1463 +1446 +1464 +1447 +1465 +1448 +1466 +1449 +1467 +1450 +1468 +1451 +1469 +1452 +1470 +1453 +1471 +1454 +1472 +1455 +1473 +1456 +1474 +1457 +1475 +1458 +1476 +1459 +1477 +1460 +1478 +1461 +1479 +1462 +1480 +1481 +1464 +1482 +1465 +1483 +1466 +1484 +1467 +1485 +1468 +1486 +1469 +1487 +1470 +1488 +1471 +1489 +1472 +1490 +1473 +1491 +1474 +1492 +1475 +1493 +1476 +1494 +1477 +1495 +1478 +1496 +1479 +1497 +1480 +1498 +1481 +1499 +1500 +1483 +1501 +1484 +1502 +1485 +1503 +1486 +1504 +1487 +1505 +1488 +1506 +1489 +1507 +1490 +1508 +1491 +1509 +1492 +1510 +1493 +1511 +1494 +1512 +1495 +1513 +1496 +1514 +1497 +1515 +1498 +1516 +1499 +1517 +1500 +1518 +1519 +1502 +1520 +1503 +1521 +1504 +1522 +1505 +1523 +1506 +1524 +1507 +1525 +1508 +1526 +1509 +1527 +1510 +1528 +1511 +1529 +1512 +1530 +1513 +1531 +1514 +1532 +1515 +1533 +1516 +1534 +1517 +1535 +1518 +1536 +1519 +1537 +1538 +1521 +1539 +1522 +1540 +1523 +1541 +1524 +1542 +1525 +1543 +1526 +1544 +1527 +1545 +1528 +1546 +1529 +1547 +1530 +1548 +1531 +1549 +1532 +1550 +1533 +1551 +1534 +1552 +1535 +1553 +1536 +1554 +1537 +1555 +1538 +1556 +1557 +1540 +1558 +1541 +1559 +1542 +1560 +1543 +1561 +1544 +1562 +1545 +1563 +1546 +1564 +1547 +1565 +1548 +1566 +1549 +1567 +1550 +1568 +1551 +1569 +1552 +1570 +1553 +1571 +1554 +1572 +1555 +1573 +1556 +1574 +1557 +1575 +1576 +1559 +1577 +1560 +1578 +1561 +1579 +1562 +1580 +1563 +1581 +1564 +1582 +1565 +1583 +1566 +1584 +1567 +1585 +1568 +1586 +1569 +1587 +1570 +1588 +1571 +1589 +1572 +1590 +1573 +1591 +1574 +1592 +1575 +1593 +1576 +1594 +1595 +1578 +1596 +1579 +1597 +1580 +1598 +1581 +1599 +1582 +1600 +1583 +1601 +1584 +1602 +1585 +1603 +1586 +1604 +1587 +1605 +1588 +1606 +1589 +1607 +1590 +1608 +1591 +1609 +1592 +1610 +1593 +1611 +1594 +1612 +1595 +1613 +1614 +1597 +1615 +1598 +1616 +1599 +1617 +1600 +1618 +1601 +1619 +1602 +1620 +1603 +1621 +1604 +1622 +1605 +1623 +1606 +1624 +1607 +1625 +1608 +1626 +1609 +1627 +1610 +1628 +1611 +1629 +1612 +1630 +1613 +1631 +1614 +1632 +1633 +1616 +1634 +1617 +1635 +1618 +1636 +1619 +1637 +1620 +1638 +1621 +1639 +1622 +1640 +1623 +1641 +1624 +1642 +1625 +1643 +1626 +1644 +1627 +1645 +1628 +1646 +1629 +1647 +1630 +1648 +1631 +1649 +1632 +1650 +1633 +1651 +1652 +1635 +1653 +1636 +1654 +1637 +1655 +1638 +1656 +1639 +1657 +1640 +1658 +1641 +1659 +1642 +1660 +1643 +1661 +1644 +1662 +1645 +1663 +1646 +1664 +1647 +1665 +1648 +1666 +1649 +1667 +1650 +1668 +1651 +1669 +1652 +1670 +1671 +1654 +1672 +1655 +1673 +1656 +1674 +1657 +1675 +1658 +1676 +1659 +1677 +1660 +1678 +1661 +1679 +1662 +1680 +1663 +1681 +1664 +1682 +1665 +1683 +1666 +1684 +1667 +1685 +1668 +1686 +1669 +1687 +1670 +1688 +1671 +1689 +1690 +1673 +1691 +1674 +1692 +1675 +1693 +1676 +1694 +1677 +1695 +1678 +1696 +1679 +1697 +1680 +1698 +1681 +1699 +1682 +1700 +1683 +1701 +1684 +1702 +1685 +1703 +1686 +1704 +1687 +1705 +1688 +1706 +1689 +1707 +1690 +1708 +1709 +1692 +1710 +1693 +1711 +1694 +1712 +1695 +1713 +1696 +1714 +1697 +1715 +1698 +1716 +1699 +1717 +1700 +1718 +1701 +1719 +1702 +1720 +1703 +1721 +1704 +1722 +1705 +1723 +1706 +1724 +1707 +1725 +1708 +1726 +1709 +1727 +1728 +1711 +1729 +1712 +1730 +1713 +1731 +1714 +1732 +1715 +1733 +1716 +1734 +1717 +1735 +1718 +1736 +1719 +1737 +1720 +1738 +1721 +1739 +1722 +1740 +1723 +1741 +1724 +1742 +1725 +1743 +1726 +1744 +1727 +1745 +1728 +1746 +1747 +1730 +1748 +1731 +1749 +1732 +1750 +1733 +1751 +1734 +1752 +1735 +1753 +1736 +1754 +1737 +1755 +1738 +1756 +1739 +1757 +1740 +1758 +1741 +1759 +1742 +1760 +1743 +1761 +1744 +1762 +1745 +1763 +1746 +1764 +1747 +1765 +1766 +1749 +1767 +1750 +1768 +1751 +1769 +1752 +1770 +1753 +1771 +1754 +1772 +1755 +1773 +1756 +1774 +1757 +1775 +1758 +1776 +1759 +1777 +1760 +1778 +1761 +1779 +1762 +1780 +1763 +1781 +1764 +1782 +1765 +1783 +1766 +1784 +1785 +1768 +1786 +1769 +1787 +1770 +1788 +1771 +1789 +1772 +1790 +1773 +1791 +1774 +1792 +1775 +1793 +1776 +1794 +1777 +1795 +1778 +1796 +1779 +1797 +1780 +1798 +1781 +1799 +1782 +1800 +1783 +1801 +1784 +1802 +1785 +1803 +1804 +1787 +1805 +1788 +1806 +1789 +1807 +1790 +1808 +1791 +1809 +1792 +1810 +1793 +1811 +1794 +1812 +1795 +1813 +1796 +1814 +1797 +1815 +1798 +1816 +1799 +1817 +1800 +1818 +1801 +1819 +1802 +1820 +1803 +1821 +1804 +1822 +1823 +1806 +1824 +1807 +1825 +1808 +1826 +1809 +1827 +1810 +1828 +1811 +1829 +1812 +1830 +1813 +1831 +1814 +1832 +1815 +1833 +1816 +1834 +1817 +1835 +1818 +1836 +1819 +1837 +1820 +1838 +1821 +1839 +1822 +1840 +1823 +1841 +1842 +1825 +1843 +1826 +1844 +1827 +1845 +1828 +1846 +1829 +1847 +1830 +1848 +1831 +1849 +1832 +1850 +1833 +1851 +1834 +1852 +1835 +1853 +1836 +1854 +1837 +1855 +1838 +1856 +1839 +1857 +1840 +1858 +1841 +1859 +1842 +1860 +1861 +1844 +1862 +1845 +1863 +1846 +1864 +1847 +1865 +1848 +1866 +1849 +1867 +1850 +1868 +1851 +1869 +1852 +1870 +1853 +1871 +1854 +1872 +1855 +1873 +1856 +1874 +1857 +1875 +1858 +1876 +1859 +1877 +1860 +1878 +1861 +1879 +1880 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +1880 +) + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/owner b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/owner new file mode 100755 index 000000000..244904734 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/owner @@ -0,0 +1,7667 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class labelList; + note "nPoints: 4000 nCells: 1881 nFaces: 7642 nInternalFaces: 3644"; + location "constant/polyMesh"; + object owner; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +7642 +( +0 +0 +1 +1 +2 +2 +3 +3 +4 +4 +5 +5 +6 +6 +7 +7 +8 +8 +9 +9 +10 +10 +11 +11 +12 +12 +13 +13 +14 +14 +15 +15 +16 +16 +17 +17 +18 +19 +19 +20 +20 +21 +21 +22 +22 +23 +23 +24 +24 +25 +25 +26 +26 +27 +27 +28 +28 +29 +29 +30 +30 +31 +31 +32 +32 +33 +33 +34 +34 +35 +35 +36 +36 +37 +38 +38 +39 +39 +40 +40 +41 +41 +42 +42 +43 +43 +44 +44 +45 +45 +46 +46 +47 +47 +48 +48 +49 +49 +50 +50 +51 +51 +52 +52 +53 +53 +54 +54 +55 +55 +56 +57 +57 +58 +58 +59 +59 +60 +60 +61 +61 +62 +62 +63 +63 +64 +64 +65 +65 +66 +66 +67 +67 +68 +68 +69 +69 +70 +70 +71 +71 +72 +72 +73 +73 +74 +74 +75 +76 +76 +77 +77 +78 +78 +79 +79 +80 +80 +81 +81 +82 +82 +83 +83 +84 +84 +85 +85 +86 +86 +87 +87 +88 +88 +89 +89 +90 +90 +91 +91 +92 +92 +93 +93 +94 +95 +95 +96 +96 +97 +97 +98 +98 +99 +99 +100 +100 +101 +101 +102 +102 +103 +103 +104 +104 +105 +105 +106 +106 +107 +107 +108 +108 +109 +109 +110 +110 +111 +111 +112 +112 +113 +114 +114 +115 +115 +116 +116 +117 +117 +118 +118 +119 +119 +120 +120 +121 +121 +122 +122 +123 +123 +124 +124 +125 +125 +126 +126 +127 +127 +128 +128 +129 +129 +130 +130 +131 +131 +132 +133 +133 +134 +134 +135 +135 +136 +136 +137 +137 +138 +138 +139 +139 +140 +140 +141 +141 +142 +142 +143 +143 +144 +144 +145 +145 +146 +146 +147 +147 +148 +148 +149 +149 +150 +150 +151 +152 +152 +153 +153 +154 +154 +155 +155 +156 +156 +157 +157 +158 +158 +159 +159 +160 +160 +161 +161 +162 +162 +163 +163 +164 +164 +165 +165 +166 +166 +167 +167 +168 +168 +169 +169 +170 +171 +171 +172 +172 +173 +173 +174 +174 +175 +175 +176 +176 +177 +177 +178 +178 +179 +179 +180 +180 +181 +181 +182 +182 +183 +183 +184 +184 +185 +185 +186 +186 +187 +187 +188 +188 +189 +190 +190 +191 +191 +192 +192 +193 +193 +194 +194 +195 +195 +196 +196 +197 +197 +198 +198 +199 +199 +200 +200 +201 +201 +202 +202 +203 +203 +204 +204 +205 +205 +206 +206 +207 +207 +208 +209 +209 +210 +210 +211 +211 +212 +212 +213 +213 +214 +214 +215 +215 +216 +216 +217 +217 +218 +218 +219 +219 +220 +220 +221 +221 +222 +222 +223 +223 +224 +224 +225 +225 +226 +226 +227 +228 +228 +229 +229 +230 +230 +231 +231 +232 +232 +233 +233 +234 +234 +235 +235 +236 +236 +237 +237 +238 +238 +239 +239 +240 +240 +241 +241 +242 +242 +243 +243 +244 +244 +245 +245 +246 +247 +247 +248 +248 +249 +249 +250 +250 +251 +251 +252 +252 +253 +253 +254 +254 +255 +255 +256 +256 +257 +257 +258 +258 +259 +259 +260 +260 +261 +261 +262 +262 +263 +263 +264 +264 +265 +266 +266 +267 +267 +268 +268 +269 +269 +270 +270 +271 +271 +272 +272 +273 +273 +274 +274 +275 +275 +276 +276 +277 +277 +278 +278 +279 +279 +280 +280 +281 +281 +282 +282 +283 +283 +284 +285 +285 +286 +286 +287 +287 +288 +288 +289 +289 +290 +290 +291 +291 +292 +292 +293 +293 +294 +294 +295 +295 +296 +296 +297 +297 +298 +298 +299 +299 +300 +300 +301 +301 +302 +302 +303 +304 +304 +305 +305 +306 +306 +307 +307 +308 +308 +309 +309 +310 +310 +311 +311 +312 +312 +313 +313 +314 +314 +315 +315 +316 +316 +317 +317 +318 +318 +319 +319 +320 +320 +321 +321 +322 +323 +323 +324 +324 +325 +325 +326 +326 +327 +327 +328 +328 +329 +329 +330 +330 +331 +331 +332 +332 +333 +333 +334 +334 +335 +335 +336 +336 +337 +337 +338 +338 +339 +339 +340 +340 +341 +342 +342 +343 +343 +344 +344 +345 +345 +346 +346 +347 +347 +348 +348 +349 +349 +350 +350 +351 +351 +352 +352 +353 +353 +354 +354 +355 +355 +356 +356 +357 +357 +358 +358 +359 +359 +360 +361 +361 +362 +362 +363 +363 +364 +364 +365 +365 +366 +366 +367 +367 +368 +368 +369 +369 +370 +370 +371 +371 +372 +372 +373 +373 +374 +374 +375 +375 +376 +376 +377 +377 +378 +378 +379 +380 +380 +381 +381 +382 +382 +383 +383 +384 +384 +385 +385 +386 +386 +387 +387 +388 +388 +389 +389 +390 +390 +391 +391 +392 +392 +393 +393 +394 +394 +395 +395 +396 +396 +397 +397 +398 +399 +399 +400 +400 +401 +401 +402 +402 +403 +403 +404 +404 +405 +405 +406 +406 +407 +407 +408 +408 +409 +409 +410 +410 +411 +411 +412 +412 +413 +413 +414 +414 +415 +415 +416 +416 +417 +418 +418 +419 +419 +420 +420 +421 +421 +422 +422 +423 +423 +424 +424 +425 +425 +426 +426 +427 +427 +428 +428 +429 +429 +430 +430 +431 +431 +432 +432 +433 +433 +434 +434 +435 +435 +436 +437 +437 +438 +438 +439 +439 +440 +440 +441 +441 +442 +442 +443 +443 +444 +444 +445 +445 +446 +446 +447 +447 +448 +448 +449 +449 +450 +450 +451 +451 +452 +452 +453 +453 +454 +454 +455 +456 +456 +457 +457 +458 +458 +459 +459 +460 +460 +461 +461 +462 +462 +463 +463 +464 +464 +465 +465 +466 +466 +467 +467 +468 +468 +469 +469 +470 +470 +471 +471 +472 +472 +473 +473 +474 +475 +475 +476 +476 +477 +477 +478 +478 +479 +479 +480 +480 +481 +481 +482 +482 +483 +483 +484 +484 +485 +485 +486 +486 +487 +487 +488 +488 +489 +489 +490 +490 +491 +491 +492 +492 +493 +494 +494 +495 +495 +496 +496 +497 +497 +498 +498 +499 +499 +500 +500 +501 +501 +502 +502 +503 +503 +504 +504 +505 +505 +506 +506 +507 +507 +508 +508 +509 +509 +510 +510 +511 +511 +512 +513 +513 +514 +514 +515 +515 +516 +516 +517 +517 +518 +518 +519 +519 +520 +520 +521 +521 +522 +522 +523 +523 +524 +524 +525 +525 +526 +526 +527 +527 +528 +528 +529 +529 +530 +530 +531 +532 +532 +533 +533 +534 +534 +535 +535 +536 +536 +537 +537 +538 +538 +539 +539 +540 +540 +541 +541 +542 +542 +543 +543 +544 +544 +545 +545 +546 +546 +547 +547 +548 +548 +549 +549 +550 +551 +551 +552 +552 +553 +553 +554 +554 +555 +555 +556 +556 +557 +557 +558 +558 +559 +559 +560 +560 +561 +561 +562 +562 +563 +563 +564 +564 +565 +565 +566 +566 +567 +567 +568 +568 +569 +570 +570 +571 +571 +572 +572 +573 +573 +574 +574 +575 +575 +576 +576 +577 +577 +578 +578 +579 +579 +580 +580 +581 +581 +582 +582 +583 +583 +584 +584 +585 +585 +586 +586 +587 +587 +588 +589 +589 +590 +590 +591 +591 +592 +592 +593 +593 +594 +594 +595 +595 +596 +596 +597 +597 +598 +598 +599 +599 +600 +600 +601 +601 +602 +602 +603 +603 +604 +604 +605 +605 +606 +606 +607 +608 +608 +609 +609 +610 +610 +611 +611 +612 +612 +613 +613 +614 +614 +615 +615 +616 +616 +617 +617 +618 +618 +619 +619 +620 +620 +621 +621 +622 +622 +623 +623 +624 +624 +625 +625 +626 +627 +627 +628 +628 +629 +629 +630 +630 +631 +631 +632 +632 +633 +633 +634 +634 +635 +635 +636 +636 +637 +637 +638 +638 +639 +639 +640 +640 +641 +641 +642 +642 +643 +643 +644 +644 +645 +646 +646 +647 +647 +648 +648 +649 +649 +650 +650 +651 +651 +652 +652 +653 +653 +654 +654 +655 +655 +656 +656 +657 +657 +658 +658 +659 +659 +660 +660 +661 +661 +662 +662 +663 +663 +664 +665 +665 +666 +666 +667 +667 +668 +668 +669 +669 +670 +670 +671 +671 +672 +672 +673 +673 +674 +674 +675 +675 +676 +676 +677 +677 +678 +678 +679 +679 +680 +680 +681 +681 +682 +682 +683 +684 +684 +685 +685 +686 +686 +687 +687 +688 +688 +689 +689 +690 +690 +691 +691 +692 +692 +693 +693 +694 +694 +695 +695 +696 +696 +697 +697 +698 +698 +699 +699 +700 +700 +701 +701 +702 +703 +703 +704 +704 +705 +705 +706 +706 +707 +707 +708 +708 +709 +709 +710 +710 +711 +711 +712 +712 +713 +713 +714 +714 +715 +715 +716 +716 +717 +717 +718 +718 +719 +719 +720 +720 +721 +722 +722 +723 +723 +724 +724 +725 +725 +726 +726 +727 +727 +728 +728 +729 +729 +730 +730 +731 +731 +732 +732 +733 +733 +734 +734 +735 +735 +736 +736 +737 +737 +738 +738 +739 +739 +740 +741 +741 +742 +742 +743 +743 +744 +744 +745 +745 +746 +746 +747 +747 +748 +748 +749 +749 +750 +750 +751 +751 +752 +752 +753 +753 +754 +754 +755 +755 +756 +756 +757 +757 +758 +758 +759 +760 +760 +761 +761 +762 +762 +763 +763 +764 +764 +765 +765 +766 +766 +767 +767 +768 +768 +769 +769 +770 +770 +771 +771 +772 +772 +773 +773 +774 +774 +775 +775 +776 +776 +777 +777 +778 +779 +779 +780 +780 +781 +781 +782 +782 +783 +783 +784 +784 +785 +785 +786 +786 +787 +787 +788 +788 +789 +789 +790 +790 +791 +791 +792 +792 +793 +793 +794 +794 +795 +795 +796 +796 +797 +798 +798 +799 +799 +800 +800 +801 +801 +802 +802 +803 +803 +804 +804 +805 +805 +806 +806 +807 +807 +808 +808 +809 +809 +810 +810 +811 +811 +812 +812 +813 +813 +814 +814 +815 +815 +816 +817 +817 +818 +818 +819 +819 +820 +820 +821 +821 +822 +822 +823 +823 +824 +824 +825 +825 +826 +826 +827 +827 +828 +828 +829 +829 +830 +830 +831 +831 +832 +832 +833 +833 +834 +834 +835 +836 +836 +837 +837 +838 +838 +839 +839 +840 +840 +841 +841 +842 +842 +843 +843 +844 +844 +845 +845 +846 +846 +847 +847 +848 +848 +849 +849 +850 +850 +851 +851 +852 +852 +853 +853 +854 +855 +855 +856 +856 +857 +857 +858 +858 +859 +859 +860 +860 +861 +861 +862 +862 +863 +863 +864 +864 +865 +865 +866 +866 +867 +867 +868 +868 +869 +869 +870 +870 +871 +871 +872 +872 +873 +874 +874 +875 +875 +876 +876 +877 +877 +878 +878 +879 +879 +880 +880 +881 +881 +882 +882 +883 +883 +884 +884 +885 +885 +886 +886 +887 +887 +888 +888 +889 +889 +890 +890 +891 +891 +892 +893 +893 +894 +894 +895 +895 +896 +896 +897 +897 +898 +898 +899 +899 +900 +900 +901 +901 +902 +902 +903 +903 +904 +904 +905 +905 +906 +906 +907 +907 +908 +908 +909 +909 +910 +910 +911 +912 +912 +913 +913 +914 +914 +915 +915 +916 +916 +917 +917 +918 +918 +919 +919 +920 +920 +921 +921 +922 +922 +923 +923 +924 +924 +925 +925 +926 +926 +927 +927 +928 +928 +929 +929 +930 +931 +931 +932 +932 +933 +933 +934 +934 +935 +935 +936 +936 +937 +937 +938 +938 +939 +939 +940 +940 +941 +941 +942 +942 +943 +943 +944 +944 +945 +945 +946 +946 +947 +947 +948 +948 +949 +950 +950 +951 +951 +952 +952 +953 +953 +954 +954 +955 +955 +956 +956 +957 +957 +958 +958 +959 +959 +960 +960 +961 +961 +962 +962 +963 +963 +964 +964 +965 +965 +966 +966 +967 +967 +968 +969 +969 +970 +970 +971 +971 +972 +972 +973 +973 +974 +974 +975 +975 +976 +976 +977 +977 +978 +978 +979 +979 +980 +980 +981 +981 +982 +982 +983 +983 +984 +984 +985 +985 +986 +986 +987 +988 +988 +989 +989 +990 +990 +991 +991 +992 +992 +993 +993 +994 +994 +995 +995 +996 +996 +997 +997 +998 +998 +999 +999 +1000 +1000 +1001 +1001 +1002 +1002 +1003 +1003 +1004 +1004 +1005 +1005 +1006 +1007 +1007 +1008 +1008 +1009 +1009 +1010 +1010 +1011 +1011 +1012 +1012 +1013 +1013 +1014 +1014 +1015 +1015 +1016 +1016 +1017 +1017 +1018 +1018 +1019 +1019 +1020 +1020 +1021 +1021 +1022 +1022 +1023 +1023 +1024 +1024 +1025 +1026 +1026 +1027 +1027 +1028 +1028 +1029 +1029 +1030 +1030 +1031 +1031 +1032 +1032 +1033 +1033 +1034 +1034 +1035 +1035 +1036 +1036 +1037 +1037 +1038 +1038 +1039 +1039 +1040 +1040 +1041 +1041 +1042 +1042 +1043 +1043 +1044 +1045 +1045 +1046 +1046 +1047 +1047 +1048 +1048 +1049 +1049 +1050 +1050 +1051 +1051 +1052 +1052 +1053 +1053 +1054 +1054 +1055 +1055 +1056 +1056 +1057 +1057 +1058 +1058 +1059 +1059 +1060 +1060 +1061 +1061 +1062 +1062 +1063 +1064 +1064 +1065 +1065 +1066 +1066 +1067 +1067 +1068 +1068 +1069 +1069 +1070 +1070 +1071 +1071 +1072 +1072 +1073 +1073 +1074 +1074 +1075 +1075 +1076 +1076 +1077 +1077 +1078 +1078 +1079 +1079 +1080 +1080 +1081 +1081 +1082 +1083 +1083 +1084 +1084 +1085 +1085 +1086 +1086 +1087 +1087 +1088 +1088 +1089 +1089 +1090 +1090 +1091 +1091 +1092 +1092 +1093 +1093 +1094 +1094 +1095 +1095 +1096 +1096 +1097 +1097 +1098 +1098 +1099 +1099 +1100 +1100 +1101 +1102 +1102 +1103 +1103 +1104 +1104 +1105 +1105 +1106 +1106 +1107 +1107 +1108 +1108 +1109 +1109 +1110 +1110 +1111 +1111 +1112 +1112 +1113 +1113 +1114 +1114 +1115 +1115 +1116 +1116 +1117 +1117 +1118 +1118 +1119 +1119 +1120 +1121 +1121 +1122 +1122 +1123 +1123 +1124 +1124 +1125 +1125 +1126 +1126 +1127 +1127 +1128 +1128 +1129 +1129 +1130 +1130 +1131 +1131 +1132 +1132 +1133 +1133 +1134 +1134 +1135 +1135 +1136 +1136 +1137 +1137 +1138 +1138 +1139 +1140 +1140 +1141 +1141 +1142 +1142 +1143 +1143 +1144 +1144 +1145 +1145 +1146 +1146 +1147 +1147 +1148 +1148 +1149 +1149 +1150 +1150 +1151 +1151 +1152 +1152 +1153 +1153 +1154 +1154 +1155 +1155 +1156 +1156 +1157 +1157 +1158 +1159 +1159 +1160 +1160 +1161 +1161 +1162 +1162 +1163 +1163 +1164 +1164 +1165 +1165 +1166 +1166 +1167 +1167 +1168 +1168 +1169 +1169 +1170 +1170 +1171 +1171 +1172 +1172 +1173 +1173 +1174 +1174 +1175 +1175 +1176 +1176 +1177 +1178 +1178 +1179 +1179 +1180 +1180 +1181 +1181 +1182 +1182 +1183 +1183 +1184 +1184 +1185 +1185 +1186 +1186 +1187 +1187 +1188 +1188 +1189 +1189 +1190 +1190 +1191 +1191 +1192 +1192 +1193 +1193 +1194 +1194 +1195 +1195 +1196 +1197 +1197 +1198 +1198 +1199 +1199 +1200 +1200 +1201 +1201 +1202 +1202 +1203 +1203 +1204 +1204 +1205 +1205 +1206 +1206 +1207 +1207 +1208 +1208 +1209 +1209 +1210 +1210 +1211 +1211 +1212 +1212 +1213 +1213 +1214 +1214 +1215 +1216 +1216 +1217 +1217 +1218 +1218 +1219 +1219 +1220 +1220 +1221 +1221 +1222 +1222 +1223 +1223 +1224 +1224 +1225 +1225 +1226 +1226 +1227 +1227 +1228 +1228 +1229 +1229 +1230 +1230 +1231 +1231 +1232 +1232 +1233 +1233 +1234 +1235 +1235 +1236 +1236 +1237 +1237 +1238 +1238 +1239 +1239 +1240 +1240 +1241 +1241 +1242 +1242 +1243 +1243 +1244 +1244 +1245 +1245 +1246 +1246 +1247 +1247 +1248 +1248 +1249 +1249 +1250 +1250 +1251 +1251 +1252 +1252 +1253 +1254 +1254 +1255 +1255 +1256 +1256 +1257 +1257 +1258 +1258 +1259 +1259 +1260 +1260 +1261 +1261 +1262 +1262 +1263 +1263 +1264 +1264 +1265 +1265 +1266 +1266 +1267 +1267 +1268 +1268 +1269 +1269 +1270 +1270 +1271 +1271 +1272 +1273 +1273 +1274 +1274 +1275 +1275 +1276 +1276 +1277 +1277 +1278 +1278 +1279 +1279 +1280 +1280 +1281 +1281 +1282 +1282 +1283 +1283 +1284 +1284 +1285 +1285 +1286 +1286 +1287 +1287 +1288 +1288 +1289 +1289 +1290 +1290 +1291 +1292 +1292 +1293 +1293 +1294 +1294 +1295 +1295 +1296 +1296 +1297 +1297 +1298 +1298 +1299 +1299 +1300 +1300 +1301 +1301 +1302 +1302 +1303 +1303 +1304 +1304 +1305 +1305 +1306 +1306 +1307 +1307 +1308 +1308 +1309 +1309 +1310 +1311 +1311 +1312 +1312 +1313 +1313 +1314 +1314 +1315 +1315 +1316 +1316 +1317 +1317 +1318 +1318 +1319 +1319 +1320 +1320 +1321 +1321 +1322 +1322 +1323 +1323 +1324 +1324 +1325 +1325 +1326 +1326 +1327 +1327 +1328 +1328 +1329 +1330 +1330 +1331 +1331 +1332 +1332 +1333 +1333 +1334 +1334 +1335 +1335 +1336 +1336 +1337 +1337 +1338 +1338 +1339 +1339 +1340 +1340 +1341 +1341 +1342 +1342 +1343 +1343 +1344 +1344 +1345 +1345 +1346 +1346 +1347 +1347 +1348 +1349 +1349 +1350 +1350 +1351 +1351 +1352 +1352 +1353 +1353 +1354 +1354 +1355 +1355 +1356 +1356 +1357 +1357 +1358 +1358 +1359 +1359 +1360 +1360 +1361 +1361 +1362 +1362 +1363 +1363 +1364 +1364 +1365 +1365 +1366 +1366 +1367 +1368 +1368 +1369 +1369 +1370 +1370 +1371 +1371 +1372 +1372 +1373 +1373 +1374 +1374 +1375 +1375 +1376 +1376 +1377 +1377 +1378 +1378 +1379 +1379 +1380 +1380 +1381 +1381 +1382 +1382 +1383 +1383 +1384 +1384 +1385 +1385 +1386 +1387 +1387 +1388 +1388 +1389 +1389 +1390 +1390 +1391 +1391 +1392 +1392 +1393 +1393 +1394 +1394 +1395 +1395 +1396 +1396 +1397 +1397 +1398 +1398 +1399 +1399 +1400 +1400 +1401 +1401 +1402 +1402 +1403 +1403 +1404 +1404 +1405 +1406 +1406 +1407 +1407 +1408 +1408 +1409 +1409 +1410 +1410 +1411 +1411 +1412 +1412 +1413 +1413 +1414 +1414 +1415 +1415 +1416 +1416 +1417 +1417 +1418 +1418 +1419 +1419 +1420 +1420 +1421 +1421 +1422 +1422 +1423 +1423 +1424 +1425 +1425 +1426 +1426 +1427 +1427 +1428 +1428 +1429 +1429 +1430 +1430 +1431 +1431 +1432 +1432 +1433 +1433 +1434 +1434 +1435 +1435 +1436 +1436 +1437 +1437 +1438 +1438 +1439 +1439 +1440 +1440 +1441 +1441 +1442 +1442 +1443 +1444 +1444 +1445 +1445 +1446 +1446 +1447 +1447 +1448 +1448 +1449 +1449 +1450 +1450 +1451 +1451 +1452 +1452 +1453 +1453 +1454 +1454 +1455 +1455 +1456 +1456 +1457 +1457 +1458 +1458 +1459 +1459 +1460 +1460 +1461 +1461 +1462 +1463 +1463 +1464 +1464 +1465 +1465 +1466 +1466 +1467 +1467 +1468 +1468 +1469 +1469 +1470 +1470 +1471 +1471 +1472 +1472 +1473 +1473 +1474 +1474 +1475 +1475 +1476 +1476 +1477 +1477 +1478 +1478 +1479 +1479 +1480 +1480 +1481 +1482 +1482 +1483 +1483 +1484 +1484 +1485 +1485 +1486 +1486 +1487 +1487 +1488 +1488 +1489 +1489 +1490 +1490 +1491 +1491 +1492 +1492 +1493 +1493 +1494 +1494 +1495 +1495 +1496 +1496 +1497 +1497 +1498 +1498 +1499 +1499 +1500 +1501 +1501 +1502 +1502 +1503 +1503 +1504 +1504 +1505 +1505 +1506 +1506 +1507 +1507 +1508 +1508 +1509 +1509 +1510 +1510 +1511 +1511 +1512 +1512 +1513 +1513 +1514 +1514 +1515 +1515 +1516 +1516 +1517 +1517 +1518 +1518 +1519 +1520 +1520 +1521 +1521 +1522 +1522 +1523 +1523 +1524 +1524 +1525 +1525 +1526 +1526 +1527 +1527 +1528 +1528 +1529 +1529 +1530 +1530 +1531 +1531 +1532 +1532 +1533 +1533 +1534 +1534 +1535 +1535 +1536 +1536 +1537 +1537 +1538 +1539 +1539 +1540 +1540 +1541 +1541 +1542 +1542 +1543 +1543 +1544 +1544 +1545 +1545 +1546 +1546 +1547 +1547 +1548 +1548 +1549 +1549 +1550 +1550 +1551 +1551 +1552 +1552 +1553 +1553 +1554 +1554 +1555 +1555 +1556 +1556 +1557 +1558 +1558 +1559 +1559 +1560 +1560 +1561 +1561 +1562 +1562 +1563 +1563 +1564 +1564 +1565 +1565 +1566 +1566 +1567 +1567 +1568 +1568 +1569 +1569 +1570 +1570 +1571 +1571 +1572 +1572 +1573 +1573 +1574 +1574 +1575 +1575 +1576 +1577 +1577 +1578 +1578 +1579 +1579 +1580 +1580 +1581 +1581 +1582 +1582 +1583 +1583 +1584 +1584 +1585 +1585 +1586 +1586 +1587 +1587 +1588 +1588 +1589 +1589 +1590 +1590 +1591 +1591 +1592 +1592 +1593 +1593 +1594 +1594 +1595 +1596 +1596 +1597 +1597 +1598 +1598 +1599 +1599 +1600 +1600 +1601 +1601 +1602 +1602 +1603 +1603 +1604 +1604 +1605 +1605 +1606 +1606 +1607 +1607 +1608 +1608 +1609 +1609 +1610 +1610 +1611 +1611 +1612 +1612 +1613 +1613 +1614 +1615 +1615 +1616 +1616 +1617 +1617 +1618 +1618 +1619 +1619 +1620 +1620 +1621 +1621 +1622 +1622 +1623 +1623 +1624 +1624 +1625 +1625 +1626 +1626 +1627 +1627 +1628 +1628 +1629 +1629 +1630 +1630 +1631 +1631 +1632 +1632 +1633 +1634 +1634 +1635 +1635 +1636 +1636 +1637 +1637 +1638 +1638 +1639 +1639 +1640 +1640 +1641 +1641 +1642 +1642 +1643 +1643 +1644 +1644 +1645 +1645 +1646 +1646 +1647 +1647 +1648 +1648 +1649 +1649 +1650 +1650 +1651 +1651 +1652 +1653 +1653 +1654 +1654 +1655 +1655 +1656 +1656 +1657 +1657 +1658 +1658 +1659 +1659 +1660 +1660 +1661 +1661 +1662 +1662 +1663 +1663 +1664 +1664 +1665 +1665 +1666 +1666 +1667 +1667 +1668 +1668 +1669 +1669 +1670 +1670 +1671 +1672 +1672 +1673 +1673 +1674 +1674 +1675 +1675 +1676 +1676 +1677 +1677 +1678 +1678 +1679 +1679 +1680 +1680 +1681 +1681 +1682 +1682 +1683 +1683 +1684 +1684 +1685 +1685 +1686 +1686 +1687 +1687 +1688 +1688 +1689 +1689 +1690 +1691 +1691 +1692 +1692 +1693 +1693 +1694 +1694 +1695 +1695 +1696 +1696 +1697 +1697 +1698 +1698 +1699 +1699 +1700 +1700 +1701 +1701 +1702 +1702 +1703 +1703 +1704 +1704 +1705 +1705 +1706 +1706 +1707 +1707 +1708 +1708 +1709 +1710 +1710 +1711 +1711 +1712 +1712 +1713 +1713 +1714 +1714 +1715 +1715 +1716 +1716 +1717 +1717 +1718 +1718 +1719 +1719 +1720 +1720 +1721 +1721 +1722 +1722 +1723 +1723 +1724 +1724 +1725 +1725 +1726 +1726 +1727 +1727 +1728 +1729 +1729 +1730 +1730 +1731 +1731 +1732 +1732 +1733 +1733 +1734 +1734 +1735 +1735 +1736 +1736 +1737 +1737 +1738 +1738 +1739 +1739 +1740 +1740 +1741 +1741 +1742 +1742 +1743 +1743 +1744 +1744 +1745 +1745 +1746 +1746 +1747 +1748 +1748 +1749 +1749 +1750 +1750 +1751 +1751 +1752 +1752 +1753 +1753 +1754 +1754 +1755 +1755 +1756 +1756 +1757 +1757 +1758 +1758 +1759 +1759 +1760 +1760 +1761 +1761 +1762 +1762 +1763 +1763 +1764 +1764 +1765 +1765 +1766 +1767 +1767 +1768 +1768 +1769 +1769 +1770 +1770 +1771 +1771 +1772 +1772 +1773 +1773 +1774 +1774 +1775 +1775 +1776 +1776 +1777 +1777 +1778 +1778 +1779 +1779 +1780 +1780 +1781 +1781 +1782 +1782 +1783 +1783 +1784 +1784 +1785 +1786 +1786 +1787 +1787 +1788 +1788 +1789 +1789 +1790 +1790 +1791 +1791 +1792 +1792 +1793 +1793 +1794 +1794 +1795 +1795 +1796 +1796 +1797 +1797 +1798 +1798 +1799 +1799 +1800 +1800 +1801 +1801 +1802 +1802 +1803 +1803 +1804 +1805 +1805 +1806 +1806 +1807 +1807 +1808 +1808 +1809 +1809 +1810 +1810 +1811 +1811 +1812 +1812 +1813 +1813 +1814 +1814 +1815 +1815 +1816 +1816 +1817 +1817 +1818 +1818 +1819 +1819 +1820 +1820 +1821 +1821 +1822 +1822 +1823 +1824 +1824 +1825 +1825 +1826 +1826 +1827 +1827 +1828 +1828 +1829 +1829 +1830 +1830 +1831 +1831 +1832 +1832 +1833 +1833 +1834 +1834 +1835 +1835 +1836 +1836 +1837 +1837 +1838 +1838 +1839 +1839 +1840 +1840 +1841 +1841 +1842 +1843 +1843 +1844 +1844 +1845 +1845 +1846 +1846 +1847 +1847 +1848 +1848 +1849 +1849 +1850 +1850 +1851 +1851 +1852 +1852 +1853 +1853 +1854 +1854 +1855 +1855 +1856 +1856 +1857 +1857 +1858 +1858 +1859 +1859 +1860 +1860 +1861 +1862 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +18 +37 +56 +75 +94 +113 +132 +151 +170 +189 +208 +227 +246 +265 +284 +303 +322 +341 +360 +379 +398 +417 +436 +455 +474 +493 +512 +531 +550 +569 +588 +607 +626 +645 +664 +683 +702 +721 +740 +759 +778 +797 +816 +835 +854 +873 +892 +911 +930 +949 +968 +987 +1006 +1025 +1044 +1063 +1082 +1101 +1120 +1139 +1158 +1177 +1196 +1215 +1234 +1253 +1272 +1291 +1310 +1329 +1348 +1367 +1386 +1405 +1424 +1443 +1462 +1481 +1500 +1519 +1538 +1557 +1576 +1595 +1614 +1633 +1652 +1671 +1690 +1709 +1728 +1747 +1766 +1785 +1804 +1823 +1842 +1861 +1880 +0 +19 +38 +57 +76 +95 +114 +133 +152 +171 +190 +209 +228 +247 +266 +285 +304 +323 +342 +361 +380 +399 +418 +437 +456 +475 +494 +513 +532 +551 +570 +589 +608 +627 +646 +665 +684 +703 +722 +741 +760 +779 +798 +817 +836 +855 +874 +893 +912 +931 +950 +969 +988 +1007 +1026 +1045 +1064 +1083 +1102 +1121 +1140 +1159 +1178 +1197 +1216 +1235 +1254 +1273 +1292 +1311 +1330 +1349 +1368 +1387 +1406 +1425 +1444 +1463 +1482 +1501 +1520 +1539 +1558 +1577 +1596 +1615 +1634 +1653 +1672 +1691 +1710 +1729 +1748 +1767 +1786 +1805 +1824 +1843 +1862 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +1862 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +1880 +0 +0 +1 +1 +2 +2 +3 +3 +4 +4 +5 +5 +6 +6 +7 +7 +8 +8 +9 +9 +10 +10 +11 +11 +12 +12 +13 +13 +14 +14 +15 +15 +16 +16 +17 +17 +18 +18 +19 +19 +20 +20 +21 +21 +22 +22 +23 +23 +24 +24 +25 +25 +26 +26 +27 +27 +28 +28 +29 +29 +30 +30 +31 +31 +32 +32 +33 +33 +34 +34 +35 +35 +36 +36 +37 +37 +38 +38 +39 +39 +40 +40 +41 +41 +42 +42 +43 +43 +44 +44 +45 +45 +46 +46 +47 +47 +48 +48 +49 +49 +50 +50 +51 +51 +52 +52 +53 +53 +54 +54 +55 +55 +56 +56 +57 +57 +58 +58 +59 +59 +60 +60 +61 +61 +62 +62 +63 +63 +64 +64 +65 +65 +66 +66 +67 +67 +68 +68 +69 +69 +70 +70 +71 +71 +72 +72 +73 +73 +74 +74 +75 +75 +76 +76 +77 +77 +78 +78 +79 +79 +80 +80 +81 +81 +82 +82 +83 +83 +84 +84 +85 +85 +86 +86 +87 +87 +88 +88 +89 +89 +90 +90 +91 +91 +92 +92 +93 +93 +94 +94 +95 +95 +96 +96 +97 +97 +98 +98 +99 +99 +100 +100 +101 +101 +102 +102 +103 +103 +104 +104 +105 +105 +106 +106 +107 +107 +108 +108 +109 +109 +110 +110 +111 +111 +112 +112 +113 +113 +114 +114 +115 +115 +116 +116 +117 +117 +118 +118 +119 +119 +120 +120 +121 +121 +122 +122 +123 +123 +124 +124 +125 +125 +126 +126 +127 +127 +128 +128 +129 +129 +130 +130 +131 +131 +132 +132 +133 +133 +134 +134 +135 +135 +136 +136 +137 +137 +138 +138 +139 +139 +140 +140 +141 +141 +142 +142 +143 +143 +144 +144 +145 +145 +146 +146 +147 +147 +148 +148 +149 +149 +150 +150 +151 +151 +152 +152 +153 +153 +154 +154 +155 +155 +156 +156 +157 +157 +158 +158 +159 +159 +160 +160 +161 +161 +162 +162 +163 +163 +164 +164 +165 +165 +166 +166 +167 +167 +168 +168 +169 +169 +170 +170 +171 +171 +172 +172 +173 +173 +174 +174 +175 +175 +176 +176 +177 +177 +178 +178 +179 +179 +180 +180 +181 +181 +182 +182 +183 +183 +184 +184 +185 +185 +186 +186 +187 +187 +188 +188 +189 +189 +190 +190 +191 +191 +192 +192 +193 +193 +194 +194 +195 +195 +196 +196 +197 +197 +198 +198 +199 +199 +200 +200 +201 +201 +202 +202 +203 +203 +204 +204 +205 +205 +206 +206 +207 +207 +208 +208 +209 +209 +210 +210 +211 +211 +212 +212 +213 +213 +214 +214 +215 +215 +216 +216 +217 +217 +218 +218 +219 +219 +220 +220 +221 +221 +222 +222 +223 +223 +224 +224 +225 +225 +226 +226 +227 +227 +228 +228 +229 +229 +230 +230 +231 +231 +232 +232 +233 +233 +234 +234 +235 +235 +236 +236 +237 +237 +238 +238 +239 +239 +240 +240 +241 +241 +242 +242 +243 +243 +244 +244 +245 +245 +246 +246 +247 +247 +248 +248 +249 +249 +250 +250 +251 +251 +252 +252 +253 +253 +254 +254 +255 +255 +256 +256 +257 +257 +258 +258 +259 +259 +260 +260 +261 +261 +262 +262 +263 +263 +264 +264 +265 +265 +266 +266 +267 +267 +268 +268 +269 +269 +270 +270 +271 +271 +272 +272 +273 +273 +274 +274 +275 +275 +276 +276 +277 +277 +278 +278 +279 +279 +280 +280 +281 +281 +282 +282 +283 +283 +284 +284 +285 +285 +286 +286 +287 +287 +288 +288 +289 +289 +290 +290 +291 +291 +292 +292 +293 +293 +294 +294 +295 +295 +296 +296 +297 +297 +298 +298 +299 +299 +300 +300 +301 +301 +302 +302 +303 +303 +304 +304 +305 +305 +306 +306 +307 +307 +308 +308 +309 +309 +310 +310 +311 +311 +312 +312 +313 +313 +314 +314 +315 +315 +316 +316 +317 +317 +318 +318 +319 +319 +320 +320 +321 +321 +322 +322 +323 +323 +324 +324 +325 +325 +326 +326 +327 +327 +328 +328 +329 +329 +330 +330 +331 +331 +332 +332 +333 +333 +334 +334 +335 +335 +336 +336 +337 +337 +338 +338 +339 +339 +340 +340 +341 +341 +342 +342 +343 +343 +344 +344 +345 +345 +346 +346 +347 +347 +348 +348 +349 +349 +350 +350 +351 +351 +352 +352 +353 +353 +354 +354 +355 +355 +356 +356 +357 +357 +358 +358 +359 +359 +360 +360 +361 +361 +362 +362 +363 +363 +364 +364 +365 +365 +366 +366 +367 +367 +368 +368 +369 +369 +370 +370 +371 +371 +372 +372 +373 +373 +374 +374 +375 +375 +376 +376 +377 +377 +378 +378 +379 +379 +380 +380 +381 +381 +382 +382 +383 +383 +384 +384 +385 +385 +386 +386 +387 +387 +388 +388 +389 +389 +390 +390 +391 +391 +392 +392 +393 +393 +394 +394 +395 +395 +396 +396 +397 +397 +398 +398 +399 +399 +400 +400 +401 +401 +402 +402 +403 +403 +404 +404 +405 +405 +406 +406 +407 +407 +408 +408 +409 +409 +410 +410 +411 +411 +412 +412 +413 +413 +414 +414 +415 +415 +416 +416 +417 +417 +418 +418 +419 +419 +420 +420 +421 +421 +422 +422 +423 +423 +424 +424 +425 +425 +426 +426 +427 +427 +428 +428 +429 +429 +430 +430 +431 +431 +432 +432 +433 +433 +434 +434 +435 +435 +436 +436 +437 +437 +438 +438 +439 +439 +440 +440 +441 +441 +442 +442 +443 +443 +444 +444 +445 +445 +446 +446 +447 +447 +448 +448 +449 +449 +450 +450 +451 +451 +452 +452 +453 +453 +454 +454 +455 +455 +456 +456 +457 +457 +458 +458 +459 +459 +460 +460 +461 +461 +462 +462 +463 +463 +464 +464 +465 +465 +466 +466 +467 +467 +468 +468 +469 +469 +470 +470 +471 +471 +472 +472 +473 +473 +474 +474 +475 +475 +476 +476 +477 +477 +478 +478 +479 +479 +480 +480 +481 +481 +482 +482 +483 +483 +484 +484 +485 +485 +486 +486 +487 +487 +488 +488 +489 +489 +490 +490 +491 +491 +492 +492 +493 +493 +494 +494 +495 +495 +496 +496 +497 +497 +498 +498 +499 +499 +500 +500 +501 +501 +502 +502 +503 +503 +504 +504 +505 +505 +506 +506 +507 +507 +508 +508 +509 +509 +510 +510 +511 +511 +512 +512 +513 +513 +514 +514 +515 +515 +516 +516 +517 +517 +518 +518 +519 +519 +520 +520 +521 +521 +522 +522 +523 +523 +524 +524 +525 +525 +526 +526 +527 +527 +528 +528 +529 +529 +530 +530 +531 +531 +532 +532 +533 +533 +534 +534 +535 +535 +536 +536 +537 +537 +538 +538 +539 +539 +540 +540 +541 +541 +542 +542 +543 +543 +544 +544 +545 +545 +546 +546 +547 +547 +548 +548 +549 +549 +550 +550 +551 +551 +552 +552 +553 +553 +554 +554 +555 +555 +556 +556 +557 +557 +558 +558 +559 +559 +560 +560 +561 +561 +562 +562 +563 +563 +564 +564 +565 +565 +566 +566 +567 +567 +568 +568 +569 +569 +570 +570 +571 +571 +572 +572 +573 +573 +574 +574 +575 +575 +576 +576 +577 +577 +578 +578 +579 +579 +580 +580 +581 +581 +582 +582 +583 +583 +584 +584 +585 +585 +586 +586 +587 +587 +588 +588 +589 +589 +590 +590 +591 +591 +592 +592 +593 +593 +594 +594 +595 +595 +596 +596 +597 +597 +598 +598 +599 +599 +600 +600 +601 +601 +602 +602 +603 +603 +604 +604 +605 +605 +606 +606 +607 +607 +608 +608 +609 +609 +610 +610 +611 +611 +612 +612 +613 +613 +614 +614 +615 +615 +616 +616 +617 +617 +618 +618 +619 +619 +620 +620 +621 +621 +622 +622 +623 +623 +624 +624 +625 +625 +626 +626 +627 +627 +628 +628 +629 +629 +630 +630 +631 +631 +632 +632 +633 +633 +634 +634 +635 +635 +636 +636 +637 +637 +638 +638 +639 +639 +640 +640 +641 +641 +642 +642 +643 +643 +644 +644 +645 +645 +646 +646 +647 +647 +648 +648 +649 +649 +650 +650 +651 +651 +652 +652 +653 +653 +654 +654 +655 +655 +656 +656 +657 +657 +658 +658 +659 +659 +660 +660 +661 +661 +662 +662 +663 +663 +664 +664 +665 +665 +666 +666 +667 +667 +668 +668 +669 +669 +670 +670 +671 +671 +672 +672 +673 +673 +674 +674 +675 +675 +676 +676 +677 +677 +678 +678 +679 +679 +680 +680 +681 +681 +682 +682 +683 +683 +684 +684 +685 +685 +686 +686 +687 +687 +688 +688 +689 +689 +690 +690 +691 +691 +692 +692 +693 +693 +694 +694 +695 +695 +696 +696 +697 +697 +698 +698 +699 +699 +700 +700 +701 +701 +702 +702 +703 +703 +704 +704 +705 +705 +706 +706 +707 +707 +708 +708 +709 +709 +710 +710 +711 +711 +712 +712 +713 +713 +714 +714 +715 +715 +716 +716 +717 +717 +718 +718 +719 +719 +720 +720 +721 +721 +722 +722 +723 +723 +724 +724 +725 +725 +726 +726 +727 +727 +728 +728 +729 +729 +730 +730 +731 +731 +732 +732 +733 +733 +734 +734 +735 +735 +736 +736 +737 +737 +738 +738 +739 +739 +740 +740 +741 +741 +742 +742 +743 +743 +744 +744 +745 +745 +746 +746 +747 +747 +748 +748 +749 +749 +750 +750 +751 +751 +752 +752 +753 +753 +754 +754 +755 +755 +756 +756 +757 +757 +758 +758 +759 +759 +760 +760 +761 +761 +762 +762 +763 +763 +764 +764 +765 +765 +766 +766 +767 +767 +768 +768 +769 +769 +770 +770 +771 +771 +772 +772 +773 +773 +774 +774 +775 +775 +776 +776 +777 +777 +778 +778 +779 +779 +780 +780 +781 +781 +782 +782 +783 +783 +784 +784 +785 +785 +786 +786 +787 +787 +788 +788 +789 +789 +790 +790 +791 +791 +792 +792 +793 +793 +794 +794 +795 +795 +796 +796 +797 +797 +798 +798 +799 +799 +800 +800 +801 +801 +802 +802 +803 +803 +804 +804 +805 +805 +806 +806 +807 +807 +808 +808 +809 +809 +810 +810 +811 +811 +812 +812 +813 +813 +814 +814 +815 +815 +816 +816 +817 +817 +818 +818 +819 +819 +820 +820 +821 +821 +822 +822 +823 +823 +824 +824 +825 +825 +826 +826 +827 +827 +828 +828 +829 +829 +830 +830 +831 +831 +832 +832 +833 +833 +834 +834 +835 +835 +836 +836 +837 +837 +838 +838 +839 +839 +840 +840 +841 +841 +842 +842 +843 +843 +844 +844 +845 +845 +846 +846 +847 +847 +848 +848 +849 +849 +850 +850 +851 +851 +852 +852 +853 +853 +854 +854 +855 +855 +856 +856 +857 +857 +858 +858 +859 +859 +860 +860 +861 +861 +862 +862 +863 +863 +864 +864 +865 +865 +866 +866 +867 +867 +868 +868 +869 +869 +870 +870 +871 +871 +872 +872 +873 +873 +874 +874 +875 +875 +876 +876 +877 +877 +878 +878 +879 +879 +880 +880 +881 +881 +882 +882 +883 +883 +884 +884 +885 +885 +886 +886 +887 +887 +888 +888 +889 +889 +890 +890 +891 +891 +892 +892 +893 +893 +894 +894 +895 +895 +896 +896 +897 +897 +898 +898 +899 +899 +900 +900 +901 +901 +902 +902 +903 +903 +904 +904 +905 +905 +906 +906 +907 +907 +908 +908 +909 +909 +910 +910 +911 +911 +912 +912 +913 +913 +914 +914 +915 +915 +916 +916 +917 +917 +918 +918 +919 +919 +920 +920 +921 +921 +922 +922 +923 +923 +924 +924 +925 +925 +926 +926 +927 +927 +928 +928 +929 +929 +930 +930 +931 +931 +932 +932 +933 +933 +934 +934 +935 +935 +936 +936 +937 +937 +938 +938 +939 +939 +940 +940 +941 +941 +942 +942 +943 +943 +944 +944 +945 +945 +946 +946 +947 +947 +948 +948 +949 +949 +950 +950 +951 +951 +952 +952 +953 +953 +954 +954 +955 +955 +956 +956 +957 +957 +958 +958 +959 +959 +960 +960 +961 +961 +962 +962 +963 +963 +964 +964 +965 +965 +966 +966 +967 +967 +968 +968 +969 +969 +970 +970 +971 +971 +972 +972 +973 +973 +974 +974 +975 +975 +976 +976 +977 +977 +978 +978 +979 +979 +980 +980 +981 +981 +982 +982 +983 +983 +984 +984 +985 +985 +986 +986 +987 +987 +988 +988 +989 +989 +990 +990 +991 +991 +992 +992 +993 +993 +994 +994 +995 +995 +996 +996 +997 +997 +998 +998 +999 +999 +1000 +1000 +1001 +1001 +1002 +1002 +1003 +1003 +1004 +1004 +1005 +1005 +1006 +1006 +1007 +1007 +1008 +1008 +1009 +1009 +1010 +1010 +1011 +1011 +1012 +1012 +1013 +1013 +1014 +1014 +1015 +1015 +1016 +1016 +1017 +1017 +1018 +1018 +1019 +1019 +1020 +1020 +1021 +1021 +1022 +1022 +1023 +1023 +1024 +1024 +1025 +1025 +1026 +1026 +1027 +1027 +1028 +1028 +1029 +1029 +1030 +1030 +1031 +1031 +1032 +1032 +1033 +1033 +1034 +1034 +1035 +1035 +1036 +1036 +1037 +1037 +1038 +1038 +1039 +1039 +1040 +1040 +1041 +1041 +1042 +1042 +1043 +1043 +1044 +1044 +1045 +1045 +1046 +1046 +1047 +1047 +1048 +1048 +1049 +1049 +1050 +1050 +1051 +1051 +1052 +1052 +1053 +1053 +1054 +1054 +1055 +1055 +1056 +1056 +1057 +1057 +1058 +1058 +1059 +1059 +1060 +1060 +1061 +1061 +1062 +1062 +1063 +1063 +1064 +1064 +1065 +1065 +1066 +1066 +1067 +1067 +1068 +1068 +1069 +1069 +1070 +1070 +1071 +1071 +1072 +1072 +1073 +1073 +1074 +1074 +1075 +1075 +1076 +1076 +1077 +1077 +1078 +1078 +1079 +1079 +1080 +1080 +1081 +1081 +1082 +1082 +1083 +1083 +1084 +1084 +1085 +1085 +1086 +1086 +1087 +1087 +1088 +1088 +1089 +1089 +1090 +1090 +1091 +1091 +1092 +1092 +1093 +1093 +1094 +1094 +1095 +1095 +1096 +1096 +1097 +1097 +1098 +1098 +1099 +1099 +1100 +1100 +1101 +1101 +1102 +1102 +1103 +1103 +1104 +1104 +1105 +1105 +1106 +1106 +1107 +1107 +1108 +1108 +1109 +1109 +1110 +1110 +1111 +1111 +1112 +1112 +1113 +1113 +1114 +1114 +1115 +1115 +1116 +1116 +1117 +1117 +1118 +1118 +1119 +1119 +1120 +1120 +1121 +1121 +1122 +1122 +1123 +1123 +1124 +1124 +1125 +1125 +1126 +1126 +1127 +1127 +1128 +1128 +1129 +1129 +1130 +1130 +1131 +1131 +1132 +1132 +1133 +1133 +1134 +1134 +1135 +1135 +1136 +1136 +1137 +1137 +1138 +1138 +1139 +1139 +1140 +1140 +1141 +1141 +1142 +1142 +1143 +1143 +1144 +1144 +1145 +1145 +1146 +1146 +1147 +1147 +1148 +1148 +1149 +1149 +1150 +1150 +1151 +1151 +1152 +1152 +1153 +1153 +1154 +1154 +1155 +1155 +1156 +1156 +1157 +1157 +1158 +1158 +1159 +1159 +1160 +1160 +1161 +1161 +1162 +1162 +1163 +1163 +1164 +1164 +1165 +1165 +1166 +1166 +1167 +1167 +1168 +1168 +1169 +1169 +1170 +1170 +1171 +1171 +1172 +1172 +1173 +1173 +1174 +1174 +1175 +1175 +1176 +1176 +1177 +1177 +1178 +1178 +1179 +1179 +1180 +1180 +1181 +1181 +1182 +1182 +1183 +1183 +1184 +1184 +1185 +1185 +1186 +1186 +1187 +1187 +1188 +1188 +1189 +1189 +1190 +1190 +1191 +1191 +1192 +1192 +1193 +1193 +1194 +1194 +1195 +1195 +1196 +1196 +1197 +1197 +1198 +1198 +1199 +1199 +1200 +1200 +1201 +1201 +1202 +1202 +1203 +1203 +1204 +1204 +1205 +1205 +1206 +1206 +1207 +1207 +1208 +1208 +1209 +1209 +1210 +1210 +1211 +1211 +1212 +1212 +1213 +1213 +1214 +1214 +1215 +1215 +1216 +1216 +1217 +1217 +1218 +1218 +1219 +1219 +1220 +1220 +1221 +1221 +1222 +1222 +1223 +1223 +1224 +1224 +1225 +1225 +1226 +1226 +1227 +1227 +1228 +1228 +1229 +1229 +1230 +1230 +1231 +1231 +1232 +1232 +1233 +1233 +1234 +1234 +1235 +1235 +1236 +1236 +1237 +1237 +1238 +1238 +1239 +1239 +1240 +1240 +1241 +1241 +1242 +1242 +1243 +1243 +1244 +1244 +1245 +1245 +1246 +1246 +1247 +1247 +1248 +1248 +1249 +1249 +1250 +1250 +1251 +1251 +1252 +1252 +1253 +1253 +1254 +1254 +1255 +1255 +1256 +1256 +1257 +1257 +1258 +1258 +1259 +1259 +1260 +1260 +1261 +1261 +1262 +1262 +1263 +1263 +1264 +1264 +1265 +1265 +1266 +1266 +1267 +1267 +1268 +1268 +1269 +1269 +1270 +1270 +1271 +1271 +1272 +1272 +1273 +1273 +1274 +1274 +1275 +1275 +1276 +1276 +1277 +1277 +1278 +1278 +1279 +1279 +1280 +1280 +1281 +1281 +1282 +1282 +1283 +1283 +1284 +1284 +1285 +1285 +1286 +1286 +1287 +1287 +1288 +1288 +1289 +1289 +1290 +1290 +1291 +1291 +1292 +1292 +1293 +1293 +1294 +1294 +1295 +1295 +1296 +1296 +1297 +1297 +1298 +1298 +1299 +1299 +1300 +1300 +1301 +1301 +1302 +1302 +1303 +1303 +1304 +1304 +1305 +1305 +1306 +1306 +1307 +1307 +1308 +1308 +1309 +1309 +1310 +1310 +1311 +1311 +1312 +1312 +1313 +1313 +1314 +1314 +1315 +1315 +1316 +1316 +1317 +1317 +1318 +1318 +1319 +1319 +1320 +1320 +1321 +1321 +1322 +1322 +1323 +1323 +1324 +1324 +1325 +1325 +1326 +1326 +1327 +1327 +1328 +1328 +1329 +1329 +1330 +1330 +1331 +1331 +1332 +1332 +1333 +1333 +1334 +1334 +1335 +1335 +1336 +1336 +1337 +1337 +1338 +1338 +1339 +1339 +1340 +1340 +1341 +1341 +1342 +1342 +1343 +1343 +1344 +1344 +1345 +1345 +1346 +1346 +1347 +1347 +1348 +1348 +1349 +1349 +1350 +1350 +1351 +1351 +1352 +1352 +1353 +1353 +1354 +1354 +1355 +1355 +1356 +1356 +1357 +1357 +1358 +1358 +1359 +1359 +1360 +1360 +1361 +1361 +1362 +1362 +1363 +1363 +1364 +1364 +1365 +1365 +1366 +1366 +1367 +1367 +1368 +1368 +1369 +1369 +1370 +1370 +1371 +1371 +1372 +1372 +1373 +1373 +1374 +1374 +1375 +1375 +1376 +1376 +1377 +1377 +1378 +1378 +1379 +1379 +1380 +1380 +1381 +1381 +1382 +1382 +1383 +1383 +1384 +1384 +1385 +1385 +1386 +1386 +1387 +1387 +1388 +1388 +1389 +1389 +1390 +1390 +1391 +1391 +1392 +1392 +1393 +1393 +1394 +1394 +1395 +1395 +1396 +1396 +1397 +1397 +1398 +1398 +1399 +1399 +1400 +1400 +1401 +1401 +1402 +1402 +1403 +1403 +1404 +1404 +1405 +1405 +1406 +1406 +1407 +1407 +1408 +1408 +1409 +1409 +1410 +1410 +1411 +1411 +1412 +1412 +1413 +1413 +1414 +1414 +1415 +1415 +1416 +1416 +1417 +1417 +1418 +1418 +1419 +1419 +1420 +1420 +1421 +1421 +1422 +1422 +1423 +1423 +1424 +1424 +1425 +1425 +1426 +1426 +1427 +1427 +1428 +1428 +1429 +1429 +1430 +1430 +1431 +1431 +1432 +1432 +1433 +1433 +1434 +1434 +1435 +1435 +1436 +1436 +1437 +1437 +1438 +1438 +1439 +1439 +1440 +1440 +1441 +1441 +1442 +1442 +1443 +1443 +1444 +1444 +1445 +1445 +1446 +1446 +1447 +1447 +1448 +1448 +1449 +1449 +1450 +1450 +1451 +1451 +1452 +1452 +1453 +1453 +1454 +1454 +1455 +1455 +1456 +1456 +1457 +1457 +1458 +1458 +1459 +1459 +1460 +1460 +1461 +1461 +1462 +1462 +1463 +1463 +1464 +1464 +1465 +1465 +1466 +1466 +1467 +1467 +1468 +1468 +1469 +1469 +1470 +1470 +1471 +1471 +1472 +1472 +1473 +1473 +1474 +1474 +1475 +1475 +1476 +1476 +1477 +1477 +1478 +1478 +1479 +1479 +1480 +1480 +1481 +1481 +1482 +1482 +1483 +1483 +1484 +1484 +1485 +1485 +1486 +1486 +1487 +1487 +1488 +1488 +1489 +1489 +1490 +1490 +1491 +1491 +1492 +1492 +1493 +1493 +1494 +1494 +1495 +1495 +1496 +1496 +1497 +1497 +1498 +1498 +1499 +1499 +1500 +1500 +1501 +1501 +1502 +1502 +1503 +1503 +1504 +1504 +1505 +1505 +1506 +1506 +1507 +1507 +1508 +1508 +1509 +1509 +1510 +1510 +1511 +1511 +1512 +1512 +1513 +1513 +1514 +1514 +1515 +1515 +1516 +1516 +1517 +1517 +1518 +1518 +1519 +1519 +1520 +1520 +1521 +1521 +1522 +1522 +1523 +1523 +1524 +1524 +1525 +1525 +1526 +1526 +1527 +1527 +1528 +1528 +1529 +1529 +1530 +1530 +1531 +1531 +1532 +1532 +1533 +1533 +1534 +1534 +1535 +1535 +1536 +1536 +1537 +1537 +1538 +1538 +1539 +1539 +1540 +1540 +1541 +1541 +1542 +1542 +1543 +1543 +1544 +1544 +1545 +1545 +1546 +1546 +1547 +1547 +1548 +1548 +1549 +1549 +1550 +1550 +1551 +1551 +1552 +1552 +1553 +1553 +1554 +1554 +1555 +1555 +1556 +1556 +1557 +1557 +1558 +1558 +1559 +1559 +1560 +1560 +1561 +1561 +1562 +1562 +1563 +1563 +1564 +1564 +1565 +1565 +1566 +1566 +1567 +1567 +1568 +1568 +1569 +1569 +1570 +1570 +1571 +1571 +1572 +1572 +1573 +1573 +1574 +1574 +1575 +1575 +1576 +1576 +1577 +1577 +1578 +1578 +1579 +1579 +1580 +1580 +1581 +1581 +1582 +1582 +1583 +1583 +1584 +1584 +1585 +1585 +1586 +1586 +1587 +1587 +1588 +1588 +1589 +1589 +1590 +1590 +1591 +1591 +1592 +1592 +1593 +1593 +1594 +1594 +1595 +1595 +1596 +1596 +1597 +1597 +1598 +1598 +1599 +1599 +1600 +1600 +1601 +1601 +1602 +1602 +1603 +1603 +1604 +1604 +1605 +1605 +1606 +1606 +1607 +1607 +1608 +1608 +1609 +1609 +1610 +1610 +1611 +1611 +1612 +1612 +1613 +1613 +1614 +1614 +1615 +1615 +1616 +1616 +1617 +1617 +1618 +1618 +1619 +1619 +1620 +1620 +1621 +1621 +1622 +1622 +1623 +1623 +1624 +1624 +1625 +1625 +1626 +1626 +1627 +1627 +1628 +1628 +1629 +1629 +1630 +1630 +1631 +1631 +1632 +1632 +1633 +1633 +1634 +1634 +1635 +1635 +1636 +1636 +1637 +1637 +1638 +1638 +1639 +1639 +1640 +1640 +1641 +1641 +1642 +1642 +1643 +1643 +1644 +1644 +1645 +1645 +1646 +1646 +1647 +1647 +1648 +1648 +1649 +1649 +1650 +1650 +1651 +1651 +1652 +1652 +1653 +1653 +1654 +1654 +1655 +1655 +1656 +1656 +1657 +1657 +1658 +1658 +1659 +1659 +1660 +1660 +1661 +1661 +1662 +1662 +1663 +1663 +1664 +1664 +1665 +1665 +1666 +1666 +1667 +1667 +1668 +1668 +1669 +1669 +1670 +1670 +1671 +1671 +1672 +1672 +1673 +1673 +1674 +1674 +1675 +1675 +1676 +1676 +1677 +1677 +1678 +1678 +1679 +1679 +1680 +1680 +1681 +1681 +1682 +1682 +1683 +1683 +1684 +1684 +1685 +1685 +1686 +1686 +1687 +1687 +1688 +1688 +1689 +1689 +1690 +1690 +1691 +1691 +1692 +1692 +1693 +1693 +1694 +1694 +1695 +1695 +1696 +1696 +1697 +1697 +1698 +1698 +1699 +1699 +1700 +1700 +1701 +1701 +1702 +1702 +1703 +1703 +1704 +1704 +1705 +1705 +1706 +1706 +1707 +1707 +1708 +1708 +1709 +1709 +1710 +1710 +1711 +1711 +1712 +1712 +1713 +1713 +1714 +1714 +1715 +1715 +1716 +1716 +1717 +1717 +1718 +1718 +1719 +1719 +1720 +1720 +1721 +1721 +1722 +1722 +1723 +1723 +1724 +1724 +1725 +1725 +1726 +1726 +1727 +1727 +1728 +1728 +1729 +1729 +1730 +1730 +1731 +1731 +1732 +1732 +1733 +1733 +1734 +1734 +1735 +1735 +1736 +1736 +1737 +1737 +1738 +1738 +1739 +1739 +1740 +1740 +1741 +1741 +1742 +1742 +1743 +1743 +1744 +1744 +1745 +1745 +1746 +1746 +1747 +1747 +1748 +1748 +1749 +1749 +1750 +1750 +1751 +1751 +1752 +1752 +1753 +1753 +1754 +1754 +1755 +1755 +1756 +1756 +1757 +1757 +1758 +1758 +1759 +1759 +1760 +1760 +1761 +1761 +1762 +1762 +1763 +1763 +1764 +1764 +1765 +1765 +1766 +1766 +1767 +1767 +1768 +1768 +1769 +1769 +1770 +1770 +1771 +1771 +1772 +1772 +1773 +1773 +1774 +1774 +1775 +1775 +1776 +1776 +1777 +1777 +1778 +1778 +1779 +1779 +1780 +1780 +1781 +1781 +1782 +1782 +1783 +1783 +1784 +1784 +1785 +1785 +1786 +1786 +1787 +1787 +1788 +1788 +1789 +1789 +1790 +1790 +1791 +1791 +1792 +1792 +1793 +1793 +1794 +1794 +1795 +1795 +1796 +1796 +1797 +1797 +1798 +1798 +1799 +1799 +1800 +1800 +1801 +1801 +1802 +1802 +1803 +1803 +1804 +1804 +1805 +1805 +1806 +1806 +1807 +1807 +1808 +1808 +1809 +1809 +1810 +1810 +1811 +1811 +1812 +1812 +1813 +1813 +1814 +1814 +1815 +1815 +1816 +1816 +1817 +1817 +1818 +1818 +1819 +1819 +1820 +1820 +1821 +1821 +1822 +1822 +1823 +1823 +1824 +1824 +1825 +1825 +1826 +1826 +1827 +1827 +1828 +1828 +1829 +1829 +1830 +1830 +1831 +1831 +1832 +1832 +1833 +1833 +1834 +1834 +1835 +1835 +1836 +1836 +1837 +1837 +1838 +1838 +1839 +1839 +1840 +1840 +1841 +1841 +1842 +1842 +1843 +1843 +1844 +1844 +1845 +1845 +1846 +1846 +1847 +1847 +1848 +1848 +1849 +1849 +1850 +1850 +1851 +1851 +1852 +1852 +1853 +1853 +1854 +1854 +1855 +1855 +1856 +1856 +1857 +1857 +1858 +1858 +1859 +1859 +1860 +1860 +1861 +1861 +1862 +1862 +1863 +1863 +1864 +1864 +1865 +1865 +1866 +1866 +1867 +1867 +1868 +1868 +1869 +1869 +1870 +1870 +1871 +1871 +1872 +1872 +1873 +1873 +1874 +1874 +1875 +1875 +1876 +1876 +1877 +1877 +1878 +1878 +1879 +1879 +1880 +1880 +) + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/pointZones b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/pointZones new file mode 100755 index 000000000..8730f1423 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/pointZones @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class regIOobject; + location "constant/polyMesh"; + object pointZones; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +0 +() + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/points b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/points new file mode 100755 index 000000000..dae0fb5e8 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/points @@ -0,0 +1,4024 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class vectorField; + location "constant/polyMesh"; + object points; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +4000 +( +(0 0 0.00050009999) +(0.005050505051 0 0.00050009999) +(0 2.5e-05 0.00050009999) +(0.005050505051 2.5e-05 0.00050009999) +(0 7.08119053e-05 0.00050009999) +(0.005050505051 7.08119053e-05 0.00050009999) +(0 0.00015426567 0.00050009999) +(0.005050505051 0.00015426567 0.00050009999) +(0 0.0003046635713 0.00050009999) +(0.005050505051 0.0003046635713 0.00050009999) +(0 0.0005705243934 0.00050009999) +(0.005050505051 0.0005705243934 0.00050009999) +(0 0.001024837958 0.00050009999) +(0.005050505051 0.001024837958 0.00050009999) +(0 0.001758019915 0.00050009999) +(0.005050505051 0.001758019915 0.00050009999) +(0 0.002838575912 0.00050009999) +(0.005050505051 0.002838575912 0.00050009999) +(0 0.004235474916 0.00050009999) +(0.005050505051 0.004235474916 0.00050009999) +(0 0.005764525084 0.00050009999) +(0.005050505051 0.005764525084 0.00050009999) +(0 0.007161424088 0.00050009999) +(0.005050505051 0.007161424088 0.00050009999) +(0 0.008241980085 0.00050009999) +(0.005050505051 0.008241980085 0.00050009999) +(0 0.008975162042 0.00050009999) +(0.005050505051 0.008975162042 0.00050009999) +(0 0.009429475607 0.00050009999) +(0.005050505051 0.009429475607 0.00050009999) +(0 0.009695336429 0.00050009999) +(0.005050505051 0.009695336429 0.00050009999) +(0 0.00984573433 0.00050009999) +(0.005050505051 0.00984573433 0.00050009999) +(0 0.009929188095 0.00050009999) +(0.005050505051 0.009929188095 0.00050009999) +(0 0.009975 0.00050009999) +(0.005050505051 0.009975 0.00050009999) +(0 0.01 0.00050009999) +(0.005050505051 0.01 0.00050009999) +(0.0101010101 0 0.00050009999) +(0.0101010101 2.5e-05 0.00050009999) +(0.0101010101 7.08119053e-05 0.00050009999) +(0.0101010101 0.00015426567 0.00050009999) +(0.0101010101 0.0003046635713 0.00050009999) +(0.0101010101 0.0005705243934 0.00050009999) +(0.0101010101 0.001024837958 0.00050009999) +(0.0101010101 0.001758019915 0.00050009999) +(0.0101010101 0.002838575912 0.00050009999) +(0.0101010101 0.004235474916 0.00050009999) +(0.0101010101 0.005764525084 0.00050009999) +(0.0101010101 0.007161424088 0.00050009999) +(0.0101010101 0.008241980085 0.00050009999) +(0.0101010101 0.008975162042 0.00050009999) +(0.0101010101 0.009429475607 0.00050009999) +(0.0101010101 0.009695336429 0.00050009999) +(0.0101010101 0.00984573433 0.00050009999) +(0.0101010101 0.009929188095 0.00050009999) +(0.0101010101 0.009975 0.00050009999) +(0.0101010101 0.01 0.00050009999) +(0.01515151515 0 0.00050009999) +(0.01515151515 2.5e-05 0.00050009999) +(0.01515151515 7.08119053e-05 0.00050009999) +(0.01515151515 0.00015426567 0.00050009999) +(0.01515151515 0.0003046635713 0.00050009999) +(0.01515151515 0.0005705243934 0.00050009999) +(0.01515151515 0.001024837958 0.00050009999) +(0.01515151515 0.001758019915 0.00050009999) +(0.01515151515 0.002838575912 0.00050009999) +(0.01515151515 0.004235474916 0.00050009999) +(0.01515151515 0.005764525084 0.00050009999) +(0.01515151515 0.007161424088 0.00050009999) +(0.01515151515 0.008241980085 0.00050009999) +(0.01515151515 0.008975162042 0.00050009999) +(0.01515151515 0.009429475607 0.00050009999) +(0.01515151515 0.009695336429 0.00050009999) +(0.01515151515 0.00984573433 0.00050009999) +(0.01515151515 0.009929188095 0.00050009999) +(0.01515151515 0.009975 0.00050009999) +(0.01515151515 0.01 0.00050009999) +(0.0202020202 0 0.00050009999) +(0.0202020202 2.5e-05 0.00050009999) +(0.0202020202 7.08119053e-05 0.00050009999) +(0.0202020202 0.00015426567 0.00050009999) +(0.0202020202 0.0003046635713 0.00050009999) +(0.0202020202 0.0005705243934 0.00050009999) +(0.0202020202 0.001024837958 0.00050009999) +(0.0202020202 0.001758019915 0.00050009999) +(0.0202020202 0.002838575912 0.00050009999) +(0.0202020202 0.004235474916 0.00050009999) +(0.0202020202 0.005764525084 0.00050009999) +(0.0202020202 0.007161424088 0.00050009999) +(0.0202020202 0.008241980085 0.00050009999) +(0.0202020202 0.008975162042 0.00050009999) +(0.0202020202 0.009429475607 0.00050009999) +(0.0202020202 0.009695336429 0.00050009999) +(0.0202020202 0.00984573433 0.00050009999) +(0.0202020202 0.009929188095 0.00050009999) +(0.0202020202 0.009975 0.00050009999) +(0.0202020202 0.01 0.00050009999) +(0.02525252525 0 0.00050009999) +(0.02525252525 2.5e-05 0.00050009999) +(0.02525252525 7.08119053e-05 0.00050009999) +(0.02525252525 0.00015426567 0.00050009999) +(0.02525252525 0.0003046635713 0.00050009999) +(0.02525252525 0.0005705243934 0.00050009999) +(0.02525252525 0.001024837958 0.00050009999) +(0.02525252525 0.001758019915 0.00050009999) +(0.02525252525 0.002838575912 0.00050009999) +(0.02525252525 0.004235474916 0.00050009999) +(0.02525252525 0.005764525084 0.00050009999) +(0.02525252525 0.007161424088 0.00050009999) +(0.02525252525 0.008241980085 0.00050009999) +(0.02525252525 0.008975162042 0.00050009999) +(0.02525252525 0.009429475607 0.00050009999) +(0.02525252525 0.009695336429 0.00050009999) +(0.02525252525 0.00984573433 0.00050009999) +(0.02525252525 0.009929188095 0.00050009999) +(0.02525252525 0.009975 0.00050009999) +(0.02525252525 0.01 0.00050009999) +(0.0303030303 0 0.00050009999) +(0.0303030303 2.5e-05 0.00050009999) +(0.0303030303 7.08119053e-05 0.00050009999) +(0.0303030303 0.00015426567 0.00050009999) +(0.0303030303 0.0003046635713 0.00050009999) +(0.0303030303 0.0005705243934 0.00050009999) +(0.0303030303 0.001024837958 0.00050009999) +(0.0303030303 0.001758019915 0.00050009999) +(0.0303030303 0.002838575912 0.00050009999) +(0.0303030303 0.004235474916 0.00050009999) +(0.0303030303 0.005764525084 0.00050009999) +(0.0303030303 0.007161424088 0.00050009999) +(0.0303030303 0.008241980085 0.00050009999) +(0.0303030303 0.008975162042 0.00050009999) +(0.0303030303 0.009429475607 0.00050009999) +(0.0303030303 0.009695336429 0.00050009999) +(0.0303030303 0.00984573433 0.00050009999) +(0.0303030303 0.009929188095 0.00050009999) +(0.0303030303 0.009975 0.00050009999) +(0.0303030303 0.01 0.00050009999) +(0.03535353535 0 0.00050009999) +(0.03535353535 2.5e-05 0.00050009999) +(0.03535353535 7.08119053e-05 0.00050009999) +(0.03535353535 0.00015426567 0.00050009999) +(0.03535353535 0.0003046635713 0.00050009999) +(0.03535353535 0.0005705243934 0.00050009999) +(0.03535353535 0.001024837958 0.00050009999) +(0.03535353535 0.001758019915 0.00050009999) +(0.03535353535 0.002838575912 0.00050009999) +(0.03535353535 0.004235474916 0.00050009999) +(0.03535353535 0.005764525084 0.00050009999) +(0.03535353535 0.007161424088 0.00050009999) +(0.03535353535 0.008241980085 0.00050009999) +(0.03535353535 0.008975162042 0.00050009999) +(0.03535353535 0.009429475607 0.00050009999) +(0.03535353535 0.009695336429 0.00050009999) +(0.03535353535 0.00984573433 0.00050009999) +(0.03535353535 0.009929188095 0.00050009999) +(0.03535353535 0.009975 0.00050009999) +(0.03535353535 0.01 0.00050009999) +(0.0404040404 0 0.00050009999) +(0.0404040404 2.5e-05 0.00050009999) +(0.0404040404 7.08119053e-05 0.00050009999) +(0.0404040404 0.00015426567 0.00050009999) +(0.0404040404 0.0003046635713 0.00050009999) +(0.0404040404 0.0005705243934 0.00050009999) +(0.0404040404 0.001024837958 0.00050009999) +(0.0404040404 0.001758019915 0.00050009999) +(0.0404040404 0.002838575912 0.00050009999) +(0.0404040404 0.004235474916 0.00050009999) +(0.0404040404 0.005764525084 0.00050009999) +(0.0404040404 0.007161424088 0.00050009999) +(0.0404040404 0.008241980085 0.00050009999) +(0.0404040404 0.008975162042 0.00050009999) +(0.0404040404 0.009429475607 0.00050009999) +(0.0404040404 0.009695336429 0.00050009999) +(0.0404040404 0.00984573433 0.00050009999) +(0.0404040404 0.009929188095 0.00050009999) +(0.0404040404 0.009975 0.00050009999) +(0.0404040404 0.01 0.00050009999) +(0.04545454545 0 0.00050009999) +(0.04545454545 2.5e-05 0.00050009999) +(0.04545454545 7.08119053e-05 0.00050009999) +(0.04545454545 0.00015426567 0.00050009999) +(0.04545454545 0.0003046635713 0.00050009999) +(0.04545454545 0.0005705243934 0.00050009999) +(0.04545454545 0.001024837958 0.00050009999) +(0.04545454545 0.001758019915 0.00050009999) +(0.04545454545 0.002838575912 0.00050009999) +(0.04545454545 0.004235474916 0.00050009999) +(0.04545454545 0.005764525084 0.00050009999) +(0.04545454545 0.007161424088 0.00050009999) +(0.04545454545 0.008241980085 0.00050009999) +(0.04545454545 0.008975162042 0.00050009999) +(0.04545454545 0.009429475607 0.00050009999) +(0.04545454545 0.009695336429 0.00050009999) +(0.04545454545 0.00984573433 0.00050009999) +(0.04545454545 0.009929188095 0.00050009999) +(0.04545454545 0.009975 0.00050009999) +(0.04545454545 0.01 0.00050009999) +(0.05050505051 0 0.00050009999) +(0.05050505051 2.5e-05 0.00050009999) +(0.05050505051 7.08119053e-05 0.00050009999) +(0.05050505051 0.00015426567 0.00050009999) +(0.05050505051 0.0003046635713 0.00050009999) +(0.05050505051 0.0005705243934 0.00050009999) +(0.05050505051 0.001024837958 0.00050009999) +(0.05050505051 0.001758019915 0.00050009999) +(0.05050505051 0.002838575912 0.00050009999) +(0.05050505051 0.004235474916 0.00050009999) +(0.05050505051 0.005764525084 0.00050009999) +(0.05050505051 0.007161424088 0.00050009999) +(0.05050505051 0.008241980085 0.00050009999) +(0.05050505051 0.008975162042 0.00050009999) +(0.05050505051 0.009429475607 0.00050009999) +(0.05050505051 0.009695336429 0.00050009999) +(0.05050505051 0.00984573433 0.00050009999) +(0.05050505051 0.009929188095 0.00050009999) +(0.05050505051 0.009975 0.00050009999) +(0.05050505051 0.01 0.00050009999) +(0.05555555556 0 0.00050009999) +(0.05555555556 2.5e-05 0.00050009999) +(0.05555555556 7.08119053e-05 0.00050009999) +(0.05555555556 0.00015426567 0.00050009999) +(0.05555555556 0.0003046635713 0.00050009999) +(0.05555555556 0.0005705243934 0.00050009999) +(0.05555555556 0.001024837958 0.00050009999) +(0.05555555556 0.001758019915 0.00050009999) +(0.05555555556 0.002838575912 0.00050009999) +(0.05555555556 0.004235474916 0.00050009999) +(0.05555555556 0.005764525084 0.00050009999) +(0.05555555556 0.007161424088 0.00050009999) +(0.05555555556 0.008241980085 0.00050009999) +(0.05555555556 0.008975162042 0.00050009999) +(0.05555555556 0.009429475607 0.00050009999) +(0.05555555556 0.009695336429 0.00050009999) +(0.05555555556 0.00984573433 0.00050009999) +(0.05555555556 0.009929188095 0.00050009999) +(0.05555555556 0.009975 0.00050009999) +(0.05555555556 0.01 0.00050009999) +(0.06060606061 0 0.00050009999) +(0.06060606061 2.5e-05 0.00050009999) +(0.06060606061 7.08119053e-05 0.00050009999) +(0.06060606061 0.00015426567 0.00050009999) +(0.06060606061 0.0003046635713 0.00050009999) +(0.06060606061 0.0005705243934 0.00050009999) +(0.06060606061 0.001024837958 0.00050009999) +(0.06060606061 0.001758019915 0.00050009999) +(0.06060606061 0.002838575912 0.00050009999) +(0.06060606061 0.004235474916 0.00050009999) +(0.06060606061 0.005764525084 0.00050009999) +(0.06060606061 0.007161424088 0.00050009999) +(0.06060606061 0.008241980085 0.00050009999) +(0.06060606061 0.008975162042 0.00050009999) +(0.06060606061 0.009429475607 0.00050009999) +(0.06060606061 0.009695336429 0.00050009999) +(0.06060606061 0.00984573433 0.00050009999) +(0.06060606061 0.009929188095 0.00050009999) +(0.06060606061 0.009975 0.00050009999) +(0.06060606061 0.01 0.00050009999) +(0.06565656566 0 0.00050009999) +(0.06565656566 2.5e-05 0.00050009999) +(0.06565656566 7.08119053e-05 0.00050009999) +(0.06565656566 0.00015426567 0.00050009999) +(0.06565656566 0.0003046635713 0.00050009999) +(0.06565656566 0.0005705243934 0.00050009999) +(0.06565656566 0.001024837958 0.00050009999) +(0.06565656566 0.001758019915 0.00050009999) +(0.06565656566 0.002838575912 0.00050009999) +(0.06565656566 0.004235474916 0.00050009999) +(0.06565656566 0.005764525084 0.00050009999) +(0.06565656566 0.007161424088 0.00050009999) +(0.06565656566 0.008241980085 0.00050009999) +(0.06565656566 0.008975162042 0.00050009999) +(0.06565656566 0.009429475607 0.00050009999) +(0.06565656566 0.009695336429 0.00050009999) +(0.06565656566 0.00984573433 0.00050009999) +(0.06565656566 0.009929188095 0.00050009999) +(0.06565656566 0.009975 0.00050009999) +(0.06565656566 0.01 0.00050009999) +(0.07070707071 0 0.00050009999) +(0.07070707071 2.5e-05 0.00050009999) +(0.07070707071 7.08119053e-05 0.00050009999) +(0.07070707071 0.00015426567 0.00050009999) +(0.07070707071 0.0003046635713 0.00050009999) +(0.07070707071 0.0005705243934 0.00050009999) +(0.07070707071 0.001024837958 0.00050009999) +(0.07070707071 0.001758019915 0.00050009999) +(0.07070707071 0.002838575912 0.00050009999) +(0.07070707071 0.004235474916 0.00050009999) +(0.07070707071 0.005764525084 0.00050009999) +(0.07070707071 0.007161424088 0.00050009999) +(0.07070707071 0.008241980085 0.00050009999) +(0.07070707071 0.008975162042 0.00050009999) +(0.07070707071 0.009429475607 0.00050009999) +(0.07070707071 0.009695336429 0.00050009999) +(0.07070707071 0.00984573433 0.00050009999) +(0.07070707071 0.009929188095 0.00050009999) +(0.07070707071 0.009975 0.00050009999) +(0.07070707071 0.01 0.00050009999) +(0.07575757576 0 0.00050009999) +(0.07575757576 2.5e-05 0.00050009999) +(0.07575757576 7.08119053e-05 0.00050009999) +(0.07575757576 0.00015426567 0.00050009999) +(0.07575757576 0.0003046635713 0.00050009999) +(0.07575757576 0.0005705243934 0.00050009999) +(0.07575757576 0.001024837958 0.00050009999) +(0.07575757576 0.001758019915 0.00050009999) +(0.07575757576 0.002838575912 0.00050009999) +(0.07575757576 0.004235474916 0.00050009999) +(0.07575757576 0.005764525084 0.00050009999) +(0.07575757576 0.007161424088 0.00050009999) +(0.07575757576 0.008241980085 0.00050009999) +(0.07575757576 0.008975162042 0.00050009999) +(0.07575757576 0.009429475607 0.00050009999) +(0.07575757576 0.009695336429 0.00050009999) +(0.07575757576 0.00984573433 0.00050009999) +(0.07575757576 0.009929188095 0.00050009999) +(0.07575757576 0.009975 0.00050009999) +(0.07575757576 0.01 0.00050009999) +(0.08080808081 0 0.00050009999) +(0.08080808081 2.5e-05 0.00050009999) +(0.08080808081 7.08119053e-05 0.00050009999) +(0.08080808081 0.00015426567 0.00050009999) +(0.08080808081 0.0003046635713 0.00050009999) +(0.08080808081 0.0005705243934 0.00050009999) +(0.08080808081 0.001024837958 0.00050009999) +(0.08080808081 0.001758019915 0.00050009999) +(0.08080808081 0.002838575912 0.00050009999) +(0.08080808081 0.004235474916 0.00050009999) +(0.08080808081 0.005764525084 0.00050009999) +(0.08080808081 0.007161424088 0.00050009999) +(0.08080808081 0.008241980085 0.00050009999) +(0.08080808081 0.008975162042 0.00050009999) +(0.08080808081 0.009429475607 0.00050009999) +(0.08080808081 0.009695336429 0.00050009999) +(0.08080808081 0.00984573433 0.00050009999) +(0.08080808081 0.009929188095 0.00050009999) +(0.08080808081 0.009975 0.00050009999) +(0.08080808081 0.01 0.00050009999) +(0.08585858586 0 0.00050009999) +(0.08585858586 2.5e-05 0.00050009999) +(0.08585858586 7.08119053e-05 0.00050009999) +(0.08585858586 0.00015426567 0.00050009999) +(0.08585858586 0.0003046635713 0.00050009999) +(0.08585858586 0.0005705243934 0.00050009999) +(0.08585858586 0.001024837958 0.00050009999) +(0.08585858586 0.001758019915 0.00050009999) +(0.08585858586 0.002838575912 0.00050009999) +(0.08585858586 0.004235474916 0.00050009999) +(0.08585858586 0.005764525084 0.00050009999) +(0.08585858586 0.007161424088 0.00050009999) +(0.08585858586 0.008241980085 0.00050009999) +(0.08585858586 0.008975162042 0.00050009999) +(0.08585858586 0.009429475607 0.00050009999) +(0.08585858586 0.009695336429 0.00050009999) +(0.08585858586 0.00984573433 0.00050009999) +(0.08585858586 0.009929188095 0.00050009999) +(0.08585858586 0.009975 0.00050009999) +(0.08585858586 0.01 0.00050009999) +(0.09090909091 0 0.00050009999) +(0.09090909091 2.5e-05 0.00050009999) +(0.09090909091 7.08119053e-05 0.00050009999) +(0.09090909091 0.00015426567 0.00050009999) +(0.09090909091 0.0003046635713 0.00050009999) +(0.09090909091 0.0005705243934 0.00050009999) +(0.09090909091 0.001024837958 0.00050009999) +(0.09090909091 0.001758019915 0.00050009999) +(0.09090909091 0.002838575912 0.00050009999) +(0.09090909091 0.004235474916 0.00050009999) +(0.09090909091 0.005764525084 0.00050009999) +(0.09090909091 0.007161424088 0.00050009999) +(0.09090909091 0.008241980085 0.00050009999) +(0.09090909091 0.008975162042 0.00050009999) +(0.09090909091 0.009429475607 0.00050009999) +(0.09090909091 0.009695336429 0.00050009999) +(0.09090909091 0.00984573433 0.00050009999) +(0.09090909091 0.009929188095 0.00050009999) +(0.09090909091 0.009975 0.00050009999) +(0.09090909091 0.01 0.00050009999) +(0.09595959596 0 0.00050009999) +(0.09595959596 2.5e-05 0.00050009999) +(0.09595959596 7.08119053e-05 0.00050009999) +(0.09595959596 0.00015426567 0.00050009999) +(0.09595959596 0.0003046635713 0.00050009999) +(0.09595959596 0.0005705243934 0.00050009999) +(0.09595959596 0.001024837958 0.00050009999) +(0.09595959596 0.001758019915 0.00050009999) +(0.09595959596 0.002838575912 0.00050009999) +(0.09595959596 0.004235474916 0.00050009999) +(0.09595959596 0.005764525084 0.00050009999) +(0.09595959596 0.007161424088 0.00050009999) +(0.09595959596 0.008241980085 0.00050009999) +(0.09595959596 0.008975162042 0.00050009999) +(0.09595959596 0.009429475607 0.00050009999) +(0.09595959596 0.009695336429 0.00050009999) +(0.09595959596 0.00984573433 0.00050009999) +(0.09595959596 0.009929188095 0.00050009999) +(0.09595959596 0.009975 0.00050009999) +(0.09595959596 0.01 0.00050009999) +(0.101010101 0 0.00050009999) +(0.101010101 2.5e-05 0.00050009999) +(0.101010101 7.08119053e-05 0.00050009999) +(0.101010101 0.00015426567 0.00050009999) +(0.101010101 0.0003046635713 0.00050009999) +(0.101010101 0.0005705243934 0.00050009999) +(0.101010101 0.001024837958 0.00050009999) +(0.101010101 0.001758019915 0.00050009999) +(0.101010101 0.002838575912 0.00050009999) +(0.101010101 0.004235474916 0.00050009999) +(0.101010101 0.005764525084 0.00050009999) +(0.101010101 0.007161424088 0.00050009999) +(0.101010101 0.008241980085 0.00050009999) +(0.101010101 0.008975162042 0.00050009999) +(0.101010101 0.009429475607 0.00050009999) +(0.101010101 0.009695336429 0.00050009999) +(0.101010101 0.00984573433 0.00050009999) +(0.101010101 0.009929188095 0.00050009999) +(0.101010101 0.009975 0.00050009999) +(0.101010101 0.01 0.00050009999) +(0.1060606061 0 0.00050009999) +(0.1060606061 2.5e-05 0.00050009999) +(0.1060606061 7.08119053e-05 0.00050009999) +(0.1060606061 0.00015426567 0.00050009999) +(0.1060606061 0.0003046635713 0.00050009999) +(0.1060606061 0.0005705243934 0.00050009999) +(0.1060606061 0.001024837958 0.00050009999) +(0.1060606061 0.001758019915 0.00050009999) +(0.1060606061 0.002838575912 0.00050009999) +(0.1060606061 0.004235474916 0.00050009999) +(0.1060606061 0.005764525084 0.00050009999) +(0.1060606061 0.007161424088 0.00050009999) +(0.1060606061 0.008241980085 0.00050009999) +(0.1060606061 0.008975162042 0.00050009999) +(0.1060606061 0.009429475607 0.00050009999) +(0.1060606061 0.009695336429 0.00050009999) +(0.1060606061 0.00984573433 0.00050009999) +(0.1060606061 0.009929188095 0.00050009999) +(0.1060606061 0.009975 0.00050009999) +(0.1060606061 0.01 0.00050009999) +(0.1111111111 0 0.00050009999) +(0.1111111111 2.5e-05 0.00050009999) +(0.1111111111 7.08119053e-05 0.00050009999) +(0.1111111111 0.00015426567 0.00050009999) +(0.1111111111 0.0003046635713 0.00050009999) +(0.1111111111 0.0005705243934 0.00050009999) +(0.1111111111 0.001024837958 0.00050009999) +(0.1111111111 0.001758019915 0.00050009999) +(0.1111111111 0.002838575912 0.00050009999) +(0.1111111111 0.004235474916 0.00050009999) +(0.1111111111 0.005764525084 0.00050009999) +(0.1111111111 0.007161424088 0.00050009999) +(0.1111111111 0.008241980085 0.00050009999) +(0.1111111111 0.008975162042 0.00050009999) +(0.1111111111 0.009429475607 0.00050009999) +(0.1111111111 0.009695336429 0.00050009999) +(0.1111111111 0.00984573433 0.00050009999) +(0.1111111111 0.009929188095 0.00050009999) +(0.1111111111 0.009975 0.00050009999) +(0.1111111111 0.01 0.00050009999) +(0.1161616162 0 0.00050009999) +(0.1161616162 2.5e-05 0.00050009999) +(0.1161616162 7.08119053e-05 0.00050009999) +(0.1161616162 0.00015426567 0.00050009999) +(0.1161616162 0.0003046635713 0.00050009999) +(0.1161616162 0.0005705243934 0.00050009999) +(0.1161616162 0.001024837958 0.00050009999) +(0.1161616162 0.001758019915 0.00050009999) +(0.1161616162 0.002838575912 0.00050009999) +(0.1161616162 0.004235474916 0.00050009999) +(0.1161616162 0.005764525084 0.00050009999) +(0.1161616162 0.007161424088 0.00050009999) +(0.1161616162 0.008241980085 0.00050009999) +(0.1161616162 0.008975162042 0.00050009999) +(0.1161616162 0.009429475607 0.00050009999) +(0.1161616162 0.009695336429 0.00050009999) +(0.1161616162 0.00984573433 0.00050009999) +(0.1161616162 0.009929188095 0.00050009999) +(0.1161616162 0.009975 0.00050009999) +(0.1161616162 0.01 0.00050009999) +(0.1212121212 0 0.00050009999) +(0.1212121212 2.5e-05 0.00050009999) +(0.1212121212 7.08119053e-05 0.00050009999) +(0.1212121212 0.00015426567 0.00050009999) +(0.1212121212 0.0003046635713 0.00050009999) +(0.1212121212 0.0005705243934 0.00050009999) +(0.1212121212 0.001024837958 0.00050009999) +(0.1212121212 0.001758019915 0.00050009999) +(0.1212121212 0.002838575912 0.00050009999) +(0.1212121212 0.004235474916 0.00050009999) +(0.1212121212 0.005764525084 0.00050009999) +(0.1212121212 0.007161424088 0.00050009999) +(0.1212121212 0.008241980085 0.00050009999) +(0.1212121212 0.008975162042 0.00050009999) +(0.1212121212 0.009429475607 0.00050009999) +(0.1212121212 0.009695336429 0.00050009999) +(0.1212121212 0.00984573433 0.00050009999) +(0.1212121212 0.009929188095 0.00050009999) +(0.1212121212 0.009975 0.00050009999) +(0.1212121212 0.01 0.00050009999) +(0.1262626263 0 0.00050009999) +(0.1262626263 2.5e-05 0.00050009999) +(0.1262626263 7.08119053e-05 0.00050009999) +(0.1262626263 0.00015426567 0.00050009999) +(0.1262626263 0.0003046635713 0.00050009999) +(0.1262626263 0.0005705243934 0.00050009999) +(0.1262626263 0.001024837958 0.00050009999) +(0.1262626263 0.001758019915 0.00050009999) +(0.1262626263 0.002838575912 0.00050009999) +(0.1262626263 0.004235474916 0.00050009999) +(0.1262626263 0.005764525084 0.00050009999) +(0.1262626263 0.007161424088 0.00050009999) +(0.1262626263 0.008241980085 0.00050009999) +(0.1262626263 0.008975162042 0.00050009999) +(0.1262626263 0.009429475607 0.00050009999) +(0.1262626263 0.009695336429 0.00050009999) +(0.1262626263 0.00984573433 0.00050009999) +(0.1262626263 0.009929188095 0.00050009999) +(0.1262626263 0.009975 0.00050009999) +(0.1262626263 0.01 0.00050009999) +(0.1313131313 0 0.00050009999) +(0.1313131313 2.5e-05 0.00050009999) +(0.1313131313 7.08119053e-05 0.00050009999) +(0.1313131313 0.00015426567 0.00050009999) +(0.1313131313 0.0003046635713 0.00050009999) +(0.1313131313 0.0005705243934 0.00050009999) +(0.1313131313 0.001024837958 0.00050009999) +(0.1313131313 0.001758019915 0.00050009999) +(0.1313131313 0.002838575912 0.00050009999) +(0.1313131313 0.004235474916 0.00050009999) +(0.1313131313 0.005764525084 0.00050009999) +(0.1313131313 0.007161424088 0.00050009999) +(0.1313131313 0.008241980085 0.00050009999) +(0.1313131313 0.008975162042 0.00050009999) +(0.1313131313 0.009429475607 0.00050009999) +(0.1313131313 0.009695336429 0.00050009999) +(0.1313131313 0.00984573433 0.00050009999) +(0.1313131313 0.009929188095 0.00050009999) +(0.1313131313 0.009975 0.00050009999) +(0.1313131313 0.01 0.00050009999) +(0.1363636364 0 0.00050009999) +(0.1363636364 2.5e-05 0.00050009999) +(0.1363636364 7.08119053e-05 0.00050009999) +(0.1363636364 0.00015426567 0.00050009999) +(0.1363636364 0.0003046635713 0.00050009999) +(0.1363636364 0.0005705243934 0.00050009999) +(0.1363636364 0.001024837958 0.00050009999) +(0.1363636364 0.001758019915 0.00050009999) +(0.1363636364 0.002838575912 0.00050009999) +(0.1363636364 0.004235474916 0.00050009999) +(0.1363636364 0.005764525084 0.00050009999) +(0.1363636364 0.007161424088 0.00050009999) +(0.1363636364 0.008241980085 0.00050009999) +(0.1363636364 0.008975162042 0.00050009999) +(0.1363636364 0.009429475607 0.00050009999) +(0.1363636364 0.009695336429 0.00050009999) +(0.1363636364 0.00984573433 0.00050009999) +(0.1363636364 0.009929188095 0.00050009999) +(0.1363636364 0.009975 0.00050009999) +(0.1363636364 0.01 0.00050009999) +(0.1414141414 0 0.00050009999) +(0.1414141414 2.5e-05 0.00050009999) +(0.1414141414 7.08119053e-05 0.00050009999) +(0.1414141414 0.00015426567 0.00050009999) +(0.1414141414 0.0003046635713 0.00050009999) +(0.1414141414 0.0005705243934 0.00050009999) +(0.1414141414 0.001024837958 0.00050009999) +(0.1414141414 0.001758019915 0.00050009999) +(0.1414141414 0.002838575912 0.00050009999) +(0.1414141414 0.004235474916 0.00050009999) +(0.1414141414 0.005764525084 0.00050009999) +(0.1414141414 0.007161424088 0.00050009999) +(0.1414141414 0.008241980085 0.00050009999) +(0.1414141414 0.008975162042 0.00050009999) +(0.1414141414 0.009429475607 0.00050009999) +(0.1414141414 0.009695336429 0.00050009999) +(0.1414141414 0.00984573433 0.00050009999) +(0.1414141414 0.009929188095 0.00050009999) +(0.1414141414 0.009975 0.00050009999) +(0.1414141414 0.01 0.00050009999) +(0.1464646465 0 0.00050009999) +(0.1464646465 2.5e-05 0.00050009999) +(0.1464646465 7.08119053e-05 0.00050009999) +(0.1464646465 0.00015426567 0.00050009999) +(0.1464646465 0.0003046635713 0.00050009999) +(0.1464646465 0.0005705243934 0.00050009999) +(0.1464646465 0.001024837958 0.00050009999) +(0.1464646465 0.001758019915 0.00050009999) +(0.1464646465 0.002838575912 0.00050009999) +(0.1464646465 0.004235474916 0.00050009999) +(0.1464646465 0.005764525084 0.00050009999) +(0.1464646465 0.007161424088 0.00050009999) +(0.1464646465 0.008241980085 0.00050009999) +(0.1464646465 0.008975162042 0.00050009999) +(0.1464646465 0.009429475607 0.00050009999) +(0.1464646465 0.009695336429 0.00050009999) +(0.1464646465 0.00984573433 0.00050009999) +(0.1464646465 0.009929188095 0.00050009999) +(0.1464646465 0.009975 0.00050009999) +(0.1464646465 0.01 0.00050009999) +(0.1515151515 0 0.00050009999) +(0.1515151515 2.5e-05 0.00050009999) +(0.1515151515 7.08119053e-05 0.00050009999) +(0.1515151515 0.00015426567 0.00050009999) +(0.1515151515 0.0003046635713 0.00050009999) +(0.1515151515 0.0005705243934 0.00050009999) +(0.1515151515 0.001024837958 0.00050009999) +(0.1515151515 0.001758019915 0.00050009999) +(0.1515151515 0.002838575912 0.00050009999) +(0.1515151515 0.004235474916 0.00050009999) +(0.1515151515 0.005764525084 0.00050009999) +(0.1515151515 0.007161424088 0.00050009999) +(0.1515151515 0.008241980085 0.00050009999) +(0.1515151515 0.008975162042 0.00050009999) +(0.1515151515 0.009429475607 0.00050009999) +(0.1515151515 0.009695336429 0.00050009999) +(0.1515151515 0.00984573433 0.00050009999) +(0.1515151515 0.009929188095 0.00050009999) +(0.1515151515 0.009975 0.00050009999) +(0.1515151515 0.01 0.00050009999) +(0.1565656566 0 0.00050009999) +(0.1565656566 2.5e-05 0.00050009999) +(0.1565656566 7.08119053e-05 0.00050009999) +(0.1565656566 0.00015426567 0.00050009999) +(0.1565656566 0.0003046635713 0.00050009999) +(0.1565656566 0.0005705243934 0.00050009999) +(0.1565656566 0.001024837958 0.00050009999) +(0.1565656566 0.001758019915 0.00050009999) +(0.1565656566 0.002838575912 0.00050009999) +(0.1565656566 0.004235474916 0.00050009999) +(0.1565656566 0.005764525084 0.00050009999) +(0.1565656566 0.007161424088 0.00050009999) +(0.1565656566 0.008241980085 0.00050009999) +(0.1565656566 0.008975162042 0.00050009999) +(0.1565656566 0.009429475607 0.00050009999) +(0.1565656566 0.009695336429 0.00050009999) +(0.1565656566 0.00984573433 0.00050009999) +(0.1565656566 0.009929188095 0.00050009999) +(0.1565656566 0.009975 0.00050009999) +(0.1565656566 0.01 0.00050009999) +(0.1616161616 0 0.00050009999) +(0.1616161616 2.5e-05 0.00050009999) +(0.1616161616 7.08119053e-05 0.00050009999) +(0.1616161616 0.00015426567 0.00050009999) +(0.1616161616 0.0003046635713 0.00050009999) +(0.1616161616 0.0005705243934 0.00050009999) +(0.1616161616 0.001024837958 0.00050009999) +(0.1616161616 0.001758019915 0.00050009999) +(0.1616161616 0.002838575912 0.00050009999) +(0.1616161616 0.004235474916 0.00050009999) +(0.1616161616 0.005764525084 0.00050009999) +(0.1616161616 0.007161424088 0.00050009999) +(0.1616161616 0.008241980085 0.00050009999) +(0.1616161616 0.008975162042 0.00050009999) +(0.1616161616 0.009429475607 0.00050009999) +(0.1616161616 0.009695336429 0.00050009999) +(0.1616161616 0.00984573433 0.00050009999) +(0.1616161616 0.009929188095 0.00050009999) +(0.1616161616 0.009975 0.00050009999) +(0.1616161616 0.01 0.00050009999) +(0.1666666667 0 0.00050009999) +(0.1666666667 2.5e-05 0.00050009999) +(0.1666666667 7.08119053e-05 0.00050009999) +(0.1666666667 0.00015426567 0.00050009999) +(0.1666666667 0.0003046635713 0.00050009999) +(0.1666666667 0.0005705243934 0.00050009999) +(0.1666666667 0.001024837958 0.00050009999) +(0.1666666667 0.001758019915 0.00050009999) +(0.1666666667 0.002838575912 0.00050009999) +(0.1666666667 0.004235474916 0.00050009999) +(0.1666666667 0.005764525084 0.00050009999) +(0.1666666667 0.007161424088 0.00050009999) +(0.1666666667 0.008241980085 0.00050009999) +(0.1666666667 0.008975162042 0.00050009999) +(0.1666666667 0.009429475607 0.00050009999) +(0.1666666667 0.009695336429 0.00050009999) +(0.1666666667 0.00984573433 0.00050009999) +(0.1666666667 0.009929188095 0.00050009999) +(0.1666666667 0.009975 0.00050009999) +(0.1666666667 0.01 0.00050009999) +(0.1717171717 0 0.00050009999) +(0.1717171717 2.5e-05 0.00050009999) +(0.1717171717 7.08119053e-05 0.00050009999) +(0.1717171717 0.00015426567 0.00050009999) +(0.1717171717 0.0003046635713 0.00050009999) +(0.1717171717 0.0005705243934 0.00050009999) +(0.1717171717 0.001024837958 0.00050009999) +(0.1717171717 0.001758019915 0.00050009999) +(0.1717171717 0.002838575912 0.00050009999) +(0.1717171717 0.004235474916 0.00050009999) +(0.1717171717 0.005764525084 0.00050009999) +(0.1717171717 0.007161424088 0.00050009999) +(0.1717171717 0.008241980085 0.00050009999) +(0.1717171717 0.008975162042 0.00050009999) +(0.1717171717 0.009429475607 0.00050009999) +(0.1717171717 0.009695336429 0.00050009999) +(0.1717171717 0.00984573433 0.00050009999) +(0.1717171717 0.009929188095 0.00050009999) +(0.1717171717 0.009975 0.00050009999) +(0.1717171717 0.01 0.00050009999) +(0.1767676768 0 0.00050009999) +(0.1767676768 2.5e-05 0.00050009999) +(0.1767676768 7.08119053e-05 0.00050009999) +(0.1767676768 0.00015426567 0.00050009999) +(0.1767676768 0.0003046635713 0.00050009999) +(0.1767676768 0.0005705243934 0.00050009999) +(0.1767676768 0.001024837958 0.00050009999) +(0.1767676768 0.001758019915 0.00050009999) +(0.1767676768 0.002838575912 0.00050009999) +(0.1767676768 0.004235474916 0.00050009999) +(0.1767676768 0.005764525084 0.00050009999) +(0.1767676768 0.007161424088 0.00050009999) +(0.1767676768 0.008241980085 0.00050009999) +(0.1767676768 0.008975162042 0.00050009999) +(0.1767676768 0.009429475607 0.00050009999) +(0.1767676768 0.009695336429 0.00050009999) +(0.1767676768 0.00984573433 0.00050009999) +(0.1767676768 0.009929188095 0.00050009999) +(0.1767676768 0.009975 0.00050009999) +(0.1767676768 0.01 0.00050009999) +(0.1818181818 0 0.00050009999) +(0.1818181818 2.5e-05 0.00050009999) +(0.1818181818 7.08119053e-05 0.00050009999) +(0.1818181818 0.00015426567 0.00050009999) +(0.1818181818 0.0003046635713 0.00050009999) +(0.1818181818 0.0005705243934 0.00050009999) +(0.1818181818 0.001024837958 0.00050009999) +(0.1818181818 0.001758019915 0.00050009999) +(0.1818181818 0.002838575912 0.00050009999) +(0.1818181818 0.004235474916 0.00050009999) +(0.1818181818 0.005764525084 0.00050009999) +(0.1818181818 0.007161424088 0.00050009999) +(0.1818181818 0.008241980085 0.00050009999) +(0.1818181818 0.008975162042 0.00050009999) +(0.1818181818 0.009429475607 0.00050009999) +(0.1818181818 0.009695336429 0.00050009999) +(0.1818181818 0.00984573433 0.00050009999) +(0.1818181818 0.009929188095 0.00050009999) +(0.1818181818 0.009975 0.00050009999) +(0.1818181818 0.01 0.00050009999) +(0.1868686869 0 0.00050009999) +(0.1868686869 2.5e-05 0.00050009999) +(0.1868686869 7.08119053e-05 0.00050009999) +(0.1868686869 0.00015426567 0.00050009999) +(0.1868686869 0.0003046635713 0.00050009999) +(0.1868686869 0.0005705243934 0.00050009999) +(0.1868686869 0.001024837958 0.00050009999) +(0.1868686869 0.001758019915 0.00050009999) +(0.1868686869 0.002838575912 0.00050009999) +(0.1868686869 0.004235474916 0.00050009999) +(0.1868686869 0.005764525084 0.00050009999) +(0.1868686869 0.007161424088 0.00050009999) +(0.1868686869 0.008241980085 0.00050009999) +(0.1868686869 0.008975162042 0.00050009999) +(0.1868686869 0.009429475607 0.00050009999) +(0.1868686869 0.009695336429 0.00050009999) +(0.1868686869 0.00984573433 0.00050009999) +(0.1868686869 0.009929188095 0.00050009999) +(0.1868686869 0.009975 0.00050009999) +(0.1868686869 0.01 0.00050009999) +(0.1919191919 0 0.00050009999) +(0.1919191919 2.5e-05 0.00050009999) +(0.1919191919 7.08119053e-05 0.00050009999) +(0.1919191919 0.00015426567 0.00050009999) +(0.1919191919 0.0003046635713 0.00050009999) +(0.1919191919 0.0005705243934 0.00050009999) +(0.1919191919 0.001024837958 0.00050009999) +(0.1919191919 0.001758019915 0.00050009999) +(0.1919191919 0.002838575912 0.00050009999) +(0.1919191919 0.004235474916 0.00050009999) +(0.1919191919 0.005764525084 0.00050009999) +(0.1919191919 0.007161424088 0.00050009999) +(0.1919191919 0.008241980085 0.00050009999) +(0.1919191919 0.008975162042 0.00050009999) +(0.1919191919 0.009429475607 0.00050009999) +(0.1919191919 0.009695336429 0.00050009999) +(0.1919191919 0.00984573433 0.00050009999) +(0.1919191919 0.009929188095 0.00050009999) +(0.1919191919 0.009975 0.00050009999) +(0.1919191919 0.01 0.00050009999) +(0.196969697 0 0.00050009999) +(0.196969697 2.5e-05 0.00050009999) +(0.196969697 7.08119053e-05 0.00050009999) +(0.196969697 0.00015426567 0.00050009999) +(0.196969697 0.0003046635713 0.00050009999) +(0.196969697 0.0005705243934 0.00050009999) +(0.196969697 0.001024837958 0.00050009999) +(0.196969697 0.001758019915 0.00050009999) +(0.196969697 0.002838575912 0.00050009999) +(0.196969697 0.004235474916 0.00050009999) +(0.196969697 0.005764525084 0.00050009999) +(0.196969697 0.007161424088 0.00050009999) +(0.196969697 0.008241980085 0.00050009999) +(0.196969697 0.008975162042 0.00050009999) +(0.196969697 0.009429475607 0.00050009999) +(0.196969697 0.009695336429 0.00050009999) +(0.196969697 0.00984573433 0.00050009999) +(0.196969697 0.009929188095 0.00050009999) +(0.196969697 0.009975 0.00050009999) +(0.196969697 0.01 0.00050009999) +(0.202020202 0 0.00050009999) +(0.202020202 2.5e-05 0.00050009999) +(0.202020202 7.08119053e-05 0.00050009999) +(0.202020202 0.00015426567 0.00050009999) +(0.202020202 0.0003046635713 0.00050009999) +(0.202020202 0.0005705243934 0.00050009999) +(0.202020202 0.001024837958 0.00050009999) +(0.202020202 0.001758019915 0.00050009999) +(0.202020202 0.002838575912 0.00050009999) +(0.202020202 0.004235474916 0.00050009999) +(0.202020202 0.005764525084 0.00050009999) +(0.202020202 0.007161424088 0.00050009999) +(0.202020202 0.008241980085 0.00050009999) +(0.202020202 0.008975162042 0.00050009999) +(0.202020202 0.009429475607 0.00050009999) +(0.202020202 0.009695336429 0.00050009999) +(0.202020202 0.00984573433 0.00050009999) +(0.202020202 0.009929188095 0.00050009999) +(0.202020202 0.009975 0.00050009999) +(0.202020202 0.01 0.00050009999) +(0.2070707071 0 0.00050009999) +(0.2070707071 2.5e-05 0.00050009999) +(0.2070707071 7.08119053e-05 0.00050009999) +(0.2070707071 0.00015426567 0.00050009999) +(0.2070707071 0.0003046635713 0.00050009999) +(0.2070707071 0.0005705243934 0.00050009999) +(0.2070707071 0.001024837958 0.00050009999) +(0.2070707071 0.001758019915 0.00050009999) +(0.2070707071 0.002838575912 0.00050009999) +(0.2070707071 0.004235474916 0.00050009999) +(0.2070707071 0.005764525084 0.00050009999) +(0.2070707071 0.007161424088 0.00050009999) +(0.2070707071 0.008241980085 0.00050009999) +(0.2070707071 0.008975162042 0.00050009999) +(0.2070707071 0.009429475607 0.00050009999) +(0.2070707071 0.009695336429 0.00050009999) +(0.2070707071 0.00984573433 0.00050009999) +(0.2070707071 0.009929188095 0.00050009999) +(0.2070707071 0.009975 0.00050009999) +(0.2070707071 0.01 0.00050009999) +(0.2121212121 0 0.00050009999) +(0.2121212121 2.5e-05 0.00050009999) +(0.2121212121 7.08119053e-05 0.00050009999) +(0.2121212121 0.00015426567 0.00050009999) +(0.2121212121 0.0003046635713 0.00050009999) +(0.2121212121 0.0005705243934 0.00050009999) +(0.2121212121 0.001024837958 0.00050009999) +(0.2121212121 0.001758019915 0.00050009999) +(0.2121212121 0.002838575912 0.00050009999) +(0.2121212121 0.004235474916 0.00050009999) +(0.2121212121 0.005764525084 0.00050009999) +(0.2121212121 0.007161424088 0.00050009999) +(0.2121212121 0.008241980085 0.00050009999) +(0.2121212121 0.008975162042 0.00050009999) +(0.2121212121 0.009429475607 0.00050009999) +(0.2121212121 0.009695336429 0.00050009999) +(0.2121212121 0.00984573433 0.00050009999) +(0.2121212121 0.009929188095 0.00050009999) +(0.2121212121 0.009975 0.00050009999) +(0.2121212121 0.01 0.00050009999) +(0.2171717172 0 0.00050009999) +(0.2171717172 2.5e-05 0.00050009999) +(0.2171717172 7.08119053e-05 0.00050009999) +(0.2171717172 0.00015426567 0.00050009999) +(0.2171717172 0.0003046635713 0.00050009999) +(0.2171717172 0.0005705243934 0.00050009999) +(0.2171717172 0.001024837958 0.00050009999) +(0.2171717172 0.001758019915 0.00050009999) +(0.2171717172 0.002838575912 0.00050009999) +(0.2171717172 0.004235474916 0.00050009999) +(0.2171717172 0.005764525084 0.00050009999) +(0.2171717172 0.007161424088 0.00050009999) +(0.2171717172 0.008241980085 0.00050009999) +(0.2171717172 0.008975162042 0.00050009999) +(0.2171717172 0.009429475607 0.00050009999) +(0.2171717172 0.009695336429 0.00050009999) +(0.2171717172 0.00984573433 0.00050009999) +(0.2171717172 0.009929188095 0.00050009999) +(0.2171717172 0.009975 0.00050009999) +(0.2171717172 0.01 0.00050009999) +(0.2222222222 0 0.00050009999) +(0.2222222222 2.5e-05 0.00050009999) +(0.2222222222 7.08119053e-05 0.00050009999) +(0.2222222222 0.00015426567 0.00050009999) +(0.2222222222 0.0003046635713 0.00050009999) +(0.2222222222 0.0005705243934 0.00050009999) +(0.2222222222 0.001024837958 0.00050009999) +(0.2222222222 0.001758019915 0.00050009999) +(0.2222222222 0.002838575912 0.00050009999) +(0.2222222222 0.004235474916 0.00050009999) +(0.2222222222 0.005764525084 0.00050009999) +(0.2222222222 0.007161424088 0.00050009999) +(0.2222222222 0.008241980085 0.00050009999) +(0.2222222222 0.008975162042 0.00050009999) +(0.2222222222 0.009429475607 0.00050009999) +(0.2222222222 0.009695336429 0.00050009999) +(0.2222222222 0.00984573433 0.00050009999) +(0.2222222222 0.009929188095 0.00050009999) +(0.2222222222 0.009975 0.00050009999) +(0.2222222222 0.01 0.00050009999) +(0.2272727273 0 0.00050009999) +(0.2272727273 2.5e-05 0.00050009999) +(0.2272727273 7.08119053e-05 0.00050009999) +(0.2272727273 0.00015426567 0.00050009999) +(0.2272727273 0.0003046635713 0.00050009999) +(0.2272727273 0.0005705243934 0.00050009999) +(0.2272727273 0.001024837958 0.00050009999) +(0.2272727273 0.001758019915 0.00050009999) +(0.2272727273 0.002838575912 0.00050009999) +(0.2272727273 0.004235474916 0.00050009999) +(0.2272727273 0.005764525084 0.00050009999) +(0.2272727273 0.007161424088 0.00050009999) +(0.2272727273 0.008241980085 0.00050009999) +(0.2272727273 0.008975162042 0.00050009999) +(0.2272727273 0.009429475607 0.00050009999) +(0.2272727273 0.009695336429 0.00050009999) +(0.2272727273 0.00984573433 0.00050009999) +(0.2272727273 0.009929188095 0.00050009999) +(0.2272727273 0.009975 0.00050009999) +(0.2272727273 0.01 0.00050009999) +(0.2323232323 0 0.00050009999) +(0.2323232323 2.5e-05 0.00050009999) +(0.2323232323 7.08119053e-05 0.00050009999) +(0.2323232323 0.00015426567 0.00050009999) +(0.2323232323 0.0003046635713 0.00050009999) +(0.2323232323 0.0005705243934 0.00050009999) +(0.2323232323 0.001024837958 0.00050009999) +(0.2323232323 0.001758019915 0.00050009999) +(0.2323232323 0.002838575912 0.00050009999) +(0.2323232323 0.004235474916 0.00050009999) +(0.2323232323 0.005764525084 0.00050009999) +(0.2323232323 0.007161424088 0.00050009999) +(0.2323232323 0.008241980085 0.00050009999) +(0.2323232323 0.008975162042 0.00050009999) +(0.2323232323 0.009429475607 0.00050009999) +(0.2323232323 0.009695336429 0.00050009999) +(0.2323232323 0.00984573433 0.00050009999) +(0.2323232323 0.009929188095 0.00050009999) +(0.2323232323 0.009975 0.00050009999) +(0.2323232323 0.01 0.00050009999) +(0.2373737374 0 0.00050009999) +(0.2373737374 2.5e-05 0.00050009999) +(0.2373737374 7.08119053e-05 0.00050009999) +(0.2373737374 0.00015426567 0.00050009999) +(0.2373737374 0.0003046635713 0.00050009999) +(0.2373737374 0.0005705243934 0.00050009999) +(0.2373737374 0.001024837958 0.00050009999) +(0.2373737374 0.001758019915 0.00050009999) +(0.2373737374 0.002838575912 0.00050009999) +(0.2373737374 0.004235474916 0.00050009999) +(0.2373737374 0.005764525084 0.00050009999) +(0.2373737374 0.007161424088 0.00050009999) +(0.2373737374 0.008241980085 0.00050009999) +(0.2373737374 0.008975162042 0.00050009999) +(0.2373737374 0.009429475607 0.00050009999) +(0.2373737374 0.009695336429 0.00050009999) +(0.2373737374 0.00984573433 0.00050009999) +(0.2373737374 0.009929188095 0.00050009999) +(0.2373737374 0.009975 0.00050009999) +(0.2373737374 0.01 0.00050009999) +(0.2424242424 0 0.00050009999) +(0.2424242424 2.5e-05 0.00050009999) +(0.2424242424 7.08119053e-05 0.00050009999) +(0.2424242424 0.00015426567 0.00050009999) +(0.2424242424 0.0003046635713 0.00050009999) +(0.2424242424 0.0005705243934 0.00050009999) +(0.2424242424 0.001024837958 0.00050009999) +(0.2424242424 0.001758019915 0.00050009999) +(0.2424242424 0.002838575912 0.00050009999) +(0.2424242424 0.004235474916 0.00050009999) +(0.2424242424 0.005764525084 0.00050009999) +(0.2424242424 0.007161424088 0.00050009999) +(0.2424242424 0.008241980085 0.00050009999) +(0.2424242424 0.008975162042 0.00050009999) +(0.2424242424 0.009429475607 0.00050009999) +(0.2424242424 0.009695336429 0.00050009999) +(0.2424242424 0.00984573433 0.00050009999) +(0.2424242424 0.009929188095 0.00050009999) +(0.2424242424 0.009975 0.00050009999) +(0.2424242424 0.01 0.00050009999) +(0.2474747475 0 0.00050009999) +(0.2474747475 2.5e-05 0.00050009999) +(0.2474747475 7.08119053e-05 0.00050009999) +(0.2474747475 0.00015426567 0.00050009999) +(0.2474747475 0.0003046635713 0.00050009999) +(0.2474747475 0.0005705243934 0.00050009999) +(0.2474747475 0.001024837958 0.00050009999) +(0.2474747475 0.001758019915 0.00050009999) +(0.2474747475 0.002838575912 0.00050009999) +(0.2474747475 0.004235474916 0.00050009999) +(0.2474747475 0.005764525084 0.00050009999) +(0.2474747475 0.007161424088 0.00050009999) +(0.2474747475 0.008241980085 0.00050009999) +(0.2474747475 0.008975162042 0.00050009999) +(0.2474747475 0.009429475607 0.00050009999) +(0.2474747475 0.009695336429 0.00050009999) +(0.2474747475 0.00984573433 0.00050009999) +(0.2474747475 0.009929188095 0.00050009999) +(0.2474747475 0.009975 0.00050009999) +(0.2474747475 0.01 0.00050009999) +(0.2525252525 0 0.00050009999) +(0.2525252525 2.5e-05 0.00050009999) +(0.2525252525 7.08119053e-05 0.00050009999) +(0.2525252525 0.00015426567 0.00050009999) +(0.2525252525 0.0003046635713 0.00050009999) +(0.2525252525 0.0005705243934 0.00050009999) +(0.2525252525 0.001024837958 0.00050009999) +(0.2525252525 0.001758019915 0.00050009999) +(0.2525252525 0.002838575912 0.00050009999) +(0.2525252525 0.004235474916 0.00050009999) +(0.2525252525 0.005764525084 0.00050009999) +(0.2525252525 0.007161424088 0.00050009999) +(0.2525252525 0.008241980085 0.00050009999) +(0.2525252525 0.008975162042 0.00050009999) +(0.2525252525 0.009429475607 0.00050009999) +(0.2525252525 0.009695336429 0.00050009999) +(0.2525252525 0.00984573433 0.00050009999) +(0.2525252525 0.009929188095 0.00050009999) +(0.2525252525 0.009975 0.00050009999) +(0.2525252525 0.01 0.00050009999) +(0.2575757576 0 0.00050009999) +(0.2575757576 2.5e-05 0.00050009999) +(0.2575757576 7.08119053e-05 0.00050009999) +(0.2575757576 0.00015426567 0.00050009999) +(0.2575757576 0.0003046635713 0.00050009999) +(0.2575757576 0.0005705243934 0.00050009999) +(0.2575757576 0.001024837958 0.00050009999) +(0.2575757576 0.001758019915 0.00050009999) +(0.2575757576 0.002838575912 0.00050009999) +(0.2575757576 0.004235474916 0.00050009999) +(0.2575757576 0.005764525084 0.00050009999) +(0.2575757576 0.007161424088 0.00050009999) +(0.2575757576 0.008241980085 0.00050009999) +(0.2575757576 0.008975162042 0.00050009999) +(0.2575757576 0.009429475607 0.00050009999) +(0.2575757576 0.009695336429 0.00050009999) +(0.2575757576 0.00984573433 0.00050009999) +(0.2575757576 0.009929188095 0.00050009999) +(0.2575757576 0.009975 0.00050009999) +(0.2575757576 0.01 0.00050009999) +(0.2626262626 0 0.00050009999) +(0.2626262626 2.5e-05 0.00050009999) +(0.2626262626 7.08119053e-05 0.00050009999) +(0.2626262626 0.00015426567 0.00050009999) +(0.2626262626 0.0003046635713 0.00050009999) +(0.2626262626 0.0005705243934 0.00050009999) +(0.2626262626 0.001024837958 0.00050009999) +(0.2626262626 0.001758019915 0.00050009999) +(0.2626262626 0.002838575912 0.00050009999) +(0.2626262626 0.004235474916 0.00050009999) +(0.2626262626 0.005764525084 0.00050009999) +(0.2626262626 0.007161424088 0.00050009999) +(0.2626262626 0.008241980085 0.00050009999) +(0.2626262626 0.008975162042 0.00050009999) +(0.2626262626 0.009429475607 0.00050009999) +(0.2626262626 0.009695336429 0.00050009999) +(0.2626262626 0.00984573433 0.00050009999) +(0.2626262626 0.009929188095 0.00050009999) +(0.2626262626 0.009975 0.00050009999) +(0.2626262626 0.01 0.00050009999) +(0.2676767677 0 0.00050009999) +(0.2676767677 2.5e-05 0.00050009999) +(0.2676767677 7.08119053e-05 0.00050009999) +(0.2676767677 0.00015426567 0.00050009999) +(0.2676767677 0.0003046635713 0.00050009999) +(0.2676767677 0.0005705243934 0.00050009999) +(0.2676767677 0.001024837958 0.00050009999) +(0.2676767677 0.001758019915 0.00050009999) +(0.2676767677 0.002838575912 0.00050009999) +(0.2676767677 0.004235474916 0.00050009999) +(0.2676767677 0.005764525084 0.00050009999) +(0.2676767677 0.007161424088 0.00050009999) +(0.2676767677 0.008241980085 0.00050009999) +(0.2676767677 0.008975162042 0.00050009999) +(0.2676767677 0.009429475607 0.00050009999) +(0.2676767677 0.009695336429 0.00050009999) +(0.2676767677 0.00984573433 0.00050009999) +(0.2676767677 0.009929188095 0.00050009999) +(0.2676767677 0.009975 0.00050009999) +(0.2676767677 0.01 0.00050009999) +(0.2727272727 0 0.00050009999) +(0.2727272727 2.5e-05 0.00050009999) +(0.2727272727 7.08119053e-05 0.00050009999) +(0.2727272727 0.00015426567 0.00050009999) +(0.2727272727 0.0003046635713 0.00050009999) +(0.2727272727 0.0005705243934 0.00050009999) +(0.2727272727 0.001024837958 0.00050009999) +(0.2727272727 0.001758019915 0.00050009999) +(0.2727272727 0.002838575912 0.00050009999) +(0.2727272727 0.004235474916 0.00050009999) +(0.2727272727 0.005764525084 0.00050009999) +(0.2727272727 0.007161424088 0.00050009999) +(0.2727272727 0.008241980085 0.00050009999) +(0.2727272727 0.008975162042 0.00050009999) +(0.2727272727 0.009429475607 0.00050009999) +(0.2727272727 0.009695336429 0.00050009999) +(0.2727272727 0.00984573433 0.00050009999) +(0.2727272727 0.009929188095 0.00050009999) +(0.2727272727 0.009975 0.00050009999) +(0.2727272727 0.01 0.00050009999) +(0.2777777778 0 0.00050009999) +(0.2777777778 2.5e-05 0.00050009999) +(0.2777777778 7.08119053e-05 0.00050009999) +(0.2777777778 0.00015426567 0.00050009999) +(0.2777777778 0.0003046635713 0.00050009999) +(0.2777777778 0.0005705243934 0.00050009999) +(0.2777777778 0.001024837958 0.00050009999) +(0.2777777778 0.001758019915 0.00050009999) +(0.2777777778 0.002838575912 0.00050009999) +(0.2777777778 0.004235474916 0.00050009999) +(0.2777777778 0.005764525084 0.00050009999) +(0.2777777778 0.007161424088 0.00050009999) +(0.2777777778 0.008241980085 0.00050009999) +(0.2777777778 0.008975162042 0.00050009999) +(0.2777777778 0.009429475607 0.00050009999) +(0.2777777778 0.009695336429 0.00050009999) +(0.2777777778 0.00984573433 0.00050009999) +(0.2777777778 0.009929188095 0.00050009999) +(0.2777777778 0.009975 0.00050009999) +(0.2777777778 0.01 0.00050009999) +(0.2828282828 0 0.00050009999) +(0.2828282828 2.5e-05 0.00050009999) +(0.2828282828 7.08119053e-05 0.00050009999) +(0.2828282828 0.00015426567 0.00050009999) +(0.2828282828 0.0003046635713 0.00050009999) +(0.2828282828 0.0005705243934 0.00050009999) +(0.2828282828 0.001024837958 0.00050009999) +(0.2828282828 0.001758019915 0.00050009999) +(0.2828282828 0.002838575912 0.00050009999) +(0.2828282828 0.004235474916 0.00050009999) +(0.2828282828 0.005764525084 0.00050009999) +(0.2828282828 0.007161424088 0.00050009999) +(0.2828282828 0.008241980085 0.00050009999) +(0.2828282828 0.008975162042 0.00050009999) +(0.2828282828 0.009429475607 0.00050009999) +(0.2828282828 0.009695336429 0.00050009999) +(0.2828282828 0.00984573433 0.00050009999) +(0.2828282828 0.009929188095 0.00050009999) +(0.2828282828 0.009975 0.00050009999) +(0.2828282828 0.01 0.00050009999) +(0.2878787879 0 0.00050009999) +(0.2878787879 2.5e-05 0.00050009999) +(0.2878787879 7.08119053e-05 0.00050009999) +(0.2878787879 0.00015426567 0.00050009999) +(0.2878787879 0.0003046635713 0.00050009999) +(0.2878787879 0.0005705243934 0.00050009999) +(0.2878787879 0.001024837958 0.00050009999) +(0.2878787879 0.001758019915 0.00050009999) +(0.2878787879 0.002838575912 0.00050009999) +(0.2878787879 0.004235474916 0.00050009999) +(0.2878787879 0.005764525084 0.00050009999) +(0.2878787879 0.007161424088 0.00050009999) +(0.2878787879 0.008241980085 0.00050009999) +(0.2878787879 0.008975162042 0.00050009999) +(0.2878787879 0.009429475607 0.00050009999) +(0.2878787879 0.009695336429 0.00050009999) +(0.2878787879 0.00984573433 0.00050009999) +(0.2878787879 0.009929188095 0.00050009999) +(0.2878787879 0.009975 0.00050009999) +(0.2878787879 0.01 0.00050009999) +(0.2929292929 0 0.00050009999) +(0.2929292929 2.5e-05 0.00050009999) +(0.2929292929 7.08119053e-05 0.00050009999) +(0.2929292929 0.00015426567 0.00050009999) +(0.2929292929 0.0003046635713 0.00050009999) +(0.2929292929 0.0005705243934 0.00050009999) +(0.2929292929 0.001024837958 0.00050009999) +(0.2929292929 0.001758019915 0.00050009999) +(0.2929292929 0.002838575912 0.00050009999) +(0.2929292929 0.004235474916 0.00050009999) +(0.2929292929 0.005764525084 0.00050009999) +(0.2929292929 0.007161424088 0.00050009999) +(0.2929292929 0.008241980085 0.00050009999) +(0.2929292929 0.008975162042 0.00050009999) +(0.2929292929 0.009429475607 0.00050009999) +(0.2929292929 0.009695336429 0.00050009999) +(0.2929292929 0.00984573433 0.00050009999) +(0.2929292929 0.009929188095 0.00050009999) +(0.2929292929 0.009975 0.00050009999) +(0.2929292929 0.01 0.00050009999) +(0.297979798 0 0.00050009999) +(0.297979798 2.5e-05 0.00050009999) +(0.297979798 7.08119053e-05 0.00050009999) +(0.297979798 0.00015426567 0.00050009999) +(0.297979798 0.0003046635713 0.00050009999) +(0.297979798 0.0005705243934 0.00050009999) +(0.297979798 0.001024837958 0.00050009999) +(0.297979798 0.001758019915 0.00050009999) +(0.297979798 0.002838575912 0.00050009999) +(0.297979798 0.004235474916 0.00050009999) +(0.297979798 0.005764525084 0.00050009999) +(0.297979798 0.007161424088 0.00050009999) +(0.297979798 0.008241980085 0.00050009999) +(0.297979798 0.008975162042 0.00050009999) +(0.297979798 0.009429475607 0.00050009999) +(0.297979798 0.009695336429 0.00050009999) +(0.297979798 0.00984573433 0.00050009999) +(0.297979798 0.009929188095 0.00050009999) +(0.297979798 0.009975 0.00050009999) +(0.297979798 0.01 0.00050009999) +(0.303030303 0 0.00050009999) +(0.303030303 2.5e-05 0.00050009999) +(0.303030303 7.08119053e-05 0.00050009999) +(0.303030303 0.00015426567 0.00050009999) +(0.303030303 0.0003046635713 0.00050009999) +(0.303030303 0.0005705243934 0.00050009999) +(0.303030303 0.001024837958 0.00050009999) +(0.303030303 0.001758019915 0.00050009999) +(0.303030303 0.002838575912 0.00050009999) +(0.303030303 0.004235474916 0.00050009999) +(0.303030303 0.005764525084 0.00050009999) +(0.303030303 0.007161424088 0.00050009999) +(0.303030303 0.008241980085 0.00050009999) +(0.303030303 0.008975162042 0.00050009999) +(0.303030303 0.009429475607 0.00050009999) +(0.303030303 0.009695336429 0.00050009999) +(0.303030303 0.00984573433 0.00050009999) +(0.303030303 0.009929188095 0.00050009999) +(0.303030303 0.009975 0.00050009999) +(0.303030303 0.01 0.00050009999) +(0.3080808081 0 0.00050009999) +(0.3080808081 2.5e-05 0.00050009999) +(0.3080808081 7.08119053e-05 0.00050009999) +(0.3080808081 0.00015426567 0.00050009999) +(0.3080808081 0.0003046635713 0.00050009999) +(0.3080808081 0.0005705243934 0.00050009999) +(0.3080808081 0.001024837958 0.00050009999) +(0.3080808081 0.001758019915 0.00050009999) +(0.3080808081 0.002838575912 0.00050009999) +(0.3080808081 0.004235474916 0.00050009999) +(0.3080808081 0.005764525084 0.00050009999) +(0.3080808081 0.007161424088 0.00050009999) +(0.3080808081 0.008241980085 0.00050009999) +(0.3080808081 0.008975162042 0.00050009999) +(0.3080808081 0.009429475607 0.00050009999) +(0.3080808081 0.009695336429 0.00050009999) +(0.3080808081 0.00984573433 0.00050009999) +(0.3080808081 0.009929188095 0.00050009999) +(0.3080808081 0.009975 0.00050009999) +(0.3080808081 0.01 0.00050009999) +(0.3131313131 0 0.00050009999) +(0.3131313131 2.5e-05 0.00050009999) +(0.3131313131 7.08119053e-05 0.00050009999) +(0.3131313131 0.00015426567 0.00050009999) +(0.3131313131 0.0003046635713 0.00050009999) +(0.3131313131 0.0005705243934 0.00050009999) +(0.3131313131 0.001024837958 0.00050009999) +(0.3131313131 0.001758019915 0.00050009999) +(0.3131313131 0.002838575912 0.00050009999) +(0.3131313131 0.004235474916 0.00050009999) +(0.3131313131 0.005764525084 0.00050009999) +(0.3131313131 0.007161424088 0.00050009999) +(0.3131313131 0.008241980085 0.00050009999) +(0.3131313131 0.008975162042 0.00050009999) +(0.3131313131 0.009429475607 0.00050009999) +(0.3131313131 0.009695336429 0.00050009999) +(0.3131313131 0.00984573433 0.00050009999) +(0.3131313131 0.009929188095 0.00050009999) +(0.3131313131 0.009975 0.00050009999) +(0.3131313131 0.01 0.00050009999) +(0.3181818182 0 0.00050009999) +(0.3181818182 2.5e-05 0.00050009999) +(0.3181818182 7.08119053e-05 0.00050009999) +(0.3181818182 0.00015426567 0.00050009999) +(0.3181818182 0.0003046635713 0.00050009999) +(0.3181818182 0.0005705243934 0.00050009999) +(0.3181818182 0.001024837958 0.00050009999) +(0.3181818182 0.001758019915 0.00050009999) +(0.3181818182 0.002838575912 0.00050009999) +(0.3181818182 0.004235474916 0.00050009999) +(0.3181818182 0.005764525084 0.00050009999) +(0.3181818182 0.007161424088 0.00050009999) +(0.3181818182 0.008241980085 0.00050009999) +(0.3181818182 0.008975162042 0.00050009999) +(0.3181818182 0.009429475607 0.00050009999) +(0.3181818182 0.009695336429 0.00050009999) +(0.3181818182 0.00984573433 0.00050009999) +(0.3181818182 0.009929188095 0.00050009999) +(0.3181818182 0.009975 0.00050009999) +(0.3181818182 0.01 0.00050009999) +(0.3232323232 0 0.00050009999) +(0.3232323232 2.5e-05 0.00050009999) +(0.3232323232 7.08119053e-05 0.00050009999) +(0.3232323232 0.00015426567 0.00050009999) +(0.3232323232 0.0003046635713 0.00050009999) +(0.3232323232 0.0005705243934 0.00050009999) +(0.3232323232 0.001024837958 0.00050009999) +(0.3232323232 0.001758019915 0.00050009999) +(0.3232323232 0.002838575912 0.00050009999) +(0.3232323232 0.004235474916 0.00050009999) +(0.3232323232 0.005764525084 0.00050009999) +(0.3232323232 0.007161424088 0.00050009999) +(0.3232323232 0.008241980085 0.00050009999) +(0.3232323232 0.008975162042 0.00050009999) +(0.3232323232 0.009429475607 0.00050009999) +(0.3232323232 0.009695336429 0.00050009999) +(0.3232323232 0.00984573433 0.00050009999) +(0.3232323232 0.009929188095 0.00050009999) +(0.3232323232 0.009975 0.00050009999) +(0.3232323232 0.01 0.00050009999) +(0.3282828283 0 0.00050009999) +(0.3282828283 2.5e-05 0.00050009999) +(0.3282828283 7.08119053e-05 0.00050009999) +(0.3282828283 0.00015426567 0.00050009999) +(0.3282828283 0.0003046635713 0.00050009999) +(0.3282828283 0.0005705243934 0.00050009999) +(0.3282828283 0.001024837958 0.00050009999) +(0.3282828283 0.001758019915 0.00050009999) +(0.3282828283 0.002838575912 0.00050009999) +(0.3282828283 0.004235474916 0.00050009999) +(0.3282828283 0.005764525084 0.00050009999) +(0.3282828283 0.007161424088 0.00050009999) +(0.3282828283 0.008241980085 0.00050009999) +(0.3282828283 0.008975162042 0.00050009999) +(0.3282828283 0.009429475607 0.00050009999) +(0.3282828283 0.009695336429 0.00050009999) +(0.3282828283 0.00984573433 0.00050009999) +(0.3282828283 0.009929188095 0.00050009999) +(0.3282828283 0.009975 0.00050009999) +(0.3282828283 0.01 0.00050009999) +(0.3333333333 0 0.00050009999) +(0.3333333333 2.5e-05 0.00050009999) +(0.3333333333 7.08119053e-05 0.00050009999) +(0.3333333333 0.00015426567 0.00050009999) +(0.3333333333 0.0003046635713 0.00050009999) +(0.3333333333 0.0005705243934 0.00050009999) +(0.3333333333 0.001024837958 0.00050009999) +(0.3333333333 0.001758019915 0.00050009999) +(0.3333333333 0.002838575912 0.00050009999) +(0.3333333333 0.004235474916 0.00050009999) +(0.3333333333 0.005764525084 0.00050009999) +(0.3333333333 0.007161424088 0.00050009999) +(0.3333333333 0.008241980085 0.00050009999) +(0.3333333333 0.008975162042 0.00050009999) +(0.3333333333 0.009429475607 0.00050009999) +(0.3333333333 0.009695336429 0.00050009999) +(0.3333333333 0.00984573433 0.00050009999) +(0.3333333333 0.009929188095 0.00050009999) +(0.3333333333 0.009975 0.00050009999) +(0.3333333333 0.01 0.00050009999) +(0.3383838384 0 0.00050009999) +(0.3383838384 2.5e-05 0.00050009999) +(0.3383838384 7.08119053e-05 0.00050009999) +(0.3383838384 0.00015426567 0.00050009999) +(0.3383838384 0.0003046635713 0.00050009999) +(0.3383838384 0.0005705243934 0.00050009999) +(0.3383838384 0.001024837958 0.00050009999) +(0.3383838384 0.001758019915 0.00050009999) +(0.3383838384 0.002838575912 0.00050009999) +(0.3383838384 0.004235474916 0.00050009999) +(0.3383838384 0.005764525084 0.00050009999) +(0.3383838384 0.007161424088 0.00050009999) +(0.3383838384 0.008241980085 0.00050009999) +(0.3383838384 0.008975162042 0.00050009999) +(0.3383838384 0.009429475607 0.00050009999) +(0.3383838384 0.009695336429 0.00050009999) +(0.3383838384 0.00984573433 0.00050009999) +(0.3383838384 0.009929188095 0.00050009999) +(0.3383838384 0.009975 0.00050009999) +(0.3383838384 0.01 0.00050009999) +(0.3434343434 0 0.00050009999) +(0.3434343434 2.5e-05 0.00050009999) +(0.3434343434 7.08119053e-05 0.00050009999) +(0.3434343434 0.00015426567 0.00050009999) +(0.3434343434 0.0003046635713 0.00050009999) +(0.3434343434 0.0005705243934 0.00050009999) +(0.3434343434 0.001024837958 0.00050009999) +(0.3434343434 0.001758019915 0.00050009999) +(0.3434343434 0.002838575912 0.00050009999) +(0.3434343434 0.004235474916 0.00050009999) +(0.3434343434 0.005764525084 0.00050009999) +(0.3434343434 0.007161424088 0.00050009999) +(0.3434343434 0.008241980085 0.00050009999) +(0.3434343434 0.008975162042 0.00050009999) +(0.3434343434 0.009429475607 0.00050009999) +(0.3434343434 0.009695336429 0.00050009999) +(0.3434343434 0.00984573433 0.00050009999) +(0.3434343434 0.009929188095 0.00050009999) +(0.3434343434 0.009975 0.00050009999) +(0.3434343434 0.01 0.00050009999) +(0.3484848485 0 0.00050009999) +(0.3484848485 2.5e-05 0.00050009999) +(0.3484848485 7.08119053e-05 0.00050009999) +(0.3484848485 0.00015426567 0.00050009999) +(0.3484848485 0.0003046635713 0.00050009999) +(0.3484848485 0.0005705243934 0.00050009999) +(0.3484848485 0.001024837958 0.00050009999) +(0.3484848485 0.001758019915 0.00050009999) +(0.3484848485 0.002838575912 0.00050009999) +(0.3484848485 0.004235474916 0.00050009999) +(0.3484848485 0.005764525084 0.00050009999) +(0.3484848485 0.007161424088 0.00050009999) +(0.3484848485 0.008241980085 0.00050009999) +(0.3484848485 0.008975162042 0.00050009999) +(0.3484848485 0.009429475607 0.00050009999) +(0.3484848485 0.009695336429 0.00050009999) +(0.3484848485 0.00984573433 0.00050009999) +(0.3484848485 0.009929188095 0.00050009999) +(0.3484848485 0.009975 0.00050009999) +(0.3484848485 0.01 0.00050009999) +(0.3535353535 0 0.00050009999) +(0.3535353535 2.5e-05 0.00050009999) +(0.3535353535 7.08119053e-05 0.00050009999) +(0.3535353535 0.00015426567 0.00050009999) +(0.3535353535 0.0003046635713 0.00050009999) +(0.3535353535 0.0005705243934 0.00050009999) +(0.3535353535 0.001024837958 0.00050009999) +(0.3535353535 0.001758019915 0.00050009999) +(0.3535353535 0.002838575912 0.00050009999) +(0.3535353535 0.004235474916 0.00050009999) +(0.3535353535 0.005764525084 0.00050009999) +(0.3535353535 0.007161424088 0.00050009999) +(0.3535353535 0.008241980085 0.00050009999) +(0.3535353535 0.008975162042 0.00050009999) +(0.3535353535 0.009429475607 0.00050009999) +(0.3535353535 0.009695336429 0.00050009999) +(0.3535353535 0.00984573433 0.00050009999) +(0.3535353535 0.009929188095 0.00050009999) +(0.3535353535 0.009975 0.00050009999) +(0.3535353535 0.01 0.00050009999) +(0.3585858586 0 0.00050009999) +(0.3585858586 2.5e-05 0.00050009999) +(0.3585858586 7.08119053e-05 0.00050009999) +(0.3585858586 0.00015426567 0.00050009999) +(0.3585858586 0.0003046635713 0.00050009999) +(0.3585858586 0.0005705243934 0.00050009999) +(0.3585858586 0.001024837958 0.00050009999) +(0.3585858586 0.001758019915 0.00050009999) +(0.3585858586 0.002838575912 0.00050009999) +(0.3585858586 0.004235474916 0.00050009999) +(0.3585858586 0.005764525084 0.00050009999) +(0.3585858586 0.007161424088 0.00050009999) +(0.3585858586 0.008241980085 0.00050009999) +(0.3585858586 0.008975162042 0.00050009999) +(0.3585858586 0.009429475607 0.00050009999) +(0.3585858586 0.009695336429 0.00050009999) +(0.3585858586 0.00984573433 0.00050009999) +(0.3585858586 0.009929188095 0.00050009999) +(0.3585858586 0.009975 0.00050009999) +(0.3585858586 0.01 0.00050009999) +(0.3636363636 0 0.00050009999) +(0.3636363636 2.5e-05 0.00050009999) +(0.3636363636 7.08119053e-05 0.00050009999) +(0.3636363636 0.00015426567 0.00050009999) +(0.3636363636 0.0003046635713 0.00050009999) +(0.3636363636 0.0005705243934 0.00050009999) +(0.3636363636 0.001024837958 0.00050009999) +(0.3636363636 0.001758019915 0.00050009999) +(0.3636363636 0.002838575912 0.00050009999) +(0.3636363636 0.004235474916 0.00050009999) +(0.3636363636 0.005764525084 0.00050009999) +(0.3636363636 0.007161424088 0.00050009999) +(0.3636363636 0.008241980085 0.00050009999) +(0.3636363636 0.008975162042 0.00050009999) +(0.3636363636 0.009429475607 0.00050009999) +(0.3636363636 0.009695336429 0.00050009999) +(0.3636363636 0.00984573433 0.00050009999) +(0.3636363636 0.009929188095 0.00050009999) +(0.3636363636 0.009975 0.00050009999) +(0.3636363636 0.01 0.00050009999) +(0.3686868687 0 0.00050009999) +(0.3686868687 2.5e-05 0.00050009999) +(0.3686868687 7.08119053e-05 0.00050009999) +(0.3686868687 0.00015426567 0.00050009999) +(0.3686868687 0.0003046635713 0.00050009999) +(0.3686868687 0.0005705243934 0.00050009999) +(0.3686868687 0.001024837958 0.00050009999) +(0.3686868687 0.001758019915 0.00050009999) +(0.3686868687 0.002838575912 0.00050009999) +(0.3686868687 0.004235474916 0.00050009999) +(0.3686868687 0.005764525084 0.00050009999) +(0.3686868687 0.007161424088 0.00050009999) +(0.3686868687 0.008241980085 0.00050009999) +(0.3686868687 0.008975162042 0.00050009999) +(0.3686868687 0.009429475607 0.00050009999) +(0.3686868687 0.009695336429 0.00050009999) +(0.3686868687 0.00984573433 0.00050009999) +(0.3686868687 0.009929188095 0.00050009999) +(0.3686868687 0.009975 0.00050009999) +(0.3686868687 0.01 0.00050009999) +(0.3737373737 0 0.00050009999) +(0.3737373737 2.5e-05 0.00050009999) +(0.3737373737 7.08119053e-05 0.00050009999) +(0.3737373737 0.00015426567 0.00050009999) +(0.3737373737 0.0003046635713 0.00050009999) +(0.3737373737 0.0005705243934 0.00050009999) +(0.3737373737 0.001024837958 0.00050009999) +(0.3737373737 0.001758019915 0.00050009999) +(0.3737373737 0.002838575912 0.00050009999) +(0.3737373737 0.004235474916 0.00050009999) +(0.3737373737 0.005764525084 0.00050009999) +(0.3737373737 0.007161424088 0.00050009999) +(0.3737373737 0.008241980085 0.00050009999) +(0.3737373737 0.008975162042 0.00050009999) +(0.3737373737 0.009429475607 0.00050009999) +(0.3737373737 0.009695336429 0.00050009999) +(0.3737373737 0.00984573433 0.00050009999) +(0.3737373737 0.009929188095 0.00050009999) +(0.3737373737 0.009975 0.00050009999) +(0.3737373737 0.01 0.00050009999) +(0.3787878788 0 0.00050009999) +(0.3787878788 2.5e-05 0.00050009999) +(0.3787878788 7.08119053e-05 0.00050009999) +(0.3787878788 0.00015426567 0.00050009999) +(0.3787878788 0.0003046635713 0.00050009999) +(0.3787878788 0.0005705243934 0.00050009999) +(0.3787878788 0.001024837958 0.00050009999) +(0.3787878788 0.001758019915 0.00050009999) +(0.3787878788 0.002838575912 0.00050009999) +(0.3787878788 0.004235474916 0.00050009999) +(0.3787878788 0.005764525084 0.00050009999) +(0.3787878788 0.007161424088 0.00050009999) +(0.3787878788 0.008241980085 0.00050009999) +(0.3787878788 0.008975162042 0.00050009999) +(0.3787878788 0.009429475607 0.00050009999) +(0.3787878788 0.009695336429 0.00050009999) +(0.3787878788 0.00984573433 0.00050009999) +(0.3787878788 0.009929188095 0.00050009999) +(0.3787878788 0.009975 0.00050009999) +(0.3787878788 0.01 0.00050009999) +(0.3838383838 0 0.00050009999) +(0.3838383838 2.5e-05 0.00050009999) +(0.3838383838 7.08119053e-05 0.00050009999) +(0.3838383838 0.00015426567 0.00050009999) +(0.3838383838 0.0003046635713 0.00050009999) +(0.3838383838 0.0005705243934 0.00050009999) +(0.3838383838 0.001024837958 0.00050009999) +(0.3838383838 0.001758019915 0.00050009999) +(0.3838383838 0.002838575912 0.00050009999) +(0.3838383838 0.004235474916 0.00050009999) +(0.3838383838 0.005764525084 0.00050009999) +(0.3838383838 0.007161424088 0.00050009999) +(0.3838383838 0.008241980085 0.00050009999) +(0.3838383838 0.008975162042 0.00050009999) +(0.3838383838 0.009429475607 0.00050009999) +(0.3838383838 0.009695336429 0.00050009999) +(0.3838383838 0.00984573433 0.00050009999) +(0.3838383838 0.009929188095 0.00050009999) +(0.3838383838 0.009975 0.00050009999) +(0.3838383838 0.01 0.00050009999) +(0.3888888889 0 0.00050009999) +(0.3888888889 2.5e-05 0.00050009999) +(0.3888888889 7.08119053e-05 0.00050009999) +(0.3888888889 0.00015426567 0.00050009999) +(0.3888888889 0.0003046635713 0.00050009999) +(0.3888888889 0.0005705243934 0.00050009999) +(0.3888888889 0.001024837958 0.00050009999) +(0.3888888889 0.001758019915 0.00050009999) +(0.3888888889 0.002838575912 0.00050009999) +(0.3888888889 0.004235474916 0.00050009999) +(0.3888888889 0.005764525084 0.00050009999) +(0.3888888889 0.007161424088 0.00050009999) +(0.3888888889 0.008241980085 0.00050009999) +(0.3888888889 0.008975162042 0.00050009999) +(0.3888888889 0.009429475607 0.00050009999) +(0.3888888889 0.009695336429 0.00050009999) +(0.3888888889 0.00984573433 0.00050009999) +(0.3888888889 0.009929188095 0.00050009999) +(0.3888888889 0.009975 0.00050009999) +(0.3888888889 0.01 0.00050009999) +(0.3939393939 0 0.00050009999) +(0.3939393939 2.5e-05 0.00050009999) +(0.3939393939 7.08119053e-05 0.00050009999) +(0.3939393939 0.00015426567 0.00050009999) +(0.3939393939 0.0003046635713 0.00050009999) +(0.3939393939 0.0005705243934 0.00050009999) +(0.3939393939 0.001024837958 0.00050009999) +(0.3939393939 0.001758019915 0.00050009999) +(0.3939393939 0.002838575912 0.00050009999) +(0.3939393939 0.004235474916 0.00050009999) +(0.3939393939 0.005764525084 0.00050009999) +(0.3939393939 0.007161424088 0.00050009999) +(0.3939393939 0.008241980085 0.00050009999) +(0.3939393939 0.008975162042 0.00050009999) +(0.3939393939 0.009429475607 0.00050009999) +(0.3939393939 0.009695336429 0.00050009999) +(0.3939393939 0.00984573433 0.00050009999) +(0.3939393939 0.009929188095 0.00050009999) +(0.3939393939 0.009975 0.00050009999) +(0.3939393939 0.01 0.00050009999) +(0.398989899 0 0.00050009999) +(0.398989899 2.5e-05 0.00050009999) +(0.398989899 7.08119053e-05 0.00050009999) +(0.398989899 0.00015426567 0.00050009999) +(0.398989899 0.0003046635713 0.00050009999) +(0.398989899 0.0005705243934 0.00050009999) +(0.398989899 0.001024837958 0.00050009999) +(0.398989899 0.001758019915 0.00050009999) +(0.398989899 0.002838575912 0.00050009999) +(0.398989899 0.004235474916 0.00050009999) +(0.398989899 0.005764525084 0.00050009999) +(0.398989899 0.007161424088 0.00050009999) +(0.398989899 0.008241980085 0.00050009999) +(0.398989899 0.008975162042 0.00050009999) +(0.398989899 0.009429475607 0.00050009999) +(0.398989899 0.009695336429 0.00050009999) +(0.398989899 0.00984573433 0.00050009999) +(0.398989899 0.009929188095 0.00050009999) +(0.398989899 0.009975 0.00050009999) +(0.398989899 0.01 0.00050009999) +(0.404040404 0 0.00050009999) +(0.404040404 2.5e-05 0.00050009999) +(0.404040404 7.08119053e-05 0.00050009999) +(0.404040404 0.00015426567 0.00050009999) +(0.404040404 0.0003046635713 0.00050009999) +(0.404040404 0.0005705243934 0.00050009999) +(0.404040404 0.001024837958 0.00050009999) +(0.404040404 0.001758019915 0.00050009999) +(0.404040404 0.002838575912 0.00050009999) +(0.404040404 0.004235474916 0.00050009999) +(0.404040404 0.005764525084 0.00050009999) +(0.404040404 0.007161424088 0.00050009999) +(0.404040404 0.008241980085 0.00050009999) +(0.404040404 0.008975162042 0.00050009999) +(0.404040404 0.009429475607 0.00050009999) +(0.404040404 0.009695336429 0.00050009999) +(0.404040404 0.00984573433 0.00050009999) +(0.404040404 0.009929188095 0.00050009999) +(0.404040404 0.009975 0.00050009999) +(0.404040404 0.01 0.00050009999) +(0.4090909091 0 0.00050009999) +(0.4090909091 2.5e-05 0.00050009999) +(0.4090909091 7.08119053e-05 0.00050009999) +(0.4090909091 0.00015426567 0.00050009999) +(0.4090909091 0.0003046635713 0.00050009999) +(0.4090909091 0.0005705243934 0.00050009999) +(0.4090909091 0.001024837958 0.00050009999) +(0.4090909091 0.001758019915 0.00050009999) +(0.4090909091 0.002838575912 0.00050009999) +(0.4090909091 0.004235474916 0.00050009999) +(0.4090909091 0.005764525084 0.00050009999) +(0.4090909091 0.007161424088 0.00050009999) +(0.4090909091 0.008241980085 0.00050009999) +(0.4090909091 0.008975162042 0.00050009999) +(0.4090909091 0.009429475607 0.00050009999) +(0.4090909091 0.009695336429 0.00050009999) +(0.4090909091 0.00984573433 0.00050009999) +(0.4090909091 0.009929188095 0.00050009999) +(0.4090909091 0.009975 0.00050009999) +(0.4090909091 0.01 0.00050009999) +(0.4141414141 0 0.00050009999) +(0.4141414141 2.5e-05 0.00050009999) +(0.4141414141 7.08119053e-05 0.00050009999) +(0.4141414141 0.00015426567 0.00050009999) +(0.4141414141 0.0003046635713 0.00050009999) +(0.4141414141 0.0005705243934 0.00050009999) +(0.4141414141 0.001024837958 0.00050009999) +(0.4141414141 0.001758019915 0.00050009999) +(0.4141414141 0.002838575912 0.00050009999) +(0.4141414141 0.004235474916 0.00050009999) +(0.4141414141 0.005764525084 0.00050009999) +(0.4141414141 0.007161424088 0.00050009999) +(0.4141414141 0.008241980085 0.00050009999) +(0.4141414141 0.008975162042 0.00050009999) +(0.4141414141 0.009429475607 0.00050009999) +(0.4141414141 0.009695336429 0.00050009999) +(0.4141414141 0.00984573433 0.00050009999) +(0.4141414141 0.009929188095 0.00050009999) +(0.4141414141 0.009975 0.00050009999) +(0.4141414141 0.01 0.00050009999) +(0.4191919192 0 0.00050009999) +(0.4191919192 2.5e-05 0.00050009999) +(0.4191919192 7.08119053e-05 0.00050009999) +(0.4191919192 0.00015426567 0.00050009999) +(0.4191919192 0.0003046635713 0.00050009999) +(0.4191919192 0.0005705243934 0.00050009999) +(0.4191919192 0.001024837958 0.00050009999) +(0.4191919192 0.001758019915 0.00050009999) +(0.4191919192 0.002838575912 0.00050009999) +(0.4191919192 0.004235474916 0.00050009999) +(0.4191919192 0.005764525084 0.00050009999) +(0.4191919192 0.007161424088 0.00050009999) +(0.4191919192 0.008241980085 0.00050009999) +(0.4191919192 0.008975162042 0.00050009999) +(0.4191919192 0.009429475607 0.00050009999) +(0.4191919192 0.009695336429 0.00050009999) +(0.4191919192 0.00984573433 0.00050009999) +(0.4191919192 0.009929188095 0.00050009999) +(0.4191919192 0.009975 0.00050009999) +(0.4191919192 0.01 0.00050009999) +(0.4242424242 0 0.00050009999) +(0.4242424242 2.5e-05 0.00050009999) +(0.4242424242 7.08119053e-05 0.00050009999) +(0.4242424242 0.00015426567 0.00050009999) +(0.4242424242 0.0003046635713 0.00050009999) +(0.4242424242 0.0005705243934 0.00050009999) +(0.4242424242 0.001024837958 0.00050009999) +(0.4242424242 0.001758019915 0.00050009999) +(0.4242424242 0.002838575912 0.00050009999) +(0.4242424242 0.004235474916 0.00050009999) +(0.4242424242 0.005764525084 0.00050009999) +(0.4242424242 0.007161424088 0.00050009999) +(0.4242424242 0.008241980085 0.00050009999) +(0.4242424242 0.008975162042 0.00050009999) +(0.4242424242 0.009429475607 0.00050009999) +(0.4242424242 0.009695336429 0.00050009999) +(0.4242424242 0.00984573433 0.00050009999) +(0.4242424242 0.009929188095 0.00050009999) +(0.4242424242 0.009975 0.00050009999) +(0.4242424242 0.01 0.00050009999) +(0.4292929293 0 0.00050009999) +(0.4292929293 2.5e-05 0.00050009999) +(0.4292929293 7.08119053e-05 0.00050009999) +(0.4292929293 0.00015426567 0.00050009999) +(0.4292929293 0.0003046635713 0.00050009999) +(0.4292929293 0.0005705243934 0.00050009999) +(0.4292929293 0.001024837958 0.00050009999) +(0.4292929293 0.001758019915 0.00050009999) +(0.4292929293 0.002838575912 0.00050009999) +(0.4292929293 0.004235474916 0.00050009999) +(0.4292929293 0.005764525084 0.00050009999) +(0.4292929293 0.007161424088 0.00050009999) +(0.4292929293 0.008241980085 0.00050009999) +(0.4292929293 0.008975162042 0.00050009999) +(0.4292929293 0.009429475607 0.00050009999) +(0.4292929293 0.009695336429 0.00050009999) +(0.4292929293 0.00984573433 0.00050009999) +(0.4292929293 0.009929188095 0.00050009999) +(0.4292929293 0.009975 0.00050009999) +(0.4292929293 0.01 0.00050009999) +(0.4343434343 0 0.00050009999) +(0.4343434343 2.5e-05 0.00050009999) +(0.4343434343 7.08119053e-05 0.00050009999) +(0.4343434343 0.00015426567 0.00050009999) +(0.4343434343 0.0003046635713 0.00050009999) +(0.4343434343 0.0005705243934 0.00050009999) +(0.4343434343 0.001024837958 0.00050009999) +(0.4343434343 0.001758019915 0.00050009999) +(0.4343434343 0.002838575912 0.00050009999) +(0.4343434343 0.004235474916 0.00050009999) +(0.4343434343 0.005764525084 0.00050009999) +(0.4343434343 0.007161424088 0.00050009999) +(0.4343434343 0.008241980085 0.00050009999) +(0.4343434343 0.008975162042 0.00050009999) +(0.4343434343 0.009429475607 0.00050009999) +(0.4343434343 0.009695336429 0.00050009999) +(0.4343434343 0.00984573433 0.00050009999) +(0.4343434343 0.009929188095 0.00050009999) +(0.4343434343 0.009975 0.00050009999) +(0.4343434343 0.01 0.00050009999) +(0.4393939394 0 0.00050009999) +(0.4393939394 2.5e-05 0.00050009999) +(0.4393939394 7.08119053e-05 0.00050009999) +(0.4393939394 0.00015426567 0.00050009999) +(0.4393939394 0.0003046635713 0.00050009999) +(0.4393939394 0.0005705243934 0.00050009999) +(0.4393939394 0.001024837958 0.00050009999) +(0.4393939394 0.001758019915 0.00050009999) +(0.4393939394 0.002838575912 0.00050009999) +(0.4393939394 0.004235474916 0.00050009999) +(0.4393939394 0.005764525084 0.00050009999) +(0.4393939394 0.007161424088 0.00050009999) +(0.4393939394 0.008241980085 0.00050009999) +(0.4393939394 0.008975162042 0.00050009999) +(0.4393939394 0.009429475607 0.00050009999) +(0.4393939394 0.009695336429 0.00050009999) +(0.4393939394 0.00984573433 0.00050009999) +(0.4393939394 0.009929188095 0.00050009999) +(0.4393939394 0.009975 0.00050009999) +(0.4393939394 0.01 0.00050009999) +(0.4444444444 0 0.00050009999) +(0.4444444444 2.5e-05 0.00050009999) +(0.4444444444 7.08119053e-05 0.00050009999) +(0.4444444444 0.00015426567 0.00050009999) +(0.4444444444 0.0003046635713 0.00050009999) +(0.4444444444 0.0005705243934 0.00050009999) +(0.4444444444 0.001024837958 0.00050009999) +(0.4444444444 0.001758019915 0.00050009999) +(0.4444444444 0.002838575912 0.00050009999) +(0.4444444444 0.004235474916 0.00050009999) +(0.4444444444 0.005764525084 0.00050009999) +(0.4444444444 0.007161424088 0.00050009999) +(0.4444444444 0.008241980085 0.00050009999) +(0.4444444444 0.008975162042 0.00050009999) +(0.4444444444 0.009429475607 0.00050009999) +(0.4444444444 0.009695336429 0.00050009999) +(0.4444444444 0.00984573433 0.00050009999) +(0.4444444444 0.009929188095 0.00050009999) +(0.4444444444 0.009975 0.00050009999) +(0.4444444444 0.01 0.00050009999) +(0.4494949495 0 0.00050009999) +(0.4494949495 2.5e-05 0.00050009999) +(0.4494949495 7.08119053e-05 0.00050009999) +(0.4494949495 0.00015426567 0.00050009999) +(0.4494949495 0.0003046635713 0.00050009999) +(0.4494949495 0.0005705243934 0.00050009999) +(0.4494949495 0.001024837958 0.00050009999) +(0.4494949495 0.001758019915 0.00050009999) +(0.4494949495 0.002838575912 0.00050009999) +(0.4494949495 0.004235474916 0.00050009999) +(0.4494949495 0.005764525084 0.00050009999) +(0.4494949495 0.007161424088 0.00050009999) +(0.4494949495 0.008241980085 0.00050009999) +(0.4494949495 0.008975162042 0.00050009999) +(0.4494949495 0.009429475607 0.00050009999) +(0.4494949495 0.009695336429 0.00050009999) +(0.4494949495 0.00984573433 0.00050009999) +(0.4494949495 0.009929188095 0.00050009999) +(0.4494949495 0.009975 0.00050009999) +(0.4494949495 0.01 0.00050009999) +(0.4545454545 0 0.00050009999) +(0.4545454545 2.5e-05 0.00050009999) +(0.4545454545 7.08119053e-05 0.00050009999) +(0.4545454545 0.00015426567 0.00050009999) +(0.4545454545 0.0003046635713 0.00050009999) +(0.4545454545 0.0005705243934 0.00050009999) +(0.4545454545 0.001024837958 0.00050009999) +(0.4545454545 0.001758019915 0.00050009999) +(0.4545454545 0.002838575912 0.00050009999) +(0.4545454545 0.004235474916 0.00050009999) +(0.4545454545 0.005764525084 0.00050009999) +(0.4545454545 0.007161424088 0.00050009999) +(0.4545454545 0.008241980085 0.00050009999) +(0.4545454545 0.008975162042 0.00050009999) +(0.4545454545 0.009429475607 0.00050009999) +(0.4545454545 0.009695336429 0.00050009999) +(0.4545454545 0.00984573433 0.00050009999) +(0.4545454545 0.009929188095 0.00050009999) +(0.4545454545 0.009975 0.00050009999) +(0.4545454545 0.01 0.00050009999) +(0.4595959596 0 0.00050009999) +(0.4595959596 2.5e-05 0.00050009999) +(0.4595959596 7.08119053e-05 0.00050009999) +(0.4595959596 0.00015426567 0.00050009999) +(0.4595959596 0.0003046635713 0.00050009999) +(0.4595959596 0.0005705243934 0.00050009999) +(0.4595959596 0.001024837958 0.00050009999) +(0.4595959596 0.001758019915 0.00050009999) +(0.4595959596 0.002838575912 0.00050009999) +(0.4595959596 0.004235474916 0.00050009999) +(0.4595959596 0.005764525084 0.00050009999) +(0.4595959596 0.007161424088 0.00050009999) +(0.4595959596 0.008241980085 0.00050009999) +(0.4595959596 0.008975162042 0.00050009999) +(0.4595959596 0.009429475607 0.00050009999) +(0.4595959596 0.009695336429 0.00050009999) +(0.4595959596 0.00984573433 0.00050009999) +(0.4595959596 0.009929188095 0.00050009999) +(0.4595959596 0.009975 0.00050009999) +(0.4595959596 0.01 0.00050009999) +(0.4646464646 0 0.00050009999) +(0.4646464646 2.5e-05 0.00050009999) +(0.4646464646 7.08119053e-05 0.00050009999) +(0.4646464646 0.00015426567 0.00050009999) +(0.4646464646 0.0003046635713 0.00050009999) +(0.4646464646 0.0005705243934 0.00050009999) +(0.4646464646 0.001024837958 0.00050009999) +(0.4646464646 0.001758019915 0.00050009999) +(0.4646464646 0.002838575912 0.00050009999) +(0.4646464646 0.004235474916 0.00050009999) +(0.4646464646 0.005764525084 0.00050009999) +(0.4646464646 0.007161424088 0.00050009999) +(0.4646464646 0.008241980085 0.00050009999) +(0.4646464646 0.008975162042 0.00050009999) +(0.4646464646 0.009429475607 0.00050009999) +(0.4646464646 0.009695336429 0.00050009999) +(0.4646464646 0.00984573433 0.00050009999) +(0.4646464646 0.009929188095 0.00050009999) +(0.4646464646 0.009975 0.00050009999) +(0.4646464646 0.01 0.00050009999) +(0.4696969697 0 0.00050009999) +(0.4696969697 2.5e-05 0.00050009999) +(0.4696969697 7.08119053e-05 0.00050009999) +(0.4696969697 0.00015426567 0.00050009999) +(0.4696969697 0.0003046635713 0.00050009999) +(0.4696969697 0.0005705243934 0.00050009999) +(0.4696969697 0.001024837958 0.00050009999) +(0.4696969697 0.001758019915 0.00050009999) +(0.4696969697 0.002838575912 0.00050009999) +(0.4696969697 0.004235474916 0.00050009999) +(0.4696969697 0.005764525084 0.00050009999) +(0.4696969697 0.007161424088 0.00050009999) +(0.4696969697 0.008241980085 0.00050009999) +(0.4696969697 0.008975162042 0.00050009999) +(0.4696969697 0.009429475607 0.00050009999) +(0.4696969697 0.009695336429 0.00050009999) +(0.4696969697 0.00984573433 0.00050009999) +(0.4696969697 0.009929188095 0.00050009999) +(0.4696969697 0.009975 0.00050009999) +(0.4696969697 0.01 0.00050009999) +(0.4747474747 0 0.00050009999) +(0.4747474747 2.5e-05 0.00050009999) +(0.4747474747 7.08119053e-05 0.00050009999) +(0.4747474747 0.00015426567 0.00050009999) +(0.4747474747 0.0003046635713 0.00050009999) +(0.4747474747 0.0005705243934 0.00050009999) +(0.4747474747 0.001024837958 0.00050009999) +(0.4747474747 0.001758019915 0.00050009999) +(0.4747474747 0.002838575912 0.00050009999) +(0.4747474747 0.004235474916 0.00050009999) +(0.4747474747 0.005764525084 0.00050009999) +(0.4747474747 0.007161424088 0.00050009999) +(0.4747474747 0.008241980085 0.00050009999) +(0.4747474747 0.008975162042 0.00050009999) +(0.4747474747 0.009429475607 0.00050009999) +(0.4747474747 0.009695336429 0.00050009999) +(0.4747474747 0.00984573433 0.00050009999) +(0.4747474747 0.009929188095 0.00050009999) +(0.4747474747 0.009975 0.00050009999) +(0.4747474747 0.01 0.00050009999) +(0.4797979798 0 0.00050009999) +(0.4797979798 2.5e-05 0.00050009999) +(0.4797979798 7.08119053e-05 0.00050009999) +(0.4797979798 0.00015426567 0.00050009999) +(0.4797979798 0.0003046635713 0.00050009999) +(0.4797979798 0.0005705243934 0.00050009999) +(0.4797979798 0.001024837958 0.00050009999) +(0.4797979798 0.001758019915 0.00050009999) +(0.4797979798 0.002838575912 0.00050009999) +(0.4797979798 0.004235474916 0.00050009999) +(0.4797979798 0.005764525084 0.00050009999) +(0.4797979798 0.007161424088 0.00050009999) +(0.4797979798 0.008241980085 0.00050009999) +(0.4797979798 0.008975162042 0.00050009999) +(0.4797979798 0.009429475607 0.00050009999) +(0.4797979798 0.009695336429 0.00050009999) +(0.4797979798 0.00984573433 0.00050009999) +(0.4797979798 0.009929188095 0.00050009999) +(0.4797979798 0.009975 0.00050009999) +(0.4797979798 0.01 0.00050009999) +(0.4848484848 0 0.00050009999) +(0.4848484848 2.5e-05 0.00050009999) +(0.4848484848 7.08119053e-05 0.00050009999) +(0.4848484848 0.00015426567 0.00050009999) +(0.4848484848 0.0003046635713 0.00050009999) +(0.4848484848 0.0005705243934 0.00050009999) +(0.4848484848 0.001024837958 0.00050009999) +(0.4848484848 0.001758019915 0.00050009999) +(0.4848484848 0.002838575912 0.00050009999) +(0.4848484848 0.004235474916 0.00050009999) +(0.4848484848 0.005764525084 0.00050009999) +(0.4848484848 0.007161424088 0.00050009999) +(0.4848484848 0.008241980085 0.00050009999) +(0.4848484848 0.008975162042 0.00050009999) +(0.4848484848 0.009429475607 0.00050009999) +(0.4848484848 0.009695336429 0.00050009999) +(0.4848484848 0.00984573433 0.00050009999) +(0.4848484848 0.009929188095 0.00050009999) +(0.4848484848 0.009975 0.00050009999) +(0.4848484848 0.01 0.00050009999) +(0.4898989899 0 0.00050009999) +(0.4898989899 2.5e-05 0.00050009999) +(0.4898989899 7.08119053e-05 0.00050009999) +(0.4898989899 0.00015426567 0.00050009999) +(0.4898989899 0.0003046635713 0.00050009999) +(0.4898989899 0.0005705243934 0.00050009999) +(0.4898989899 0.001024837958 0.00050009999) +(0.4898989899 0.001758019915 0.00050009999) +(0.4898989899 0.002838575912 0.00050009999) +(0.4898989899 0.004235474916 0.00050009999) +(0.4898989899 0.005764525084 0.00050009999) +(0.4898989899 0.007161424088 0.00050009999) +(0.4898989899 0.008241980085 0.00050009999) +(0.4898989899 0.008975162042 0.00050009999) +(0.4898989899 0.009429475607 0.00050009999) +(0.4898989899 0.009695336429 0.00050009999) +(0.4898989899 0.00984573433 0.00050009999) +(0.4898989899 0.009929188095 0.00050009999) +(0.4898989899 0.009975 0.00050009999) +(0.4898989899 0.01 0.00050009999) +(0.4949494949 0 0.00050009999) +(0.4949494949 2.5e-05 0.00050009999) +(0.4949494949 7.08119053e-05 0.00050009999) +(0.4949494949 0.00015426567 0.00050009999) +(0.4949494949 0.0003046635713 0.00050009999) +(0.4949494949 0.0005705243934 0.00050009999) +(0.4949494949 0.001024837958 0.00050009999) +(0.4949494949 0.001758019915 0.00050009999) +(0.4949494949 0.002838575912 0.00050009999) +(0.4949494949 0.004235474916 0.00050009999) +(0.4949494949 0.005764525084 0.00050009999) +(0.4949494949 0.007161424088 0.00050009999) +(0.4949494949 0.008241980085 0.00050009999) +(0.4949494949 0.008975162042 0.00050009999) +(0.4949494949 0.009429475607 0.00050009999) +(0.4949494949 0.009695336429 0.00050009999) +(0.4949494949 0.00984573433 0.00050009999) +(0.4949494949 0.009929188095 0.00050009999) +(0.4949494949 0.009975 0.00050009999) +(0.4949494949 0.01 0.00050009999) +(0.5 0 0.00050009999) +(0.5 2.5e-05 0.00050009999) +(0.5 7.08119053e-05 0.00050009999) +(0.5 0.00015426567 0.00050009999) +(0.5 0.0003046635713 0.00050009999) +(0.5 0.0005705243934 0.00050009999) +(0.5 0.001024837958 0.00050009999) +(0.5 0.001758019915 0.00050009999) +(0.5 0.002838575912 0.00050009999) +(0.5 0.004235474916 0.00050009999) +(0.5 0.005764525084 0.00050009999) +(0.5 0.007161424088 0.00050009999) +(0.5 0.008241980085 0.00050009999) +(0.5 0.008975162042 0.00050009999) +(0.5 0.009429475607 0.00050009999) +(0.5 0.009695336429 0.00050009999) +(0.5 0.00984573433 0.00050009999) +(0.5 0.009929188095 0.00050009999) +(0.5 0.009975 0.00050009999) +(0.5 0.01 0.00050009999) +(0 0 -0.00050009999) +(0.005050505051 0 -0.00050009999) +(0 2.5e-05 -0.00050009999) +(0.005050505051 2.5e-05 -0.00050009999) +(0 7.08119053e-05 -0.00050009999) +(0.005050505051 7.08119053e-05 -0.00050009999) +(0 0.00015426567 -0.00050009999) +(0.005050505051 0.00015426567 -0.00050009999) +(0 0.0003046635713 -0.00050009999) +(0.005050505051 0.0003046635713 -0.00050009999) +(0 0.0005705243934 -0.00050009999) +(0.005050505051 0.0005705243934 -0.00050009999) +(0 0.001024837958 -0.00050009999) +(0.005050505051 0.001024837958 -0.00050009999) +(0 0.001758019915 -0.00050009999) +(0.005050505051 0.001758019915 -0.00050009999) +(0 0.002838575912 -0.00050009999) +(0.005050505051 0.002838575912 -0.00050009999) +(0 0.004235474916 -0.00050009999) +(0.005050505051 0.004235474916 -0.00050009999) +(0 0.005764525084 -0.00050009999) +(0.005050505051 0.005764525084 -0.00050009999) +(0 0.007161424088 -0.00050009999) +(0.005050505051 0.007161424088 -0.00050009999) +(0 0.008241980085 -0.00050009999) +(0.005050505051 0.008241980085 -0.00050009999) +(0 0.008975162042 -0.00050009999) +(0.005050505051 0.008975162042 -0.00050009999) +(0 0.009429475607 -0.00050009999) +(0.005050505051 0.009429475607 -0.00050009999) +(0 0.009695336429 -0.00050009999) +(0.005050505051 0.009695336429 -0.00050009999) +(0 0.00984573433 -0.00050009999) +(0.005050505051 0.00984573433 -0.00050009999) +(0 0.009929188095 -0.00050009999) +(0.005050505051 0.009929188095 -0.00050009999) +(0 0.009975 -0.00050009999) +(0.005050505051 0.009975 -0.00050009999) +(0 0.01 -0.00050009999) +(0.005050505051 0.01 -0.00050009999) +(0.0101010101 0 -0.00050009999) +(0.0101010101 2.5e-05 -0.00050009999) +(0.0101010101 7.08119053e-05 -0.00050009999) +(0.0101010101 0.00015426567 -0.00050009999) +(0.0101010101 0.0003046635713 -0.00050009999) +(0.0101010101 0.0005705243934 -0.00050009999) +(0.0101010101 0.001024837958 -0.00050009999) +(0.0101010101 0.001758019915 -0.00050009999) +(0.0101010101 0.002838575912 -0.00050009999) +(0.0101010101 0.004235474916 -0.00050009999) +(0.0101010101 0.005764525084 -0.00050009999) +(0.0101010101 0.007161424088 -0.00050009999) +(0.0101010101 0.008241980085 -0.00050009999) +(0.0101010101 0.008975162042 -0.00050009999) +(0.0101010101 0.009429475607 -0.00050009999) +(0.0101010101 0.009695336429 -0.00050009999) +(0.0101010101 0.00984573433 -0.00050009999) +(0.0101010101 0.009929188095 -0.00050009999) +(0.0101010101 0.009975 -0.00050009999) +(0.0101010101 0.01 -0.00050009999) +(0.01515151515 0 -0.00050009999) +(0.01515151515 2.5e-05 -0.00050009999) +(0.01515151515 7.08119053e-05 -0.00050009999) +(0.01515151515 0.00015426567 -0.00050009999) +(0.01515151515 0.0003046635713 -0.00050009999) +(0.01515151515 0.0005705243934 -0.00050009999) +(0.01515151515 0.001024837958 -0.00050009999) +(0.01515151515 0.001758019915 -0.00050009999) +(0.01515151515 0.002838575912 -0.00050009999) +(0.01515151515 0.004235474916 -0.00050009999) +(0.01515151515 0.005764525084 -0.00050009999) +(0.01515151515 0.007161424088 -0.00050009999) +(0.01515151515 0.008241980085 -0.00050009999) +(0.01515151515 0.008975162042 -0.00050009999) +(0.01515151515 0.009429475607 -0.00050009999) +(0.01515151515 0.009695336429 -0.00050009999) +(0.01515151515 0.00984573433 -0.00050009999) +(0.01515151515 0.009929188095 -0.00050009999) +(0.01515151515 0.009975 -0.00050009999) +(0.01515151515 0.01 -0.00050009999) +(0.0202020202 0 -0.00050009999) +(0.0202020202 2.5e-05 -0.00050009999) +(0.0202020202 7.08119053e-05 -0.00050009999) +(0.0202020202 0.00015426567 -0.00050009999) +(0.0202020202 0.0003046635713 -0.00050009999) +(0.0202020202 0.0005705243934 -0.00050009999) +(0.0202020202 0.001024837958 -0.00050009999) +(0.0202020202 0.001758019915 -0.00050009999) +(0.0202020202 0.002838575912 -0.00050009999) +(0.0202020202 0.004235474916 -0.00050009999) +(0.0202020202 0.005764525084 -0.00050009999) +(0.0202020202 0.007161424088 -0.00050009999) +(0.0202020202 0.008241980085 -0.00050009999) +(0.0202020202 0.008975162042 -0.00050009999) +(0.0202020202 0.009429475607 -0.00050009999) +(0.0202020202 0.009695336429 -0.00050009999) +(0.0202020202 0.00984573433 -0.00050009999) +(0.0202020202 0.009929188095 -0.00050009999) +(0.0202020202 0.009975 -0.00050009999) +(0.0202020202 0.01 -0.00050009999) +(0.02525252525 0 -0.00050009999) +(0.02525252525 2.5e-05 -0.00050009999) +(0.02525252525 7.08119053e-05 -0.00050009999) +(0.02525252525 0.00015426567 -0.00050009999) +(0.02525252525 0.0003046635713 -0.00050009999) +(0.02525252525 0.0005705243934 -0.00050009999) +(0.02525252525 0.001024837958 -0.00050009999) +(0.02525252525 0.001758019915 -0.00050009999) +(0.02525252525 0.002838575912 -0.00050009999) +(0.02525252525 0.004235474916 -0.00050009999) +(0.02525252525 0.005764525084 -0.00050009999) +(0.02525252525 0.007161424088 -0.00050009999) +(0.02525252525 0.008241980085 -0.00050009999) +(0.02525252525 0.008975162042 -0.00050009999) +(0.02525252525 0.009429475607 -0.00050009999) +(0.02525252525 0.009695336429 -0.00050009999) +(0.02525252525 0.00984573433 -0.00050009999) +(0.02525252525 0.009929188095 -0.00050009999) +(0.02525252525 0.009975 -0.00050009999) +(0.02525252525 0.01 -0.00050009999) +(0.0303030303 0 -0.00050009999) +(0.0303030303 2.5e-05 -0.00050009999) +(0.0303030303 7.08119053e-05 -0.00050009999) +(0.0303030303 0.00015426567 -0.00050009999) +(0.0303030303 0.0003046635713 -0.00050009999) +(0.0303030303 0.0005705243934 -0.00050009999) +(0.0303030303 0.001024837958 -0.00050009999) +(0.0303030303 0.001758019915 -0.00050009999) +(0.0303030303 0.002838575912 -0.00050009999) +(0.0303030303 0.004235474916 -0.00050009999) +(0.0303030303 0.005764525084 -0.00050009999) +(0.0303030303 0.007161424088 -0.00050009999) +(0.0303030303 0.008241980085 -0.00050009999) +(0.0303030303 0.008975162042 -0.00050009999) +(0.0303030303 0.009429475607 -0.00050009999) +(0.0303030303 0.009695336429 -0.00050009999) +(0.0303030303 0.00984573433 -0.00050009999) +(0.0303030303 0.009929188095 -0.00050009999) +(0.0303030303 0.009975 -0.00050009999) +(0.0303030303 0.01 -0.00050009999) +(0.03535353535 0 -0.00050009999) +(0.03535353535 2.5e-05 -0.00050009999) +(0.03535353535 7.08119053e-05 -0.00050009999) +(0.03535353535 0.00015426567 -0.00050009999) +(0.03535353535 0.0003046635713 -0.00050009999) +(0.03535353535 0.0005705243934 -0.00050009999) +(0.03535353535 0.001024837958 -0.00050009999) +(0.03535353535 0.001758019915 -0.00050009999) +(0.03535353535 0.002838575912 -0.00050009999) +(0.03535353535 0.004235474916 -0.00050009999) +(0.03535353535 0.005764525084 -0.00050009999) +(0.03535353535 0.007161424088 -0.00050009999) +(0.03535353535 0.008241980085 -0.00050009999) +(0.03535353535 0.008975162042 -0.00050009999) +(0.03535353535 0.009429475607 -0.00050009999) +(0.03535353535 0.009695336429 -0.00050009999) +(0.03535353535 0.00984573433 -0.00050009999) +(0.03535353535 0.009929188095 -0.00050009999) +(0.03535353535 0.009975 -0.00050009999) +(0.03535353535 0.01 -0.00050009999) +(0.0404040404 0 -0.00050009999) +(0.0404040404 2.5e-05 -0.00050009999) +(0.0404040404 7.08119053e-05 -0.00050009999) +(0.0404040404 0.00015426567 -0.00050009999) +(0.0404040404 0.0003046635713 -0.00050009999) +(0.0404040404 0.0005705243934 -0.00050009999) +(0.0404040404 0.001024837958 -0.00050009999) +(0.0404040404 0.001758019915 -0.00050009999) +(0.0404040404 0.002838575912 -0.00050009999) +(0.0404040404 0.004235474916 -0.00050009999) +(0.0404040404 0.005764525084 -0.00050009999) +(0.0404040404 0.007161424088 -0.00050009999) +(0.0404040404 0.008241980085 -0.00050009999) +(0.0404040404 0.008975162042 -0.00050009999) +(0.0404040404 0.009429475607 -0.00050009999) +(0.0404040404 0.009695336429 -0.00050009999) +(0.0404040404 0.00984573433 -0.00050009999) +(0.0404040404 0.009929188095 -0.00050009999) +(0.0404040404 0.009975 -0.00050009999) +(0.0404040404 0.01 -0.00050009999) +(0.04545454545 0 -0.00050009999) +(0.04545454545 2.5e-05 -0.00050009999) +(0.04545454545 7.08119053e-05 -0.00050009999) +(0.04545454545 0.00015426567 -0.00050009999) +(0.04545454545 0.0003046635713 -0.00050009999) +(0.04545454545 0.0005705243934 -0.00050009999) +(0.04545454545 0.001024837958 -0.00050009999) +(0.04545454545 0.001758019915 -0.00050009999) +(0.04545454545 0.002838575912 -0.00050009999) +(0.04545454545 0.004235474916 -0.00050009999) +(0.04545454545 0.005764525084 -0.00050009999) +(0.04545454545 0.007161424088 -0.00050009999) +(0.04545454545 0.008241980085 -0.00050009999) +(0.04545454545 0.008975162042 -0.00050009999) +(0.04545454545 0.009429475607 -0.00050009999) +(0.04545454545 0.009695336429 -0.00050009999) +(0.04545454545 0.00984573433 -0.00050009999) +(0.04545454545 0.009929188095 -0.00050009999) +(0.04545454545 0.009975 -0.00050009999) +(0.04545454545 0.01 -0.00050009999) +(0.05050505051 0 -0.00050009999) +(0.05050505051 2.5e-05 -0.00050009999) +(0.05050505051 7.08119053e-05 -0.00050009999) +(0.05050505051 0.00015426567 -0.00050009999) +(0.05050505051 0.0003046635713 -0.00050009999) +(0.05050505051 0.0005705243934 -0.00050009999) +(0.05050505051 0.001024837958 -0.00050009999) +(0.05050505051 0.001758019915 -0.00050009999) +(0.05050505051 0.002838575912 -0.00050009999) +(0.05050505051 0.004235474916 -0.00050009999) +(0.05050505051 0.005764525084 -0.00050009999) +(0.05050505051 0.007161424088 -0.00050009999) +(0.05050505051 0.008241980085 -0.00050009999) +(0.05050505051 0.008975162042 -0.00050009999) +(0.05050505051 0.009429475607 -0.00050009999) +(0.05050505051 0.009695336429 -0.00050009999) +(0.05050505051 0.00984573433 -0.00050009999) +(0.05050505051 0.009929188095 -0.00050009999) +(0.05050505051 0.009975 -0.00050009999) +(0.05050505051 0.01 -0.00050009999) +(0.05555555556 0 -0.00050009999) +(0.05555555556 2.5e-05 -0.00050009999) +(0.05555555556 7.08119053e-05 -0.00050009999) +(0.05555555556 0.00015426567 -0.00050009999) +(0.05555555556 0.0003046635713 -0.00050009999) +(0.05555555556 0.0005705243934 -0.00050009999) +(0.05555555556 0.001024837958 -0.00050009999) +(0.05555555556 0.001758019915 -0.00050009999) +(0.05555555556 0.002838575912 -0.00050009999) +(0.05555555556 0.004235474916 -0.00050009999) +(0.05555555556 0.005764525084 -0.00050009999) +(0.05555555556 0.007161424088 -0.00050009999) +(0.05555555556 0.008241980085 -0.00050009999) +(0.05555555556 0.008975162042 -0.00050009999) +(0.05555555556 0.009429475607 -0.00050009999) +(0.05555555556 0.009695336429 -0.00050009999) +(0.05555555556 0.00984573433 -0.00050009999) +(0.05555555556 0.009929188095 -0.00050009999) +(0.05555555556 0.009975 -0.00050009999) +(0.05555555556 0.01 -0.00050009999) +(0.06060606061 0 -0.00050009999) +(0.06060606061 2.5e-05 -0.00050009999) +(0.06060606061 7.08119053e-05 -0.00050009999) +(0.06060606061 0.00015426567 -0.00050009999) +(0.06060606061 0.0003046635713 -0.00050009999) +(0.06060606061 0.0005705243934 -0.00050009999) +(0.06060606061 0.001024837958 -0.00050009999) +(0.06060606061 0.001758019915 -0.00050009999) +(0.06060606061 0.002838575912 -0.00050009999) +(0.06060606061 0.004235474916 -0.00050009999) +(0.06060606061 0.005764525084 -0.00050009999) +(0.06060606061 0.007161424088 -0.00050009999) +(0.06060606061 0.008241980085 -0.00050009999) +(0.06060606061 0.008975162042 -0.00050009999) +(0.06060606061 0.009429475607 -0.00050009999) +(0.06060606061 0.009695336429 -0.00050009999) +(0.06060606061 0.00984573433 -0.00050009999) +(0.06060606061 0.009929188095 -0.00050009999) +(0.06060606061 0.009975 -0.00050009999) +(0.06060606061 0.01 -0.00050009999) +(0.06565656566 0 -0.00050009999) +(0.06565656566 2.5e-05 -0.00050009999) +(0.06565656566 7.08119053e-05 -0.00050009999) +(0.06565656566 0.00015426567 -0.00050009999) +(0.06565656566 0.0003046635713 -0.00050009999) +(0.06565656566 0.0005705243934 -0.00050009999) +(0.06565656566 0.001024837958 -0.00050009999) +(0.06565656566 0.001758019915 -0.00050009999) +(0.06565656566 0.002838575912 -0.00050009999) +(0.06565656566 0.004235474916 -0.00050009999) +(0.06565656566 0.005764525084 -0.00050009999) +(0.06565656566 0.007161424088 -0.00050009999) +(0.06565656566 0.008241980085 -0.00050009999) +(0.06565656566 0.008975162042 -0.00050009999) +(0.06565656566 0.009429475607 -0.00050009999) +(0.06565656566 0.009695336429 -0.00050009999) +(0.06565656566 0.00984573433 -0.00050009999) +(0.06565656566 0.009929188095 -0.00050009999) +(0.06565656566 0.009975 -0.00050009999) +(0.06565656566 0.01 -0.00050009999) +(0.07070707071 0 -0.00050009999) +(0.07070707071 2.5e-05 -0.00050009999) +(0.07070707071 7.08119053e-05 -0.00050009999) +(0.07070707071 0.00015426567 -0.00050009999) +(0.07070707071 0.0003046635713 -0.00050009999) +(0.07070707071 0.0005705243934 -0.00050009999) +(0.07070707071 0.001024837958 -0.00050009999) +(0.07070707071 0.001758019915 -0.00050009999) +(0.07070707071 0.002838575912 -0.00050009999) +(0.07070707071 0.004235474916 -0.00050009999) +(0.07070707071 0.005764525084 -0.00050009999) +(0.07070707071 0.007161424088 -0.00050009999) +(0.07070707071 0.008241980085 -0.00050009999) +(0.07070707071 0.008975162042 -0.00050009999) +(0.07070707071 0.009429475607 -0.00050009999) +(0.07070707071 0.009695336429 -0.00050009999) +(0.07070707071 0.00984573433 -0.00050009999) +(0.07070707071 0.009929188095 -0.00050009999) +(0.07070707071 0.009975 -0.00050009999) +(0.07070707071 0.01 -0.00050009999) +(0.07575757576 0 -0.00050009999) +(0.07575757576 2.5e-05 -0.00050009999) +(0.07575757576 7.08119053e-05 -0.00050009999) +(0.07575757576 0.00015426567 -0.00050009999) +(0.07575757576 0.0003046635713 -0.00050009999) +(0.07575757576 0.0005705243934 -0.00050009999) +(0.07575757576 0.001024837958 -0.00050009999) +(0.07575757576 0.001758019915 -0.00050009999) +(0.07575757576 0.002838575912 -0.00050009999) +(0.07575757576 0.004235474916 -0.00050009999) +(0.07575757576 0.005764525084 -0.00050009999) +(0.07575757576 0.007161424088 -0.00050009999) +(0.07575757576 0.008241980085 -0.00050009999) +(0.07575757576 0.008975162042 -0.00050009999) +(0.07575757576 0.009429475607 -0.00050009999) +(0.07575757576 0.009695336429 -0.00050009999) +(0.07575757576 0.00984573433 -0.00050009999) +(0.07575757576 0.009929188095 -0.00050009999) +(0.07575757576 0.009975 -0.00050009999) +(0.07575757576 0.01 -0.00050009999) +(0.08080808081 0 -0.00050009999) +(0.08080808081 2.5e-05 -0.00050009999) +(0.08080808081 7.08119053e-05 -0.00050009999) +(0.08080808081 0.00015426567 -0.00050009999) +(0.08080808081 0.0003046635713 -0.00050009999) +(0.08080808081 0.0005705243934 -0.00050009999) +(0.08080808081 0.001024837958 -0.00050009999) +(0.08080808081 0.001758019915 -0.00050009999) +(0.08080808081 0.002838575912 -0.00050009999) +(0.08080808081 0.004235474916 -0.00050009999) +(0.08080808081 0.005764525084 -0.00050009999) +(0.08080808081 0.007161424088 -0.00050009999) +(0.08080808081 0.008241980085 -0.00050009999) +(0.08080808081 0.008975162042 -0.00050009999) +(0.08080808081 0.009429475607 -0.00050009999) +(0.08080808081 0.009695336429 -0.00050009999) +(0.08080808081 0.00984573433 -0.00050009999) +(0.08080808081 0.009929188095 -0.00050009999) +(0.08080808081 0.009975 -0.00050009999) +(0.08080808081 0.01 -0.00050009999) +(0.08585858586 0 -0.00050009999) +(0.08585858586 2.5e-05 -0.00050009999) +(0.08585858586 7.08119053e-05 -0.00050009999) +(0.08585858586 0.00015426567 -0.00050009999) +(0.08585858586 0.0003046635713 -0.00050009999) +(0.08585858586 0.0005705243934 -0.00050009999) +(0.08585858586 0.001024837958 -0.00050009999) +(0.08585858586 0.001758019915 -0.00050009999) +(0.08585858586 0.002838575912 -0.00050009999) +(0.08585858586 0.004235474916 -0.00050009999) +(0.08585858586 0.005764525084 -0.00050009999) +(0.08585858586 0.007161424088 -0.00050009999) +(0.08585858586 0.008241980085 -0.00050009999) +(0.08585858586 0.008975162042 -0.00050009999) +(0.08585858586 0.009429475607 -0.00050009999) +(0.08585858586 0.009695336429 -0.00050009999) +(0.08585858586 0.00984573433 -0.00050009999) +(0.08585858586 0.009929188095 -0.00050009999) +(0.08585858586 0.009975 -0.00050009999) +(0.08585858586 0.01 -0.00050009999) +(0.09090909091 0 -0.00050009999) +(0.09090909091 2.5e-05 -0.00050009999) +(0.09090909091 7.08119053e-05 -0.00050009999) +(0.09090909091 0.00015426567 -0.00050009999) +(0.09090909091 0.0003046635713 -0.00050009999) +(0.09090909091 0.0005705243934 -0.00050009999) +(0.09090909091 0.001024837958 -0.00050009999) +(0.09090909091 0.001758019915 -0.00050009999) +(0.09090909091 0.002838575912 -0.00050009999) +(0.09090909091 0.004235474916 -0.00050009999) +(0.09090909091 0.005764525084 -0.00050009999) +(0.09090909091 0.007161424088 -0.00050009999) +(0.09090909091 0.008241980085 -0.00050009999) +(0.09090909091 0.008975162042 -0.00050009999) +(0.09090909091 0.009429475607 -0.00050009999) +(0.09090909091 0.009695336429 -0.00050009999) +(0.09090909091 0.00984573433 -0.00050009999) +(0.09090909091 0.009929188095 -0.00050009999) +(0.09090909091 0.009975 -0.00050009999) +(0.09090909091 0.01 -0.00050009999) +(0.09595959596 0 -0.00050009999) +(0.09595959596 2.5e-05 -0.00050009999) +(0.09595959596 7.08119053e-05 -0.00050009999) +(0.09595959596 0.00015426567 -0.00050009999) +(0.09595959596 0.0003046635713 -0.00050009999) +(0.09595959596 0.0005705243934 -0.00050009999) +(0.09595959596 0.001024837958 -0.00050009999) +(0.09595959596 0.001758019915 -0.00050009999) +(0.09595959596 0.002838575912 -0.00050009999) +(0.09595959596 0.004235474916 -0.00050009999) +(0.09595959596 0.005764525084 -0.00050009999) +(0.09595959596 0.007161424088 -0.00050009999) +(0.09595959596 0.008241980085 -0.00050009999) +(0.09595959596 0.008975162042 -0.00050009999) +(0.09595959596 0.009429475607 -0.00050009999) +(0.09595959596 0.009695336429 -0.00050009999) +(0.09595959596 0.00984573433 -0.00050009999) +(0.09595959596 0.009929188095 -0.00050009999) +(0.09595959596 0.009975 -0.00050009999) +(0.09595959596 0.01 -0.00050009999) +(0.101010101 0 -0.00050009999) +(0.101010101 2.5e-05 -0.00050009999) +(0.101010101 7.08119053e-05 -0.00050009999) +(0.101010101 0.00015426567 -0.00050009999) +(0.101010101 0.0003046635713 -0.00050009999) +(0.101010101 0.0005705243934 -0.00050009999) +(0.101010101 0.001024837958 -0.00050009999) +(0.101010101 0.001758019915 -0.00050009999) +(0.101010101 0.002838575912 -0.00050009999) +(0.101010101 0.004235474916 -0.00050009999) +(0.101010101 0.005764525084 -0.00050009999) +(0.101010101 0.007161424088 -0.00050009999) +(0.101010101 0.008241980085 -0.00050009999) +(0.101010101 0.008975162042 -0.00050009999) +(0.101010101 0.009429475607 -0.00050009999) +(0.101010101 0.009695336429 -0.00050009999) +(0.101010101 0.00984573433 -0.00050009999) +(0.101010101 0.009929188095 -0.00050009999) +(0.101010101 0.009975 -0.00050009999) +(0.101010101 0.01 -0.00050009999) +(0.1060606061 0 -0.00050009999) +(0.1060606061 2.5e-05 -0.00050009999) +(0.1060606061 7.08119053e-05 -0.00050009999) +(0.1060606061 0.00015426567 -0.00050009999) +(0.1060606061 0.0003046635713 -0.00050009999) +(0.1060606061 0.0005705243934 -0.00050009999) +(0.1060606061 0.001024837958 -0.00050009999) +(0.1060606061 0.001758019915 -0.00050009999) +(0.1060606061 0.002838575912 -0.00050009999) +(0.1060606061 0.004235474916 -0.00050009999) +(0.1060606061 0.005764525084 -0.00050009999) +(0.1060606061 0.007161424088 -0.00050009999) +(0.1060606061 0.008241980085 -0.00050009999) +(0.1060606061 0.008975162042 -0.00050009999) +(0.1060606061 0.009429475607 -0.00050009999) +(0.1060606061 0.009695336429 -0.00050009999) +(0.1060606061 0.00984573433 -0.00050009999) +(0.1060606061 0.009929188095 -0.00050009999) +(0.1060606061 0.009975 -0.00050009999) +(0.1060606061 0.01 -0.00050009999) +(0.1111111111 0 -0.00050009999) +(0.1111111111 2.5e-05 -0.00050009999) +(0.1111111111 7.08119053e-05 -0.00050009999) +(0.1111111111 0.00015426567 -0.00050009999) +(0.1111111111 0.0003046635713 -0.00050009999) +(0.1111111111 0.0005705243934 -0.00050009999) +(0.1111111111 0.001024837958 -0.00050009999) +(0.1111111111 0.001758019915 -0.00050009999) +(0.1111111111 0.002838575912 -0.00050009999) +(0.1111111111 0.004235474916 -0.00050009999) +(0.1111111111 0.005764525084 -0.00050009999) +(0.1111111111 0.007161424088 -0.00050009999) +(0.1111111111 0.008241980085 -0.00050009999) +(0.1111111111 0.008975162042 -0.00050009999) +(0.1111111111 0.009429475607 -0.00050009999) +(0.1111111111 0.009695336429 -0.00050009999) +(0.1111111111 0.00984573433 -0.00050009999) +(0.1111111111 0.009929188095 -0.00050009999) +(0.1111111111 0.009975 -0.00050009999) +(0.1111111111 0.01 -0.00050009999) +(0.1161616162 0 -0.00050009999) +(0.1161616162 2.5e-05 -0.00050009999) +(0.1161616162 7.08119053e-05 -0.00050009999) +(0.1161616162 0.00015426567 -0.00050009999) +(0.1161616162 0.0003046635713 -0.00050009999) +(0.1161616162 0.0005705243934 -0.00050009999) +(0.1161616162 0.001024837958 -0.00050009999) +(0.1161616162 0.001758019915 -0.00050009999) +(0.1161616162 0.002838575912 -0.00050009999) +(0.1161616162 0.004235474916 -0.00050009999) +(0.1161616162 0.005764525084 -0.00050009999) +(0.1161616162 0.007161424088 -0.00050009999) +(0.1161616162 0.008241980085 -0.00050009999) +(0.1161616162 0.008975162042 -0.00050009999) +(0.1161616162 0.009429475607 -0.00050009999) +(0.1161616162 0.009695336429 -0.00050009999) +(0.1161616162 0.00984573433 -0.00050009999) +(0.1161616162 0.009929188095 -0.00050009999) +(0.1161616162 0.009975 -0.00050009999) +(0.1161616162 0.01 -0.00050009999) +(0.1212121212 0 -0.00050009999) +(0.1212121212 2.5e-05 -0.00050009999) +(0.1212121212 7.08119053e-05 -0.00050009999) +(0.1212121212 0.00015426567 -0.00050009999) +(0.1212121212 0.0003046635713 -0.00050009999) +(0.1212121212 0.0005705243934 -0.00050009999) +(0.1212121212 0.001024837958 -0.00050009999) +(0.1212121212 0.001758019915 -0.00050009999) +(0.1212121212 0.002838575912 -0.00050009999) +(0.1212121212 0.004235474916 -0.00050009999) +(0.1212121212 0.005764525084 -0.00050009999) +(0.1212121212 0.007161424088 -0.00050009999) +(0.1212121212 0.008241980085 -0.00050009999) +(0.1212121212 0.008975162042 -0.00050009999) +(0.1212121212 0.009429475607 -0.00050009999) +(0.1212121212 0.009695336429 -0.00050009999) +(0.1212121212 0.00984573433 -0.00050009999) +(0.1212121212 0.009929188095 -0.00050009999) +(0.1212121212 0.009975 -0.00050009999) +(0.1212121212 0.01 -0.00050009999) +(0.1262626263 0 -0.00050009999) +(0.1262626263 2.5e-05 -0.00050009999) +(0.1262626263 7.08119053e-05 -0.00050009999) +(0.1262626263 0.00015426567 -0.00050009999) +(0.1262626263 0.0003046635713 -0.00050009999) +(0.1262626263 0.0005705243934 -0.00050009999) +(0.1262626263 0.001024837958 -0.00050009999) +(0.1262626263 0.001758019915 -0.00050009999) +(0.1262626263 0.002838575912 -0.00050009999) +(0.1262626263 0.004235474916 -0.00050009999) +(0.1262626263 0.005764525084 -0.00050009999) +(0.1262626263 0.007161424088 -0.00050009999) +(0.1262626263 0.008241980085 -0.00050009999) +(0.1262626263 0.008975162042 -0.00050009999) +(0.1262626263 0.009429475607 -0.00050009999) +(0.1262626263 0.009695336429 -0.00050009999) +(0.1262626263 0.00984573433 -0.00050009999) +(0.1262626263 0.009929188095 -0.00050009999) +(0.1262626263 0.009975 -0.00050009999) +(0.1262626263 0.01 -0.00050009999) +(0.1313131313 0 -0.00050009999) +(0.1313131313 2.5e-05 -0.00050009999) +(0.1313131313 7.08119053e-05 -0.00050009999) +(0.1313131313 0.00015426567 -0.00050009999) +(0.1313131313 0.0003046635713 -0.00050009999) +(0.1313131313 0.0005705243934 -0.00050009999) +(0.1313131313 0.001024837958 -0.00050009999) +(0.1313131313 0.001758019915 -0.00050009999) +(0.1313131313 0.002838575912 -0.00050009999) +(0.1313131313 0.004235474916 -0.00050009999) +(0.1313131313 0.005764525084 -0.00050009999) +(0.1313131313 0.007161424088 -0.00050009999) +(0.1313131313 0.008241980085 -0.00050009999) +(0.1313131313 0.008975162042 -0.00050009999) +(0.1313131313 0.009429475607 -0.00050009999) +(0.1313131313 0.009695336429 -0.00050009999) +(0.1313131313 0.00984573433 -0.00050009999) +(0.1313131313 0.009929188095 -0.00050009999) +(0.1313131313 0.009975 -0.00050009999) +(0.1313131313 0.01 -0.00050009999) +(0.1363636364 0 -0.00050009999) +(0.1363636364 2.5e-05 -0.00050009999) +(0.1363636364 7.08119053e-05 -0.00050009999) +(0.1363636364 0.00015426567 -0.00050009999) +(0.1363636364 0.0003046635713 -0.00050009999) +(0.1363636364 0.0005705243934 -0.00050009999) +(0.1363636364 0.001024837958 -0.00050009999) +(0.1363636364 0.001758019915 -0.00050009999) +(0.1363636364 0.002838575912 -0.00050009999) +(0.1363636364 0.004235474916 -0.00050009999) +(0.1363636364 0.005764525084 -0.00050009999) +(0.1363636364 0.007161424088 -0.00050009999) +(0.1363636364 0.008241980085 -0.00050009999) +(0.1363636364 0.008975162042 -0.00050009999) +(0.1363636364 0.009429475607 -0.00050009999) +(0.1363636364 0.009695336429 -0.00050009999) +(0.1363636364 0.00984573433 -0.00050009999) +(0.1363636364 0.009929188095 -0.00050009999) +(0.1363636364 0.009975 -0.00050009999) +(0.1363636364 0.01 -0.00050009999) +(0.1414141414 0 -0.00050009999) +(0.1414141414 2.5e-05 -0.00050009999) +(0.1414141414 7.08119053e-05 -0.00050009999) +(0.1414141414 0.00015426567 -0.00050009999) +(0.1414141414 0.0003046635713 -0.00050009999) +(0.1414141414 0.0005705243934 -0.00050009999) +(0.1414141414 0.001024837958 -0.00050009999) +(0.1414141414 0.001758019915 -0.00050009999) +(0.1414141414 0.002838575912 -0.00050009999) +(0.1414141414 0.004235474916 -0.00050009999) +(0.1414141414 0.005764525084 -0.00050009999) +(0.1414141414 0.007161424088 -0.00050009999) +(0.1414141414 0.008241980085 -0.00050009999) +(0.1414141414 0.008975162042 -0.00050009999) +(0.1414141414 0.009429475607 -0.00050009999) +(0.1414141414 0.009695336429 -0.00050009999) +(0.1414141414 0.00984573433 -0.00050009999) +(0.1414141414 0.009929188095 -0.00050009999) +(0.1414141414 0.009975 -0.00050009999) +(0.1414141414 0.01 -0.00050009999) +(0.1464646465 0 -0.00050009999) +(0.1464646465 2.5e-05 -0.00050009999) +(0.1464646465 7.08119053e-05 -0.00050009999) +(0.1464646465 0.00015426567 -0.00050009999) +(0.1464646465 0.0003046635713 -0.00050009999) +(0.1464646465 0.0005705243934 -0.00050009999) +(0.1464646465 0.001024837958 -0.00050009999) +(0.1464646465 0.001758019915 -0.00050009999) +(0.1464646465 0.002838575912 -0.00050009999) +(0.1464646465 0.004235474916 -0.00050009999) +(0.1464646465 0.005764525084 -0.00050009999) +(0.1464646465 0.007161424088 -0.00050009999) +(0.1464646465 0.008241980085 -0.00050009999) +(0.1464646465 0.008975162042 -0.00050009999) +(0.1464646465 0.009429475607 -0.00050009999) +(0.1464646465 0.009695336429 -0.00050009999) +(0.1464646465 0.00984573433 -0.00050009999) +(0.1464646465 0.009929188095 -0.00050009999) +(0.1464646465 0.009975 -0.00050009999) +(0.1464646465 0.01 -0.00050009999) +(0.1515151515 0 -0.00050009999) +(0.1515151515 2.5e-05 -0.00050009999) +(0.1515151515 7.08119053e-05 -0.00050009999) +(0.1515151515 0.00015426567 -0.00050009999) +(0.1515151515 0.0003046635713 -0.00050009999) +(0.1515151515 0.0005705243934 -0.00050009999) +(0.1515151515 0.001024837958 -0.00050009999) +(0.1515151515 0.001758019915 -0.00050009999) +(0.1515151515 0.002838575912 -0.00050009999) +(0.1515151515 0.004235474916 -0.00050009999) +(0.1515151515 0.005764525084 -0.00050009999) +(0.1515151515 0.007161424088 -0.00050009999) +(0.1515151515 0.008241980085 -0.00050009999) +(0.1515151515 0.008975162042 -0.00050009999) +(0.1515151515 0.009429475607 -0.00050009999) +(0.1515151515 0.009695336429 -0.00050009999) +(0.1515151515 0.00984573433 -0.00050009999) +(0.1515151515 0.009929188095 -0.00050009999) +(0.1515151515 0.009975 -0.00050009999) +(0.1515151515 0.01 -0.00050009999) +(0.1565656566 0 -0.00050009999) +(0.1565656566 2.5e-05 -0.00050009999) +(0.1565656566 7.08119053e-05 -0.00050009999) +(0.1565656566 0.00015426567 -0.00050009999) +(0.1565656566 0.0003046635713 -0.00050009999) +(0.1565656566 0.0005705243934 -0.00050009999) +(0.1565656566 0.001024837958 -0.00050009999) +(0.1565656566 0.001758019915 -0.00050009999) +(0.1565656566 0.002838575912 -0.00050009999) +(0.1565656566 0.004235474916 -0.00050009999) +(0.1565656566 0.005764525084 -0.00050009999) +(0.1565656566 0.007161424088 -0.00050009999) +(0.1565656566 0.008241980085 -0.00050009999) +(0.1565656566 0.008975162042 -0.00050009999) +(0.1565656566 0.009429475607 -0.00050009999) +(0.1565656566 0.009695336429 -0.00050009999) +(0.1565656566 0.00984573433 -0.00050009999) +(0.1565656566 0.009929188095 -0.00050009999) +(0.1565656566 0.009975 -0.00050009999) +(0.1565656566 0.01 -0.00050009999) +(0.1616161616 0 -0.00050009999) +(0.1616161616 2.5e-05 -0.00050009999) +(0.1616161616 7.08119053e-05 -0.00050009999) +(0.1616161616 0.00015426567 -0.00050009999) +(0.1616161616 0.0003046635713 -0.00050009999) +(0.1616161616 0.0005705243934 -0.00050009999) +(0.1616161616 0.001024837958 -0.00050009999) +(0.1616161616 0.001758019915 -0.00050009999) +(0.1616161616 0.002838575912 -0.00050009999) +(0.1616161616 0.004235474916 -0.00050009999) +(0.1616161616 0.005764525084 -0.00050009999) +(0.1616161616 0.007161424088 -0.00050009999) +(0.1616161616 0.008241980085 -0.00050009999) +(0.1616161616 0.008975162042 -0.00050009999) +(0.1616161616 0.009429475607 -0.00050009999) +(0.1616161616 0.009695336429 -0.00050009999) +(0.1616161616 0.00984573433 -0.00050009999) +(0.1616161616 0.009929188095 -0.00050009999) +(0.1616161616 0.009975 -0.00050009999) +(0.1616161616 0.01 -0.00050009999) +(0.1666666667 0 -0.00050009999) +(0.1666666667 2.5e-05 -0.00050009999) +(0.1666666667 7.08119053e-05 -0.00050009999) +(0.1666666667 0.00015426567 -0.00050009999) +(0.1666666667 0.0003046635713 -0.00050009999) +(0.1666666667 0.0005705243934 -0.00050009999) +(0.1666666667 0.001024837958 -0.00050009999) +(0.1666666667 0.001758019915 -0.00050009999) +(0.1666666667 0.002838575912 -0.00050009999) +(0.1666666667 0.004235474916 -0.00050009999) +(0.1666666667 0.005764525084 -0.00050009999) +(0.1666666667 0.007161424088 -0.00050009999) +(0.1666666667 0.008241980085 -0.00050009999) +(0.1666666667 0.008975162042 -0.00050009999) +(0.1666666667 0.009429475607 -0.00050009999) +(0.1666666667 0.009695336429 -0.00050009999) +(0.1666666667 0.00984573433 -0.00050009999) +(0.1666666667 0.009929188095 -0.00050009999) +(0.1666666667 0.009975 -0.00050009999) +(0.1666666667 0.01 -0.00050009999) +(0.1717171717 0 -0.00050009999) +(0.1717171717 2.5e-05 -0.00050009999) +(0.1717171717 7.08119053e-05 -0.00050009999) +(0.1717171717 0.00015426567 -0.00050009999) +(0.1717171717 0.0003046635713 -0.00050009999) +(0.1717171717 0.0005705243934 -0.00050009999) +(0.1717171717 0.001024837958 -0.00050009999) +(0.1717171717 0.001758019915 -0.00050009999) +(0.1717171717 0.002838575912 -0.00050009999) +(0.1717171717 0.004235474916 -0.00050009999) +(0.1717171717 0.005764525084 -0.00050009999) +(0.1717171717 0.007161424088 -0.00050009999) +(0.1717171717 0.008241980085 -0.00050009999) +(0.1717171717 0.008975162042 -0.00050009999) +(0.1717171717 0.009429475607 -0.00050009999) +(0.1717171717 0.009695336429 -0.00050009999) +(0.1717171717 0.00984573433 -0.00050009999) +(0.1717171717 0.009929188095 -0.00050009999) +(0.1717171717 0.009975 -0.00050009999) +(0.1717171717 0.01 -0.00050009999) +(0.1767676768 0 -0.00050009999) +(0.1767676768 2.5e-05 -0.00050009999) +(0.1767676768 7.08119053e-05 -0.00050009999) +(0.1767676768 0.00015426567 -0.00050009999) +(0.1767676768 0.0003046635713 -0.00050009999) +(0.1767676768 0.0005705243934 -0.00050009999) +(0.1767676768 0.001024837958 -0.00050009999) +(0.1767676768 0.001758019915 -0.00050009999) +(0.1767676768 0.002838575912 -0.00050009999) +(0.1767676768 0.004235474916 -0.00050009999) +(0.1767676768 0.005764525084 -0.00050009999) +(0.1767676768 0.007161424088 -0.00050009999) +(0.1767676768 0.008241980085 -0.00050009999) +(0.1767676768 0.008975162042 -0.00050009999) +(0.1767676768 0.009429475607 -0.00050009999) +(0.1767676768 0.009695336429 -0.00050009999) +(0.1767676768 0.00984573433 -0.00050009999) +(0.1767676768 0.009929188095 -0.00050009999) +(0.1767676768 0.009975 -0.00050009999) +(0.1767676768 0.01 -0.00050009999) +(0.1818181818 0 -0.00050009999) +(0.1818181818 2.5e-05 -0.00050009999) +(0.1818181818 7.08119053e-05 -0.00050009999) +(0.1818181818 0.00015426567 -0.00050009999) +(0.1818181818 0.0003046635713 -0.00050009999) +(0.1818181818 0.0005705243934 -0.00050009999) +(0.1818181818 0.001024837958 -0.00050009999) +(0.1818181818 0.001758019915 -0.00050009999) +(0.1818181818 0.002838575912 -0.00050009999) +(0.1818181818 0.004235474916 -0.00050009999) +(0.1818181818 0.005764525084 -0.00050009999) +(0.1818181818 0.007161424088 -0.00050009999) +(0.1818181818 0.008241980085 -0.00050009999) +(0.1818181818 0.008975162042 -0.00050009999) +(0.1818181818 0.009429475607 -0.00050009999) +(0.1818181818 0.009695336429 -0.00050009999) +(0.1818181818 0.00984573433 -0.00050009999) +(0.1818181818 0.009929188095 -0.00050009999) +(0.1818181818 0.009975 -0.00050009999) +(0.1818181818 0.01 -0.00050009999) +(0.1868686869 0 -0.00050009999) +(0.1868686869 2.5e-05 -0.00050009999) +(0.1868686869 7.08119053e-05 -0.00050009999) +(0.1868686869 0.00015426567 -0.00050009999) +(0.1868686869 0.0003046635713 -0.00050009999) +(0.1868686869 0.0005705243934 -0.00050009999) +(0.1868686869 0.001024837958 -0.00050009999) +(0.1868686869 0.001758019915 -0.00050009999) +(0.1868686869 0.002838575912 -0.00050009999) +(0.1868686869 0.004235474916 -0.00050009999) +(0.1868686869 0.005764525084 -0.00050009999) +(0.1868686869 0.007161424088 -0.00050009999) +(0.1868686869 0.008241980085 -0.00050009999) +(0.1868686869 0.008975162042 -0.00050009999) +(0.1868686869 0.009429475607 -0.00050009999) +(0.1868686869 0.009695336429 -0.00050009999) +(0.1868686869 0.00984573433 -0.00050009999) +(0.1868686869 0.009929188095 -0.00050009999) +(0.1868686869 0.009975 -0.00050009999) +(0.1868686869 0.01 -0.00050009999) +(0.1919191919 0 -0.00050009999) +(0.1919191919 2.5e-05 -0.00050009999) +(0.1919191919 7.08119053e-05 -0.00050009999) +(0.1919191919 0.00015426567 -0.00050009999) +(0.1919191919 0.0003046635713 -0.00050009999) +(0.1919191919 0.0005705243934 -0.00050009999) +(0.1919191919 0.001024837958 -0.00050009999) +(0.1919191919 0.001758019915 -0.00050009999) +(0.1919191919 0.002838575912 -0.00050009999) +(0.1919191919 0.004235474916 -0.00050009999) +(0.1919191919 0.005764525084 -0.00050009999) +(0.1919191919 0.007161424088 -0.00050009999) +(0.1919191919 0.008241980085 -0.00050009999) +(0.1919191919 0.008975162042 -0.00050009999) +(0.1919191919 0.009429475607 -0.00050009999) +(0.1919191919 0.009695336429 -0.00050009999) +(0.1919191919 0.00984573433 -0.00050009999) +(0.1919191919 0.009929188095 -0.00050009999) +(0.1919191919 0.009975 -0.00050009999) +(0.1919191919 0.01 -0.00050009999) +(0.196969697 0 -0.00050009999) +(0.196969697 2.5e-05 -0.00050009999) +(0.196969697 7.08119053e-05 -0.00050009999) +(0.196969697 0.00015426567 -0.00050009999) +(0.196969697 0.0003046635713 -0.00050009999) +(0.196969697 0.0005705243934 -0.00050009999) +(0.196969697 0.001024837958 -0.00050009999) +(0.196969697 0.001758019915 -0.00050009999) +(0.196969697 0.002838575912 -0.00050009999) +(0.196969697 0.004235474916 -0.00050009999) +(0.196969697 0.005764525084 -0.00050009999) +(0.196969697 0.007161424088 -0.00050009999) +(0.196969697 0.008241980085 -0.00050009999) +(0.196969697 0.008975162042 -0.00050009999) +(0.196969697 0.009429475607 -0.00050009999) +(0.196969697 0.009695336429 -0.00050009999) +(0.196969697 0.00984573433 -0.00050009999) +(0.196969697 0.009929188095 -0.00050009999) +(0.196969697 0.009975 -0.00050009999) +(0.196969697 0.01 -0.00050009999) +(0.202020202 0 -0.00050009999) +(0.202020202 2.5e-05 -0.00050009999) +(0.202020202 7.08119053e-05 -0.00050009999) +(0.202020202 0.00015426567 -0.00050009999) +(0.202020202 0.0003046635713 -0.00050009999) +(0.202020202 0.0005705243934 -0.00050009999) +(0.202020202 0.001024837958 -0.00050009999) +(0.202020202 0.001758019915 -0.00050009999) +(0.202020202 0.002838575912 -0.00050009999) +(0.202020202 0.004235474916 -0.00050009999) +(0.202020202 0.005764525084 -0.00050009999) +(0.202020202 0.007161424088 -0.00050009999) +(0.202020202 0.008241980085 -0.00050009999) +(0.202020202 0.008975162042 -0.00050009999) +(0.202020202 0.009429475607 -0.00050009999) +(0.202020202 0.009695336429 -0.00050009999) +(0.202020202 0.00984573433 -0.00050009999) +(0.202020202 0.009929188095 -0.00050009999) +(0.202020202 0.009975 -0.00050009999) +(0.202020202 0.01 -0.00050009999) +(0.2070707071 0 -0.00050009999) +(0.2070707071 2.5e-05 -0.00050009999) +(0.2070707071 7.08119053e-05 -0.00050009999) +(0.2070707071 0.00015426567 -0.00050009999) +(0.2070707071 0.0003046635713 -0.00050009999) +(0.2070707071 0.0005705243934 -0.00050009999) +(0.2070707071 0.001024837958 -0.00050009999) +(0.2070707071 0.001758019915 -0.00050009999) +(0.2070707071 0.002838575912 -0.00050009999) +(0.2070707071 0.004235474916 -0.00050009999) +(0.2070707071 0.005764525084 -0.00050009999) +(0.2070707071 0.007161424088 -0.00050009999) +(0.2070707071 0.008241980085 -0.00050009999) +(0.2070707071 0.008975162042 -0.00050009999) +(0.2070707071 0.009429475607 -0.00050009999) +(0.2070707071 0.009695336429 -0.00050009999) +(0.2070707071 0.00984573433 -0.00050009999) +(0.2070707071 0.009929188095 -0.00050009999) +(0.2070707071 0.009975 -0.00050009999) +(0.2070707071 0.01 -0.00050009999) +(0.2121212121 0 -0.00050009999) +(0.2121212121 2.5e-05 -0.00050009999) +(0.2121212121 7.08119053e-05 -0.00050009999) +(0.2121212121 0.00015426567 -0.00050009999) +(0.2121212121 0.0003046635713 -0.00050009999) +(0.2121212121 0.0005705243934 -0.00050009999) +(0.2121212121 0.001024837958 -0.00050009999) +(0.2121212121 0.001758019915 -0.00050009999) +(0.2121212121 0.002838575912 -0.00050009999) +(0.2121212121 0.004235474916 -0.00050009999) +(0.2121212121 0.005764525084 -0.00050009999) +(0.2121212121 0.007161424088 -0.00050009999) +(0.2121212121 0.008241980085 -0.00050009999) +(0.2121212121 0.008975162042 -0.00050009999) +(0.2121212121 0.009429475607 -0.00050009999) +(0.2121212121 0.009695336429 -0.00050009999) +(0.2121212121 0.00984573433 -0.00050009999) +(0.2121212121 0.009929188095 -0.00050009999) +(0.2121212121 0.009975 -0.00050009999) +(0.2121212121 0.01 -0.00050009999) +(0.2171717172 0 -0.00050009999) +(0.2171717172 2.5e-05 -0.00050009999) +(0.2171717172 7.08119053e-05 -0.00050009999) +(0.2171717172 0.00015426567 -0.00050009999) +(0.2171717172 0.0003046635713 -0.00050009999) +(0.2171717172 0.0005705243934 -0.00050009999) +(0.2171717172 0.001024837958 -0.00050009999) +(0.2171717172 0.001758019915 -0.00050009999) +(0.2171717172 0.002838575912 -0.00050009999) +(0.2171717172 0.004235474916 -0.00050009999) +(0.2171717172 0.005764525084 -0.00050009999) +(0.2171717172 0.007161424088 -0.00050009999) +(0.2171717172 0.008241980085 -0.00050009999) +(0.2171717172 0.008975162042 -0.00050009999) +(0.2171717172 0.009429475607 -0.00050009999) +(0.2171717172 0.009695336429 -0.00050009999) +(0.2171717172 0.00984573433 -0.00050009999) +(0.2171717172 0.009929188095 -0.00050009999) +(0.2171717172 0.009975 -0.00050009999) +(0.2171717172 0.01 -0.00050009999) +(0.2222222222 0 -0.00050009999) +(0.2222222222 2.5e-05 -0.00050009999) +(0.2222222222 7.08119053e-05 -0.00050009999) +(0.2222222222 0.00015426567 -0.00050009999) +(0.2222222222 0.0003046635713 -0.00050009999) +(0.2222222222 0.0005705243934 -0.00050009999) +(0.2222222222 0.001024837958 -0.00050009999) +(0.2222222222 0.001758019915 -0.00050009999) +(0.2222222222 0.002838575912 -0.00050009999) +(0.2222222222 0.004235474916 -0.00050009999) +(0.2222222222 0.005764525084 -0.00050009999) +(0.2222222222 0.007161424088 -0.00050009999) +(0.2222222222 0.008241980085 -0.00050009999) +(0.2222222222 0.008975162042 -0.00050009999) +(0.2222222222 0.009429475607 -0.00050009999) +(0.2222222222 0.009695336429 -0.00050009999) +(0.2222222222 0.00984573433 -0.00050009999) +(0.2222222222 0.009929188095 -0.00050009999) +(0.2222222222 0.009975 -0.00050009999) +(0.2222222222 0.01 -0.00050009999) +(0.2272727273 0 -0.00050009999) +(0.2272727273 2.5e-05 -0.00050009999) +(0.2272727273 7.08119053e-05 -0.00050009999) +(0.2272727273 0.00015426567 -0.00050009999) +(0.2272727273 0.0003046635713 -0.00050009999) +(0.2272727273 0.0005705243934 -0.00050009999) +(0.2272727273 0.001024837958 -0.00050009999) +(0.2272727273 0.001758019915 -0.00050009999) +(0.2272727273 0.002838575912 -0.00050009999) +(0.2272727273 0.004235474916 -0.00050009999) +(0.2272727273 0.005764525084 -0.00050009999) +(0.2272727273 0.007161424088 -0.00050009999) +(0.2272727273 0.008241980085 -0.00050009999) +(0.2272727273 0.008975162042 -0.00050009999) +(0.2272727273 0.009429475607 -0.00050009999) +(0.2272727273 0.009695336429 -0.00050009999) +(0.2272727273 0.00984573433 -0.00050009999) +(0.2272727273 0.009929188095 -0.00050009999) +(0.2272727273 0.009975 -0.00050009999) +(0.2272727273 0.01 -0.00050009999) +(0.2323232323 0 -0.00050009999) +(0.2323232323 2.5e-05 -0.00050009999) +(0.2323232323 7.08119053e-05 -0.00050009999) +(0.2323232323 0.00015426567 -0.00050009999) +(0.2323232323 0.0003046635713 -0.00050009999) +(0.2323232323 0.0005705243934 -0.00050009999) +(0.2323232323 0.001024837958 -0.00050009999) +(0.2323232323 0.001758019915 -0.00050009999) +(0.2323232323 0.002838575912 -0.00050009999) +(0.2323232323 0.004235474916 -0.00050009999) +(0.2323232323 0.005764525084 -0.00050009999) +(0.2323232323 0.007161424088 -0.00050009999) +(0.2323232323 0.008241980085 -0.00050009999) +(0.2323232323 0.008975162042 -0.00050009999) +(0.2323232323 0.009429475607 -0.00050009999) +(0.2323232323 0.009695336429 -0.00050009999) +(0.2323232323 0.00984573433 -0.00050009999) +(0.2323232323 0.009929188095 -0.00050009999) +(0.2323232323 0.009975 -0.00050009999) +(0.2323232323 0.01 -0.00050009999) +(0.2373737374 0 -0.00050009999) +(0.2373737374 2.5e-05 -0.00050009999) +(0.2373737374 7.08119053e-05 -0.00050009999) +(0.2373737374 0.00015426567 -0.00050009999) +(0.2373737374 0.0003046635713 -0.00050009999) +(0.2373737374 0.0005705243934 -0.00050009999) +(0.2373737374 0.001024837958 -0.00050009999) +(0.2373737374 0.001758019915 -0.00050009999) +(0.2373737374 0.002838575912 -0.00050009999) +(0.2373737374 0.004235474916 -0.00050009999) +(0.2373737374 0.005764525084 -0.00050009999) +(0.2373737374 0.007161424088 -0.00050009999) +(0.2373737374 0.008241980085 -0.00050009999) +(0.2373737374 0.008975162042 -0.00050009999) +(0.2373737374 0.009429475607 -0.00050009999) +(0.2373737374 0.009695336429 -0.00050009999) +(0.2373737374 0.00984573433 -0.00050009999) +(0.2373737374 0.009929188095 -0.00050009999) +(0.2373737374 0.009975 -0.00050009999) +(0.2373737374 0.01 -0.00050009999) +(0.2424242424 0 -0.00050009999) +(0.2424242424 2.5e-05 -0.00050009999) +(0.2424242424 7.08119053e-05 -0.00050009999) +(0.2424242424 0.00015426567 -0.00050009999) +(0.2424242424 0.0003046635713 -0.00050009999) +(0.2424242424 0.0005705243934 -0.00050009999) +(0.2424242424 0.001024837958 -0.00050009999) +(0.2424242424 0.001758019915 -0.00050009999) +(0.2424242424 0.002838575912 -0.00050009999) +(0.2424242424 0.004235474916 -0.00050009999) +(0.2424242424 0.005764525084 -0.00050009999) +(0.2424242424 0.007161424088 -0.00050009999) +(0.2424242424 0.008241980085 -0.00050009999) +(0.2424242424 0.008975162042 -0.00050009999) +(0.2424242424 0.009429475607 -0.00050009999) +(0.2424242424 0.009695336429 -0.00050009999) +(0.2424242424 0.00984573433 -0.00050009999) +(0.2424242424 0.009929188095 -0.00050009999) +(0.2424242424 0.009975 -0.00050009999) +(0.2424242424 0.01 -0.00050009999) +(0.2474747475 0 -0.00050009999) +(0.2474747475 2.5e-05 -0.00050009999) +(0.2474747475 7.08119053e-05 -0.00050009999) +(0.2474747475 0.00015426567 -0.00050009999) +(0.2474747475 0.0003046635713 -0.00050009999) +(0.2474747475 0.0005705243934 -0.00050009999) +(0.2474747475 0.001024837958 -0.00050009999) +(0.2474747475 0.001758019915 -0.00050009999) +(0.2474747475 0.002838575912 -0.00050009999) +(0.2474747475 0.004235474916 -0.00050009999) +(0.2474747475 0.005764525084 -0.00050009999) +(0.2474747475 0.007161424088 -0.00050009999) +(0.2474747475 0.008241980085 -0.00050009999) +(0.2474747475 0.008975162042 -0.00050009999) +(0.2474747475 0.009429475607 -0.00050009999) +(0.2474747475 0.009695336429 -0.00050009999) +(0.2474747475 0.00984573433 -0.00050009999) +(0.2474747475 0.009929188095 -0.00050009999) +(0.2474747475 0.009975 -0.00050009999) +(0.2474747475 0.01 -0.00050009999) +(0.2525252525 0 -0.00050009999) +(0.2525252525 2.5e-05 -0.00050009999) +(0.2525252525 7.08119053e-05 -0.00050009999) +(0.2525252525 0.00015426567 -0.00050009999) +(0.2525252525 0.0003046635713 -0.00050009999) +(0.2525252525 0.0005705243934 -0.00050009999) +(0.2525252525 0.001024837958 -0.00050009999) +(0.2525252525 0.001758019915 -0.00050009999) +(0.2525252525 0.002838575912 -0.00050009999) +(0.2525252525 0.004235474916 -0.00050009999) +(0.2525252525 0.005764525084 -0.00050009999) +(0.2525252525 0.007161424088 -0.00050009999) +(0.2525252525 0.008241980085 -0.00050009999) +(0.2525252525 0.008975162042 -0.00050009999) +(0.2525252525 0.009429475607 -0.00050009999) +(0.2525252525 0.009695336429 -0.00050009999) +(0.2525252525 0.00984573433 -0.00050009999) +(0.2525252525 0.009929188095 -0.00050009999) +(0.2525252525 0.009975 -0.00050009999) +(0.2525252525 0.01 -0.00050009999) +(0.2575757576 0 -0.00050009999) +(0.2575757576 2.5e-05 -0.00050009999) +(0.2575757576 7.08119053e-05 -0.00050009999) +(0.2575757576 0.00015426567 -0.00050009999) +(0.2575757576 0.0003046635713 -0.00050009999) +(0.2575757576 0.0005705243934 -0.00050009999) +(0.2575757576 0.001024837958 -0.00050009999) +(0.2575757576 0.001758019915 -0.00050009999) +(0.2575757576 0.002838575912 -0.00050009999) +(0.2575757576 0.004235474916 -0.00050009999) +(0.2575757576 0.005764525084 -0.00050009999) +(0.2575757576 0.007161424088 -0.00050009999) +(0.2575757576 0.008241980085 -0.00050009999) +(0.2575757576 0.008975162042 -0.00050009999) +(0.2575757576 0.009429475607 -0.00050009999) +(0.2575757576 0.009695336429 -0.00050009999) +(0.2575757576 0.00984573433 -0.00050009999) +(0.2575757576 0.009929188095 -0.00050009999) +(0.2575757576 0.009975 -0.00050009999) +(0.2575757576 0.01 -0.00050009999) +(0.2626262626 0 -0.00050009999) +(0.2626262626 2.5e-05 -0.00050009999) +(0.2626262626 7.08119053e-05 -0.00050009999) +(0.2626262626 0.00015426567 -0.00050009999) +(0.2626262626 0.0003046635713 -0.00050009999) +(0.2626262626 0.0005705243934 -0.00050009999) +(0.2626262626 0.001024837958 -0.00050009999) +(0.2626262626 0.001758019915 -0.00050009999) +(0.2626262626 0.002838575912 -0.00050009999) +(0.2626262626 0.004235474916 -0.00050009999) +(0.2626262626 0.005764525084 -0.00050009999) +(0.2626262626 0.007161424088 -0.00050009999) +(0.2626262626 0.008241980085 -0.00050009999) +(0.2626262626 0.008975162042 -0.00050009999) +(0.2626262626 0.009429475607 -0.00050009999) +(0.2626262626 0.009695336429 -0.00050009999) +(0.2626262626 0.00984573433 -0.00050009999) +(0.2626262626 0.009929188095 -0.00050009999) +(0.2626262626 0.009975 -0.00050009999) +(0.2626262626 0.01 -0.00050009999) +(0.2676767677 0 -0.00050009999) +(0.2676767677 2.5e-05 -0.00050009999) +(0.2676767677 7.08119053e-05 -0.00050009999) +(0.2676767677 0.00015426567 -0.00050009999) +(0.2676767677 0.0003046635713 -0.00050009999) +(0.2676767677 0.0005705243934 -0.00050009999) +(0.2676767677 0.001024837958 -0.00050009999) +(0.2676767677 0.001758019915 -0.00050009999) +(0.2676767677 0.002838575912 -0.00050009999) +(0.2676767677 0.004235474916 -0.00050009999) +(0.2676767677 0.005764525084 -0.00050009999) +(0.2676767677 0.007161424088 -0.00050009999) +(0.2676767677 0.008241980085 -0.00050009999) +(0.2676767677 0.008975162042 -0.00050009999) +(0.2676767677 0.009429475607 -0.00050009999) +(0.2676767677 0.009695336429 -0.00050009999) +(0.2676767677 0.00984573433 -0.00050009999) +(0.2676767677 0.009929188095 -0.00050009999) +(0.2676767677 0.009975 -0.00050009999) +(0.2676767677 0.01 -0.00050009999) +(0.2727272727 0 -0.00050009999) +(0.2727272727 2.5e-05 -0.00050009999) +(0.2727272727 7.08119053e-05 -0.00050009999) +(0.2727272727 0.00015426567 -0.00050009999) +(0.2727272727 0.0003046635713 -0.00050009999) +(0.2727272727 0.0005705243934 -0.00050009999) +(0.2727272727 0.001024837958 -0.00050009999) +(0.2727272727 0.001758019915 -0.00050009999) +(0.2727272727 0.002838575912 -0.00050009999) +(0.2727272727 0.004235474916 -0.00050009999) +(0.2727272727 0.005764525084 -0.00050009999) +(0.2727272727 0.007161424088 -0.00050009999) +(0.2727272727 0.008241980085 -0.00050009999) +(0.2727272727 0.008975162042 -0.00050009999) +(0.2727272727 0.009429475607 -0.00050009999) +(0.2727272727 0.009695336429 -0.00050009999) +(0.2727272727 0.00984573433 -0.00050009999) +(0.2727272727 0.009929188095 -0.00050009999) +(0.2727272727 0.009975 -0.00050009999) +(0.2727272727 0.01 -0.00050009999) +(0.2777777778 0 -0.00050009999) +(0.2777777778 2.5e-05 -0.00050009999) +(0.2777777778 7.08119053e-05 -0.00050009999) +(0.2777777778 0.00015426567 -0.00050009999) +(0.2777777778 0.0003046635713 -0.00050009999) +(0.2777777778 0.0005705243934 -0.00050009999) +(0.2777777778 0.001024837958 -0.00050009999) +(0.2777777778 0.001758019915 -0.00050009999) +(0.2777777778 0.002838575912 -0.00050009999) +(0.2777777778 0.004235474916 -0.00050009999) +(0.2777777778 0.005764525084 -0.00050009999) +(0.2777777778 0.007161424088 -0.00050009999) +(0.2777777778 0.008241980085 -0.00050009999) +(0.2777777778 0.008975162042 -0.00050009999) +(0.2777777778 0.009429475607 -0.00050009999) +(0.2777777778 0.009695336429 -0.00050009999) +(0.2777777778 0.00984573433 -0.00050009999) +(0.2777777778 0.009929188095 -0.00050009999) +(0.2777777778 0.009975 -0.00050009999) +(0.2777777778 0.01 -0.00050009999) +(0.2828282828 0 -0.00050009999) +(0.2828282828 2.5e-05 -0.00050009999) +(0.2828282828 7.08119053e-05 -0.00050009999) +(0.2828282828 0.00015426567 -0.00050009999) +(0.2828282828 0.0003046635713 -0.00050009999) +(0.2828282828 0.0005705243934 -0.00050009999) +(0.2828282828 0.001024837958 -0.00050009999) +(0.2828282828 0.001758019915 -0.00050009999) +(0.2828282828 0.002838575912 -0.00050009999) +(0.2828282828 0.004235474916 -0.00050009999) +(0.2828282828 0.005764525084 -0.00050009999) +(0.2828282828 0.007161424088 -0.00050009999) +(0.2828282828 0.008241980085 -0.00050009999) +(0.2828282828 0.008975162042 -0.00050009999) +(0.2828282828 0.009429475607 -0.00050009999) +(0.2828282828 0.009695336429 -0.00050009999) +(0.2828282828 0.00984573433 -0.00050009999) +(0.2828282828 0.009929188095 -0.00050009999) +(0.2828282828 0.009975 -0.00050009999) +(0.2828282828 0.01 -0.00050009999) +(0.2878787879 0 -0.00050009999) +(0.2878787879 2.5e-05 -0.00050009999) +(0.2878787879 7.08119053e-05 -0.00050009999) +(0.2878787879 0.00015426567 -0.00050009999) +(0.2878787879 0.0003046635713 -0.00050009999) +(0.2878787879 0.0005705243934 -0.00050009999) +(0.2878787879 0.001024837958 -0.00050009999) +(0.2878787879 0.001758019915 -0.00050009999) +(0.2878787879 0.002838575912 -0.00050009999) +(0.2878787879 0.004235474916 -0.00050009999) +(0.2878787879 0.005764525084 -0.00050009999) +(0.2878787879 0.007161424088 -0.00050009999) +(0.2878787879 0.008241980085 -0.00050009999) +(0.2878787879 0.008975162042 -0.00050009999) +(0.2878787879 0.009429475607 -0.00050009999) +(0.2878787879 0.009695336429 -0.00050009999) +(0.2878787879 0.00984573433 -0.00050009999) +(0.2878787879 0.009929188095 -0.00050009999) +(0.2878787879 0.009975 -0.00050009999) +(0.2878787879 0.01 -0.00050009999) +(0.2929292929 0 -0.00050009999) +(0.2929292929 2.5e-05 -0.00050009999) +(0.2929292929 7.08119053e-05 -0.00050009999) +(0.2929292929 0.00015426567 -0.00050009999) +(0.2929292929 0.0003046635713 -0.00050009999) +(0.2929292929 0.0005705243934 -0.00050009999) +(0.2929292929 0.001024837958 -0.00050009999) +(0.2929292929 0.001758019915 -0.00050009999) +(0.2929292929 0.002838575912 -0.00050009999) +(0.2929292929 0.004235474916 -0.00050009999) +(0.2929292929 0.005764525084 -0.00050009999) +(0.2929292929 0.007161424088 -0.00050009999) +(0.2929292929 0.008241980085 -0.00050009999) +(0.2929292929 0.008975162042 -0.00050009999) +(0.2929292929 0.009429475607 -0.00050009999) +(0.2929292929 0.009695336429 -0.00050009999) +(0.2929292929 0.00984573433 -0.00050009999) +(0.2929292929 0.009929188095 -0.00050009999) +(0.2929292929 0.009975 -0.00050009999) +(0.2929292929 0.01 -0.00050009999) +(0.297979798 0 -0.00050009999) +(0.297979798 2.5e-05 -0.00050009999) +(0.297979798 7.08119053e-05 -0.00050009999) +(0.297979798 0.00015426567 -0.00050009999) +(0.297979798 0.0003046635713 -0.00050009999) +(0.297979798 0.0005705243934 -0.00050009999) +(0.297979798 0.001024837958 -0.00050009999) +(0.297979798 0.001758019915 -0.00050009999) +(0.297979798 0.002838575912 -0.00050009999) +(0.297979798 0.004235474916 -0.00050009999) +(0.297979798 0.005764525084 -0.00050009999) +(0.297979798 0.007161424088 -0.00050009999) +(0.297979798 0.008241980085 -0.00050009999) +(0.297979798 0.008975162042 -0.00050009999) +(0.297979798 0.009429475607 -0.00050009999) +(0.297979798 0.009695336429 -0.00050009999) +(0.297979798 0.00984573433 -0.00050009999) +(0.297979798 0.009929188095 -0.00050009999) +(0.297979798 0.009975 -0.00050009999) +(0.297979798 0.01 -0.00050009999) +(0.303030303 0 -0.00050009999) +(0.303030303 2.5e-05 -0.00050009999) +(0.303030303 7.08119053e-05 -0.00050009999) +(0.303030303 0.00015426567 -0.00050009999) +(0.303030303 0.0003046635713 -0.00050009999) +(0.303030303 0.0005705243934 -0.00050009999) +(0.303030303 0.001024837958 -0.00050009999) +(0.303030303 0.001758019915 -0.00050009999) +(0.303030303 0.002838575912 -0.00050009999) +(0.303030303 0.004235474916 -0.00050009999) +(0.303030303 0.005764525084 -0.00050009999) +(0.303030303 0.007161424088 -0.00050009999) +(0.303030303 0.008241980085 -0.00050009999) +(0.303030303 0.008975162042 -0.00050009999) +(0.303030303 0.009429475607 -0.00050009999) +(0.303030303 0.009695336429 -0.00050009999) +(0.303030303 0.00984573433 -0.00050009999) +(0.303030303 0.009929188095 -0.00050009999) +(0.303030303 0.009975 -0.00050009999) +(0.303030303 0.01 -0.00050009999) +(0.3080808081 0 -0.00050009999) +(0.3080808081 2.5e-05 -0.00050009999) +(0.3080808081 7.08119053e-05 -0.00050009999) +(0.3080808081 0.00015426567 -0.00050009999) +(0.3080808081 0.0003046635713 -0.00050009999) +(0.3080808081 0.0005705243934 -0.00050009999) +(0.3080808081 0.001024837958 -0.00050009999) +(0.3080808081 0.001758019915 -0.00050009999) +(0.3080808081 0.002838575912 -0.00050009999) +(0.3080808081 0.004235474916 -0.00050009999) +(0.3080808081 0.005764525084 -0.00050009999) +(0.3080808081 0.007161424088 -0.00050009999) +(0.3080808081 0.008241980085 -0.00050009999) +(0.3080808081 0.008975162042 -0.00050009999) +(0.3080808081 0.009429475607 -0.00050009999) +(0.3080808081 0.009695336429 -0.00050009999) +(0.3080808081 0.00984573433 -0.00050009999) +(0.3080808081 0.009929188095 -0.00050009999) +(0.3080808081 0.009975 -0.00050009999) +(0.3080808081 0.01 -0.00050009999) +(0.3131313131 0 -0.00050009999) +(0.3131313131 2.5e-05 -0.00050009999) +(0.3131313131 7.08119053e-05 -0.00050009999) +(0.3131313131 0.00015426567 -0.00050009999) +(0.3131313131 0.0003046635713 -0.00050009999) +(0.3131313131 0.0005705243934 -0.00050009999) +(0.3131313131 0.001024837958 -0.00050009999) +(0.3131313131 0.001758019915 -0.00050009999) +(0.3131313131 0.002838575912 -0.00050009999) +(0.3131313131 0.004235474916 -0.00050009999) +(0.3131313131 0.005764525084 -0.00050009999) +(0.3131313131 0.007161424088 -0.00050009999) +(0.3131313131 0.008241980085 -0.00050009999) +(0.3131313131 0.008975162042 -0.00050009999) +(0.3131313131 0.009429475607 -0.00050009999) +(0.3131313131 0.009695336429 -0.00050009999) +(0.3131313131 0.00984573433 -0.00050009999) +(0.3131313131 0.009929188095 -0.00050009999) +(0.3131313131 0.009975 -0.00050009999) +(0.3131313131 0.01 -0.00050009999) +(0.3181818182 0 -0.00050009999) +(0.3181818182 2.5e-05 -0.00050009999) +(0.3181818182 7.08119053e-05 -0.00050009999) +(0.3181818182 0.00015426567 -0.00050009999) +(0.3181818182 0.0003046635713 -0.00050009999) +(0.3181818182 0.0005705243934 -0.00050009999) +(0.3181818182 0.001024837958 -0.00050009999) +(0.3181818182 0.001758019915 -0.00050009999) +(0.3181818182 0.002838575912 -0.00050009999) +(0.3181818182 0.004235474916 -0.00050009999) +(0.3181818182 0.005764525084 -0.00050009999) +(0.3181818182 0.007161424088 -0.00050009999) +(0.3181818182 0.008241980085 -0.00050009999) +(0.3181818182 0.008975162042 -0.00050009999) +(0.3181818182 0.009429475607 -0.00050009999) +(0.3181818182 0.009695336429 -0.00050009999) +(0.3181818182 0.00984573433 -0.00050009999) +(0.3181818182 0.009929188095 -0.00050009999) +(0.3181818182 0.009975 -0.00050009999) +(0.3181818182 0.01 -0.00050009999) +(0.3232323232 0 -0.00050009999) +(0.3232323232 2.5e-05 -0.00050009999) +(0.3232323232 7.08119053e-05 -0.00050009999) +(0.3232323232 0.00015426567 -0.00050009999) +(0.3232323232 0.0003046635713 -0.00050009999) +(0.3232323232 0.0005705243934 -0.00050009999) +(0.3232323232 0.001024837958 -0.00050009999) +(0.3232323232 0.001758019915 -0.00050009999) +(0.3232323232 0.002838575912 -0.00050009999) +(0.3232323232 0.004235474916 -0.00050009999) +(0.3232323232 0.005764525084 -0.00050009999) +(0.3232323232 0.007161424088 -0.00050009999) +(0.3232323232 0.008241980085 -0.00050009999) +(0.3232323232 0.008975162042 -0.00050009999) +(0.3232323232 0.009429475607 -0.00050009999) +(0.3232323232 0.009695336429 -0.00050009999) +(0.3232323232 0.00984573433 -0.00050009999) +(0.3232323232 0.009929188095 -0.00050009999) +(0.3232323232 0.009975 -0.00050009999) +(0.3232323232 0.01 -0.00050009999) +(0.3282828283 0 -0.00050009999) +(0.3282828283 2.5e-05 -0.00050009999) +(0.3282828283 7.08119053e-05 -0.00050009999) +(0.3282828283 0.00015426567 -0.00050009999) +(0.3282828283 0.0003046635713 -0.00050009999) +(0.3282828283 0.0005705243934 -0.00050009999) +(0.3282828283 0.001024837958 -0.00050009999) +(0.3282828283 0.001758019915 -0.00050009999) +(0.3282828283 0.002838575912 -0.00050009999) +(0.3282828283 0.004235474916 -0.00050009999) +(0.3282828283 0.005764525084 -0.00050009999) +(0.3282828283 0.007161424088 -0.00050009999) +(0.3282828283 0.008241980085 -0.00050009999) +(0.3282828283 0.008975162042 -0.00050009999) +(0.3282828283 0.009429475607 -0.00050009999) +(0.3282828283 0.009695336429 -0.00050009999) +(0.3282828283 0.00984573433 -0.00050009999) +(0.3282828283 0.009929188095 -0.00050009999) +(0.3282828283 0.009975 -0.00050009999) +(0.3282828283 0.01 -0.00050009999) +(0.3333333333 0 -0.00050009999) +(0.3333333333 2.5e-05 -0.00050009999) +(0.3333333333 7.08119053e-05 -0.00050009999) +(0.3333333333 0.00015426567 -0.00050009999) +(0.3333333333 0.0003046635713 -0.00050009999) +(0.3333333333 0.0005705243934 -0.00050009999) +(0.3333333333 0.001024837958 -0.00050009999) +(0.3333333333 0.001758019915 -0.00050009999) +(0.3333333333 0.002838575912 -0.00050009999) +(0.3333333333 0.004235474916 -0.00050009999) +(0.3333333333 0.005764525084 -0.00050009999) +(0.3333333333 0.007161424088 -0.00050009999) +(0.3333333333 0.008241980085 -0.00050009999) +(0.3333333333 0.008975162042 -0.00050009999) +(0.3333333333 0.009429475607 -0.00050009999) +(0.3333333333 0.009695336429 -0.00050009999) +(0.3333333333 0.00984573433 -0.00050009999) +(0.3333333333 0.009929188095 -0.00050009999) +(0.3333333333 0.009975 -0.00050009999) +(0.3333333333 0.01 -0.00050009999) +(0.3383838384 0 -0.00050009999) +(0.3383838384 2.5e-05 -0.00050009999) +(0.3383838384 7.08119053e-05 -0.00050009999) +(0.3383838384 0.00015426567 -0.00050009999) +(0.3383838384 0.0003046635713 -0.00050009999) +(0.3383838384 0.0005705243934 -0.00050009999) +(0.3383838384 0.001024837958 -0.00050009999) +(0.3383838384 0.001758019915 -0.00050009999) +(0.3383838384 0.002838575912 -0.00050009999) +(0.3383838384 0.004235474916 -0.00050009999) +(0.3383838384 0.005764525084 -0.00050009999) +(0.3383838384 0.007161424088 -0.00050009999) +(0.3383838384 0.008241980085 -0.00050009999) +(0.3383838384 0.008975162042 -0.00050009999) +(0.3383838384 0.009429475607 -0.00050009999) +(0.3383838384 0.009695336429 -0.00050009999) +(0.3383838384 0.00984573433 -0.00050009999) +(0.3383838384 0.009929188095 -0.00050009999) +(0.3383838384 0.009975 -0.00050009999) +(0.3383838384 0.01 -0.00050009999) +(0.3434343434 0 -0.00050009999) +(0.3434343434 2.5e-05 -0.00050009999) +(0.3434343434 7.08119053e-05 -0.00050009999) +(0.3434343434 0.00015426567 -0.00050009999) +(0.3434343434 0.0003046635713 -0.00050009999) +(0.3434343434 0.0005705243934 -0.00050009999) +(0.3434343434 0.001024837958 -0.00050009999) +(0.3434343434 0.001758019915 -0.00050009999) +(0.3434343434 0.002838575912 -0.00050009999) +(0.3434343434 0.004235474916 -0.00050009999) +(0.3434343434 0.005764525084 -0.00050009999) +(0.3434343434 0.007161424088 -0.00050009999) +(0.3434343434 0.008241980085 -0.00050009999) +(0.3434343434 0.008975162042 -0.00050009999) +(0.3434343434 0.009429475607 -0.00050009999) +(0.3434343434 0.009695336429 -0.00050009999) +(0.3434343434 0.00984573433 -0.00050009999) +(0.3434343434 0.009929188095 -0.00050009999) +(0.3434343434 0.009975 -0.00050009999) +(0.3434343434 0.01 -0.00050009999) +(0.3484848485 0 -0.00050009999) +(0.3484848485 2.5e-05 -0.00050009999) +(0.3484848485 7.08119053e-05 -0.00050009999) +(0.3484848485 0.00015426567 -0.00050009999) +(0.3484848485 0.0003046635713 -0.00050009999) +(0.3484848485 0.0005705243934 -0.00050009999) +(0.3484848485 0.001024837958 -0.00050009999) +(0.3484848485 0.001758019915 -0.00050009999) +(0.3484848485 0.002838575912 -0.00050009999) +(0.3484848485 0.004235474916 -0.00050009999) +(0.3484848485 0.005764525084 -0.00050009999) +(0.3484848485 0.007161424088 -0.00050009999) +(0.3484848485 0.008241980085 -0.00050009999) +(0.3484848485 0.008975162042 -0.00050009999) +(0.3484848485 0.009429475607 -0.00050009999) +(0.3484848485 0.009695336429 -0.00050009999) +(0.3484848485 0.00984573433 -0.00050009999) +(0.3484848485 0.009929188095 -0.00050009999) +(0.3484848485 0.009975 -0.00050009999) +(0.3484848485 0.01 -0.00050009999) +(0.3535353535 0 -0.00050009999) +(0.3535353535 2.5e-05 -0.00050009999) +(0.3535353535 7.08119053e-05 -0.00050009999) +(0.3535353535 0.00015426567 -0.00050009999) +(0.3535353535 0.0003046635713 -0.00050009999) +(0.3535353535 0.0005705243934 -0.00050009999) +(0.3535353535 0.001024837958 -0.00050009999) +(0.3535353535 0.001758019915 -0.00050009999) +(0.3535353535 0.002838575912 -0.00050009999) +(0.3535353535 0.004235474916 -0.00050009999) +(0.3535353535 0.005764525084 -0.00050009999) +(0.3535353535 0.007161424088 -0.00050009999) +(0.3535353535 0.008241980085 -0.00050009999) +(0.3535353535 0.008975162042 -0.00050009999) +(0.3535353535 0.009429475607 -0.00050009999) +(0.3535353535 0.009695336429 -0.00050009999) +(0.3535353535 0.00984573433 -0.00050009999) +(0.3535353535 0.009929188095 -0.00050009999) +(0.3535353535 0.009975 -0.00050009999) +(0.3535353535 0.01 -0.00050009999) +(0.3585858586 0 -0.00050009999) +(0.3585858586 2.5e-05 -0.00050009999) +(0.3585858586 7.08119053e-05 -0.00050009999) +(0.3585858586 0.00015426567 -0.00050009999) +(0.3585858586 0.0003046635713 -0.00050009999) +(0.3585858586 0.0005705243934 -0.00050009999) +(0.3585858586 0.001024837958 -0.00050009999) +(0.3585858586 0.001758019915 -0.00050009999) +(0.3585858586 0.002838575912 -0.00050009999) +(0.3585858586 0.004235474916 -0.00050009999) +(0.3585858586 0.005764525084 -0.00050009999) +(0.3585858586 0.007161424088 -0.00050009999) +(0.3585858586 0.008241980085 -0.00050009999) +(0.3585858586 0.008975162042 -0.00050009999) +(0.3585858586 0.009429475607 -0.00050009999) +(0.3585858586 0.009695336429 -0.00050009999) +(0.3585858586 0.00984573433 -0.00050009999) +(0.3585858586 0.009929188095 -0.00050009999) +(0.3585858586 0.009975 -0.00050009999) +(0.3585858586 0.01 -0.00050009999) +(0.3636363636 0 -0.00050009999) +(0.3636363636 2.5e-05 -0.00050009999) +(0.3636363636 7.08119053e-05 -0.00050009999) +(0.3636363636 0.00015426567 -0.00050009999) +(0.3636363636 0.0003046635713 -0.00050009999) +(0.3636363636 0.0005705243934 -0.00050009999) +(0.3636363636 0.001024837958 -0.00050009999) +(0.3636363636 0.001758019915 -0.00050009999) +(0.3636363636 0.002838575912 -0.00050009999) +(0.3636363636 0.004235474916 -0.00050009999) +(0.3636363636 0.005764525084 -0.00050009999) +(0.3636363636 0.007161424088 -0.00050009999) +(0.3636363636 0.008241980085 -0.00050009999) +(0.3636363636 0.008975162042 -0.00050009999) +(0.3636363636 0.009429475607 -0.00050009999) +(0.3636363636 0.009695336429 -0.00050009999) +(0.3636363636 0.00984573433 -0.00050009999) +(0.3636363636 0.009929188095 -0.00050009999) +(0.3636363636 0.009975 -0.00050009999) +(0.3636363636 0.01 -0.00050009999) +(0.3686868687 0 -0.00050009999) +(0.3686868687 2.5e-05 -0.00050009999) +(0.3686868687 7.08119053e-05 -0.00050009999) +(0.3686868687 0.00015426567 -0.00050009999) +(0.3686868687 0.0003046635713 -0.00050009999) +(0.3686868687 0.0005705243934 -0.00050009999) +(0.3686868687 0.001024837958 -0.00050009999) +(0.3686868687 0.001758019915 -0.00050009999) +(0.3686868687 0.002838575912 -0.00050009999) +(0.3686868687 0.004235474916 -0.00050009999) +(0.3686868687 0.005764525084 -0.00050009999) +(0.3686868687 0.007161424088 -0.00050009999) +(0.3686868687 0.008241980085 -0.00050009999) +(0.3686868687 0.008975162042 -0.00050009999) +(0.3686868687 0.009429475607 -0.00050009999) +(0.3686868687 0.009695336429 -0.00050009999) +(0.3686868687 0.00984573433 -0.00050009999) +(0.3686868687 0.009929188095 -0.00050009999) +(0.3686868687 0.009975 -0.00050009999) +(0.3686868687 0.01 -0.00050009999) +(0.3737373737 0 -0.00050009999) +(0.3737373737 2.5e-05 -0.00050009999) +(0.3737373737 7.08119053e-05 -0.00050009999) +(0.3737373737 0.00015426567 -0.00050009999) +(0.3737373737 0.0003046635713 -0.00050009999) +(0.3737373737 0.0005705243934 -0.00050009999) +(0.3737373737 0.001024837958 -0.00050009999) +(0.3737373737 0.001758019915 -0.00050009999) +(0.3737373737 0.002838575912 -0.00050009999) +(0.3737373737 0.004235474916 -0.00050009999) +(0.3737373737 0.005764525084 -0.00050009999) +(0.3737373737 0.007161424088 -0.00050009999) +(0.3737373737 0.008241980085 -0.00050009999) +(0.3737373737 0.008975162042 -0.00050009999) +(0.3737373737 0.009429475607 -0.00050009999) +(0.3737373737 0.009695336429 -0.00050009999) +(0.3737373737 0.00984573433 -0.00050009999) +(0.3737373737 0.009929188095 -0.00050009999) +(0.3737373737 0.009975 -0.00050009999) +(0.3737373737 0.01 -0.00050009999) +(0.3787878788 0 -0.00050009999) +(0.3787878788 2.5e-05 -0.00050009999) +(0.3787878788 7.08119053e-05 -0.00050009999) +(0.3787878788 0.00015426567 -0.00050009999) +(0.3787878788 0.0003046635713 -0.00050009999) +(0.3787878788 0.0005705243934 -0.00050009999) +(0.3787878788 0.001024837958 -0.00050009999) +(0.3787878788 0.001758019915 -0.00050009999) +(0.3787878788 0.002838575912 -0.00050009999) +(0.3787878788 0.004235474916 -0.00050009999) +(0.3787878788 0.005764525084 -0.00050009999) +(0.3787878788 0.007161424088 -0.00050009999) +(0.3787878788 0.008241980085 -0.00050009999) +(0.3787878788 0.008975162042 -0.00050009999) +(0.3787878788 0.009429475607 -0.00050009999) +(0.3787878788 0.009695336429 -0.00050009999) +(0.3787878788 0.00984573433 -0.00050009999) +(0.3787878788 0.009929188095 -0.00050009999) +(0.3787878788 0.009975 -0.00050009999) +(0.3787878788 0.01 -0.00050009999) +(0.3838383838 0 -0.00050009999) +(0.3838383838 2.5e-05 -0.00050009999) +(0.3838383838 7.08119053e-05 -0.00050009999) +(0.3838383838 0.00015426567 -0.00050009999) +(0.3838383838 0.0003046635713 -0.00050009999) +(0.3838383838 0.0005705243934 -0.00050009999) +(0.3838383838 0.001024837958 -0.00050009999) +(0.3838383838 0.001758019915 -0.00050009999) +(0.3838383838 0.002838575912 -0.00050009999) +(0.3838383838 0.004235474916 -0.00050009999) +(0.3838383838 0.005764525084 -0.00050009999) +(0.3838383838 0.007161424088 -0.00050009999) +(0.3838383838 0.008241980085 -0.00050009999) +(0.3838383838 0.008975162042 -0.00050009999) +(0.3838383838 0.009429475607 -0.00050009999) +(0.3838383838 0.009695336429 -0.00050009999) +(0.3838383838 0.00984573433 -0.00050009999) +(0.3838383838 0.009929188095 -0.00050009999) +(0.3838383838 0.009975 -0.00050009999) +(0.3838383838 0.01 -0.00050009999) +(0.3888888889 0 -0.00050009999) +(0.3888888889 2.5e-05 -0.00050009999) +(0.3888888889 7.08119053e-05 -0.00050009999) +(0.3888888889 0.00015426567 -0.00050009999) +(0.3888888889 0.0003046635713 -0.00050009999) +(0.3888888889 0.0005705243934 -0.00050009999) +(0.3888888889 0.001024837958 -0.00050009999) +(0.3888888889 0.001758019915 -0.00050009999) +(0.3888888889 0.002838575912 -0.00050009999) +(0.3888888889 0.004235474916 -0.00050009999) +(0.3888888889 0.005764525084 -0.00050009999) +(0.3888888889 0.007161424088 -0.00050009999) +(0.3888888889 0.008241980085 -0.00050009999) +(0.3888888889 0.008975162042 -0.00050009999) +(0.3888888889 0.009429475607 -0.00050009999) +(0.3888888889 0.009695336429 -0.00050009999) +(0.3888888889 0.00984573433 -0.00050009999) +(0.3888888889 0.009929188095 -0.00050009999) +(0.3888888889 0.009975 -0.00050009999) +(0.3888888889 0.01 -0.00050009999) +(0.3939393939 0 -0.00050009999) +(0.3939393939 2.5e-05 -0.00050009999) +(0.3939393939 7.08119053e-05 -0.00050009999) +(0.3939393939 0.00015426567 -0.00050009999) +(0.3939393939 0.0003046635713 -0.00050009999) +(0.3939393939 0.0005705243934 -0.00050009999) +(0.3939393939 0.001024837958 -0.00050009999) +(0.3939393939 0.001758019915 -0.00050009999) +(0.3939393939 0.002838575912 -0.00050009999) +(0.3939393939 0.004235474916 -0.00050009999) +(0.3939393939 0.005764525084 -0.00050009999) +(0.3939393939 0.007161424088 -0.00050009999) +(0.3939393939 0.008241980085 -0.00050009999) +(0.3939393939 0.008975162042 -0.00050009999) +(0.3939393939 0.009429475607 -0.00050009999) +(0.3939393939 0.009695336429 -0.00050009999) +(0.3939393939 0.00984573433 -0.00050009999) +(0.3939393939 0.009929188095 -0.00050009999) +(0.3939393939 0.009975 -0.00050009999) +(0.3939393939 0.01 -0.00050009999) +(0.398989899 0 -0.00050009999) +(0.398989899 2.5e-05 -0.00050009999) +(0.398989899 7.08119053e-05 -0.00050009999) +(0.398989899 0.00015426567 -0.00050009999) +(0.398989899 0.0003046635713 -0.00050009999) +(0.398989899 0.0005705243934 -0.00050009999) +(0.398989899 0.001024837958 -0.00050009999) +(0.398989899 0.001758019915 -0.00050009999) +(0.398989899 0.002838575912 -0.00050009999) +(0.398989899 0.004235474916 -0.00050009999) +(0.398989899 0.005764525084 -0.00050009999) +(0.398989899 0.007161424088 -0.00050009999) +(0.398989899 0.008241980085 -0.00050009999) +(0.398989899 0.008975162042 -0.00050009999) +(0.398989899 0.009429475607 -0.00050009999) +(0.398989899 0.009695336429 -0.00050009999) +(0.398989899 0.00984573433 -0.00050009999) +(0.398989899 0.009929188095 -0.00050009999) +(0.398989899 0.009975 -0.00050009999) +(0.398989899 0.01 -0.00050009999) +(0.404040404 0 -0.00050009999) +(0.404040404 2.5e-05 -0.00050009999) +(0.404040404 7.08119053e-05 -0.00050009999) +(0.404040404 0.00015426567 -0.00050009999) +(0.404040404 0.0003046635713 -0.00050009999) +(0.404040404 0.0005705243934 -0.00050009999) +(0.404040404 0.001024837958 -0.00050009999) +(0.404040404 0.001758019915 -0.00050009999) +(0.404040404 0.002838575912 -0.00050009999) +(0.404040404 0.004235474916 -0.00050009999) +(0.404040404 0.005764525084 -0.00050009999) +(0.404040404 0.007161424088 -0.00050009999) +(0.404040404 0.008241980085 -0.00050009999) +(0.404040404 0.008975162042 -0.00050009999) +(0.404040404 0.009429475607 -0.00050009999) +(0.404040404 0.009695336429 -0.00050009999) +(0.404040404 0.00984573433 -0.00050009999) +(0.404040404 0.009929188095 -0.00050009999) +(0.404040404 0.009975 -0.00050009999) +(0.404040404 0.01 -0.00050009999) +(0.4090909091 0 -0.00050009999) +(0.4090909091 2.5e-05 -0.00050009999) +(0.4090909091 7.08119053e-05 -0.00050009999) +(0.4090909091 0.00015426567 -0.00050009999) +(0.4090909091 0.0003046635713 -0.00050009999) +(0.4090909091 0.0005705243934 -0.00050009999) +(0.4090909091 0.001024837958 -0.00050009999) +(0.4090909091 0.001758019915 -0.00050009999) +(0.4090909091 0.002838575912 -0.00050009999) +(0.4090909091 0.004235474916 -0.00050009999) +(0.4090909091 0.005764525084 -0.00050009999) +(0.4090909091 0.007161424088 -0.00050009999) +(0.4090909091 0.008241980085 -0.00050009999) +(0.4090909091 0.008975162042 -0.00050009999) +(0.4090909091 0.009429475607 -0.00050009999) +(0.4090909091 0.009695336429 -0.00050009999) +(0.4090909091 0.00984573433 -0.00050009999) +(0.4090909091 0.009929188095 -0.00050009999) +(0.4090909091 0.009975 -0.00050009999) +(0.4090909091 0.01 -0.00050009999) +(0.4141414141 0 -0.00050009999) +(0.4141414141 2.5e-05 -0.00050009999) +(0.4141414141 7.08119053e-05 -0.00050009999) +(0.4141414141 0.00015426567 -0.00050009999) +(0.4141414141 0.0003046635713 -0.00050009999) +(0.4141414141 0.0005705243934 -0.00050009999) +(0.4141414141 0.001024837958 -0.00050009999) +(0.4141414141 0.001758019915 -0.00050009999) +(0.4141414141 0.002838575912 -0.00050009999) +(0.4141414141 0.004235474916 -0.00050009999) +(0.4141414141 0.005764525084 -0.00050009999) +(0.4141414141 0.007161424088 -0.00050009999) +(0.4141414141 0.008241980085 -0.00050009999) +(0.4141414141 0.008975162042 -0.00050009999) +(0.4141414141 0.009429475607 -0.00050009999) +(0.4141414141 0.009695336429 -0.00050009999) +(0.4141414141 0.00984573433 -0.00050009999) +(0.4141414141 0.009929188095 -0.00050009999) +(0.4141414141 0.009975 -0.00050009999) +(0.4141414141 0.01 -0.00050009999) +(0.4191919192 0 -0.00050009999) +(0.4191919192 2.5e-05 -0.00050009999) +(0.4191919192 7.08119053e-05 -0.00050009999) +(0.4191919192 0.00015426567 -0.00050009999) +(0.4191919192 0.0003046635713 -0.00050009999) +(0.4191919192 0.0005705243934 -0.00050009999) +(0.4191919192 0.001024837958 -0.00050009999) +(0.4191919192 0.001758019915 -0.00050009999) +(0.4191919192 0.002838575912 -0.00050009999) +(0.4191919192 0.004235474916 -0.00050009999) +(0.4191919192 0.005764525084 -0.00050009999) +(0.4191919192 0.007161424088 -0.00050009999) +(0.4191919192 0.008241980085 -0.00050009999) +(0.4191919192 0.008975162042 -0.00050009999) +(0.4191919192 0.009429475607 -0.00050009999) +(0.4191919192 0.009695336429 -0.00050009999) +(0.4191919192 0.00984573433 -0.00050009999) +(0.4191919192 0.009929188095 -0.00050009999) +(0.4191919192 0.009975 -0.00050009999) +(0.4191919192 0.01 -0.00050009999) +(0.4242424242 0 -0.00050009999) +(0.4242424242 2.5e-05 -0.00050009999) +(0.4242424242 7.08119053e-05 -0.00050009999) +(0.4242424242 0.00015426567 -0.00050009999) +(0.4242424242 0.0003046635713 -0.00050009999) +(0.4242424242 0.0005705243934 -0.00050009999) +(0.4242424242 0.001024837958 -0.00050009999) +(0.4242424242 0.001758019915 -0.00050009999) +(0.4242424242 0.002838575912 -0.00050009999) +(0.4242424242 0.004235474916 -0.00050009999) +(0.4242424242 0.005764525084 -0.00050009999) +(0.4242424242 0.007161424088 -0.00050009999) +(0.4242424242 0.008241980085 -0.00050009999) +(0.4242424242 0.008975162042 -0.00050009999) +(0.4242424242 0.009429475607 -0.00050009999) +(0.4242424242 0.009695336429 -0.00050009999) +(0.4242424242 0.00984573433 -0.00050009999) +(0.4242424242 0.009929188095 -0.00050009999) +(0.4242424242 0.009975 -0.00050009999) +(0.4242424242 0.01 -0.00050009999) +(0.4292929293 0 -0.00050009999) +(0.4292929293 2.5e-05 -0.00050009999) +(0.4292929293 7.08119053e-05 -0.00050009999) +(0.4292929293 0.00015426567 -0.00050009999) +(0.4292929293 0.0003046635713 -0.00050009999) +(0.4292929293 0.0005705243934 -0.00050009999) +(0.4292929293 0.001024837958 -0.00050009999) +(0.4292929293 0.001758019915 -0.00050009999) +(0.4292929293 0.002838575912 -0.00050009999) +(0.4292929293 0.004235474916 -0.00050009999) +(0.4292929293 0.005764525084 -0.00050009999) +(0.4292929293 0.007161424088 -0.00050009999) +(0.4292929293 0.008241980085 -0.00050009999) +(0.4292929293 0.008975162042 -0.00050009999) +(0.4292929293 0.009429475607 -0.00050009999) +(0.4292929293 0.009695336429 -0.00050009999) +(0.4292929293 0.00984573433 -0.00050009999) +(0.4292929293 0.009929188095 -0.00050009999) +(0.4292929293 0.009975 -0.00050009999) +(0.4292929293 0.01 -0.00050009999) +(0.4343434343 0 -0.00050009999) +(0.4343434343 2.5e-05 -0.00050009999) +(0.4343434343 7.08119053e-05 -0.00050009999) +(0.4343434343 0.00015426567 -0.00050009999) +(0.4343434343 0.0003046635713 -0.00050009999) +(0.4343434343 0.0005705243934 -0.00050009999) +(0.4343434343 0.001024837958 -0.00050009999) +(0.4343434343 0.001758019915 -0.00050009999) +(0.4343434343 0.002838575912 -0.00050009999) +(0.4343434343 0.004235474916 -0.00050009999) +(0.4343434343 0.005764525084 -0.00050009999) +(0.4343434343 0.007161424088 -0.00050009999) +(0.4343434343 0.008241980085 -0.00050009999) +(0.4343434343 0.008975162042 -0.00050009999) +(0.4343434343 0.009429475607 -0.00050009999) +(0.4343434343 0.009695336429 -0.00050009999) +(0.4343434343 0.00984573433 -0.00050009999) +(0.4343434343 0.009929188095 -0.00050009999) +(0.4343434343 0.009975 -0.00050009999) +(0.4343434343 0.01 -0.00050009999) +(0.4393939394 0 -0.00050009999) +(0.4393939394 2.5e-05 -0.00050009999) +(0.4393939394 7.08119053e-05 -0.00050009999) +(0.4393939394 0.00015426567 -0.00050009999) +(0.4393939394 0.0003046635713 -0.00050009999) +(0.4393939394 0.0005705243934 -0.00050009999) +(0.4393939394 0.001024837958 -0.00050009999) +(0.4393939394 0.001758019915 -0.00050009999) +(0.4393939394 0.002838575912 -0.00050009999) +(0.4393939394 0.004235474916 -0.00050009999) +(0.4393939394 0.005764525084 -0.00050009999) +(0.4393939394 0.007161424088 -0.00050009999) +(0.4393939394 0.008241980085 -0.00050009999) +(0.4393939394 0.008975162042 -0.00050009999) +(0.4393939394 0.009429475607 -0.00050009999) +(0.4393939394 0.009695336429 -0.00050009999) +(0.4393939394 0.00984573433 -0.00050009999) +(0.4393939394 0.009929188095 -0.00050009999) +(0.4393939394 0.009975 -0.00050009999) +(0.4393939394 0.01 -0.00050009999) +(0.4444444444 0 -0.00050009999) +(0.4444444444 2.5e-05 -0.00050009999) +(0.4444444444 7.08119053e-05 -0.00050009999) +(0.4444444444 0.00015426567 -0.00050009999) +(0.4444444444 0.0003046635713 -0.00050009999) +(0.4444444444 0.0005705243934 -0.00050009999) +(0.4444444444 0.001024837958 -0.00050009999) +(0.4444444444 0.001758019915 -0.00050009999) +(0.4444444444 0.002838575912 -0.00050009999) +(0.4444444444 0.004235474916 -0.00050009999) +(0.4444444444 0.005764525084 -0.00050009999) +(0.4444444444 0.007161424088 -0.00050009999) +(0.4444444444 0.008241980085 -0.00050009999) +(0.4444444444 0.008975162042 -0.00050009999) +(0.4444444444 0.009429475607 -0.00050009999) +(0.4444444444 0.009695336429 -0.00050009999) +(0.4444444444 0.00984573433 -0.00050009999) +(0.4444444444 0.009929188095 -0.00050009999) +(0.4444444444 0.009975 -0.00050009999) +(0.4444444444 0.01 -0.00050009999) +(0.4494949495 0 -0.00050009999) +(0.4494949495 2.5e-05 -0.00050009999) +(0.4494949495 7.08119053e-05 -0.00050009999) +(0.4494949495 0.00015426567 -0.00050009999) +(0.4494949495 0.0003046635713 -0.00050009999) +(0.4494949495 0.0005705243934 -0.00050009999) +(0.4494949495 0.001024837958 -0.00050009999) +(0.4494949495 0.001758019915 -0.00050009999) +(0.4494949495 0.002838575912 -0.00050009999) +(0.4494949495 0.004235474916 -0.00050009999) +(0.4494949495 0.005764525084 -0.00050009999) +(0.4494949495 0.007161424088 -0.00050009999) +(0.4494949495 0.008241980085 -0.00050009999) +(0.4494949495 0.008975162042 -0.00050009999) +(0.4494949495 0.009429475607 -0.00050009999) +(0.4494949495 0.009695336429 -0.00050009999) +(0.4494949495 0.00984573433 -0.00050009999) +(0.4494949495 0.009929188095 -0.00050009999) +(0.4494949495 0.009975 -0.00050009999) +(0.4494949495 0.01 -0.00050009999) +(0.4545454545 0 -0.00050009999) +(0.4545454545 2.5e-05 -0.00050009999) +(0.4545454545 7.08119053e-05 -0.00050009999) +(0.4545454545 0.00015426567 -0.00050009999) +(0.4545454545 0.0003046635713 -0.00050009999) +(0.4545454545 0.0005705243934 -0.00050009999) +(0.4545454545 0.001024837958 -0.00050009999) +(0.4545454545 0.001758019915 -0.00050009999) +(0.4545454545 0.002838575912 -0.00050009999) +(0.4545454545 0.004235474916 -0.00050009999) +(0.4545454545 0.005764525084 -0.00050009999) +(0.4545454545 0.007161424088 -0.00050009999) +(0.4545454545 0.008241980085 -0.00050009999) +(0.4545454545 0.008975162042 -0.00050009999) +(0.4545454545 0.009429475607 -0.00050009999) +(0.4545454545 0.009695336429 -0.00050009999) +(0.4545454545 0.00984573433 -0.00050009999) +(0.4545454545 0.009929188095 -0.00050009999) +(0.4545454545 0.009975 -0.00050009999) +(0.4545454545 0.01 -0.00050009999) +(0.4595959596 0 -0.00050009999) +(0.4595959596 2.5e-05 -0.00050009999) +(0.4595959596 7.08119053e-05 -0.00050009999) +(0.4595959596 0.00015426567 -0.00050009999) +(0.4595959596 0.0003046635713 -0.00050009999) +(0.4595959596 0.0005705243934 -0.00050009999) +(0.4595959596 0.001024837958 -0.00050009999) +(0.4595959596 0.001758019915 -0.00050009999) +(0.4595959596 0.002838575912 -0.00050009999) +(0.4595959596 0.004235474916 -0.00050009999) +(0.4595959596 0.005764525084 -0.00050009999) +(0.4595959596 0.007161424088 -0.00050009999) +(0.4595959596 0.008241980085 -0.00050009999) +(0.4595959596 0.008975162042 -0.00050009999) +(0.4595959596 0.009429475607 -0.00050009999) +(0.4595959596 0.009695336429 -0.00050009999) +(0.4595959596 0.00984573433 -0.00050009999) +(0.4595959596 0.009929188095 -0.00050009999) +(0.4595959596 0.009975 -0.00050009999) +(0.4595959596 0.01 -0.00050009999) +(0.4646464646 0 -0.00050009999) +(0.4646464646 2.5e-05 -0.00050009999) +(0.4646464646 7.08119053e-05 -0.00050009999) +(0.4646464646 0.00015426567 -0.00050009999) +(0.4646464646 0.0003046635713 -0.00050009999) +(0.4646464646 0.0005705243934 -0.00050009999) +(0.4646464646 0.001024837958 -0.00050009999) +(0.4646464646 0.001758019915 -0.00050009999) +(0.4646464646 0.002838575912 -0.00050009999) +(0.4646464646 0.004235474916 -0.00050009999) +(0.4646464646 0.005764525084 -0.00050009999) +(0.4646464646 0.007161424088 -0.00050009999) +(0.4646464646 0.008241980085 -0.00050009999) +(0.4646464646 0.008975162042 -0.00050009999) +(0.4646464646 0.009429475607 -0.00050009999) +(0.4646464646 0.009695336429 -0.00050009999) +(0.4646464646 0.00984573433 -0.00050009999) +(0.4646464646 0.009929188095 -0.00050009999) +(0.4646464646 0.009975 -0.00050009999) +(0.4646464646 0.01 -0.00050009999) +(0.4696969697 0 -0.00050009999) +(0.4696969697 2.5e-05 -0.00050009999) +(0.4696969697 7.08119053e-05 -0.00050009999) +(0.4696969697 0.00015426567 -0.00050009999) +(0.4696969697 0.0003046635713 -0.00050009999) +(0.4696969697 0.0005705243934 -0.00050009999) +(0.4696969697 0.001024837958 -0.00050009999) +(0.4696969697 0.001758019915 -0.00050009999) +(0.4696969697 0.002838575912 -0.00050009999) +(0.4696969697 0.004235474916 -0.00050009999) +(0.4696969697 0.005764525084 -0.00050009999) +(0.4696969697 0.007161424088 -0.00050009999) +(0.4696969697 0.008241980085 -0.00050009999) +(0.4696969697 0.008975162042 -0.00050009999) +(0.4696969697 0.009429475607 -0.00050009999) +(0.4696969697 0.009695336429 -0.00050009999) +(0.4696969697 0.00984573433 -0.00050009999) +(0.4696969697 0.009929188095 -0.00050009999) +(0.4696969697 0.009975 -0.00050009999) +(0.4696969697 0.01 -0.00050009999) +(0.4747474747 0 -0.00050009999) +(0.4747474747 2.5e-05 -0.00050009999) +(0.4747474747 7.08119053e-05 -0.00050009999) +(0.4747474747 0.00015426567 -0.00050009999) +(0.4747474747 0.0003046635713 -0.00050009999) +(0.4747474747 0.0005705243934 -0.00050009999) +(0.4747474747 0.001024837958 -0.00050009999) +(0.4747474747 0.001758019915 -0.00050009999) +(0.4747474747 0.002838575912 -0.00050009999) +(0.4747474747 0.004235474916 -0.00050009999) +(0.4747474747 0.005764525084 -0.00050009999) +(0.4747474747 0.007161424088 -0.00050009999) +(0.4747474747 0.008241980085 -0.00050009999) +(0.4747474747 0.008975162042 -0.00050009999) +(0.4747474747 0.009429475607 -0.00050009999) +(0.4747474747 0.009695336429 -0.00050009999) +(0.4747474747 0.00984573433 -0.00050009999) +(0.4747474747 0.009929188095 -0.00050009999) +(0.4747474747 0.009975 -0.00050009999) +(0.4747474747 0.01 -0.00050009999) +(0.4797979798 0 -0.00050009999) +(0.4797979798 2.5e-05 -0.00050009999) +(0.4797979798 7.08119053e-05 -0.00050009999) +(0.4797979798 0.00015426567 -0.00050009999) +(0.4797979798 0.0003046635713 -0.00050009999) +(0.4797979798 0.0005705243934 -0.00050009999) +(0.4797979798 0.001024837958 -0.00050009999) +(0.4797979798 0.001758019915 -0.00050009999) +(0.4797979798 0.002838575912 -0.00050009999) +(0.4797979798 0.004235474916 -0.00050009999) +(0.4797979798 0.005764525084 -0.00050009999) +(0.4797979798 0.007161424088 -0.00050009999) +(0.4797979798 0.008241980085 -0.00050009999) +(0.4797979798 0.008975162042 -0.00050009999) +(0.4797979798 0.009429475607 -0.00050009999) +(0.4797979798 0.009695336429 -0.00050009999) +(0.4797979798 0.00984573433 -0.00050009999) +(0.4797979798 0.009929188095 -0.00050009999) +(0.4797979798 0.009975 -0.00050009999) +(0.4797979798 0.01 -0.00050009999) +(0.4848484848 0 -0.00050009999) +(0.4848484848 2.5e-05 -0.00050009999) +(0.4848484848 7.08119053e-05 -0.00050009999) +(0.4848484848 0.00015426567 -0.00050009999) +(0.4848484848 0.0003046635713 -0.00050009999) +(0.4848484848 0.0005705243934 -0.00050009999) +(0.4848484848 0.001024837958 -0.00050009999) +(0.4848484848 0.001758019915 -0.00050009999) +(0.4848484848 0.002838575912 -0.00050009999) +(0.4848484848 0.004235474916 -0.00050009999) +(0.4848484848 0.005764525084 -0.00050009999) +(0.4848484848 0.007161424088 -0.00050009999) +(0.4848484848 0.008241980085 -0.00050009999) +(0.4848484848 0.008975162042 -0.00050009999) +(0.4848484848 0.009429475607 -0.00050009999) +(0.4848484848 0.009695336429 -0.00050009999) +(0.4848484848 0.00984573433 -0.00050009999) +(0.4848484848 0.009929188095 -0.00050009999) +(0.4848484848 0.009975 -0.00050009999) +(0.4848484848 0.01 -0.00050009999) +(0.4898989899 0 -0.00050009999) +(0.4898989899 2.5e-05 -0.00050009999) +(0.4898989899 7.08119053e-05 -0.00050009999) +(0.4898989899 0.00015426567 -0.00050009999) +(0.4898989899 0.0003046635713 -0.00050009999) +(0.4898989899 0.0005705243934 -0.00050009999) +(0.4898989899 0.001024837958 -0.00050009999) +(0.4898989899 0.001758019915 -0.00050009999) +(0.4898989899 0.002838575912 -0.00050009999) +(0.4898989899 0.004235474916 -0.00050009999) +(0.4898989899 0.005764525084 -0.00050009999) +(0.4898989899 0.007161424088 -0.00050009999) +(0.4898989899 0.008241980085 -0.00050009999) +(0.4898989899 0.008975162042 -0.00050009999) +(0.4898989899 0.009429475607 -0.00050009999) +(0.4898989899 0.009695336429 -0.00050009999) +(0.4898989899 0.00984573433 -0.00050009999) +(0.4898989899 0.009929188095 -0.00050009999) +(0.4898989899 0.009975 -0.00050009999) +(0.4898989899 0.01 -0.00050009999) +(0.4949494949 0 -0.00050009999) +(0.4949494949 2.5e-05 -0.00050009999) +(0.4949494949 7.08119053e-05 -0.00050009999) +(0.4949494949 0.00015426567 -0.00050009999) +(0.4949494949 0.0003046635713 -0.00050009999) +(0.4949494949 0.0005705243934 -0.00050009999) +(0.4949494949 0.001024837958 -0.00050009999) +(0.4949494949 0.001758019915 -0.00050009999) +(0.4949494949 0.002838575912 -0.00050009999) +(0.4949494949 0.004235474916 -0.00050009999) +(0.4949494949 0.005764525084 -0.00050009999) +(0.4949494949 0.007161424088 -0.00050009999) +(0.4949494949 0.008241980085 -0.00050009999) +(0.4949494949 0.008975162042 -0.00050009999) +(0.4949494949 0.009429475607 -0.00050009999) +(0.4949494949 0.009695336429 -0.00050009999) +(0.4949494949 0.00984573433 -0.00050009999) +(0.4949494949 0.009929188095 -0.00050009999) +(0.4949494949 0.009975 -0.00050009999) +(0.4949494949 0.01 -0.00050009999) +(0.5 0 -0.00050009999) +(0.5 2.5e-05 -0.00050009999) +(0.5 7.08119053e-05 -0.00050009999) +(0.5 0.00015426567 -0.00050009999) +(0.5 0.0003046635713 -0.00050009999) +(0.5 0.0005705243934 -0.00050009999) +(0.5 0.001024837958 -0.00050009999) +(0.5 0.001758019915 -0.00050009999) +(0.5 0.002838575912 -0.00050009999) +(0.5 0.004235474916 -0.00050009999) +(0.5 0.005764525084 -0.00050009999) +(0.5 0.007161424088 -0.00050009999) +(0.5 0.008241980085 -0.00050009999) +(0.5 0.008975162042 -0.00050009999) +(0.5 0.009429475607 -0.00050009999) +(0.5 0.009695336429 -0.00050009999) +(0.5 0.00984573433 -0.00050009999) +(0.5 0.009929188095 -0.00050009999) +(0.5 0.009975 -0.00050009999) +(0.5 0.01 -0.00050009999) +) + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/zoneToPatchName b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/zoneToPatchName new file mode 100755 index 000000000..929cab1d7 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/zoneToPatchName @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM Extend Project: Open source CFD | +| \\ / O peration | Version: 1.6-ext | +| \\ / A nd | Web: www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class wordList; + location "constant/polyMesh"; + object zoneToPatchName; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +16 +( +unknown +unknown +unknown +unknown +unknown +unknown +unknown +unknown +unknown +unknown +unknown +int_SOLID +WALL_1 +WALL_2 +INLET +OUTLET +) + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/thermophysicalProperties b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/thermophysicalProperties new file mode 100755 index 000000000..42a667bf3 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/thermophysicalProperties @@ -0,0 +1,26 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +//CL: this is all +thermoType IAPWSThermo; + + + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/turbulenceProperties b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/turbulenceProperties new file mode 100755 index 000000000..f6753662e --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/turbulenceProperties @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RASModel; + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/controlDict b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/controlDict new file mode 100755 index 000000000..2666107ee --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/controlDict @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application rhoPisoFoam; + +startFrom latestTime; + +//startTime 0; + +stopAt endTime; + +endTime 2.5; + +deltaT 1e-5; + +writeControl runTime; + +writeInterval 1e-2; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 10; + +adjustTimeStep yes; + +maxCo 0.5; + +maxDeltaT 1e-3; + +runTimeModifiable yes; + +libs +( + "libIAPWSThermo.so" + "libfreesteam.so" +); + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSchemes b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSchemes new file mode 100755 index 000000000..1e9cfe831 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSchemes @@ -0,0 +1,76 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default cellMDLimited Gauss linear 0.333; + grad(p) cellMDLimited Gauss linear 0.333; +} + +divSchemes +{ + default none; + div(phi,U) Gauss limitedLinearV 0.5; + div(phid,p) Gauss limitedLinear 0.5; + div(phiU,p) Gauss limitedLinear 0.5; + div(phi,h) Gauss limitedLinear 0.5; + div(phi,k) Gauss limitedLinear 0.5; + div(phi,epsilon) Gauss limitedLinear 0.5; + div(phi,R) Gauss limitedLinear 0.5; + div(phi,omega) Gauss limitedLinear 0.5;; + div(U) Gauss limitedLinear 0.5; + div((muEff*dev2(grad(U).T()))) Gauss linear; + +} + +laplacianSchemes +{ + default none; + laplacian(muEff,U) Gauss linear corrected; + laplacian(mut,U) Gauss linear corrected; + laplacian(DkEff,k) Gauss linear corrected; + laplacian(DepsilonEff,epsilon) Gauss linear corrected; + laplacian(DREff,R) Gauss linear corrected; + laplacian(DomegaEff,omega) Gauss linear corrected; + laplacian((rho*(1|A(U))),p) Gauss linear corrected; + laplacian(alphaEff,h) Gauss linear corrected; + +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p ; +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSolution b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSolution new file mode 100755 index 000000000..50e4e0664 --- /dev/null +++ b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSolution @@ -0,0 +1,98 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | | +| \\ / A nd | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p + { + solver GAMG; + tolerance 1e-14; + relTol 0.001; + smoother GaussSeidel; + minIter 4; + cacheAgglomeration true; + nPreSweeps 1; + nPostSweeps 3; + nFinestSweeps 3; + nCellsInCoarsestLevel 20; + agglomerator faceAreaPair; + mergeLevels 1; + } + + U + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + rho + { + solver PCG; + preconditioner DIC; + tolerance 1e-10; + relTol 0; + } + + htot + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + h + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-14; + relTol 0.001; + } + + k + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0; + } + epsilon + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0; + } +} + +PISO +{ + //Important + realFluid true; + nNonOrthogonalCorrectors 0; + nCorrectors 1; + momentumPredictor yes; + // transonic true; +} + + +// ************************************************************************* // From 38ebdf85151a7c8e4ab8b876401ed80473bbd4ff Mon Sep 17 00:00:00 2001 From: Christian Lucas Date: Sun, 14 Oct 2012 15:50:21 +0200 Subject: [PATCH 13/18] variable change, operator+= update, nasaPoly operator update --- .../mixturePengRobinson/mixturePengRobinson.C | 14 ++- .../mixturePengRobinson/mixturePengRobinson.H | 25 ++-- .../mixturePengRobinsonI.H | 71 ++++++++--- .../mixtureRedlichKwong/mixtureRedlichKwong.C | 8 +- .../mixtureRedlichKwong/mixtureRedlichKwong.H | 21 ++-- .../mixtureRedlichKwongI.H | 53 ++++++-- .../mixtureSoaveRedlichKwong.C | 13 +- .../mixtureSoaveRedlichKwong.H | 23 ++-- .../mixtureSoaveRedlichKwongI.H | 69 +++++++++-- .../pengRobinson/pengRobinson.H | 2 +- .../pengRobinson/pengRobinsonI.H | 5 +- .../redlichKwong/redlichKwong.H | 4 +- .../redlichKwong/redlichKwongI.H | 4 +- .../soaveRedlichKwong/soaveRedlichKwong.H | 3 +- .../soaveRedlichKwong/soaveRedlichKwongI.H | 5 +- .../nasaHeatCapacityPolynomial.H | 19 +++ .../nasaHeatCapacityPolynomialI.H | 114 ++++++++++++------ 17 files changed, 335 insertions(+), 118 deletions(-) diff --git a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.C b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.C index a7b4ca884..39afb89d0 100755 --- a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.C +++ b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.C @@ -49,8 +49,18 @@ mixturePengRobinson::mixturePengRobinson(Istream& is) numOfComp(1), singleComponent(1) { - //CL: Save a pointer of this object in the mixtureComponents array - mixtureComponents.push_back(this); + //CL: set size of weigths, mixtureComponents ... to 10, + //CL: when more mixture componentents are used + //CL: size of the DynamicLis increases automatically + weigths.setSize(10); + mixtureComponents.setSize(10); + aComponents.setSize(10); + daComponents.setSize(10); + d2aComponents.setSize(10); + + //Save a pointer of this object in the mixtureComponents array + mixtureComponents[0]=this; + is.check("mixturePengRobinson::mixturePengRobinson(Istream& is)"); } diff --git a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.H b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.H index d3fc882b2..b5de5d229 100755 --- a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.H +++ b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.H @@ -30,7 +30,7 @@ Description Mixing Rule --> see Paper - Title: Van der eaals mixting rules for cublic equations of state. Applications for supercritical fluids extraction modelling + Title: Van der waals mixing rules for cublic equations of state. Applications for supercritical fluids extraction modelling Authors: T.Y. Kwak and G.A. Mansoori Journal: Chemical Engineering Science, Vol 41, No. 5, pp. 1303-1309, 1986 @@ -53,7 +53,7 @@ Germany #include "autoPtr.H" #include "pengRobinson.H" #include "scalarList.H" -#include +#include "DynamicList.H" #include "label.H" #include "List.H" #include "dictionary.H" @@ -81,19 +81,19 @@ protected: //CL: save the concentrations of each component of the mixture //CL: needs to be multiplied by this->W() to get the molar fractions - mutable std::vector weigths; + mutable DynamicList weigths; //CL: stores the values of a(T) of all componentes - mutable std::vector aComponents; + mutable DynamicList aComponents; //CL: stores the values of the derivatives da/dT of all componentes - mutable std::vector daComponents; + mutable DynamicList daComponents; //CL: stores the values of the second order derivatives d2a/dT2 of all componentes - mutable std::vector d2aComponents; + mutable DynamicList d2aComponents; //CL: saves a pointer to the pure component classes of the mixture - mutable std::vector mixtureComponents; + mutable DynamicList mixtureComponents; //CL: counts the number of components mutable label numOfComp; @@ -113,8 +113,8 @@ public: ( const pengRobinson& pr, label numOfComp, - std::vector weigths, - std::vector mixtureComponents, + DynamicList weigths, + DynamicList mixtureComponents, scalar a0, scalar b, scalar Tcrit, @@ -128,8 +128,8 @@ public: ( const pengRobinson& pr, label numOfComp, - std::vector weigths, - std::vector mixtureComponents + DynamicList weigths, + DynamicList mixtureComponents ); //- Construct from Istream @@ -209,6 +209,9 @@ public: const scalar rho0 ) const; + // Member operators + + inline void operator+=(const mixturePengRobinson&); // Friend operators diff --git a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinsonI.H index 2c2f32194..527cbdac4 100755 --- a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinsonI.H @@ -45,8 +45,8 @@ inline mixturePengRobinson::mixturePengRobinson ( const pengRobinson& pr, label numOfComp, - std::vector weigths, - std::vector mixtureComponents, + DynamicList weigths, + DynamicList mixtureComponents, scalar a0, scalar b, scalar Tcrit, @@ -73,8 +73,8 @@ inline mixturePengRobinson::mixturePengRobinson ( const pengRobinson& pr, label numOfComp, - std::vector weigths, - std::vector mixtureComponents + DynamicList weigths, + DynamicList mixtureComponents ) : pengRobinson(pr), @@ -85,6 +85,8 @@ inline mixturePengRobinson::mixturePengRobinson { TSave=0.0; + //CL: following three DynamicList have no size in the new object + //CL: resize DynamicList aComponents.resize(numOfComp); daComponents.resize(numOfComp); d2aComponents.resize(numOfComp); @@ -133,9 +135,9 @@ inline void mixturePengRobinson::updateModelCoefficients(const scalar T) const //CL: filling vector a, dadT and d2adT2 for (i=0;ia(T); - daComponents.at(i)=mixtureComponents[i]->dadT(T); - d2aComponents.at(i)=mixtureComponents[i]->d2adT2(T); + aComponents[i]=mixtureComponents[i]->a(T); + daComponents[i]=mixtureComponents[i]->dadT(T); + d2aComponents[i]=mixtureComponents[i]->d2adT2(T); } for (i=0;i results that all coefficients (a, da, d2a) are calculated in updateModelCoefficients + TSave=0.0; + singleComponent=0; + rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); +} + // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // @@ -373,13 +408,20 @@ inline mixturePengRobinson operator+ ) { //CL:save both a pointer to the objector pr1 and pr2 and the weights in the new object - std::vector weigths=pr1.weigths; - std::vector mixtureComponents=pr1.mixtureComponents; + DynamicList weigths=pr1.weigths; + DynamicList mixtureComponents=pr1.mixtureComponents; + + //CL: Resizes the DynamicList if number of compontens is larger than the DynamicList + if((weigths.size()(pr1)+static_cast(pr2), pr1.numOfComp+1, weigths, mixtureComponents); @@ -393,8 +435,9 @@ inline mixturePengRobinson operator* ) { //CL: saving the "concentraction" of the component of the mixture in the vector weights - std::vector weigths=pr.weigths; - weigths.push_back(s*pr.nMoles()); + //CL: saved at the Position "numOfComp-1" + DynamicList weigths=pr.weigths; + weigths[pr.numOfComp-1]=s*pr.nMoles(); return mixturePengRobinson(s*static_cast(pr), pr.numOfComp, weigths, pr.mixtureComponents,pr.a0_,pr.b_,pr.Tcrit_,pr.n_,pr.rhostd_); diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.C index 96dd18f28..820354d6c 100755 --- a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.C @@ -48,8 +48,14 @@ mixtureRedlichKwong::mixtureRedlichKwong(Istream& is) redlichKwong(is), numOfComp(1) { + //CL: set size of weigths and mixtureComponents to 10 + //CL: when more mixture componentents are used + //CL: size of the DynamicLis increases automatically + weigths.setSize(10); + mixtureComponents.setSize(10); + //Save a pointer of this object in the mixtureComponents array - mixtureComponents.push_back(this); + mixtureComponents[0]=this; is.check("mixtureRedlichKwong::mixtureRedlichKwong(Istream& is)"); } diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.H index 5c20d83c4..8b9d5ebe3 100755 --- a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.H @@ -30,7 +30,7 @@ Description Mixing Rule --> see Paper - Title: Van der eaals mixting rules for cublic equations of state. Applications for supercritical fluids extraction modelling + Title: Van der waals mixing rules for cublic equations of state. Applications for supercritical fluids extraction modelling Authors: T.Y. Kwak and G.A. Mansoori Journal: Chemical Engineering Science, Vol 41, No. 5, pp. 1303-1309, 1986 @@ -53,7 +53,7 @@ Germany #include "autoPtr.H" #include "redlichKwong.H" #include "scalarList.H" -#include +#include "DynamicList.H" #include "label.H" #include "List.H" #include "dictionary.H" @@ -83,10 +83,10 @@ protected: //CL: save the concentrations of each component of the mixture //CL: needs to be multiplied by this->W() to get the molar fractions - mutable std::vector weigths; + mutable DynamicList weigths; //CL: saves a pointer to the pure component classes of the mixture - mutable std::vector mixtureComponents; + mutable DynamicList mixtureComponents; //CL: counts the number of components mutable label numOfComp; @@ -101,8 +101,8 @@ public: ( const redlichKwong& rK, label numOfComp, - std::vector weigths, - std::vector mixtureComponents, + DynamicList weigths, + DynamicList mixtureComponents, scalar a, scalar b, scalar rhostd @@ -114,8 +114,8 @@ public: ( const redlichKwong& rK, label numOfComp, - std::vector weigths, - std::vector mixtureComponents + DynamicList weigths, + DynamicList mixtureComponents ); //- Construct from Istream @@ -130,7 +130,10 @@ public: // Selector from Istream inline static autoPtr New(Istream& is); - + // Member operators + + inline void operator+=(const mixtureRedlichKwong&); + // Friend operators inline friend mixtureRedlichKwong operator+ diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwongI.H index 028a4dbab..fcaa9e9e5 100755 --- a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwongI.H @@ -45,8 +45,8 @@ inline mixtureRedlichKwong::mixtureRedlichKwong ( const redlichKwong& rK, label numOfComp, - std::vector weigths, - std::vector mixtureComponents, + DynamicList weigths, + DynamicList mixtureComponents, scalar a, scalar b, scalar rhostd @@ -68,8 +68,8 @@ inline mixtureRedlichKwong::mixtureRedlichKwong ( const redlichKwong& rK, label numOfComp, - std::vector weigths, - std::vector mixtureComponents + DynamicList weigths, + DynamicList mixtureComponents ) : redlichKwong(rK), @@ -131,6 +131,32 @@ inline void mixtureRedlichKwong::updateModelCoefficients() const } } +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + + +inline void mixtureRedlichKwong::operator+=(const mixtureRedlichKwong& rK) +{ + //CL: Resizes the DynamicList if number of compontens is larger than the DynamicList + if((weigths.size()rho(Pstd, Tstd, Pstd/(Tstd*this->R())); +} // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // @@ -142,13 +168,20 @@ inline mixtureRedlichKwong operator+ ) { //CL:save both a pointer to the objector rK1 and rK2 and the weights in the new object - std::vector weigths=rK1.weigths; - std::vector mixtureComponents=rK1.mixtureComponents; + DynamicList weigths=rK1.weigths; + DynamicList mixtureComponents=rK1.mixtureComponents; + + //CL: Resizes the DynamicList if number of compontens is larger than the DynamicList + if((weigths.size()(rK1)+static_cast(rK2), rK1.numOfComp+1, weigths, mixtureComponents); @@ -162,8 +195,8 @@ inline mixtureRedlichKwong operator* ) { //CL: saving the "concentraction" of the component of the mixture in the vector weights - std::vector weigths=rK.weigths; - weigths.push_back(s*rK.nMoles()); + DynamicList weigths=rK.weigths; + weigths[rK.numOfComp-1]=s*rK.nMoles(); return mixtureRedlichKwong(s*static_cast(rK), rK.numOfComp, weigths, rK.mixtureComponents,rK.a_,rK.b_,rK.rhostd_); } diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C index 4ffcf40de..f5c9e0136 100755 --- a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C @@ -49,8 +49,17 @@ mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(Istream& is) numOfComp(1), singleComponent(1) { - //CL: Save a pointer of this object in the mixtureComponents array - mixtureComponents.push_back(this); + //CL: set size of weigths, mixtureComponents ... to 10, + //CL: when more mixture componentents are used + //CL: size of the DynamicLis increases automatically + weigths.setSize(10); + mixtureComponents.setSize(10); + aComponents.setSize(10); + daComponents.setSize(10); + d2aComponents.setSize(10); + + //Save a pointer of this object in the mixtureComponents array + mixtureComponents[0]=this; is.check("mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(Istream& is)"); } diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H index a3dea1487..ec9e1a7b7 100755 --- a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H @@ -52,8 +52,8 @@ Germany #include "specie.H" #include "autoPtr.H" #include "soaveRedlichKwong.H" +#include "DynamicList.H" #include "scalarList.H" -#include #include "label.H" #include "List.H" #include "dictionary.H" @@ -81,19 +81,19 @@ protected: //CL: save the concentrations of each component of the mixture //CL: needs to be multiplied by this->W() to get the molar fractions - mutable std::vector weigths; + mutable DynamicList weigths; //CL: stores the values of a(T) of all componentes - mutable std::vector aComponents; + mutable DynamicList aComponents; //CL: stores the values of the derivatives of da/dT of all componentes - mutable std::vector daComponents; + mutable DynamicList daComponents; //CL: stores the values of the second order derivatives of d2a/dT2 of all componentes - mutable std::vector d2aComponents; + mutable DynamicList d2aComponents; //CL: saves a pointer to the pure component classes of the mixture - mutable std::vector mixtureComponents; + mutable DynamicList mixtureComponents; //CL: counts the number of components mutable label numOfComp; @@ -113,8 +113,8 @@ public: ( const soaveRedlichKwong& srk, label numOfComp, - std::vector weigths, - std::vector mixtureComponents, + DynamicList weigths, + DynamicList mixtureComponents, scalar a0, scalar b, scalar Tcrit, @@ -128,8 +128,8 @@ public: ( const soaveRedlichKwong& srk, label numOfComp, - std::vector weigths, - std::vector mixtureComponents + DynamicList weigths, + DynamicList mixtureComponents ); //- Construct from Istream @@ -209,6 +209,9 @@ public: const scalar rho0 ) const; + // Member operators + + inline void operator+=(const mixtureSoaveRedlichKwong&); // Friend operators diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H index 7d5892090..b713eaa49 100755 --- a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H @@ -45,8 +45,8 @@ inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong ( const soaveRedlichKwong& srk, label numOfComp, - std::vector weigths, - std::vector mixtureComponents, + DynamicList weigths, + DynamicList mixtureComponents, scalar a0, scalar b, scalar Tcrit, @@ -74,8 +74,8 @@ inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong ( const soaveRedlichKwong& srk, label numOfComp, - std::vector weigths, - std::vector mixtureComponents + DynamicList weigths, + DynamicList mixtureComponents ) : soaveRedlichKwong(srk), @@ -86,6 +86,8 @@ inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong { TSave=0.0; + //CL: following three DynamicList have no size in the new object + //CL: resize DynamicList aComponents.resize(numOfComp); daComponents.resize(numOfComp); d2aComponents.resize(numOfComp); @@ -136,9 +138,9 @@ inline void mixtureSoaveRedlichKwong::updateModelCoefficients(const scalar T) c //CL: filling vector a, dadT and d2adT2 for (i=0;ia(T); - daComponents.at(i)=mixtureComponents[i]->dadT(T); - d2aComponents.at(i)=mixtureComponents[i]->d2adT2(T); + aComponents[i]=mixtureComponents[i]->a(T); + daComponents[i]=mixtureComponents[i]->dadT(T); + d2aComponents[i]=mixtureComponents[i]->d2adT2(T); } for (i=0;i results that all coefficients (a, da, d2a) are calculated in updateModelCoefficients + TSave=0.0; + singleComponent=0; + rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); +} + // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // @@ -377,13 +412,20 @@ inline mixtureSoaveRedlichKwong operator+ ) { //CL:save both a pointer to the objector srk1 and srk2 and the weights in the new object - std::vector weigths=srk1.weigths; - std::vector mixtureComponents=srk1.mixtureComponents; + DynamicList weigths=srk1.weigths; + DynamicList mixtureComponents=srk1.mixtureComponents; + + //CL: Resizes the DynamicList if number of compontens is larger than the DynamicList + if((weigths.size()(srk1)+static_cast(srk2), srk1.numOfComp+1, weigths, mixtureComponents); @@ -397,8 +439,9 @@ inline mixtureSoaveRedlichKwong operator* ) { //CL: saving the "concentraction" of the component of the mixture in the vector weights - std::vector weigths=srk.weigths; - weigths.push_back(s*srk.nMoles()); + //CL: saved at the Position "numOfComp-1" + DynamicList weigths=srk.weigths; + weigths[srk.numOfComp-1]=s*srk.nMoles(); return mixtureSoaveRedlichKwong(s*static_cast(srk), srk.numOfComp, weigths, srk.mixtureComponents,srk.a0_,srk.b_,srk.Tcrit_,srk.n_,srk.rhostd_); diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H index 4954c6960..fdbfa73ee 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H @@ -216,9 +216,9 @@ public: // Member operators - /* inline void operator+=(const pengRobinson&); + /* inline void operator-=(const pengRobinson&); inline void operator*=(const scalar); diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H index 402b1f386..529207d1f 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H @@ -450,13 +450,14 @@ inline scalar pengRobinson::Z( const scalar p, const scalar T,const scalar rho0) // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // -/* + inline void pengRobinson::operator+=(const pengRobinson& pr) { specie::operator+=(pr); } - inline void pengRobinson::operator-=(const pengRobinson& pr) +/* +inline void pengRobinson::operator-=(const pengRobinson& pr) { specie::operator-=(pr); } diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H index 921c9c902..9901e8d42 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H @@ -172,12 +172,12 @@ public: const scalar rho0 ) const; -/* + // Member operators inline void operator+=(const redlichKwong&); +/* inline void operator-=(const redlichKwong&); - inline void operator*=(const scalar); */ diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H index de5846271..95be706f6 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H @@ -386,14 +386,14 @@ inline scalar redlichKwong::Z // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // -/* + inline void redlichKwong::operator+=(const redlichKwong& rk) { specie::operator+=(rk); } - +/* inline void redlichKwong::operator-=(const redlichKwong& rk) { specie::operator-=(rk); diff --git a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H index baa394c59..0ccd4f188 100755 --- a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.H @@ -211,9 +211,10 @@ public: // Member operators -/* + inline void operator+=(const soaveRedlichKwong&); +/* inline void operator-=(const soaveRedlichKwong&); inline void operator*=(const scalar); diff --git a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H index 244c12cce..d6cf2d212 100755 --- a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwongI.H @@ -443,13 +443,14 @@ inline scalar soaveRedlichKwong::Z( const scalar p, const scalar T,const scalar } // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // -/* + inline void soaveRedlichKwong::operator+=(const soaveRedlichKwong& srk) { specie::operator+=(srk); } - inline void soaveRedlichKwong::operator-=(const soaveRedlichKwong& srk) +/* +inline void soaveRedlichKwong::operator-=(const soaveRedlichKwong& srk) { specie::operator-=(srk); } diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H index 7657b93ac..11b48d0d3 100755 --- a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H +++ b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H @@ -124,6 +124,7 @@ class nasaHeatCapacityPolynomial // Private member functions //- Construct from components + //CL: used for the operator+ inline nasaHeatCapacityPolynomial ( const equationOfState& st, @@ -136,6 +137,24 @@ class nasaHeatCapacityPolynomial const scalar a7 ); + //- Construct from components + //CL: used for the operator* + inline nasaHeatCapacityPolynomial + ( + const equationOfState& st, + const scalar a1, + const scalar a2, + const scalar a3, + const scalar a4, + const scalar a5, + const scalar a6, + const scalar a7, + const scalar e0_std_, + const scalar s0_std_, + const scalar integral_p_dv_std_, + const scalar integral_dpdT_dv_std_, + const scalar cp_std_ + ); public: diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H index 87256d650..0ecd13f80 100755 --- a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H +++ b/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H @@ -35,34 +35,70 @@ Germany // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // +//- Construct from components +//CL: used for the operator+ template inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial ( const equationOfState& st, - const scalar a1, - const scalar a2, - const scalar a3, - const scalar a4, - const scalar a5, - const scalar a6, - const scalar a7 + const scalar a1, + const scalar a2, + const scalar a3, + const scalar a4, + const scalar a5, + const scalar a6, + const scalar a7 ) : equationOfState(st), - a1_(a1), - a2_(a2), - a3_(a3), - a4_(a4), - a5_(a5), - a6_(a6), - a7_(a7), - e0_std(e0(this->Tstd)), - s0_std(s0(this->Tstd)), - integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd)), - integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd)), - cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd)) + a1_(a1), + a2_(a2), + a3_(a3), + a4_(a4), + a5_(a5), + a6_(a6), + a7_(a7), + e0_std(e0(this->Tstd)), + s0_std(s0(this->Tstd)), + integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd)), + integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd)), + cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd)) {} +//- Construct from components +//CL: used for the operator* +template +inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial +( + const equationOfState& st, + const scalar a1, + const scalar a2, + const scalar a3, + const scalar a4, + const scalar a5, + const scalar a6, + const scalar a7, + const scalar e0_std_, + const scalar s0_std_, + const scalar integral_p_dv_std_, + const scalar integral_dpdT_dv_std_, + const scalar cp_std_ +) +: + equationOfState(st), + a1_(a1), + a2_(a2), + a3_(a3), + a4_(a4), + a5_(a5), + a6_(a6), + a7_(a7), + e0_std(e0_std_), + s0_std(s0_std_), + integral_p_dv_std(integral_p_dv_std_), + integral_dpdT_dv_std(integral_dpdT_dv_std_), + cp_std(cp_std_) +{} @@ -74,18 +110,18 @@ inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolyno ) : equationOfState(name, np), - a1_(np.a1_), - a2_(np.a2_), - a3_(np.a3_), - a4_(np.a4_), - a5_(np.a5_), - a6_(np.a6_), - a7_(np.a7_), - e0_std(np.e0_std), - s0_std(np.s0_std), - integral_p_dv_std(np.integral_p_dv_std), - integral_dpdT_dv_std(np.integral_dpdT_dv_std), - cp_std(np.cp_std) + a1_(np.a1_), + a2_(np.a2_), + a3_(np.a3_), + a4_(np.a4_), + a5_(np.a5_), + a6_(np.a6_), + a7_(np.a7_), + e0_std(np.e0_std), + s0_std(np.s0_std), + integral_p_dv_std(np.integral_p_dv_std), + integral_dpdT_dv_std(np.integral_dpdT_dv_std), + cp_std(np.cp_std) {} @@ -288,7 +324,6 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e } - //function to calculate real gas entropy // important assumption used: the Entropy is 0 at STD conditions. // equation: ds= cv0/T * dT + dp/dT *dv @@ -307,9 +342,6 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s + this->integral_dpdT_dv(rho,T); } - - - // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // @@ -375,6 +407,9 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator+ + static_cast(np2) ); + //CL: Important, calls a different constructor as operator* + //CL: the coefficients as well as the EOS (coefficients) changed + //CL: therefore, the values at STD needs to be recalculated return nasaHeatCapacityPolynomial ( eofs, @@ -437,6 +472,8 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator* const nasaHeatCapacityPolynomial& np ) { + //CL: values at STD don't need to be recalculated, + //CL: therefore, providing the values in the constructor return nasaHeatCapacityPolynomial ( s*static_cast(np), @@ -446,7 +483,12 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator* np.a4_, np.a5_, np.a6_, - np.a7_ + np.a7_, + np.e0_std, + np.s0_std, + np.integral_p_dv_std, + np.integral_dpdT_dv_std, + np.cp_std ); } From 72ea9d2d6f489a7e802d813a50060d7500d95e1e Mon Sep 17 00:00:00 2001 From: morgoth Date: Fri, 16 Aug 2013 10:28:04 +0200 Subject: [PATCH 14/18] solver, tutorial +mixClasses changed --- .../compressible/realFluidPisoFoam/Make/files | 3 + .../realFluidPisoFoam/Make/options | 14 + .../compressible/realFluidPisoFoam/UEqn.H | 11 + .../realFluidPisoFoam/createFields.H | 61 + .../compressible/realFluidPisoFoam/hEqn.H | 12 + .../compressible/realFluidPisoFoam/pEqn.H | 98 + .../realFluidPisoFoam/realFluidPisoFoam.C | 97 + .../compressible/rhoPisoFoam/createFields.H | 3 - .../solvers/compressible/rhoPisoFoam/pEqn.H | 92 +- src/thermophysicalModels/specie/Make/files | 15 +- .../aungierRedlichKwong/aungierRedlichKwong.C | 76 +- .../aungierRedlichKwong/aungierRedlichKwong.H | 91 +- .../aungierRedlichKwongI.H | 213 +- .../cubicEquationOfState/mixtures/README | 11 + .../mixtureAungierRedlichKwong.C} | 55 +- .../mixtureAungierRedlichKwong.H | 164 + .../mixtureAungierRedlichKwongI.H | 212 + .../mixturePengRobinson/mixturePengRobinson.C | 157 + .../mixturePengRobinson/mixturePengRobinson.H | 47 +- .../mixturePengRobinsonI.H | 134 +- .../mixtureRedlichKwong/mixtureRedlichKwong.C | 154 + .../mixtureRedlichKwong/mixtureRedlichKwong.H | 34 +- .../mixtureRedlichKwongI.H | 70 +- .../mixtureSoaveRedlichKwong.C | 157 + .../mixtureSoaveRedlichKwong.H | 46 +- .../mixtureSoaveRedlichKwongI.H | 129 +- .../pengRobinson/pengRobinson.C | 125 + .../pengRobinson/pengRobinson.H | 35 +- .../pengRobinson/pengRobinsonI.H | 76 +- .../redlichKwong/redlichKwong.C | 62 +- .../redlichKwong/redlichKwong.H | 32 +- .../redlichKwong/redlichKwongI.H | 57 +- .../soaveRedlichKwong/soaveRedlichKwong.C | 64 +- .../soaveRedlichKwong/soaveRedlichKwong.H | 32 +- .../soaveRedlichKwong/soaveRedlichKwongI.H | 47 +- .../mixturePengRobinson/mixturePengRobinson.C | 83 - .../mixtureRedlichKwong/mixtureRedlichKwong.C | 78 - .../mixtureSoaveRedlichKwong.C | 82 - .../nasaHeatCapacityPolynomial.C | 0 .../nasaHeatCapacityPolynomial.H | 0 .../nasaHeatCapacityPolynomialI.H | 0 .../realGasSpecieThermo/realGasSpecieThermo.C | 0 .../realGasSpecieThermo/realGasSpecieThermo.H | 0 .../realGasSpecieThermoI.H | 0 .../ras/backStep/0.org}/T | 10 +- .../ras/backStep/0.org}/U | 17 +- .../ras/backStep/0.org}/epsilon | 16 +- .../ras/backStep/0.org}/k | 18 +- .../ras/backStep/0.org}/p | 14 +- .../p => realFluidPisoFoam/ras/backStep/0/T} | 24 +- .../ras/backStep}/0/U | 18 +- .../ras/backStep}/0/epsilon | 16 +- .../ras/backStep}/0/k | 18 +- .../T => realFluidPisoFoam/ras/backStep/0/p} | 31 +- .../realFluidPisoFoam/ras/backStep/Allrun | 9 + .../ras/backStep}/constant/RASProperties | 0 .../backStep/constant/polyMesh/blockMeshDict | 173 + .../ras/backStep}/constant/polyMesh/boundary | 48 +- .../constant/thermophysicalProperties | 0 .../backStep}/constant/turbulenceProperties | 0 .../ras/backStep}/system/controlDict | 8 +- .../ras/backStep}/system/fvSchemes | 2 +- .../ras/backStep}/system/fvSolution | 0 .../ras/cavity_IAPWS97/0.org/T | 39 + .../ras/cavity_IAPWS97/0.org/U | 43 + .../ras/cavity_IAPWS97/0.org/epsilon | 43 + .../ras/cavity_IAPWS97/0.org/k | 41 + .../ras/cavity_IAPWS97/0.org/omega | 47 + .../ras/cavity_IAPWS97/0.org/p | 39 + .../realFluidPisoFoam/ras/cavity_IAPWS97/0/T | 39 + .../realFluidPisoFoam/ras/cavity_IAPWS97/0/U | 43 + .../ras/cavity_IAPWS97/0/epsilon | 43 + .../realFluidPisoFoam/ras/cavity_IAPWS97/0/k | 41 + .../ras/cavity_IAPWS97/0/omega | 47 + .../realFluidPisoFoam/ras/cavity_IAPWS97/0/p | 39 + .../ras/cavity_IAPWS97/Allrun | 9 + .../ras/cavity_IAPWS97}/README | 2 +- .../cavity_IAPWS97}/constant/RASProperties | 0 .../constant/polyMesh/blockMeshDict | 75 + .../cavity_IAPWS97/constant/polyMesh/boundary | 40 + .../constant/thermophysicalProperties | 0 .../constant/turbulenceProperties | 0 .../ras/cavity_IAPWS97}/system/controlDict | 12 +- .../ras/cavity_IAPWS97}/system/fvSchemes | 2 +- .../ras/cavity_IAPWS97}/system/fvSolution | 0 .../IAPWS97_Pipe/constant/.RASProperties.swp | Bin 12288 -> 0 bytes .../IAPWS97_Pipe/constant/polyMesh/cellZones | 21 - .../IAPWS97_Pipe/constant/polyMesh/faceZones | 21 - .../ras/IAPWS97_Pipe/constant/polyMesh/faces | 7666 ---------------- .../IAPWS97_Pipe/constant/polyMesh/neighbour | 3669 -------- .../ras/IAPWS97_Pipe/constant/polyMesh/owner | 7667 ----------------- .../IAPWS97_Pipe/constant/polyMesh/pointZones | 21 - .../ras/IAPWS97_Pipe/constant/polyMesh/points | 4024 --------- .../constant/polyMesh/zoneToPatchName | 40 - .../ras/pipe/constant/polyMesh/boundary | 52 - .../ras/pipe/constant/polyMesh/cellZones | 21 - .../ras/pipe/constant/polyMesh/faceZones | 21 - .../ras/pipe/constant/polyMesh/faces | 7666 ---------------- .../ras/pipe/constant/polyMesh/neighbour | 3669 -------- .../ras/pipe/constant/polyMesh/owner | 7667 ----------------- .../ras/pipe/constant/polyMesh/pointZones | 21 - .../ras/pipe/constant/polyMesh/points | 4024 --------- .../pipe/constant/polyMesh/zoneToPatchName | 40 - 103 files changed, 3239 insertions(+), 47066 deletions(-) create mode 100644 applications/solvers/compressible/realFluidPisoFoam/Make/files create mode 100644 applications/solvers/compressible/realFluidPisoFoam/Make/options create mode 100644 applications/solvers/compressible/realFluidPisoFoam/UEqn.H create mode 100644 applications/solvers/compressible/realFluidPisoFoam/createFields.H create mode 100644 applications/solvers/compressible/realFluidPisoFoam/hEqn.H create mode 100644 applications/solvers/compressible/realFluidPisoFoam/pEqn.H create mode 100644 applications/solvers/compressible/realFluidPisoFoam/realFluidPisoFoam.C rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState}/aungierRedlichKwong/aungierRedlichKwong.C (50%) rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState}/aungierRedlichKwong/aungierRedlichKwong.H (72%) rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState}/aungierRedlichKwong/aungierRedlichKwongI.H (67%) create mode 100644 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/README rename src/thermophysicalModels/specie/equationOfState/{pengRobinson/pengRobinson.C => cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.C} (62%) create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.H create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwongI.H create mode 100644 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState/mixtures}/mixturePengRobinson/mixturePengRobinson.H (84%) mode change 100755 => 100644 rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState/mixtures}/mixturePengRobinson/mixturePengRobinsonI.H (73%) mode change 100755 => 100644 create mode 100644 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.C rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState/mixtures}/mixtureRedlichKwong/mixtureRedlichKwong.H (82%) mode change 100755 => 100644 rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState/mixtures}/mixtureRedlichKwong/mixtureRedlichKwongI.H (74%) mode change 100755 => 100644 create mode 100644 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState/mixtures}/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H (85%) mode change 100755 => 100644 rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState/mixtures}/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H (74%) mode change 100755 => 100644 create mode 100755 src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState}/pengRobinson/pengRobinson.H (91%) rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState}/pengRobinson/pengRobinsonI.H (85%) rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState}/redlichKwong/redlichKwong.C (56%) rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState}/redlichKwong/redlichKwong.H (90%) rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState}/redlichKwong/redlichKwongI.H (90%) rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState}/soaveRedlichKwong/soaveRedlichKwong.C (55%) rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState}/soaveRedlichKwong/soaveRedlichKwong.H (91%) rename src/thermophysicalModels/specie/equationOfState/{ => cubicEquationOfState}/soaveRedlichKwong/soaveRedlichKwongI.H (92%) delete mode 100755 src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.C delete mode 100755 src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.C delete mode 100755 src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C rename src/thermophysicalModels/specie/thermo/{ => realGasThermo}/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C (100%) rename src/thermophysicalModels/specie/thermo/{ => realGasThermo}/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H (100%) rename src/thermophysicalModels/specie/thermo/{ => realGasThermo}/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H (100%) rename src/thermophysicalModels/specie/thermo/{ => realGasThermo}/realGasSpecieThermo/realGasSpecieThermo.C (100%) rename src/thermophysicalModels/specie/thermo/{ => realGasThermo}/realGasSpecieThermo/realGasSpecieThermo.H (100%) rename src/thermophysicalModels/specie/thermo/{ => realGasThermo}/realGasSpecieThermo/realGasSpecieThermoI.H (100%) rename tutorials/compressible/{rhoPisoFoam/ras/pipe/0 => realFluidPisoFoam/ras/backStep/0.org}/T (94%) rename tutorials/compressible/{rhoPisoFoam/ras/pipe/0 => realFluidPisoFoam/ras/backStep/0.org}/U (84%) rename tutorials/compressible/{rhoPisoFoam/ras/pipe/0 => realFluidPisoFoam/ras/backStep/0.org}/epsilon (83%) mode change 100755 => 100644 rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe/0 => realFluidPisoFoam/ras/backStep/0.org}/k (77%) mode change 100755 => 100644 rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe/0 => realFluidPisoFoam/ras/backStep/0.org}/p (89%) rename tutorials/compressible/{rhoPisoFoam/ras/pipe/0/p => realFluidPisoFoam/ras/backStep/0/T} (82%) rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe => realFluidPisoFoam/ras/backStep}/0/U (81%) rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe => realFluidPisoFoam/ras/backStep}/0/epsilon (83%) mode change 100755 => 100644 rename tutorials/compressible/{rhoPisoFoam/ras/pipe => realFluidPisoFoam/ras/backStep}/0/k (77%) mode change 100755 => 100644 rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe/0/T => realFluidPisoFoam/ras/backStep/0/p} (72%) create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/backStep/Allrun rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe => realFluidPisoFoam/ras/backStep}/constant/RASProperties (100%) create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/polyMesh/blockMeshDict rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe => realFluidPisoFoam/ras/backStep}/constant/polyMesh/boundary (60%) mode change 100755 => 100644 rename tutorials/compressible/{rhoPisoFoam/ras/pipe => realFluidPisoFoam/ras/backStep}/constant/thermophysicalProperties (100%) rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe => realFluidPisoFoam/ras/backStep}/constant/turbulenceProperties (100%) rename tutorials/compressible/{rhoPisoFoam/ras/pipe => realFluidPisoFoam/ras/backStep}/system/controlDict (92%) rename tutorials/compressible/{rhoPisoFoam/ras/pipe => realFluidPisoFoam/ras/backStep}/system/fvSchemes (98%) rename tutorials/compressible/{rhoPisoFoam/ras/pipe => realFluidPisoFoam/ras/backStep}/system/fvSolution (100%) create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/T create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/U create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/epsilon create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/k create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/omega create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/p create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/T create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/U create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/epsilon create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/k create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/omega create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/p create mode 100755 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/Allrun rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe => realFluidPisoFoam/ras/cavity_IAPWS97}/README (97%) rename tutorials/compressible/{rhoPisoFoam/ras/pipe => realFluidPisoFoam/ras/cavity_IAPWS97}/constant/RASProperties (100%) create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/blockMeshDict create mode 100644 tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/boundary rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe => realFluidPisoFoam/ras/cavity_IAPWS97}/constant/thermophysicalProperties (100%) rename tutorials/compressible/{rhoPisoFoam/ras/pipe => realFluidPisoFoam/ras/cavity_IAPWS97}/constant/turbulenceProperties (100%) rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe => realFluidPisoFoam/ras/cavity_IAPWS97}/system/controlDict (89%) rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe => realFluidPisoFoam/ras/cavity_IAPWS97}/system/fvSchemes (98%) rename tutorials/compressible/{rhoPisoFoam/ras/IAPWS97_Pipe => realFluidPisoFoam/ras/cavity_IAPWS97}/system/fvSolution (100%) delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/.RASProperties.swp delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/cellZones delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faceZones delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faces delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/neighbour delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/owner delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/pointZones delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/points delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/zoneToPatchName delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/boundary delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/cellZones delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faceZones delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faces delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/neighbour delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/owner delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/pointZones delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/points delete mode 100755 tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/zoneToPatchName diff --git a/applications/solvers/compressible/realFluidPisoFoam/Make/files b/applications/solvers/compressible/realFluidPisoFoam/Make/files new file mode 100644 index 000000000..9e9cf08de --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/Make/files @@ -0,0 +1,3 @@ +realFluidPisoFoam.C + +EXE = $(FOAM_APPBIN)/realFluidPisoFoam diff --git a/applications/solvers/compressible/realFluidPisoFoam/Make/options b/applications/solvers/compressible/realFluidPisoFoam/Make/options new file mode 100644 index 000000000..3ae0c0cb7 --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/Make/options @@ -0,0 +1,14 @@ +EXE_INC = \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ + -I$(LIB_SRC)/finiteVolume/lnInclude + +EXE_LIBS = \ + -lfiniteVolume \ + -lmeshTools \ + -lbasicThermophysicalModels \ + -lspecie \ + -lcompressibleTurbulenceModel \ + -lcompressibleRASModels \ + -lcompressibleLESModels diff --git a/applications/solvers/compressible/realFluidPisoFoam/UEqn.H b/applications/solvers/compressible/realFluidPisoFoam/UEqn.H new file mode 100644 index 000000000..64dd52b1b --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/UEqn.H @@ -0,0 +1,11 @@ + fvVectorMatrix UEqn + ( + fvm::ddt(rho, U) + + fvm::div(phi, U) + + turbulence->divDevRhoReff(U) + ); + + if (momentumPredictor) + { + solve(UEqn == -fvc::grad(p)); + } diff --git a/applications/solvers/compressible/realFluidPisoFoam/createFields.H b/applications/solvers/compressible/realFluidPisoFoam/createFields.H new file mode 100644 index 000000000..f514ce6e5 --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/createFields.H @@ -0,0 +1,61 @@ + Info<< "Reading thermophysical properties\n" << endl; + + autoPtr pThermo + ( + basicPsiThermo::New(mesh) + ); + basicPsiThermo& thermo = pThermo(); + + volScalarField& p = thermo.p(); + volScalarField& h = thermo.h(); + const volScalarField& psi = thermo.psi(); + const volScalarField& drhodh = thermo.drhodh(); + + bool realFluid=mesh.solutionDict().subDict("PISO").lookupOrDefault("realFluid",false); + + volScalarField rho + ( + IOobject + ( + "rho", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + thermo.rho() + ); + + Info<< "\nReading field U\n" << endl; + volVectorField U + ( + IOobject + ( + "U", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh + ); + +# include "compressibleCreatePhi.H" + + + Info<< "Creating turbulence model\n" << endl; + autoPtr turbulence + ( + compressible::turbulenceModel::New + ( + rho, + U, + phi, + thermo + ) + ); + + + Info<< "Creating field DpDt\n" << endl; + volScalarField DpDt = + fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p); diff --git a/applications/solvers/compressible/realFluidPisoFoam/hEqn.H b/applications/solvers/compressible/realFluidPisoFoam/hEqn.H new file mode 100644 index 000000000..ae60d3316 --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/hEqn.H @@ -0,0 +1,12 @@ +{ + solve + ( + fvm::ddt(rho, h) + + fvm::div(phi, h) + - fvm::laplacian(turbulence->alphaEff(), h) + == + DpDt + ); + + thermo.correct(); +} diff --git a/applications/solvers/compressible/realFluidPisoFoam/pEqn.H b/applications/solvers/compressible/realFluidPisoFoam/pEqn.H new file mode 100644 index 000000000..2e884a146 --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/pEqn.H @@ -0,0 +1,98 @@ +rho = thermo.rho(); + +volScalarField rUA = 1.0/UEqn.A(); +U = rUA*UEqn.H(); + +if (realFluid) +{ + phi = + fvc::interpolate(rho)* + ( + (fvc::interpolate(U) & mesh.Sf()) + + fvc::ddtPhiCorr(rUA, rho, U, phi) + ); + + for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + { + fvScalarMatrix pEqn + ( + psi*fvm::ddt(p) + + drhodh*fvc::ddt(h) + + fvc::div(phi) + - fvm::laplacian(rho*rUA, p) + ); + + pEqn.solve(); + + if (nonOrth == nNonOrthCorr) + { + phi += pEqn.flux(); + } + } +} +else +{ + if (transonic) + { + surfaceScalarField phid + ( + "phid", + fvc::interpolate(psi) + *( + (fvc::interpolate(U) & mesh.Sf()) + + fvc::ddtPhiCorr(rUA, rho, U, phi) + ) + ); + + for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + { + fvScalarMatrix pEqn + ( + fvm::ddt(psi, p) + + fvm::div(phid, p) + - fvm::laplacian(rho*rUA, p) + ); + + pEqn.solve(); + + if (nonOrth == nNonOrthCorr) + { + phi == pEqn.flux(); + } + } + } + else + { + phi = + fvc::interpolate(rho)* + ( + (fvc::interpolate(U) & mesh.Sf()) + + fvc::ddtPhiCorr(rUA, rho, U, phi) + ); + + for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + { + fvScalarMatrix pEqn + ( + fvm::ddt(psi, p) + + fvc::div(phi) + - fvm::laplacian(rho*rUA, p) + ); + + pEqn.solve(); + + if (nonOrth == nNonOrthCorr) + { + phi += pEqn.flux(); + } + } + } +} + +#include "rhoEqn.H" +#include "compressibleContinuityErrs.H" + +U -= rUA*fvc::grad(p); +U.correctBoundaryConditions(); + +DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p); diff --git a/applications/solvers/compressible/realFluidPisoFoam/realFluidPisoFoam.C b/applications/solvers/compressible/realFluidPisoFoam/realFluidPisoFoam.C new file mode 100644 index 000000000..29b423ddf --- /dev/null +++ b/applications/solvers/compressible/realFluidPisoFoam/realFluidPisoFoam.C @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Application + rhoPisoFoam + +Description + Transient PISO solver for compressible, laminar or turbulent flow. + + CL: rhoPisoFoam with a changed pressure equation for non-perfect gas fluids + CL: see realFluid flag + +\*---------------------------------------------------------------------------*/ + +#include "fvCFD.H" +#include "basicPsiThermo.H" +#include "turbulenceModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + #include "setRootCase.H" + + #include "createTime.H" + #include "createMesh.H" + #include "createFields.H" + #include "initContinuityErrs.H" + #include "readTimeControls.H" + #include "compressibleCourantNo.H" + #include "setInitialDeltaT.H" + + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + Info<< "\nStarting time loop\n" << endl; + + while (runTime.run()) + { + #include "readTimeControls.H" + #include "readPISOControls.H" + #include "compressibleCourantNo.H" + #include "setDeltaT.H" + + runTime++; + + Info<< "Time = " << runTime.timeName() << nl << endl; + + #include "rhoEqn.H" + #include "UEqn.H" + + // --- PISO loop + for (int corr=1; corr<=nCorr; corr++) + { + #include "hEqn.H" + #include "pEqn.H" + } + + turbulence->correct(); + + rho = thermo.rho(); + + runTime.write(); + + Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" + << " ClockTime = " << runTime.elapsedClockTime() << " s" + << nl << endl; + } + + Info<< "End\n" << endl; + + return 0; +} + + +// ************************************************************************* // diff --git a/applications/solvers/compressible/rhoPisoFoam/createFields.H b/applications/solvers/compressible/rhoPisoFoam/createFields.H index f514ce6e5..fdb706a14 100644 --- a/applications/solvers/compressible/rhoPisoFoam/createFields.H +++ b/applications/solvers/compressible/rhoPisoFoam/createFields.H @@ -9,9 +9,6 @@ volScalarField& p = thermo.p(); volScalarField& h = thermo.h(); const volScalarField& psi = thermo.psi(); - const volScalarField& drhodh = thermo.drhodh(); - - bool realFluid=mesh.solutionDict().subDict("PISO").lookupOrDefault("realFluid",false); volScalarField rho ( diff --git a/applications/solvers/compressible/rhoPisoFoam/pEqn.H b/applications/solvers/compressible/rhoPisoFoam/pEqn.H index 2e884a146..280842ecc 100644 --- a/applications/solvers/compressible/rhoPisoFoam/pEqn.H +++ b/applications/solvers/compressible/rhoPisoFoam/pEqn.H @@ -3,7 +3,36 @@ rho = thermo.rho(); volScalarField rUA = 1.0/UEqn.A(); U = rUA*UEqn.H(); -if (realFluid) +if (transonic) +{ + surfaceScalarField phid + ( + "phid", + fvc::interpolate(psi) + *( + (fvc::interpolate(U) & mesh.Sf()) + + fvc::ddtPhiCorr(rUA, rho, U, phi) + ) + ); + + for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + { + fvScalarMatrix pEqn + ( + fvm::ddt(psi, p) + + fvm::div(phid, p) + - fvm::laplacian(rho*rUA, p) + ); + + pEqn.solve(); + + if (nonOrth == nNonOrthCorr) + { + phi == pEqn.flux(); + } + } +} +else { phi = fvc::interpolate(rho)* @@ -16,8 +45,7 @@ if (realFluid) { fvScalarMatrix pEqn ( - psi*fvm::ddt(p) - + drhodh*fvc::ddt(h) + fvm::ddt(psi, p) + fvc::div(phi) - fvm::laplacian(rho*rUA, p) ); @@ -30,64 +58,6 @@ if (realFluid) } } } -else -{ - if (transonic) - { - surfaceScalarField phid - ( - "phid", - fvc::interpolate(psi) - *( - (fvc::interpolate(U) & mesh.Sf()) - + fvc::ddtPhiCorr(rUA, rho, U, phi) - ) - ); - - for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) - { - fvScalarMatrix pEqn - ( - fvm::ddt(psi, p) - + fvm::div(phid, p) - - fvm::laplacian(rho*rUA, p) - ); - - pEqn.solve(); - - if (nonOrth == nNonOrthCorr) - { - phi == pEqn.flux(); - } - } - } - else - { - phi = - fvc::interpolate(rho)* - ( - (fvc::interpolate(U) & mesh.Sf()) - + fvc::ddtPhiCorr(rUA, rho, U, phi) - ); - - for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) - { - fvScalarMatrix pEqn - ( - fvm::ddt(psi, p) - + fvc::div(phi) - - fvm::laplacian(rho*rUA, p) - ); - - pEqn.solve(); - - if (nonOrth == nNonOrthCorr) - { - phi += pEqn.flux(); - } - } - } -} #include "rhoEqn.H" #include "compressibleContinuityErrs.H" diff --git a/src/thermophysicalModels/specie/Make/files b/src/thermophysicalModels/specie/Make/files index 7f4ccccfe..af8c9669a 100644 --- a/src/thermophysicalModels/specie/Make/files +++ b/src/thermophysicalModels/specie/Make/files @@ -12,12 +12,13 @@ $(reactions)/makeChemkinReactions.C $(reactions)/makeReactionThermoReactions.C $(reactions)/makeLangmuirHinshelwoodReactions.C -$(equationOfState)/aungierRedlichKwong/aungierRedlichKwong.C -$(equationOfState)/pengRobinson/pengRobinson.C -$(equationOfState)/redlichKwong/redlichKwong.C -$(equationOfState)/soaveRedlichKwong/soaveRedlichKwong.C -$(equationOfState)/mixtureRedlichKwong/mixtureRedlichKwong.C -$(equationOfState)/mixturePengRobinson/mixturePengRobinson.C -$(equationOfState)/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C +$(equationOfState)/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C +$(equationOfState)/cubicEquationOfState/pengRobinson/pengRobinson.C +$(equationOfState)/cubicEquationOfState/redlichKwong/redlichKwong.C +$(equationOfState)/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C +$(equationOfState)/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.C +$(equationOfState)/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C +$(equationOfState)/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C + LIB = $(FOAM_LIBBIN)/libspecie diff --git a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C similarity index 50% rename from src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C index d6d76596d..034fcbc32 100755 --- a/src/thermophysicalModels/specie/equationOfState/aungierRedlichKwong/aungierRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C @@ -41,18 +41,6 @@ Germany namespace Foam { -/* * * * * * * * * * * * * * * Private static data * * * * * * * * * * * * * */ - -const scalar aungierRedlichKwong::rhoMin_ -( - debug::tolerances("aungierRedlichKwongRhoMin", 1e-3) -); - -const scalar aungierRedlichKwong::rhoMax_ -( - debug::tolerances("aungierRedlichKwongRhoMax", 1500) -); - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // aungierRedlichKwong::aungierRedlichKwong(Istream& is) @@ -62,22 +50,76 @@ aungierRedlichKwong::aungierRedlichKwong(Istream& is) Tcrit_(readScalar(is)), azentricFactor_(readScalar(is)), rhocrit_(readScalar(is)), - a_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), + a0_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), b_(0.08664*this->RR*Tcrit_/pcrit_), - c_(this->RR*Tcrit_/(pcrit_+(a_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), + c_(this->RR*Tcrit_/(pcrit_+(a0_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), n_(0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2)), - // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) + TSave(0.0), + //CL: Only uses the default values + rhoMin_(1e-3), + rhoMax_(1500), + b2_(pow(b_,2)), + b3_(pow(b_,3)), + b4_(pow(b_,4)), + b5_(pow(b_,5)), + c2_(pow(c_,2)), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) { is.check("aungierRedlichKwong::aungierRedlichKwong(Istream& is)"); } +//CL: Constructed needed in OpenFOAM 2.x.x +//CL: Code works fine, but compiling problem in OpenFOAM 1.6.ext +//CL: because specie has no constructor using dict +/* +aungierRedlichKwong::aungierRedlichKwong(const dictionary& dict) +: + specie(dict), + pcrit_(readScalar(dict.subDict("equationOfState").lookup("pCritical"))), + Tcrit_(readScalar(dict.subDict("equationOfState").lookup("TCritical"))), + azentricFactor_(readScalar(dict.subDict("equationOfState").lookup("azentricFactor"))), + rhocrit_(readScalar(dict.subDict("equationOfState").lookup("rhoCritical"))), + //CL: rhoMin and rhoMax are only used as boundaries for the bisection method (see rho function) + //CL: important: rhoMin and rhoMax are not used as boundary for the newton solver + //CL: therefore, rho can be larger than rhoMax and smaller than rhoMin + rhoMin_(dict.subDict("equationOfState").lookupOrDefault("rhoMin",1e-3)), + rhoMax_(dict.subDict("equationOfState").lookupOrDefault("rhoMax",1500)), + a0_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), + b_(0.08664*this->RR*Tcrit_/pcrit_), + c_(this->RR*Tcrit_/(pcrit_+(a0_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), + n_(0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2)), + TSave(0.0), + b2_(pow(b_,2)), + b3_(pow(b_,3)), + b4_(pow(b_,4)), + b5_(pow(b_,5)), + c2_(pow(c_,2)), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) +{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::aungierRedlichKwong::write(Ostream& os) const +{ + specie::write(os); + + dictionary dict("equationOfState"); + dict.add("pCritical", pcrit_); + dict.add("TCritical", Tcrit_); + dict.add("azentricFactor", azentricFactor_); + dict.add("rhoCritical", rhocrit_); + dict.add("rhoMin", rhoMin_); + dict.add("rhoMax", rhoMax_); + + os << indent << dict.dictName() << dict; +} +*/ // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // Ostream& operator<<(Ostream& os, const aungierRedlichKwong& ark) { - os << static_cast(ark)<< tab + os << static_cast(ark)<< token::SPACE << ark.pcrit_ << tab<< ark.Tcrit_<< tab<RR,2)*pow(Tcrit_,2)/pcrit_), - b_(0.08664*this->RR*Tcrit_/pcrit_), - c_(this->RR*Tcrit_/(pcrit_+(a_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), - n_(0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2)), - // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) + specie(sp) {} @@ -71,11 +57,16 @@ inline aungierRedlichKwong::aungierRedlichKwong(const word& name, const aungierR Tcrit_(pg.Tcrit_), azentricFactor_(pg.azentricFactor_), rhocrit_(pg.rhocrit_), - a_(pg.a_), + a0_(pg.a0_), b_(pg.b_), c_(pg.c_), n_(pg.n_), - rhostd_(pg.rhostd_) + rhostd_(pg.rhostd_), + b2_(pg.b2_), + b3_(pg.b3_), + b4_(pg.b4_), + b5_(pg.b5_), + c2_(pg.c2_) {} @@ -95,18 +86,128 @@ inline autoPtr aungierRedlichKwong::New(Istream& is) // * * * * * * * * * * * * * Member Functions * * * * * * * * * * * // + inline scalar aungierRedlichKwong::rhostd()const { return rhostd_; } +inline void aungierRedlichKwong::updateModelCoefficients(const scalar T)const +{ + aSave=a0_*pow(T/Tcrit_,-n()); + daSave=-a0_*n()*pow(T/Tcrit_,-n())/T; + d2aSave=a0_*(n() *n()+n())/(T*T)*pow(T/Tcrit_,-n()); + + //CL: saving the temperature at which the coefficients are valid + TSave=T; +} + + +//CL: Model coefficient a(T) +inline scalar aungierRedlichKwong::a(const scalar T)const +{ + //CL: check if a has already been calculated for this temperature + if(TSave==T) + { + return aSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return aSave; + } +} + + +//CL: temperature deriviative of model coefficient a(T) +inline scalar aungierRedlichKwong::dadT(const scalar T)const +{ + // check if a has already been calculated for this temperature + if(TSave==T) + { + return daSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return daSave; + } +} + + +//CL: second order temperature deriviative of model coefficient a(T) +inline scalar aungierRedlichKwong::d2adT2(const scalar T)const +{ + // check if a has already been calculated for this temperature + if(TSave==T) + { + return d2aSave; + } + //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) + else + { + updateModelCoefficients(T); + return d2aSave; + } +} + +//Aungier Redlich Kwong factors +inline scalar aungierRedlichKwong::a0()const +{ + return a0_; +} + + +inline scalar aungierRedlichKwong::b()const +{ + return b_; +} + +inline scalar aungierRedlichKwong::c()const +{ + return c_; +} + +inline scalar aungierRedlichKwong::n()const +{ + return n_; +} + +//CL: pow of constants (b(), c()) used in the code e.g. b2_=b*b; +inline scalar aungierRedlichKwong::b2()const +{ + return b2_; +} + +inline scalar aungierRedlichKwong::b3()const +{ + return b3_; +} + +inline scalar aungierRedlichKwong::b4()const +{ + return b4_; +} + +inline scalar aungierRedlichKwong::b5()const +{ + return b5_; +} + +inline scalar aungierRedlichKwong::c2()const +{ + return c2_; +} + //returns the pressure for a given density and temperature inline scalar aungierRedlichKwong::p(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return this->RR*T/(Vm-b_+c_) - -a_*pow(T,-n_)/(pow(Tcrit_,-n_)*Vm*(Vm+b_)); + return this->RR*T/(Vm-b()+c()) + -a(T)/(Vm*(Vm+b())); } @@ -114,9 +215,12 @@ inline scalar aungierRedlichKwong::p(const scalar rho,const scalar T) const //(molar values) inline scalar aungierRedlichKwong::dpdv(const scalar rho, const scalar T) const { - scalar Vm = this->W()/rho; - return a_*pow(T,-n_)*pow(Tcrit_,n_)*(b_+2*Vm)/(pow(Vm,2)*pow((b_+Vm),2)) - -this->RR*T/(pow((b_-Vm-c_),2)); + scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + + return (a(T)*(b3()-2*b2()*c()+b()*(c()+Vm)*(c()-3*Vm)+2*Vm*pow(c()+Vm,2)) + -this->RR*T*Vm2*(b2()+2*b()*Vm+Vm2)) + /(Vm2*pow(b()-c()-Vm,2)*pow(b()+Vm,2)); } @@ -125,8 +229,7 @@ inline scalar aungierRedlichKwong::dpdv(const scalar rho, const scalar T) const inline scalar aungierRedlichKwong::dpdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return a_*n_*pow(T,-n_-1)*pow(Tcrit_,n_)/(Vm*(Vm+b_)) - -this->RR/(b_-Vm-c_); + return this->RR/(Vm-b()+c())-dadT(T)/(Vm*(Vm+b())); } @@ -156,8 +259,7 @@ inline scalar aungierRedlichKwong::integral_p_dv ) const { scalar Vm = this->W()/rho; - return -pow((T/Tcrit_),-n_)*(a_*log(Vm)/(b_) - -a_*log(b_+Vm)/b_)+this->RR*T*log(Vm-b_+c_); + return this->RR*T*log(-b()+c()+Vm)+a(T)*log(b()+Vm)/b()-a(T)*log(Vm)/b(); } @@ -170,8 +272,7 @@ inline scalar aungierRedlichKwong::integral_dpdT_dv ) const { scalar Vm = this->W()/rho; - return pow(T,-n_-1)*pow(Tcrit_,n_)*(a_*n_*log(Vm)/(b_) - -a_*n_*log(b_+Vm)/(b_))+ this->RR*log(-b_+c_+Vm); + return this->RR*log(-b()+c()+Vm)+dadT(T)*log(b()+Vm)/b()-dadT(T)*log(Vm)/b(); } @@ -179,7 +280,7 @@ inline scalar aungierRedlichKwong::integral_dpdT_dv inline scalar aungierRedlichKwong::d2pdT2(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return -a_*n_*pow(T,-n_-2)*pow(Tcrit_,n_)*(n_+1)/(Vm*(b_+Vm)); + return -d2adT2(T)/(Vm*(Vm+b())); } @@ -187,9 +288,14 @@ inline scalar aungierRedlichKwong::d2pdT2(const scalar rho,const scalar T) const inline scalar aungierRedlichKwong::d2pdv2(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return -2*a_*pow(T,-n_)*pow(Tcrit_,n_)*(pow(b_,2) - +3*b_*Vm+3*pow(Vm,2))/(pow(Vm,3)*pow((b_+Vm),3)) - -2*this->RR*T/(pow((b_-Vm-c_),3)); + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm*Vm*Vm; + + return -2*(a(T)*(b5()-3*b4()*c()+3*b3()*(c2()-c()*Vm-Vm2) + -b2()*(c()+Vm)*(c2()-7*c()*Vm+Vm2)+3*b()*Vm*pow(c()+Vm,2)*(2*Vm-c()) + -3*Vm2*pow(c()+Vm,3))+this->RR*T*Vm3*(b3()+3*b2()*Vm + +3*b()*Vm2+Vm3)) + /(Vm3*pow(b()-c()-Vm,3)*pow(b()+Vm,3)); } @@ -211,8 +317,11 @@ inline scalar aungierRedlichKwong::d2vdT2(const scalar rho, const scalar T) cons inline scalar aungierRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return -a_*n_*pow(T,-n_-1)*pow(Tcrit_,n_)*(b_+2*Vm)/(pow(Vm,2)*pow((b_+Vm),2)) - -this->RR/(pow((b_-c_-Vm),2)); + scalar Vm2 = Vm*Vm; + + return (dadT(T)*(b3()-2*b2()*c()+b()*(c()+Vm)*(c()-3*Vm)+2*Vm*pow(c()+Vm,2)) + -this->RR*Vm2*(b2()+2*b()*Vm+Vm2)) + /(Vm2*pow(b()-c()-Vm,2)*pow(b()+Vm,2)); } @@ -225,8 +334,7 @@ inline scalar aungierRedlichKwong::integral_d2pdT2_dv ) const { scalar Vm = this->W()/rho; - return pow(T,-n_-2)*pow(Tcrit_,n_)*(a_*n_*(n_+1)*log(b_+Vm) - /b_-a_*n_*(1+n_)*log(Vm)/b_); + return d2adT2(T)*log(b()+Vm)/b()-d2adT2(T)*log(Vm)/b(); } @@ -327,7 +435,7 @@ inline scalar aungierRedlichKwong::rho( { FatalErrorIn ( - "inline scalar redlichKwong::rho(const scalar p, const scalar T, const scalar rho0) const " + "inline scalar aungierRedlichKwong::rho(const scalar p, const scalar T, const scalar rho0) const " ) << "Maximum number of iterations exceeded" << abort(FatalError); } @@ -362,8 +470,37 @@ inline scalar aungierRedlichKwong::Z( const scalar p, const scalar T,const scala // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +inline void aungierRedlichKwong::operator+=(const aungierRedlichKwong& pr) +{ + specie::operator+=(pr); +} + + // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // +inline aungierRedlichKwong operator+ +( + const aungierRedlichKwong& pr1, + const aungierRedlichKwong& pr2 +) +{ + return aungierRedlichKwong + ( + static_cast(pr1) + + static_cast(pr2) + ); +} + +inline aungierRedlichKwong operator* +( + const scalar s, + const aungierRedlichKwong& pr +) +{ + return aungierRedlichKwong(s*static_cast(pr)); +} + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/README b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/README new file mode 100644 index 000000000..b30bb2b76 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/README @@ -0,0 +1,11 @@ +CL: Real gas mixture classes using mixture models. +CL: other models are possible + + +CL: Mixtures based on a pseudo critical point approach +--> mixtureAungierRedlichKwong + +CL: Mixtures using the van der waals mixing rule +--> mixtureSoaveRedlichKwong +--> mixturePengRobinson +--> mixtureRedlichKwong diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.C similarity index 62% rename from src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.C index 0474ae1d9..1150ef93a 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.C @@ -23,7 +23,7 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Description - Peng Robinson equation of state. + Mixture Aungier Redlich Kwong equation of state. Author Christian Lucas @@ -33,7 +33,7 @@ Germany \*---------------------------------------------------------------------------*/ -#include "pengRobinson.H" +#include "mixtureAungierRedlichKwong.H" #include "IOstreams.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -41,44 +41,41 @@ Germany namespace Foam { -/* * * * * * * * * * * * * * * Private static data * * * * * * * * * * * * * */ - -const scalar pengRobinson::rhoMin_ -( - debug::tolerances("pengRobinsonRhoMin", 1e-3) -); - -const scalar pengRobinson::rhoMax_ -( - debug::tolerances("pengRobinsonRhoMax", 1500) -); - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -pengRobinson::pengRobinson(Istream& is) +mixtureAungierRedlichKwong::mixtureAungierRedlichKwong(Istream& is) : - specie(is), - pcrit_(readScalar(is)), - Tcrit_(readScalar(is)), - azentricFactor_(readScalar(is)), - a0_(0.457235*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), - b_(0.077796*this->RR*Tcrit_/pcrit_), - n_(0.37464+1.54226*azentricFactor_-0.26992*pow(azentricFactor_,2)), - TSave(0.0), - rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) + aungierRedlichKwong(is), + Vcrit_(this->W()/rhocrit_), + Zcrit_(pcrit_/((this->R()*Tcrit_*rhocrit_))) { - is.check("pengRobinson::pengRobinson(Istream& is)"); + is.check("mixtureAungierRedlichKwong::mixtureAungierRedlichKwong(Istream& is)"); } +//CL: Constructed needed in OpenFOAM 2.x.x +//CL: Code works fine, but compiling problem in OpenFOAM 1.6.ext +//CL: because specie has no constructor using dict +/* +mixtureAungierRedlichKwong::mixtureAungierRedlichKwong(const dictionary& dict) +: + aungierRedlichKwong(dict), + Vcrit_(this->W()/rhocrit_), + Zcrit_(pcrit_/((this->R()*Tcrit_*rhocrit_))) +{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::mixtureAungierRedlichKwong::write(Ostream& os) const +{ + aungierRedlichKwong::write(os); +} +*/ // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // -Ostream& operator<<(Ostream& os, const pengRobinson& pr) +Ostream& operator<<(Ostream& os, const mixtureAungierRedlichKwong& ark) { - os << static_cast(pr)<< tab - << pr.pcrit_ << tab<< pr.Tcrit_<< tab << pr.azentricFactor_; + os << static_cast(ark)<< token::SPACE; - os.check("Ostream& operator<<(Ostream& os, const pengRobinson& st)"); + os.check("Ostream& operator<<(Ostream& os, const mixtureAungierRedlichKwong& st)"); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.H new file mode 100755 index 000000000..e0407fe5f --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.H @@ -0,0 +1,164 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::mixtureAungierRedlichKwong + +Description + Mixture Aungier Redlich Kwong equation of state. + + Mixture based on a pseudo critical point approach. + + For further information, see: + BOOK Title: The Properties of Gases And Liquids, Fifth Edition, McGraw-Hill, Chapter 5 + Authors: B. Poling; J. Prausnitz; J. O'Connell + + +SourceFiles + mixtureAungierRedlichKwongI.H + mixtureAungierRedlichKwong.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#ifndef mixtureAungierRedlichKwong_H +#define mixtureAungierRedlichKwong_H + +#include "specie.H" +#include "aungierRedlichKwong.H" +#include "autoPtr.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class mixtureAungierRedlichKwong Declaration +\*---------------------------------------------------------------------------*/ + +class mixtureAungierRedlichKwong +: + public aungierRedlichKwong + +{ + +protected: + + // data at the critical point + scalar Zcrit_; + + //CL. molar volume at the critical point + scalar Vcrit_; + + //CL: save the concentrations of each component of the mixture + //CL: needs to be multiplied by this->W() to get the molar fractions + //mutable DynamicList weigths; + + //CL: saves a pointer to the pure component classes of the mixture + // mutable DynamicList mixtureComponents; + + +public: + + + // Constructors + + //- Construct from components + inline mixtureAungierRedlichKwong + ( + const aungierRedlichKwong& sp, + scalar Tcrit, + scalar azentricFactor, + scalar Vcrit, + scalar Zcrit, + scalar rhoMin, + scalar rhoMax + ); + + //- Construct from Istream + mixtureAungierRedlichKwong(Istream&); + + //- Construct from dictionary + //mixtureAungierRedlichKwong(const dictionary& dict); + + //- Construct as named copy + inline mixtureAungierRedlichKwong(const word& name, const mixtureAungierRedlichKwong&); + + //- Construct and return a clone + inline autoPtr clone() const; + + // Selector from Istream + inline static autoPtr New(Istream& is); + + // Member functions + + // I-O + + //- Write to Ostream + //void write(Ostream& os) const; + + + // Member operators + + inline void operator+=(const mixtureAungierRedlichKwong&); + + // Friend operators + + inline friend mixtureAungierRedlichKwong operator+ + ( + const mixtureAungierRedlichKwong&, + const mixtureAungierRedlichKwong& + ); + + inline friend mixtureAungierRedlichKwong operator* + ( + const scalar s, + const mixtureAungierRedlichKwong& + ); + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const mixtureAungierRedlichKwong&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "mixtureAungierRedlichKwongI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwongI.H new file mode 100755 index 000000000..9e959e02e --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwongI.H @@ -0,0 +1,212 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "mixtureAungierRedlichKwong.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +inline mixtureAungierRedlichKwong::mixtureAungierRedlichKwong +( + const aungierRedlichKwong& sp, + scalar Tcrit, + scalar azentricFactor, + scalar Vcrit, + scalar Zcrit, + scalar rhoMin, + scalar rhoMax +) +: + aungierRedlichKwong(sp), + Vcrit_(Vcrit), + Zcrit_(Zcrit) +{ + //CL: Saving critical data + Tcrit_=Tcrit; + pcrit_=Zcrit*this->RR*Tcrit/Vcrit; + rhocrit_=this->W()/Vcrit_; + azentricFactor_=azentricFactor; + + //CL: calculating the aungier redlich kwong coefficience + a0_=0.42747*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_; + b_=0.08664*this->RR*Tcrit_/pcrit_; + c_=this->RR*Tcrit_/(pcrit_+(a0_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_; + n_=0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2); + + //CL: set rhoMax and rhoMin + rhoMin_=rhoMin; + rhoMax_=rhoMax; + + //CL: + b2_=pow(b_,2); + b3_=pow(b_,3); + b4_=pow(b_,4); + b5_=pow(b_,5); + c2_=pow(c_,2); + + //CL: Starting GUESS for the density by ideal gas law + rhostd_=this->rho(Pstd,Tstd,Pstd/(Tstd*this->R())); +} + + + + +// Construct as named copy +inline mixtureAungierRedlichKwong::mixtureAungierRedlichKwong(const word& name, const mixtureAungierRedlichKwong& pg) +: + aungierRedlichKwong(name, pg), + Vcrit_(pg.Vcrit_), + Zcrit_(pg.Zcrit_) +{} + + + +// Construct and return a clone +inline autoPtr mixtureAungierRedlichKwong::clone() const +{ + return autoPtr(new mixtureAungierRedlichKwong(*this)); +} + + +// Selector from Istream +inline autoPtr mixtureAungierRedlichKwong::New(Istream& is) +{ + return autoPtr(new mixtureAungierRedlichKwong(is)); +} + + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + + +inline void mixtureAungierRedlichKwong::operator+=(const mixtureAungierRedlichKwong& pr) +{ + scalar molr1 = this->nMoles(); + + aungierRedlichKwong::operator+=(pr); + + molr1 /= this->nMoles(); + scalar molr2 = pr.nMoles()/this->nMoles(); + + //CL: calculating new critical point data + Tcrit_=molr1*Tcrit_+molr2*pr.Tcrit_; + Zcrit_=molr1*Zcrit_+molr2*pr.Zcrit_; + Vcrit_=molr1*Vcrit_+molr2*pr.Vcrit_; + pcrit_=Zcrit_*this->RR*Tcrit_/Vcrit_; + rhocrit_=this->W()/Vcrit_; + + //CL: calculating new azentric factor + azentricFactor_=molr1*azentricFactor_+molr2*pr.azentricFactor_; + + //CL: set rhoMax and rhoMin + rhoMin_=min(rhoMin_, pr.rhoMin_); + rhoMax_=max(rhoMax_, pr.rhoMax_); + + //CL: calculating the aungier redlich kwong coefficience + a0_=0.42747*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_; + b_=0.08664*this->RR*Tcrit_/pcrit_; + c_=this->RR*Tcrit_/(pcrit_+(a0_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_; + n_=0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2); + + //CL: + b2_=pow(b_,2); + b3_=pow(b_,3); + b4_=pow(b_,4); + b5_=pow(b_,5); + c2_=pow(c_,2); + + //CL: Starting GUESS for the density by ideal gas law + rhostd_=this->rho(Pstd,Tstd,Pstd/(Tstd*this->R())); +} + + +// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // + +inline mixtureAungierRedlichKwong operator+ +( + const mixtureAungierRedlichKwong& pr1, + const mixtureAungierRedlichKwong& pr2 +) +{ + + aungierRedlichKwong ark + ( + static_cast(pr1) + +static_cast(pr2) + ); + + return mixtureAungierRedlichKwong + ( + ark, + pr1.nMoles()/ark.nMoles()*pr1.Tcrit_ + +pr2.nMoles()/ark.nMoles()*pr2.Tcrit_, + pr1.nMoles()/ark.nMoles()*pr1.azentricFactor_ + +pr2.nMoles()/ark.nMoles()*pr2.azentricFactor_, + pr1.nMoles()/ark.nMoles()*pr1.Vcrit_ + +pr2.nMoles()/ark.nMoles()*pr2.Vcrit_, + pr1.nMoles()/ark.nMoles()*pr1.Zcrit_ + +pr2.nMoles()/ark.nMoles()*pr2.Zcrit_, + min(pr1.rhoMin_,pr2.rhoMin_), + max(pr1.rhoMax_,pr2.rhoMax_) + ); +} + + +inline mixtureAungierRedlichKwong operator* +( + const scalar s, + const mixtureAungierRedlichKwong& pr +) +{ + return mixtureAungierRedlichKwong + ( + s*static_cast(pr), + pr.Tcrit_, + pr.azentricFactor_, + pr.Vcrit_, + pr.Zcrit_, + pr.rhoMin_, + pr.rhoMax_ + ); +} + + + + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C new file mode 100644 index 000000000..2b1ef84ae --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C @@ -0,0 +1,157 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + Peng Robionson equation of state for mixtures. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "mixturePengRobinson.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +mixturePengRobinson::mixturePengRobinson(Istream& is) +: + pengRobinson(is), + numOfComp(1), + singleComponent(1), + //CL: no real gas mixture correction when stream constructor is used + realMixtureCorr_(false) +{ + //CL: set size of weigths, mixtureComponents ... to 10, + //CL: when more mixture components are used + //CL: size of the DynamicLis increases automatically + weigths.setSize(10); + mixtureComponents.setSize(10); + + //Save a pointer of this object in the mixtureComponents array + mixtureComponents[0]=this; + + is.check("mixturePengRobinson::mixturePengRobinson(Istream& is)"); +} +//CL: Constructed needed in OpenFOAM 2.x.x +//CL: Code works fine, but compiling problem in OpenFOAM 1.6.ext +//CL: because specie has no constructor using dict +/* +mixturePengRobinson::mixturePengRobinson(const dictionary& dict) +: + pengRobinson(dict), + numOfComp(1), + singleComponent(1), + realMixtureCorr_(dict.subDict("equationOfState").lookupOrDefault("realMixtureCorrection",false)) +{ + //CL: set size of weigths, mixtureComponents ... to 10, + //CL: when more mixture components are used + //CL: size of the DynamicLis increases automatically + weigths.setSize(10); + mixtureComponents.setSize(10); + + //Save a pointer of this object in the mixtureComponents array + mixtureComponents[0]=this; + + if(realMixtureCorr_==true) + { + //CL: reads number of mixture components + //CL: this number is needed to calculate the number of correction coefficients + nCom_=dict.subDict("equationOfState").lookupOrDefault("numberOfComponents",1); + + if (nCom_<1||nCom_==1) + { + FatalErrorIn + ( + "mixturePengRobinson::mixturePengRobinson(const dictionary& dict)" + ) << "mixture has only one component or number is not defined correctly, " + << "recheck numberOfComponents in the thermophysicalProperties dict of your case" + << abort(FatalError); + } + + label i; + label j; + label k=0; + + // CL: saves the number of mixtureCorrectionCoefficients needed for this mixture + // CL: need to be set to 1 + label sizeOfVector_=1; + + //CL: size of the vector depends on the number of components + //CL: determine the size of the vector + for (i=3; i<=nCom_;i++) + { + sizeOfVector_=sizeOfVector_+(i-1); + } + + //CL: setting the size + realMixtureCorrCoef_.setSize(sizeOfVector_); + + //CL: Reading the real mixture correction coefficients + //CL: Naming convention e.g for 3 component mixture: + //CL: mixtureCorrectionCoefficient_12, mixtureCorrectionCoefficient_13, mixtureCorrectionCoefficient_23 + for(i=1;i<=nCom_-1;i++) + { + for(j=i+1;j<=nCom_;j++) + { + realMixtureCorrCoef_[k]=dict.subDict("equationOfState") + .lookupOrDefault("mixtureCorrectionCoefficient_" + Foam::name(i) + Foam::name(j),0.0); + k++; + } + } + } +} + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::mixturePengRobinson::write(Ostream& os) const +{ + pengRobinson::write(os); + +} +*/ +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Ostream& operator<<(Ostream& os, const mixturePengRobinson& pr) +{ + os << static_cast(pr)<< token::SPACE ; + + os.check("Ostream& operator<<(Ostream& os, const mixturePengRobinson& st)"); + return os; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.H old mode 100755 new mode 100644 similarity index 84% rename from src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.H rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.H index b5de5d229..27ced59e6 --- a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.H @@ -83,15 +83,6 @@ protected: //CL: needs to be multiplied by this->W() to get the molar fractions mutable DynamicList weigths; - //CL: stores the values of a(T) of all componentes - mutable DynamicList aComponents; - - //CL: stores the values of the derivatives da/dT of all componentes - mutable DynamicList daComponents; - - //CL: stores the values of the second order derivatives d2a/dT2 of all componentes - mutable DynamicList d2aComponents; - //CL: saves a pointer to the pure component classes of the mixture mutable DynamicList mixtureComponents; @@ -101,8 +92,23 @@ protected: //Protected functions //CL: function updates the coefficients (aSave, daSave, d2aSave, b) of the mixture + //CL: this is the function with the mixing rule inline void updateModelCoefficients(const scalar T) const; + //CL: Variables used in real gas mixture correction + + //CL: If true, the real gas mixture correction is used + mutable bool realMixtureCorr_; + + //CL: number of mixture components, needed to calculate the mixture correction factors needed + //CL: do not mistake this variable with numOfComp, + //CL: numOfComp is a counter to counts the number of components while the mixture is constructed + mutable label nCom_; + + //CL: stores real mixture correction coefficients + mutable DynamicList realMixtureCorrCoef_; + + public: // Constructors @@ -119,7 +125,9 @@ public: scalar b, scalar Tcrit, scalar n, - scalar rhostd + scalar rhostd, + scalar rhoMin, + scalar rhoMax ); //- Construct from components @@ -129,12 +137,17 @@ public: const pengRobinson& pr, label numOfComp, DynamicList weigths, - DynamicList mixtureComponents + DynamicList mixtureComponents, + scalar rhoMin, + scalar rhoMax ); //- Construct from Istream mixturePengRobinson(Istream&); + //- Construct from dictionary + //mixturePengRobinson(const dictionary& dict); + //- Construct as named copy inline mixturePengRobinson(const word& name, const mixturePengRobinson&); @@ -146,6 +159,13 @@ public: // Member functions + //CL: mixture coefficience + inline scalar amix(const scalar T, const label i, const label j) const; + + inline scalar dadTmix(const scalar T, const label i, const label j) const; + + inline scalar d2adT2mix(const scalar T, const label i, const label j) const; + inline scalar p(const scalar rho, const scalar T) const; //first order derivatives @@ -209,6 +229,11 @@ public: const scalar rho0 ) const; + // I-O + + //- Write to Ostream + //void write(Ostream& os) const; + // Member operators inline void operator+=(const mixturePengRobinson&); diff --git a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinsonI.H old mode 100755 new mode 100644 similarity index 73% rename from src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinsonI.H rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinsonI.H index 527cbdac4..7cf527189 --- a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinsonI.H @@ -51,7 +51,9 @@ inline mixturePengRobinson::mixturePengRobinson scalar b, scalar Tcrit, scalar n, - scalar rhostd + scalar rhostd, + scalar rhoMin, + scalar rhoMax ) : pengRobinson(pr), @@ -65,6 +67,8 @@ inline mixturePengRobinson::mixturePengRobinson Tcrit_=Tcrit; n_=n; rhostd_=rhostd; + rhoMin_=rhoMin; + rhoMax_=rhoMax; } // Construct from components @@ -74,7 +78,9 @@ inline mixturePengRobinson::mixturePengRobinson const pengRobinson& pr, label numOfComp, DynamicList weigths, - DynamicList mixtureComponents + DynamicList mixtureComponents, + scalar rhoMin, + scalar rhoMax ) : pengRobinson(pr), @@ -85,11 +91,8 @@ inline mixturePengRobinson::mixturePengRobinson { TSave=0.0; - //CL: following three DynamicList have no size in the new object - //CL: resize DynamicList - aComponents.resize(numOfComp); - daComponents.resize(numOfComp); - d2aComponents.resize(numOfComp); + rhoMin_=rhoMin; + rhoMax_=rhoMax; rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); } @@ -125,49 +128,47 @@ inline void mixturePengRobinson::updateModelCoefficients(const scalar T) const // Checking if the mixture coefficient were already calculated for this temperature if(TSave!=T) { - label i,j; + label i,j,k; aSave=0; daSave=0; d2aSave=0; b_=0; - //CL: filling vector a, dadT and d2adT2 - for (i=0;ia(T); - daComponents[i]=mixtureComponents[i]->dadT(T); - d2aComponents[i]=mixtureComponents[i]->d2adT2(T); - } - for (i=0;iW()*this->W(); - - // first and second order temperature derivative of the van der waals mixing rule for a(T) - if(i==j) + + //CL: use mixture correction cofficients k_ij (see paper reference) + if(mixtureComponents[0]->realMixtureCorr_==true) { - daSave=daSave+weigths[i]*weigths[i]*daComponents[i]*this->W()*this->W(); - d2aSave=d2aSave+weigths[i]*weigths[i]*d2aComponents[i]*this->W()*this->W(); + // first and second order temperature derivative of the van der waals mixing rule for a(T) + if(i==j) + { + aSave=aSave+amix(T,i,j); + daSave=daSave+dadTmix(T,i,j); + d2aSave=d2aSave+d2adT2mix(T,i,j); + } + else + { + //CL: gives the position of the correction factor in the vector realMixtureCorrCoef_ + k=i+j-1; + + aSave=aSave+amix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); + daSave=daSave+dadTmix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); + d2aSave=d2aSave+d2adT2mix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); + } + } - else + else { - daSave=daSave+0.5*weigths[i]*weigths[j]*this->W()*this->W() - *(pow(aComponents[i]/aComponents[j],0.5)*daComponents[j]+pow(aComponents[j]/aComponents[i],0.5)*daComponents[i]); - - d2aSave=d2aSave+0.5*weigths[i]*weigths[j]*this->W()*this->W()* - ( - pow(aComponents[i]/aComponents[j],0.5)*d2aComponents[i]+pow(aComponents[j]/aComponents[i],0.5)*d2aComponents[j] - +0.5*pow(aComponents[i]*aComponents[j],-0.5)*(pow(daComponents[i],2)+pow(daComponents[j],2)) - -0.5*daComponents[i]*daComponents[j]*(pow(aComponents[i]/aComponents[j],0.5)/aComponents[j] - +pow(aComponents[j]/aComponents[i],0.5)/aComponents[i]) - ); - } + aSave=aSave+amix(T,i,j); + daSave=daSave+dadTmix(T,i,j); + d2aSave=d2aSave+d2adT2mix(T,i,j); + } } //CL: getting b for the mixture @@ -177,11 +178,57 @@ inline void mixturePengRobinson::updateModelCoefficients(const scalar T) const //CL: saving the temperature at which the mixture coefficients are valid TSave=T; } + + b2_=b_*b_; + b3_=pow(b_,3); + b4_=pow(b_,4); + b5_=pow(b_,5); } } - } +//CL: returns part of "a" for the mixture +//CL: Important: a is a function of T +//CL: TODO: RECHECK +inline scalar mixturePengRobinson::amix(const scalar T, const label i, const label j) const +{ + + return weigths[i]*weigths[j]*this->W()*this->W()* + pow(mixtureComponents[i]->a(T)*mixtureComponents[j]->a(T),0.5); +} + +//CL: returns part of the first derivative of "a" for the mixture +//CL: Important: a is a function of T +//CL: TODO: RECHECK +inline scalar mixturePengRobinson::dadTmix(const scalar T, const label i, const label j) const +{ + + return 0.5*weigths[i]*weigths[j]*this->W()*this->W() + *(pow(mixtureComponents[i]->a(T)/mixtureComponents[j]->a(T),0.5)*mixtureComponents[j]->dadT(T) + +pow(mixtureComponents[j]->a(T)/mixtureComponents[i]->a(T),0.5)*mixtureComponents[i]->dadT(T)); +} + +//CL: returns part of the second derivative of "a" for the mixture +//CL: Important: a is a function of T +//CL: TODO: RECHECK +inline scalar mixturePengRobinson::d2adT2mix(const scalar T, const label i, const label j) const +{ + + return 0.5*weigths[i]*weigths[j]*this->W()*this->W()* + ( + pow(mixtureComponents[i]->a(T)/mixtureComponents[j]->a(T),0.5)*mixtureComponents[j]->d2adT2(T) + +pow(mixtureComponents[j]->a(T)/mixtureComponents[i]->a(T),0.5)*mixtureComponents[i]->d2adT2(T) + +pow(mixtureComponents[i]->a(T)*mixtureComponents[j]->a(T),-0.5) + *mixtureComponents[i]->dadT(T)*mixtureComponents[j]->dadT(T) + -0.5*pow(mixtureComponents[i]->a(T)/mixtureComponents[j]->a(T),0.5)*1/mixtureComponents[j]->a(T) + *pow(mixtureComponents[j]->dadT(T),2) + -0.5*pow(mixtureComponents[j]->a(T)/mixtureComponents[i]->a(T),0.5) + *1/mixtureComponents[i]->a(T)*pow(mixtureComponents[i]->dadT(T),2) + ); +} + + + //returns the pressure for a given density and temperature inline scalar mixturePengRobinson::p(const scalar rho, const scalar T) const @@ -387,14 +434,15 @@ inline void mixturePengRobinson::operator+=(const mixturePengRobinson& pr) //CL: increase number of Components by 1 numOfComp=numOfComp+1; - //CL: resize DynamicList so that they have a defined size in the mixture object - aComponents.resize(numOfComp); - daComponents.resize(numOfComp); - d2aComponents.resize(numOfComp); - //CL: setting TSave=0--> results that all coefficients (a, da, d2a) are calculated in updateModelCoefficients TSave=0.0; singleComponent=0; + + //CL:setting rho boundaries + rhoMin_=min(rhoMin_,pr.rhoMin_); + rhoMax_=max(rhoMax_,pr.rhoMax_); + + //CL: calculating rho @ std rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); } @@ -424,7 +472,7 @@ inline mixturePengRobinson operator+ mixtureComponents[pr1.numOfComp]=pr2.mixtureComponents[0]; return mixturePengRobinson(static_cast(pr1)+static_cast(pr2), - pr1.numOfComp+1, weigths, mixtureComponents); + pr1.numOfComp+1, weigths, mixtureComponents, min(pr1.rhoMin_,pr2.rhoMin_), max(pr1.rhoMax_,pr2.rhoMax_)); } @@ -440,7 +488,7 @@ inline mixturePengRobinson operator* weigths[pr.numOfComp-1]=s*pr.nMoles(); return mixturePengRobinson(s*static_cast(pr), pr.numOfComp, weigths, - pr.mixtureComponents,pr.a0_,pr.b_,pr.Tcrit_,pr.n_,pr.rhostd_); + pr.mixtureComponents,pr.a0_,pr.b_,pr.Tcrit_,pr.n_,pr.rhostd_, pr.rhoMin_, pr.rhoMax_); } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.C new file mode 100644 index 000000000..b3abea406 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.C @@ -0,0 +1,154 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + Redlich Kwong equation of state for mixtures. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "mixtureRedlichKwong.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +mixtureRedlichKwong::mixtureRedlichKwong(Istream& is) +: + redlichKwong(is), + numOfComp(1), + //CL: no real gas mixture correction when stream constructor is used + realMixtureCorr_(false) +{ + //CL: set size of weigths and mixtureComponents to 10 + //CL: when more mixture components are used + //CL: size of the DynamicLis increases automatically + weigths.setSize(10); + mixtureComponents.setSize(10); + + //Save a pointer of this object in the mixtureComponents array + mixtureComponents[0]=this; + is.check("mixtureRedlichKwong::mixtureRedlichKwong(Istream& is)"); +} +//CL: Constructed needed in OpenFOAM 2.x.x +//CL: Code works fine, but compiling problem in OpenFOAM 1.6.ext +//CL: because specie has no constructor using dict +/* +mixtureRedlichKwong::mixtureRedlichKwong(const dictionary& dict) +: + redlichKwong(dict), + numOfComp(1), + realMixtureCorr_(dict.subDict("equationOfState").lookupOrDefault("realMixtureCorrection",false)) +{ + //CL: set size of weigths and mixtureComponents to 10 + //CL: when more mixture components are used + //CL: size of the DynamicLis increases automatically + weigths.setSize(10); + mixtureComponents.setSize(10); + + //Save a pointer of this object in the mixtureComponents array + mixtureComponents[0]=this; + + if(realMixtureCorr_==true) + { + //CL: reads number of mixture components + //CL: this number is needed to calculate the number of correction coefficients + nCom_=dict.subDict("equationOfState").lookupOrDefault("numberOfComponents",1); + + if (nCom_<1||nCom_==1) + { + FatalErrorIn + ( + "mixtureRedlichKwong::mixtureRedlichKwong(const dictionary& dict)" + ) << "mixture has only one component or number is not defined correctly, " + << "recheck numberOfComponents in the thermophysicalProperties dict of your case" + << abort(FatalError); + } + + label i; + label j; + label k=0; + + + // CL: saves the number of mixtureCorrectionCoefficients needed for this mixture + // CL: need to be set to 1 + label sizeOfVector_=1; + + //CL: size of the vector depends on the number of components + //CL: determine the size of the vector + for (i=3; i<=nCom_;i++) + { + sizeOfVector_=sizeOfVector_+(i-1); + } + + //CL: setting the size + realMixtureCorrCoef_.setSize(sizeOfVector_); + + //CL: Reading the real mixture correction coefficients + //CL: Naming convention e.g for 3 component mixture: + //CL: mixtureCorrectionCoefficient_12, mixtureCorrectionCoefficient_13, mixtureCorrectionCoefficient_23 + for(i=1;i<=nCom_-1;i++) + { + for(j=i+1;j<=nCom_;j++) + { + realMixtureCorrCoef_[k]=dict.subDict("equationOfState") + .lookupOrDefault("mixtureCorrectionCoefficient_" + Foam::name(i) + Foam::name(j),0.0); + k++; + } + } + } +} + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::mixtureRedlichKwong::write(Ostream& os) const +{ + redlichKwong::write(os); + +} +*/ +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Ostream& operator<<(Ostream& os, const mixtureRedlichKwong& rk) +{ + os << static_cast(rk)<< token::SPACE ; + + os.check("Ostream& operator<<(Ostream& os, const mixtureRedlichKwong& st)"); + return os; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.H old mode 100755 new mode 100644 similarity index 82% rename from src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.H rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.H index 8b9d5ebe3..5b9839b30 --- a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.H @@ -76,7 +76,8 @@ class mixtureRedlichKwong // Private functions - //CL: function updates the model coefficients (a,b) of the mixture + //CL: function updates the model coefficients (a,b) of the mixture + //CL: this is the function with the mixing rule inline void updateModelCoefficients() const; protected: @@ -91,6 +92,20 @@ protected: //CL: counts the number of components mutable label numOfComp; + + //CL: Variables used in real gas mixture correction + + //CL: If true, the real gas mixture correction is used + mutable bool realMixtureCorr_; + + //CL: number of mixture components, needed to calculate the mixture correction factors needed + //CL: do not mistake this variable with numOfComp, + //CL: numOfComp is a counter to counts the number of components while the mixture is constructed + mutable label nCom_; + + //CL: stores real mixture correction coefficients + mutable DynamicList realMixtureCorrCoef_; + public: // Constructors @@ -105,7 +120,9 @@ public: DynamicList mixtureComponents, scalar a, scalar b, - scalar rhostd + scalar rhostd, + scalar rhoMin, + scalar rhoMax ); //- Construct from components @@ -115,12 +132,17 @@ public: const redlichKwong& rK, label numOfComp, DynamicList weigths, - DynamicList mixtureComponents + DynamicList mixtureComponents, + scalar rhoMin, + scalar rhoMax ); //- Construct from Istream mixtureRedlichKwong(Istream&); + //- Construct from dictionary + //mixtureRedlichKwong(const dictionary& dict); + //- Construct as named copy inline mixtureRedlichKwong(const word& name, const mixtureRedlichKwong&); @@ -130,6 +152,12 @@ public: // Selector from Istream inline static autoPtr New(Istream& is); + // I-O + + //- Write to Ostream + //void write(Ostream& os) const; + + // Member operators inline void operator+=(const mixtureRedlichKwong&); diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwongI.H old mode 100755 new mode 100644 similarity index 74% rename from src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwongI.H rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwongI.H index fcaa9e9e5..a48f2cab1 --- a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwongI.H @@ -49,7 +49,9 @@ inline mixtureRedlichKwong::mixtureRedlichKwong DynamicList mixtureComponents, scalar a, scalar b, - scalar rhostd + scalar rhostd, + scalar rhoMin, + scalar rhoMax ) : redlichKwong(rK), @@ -59,7 +61,14 @@ inline mixtureRedlichKwong::mixtureRedlichKwong { a_=a; b_=b; + b2_=b*b; + b3_=pow(b,3); + b5_=pow(b,4); rhostd_=rhostd; + + //CL:setting rho boundaries + rhoMin_=rhoMin; + rhoMax_=rhoMax; } // Construct from components @@ -69,7 +78,9 @@ inline mixtureRedlichKwong::mixtureRedlichKwong const redlichKwong& rK, label numOfComp, DynamicList weigths, - DynamicList mixtureComponents + DynamicList mixtureComponents, + scalar rhoMin, + scalar rhoMax ) : redlichKwong(rK), @@ -79,6 +90,12 @@ inline mixtureRedlichKwong::mixtureRedlichKwong { //CL: update model coefficients updateModelCoefficients(); + + //CL:setting rho boundaries + rhoMin_=rhoMin; + rhoMax_=rhoMax; + + //CL: calculating rho @ std rhostd_=this->rho(Pstd, Tstd, Pstd/(Tstd*this->R())); } @@ -110,7 +127,7 @@ inline autoPtr mixtureRedlichKwong::New(Istream& is) //CL: uses the van der waals mixing rule inline void mixtureRedlichKwong::updateModelCoefficients() const { - label i,j; + label i,j,k; a_=0; b_=0; @@ -119,16 +136,38 @@ inline void mixtureRedlichKwong::updateModelCoefficients() const { //CL: getting a for the mixture //CL: using van der waals mixing rule - //CL: TODO: Include possibility to use coupling cofficients k_ij (see paper reference) for (j=0;ja()*mixtureComponents[j]->a(),0.5)*this->W()*this->W(); + //CL: Important: a is not a function of T + if(mixtureComponents[0]->realMixtureCorr_==true) + { + if(j!=i) + { + //CL: gives the position of the correction factor in the vector realMixtureCorrCoef_ + k=i+j-1; + + a_=a_+weigths[i]*weigths[j]*pow(mixtureComponents[i]->a()*mixtureComponents[j]->a(),0.5) + *this->W()*this->W()*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); + } + else + { + a_=a_+weigths[i]*weigths[j]*pow(mixtureComponents[i]->a()*mixtureComponents[j]->a(),0.5)*this->W()*this->W(); + } + } + //CL: don't use mixture correction cofficients k_ij (see paper reference) + else + { + a_=a_+weigths[i]*weigths[j]*pow(mixtureComponents[i]->a()*mixtureComponents[j]->a(),0.5)*this->W()*this->W(); + } + //CL: getting b for the mixture + //CL: using van der waals mixing rule + b_=b_+weigths[i]*mixtureComponents[i]->b()*this->W(); } - - //CL: getting b for the mixture - //CL: using van der waals mixing rule - b_=b_+weigths[i]*mixtureComponents[i]->b()*this->W(); } + + b2_=b_*b_; + b3_=pow(b_,3); + b5_=pow(b_,4); } // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // @@ -155,7 +194,13 @@ inline void mixtureRedlichKwong::operator+=(const mixtureRedlichKwong& rK) //CL: update model coefficients updateModelCoefficients(); - rhostd_=this->rho(Pstd, Tstd, Pstd/(Tstd*this->R())); + + //CL:setting rho boundaries + rhoMin_=min(rhoMin_,rK.rhoMin_); + rhoMax_=max(rhoMax_,rK.rhoMax_); + + //CL: calculating rho @ std + rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); } // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // @@ -184,7 +229,7 @@ inline mixtureRedlichKwong operator+ mixtureComponents[rK1.numOfComp]=rK2.mixtureComponents[0]; return mixtureRedlichKwong(static_cast(rK1)+static_cast(rK2), - rK1.numOfComp+1, weigths, mixtureComponents); + rK1.numOfComp+1, weigths, mixtureComponents, min(rK1.rhoMin_,rK2.rhoMin_), max(rK1.rhoMax_,rK2.rhoMax_)); } @@ -198,7 +243,8 @@ inline mixtureRedlichKwong operator* DynamicList weigths=rK.weigths; weigths[rK.numOfComp-1]=s*rK.nMoles(); - return mixtureRedlichKwong(s*static_cast(rK), rK.numOfComp, weigths, rK.mixtureComponents,rK.a_,rK.b_,rK.rhostd_); + return mixtureRedlichKwong(s*static_cast(rK), rK.numOfComp, weigths, + rK.mixtureComponents,rK.a_,rK.b_,rK.rhostd_, rK.rhoMin_, rK.rhoMax_); } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C new file mode 100644 index 000000000..214432bcc --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C @@ -0,0 +1,157 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + Soave Redlich Kwong equation of state for mixtures. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "mixtureSoaveRedlichKwong.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(Istream& is) +: + soaveRedlichKwong(is), + numOfComp(1), + singleComponent(1), + //CL: no real gas mixture correction when stream constructor is used + realMixtureCorr_(false) +{ + //CL: set size of weigths, mixtureComponents ... to 10, + //CL: when more mixture componentents are used + //CL: size of the DynamicLis increases automatically + weigths.setSize(10); + mixtureComponents.setSize(10); + + //Save a pointer of this object in the mixtureComponents array + mixtureComponents[0]=this; + is.check("mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(Istream& is)"); +} + +//CL: Constructed needed in OpenFOAM 2.x.x +//CL: Code works fine, but compiling problem in OpenFOAM 1.6.ext +//CL: because specie has no constructor using dict +/* +mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(const dictionary& dict) +: + soaveRedlichKwong(dict), + numOfComp(1), + singleComponent(1), + realMixtureCorr_(dict.subDict("equationOfState").lookupOrDefault("realMixtureCorrection",false)) +{ + //CL: set size of weigths, mixtureComponents ... to 10, + //CL: when more mixture componentents are used + //CL: size of the DynamicLis increases automatically + weigths.setSize(10); + mixtureComponents.setSize(10); + + //Save a pointer of this object in the mixtureComponents array + mixtureComponents[0]=this; + + if(realMixtureCorr_==true) + { + //CL: reads number of mixture components + //CL: this number is needed to calculate the number of correction coefficients + nCom_=dict.subDict("equationOfState").lookupOrDefault("numberOfComponents",1); + + if (nCom_<1||nCom_==1) + { + FatalErrorIn + ( + "mixturePengRobinson::mixturePengRobinson(const dictionary& dict)" + ) << "mixture has only one component or number is not defined correctly, " + << "recheck numberOfComponents in the thermophysicalProperties dict of your case" + << abort(FatalError); + } + + label i; + label j; + label k=0; + + // CL: saves the number of mixtureCorrectionCoefficients needed for this mixture + // CL: need to be set to 1 + label sizeOfVector_=1; + + //CL: size of the vector depends on the number of components + //CL: determine the size of the vector + for (i=3; i<=nCom_;i++) + { + sizeOfVector_=sizeOfVector_+(i-1); + } + + //CL: setting the size + realMixtureCorrCoef_.setSize(sizeOfVector_); + + //CL: Reading the real mixture correction coefficients + //CL: Naming convention e.g for 3 component mixture: + //CL: mixtureCorrectionCoefficient_12, mixtureCorrectionCoefficient_13, mixtureCorrectionCoefficient_23 + for(i=1;i<=nCom_-1;i++) + { + for(j=i+1;j<=nCom_;j++) + { + realMixtureCorrCoef_[k]=dict.subDict("equationOfState") + .lookupOrDefault("mixtureCorrectionCoefficient_" + Foam::name(i) + Foam::name(j),0.0); + k++; + } + } + } +} + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::mixtureSoaveRedlichKwong::write(Ostream& os) const +{ + soaveRedlichKwong::write(os); + +} +*/ +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Ostream& operator<<(Ostream& os, const mixtureSoaveRedlichKwong& srk) +{ + os << static_cast(srk)<< token::SPACE ; + + os.check("Ostream& operator<<(Ostream& os, const mixtureSoaveRedlichKwong& st)"); + return os; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H old mode 100755 new mode 100644 similarity index 85% rename from src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H index ec9e1a7b7..7dbd69c2a --- a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H @@ -83,15 +83,6 @@ protected: //CL: needs to be multiplied by this->W() to get the molar fractions mutable DynamicList weigths; - //CL: stores the values of a(T) of all componentes - mutable DynamicList aComponents; - - //CL: stores the values of the derivatives of da/dT of all componentes - mutable DynamicList daComponents; - - //CL: stores the values of the second order derivatives of d2a/dT2 of all componentes - mutable DynamicList d2aComponents; - //CL: saves a pointer to the pure component classes of the mixture mutable DynamicList mixtureComponents; @@ -103,6 +94,20 @@ protected: //CL: function updates the coefficients (aSave, daSave, d2aSave, b) of the mixture inline void updateModelCoefficients(const scalar T) const; + //CL: Variables used in real gas mixture correction + + //CL: If true, the real gas mixture correction is used + mutable bool realMixtureCorr_; + + //CL: number of mixture components, needed to calculate the mixture correction factors needed + //CL: do not mistake this variable with numOfComp, + //CL: numOfComp is a counter to counts the number of components while the mixture is constructed + mutable label nCom_; + + //CL: stores real mixture correction coefficients + mutable DynamicList realMixtureCorrCoef_; + + public: // Constructors @@ -119,7 +124,9 @@ public: scalar b, scalar Tcrit, scalar n, - scalar rhostd + scalar rhostd, + scalar rhoMin, + scalar rhoMax ); //- Construct from components @@ -129,12 +136,17 @@ public: const soaveRedlichKwong& srk, label numOfComp, DynamicList weigths, - DynamicList mixtureComponents + DynamicList mixtureComponents, + scalar rhoMin, + scalar rhoMax ); //- Construct from Istream mixtureSoaveRedlichKwong(Istream&); + //- Construct from dictionary + //mixtureSoaveRedlichKwong(const dictionary& dict); + //- Construct as named copy inline mixtureSoaveRedlichKwong(const word& name, const mixtureSoaveRedlichKwong&); @@ -146,6 +158,13 @@ public: // Member functions + //CL: mixture coefficience + inline scalar amix(const scalar T, const label i, const label j) const; + + inline scalar dadTmix(const scalar T, const label i, const label j) const; + + inline scalar d2adT2mix(const scalar T, const label i, const label j) const; + inline scalar p(const scalar rho, const scalar T) const; //first order derivatives @@ -209,6 +228,11 @@ public: const scalar rho0 ) const; + // I-O + + //- Write to Ostream + //void write(Ostream& os) const; + // Member operators inline void operator+=(const mixtureSoaveRedlichKwong&); diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H old mode 100755 new mode 100644 similarity index 74% rename from src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H index b713eaa49..82ef4ab6d --- a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H @@ -51,7 +51,9 @@ inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong scalar b, scalar Tcrit, scalar n, - scalar rhostd + scalar rhostd, + scalar rhoMin, + scalar rhoMax ) : soaveRedlichKwong(srk), @@ -65,6 +67,8 @@ inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong Tcrit_=Tcrit; n_=n; rhostd_=rhostd; + rhoMin_=rhoMin; + rhoMax_=rhoMax; } @@ -75,7 +79,9 @@ inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong const soaveRedlichKwong& srk, label numOfComp, DynamicList weigths, - DynamicList mixtureComponents + DynamicList mixtureComponents, + scalar rhoMin, + scalar rhoMax ) : soaveRedlichKwong(srk), @@ -86,11 +92,8 @@ inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong { TSave=0.0; - //CL: following three DynamicList have no size in the new object - //CL: resize DynamicList - aComponents.resize(numOfComp); - daComponents.resize(numOfComp); - d2aComponents.resize(numOfComp); + rhoMin_=rhoMin; + rhoMax_=rhoMax; rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); } @@ -128,49 +131,47 @@ inline void mixtureSoaveRedlichKwong::updateModelCoefficients(const scalar T) c // Checking if the mixture coefficient were already calculated for this temperature if(TSave!=T) { - label i,j; + label i,j,k; aSave=0; daSave=0; d2aSave=0; b_=0; - //CL: filling vector a, dadT and d2adT2 - for (i=0;ia(T); - daComponents[i]=mixtureComponents[i]->dadT(T); - d2aComponents[i]=mixtureComponents[i]->d2adT2(T); - } - for (i=0;iW()*this->W(); - - // first and second order temperature derivative of the van der waals mixing rule for a(T) - if(i==j) + + //CL: use mixture correction cofficients k_ij (see paper reference) + if(mixtureComponents[0]->realMixtureCorr_==true) { - daSave=daSave+weigths[i]*weigths[i]*daComponents[i]*this->W()*this->W(); - d2aSave=d2aSave+weigths[i]*weigths[i]*d2aComponents[i]*this->W()*this->W(); + // first and second order temperature derivative of the van der waals mixing rule for a(T) + if(i==j) + { + aSave=aSave+amix(T,i,j); + daSave=daSave+dadTmix(T,i,j); + d2aSave=d2aSave+d2adT2mix(T,i,j); + } + else + { + //CL: gives the position of the correction factor in the vector realMixtureCorrCoef_ + k=i+j-1; + + aSave=aSave+amix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); + daSave=daSave+dadTmix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); + d2aSave=d2aSave+d2adT2mix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); + } + } - else + else { - daSave=daSave+0.5*weigths[i]*weigths[j]*this->W()*this->W() - *(pow(aComponents[i]/aComponents[j],0.5)*daComponents[j]+pow(aComponents[j]/aComponents[i],0.5)*daComponents[i]); - - d2aSave=d2aSave+0.5*weigths[i]*weigths[j]*this->W()*this->W()* - ( - pow(aComponents[i]/aComponents[j],0.5)*d2aComponents[i]+pow(aComponents[j]/aComponents[i],0.5)*d2aComponents[j] - +0.5*pow(aComponents[i]*aComponents[j],-0.5)*(pow(daComponents[i],2)+pow(daComponents[j],2)) - -0.5*daComponents[i]*daComponents[j]*(pow(aComponents[i]/aComponents[j],0.5)/aComponents[j] - +pow(aComponents[j]/aComponents[i],0.5)/aComponents[i]) - ); - } + aSave=aSave+amix(T,i,j); + daSave=daSave+dadTmix(T,i,j); + d2aSave=d2aSave+d2adT2mix(T,i,j); + } } //CL: getting b for the mixture @@ -180,10 +181,53 @@ inline void mixtureSoaveRedlichKwong::updateModelCoefficients(const scalar T) c //CL: saving the temperature at which the mixture coefficients are valid TSave=T; } + + b2_=b_*b_; + b3_=pow(b_,3); + b5_=pow(b_,5); } } } +//CL: returns part of "a" for the mixture +//CL: Important: a is a function of T +//CL: TODO: RECHECK +inline scalar mixtureSoaveRedlichKwong::amix(const scalar T, const label i, const label j) const +{ + + return weigths[i]*weigths[j]*this->W()*this->W()* + pow(mixtureComponents[i]->a(T)*mixtureComponents[j]->a(T),0.5); +} + +//CL: returns part of the first derivative of "a" for the mixture +//CL: Important: a is a function of T +//CL: TODO: RECHECK +inline scalar mixtureSoaveRedlichKwong::dadTmix(const scalar T, const label i, const label j) const +{ + + return 0.5*weigths[i]*weigths[j]*this->W()*this->W() + *(pow(mixtureComponents[i]->a(T)/mixtureComponents[j]->a(T),0.5)*mixtureComponents[j]->dadT(T) + +pow(mixtureComponents[j]->a(T)/mixtureComponents[i]->a(T),0.5)*mixtureComponents[i]->dadT(T)); +} + +//CL: returns part of the second derivative of "a" for the mixture +//CL: Important: a is a function of T +//CL: TODO: RECHECK +inline scalar mixtureSoaveRedlichKwong::d2adT2mix(const scalar T, const label i, const label j) const +{ + + return 0.5*weigths[i]*weigths[j]*this->W()*this->W()* + ( + pow(mixtureComponents[i]->a(T)/mixtureComponents[j]->a(T),0.5)*mixtureComponents[j]->d2adT2(T) + +pow(mixtureComponents[j]->a(T)/mixtureComponents[i]->a(T),0.5)*mixtureComponents[i]->d2adT2(T) + +pow(mixtureComponents[i]->a(T)*mixtureComponents[j]->a(T),-0.5) + *mixtureComponents[i]->dadT(T)*mixtureComponents[j]->dadT(T) + -0.5*pow(mixtureComponents[i]->a(T)/mixtureComponents[j]->a(T),0.5)*1/mixtureComponents[j]->a(T) + *pow(mixtureComponents[j]->dadT(T),2) + -0.5*pow(mixtureComponents[j]->a(T)/mixtureComponents[i]->a(T),0.5) + *1/mixtureComponents[i]->a(T)*pow(mixtureComponents[i]->dadT(T),2) + ); +} //returns the pressure for a given density and temperature inline scalar mixtureSoaveRedlichKwong::p(const scalar rho, const scalar T) const @@ -390,14 +434,15 @@ inline void mixtureSoaveRedlichKwong::operator+=(const mixtureSoaveRedlichKwong& //CL: increase number of Components by 1 numOfComp=numOfComp+1; - //CL: resize DynamicList so that they have a defined size in the mixture object - aComponents.resize(numOfComp); - daComponents.resize(numOfComp); - d2aComponents.resize(numOfComp); - //CL: setting TSave=0--> results that all coefficients (a, da, d2a) are calculated in updateModelCoefficients TSave=0.0; singleComponent=0; + + //CL:setting rho boundaries + rhoMin_=min(rhoMin_,srk.rhoMin_); + rhoMax_=max(rhoMax_,srk.rhoMax_); + + //CL: calculating rho @ std rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); } @@ -428,7 +473,7 @@ inline mixtureSoaveRedlichKwong operator+ mixtureComponents[srk1.numOfComp]=srk2.mixtureComponents[0]; return mixtureSoaveRedlichKwong(static_cast(srk1)+static_cast(srk2), - srk1.numOfComp+1, weigths, mixtureComponents); + srk1.numOfComp+1, weigths, mixtureComponents, min(srk1.rhoMin_,srk2.rhoMin_), max(srk1.rhoMax_,srk2.rhoMax_)); } @@ -444,7 +489,7 @@ inline mixtureSoaveRedlichKwong operator* weigths[srk.numOfComp-1]=s*srk.nMoles(); return mixtureSoaveRedlichKwong(s*static_cast(srk), srk.numOfComp, weigths, - srk.mixtureComponents,srk.a0_,srk.b_,srk.Tcrit_,srk.n_,srk.rhostd_); + srk.mixtureComponents,srk.a0_,srk.b_,srk.Tcrit_,srk.n_,srk.rhostd_, srk.rhoMin_, srk.rhoMax_); } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C new file mode 100755 index 000000000..e6fb2b170 --- /dev/null +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C @@ -0,0 +1,125 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + Peng Robinson equation of state. + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany + +\*---------------------------------------------------------------------------*/ + +#include "pengRobinson.H" +#include "IOstreams.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +pengRobinson::pengRobinson(Istream& is) +: + specie(is), + pcrit_(readScalar(is)), + Tcrit_(readScalar(is)), + azentricFactor_(readScalar(is)), + a0_(0.457235*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), + b_(0.077796*this->RR*Tcrit_/pcrit_), + n_(0.37464+1.54226*azentricFactor_-0.26992*pow(azentricFactor_,2)), + TSave(0.0), + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))), + //CL: Only uses the default values + rhoMin_(1e-3), + rhoMax_(1500), + b2_(pow(b_,2)), + b3_(pow(b_,3)), + b4_(pow(b_,4)), + b5_(pow(b_,5)) +{ + is.check("pengRobinson::pengRobinson(Istream& is)"); +} +//CL: Constructed needed in OpenFOAM 2.x.x +//CL: Code works fine, but compiling problem in OpenFOAM 1.6.ext +//CL: because specie has no constructor using dict +/* +pengRobinson::pengRobinson(const dictionary& dict) +: + specie(dict), + pcrit_(readScalar(dict.subDict("equationOfState").lookup("pCritical"))), + Tcrit_(readScalar(dict.subDict("equationOfState").lookup("TCritical"))), + azentricFactor_(readScalar(dict.subDict("equationOfState").lookup("azentricFactor"))), + //CL: rhoMin and rhoMax are only used as boundaries for the bisection methode (see rho function) + //CL: important: rhoMin and rhoMax are not used as boundary for the newton solver + //CL: therefore, rho can be larger than rhoMax and smaller than rhoMin + rhoMin_(dict.subDict("equationOfState").lookupOrDefault("rhoMin",1e-3)), + rhoMax_(dict.subDict("equationOfState").lookupOrDefault("rhoMax",1500)), + a0_(0.457235*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), + b_(0.077796*this->RR*Tcrit_/pcrit_), + n_(0.37464+1.54226*azentricFactor_-0.26992*pow(azentricFactor_,2)), + TSave(0.0), + b2_(pow(b_,2)), + b3_(pow(b_,3)), + b4_(pow(b_,4)), + b5_(pow(b_,5)), + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) +{} + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::pengRobinson::write(Ostream& os) const +{ + specie::write(os); + + dictionary dict("equationOfState"); + dict.add("pCritical", pcrit_); + dict.add("TCritical", Tcrit_); + dict.add("azentricFactor", azentricFactor_); + dict.add("rhoMin", rhoMin_); + dict.add("rhoMax", rhoMax_); + + os << indent << dict.dictName() << dict; +} +*/ +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +Ostream& operator<<(Ostream& os, const pengRobinson& pr) +{ + os << static_cast(pr)<< token::SPACE + << pr.pcrit_ << tab<< pr.Tcrit_<< tab << pr.azentricFactor_; + + os.check("Ostream& operator<<(Ostream& os, const pengRobinson& st)"); + return os; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H similarity index 91% rename from src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H index fdbfa73ee..ce876b7f7 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinson.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H @@ -68,12 +68,6 @@ class pengRobinson public specie { - // Static Private data - - //should be read from the fvSolution file where rhoMax and rhoMin values must be defined (for rhoSimpleFoam) - //HR: Don't know, yet. Let's make these static for starters - static const scalar rhoMax_; - static const scalar rhoMin_; protected: // Protected data @@ -86,6 +80,15 @@ protected: scalar a0_; mutable scalar b_; + //CL: pow of constants b_ used in the code e.g. b2_=b*b; + mutable scalar b2_; + mutable scalar b3_; + mutable scalar b4_; + mutable scalar b5_; + + //CL: rhoMin and rhoMax are only used as boundaries for the bisection methode (see rho function) + scalar rhoMax_; + scalar rhoMin_; //CL: Variables to save the values of a, dadT and d2adT2 of the mixture //CL: Variables must corrected for changing temperatures @@ -99,7 +102,6 @@ protected: //- Density @STD, initialise after a0, b! mutable scalar rhostd_; - //Protected functions //CL: function updates the coefficients (aSave, daSave, d2aSave) inline void updateModelCoefficients(const scalar T) const; @@ -118,6 +120,9 @@ public: //- Construct from Istream pengRobinson(Istream&); + //- Construct from dictionary + //pengRobinson(const dictionary& dict); + //- Construct as named copy inline pengRobinson(const word& name,const pengRobinson&); @@ -139,12 +144,22 @@ public: //CL: second order temperature deriviative of model coefficient a(T) inline scalar d2adT2(const scalar T)const; + //Return Peng Robinson factors inline scalar a0()const; inline scalar b()const; inline scalar n()const; + //CL: return power of constants b_ + inline scalar b2()const; + + inline scalar b3()const; + + inline scalar b4()const; + + inline scalar b5()const; + //CL: Equation of state inline scalar p(const scalar rho, const scalar T) const; @@ -214,6 +229,12 @@ public: ) const; + // I-O + + //- Write to Ostream + //void write(Ostream& os) const; + + // Member operators inline void operator+=(const pengRobinson&); diff --git a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H similarity index 85% rename from src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H index 529207d1f..407691ebb 100755 --- a/src/thermophysicalModels/specie/equationOfState/pengRobinson/pengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H @@ -61,7 +61,11 @@ inline pengRobinson::pengRobinson(const word& name, const pengRobinson& pr) b_(pr.b_), n_(pr.n_), rhostd_(pr.rhostd_), - TSave(0) + TSave(0), + b2_(pr.b2_), + b3_(pr.b3_), + b4_(pr.b4_), + b5_(pr.b5_) {} @@ -166,13 +170,33 @@ inline scalar pengRobinson::n()const return n_; } +//CL: pow of constant b() used in the code e.g. b2_=b*b; +inline scalar pengRobinson::b2()const +{ + return b2_; +} + +inline scalar pengRobinson::b3()const +{ + return b3_; +} + +inline scalar pengRobinson::b4()const +{ + return b4_; +} + +inline scalar pengRobinson::b5()const +{ + return b5_; +} //returns the pressure for a given density and temperature inline scalar pengRobinson::p(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return this->RR*T/(Vm-b_)-a(T)/(pow(Vm,2)+2*b_*Vm-pow(b_,2)); + return this->RR*T/(Vm-b())-a(T)/(pow(Vm,2)+2*b()*Vm-b2()); } @@ -181,19 +205,21 @@ inline scalar pengRobinson::p(const scalar rho,const scalar T) const inline scalar pengRobinson::dpdv(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm*Vm*Vm; return( 2*a(T)* ( - pow(b_,3)-pow(b_,2)*Vm-b_*pow(Vm,2)+pow(Vm,3) + b3()-b2()*Vm-b()*Vm2+Vm3 ) -this->RR*T* ( - pow(b_,4)-4*pow(b_,3)*Vm+2*pow(b_,2)*pow(Vm,2) - +4*b_*pow(Vm,3)+pow(Vm,4) + b4()-4*b3()*Vm+2*b2()*Vm2 + +4*b()*Vm3+pow(Vm,4) ) ) - /(pow(b_-Vm,2)*pow(pow(b_,2)-2*b_*Vm-pow(Vm,2),2)); + /(pow(b()-Vm,2)*pow(b2()-2*b()*Vm-Vm2,2)); } @@ -203,7 +229,7 @@ inline scalar pengRobinson::dpdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return this->RR/(Vm-b_)-dadT(T)/(pow(Vm,2)+2*b_*Vm-pow(b_,2)); + return this->RR/(Vm-b())-dadT(T)/(pow(Vm,2)+2*b()*Vm-b2()); } @@ -229,7 +255,8 @@ inline scalar pengRobinson::integral_p_dv(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return -pow(2,0.5)*a(T)*log(b_*(1-pow(2,0.5))+Vm)/(4*b_)+this->RR*T*log(Vm-b_)+pow(2,0.5)*a(T)*log(b_*(pow(2,0.5)+1)+Vm)/(4*b_); + return -pow(2,0.5)*a(T)*log(b()*(1-pow(2,0.5))+Vm)/(4*b())+this->RR*T*log(Vm-b()) + +pow(2,0.5)*a(T)*log(b()*(pow(2,0.5)+1)+Vm)/(4*b()); } @@ -239,7 +266,8 @@ inline scalar pengRobinson::integral_dpdT_dv(const scalar rho,const scalar T) co { scalar Vm = this->W()/rho; - return -pow(2,0.5)*dadT(T)*log(b_*(1-pow(2,0.5))+Vm)/(4*b_)+this->RR*log(Vm-b_)+pow(2,0.5)*dadT(T)*log(b_*(pow(2,0.5)+1)+Vm)/(4*b_); + return -pow(2,0.5)*dadT(T)*log(b()*(1-pow(2,0.5))+Vm)/(4*b()) + +this->RR*log(Vm-b())+pow(2,0.5)*dadT(T)*log(b()*(pow(2,0.5)+1)+Vm)/(4*b()); } @@ -248,7 +276,7 @@ inline scalar pengRobinson::d2pdT2(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return -d2adT2(T)/(pow(Vm,2)+2*b_*Vm-pow(b_,2)); + return -d2adT2(T)/(pow(Vm,2)+2*b()*Vm-b2()); } @@ -256,20 +284,24 @@ inline scalar pengRobinson::d2pdT2(const scalar rho,const scalar T) const inline scalar pengRobinson::d2pdv2(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm*Vm*Vm; + scalar Vm4 = Vm*Vm*Vm*Vm; + scalar Vm5 = Vm*Vm*Vm*Vm*Vm; return 2* ( a(T)* ( - 5*pow(b_,5)-9*pow(b_,4)*Vm+4*pow(b_,2)*pow(Vm,3)+3*b_*pow(Vm,4)-3*pow(Vm,5) + 5*b5()-9*b4()*Vm+4*b2()*Vm3+3*b()*Vm4-3*Vm5 ) -this->RR*T* ( - pow(b_,6)-6*pow(b_,5)*Vm+9*pow(b_,4)*pow(Vm,2)+4*pow(b_,3)*pow(Vm,3) - -9*pow(b_,2)*pow(Vm,4)-6*b_*pow(Vm,5)-pow(Vm,6) + pow(b(),6)-6*b5()*Vm+9*b4()*Vm2+4*b3()*Vm3 + -9*b2()*Vm4-6*b()*Vm5-pow(Vm,6) ) ) - /(pow(b_-Vm,3)*pow(pow(b_,2)-2*b_*Vm-pow(Vm,2),3)); + /(pow(b()-Vm,3)*pow(b2()-2*b()*Vm-Vm2,3)); } @@ -291,19 +323,21 @@ inline scalar pengRobinson::d2vdT2(const scalar rho, const scalar T) const inline scalar pengRobinson::d2pdvdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm*Vm*Vm; return( 2*dadT(T)* ( - pow(b_,3)-pow(b_,2)*Vm-b_*pow(Vm,2)+pow(Vm,3) + b3()-b2()*Vm-b()*Vm2+Vm3 ) -this->RR* ( - pow(b_,4)-4*pow(b_,3)*Vm+2*pow(b_,2)*pow(Vm,2) - +4*b_*pow(Vm,3)+pow(Vm,4) + b4()-4*b3()*Vm+2*b2()*Vm2 + +4*b()*Vm3+pow(Vm,4) ) ) - /(pow(b_-Vm,2)*pow(pow(b_,2)-2*b_*Vm-pow(Vm,2),2)); + /(pow(b()-Vm,2)*pow(b2()-2*b()*Vm-Vm2,2)); } @@ -313,7 +347,7 @@ inline scalar pengRobinson::integral_d2pdT2_dv(const scalar rho,const scalar T) { scalar Vm = this->W()/rho; - return pow(2,0.5)*d2adT2(T)*log(b_*(pow(2,0.5)+1)+Vm)/(4*b_)-pow(2,0.5)*d2adT2(T)*log(b_*(1-pow(2,0.5))+Vm)/(4*b_); + return pow(2,0.5)*d2adT2(T)*log(b()*(pow(2,0.5)+1)+Vm)/(4*b())-pow(2,0.5)*d2adT2(T)*log(b()*(1-pow(2,0.5))+Vm)/(4*b()); } @@ -342,7 +376,7 @@ inline scalar pengRobinson::rho( const scalar rho0 ) const { - + scalar molarVolumePrevIteration; scalar molarVolume; label iter=0; @@ -415,7 +449,7 @@ inline scalar pengRobinson::rho( { FatalErrorIn ( - "inline scalar redlichKwong::rho(const scalar p, const scalar T, const scalar rho0) const " + "inline scalar pengRobinson::rho(const scalar p, const scalar T, const scalar rho0) const " ) << "Maximum number of iterations exceeded" << abort(FatalError); } diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C similarity index 56% rename from src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C index b546fc15a..06116bf72 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C @@ -41,18 +41,6 @@ Germany namespace Foam { -/* * * * * * * * * * * * * * * Private static data * * * * * * * * * * * * * */ - -const scalar redlichKwong::rhoMin_ -( - debug::tolerances("redlichKwongRhoMin", 1e-3) -); - -const scalar redlichKwong::rhoMax_ -( - debug::tolerances("redlichKwongRhoMax", 1500) -); - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // redlichKwong::redlichKwong(Istream& is) @@ -62,25 +50,67 @@ redlichKwong::redlichKwong(Istream& is) Tcrit_(readScalar(is)), a_(0.42748*pow(this->RR,2)*pow(Tcrit_,2.5)/pcrit_), b_(0.08664*this->RR*Tcrit_/pcrit_), - // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd, Tstd, Pstd/(Tstd*this->R()))) + //CL: Only uses the default values + rhoMin_(1e-3), + rhoMax_(1500), + b2_(pow(b_,2)), + b3_(pow(b_,3)), + b5_(pow(b_,5)), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd, Tstd, Pstd/(Tstd*this->R()))) { is.check("redlichKwong::redlichKwong(Istream& is)"); } +//CL: Constructed needed in OpenFOAM 2.x.x +//CL: Code works fine, but compiling problem in OpenFOAM 1.6.ext +//CL: because specie has no constructor using dict +/* +redlichKwong::redlichKwong(const dictionary& dict) +: + specie(dict), + pcrit_(readScalar(dict.subDict("equationOfState").lookup("pCritical"))), + Tcrit_(readScalar(dict.subDict("equationOfState").lookup("TCritical"))), + //CL: rhoMin and rhoMax are only used as boundaries for the bisection methode (see rho function) + //CL: important: rhoMin and rhoMax are not used as boundary for the newton solver + //CL: therefore, rho can be larger than rhoMax and smaller than rhoMin + rhoMin_(dict.subDict("equationOfState").lookupOrDefault("rhoMin",1e-3)), + rhoMax_(dict.subDict("equationOfState").lookupOrDefault("rhoMax",1500)), + a_(0.42748*pow(this->RR,2)*pow(Tcrit_,2.5)/pcrit_), + b_(0.08664*this->RR*Tcrit_/pcrit_), + b2_(pow(b_,2)), + b3_(pow(b_,3)), + b5_(pow(b_,5)), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd, Tstd, Pstd/(Tstd*this->R()))) +{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::redlichKwong::write(Ostream& os) const +{ + specie::write(os); + + dictionary dict("equationOfState"); + dict.add("pCritical", pcrit_); + dict.add("TCritical", Tcrit_); + dict.add("rhoMin", rhoMin_); + dict.add("rhoMax", rhoMax_); + + os << indent << dict.dictName() << dict; +} +*/ // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // Ostream& operator<<(Ostream& os, const redlichKwong& rk) { - os << static_cast(rk)<< tab + os << static_cast(rk)<< token::SPACE << rk.pcrit_ << tab<< rk.Tcrit_; os.check("Ostream& operator<<(Ostream& os, const redlichKwong& st)"); return os; } - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H similarity index 90% rename from src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H index 9901e8d42..2202c39d4 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H @@ -59,22 +59,27 @@ class redlichKwong : public specie { - // Static Private data - //should be read from the fvSolution file where rhoMax and rhoMin values must be defined (for rhoSimpleFoam) - //HR: Don't know, yet. Let's make these static for starters - static const scalar rhoMax_; - static const scalar rhoMin_; protected: + // Protected data scalar pcrit_; scalar Tcrit_; + //CL: rhoMin and rhoMax are only used as boundaries for the bisection methode (see rho function) + scalar rhoMax_; + scalar rhoMin_; + //-Redlich Kwong factors mutable scalar a_; mutable scalar b_; + //CL: pow of constants b_ used in the code e.g. b2_=b*b; + mutable scalar b2_; + mutable scalar b3_; + mutable scalar b5_; + //- Density @STD, initialise after a, b! mutable scalar rhostd_; @@ -91,6 +96,9 @@ public: //- Construct from Istream redlichKwong(Istream&); + //- Construct from dictionary + //redlichKwong(const dictionary& dict); + //- Construct as named copy inline redlichKwong(const word& name, const redlichKwong&); @@ -104,12 +112,20 @@ public: inline scalar rhostd() const; + //Return Redlich Kwong factors inline scalar a() const; inline scalar b() const; inline scalar p(const scalar rho, const scalar T) const; + //CL: return power of constants b_ + inline scalar b2()const; + + inline scalar b3()const; + + inline scalar b5()const; + //first order derivatives inline scalar dpdv(const scalar rho, const scalar T) const; @@ -173,6 +189,12 @@ public: ) const; + // I-O + + //- Write to Ostream + //void write(Ostream& os) const; + + // Member operators inline void operator+=(const redlichKwong&); diff --git a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H similarity index 90% rename from src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H index 95be706f6..db9b48c29 100755 --- a/src/thermophysicalModels/specie/equationOfState/redlichKwong/redlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H @@ -57,7 +57,10 @@ inline redlichKwong::redlichKwong(const word& name, const redlichKwong& rk) Tcrit_(rk.Tcrit_), a_(rk.a_), b_(rk.b_), - rhostd_(rk.rhostd_) + rhostd_(rk.rhostd_), + b2_(rk.b2_), + b3_(rk.b3_), + b5_(rk.b5_) {} @@ -94,6 +97,22 @@ inline scalar redlichKwong::b()const return b_; } +inline scalar redlichKwong::b2()const +{ + return b2_; +} + +inline scalar redlichKwong::b3()const +{ + return b3_; +} + +inline scalar redlichKwong::b5()const +{ + return b5_; +} + + //returns the pressure for a given density and temperature inline scalar redlichKwong::p(const scalar rho, const scalar T) const @@ -108,9 +127,11 @@ inline scalar redlichKwong::p(const scalar rho, const scalar T) const inline scalar redlichKwong::dpdv(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return (a_*(pow(b_,3) - 3*b_*pow(Vm,2) + 2*pow(Vm,3)) - - this->RR*pow(T,1.5)*pow(Vm,2)*(pow(b_,2) + 2*b_*Vm + pow(Vm,2))) - /(sqrt(T)*pow(Vm,2)*pow((b_ + Vm),2)*pow( (b_ - Vm),2)); + scalar Vm2 = Vm*Vm; + + return (a_*(b3() - 3*b_*Vm2 + 2*pow(Vm,3)) + - this->RR*pow(T,1.5)*Vm2*(b2() + 2*b_*Vm + Vm2)) + /(sqrt(T)*Vm2*pow((b_ + Vm),2)*pow( (b_ - Vm),2)); } @@ -182,19 +203,22 @@ inline scalar redlichKwong::d2pdT2(const scalar rho, const scalar T) const inline scalar redlichKwong::d2pdv2(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm*Vm*Vm; + return ( 2*( a_*( - pow(b_,5)-3*pow(b_,3)*pow(Vm,2) - - pow(b_,2)*pow(Vm,3) + b5()-3*b3()*Vm2 + - b2()*Vm3 + 6*b_*pow(Vm,4)-3*pow(Vm,5) ) - + this->RR*pow(T,1.5)*pow(Vm,3)*(pow(b_,3) - + 3*pow(b_,2)*Vm - + 3*b_*pow(Vm,2)+pow(Vm,3)) + + this->RR*pow(T,1.5)*Vm3*(b3() + + 3*b2()*Vm + + 3*b_*Vm2+Vm3) ) - /(sqrt(T)*pow(Vm,3)*pow((b_ + Vm),3)*pow(Vm-b_,3)) + /(sqrt(T)*Vm3*pow((b_ + Vm),3)*pow(Vm-b_,3)) ); } @@ -217,13 +241,14 @@ inline scalar redlichKwong::d2vdT2(const scalar rho, const scalar T) const inline scalar redlichKwong::d2pdvdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; return -(0.5*( - a_*(pow(b_,3) - 3*b_*pow(Vm,2) + 2*pow(Vm,3)) - + 2*this->RR*pow(T,1.5)*pow(Vm,2)*(pow(b_,2) + 2*b_*Vm + pow(Vm,2)) + a_*(b3() - 3*b_*Vm2 + 2*pow(Vm,3)) + + 2*this->RR*pow(T,1.5)*Vm2*(b2() + 2*b_*Vm + Vm2) )) - /(pow(T,1.5)*pow(Vm,2)*pow(b_ + Vm,2)*pow(b_ - Vm,2)); + /(pow(T,1.5)*Vm2*pow(b_ + Vm,2)*pow(b_ - Vm,2)); } @@ -266,7 +291,7 @@ inline scalar redlichKwong::isothermalCompressiblity } -//- Return density [kg/m^3]on +//- Return density [kg/m^3] inline scalar redlichKwong::rho ( const scalar p, @@ -292,6 +317,7 @@ inline scalar redlichKwong::rho label i=0; do { + //CL: modified Newton solver molarVolume=molarVolumePrevIteration -( (this->p((this->W()/molarVolumePrevIteration),T) - p) @@ -302,8 +328,7 @@ inline scalar redlichKwong::rho if (i>8) { //CL: using bisection methode as backup, - //CL: solution must be between rho=0.001 to rho=1500; - //CL: if not, change rhoMax_ and rhoMin_ + //CL: solution must be between rhoMin_ to rhoMax for(i=0; i<200; i++) { scalar f1 = this->p(rho1,T) - p; diff --git a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C similarity index 55% rename from src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C rename to src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C index 997bbe85f..834f53042 100755 --- a/src/thermophysicalModels/specie/equationOfState/soaveRedlichKwong/soaveRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C @@ -41,17 +41,6 @@ Germany namespace Foam { -/* * * * * * * * * * * * * * * Private static data * * * * * * * * * * * * * */ -const scalar soaveRedlichKwong::rhoMin_ -( - debug::tolerances("soaveRedlichKwongRhoMin", 1e-3) -); - -const scalar soaveRedlichKwong::rhoMax_ -( - debug::tolerances("soaveRedlichKwongRhoMax", 1500) -); - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // soaveRedlichKwong::soaveRedlichKwong(Istream& is) @@ -63,18 +52,65 @@ soaveRedlichKwong::soaveRedlichKwong(Istream& is) a0_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/(pcrit_)), b_(0.08664*this->RR*Tcrit_/pcrit_), n_(0.48508+1.55171*azentricFactor_-0.15613*pow(azentricFactor_,2)), - // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) + TSave(0.0), + //CL: Only uses the default values + rhoMin_(1e-3), + rhoMax_(1500), + b2_(pow(b_,2)), + b3_(pow(b_,3)), + b5_(pow(b_,5)), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) { is.check("soaveRedlichKwong::soaveRedlichKwong(Istream& is)"); } +//CL: Constructed needed in OpenFOAM 2.x.x +//CL: Code works fine, but compiling problem in OpenFOAM 1.6.ext +//CL: because specie has no constructor using dict +/* +soaveRedlichKwong::soaveRedlichKwong(const dictionary& dict) +: + specie(dict), + pcrit_(readScalar(dict.subDict("equationOfState").lookup("pCritical"))), + Tcrit_(readScalar(dict.subDict("equationOfState").lookup("TCritical"))), + azentricFactor_(readScalar(dict.subDict("equationOfState").lookup("azentricFactor"))), + //CL: rhoMin and rhoMax are only used as boundaries for the bisection methode (see rho function) + //CL: important: rhoMin and rhoMax are not used as boundary for the newton solver + //CL: therefore, rho can be larger than rhoMax and smaller than rhoMin + rhoMin_(dict.subDict("equationOfState").lookupOrDefault("rhoMin",1e-3)), + rhoMax_(dict.subDict("equationOfState").lookupOrDefault("rhoMax",1500)), + a0_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/(pcrit_)), + b_(0.08664*this->RR*Tcrit_/pcrit_), + n_(0.48508+1.55171*azentricFactor_-0.15613*pow(azentricFactor_,2)), + TSave(0.0), + b2_(pow(b_,2)), + b3_(pow(b_,3)), + b5_(pow(b_,5)), + // Starting GUESS for the density by ideal gas law + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) +{} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +void Foam::soaveRedlichKwong::write(Ostream& os) const +{ + specie::write(os); + + dictionary dict("equationOfState"); + dict.add("pCritical", pcrit_); + dict.add("TCritical", Tcrit_); + dict.add("azentricFactor", azentricFactor_); + dict.add("rhoMin", rhoMin_); + dict.add("rhoMax", rhoMax_); + + os << indent << dict.dictName() << dict; +} +*/ // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // Ostream& operator<<(Ostream& os, const soaveRedlichKwong& srk) { - os << static_cast(srk)<< tab + os << static_cast(srk)<< token::SPACE << srk.pcrit_ << tab<< srk.Tcrit_<W()/rho; + scalar Vm2 = Vm*Vm; return ( - a(T)*(pow(b_,3)-3*b_*pow(Vm,2)+2*pow(Vm,3)) - -this->RR*T*pow(Vm,2)*(pow(b_,2)+2*b_*Vm+pow(Vm,2)) + a(T)*(b3()-3*b_*Vm2+2*pow(Vm,3)) + -this->RR*T*Vm2*(b2()+2*b_*Vm+Vm2) ) - /(pow(Vm,2)*pow(b_+Vm,2)*pow(b_-Vm,2)); + /(Vm2*pow(b_+Vm,2)*pow(b_-Vm,2)); } @@ -260,20 +280,22 @@ inline scalar soaveRedlichKwong::d2pdT2(const scalar rho,const scalar T) const inline scalar soaveRedlichKwong::d2pdv2(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; + scalar Vm3 = Vm*Vm*Vm; return 2* ( a(T)* ( - pow(b_,5)-3*pow(b_,3)*pow(Vm,2)-pow(b_,2)*pow(Vm,3)+6*b_*pow(Vm,4)-3*pow(Vm,5) + b5()-3*b3()*Vm2-b2()*Vm3+6*b_*pow(Vm,4)-3*pow(Vm,5) ) - +this->RR*T*pow(Vm,3)* + +this->RR*T*Vm3* ( - pow(b_,3)+3*pow(b_,2)*Vm+3*b_*pow(Vm,2)+pow(Vm,3) + b3()+3*b2()*Vm+3*b_*Vm2+Vm3 ) ) - /(pow(Vm,3)*pow(b_+Vm,3)*pow(Vm-b_,3)); + /(Vm3*pow(b_+Vm,3)*pow(Vm-b_,3)); } @@ -295,13 +317,14 @@ inline scalar soaveRedlichKwong::d2vdT2(const scalar rho, const scalar T) const inline scalar soaveRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; + scalar Vm2 = Vm*Vm; return ( - dadT(T)*(pow(b_,3)-3*b_*pow(Vm,2)+2*pow(Vm,3)) - -this->RR*pow(Vm,2)*(pow(b_,2)+2*b_*Vm+pow(Vm,2)) + dadT(T)*(b3()-3*b_*Vm2+2*pow(Vm,3)) + -this->RR*Vm2*(b2()+2*b_*Vm+Vm2) ) - /(pow(Vm,2)*pow(b_+Vm,2)*pow(b_-Vm,2)); + /(Vm2*pow(b_+Vm,2)*pow(b_-Vm,2)); } @@ -411,7 +434,7 @@ inline scalar soaveRedlichKwong::rho( { FatalErrorIn ( - "inline scalar redlichKwong::rho(const scalar p, const scalar T, const scalar rho0) const " + "inline scalar soaveRedlichKwong::rho(const scalar p, const scalar T, const scalar rho0) const " ) << "Maximum number of iterations exceeded" << abort(FatalError); } diff --git a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.C b/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.C deleted file mode 100755 index 39afb89d0..000000000 --- a/src/thermophysicalModels/specie/equationOfState/mixturePengRobinson/mixturePengRobinson.C +++ /dev/null @@ -1,83 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright held by original author - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Description - Peng Robionson equation of state for mixtures. - -Author -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#include "mixturePengRobinson.H" -#include "IOstreams.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -mixturePengRobinson::mixturePengRobinson(Istream& is) -: - pengRobinson(is), - numOfComp(1), - singleComponent(1) -{ - //CL: set size of weigths, mixtureComponents ... to 10, - //CL: when more mixture componentents are used - //CL: size of the DynamicLis increases automatically - weigths.setSize(10); - mixtureComponents.setSize(10); - aComponents.setSize(10); - daComponents.setSize(10); - d2aComponents.setSize(10); - - //Save a pointer of this object in the mixtureComponents array - mixtureComponents[0]=this; - - is.check("mixturePengRobinson::mixturePengRobinson(Istream& is)"); -} - - -// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // - -Ostream& operator<<(Ostream& os, const mixturePengRobinson& pr) -{ - os << static_cast(pr)<< tab; - - os.check("Ostream& operator<<(Ostream& os, const mixturePengRobinson& st)"); - return os; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.C deleted file mode 100755 index 820354d6c..000000000 --- a/src/thermophysicalModels/specie/equationOfState/mixtureRedlichKwong/mixtureRedlichKwong.C +++ /dev/null @@ -1,78 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright held by original author - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Description - Redlich Kwong equation of state for mixtures. - -Author -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#include "mixtureRedlichKwong.H" -#include "IOstreams.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -mixtureRedlichKwong::mixtureRedlichKwong(Istream& is) -: - redlichKwong(is), - numOfComp(1) -{ - //CL: set size of weigths and mixtureComponents to 10 - //CL: when more mixture componentents are used - //CL: size of the DynamicLis increases automatically - weigths.setSize(10); - mixtureComponents.setSize(10); - - //Save a pointer of this object in the mixtureComponents array - mixtureComponents[0]=this; - is.check("mixtureRedlichKwong::mixtureRedlichKwong(Istream& is)"); -} - - -// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // - -Ostream& operator<<(Ostream& os, const mixtureRedlichKwong& rk) -{ - os << static_cast(rk)<< tab; - - os.check("Ostream& operator<<(Ostream& os, const mixtureRedlichKwong& st)"); - return os; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C deleted file mode 100755 index f5c9e0136..000000000 --- a/src/thermophysicalModels/specie/equationOfState/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C +++ /dev/null @@ -1,82 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright held by original author - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Description - Soave Redlich Kwong equation of state for mixtures. - -Author -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany - -\*---------------------------------------------------------------------------*/ - -#include "mixtureSoaveRedlichKwong.H" -#include "IOstreams.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(Istream& is) -: - soaveRedlichKwong(is), - numOfComp(1), - singleComponent(1) -{ - //CL: set size of weigths, mixtureComponents ... to 10, - //CL: when more mixture componentents are used - //CL: size of the DynamicLis increases automatically - weigths.setSize(10); - mixtureComponents.setSize(10); - aComponents.setSize(10); - daComponents.setSize(10); - d2aComponents.setSize(10); - - //Save a pointer of this object in the mixtureComponents array - mixtureComponents[0]=this; - is.check("mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(Istream& is)"); -} - - -// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // - -Ostream& operator<<(Ostream& os, const mixtureSoaveRedlichKwong& srk) -{ - os << static_cast(srk)<< tab; - - os.check("Ostream& operator<<(Ostream& os, const mixtureSoaveRedlichKwong& st)"); - return os; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C similarity index 100% rename from src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C rename to src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H similarity index 100% rename from src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H rename to src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H diff --git a/src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H similarity index 100% rename from src/thermophysicalModels/specie/thermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H rename to src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.C b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C similarity index 100% rename from src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.C rename to src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H similarity index 100% rename from src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermo.H rename to src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H diff --git a/src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H similarity index 100% rename from src/thermophysicalModels/specie/thermo/realGasSpecieThermo/realGasSpecieThermoI.H rename to src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/T b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/T similarity index 94% rename from tutorials/compressible/rhoPisoFoam/ras/pipe/0/T rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/T index b71cb876b..ceeeae899 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/T +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/T @@ -21,25 +21,25 @@ internalField uniform 333.15; boundaryField { - INLET + inlet { type fixedValue; value uniform 333.15; } - OUTLET + outlet { type zeroGradient; } - WALL_1 + upperWall { type zeroGradient; } - WALL_2 + lowerWall { type zeroGradient; } - frontAndBackPlanes + frontAndBack { type empty; } diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/U b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/U similarity index 84% rename from tutorials/compressible/rhoPisoFoam/ras/pipe/0/U rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/U index c5a31aca6..4eeb59065 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/U +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/U @@ -17,32 +17,31 @@ FoamFile dimensions [0 1 -1 0 0 0 0]; -internalField uniform (5 0 0); +internalField uniform (0 0 0); boundaryField { - INLET + inlet { - type inletOutlet; - inletValue uniform (5 0 0); - value uniform (5 0 0); + type pressureInletVelocity; + value uniform (3.5 0 0); } - OUTLET + outlet { type zeroGradient; } - WALL_1 + upperWall { type fixedValue; value uniform (0 0 0); } - WALL_2 + lowerWall { type fixedValue; value uniform (0 0 0); } - frontAndBackPlanes + frontAndBack { type empty; } diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/epsilon old mode 100755 new mode 100644 similarity index 83% rename from tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/epsilon index 381b88669..bc5ec76b0 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/epsilon +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/epsilon @@ -1,8 +1,8 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.1 | +| \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile @@ -21,7 +21,7 @@ internalField uniform 1120; boundaryField { - WALL_1 + upperWall { type compressible::epsilonWallFunction; Cmu 0.09; @@ -29,7 +29,7 @@ boundaryField E 9.8; value uniform 1120; } - WALL_2 + lowerWall { type compressible::epsilonWallFunction; Cmu 0.09; @@ -37,18 +37,18 @@ boundaryField E 9.8; value uniform 1120; } - INLET + inlet { type fixedValue; value uniform 1120; } - OUTLET + outlet { type inletOutlet; inletValue uniform 1120; value uniform 1120; } - frontAndBackPlanes + frontAndBack { type empty; } diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/k b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/k old mode 100755 new mode 100644 similarity index 77% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/k rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/k index 5e6de985a..e17091353 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/k +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/k @@ -1,8 +1,8 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.1 | +| \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile @@ -21,27 +21,29 @@ internalField uniform 5; boundaryField { - WALL_1 + upperWall { type compressible::kqRWallFunction; value uniform 5; } - WALL_2 + lowerWall { type compressible::kqRWallFunction; value uniform 5; } - INLET + inlet { type turbulentIntensityKineticEnergyInlet; intensity 0.01; + U U; + phi phi; value uniform 5; } - OUTLET + outlet { type zeroGradient; } - frontAndBackPlanes + frontAndBack { type empty; } diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/p b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/p similarity index 89% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/p rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/p index cbc7fd109..532c994bb 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/p +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0.org/p @@ -21,30 +21,30 @@ internalField uniform 80e5; boundaryField { - INLET + inlet { type totalPressure; rho rho; psi none; gamma 1.4; - p0 uniform 8.01e+06; - value uniform 8.01e+06; + p0 uniform 80.01e5; + value uniform 80.01e5; } - OUTLET + outlet { type fixedValue; value uniform 8e+06; } - WALL_1 + upperWall { type zeroGradient; } - WALL_2 + lowerWall { type zeroGradient; } - frontAndBackPlanes + frontAndBack { type empty; } diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/p b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/T similarity index 82% rename from tutorials/compressible/rhoPisoFoam/ras/pipe/0/p rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/0/T index ed10138df..ceeeae899 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/p +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/T @@ -11,35 +11,35 @@ FoamFile format ascii; class volScalarField; location "0"; - object p; + object T; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dimensions [1 -1 -2 0 0 0 0]; +dimensions [0 0 0 1 0 0 0]; -internalField uniform 80e5; +internalField uniform 333.15; boundaryField { - INLET - { - type zeroGradient; - } - OUTLET + inlet { type fixedValue; - value uniform 8e+06; + value uniform 333.15; + } + outlet + { + type zeroGradient; } - WALL_1 + upperWall { type zeroGradient; } - WALL_2 + lowerWall { type zeroGradient; } - frontAndBackPlanes + frontAndBack { type empty; } diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/U b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/U similarity index 81% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/U rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/0/U index 0a85d15ad..4eeb59065 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/U +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/U @@ -17,33 +17,31 @@ FoamFile dimensions [0 1 -1 0 0 0 0]; -internalField uniform (4.8 0 0); +internalField uniform (0 0 0); boundaryField { - INLET + inlet { type pressureInletVelocity; - value uniform (4.8 0 0); + value uniform (3.5 0 0); } - OUTLET + outlet { - type inletOutlet; - inletValue uniform (0 0 0); - value uniform (4.8 0 0); + type zeroGradient; } - WALL_1 + upperWall { type fixedValue; value uniform (0 0 0); } - WALL_2 + lowerWall { type fixedValue; value uniform (0 0 0); } - frontAndBackPlanes + frontAndBack { type empty; } diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/epsilon b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/epsilon old mode 100755 new mode 100644 similarity index 83% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/epsilon rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/0/epsilon index 381b88669..bc5ec76b0 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/epsilon +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/epsilon @@ -1,8 +1,8 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.1 | +| \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile @@ -21,7 +21,7 @@ internalField uniform 1120; boundaryField { - WALL_1 + upperWall { type compressible::epsilonWallFunction; Cmu 0.09; @@ -29,7 +29,7 @@ boundaryField E 9.8; value uniform 1120; } - WALL_2 + lowerWall { type compressible::epsilonWallFunction; Cmu 0.09; @@ -37,18 +37,18 @@ boundaryField E 9.8; value uniform 1120; } - INLET + inlet { type fixedValue; value uniform 1120; } - OUTLET + outlet { type inletOutlet; inletValue uniform 1120; value uniform 1120; } - frontAndBackPlanes + frontAndBack { type empty; } diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/k b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/k old mode 100755 new mode 100644 similarity index 77% rename from tutorials/compressible/rhoPisoFoam/ras/pipe/0/k rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/0/k index 5e6de985a..e17091353 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/0/k +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/k @@ -1,8 +1,8 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.1 | +| \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile @@ -21,27 +21,29 @@ internalField uniform 5; boundaryField { - WALL_1 + upperWall { type compressible::kqRWallFunction; value uniform 5; } - WALL_2 + lowerWall { type compressible::kqRWallFunction; value uniform 5; } - INLET + inlet { type turbulentIntensityKineticEnergyInlet; intensity 0.01; + U U; + phi phi; value uniform 5; } - OUTLET + outlet { type zeroGradient; } - frontAndBackPlanes + frontAndBack { type empty; } diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/T b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/p similarity index 72% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/T rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/0/p index c80d17527..532c994bb 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/0/T +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/0/p @@ -11,37 +11,40 @@ FoamFile format ascii; class volScalarField; location "0"; - object T; + object p; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dimensions [0 0 0 1 0 0 0]; +dimensions [1 -1 -2 0 0 0 0]; -internalField uniform 533.15; +internalField uniform 80e5; boundaryField { - INLET + inlet + { + type totalPressure; + rho rho; + psi none; + gamma 1.4; + p0 uniform 80.01e5; + value uniform 80.01e5; + } + outlet { type fixedValue; - value uniform 533.15; - } - OUTLET - { - type inletOutlet; - inletValue uniform 533.15; - value uniform 533.15; + value uniform 8e+06; } - WALL_1 + upperWall { type zeroGradient; } - WALL_2 + lowerWall { type zeroGradient; } - frontAndBackPlanes + frontAndBack { type empty; } diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/Allrun b/tutorials/compressible/realFluidPisoFoam/ras/backStep/Allrun new file mode 100755 index 000000000..30b386dfe --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/Allrun @@ -0,0 +1,9 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +runApplication blockMesh +runApplication `getApplication` diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/RASProperties b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/RASProperties similarity index 100% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/RASProperties rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/RASProperties diff --git a/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/polyMesh/blockMeshDict b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/polyMesh/blockMeshDict new file mode 100644 index 000000000..ddea96f98 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/polyMesh/blockMeshDict @@ -0,0 +1,173 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.1 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.001; + +vertices +( + (-20.6 0 -0.5) + (-20.6 3 -0.5) + (-20.6 12.7 -0.5) + (-20.6 25.4 -0.5) + (0 -25.4 -0.5) + (0 -5 -0.5) + (0 0 -0.5) + (0 3 -0.5) + (0 12.7 -0.5) + (0 25.4 -0.5) + (206 -25.4 -0.5) + (206 -8.5 -0.5) + (206 0 -0.5) + (206 6.5 -0.5) + (206 17 -0.5) + (206 25.4 -0.5) + (290 -16.6 -0.5) + (290 -6.3 -0.5) + (290 0 -0.5) + (290 4.5 -0.5) + (290 11 -0.5) + (290 16.6 -0.5) + (-20.6 0 0.5) + (-20.6 3 0.5) + (-20.6 12.7 0.5) + (-20.6 25.4 0.5) + (0 -25.4 0.5) + (0 -5 0.5) + (0 0 0.5) + (0 3 0.5) + (0 12.7 0.5) + (0 25.4 0.5) + (206 -25.4 0.5) + (206 -8.5 0.5) + (206 0 0.5) + (206 6.5 0.5) + (206 17 0.5) + (206 25.4 0.5) + (290 -16.6 0.5) + (290 -6.3 0.5) + (290 0 0.5) + (290 4.5 0.5) + (290 11 0.5) + (290 16.6 0.5) +); + +blocks +( + hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) + hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) + hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1) + hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) + hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) + hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) + hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) + hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) + hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) + hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) + hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) + hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) + hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) +); + +edges +( +); + +boundary +( + inlet + { + type patch; + faces + ( + (0 22 23 1) + (1 23 24 2) + (2 24 25 3) + ); + } + outlet + { + type patch; + faces + ( + (16 17 39 38) + (17 18 40 39) + (18 19 41 40) + (19 20 42 41) + (20 21 43 42) + ); + } + upperWall + { + type wall; + faces + ( + (3 25 31 9) + (9 31 37 15) + (15 37 43 21) + ); + } + lowerWall + { + type wall; + faces + ( + (0 6 28 22) + (6 5 27 28) + (5 4 26 27) + (4 10 32 26) + (10 16 38 32) + ); + } + frontAndBack + { + type empty; + faces + ( + (22 28 29 23) + (23 29 30 24) + (24 30 31 25) + (26 32 33 27) + (27 33 34 28) + (28 34 35 29) + (29 35 36 30) + (30 36 37 31) + (32 38 39 33) + (33 39 40 34) + (34 40 41 35) + (35 41 42 36) + (36 42 43 37) + (0 1 7 6) + (1 2 8 7) + (2 3 9 8) + (4 5 11 10) + (5 6 12 11) + (6 7 13 12) + (7 8 14 13) + (8 9 15 14) + (10 11 17 16) + (11 12 18 17) + (12 13 19 18) + (13 14 20 19) + (14 15 21 20) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/boundary b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/polyMesh/boundary old mode 100755 new mode 100644 similarity index 60% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/boundary rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/polyMesh/boundary index 7a59636ef..cb1db5976 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/boundary +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/polyMesh/boundary @@ -1,8 +1,8 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.1 | +| \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile @@ -17,35 +17,35 @@ FoamFile 5 ( - WALL_1 - { - type wall; - nFaces 99; - startFace 3644; - } - WALL_2 - { - type wall; - nFaces 99; - startFace 3743; - } - INLET + inlet { type patch; - nFaces 19; - startFace 3842; + nFaces 30; + startFace 24170; } - OUTLET + outlet { type patch; - nFaces 19; - startFace 3861; + nFaces 57; + startFace 24200; } - frontAndBackPlanes + upperWall + { + type wall; + nFaces 223; + startFace 24257; + } + lowerWall + { + type wall; + nFaces 250; + startFace 24480; + } + frontAndBack { type empty; - nFaces 3762; - startFace 3880; + nFaces 24450; + startFace 24730; } ) diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/thermophysicalProperties similarity index 100% rename from tutorials/compressible/rhoPisoFoam/ras/pipe/constant/thermophysicalProperties rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/thermophysicalProperties diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/turbulenceProperties b/tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/turbulenceProperties similarity index 100% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/turbulenceProperties rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/constant/turbulenceProperties diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/controlDict b/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/controlDict similarity index 92% rename from tutorials/compressible/rhoPisoFoam/ras/pipe/system/controlDict rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/system/controlDict index 57a0bc712..dbd153965 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/controlDict +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/controlDict @@ -15,12 +15,10 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -application rhoPisoFoam; +application realFluidPisoFoam; startFrom latestTime; -//startTime 0; - stopAt endTime; endTime 0.5; @@ -29,7 +27,7 @@ deltaT 1e-5; writeControl runTime; -writeInterval 1e-2; +writeInterval 1e-2; purgeWrite 0; @@ -45,7 +43,7 @@ timePrecision 10; adjustTimeStep yes; -maxCo 0.5; +maxCo 0.5; maxDeltaT 1e-2; diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSchemes b/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSchemes similarity index 98% rename from tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSchemes rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSchemes index 7b89eff9d..4610afa95 100644 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSchemes +++ b/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSchemes @@ -28,7 +28,7 @@ gradSchemes divSchemes { - default none; + default Gauss linear; div(phi,U) Gauss limitedLinearV 1; div(phid,p) Gauss limitedLinear 1; div(phiU,p) Gauss linear; diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSolution b/tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSolution similarity index 100% rename from tutorials/compressible/rhoPisoFoam/ras/pipe/system/fvSolution rename to tutorials/compressible/realFluidPisoFoam/ras/backStep/system/fvSolution diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/T b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/T new file mode 100644 index 000000000..079d97f63 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/T @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + fixedWalls + { + type zeroGradient; + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/U b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/U new file mode 100644 index 000000000..71dda0db9 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/U @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + movingWall + { + type fixedValue; + // Field Value + value uniform (1 0 0); + } + + fixedWalls + { + type fixedValue; + // Field Value + value uniform (0 0 0); + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/epsilon b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/epsilon new file mode 100644 index 000000000..70315bc76 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/epsilon @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -3 0 0 0 0 ]; + +internalField uniform 0.000765; + +boundaryField +{ + movingWall + { + type compressible::epsilonWallFunction; + value uniform 0; + } + + fixedWalls + { + type compressible::epsilonWallFunction; + value uniform 0; + } + + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/k b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/k new file mode 100644 index 000000000..ed80a0488 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/k @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.00325; + +boundaryField +{ + movingWall + { + type compressible::kqRWallFunction; + value uniform 0.00325; + } + fixedWalls + { + type compressible::kqRWallFunction; + value uniform 0.00325; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/omega b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/omega new file mode 100644 index 000000000..63e1b3d75 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/omega @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object omega; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 -1 0 0 0 0]; + +internalField uniform 2.6; + +boundaryField +{ + movingWall + { + type compressible::omegaWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 2.6; + } + fixedWalls + { + type compressible::omegaWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 2.6; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/p b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/p new file mode 100644 index 000000000..1771a7ded --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0.org/p @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 100000; + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + fixedWalls + { + type zeroGradient; + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/T b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/T new file mode 100644 index 000000000..079d97f63 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/T @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + fixedWalls + { + type zeroGradient; + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/U b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/U new file mode 100644 index 000000000..71dda0db9 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/U @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + movingWall + { + type fixedValue; + // Field Value + value uniform (1 0 0); + } + + fixedWalls + { + type fixedValue; + // Field Value + value uniform (0 0 0); + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/epsilon b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/epsilon new file mode 100644 index 000000000..70315bc76 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/epsilon @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -3 0 0 0 0 ]; + +internalField uniform 0.000765; + +boundaryField +{ + movingWall + { + type compressible::epsilonWallFunction; + value uniform 0; + } + + fixedWalls + { + type compressible::epsilonWallFunction; + value uniform 0; + } + + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/k b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/k new file mode 100644 index 000000000..ed80a0488 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/k @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.00325; + +boundaryField +{ + movingWall + { + type compressible::kqRWallFunction; + value uniform 0.00325; + } + fixedWalls + { + type compressible::kqRWallFunction; + value uniform 0.00325; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/omega b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/omega new file mode 100644 index 000000000..63e1b3d75 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/omega @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object omega; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 -1 0 0 0 0]; + +internalField uniform 2.6; + +boundaryField +{ + movingWall + { + type compressible::omegaWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 2.6; + } + fixedWalls + { + type compressible::omegaWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 2.6; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/p b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/p new file mode 100644 index 000000000..1771a7ded --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/0/p @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 100000; + +boundaryField +{ + movingWall + { + type zeroGradient; + } + + fixedWalls + { + type zeroGradient; + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/Allrun b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/Allrun new file mode 100755 index 000000000..30b386dfe --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/Allrun @@ -0,0 +1,9 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +runApplication blockMesh +runApplication `getApplication` diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/README b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/README similarity index 97% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/README rename to tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/README index 480e7610e..8aec44ea4 100644 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/README +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/README @@ -14,7 +14,7 @@ Important files in this case: 1. fvSolution -PISO subdict --> see the realFluid --> this must be true (see modification in the pEqn of rhoPisoFoam) +PISO subdict --> see the realFluid --> this must be true (see modification in the pEqn of realFluidPisoFoam) 2. controlDict: diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/RASProperties b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/RASProperties similarity index 100% rename from tutorials/compressible/rhoPisoFoam/ras/pipe/constant/RASProperties rename to tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/RASProperties diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/blockMeshDict b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/blockMeshDict new file mode 100644 index 000000000..0d902e2a3 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/blockMeshDict @@ -0,0 +1,75 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.1; + +vertices +( + (0 0 0) + (1 0 0) + (1 1 0) + (0 1 0) + (0 0 0.1) + (1 0 0.1) + (1 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + movingWall + { + type wall; + faces + ( + (3 7 6 2) + ); + } + fixedWalls + { + type wall; + faces + ( + (0 4 7 3) + (2 6 5 1) + (1 5 4 0) + ); + } + frontAndBack + { + type empty; + faces + ( + (0 3 2 1) + (4 5 6 7) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/boundary b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/boundary new file mode 100644 index 000000000..fe2671f34 --- /dev/null +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/polyMesh/boundary @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.1 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +3 +( + movingWall + { + type wall; + nFaces 20; + startFace 760; + } + fixedWalls + { + type wall; + nFaces 60; + startFace 780; + } + frontAndBack + { + type empty; + nFaces 800; + startFace 840; + } +) + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/thermophysicalProperties b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/thermophysicalProperties similarity index 100% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/thermophysicalProperties rename to tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/thermophysicalProperties diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/turbulenceProperties b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/turbulenceProperties similarity index 100% rename from tutorials/compressible/rhoPisoFoam/ras/pipe/constant/turbulenceProperties rename to tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/constant/turbulenceProperties diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/controlDict b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/controlDict similarity index 89% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/controlDict rename to tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/controlDict index 2666107ee..57bf40c09 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/controlDict +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/controlDict @@ -15,21 +15,20 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -application rhoPisoFoam; +application realFluidPisoFoam; startFrom latestTime; -//startTime 0; - stopAt endTime; -endTime 2.5; +endTime 0.5; deltaT 1e-5; writeControl runTime; -writeInterval 1e-2; +writeInterval 0.1ls +; purgeWrite 0; @@ -45,12 +44,13 @@ timePrecision 10; adjustTimeStep yes; -maxCo 0.5; +maxCo 0.5; maxDeltaT 1e-3; runTimeModifiable yes; +//CL: load libraries need for the water properties libs ( "libIAPWSThermo.so" diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSchemes b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSchemes similarity index 98% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSchemes rename to tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSchemes index 1e9cfe831..f3e0e04b1 100755 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSchemes +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSchemes @@ -28,7 +28,7 @@ gradSchemes divSchemes { - default none; + default Gauss linear; div(phi,U) Gauss limitedLinearV 0.5; div(phid,p) Gauss limitedLinear 0.5; div(phiU,p) Gauss limitedLinear 0.5; diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSolution b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSolution similarity index 100% rename from tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/system/fvSolution rename to tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/fvSolution diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/.RASProperties.swp b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/.RASProperties.swp deleted file mode 100755 index 35d19163d72cd777282a769cc5e7ddd173d27c88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2!EVz)5QeAR5Cp1n;x>evt7Ow4Kx%|U2#SP62%@3oV5zK~4Y+c=mhBKyQg{w{ z0^rm)pcllI10dc49)Vfg0fUNCpkgIB9{ptcMUernxb zDV5<>4IuIYJu&e)&50&5n3H3spQnbR8>*n)ZFWRk%c1D0I1zXB?yj%4V;y*|iEdvO zt`6cv28p=W+_)R*P(_KS;v=lWDNKL~98RDFm+EWu%?7wwzJTXe?jN4UQ6|6ym;e)C z0!)AjFaajO1pZ3`Nw@?r=wv7I)1A-zr9b-omOCcE1egF5U;<2l2`~XBzyz286JP>N z;208+eSoj003MvC&C~z?v)}*wX8|6PmPrR^s4jqnq>m+l52W{`ebP(P9!ZjJkgk)y zlh-%W7t&|a0qGs-E$I#EHOZ{EMdHQ;m;e)C0!)AjFaajO1en0_Cm;k`i)ttY0ST#k zIB97$7{q9r9t;`)$tZG0z6xBG22W;Dsu}L+zVg!;U3@w80vS=h+1J8ew68rdYiMUj zxrrGe{#LKt02A`HD-%x#W?Y^XHkY$G*Ozg2AjH1snlu?rvblkdhBCL6vFmwR_=$?* z+zsp1S_7VeDVlD3z5?5-EUsAsre@E!Elh_Ulz|tH{QNNKTsm>o%QW?~ZN${Di9x^c z=oGhjU251y zPx-%gIK|nH*0J|krFXcYM-hGaTJ4+I)7p3R(}KD2yEbcucsBeOeq!$XYgMqdx{8&# JiIs|F!w+~6`P2Xa diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/cellZones b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/cellZones deleted file mode 100755 index 965611ab5..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/cellZones +++ /dev/null @@ -1,21 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class regIOobject; - location "constant/polyMesh"; - object cellZones; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -0 -() - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faceZones b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faceZones deleted file mode 100755 index 6469973da..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faceZones +++ /dev/null @@ -1,21 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class regIOobject; - location "constant/polyMesh"; - object faceZones; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -0 -() - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faces b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faces deleted file mode 100755 index d2a85b7dd..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/faces +++ /dev/null @@ -1,7666 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class faceList; - location "constant/polyMesh"; - object faces; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -7642 -( -4(3 2003 2002 2) -4(3 1 2001 2003) -4(5 2005 2004 4) -4(3 2003 2005 5) -4(7 2007 2006 6) -4(5 2005 2007 7) -4(9 2009 2008 8) -4(7 2007 2009 9) -4(11 2011 2010 10) -4(9 2009 2011 11) -4(13 2013 2012 12) -4(11 2011 2013 13) -4(15 2015 2014 14) -4(13 2013 2015 15) -4(17 2017 2016 16) -4(15 2015 2017 17) -4(19 2019 2018 18) -4(17 2017 2019 19) -4(21 2021 2020 20) -4(19 2019 2021 21) -4(23 2023 2022 22) -4(21 2021 2023 23) -4(25 2025 2024 24) -4(23 2023 2025 25) -4(27 2027 2026 26) -4(25 2025 2027 27) -4(29 2029 2028 28) -4(27 2027 2029 29) -4(31 2031 2030 30) -4(29 2029 2031 31) -4(33 2033 2032 32) -4(31 2031 2033 33) -4(35 2035 2034 34) -4(33 2033 2035 35) -4(37 2037 2036 36) -4(35 2035 2037 37) -4(37 2037 2039 39) -4(3 41 2041 2003) -4(40 2040 2041 41) -4(5 42 2042 2005) -4(41 2041 2042 42) -4(7 43 2043 2007) -4(42 2042 2043 43) -4(9 44 2044 2009) -4(43 2043 2044 44) -4(11 45 2045 2011) -4(44 2044 2045 45) -4(13 46 2046 2013) -4(45 2045 2046 46) -4(15 47 2047 2015) -4(46 2046 2047 47) -4(17 48 2048 2017) -4(47 2047 2048 48) -4(19 49 2049 2019) -4(48 2048 2049 49) -4(21 50 2050 2021) -4(49 2049 2050 50) -4(23 51 2051 2023) -4(50 2050 2051 51) -4(25 52 2052 2025) -4(51 2051 2052 52) -4(27 53 2053 2027) -4(52 2052 2053 53) -4(29 54 2054 2029) -4(53 2053 2054 54) -4(31 55 2055 2031) -4(54 2054 2055 55) -4(33 56 2056 2033) -4(55 2055 2056 56) -4(35 57 2057 2035) -4(56 2056 2057 57) -4(37 58 2058 2037) -4(57 2057 2058 58) -4(58 2058 2059 59) -4(41 61 2061 2041) -4(60 2060 2061 61) -4(42 62 2062 2042) -4(61 2061 2062 62) -4(43 63 2063 2043) -4(62 2062 2063 63) -4(44 64 2064 2044) -4(63 2063 2064 64) -4(45 65 2065 2045) -4(64 2064 2065 65) -4(46 66 2066 2046) -4(65 2065 2066 66) -4(47 67 2067 2047) -4(66 2066 2067 67) -4(48 68 2068 2048) -4(67 2067 2068 68) -4(49 69 2069 2049) -4(68 2068 2069 69) -4(50 70 2070 2050) -4(69 2069 2070 70) -4(51 71 2071 2051) -4(70 2070 2071 71) -4(52 72 2072 2052) -4(71 2071 2072 72) -4(53 73 2073 2053) -4(72 2072 2073 73) -4(54 74 2074 2054) -4(73 2073 2074 74) -4(55 75 2075 2055) -4(74 2074 2075 75) -4(56 76 2076 2056) -4(75 2075 2076 76) -4(57 77 2077 2057) -4(76 2076 2077 77) -4(58 78 2078 2058) -4(77 2077 2078 78) -4(78 2078 2079 79) -4(61 81 2081 2061) -4(80 2080 2081 81) -4(62 82 2082 2062) -4(81 2081 2082 82) -4(63 83 2083 2063) -4(82 2082 2083 83) -4(64 84 2084 2064) -4(83 2083 2084 84) -4(65 85 2085 2065) -4(84 2084 2085 85) -4(66 86 2086 2066) -4(85 2085 2086 86) -4(67 87 2087 2067) -4(86 2086 2087 87) -4(68 88 2088 2068) -4(87 2087 2088 88) -4(69 89 2089 2069) -4(88 2088 2089 89) -4(70 90 2090 2070) -4(89 2089 2090 90) -4(71 91 2091 2071) -4(90 2090 2091 91) -4(72 92 2092 2072) -4(91 2091 2092 92) -4(73 93 2093 2073) -4(92 2092 2093 93) -4(74 94 2094 2074) -4(93 2093 2094 94) -4(75 95 2095 2075) -4(94 2094 2095 95) -4(76 96 2096 2076) -4(95 2095 2096 96) -4(77 97 2097 2077) -4(96 2096 2097 97) -4(78 98 2098 2078) -4(97 2097 2098 98) -4(98 2098 2099 99) -4(81 101 2101 2081) -4(100 2100 2101 101) -4(82 102 2102 2082) -4(101 2101 2102 102) -4(83 103 2103 2083) -4(102 2102 2103 103) -4(84 104 2104 2084) -4(103 2103 2104 104) -4(85 105 2105 2085) -4(104 2104 2105 105) -4(86 106 2106 2086) -4(105 2105 2106 106) -4(87 107 2107 2087) -4(106 2106 2107 107) -4(88 108 2108 2088) -4(107 2107 2108 108) -4(89 109 2109 2089) -4(108 2108 2109 109) -4(90 110 2110 2090) -4(109 2109 2110 110) -4(91 111 2111 2091) -4(110 2110 2111 111) -4(92 112 2112 2092) -4(111 2111 2112 112) -4(93 113 2113 2093) -4(112 2112 2113 113) -4(94 114 2114 2094) -4(113 2113 2114 114) -4(95 115 2115 2095) -4(114 2114 2115 115) -4(96 116 2116 2096) -4(115 2115 2116 116) -4(97 117 2117 2097) -4(116 2116 2117 117) -4(98 118 2118 2098) -4(117 2117 2118 118) -4(118 2118 2119 119) -4(101 121 2121 2101) -4(120 2120 2121 121) -4(102 122 2122 2102) -4(121 2121 2122 122) -4(103 123 2123 2103) -4(122 2122 2123 123) -4(104 124 2124 2104) -4(123 2123 2124 124) -4(105 125 2125 2105) -4(124 2124 2125 125) -4(106 126 2126 2106) -4(125 2125 2126 126) -4(107 127 2127 2107) -4(126 2126 2127 127) -4(108 128 2128 2108) -4(127 2127 2128 128) -4(109 129 2129 2109) -4(128 2128 2129 129) -4(110 130 2130 2110) -4(129 2129 2130 130) -4(111 131 2131 2111) -4(130 2130 2131 131) -4(112 132 2132 2112) -4(131 2131 2132 132) -4(113 133 2133 2113) -4(132 2132 2133 133) -4(114 134 2134 2114) -4(133 2133 2134 134) -4(115 135 2135 2115) -4(134 2134 2135 135) -4(116 136 2136 2116) -4(135 2135 2136 136) -4(117 137 2137 2117) -4(136 2136 2137 137) -4(118 138 2138 2118) -4(137 2137 2138 138) -4(138 2138 2139 139) -4(121 141 2141 2121) -4(140 2140 2141 141) -4(122 142 2142 2122) -4(141 2141 2142 142) -4(123 143 2143 2123) -4(142 2142 2143 143) -4(124 144 2144 2124) -4(143 2143 2144 144) -4(125 145 2145 2125) -4(144 2144 2145 145) -4(126 146 2146 2126) -4(145 2145 2146 146) -4(127 147 2147 2127) -4(146 2146 2147 147) -4(128 148 2148 2128) -4(147 2147 2148 148) -4(129 149 2149 2129) -4(148 2148 2149 149) -4(130 150 2150 2130) -4(149 2149 2150 150) -4(131 151 2151 2131) -4(150 2150 2151 151) -4(132 152 2152 2132) -4(151 2151 2152 152) -4(133 153 2153 2133) -4(152 2152 2153 153) -4(134 154 2154 2134) -4(153 2153 2154 154) -4(135 155 2155 2135) -4(154 2154 2155 155) -4(136 156 2156 2136) -4(155 2155 2156 156) -4(137 157 2157 2137) -4(156 2156 2157 157) -4(138 158 2158 2138) -4(157 2157 2158 158) -4(158 2158 2159 159) -4(141 161 2161 2141) -4(160 2160 2161 161) -4(142 162 2162 2142) -4(161 2161 2162 162) -4(143 163 2163 2143) -4(162 2162 2163 163) -4(144 164 2164 2144) -4(163 2163 2164 164) -4(145 165 2165 2145) -4(164 2164 2165 165) -4(146 166 2166 2146) -4(165 2165 2166 166) -4(147 167 2167 2147) -4(166 2166 2167 167) -4(148 168 2168 2148) -4(167 2167 2168 168) -4(149 169 2169 2149) -4(168 2168 2169 169) -4(150 170 2170 2150) -4(169 2169 2170 170) -4(151 171 2171 2151) -4(170 2170 2171 171) -4(152 172 2172 2152) -4(171 2171 2172 172) -4(153 173 2173 2153) -4(172 2172 2173 173) -4(154 174 2174 2154) -4(173 2173 2174 174) -4(155 175 2175 2155) -4(174 2174 2175 175) -4(156 176 2176 2156) -4(175 2175 2176 176) -4(157 177 2177 2157) -4(176 2176 2177 177) -4(158 178 2178 2158) -4(177 2177 2178 178) -4(178 2178 2179 179) -4(161 181 2181 2161) -4(180 2180 2181 181) -4(162 182 2182 2162) -4(181 2181 2182 182) -4(163 183 2183 2163) -4(182 2182 2183 183) -4(164 184 2184 2164) -4(183 2183 2184 184) -4(165 185 2185 2165) -4(184 2184 2185 185) -4(166 186 2186 2166) -4(185 2185 2186 186) -4(167 187 2187 2167) -4(186 2186 2187 187) -4(168 188 2188 2168) -4(187 2187 2188 188) -4(169 189 2189 2169) -4(188 2188 2189 189) -4(170 190 2190 2170) -4(189 2189 2190 190) -4(171 191 2191 2171) -4(190 2190 2191 191) -4(172 192 2192 2172) -4(191 2191 2192 192) -4(173 193 2193 2173) -4(192 2192 2193 193) -4(174 194 2194 2174) -4(193 2193 2194 194) -4(175 195 2195 2175) -4(194 2194 2195 195) -4(176 196 2196 2176) -4(195 2195 2196 196) -4(177 197 2197 2177) -4(196 2196 2197 197) -4(178 198 2198 2178) -4(197 2197 2198 198) -4(198 2198 2199 199) -4(181 201 2201 2181) -4(200 2200 2201 201) -4(182 202 2202 2182) -4(201 2201 2202 202) -4(183 203 2203 2183) -4(202 2202 2203 203) -4(184 204 2204 2184) -4(203 2203 2204 204) -4(185 205 2205 2185) -4(204 2204 2205 205) -4(186 206 2206 2186) -4(205 2205 2206 206) -4(187 207 2207 2187) -4(206 2206 2207 207) -4(188 208 2208 2188) -4(207 2207 2208 208) -4(189 209 2209 2189) -4(208 2208 2209 209) -4(190 210 2210 2190) -4(209 2209 2210 210) -4(191 211 2211 2191) -4(210 2210 2211 211) -4(192 212 2212 2192) -4(211 2211 2212 212) -4(193 213 2213 2193) -4(212 2212 2213 213) -4(194 214 2214 2194) -4(213 2213 2214 214) -4(195 215 2215 2195) -4(214 2214 2215 215) -4(196 216 2216 2196) -4(215 2215 2216 216) -4(197 217 2217 2197) -4(216 2216 2217 217) -4(198 218 2218 2198) -4(217 2217 2218 218) -4(218 2218 2219 219) -4(201 221 2221 2201) -4(220 2220 2221 221) -4(202 222 2222 2202) -4(221 2221 2222 222) -4(203 223 2223 2203) -4(222 2222 2223 223) -4(204 224 2224 2204) -4(223 2223 2224 224) -4(205 225 2225 2205) -4(224 2224 2225 225) -4(206 226 2226 2206) -4(225 2225 2226 226) -4(207 227 2227 2207) -4(226 2226 2227 227) -4(208 228 2228 2208) -4(227 2227 2228 228) -4(209 229 2229 2209) -4(228 2228 2229 229) -4(210 230 2230 2210) -4(229 2229 2230 230) -4(211 231 2231 2211) -4(230 2230 2231 231) -4(212 232 2232 2212) -4(231 2231 2232 232) -4(213 233 2233 2213) -4(232 2232 2233 233) -4(214 234 2234 2214) -4(233 2233 2234 234) -4(215 235 2235 2215) -4(234 2234 2235 235) -4(216 236 2236 2216) -4(235 2235 2236 236) -4(217 237 2237 2217) -4(236 2236 2237 237) -4(218 238 2238 2218) -4(237 2237 2238 238) -4(238 2238 2239 239) -4(221 241 2241 2221) -4(240 2240 2241 241) -4(222 242 2242 2222) -4(241 2241 2242 242) -4(223 243 2243 2223) -4(242 2242 2243 243) -4(224 244 2244 2224) -4(243 2243 2244 244) -4(225 245 2245 2225) -4(244 2244 2245 245) -4(226 246 2246 2226) -4(245 2245 2246 246) -4(227 247 2247 2227) -4(246 2246 2247 247) -4(228 248 2248 2228) -4(247 2247 2248 248) -4(229 249 2249 2229) -4(248 2248 2249 249) -4(230 250 2250 2230) -4(249 2249 2250 250) -4(231 251 2251 2231) -4(250 2250 2251 251) -4(232 252 2252 2232) -4(251 2251 2252 252) -4(233 253 2253 2233) -4(252 2252 2253 253) -4(234 254 2254 2234) -4(253 2253 2254 254) -4(235 255 2255 2235) -4(254 2254 2255 255) -4(236 256 2256 2236) -4(255 2255 2256 256) -4(237 257 2257 2237) -4(256 2256 2257 257) -4(238 258 2258 2238) -4(257 2257 2258 258) -4(258 2258 2259 259) -4(241 261 2261 2241) -4(260 2260 2261 261) -4(242 262 2262 2242) -4(261 2261 2262 262) -4(243 263 2263 2243) -4(262 2262 2263 263) -4(244 264 2264 2244) -4(263 2263 2264 264) -4(245 265 2265 2245) -4(264 2264 2265 265) -4(246 266 2266 2246) -4(265 2265 2266 266) -4(247 267 2267 2247) -4(266 2266 2267 267) -4(248 268 2268 2248) -4(267 2267 2268 268) -4(249 269 2269 2249) -4(268 2268 2269 269) -4(250 270 2270 2250) -4(269 2269 2270 270) -4(251 271 2271 2251) -4(270 2270 2271 271) -4(252 272 2272 2252) -4(271 2271 2272 272) -4(253 273 2273 2253) -4(272 2272 2273 273) -4(254 274 2274 2254) -4(273 2273 2274 274) -4(255 275 2275 2255) -4(274 2274 2275 275) -4(256 276 2276 2256) -4(275 2275 2276 276) -4(257 277 2277 2257) -4(276 2276 2277 277) -4(258 278 2278 2258) -4(277 2277 2278 278) -4(278 2278 2279 279) -4(261 281 2281 2261) -4(280 2280 2281 281) -4(262 282 2282 2262) -4(281 2281 2282 282) -4(263 283 2283 2263) -4(282 2282 2283 283) -4(264 284 2284 2264) -4(283 2283 2284 284) -4(265 285 2285 2265) -4(284 2284 2285 285) -4(266 286 2286 2266) -4(285 2285 2286 286) -4(267 287 2287 2267) -4(286 2286 2287 287) -4(268 288 2288 2268) -4(287 2287 2288 288) -4(269 289 2289 2269) -4(288 2288 2289 289) -4(270 290 2290 2270) -4(289 2289 2290 290) -4(271 291 2291 2271) -4(290 2290 2291 291) -4(272 292 2292 2272) -4(291 2291 2292 292) -4(273 293 2293 2273) -4(292 2292 2293 293) -4(274 294 2294 2274) -4(293 2293 2294 294) -4(275 295 2295 2275) -4(294 2294 2295 295) -4(276 296 2296 2276) -4(295 2295 2296 296) -4(277 297 2297 2277) -4(296 2296 2297 297) -4(278 298 2298 2278) -4(297 2297 2298 298) -4(298 2298 2299 299) -4(281 301 2301 2281) -4(300 2300 2301 301) -4(282 302 2302 2282) -4(301 2301 2302 302) -4(283 303 2303 2283) -4(302 2302 2303 303) -4(284 304 2304 2284) -4(303 2303 2304 304) -4(285 305 2305 2285) -4(304 2304 2305 305) -4(286 306 2306 2286) -4(305 2305 2306 306) -4(287 307 2307 2287) -4(306 2306 2307 307) -4(288 308 2308 2288) -4(307 2307 2308 308) -4(289 309 2309 2289) -4(308 2308 2309 309) -4(290 310 2310 2290) -4(309 2309 2310 310) -4(291 311 2311 2291) -4(310 2310 2311 311) -4(292 312 2312 2292) -4(311 2311 2312 312) -4(293 313 2313 2293) -4(312 2312 2313 313) -4(294 314 2314 2294) -4(313 2313 2314 314) -4(295 315 2315 2295) -4(314 2314 2315 315) -4(296 316 2316 2296) -4(315 2315 2316 316) -4(297 317 2317 2297) -4(316 2316 2317 317) -4(298 318 2318 2298) -4(317 2317 2318 318) -4(318 2318 2319 319) -4(301 321 2321 2301) -4(320 2320 2321 321) -4(302 322 2322 2302) -4(321 2321 2322 322) -4(303 323 2323 2303) -4(322 2322 2323 323) -4(304 324 2324 2304) -4(323 2323 2324 324) -4(305 325 2325 2305) -4(324 2324 2325 325) -4(306 326 2326 2306) -4(325 2325 2326 326) -4(307 327 2327 2307) -4(326 2326 2327 327) -4(308 328 2328 2308) -4(327 2327 2328 328) -4(309 329 2329 2309) -4(328 2328 2329 329) -4(310 330 2330 2310) -4(329 2329 2330 330) -4(311 331 2331 2311) -4(330 2330 2331 331) -4(312 332 2332 2312) -4(331 2331 2332 332) -4(313 333 2333 2313) -4(332 2332 2333 333) -4(314 334 2334 2314) -4(333 2333 2334 334) -4(315 335 2335 2315) -4(334 2334 2335 335) -4(316 336 2336 2316) -4(335 2335 2336 336) -4(317 337 2337 2317) -4(336 2336 2337 337) -4(318 338 2338 2318) -4(337 2337 2338 338) -4(338 2338 2339 339) -4(321 341 2341 2321) -4(340 2340 2341 341) -4(322 342 2342 2322) -4(341 2341 2342 342) -4(323 343 2343 2323) -4(342 2342 2343 343) -4(324 344 2344 2324) -4(343 2343 2344 344) -4(325 345 2345 2325) -4(344 2344 2345 345) -4(326 346 2346 2326) -4(345 2345 2346 346) -4(327 347 2347 2327) -4(346 2346 2347 347) -4(328 348 2348 2328) -4(347 2347 2348 348) -4(329 349 2349 2329) -4(348 2348 2349 349) -4(330 350 2350 2330) -4(349 2349 2350 350) -4(331 351 2351 2331) -4(350 2350 2351 351) -4(332 352 2352 2332) -4(351 2351 2352 352) -4(333 353 2353 2333) -4(352 2352 2353 353) -4(334 354 2354 2334) -4(353 2353 2354 354) -4(335 355 2355 2335) -4(354 2354 2355 355) -4(336 356 2356 2336) -4(355 2355 2356 356) -4(337 357 2357 2337) -4(356 2356 2357 357) -4(338 358 2358 2338) -4(357 2357 2358 358) -4(358 2358 2359 359) -4(341 361 2361 2341) -4(360 2360 2361 361) -4(342 362 2362 2342) -4(361 2361 2362 362) -4(343 363 2363 2343) -4(362 2362 2363 363) -4(344 364 2364 2344) -4(363 2363 2364 364) -4(345 365 2365 2345) -4(364 2364 2365 365) -4(346 366 2366 2346) -4(365 2365 2366 366) -4(347 367 2367 2347) -4(366 2366 2367 367) -4(348 368 2368 2348) -4(367 2367 2368 368) -4(349 369 2369 2349) -4(368 2368 2369 369) -4(350 370 2370 2350) -4(369 2369 2370 370) -4(351 371 2371 2351) -4(370 2370 2371 371) -4(352 372 2372 2352) -4(371 2371 2372 372) -4(353 373 2373 2353) -4(372 2372 2373 373) -4(354 374 2374 2354) -4(373 2373 2374 374) -4(355 375 2375 2355) -4(374 2374 2375 375) -4(356 376 2376 2356) -4(375 2375 2376 376) -4(357 377 2377 2357) -4(376 2376 2377 377) -4(358 378 2378 2358) -4(377 2377 2378 378) -4(378 2378 2379 379) -4(361 381 2381 2361) -4(380 2380 2381 381) -4(362 382 2382 2362) -4(381 2381 2382 382) -4(363 383 2383 2363) -4(382 2382 2383 383) -4(364 384 2384 2364) -4(383 2383 2384 384) -4(365 385 2385 2365) -4(384 2384 2385 385) -4(366 386 2386 2366) -4(385 2385 2386 386) -4(367 387 2387 2367) -4(386 2386 2387 387) -4(368 388 2388 2368) -4(387 2387 2388 388) -4(369 389 2389 2369) -4(388 2388 2389 389) -4(370 390 2390 2370) -4(389 2389 2390 390) -4(371 391 2391 2371) -4(390 2390 2391 391) -4(372 392 2392 2372) -4(391 2391 2392 392) -4(373 393 2393 2373) -4(392 2392 2393 393) -4(374 394 2394 2374) -4(393 2393 2394 394) -4(375 395 2395 2375) -4(394 2394 2395 395) -4(376 396 2396 2376) -4(395 2395 2396 396) -4(377 397 2397 2377) -4(396 2396 2397 397) -4(378 398 2398 2378) -4(397 2397 2398 398) -4(398 2398 2399 399) -4(381 401 2401 2381) -4(400 2400 2401 401) -4(382 402 2402 2382) -4(401 2401 2402 402) -4(383 403 2403 2383) -4(402 2402 2403 403) -4(384 404 2404 2384) -4(403 2403 2404 404) -4(385 405 2405 2385) -4(404 2404 2405 405) -4(386 406 2406 2386) -4(405 2405 2406 406) -4(387 407 2407 2387) -4(406 2406 2407 407) -4(388 408 2408 2388) -4(407 2407 2408 408) -4(389 409 2409 2389) -4(408 2408 2409 409) -4(390 410 2410 2390) -4(409 2409 2410 410) -4(391 411 2411 2391) -4(410 2410 2411 411) -4(392 412 2412 2392) -4(411 2411 2412 412) -4(393 413 2413 2393) -4(412 2412 2413 413) -4(394 414 2414 2394) -4(413 2413 2414 414) -4(395 415 2415 2395) -4(414 2414 2415 415) -4(396 416 2416 2396) -4(415 2415 2416 416) -4(397 417 2417 2397) -4(416 2416 2417 417) -4(398 418 2418 2398) -4(417 2417 2418 418) -4(418 2418 2419 419) -4(401 421 2421 2401) -4(420 2420 2421 421) -4(402 422 2422 2402) -4(421 2421 2422 422) -4(403 423 2423 2403) -4(422 2422 2423 423) -4(404 424 2424 2404) -4(423 2423 2424 424) -4(405 425 2425 2405) -4(424 2424 2425 425) -4(406 426 2426 2406) -4(425 2425 2426 426) -4(407 427 2427 2407) -4(426 2426 2427 427) -4(408 428 2428 2408) -4(427 2427 2428 428) -4(409 429 2429 2409) -4(428 2428 2429 429) -4(410 430 2430 2410) -4(429 2429 2430 430) -4(411 431 2431 2411) -4(430 2430 2431 431) -4(412 432 2432 2412) -4(431 2431 2432 432) -4(413 433 2433 2413) -4(432 2432 2433 433) -4(414 434 2434 2414) -4(433 2433 2434 434) -4(415 435 2435 2415) -4(434 2434 2435 435) -4(416 436 2436 2416) -4(435 2435 2436 436) -4(417 437 2437 2417) -4(436 2436 2437 437) -4(418 438 2438 2418) -4(437 2437 2438 438) -4(438 2438 2439 439) -4(421 441 2441 2421) -4(440 2440 2441 441) -4(422 442 2442 2422) -4(441 2441 2442 442) -4(423 443 2443 2423) -4(442 2442 2443 443) -4(424 444 2444 2424) -4(443 2443 2444 444) -4(425 445 2445 2425) -4(444 2444 2445 445) -4(426 446 2446 2426) -4(445 2445 2446 446) -4(427 447 2447 2427) -4(446 2446 2447 447) -4(428 448 2448 2428) -4(447 2447 2448 448) -4(429 449 2449 2429) -4(448 2448 2449 449) -4(430 450 2450 2430) -4(449 2449 2450 450) -4(431 451 2451 2431) -4(450 2450 2451 451) -4(432 452 2452 2432) -4(451 2451 2452 452) -4(433 453 2453 2433) -4(452 2452 2453 453) -4(434 454 2454 2434) -4(453 2453 2454 454) -4(435 455 2455 2435) -4(454 2454 2455 455) -4(436 456 2456 2436) -4(455 2455 2456 456) -4(437 457 2457 2437) -4(456 2456 2457 457) -4(438 458 2458 2438) -4(457 2457 2458 458) -4(458 2458 2459 459) -4(441 461 2461 2441) -4(460 2460 2461 461) -4(442 462 2462 2442) -4(461 2461 2462 462) -4(443 463 2463 2443) -4(462 2462 2463 463) -4(444 464 2464 2444) -4(463 2463 2464 464) -4(445 465 2465 2445) -4(464 2464 2465 465) -4(446 466 2466 2446) -4(465 2465 2466 466) -4(447 467 2467 2447) -4(466 2466 2467 467) -4(448 468 2468 2448) -4(467 2467 2468 468) -4(449 469 2469 2449) -4(468 2468 2469 469) -4(450 470 2470 2450) -4(469 2469 2470 470) -4(451 471 2471 2451) -4(470 2470 2471 471) -4(452 472 2472 2452) -4(471 2471 2472 472) -4(453 473 2473 2453) -4(472 2472 2473 473) -4(454 474 2474 2454) -4(473 2473 2474 474) -4(455 475 2475 2455) -4(474 2474 2475 475) -4(456 476 2476 2456) -4(475 2475 2476 476) -4(457 477 2477 2457) -4(476 2476 2477 477) -4(458 478 2478 2458) -4(477 2477 2478 478) -4(478 2478 2479 479) -4(461 481 2481 2461) -4(480 2480 2481 481) -4(462 482 2482 2462) -4(481 2481 2482 482) -4(463 483 2483 2463) -4(482 2482 2483 483) -4(464 484 2484 2464) -4(483 2483 2484 484) -4(465 485 2485 2465) -4(484 2484 2485 485) -4(466 486 2486 2466) -4(485 2485 2486 486) -4(467 487 2487 2467) -4(486 2486 2487 487) -4(468 488 2488 2468) -4(487 2487 2488 488) -4(469 489 2489 2469) -4(488 2488 2489 489) -4(470 490 2490 2470) -4(489 2489 2490 490) -4(471 491 2491 2471) -4(490 2490 2491 491) -4(472 492 2492 2472) -4(491 2491 2492 492) -4(473 493 2493 2473) -4(492 2492 2493 493) -4(474 494 2494 2474) -4(493 2493 2494 494) -4(475 495 2495 2475) -4(494 2494 2495 495) -4(476 496 2496 2476) -4(495 2495 2496 496) -4(477 497 2497 2477) -4(496 2496 2497 497) -4(478 498 2498 2478) -4(497 2497 2498 498) -4(498 2498 2499 499) -4(481 501 2501 2481) -4(500 2500 2501 501) -4(482 502 2502 2482) -4(501 2501 2502 502) -4(483 503 2503 2483) -4(502 2502 2503 503) -4(484 504 2504 2484) -4(503 2503 2504 504) -4(485 505 2505 2485) -4(504 2504 2505 505) -4(486 506 2506 2486) -4(505 2505 2506 506) -4(487 507 2507 2487) -4(506 2506 2507 507) -4(488 508 2508 2488) -4(507 2507 2508 508) -4(489 509 2509 2489) -4(508 2508 2509 509) -4(490 510 2510 2490) -4(509 2509 2510 510) -4(491 511 2511 2491) -4(510 2510 2511 511) -4(492 512 2512 2492) -4(511 2511 2512 512) -4(493 513 2513 2493) -4(512 2512 2513 513) -4(494 514 2514 2494) -4(513 2513 2514 514) -4(495 515 2515 2495) -4(514 2514 2515 515) -4(496 516 2516 2496) -4(515 2515 2516 516) -4(497 517 2517 2497) -4(516 2516 2517 517) -4(498 518 2518 2498) -4(517 2517 2518 518) -4(518 2518 2519 519) -4(501 521 2521 2501) -4(520 2520 2521 521) -4(502 522 2522 2502) -4(521 2521 2522 522) -4(503 523 2523 2503) -4(522 2522 2523 523) -4(504 524 2524 2504) -4(523 2523 2524 524) -4(505 525 2525 2505) -4(524 2524 2525 525) -4(506 526 2526 2506) -4(525 2525 2526 526) -4(507 527 2527 2507) -4(526 2526 2527 527) -4(508 528 2528 2508) -4(527 2527 2528 528) -4(509 529 2529 2509) -4(528 2528 2529 529) -4(510 530 2530 2510) -4(529 2529 2530 530) -4(511 531 2531 2511) -4(530 2530 2531 531) -4(512 532 2532 2512) -4(531 2531 2532 532) -4(513 533 2533 2513) -4(532 2532 2533 533) -4(514 534 2534 2514) -4(533 2533 2534 534) -4(515 535 2535 2515) -4(534 2534 2535 535) -4(516 536 2536 2516) -4(535 2535 2536 536) -4(517 537 2537 2517) -4(536 2536 2537 537) -4(518 538 2538 2518) -4(537 2537 2538 538) -4(538 2538 2539 539) -4(521 541 2541 2521) -4(540 2540 2541 541) -4(522 542 2542 2522) -4(541 2541 2542 542) -4(523 543 2543 2523) -4(542 2542 2543 543) -4(524 544 2544 2524) -4(543 2543 2544 544) -4(525 545 2545 2525) -4(544 2544 2545 545) -4(526 546 2546 2526) -4(545 2545 2546 546) -4(527 547 2547 2527) -4(546 2546 2547 547) -4(528 548 2548 2528) -4(547 2547 2548 548) -4(529 549 2549 2529) -4(548 2548 2549 549) -4(530 550 2550 2530) -4(549 2549 2550 550) -4(531 551 2551 2531) -4(550 2550 2551 551) -4(532 552 2552 2532) -4(551 2551 2552 552) -4(533 553 2553 2533) -4(552 2552 2553 553) -4(534 554 2554 2534) -4(553 2553 2554 554) -4(535 555 2555 2535) -4(554 2554 2555 555) -4(536 556 2556 2536) -4(555 2555 2556 556) -4(537 557 2557 2537) -4(556 2556 2557 557) -4(538 558 2558 2538) -4(557 2557 2558 558) -4(558 2558 2559 559) -4(541 561 2561 2541) -4(560 2560 2561 561) -4(542 562 2562 2542) -4(561 2561 2562 562) -4(543 563 2563 2543) -4(562 2562 2563 563) -4(544 564 2564 2544) -4(563 2563 2564 564) -4(545 565 2565 2545) -4(564 2564 2565 565) -4(546 566 2566 2546) -4(565 2565 2566 566) -4(547 567 2567 2547) -4(566 2566 2567 567) -4(548 568 2568 2548) -4(567 2567 2568 568) -4(549 569 2569 2549) -4(568 2568 2569 569) -4(550 570 2570 2550) -4(569 2569 2570 570) -4(551 571 2571 2551) -4(570 2570 2571 571) -4(552 572 2572 2552) -4(571 2571 2572 572) -4(553 573 2573 2553) -4(572 2572 2573 573) -4(554 574 2574 2554) -4(573 2573 2574 574) -4(555 575 2575 2555) -4(574 2574 2575 575) -4(556 576 2576 2556) -4(575 2575 2576 576) -4(557 577 2577 2557) -4(576 2576 2577 577) -4(558 578 2578 2558) -4(577 2577 2578 578) -4(578 2578 2579 579) -4(561 581 2581 2561) -4(580 2580 2581 581) -4(562 582 2582 2562) -4(581 2581 2582 582) -4(563 583 2583 2563) -4(582 2582 2583 583) -4(564 584 2584 2564) -4(583 2583 2584 584) -4(565 585 2585 2565) -4(584 2584 2585 585) -4(566 586 2586 2566) -4(585 2585 2586 586) -4(567 587 2587 2567) -4(586 2586 2587 587) -4(568 588 2588 2568) -4(587 2587 2588 588) -4(569 589 2589 2569) -4(588 2588 2589 589) -4(570 590 2590 2570) -4(589 2589 2590 590) -4(571 591 2591 2571) -4(590 2590 2591 591) -4(572 592 2592 2572) -4(591 2591 2592 592) -4(573 593 2593 2573) -4(592 2592 2593 593) -4(574 594 2594 2574) -4(593 2593 2594 594) -4(575 595 2595 2575) -4(594 2594 2595 595) -4(576 596 2596 2576) -4(595 2595 2596 596) -4(577 597 2597 2577) -4(596 2596 2597 597) -4(578 598 2598 2578) -4(597 2597 2598 598) -4(598 2598 2599 599) -4(581 601 2601 2581) -4(600 2600 2601 601) -4(582 602 2602 2582) -4(601 2601 2602 602) -4(583 603 2603 2583) -4(602 2602 2603 603) -4(584 604 2604 2584) -4(603 2603 2604 604) -4(585 605 2605 2585) -4(604 2604 2605 605) -4(586 606 2606 2586) -4(605 2605 2606 606) -4(587 607 2607 2587) -4(606 2606 2607 607) -4(588 608 2608 2588) -4(607 2607 2608 608) -4(589 609 2609 2589) -4(608 2608 2609 609) -4(590 610 2610 2590) -4(609 2609 2610 610) -4(591 611 2611 2591) -4(610 2610 2611 611) -4(592 612 2612 2592) -4(611 2611 2612 612) -4(593 613 2613 2593) -4(612 2612 2613 613) -4(594 614 2614 2594) -4(613 2613 2614 614) -4(595 615 2615 2595) -4(614 2614 2615 615) -4(596 616 2616 2596) -4(615 2615 2616 616) -4(597 617 2617 2597) -4(616 2616 2617 617) -4(598 618 2618 2598) -4(617 2617 2618 618) -4(618 2618 2619 619) -4(601 621 2621 2601) -4(620 2620 2621 621) -4(602 622 2622 2602) -4(621 2621 2622 622) -4(603 623 2623 2603) -4(622 2622 2623 623) -4(604 624 2624 2604) -4(623 2623 2624 624) -4(605 625 2625 2605) -4(624 2624 2625 625) -4(606 626 2626 2606) -4(625 2625 2626 626) -4(607 627 2627 2607) -4(626 2626 2627 627) -4(608 628 2628 2608) -4(627 2627 2628 628) -4(609 629 2629 2609) -4(628 2628 2629 629) -4(610 630 2630 2610) -4(629 2629 2630 630) -4(611 631 2631 2611) -4(630 2630 2631 631) -4(612 632 2632 2612) -4(631 2631 2632 632) -4(613 633 2633 2613) -4(632 2632 2633 633) -4(614 634 2634 2614) -4(633 2633 2634 634) -4(615 635 2635 2615) -4(634 2634 2635 635) -4(616 636 2636 2616) -4(635 2635 2636 636) -4(617 637 2637 2617) -4(636 2636 2637 637) -4(618 638 2638 2618) -4(637 2637 2638 638) -4(638 2638 2639 639) -4(621 641 2641 2621) -4(640 2640 2641 641) -4(622 642 2642 2622) -4(641 2641 2642 642) -4(623 643 2643 2623) -4(642 2642 2643 643) -4(624 644 2644 2624) -4(643 2643 2644 644) -4(625 645 2645 2625) -4(644 2644 2645 645) -4(626 646 2646 2626) -4(645 2645 2646 646) -4(627 647 2647 2627) -4(646 2646 2647 647) -4(628 648 2648 2628) -4(647 2647 2648 648) -4(629 649 2649 2629) -4(648 2648 2649 649) -4(630 650 2650 2630) -4(649 2649 2650 650) -4(631 651 2651 2631) -4(650 2650 2651 651) -4(632 652 2652 2632) -4(651 2651 2652 652) -4(633 653 2653 2633) -4(652 2652 2653 653) -4(634 654 2654 2634) -4(653 2653 2654 654) -4(635 655 2655 2635) -4(654 2654 2655 655) -4(636 656 2656 2636) -4(655 2655 2656 656) -4(637 657 2657 2637) -4(656 2656 2657 657) -4(638 658 2658 2638) -4(657 2657 2658 658) -4(658 2658 2659 659) -4(641 661 2661 2641) -4(660 2660 2661 661) -4(642 662 2662 2642) -4(661 2661 2662 662) -4(643 663 2663 2643) -4(662 2662 2663 663) -4(644 664 2664 2644) -4(663 2663 2664 664) -4(645 665 2665 2645) -4(664 2664 2665 665) -4(646 666 2666 2646) -4(665 2665 2666 666) -4(647 667 2667 2647) -4(666 2666 2667 667) -4(648 668 2668 2648) -4(667 2667 2668 668) -4(649 669 2669 2649) -4(668 2668 2669 669) -4(650 670 2670 2650) -4(669 2669 2670 670) -4(651 671 2671 2651) -4(670 2670 2671 671) -4(652 672 2672 2652) -4(671 2671 2672 672) -4(653 673 2673 2653) -4(672 2672 2673 673) -4(654 674 2674 2654) -4(673 2673 2674 674) -4(655 675 2675 2655) -4(674 2674 2675 675) -4(656 676 2676 2656) -4(675 2675 2676 676) -4(657 677 2677 2657) -4(676 2676 2677 677) -4(658 678 2678 2658) -4(677 2677 2678 678) -4(678 2678 2679 679) -4(661 681 2681 2661) -4(680 2680 2681 681) -4(662 682 2682 2662) -4(681 2681 2682 682) -4(663 683 2683 2663) -4(682 2682 2683 683) -4(664 684 2684 2664) -4(683 2683 2684 684) -4(665 685 2685 2665) -4(684 2684 2685 685) -4(666 686 2686 2666) -4(685 2685 2686 686) -4(667 687 2687 2667) -4(686 2686 2687 687) -4(668 688 2688 2668) -4(687 2687 2688 688) -4(669 689 2689 2669) -4(688 2688 2689 689) -4(670 690 2690 2670) -4(689 2689 2690 690) -4(671 691 2691 2671) -4(690 2690 2691 691) -4(672 692 2692 2672) -4(691 2691 2692 692) -4(673 693 2693 2673) -4(692 2692 2693 693) -4(674 694 2694 2674) -4(693 2693 2694 694) -4(675 695 2695 2675) -4(694 2694 2695 695) -4(676 696 2696 2676) -4(695 2695 2696 696) -4(677 697 2697 2677) -4(696 2696 2697 697) -4(678 698 2698 2678) -4(697 2697 2698 698) -4(698 2698 2699 699) -4(681 701 2701 2681) -4(700 2700 2701 701) -4(682 702 2702 2682) -4(701 2701 2702 702) -4(683 703 2703 2683) -4(702 2702 2703 703) -4(684 704 2704 2684) -4(703 2703 2704 704) -4(685 705 2705 2685) -4(704 2704 2705 705) -4(686 706 2706 2686) -4(705 2705 2706 706) -4(687 707 2707 2687) -4(706 2706 2707 707) -4(688 708 2708 2688) -4(707 2707 2708 708) -4(689 709 2709 2689) -4(708 2708 2709 709) -4(690 710 2710 2690) -4(709 2709 2710 710) -4(691 711 2711 2691) -4(710 2710 2711 711) -4(692 712 2712 2692) -4(711 2711 2712 712) -4(693 713 2713 2693) -4(712 2712 2713 713) -4(694 714 2714 2694) -4(713 2713 2714 714) -4(695 715 2715 2695) -4(714 2714 2715 715) -4(696 716 2716 2696) -4(715 2715 2716 716) -4(697 717 2717 2697) -4(716 2716 2717 717) -4(698 718 2718 2698) -4(717 2717 2718 718) -4(718 2718 2719 719) -4(701 721 2721 2701) -4(720 2720 2721 721) -4(702 722 2722 2702) -4(721 2721 2722 722) -4(703 723 2723 2703) -4(722 2722 2723 723) -4(704 724 2724 2704) -4(723 2723 2724 724) -4(705 725 2725 2705) -4(724 2724 2725 725) -4(706 726 2726 2706) -4(725 2725 2726 726) -4(707 727 2727 2707) -4(726 2726 2727 727) -4(708 728 2728 2708) -4(727 2727 2728 728) -4(709 729 2729 2709) -4(728 2728 2729 729) -4(710 730 2730 2710) -4(729 2729 2730 730) -4(711 731 2731 2711) -4(730 2730 2731 731) -4(712 732 2732 2712) -4(731 2731 2732 732) -4(713 733 2733 2713) -4(732 2732 2733 733) -4(714 734 2734 2714) -4(733 2733 2734 734) -4(715 735 2735 2715) -4(734 2734 2735 735) -4(716 736 2736 2716) -4(735 2735 2736 736) -4(717 737 2737 2717) -4(736 2736 2737 737) -4(718 738 2738 2718) -4(737 2737 2738 738) -4(738 2738 2739 739) -4(721 741 2741 2721) -4(740 2740 2741 741) -4(722 742 2742 2722) -4(741 2741 2742 742) -4(723 743 2743 2723) -4(742 2742 2743 743) -4(724 744 2744 2724) -4(743 2743 2744 744) -4(725 745 2745 2725) -4(744 2744 2745 745) -4(726 746 2746 2726) -4(745 2745 2746 746) -4(727 747 2747 2727) -4(746 2746 2747 747) -4(728 748 2748 2728) -4(747 2747 2748 748) -4(729 749 2749 2729) -4(748 2748 2749 749) -4(730 750 2750 2730) -4(749 2749 2750 750) -4(731 751 2751 2731) -4(750 2750 2751 751) -4(732 752 2752 2732) -4(751 2751 2752 752) -4(733 753 2753 2733) -4(752 2752 2753 753) -4(734 754 2754 2734) -4(753 2753 2754 754) -4(735 755 2755 2735) -4(754 2754 2755 755) -4(736 756 2756 2736) -4(755 2755 2756 756) -4(737 757 2757 2737) -4(756 2756 2757 757) -4(738 758 2758 2738) -4(757 2757 2758 758) -4(758 2758 2759 759) -4(741 761 2761 2741) -4(760 2760 2761 761) -4(742 762 2762 2742) -4(761 2761 2762 762) -4(743 763 2763 2743) -4(762 2762 2763 763) -4(744 764 2764 2744) -4(763 2763 2764 764) -4(745 765 2765 2745) -4(764 2764 2765 765) -4(746 766 2766 2746) -4(765 2765 2766 766) -4(747 767 2767 2747) -4(766 2766 2767 767) -4(748 768 2768 2748) -4(767 2767 2768 768) -4(749 769 2769 2749) -4(768 2768 2769 769) -4(750 770 2770 2750) -4(769 2769 2770 770) -4(751 771 2771 2751) -4(770 2770 2771 771) -4(752 772 2772 2752) -4(771 2771 2772 772) -4(753 773 2773 2753) -4(772 2772 2773 773) -4(754 774 2774 2754) -4(773 2773 2774 774) -4(755 775 2775 2755) -4(774 2774 2775 775) -4(756 776 2776 2756) -4(775 2775 2776 776) -4(757 777 2777 2757) -4(776 2776 2777 777) -4(758 778 2778 2758) -4(777 2777 2778 778) -4(778 2778 2779 779) -4(761 781 2781 2761) -4(780 2780 2781 781) -4(762 782 2782 2762) -4(781 2781 2782 782) -4(763 783 2783 2763) -4(782 2782 2783 783) -4(764 784 2784 2764) -4(783 2783 2784 784) -4(765 785 2785 2765) -4(784 2784 2785 785) -4(766 786 2786 2766) -4(785 2785 2786 786) -4(767 787 2787 2767) -4(786 2786 2787 787) -4(768 788 2788 2768) -4(787 2787 2788 788) -4(769 789 2789 2769) -4(788 2788 2789 789) -4(770 790 2790 2770) -4(789 2789 2790 790) -4(771 791 2791 2771) -4(790 2790 2791 791) -4(772 792 2792 2772) -4(791 2791 2792 792) -4(773 793 2793 2773) -4(792 2792 2793 793) -4(774 794 2794 2774) -4(793 2793 2794 794) -4(775 795 2795 2775) -4(794 2794 2795 795) -4(776 796 2796 2776) -4(795 2795 2796 796) -4(777 797 2797 2777) -4(796 2796 2797 797) -4(778 798 2798 2778) -4(797 2797 2798 798) -4(798 2798 2799 799) -4(781 801 2801 2781) -4(800 2800 2801 801) -4(782 802 2802 2782) -4(801 2801 2802 802) -4(783 803 2803 2783) -4(802 2802 2803 803) -4(784 804 2804 2784) -4(803 2803 2804 804) -4(785 805 2805 2785) -4(804 2804 2805 805) -4(786 806 2806 2786) -4(805 2805 2806 806) -4(787 807 2807 2787) -4(806 2806 2807 807) -4(788 808 2808 2788) -4(807 2807 2808 808) -4(789 809 2809 2789) -4(808 2808 2809 809) -4(790 810 2810 2790) -4(809 2809 2810 810) -4(791 811 2811 2791) -4(810 2810 2811 811) -4(792 812 2812 2792) -4(811 2811 2812 812) -4(793 813 2813 2793) -4(812 2812 2813 813) -4(794 814 2814 2794) -4(813 2813 2814 814) -4(795 815 2815 2795) -4(814 2814 2815 815) -4(796 816 2816 2796) -4(815 2815 2816 816) -4(797 817 2817 2797) -4(816 2816 2817 817) -4(798 818 2818 2798) -4(817 2817 2818 818) -4(818 2818 2819 819) -4(801 821 2821 2801) -4(820 2820 2821 821) -4(802 822 2822 2802) -4(821 2821 2822 822) -4(803 823 2823 2803) -4(822 2822 2823 823) -4(804 824 2824 2804) -4(823 2823 2824 824) -4(805 825 2825 2805) -4(824 2824 2825 825) -4(806 826 2826 2806) -4(825 2825 2826 826) -4(807 827 2827 2807) -4(826 2826 2827 827) -4(808 828 2828 2808) -4(827 2827 2828 828) -4(809 829 2829 2809) -4(828 2828 2829 829) -4(810 830 2830 2810) -4(829 2829 2830 830) -4(811 831 2831 2811) -4(830 2830 2831 831) -4(812 832 2832 2812) -4(831 2831 2832 832) -4(813 833 2833 2813) -4(832 2832 2833 833) -4(814 834 2834 2814) -4(833 2833 2834 834) -4(815 835 2835 2815) -4(834 2834 2835 835) -4(816 836 2836 2816) -4(835 2835 2836 836) -4(817 837 2837 2817) -4(836 2836 2837 837) -4(818 838 2838 2818) -4(837 2837 2838 838) -4(838 2838 2839 839) -4(821 841 2841 2821) -4(840 2840 2841 841) -4(822 842 2842 2822) -4(841 2841 2842 842) -4(823 843 2843 2823) -4(842 2842 2843 843) -4(824 844 2844 2824) -4(843 2843 2844 844) -4(825 845 2845 2825) -4(844 2844 2845 845) -4(826 846 2846 2826) -4(845 2845 2846 846) -4(827 847 2847 2827) -4(846 2846 2847 847) -4(828 848 2848 2828) -4(847 2847 2848 848) -4(829 849 2849 2829) -4(848 2848 2849 849) -4(830 850 2850 2830) -4(849 2849 2850 850) -4(831 851 2851 2831) -4(850 2850 2851 851) -4(832 852 2852 2832) -4(851 2851 2852 852) -4(833 853 2853 2833) -4(852 2852 2853 853) -4(834 854 2854 2834) -4(853 2853 2854 854) -4(835 855 2855 2835) -4(854 2854 2855 855) -4(836 856 2856 2836) -4(855 2855 2856 856) -4(837 857 2857 2837) -4(856 2856 2857 857) -4(838 858 2858 2838) -4(857 2857 2858 858) -4(858 2858 2859 859) -4(841 861 2861 2841) -4(860 2860 2861 861) -4(842 862 2862 2842) -4(861 2861 2862 862) -4(843 863 2863 2843) -4(862 2862 2863 863) -4(844 864 2864 2844) -4(863 2863 2864 864) -4(845 865 2865 2845) -4(864 2864 2865 865) -4(846 866 2866 2846) -4(865 2865 2866 866) -4(847 867 2867 2847) -4(866 2866 2867 867) -4(848 868 2868 2848) -4(867 2867 2868 868) -4(849 869 2869 2849) -4(868 2868 2869 869) -4(850 870 2870 2850) -4(869 2869 2870 870) -4(851 871 2871 2851) -4(870 2870 2871 871) -4(852 872 2872 2852) -4(871 2871 2872 872) -4(853 873 2873 2853) -4(872 2872 2873 873) -4(854 874 2874 2854) -4(873 2873 2874 874) -4(855 875 2875 2855) -4(874 2874 2875 875) -4(856 876 2876 2856) -4(875 2875 2876 876) -4(857 877 2877 2857) -4(876 2876 2877 877) -4(858 878 2878 2858) -4(877 2877 2878 878) -4(878 2878 2879 879) -4(861 881 2881 2861) -4(880 2880 2881 881) -4(862 882 2882 2862) -4(881 2881 2882 882) -4(863 883 2883 2863) -4(882 2882 2883 883) -4(864 884 2884 2864) -4(883 2883 2884 884) -4(865 885 2885 2865) -4(884 2884 2885 885) -4(866 886 2886 2866) -4(885 2885 2886 886) -4(867 887 2887 2867) -4(886 2886 2887 887) -4(868 888 2888 2868) -4(887 2887 2888 888) -4(869 889 2889 2869) -4(888 2888 2889 889) -4(870 890 2890 2870) -4(889 2889 2890 890) -4(871 891 2891 2871) -4(890 2890 2891 891) -4(872 892 2892 2872) -4(891 2891 2892 892) -4(873 893 2893 2873) -4(892 2892 2893 893) -4(874 894 2894 2874) -4(893 2893 2894 894) -4(875 895 2895 2875) -4(894 2894 2895 895) -4(876 896 2896 2876) -4(895 2895 2896 896) -4(877 897 2897 2877) -4(896 2896 2897 897) -4(878 898 2898 2878) -4(897 2897 2898 898) -4(898 2898 2899 899) -4(881 901 2901 2881) -4(900 2900 2901 901) -4(882 902 2902 2882) -4(901 2901 2902 902) -4(883 903 2903 2883) -4(902 2902 2903 903) -4(884 904 2904 2884) -4(903 2903 2904 904) -4(885 905 2905 2885) -4(904 2904 2905 905) -4(886 906 2906 2886) -4(905 2905 2906 906) -4(887 907 2907 2887) -4(906 2906 2907 907) -4(888 908 2908 2888) -4(907 2907 2908 908) -4(889 909 2909 2889) -4(908 2908 2909 909) -4(890 910 2910 2890) -4(909 2909 2910 910) -4(891 911 2911 2891) -4(910 2910 2911 911) -4(892 912 2912 2892) -4(911 2911 2912 912) -4(893 913 2913 2893) -4(912 2912 2913 913) -4(894 914 2914 2894) -4(913 2913 2914 914) -4(895 915 2915 2895) -4(914 2914 2915 915) -4(896 916 2916 2896) -4(915 2915 2916 916) -4(897 917 2917 2897) -4(916 2916 2917 917) -4(898 918 2918 2898) -4(917 2917 2918 918) -4(918 2918 2919 919) -4(901 921 2921 2901) -4(920 2920 2921 921) -4(902 922 2922 2902) -4(921 2921 2922 922) -4(903 923 2923 2903) -4(922 2922 2923 923) -4(904 924 2924 2904) -4(923 2923 2924 924) -4(905 925 2925 2905) -4(924 2924 2925 925) -4(906 926 2926 2906) -4(925 2925 2926 926) -4(907 927 2927 2907) -4(926 2926 2927 927) -4(908 928 2928 2908) -4(927 2927 2928 928) -4(909 929 2929 2909) -4(928 2928 2929 929) -4(910 930 2930 2910) -4(929 2929 2930 930) -4(911 931 2931 2911) -4(930 2930 2931 931) -4(912 932 2932 2912) -4(931 2931 2932 932) -4(913 933 2933 2913) -4(932 2932 2933 933) -4(914 934 2934 2914) -4(933 2933 2934 934) -4(915 935 2935 2915) -4(934 2934 2935 935) -4(916 936 2936 2916) -4(935 2935 2936 936) -4(917 937 2937 2917) -4(936 2936 2937 937) -4(918 938 2938 2918) -4(937 2937 2938 938) -4(938 2938 2939 939) -4(921 941 2941 2921) -4(940 2940 2941 941) -4(922 942 2942 2922) -4(941 2941 2942 942) -4(923 943 2943 2923) -4(942 2942 2943 943) -4(924 944 2944 2924) -4(943 2943 2944 944) -4(925 945 2945 2925) -4(944 2944 2945 945) -4(926 946 2946 2926) -4(945 2945 2946 946) -4(927 947 2947 2927) -4(946 2946 2947 947) -4(928 948 2948 2928) -4(947 2947 2948 948) -4(929 949 2949 2929) -4(948 2948 2949 949) -4(930 950 2950 2930) -4(949 2949 2950 950) -4(931 951 2951 2931) -4(950 2950 2951 951) -4(932 952 2952 2932) -4(951 2951 2952 952) -4(933 953 2953 2933) -4(952 2952 2953 953) -4(934 954 2954 2934) -4(953 2953 2954 954) -4(935 955 2955 2935) -4(954 2954 2955 955) -4(936 956 2956 2936) -4(955 2955 2956 956) -4(937 957 2957 2937) -4(956 2956 2957 957) -4(938 958 2958 2938) -4(957 2957 2958 958) -4(958 2958 2959 959) -4(941 961 2961 2941) -4(960 2960 2961 961) -4(942 962 2962 2942) -4(961 2961 2962 962) -4(943 963 2963 2943) -4(962 2962 2963 963) -4(944 964 2964 2944) -4(963 2963 2964 964) -4(945 965 2965 2945) -4(964 2964 2965 965) -4(946 966 2966 2946) -4(965 2965 2966 966) -4(947 967 2967 2947) -4(966 2966 2967 967) -4(948 968 2968 2948) -4(967 2967 2968 968) -4(949 969 2969 2949) -4(968 2968 2969 969) -4(950 970 2970 2950) -4(969 2969 2970 970) -4(951 971 2971 2951) -4(970 2970 2971 971) -4(952 972 2972 2952) -4(971 2971 2972 972) -4(953 973 2973 2953) -4(972 2972 2973 973) -4(954 974 2974 2954) -4(973 2973 2974 974) -4(955 975 2975 2955) -4(974 2974 2975 975) -4(956 976 2976 2956) -4(975 2975 2976 976) -4(957 977 2977 2957) -4(976 2976 2977 977) -4(958 978 2978 2958) -4(977 2977 2978 978) -4(978 2978 2979 979) -4(961 981 2981 2961) -4(980 2980 2981 981) -4(962 982 2982 2962) -4(981 2981 2982 982) -4(963 983 2983 2963) -4(982 2982 2983 983) -4(964 984 2984 2964) -4(983 2983 2984 984) -4(965 985 2985 2965) -4(984 2984 2985 985) -4(966 986 2986 2966) -4(985 2985 2986 986) -4(967 987 2987 2967) -4(986 2986 2987 987) -4(968 988 2988 2968) -4(987 2987 2988 988) -4(969 989 2989 2969) -4(988 2988 2989 989) -4(970 990 2990 2970) -4(989 2989 2990 990) -4(971 991 2991 2971) -4(990 2990 2991 991) -4(972 992 2992 2972) -4(991 2991 2992 992) -4(973 993 2993 2973) -4(992 2992 2993 993) -4(974 994 2994 2974) -4(993 2993 2994 994) -4(975 995 2995 2975) -4(994 2994 2995 995) -4(976 996 2996 2976) -4(995 2995 2996 996) -4(977 997 2997 2977) -4(996 2996 2997 997) -4(978 998 2998 2978) -4(997 2997 2998 998) -4(998 2998 2999 999) -4(981 1001 3001 2981) -4(1000 3000 3001 1001) -4(982 1002 3002 2982) -4(1001 3001 3002 1002) -4(983 1003 3003 2983) -4(1002 3002 3003 1003) -4(984 1004 3004 2984) -4(1003 3003 3004 1004) -4(985 1005 3005 2985) -4(1004 3004 3005 1005) -4(986 1006 3006 2986) -4(1005 3005 3006 1006) -4(987 1007 3007 2987) -4(1006 3006 3007 1007) -4(988 1008 3008 2988) -4(1007 3007 3008 1008) -4(989 1009 3009 2989) -4(1008 3008 3009 1009) -4(990 1010 3010 2990) -4(1009 3009 3010 1010) -4(991 1011 3011 2991) -4(1010 3010 3011 1011) -4(992 1012 3012 2992) -4(1011 3011 3012 1012) -4(993 1013 3013 2993) -4(1012 3012 3013 1013) -4(994 1014 3014 2994) -4(1013 3013 3014 1014) -4(995 1015 3015 2995) -4(1014 3014 3015 1015) -4(996 1016 3016 2996) -4(1015 3015 3016 1016) -4(997 1017 3017 2997) -4(1016 3016 3017 1017) -4(998 1018 3018 2998) -4(1017 3017 3018 1018) -4(1018 3018 3019 1019) -4(1001 1021 3021 3001) -4(1020 3020 3021 1021) -4(1002 1022 3022 3002) -4(1021 3021 3022 1022) -4(1003 1023 3023 3003) -4(1022 3022 3023 1023) -4(1004 1024 3024 3004) -4(1023 3023 3024 1024) -4(1005 1025 3025 3005) -4(1024 3024 3025 1025) -4(1006 1026 3026 3006) -4(1025 3025 3026 1026) -4(1007 1027 3027 3007) -4(1026 3026 3027 1027) -4(1008 1028 3028 3008) -4(1027 3027 3028 1028) -4(1009 1029 3029 3009) -4(1028 3028 3029 1029) -4(1010 1030 3030 3010) -4(1029 3029 3030 1030) -4(1011 1031 3031 3011) -4(1030 3030 3031 1031) -4(1012 1032 3032 3012) -4(1031 3031 3032 1032) -4(1013 1033 3033 3013) -4(1032 3032 3033 1033) -4(1014 1034 3034 3014) -4(1033 3033 3034 1034) -4(1015 1035 3035 3015) -4(1034 3034 3035 1035) -4(1016 1036 3036 3016) -4(1035 3035 3036 1036) -4(1017 1037 3037 3017) -4(1036 3036 3037 1037) -4(1018 1038 3038 3018) -4(1037 3037 3038 1038) -4(1038 3038 3039 1039) -4(1021 1041 3041 3021) -4(1040 3040 3041 1041) -4(1022 1042 3042 3022) -4(1041 3041 3042 1042) -4(1023 1043 3043 3023) -4(1042 3042 3043 1043) -4(1024 1044 3044 3024) -4(1043 3043 3044 1044) -4(1025 1045 3045 3025) -4(1044 3044 3045 1045) -4(1026 1046 3046 3026) -4(1045 3045 3046 1046) -4(1027 1047 3047 3027) -4(1046 3046 3047 1047) -4(1028 1048 3048 3028) -4(1047 3047 3048 1048) -4(1029 1049 3049 3029) -4(1048 3048 3049 1049) -4(1030 1050 3050 3030) -4(1049 3049 3050 1050) -4(1031 1051 3051 3031) -4(1050 3050 3051 1051) -4(1032 1052 3052 3032) -4(1051 3051 3052 1052) -4(1033 1053 3053 3033) -4(1052 3052 3053 1053) -4(1034 1054 3054 3034) -4(1053 3053 3054 1054) -4(1035 1055 3055 3035) -4(1054 3054 3055 1055) -4(1036 1056 3056 3036) -4(1055 3055 3056 1056) -4(1037 1057 3057 3037) -4(1056 3056 3057 1057) -4(1038 1058 3058 3038) -4(1057 3057 3058 1058) -4(1058 3058 3059 1059) -4(1041 1061 3061 3041) -4(1060 3060 3061 1061) -4(1042 1062 3062 3042) -4(1061 3061 3062 1062) -4(1043 1063 3063 3043) -4(1062 3062 3063 1063) -4(1044 1064 3064 3044) -4(1063 3063 3064 1064) -4(1045 1065 3065 3045) -4(1064 3064 3065 1065) -4(1046 1066 3066 3046) -4(1065 3065 3066 1066) -4(1047 1067 3067 3047) -4(1066 3066 3067 1067) -4(1048 1068 3068 3048) -4(1067 3067 3068 1068) -4(1049 1069 3069 3049) -4(1068 3068 3069 1069) -4(1050 1070 3070 3050) -4(1069 3069 3070 1070) -4(1051 1071 3071 3051) -4(1070 3070 3071 1071) -4(1052 1072 3072 3052) -4(1071 3071 3072 1072) -4(1053 1073 3073 3053) -4(1072 3072 3073 1073) -4(1054 1074 3074 3054) -4(1073 3073 3074 1074) -4(1055 1075 3075 3055) -4(1074 3074 3075 1075) -4(1056 1076 3076 3056) -4(1075 3075 3076 1076) -4(1057 1077 3077 3057) -4(1076 3076 3077 1077) -4(1058 1078 3078 3058) -4(1077 3077 3078 1078) -4(1078 3078 3079 1079) -4(1061 1081 3081 3061) -4(1080 3080 3081 1081) -4(1062 1082 3082 3062) -4(1081 3081 3082 1082) -4(1063 1083 3083 3063) -4(1082 3082 3083 1083) -4(1064 1084 3084 3064) -4(1083 3083 3084 1084) -4(1065 1085 3085 3065) -4(1084 3084 3085 1085) -4(1066 1086 3086 3066) -4(1085 3085 3086 1086) -4(1067 1087 3087 3067) -4(1086 3086 3087 1087) -4(1068 1088 3088 3068) -4(1087 3087 3088 1088) -4(1069 1089 3089 3069) -4(1088 3088 3089 1089) -4(1070 1090 3090 3070) -4(1089 3089 3090 1090) -4(1071 1091 3091 3071) -4(1090 3090 3091 1091) -4(1072 1092 3092 3072) -4(1091 3091 3092 1092) -4(1073 1093 3093 3073) -4(1092 3092 3093 1093) -4(1074 1094 3094 3074) -4(1093 3093 3094 1094) -4(1075 1095 3095 3075) -4(1094 3094 3095 1095) -4(1076 1096 3096 3076) -4(1095 3095 3096 1096) -4(1077 1097 3097 3077) -4(1096 3096 3097 1097) -4(1078 1098 3098 3078) -4(1097 3097 3098 1098) -4(1098 3098 3099 1099) -4(1081 1101 3101 3081) -4(1100 3100 3101 1101) -4(1082 1102 3102 3082) -4(1101 3101 3102 1102) -4(1083 1103 3103 3083) -4(1102 3102 3103 1103) -4(1084 1104 3104 3084) -4(1103 3103 3104 1104) -4(1085 1105 3105 3085) -4(1104 3104 3105 1105) -4(1086 1106 3106 3086) -4(1105 3105 3106 1106) -4(1087 1107 3107 3087) -4(1106 3106 3107 1107) -4(1088 1108 3108 3088) -4(1107 3107 3108 1108) -4(1089 1109 3109 3089) -4(1108 3108 3109 1109) -4(1090 1110 3110 3090) -4(1109 3109 3110 1110) -4(1091 1111 3111 3091) -4(1110 3110 3111 1111) -4(1092 1112 3112 3092) -4(1111 3111 3112 1112) -4(1093 1113 3113 3093) -4(1112 3112 3113 1113) -4(1094 1114 3114 3094) -4(1113 3113 3114 1114) -4(1095 1115 3115 3095) -4(1114 3114 3115 1115) -4(1096 1116 3116 3096) -4(1115 3115 3116 1116) -4(1097 1117 3117 3097) -4(1116 3116 3117 1117) -4(1098 1118 3118 3098) -4(1117 3117 3118 1118) -4(1118 3118 3119 1119) -4(1101 1121 3121 3101) -4(1120 3120 3121 1121) -4(1102 1122 3122 3102) -4(1121 3121 3122 1122) -4(1103 1123 3123 3103) -4(1122 3122 3123 1123) -4(1104 1124 3124 3104) -4(1123 3123 3124 1124) -4(1105 1125 3125 3105) -4(1124 3124 3125 1125) -4(1106 1126 3126 3106) -4(1125 3125 3126 1126) -4(1107 1127 3127 3107) -4(1126 3126 3127 1127) -4(1108 1128 3128 3108) -4(1127 3127 3128 1128) -4(1109 1129 3129 3109) -4(1128 3128 3129 1129) -4(1110 1130 3130 3110) -4(1129 3129 3130 1130) -4(1111 1131 3131 3111) -4(1130 3130 3131 1131) -4(1112 1132 3132 3112) -4(1131 3131 3132 1132) -4(1113 1133 3133 3113) -4(1132 3132 3133 1133) -4(1114 1134 3134 3114) -4(1133 3133 3134 1134) -4(1115 1135 3135 3115) -4(1134 3134 3135 1135) -4(1116 1136 3136 3116) -4(1135 3135 3136 1136) -4(1117 1137 3137 3117) -4(1136 3136 3137 1137) -4(1118 1138 3138 3118) -4(1137 3137 3138 1138) -4(1138 3138 3139 1139) -4(1121 1141 3141 3121) -4(1140 3140 3141 1141) -4(1122 1142 3142 3122) -4(1141 3141 3142 1142) -4(1123 1143 3143 3123) -4(1142 3142 3143 1143) -4(1124 1144 3144 3124) -4(1143 3143 3144 1144) -4(1125 1145 3145 3125) -4(1144 3144 3145 1145) -4(1126 1146 3146 3126) -4(1145 3145 3146 1146) -4(1127 1147 3147 3127) -4(1146 3146 3147 1147) -4(1128 1148 3148 3128) -4(1147 3147 3148 1148) -4(1129 1149 3149 3129) -4(1148 3148 3149 1149) -4(1130 1150 3150 3130) -4(1149 3149 3150 1150) -4(1131 1151 3151 3131) -4(1150 3150 3151 1151) -4(1132 1152 3152 3132) -4(1151 3151 3152 1152) -4(1133 1153 3153 3133) -4(1152 3152 3153 1153) -4(1134 1154 3154 3134) -4(1153 3153 3154 1154) -4(1135 1155 3155 3135) -4(1154 3154 3155 1155) -4(1136 1156 3156 3136) -4(1155 3155 3156 1156) -4(1137 1157 3157 3137) -4(1156 3156 3157 1157) -4(1138 1158 3158 3138) -4(1157 3157 3158 1158) -4(1158 3158 3159 1159) -4(1141 1161 3161 3141) -4(1160 3160 3161 1161) -4(1142 1162 3162 3142) -4(1161 3161 3162 1162) -4(1143 1163 3163 3143) -4(1162 3162 3163 1163) -4(1144 1164 3164 3144) -4(1163 3163 3164 1164) -4(1145 1165 3165 3145) -4(1164 3164 3165 1165) -4(1146 1166 3166 3146) -4(1165 3165 3166 1166) -4(1147 1167 3167 3147) -4(1166 3166 3167 1167) -4(1148 1168 3168 3148) -4(1167 3167 3168 1168) -4(1149 1169 3169 3149) -4(1168 3168 3169 1169) -4(1150 1170 3170 3150) -4(1169 3169 3170 1170) -4(1151 1171 3171 3151) -4(1170 3170 3171 1171) -4(1152 1172 3172 3152) -4(1171 3171 3172 1172) -4(1153 1173 3173 3153) -4(1172 3172 3173 1173) -4(1154 1174 3174 3154) -4(1173 3173 3174 1174) -4(1155 1175 3175 3155) -4(1174 3174 3175 1175) -4(1156 1176 3176 3156) -4(1175 3175 3176 1176) -4(1157 1177 3177 3157) -4(1176 3176 3177 1177) -4(1158 1178 3178 3158) -4(1177 3177 3178 1178) -4(1178 3178 3179 1179) -4(1161 1181 3181 3161) -4(1180 3180 3181 1181) -4(1162 1182 3182 3162) -4(1181 3181 3182 1182) -4(1163 1183 3183 3163) -4(1182 3182 3183 1183) -4(1164 1184 3184 3164) -4(1183 3183 3184 1184) -4(1165 1185 3185 3165) -4(1184 3184 3185 1185) -4(1166 1186 3186 3166) -4(1185 3185 3186 1186) -4(1167 1187 3187 3167) -4(1186 3186 3187 1187) -4(1168 1188 3188 3168) -4(1187 3187 3188 1188) -4(1169 1189 3189 3169) -4(1188 3188 3189 1189) -4(1170 1190 3190 3170) -4(1189 3189 3190 1190) -4(1171 1191 3191 3171) -4(1190 3190 3191 1191) -4(1172 1192 3192 3172) -4(1191 3191 3192 1192) -4(1173 1193 3193 3173) -4(1192 3192 3193 1193) -4(1174 1194 3194 3174) -4(1193 3193 3194 1194) -4(1175 1195 3195 3175) -4(1194 3194 3195 1195) -4(1176 1196 3196 3176) -4(1195 3195 3196 1196) -4(1177 1197 3197 3177) -4(1196 3196 3197 1197) -4(1178 1198 3198 3178) -4(1197 3197 3198 1198) -4(1198 3198 3199 1199) -4(1181 1201 3201 3181) -4(1200 3200 3201 1201) -4(1182 1202 3202 3182) -4(1201 3201 3202 1202) -4(1183 1203 3203 3183) -4(1202 3202 3203 1203) -4(1184 1204 3204 3184) -4(1203 3203 3204 1204) -4(1185 1205 3205 3185) -4(1204 3204 3205 1205) -4(1186 1206 3206 3186) -4(1205 3205 3206 1206) -4(1187 1207 3207 3187) -4(1206 3206 3207 1207) -4(1188 1208 3208 3188) -4(1207 3207 3208 1208) -4(1189 1209 3209 3189) -4(1208 3208 3209 1209) -4(1190 1210 3210 3190) -4(1209 3209 3210 1210) -4(1191 1211 3211 3191) -4(1210 3210 3211 1211) -4(1192 1212 3212 3192) -4(1211 3211 3212 1212) -4(1193 1213 3213 3193) -4(1212 3212 3213 1213) -4(1194 1214 3214 3194) -4(1213 3213 3214 1214) -4(1195 1215 3215 3195) -4(1214 3214 3215 1215) -4(1196 1216 3216 3196) -4(1215 3215 3216 1216) -4(1197 1217 3217 3197) -4(1216 3216 3217 1217) -4(1198 1218 3218 3198) -4(1217 3217 3218 1218) -4(1218 3218 3219 1219) -4(1201 1221 3221 3201) -4(1220 3220 3221 1221) -4(1202 1222 3222 3202) -4(1221 3221 3222 1222) -4(1203 1223 3223 3203) -4(1222 3222 3223 1223) -4(1204 1224 3224 3204) -4(1223 3223 3224 1224) -4(1205 1225 3225 3205) -4(1224 3224 3225 1225) -4(1206 1226 3226 3206) -4(1225 3225 3226 1226) -4(1207 1227 3227 3207) -4(1226 3226 3227 1227) -4(1208 1228 3228 3208) -4(1227 3227 3228 1228) -4(1209 1229 3229 3209) -4(1228 3228 3229 1229) -4(1210 1230 3230 3210) -4(1229 3229 3230 1230) -4(1211 1231 3231 3211) -4(1230 3230 3231 1231) -4(1212 1232 3232 3212) -4(1231 3231 3232 1232) -4(1213 1233 3233 3213) -4(1232 3232 3233 1233) -4(1214 1234 3234 3214) -4(1233 3233 3234 1234) -4(1215 1235 3235 3215) -4(1234 3234 3235 1235) -4(1216 1236 3236 3216) -4(1235 3235 3236 1236) -4(1217 1237 3237 3217) -4(1236 3236 3237 1237) -4(1218 1238 3238 3218) -4(1237 3237 3238 1238) -4(1238 3238 3239 1239) -4(1221 1241 3241 3221) -4(1240 3240 3241 1241) -4(1222 1242 3242 3222) -4(1241 3241 3242 1242) -4(1223 1243 3243 3223) -4(1242 3242 3243 1243) -4(1224 1244 3244 3224) -4(1243 3243 3244 1244) -4(1225 1245 3245 3225) -4(1244 3244 3245 1245) -4(1226 1246 3246 3226) -4(1245 3245 3246 1246) -4(1227 1247 3247 3227) -4(1246 3246 3247 1247) -4(1228 1248 3248 3228) -4(1247 3247 3248 1248) -4(1229 1249 3249 3229) -4(1248 3248 3249 1249) -4(1230 1250 3250 3230) -4(1249 3249 3250 1250) -4(1231 1251 3251 3231) -4(1250 3250 3251 1251) -4(1232 1252 3252 3232) -4(1251 3251 3252 1252) -4(1233 1253 3253 3233) -4(1252 3252 3253 1253) -4(1234 1254 3254 3234) -4(1253 3253 3254 1254) -4(1235 1255 3255 3235) -4(1254 3254 3255 1255) -4(1236 1256 3256 3236) -4(1255 3255 3256 1256) -4(1237 1257 3257 3237) -4(1256 3256 3257 1257) -4(1238 1258 3258 3238) -4(1257 3257 3258 1258) -4(1258 3258 3259 1259) -4(1241 1261 3261 3241) -4(1260 3260 3261 1261) -4(1242 1262 3262 3242) -4(1261 3261 3262 1262) -4(1243 1263 3263 3243) -4(1262 3262 3263 1263) -4(1244 1264 3264 3244) -4(1263 3263 3264 1264) -4(1245 1265 3265 3245) -4(1264 3264 3265 1265) -4(1246 1266 3266 3246) -4(1265 3265 3266 1266) -4(1247 1267 3267 3247) -4(1266 3266 3267 1267) -4(1248 1268 3268 3248) -4(1267 3267 3268 1268) -4(1249 1269 3269 3249) -4(1268 3268 3269 1269) -4(1250 1270 3270 3250) -4(1269 3269 3270 1270) -4(1251 1271 3271 3251) -4(1270 3270 3271 1271) -4(1252 1272 3272 3252) -4(1271 3271 3272 1272) -4(1253 1273 3273 3253) -4(1272 3272 3273 1273) -4(1254 1274 3274 3254) -4(1273 3273 3274 1274) -4(1255 1275 3275 3255) -4(1274 3274 3275 1275) -4(1256 1276 3276 3256) -4(1275 3275 3276 1276) -4(1257 1277 3277 3257) -4(1276 3276 3277 1277) -4(1258 1278 3278 3258) -4(1277 3277 3278 1278) -4(1278 3278 3279 1279) -4(1261 1281 3281 3261) -4(1280 3280 3281 1281) -4(1262 1282 3282 3262) -4(1281 3281 3282 1282) -4(1263 1283 3283 3263) -4(1282 3282 3283 1283) -4(1264 1284 3284 3264) -4(1283 3283 3284 1284) -4(1265 1285 3285 3265) -4(1284 3284 3285 1285) -4(1266 1286 3286 3266) -4(1285 3285 3286 1286) -4(1267 1287 3287 3267) -4(1286 3286 3287 1287) -4(1268 1288 3288 3268) -4(1287 3287 3288 1288) -4(1269 1289 3289 3269) -4(1288 3288 3289 1289) -4(1270 1290 3290 3270) -4(1289 3289 3290 1290) -4(1271 1291 3291 3271) -4(1290 3290 3291 1291) -4(1272 1292 3292 3272) -4(1291 3291 3292 1292) -4(1273 1293 3293 3273) -4(1292 3292 3293 1293) -4(1274 1294 3294 3274) -4(1293 3293 3294 1294) -4(1275 1295 3295 3275) -4(1294 3294 3295 1295) -4(1276 1296 3296 3276) -4(1295 3295 3296 1296) -4(1277 1297 3297 3277) -4(1296 3296 3297 1297) -4(1278 1298 3298 3278) -4(1297 3297 3298 1298) -4(1298 3298 3299 1299) -4(1281 1301 3301 3281) -4(1300 3300 3301 1301) -4(1282 1302 3302 3282) -4(1301 3301 3302 1302) -4(1283 1303 3303 3283) -4(1302 3302 3303 1303) -4(1284 1304 3304 3284) -4(1303 3303 3304 1304) -4(1285 1305 3305 3285) -4(1304 3304 3305 1305) -4(1286 1306 3306 3286) -4(1305 3305 3306 1306) -4(1287 1307 3307 3287) -4(1306 3306 3307 1307) -4(1288 1308 3308 3288) -4(1307 3307 3308 1308) -4(1289 1309 3309 3289) -4(1308 3308 3309 1309) -4(1290 1310 3310 3290) -4(1309 3309 3310 1310) -4(1291 1311 3311 3291) -4(1310 3310 3311 1311) -4(1292 1312 3312 3292) -4(1311 3311 3312 1312) -4(1293 1313 3313 3293) -4(1312 3312 3313 1313) -4(1294 1314 3314 3294) -4(1313 3313 3314 1314) -4(1295 1315 3315 3295) -4(1314 3314 3315 1315) -4(1296 1316 3316 3296) -4(1315 3315 3316 1316) -4(1297 1317 3317 3297) -4(1316 3316 3317 1317) -4(1298 1318 3318 3298) -4(1317 3317 3318 1318) -4(1318 3318 3319 1319) -4(1301 1321 3321 3301) -4(1320 3320 3321 1321) -4(1302 1322 3322 3302) -4(1321 3321 3322 1322) -4(1303 1323 3323 3303) -4(1322 3322 3323 1323) -4(1304 1324 3324 3304) -4(1323 3323 3324 1324) -4(1305 1325 3325 3305) -4(1324 3324 3325 1325) -4(1306 1326 3326 3306) -4(1325 3325 3326 1326) -4(1307 1327 3327 3307) -4(1326 3326 3327 1327) -4(1308 1328 3328 3308) -4(1327 3327 3328 1328) -4(1309 1329 3329 3309) -4(1328 3328 3329 1329) -4(1310 1330 3330 3310) -4(1329 3329 3330 1330) -4(1311 1331 3331 3311) -4(1330 3330 3331 1331) -4(1312 1332 3332 3312) -4(1331 3331 3332 1332) -4(1313 1333 3333 3313) -4(1332 3332 3333 1333) -4(1314 1334 3334 3314) -4(1333 3333 3334 1334) -4(1315 1335 3335 3315) -4(1334 3334 3335 1335) -4(1316 1336 3336 3316) -4(1335 3335 3336 1336) -4(1317 1337 3337 3317) -4(1336 3336 3337 1337) -4(1318 1338 3338 3318) -4(1337 3337 3338 1338) -4(1338 3338 3339 1339) -4(1321 1341 3341 3321) -4(1340 3340 3341 1341) -4(1322 1342 3342 3322) -4(1341 3341 3342 1342) -4(1323 1343 3343 3323) -4(1342 3342 3343 1343) -4(1324 1344 3344 3324) -4(1343 3343 3344 1344) -4(1325 1345 3345 3325) -4(1344 3344 3345 1345) -4(1326 1346 3346 3326) -4(1345 3345 3346 1346) -4(1327 1347 3347 3327) -4(1346 3346 3347 1347) -4(1328 1348 3348 3328) -4(1347 3347 3348 1348) -4(1329 1349 3349 3329) -4(1348 3348 3349 1349) -4(1330 1350 3350 3330) -4(1349 3349 3350 1350) -4(1331 1351 3351 3331) -4(1350 3350 3351 1351) -4(1332 1352 3352 3332) -4(1351 3351 3352 1352) -4(1333 1353 3353 3333) -4(1352 3352 3353 1353) -4(1334 1354 3354 3334) -4(1353 3353 3354 1354) -4(1335 1355 3355 3335) -4(1354 3354 3355 1355) -4(1336 1356 3356 3336) -4(1355 3355 3356 1356) -4(1337 1357 3357 3337) -4(1356 3356 3357 1357) -4(1338 1358 3358 3338) -4(1357 3357 3358 1358) -4(1358 3358 3359 1359) -4(1341 1361 3361 3341) -4(1360 3360 3361 1361) -4(1342 1362 3362 3342) -4(1361 3361 3362 1362) -4(1343 1363 3363 3343) -4(1362 3362 3363 1363) -4(1344 1364 3364 3344) -4(1363 3363 3364 1364) -4(1345 1365 3365 3345) -4(1364 3364 3365 1365) -4(1346 1366 3366 3346) -4(1365 3365 3366 1366) -4(1347 1367 3367 3347) -4(1366 3366 3367 1367) -4(1348 1368 3368 3348) -4(1367 3367 3368 1368) -4(1349 1369 3369 3349) -4(1368 3368 3369 1369) -4(1350 1370 3370 3350) -4(1369 3369 3370 1370) -4(1351 1371 3371 3351) -4(1370 3370 3371 1371) -4(1352 1372 3372 3352) -4(1371 3371 3372 1372) -4(1353 1373 3373 3353) -4(1372 3372 3373 1373) -4(1354 1374 3374 3354) -4(1373 3373 3374 1374) -4(1355 1375 3375 3355) -4(1374 3374 3375 1375) -4(1356 1376 3376 3356) -4(1375 3375 3376 1376) -4(1357 1377 3377 3357) -4(1376 3376 3377 1377) -4(1358 1378 3378 3358) -4(1377 3377 3378 1378) -4(1378 3378 3379 1379) -4(1361 1381 3381 3361) -4(1380 3380 3381 1381) -4(1362 1382 3382 3362) -4(1381 3381 3382 1382) -4(1363 1383 3383 3363) -4(1382 3382 3383 1383) -4(1364 1384 3384 3364) -4(1383 3383 3384 1384) -4(1365 1385 3385 3365) -4(1384 3384 3385 1385) -4(1366 1386 3386 3366) -4(1385 3385 3386 1386) -4(1367 1387 3387 3367) -4(1386 3386 3387 1387) -4(1368 1388 3388 3368) -4(1387 3387 3388 1388) -4(1369 1389 3389 3369) -4(1388 3388 3389 1389) -4(1370 1390 3390 3370) -4(1389 3389 3390 1390) -4(1371 1391 3391 3371) -4(1390 3390 3391 1391) -4(1372 1392 3392 3372) -4(1391 3391 3392 1392) -4(1373 1393 3393 3373) -4(1392 3392 3393 1393) -4(1374 1394 3394 3374) -4(1393 3393 3394 1394) -4(1375 1395 3395 3375) -4(1394 3394 3395 1395) -4(1376 1396 3396 3376) -4(1395 3395 3396 1396) -4(1377 1397 3397 3377) -4(1396 3396 3397 1397) -4(1378 1398 3398 3378) -4(1397 3397 3398 1398) -4(1398 3398 3399 1399) -4(1381 1401 3401 3381) -4(1400 3400 3401 1401) -4(1382 1402 3402 3382) -4(1401 3401 3402 1402) -4(1383 1403 3403 3383) -4(1402 3402 3403 1403) -4(1384 1404 3404 3384) -4(1403 3403 3404 1404) -4(1385 1405 3405 3385) -4(1404 3404 3405 1405) -4(1386 1406 3406 3386) -4(1405 3405 3406 1406) -4(1387 1407 3407 3387) -4(1406 3406 3407 1407) -4(1388 1408 3408 3388) -4(1407 3407 3408 1408) -4(1389 1409 3409 3389) -4(1408 3408 3409 1409) -4(1390 1410 3410 3390) -4(1409 3409 3410 1410) -4(1391 1411 3411 3391) -4(1410 3410 3411 1411) -4(1392 1412 3412 3392) -4(1411 3411 3412 1412) -4(1393 1413 3413 3393) -4(1412 3412 3413 1413) -4(1394 1414 3414 3394) -4(1413 3413 3414 1414) -4(1395 1415 3415 3395) -4(1414 3414 3415 1415) -4(1396 1416 3416 3396) -4(1415 3415 3416 1416) -4(1397 1417 3417 3397) -4(1416 3416 3417 1417) -4(1398 1418 3418 3398) -4(1417 3417 3418 1418) -4(1418 3418 3419 1419) -4(1401 1421 3421 3401) -4(1420 3420 3421 1421) -4(1402 1422 3422 3402) -4(1421 3421 3422 1422) -4(1403 1423 3423 3403) -4(1422 3422 3423 1423) -4(1404 1424 3424 3404) -4(1423 3423 3424 1424) -4(1405 1425 3425 3405) -4(1424 3424 3425 1425) -4(1406 1426 3426 3406) -4(1425 3425 3426 1426) -4(1407 1427 3427 3407) -4(1426 3426 3427 1427) -4(1408 1428 3428 3408) -4(1427 3427 3428 1428) -4(1409 1429 3429 3409) -4(1428 3428 3429 1429) -4(1410 1430 3430 3410) -4(1429 3429 3430 1430) -4(1411 1431 3431 3411) -4(1430 3430 3431 1431) -4(1412 1432 3432 3412) -4(1431 3431 3432 1432) -4(1413 1433 3433 3413) -4(1432 3432 3433 1433) -4(1414 1434 3434 3414) -4(1433 3433 3434 1434) -4(1415 1435 3435 3415) -4(1434 3434 3435 1435) -4(1416 1436 3436 3416) -4(1435 3435 3436 1436) -4(1417 1437 3437 3417) -4(1436 3436 3437 1437) -4(1418 1438 3438 3418) -4(1437 3437 3438 1438) -4(1438 3438 3439 1439) -4(1421 1441 3441 3421) -4(1440 3440 3441 1441) -4(1422 1442 3442 3422) -4(1441 3441 3442 1442) -4(1423 1443 3443 3423) -4(1442 3442 3443 1443) -4(1424 1444 3444 3424) -4(1443 3443 3444 1444) -4(1425 1445 3445 3425) -4(1444 3444 3445 1445) -4(1426 1446 3446 3426) -4(1445 3445 3446 1446) -4(1427 1447 3447 3427) -4(1446 3446 3447 1447) -4(1428 1448 3448 3428) -4(1447 3447 3448 1448) -4(1429 1449 3449 3429) -4(1448 3448 3449 1449) -4(1430 1450 3450 3430) -4(1449 3449 3450 1450) -4(1431 1451 3451 3431) -4(1450 3450 3451 1451) -4(1432 1452 3452 3432) -4(1451 3451 3452 1452) -4(1433 1453 3453 3433) -4(1452 3452 3453 1453) -4(1434 1454 3454 3434) -4(1453 3453 3454 1454) -4(1435 1455 3455 3435) -4(1454 3454 3455 1455) -4(1436 1456 3456 3436) -4(1455 3455 3456 1456) -4(1437 1457 3457 3437) -4(1456 3456 3457 1457) -4(1438 1458 3458 3438) -4(1457 3457 3458 1458) -4(1458 3458 3459 1459) -4(1441 1461 3461 3441) -4(1460 3460 3461 1461) -4(1442 1462 3462 3442) -4(1461 3461 3462 1462) -4(1443 1463 3463 3443) -4(1462 3462 3463 1463) -4(1444 1464 3464 3444) -4(1463 3463 3464 1464) -4(1445 1465 3465 3445) -4(1464 3464 3465 1465) -4(1446 1466 3466 3446) -4(1465 3465 3466 1466) -4(1447 1467 3467 3447) -4(1466 3466 3467 1467) -4(1448 1468 3468 3448) -4(1467 3467 3468 1468) -4(1449 1469 3469 3449) -4(1468 3468 3469 1469) -4(1450 1470 3470 3450) -4(1469 3469 3470 1470) -4(1451 1471 3471 3451) -4(1470 3470 3471 1471) -4(1452 1472 3472 3452) -4(1471 3471 3472 1472) -4(1453 1473 3473 3453) -4(1472 3472 3473 1473) -4(1454 1474 3474 3454) -4(1473 3473 3474 1474) -4(1455 1475 3475 3455) -4(1474 3474 3475 1475) -4(1456 1476 3476 3456) -4(1475 3475 3476 1476) -4(1457 1477 3477 3457) -4(1476 3476 3477 1477) -4(1458 1478 3478 3458) -4(1477 3477 3478 1478) -4(1478 3478 3479 1479) -4(1461 1481 3481 3461) -4(1480 3480 3481 1481) -4(1462 1482 3482 3462) -4(1481 3481 3482 1482) -4(1463 1483 3483 3463) -4(1482 3482 3483 1483) -4(1464 1484 3484 3464) -4(1483 3483 3484 1484) -4(1465 1485 3485 3465) -4(1484 3484 3485 1485) -4(1466 1486 3486 3466) -4(1485 3485 3486 1486) -4(1467 1487 3487 3467) -4(1486 3486 3487 1487) -4(1468 1488 3488 3468) -4(1487 3487 3488 1488) -4(1469 1489 3489 3469) -4(1488 3488 3489 1489) -4(1470 1490 3490 3470) -4(1489 3489 3490 1490) -4(1471 1491 3491 3471) -4(1490 3490 3491 1491) -4(1472 1492 3492 3472) -4(1491 3491 3492 1492) -4(1473 1493 3493 3473) -4(1492 3492 3493 1493) -4(1474 1494 3494 3474) -4(1493 3493 3494 1494) -4(1475 1495 3495 3475) -4(1494 3494 3495 1495) -4(1476 1496 3496 3476) -4(1495 3495 3496 1496) -4(1477 1497 3497 3477) -4(1496 3496 3497 1497) -4(1478 1498 3498 3478) -4(1497 3497 3498 1498) -4(1498 3498 3499 1499) -4(1481 1501 3501 3481) -4(1500 3500 3501 1501) -4(1482 1502 3502 3482) -4(1501 3501 3502 1502) -4(1483 1503 3503 3483) -4(1502 3502 3503 1503) -4(1484 1504 3504 3484) -4(1503 3503 3504 1504) -4(1485 1505 3505 3485) -4(1504 3504 3505 1505) -4(1486 1506 3506 3486) -4(1505 3505 3506 1506) -4(1487 1507 3507 3487) -4(1506 3506 3507 1507) -4(1488 1508 3508 3488) -4(1507 3507 3508 1508) -4(1489 1509 3509 3489) -4(1508 3508 3509 1509) -4(1490 1510 3510 3490) -4(1509 3509 3510 1510) -4(1491 1511 3511 3491) -4(1510 3510 3511 1511) -4(1492 1512 3512 3492) -4(1511 3511 3512 1512) -4(1493 1513 3513 3493) -4(1512 3512 3513 1513) -4(1494 1514 3514 3494) -4(1513 3513 3514 1514) -4(1495 1515 3515 3495) -4(1514 3514 3515 1515) -4(1496 1516 3516 3496) -4(1515 3515 3516 1516) -4(1497 1517 3517 3497) -4(1516 3516 3517 1517) -4(1498 1518 3518 3498) -4(1517 3517 3518 1518) -4(1518 3518 3519 1519) -4(1501 1521 3521 3501) -4(1520 3520 3521 1521) -4(1502 1522 3522 3502) -4(1521 3521 3522 1522) -4(1503 1523 3523 3503) -4(1522 3522 3523 1523) -4(1504 1524 3524 3504) -4(1523 3523 3524 1524) -4(1505 1525 3525 3505) -4(1524 3524 3525 1525) -4(1506 1526 3526 3506) -4(1525 3525 3526 1526) -4(1507 1527 3527 3507) -4(1526 3526 3527 1527) -4(1508 1528 3528 3508) -4(1527 3527 3528 1528) -4(1509 1529 3529 3509) -4(1528 3528 3529 1529) -4(1510 1530 3530 3510) -4(1529 3529 3530 1530) -4(1511 1531 3531 3511) -4(1530 3530 3531 1531) -4(1512 1532 3532 3512) -4(1531 3531 3532 1532) -4(1513 1533 3533 3513) -4(1532 3532 3533 1533) -4(1514 1534 3534 3514) -4(1533 3533 3534 1534) -4(1515 1535 3535 3515) -4(1534 3534 3535 1535) -4(1516 1536 3536 3516) -4(1535 3535 3536 1536) -4(1517 1537 3537 3517) -4(1536 3536 3537 1537) -4(1518 1538 3538 3518) -4(1537 3537 3538 1538) -4(1538 3538 3539 1539) -4(1521 1541 3541 3521) -4(1540 3540 3541 1541) -4(1522 1542 3542 3522) -4(1541 3541 3542 1542) -4(1523 1543 3543 3523) -4(1542 3542 3543 1543) -4(1524 1544 3544 3524) -4(1543 3543 3544 1544) -4(1525 1545 3545 3525) -4(1544 3544 3545 1545) -4(1526 1546 3546 3526) -4(1545 3545 3546 1546) -4(1527 1547 3547 3527) -4(1546 3546 3547 1547) -4(1528 1548 3548 3528) -4(1547 3547 3548 1548) -4(1529 1549 3549 3529) -4(1548 3548 3549 1549) -4(1530 1550 3550 3530) -4(1549 3549 3550 1550) -4(1531 1551 3551 3531) -4(1550 3550 3551 1551) -4(1532 1552 3552 3532) -4(1551 3551 3552 1552) -4(1533 1553 3553 3533) -4(1552 3552 3553 1553) -4(1534 1554 3554 3534) -4(1553 3553 3554 1554) -4(1535 1555 3555 3535) -4(1554 3554 3555 1555) -4(1536 1556 3556 3536) -4(1555 3555 3556 1556) -4(1537 1557 3557 3537) -4(1556 3556 3557 1557) -4(1538 1558 3558 3538) -4(1557 3557 3558 1558) -4(1558 3558 3559 1559) -4(1541 1561 3561 3541) -4(1560 3560 3561 1561) -4(1542 1562 3562 3542) -4(1561 3561 3562 1562) -4(1543 1563 3563 3543) -4(1562 3562 3563 1563) -4(1544 1564 3564 3544) -4(1563 3563 3564 1564) -4(1545 1565 3565 3545) -4(1564 3564 3565 1565) -4(1546 1566 3566 3546) -4(1565 3565 3566 1566) -4(1547 1567 3567 3547) -4(1566 3566 3567 1567) -4(1548 1568 3568 3548) -4(1567 3567 3568 1568) -4(1549 1569 3569 3549) -4(1568 3568 3569 1569) -4(1550 1570 3570 3550) -4(1569 3569 3570 1570) -4(1551 1571 3571 3551) -4(1570 3570 3571 1571) -4(1552 1572 3572 3552) -4(1571 3571 3572 1572) -4(1553 1573 3573 3553) -4(1572 3572 3573 1573) -4(1554 1574 3574 3554) -4(1573 3573 3574 1574) -4(1555 1575 3575 3555) -4(1574 3574 3575 1575) -4(1556 1576 3576 3556) -4(1575 3575 3576 1576) -4(1557 1577 3577 3557) -4(1576 3576 3577 1577) -4(1558 1578 3578 3558) -4(1577 3577 3578 1578) -4(1578 3578 3579 1579) -4(1561 1581 3581 3561) -4(1580 3580 3581 1581) -4(1562 1582 3582 3562) -4(1581 3581 3582 1582) -4(1563 1583 3583 3563) -4(1582 3582 3583 1583) -4(1564 1584 3584 3564) -4(1583 3583 3584 1584) -4(1565 1585 3585 3565) -4(1584 3584 3585 1585) -4(1566 1586 3586 3566) -4(1585 3585 3586 1586) -4(1567 1587 3587 3567) -4(1586 3586 3587 1587) -4(1568 1588 3588 3568) -4(1587 3587 3588 1588) -4(1569 1589 3589 3569) -4(1588 3588 3589 1589) -4(1570 1590 3590 3570) -4(1589 3589 3590 1590) -4(1571 1591 3591 3571) -4(1590 3590 3591 1591) -4(1572 1592 3592 3572) -4(1591 3591 3592 1592) -4(1573 1593 3593 3573) -4(1592 3592 3593 1593) -4(1574 1594 3594 3574) -4(1593 3593 3594 1594) -4(1575 1595 3595 3575) -4(1594 3594 3595 1595) -4(1576 1596 3596 3576) -4(1595 3595 3596 1596) -4(1577 1597 3597 3577) -4(1596 3596 3597 1597) -4(1578 1598 3598 3578) -4(1597 3597 3598 1598) -4(1598 3598 3599 1599) -4(1581 1601 3601 3581) -4(1600 3600 3601 1601) -4(1582 1602 3602 3582) -4(1601 3601 3602 1602) -4(1583 1603 3603 3583) -4(1602 3602 3603 1603) -4(1584 1604 3604 3584) -4(1603 3603 3604 1604) -4(1585 1605 3605 3585) -4(1604 3604 3605 1605) -4(1586 1606 3606 3586) -4(1605 3605 3606 1606) -4(1587 1607 3607 3587) -4(1606 3606 3607 1607) -4(1588 1608 3608 3588) -4(1607 3607 3608 1608) -4(1589 1609 3609 3589) -4(1608 3608 3609 1609) -4(1590 1610 3610 3590) -4(1609 3609 3610 1610) -4(1591 1611 3611 3591) -4(1610 3610 3611 1611) -4(1592 1612 3612 3592) -4(1611 3611 3612 1612) -4(1593 1613 3613 3593) -4(1612 3612 3613 1613) -4(1594 1614 3614 3594) -4(1613 3613 3614 1614) -4(1595 1615 3615 3595) -4(1614 3614 3615 1615) -4(1596 1616 3616 3596) -4(1615 3615 3616 1616) -4(1597 1617 3617 3597) -4(1616 3616 3617 1617) -4(1598 1618 3618 3598) -4(1617 3617 3618 1618) -4(1618 3618 3619 1619) -4(1601 1621 3621 3601) -4(1620 3620 3621 1621) -4(1602 1622 3622 3602) -4(1621 3621 3622 1622) -4(1603 1623 3623 3603) -4(1622 3622 3623 1623) -4(1604 1624 3624 3604) -4(1623 3623 3624 1624) -4(1605 1625 3625 3605) -4(1624 3624 3625 1625) -4(1606 1626 3626 3606) -4(1625 3625 3626 1626) -4(1607 1627 3627 3607) -4(1626 3626 3627 1627) -4(1608 1628 3628 3608) -4(1627 3627 3628 1628) -4(1609 1629 3629 3609) -4(1628 3628 3629 1629) -4(1610 1630 3630 3610) -4(1629 3629 3630 1630) -4(1611 1631 3631 3611) -4(1630 3630 3631 1631) -4(1612 1632 3632 3612) -4(1631 3631 3632 1632) -4(1613 1633 3633 3613) -4(1632 3632 3633 1633) -4(1614 1634 3634 3614) -4(1633 3633 3634 1634) -4(1615 1635 3635 3615) -4(1634 3634 3635 1635) -4(1616 1636 3636 3616) -4(1635 3635 3636 1636) -4(1617 1637 3637 3617) -4(1636 3636 3637 1637) -4(1618 1638 3638 3618) -4(1637 3637 3638 1638) -4(1638 3638 3639 1639) -4(1621 1641 3641 3621) -4(1640 3640 3641 1641) -4(1622 1642 3642 3622) -4(1641 3641 3642 1642) -4(1623 1643 3643 3623) -4(1642 3642 3643 1643) -4(1624 1644 3644 3624) -4(1643 3643 3644 1644) -4(1625 1645 3645 3625) -4(1644 3644 3645 1645) -4(1626 1646 3646 3626) -4(1645 3645 3646 1646) -4(1627 1647 3647 3627) -4(1646 3646 3647 1647) -4(1628 1648 3648 3628) -4(1647 3647 3648 1648) -4(1629 1649 3649 3629) -4(1648 3648 3649 1649) -4(1630 1650 3650 3630) -4(1649 3649 3650 1650) -4(1631 1651 3651 3631) -4(1650 3650 3651 1651) -4(1632 1652 3652 3632) -4(1651 3651 3652 1652) -4(1633 1653 3653 3633) -4(1652 3652 3653 1653) -4(1634 1654 3654 3634) -4(1653 3653 3654 1654) -4(1635 1655 3655 3635) -4(1654 3654 3655 1655) -4(1636 1656 3656 3636) -4(1655 3655 3656 1656) -4(1637 1657 3657 3637) -4(1656 3656 3657 1657) -4(1638 1658 3658 3638) -4(1657 3657 3658 1658) -4(1658 3658 3659 1659) -4(1641 1661 3661 3641) -4(1660 3660 3661 1661) -4(1642 1662 3662 3642) -4(1661 3661 3662 1662) -4(1643 1663 3663 3643) -4(1662 3662 3663 1663) -4(1644 1664 3664 3644) -4(1663 3663 3664 1664) -4(1645 1665 3665 3645) -4(1664 3664 3665 1665) -4(1646 1666 3666 3646) -4(1665 3665 3666 1666) -4(1647 1667 3667 3647) -4(1666 3666 3667 1667) -4(1648 1668 3668 3648) -4(1667 3667 3668 1668) -4(1649 1669 3669 3649) -4(1668 3668 3669 1669) -4(1650 1670 3670 3650) -4(1669 3669 3670 1670) -4(1651 1671 3671 3651) -4(1670 3670 3671 1671) -4(1652 1672 3672 3652) -4(1671 3671 3672 1672) -4(1653 1673 3673 3653) -4(1672 3672 3673 1673) -4(1654 1674 3674 3654) -4(1673 3673 3674 1674) -4(1655 1675 3675 3655) -4(1674 3674 3675 1675) -4(1656 1676 3676 3656) -4(1675 3675 3676 1676) -4(1657 1677 3677 3657) -4(1676 3676 3677 1677) -4(1658 1678 3678 3658) -4(1677 3677 3678 1678) -4(1678 3678 3679 1679) -4(1661 1681 3681 3661) -4(1680 3680 3681 1681) -4(1662 1682 3682 3662) -4(1681 3681 3682 1682) -4(1663 1683 3683 3663) -4(1682 3682 3683 1683) -4(1664 1684 3684 3664) -4(1683 3683 3684 1684) -4(1665 1685 3685 3665) -4(1684 3684 3685 1685) -4(1666 1686 3686 3666) -4(1685 3685 3686 1686) -4(1667 1687 3687 3667) -4(1686 3686 3687 1687) -4(1668 1688 3688 3668) -4(1687 3687 3688 1688) -4(1669 1689 3689 3669) -4(1688 3688 3689 1689) -4(1670 1690 3690 3670) -4(1689 3689 3690 1690) -4(1671 1691 3691 3671) -4(1690 3690 3691 1691) -4(1672 1692 3692 3672) -4(1691 3691 3692 1692) -4(1673 1693 3693 3673) -4(1692 3692 3693 1693) -4(1674 1694 3694 3674) -4(1693 3693 3694 1694) -4(1675 1695 3695 3675) -4(1694 3694 3695 1695) -4(1676 1696 3696 3676) -4(1695 3695 3696 1696) -4(1677 1697 3697 3677) -4(1696 3696 3697 1697) -4(1678 1698 3698 3678) -4(1697 3697 3698 1698) -4(1698 3698 3699 1699) -4(1681 1701 3701 3681) -4(1700 3700 3701 1701) -4(1682 1702 3702 3682) -4(1701 3701 3702 1702) -4(1683 1703 3703 3683) -4(1702 3702 3703 1703) -4(1684 1704 3704 3684) -4(1703 3703 3704 1704) -4(1685 1705 3705 3685) -4(1704 3704 3705 1705) -4(1686 1706 3706 3686) -4(1705 3705 3706 1706) -4(1687 1707 3707 3687) -4(1706 3706 3707 1707) -4(1688 1708 3708 3688) -4(1707 3707 3708 1708) -4(1689 1709 3709 3689) -4(1708 3708 3709 1709) -4(1690 1710 3710 3690) -4(1709 3709 3710 1710) -4(1691 1711 3711 3691) -4(1710 3710 3711 1711) -4(1692 1712 3712 3692) -4(1711 3711 3712 1712) -4(1693 1713 3713 3693) -4(1712 3712 3713 1713) -4(1694 1714 3714 3694) -4(1713 3713 3714 1714) -4(1695 1715 3715 3695) -4(1714 3714 3715 1715) -4(1696 1716 3716 3696) -4(1715 3715 3716 1716) -4(1697 1717 3717 3697) -4(1716 3716 3717 1717) -4(1698 1718 3718 3698) -4(1717 3717 3718 1718) -4(1718 3718 3719 1719) -4(1701 1721 3721 3701) -4(1720 3720 3721 1721) -4(1702 1722 3722 3702) -4(1721 3721 3722 1722) -4(1703 1723 3723 3703) -4(1722 3722 3723 1723) -4(1704 1724 3724 3704) -4(1723 3723 3724 1724) -4(1705 1725 3725 3705) -4(1724 3724 3725 1725) -4(1706 1726 3726 3706) -4(1725 3725 3726 1726) -4(1707 1727 3727 3707) -4(1726 3726 3727 1727) -4(1708 1728 3728 3708) -4(1727 3727 3728 1728) -4(1709 1729 3729 3709) -4(1728 3728 3729 1729) -4(1710 1730 3730 3710) -4(1729 3729 3730 1730) -4(1711 1731 3731 3711) -4(1730 3730 3731 1731) -4(1712 1732 3732 3712) -4(1731 3731 3732 1732) -4(1713 1733 3733 3713) -4(1732 3732 3733 1733) -4(1714 1734 3734 3714) -4(1733 3733 3734 1734) -4(1715 1735 3735 3715) -4(1734 3734 3735 1735) -4(1716 1736 3736 3716) -4(1735 3735 3736 1736) -4(1717 1737 3737 3717) -4(1736 3736 3737 1737) -4(1718 1738 3738 3718) -4(1737 3737 3738 1738) -4(1738 3738 3739 1739) -4(1721 1741 3741 3721) -4(1740 3740 3741 1741) -4(1722 1742 3742 3722) -4(1741 3741 3742 1742) -4(1723 1743 3743 3723) -4(1742 3742 3743 1743) -4(1724 1744 3744 3724) -4(1743 3743 3744 1744) -4(1725 1745 3745 3725) -4(1744 3744 3745 1745) -4(1726 1746 3746 3726) -4(1745 3745 3746 1746) -4(1727 1747 3747 3727) -4(1746 3746 3747 1747) -4(1728 1748 3748 3728) -4(1747 3747 3748 1748) -4(1729 1749 3749 3729) -4(1748 3748 3749 1749) -4(1730 1750 3750 3730) -4(1749 3749 3750 1750) -4(1731 1751 3751 3731) -4(1750 3750 3751 1751) -4(1732 1752 3752 3732) -4(1751 3751 3752 1752) -4(1733 1753 3753 3733) -4(1752 3752 3753 1753) -4(1734 1754 3754 3734) -4(1753 3753 3754 1754) -4(1735 1755 3755 3735) -4(1754 3754 3755 1755) -4(1736 1756 3756 3736) -4(1755 3755 3756 1756) -4(1737 1757 3757 3737) -4(1756 3756 3757 1757) -4(1738 1758 3758 3738) -4(1757 3757 3758 1758) -4(1758 3758 3759 1759) -4(1741 1761 3761 3741) -4(1760 3760 3761 1761) -4(1742 1762 3762 3742) -4(1761 3761 3762 1762) -4(1743 1763 3763 3743) -4(1762 3762 3763 1763) -4(1744 1764 3764 3744) -4(1763 3763 3764 1764) -4(1745 1765 3765 3745) -4(1764 3764 3765 1765) -4(1746 1766 3766 3746) -4(1765 3765 3766 1766) -4(1747 1767 3767 3747) -4(1766 3766 3767 1767) -4(1748 1768 3768 3748) -4(1767 3767 3768 1768) -4(1749 1769 3769 3749) -4(1768 3768 3769 1769) -4(1750 1770 3770 3750) -4(1769 3769 3770 1770) -4(1751 1771 3771 3751) -4(1770 3770 3771 1771) -4(1752 1772 3772 3752) -4(1771 3771 3772 1772) -4(1753 1773 3773 3753) -4(1772 3772 3773 1773) -4(1754 1774 3774 3754) -4(1773 3773 3774 1774) -4(1755 1775 3775 3755) -4(1774 3774 3775 1775) -4(1756 1776 3776 3756) -4(1775 3775 3776 1776) -4(1757 1777 3777 3757) -4(1776 3776 3777 1777) -4(1758 1778 3778 3758) -4(1777 3777 3778 1778) -4(1778 3778 3779 1779) -4(1761 1781 3781 3761) -4(1780 3780 3781 1781) -4(1762 1782 3782 3762) -4(1781 3781 3782 1782) -4(1763 1783 3783 3763) -4(1782 3782 3783 1783) -4(1764 1784 3784 3764) -4(1783 3783 3784 1784) -4(1765 1785 3785 3765) -4(1784 3784 3785 1785) -4(1766 1786 3786 3766) -4(1785 3785 3786 1786) -4(1767 1787 3787 3767) -4(1786 3786 3787 1787) -4(1768 1788 3788 3768) -4(1787 3787 3788 1788) -4(1769 1789 3789 3769) -4(1788 3788 3789 1789) -4(1770 1790 3790 3770) -4(1789 3789 3790 1790) -4(1771 1791 3791 3771) -4(1790 3790 3791 1791) -4(1772 1792 3792 3772) -4(1791 3791 3792 1792) -4(1773 1793 3793 3773) -4(1792 3792 3793 1793) -4(1774 1794 3794 3774) -4(1793 3793 3794 1794) -4(1775 1795 3795 3775) -4(1794 3794 3795 1795) -4(1776 1796 3796 3776) -4(1795 3795 3796 1796) -4(1777 1797 3797 3777) -4(1796 3796 3797 1797) -4(1778 1798 3798 3778) -4(1797 3797 3798 1798) -4(1798 3798 3799 1799) -4(1781 1801 3801 3781) -4(1800 3800 3801 1801) -4(1782 1802 3802 3782) -4(1801 3801 3802 1802) -4(1783 1803 3803 3783) -4(1802 3802 3803 1803) -4(1784 1804 3804 3784) -4(1803 3803 3804 1804) -4(1785 1805 3805 3785) -4(1804 3804 3805 1805) -4(1786 1806 3806 3786) -4(1805 3805 3806 1806) -4(1787 1807 3807 3787) -4(1806 3806 3807 1807) -4(1788 1808 3808 3788) -4(1807 3807 3808 1808) -4(1789 1809 3809 3789) -4(1808 3808 3809 1809) -4(1790 1810 3810 3790) -4(1809 3809 3810 1810) -4(1791 1811 3811 3791) -4(1810 3810 3811 1811) -4(1792 1812 3812 3792) -4(1811 3811 3812 1812) -4(1793 1813 3813 3793) -4(1812 3812 3813 1813) -4(1794 1814 3814 3794) -4(1813 3813 3814 1814) -4(1795 1815 3815 3795) -4(1814 3814 3815 1815) -4(1796 1816 3816 3796) -4(1815 3815 3816 1816) -4(1797 1817 3817 3797) -4(1816 3816 3817 1817) -4(1798 1818 3818 3798) -4(1817 3817 3818 1818) -4(1818 3818 3819 1819) -4(1801 1821 3821 3801) -4(1820 3820 3821 1821) -4(1802 1822 3822 3802) -4(1821 3821 3822 1822) -4(1803 1823 3823 3803) -4(1822 3822 3823 1823) -4(1804 1824 3824 3804) -4(1823 3823 3824 1824) -4(1805 1825 3825 3805) -4(1824 3824 3825 1825) -4(1806 1826 3826 3806) -4(1825 3825 3826 1826) -4(1807 1827 3827 3807) -4(1826 3826 3827 1827) -4(1808 1828 3828 3808) -4(1827 3827 3828 1828) -4(1809 1829 3829 3809) -4(1828 3828 3829 1829) -4(1810 1830 3830 3810) -4(1829 3829 3830 1830) -4(1811 1831 3831 3811) -4(1830 3830 3831 1831) -4(1812 1832 3832 3812) -4(1831 3831 3832 1832) -4(1813 1833 3833 3813) -4(1832 3832 3833 1833) -4(1814 1834 3834 3814) -4(1833 3833 3834 1834) -4(1815 1835 3835 3815) -4(1834 3834 3835 1835) -4(1816 1836 3836 3816) -4(1835 3835 3836 1836) -4(1817 1837 3837 3817) -4(1836 3836 3837 1837) -4(1818 1838 3838 3818) -4(1837 3837 3838 1838) -4(1838 3838 3839 1839) -4(1821 1841 3841 3821) -4(1840 3840 3841 1841) -4(1822 1842 3842 3822) -4(1841 3841 3842 1842) -4(1823 1843 3843 3823) -4(1842 3842 3843 1843) -4(1824 1844 3844 3824) -4(1843 3843 3844 1844) -4(1825 1845 3845 3825) -4(1844 3844 3845 1845) -4(1826 1846 3846 3826) -4(1845 3845 3846 1846) -4(1827 1847 3847 3827) -4(1846 3846 3847 1847) -4(1828 1848 3848 3828) -4(1847 3847 3848 1848) -4(1829 1849 3849 3829) -4(1848 3848 3849 1849) -4(1830 1850 3850 3830) -4(1849 3849 3850 1850) -4(1831 1851 3851 3831) -4(1850 3850 3851 1851) -4(1832 1852 3852 3832) -4(1851 3851 3852 1852) -4(1833 1853 3853 3833) -4(1852 3852 3853 1853) -4(1834 1854 3854 3834) -4(1853 3853 3854 1854) -4(1835 1855 3855 3835) -4(1854 3854 3855 1855) -4(1836 1856 3856 3836) -4(1855 3855 3856 1856) -4(1837 1857 3857 3837) -4(1856 3856 3857 1857) -4(1838 1858 3858 3838) -4(1857 3857 3858 1858) -4(1858 3858 3859 1859) -4(1841 1861 3861 3841) -4(1860 3860 3861 1861) -4(1842 1862 3862 3842) -4(1861 3861 3862 1862) -4(1843 1863 3863 3843) -4(1862 3862 3863 1863) -4(1844 1864 3864 3844) -4(1863 3863 3864 1864) -4(1845 1865 3865 3845) -4(1864 3864 3865 1865) -4(1846 1866 3866 3846) -4(1865 3865 3866 1866) -4(1847 1867 3867 3847) -4(1866 3866 3867 1867) -4(1848 1868 3868 3848) -4(1867 3867 3868 1868) -4(1849 1869 3869 3849) -4(1868 3868 3869 1869) -4(1850 1870 3870 3850) -4(1869 3869 3870 1870) -4(1851 1871 3871 3851) -4(1870 3870 3871 1871) -4(1852 1872 3872 3852) -4(1871 3871 3872 1872) -4(1853 1873 3873 3853) -4(1872 3872 3873 1873) -4(1854 1874 3874 3854) -4(1873 3873 3874 1874) -4(1855 1875 3875 3855) -4(1874 3874 3875 1875) -4(1856 1876 3876 3856) -4(1875 3875 3876 1876) -4(1857 1877 3877 3857) -4(1876 3876 3877 1877) -4(1858 1878 3878 3858) -4(1877 3877 3878 1878) -4(1878 3878 3879 1879) -4(1861 1881 3881 3861) -4(1880 3880 3881 1881) -4(1862 1882 3882 3862) -4(1881 3881 3882 1882) -4(1863 1883 3883 3863) -4(1882 3882 3883 1883) -4(1864 1884 3884 3864) -4(1883 3883 3884 1884) -4(1865 1885 3885 3865) -4(1884 3884 3885 1885) -4(1866 1886 3886 3866) -4(1885 3885 3886 1886) -4(1867 1887 3887 3867) -4(1886 3886 3887 1887) -4(1868 1888 3888 3868) -4(1887 3887 3888 1888) -4(1869 1889 3889 3869) -4(1888 3888 3889 1889) -4(1870 1890 3890 3870) -4(1889 3889 3890 1890) -4(1871 1891 3891 3871) -4(1890 3890 3891 1891) -4(1872 1892 3892 3872) -4(1891 3891 3892 1892) -4(1873 1893 3893 3873) -4(1892 3892 3893 1893) -4(1874 1894 3894 3874) -4(1893 3893 3894 1894) -4(1875 1895 3895 3875) -4(1894 3894 3895 1895) -4(1876 1896 3896 3876) -4(1895 3895 3896 1896) -4(1877 1897 3897 3877) -4(1896 3896 3897 1897) -4(1878 1898 3898 3878) -4(1897 3897 3898 1898) -4(1898 3898 3899 1899) -4(1881 1901 3901 3881) -4(1900 3900 3901 1901) -4(1882 1902 3902 3882) -4(1901 3901 3902 1902) -4(1883 1903 3903 3883) -4(1902 3902 3903 1903) -4(1884 1904 3904 3884) -4(1903 3903 3904 1904) -4(1885 1905 3905 3885) -4(1904 3904 3905 1905) -4(1886 1906 3906 3886) -4(1905 3905 3906 1906) -4(1887 1907 3907 3887) -4(1906 3906 3907 1907) -4(1888 1908 3908 3888) -4(1907 3907 3908 1908) -4(1889 1909 3909 3889) -4(1908 3908 3909 1909) -4(1890 1910 3910 3890) -4(1909 3909 3910 1910) -4(1891 1911 3911 3891) -4(1910 3910 3911 1911) -4(1892 1912 3912 3892) -4(1911 3911 3912 1912) -4(1893 1913 3913 3893) -4(1912 3912 3913 1913) -4(1894 1914 3914 3894) -4(1913 3913 3914 1914) -4(1895 1915 3915 3895) -4(1914 3914 3915 1915) -4(1896 1916 3916 3896) -4(1915 3915 3916 1916) -4(1897 1917 3917 3897) -4(1916 3916 3917 1917) -4(1898 1918 3918 3898) -4(1917 3917 3918 1918) -4(1918 3918 3919 1919) -4(1901 1921 3921 3901) -4(1920 3920 3921 1921) -4(1902 1922 3922 3902) -4(1921 3921 3922 1922) -4(1903 1923 3923 3903) -4(1922 3922 3923 1923) -4(1904 1924 3924 3904) -4(1923 3923 3924 1924) -4(1905 1925 3925 3905) -4(1924 3924 3925 1925) -4(1906 1926 3926 3906) -4(1925 3925 3926 1926) -4(1907 1927 3927 3907) -4(1926 3926 3927 1927) -4(1908 1928 3928 3908) -4(1927 3927 3928 1928) -4(1909 1929 3929 3909) -4(1928 3928 3929 1929) -4(1910 1930 3930 3910) -4(1929 3929 3930 1930) -4(1911 1931 3931 3911) -4(1930 3930 3931 1931) -4(1912 1932 3932 3912) -4(1931 3931 3932 1932) -4(1913 1933 3933 3913) -4(1932 3932 3933 1933) -4(1914 1934 3934 3914) -4(1933 3933 3934 1934) -4(1915 1935 3935 3915) -4(1934 3934 3935 1935) -4(1916 1936 3936 3916) -4(1935 3935 3936 1936) -4(1917 1937 3937 3917) -4(1936 3936 3937 1937) -4(1918 1938 3938 3918) -4(1937 3937 3938 1938) -4(1938 3938 3939 1939) -4(1921 1941 3941 3921) -4(1940 3940 3941 1941) -4(1922 1942 3942 3922) -4(1941 3941 3942 1942) -4(1923 1943 3943 3923) -4(1942 3942 3943 1943) -4(1924 1944 3944 3924) -4(1943 3943 3944 1944) -4(1925 1945 3945 3925) -4(1944 3944 3945 1945) -4(1926 1946 3946 3926) -4(1945 3945 3946 1946) -4(1927 1947 3947 3927) -4(1946 3946 3947 1947) -4(1928 1948 3948 3928) -4(1947 3947 3948 1948) -4(1929 1949 3949 3929) -4(1948 3948 3949 1949) -4(1930 1950 3950 3930) -4(1949 3949 3950 1950) -4(1931 1951 3951 3931) -4(1950 3950 3951 1951) -4(1932 1952 3952 3932) -4(1951 3951 3952 1952) -4(1933 1953 3953 3933) -4(1952 3952 3953 1953) -4(1934 1954 3954 3934) -4(1953 3953 3954 1954) -4(1935 1955 3955 3935) -4(1954 3954 3955 1955) -4(1936 1956 3956 3936) -4(1955 3955 3956 1956) -4(1937 1957 3957 3937) -4(1956 3956 3957 1957) -4(1938 1958 3958 3938) -4(1957 3957 3958 1958) -4(1958 3958 3959 1959) -4(1941 1961 3961 3941) -4(1960 3960 3961 1961) -4(1942 1962 3962 3942) -4(1961 3961 3962 1962) -4(1943 1963 3963 3943) -4(1962 3962 3963 1963) -4(1944 1964 3964 3944) -4(1963 3963 3964 1964) -4(1945 1965 3965 3945) -4(1964 3964 3965 1965) -4(1946 1966 3966 3946) -4(1965 3965 3966 1966) -4(1947 1967 3967 3947) -4(1966 3966 3967 1967) -4(1948 1968 3968 3948) -4(1967 3967 3968 1968) -4(1949 1969 3969 3949) -4(1968 3968 3969 1969) -4(1950 1970 3970 3950) -4(1969 3969 3970 1970) -4(1951 1971 3971 3951) -4(1970 3970 3971 1971) -4(1952 1972 3972 3952) -4(1971 3971 3972 1972) -4(1953 1973 3973 3953) -4(1972 3972 3973 1973) -4(1954 1974 3974 3954) -4(1973 3973 3974 1974) -4(1955 1975 3975 3955) -4(1974 3974 3975 1975) -4(1956 1976 3976 3956) -4(1975 3975 3976 1976) -4(1957 1977 3977 3957) -4(1976 3976 3977 1977) -4(1958 1978 3978 3958) -4(1977 3977 3978 1978) -4(1978 3978 3979 1979) -4(1961 1981 3981 3961) -4(1962 1982 3982 3962) -4(1963 1983 3983 3963) -4(1964 1984 3984 3964) -4(1965 1985 3985 3965) -4(1966 1986 3986 3966) -4(1967 1987 3987 3967) -4(1968 1988 3988 3968) -4(1969 1989 3989 3969) -4(1970 1990 3990 3970) -4(1971 1991 3991 3971) -4(1972 1992 3992 3972) -4(1973 1993 3993 3973) -4(1974 1994 3994 3974) -4(1975 1995 3995 3975) -4(1976 1996 3996 3976) -4(1977 1997 3997 3977) -4(1978 1998 3998 3978) -4(39 2039 2038 38) -4(39 59 2059 2039) -4(59 79 2079 2059) -4(79 99 2099 2079) -4(99 119 2119 2099) -4(119 139 2139 2119) -4(139 159 2159 2139) -4(159 179 2179 2159) -4(179 199 2199 2179) -4(199 219 2219 2199) -4(219 239 2239 2219) -4(239 259 2259 2239) -4(259 279 2279 2259) -4(279 299 2299 2279) -4(299 319 2319 2299) -4(319 339 2339 2319) -4(339 359 2359 2339) -4(359 379 2379 2359) -4(379 399 2399 2379) -4(399 419 2419 2399) -4(419 439 2439 2419) -4(439 459 2459 2439) -4(459 479 2479 2459) -4(479 499 2499 2479) -4(499 519 2519 2499) -4(519 539 2539 2519) -4(539 559 2559 2539) -4(559 579 2579 2559) -4(579 599 2599 2579) -4(599 619 2619 2599) -4(619 639 2639 2619) -4(639 659 2659 2639) -4(659 679 2679 2659) -4(679 699 2699 2679) -4(699 719 2719 2699) -4(719 739 2739 2719) -4(739 759 2759 2739) -4(759 779 2779 2759) -4(779 799 2799 2779) -4(799 819 2819 2799) -4(819 839 2839 2819) -4(839 859 2859 2839) -4(859 879 2879 2859) -4(879 899 2899 2879) -4(899 919 2919 2899) -4(919 939 2939 2919) -4(939 959 2959 2939) -4(959 979 2979 2959) -4(979 999 2999 2979) -4(999 1019 3019 2999) -4(1019 1039 3039 3019) -4(1039 1059 3059 3039) -4(1059 1079 3079 3059) -4(1079 1099 3099 3079) -4(1099 1119 3119 3099) -4(1119 1139 3139 3119) -4(1139 1159 3159 3139) -4(1159 1179 3179 3159) -4(1179 1199 3199 3179) -4(1199 1219 3219 3199) -4(1219 1239 3239 3219) -4(1239 1259 3259 3239) -4(1259 1279 3279 3259) -4(1279 1299 3299 3279) -4(1299 1319 3319 3299) -4(1319 1339 3339 3319) -4(1339 1359 3359 3339) -4(1359 1379 3379 3359) -4(1379 1399 3399 3379) -4(1399 1419 3419 3399) -4(1419 1439 3439 3419) -4(1439 1459 3459 3439) -4(1459 1479 3479 3459) -4(1479 1499 3499 3479) -4(1499 1519 3519 3499) -4(1519 1539 3539 3519) -4(1539 1559 3559 3539) -4(1559 1579 3579 3559) -4(1579 1599 3599 3579) -4(1599 1619 3619 3599) -4(1619 1639 3639 3619) -4(1639 1659 3659 3639) -4(1659 1679 3679 3659) -4(1679 1699 3699 3679) -4(1699 1719 3719 3699) -4(1719 1739 3739 3719) -4(1739 1759 3759 3739) -4(1759 1779 3779 3759) -4(1779 1799 3799 3779) -4(1799 1819 3819 3799) -4(1819 1839 3839 3819) -4(1839 1859 3859 3839) -4(1859 1879 3879 3859) -4(1879 1899 3899 3879) -4(1899 1919 3919 3899) -4(1919 1939 3939 3919) -4(1939 1959 3959 3939) -4(1959 1979 3979 3959) -4(1979 1999 3999 3979) -4(1 0 2000 2001) -4(1 2001 2040 40) -4(40 2040 2060 60) -4(60 2060 2080 80) -4(80 2080 2100 100) -4(100 2100 2120 120) -4(120 2120 2140 140) -4(140 2140 2160 160) -4(160 2160 2180 180) -4(180 2180 2200 200) -4(200 2200 2220 220) -4(220 2220 2240 240) -4(240 2240 2260 260) -4(260 2260 2280 280) -4(280 2280 2300 300) -4(300 2300 2320 320) -4(320 2320 2340 340) -4(340 2340 2360 360) -4(360 2360 2380 380) -4(380 2380 2400 400) -4(400 2400 2420 420) -4(420 2420 2440 440) -4(440 2440 2460 460) -4(460 2460 2480 480) -4(480 2480 2500 500) -4(500 2500 2520 520) -4(520 2520 2540 540) -4(540 2540 2560 560) -4(560 2560 2580 580) -4(580 2580 2600 600) -4(600 2600 2620 620) -4(620 2620 2640 640) -4(640 2640 2660 660) -4(660 2660 2680 680) -4(680 2680 2700 700) -4(700 2700 2720 720) -4(720 2720 2740 740) -4(740 2740 2760 760) -4(760 2760 2780 780) -4(780 2780 2800 800) -4(800 2800 2820 820) -4(820 2820 2840 840) -4(840 2840 2860 860) -4(860 2860 2880 880) -4(880 2880 2900 900) -4(900 2900 2920 920) -4(920 2920 2940 940) -4(940 2940 2960 960) -4(960 2960 2980 980) -4(980 2980 3000 1000) -4(1000 3000 3020 1020) -4(1020 3020 3040 1040) -4(1040 3040 3060 1060) -4(1060 3060 3080 1080) -4(1080 3080 3100 1100) -4(1100 3100 3120 1120) -4(1120 3120 3140 1140) -4(1140 3140 3160 1160) -4(1160 3160 3180 1180) -4(1180 3180 3200 1200) -4(1200 3200 3220 1220) -4(1220 3220 3240 1240) -4(1240 3240 3260 1260) -4(1260 3260 3280 1280) -4(1280 3280 3300 1300) -4(1300 3300 3320 1320) -4(1320 3320 3340 1340) -4(1340 3340 3360 1360) -4(1360 3360 3380 1380) -4(1380 3380 3400 1400) -4(1400 3400 3420 1420) -4(1420 3420 3440 1440) -4(1440 3440 3460 1460) -4(1460 3460 3480 1480) -4(1480 3480 3500 1500) -4(1500 3500 3520 1520) -4(1520 3520 3540 1540) -4(1540 3540 3560 1560) -4(1560 3560 3580 1580) -4(1580 3580 3600 1600) -4(1600 3600 3620 1620) -4(1620 3620 3640 1640) -4(1640 3640 3660 1660) -4(1660 3660 3680 1680) -4(1680 3680 3700 1700) -4(1700 3700 3720 1720) -4(1720 3720 3740 1740) -4(1740 3740 3760 1760) -4(1760 3760 3780 1780) -4(1780 3780 3800 1800) -4(1800 3800 3820 1820) -4(1820 3820 3840 1840) -4(1840 3840 3860 1860) -4(1860 3860 3880 1880) -4(1880 3880 3900 1900) -4(1900 3900 3920 1920) -4(1920 3920 3940 1940) -4(1940 3940 3960 1960) -4(1960 3960 3980 1980) -4(2 2002 2000 0) -4(2 4 2004 2002) -4(4 6 2006 2004) -4(6 8 2008 2006) -4(8 10 2010 2008) -4(10 12 2012 2010) -4(12 14 2014 2012) -4(14 16 2016 2014) -4(16 18 2018 2016) -4(18 20 2020 2018) -4(20 22 2022 2020) -4(22 24 2024 2022) -4(24 26 2026 2024) -4(26 28 2028 2026) -4(28 30 2030 2028) -4(30 32 2032 2030) -4(32 34 2034 2032) -4(34 36 2036 2034) -4(36 38 2038 2036) -4(1980 3980 3981 1981) -4(1981 3981 3982 1982) -4(1982 3982 3983 1983) -4(1983 3983 3984 1984) -4(1984 3984 3985 1985) -4(1985 3985 3986 1986) -4(1986 3986 3987 1987) -4(1987 3987 3988 1988) -4(1988 3988 3989 1989) -4(1989 3989 3990 1990) -4(1990 3990 3991 1991) -4(1991 3991 3992 1992) -4(1992 3992 3993 1993) -4(1993 3993 3994 1994) -4(1994 3994 3995 1995) -4(1995 3995 3996 1996) -4(1996 3996 3997 1997) -4(1997 3997 3998 1998) -4(1998 3998 3999 1999) -4(3 2 0 1) -4(2003 2001 2000 2002) -4(3 5 4 2) -4(2003 2002 2004 2005) -4(5 7 6 4) -4(2005 2004 2006 2007) -4(7 9 8 6) -4(2007 2006 2008 2009) -4(9 11 10 8) -4(2009 2008 2010 2011) -4(11 13 12 10) -4(2011 2010 2012 2013) -4(13 15 14 12) -4(2013 2012 2014 2015) -4(15 17 16 14) -4(2015 2014 2016 2017) -4(17 19 18 16) -4(2017 2016 2018 2019) -4(19 21 20 18) -4(2019 2018 2020 2021) -4(21 23 22 20) -4(2021 2020 2022 2023) -4(23 25 24 22) -4(2023 2022 2024 2025) -4(25 27 26 24) -4(2025 2024 2026 2027) -4(27 29 28 26) -4(2027 2026 2028 2029) -4(29 31 30 28) -4(2029 2028 2030 2031) -4(31 33 32 30) -4(2031 2030 2032 2033) -4(33 35 34 32) -4(2033 2032 2034 2035) -4(35 37 36 34) -4(2035 2034 2036 2037) -4(37 39 38 36) -4(2037 2036 2038 2039) -4(1 40 41 3) -4(2001 2003 2041 2040) -4(3 41 42 5) -4(2003 2005 2042 2041) -4(5 42 43 7) -4(2005 2007 2043 2042) -4(7 43 44 9) -4(2007 2009 2044 2043) -4(9 44 45 11) -4(2009 2011 2045 2044) -4(11 45 46 13) -4(2011 2013 2046 2045) -4(13 46 47 15) -4(2013 2015 2047 2046) -4(15 47 48 17) -4(2015 2017 2048 2047) -4(17 48 49 19) -4(2017 2019 2049 2048) -4(19 49 50 21) -4(2019 2021 2050 2049) -4(21 50 51 23) -4(2021 2023 2051 2050) -4(23 51 52 25) -4(2023 2025 2052 2051) -4(25 52 53 27) -4(2025 2027 2053 2052) -4(27 53 54 29) -4(2027 2029 2054 2053) -4(29 54 55 31) -4(2029 2031 2055 2054) -4(31 55 56 33) -4(2031 2033 2056 2055) -4(33 56 57 35) -4(2033 2035 2057 2056) -4(35 57 58 37) -4(2035 2037 2058 2057) -4(37 58 59 39) -4(2037 2039 2059 2058) -4(40 60 61 41) -4(2040 2041 2061 2060) -4(41 61 62 42) -4(2041 2042 2062 2061) -4(42 62 63 43) -4(2042 2043 2063 2062) -4(43 63 64 44) -4(2043 2044 2064 2063) -4(44 64 65 45) -4(2044 2045 2065 2064) -4(45 65 66 46) -4(2045 2046 2066 2065) -4(46 66 67 47) -4(2046 2047 2067 2066) -4(47 67 68 48) -4(2047 2048 2068 2067) -4(48 68 69 49) -4(2048 2049 2069 2068) -4(49 69 70 50) -4(2049 2050 2070 2069) -4(50 70 71 51) -4(2050 2051 2071 2070) -4(51 71 72 52) -4(2051 2052 2072 2071) -4(52 72 73 53) -4(2052 2053 2073 2072) -4(53 73 74 54) -4(2053 2054 2074 2073) -4(54 74 75 55) -4(2054 2055 2075 2074) -4(55 75 76 56) -4(2055 2056 2076 2075) -4(56 76 77 57) -4(2056 2057 2077 2076) -4(57 77 78 58) -4(2057 2058 2078 2077) -4(58 78 79 59) -4(2058 2059 2079 2078) -4(60 80 81 61) -4(2060 2061 2081 2080) -4(61 81 82 62) -4(2061 2062 2082 2081) -4(62 82 83 63) -4(2062 2063 2083 2082) -4(63 83 84 64) -4(2063 2064 2084 2083) -4(64 84 85 65) -4(2064 2065 2085 2084) -4(65 85 86 66) -4(2065 2066 2086 2085) -4(66 86 87 67) -4(2066 2067 2087 2086) -4(67 87 88 68) -4(2067 2068 2088 2087) -4(68 88 89 69) -4(2068 2069 2089 2088) -4(69 89 90 70) -4(2069 2070 2090 2089) -4(70 90 91 71) -4(2070 2071 2091 2090) -4(71 91 92 72) -4(2071 2072 2092 2091) -4(72 92 93 73) -4(2072 2073 2093 2092) -4(73 93 94 74) -4(2073 2074 2094 2093) -4(74 94 95 75) -4(2074 2075 2095 2094) -4(75 95 96 76) -4(2075 2076 2096 2095) -4(76 96 97 77) -4(2076 2077 2097 2096) -4(77 97 98 78) -4(2077 2078 2098 2097) -4(78 98 99 79) -4(2078 2079 2099 2098) -4(80 100 101 81) -4(2080 2081 2101 2100) -4(81 101 102 82) -4(2081 2082 2102 2101) -4(82 102 103 83) -4(2082 2083 2103 2102) -4(83 103 104 84) -4(2083 2084 2104 2103) -4(84 104 105 85) -4(2084 2085 2105 2104) -4(85 105 106 86) -4(2085 2086 2106 2105) -4(86 106 107 87) -4(2086 2087 2107 2106) -4(87 107 108 88) -4(2087 2088 2108 2107) -4(88 108 109 89) -4(2088 2089 2109 2108) -4(89 109 110 90) -4(2089 2090 2110 2109) -4(90 110 111 91) -4(2090 2091 2111 2110) -4(91 111 112 92) -4(2091 2092 2112 2111) -4(92 112 113 93) -4(2092 2093 2113 2112) -4(93 113 114 94) -4(2093 2094 2114 2113) -4(94 114 115 95) -4(2094 2095 2115 2114) -4(95 115 116 96) -4(2095 2096 2116 2115) -4(96 116 117 97) -4(2096 2097 2117 2116) -4(97 117 118 98) -4(2097 2098 2118 2117) -4(98 118 119 99) -4(2098 2099 2119 2118) -4(100 120 121 101) -4(2100 2101 2121 2120) -4(101 121 122 102) -4(2101 2102 2122 2121) -4(102 122 123 103) -4(2102 2103 2123 2122) -4(103 123 124 104) -4(2103 2104 2124 2123) -4(104 124 125 105) -4(2104 2105 2125 2124) -4(105 125 126 106) -4(2105 2106 2126 2125) -4(106 126 127 107) -4(2106 2107 2127 2126) -4(107 127 128 108) -4(2107 2108 2128 2127) -4(108 128 129 109) -4(2108 2109 2129 2128) -4(109 129 130 110) -4(2109 2110 2130 2129) -4(110 130 131 111) -4(2110 2111 2131 2130) -4(111 131 132 112) -4(2111 2112 2132 2131) -4(112 132 133 113) -4(2112 2113 2133 2132) -4(113 133 134 114) -4(2113 2114 2134 2133) -4(114 134 135 115) -4(2114 2115 2135 2134) -4(115 135 136 116) -4(2115 2116 2136 2135) -4(116 136 137 117) -4(2116 2117 2137 2136) -4(117 137 138 118) -4(2117 2118 2138 2137) -4(118 138 139 119) -4(2118 2119 2139 2138) -4(120 140 141 121) -4(2120 2121 2141 2140) -4(121 141 142 122) -4(2121 2122 2142 2141) -4(122 142 143 123) -4(2122 2123 2143 2142) -4(123 143 144 124) -4(2123 2124 2144 2143) -4(124 144 145 125) -4(2124 2125 2145 2144) -4(125 145 146 126) -4(2125 2126 2146 2145) -4(126 146 147 127) -4(2126 2127 2147 2146) -4(127 147 148 128) -4(2127 2128 2148 2147) -4(128 148 149 129) -4(2128 2129 2149 2148) -4(129 149 150 130) -4(2129 2130 2150 2149) -4(130 150 151 131) -4(2130 2131 2151 2150) -4(131 151 152 132) -4(2131 2132 2152 2151) -4(132 152 153 133) -4(2132 2133 2153 2152) -4(133 153 154 134) -4(2133 2134 2154 2153) -4(134 154 155 135) -4(2134 2135 2155 2154) -4(135 155 156 136) -4(2135 2136 2156 2155) -4(136 156 157 137) -4(2136 2137 2157 2156) -4(137 157 158 138) -4(2137 2138 2158 2157) -4(138 158 159 139) -4(2138 2139 2159 2158) -4(140 160 161 141) -4(2140 2141 2161 2160) -4(141 161 162 142) -4(2141 2142 2162 2161) -4(142 162 163 143) -4(2142 2143 2163 2162) -4(143 163 164 144) -4(2143 2144 2164 2163) -4(144 164 165 145) -4(2144 2145 2165 2164) -4(145 165 166 146) -4(2145 2146 2166 2165) -4(146 166 167 147) -4(2146 2147 2167 2166) -4(147 167 168 148) -4(2147 2148 2168 2167) -4(148 168 169 149) -4(2148 2149 2169 2168) -4(149 169 170 150) -4(2149 2150 2170 2169) -4(150 170 171 151) -4(2150 2151 2171 2170) -4(151 171 172 152) -4(2151 2152 2172 2171) -4(152 172 173 153) -4(2152 2153 2173 2172) -4(153 173 174 154) -4(2153 2154 2174 2173) -4(154 174 175 155) -4(2154 2155 2175 2174) -4(155 175 176 156) -4(2155 2156 2176 2175) -4(156 176 177 157) -4(2156 2157 2177 2176) -4(157 177 178 158) -4(2157 2158 2178 2177) -4(158 178 179 159) -4(2158 2159 2179 2178) -4(160 180 181 161) -4(2160 2161 2181 2180) -4(161 181 182 162) -4(2161 2162 2182 2181) -4(162 182 183 163) -4(2162 2163 2183 2182) -4(163 183 184 164) -4(2163 2164 2184 2183) -4(164 184 185 165) -4(2164 2165 2185 2184) -4(165 185 186 166) -4(2165 2166 2186 2185) -4(166 186 187 167) -4(2166 2167 2187 2186) -4(167 187 188 168) -4(2167 2168 2188 2187) -4(168 188 189 169) -4(2168 2169 2189 2188) -4(169 189 190 170) -4(2169 2170 2190 2189) -4(170 190 191 171) -4(2170 2171 2191 2190) -4(171 191 192 172) -4(2171 2172 2192 2191) -4(172 192 193 173) -4(2172 2173 2193 2192) -4(173 193 194 174) -4(2173 2174 2194 2193) -4(174 194 195 175) -4(2174 2175 2195 2194) -4(175 195 196 176) -4(2175 2176 2196 2195) -4(176 196 197 177) -4(2176 2177 2197 2196) -4(177 197 198 178) -4(2177 2178 2198 2197) -4(178 198 199 179) -4(2178 2179 2199 2198) -4(180 200 201 181) -4(2180 2181 2201 2200) -4(181 201 202 182) -4(2181 2182 2202 2201) -4(182 202 203 183) -4(2182 2183 2203 2202) -4(183 203 204 184) -4(2183 2184 2204 2203) -4(184 204 205 185) -4(2184 2185 2205 2204) -4(185 205 206 186) -4(2185 2186 2206 2205) -4(186 206 207 187) -4(2186 2187 2207 2206) -4(187 207 208 188) -4(2187 2188 2208 2207) -4(188 208 209 189) -4(2188 2189 2209 2208) -4(189 209 210 190) -4(2189 2190 2210 2209) -4(190 210 211 191) -4(2190 2191 2211 2210) -4(191 211 212 192) -4(2191 2192 2212 2211) -4(192 212 213 193) -4(2192 2193 2213 2212) -4(193 213 214 194) -4(2193 2194 2214 2213) -4(194 214 215 195) -4(2194 2195 2215 2214) -4(195 215 216 196) -4(2195 2196 2216 2215) -4(196 216 217 197) -4(2196 2197 2217 2216) -4(197 217 218 198) -4(2197 2198 2218 2217) -4(198 218 219 199) -4(2198 2199 2219 2218) -4(200 220 221 201) -4(2200 2201 2221 2220) -4(201 221 222 202) -4(2201 2202 2222 2221) -4(202 222 223 203) -4(2202 2203 2223 2222) -4(203 223 224 204) -4(2203 2204 2224 2223) -4(204 224 225 205) -4(2204 2205 2225 2224) -4(205 225 226 206) -4(2205 2206 2226 2225) -4(206 226 227 207) -4(2206 2207 2227 2226) -4(207 227 228 208) -4(2207 2208 2228 2227) -4(208 228 229 209) -4(2208 2209 2229 2228) -4(209 229 230 210) -4(2209 2210 2230 2229) -4(210 230 231 211) -4(2210 2211 2231 2230) -4(211 231 232 212) -4(2211 2212 2232 2231) -4(212 232 233 213) -4(2212 2213 2233 2232) -4(213 233 234 214) -4(2213 2214 2234 2233) -4(214 234 235 215) -4(2214 2215 2235 2234) -4(215 235 236 216) -4(2215 2216 2236 2235) -4(216 236 237 217) -4(2216 2217 2237 2236) -4(217 237 238 218) -4(2217 2218 2238 2237) -4(218 238 239 219) -4(2218 2219 2239 2238) -4(220 240 241 221) -4(2220 2221 2241 2240) -4(221 241 242 222) -4(2221 2222 2242 2241) -4(222 242 243 223) -4(2222 2223 2243 2242) -4(223 243 244 224) -4(2223 2224 2244 2243) -4(224 244 245 225) -4(2224 2225 2245 2244) -4(225 245 246 226) -4(2225 2226 2246 2245) -4(226 246 247 227) -4(2226 2227 2247 2246) -4(227 247 248 228) -4(2227 2228 2248 2247) -4(228 248 249 229) -4(2228 2229 2249 2248) -4(229 249 250 230) -4(2229 2230 2250 2249) -4(230 250 251 231) -4(2230 2231 2251 2250) -4(231 251 252 232) -4(2231 2232 2252 2251) -4(232 252 253 233) -4(2232 2233 2253 2252) -4(233 253 254 234) -4(2233 2234 2254 2253) -4(234 254 255 235) -4(2234 2235 2255 2254) -4(235 255 256 236) -4(2235 2236 2256 2255) -4(236 256 257 237) -4(2236 2237 2257 2256) -4(237 257 258 238) -4(2237 2238 2258 2257) -4(238 258 259 239) -4(2238 2239 2259 2258) -4(240 260 261 241) -4(2240 2241 2261 2260) -4(241 261 262 242) -4(2241 2242 2262 2261) -4(242 262 263 243) -4(2242 2243 2263 2262) -4(243 263 264 244) -4(2243 2244 2264 2263) -4(244 264 265 245) -4(2244 2245 2265 2264) -4(245 265 266 246) -4(2245 2246 2266 2265) -4(246 266 267 247) -4(2246 2247 2267 2266) -4(247 267 268 248) -4(2247 2248 2268 2267) -4(248 268 269 249) -4(2248 2249 2269 2268) -4(249 269 270 250) -4(2249 2250 2270 2269) -4(250 270 271 251) -4(2250 2251 2271 2270) -4(251 271 272 252) -4(2251 2252 2272 2271) -4(252 272 273 253) -4(2252 2253 2273 2272) -4(253 273 274 254) -4(2253 2254 2274 2273) -4(254 274 275 255) -4(2254 2255 2275 2274) -4(255 275 276 256) -4(2255 2256 2276 2275) -4(256 276 277 257) -4(2256 2257 2277 2276) -4(257 277 278 258) -4(2257 2258 2278 2277) -4(258 278 279 259) -4(2258 2259 2279 2278) -4(260 280 281 261) -4(2260 2261 2281 2280) -4(261 281 282 262) -4(2261 2262 2282 2281) -4(262 282 283 263) -4(2262 2263 2283 2282) -4(263 283 284 264) -4(2263 2264 2284 2283) -4(264 284 285 265) -4(2264 2265 2285 2284) -4(265 285 286 266) -4(2265 2266 2286 2285) -4(266 286 287 267) -4(2266 2267 2287 2286) -4(267 287 288 268) -4(2267 2268 2288 2287) -4(268 288 289 269) -4(2268 2269 2289 2288) -4(269 289 290 270) -4(2269 2270 2290 2289) -4(270 290 291 271) -4(2270 2271 2291 2290) -4(271 291 292 272) -4(2271 2272 2292 2291) -4(272 292 293 273) -4(2272 2273 2293 2292) -4(273 293 294 274) -4(2273 2274 2294 2293) -4(274 294 295 275) -4(2274 2275 2295 2294) -4(275 295 296 276) -4(2275 2276 2296 2295) -4(276 296 297 277) -4(2276 2277 2297 2296) -4(277 297 298 278) -4(2277 2278 2298 2297) -4(278 298 299 279) -4(2278 2279 2299 2298) -4(280 300 301 281) -4(2280 2281 2301 2300) -4(281 301 302 282) -4(2281 2282 2302 2301) -4(282 302 303 283) -4(2282 2283 2303 2302) -4(283 303 304 284) -4(2283 2284 2304 2303) -4(284 304 305 285) -4(2284 2285 2305 2304) -4(285 305 306 286) -4(2285 2286 2306 2305) -4(286 306 307 287) -4(2286 2287 2307 2306) -4(287 307 308 288) -4(2287 2288 2308 2307) -4(288 308 309 289) -4(2288 2289 2309 2308) -4(289 309 310 290) -4(2289 2290 2310 2309) -4(290 310 311 291) -4(2290 2291 2311 2310) -4(291 311 312 292) -4(2291 2292 2312 2311) -4(292 312 313 293) -4(2292 2293 2313 2312) -4(293 313 314 294) -4(2293 2294 2314 2313) -4(294 314 315 295) -4(2294 2295 2315 2314) -4(295 315 316 296) -4(2295 2296 2316 2315) -4(296 316 317 297) -4(2296 2297 2317 2316) -4(297 317 318 298) -4(2297 2298 2318 2317) -4(298 318 319 299) -4(2298 2299 2319 2318) -4(300 320 321 301) -4(2300 2301 2321 2320) -4(301 321 322 302) -4(2301 2302 2322 2321) -4(302 322 323 303) -4(2302 2303 2323 2322) -4(303 323 324 304) -4(2303 2304 2324 2323) -4(304 324 325 305) -4(2304 2305 2325 2324) -4(305 325 326 306) -4(2305 2306 2326 2325) -4(306 326 327 307) -4(2306 2307 2327 2326) -4(307 327 328 308) -4(2307 2308 2328 2327) -4(308 328 329 309) -4(2308 2309 2329 2328) -4(309 329 330 310) -4(2309 2310 2330 2329) -4(310 330 331 311) -4(2310 2311 2331 2330) -4(311 331 332 312) -4(2311 2312 2332 2331) -4(312 332 333 313) -4(2312 2313 2333 2332) -4(313 333 334 314) -4(2313 2314 2334 2333) -4(314 334 335 315) -4(2314 2315 2335 2334) -4(315 335 336 316) -4(2315 2316 2336 2335) -4(316 336 337 317) -4(2316 2317 2337 2336) -4(317 337 338 318) -4(2317 2318 2338 2337) -4(318 338 339 319) -4(2318 2319 2339 2338) -4(320 340 341 321) -4(2320 2321 2341 2340) -4(321 341 342 322) -4(2321 2322 2342 2341) -4(322 342 343 323) -4(2322 2323 2343 2342) -4(323 343 344 324) -4(2323 2324 2344 2343) -4(324 344 345 325) -4(2324 2325 2345 2344) -4(325 345 346 326) -4(2325 2326 2346 2345) -4(326 346 347 327) -4(2326 2327 2347 2346) -4(327 347 348 328) -4(2327 2328 2348 2347) -4(328 348 349 329) -4(2328 2329 2349 2348) -4(329 349 350 330) -4(2329 2330 2350 2349) -4(330 350 351 331) -4(2330 2331 2351 2350) -4(331 351 352 332) -4(2331 2332 2352 2351) -4(332 352 353 333) -4(2332 2333 2353 2352) -4(333 353 354 334) -4(2333 2334 2354 2353) -4(334 354 355 335) -4(2334 2335 2355 2354) -4(335 355 356 336) -4(2335 2336 2356 2355) -4(336 356 357 337) -4(2336 2337 2357 2356) -4(337 357 358 338) -4(2337 2338 2358 2357) -4(338 358 359 339) -4(2338 2339 2359 2358) -4(340 360 361 341) -4(2340 2341 2361 2360) -4(341 361 362 342) -4(2341 2342 2362 2361) -4(342 362 363 343) -4(2342 2343 2363 2362) -4(343 363 364 344) -4(2343 2344 2364 2363) -4(344 364 365 345) -4(2344 2345 2365 2364) -4(345 365 366 346) -4(2345 2346 2366 2365) -4(346 366 367 347) -4(2346 2347 2367 2366) -4(347 367 368 348) -4(2347 2348 2368 2367) -4(348 368 369 349) -4(2348 2349 2369 2368) -4(349 369 370 350) -4(2349 2350 2370 2369) -4(350 370 371 351) -4(2350 2351 2371 2370) -4(351 371 372 352) -4(2351 2352 2372 2371) -4(352 372 373 353) -4(2352 2353 2373 2372) -4(353 373 374 354) -4(2353 2354 2374 2373) -4(354 374 375 355) -4(2354 2355 2375 2374) -4(355 375 376 356) -4(2355 2356 2376 2375) -4(356 376 377 357) -4(2356 2357 2377 2376) -4(357 377 378 358) -4(2357 2358 2378 2377) -4(358 378 379 359) -4(2358 2359 2379 2378) -4(360 380 381 361) -4(2360 2361 2381 2380) -4(361 381 382 362) -4(2361 2362 2382 2381) -4(362 382 383 363) -4(2362 2363 2383 2382) -4(363 383 384 364) -4(2363 2364 2384 2383) -4(364 384 385 365) -4(2364 2365 2385 2384) -4(365 385 386 366) -4(2365 2366 2386 2385) -4(366 386 387 367) -4(2366 2367 2387 2386) -4(367 387 388 368) -4(2367 2368 2388 2387) -4(368 388 389 369) -4(2368 2369 2389 2388) -4(369 389 390 370) -4(2369 2370 2390 2389) -4(370 390 391 371) -4(2370 2371 2391 2390) -4(371 391 392 372) -4(2371 2372 2392 2391) -4(372 392 393 373) -4(2372 2373 2393 2392) -4(373 393 394 374) -4(2373 2374 2394 2393) -4(374 394 395 375) -4(2374 2375 2395 2394) -4(375 395 396 376) -4(2375 2376 2396 2395) -4(376 396 397 377) -4(2376 2377 2397 2396) -4(377 397 398 378) -4(2377 2378 2398 2397) -4(378 398 399 379) -4(2378 2379 2399 2398) -4(380 400 401 381) -4(2380 2381 2401 2400) -4(381 401 402 382) -4(2381 2382 2402 2401) -4(382 402 403 383) -4(2382 2383 2403 2402) -4(383 403 404 384) -4(2383 2384 2404 2403) -4(384 404 405 385) -4(2384 2385 2405 2404) -4(385 405 406 386) -4(2385 2386 2406 2405) -4(386 406 407 387) -4(2386 2387 2407 2406) -4(387 407 408 388) -4(2387 2388 2408 2407) -4(388 408 409 389) -4(2388 2389 2409 2408) -4(389 409 410 390) -4(2389 2390 2410 2409) -4(390 410 411 391) -4(2390 2391 2411 2410) -4(391 411 412 392) -4(2391 2392 2412 2411) -4(392 412 413 393) -4(2392 2393 2413 2412) -4(393 413 414 394) -4(2393 2394 2414 2413) -4(394 414 415 395) -4(2394 2395 2415 2414) -4(395 415 416 396) -4(2395 2396 2416 2415) -4(396 416 417 397) -4(2396 2397 2417 2416) -4(397 417 418 398) -4(2397 2398 2418 2417) -4(398 418 419 399) -4(2398 2399 2419 2418) -4(400 420 421 401) -4(2400 2401 2421 2420) -4(401 421 422 402) -4(2401 2402 2422 2421) -4(402 422 423 403) -4(2402 2403 2423 2422) -4(403 423 424 404) -4(2403 2404 2424 2423) -4(404 424 425 405) -4(2404 2405 2425 2424) -4(405 425 426 406) -4(2405 2406 2426 2425) -4(406 426 427 407) -4(2406 2407 2427 2426) -4(407 427 428 408) -4(2407 2408 2428 2427) -4(408 428 429 409) -4(2408 2409 2429 2428) -4(409 429 430 410) -4(2409 2410 2430 2429) -4(410 430 431 411) -4(2410 2411 2431 2430) -4(411 431 432 412) -4(2411 2412 2432 2431) -4(412 432 433 413) -4(2412 2413 2433 2432) -4(413 433 434 414) -4(2413 2414 2434 2433) -4(414 434 435 415) -4(2414 2415 2435 2434) -4(415 435 436 416) -4(2415 2416 2436 2435) -4(416 436 437 417) -4(2416 2417 2437 2436) -4(417 437 438 418) -4(2417 2418 2438 2437) -4(418 438 439 419) -4(2418 2419 2439 2438) -4(420 440 441 421) -4(2420 2421 2441 2440) -4(421 441 442 422) -4(2421 2422 2442 2441) -4(422 442 443 423) -4(2422 2423 2443 2442) -4(423 443 444 424) -4(2423 2424 2444 2443) -4(424 444 445 425) -4(2424 2425 2445 2444) -4(425 445 446 426) -4(2425 2426 2446 2445) -4(426 446 447 427) -4(2426 2427 2447 2446) -4(427 447 448 428) -4(2427 2428 2448 2447) -4(428 448 449 429) -4(2428 2429 2449 2448) -4(429 449 450 430) -4(2429 2430 2450 2449) -4(430 450 451 431) -4(2430 2431 2451 2450) -4(431 451 452 432) -4(2431 2432 2452 2451) -4(432 452 453 433) -4(2432 2433 2453 2452) -4(433 453 454 434) -4(2433 2434 2454 2453) -4(434 454 455 435) -4(2434 2435 2455 2454) -4(435 455 456 436) -4(2435 2436 2456 2455) -4(436 456 457 437) -4(2436 2437 2457 2456) -4(437 457 458 438) -4(2437 2438 2458 2457) -4(438 458 459 439) -4(2438 2439 2459 2458) -4(440 460 461 441) -4(2440 2441 2461 2460) -4(441 461 462 442) -4(2441 2442 2462 2461) -4(442 462 463 443) -4(2442 2443 2463 2462) -4(443 463 464 444) -4(2443 2444 2464 2463) -4(444 464 465 445) -4(2444 2445 2465 2464) -4(445 465 466 446) -4(2445 2446 2466 2465) -4(446 466 467 447) -4(2446 2447 2467 2466) -4(447 467 468 448) -4(2447 2448 2468 2467) -4(448 468 469 449) -4(2448 2449 2469 2468) -4(449 469 470 450) -4(2449 2450 2470 2469) -4(450 470 471 451) -4(2450 2451 2471 2470) -4(451 471 472 452) -4(2451 2452 2472 2471) -4(452 472 473 453) -4(2452 2453 2473 2472) -4(453 473 474 454) -4(2453 2454 2474 2473) -4(454 474 475 455) -4(2454 2455 2475 2474) -4(455 475 476 456) -4(2455 2456 2476 2475) -4(456 476 477 457) -4(2456 2457 2477 2476) -4(457 477 478 458) -4(2457 2458 2478 2477) -4(458 478 479 459) -4(2458 2459 2479 2478) -4(460 480 481 461) -4(2460 2461 2481 2480) -4(461 481 482 462) -4(2461 2462 2482 2481) -4(462 482 483 463) -4(2462 2463 2483 2482) -4(463 483 484 464) -4(2463 2464 2484 2483) -4(464 484 485 465) -4(2464 2465 2485 2484) -4(465 485 486 466) -4(2465 2466 2486 2485) -4(466 486 487 467) -4(2466 2467 2487 2486) -4(467 487 488 468) -4(2467 2468 2488 2487) -4(468 488 489 469) -4(2468 2469 2489 2488) -4(469 489 490 470) -4(2469 2470 2490 2489) -4(470 490 491 471) -4(2470 2471 2491 2490) -4(471 491 492 472) -4(2471 2472 2492 2491) -4(472 492 493 473) -4(2472 2473 2493 2492) -4(473 493 494 474) -4(2473 2474 2494 2493) -4(474 494 495 475) -4(2474 2475 2495 2494) -4(475 495 496 476) -4(2475 2476 2496 2495) -4(476 496 497 477) -4(2476 2477 2497 2496) -4(477 497 498 478) -4(2477 2478 2498 2497) -4(478 498 499 479) -4(2478 2479 2499 2498) -4(480 500 501 481) -4(2480 2481 2501 2500) -4(481 501 502 482) -4(2481 2482 2502 2501) -4(482 502 503 483) -4(2482 2483 2503 2502) -4(483 503 504 484) -4(2483 2484 2504 2503) -4(484 504 505 485) -4(2484 2485 2505 2504) -4(485 505 506 486) -4(2485 2486 2506 2505) -4(486 506 507 487) -4(2486 2487 2507 2506) -4(487 507 508 488) -4(2487 2488 2508 2507) -4(488 508 509 489) -4(2488 2489 2509 2508) -4(489 509 510 490) -4(2489 2490 2510 2509) -4(490 510 511 491) -4(2490 2491 2511 2510) -4(491 511 512 492) -4(2491 2492 2512 2511) -4(492 512 513 493) -4(2492 2493 2513 2512) -4(493 513 514 494) -4(2493 2494 2514 2513) -4(494 514 515 495) -4(2494 2495 2515 2514) -4(495 515 516 496) -4(2495 2496 2516 2515) -4(496 516 517 497) -4(2496 2497 2517 2516) -4(497 517 518 498) -4(2497 2498 2518 2517) -4(498 518 519 499) -4(2498 2499 2519 2518) -4(500 520 521 501) -4(2500 2501 2521 2520) -4(501 521 522 502) -4(2501 2502 2522 2521) -4(502 522 523 503) -4(2502 2503 2523 2522) -4(503 523 524 504) -4(2503 2504 2524 2523) -4(504 524 525 505) -4(2504 2505 2525 2524) -4(505 525 526 506) -4(2505 2506 2526 2525) -4(506 526 527 507) -4(2506 2507 2527 2526) -4(507 527 528 508) -4(2507 2508 2528 2527) -4(508 528 529 509) -4(2508 2509 2529 2528) -4(509 529 530 510) -4(2509 2510 2530 2529) -4(510 530 531 511) -4(2510 2511 2531 2530) -4(511 531 532 512) -4(2511 2512 2532 2531) -4(512 532 533 513) -4(2512 2513 2533 2532) -4(513 533 534 514) -4(2513 2514 2534 2533) -4(514 534 535 515) -4(2514 2515 2535 2534) -4(515 535 536 516) -4(2515 2516 2536 2535) -4(516 536 537 517) -4(2516 2517 2537 2536) -4(517 537 538 518) -4(2517 2518 2538 2537) -4(518 538 539 519) -4(2518 2519 2539 2538) -4(520 540 541 521) -4(2520 2521 2541 2540) -4(521 541 542 522) -4(2521 2522 2542 2541) -4(522 542 543 523) -4(2522 2523 2543 2542) -4(523 543 544 524) -4(2523 2524 2544 2543) -4(524 544 545 525) -4(2524 2525 2545 2544) -4(525 545 546 526) -4(2525 2526 2546 2545) -4(526 546 547 527) -4(2526 2527 2547 2546) -4(527 547 548 528) -4(2527 2528 2548 2547) -4(528 548 549 529) -4(2528 2529 2549 2548) -4(529 549 550 530) -4(2529 2530 2550 2549) -4(530 550 551 531) -4(2530 2531 2551 2550) -4(531 551 552 532) -4(2531 2532 2552 2551) -4(532 552 553 533) -4(2532 2533 2553 2552) -4(533 553 554 534) -4(2533 2534 2554 2553) -4(534 554 555 535) -4(2534 2535 2555 2554) -4(535 555 556 536) -4(2535 2536 2556 2555) -4(536 556 557 537) -4(2536 2537 2557 2556) -4(537 557 558 538) -4(2537 2538 2558 2557) -4(538 558 559 539) -4(2538 2539 2559 2558) -4(540 560 561 541) -4(2540 2541 2561 2560) -4(541 561 562 542) -4(2541 2542 2562 2561) -4(542 562 563 543) -4(2542 2543 2563 2562) -4(543 563 564 544) -4(2543 2544 2564 2563) -4(544 564 565 545) -4(2544 2545 2565 2564) -4(545 565 566 546) -4(2545 2546 2566 2565) -4(546 566 567 547) -4(2546 2547 2567 2566) -4(547 567 568 548) -4(2547 2548 2568 2567) -4(548 568 569 549) -4(2548 2549 2569 2568) -4(549 569 570 550) -4(2549 2550 2570 2569) -4(550 570 571 551) -4(2550 2551 2571 2570) -4(551 571 572 552) -4(2551 2552 2572 2571) -4(552 572 573 553) -4(2552 2553 2573 2572) -4(553 573 574 554) -4(2553 2554 2574 2573) -4(554 574 575 555) -4(2554 2555 2575 2574) -4(555 575 576 556) -4(2555 2556 2576 2575) -4(556 576 577 557) -4(2556 2557 2577 2576) -4(557 577 578 558) -4(2557 2558 2578 2577) -4(558 578 579 559) -4(2558 2559 2579 2578) -4(560 580 581 561) -4(2560 2561 2581 2580) -4(561 581 582 562) -4(2561 2562 2582 2581) -4(562 582 583 563) -4(2562 2563 2583 2582) -4(563 583 584 564) -4(2563 2564 2584 2583) -4(564 584 585 565) -4(2564 2565 2585 2584) -4(565 585 586 566) -4(2565 2566 2586 2585) -4(566 586 587 567) -4(2566 2567 2587 2586) -4(567 587 588 568) -4(2567 2568 2588 2587) -4(568 588 589 569) -4(2568 2569 2589 2588) -4(569 589 590 570) -4(2569 2570 2590 2589) -4(570 590 591 571) -4(2570 2571 2591 2590) -4(571 591 592 572) -4(2571 2572 2592 2591) -4(572 592 593 573) -4(2572 2573 2593 2592) -4(573 593 594 574) -4(2573 2574 2594 2593) -4(574 594 595 575) -4(2574 2575 2595 2594) -4(575 595 596 576) -4(2575 2576 2596 2595) -4(576 596 597 577) -4(2576 2577 2597 2596) -4(577 597 598 578) -4(2577 2578 2598 2597) -4(578 598 599 579) -4(2578 2579 2599 2598) -4(580 600 601 581) -4(2580 2581 2601 2600) -4(581 601 602 582) -4(2581 2582 2602 2601) -4(582 602 603 583) -4(2582 2583 2603 2602) -4(583 603 604 584) -4(2583 2584 2604 2603) -4(584 604 605 585) -4(2584 2585 2605 2604) -4(585 605 606 586) -4(2585 2586 2606 2605) -4(586 606 607 587) -4(2586 2587 2607 2606) -4(587 607 608 588) -4(2587 2588 2608 2607) -4(588 608 609 589) -4(2588 2589 2609 2608) -4(589 609 610 590) -4(2589 2590 2610 2609) -4(590 610 611 591) -4(2590 2591 2611 2610) -4(591 611 612 592) -4(2591 2592 2612 2611) -4(592 612 613 593) -4(2592 2593 2613 2612) -4(593 613 614 594) -4(2593 2594 2614 2613) -4(594 614 615 595) -4(2594 2595 2615 2614) -4(595 615 616 596) -4(2595 2596 2616 2615) -4(596 616 617 597) -4(2596 2597 2617 2616) -4(597 617 618 598) -4(2597 2598 2618 2617) -4(598 618 619 599) -4(2598 2599 2619 2618) -4(600 620 621 601) -4(2600 2601 2621 2620) -4(601 621 622 602) -4(2601 2602 2622 2621) -4(602 622 623 603) -4(2602 2603 2623 2622) -4(603 623 624 604) -4(2603 2604 2624 2623) -4(604 624 625 605) -4(2604 2605 2625 2624) -4(605 625 626 606) -4(2605 2606 2626 2625) -4(606 626 627 607) -4(2606 2607 2627 2626) -4(607 627 628 608) -4(2607 2608 2628 2627) -4(608 628 629 609) -4(2608 2609 2629 2628) -4(609 629 630 610) -4(2609 2610 2630 2629) -4(610 630 631 611) -4(2610 2611 2631 2630) -4(611 631 632 612) -4(2611 2612 2632 2631) -4(612 632 633 613) -4(2612 2613 2633 2632) -4(613 633 634 614) -4(2613 2614 2634 2633) -4(614 634 635 615) -4(2614 2615 2635 2634) -4(615 635 636 616) -4(2615 2616 2636 2635) -4(616 636 637 617) -4(2616 2617 2637 2636) -4(617 637 638 618) -4(2617 2618 2638 2637) -4(618 638 639 619) -4(2618 2619 2639 2638) -4(620 640 641 621) -4(2620 2621 2641 2640) -4(621 641 642 622) -4(2621 2622 2642 2641) -4(622 642 643 623) -4(2622 2623 2643 2642) -4(623 643 644 624) -4(2623 2624 2644 2643) -4(624 644 645 625) -4(2624 2625 2645 2644) -4(625 645 646 626) -4(2625 2626 2646 2645) -4(626 646 647 627) -4(2626 2627 2647 2646) -4(627 647 648 628) -4(2627 2628 2648 2647) -4(628 648 649 629) -4(2628 2629 2649 2648) -4(629 649 650 630) -4(2629 2630 2650 2649) -4(630 650 651 631) -4(2630 2631 2651 2650) -4(631 651 652 632) -4(2631 2632 2652 2651) -4(632 652 653 633) -4(2632 2633 2653 2652) -4(633 653 654 634) -4(2633 2634 2654 2653) -4(634 654 655 635) -4(2634 2635 2655 2654) -4(635 655 656 636) -4(2635 2636 2656 2655) -4(636 656 657 637) -4(2636 2637 2657 2656) -4(637 657 658 638) -4(2637 2638 2658 2657) -4(638 658 659 639) -4(2638 2639 2659 2658) -4(640 660 661 641) -4(2640 2641 2661 2660) -4(641 661 662 642) -4(2641 2642 2662 2661) -4(642 662 663 643) -4(2642 2643 2663 2662) -4(643 663 664 644) -4(2643 2644 2664 2663) -4(644 664 665 645) -4(2644 2645 2665 2664) -4(645 665 666 646) -4(2645 2646 2666 2665) -4(646 666 667 647) -4(2646 2647 2667 2666) -4(647 667 668 648) -4(2647 2648 2668 2667) -4(648 668 669 649) -4(2648 2649 2669 2668) -4(649 669 670 650) -4(2649 2650 2670 2669) -4(650 670 671 651) -4(2650 2651 2671 2670) -4(651 671 672 652) -4(2651 2652 2672 2671) -4(652 672 673 653) -4(2652 2653 2673 2672) -4(653 673 674 654) -4(2653 2654 2674 2673) -4(654 674 675 655) -4(2654 2655 2675 2674) -4(655 675 676 656) -4(2655 2656 2676 2675) -4(656 676 677 657) -4(2656 2657 2677 2676) -4(657 677 678 658) -4(2657 2658 2678 2677) -4(658 678 679 659) -4(2658 2659 2679 2678) -4(660 680 681 661) -4(2660 2661 2681 2680) -4(661 681 682 662) -4(2661 2662 2682 2681) -4(662 682 683 663) -4(2662 2663 2683 2682) -4(663 683 684 664) -4(2663 2664 2684 2683) -4(664 684 685 665) -4(2664 2665 2685 2684) -4(665 685 686 666) -4(2665 2666 2686 2685) -4(666 686 687 667) -4(2666 2667 2687 2686) -4(667 687 688 668) -4(2667 2668 2688 2687) -4(668 688 689 669) -4(2668 2669 2689 2688) -4(669 689 690 670) -4(2669 2670 2690 2689) -4(670 690 691 671) -4(2670 2671 2691 2690) -4(671 691 692 672) -4(2671 2672 2692 2691) -4(672 692 693 673) -4(2672 2673 2693 2692) -4(673 693 694 674) -4(2673 2674 2694 2693) -4(674 694 695 675) -4(2674 2675 2695 2694) -4(675 695 696 676) -4(2675 2676 2696 2695) -4(676 696 697 677) -4(2676 2677 2697 2696) -4(677 697 698 678) -4(2677 2678 2698 2697) -4(678 698 699 679) -4(2678 2679 2699 2698) -4(680 700 701 681) -4(2680 2681 2701 2700) -4(681 701 702 682) -4(2681 2682 2702 2701) -4(682 702 703 683) -4(2682 2683 2703 2702) -4(683 703 704 684) -4(2683 2684 2704 2703) -4(684 704 705 685) -4(2684 2685 2705 2704) -4(685 705 706 686) -4(2685 2686 2706 2705) -4(686 706 707 687) -4(2686 2687 2707 2706) -4(687 707 708 688) -4(2687 2688 2708 2707) -4(688 708 709 689) -4(2688 2689 2709 2708) -4(689 709 710 690) -4(2689 2690 2710 2709) -4(690 710 711 691) -4(2690 2691 2711 2710) -4(691 711 712 692) -4(2691 2692 2712 2711) -4(692 712 713 693) -4(2692 2693 2713 2712) -4(693 713 714 694) -4(2693 2694 2714 2713) -4(694 714 715 695) -4(2694 2695 2715 2714) -4(695 715 716 696) -4(2695 2696 2716 2715) -4(696 716 717 697) -4(2696 2697 2717 2716) -4(697 717 718 698) -4(2697 2698 2718 2717) -4(698 718 719 699) -4(2698 2699 2719 2718) -4(700 720 721 701) -4(2700 2701 2721 2720) -4(701 721 722 702) -4(2701 2702 2722 2721) -4(702 722 723 703) -4(2702 2703 2723 2722) -4(703 723 724 704) -4(2703 2704 2724 2723) -4(704 724 725 705) -4(2704 2705 2725 2724) -4(705 725 726 706) -4(2705 2706 2726 2725) -4(706 726 727 707) -4(2706 2707 2727 2726) -4(707 727 728 708) -4(2707 2708 2728 2727) -4(708 728 729 709) -4(2708 2709 2729 2728) -4(709 729 730 710) -4(2709 2710 2730 2729) -4(710 730 731 711) -4(2710 2711 2731 2730) -4(711 731 732 712) -4(2711 2712 2732 2731) -4(712 732 733 713) -4(2712 2713 2733 2732) -4(713 733 734 714) -4(2713 2714 2734 2733) -4(714 734 735 715) -4(2714 2715 2735 2734) -4(715 735 736 716) -4(2715 2716 2736 2735) -4(716 736 737 717) -4(2716 2717 2737 2736) -4(717 737 738 718) -4(2717 2718 2738 2737) -4(718 738 739 719) -4(2718 2719 2739 2738) -4(720 740 741 721) -4(2720 2721 2741 2740) -4(721 741 742 722) -4(2721 2722 2742 2741) -4(722 742 743 723) -4(2722 2723 2743 2742) -4(723 743 744 724) -4(2723 2724 2744 2743) -4(724 744 745 725) -4(2724 2725 2745 2744) -4(725 745 746 726) -4(2725 2726 2746 2745) -4(726 746 747 727) -4(2726 2727 2747 2746) -4(727 747 748 728) -4(2727 2728 2748 2747) -4(728 748 749 729) -4(2728 2729 2749 2748) -4(729 749 750 730) -4(2729 2730 2750 2749) -4(730 750 751 731) -4(2730 2731 2751 2750) -4(731 751 752 732) -4(2731 2732 2752 2751) -4(732 752 753 733) -4(2732 2733 2753 2752) -4(733 753 754 734) -4(2733 2734 2754 2753) -4(734 754 755 735) -4(2734 2735 2755 2754) -4(735 755 756 736) -4(2735 2736 2756 2755) -4(736 756 757 737) -4(2736 2737 2757 2756) -4(737 757 758 738) -4(2737 2738 2758 2757) -4(738 758 759 739) -4(2738 2739 2759 2758) -4(740 760 761 741) -4(2740 2741 2761 2760) -4(741 761 762 742) -4(2741 2742 2762 2761) -4(742 762 763 743) -4(2742 2743 2763 2762) -4(743 763 764 744) -4(2743 2744 2764 2763) -4(744 764 765 745) -4(2744 2745 2765 2764) -4(745 765 766 746) -4(2745 2746 2766 2765) -4(746 766 767 747) -4(2746 2747 2767 2766) -4(747 767 768 748) -4(2747 2748 2768 2767) -4(748 768 769 749) -4(2748 2749 2769 2768) -4(749 769 770 750) -4(2749 2750 2770 2769) -4(750 770 771 751) -4(2750 2751 2771 2770) -4(751 771 772 752) -4(2751 2752 2772 2771) -4(752 772 773 753) -4(2752 2753 2773 2772) -4(753 773 774 754) -4(2753 2754 2774 2773) -4(754 774 775 755) -4(2754 2755 2775 2774) -4(755 775 776 756) -4(2755 2756 2776 2775) -4(756 776 777 757) -4(2756 2757 2777 2776) -4(757 777 778 758) -4(2757 2758 2778 2777) -4(758 778 779 759) -4(2758 2759 2779 2778) -4(760 780 781 761) -4(2760 2761 2781 2780) -4(761 781 782 762) -4(2761 2762 2782 2781) -4(762 782 783 763) -4(2762 2763 2783 2782) -4(763 783 784 764) -4(2763 2764 2784 2783) -4(764 784 785 765) -4(2764 2765 2785 2784) -4(765 785 786 766) -4(2765 2766 2786 2785) -4(766 786 787 767) -4(2766 2767 2787 2786) -4(767 787 788 768) -4(2767 2768 2788 2787) -4(768 788 789 769) -4(2768 2769 2789 2788) -4(769 789 790 770) -4(2769 2770 2790 2789) -4(770 790 791 771) -4(2770 2771 2791 2790) -4(771 791 792 772) -4(2771 2772 2792 2791) -4(772 792 793 773) -4(2772 2773 2793 2792) -4(773 793 794 774) -4(2773 2774 2794 2793) -4(774 794 795 775) -4(2774 2775 2795 2794) -4(775 795 796 776) -4(2775 2776 2796 2795) -4(776 796 797 777) -4(2776 2777 2797 2796) -4(777 797 798 778) -4(2777 2778 2798 2797) -4(778 798 799 779) -4(2778 2779 2799 2798) -4(780 800 801 781) -4(2780 2781 2801 2800) -4(781 801 802 782) -4(2781 2782 2802 2801) -4(782 802 803 783) -4(2782 2783 2803 2802) -4(783 803 804 784) -4(2783 2784 2804 2803) -4(784 804 805 785) -4(2784 2785 2805 2804) -4(785 805 806 786) -4(2785 2786 2806 2805) -4(786 806 807 787) -4(2786 2787 2807 2806) -4(787 807 808 788) -4(2787 2788 2808 2807) -4(788 808 809 789) -4(2788 2789 2809 2808) -4(789 809 810 790) -4(2789 2790 2810 2809) -4(790 810 811 791) -4(2790 2791 2811 2810) -4(791 811 812 792) -4(2791 2792 2812 2811) -4(792 812 813 793) -4(2792 2793 2813 2812) -4(793 813 814 794) -4(2793 2794 2814 2813) -4(794 814 815 795) -4(2794 2795 2815 2814) -4(795 815 816 796) -4(2795 2796 2816 2815) -4(796 816 817 797) -4(2796 2797 2817 2816) -4(797 817 818 798) -4(2797 2798 2818 2817) -4(798 818 819 799) -4(2798 2799 2819 2818) -4(800 820 821 801) -4(2800 2801 2821 2820) -4(801 821 822 802) -4(2801 2802 2822 2821) -4(802 822 823 803) -4(2802 2803 2823 2822) -4(803 823 824 804) -4(2803 2804 2824 2823) -4(804 824 825 805) -4(2804 2805 2825 2824) -4(805 825 826 806) -4(2805 2806 2826 2825) -4(806 826 827 807) -4(2806 2807 2827 2826) -4(807 827 828 808) -4(2807 2808 2828 2827) -4(808 828 829 809) -4(2808 2809 2829 2828) -4(809 829 830 810) -4(2809 2810 2830 2829) -4(810 830 831 811) -4(2810 2811 2831 2830) -4(811 831 832 812) -4(2811 2812 2832 2831) -4(812 832 833 813) -4(2812 2813 2833 2832) -4(813 833 834 814) -4(2813 2814 2834 2833) -4(814 834 835 815) -4(2814 2815 2835 2834) -4(815 835 836 816) -4(2815 2816 2836 2835) -4(816 836 837 817) -4(2816 2817 2837 2836) -4(817 837 838 818) -4(2817 2818 2838 2837) -4(818 838 839 819) -4(2818 2819 2839 2838) -4(820 840 841 821) -4(2820 2821 2841 2840) -4(821 841 842 822) -4(2821 2822 2842 2841) -4(822 842 843 823) -4(2822 2823 2843 2842) -4(823 843 844 824) -4(2823 2824 2844 2843) -4(824 844 845 825) -4(2824 2825 2845 2844) -4(825 845 846 826) -4(2825 2826 2846 2845) -4(826 846 847 827) -4(2826 2827 2847 2846) -4(827 847 848 828) -4(2827 2828 2848 2847) -4(828 848 849 829) -4(2828 2829 2849 2848) -4(829 849 850 830) -4(2829 2830 2850 2849) -4(830 850 851 831) -4(2830 2831 2851 2850) -4(831 851 852 832) -4(2831 2832 2852 2851) -4(832 852 853 833) -4(2832 2833 2853 2852) -4(833 853 854 834) -4(2833 2834 2854 2853) -4(834 854 855 835) -4(2834 2835 2855 2854) -4(835 855 856 836) -4(2835 2836 2856 2855) -4(836 856 857 837) -4(2836 2837 2857 2856) -4(837 857 858 838) -4(2837 2838 2858 2857) -4(838 858 859 839) -4(2838 2839 2859 2858) -4(840 860 861 841) -4(2840 2841 2861 2860) -4(841 861 862 842) -4(2841 2842 2862 2861) -4(842 862 863 843) -4(2842 2843 2863 2862) -4(843 863 864 844) -4(2843 2844 2864 2863) -4(844 864 865 845) -4(2844 2845 2865 2864) -4(845 865 866 846) -4(2845 2846 2866 2865) -4(846 866 867 847) -4(2846 2847 2867 2866) -4(847 867 868 848) -4(2847 2848 2868 2867) -4(848 868 869 849) -4(2848 2849 2869 2868) -4(849 869 870 850) -4(2849 2850 2870 2869) -4(850 870 871 851) -4(2850 2851 2871 2870) -4(851 871 872 852) -4(2851 2852 2872 2871) -4(852 872 873 853) -4(2852 2853 2873 2872) -4(853 873 874 854) -4(2853 2854 2874 2873) -4(854 874 875 855) -4(2854 2855 2875 2874) -4(855 875 876 856) -4(2855 2856 2876 2875) -4(856 876 877 857) -4(2856 2857 2877 2876) -4(857 877 878 858) -4(2857 2858 2878 2877) -4(858 878 879 859) -4(2858 2859 2879 2878) -4(860 880 881 861) -4(2860 2861 2881 2880) -4(861 881 882 862) -4(2861 2862 2882 2881) -4(862 882 883 863) -4(2862 2863 2883 2882) -4(863 883 884 864) -4(2863 2864 2884 2883) -4(864 884 885 865) -4(2864 2865 2885 2884) -4(865 885 886 866) -4(2865 2866 2886 2885) -4(866 886 887 867) -4(2866 2867 2887 2886) -4(867 887 888 868) -4(2867 2868 2888 2887) -4(868 888 889 869) -4(2868 2869 2889 2888) -4(869 889 890 870) -4(2869 2870 2890 2889) -4(870 890 891 871) -4(2870 2871 2891 2890) -4(871 891 892 872) -4(2871 2872 2892 2891) -4(872 892 893 873) -4(2872 2873 2893 2892) -4(873 893 894 874) -4(2873 2874 2894 2893) -4(874 894 895 875) -4(2874 2875 2895 2894) -4(875 895 896 876) -4(2875 2876 2896 2895) -4(876 896 897 877) -4(2876 2877 2897 2896) -4(877 897 898 878) -4(2877 2878 2898 2897) -4(878 898 899 879) -4(2878 2879 2899 2898) -4(880 900 901 881) -4(2880 2881 2901 2900) -4(881 901 902 882) -4(2881 2882 2902 2901) -4(882 902 903 883) -4(2882 2883 2903 2902) -4(883 903 904 884) -4(2883 2884 2904 2903) -4(884 904 905 885) -4(2884 2885 2905 2904) -4(885 905 906 886) -4(2885 2886 2906 2905) -4(886 906 907 887) -4(2886 2887 2907 2906) -4(887 907 908 888) -4(2887 2888 2908 2907) -4(888 908 909 889) -4(2888 2889 2909 2908) -4(889 909 910 890) -4(2889 2890 2910 2909) -4(890 910 911 891) -4(2890 2891 2911 2910) -4(891 911 912 892) -4(2891 2892 2912 2911) -4(892 912 913 893) -4(2892 2893 2913 2912) -4(893 913 914 894) -4(2893 2894 2914 2913) -4(894 914 915 895) -4(2894 2895 2915 2914) -4(895 915 916 896) -4(2895 2896 2916 2915) -4(896 916 917 897) -4(2896 2897 2917 2916) -4(897 917 918 898) -4(2897 2898 2918 2917) -4(898 918 919 899) -4(2898 2899 2919 2918) -4(900 920 921 901) -4(2900 2901 2921 2920) -4(901 921 922 902) -4(2901 2902 2922 2921) -4(902 922 923 903) -4(2902 2903 2923 2922) -4(903 923 924 904) -4(2903 2904 2924 2923) -4(904 924 925 905) -4(2904 2905 2925 2924) -4(905 925 926 906) -4(2905 2906 2926 2925) -4(906 926 927 907) -4(2906 2907 2927 2926) -4(907 927 928 908) -4(2907 2908 2928 2927) -4(908 928 929 909) -4(2908 2909 2929 2928) -4(909 929 930 910) -4(2909 2910 2930 2929) -4(910 930 931 911) -4(2910 2911 2931 2930) -4(911 931 932 912) -4(2911 2912 2932 2931) -4(912 932 933 913) -4(2912 2913 2933 2932) -4(913 933 934 914) -4(2913 2914 2934 2933) -4(914 934 935 915) -4(2914 2915 2935 2934) -4(915 935 936 916) -4(2915 2916 2936 2935) -4(916 936 937 917) -4(2916 2917 2937 2936) -4(917 937 938 918) -4(2917 2918 2938 2937) -4(918 938 939 919) -4(2918 2919 2939 2938) -4(920 940 941 921) -4(2920 2921 2941 2940) -4(921 941 942 922) -4(2921 2922 2942 2941) -4(922 942 943 923) -4(2922 2923 2943 2942) -4(923 943 944 924) -4(2923 2924 2944 2943) -4(924 944 945 925) -4(2924 2925 2945 2944) -4(925 945 946 926) -4(2925 2926 2946 2945) -4(926 946 947 927) -4(2926 2927 2947 2946) -4(927 947 948 928) -4(2927 2928 2948 2947) -4(928 948 949 929) -4(2928 2929 2949 2948) -4(929 949 950 930) -4(2929 2930 2950 2949) -4(930 950 951 931) -4(2930 2931 2951 2950) -4(931 951 952 932) -4(2931 2932 2952 2951) -4(932 952 953 933) -4(2932 2933 2953 2952) -4(933 953 954 934) -4(2933 2934 2954 2953) -4(934 954 955 935) -4(2934 2935 2955 2954) -4(935 955 956 936) -4(2935 2936 2956 2955) -4(936 956 957 937) -4(2936 2937 2957 2956) -4(937 957 958 938) -4(2937 2938 2958 2957) -4(938 958 959 939) -4(2938 2939 2959 2958) -4(940 960 961 941) -4(2940 2941 2961 2960) -4(941 961 962 942) -4(2941 2942 2962 2961) -4(942 962 963 943) -4(2942 2943 2963 2962) -4(943 963 964 944) -4(2943 2944 2964 2963) -4(944 964 965 945) -4(2944 2945 2965 2964) -4(945 965 966 946) -4(2945 2946 2966 2965) -4(946 966 967 947) -4(2946 2947 2967 2966) -4(947 967 968 948) -4(2947 2948 2968 2967) -4(948 968 969 949) -4(2948 2949 2969 2968) -4(949 969 970 950) -4(2949 2950 2970 2969) -4(950 970 971 951) -4(2950 2951 2971 2970) -4(951 971 972 952) -4(2951 2952 2972 2971) -4(952 972 973 953) -4(2952 2953 2973 2972) -4(953 973 974 954) -4(2953 2954 2974 2973) -4(954 974 975 955) -4(2954 2955 2975 2974) -4(955 975 976 956) -4(2955 2956 2976 2975) -4(956 976 977 957) -4(2956 2957 2977 2976) -4(957 977 978 958) -4(2957 2958 2978 2977) -4(958 978 979 959) -4(2958 2959 2979 2978) -4(960 980 981 961) -4(2960 2961 2981 2980) -4(961 981 982 962) -4(2961 2962 2982 2981) -4(962 982 983 963) -4(2962 2963 2983 2982) -4(963 983 984 964) -4(2963 2964 2984 2983) -4(964 984 985 965) -4(2964 2965 2985 2984) -4(965 985 986 966) -4(2965 2966 2986 2985) -4(966 986 987 967) -4(2966 2967 2987 2986) -4(967 987 988 968) -4(2967 2968 2988 2987) -4(968 988 989 969) -4(2968 2969 2989 2988) -4(969 989 990 970) -4(2969 2970 2990 2989) -4(970 990 991 971) -4(2970 2971 2991 2990) -4(971 991 992 972) -4(2971 2972 2992 2991) -4(972 992 993 973) -4(2972 2973 2993 2992) -4(973 993 994 974) -4(2973 2974 2994 2993) -4(974 994 995 975) -4(2974 2975 2995 2994) -4(975 995 996 976) -4(2975 2976 2996 2995) -4(976 996 997 977) -4(2976 2977 2997 2996) -4(977 997 998 978) -4(2977 2978 2998 2997) -4(978 998 999 979) -4(2978 2979 2999 2998) -4(980 1000 1001 981) -4(2980 2981 3001 3000) -4(981 1001 1002 982) -4(2981 2982 3002 3001) -4(982 1002 1003 983) -4(2982 2983 3003 3002) -4(983 1003 1004 984) -4(2983 2984 3004 3003) -4(984 1004 1005 985) -4(2984 2985 3005 3004) -4(985 1005 1006 986) -4(2985 2986 3006 3005) -4(986 1006 1007 987) -4(2986 2987 3007 3006) -4(987 1007 1008 988) -4(2987 2988 3008 3007) -4(988 1008 1009 989) -4(2988 2989 3009 3008) -4(989 1009 1010 990) -4(2989 2990 3010 3009) -4(990 1010 1011 991) -4(2990 2991 3011 3010) -4(991 1011 1012 992) -4(2991 2992 3012 3011) -4(992 1012 1013 993) -4(2992 2993 3013 3012) -4(993 1013 1014 994) -4(2993 2994 3014 3013) -4(994 1014 1015 995) -4(2994 2995 3015 3014) -4(995 1015 1016 996) -4(2995 2996 3016 3015) -4(996 1016 1017 997) -4(2996 2997 3017 3016) -4(997 1017 1018 998) -4(2997 2998 3018 3017) -4(998 1018 1019 999) -4(2998 2999 3019 3018) -4(1000 1020 1021 1001) -4(3000 3001 3021 3020) -4(1001 1021 1022 1002) -4(3001 3002 3022 3021) -4(1002 1022 1023 1003) -4(3002 3003 3023 3022) -4(1003 1023 1024 1004) -4(3003 3004 3024 3023) -4(1004 1024 1025 1005) -4(3004 3005 3025 3024) -4(1005 1025 1026 1006) -4(3005 3006 3026 3025) -4(1006 1026 1027 1007) -4(3006 3007 3027 3026) -4(1007 1027 1028 1008) -4(3007 3008 3028 3027) -4(1008 1028 1029 1009) -4(3008 3009 3029 3028) -4(1009 1029 1030 1010) -4(3009 3010 3030 3029) -4(1010 1030 1031 1011) -4(3010 3011 3031 3030) -4(1011 1031 1032 1012) -4(3011 3012 3032 3031) -4(1012 1032 1033 1013) -4(3012 3013 3033 3032) -4(1013 1033 1034 1014) -4(3013 3014 3034 3033) -4(1014 1034 1035 1015) -4(3014 3015 3035 3034) -4(1015 1035 1036 1016) -4(3015 3016 3036 3035) -4(1016 1036 1037 1017) -4(3016 3017 3037 3036) -4(1017 1037 1038 1018) -4(3017 3018 3038 3037) -4(1018 1038 1039 1019) -4(3018 3019 3039 3038) -4(1020 1040 1041 1021) -4(3020 3021 3041 3040) -4(1021 1041 1042 1022) -4(3021 3022 3042 3041) -4(1022 1042 1043 1023) -4(3022 3023 3043 3042) -4(1023 1043 1044 1024) -4(3023 3024 3044 3043) -4(1024 1044 1045 1025) -4(3024 3025 3045 3044) -4(1025 1045 1046 1026) -4(3025 3026 3046 3045) -4(1026 1046 1047 1027) -4(3026 3027 3047 3046) -4(1027 1047 1048 1028) -4(3027 3028 3048 3047) -4(1028 1048 1049 1029) -4(3028 3029 3049 3048) -4(1029 1049 1050 1030) -4(3029 3030 3050 3049) -4(1030 1050 1051 1031) -4(3030 3031 3051 3050) -4(1031 1051 1052 1032) -4(3031 3032 3052 3051) -4(1032 1052 1053 1033) -4(3032 3033 3053 3052) -4(1033 1053 1054 1034) -4(3033 3034 3054 3053) -4(1034 1054 1055 1035) -4(3034 3035 3055 3054) -4(1035 1055 1056 1036) -4(3035 3036 3056 3055) -4(1036 1056 1057 1037) -4(3036 3037 3057 3056) -4(1037 1057 1058 1038) -4(3037 3038 3058 3057) -4(1038 1058 1059 1039) -4(3038 3039 3059 3058) -4(1040 1060 1061 1041) -4(3040 3041 3061 3060) -4(1041 1061 1062 1042) -4(3041 3042 3062 3061) -4(1042 1062 1063 1043) -4(3042 3043 3063 3062) -4(1043 1063 1064 1044) -4(3043 3044 3064 3063) -4(1044 1064 1065 1045) -4(3044 3045 3065 3064) -4(1045 1065 1066 1046) -4(3045 3046 3066 3065) -4(1046 1066 1067 1047) -4(3046 3047 3067 3066) -4(1047 1067 1068 1048) -4(3047 3048 3068 3067) -4(1048 1068 1069 1049) -4(3048 3049 3069 3068) -4(1049 1069 1070 1050) -4(3049 3050 3070 3069) -4(1050 1070 1071 1051) -4(3050 3051 3071 3070) -4(1051 1071 1072 1052) -4(3051 3052 3072 3071) -4(1052 1072 1073 1053) -4(3052 3053 3073 3072) -4(1053 1073 1074 1054) -4(3053 3054 3074 3073) -4(1054 1074 1075 1055) -4(3054 3055 3075 3074) -4(1055 1075 1076 1056) -4(3055 3056 3076 3075) -4(1056 1076 1077 1057) -4(3056 3057 3077 3076) -4(1057 1077 1078 1058) -4(3057 3058 3078 3077) -4(1058 1078 1079 1059) -4(3058 3059 3079 3078) -4(1060 1080 1081 1061) -4(3060 3061 3081 3080) -4(1061 1081 1082 1062) -4(3061 3062 3082 3081) -4(1062 1082 1083 1063) -4(3062 3063 3083 3082) -4(1063 1083 1084 1064) -4(3063 3064 3084 3083) -4(1064 1084 1085 1065) -4(3064 3065 3085 3084) -4(1065 1085 1086 1066) -4(3065 3066 3086 3085) -4(1066 1086 1087 1067) -4(3066 3067 3087 3086) -4(1067 1087 1088 1068) -4(3067 3068 3088 3087) -4(1068 1088 1089 1069) -4(3068 3069 3089 3088) -4(1069 1089 1090 1070) -4(3069 3070 3090 3089) -4(1070 1090 1091 1071) -4(3070 3071 3091 3090) -4(1071 1091 1092 1072) -4(3071 3072 3092 3091) -4(1072 1092 1093 1073) -4(3072 3073 3093 3092) -4(1073 1093 1094 1074) -4(3073 3074 3094 3093) -4(1074 1094 1095 1075) -4(3074 3075 3095 3094) -4(1075 1095 1096 1076) -4(3075 3076 3096 3095) -4(1076 1096 1097 1077) -4(3076 3077 3097 3096) -4(1077 1097 1098 1078) -4(3077 3078 3098 3097) -4(1078 1098 1099 1079) -4(3078 3079 3099 3098) -4(1080 1100 1101 1081) -4(3080 3081 3101 3100) -4(1081 1101 1102 1082) -4(3081 3082 3102 3101) -4(1082 1102 1103 1083) -4(3082 3083 3103 3102) -4(1083 1103 1104 1084) -4(3083 3084 3104 3103) -4(1084 1104 1105 1085) -4(3084 3085 3105 3104) -4(1085 1105 1106 1086) -4(3085 3086 3106 3105) -4(1086 1106 1107 1087) -4(3086 3087 3107 3106) -4(1087 1107 1108 1088) -4(3087 3088 3108 3107) -4(1088 1108 1109 1089) -4(3088 3089 3109 3108) -4(1089 1109 1110 1090) -4(3089 3090 3110 3109) -4(1090 1110 1111 1091) -4(3090 3091 3111 3110) -4(1091 1111 1112 1092) -4(3091 3092 3112 3111) -4(1092 1112 1113 1093) -4(3092 3093 3113 3112) -4(1093 1113 1114 1094) -4(3093 3094 3114 3113) -4(1094 1114 1115 1095) -4(3094 3095 3115 3114) -4(1095 1115 1116 1096) -4(3095 3096 3116 3115) -4(1096 1116 1117 1097) -4(3096 3097 3117 3116) -4(1097 1117 1118 1098) -4(3097 3098 3118 3117) -4(1098 1118 1119 1099) -4(3098 3099 3119 3118) -4(1100 1120 1121 1101) -4(3100 3101 3121 3120) -4(1101 1121 1122 1102) -4(3101 3102 3122 3121) -4(1102 1122 1123 1103) -4(3102 3103 3123 3122) -4(1103 1123 1124 1104) -4(3103 3104 3124 3123) -4(1104 1124 1125 1105) -4(3104 3105 3125 3124) -4(1105 1125 1126 1106) -4(3105 3106 3126 3125) -4(1106 1126 1127 1107) -4(3106 3107 3127 3126) -4(1107 1127 1128 1108) -4(3107 3108 3128 3127) -4(1108 1128 1129 1109) -4(3108 3109 3129 3128) -4(1109 1129 1130 1110) -4(3109 3110 3130 3129) -4(1110 1130 1131 1111) -4(3110 3111 3131 3130) -4(1111 1131 1132 1112) -4(3111 3112 3132 3131) -4(1112 1132 1133 1113) -4(3112 3113 3133 3132) -4(1113 1133 1134 1114) -4(3113 3114 3134 3133) -4(1114 1134 1135 1115) -4(3114 3115 3135 3134) -4(1115 1135 1136 1116) -4(3115 3116 3136 3135) -4(1116 1136 1137 1117) -4(3116 3117 3137 3136) -4(1117 1137 1138 1118) -4(3117 3118 3138 3137) -4(1118 1138 1139 1119) -4(3118 3119 3139 3138) -4(1120 1140 1141 1121) -4(3120 3121 3141 3140) -4(1121 1141 1142 1122) -4(3121 3122 3142 3141) -4(1122 1142 1143 1123) -4(3122 3123 3143 3142) -4(1123 1143 1144 1124) -4(3123 3124 3144 3143) -4(1124 1144 1145 1125) -4(3124 3125 3145 3144) -4(1125 1145 1146 1126) -4(3125 3126 3146 3145) -4(1126 1146 1147 1127) -4(3126 3127 3147 3146) -4(1127 1147 1148 1128) -4(3127 3128 3148 3147) -4(1128 1148 1149 1129) -4(3128 3129 3149 3148) -4(1129 1149 1150 1130) -4(3129 3130 3150 3149) -4(1130 1150 1151 1131) -4(3130 3131 3151 3150) -4(1131 1151 1152 1132) -4(3131 3132 3152 3151) -4(1132 1152 1153 1133) -4(3132 3133 3153 3152) -4(1133 1153 1154 1134) -4(3133 3134 3154 3153) -4(1134 1154 1155 1135) -4(3134 3135 3155 3154) -4(1135 1155 1156 1136) -4(3135 3136 3156 3155) -4(1136 1156 1157 1137) -4(3136 3137 3157 3156) -4(1137 1157 1158 1138) -4(3137 3138 3158 3157) -4(1138 1158 1159 1139) -4(3138 3139 3159 3158) -4(1140 1160 1161 1141) -4(3140 3141 3161 3160) -4(1141 1161 1162 1142) -4(3141 3142 3162 3161) -4(1142 1162 1163 1143) -4(3142 3143 3163 3162) -4(1143 1163 1164 1144) -4(3143 3144 3164 3163) -4(1144 1164 1165 1145) -4(3144 3145 3165 3164) -4(1145 1165 1166 1146) -4(3145 3146 3166 3165) -4(1146 1166 1167 1147) -4(3146 3147 3167 3166) -4(1147 1167 1168 1148) -4(3147 3148 3168 3167) -4(1148 1168 1169 1149) -4(3148 3149 3169 3168) -4(1149 1169 1170 1150) -4(3149 3150 3170 3169) -4(1150 1170 1171 1151) -4(3150 3151 3171 3170) -4(1151 1171 1172 1152) -4(3151 3152 3172 3171) -4(1152 1172 1173 1153) -4(3152 3153 3173 3172) -4(1153 1173 1174 1154) -4(3153 3154 3174 3173) -4(1154 1174 1175 1155) -4(3154 3155 3175 3174) -4(1155 1175 1176 1156) -4(3155 3156 3176 3175) -4(1156 1176 1177 1157) -4(3156 3157 3177 3176) -4(1157 1177 1178 1158) -4(3157 3158 3178 3177) -4(1158 1178 1179 1159) -4(3158 3159 3179 3178) -4(1160 1180 1181 1161) -4(3160 3161 3181 3180) -4(1161 1181 1182 1162) -4(3161 3162 3182 3181) -4(1162 1182 1183 1163) -4(3162 3163 3183 3182) -4(1163 1183 1184 1164) -4(3163 3164 3184 3183) -4(1164 1184 1185 1165) -4(3164 3165 3185 3184) -4(1165 1185 1186 1166) -4(3165 3166 3186 3185) -4(1166 1186 1187 1167) -4(3166 3167 3187 3186) -4(1167 1187 1188 1168) -4(3167 3168 3188 3187) -4(1168 1188 1189 1169) -4(3168 3169 3189 3188) -4(1169 1189 1190 1170) -4(3169 3170 3190 3189) -4(1170 1190 1191 1171) -4(3170 3171 3191 3190) -4(1171 1191 1192 1172) -4(3171 3172 3192 3191) -4(1172 1192 1193 1173) -4(3172 3173 3193 3192) -4(1173 1193 1194 1174) -4(3173 3174 3194 3193) -4(1174 1194 1195 1175) -4(3174 3175 3195 3194) -4(1175 1195 1196 1176) -4(3175 3176 3196 3195) -4(1176 1196 1197 1177) -4(3176 3177 3197 3196) -4(1177 1197 1198 1178) -4(3177 3178 3198 3197) -4(1178 1198 1199 1179) -4(3178 3179 3199 3198) -4(1180 1200 1201 1181) -4(3180 3181 3201 3200) -4(1181 1201 1202 1182) -4(3181 3182 3202 3201) -4(1182 1202 1203 1183) -4(3182 3183 3203 3202) -4(1183 1203 1204 1184) -4(3183 3184 3204 3203) -4(1184 1204 1205 1185) -4(3184 3185 3205 3204) -4(1185 1205 1206 1186) -4(3185 3186 3206 3205) -4(1186 1206 1207 1187) -4(3186 3187 3207 3206) -4(1187 1207 1208 1188) -4(3187 3188 3208 3207) -4(1188 1208 1209 1189) -4(3188 3189 3209 3208) -4(1189 1209 1210 1190) -4(3189 3190 3210 3209) -4(1190 1210 1211 1191) -4(3190 3191 3211 3210) -4(1191 1211 1212 1192) -4(3191 3192 3212 3211) -4(1192 1212 1213 1193) -4(3192 3193 3213 3212) -4(1193 1213 1214 1194) -4(3193 3194 3214 3213) -4(1194 1214 1215 1195) -4(3194 3195 3215 3214) -4(1195 1215 1216 1196) -4(3195 3196 3216 3215) -4(1196 1216 1217 1197) -4(3196 3197 3217 3216) -4(1197 1217 1218 1198) -4(3197 3198 3218 3217) -4(1198 1218 1219 1199) -4(3198 3199 3219 3218) -4(1200 1220 1221 1201) -4(3200 3201 3221 3220) -4(1201 1221 1222 1202) -4(3201 3202 3222 3221) -4(1202 1222 1223 1203) -4(3202 3203 3223 3222) -4(1203 1223 1224 1204) -4(3203 3204 3224 3223) -4(1204 1224 1225 1205) -4(3204 3205 3225 3224) -4(1205 1225 1226 1206) -4(3205 3206 3226 3225) -4(1206 1226 1227 1207) -4(3206 3207 3227 3226) -4(1207 1227 1228 1208) -4(3207 3208 3228 3227) -4(1208 1228 1229 1209) -4(3208 3209 3229 3228) -4(1209 1229 1230 1210) -4(3209 3210 3230 3229) -4(1210 1230 1231 1211) -4(3210 3211 3231 3230) -4(1211 1231 1232 1212) -4(3211 3212 3232 3231) -4(1212 1232 1233 1213) -4(3212 3213 3233 3232) -4(1213 1233 1234 1214) -4(3213 3214 3234 3233) -4(1214 1234 1235 1215) -4(3214 3215 3235 3234) -4(1215 1235 1236 1216) -4(3215 3216 3236 3235) -4(1216 1236 1237 1217) -4(3216 3217 3237 3236) -4(1217 1237 1238 1218) -4(3217 3218 3238 3237) -4(1218 1238 1239 1219) -4(3218 3219 3239 3238) -4(1220 1240 1241 1221) -4(3220 3221 3241 3240) -4(1221 1241 1242 1222) -4(3221 3222 3242 3241) -4(1222 1242 1243 1223) -4(3222 3223 3243 3242) -4(1223 1243 1244 1224) -4(3223 3224 3244 3243) -4(1224 1244 1245 1225) -4(3224 3225 3245 3244) -4(1225 1245 1246 1226) -4(3225 3226 3246 3245) -4(1226 1246 1247 1227) -4(3226 3227 3247 3246) -4(1227 1247 1248 1228) -4(3227 3228 3248 3247) -4(1228 1248 1249 1229) -4(3228 3229 3249 3248) -4(1229 1249 1250 1230) -4(3229 3230 3250 3249) -4(1230 1250 1251 1231) -4(3230 3231 3251 3250) -4(1231 1251 1252 1232) -4(3231 3232 3252 3251) -4(1232 1252 1253 1233) -4(3232 3233 3253 3252) -4(1233 1253 1254 1234) -4(3233 3234 3254 3253) -4(1234 1254 1255 1235) -4(3234 3235 3255 3254) -4(1235 1255 1256 1236) -4(3235 3236 3256 3255) -4(1236 1256 1257 1237) -4(3236 3237 3257 3256) -4(1237 1257 1258 1238) -4(3237 3238 3258 3257) -4(1238 1258 1259 1239) -4(3238 3239 3259 3258) -4(1240 1260 1261 1241) -4(3240 3241 3261 3260) -4(1241 1261 1262 1242) -4(3241 3242 3262 3261) -4(1242 1262 1263 1243) -4(3242 3243 3263 3262) -4(1243 1263 1264 1244) -4(3243 3244 3264 3263) -4(1244 1264 1265 1245) -4(3244 3245 3265 3264) -4(1245 1265 1266 1246) -4(3245 3246 3266 3265) -4(1246 1266 1267 1247) -4(3246 3247 3267 3266) -4(1247 1267 1268 1248) -4(3247 3248 3268 3267) -4(1248 1268 1269 1249) -4(3248 3249 3269 3268) -4(1249 1269 1270 1250) -4(3249 3250 3270 3269) -4(1250 1270 1271 1251) -4(3250 3251 3271 3270) -4(1251 1271 1272 1252) -4(3251 3252 3272 3271) -4(1252 1272 1273 1253) -4(3252 3253 3273 3272) -4(1253 1273 1274 1254) -4(3253 3254 3274 3273) -4(1254 1274 1275 1255) -4(3254 3255 3275 3274) -4(1255 1275 1276 1256) -4(3255 3256 3276 3275) -4(1256 1276 1277 1257) -4(3256 3257 3277 3276) -4(1257 1277 1278 1258) -4(3257 3258 3278 3277) -4(1258 1278 1279 1259) -4(3258 3259 3279 3278) -4(1260 1280 1281 1261) -4(3260 3261 3281 3280) -4(1261 1281 1282 1262) -4(3261 3262 3282 3281) -4(1262 1282 1283 1263) -4(3262 3263 3283 3282) -4(1263 1283 1284 1264) -4(3263 3264 3284 3283) -4(1264 1284 1285 1265) -4(3264 3265 3285 3284) -4(1265 1285 1286 1266) -4(3265 3266 3286 3285) -4(1266 1286 1287 1267) -4(3266 3267 3287 3286) -4(1267 1287 1288 1268) -4(3267 3268 3288 3287) -4(1268 1288 1289 1269) -4(3268 3269 3289 3288) -4(1269 1289 1290 1270) -4(3269 3270 3290 3289) -4(1270 1290 1291 1271) -4(3270 3271 3291 3290) -4(1271 1291 1292 1272) -4(3271 3272 3292 3291) -4(1272 1292 1293 1273) -4(3272 3273 3293 3292) -4(1273 1293 1294 1274) -4(3273 3274 3294 3293) -4(1274 1294 1295 1275) -4(3274 3275 3295 3294) -4(1275 1295 1296 1276) -4(3275 3276 3296 3295) -4(1276 1296 1297 1277) -4(3276 3277 3297 3296) -4(1277 1297 1298 1278) -4(3277 3278 3298 3297) -4(1278 1298 1299 1279) -4(3278 3279 3299 3298) -4(1280 1300 1301 1281) -4(3280 3281 3301 3300) -4(1281 1301 1302 1282) -4(3281 3282 3302 3301) -4(1282 1302 1303 1283) -4(3282 3283 3303 3302) -4(1283 1303 1304 1284) -4(3283 3284 3304 3303) -4(1284 1304 1305 1285) -4(3284 3285 3305 3304) -4(1285 1305 1306 1286) -4(3285 3286 3306 3305) -4(1286 1306 1307 1287) -4(3286 3287 3307 3306) -4(1287 1307 1308 1288) -4(3287 3288 3308 3307) -4(1288 1308 1309 1289) -4(3288 3289 3309 3308) -4(1289 1309 1310 1290) -4(3289 3290 3310 3309) -4(1290 1310 1311 1291) -4(3290 3291 3311 3310) -4(1291 1311 1312 1292) -4(3291 3292 3312 3311) -4(1292 1312 1313 1293) -4(3292 3293 3313 3312) -4(1293 1313 1314 1294) -4(3293 3294 3314 3313) -4(1294 1314 1315 1295) -4(3294 3295 3315 3314) -4(1295 1315 1316 1296) -4(3295 3296 3316 3315) -4(1296 1316 1317 1297) -4(3296 3297 3317 3316) -4(1297 1317 1318 1298) -4(3297 3298 3318 3317) -4(1298 1318 1319 1299) -4(3298 3299 3319 3318) -4(1300 1320 1321 1301) -4(3300 3301 3321 3320) -4(1301 1321 1322 1302) -4(3301 3302 3322 3321) -4(1302 1322 1323 1303) -4(3302 3303 3323 3322) -4(1303 1323 1324 1304) -4(3303 3304 3324 3323) -4(1304 1324 1325 1305) -4(3304 3305 3325 3324) -4(1305 1325 1326 1306) -4(3305 3306 3326 3325) -4(1306 1326 1327 1307) -4(3306 3307 3327 3326) -4(1307 1327 1328 1308) -4(3307 3308 3328 3327) -4(1308 1328 1329 1309) -4(3308 3309 3329 3328) -4(1309 1329 1330 1310) -4(3309 3310 3330 3329) -4(1310 1330 1331 1311) -4(3310 3311 3331 3330) -4(1311 1331 1332 1312) -4(3311 3312 3332 3331) -4(1312 1332 1333 1313) -4(3312 3313 3333 3332) -4(1313 1333 1334 1314) -4(3313 3314 3334 3333) -4(1314 1334 1335 1315) -4(3314 3315 3335 3334) -4(1315 1335 1336 1316) -4(3315 3316 3336 3335) -4(1316 1336 1337 1317) -4(3316 3317 3337 3336) -4(1317 1337 1338 1318) -4(3317 3318 3338 3337) -4(1318 1338 1339 1319) -4(3318 3319 3339 3338) -4(1320 1340 1341 1321) -4(3320 3321 3341 3340) -4(1321 1341 1342 1322) -4(3321 3322 3342 3341) -4(1322 1342 1343 1323) -4(3322 3323 3343 3342) -4(1323 1343 1344 1324) -4(3323 3324 3344 3343) -4(1324 1344 1345 1325) -4(3324 3325 3345 3344) -4(1325 1345 1346 1326) -4(3325 3326 3346 3345) -4(1326 1346 1347 1327) -4(3326 3327 3347 3346) -4(1327 1347 1348 1328) -4(3327 3328 3348 3347) -4(1328 1348 1349 1329) -4(3328 3329 3349 3348) -4(1329 1349 1350 1330) -4(3329 3330 3350 3349) -4(1330 1350 1351 1331) -4(3330 3331 3351 3350) -4(1331 1351 1352 1332) -4(3331 3332 3352 3351) -4(1332 1352 1353 1333) -4(3332 3333 3353 3352) -4(1333 1353 1354 1334) -4(3333 3334 3354 3353) -4(1334 1354 1355 1335) -4(3334 3335 3355 3354) -4(1335 1355 1356 1336) -4(3335 3336 3356 3355) -4(1336 1356 1357 1337) -4(3336 3337 3357 3356) -4(1337 1357 1358 1338) -4(3337 3338 3358 3357) -4(1338 1358 1359 1339) -4(3338 3339 3359 3358) -4(1340 1360 1361 1341) -4(3340 3341 3361 3360) -4(1341 1361 1362 1342) -4(3341 3342 3362 3361) -4(1342 1362 1363 1343) -4(3342 3343 3363 3362) -4(1343 1363 1364 1344) -4(3343 3344 3364 3363) -4(1344 1364 1365 1345) -4(3344 3345 3365 3364) -4(1345 1365 1366 1346) -4(3345 3346 3366 3365) -4(1346 1366 1367 1347) -4(3346 3347 3367 3366) -4(1347 1367 1368 1348) -4(3347 3348 3368 3367) -4(1348 1368 1369 1349) -4(3348 3349 3369 3368) -4(1349 1369 1370 1350) -4(3349 3350 3370 3369) -4(1350 1370 1371 1351) -4(3350 3351 3371 3370) -4(1351 1371 1372 1352) -4(3351 3352 3372 3371) -4(1352 1372 1373 1353) -4(3352 3353 3373 3372) -4(1353 1373 1374 1354) -4(3353 3354 3374 3373) -4(1354 1374 1375 1355) -4(3354 3355 3375 3374) -4(1355 1375 1376 1356) -4(3355 3356 3376 3375) -4(1356 1376 1377 1357) -4(3356 3357 3377 3376) -4(1357 1377 1378 1358) -4(3357 3358 3378 3377) -4(1358 1378 1379 1359) -4(3358 3359 3379 3378) -4(1360 1380 1381 1361) -4(3360 3361 3381 3380) -4(1361 1381 1382 1362) -4(3361 3362 3382 3381) -4(1362 1382 1383 1363) -4(3362 3363 3383 3382) -4(1363 1383 1384 1364) -4(3363 3364 3384 3383) -4(1364 1384 1385 1365) -4(3364 3365 3385 3384) -4(1365 1385 1386 1366) -4(3365 3366 3386 3385) -4(1366 1386 1387 1367) -4(3366 3367 3387 3386) -4(1367 1387 1388 1368) -4(3367 3368 3388 3387) -4(1368 1388 1389 1369) -4(3368 3369 3389 3388) -4(1369 1389 1390 1370) -4(3369 3370 3390 3389) -4(1370 1390 1391 1371) -4(3370 3371 3391 3390) -4(1371 1391 1392 1372) -4(3371 3372 3392 3391) -4(1372 1392 1393 1373) -4(3372 3373 3393 3392) -4(1373 1393 1394 1374) -4(3373 3374 3394 3393) -4(1374 1394 1395 1375) -4(3374 3375 3395 3394) -4(1375 1395 1396 1376) -4(3375 3376 3396 3395) -4(1376 1396 1397 1377) -4(3376 3377 3397 3396) -4(1377 1397 1398 1378) -4(3377 3378 3398 3397) -4(1378 1398 1399 1379) -4(3378 3379 3399 3398) -4(1380 1400 1401 1381) -4(3380 3381 3401 3400) -4(1381 1401 1402 1382) -4(3381 3382 3402 3401) -4(1382 1402 1403 1383) -4(3382 3383 3403 3402) -4(1383 1403 1404 1384) -4(3383 3384 3404 3403) -4(1384 1404 1405 1385) -4(3384 3385 3405 3404) -4(1385 1405 1406 1386) -4(3385 3386 3406 3405) -4(1386 1406 1407 1387) -4(3386 3387 3407 3406) -4(1387 1407 1408 1388) -4(3387 3388 3408 3407) -4(1388 1408 1409 1389) -4(3388 3389 3409 3408) -4(1389 1409 1410 1390) -4(3389 3390 3410 3409) -4(1390 1410 1411 1391) -4(3390 3391 3411 3410) -4(1391 1411 1412 1392) -4(3391 3392 3412 3411) -4(1392 1412 1413 1393) -4(3392 3393 3413 3412) -4(1393 1413 1414 1394) -4(3393 3394 3414 3413) -4(1394 1414 1415 1395) -4(3394 3395 3415 3414) -4(1395 1415 1416 1396) -4(3395 3396 3416 3415) -4(1396 1416 1417 1397) -4(3396 3397 3417 3416) -4(1397 1417 1418 1398) -4(3397 3398 3418 3417) -4(1398 1418 1419 1399) -4(3398 3399 3419 3418) -4(1400 1420 1421 1401) -4(3400 3401 3421 3420) -4(1401 1421 1422 1402) -4(3401 3402 3422 3421) -4(1402 1422 1423 1403) -4(3402 3403 3423 3422) -4(1403 1423 1424 1404) -4(3403 3404 3424 3423) -4(1404 1424 1425 1405) -4(3404 3405 3425 3424) -4(1405 1425 1426 1406) -4(3405 3406 3426 3425) -4(1406 1426 1427 1407) -4(3406 3407 3427 3426) -4(1407 1427 1428 1408) -4(3407 3408 3428 3427) -4(1408 1428 1429 1409) -4(3408 3409 3429 3428) -4(1409 1429 1430 1410) -4(3409 3410 3430 3429) -4(1410 1430 1431 1411) -4(3410 3411 3431 3430) -4(1411 1431 1432 1412) -4(3411 3412 3432 3431) -4(1412 1432 1433 1413) -4(3412 3413 3433 3432) -4(1413 1433 1434 1414) -4(3413 3414 3434 3433) -4(1414 1434 1435 1415) -4(3414 3415 3435 3434) -4(1415 1435 1436 1416) -4(3415 3416 3436 3435) -4(1416 1436 1437 1417) -4(3416 3417 3437 3436) -4(1417 1437 1438 1418) -4(3417 3418 3438 3437) -4(1418 1438 1439 1419) -4(3418 3419 3439 3438) -4(1420 1440 1441 1421) -4(3420 3421 3441 3440) -4(1421 1441 1442 1422) -4(3421 3422 3442 3441) -4(1422 1442 1443 1423) -4(3422 3423 3443 3442) -4(1423 1443 1444 1424) -4(3423 3424 3444 3443) -4(1424 1444 1445 1425) -4(3424 3425 3445 3444) -4(1425 1445 1446 1426) -4(3425 3426 3446 3445) -4(1426 1446 1447 1427) -4(3426 3427 3447 3446) -4(1427 1447 1448 1428) -4(3427 3428 3448 3447) -4(1428 1448 1449 1429) -4(3428 3429 3449 3448) -4(1429 1449 1450 1430) -4(3429 3430 3450 3449) -4(1430 1450 1451 1431) -4(3430 3431 3451 3450) -4(1431 1451 1452 1432) -4(3431 3432 3452 3451) -4(1432 1452 1453 1433) -4(3432 3433 3453 3452) -4(1433 1453 1454 1434) -4(3433 3434 3454 3453) -4(1434 1454 1455 1435) -4(3434 3435 3455 3454) -4(1435 1455 1456 1436) -4(3435 3436 3456 3455) -4(1436 1456 1457 1437) -4(3436 3437 3457 3456) -4(1437 1457 1458 1438) -4(3437 3438 3458 3457) -4(1438 1458 1459 1439) -4(3438 3439 3459 3458) -4(1440 1460 1461 1441) -4(3440 3441 3461 3460) -4(1441 1461 1462 1442) -4(3441 3442 3462 3461) -4(1442 1462 1463 1443) -4(3442 3443 3463 3462) -4(1443 1463 1464 1444) -4(3443 3444 3464 3463) -4(1444 1464 1465 1445) -4(3444 3445 3465 3464) -4(1445 1465 1466 1446) -4(3445 3446 3466 3465) -4(1446 1466 1467 1447) -4(3446 3447 3467 3466) -4(1447 1467 1468 1448) -4(3447 3448 3468 3467) -4(1448 1468 1469 1449) -4(3448 3449 3469 3468) -4(1449 1469 1470 1450) -4(3449 3450 3470 3469) -4(1450 1470 1471 1451) -4(3450 3451 3471 3470) -4(1451 1471 1472 1452) -4(3451 3452 3472 3471) -4(1452 1472 1473 1453) -4(3452 3453 3473 3472) -4(1453 1473 1474 1454) -4(3453 3454 3474 3473) -4(1454 1474 1475 1455) -4(3454 3455 3475 3474) -4(1455 1475 1476 1456) -4(3455 3456 3476 3475) -4(1456 1476 1477 1457) -4(3456 3457 3477 3476) -4(1457 1477 1478 1458) -4(3457 3458 3478 3477) -4(1458 1478 1479 1459) -4(3458 3459 3479 3478) -4(1460 1480 1481 1461) -4(3460 3461 3481 3480) -4(1461 1481 1482 1462) -4(3461 3462 3482 3481) -4(1462 1482 1483 1463) -4(3462 3463 3483 3482) -4(1463 1483 1484 1464) -4(3463 3464 3484 3483) -4(1464 1484 1485 1465) -4(3464 3465 3485 3484) -4(1465 1485 1486 1466) -4(3465 3466 3486 3485) -4(1466 1486 1487 1467) -4(3466 3467 3487 3486) -4(1467 1487 1488 1468) -4(3467 3468 3488 3487) -4(1468 1488 1489 1469) -4(3468 3469 3489 3488) -4(1469 1489 1490 1470) -4(3469 3470 3490 3489) -4(1470 1490 1491 1471) -4(3470 3471 3491 3490) -4(1471 1491 1492 1472) -4(3471 3472 3492 3491) -4(1472 1492 1493 1473) -4(3472 3473 3493 3492) -4(1473 1493 1494 1474) -4(3473 3474 3494 3493) -4(1474 1494 1495 1475) -4(3474 3475 3495 3494) -4(1475 1495 1496 1476) -4(3475 3476 3496 3495) -4(1476 1496 1497 1477) -4(3476 3477 3497 3496) -4(1477 1497 1498 1478) -4(3477 3478 3498 3497) -4(1478 1498 1499 1479) -4(3478 3479 3499 3498) -4(1480 1500 1501 1481) -4(3480 3481 3501 3500) -4(1481 1501 1502 1482) -4(3481 3482 3502 3501) -4(1482 1502 1503 1483) -4(3482 3483 3503 3502) -4(1483 1503 1504 1484) -4(3483 3484 3504 3503) -4(1484 1504 1505 1485) -4(3484 3485 3505 3504) -4(1485 1505 1506 1486) -4(3485 3486 3506 3505) -4(1486 1506 1507 1487) -4(3486 3487 3507 3506) -4(1487 1507 1508 1488) -4(3487 3488 3508 3507) -4(1488 1508 1509 1489) -4(3488 3489 3509 3508) -4(1489 1509 1510 1490) -4(3489 3490 3510 3509) -4(1490 1510 1511 1491) -4(3490 3491 3511 3510) -4(1491 1511 1512 1492) -4(3491 3492 3512 3511) -4(1492 1512 1513 1493) -4(3492 3493 3513 3512) -4(1493 1513 1514 1494) -4(3493 3494 3514 3513) -4(1494 1514 1515 1495) -4(3494 3495 3515 3514) -4(1495 1515 1516 1496) -4(3495 3496 3516 3515) -4(1496 1516 1517 1497) -4(3496 3497 3517 3516) -4(1497 1517 1518 1498) -4(3497 3498 3518 3517) -4(1498 1518 1519 1499) -4(3498 3499 3519 3518) -4(1500 1520 1521 1501) -4(3500 3501 3521 3520) -4(1501 1521 1522 1502) -4(3501 3502 3522 3521) -4(1502 1522 1523 1503) -4(3502 3503 3523 3522) -4(1503 1523 1524 1504) -4(3503 3504 3524 3523) -4(1504 1524 1525 1505) -4(3504 3505 3525 3524) -4(1505 1525 1526 1506) -4(3505 3506 3526 3525) -4(1506 1526 1527 1507) -4(3506 3507 3527 3526) -4(1507 1527 1528 1508) -4(3507 3508 3528 3527) -4(1508 1528 1529 1509) -4(3508 3509 3529 3528) -4(1509 1529 1530 1510) -4(3509 3510 3530 3529) -4(1510 1530 1531 1511) -4(3510 3511 3531 3530) -4(1511 1531 1532 1512) -4(3511 3512 3532 3531) -4(1512 1532 1533 1513) -4(3512 3513 3533 3532) -4(1513 1533 1534 1514) -4(3513 3514 3534 3533) -4(1514 1534 1535 1515) -4(3514 3515 3535 3534) -4(1515 1535 1536 1516) -4(3515 3516 3536 3535) -4(1516 1536 1537 1517) -4(3516 3517 3537 3536) -4(1517 1537 1538 1518) -4(3517 3518 3538 3537) -4(1518 1538 1539 1519) -4(3518 3519 3539 3538) -4(1520 1540 1541 1521) -4(3520 3521 3541 3540) -4(1521 1541 1542 1522) -4(3521 3522 3542 3541) -4(1522 1542 1543 1523) -4(3522 3523 3543 3542) -4(1523 1543 1544 1524) -4(3523 3524 3544 3543) -4(1524 1544 1545 1525) -4(3524 3525 3545 3544) -4(1525 1545 1546 1526) -4(3525 3526 3546 3545) -4(1526 1546 1547 1527) -4(3526 3527 3547 3546) -4(1527 1547 1548 1528) -4(3527 3528 3548 3547) -4(1528 1548 1549 1529) -4(3528 3529 3549 3548) -4(1529 1549 1550 1530) -4(3529 3530 3550 3549) -4(1530 1550 1551 1531) -4(3530 3531 3551 3550) -4(1531 1551 1552 1532) -4(3531 3532 3552 3551) -4(1532 1552 1553 1533) -4(3532 3533 3553 3552) -4(1533 1553 1554 1534) -4(3533 3534 3554 3553) -4(1534 1554 1555 1535) -4(3534 3535 3555 3554) -4(1535 1555 1556 1536) -4(3535 3536 3556 3555) -4(1536 1556 1557 1537) -4(3536 3537 3557 3556) -4(1537 1557 1558 1538) -4(3537 3538 3558 3557) -4(1538 1558 1559 1539) -4(3538 3539 3559 3558) -4(1540 1560 1561 1541) -4(3540 3541 3561 3560) -4(1541 1561 1562 1542) -4(3541 3542 3562 3561) -4(1542 1562 1563 1543) -4(3542 3543 3563 3562) -4(1543 1563 1564 1544) -4(3543 3544 3564 3563) -4(1544 1564 1565 1545) -4(3544 3545 3565 3564) -4(1545 1565 1566 1546) -4(3545 3546 3566 3565) -4(1546 1566 1567 1547) -4(3546 3547 3567 3566) -4(1547 1567 1568 1548) -4(3547 3548 3568 3567) -4(1548 1568 1569 1549) -4(3548 3549 3569 3568) -4(1549 1569 1570 1550) -4(3549 3550 3570 3569) -4(1550 1570 1571 1551) -4(3550 3551 3571 3570) -4(1551 1571 1572 1552) -4(3551 3552 3572 3571) -4(1552 1572 1573 1553) -4(3552 3553 3573 3572) -4(1553 1573 1574 1554) -4(3553 3554 3574 3573) -4(1554 1574 1575 1555) -4(3554 3555 3575 3574) -4(1555 1575 1576 1556) -4(3555 3556 3576 3575) -4(1556 1576 1577 1557) -4(3556 3557 3577 3576) -4(1557 1577 1578 1558) -4(3557 3558 3578 3577) -4(1558 1578 1579 1559) -4(3558 3559 3579 3578) -4(1560 1580 1581 1561) -4(3560 3561 3581 3580) -4(1561 1581 1582 1562) -4(3561 3562 3582 3581) -4(1562 1582 1583 1563) -4(3562 3563 3583 3582) -4(1563 1583 1584 1564) -4(3563 3564 3584 3583) -4(1564 1584 1585 1565) -4(3564 3565 3585 3584) -4(1565 1585 1586 1566) -4(3565 3566 3586 3585) -4(1566 1586 1587 1567) -4(3566 3567 3587 3586) -4(1567 1587 1588 1568) -4(3567 3568 3588 3587) -4(1568 1588 1589 1569) -4(3568 3569 3589 3588) -4(1569 1589 1590 1570) -4(3569 3570 3590 3589) -4(1570 1590 1591 1571) -4(3570 3571 3591 3590) -4(1571 1591 1592 1572) -4(3571 3572 3592 3591) -4(1572 1592 1593 1573) -4(3572 3573 3593 3592) -4(1573 1593 1594 1574) -4(3573 3574 3594 3593) -4(1574 1594 1595 1575) -4(3574 3575 3595 3594) -4(1575 1595 1596 1576) -4(3575 3576 3596 3595) -4(1576 1596 1597 1577) -4(3576 3577 3597 3596) -4(1577 1597 1598 1578) -4(3577 3578 3598 3597) -4(1578 1598 1599 1579) -4(3578 3579 3599 3598) -4(1580 1600 1601 1581) -4(3580 3581 3601 3600) -4(1581 1601 1602 1582) -4(3581 3582 3602 3601) -4(1582 1602 1603 1583) -4(3582 3583 3603 3602) -4(1583 1603 1604 1584) -4(3583 3584 3604 3603) -4(1584 1604 1605 1585) -4(3584 3585 3605 3604) -4(1585 1605 1606 1586) -4(3585 3586 3606 3605) -4(1586 1606 1607 1587) -4(3586 3587 3607 3606) -4(1587 1607 1608 1588) -4(3587 3588 3608 3607) -4(1588 1608 1609 1589) -4(3588 3589 3609 3608) -4(1589 1609 1610 1590) -4(3589 3590 3610 3609) -4(1590 1610 1611 1591) -4(3590 3591 3611 3610) -4(1591 1611 1612 1592) -4(3591 3592 3612 3611) -4(1592 1612 1613 1593) -4(3592 3593 3613 3612) -4(1593 1613 1614 1594) -4(3593 3594 3614 3613) -4(1594 1614 1615 1595) -4(3594 3595 3615 3614) -4(1595 1615 1616 1596) -4(3595 3596 3616 3615) -4(1596 1616 1617 1597) -4(3596 3597 3617 3616) -4(1597 1617 1618 1598) -4(3597 3598 3618 3617) -4(1598 1618 1619 1599) -4(3598 3599 3619 3618) -4(1600 1620 1621 1601) -4(3600 3601 3621 3620) -4(1601 1621 1622 1602) -4(3601 3602 3622 3621) -4(1602 1622 1623 1603) -4(3602 3603 3623 3622) -4(1603 1623 1624 1604) -4(3603 3604 3624 3623) -4(1604 1624 1625 1605) -4(3604 3605 3625 3624) -4(1605 1625 1626 1606) -4(3605 3606 3626 3625) -4(1606 1626 1627 1607) -4(3606 3607 3627 3626) -4(1607 1627 1628 1608) -4(3607 3608 3628 3627) -4(1608 1628 1629 1609) -4(3608 3609 3629 3628) -4(1609 1629 1630 1610) -4(3609 3610 3630 3629) -4(1610 1630 1631 1611) -4(3610 3611 3631 3630) -4(1611 1631 1632 1612) -4(3611 3612 3632 3631) -4(1612 1632 1633 1613) -4(3612 3613 3633 3632) -4(1613 1633 1634 1614) -4(3613 3614 3634 3633) -4(1614 1634 1635 1615) -4(3614 3615 3635 3634) -4(1615 1635 1636 1616) -4(3615 3616 3636 3635) -4(1616 1636 1637 1617) -4(3616 3617 3637 3636) -4(1617 1637 1638 1618) -4(3617 3618 3638 3637) -4(1618 1638 1639 1619) -4(3618 3619 3639 3638) -4(1620 1640 1641 1621) -4(3620 3621 3641 3640) -4(1621 1641 1642 1622) -4(3621 3622 3642 3641) -4(1622 1642 1643 1623) -4(3622 3623 3643 3642) -4(1623 1643 1644 1624) -4(3623 3624 3644 3643) -4(1624 1644 1645 1625) -4(3624 3625 3645 3644) -4(1625 1645 1646 1626) -4(3625 3626 3646 3645) -4(1626 1646 1647 1627) -4(3626 3627 3647 3646) -4(1627 1647 1648 1628) -4(3627 3628 3648 3647) -4(1628 1648 1649 1629) -4(3628 3629 3649 3648) -4(1629 1649 1650 1630) -4(3629 3630 3650 3649) -4(1630 1650 1651 1631) -4(3630 3631 3651 3650) -4(1631 1651 1652 1632) -4(3631 3632 3652 3651) -4(1632 1652 1653 1633) -4(3632 3633 3653 3652) -4(1633 1653 1654 1634) -4(3633 3634 3654 3653) -4(1634 1654 1655 1635) -4(3634 3635 3655 3654) -4(1635 1655 1656 1636) -4(3635 3636 3656 3655) -4(1636 1656 1657 1637) -4(3636 3637 3657 3656) -4(1637 1657 1658 1638) -4(3637 3638 3658 3657) -4(1638 1658 1659 1639) -4(3638 3639 3659 3658) -4(1640 1660 1661 1641) -4(3640 3641 3661 3660) -4(1641 1661 1662 1642) -4(3641 3642 3662 3661) -4(1642 1662 1663 1643) -4(3642 3643 3663 3662) -4(1643 1663 1664 1644) -4(3643 3644 3664 3663) -4(1644 1664 1665 1645) -4(3644 3645 3665 3664) -4(1645 1665 1666 1646) -4(3645 3646 3666 3665) -4(1646 1666 1667 1647) -4(3646 3647 3667 3666) -4(1647 1667 1668 1648) -4(3647 3648 3668 3667) -4(1648 1668 1669 1649) -4(3648 3649 3669 3668) -4(1649 1669 1670 1650) -4(3649 3650 3670 3669) -4(1650 1670 1671 1651) -4(3650 3651 3671 3670) -4(1651 1671 1672 1652) -4(3651 3652 3672 3671) -4(1652 1672 1673 1653) -4(3652 3653 3673 3672) -4(1653 1673 1674 1654) -4(3653 3654 3674 3673) -4(1654 1674 1675 1655) -4(3654 3655 3675 3674) -4(1655 1675 1676 1656) -4(3655 3656 3676 3675) -4(1656 1676 1677 1657) -4(3656 3657 3677 3676) -4(1657 1677 1678 1658) -4(3657 3658 3678 3677) -4(1658 1678 1679 1659) -4(3658 3659 3679 3678) -4(1660 1680 1681 1661) -4(3660 3661 3681 3680) -4(1661 1681 1682 1662) -4(3661 3662 3682 3681) -4(1662 1682 1683 1663) -4(3662 3663 3683 3682) -4(1663 1683 1684 1664) -4(3663 3664 3684 3683) -4(1664 1684 1685 1665) -4(3664 3665 3685 3684) -4(1665 1685 1686 1666) -4(3665 3666 3686 3685) -4(1666 1686 1687 1667) -4(3666 3667 3687 3686) -4(1667 1687 1688 1668) -4(3667 3668 3688 3687) -4(1668 1688 1689 1669) -4(3668 3669 3689 3688) -4(1669 1689 1690 1670) -4(3669 3670 3690 3689) -4(1670 1690 1691 1671) -4(3670 3671 3691 3690) -4(1671 1691 1692 1672) -4(3671 3672 3692 3691) -4(1672 1692 1693 1673) -4(3672 3673 3693 3692) -4(1673 1693 1694 1674) -4(3673 3674 3694 3693) -4(1674 1694 1695 1675) -4(3674 3675 3695 3694) -4(1675 1695 1696 1676) -4(3675 3676 3696 3695) -4(1676 1696 1697 1677) -4(3676 3677 3697 3696) -4(1677 1697 1698 1678) -4(3677 3678 3698 3697) -4(1678 1698 1699 1679) -4(3678 3679 3699 3698) -4(1680 1700 1701 1681) -4(3680 3681 3701 3700) -4(1681 1701 1702 1682) -4(3681 3682 3702 3701) -4(1682 1702 1703 1683) -4(3682 3683 3703 3702) -4(1683 1703 1704 1684) -4(3683 3684 3704 3703) -4(1684 1704 1705 1685) -4(3684 3685 3705 3704) -4(1685 1705 1706 1686) -4(3685 3686 3706 3705) -4(1686 1706 1707 1687) -4(3686 3687 3707 3706) -4(1687 1707 1708 1688) -4(3687 3688 3708 3707) -4(1688 1708 1709 1689) -4(3688 3689 3709 3708) -4(1689 1709 1710 1690) -4(3689 3690 3710 3709) -4(1690 1710 1711 1691) -4(3690 3691 3711 3710) -4(1691 1711 1712 1692) -4(3691 3692 3712 3711) -4(1692 1712 1713 1693) -4(3692 3693 3713 3712) -4(1693 1713 1714 1694) -4(3693 3694 3714 3713) -4(1694 1714 1715 1695) -4(3694 3695 3715 3714) -4(1695 1715 1716 1696) -4(3695 3696 3716 3715) -4(1696 1716 1717 1697) -4(3696 3697 3717 3716) -4(1697 1717 1718 1698) -4(3697 3698 3718 3717) -4(1698 1718 1719 1699) -4(3698 3699 3719 3718) -4(1700 1720 1721 1701) -4(3700 3701 3721 3720) -4(1701 1721 1722 1702) -4(3701 3702 3722 3721) -4(1702 1722 1723 1703) -4(3702 3703 3723 3722) -4(1703 1723 1724 1704) -4(3703 3704 3724 3723) -4(1704 1724 1725 1705) -4(3704 3705 3725 3724) -4(1705 1725 1726 1706) -4(3705 3706 3726 3725) -4(1706 1726 1727 1707) -4(3706 3707 3727 3726) -4(1707 1727 1728 1708) -4(3707 3708 3728 3727) -4(1708 1728 1729 1709) -4(3708 3709 3729 3728) -4(1709 1729 1730 1710) -4(3709 3710 3730 3729) -4(1710 1730 1731 1711) -4(3710 3711 3731 3730) -4(1711 1731 1732 1712) -4(3711 3712 3732 3731) -4(1712 1732 1733 1713) -4(3712 3713 3733 3732) -4(1713 1733 1734 1714) -4(3713 3714 3734 3733) -4(1714 1734 1735 1715) -4(3714 3715 3735 3734) -4(1715 1735 1736 1716) -4(3715 3716 3736 3735) -4(1716 1736 1737 1717) -4(3716 3717 3737 3736) -4(1717 1737 1738 1718) -4(3717 3718 3738 3737) -4(1718 1738 1739 1719) -4(3718 3719 3739 3738) -4(1720 1740 1741 1721) -4(3720 3721 3741 3740) -4(1721 1741 1742 1722) -4(3721 3722 3742 3741) -4(1722 1742 1743 1723) -4(3722 3723 3743 3742) -4(1723 1743 1744 1724) -4(3723 3724 3744 3743) -4(1724 1744 1745 1725) -4(3724 3725 3745 3744) -4(1725 1745 1746 1726) -4(3725 3726 3746 3745) -4(1726 1746 1747 1727) -4(3726 3727 3747 3746) -4(1727 1747 1748 1728) -4(3727 3728 3748 3747) -4(1728 1748 1749 1729) -4(3728 3729 3749 3748) -4(1729 1749 1750 1730) -4(3729 3730 3750 3749) -4(1730 1750 1751 1731) -4(3730 3731 3751 3750) -4(1731 1751 1752 1732) -4(3731 3732 3752 3751) -4(1732 1752 1753 1733) -4(3732 3733 3753 3752) -4(1733 1753 1754 1734) -4(3733 3734 3754 3753) -4(1734 1754 1755 1735) -4(3734 3735 3755 3754) -4(1735 1755 1756 1736) -4(3735 3736 3756 3755) -4(1736 1756 1757 1737) -4(3736 3737 3757 3756) -4(1737 1757 1758 1738) -4(3737 3738 3758 3757) -4(1738 1758 1759 1739) -4(3738 3739 3759 3758) -4(1740 1760 1761 1741) -4(3740 3741 3761 3760) -4(1741 1761 1762 1742) -4(3741 3742 3762 3761) -4(1742 1762 1763 1743) -4(3742 3743 3763 3762) -4(1743 1763 1764 1744) -4(3743 3744 3764 3763) -4(1744 1764 1765 1745) -4(3744 3745 3765 3764) -4(1745 1765 1766 1746) -4(3745 3746 3766 3765) -4(1746 1766 1767 1747) -4(3746 3747 3767 3766) -4(1747 1767 1768 1748) -4(3747 3748 3768 3767) -4(1748 1768 1769 1749) -4(3748 3749 3769 3768) -4(1749 1769 1770 1750) -4(3749 3750 3770 3769) -4(1750 1770 1771 1751) -4(3750 3751 3771 3770) -4(1751 1771 1772 1752) -4(3751 3752 3772 3771) -4(1752 1772 1773 1753) -4(3752 3753 3773 3772) -4(1753 1773 1774 1754) -4(3753 3754 3774 3773) -4(1754 1774 1775 1755) -4(3754 3755 3775 3774) -4(1755 1775 1776 1756) -4(3755 3756 3776 3775) -4(1756 1776 1777 1757) -4(3756 3757 3777 3776) -4(1757 1777 1778 1758) -4(3757 3758 3778 3777) -4(1758 1778 1779 1759) -4(3758 3759 3779 3778) -4(1760 1780 1781 1761) -4(3760 3761 3781 3780) -4(1761 1781 1782 1762) -4(3761 3762 3782 3781) -4(1762 1782 1783 1763) -4(3762 3763 3783 3782) -4(1763 1783 1784 1764) -4(3763 3764 3784 3783) -4(1764 1784 1785 1765) -4(3764 3765 3785 3784) -4(1765 1785 1786 1766) -4(3765 3766 3786 3785) -4(1766 1786 1787 1767) -4(3766 3767 3787 3786) -4(1767 1787 1788 1768) -4(3767 3768 3788 3787) -4(1768 1788 1789 1769) -4(3768 3769 3789 3788) -4(1769 1789 1790 1770) -4(3769 3770 3790 3789) -4(1770 1790 1791 1771) -4(3770 3771 3791 3790) -4(1771 1791 1792 1772) -4(3771 3772 3792 3791) -4(1772 1792 1793 1773) -4(3772 3773 3793 3792) -4(1773 1793 1794 1774) -4(3773 3774 3794 3793) -4(1774 1794 1795 1775) -4(3774 3775 3795 3794) -4(1775 1795 1796 1776) -4(3775 3776 3796 3795) -4(1776 1796 1797 1777) -4(3776 3777 3797 3796) -4(1777 1797 1798 1778) -4(3777 3778 3798 3797) -4(1778 1798 1799 1779) -4(3778 3779 3799 3798) -4(1780 1800 1801 1781) -4(3780 3781 3801 3800) -4(1781 1801 1802 1782) -4(3781 3782 3802 3801) -4(1782 1802 1803 1783) -4(3782 3783 3803 3802) -4(1783 1803 1804 1784) -4(3783 3784 3804 3803) -4(1784 1804 1805 1785) -4(3784 3785 3805 3804) -4(1785 1805 1806 1786) -4(3785 3786 3806 3805) -4(1786 1806 1807 1787) -4(3786 3787 3807 3806) -4(1787 1807 1808 1788) -4(3787 3788 3808 3807) -4(1788 1808 1809 1789) -4(3788 3789 3809 3808) -4(1789 1809 1810 1790) -4(3789 3790 3810 3809) -4(1790 1810 1811 1791) -4(3790 3791 3811 3810) -4(1791 1811 1812 1792) -4(3791 3792 3812 3811) -4(1792 1812 1813 1793) -4(3792 3793 3813 3812) -4(1793 1813 1814 1794) -4(3793 3794 3814 3813) -4(1794 1814 1815 1795) -4(3794 3795 3815 3814) -4(1795 1815 1816 1796) -4(3795 3796 3816 3815) -4(1796 1816 1817 1797) -4(3796 3797 3817 3816) -4(1797 1817 1818 1798) -4(3797 3798 3818 3817) -4(1798 1818 1819 1799) -4(3798 3799 3819 3818) -4(1800 1820 1821 1801) -4(3800 3801 3821 3820) -4(1801 1821 1822 1802) -4(3801 3802 3822 3821) -4(1802 1822 1823 1803) -4(3802 3803 3823 3822) -4(1803 1823 1824 1804) -4(3803 3804 3824 3823) -4(1804 1824 1825 1805) -4(3804 3805 3825 3824) -4(1805 1825 1826 1806) -4(3805 3806 3826 3825) -4(1806 1826 1827 1807) -4(3806 3807 3827 3826) -4(1807 1827 1828 1808) -4(3807 3808 3828 3827) -4(1808 1828 1829 1809) -4(3808 3809 3829 3828) -4(1809 1829 1830 1810) -4(3809 3810 3830 3829) -4(1810 1830 1831 1811) -4(3810 3811 3831 3830) -4(1811 1831 1832 1812) -4(3811 3812 3832 3831) -4(1812 1832 1833 1813) -4(3812 3813 3833 3832) -4(1813 1833 1834 1814) -4(3813 3814 3834 3833) -4(1814 1834 1835 1815) -4(3814 3815 3835 3834) -4(1815 1835 1836 1816) -4(3815 3816 3836 3835) -4(1816 1836 1837 1817) -4(3816 3817 3837 3836) -4(1817 1837 1838 1818) -4(3817 3818 3838 3837) -4(1818 1838 1839 1819) -4(3818 3819 3839 3838) -4(1820 1840 1841 1821) -4(3820 3821 3841 3840) -4(1821 1841 1842 1822) -4(3821 3822 3842 3841) -4(1822 1842 1843 1823) -4(3822 3823 3843 3842) -4(1823 1843 1844 1824) -4(3823 3824 3844 3843) -4(1824 1844 1845 1825) -4(3824 3825 3845 3844) -4(1825 1845 1846 1826) -4(3825 3826 3846 3845) -4(1826 1846 1847 1827) -4(3826 3827 3847 3846) -4(1827 1847 1848 1828) -4(3827 3828 3848 3847) -4(1828 1848 1849 1829) -4(3828 3829 3849 3848) -4(1829 1849 1850 1830) -4(3829 3830 3850 3849) -4(1830 1850 1851 1831) -4(3830 3831 3851 3850) -4(1831 1851 1852 1832) -4(3831 3832 3852 3851) -4(1832 1852 1853 1833) -4(3832 3833 3853 3852) -4(1833 1853 1854 1834) -4(3833 3834 3854 3853) -4(1834 1854 1855 1835) -4(3834 3835 3855 3854) -4(1835 1855 1856 1836) -4(3835 3836 3856 3855) -4(1836 1856 1857 1837) -4(3836 3837 3857 3856) -4(1837 1857 1858 1838) -4(3837 3838 3858 3857) -4(1838 1858 1859 1839) -4(3838 3839 3859 3858) -4(1840 1860 1861 1841) -4(3840 3841 3861 3860) -4(1841 1861 1862 1842) -4(3841 3842 3862 3861) -4(1842 1862 1863 1843) -4(3842 3843 3863 3862) -4(1843 1863 1864 1844) -4(3843 3844 3864 3863) -4(1844 1864 1865 1845) -4(3844 3845 3865 3864) -4(1845 1865 1866 1846) -4(3845 3846 3866 3865) -4(1846 1866 1867 1847) -4(3846 3847 3867 3866) -4(1847 1867 1868 1848) -4(3847 3848 3868 3867) -4(1848 1868 1869 1849) -4(3848 3849 3869 3868) -4(1849 1869 1870 1850) -4(3849 3850 3870 3869) -4(1850 1870 1871 1851) -4(3850 3851 3871 3870) -4(1851 1871 1872 1852) -4(3851 3852 3872 3871) -4(1852 1872 1873 1853) -4(3852 3853 3873 3872) -4(1853 1873 1874 1854) -4(3853 3854 3874 3873) -4(1854 1874 1875 1855) -4(3854 3855 3875 3874) -4(1855 1875 1876 1856) -4(3855 3856 3876 3875) -4(1856 1876 1877 1857) -4(3856 3857 3877 3876) -4(1857 1877 1878 1858) -4(3857 3858 3878 3877) -4(1858 1878 1879 1859) -4(3858 3859 3879 3878) -4(1860 1880 1881 1861) -4(3860 3861 3881 3880) -4(1861 1881 1882 1862) -4(3861 3862 3882 3881) -4(1862 1882 1883 1863) -4(3862 3863 3883 3882) -4(1863 1883 1884 1864) -4(3863 3864 3884 3883) -4(1864 1884 1885 1865) -4(3864 3865 3885 3884) -4(1865 1885 1886 1866) -4(3865 3866 3886 3885) -4(1866 1886 1887 1867) -4(3866 3867 3887 3886) -4(1867 1887 1888 1868) -4(3867 3868 3888 3887) -4(1868 1888 1889 1869) -4(3868 3869 3889 3888) -4(1869 1889 1890 1870) -4(3869 3870 3890 3889) -4(1870 1890 1891 1871) -4(3870 3871 3891 3890) -4(1871 1891 1892 1872) -4(3871 3872 3892 3891) -4(1872 1892 1893 1873) -4(3872 3873 3893 3892) -4(1873 1893 1894 1874) -4(3873 3874 3894 3893) -4(1874 1894 1895 1875) -4(3874 3875 3895 3894) -4(1875 1895 1896 1876) -4(3875 3876 3896 3895) -4(1876 1896 1897 1877) -4(3876 3877 3897 3896) -4(1877 1897 1898 1878) -4(3877 3878 3898 3897) -4(1878 1898 1899 1879) -4(3878 3879 3899 3898) -4(1880 1900 1901 1881) -4(3880 3881 3901 3900) -4(1881 1901 1902 1882) -4(3881 3882 3902 3901) -4(1882 1902 1903 1883) -4(3882 3883 3903 3902) -4(1883 1903 1904 1884) -4(3883 3884 3904 3903) -4(1884 1904 1905 1885) -4(3884 3885 3905 3904) -4(1885 1905 1906 1886) -4(3885 3886 3906 3905) -4(1886 1906 1907 1887) -4(3886 3887 3907 3906) -4(1887 1907 1908 1888) -4(3887 3888 3908 3907) -4(1888 1908 1909 1889) -4(3888 3889 3909 3908) -4(1889 1909 1910 1890) -4(3889 3890 3910 3909) -4(1890 1910 1911 1891) -4(3890 3891 3911 3910) -4(1891 1911 1912 1892) -4(3891 3892 3912 3911) -4(1892 1912 1913 1893) -4(3892 3893 3913 3912) -4(1893 1913 1914 1894) -4(3893 3894 3914 3913) -4(1894 1914 1915 1895) -4(3894 3895 3915 3914) -4(1895 1915 1916 1896) -4(3895 3896 3916 3915) -4(1896 1916 1917 1897) -4(3896 3897 3917 3916) -4(1897 1917 1918 1898) -4(3897 3898 3918 3917) -4(1898 1918 1919 1899) -4(3898 3899 3919 3918) -4(1900 1920 1921 1901) -4(3900 3901 3921 3920) -4(1901 1921 1922 1902) -4(3901 3902 3922 3921) -4(1902 1922 1923 1903) -4(3902 3903 3923 3922) -4(1903 1923 1924 1904) -4(3903 3904 3924 3923) -4(1904 1924 1925 1905) -4(3904 3905 3925 3924) -4(1905 1925 1926 1906) -4(3905 3906 3926 3925) -4(1906 1926 1927 1907) -4(3906 3907 3927 3926) -4(1907 1927 1928 1908) -4(3907 3908 3928 3927) -4(1908 1928 1929 1909) -4(3908 3909 3929 3928) -4(1909 1929 1930 1910) -4(3909 3910 3930 3929) -4(1910 1930 1931 1911) -4(3910 3911 3931 3930) -4(1911 1931 1932 1912) -4(3911 3912 3932 3931) -4(1912 1932 1933 1913) -4(3912 3913 3933 3932) -4(1913 1933 1934 1914) -4(3913 3914 3934 3933) -4(1914 1934 1935 1915) -4(3914 3915 3935 3934) -4(1915 1935 1936 1916) -4(3915 3916 3936 3935) -4(1916 1936 1937 1917) -4(3916 3917 3937 3936) -4(1917 1937 1938 1918) -4(3917 3918 3938 3937) -4(1918 1938 1939 1919) -4(3918 3919 3939 3938) -4(1920 1940 1941 1921) -4(3920 3921 3941 3940) -4(1921 1941 1942 1922) -4(3921 3922 3942 3941) -4(1922 1942 1943 1923) -4(3922 3923 3943 3942) -4(1923 1943 1944 1924) -4(3923 3924 3944 3943) -4(1924 1944 1945 1925) -4(3924 3925 3945 3944) -4(1925 1945 1946 1926) -4(3925 3926 3946 3945) -4(1926 1946 1947 1927) -4(3926 3927 3947 3946) -4(1927 1947 1948 1928) -4(3927 3928 3948 3947) -4(1928 1948 1949 1929) -4(3928 3929 3949 3948) -4(1929 1949 1950 1930) -4(3929 3930 3950 3949) -4(1930 1950 1951 1931) -4(3930 3931 3951 3950) -4(1931 1951 1952 1932) -4(3931 3932 3952 3951) -4(1932 1952 1953 1933) -4(3932 3933 3953 3952) -4(1933 1953 1954 1934) -4(3933 3934 3954 3953) -4(1934 1954 1955 1935) -4(3934 3935 3955 3954) -4(1935 1955 1956 1936) -4(3935 3936 3956 3955) -4(1936 1956 1957 1937) -4(3936 3937 3957 3956) -4(1937 1957 1958 1938) -4(3937 3938 3958 3957) -4(1938 1958 1959 1939) -4(3938 3939 3959 3958) -4(1940 1960 1961 1941) -4(3940 3941 3961 3960) -4(1941 1961 1962 1942) -4(3941 3942 3962 3961) -4(1942 1962 1963 1943) -4(3942 3943 3963 3962) -4(1943 1963 1964 1944) -4(3943 3944 3964 3963) -4(1944 1964 1965 1945) -4(3944 3945 3965 3964) -4(1945 1965 1966 1946) -4(3945 3946 3966 3965) -4(1946 1966 1967 1947) -4(3946 3947 3967 3966) -4(1947 1967 1968 1948) -4(3947 3948 3968 3967) -4(1948 1968 1969 1949) -4(3948 3949 3969 3968) -4(1949 1969 1970 1950) -4(3949 3950 3970 3969) -4(1950 1970 1971 1951) -4(3950 3951 3971 3970) -4(1951 1971 1972 1952) -4(3951 3952 3972 3971) -4(1952 1972 1973 1953) -4(3952 3953 3973 3972) -4(1953 1973 1974 1954) -4(3953 3954 3974 3973) -4(1954 1974 1975 1955) -4(3954 3955 3975 3974) -4(1955 1975 1976 1956) -4(3955 3956 3976 3975) -4(1956 1976 1977 1957) -4(3956 3957 3977 3976) -4(1957 1977 1978 1958) -4(3957 3958 3978 3977) -4(1958 1978 1979 1959) -4(3958 3959 3979 3978) -4(1960 1980 1981 1961) -4(3960 3961 3981 3980) -4(1961 1981 1982 1962) -4(3961 3962 3982 3981) -4(1962 1982 1983 1963) -4(3962 3963 3983 3982) -4(1963 1983 1984 1964) -4(3963 3964 3984 3983) -4(1964 1984 1985 1965) -4(3964 3965 3985 3984) -4(1965 1985 1986 1966) -4(3965 3966 3986 3985) -4(1966 1986 1987 1967) -4(3966 3967 3987 3986) -4(1967 1987 1988 1968) -4(3967 3968 3988 3987) -4(1968 1988 1989 1969) -4(3968 3969 3989 3988) -4(1969 1989 1990 1970) -4(3969 3970 3990 3989) -4(1970 1990 1991 1971) -4(3970 3971 3991 3990) -4(1971 1991 1992 1972) -4(3971 3972 3992 3991) -4(1972 1992 1993 1973) -4(3972 3973 3993 3992) -4(1973 1993 1994 1974) -4(3973 3974 3994 3993) -4(1974 1994 1995 1975) -4(3974 3975 3995 3994) -4(1975 1995 1996 1976) -4(3975 3976 3996 3995) -4(1976 1996 1997 1977) -4(3976 3977 3997 3996) -4(1977 1997 1998 1978) -4(3977 3978 3998 3997) -4(1978 1998 1999 1979) -4(3978 3979 3999 3998) -) - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/neighbour b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/neighbour deleted file mode 100755 index c58d3b2b1..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/neighbour +++ /dev/null @@ -1,3669 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class labelList; - note "nPoints: 4000 nCells: 1881 nFaces: 7642 nInternalFaces: 3644"; - location "constant/polyMesh"; - object neighbour; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -3644 -( -1 -19 -2 -20 -3 -21 -4 -22 -5 -23 -6 -24 -7 -25 -8 -26 -9 -27 -10 -28 -11 -29 -12 -30 -13 -31 -14 -32 -15 -33 -16 -34 -17 -35 -18 -36 -37 -20 -38 -21 -39 -22 -40 -23 -41 -24 -42 -25 -43 -26 -44 -27 -45 -28 -46 -29 -47 -30 -48 -31 -49 -32 -50 -33 -51 -34 -52 -35 -53 -36 -54 -37 -55 -56 -39 -57 -40 -58 -41 -59 -42 -60 -43 -61 -44 -62 -45 -63 -46 -64 -47 -65 -48 -66 -49 -67 -50 -68 -51 -69 -52 -70 -53 -71 -54 -72 -55 -73 -56 -74 -75 -58 -76 -59 -77 -60 -78 -61 -79 -62 -80 -63 -81 -64 -82 -65 -83 -66 -84 -67 -85 -68 -86 -69 -87 -70 -88 -71 -89 -72 -90 -73 -91 -74 -92 -75 -93 -94 -77 -95 -78 -96 -79 -97 -80 -98 -81 -99 -82 -100 -83 -101 -84 -102 -85 -103 -86 -104 -87 -105 -88 -106 -89 -107 -90 -108 -91 -109 -92 -110 -93 -111 -94 -112 -113 -96 -114 -97 -115 -98 -116 -99 -117 -100 -118 -101 -119 -102 -120 -103 -121 -104 -122 -105 -123 -106 -124 -107 -125 -108 -126 -109 -127 -110 -128 -111 -129 -112 -130 -113 -131 -132 -115 -133 -116 -134 -117 -135 -118 -136 -119 -137 -120 -138 -121 -139 -122 -140 -123 -141 -124 -142 -125 -143 -126 -144 -127 -145 -128 -146 -129 -147 -130 -148 -131 -149 -132 -150 -151 -134 -152 -135 -153 -136 -154 -137 -155 -138 -156 -139 -157 -140 -158 -141 -159 -142 -160 -143 -161 -144 -162 -145 -163 -146 -164 -147 -165 -148 -166 -149 -167 -150 -168 -151 -169 -170 -153 -171 -154 -172 -155 -173 -156 -174 -157 -175 -158 -176 -159 -177 -160 -178 -161 -179 -162 -180 -163 -181 -164 -182 -165 -183 -166 -184 -167 -185 -168 -186 -169 -187 -170 -188 -189 -172 -190 -173 -191 -174 -192 -175 -193 -176 -194 -177 -195 -178 -196 -179 -197 -180 -198 -181 -199 -182 -200 -183 -201 -184 -202 -185 -203 -186 -204 -187 -205 -188 -206 -189 -207 -208 -191 -209 -192 -210 -193 -211 -194 -212 -195 -213 -196 -214 -197 -215 -198 -216 -199 -217 -200 -218 -201 -219 -202 -220 -203 -221 -204 -222 -205 -223 -206 -224 -207 -225 -208 -226 -227 -210 -228 -211 -229 -212 -230 -213 -231 -214 -232 -215 -233 -216 -234 -217 -235 -218 -236 -219 -237 -220 -238 -221 -239 -222 -240 -223 -241 -224 -242 -225 -243 -226 -244 -227 -245 -246 -229 -247 -230 -248 -231 -249 -232 -250 -233 -251 -234 -252 -235 -253 -236 -254 -237 -255 -238 -256 -239 -257 -240 -258 -241 -259 -242 -260 -243 -261 -244 -262 -245 -263 -246 -264 -265 -248 -266 -249 -267 -250 -268 -251 -269 -252 -270 -253 -271 -254 -272 -255 -273 -256 -274 -257 -275 -258 -276 -259 -277 -260 -278 -261 -279 -262 -280 -263 -281 -264 -282 -265 -283 -284 -267 -285 -268 -286 -269 -287 -270 -288 -271 -289 -272 -290 -273 -291 -274 -292 -275 -293 -276 -294 -277 -295 -278 -296 -279 -297 -280 -298 -281 -299 -282 -300 -283 -301 -284 -302 -303 -286 -304 -287 -305 -288 -306 -289 -307 -290 -308 -291 -309 -292 -310 -293 -311 -294 -312 -295 -313 -296 -314 -297 -315 -298 -316 -299 -317 -300 -318 -301 -319 -302 -320 -303 -321 -322 -305 -323 -306 -324 -307 -325 -308 -326 -309 -327 -310 -328 -311 -329 -312 -330 -313 -331 -314 -332 -315 -333 -316 -334 -317 -335 -318 -336 -319 -337 -320 -338 -321 -339 -322 -340 -341 -324 -342 -325 -343 -326 -344 -327 -345 -328 -346 -329 -347 -330 -348 -331 -349 -332 -350 -333 -351 -334 -352 -335 -353 -336 -354 -337 -355 -338 -356 -339 -357 -340 -358 -341 -359 -360 -343 -361 -344 -362 -345 -363 -346 -364 -347 -365 -348 -366 -349 -367 -350 -368 -351 -369 -352 -370 -353 -371 -354 -372 -355 -373 -356 -374 -357 -375 -358 -376 -359 -377 -360 -378 -379 -362 -380 -363 -381 -364 -382 -365 -383 -366 -384 -367 -385 -368 -386 -369 -387 -370 -388 -371 -389 -372 -390 -373 -391 -374 -392 -375 -393 -376 -394 -377 -395 -378 -396 -379 -397 -398 -381 -399 -382 -400 -383 -401 -384 -402 -385 -403 -386 -404 -387 -405 -388 -406 -389 -407 -390 -408 -391 -409 -392 -410 -393 -411 -394 -412 -395 -413 -396 -414 -397 -415 -398 -416 -417 -400 -418 -401 -419 -402 -420 -403 -421 -404 -422 -405 -423 -406 -424 -407 -425 -408 -426 -409 -427 -410 -428 -411 -429 -412 -430 -413 -431 -414 -432 -415 -433 -416 -434 -417 -435 -436 -419 -437 -420 -438 -421 -439 -422 -440 -423 -441 -424 -442 -425 -443 -426 -444 -427 -445 -428 -446 -429 -447 -430 -448 -431 -449 -432 -450 -433 -451 -434 -452 -435 -453 -436 -454 -455 -438 -456 -439 -457 -440 -458 -441 -459 -442 -460 -443 -461 -444 -462 -445 -463 -446 -464 -447 -465 -448 -466 -449 -467 -450 -468 -451 -469 -452 -470 -453 -471 -454 -472 -455 -473 -474 -457 -475 -458 -476 -459 -477 -460 -478 -461 -479 -462 -480 -463 -481 -464 -482 -465 -483 -466 -484 -467 -485 -468 -486 -469 -487 -470 -488 -471 -489 -472 -490 -473 -491 -474 -492 -493 -476 -494 -477 -495 -478 -496 -479 -497 -480 -498 -481 -499 -482 -500 -483 -501 -484 -502 -485 -503 -486 -504 -487 -505 -488 -506 -489 -507 -490 -508 -491 -509 -492 -510 -493 -511 -512 -495 -513 -496 -514 -497 -515 -498 -516 -499 -517 -500 -518 -501 -519 -502 -520 -503 -521 -504 -522 -505 -523 -506 -524 -507 -525 -508 -526 -509 -527 -510 -528 -511 -529 -512 -530 -531 -514 -532 -515 -533 -516 -534 -517 -535 -518 -536 -519 -537 -520 -538 -521 -539 -522 -540 -523 -541 -524 -542 -525 -543 -526 -544 -527 -545 -528 -546 -529 -547 -530 -548 -531 -549 -550 -533 -551 -534 -552 -535 -553 -536 -554 -537 -555 -538 -556 -539 -557 -540 -558 -541 -559 -542 -560 -543 -561 -544 -562 -545 -563 -546 -564 -547 -565 -548 -566 -549 -567 -550 -568 -569 -552 -570 -553 -571 -554 -572 -555 -573 -556 -574 -557 -575 -558 -576 -559 -577 -560 -578 -561 -579 -562 -580 -563 -581 -564 -582 -565 -583 -566 -584 -567 -585 -568 -586 -569 -587 -588 -571 -589 -572 -590 -573 -591 -574 -592 -575 -593 -576 -594 -577 -595 -578 -596 -579 -597 -580 -598 -581 -599 -582 -600 -583 -601 -584 -602 -585 -603 -586 -604 -587 -605 -588 -606 -607 -590 -608 -591 -609 -592 -610 -593 -611 -594 -612 -595 -613 -596 -614 -597 -615 -598 -616 -599 -617 -600 -618 -601 -619 -602 -620 -603 -621 -604 -622 -605 -623 -606 -624 -607 -625 -626 -609 -627 -610 -628 -611 -629 -612 -630 -613 -631 -614 -632 -615 -633 -616 -634 -617 -635 -618 -636 -619 -637 -620 -638 -621 -639 -622 -640 -623 -641 -624 -642 -625 -643 -626 -644 -645 -628 -646 -629 -647 -630 -648 -631 -649 -632 -650 -633 -651 -634 -652 -635 -653 -636 -654 -637 -655 -638 -656 -639 -657 -640 -658 -641 -659 -642 -660 -643 -661 -644 -662 -645 -663 -664 -647 -665 -648 -666 -649 -667 -650 -668 -651 -669 -652 -670 -653 -671 -654 -672 -655 -673 -656 -674 -657 -675 -658 -676 -659 -677 -660 -678 -661 -679 -662 -680 -663 -681 -664 -682 -683 -666 -684 -667 -685 -668 -686 -669 -687 -670 -688 -671 -689 -672 -690 -673 -691 -674 -692 -675 -693 -676 -694 -677 -695 -678 -696 -679 -697 -680 -698 -681 -699 -682 -700 -683 -701 -702 -685 -703 -686 -704 -687 -705 -688 -706 -689 -707 -690 -708 -691 -709 -692 -710 -693 -711 -694 -712 -695 -713 -696 -714 -697 -715 -698 -716 -699 -717 -700 -718 -701 -719 -702 -720 -721 -704 -722 -705 -723 -706 -724 -707 -725 -708 -726 -709 -727 -710 -728 -711 -729 -712 -730 -713 -731 -714 -732 -715 -733 -716 -734 -717 -735 -718 -736 -719 -737 -720 -738 -721 -739 -740 -723 -741 -724 -742 -725 -743 -726 -744 -727 -745 -728 -746 -729 -747 -730 -748 -731 -749 -732 -750 -733 -751 -734 -752 -735 -753 -736 -754 -737 -755 -738 -756 -739 -757 -740 -758 -759 -742 -760 -743 -761 -744 -762 -745 -763 -746 -764 -747 -765 -748 -766 -749 -767 -750 -768 -751 -769 -752 -770 -753 -771 -754 -772 -755 -773 -756 -774 -757 -775 -758 -776 -759 -777 -778 -761 -779 -762 -780 -763 -781 -764 -782 -765 -783 -766 -784 -767 -785 -768 -786 -769 -787 -770 -788 -771 -789 -772 -790 -773 -791 -774 -792 -775 -793 -776 -794 -777 -795 -778 -796 -797 -780 -798 -781 -799 -782 -800 -783 -801 -784 -802 -785 -803 -786 -804 -787 -805 -788 -806 -789 -807 -790 -808 -791 -809 -792 -810 -793 -811 -794 -812 -795 -813 -796 -814 -797 -815 -816 -799 -817 -800 -818 -801 -819 -802 -820 -803 -821 -804 -822 -805 -823 -806 -824 -807 -825 -808 -826 -809 -827 -810 -828 -811 -829 -812 -830 -813 -831 -814 -832 -815 -833 -816 -834 -835 -818 -836 -819 -837 -820 -838 -821 -839 -822 -840 -823 -841 -824 -842 -825 -843 -826 -844 -827 -845 -828 -846 -829 -847 -830 -848 -831 -849 -832 -850 -833 -851 -834 -852 -835 -853 -854 -837 -855 -838 -856 -839 -857 -840 -858 -841 -859 -842 -860 -843 -861 -844 -862 -845 -863 -846 -864 -847 -865 -848 -866 -849 -867 -850 -868 -851 -869 -852 -870 -853 -871 -854 -872 -873 -856 -874 -857 -875 -858 -876 -859 -877 -860 -878 -861 -879 -862 -880 -863 -881 -864 -882 -865 -883 -866 -884 -867 -885 -868 -886 -869 -887 -870 -888 -871 -889 -872 -890 -873 -891 -892 -875 -893 -876 -894 -877 -895 -878 -896 -879 -897 -880 -898 -881 -899 -882 -900 -883 -901 -884 -902 -885 -903 -886 -904 -887 -905 -888 -906 -889 -907 -890 -908 -891 -909 -892 -910 -911 -894 -912 -895 -913 -896 -914 -897 -915 -898 -916 -899 -917 -900 -918 -901 -919 -902 -920 -903 -921 -904 -922 -905 -923 -906 -924 -907 -925 -908 -926 -909 -927 -910 -928 -911 -929 -930 -913 -931 -914 -932 -915 -933 -916 -934 -917 -935 -918 -936 -919 -937 -920 -938 -921 -939 -922 -940 -923 -941 -924 -942 -925 -943 -926 -944 -927 -945 -928 -946 -929 -947 -930 -948 -949 -932 -950 -933 -951 -934 -952 -935 -953 -936 -954 -937 -955 -938 -956 -939 -957 -940 -958 -941 -959 -942 -960 -943 -961 -944 -962 -945 -963 -946 -964 -947 -965 -948 -966 -949 -967 -968 -951 -969 -952 -970 -953 -971 -954 -972 -955 -973 -956 -974 -957 -975 -958 -976 -959 -977 -960 -978 -961 -979 -962 -980 -963 -981 -964 -982 -965 -983 -966 -984 -967 -985 -968 -986 -987 -970 -988 -971 -989 -972 -990 -973 -991 -974 -992 -975 -993 -976 -994 -977 -995 -978 -996 -979 -997 -980 -998 -981 -999 -982 -1000 -983 -1001 -984 -1002 -985 -1003 -986 -1004 -987 -1005 -1006 -989 -1007 -990 -1008 -991 -1009 -992 -1010 -993 -1011 -994 -1012 -995 -1013 -996 -1014 -997 -1015 -998 -1016 -999 -1017 -1000 -1018 -1001 -1019 -1002 -1020 -1003 -1021 -1004 -1022 -1005 -1023 -1006 -1024 -1025 -1008 -1026 -1009 -1027 -1010 -1028 -1011 -1029 -1012 -1030 -1013 -1031 -1014 -1032 -1015 -1033 -1016 -1034 -1017 -1035 -1018 -1036 -1019 -1037 -1020 -1038 -1021 -1039 -1022 -1040 -1023 -1041 -1024 -1042 -1025 -1043 -1044 -1027 -1045 -1028 -1046 -1029 -1047 -1030 -1048 -1031 -1049 -1032 -1050 -1033 -1051 -1034 -1052 -1035 -1053 -1036 -1054 -1037 -1055 -1038 -1056 -1039 -1057 -1040 -1058 -1041 -1059 -1042 -1060 -1043 -1061 -1044 -1062 -1063 -1046 -1064 -1047 -1065 -1048 -1066 -1049 -1067 -1050 -1068 -1051 -1069 -1052 -1070 -1053 -1071 -1054 -1072 -1055 -1073 -1056 -1074 -1057 -1075 -1058 -1076 -1059 -1077 -1060 -1078 -1061 -1079 -1062 -1080 -1063 -1081 -1082 -1065 -1083 -1066 -1084 -1067 -1085 -1068 -1086 -1069 -1087 -1070 -1088 -1071 -1089 -1072 -1090 -1073 -1091 -1074 -1092 -1075 -1093 -1076 -1094 -1077 -1095 -1078 -1096 -1079 -1097 -1080 -1098 -1081 -1099 -1082 -1100 -1101 -1084 -1102 -1085 -1103 -1086 -1104 -1087 -1105 -1088 -1106 -1089 -1107 -1090 -1108 -1091 -1109 -1092 -1110 -1093 -1111 -1094 -1112 -1095 -1113 -1096 -1114 -1097 -1115 -1098 -1116 -1099 -1117 -1100 -1118 -1101 -1119 -1120 -1103 -1121 -1104 -1122 -1105 -1123 -1106 -1124 -1107 -1125 -1108 -1126 -1109 -1127 -1110 -1128 -1111 -1129 -1112 -1130 -1113 -1131 -1114 -1132 -1115 -1133 -1116 -1134 -1117 -1135 -1118 -1136 -1119 -1137 -1120 -1138 -1139 -1122 -1140 -1123 -1141 -1124 -1142 -1125 -1143 -1126 -1144 -1127 -1145 -1128 -1146 -1129 -1147 -1130 -1148 -1131 -1149 -1132 -1150 -1133 -1151 -1134 -1152 -1135 -1153 -1136 -1154 -1137 -1155 -1138 -1156 -1139 -1157 -1158 -1141 -1159 -1142 -1160 -1143 -1161 -1144 -1162 -1145 -1163 -1146 -1164 -1147 -1165 -1148 -1166 -1149 -1167 -1150 -1168 -1151 -1169 -1152 -1170 -1153 -1171 -1154 -1172 -1155 -1173 -1156 -1174 -1157 -1175 -1158 -1176 -1177 -1160 -1178 -1161 -1179 -1162 -1180 -1163 -1181 -1164 -1182 -1165 -1183 -1166 -1184 -1167 -1185 -1168 -1186 -1169 -1187 -1170 -1188 -1171 -1189 -1172 -1190 -1173 -1191 -1174 -1192 -1175 -1193 -1176 -1194 -1177 -1195 -1196 -1179 -1197 -1180 -1198 -1181 -1199 -1182 -1200 -1183 -1201 -1184 -1202 -1185 -1203 -1186 -1204 -1187 -1205 -1188 -1206 -1189 -1207 -1190 -1208 -1191 -1209 -1192 -1210 -1193 -1211 -1194 -1212 -1195 -1213 -1196 -1214 -1215 -1198 -1216 -1199 -1217 -1200 -1218 -1201 -1219 -1202 -1220 -1203 -1221 -1204 -1222 -1205 -1223 -1206 -1224 -1207 -1225 -1208 -1226 -1209 -1227 -1210 -1228 -1211 -1229 -1212 -1230 -1213 -1231 -1214 -1232 -1215 -1233 -1234 -1217 -1235 -1218 -1236 -1219 -1237 -1220 -1238 -1221 -1239 -1222 -1240 -1223 -1241 -1224 -1242 -1225 -1243 -1226 -1244 -1227 -1245 -1228 -1246 -1229 -1247 -1230 -1248 -1231 -1249 -1232 -1250 -1233 -1251 -1234 -1252 -1253 -1236 -1254 -1237 -1255 -1238 -1256 -1239 -1257 -1240 -1258 -1241 -1259 -1242 -1260 -1243 -1261 -1244 -1262 -1245 -1263 -1246 -1264 -1247 -1265 -1248 -1266 -1249 -1267 -1250 -1268 -1251 -1269 -1252 -1270 -1253 -1271 -1272 -1255 -1273 -1256 -1274 -1257 -1275 -1258 -1276 -1259 -1277 -1260 -1278 -1261 -1279 -1262 -1280 -1263 -1281 -1264 -1282 -1265 -1283 -1266 -1284 -1267 -1285 -1268 -1286 -1269 -1287 -1270 -1288 -1271 -1289 -1272 -1290 -1291 -1274 -1292 -1275 -1293 -1276 -1294 -1277 -1295 -1278 -1296 -1279 -1297 -1280 -1298 -1281 -1299 -1282 -1300 -1283 -1301 -1284 -1302 -1285 -1303 -1286 -1304 -1287 -1305 -1288 -1306 -1289 -1307 -1290 -1308 -1291 -1309 -1310 -1293 -1311 -1294 -1312 -1295 -1313 -1296 -1314 -1297 -1315 -1298 -1316 -1299 -1317 -1300 -1318 -1301 -1319 -1302 -1320 -1303 -1321 -1304 -1322 -1305 -1323 -1306 -1324 -1307 -1325 -1308 -1326 -1309 -1327 -1310 -1328 -1329 -1312 -1330 -1313 -1331 -1314 -1332 -1315 -1333 -1316 -1334 -1317 -1335 -1318 -1336 -1319 -1337 -1320 -1338 -1321 -1339 -1322 -1340 -1323 -1341 -1324 -1342 -1325 -1343 -1326 -1344 -1327 -1345 -1328 -1346 -1329 -1347 -1348 -1331 -1349 -1332 -1350 -1333 -1351 -1334 -1352 -1335 -1353 -1336 -1354 -1337 -1355 -1338 -1356 -1339 -1357 -1340 -1358 -1341 -1359 -1342 -1360 -1343 -1361 -1344 -1362 -1345 -1363 -1346 -1364 -1347 -1365 -1348 -1366 -1367 -1350 -1368 -1351 -1369 -1352 -1370 -1353 -1371 -1354 -1372 -1355 -1373 -1356 -1374 -1357 -1375 -1358 -1376 -1359 -1377 -1360 -1378 -1361 -1379 -1362 -1380 -1363 -1381 -1364 -1382 -1365 -1383 -1366 -1384 -1367 -1385 -1386 -1369 -1387 -1370 -1388 -1371 -1389 -1372 -1390 -1373 -1391 -1374 -1392 -1375 -1393 -1376 -1394 -1377 -1395 -1378 -1396 -1379 -1397 -1380 -1398 -1381 -1399 -1382 -1400 -1383 -1401 -1384 -1402 -1385 -1403 -1386 -1404 -1405 -1388 -1406 -1389 -1407 -1390 -1408 -1391 -1409 -1392 -1410 -1393 -1411 -1394 -1412 -1395 -1413 -1396 -1414 -1397 -1415 -1398 -1416 -1399 -1417 -1400 -1418 -1401 -1419 -1402 -1420 -1403 -1421 -1404 -1422 -1405 -1423 -1424 -1407 -1425 -1408 -1426 -1409 -1427 -1410 -1428 -1411 -1429 -1412 -1430 -1413 -1431 -1414 -1432 -1415 -1433 -1416 -1434 -1417 -1435 -1418 -1436 -1419 -1437 -1420 -1438 -1421 -1439 -1422 -1440 -1423 -1441 -1424 -1442 -1443 -1426 -1444 -1427 -1445 -1428 -1446 -1429 -1447 -1430 -1448 -1431 -1449 -1432 -1450 -1433 -1451 -1434 -1452 -1435 -1453 -1436 -1454 -1437 -1455 -1438 -1456 -1439 -1457 -1440 -1458 -1441 -1459 -1442 -1460 -1443 -1461 -1462 -1445 -1463 -1446 -1464 -1447 -1465 -1448 -1466 -1449 -1467 -1450 -1468 -1451 -1469 -1452 -1470 -1453 -1471 -1454 -1472 -1455 -1473 -1456 -1474 -1457 -1475 -1458 -1476 -1459 -1477 -1460 -1478 -1461 -1479 -1462 -1480 -1481 -1464 -1482 -1465 -1483 -1466 -1484 -1467 -1485 -1468 -1486 -1469 -1487 -1470 -1488 -1471 -1489 -1472 -1490 -1473 -1491 -1474 -1492 -1475 -1493 -1476 -1494 -1477 -1495 -1478 -1496 -1479 -1497 -1480 -1498 -1481 -1499 -1500 -1483 -1501 -1484 -1502 -1485 -1503 -1486 -1504 -1487 -1505 -1488 -1506 -1489 -1507 -1490 -1508 -1491 -1509 -1492 -1510 -1493 -1511 -1494 -1512 -1495 -1513 -1496 -1514 -1497 -1515 -1498 -1516 -1499 -1517 -1500 -1518 -1519 -1502 -1520 -1503 -1521 -1504 -1522 -1505 -1523 -1506 -1524 -1507 -1525 -1508 -1526 -1509 -1527 -1510 -1528 -1511 -1529 -1512 -1530 -1513 -1531 -1514 -1532 -1515 -1533 -1516 -1534 -1517 -1535 -1518 -1536 -1519 -1537 -1538 -1521 -1539 -1522 -1540 -1523 -1541 -1524 -1542 -1525 -1543 -1526 -1544 -1527 -1545 -1528 -1546 -1529 -1547 -1530 -1548 -1531 -1549 -1532 -1550 -1533 -1551 -1534 -1552 -1535 -1553 -1536 -1554 -1537 -1555 -1538 -1556 -1557 -1540 -1558 -1541 -1559 -1542 -1560 -1543 -1561 -1544 -1562 -1545 -1563 -1546 -1564 -1547 -1565 -1548 -1566 -1549 -1567 -1550 -1568 -1551 -1569 -1552 -1570 -1553 -1571 -1554 -1572 -1555 -1573 -1556 -1574 -1557 -1575 -1576 -1559 -1577 -1560 -1578 -1561 -1579 -1562 -1580 -1563 -1581 -1564 -1582 -1565 -1583 -1566 -1584 -1567 -1585 -1568 -1586 -1569 -1587 -1570 -1588 -1571 -1589 -1572 -1590 -1573 -1591 -1574 -1592 -1575 -1593 -1576 -1594 -1595 -1578 -1596 -1579 -1597 -1580 -1598 -1581 -1599 -1582 -1600 -1583 -1601 -1584 -1602 -1585 -1603 -1586 -1604 -1587 -1605 -1588 -1606 -1589 -1607 -1590 -1608 -1591 -1609 -1592 -1610 -1593 -1611 -1594 -1612 -1595 -1613 -1614 -1597 -1615 -1598 -1616 -1599 -1617 -1600 -1618 -1601 -1619 -1602 -1620 -1603 -1621 -1604 -1622 -1605 -1623 -1606 -1624 -1607 -1625 -1608 -1626 -1609 -1627 -1610 -1628 -1611 -1629 -1612 -1630 -1613 -1631 -1614 -1632 -1633 -1616 -1634 -1617 -1635 -1618 -1636 -1619 -1637 -1620 -1638 -1621 -1639 -1622 -1640 -1623 -1641 -1624 -1642 -1625 -1643 -1626 -1644 -1627 -1645 -1628 -1646 -1629 -1647 -1630 -1648 -1631 -1649 -1632 -1650 -1633 -1651 -1652 -1635 -1653 -1636 -1654 -1637 -1655 -1638 -1656 -1639 -1657 -1640 -1658 -1641 -1659 -1642 -1660 -1643 -1661 -1644 -1662 -1645 -1663 -1646 -1664 -1647 -1665 -1648 -1666 -1649 -1667 -1650 -1668 -1651 -1669 -1652 -1670 -1671 -1654 -1672 -1655 -1673 -1656 -1674 -1657 -1675 -1658 -1676 -1659 -1677 -1660 -1678 -1661 -1679 -1662 -1680 -1663 -1681 -1664 -1682 -1665 -1683 -1666 -1684 -1667 -1685 -1668 -1686 -1669 -1687 -1670 -1688 -1671 -1689 -1690 -1673 -1691 -1674 -1692 -1675 -1693 -1676 -1694 -1677 -1695 -1678 -1696 -1679 -1697 -1680 -1698 -1681 -1699 -1682 -1700 -1683 -1701 -1684 -1702 -1685 -1703 -1686 -1704 -1687 -1705 -1688 -1706 -1689 -1707 -1690 -1708 -1709 -1692 -1710 -1693 -1711 -1694 -1712 -1695 -1713 -1696 -1714 -1697 -1715 -1698 -1716 -1699 -1717 -1700 -1718 -1701 -1719 -1702 -1720 -1703 -1721 -1704 -1722 -1705 -1723 -1706 -1724 -1707 -1725 -1708 -1726 -1709 -1727 -1728 -1711 -1729 -1712 -1730 -1713 -1731 -1714 -1732 -1715 -1733 -1716 -1734 -1717 -1735 -1718 -1736 -1719 -1737 -1720 -1738 -1721 -1739 -1722 -1740 -1723 -1741 -1724 -1742 -1725 -1743 -1726 -1744 -1727 -1745 -1728 -1746 -1747 -1730 -1748 -1731 -1749 -1732 -1750 -1733 -1751 -1734 -1752 -1735 -1753 -1736 -1754 -1737 -1755 -1738 -1756 -1739 -1757 -1740 -1758 -1741 -1759 -1742 -1760 -1743 -1761 -1744 -1762 -1745 -1763 -1746 -1764 -1747 -1765 -1766 -1749 -1767 -1750 -1768 -1751 -1769 -1752 -1770 -1753 -1771 -1754 -1772 -1755 -1773 -1756 -1774 -1757 -1775 -1758 -1776 -1759 -1777 -1760 -1778 -1761 -1779 -1762 -1780 -1763 -1781 -1764 -1782 -1765 -1783 -1766 -1784 -1785 -1768 -1786 -1769 -1787 -1770 -1788 -1771 -1789 -1772 -1790 -1773 -1791 -1774 -1792 -1775 -1793 -1776 -1794 -1777 -1795 -1778 -1796 -1779 -1797 -1780 -1798 -1781 -1799 -1782 -1800 -1783 -1801 -1784 -1802 -1785 -1803 -1804 -1787 -1805 -1788 -1806 -1789 -1807 -1790 -1808 -1791 -1809 -1792 -1810 -1793 -1811 -1794 -1812 -1795 -1813 -1796 -1814 -1797 -1815 -1798 -1816 -1799 -1817 -1800 -1818 -1801 -1819 -1802 -1820 -1803 -1821 -1804 -1822 -1823 -1806 -1824 -1807 -1825 -1808 -1826 -1809 -1827 -1810 -1828 -1811 -1829 -1812 -1830 -1813 -1831 -1814 -1832 -1815 -1833 -1816 -1834 -1817 -1835 -1818 -1836 -1819 -1837 -1820 -1838 -1821 -1839 -1822 -1840 -1823 -1841 -1842 -1825 -1843 -1826 -1844 -1827 -1845 -1828 -1846 -1829 -1847 -1830 -1848 -1831 -1849 -1832 -1850 -1833 -1851 -1834 -1852 -1835 -1853 -1836 -1854 -1837 -1855 -1838 -1856 -1839 -1857 -1840 -1858 -1841 -1859 -1842 -1860 -1861 -1844 -1862 -1845 -1863 -1846 -1864 -1847 -1865 -1848 -1866 -1849 -1867 -1850 -1868 -1851 -1869 -1852 -1870 -1853 -1871 -1854 -1872 -1855 -1873 -1856 -1874 -1857 -1875 -1858 -1876 -1859 -1877 -1860 -1878 -1861 -1879 -1880 -1863 -1864 -1865 -1866 -1867 -1868 -1869 -1870 -1871 -1872 -1873 -1874 -1875 -1876 -1877 -1878 -1879 -1880 -) - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/owner b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/owner deleted file mode 100755 index 244904734..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/owner +++ /dev/null @@ -1,7667 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class labelList; - note "nPoints: 4000 nCells: 1881 nFaces: 7642 nInternalFaces: 3644"; - location "constant/polyMesh"; - object owner; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -7642 -( -0 -0 -1 -1 -2 -2 -3 -3 -4 -4 -5 -5 -6 -6 -7 -7 -8 -8 -9 -9 -10 -10 -11 -11 -12 -12 -13 -13 -14 -14 -15 -15 -16 -16 -17 -17 -18 -19 -19 -20 -20 -21 -21 -22 -22 -23 -23 -24 -24 -25 -25 -26 -26 -27 -27 -28 -28 -29 -29 -30 -30 -31 -31 -32 -32 -33 -33 -34 -34 -35 -35 -36 -36 -37 -38 -38 -39 -39 -40 -40 -41 -41 -42 -42 -43 -43 -44 -44 -45 -45 -46 -46 -47 -47 -48 -48 -49 -49 -50 -50 -51 -51 -52 -52 -53 -53 -54 -54 -55 -55 -56 -57 -57 -58 -58 -59 -59 -60 -60 -61 -61 -62 -62 -63 -63 -64 -64 -65 -65 -66 -66 -67 -67 -68 -68 -69 -69 -70 -70 -71 -71 -72 -72 -73 -73 -74 -74 -75 -76 -76 -77 -77 -78 -78 -79 -79 -80 -80 -81 -81 -82 -82 -83 -83 -84 -84 -85 -85 -86 -86 -87 -87 -88 -88 -89 -89 -90 -90 -91 -91 -92 -92 -93 -93 -94 -95 -95 -96 -96 -97 -97 -98 -98 -99 -99 -100 -100 -101 -101 -102 -102 -103 -103 -104 -104 -105 -105 -106 -106 -107 -107 -108 -108 -109 -109 -110 -110 -111 -111 -112 -112 -113 -114 -114 -115 -115 -116 -116 -117 -117 -118 -118 -119 -119 -120 -120 -121 -121 -122 -122 -123 -123 -124 -124 -125 -125 -126 -126 -127 -127 -128 -128 -129 -129 -130 -130 -131 -131 -132 -133 -133 -134 -134 -135 -135 -136 -136 -137 -137 -138 -138 -139 -139 -140 -140 -141 -141 -142 -142 -143 -143 -144 -144 -145 -145 -146 -146 -147 -147 -148 -148 -149 -149 -150 -150 -151 -152 -152 -153 -153 -154 -154 -155 -155 -156 -156 -157 -157 -158 -158 -159 -159 -160 -160 -161 -161 -162 -162 -163 -163 -164 -164 -165 -165 -166 -166 -167 -167 -168 -168 -169 -169 -170 -171 -171 -172 -172 -173 -173 -174 -174 -175 -175 -176 -176 -177 -177 -178 -178 -179 -179 -180 -180 -181 -181 -182 -182 -183 -183 -184 -184 -185 -185 -186 -186 -187 -187 -188 -188 -189 -190 -190 -191 -191 -192 -192 -193 -193 -194 -194 -195 -195 -196 -196 -197 -197 -198 -198 -199 -199 -200 -200 -201 -201 -202 -202 -203 -203 -204 -204 -205 -205 -206 -206 -207 -207 -208 -209 -209 -210 -210 -211 -211 -212 -212 -213 -213 -214 -214 -215 -215 -216 -216 -217 -217 -218 -218 -219 -219 -220 -220 -221 -221 -222 -222 -223 -223 -224 -224 -225 -225 -226 -226 -227 -228 -228 -229 -229 -230 -230 -231 -231 -232 -232 -233 -233 -234 -234 -235 -235 -236 -236 -237 -237 -238 -238 -239 -239 -240 -240 -241 -241 -242 -242 -243 -243 -244 -244 -245 -245 -246 -247 -247 -248 -248 -249 -249 -250 -250 -251 -251 -252 -252 -253 -253 -254 -254 -255 -255 -256 -256 -257 -257 -258 -258 -259 -259 -260 -260 -261 -261 -262 -262 -263 -263 -264 -264 -265 -266 -266 -267 -267 -268 -268 -269 -269 -270 -270 -271 -271 -272 -272 -273 -273 -274 -274 -275 -275 -276 -276 -277 -277 -278 -278 -279 -279 -280 -280 -281 -281 -282 -282 -283 -283 -284 -285 -285 -286 -286 -287 -287 -288 -288 -289 -289 -290 -290 -291 -291 -292 -292 -293 -293 -294 -294 -295 -295 -296 -296 -297 -297 -298 -298 -299 -299 -300 -300 -301 -301 -302 -302 -303 -304 -304 -305 -305 -306 -306 -307 -307 -308 -308 -309 -309 -310 -310 -311 -311 -312 -312 -313 -313 -314 -314 -315 -315 -316 -316 -317 -317 -318 -318 -319 -319 -320 -320 -321 -321 -322 -323 -323 -324 -324 -325 -325 -326 -326 -327 -327 -328 -328 -329 -329 -330 -330 -331 -331 -332 -332 -333 -333 -334 -334 -335 -335 -336 -336 -337 -337 -338 -338 -339 -339 -340 -340 -341 -342 -342 -343 -343 -344 -344 -345 -345 -346 -346 -347 -347 -348 -348 -349 -349 -350 -350 -351 -351 -352 -352 -353 -353 -354 -354 -355 -355 -356 -356 -357 -357 -358 -358 -359 -359 -360 -361 -361 -362 -362 -363 -363 -364 -364 -365 -365 -366 -366 -367 -367 -368 -368 -369 -369 -370 -370 -371 -371 -372 -372 -373 -373 -374 -374 -375 -375 -376 -376 -377 -377 -378 -378 -379 -380 -380 -381 -381 -382 -382 -383 -383 -384 -384 -385 -385 -386 -386 -387 -387 -388 -388 -389 -389 -390 -390 -391 -391 -392 -392 -393 -393 -394 -394 -395 -395 -396 -396 -397 -397 -398 -399 -399 -400 -400 -401 -401 -402 -402 -403 -403 -404 -404 -405 -405 -406 -406 -407 -407 -408 -408 -409 -409 -410 -410 -411 -411 -412 -412 -413 -413 -414 -414 -415 -415 -416 -416 -417 -418 -418 -419 -419 -420 -420 -421 -421 -422 -422 -423 -423 -424 -424 -425 -425 -426 -426 -427 -427 -428 -428 -429 -429 -430 -430 -431 -431 -432 -432 -433 -433 -434 -434 -435 -435 -436 -437 -437 -438 -438 -439 -439 -440 -440 -441 -441 -442 -442 -443 -443 -444 -444 -445 -445 -446 -446 -447 -447 -448 -448 -449 -449 -450 -450 -451 -451 -452 -452 -453 -453 -454 -454 -455 -456 -456 -457 -457 -458 -458 -459 -459 -460 -460 -461 -461 -462 -462 -463 -463 -464 -464 -465 -465 -466 -466 -467 -467 -468 -468 -469 -469 -470 -470 -471 -471 -472 -472 -473 -473 -474 -475 -475 -476 -476 -477 -477 -478 -478 -479 -479 -480 -480 -481 -481 -482 -482 -483 -483 -484 -484 -485 -485 -486 -486 -487 -487 -488 -488 -489 -489 -490 -490 -491 -491 -492 -492 -493 -494 -494 -495 -495 -496 -496 -497 -497 -498 -498 -499 -499 -500 -500 -501 -501 -502 -502 -503 -503 -504 -504 -505 -505 -506 -506 -507 -507 -508 -508 -509 -509 -510 -510 -511 -511 -512 -513 -513 -514 -514 -515 -515 -516 -516 -517 -517 -518 -518 -519 -519 -520 -520 -521 -521 -522 -522 -523 -523 -524 -524 -525 -525 -526 -526 -527 -527 -528 -528 -529 -529 -530 -530 -531 -532 -532 -533 -533 -534 -534 -535 -535 -536 -536 -537 -537 -538 -538 -539 -539 -540 -540 -541 -541 -542 -542 -543 -543 -544 -544 -545 -545 -546 -546 -547 -547 -548 -548 -549 -549 -550 -551 -551 -552 -552 -553 -553 -554 -554 -555 -555 -556 -556 -557 -557 -558 -558 -559 -559 -560 -560 -561 -561 -562 -562 -563 -563 -564 -564 -565 -565 -566 -566 -567 -567 -568 -568 -569 -570 -570 -571 -571 -572 -572 -573 -573 -574 -574 -575 -575 -576 -576 -577 -577 -578 -578 -579 -579 -580 -580 -581 -581 -582 -582 -583 -583 -584 -584 -585 -585 -586 -586 -587 -587 -588 -589 -589 -590 -590 -591 -591 -592 -592 -593 -593 -594 -594 -595 -595 -596 -596 -597 -597 -598 -598 -599 -599 -600 -600 -601 -601 -602 -602 -603 -603 -604 -604 -605 -605 -606 -606 -607 -608 -608 -609 -609 -610 -610 -611 -611 -612 -612 -613 -613 -614 -614 -615 -615 -616 -616 -617 -617 -618 -618 -619 -619 -620 -620 -621 -621 -622 -622 -623 -623 -624 -624 -625 -625 -626 -627 -627 -628 -628 -629 -629 -630 -630 -631 -631 -632 -632 -633 -633 -634 -634 -635 -635 -636 -636 -637 -637 -638 -638 -639 -639 -640 -640 -641 -641 -642 -642 -643 -643 -644 -644 -645 -646 -646 -647 -647 -648 -648 -649 -649 -650 -650 -651 -651 -652 -652 -653 -653 -654 -654 -655 -655 -656 -656 -657 -657 -658 -658 -659 -659 -660 -660 -661 -661 -662 -662 -663 -663 -664 -665 -665 -666 -666 -667 -667 -668 -668 -669 -669 -670 -670 -671 -671 -672 -672 -673 -673 -674 -674 -675 -675 -676 -676 -677 -677 -678 -678 -679 -679 -680 -680 -681 -681 -682 -682 -683 -684 -684 -685 -685 -686 -686 -687 -687 -688 -688 -689 -689 -690 -690 -691 -691 -692 -692 -693 -693 -694 -694 -695 -695 -696 -696 -697 -697 -698 -698 -699 -699 -700 -700 -701 -701 -702 -703 -703 -704 -704 -705 -705 -706 -706 -707 -707 -708 -708 -709 -709 -710 -710 -711 -711 -712 -712 -713 -713 -714 -714 -715 -715 -716 -716 -717 -717 -718 -718 -719 -719 -720 -720 -721 -722 -722 -723 -723 -724 -724 -725 -725 -726 -726 -727 -727 -728 -728 -729 -729 -730 -730 -731 -731 -732 -732 -733 -733 -734 -734 -735 -735 -736 -736 -737 -737 -738 -738 -739 -739 -740 -741 -741 -742 -742 -743 -743 -744 -744 -745 -745 -746 -746 -747 -747 -748 -748 -749 -749 -750 -750 -751 -751 -752 -752 -753 -753 -754 -754 -755 -755 -756 -756 -757 -757 -758 -758 -759 -760 -760 -761 -761 -762 -762 -763 -763 -764 -764 -765 -765 -766 -766 -767 -767 -768 -768 -769 -769 -770 -770 -771 -771 -772 -772 -773 -773 -774 -774 -775 -775 -776 -776 -777 -777 -778 -779 -779 -780 -780 -781 -781 -782 -782 -783 -783 -784 -784 -785 -785 -786 -786 -787 -787 -788 -788 -789 -789 -790 -790 -791 -791 -792 -792 -793 -793 -794 -794 -795 -795 -796 -796 -797 -798 -798 -799 -799 -800 -800 -801 -801 -802 -802 -803 -803 -804 -804 -805 -805 -806 -806 -807 -807 -808 -808 -809 -809 -810 -810 -811 -811 -812 -812 -813 -813 -814 -814 -815 -815 -816 -817 -817 -818 -818 -819 -819 -820 -820 -821 -821 -822 -822 -823 -823 -824 -824 -825 -825 -826 -826 -827 -827 -828 -828 -829 -829 -830 -830 -831 -831 -832 -832 -833 -833 -834 -834 -835 -836 -836 -837 -837 -838 -838 -839 -839 -840 -840 -841 -841 -842 -842 -843 -843 -844 -844 -845 -845 -846 -846 -847 -847 -848 -848 -849 -849 -850 -850 -851 -851 -852 -852 -853 -853 -854 -855 -855 -856 -856 -857 -857 -858 -858 -859 -859 -860 -860 -861 -861 -862 -862 -863 -863 -864 -864 -865 -865 -866 -866 -867 -867 -868 -868 -869 -869 -870 -870 -871 -871 -872 -872 -873 -874 -874 -875 -875 -876 -876 -877 -877 -878 -878 -879 -879 -880 -880 -881 -881 -882 -882 -883 -883 -884 -884 -885 -885 -886 -886 -887 -887 -888 -888 -889 -889 -890 -890 -891 -891 -892 -893 -893 -894 -894 -895 -895 -896 -896 -897 -897 -898 -898 -899 -899 -900 -900 -901 -901 -902 -902 -903 -903 -904 -904 -905 -905 -906 -906 -907 -907 -908 -908 -909 -909 -910 -910 -911 -912 -912 -913 -913 -914 -914 -915 -915 -916 -916 -917 -917 -918 -918 -919 -919 -920 -920 -921 -921 -922 -922 -923 -923 -924 -924 -925 -925 -926 -926 -927 -927 -928 -928 -929 -929 -930 -931 -931 -932 -932 -933 -933 -934 -934 -935 -935 -936 -936 -937 -937 -938 -938 -939 -939 -940 -940 -941 -941 -942 -942 -943 -943 -944 -944 -945 -945 -946 -946 -947 -947 -948 -948 -949 -950 -950 -951 -951 -952 -952 -953 -953 -954 -954 -955 -955 -956 -956 -957 -957 -958 -958 -959 -959 -960 -960 -961 -961 -962 -962 -963 -963 -964 -964 -965 -965 -966 -966 -967 -967 -968 -969 -969 -970 -970 -971 -971 -972 -972 -973 -973 -974 -974 -975 -975 -976 -976 -977 -977 -978 -978 -979 -979 -980 -980 -981 -981 -982 -982 -983 -983 -984 -984 -985 -985 -986 -986 -987 -988 -988 -989 -989 -990 -990 -991 -991 -992 -992 -993 -993 -994 -994 -995 -995 -996 -996 -997 -997 -998 -998 -999 -999 -1000 -1000 -1001 -1001 -1002 -1002 -1003 -1003 -1004 -1004 -1005 -1005 -1006 -1007 -1007 -1008 -1008 -1009 -1009 -1010 -1010 -1011 -1011 -1012 -1012 -1013 -1013 -1014 -1014 -1015 -1015 -1016 -1016 -1017 -1017 -1018 -1018 -1019 -1019 -1020 -1020 -1021 -1021 -1022 -1022 -1023 -1023 -1024 -1024 -1025 -1026 -1026 -1027 -1027 -1028 -1028 -1029 -1029 -1030 -1030 -1031 -1031 -1032 -1032 -1033 -1033 -1034 -1034 -1035 -1035 -1036 -1036 -1037 -1037 -1038 -1038 -1039 -1039 -1040 -1040 -1041 -1041 -1042 -1042 -1043 -1043 -1044 -1045 -1045 -1046 -1046 -1047 -1047 -1048 -1048 -1049 -1049 -1050 -1050 -1051 -1051 -1052 -1052 -1053 -1053 -1054 -1054 -1055 -1055 -1056 -1056 -1057 -1057 -1058 -1058 -1059 -1059 -1060 -1060 -1061 -1061 -1062 -1062 -1063 -1064 -1064 -1065 -1065 -1066 -1066 -1067 -1067 -1068 -1068 -1069 -1069 -1070 -1070 -1071 -1071 -1072 -1072 -1073 -1073 -1074 -1074 -1075 -1075 -1076 -1076 -1077 -1077 -1078 -1078 -1079 -1079 -1080 -1080 -1081 -1081 -1082 -1083 -1083 -1084 -1084 -1085 -1085 -1086 -1086 -1087 -1087 -1088 -1088 -1089 -1089 -1090 -1090 -1091 -1091 -1092 -1092 -1093 -1093 -1094 -1094 -1095 -1095 -1096 -1096 -1097 -1097 -1098 -1098 -1099 -1099 -1100 -1100 -1101 -1102 -1102 -1103 -1103 -1104 -1104 -1105 -1105 -1106 -1106 -1107 -1107 -1108 -1108 -1109 -1109 -1110 -1110 -1111 -1111 -1112 -1112 -1113 -1113 -1114 -1114 -1115 -1115 -1116 -1116 -1117 -1117 -1118 -1118 -1119 -1119 -1120 -1121 -1121 -1122 -1122 -1123 -1123 -1124 -1124 -1125 -1125 -1126 -1126 -1127 -1127 -1128 -1128 -1129 -1129 -1130 -1130 -1131 -1131 -1132 -1132 -1133 -1133 -1134 -1134 -1135 -1135 -1136 -1136 -1137 -1137 -1138 -1138 -1139 -1140 -1140 -1141 -1141 -1142 -1142 -1143 -1143 -1144 -1144 -1145 -1145 -1146 -1146 -1147 -1147 -1148 -1148 -1149 -1149 -1150 -1150 -1151 -1151 -1152 -1152 -1153 -1153 -1154 -1154 -1155 -1155 -1156 -1156 -1157 -1157 -1158 -1159 -1159 -1160 -1160 -1161 -1161 -1162 -1162 -1163 -1163 -1164 -1164 -1165 -1165 -1166 -1166 -1167 -1167 -1168 -1168 -1169 -1169 -1170 -1170 -1171 -1171 -1172 -1172 -1173 -1173 -1174 -1174 -1175 -1175 -1176 -1176 -1177 -1178 -1178 -1179 -1179 -1180 -1180 -1181 -1181 -1182 -1182 -1183 -1183 -1184 -1184 -1185 -1185 -1186 -1186 -1187 -1187 -1188 -1188 -1189 -1189 -1190 -1190 -1191 -1191 -1192 -1192 -1193 -1193 -1194 -1194 -1195 -1195 -1196 -1197 -1197 -1198 -1198 -1199 -1199 -1200 -1200 -1201 -1201 -1202 -1202 -1203 -1203 -1204 -1204 -1205 -1205 -1206 -1206 -1207 -1207 -1208 -1208 -1209 -1209 -1210 -1210 -1211 -1211 -1212 -1212 -1213 -1213 -1214 -1214 -1215 -1216 -1216 -1217 -1217 -1218 -1218 -1219 -1219 -1220 -1220 -1221 -1221 -1222 -1222 -1223 -1223 -1224 -1224 -1225 -1225 -1226 -1226 -1227 -1227 -1228 -1228 -1229 -1229 -1230 -1230 -1231 -1231 -1232 -1232 -1233 -1233 -1234 -1235 -1235 -1236 -1236 -1237 -1237 -1238 -1238 -1239 -1239 -1240 -1240 -1241 -1241 -1242 -1242 -1243 -1243 -1244 -1244 -1245 -1245 -1246 -1246 -1247 -1247 -1248 -1248 -1249 -1249 -1250 -1250 -1251 -1251 -1252 -1252 -1253 -1254 -1254 -1255 -1255 -1256 -1256 -1257 -1257 -1258 -1258 -1259 -1259 -1260 -1260 -1261 -1261 -1262 -1262 -1263 -1263 -1264 -1264 -1265 -1265 -1266 -1266 -1267 -1267 -1268 -1268 -1269 -1269 -1270 -1270 -1271 -1271 -1272 -1273 -1273 -1274 -1274 -1275 -1275 -1276 -1276 -1277 -1277 -1278 -1278 -1279 -1279 -1280 -1280 -1281 -1281 -1282 -1282 -1283 -1283 -1284 -1284 -1285 -1285 -1286 -1286 -1287 -1287 -1288 -1288 -1289 -1289 -1290 -1290 -1291 -1292 -1292 -1293 -1293 -1294 -1294 -1295 -1295 -1296 -1296 -1297 -1297 -1298 -1298 -1299 -1299 -1300 -1300 -1301 -1301 -1302 -1302 -1303 -1303 -1304 -1304 -1305 -1305 -1306 -1306 -1307 -1307 -1308 -1308 -1309 -1309 -1310 -1311 -1311 -1312 -1312 -1313 -1313 -1314 -1314 -1315 -1315 -1316 -1316 -1317 -1317 -1318 -1318 -1319 -1319 -1320 -1320 -1321 -1321 -1322 -1322 -1323 -1323 -1324 -1324 -1325 -1325 -1326 -1326 -1327 -1327 -1328 -1328 -1329 -1330 -1330 -1331 -1331 -1332 -1332 -1333 -1333 -1334 -1334 -1335 -1335 -1336 -1336 -1337 -1337 -1338 -1338 -1339 -1339 -1340 -1340 -1341 -1341 -1342 -1342 -1343 -1343 -1344 -1344 -1345 -1345 -1346 -1346 -1347 -1347 -1348 -1349 -1349 -1350 -1350 -1351 -1351 -1352 -1352 -1353 -1353 -1354 -1354 -1355 -1355 -1356 -1356 -1357 -1357 -1358 -1358 -1359 -1359 -1360 -1360 -1361 -1361 -1362 -1362 -1363 -1363 -1364 -1364 -1365 -1365 -1366 -1366 -1367 -1368 -1368 -1369 -1369 -1370 -1370 -1371 -1371 -1372 -1372 -1373 -1373 -1374 -1374 -1375 -1375 -1376 -1376 -1377 -1377 -1378 -1378 -1379 -1379 -1380 -1380 -1381 -1381 -1382 -1382 -1383 -1383 -1384 -1384 -1385 -1385 -1386 -1387 -1387 -1388 -1388 -1389 -1389 -1390 -1390 -1391 -1391 -1392 -1392 -1393 -1393 -1394 -1394 -1395 -1395 -1396 -1396 -1397 -1397 -1398 -1398 -1399 -1399 -1400 -1400 -1401 -1401 -1402 -1402 -1403 -1403 -1404 -1404 -1405 -1406 -1406 -1407 -1407 -1408 -1408 -1409 -1409 -1410 -1410 -1411 -1411 -1412 -1412 -1413 -1413 -1414 -1414 -1415 -1415 -1416 -1416 -1417 -1417 -1418 -1418 -1419 -1419 -1420 -1420 -1421 -1421 -1422 -1422 -1423 -1423 -1424 -1425 -1425 -1426 -1426 -1427 -1427 -1428 -1428 -1429 -1429 -1430 -1430 -1431 -1431 -1432 -1432 -1433 -1433 -1434 -1434 -1435 -1435 -1436 -1436 -1437 -1437 -1438 -1438 -1439 -1439 -1440 -1440 -1441 -1441 -1442 -1442 -1443 -1444 -1444 -1445 -1445 -1446 -1446 -1447 -1447 -1448 -1448 -1449 -1449 -1450 -1450 -1451 -1451 -1452 -1452 -1453 -1453 -1454 -1454 -1455 -1455 -1456 -1456 -1457 -1457 -1458 -1458 -1459 -1459 -1460 -1460 -1461 -1461 -1462 -1463 -1463 -1464 -1464 -1465 -1465 -1466 -1466 -1467 -1467 -1468 -1468 -1469 -1469 -1470 -1470 -1471 -1471 -1472 -1472 -1473 -1473 -1474 -1474 -1475 -1475 -1476 -1476 -1477 -1477 -1478 -1478 -1479 -1479 -1480 -1480 -1481 -1482 -1482 -1483 -1483 -1484 -1484 -1485 -1485 -1486 -1486 -1487 -1487 -1488 -1488 -1489 -1489 -1490 -1490 -1491 -1491 -1492 -1492 -1493 -1493 -1494 -1494 -1495 -1495 -1496 -1496 -1497 -1497 -1498 -1498 -1499 -1499 -1500 -1501 -1501 -1502 -1502 -1503 -1503 -1504 -1504 -1505 -1505 -1506 -1506 -1507 -1507 -1508 -1508 -1509 -1509 -1510 -1510 -1511 -1511 -1512 -1512 -1513 -1513 -1514 -1514 -1515 -1515 -1516 -1516 -1517 -1517 -1518 -1518 -1519 -1520 -1520 -1521 -1521 -1522 -1522 -1523 -1523 -1524 -1524 -1525 -1525 -1526 -1526 -1527 -1527 -1528 -1528 -1529 -1529 -1530 -1530 -1531 -1531 -1532 -1532 -1533 -1533 -1534 -1534 -1535 -1535 -1536 -1536 -1537 -1537 -1538 -1539 -1539 -1540 -1540 -1541 -1541 -1542 -1542 -1543 -1543 -1544 -1544 -1545 -1545 -1546 -1546 -1547 -1547 -1548 -1548 -1549 -1549 -1550 -1550 -1551 -1551 -1552 -1552 -1553 -1553 -1554 -1554 -1555 -1555 -1556 -1556 -1557 -1558 -1558 -1559 -1559 -1560 -1560 -1561 -1561 -1562 -1562 -1563 -1563 -1564 -1564 -1565 -1565 -1566 -1566 -1567 -1567 -1568 -1568 -1569 -1569 -1570 -1570 -1571 -1571 -1572 -1572 -1573 -1573 -1574 -1574 -1575 -1575 -1576 -1577 -1577 -1578 -1578 -1579 -1579 -1580 -1580 -1581 -1581 -1582 -1582 -1583 -1583 -1584 -1584 -1585 -1585 -1586 -1586 -1587 -1587 -1588 -1588 -1589 -1589 -1590 -1590 -1591 -1591 -1592 -1592 -1593 -1593 -1594 -1594 -1595 -1596 -1596 -1597 -1597 -1598 -1598 -1599 -1599 -1600 -1600 -1601 -1601 -1602 -1602 -1603 -1603 -1604 -1604 -1605 -1605 -1606 -1606 -1607 -1607 -1608 -1608 -1609 -1609 -1610 -1610 -1611 -1611 -1612 -1612 -1613 -1613 -1614 -1615 -1615 -1616 -1616 -1617 -1617 -1618 -1618 -1619 -1619 -1620 -1620 -1621 -1621 -1622 -1622 -1623 -1623 -1624 -1624 -1625 -1625 -1626 -1626 -1627 -1627 -1628 -1628 -1629 -1629 -1630 -1630 -1631 -1631 -1632 -1632 -1633 -1634 -1634 -1635 -1635 -1636 -1636 -1637 -1637 -1638 -1638 -1639 -1639 -1640 -1640 -1641 -1641 -1642 -1642 -1643 -1643 -1644 -1644 -1645 -1645 -1646 -1646 -1647 -1647 -1648 -1648 -1649 -1649 -1650 -1650 -1651 -1651 -1652 -1653 -1653 -1654 -1654 -1655 -1655 -1656 -1656 -1657 -1657 -1658 -1658 -1659 -1659 -1660 -1660 -1661 -1661 -1662 -1662 -1663 -1663 -1664 -1664 -1665 -1665 -1666 -1666 -1667 -1667 -1668 -1668 -1669 -1669 -1670 -1670 -1671 -1672 -1672 -1673 -1673 -1674 -1674 -1675 -1675 -1676 -1676 -1677 -1677 -1678 -1678 -1679 -1679 -1680 -1680 -1681 -1681 -1682 -1682 -1683 -1683 -1684 -1684 -1685 -1685 -1686 -1686 -1687 -1687 -1688 -1688 -1689 -1689 -1690 -1691 -1691 -1692 -1692 -1693 -1693 -1694 -1694 -1695 -1695 -1696 -1696 -1697 -1697 -1698 -1698 -1699 -1699 -1700 -1700 -1701 -1701 -1702 -1702 -1703 -1703 -1704 -1704 -1705 -1705 -1706 -1706 -1707 -1707 -1708 -1708 -1709 -1710 -1710 -1711 -1711 -1712 -1712 -1713 -1713 -1714 -1714 -1715 -1715 -1716 -1716 -1717 -1717 -1718 -1718 -1719 -1719 -1720 -1720 -1721 -1721 -1722 -1722 -1723 -1723 -1724 -1724 -1725 -1725 -1726 -1726 -1727 -1727 -1728 -1729 -1729 -1730 -1730 -1731 -1731 -1732 -1732 -1733 -1733 -1734 -1734 -1735 -1735 -1736 -1736 -1737 -1737 -1738 -1738 -1739 -1739 -1740 -1740 -1741 -1741 -1742 -1742 -1743 -1743 -1744 -1744 -1745 -1745 -1746 -1746 -1747 -1748 -1748 -1749 -1749 -1750 -1750 -1751 -1751 -1752 -1752 -1753 -1753 -1754 -1754 -1755 -1755 -1756 -1756 -1757 -1757 -1758 -1758 -1759 -1759 -1760 -1760 -1761 -1761 -1762 -1762 -1763 -1763 -1764 -1764 -1765 -1765 -1766 -1767 -1767 -1768 -1768 -1769 -1769 -1770 -1770 -1771 -1771 -1772 -1772 -1773 -1773 -1774 -1774 -1775 -1775 -1776 -1776 -1777 -1777 -1778 -1778 -1779 -1779 -1780 -1780 -1781 -1781 -1782 -1782 -1783 -1783 -1784 -1784 -1785 -1786 -1786 -1787 -1787 -1788 -1788 -1789 -1789 -1790 -1790 -1791 -1791 -1792 -1792 -1793 -1793 -1794 -1794 -1795 -1795 -1796 -1796 -1797 -1797 -1798 -1798 -1799 -1799 -1800 -1800 -1801 -1801 -1802 -1802 -1803 -1803 -1804 -1805 -1805 -1806 -1806 -1807 -1807 -1808 -1808 -1809 -1809 -1810 -1810 -1811 -1811 -1812 -1812 -1813 -1813 -1814 -1814 -1815 -1815 -1816 -1816 -1817 -1817 -1818 -1818 -1819 -1819 -1820 -1820 -1821 -1821 -1822 -1822 -1823 -1824 -1824 -1825 -1825 -1826 -1826 -1827 -1827 -1828 -1828 -1829 -1829 -1830 -1830 -1831 -1831 -1832 -1832 -1833 -1833 -1834 -1834 -1835 -1835 -1836 -1836 -1837 -1837 -1838 -1838 -1839 -1839 -1840 -1840 -1841 -1841 -1842 -1843 -1843 -1844 -1844 -1845 -1845 -1846 -1846 -1847 -1847 -1848 -1848 -1849 -1849 -1850 -1850 -1851 -1851 -1852 -1852 -1853 -1853 -1854 -1854 -1855 -1855 -1856 -1856 -1857 -1857 -1858 -1858 -1859 -1859 -1860 -1860 -1861 -1862 -1863 -1864 -1865 -1866 -1867 -1868 -1869 -1870 -1871 -1872 -1873 -1874 -1875 -1876 -1877 -1878 -1879 -18 -37 -56 -75 -94 -113 -132 -151 -170 -189 -208 -227 -246 -265 -284 -303 -322 -341 -360 -379 -398 -417 -436 -455 -474 -493 -512 -531 -550 -569 -588 -607 -626 -645 -664 -683 -702 -721 -740 -759 -778 -797 -816 -835 -854 -873 -892 -911 -930 -949 -968 -987 -1006 -1025 -1044 -1063 -1082 -1101 -1120 -1139 -1158 -1177 -1196 -1215 -1234 -1253 -1272 -1291 -1310 -1329 -1348 -1367 -1386 -1405 -1424 -1443 -1462 -1481 -1500 -1519 -1538 -1557 -1576 -1595 -1614 -1633 -1652 -1671 -1690 -1709 -1728 -1747 -1766 -1785 -1804 -1823 -1842 -1861 -1880 -0 -19 -38 -57 -76 -95 -114 -133 -152 -171 -190 -209 -228 -247 -266 -285 -304 -323 -342 -361 -380 -399 -418 -437 -456 -475 -494 -513 -532 -551 -570 -589 -608 -627 -646 -665 -684 -703 -722 -741 -760 -779 -798 -817 -836 -855 -874 -893 -912 -931 -950 -969 -988 -1007 -1026 -1045 -1064 -1083 -1102 -1121 -1140 -1159 -1178 -1197 -1216 -1235 -1254 -1273 -1292 -1311 -1330 -1349 -1368 -1387 -1406 -1425 -1444 -1463 -1482 -1501 -1520 -1539 -1558 -1577 -1596 -1615 -1634 -1653 -1672 -1691 -1710 -1729 -1748 -1767 -1786 -1805 -1824 -1843 -1862 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -1862 -1863 -1864 -1865 -1866 -1867 -1868 -1869 -1870 -1871 -1872 -1873 -1874 -1875 -1876 -1877 -1878 -1879 -1880 -0 -0 -1 -1 -2 -2 -3 -3 -4 -4 -5 -5 -6 -6 -7 -7 -8 -8 -9 -9 -10 -10 -11 -11 -12 -12 -13 -13 -14 -14 -15 -15 -16 -16 -17 -17 -18 -18 -19 -19 -20 -20 -21 -21 -22 -22 -23 -23 -24 -24 -25 -25 -26 -26 -27 -27 -28 -28 -29 -29 -30 -30 -31 -31 -32 -32 -33 -33 -34 -34 -35 -35 -36 -36 -37 -37 -38 -38 -39 -39 -40 -40 -41 -41 -42 -42 -43 -43 -44 -44 -45 -45 -46 -46 -47 -47 -48 -48 -49 -49 -50 -50 -51 -51 -52 -52 -53 -53 -54 -54 -55 -55 -56 -56 -57 -57 -58 -58 -59 -59 -60 -60 -61 -61 -62 -62 -63 -63 -64 -64 -65 -65 -66 -66 -67 -67 -68 -68 -69 -69 -70 -70 -71 -71 -72 -72 -73 -73 -74 -74 -75 -75 -76 -76 -77 -77 -78 -78 -79 -79 -80 -80 -81 -81 -82 -82 -83 -83 -84 -84 -85 -85 -86 -86 -87 -87 -88 -88 -89 -89 -90 -90 -91 -91 -92 -92 -93 -93 -94 -94 -95 -95 -96 -96 -97 -97 -98 -98 -99 -99 -100 -100 -101 -101 -102 -102 -103 -103 -104 -104 -105 -105 -106 -106 -107 -107 -108 -108 -109 -109 -110 -110 -111 -111 -112 -112 -113 -113 -114 -114 -115 -115 -116 -116 -117 -117 -118 -118 -119 -119 -120 -120 -121 -121 -122 -122 -123 -123 -124 -124 -125 -125 -126 -126 -127 -127 -128 -128 -129 -129 -130 -130 -131 -131 -132 -132 -133 -133 -134 -134 -135 -135 -136 -136 -137 -137 -138 -138 -139 -139 -140 -140 -141 -141 -142 -142 -143 -143 -144 -144 -145 -145 -146 -146 -147 -147 -148 -148 -149 -149 -150 -150 -151 -151 -152 -152 -153 -153 -154 -154 -155 -155 -156 -156 -157 -157 -158 -158 -159 -159 -160 -160 -161 -161 -162 -162 -163 -163 -164 -164 -165 -165 -166 -166 -167 -167 -168 -168 -169 -169 -170 -170 -171 -171 -172 -172 -173 -173 -174 -174 -175 -175 -176 -176 -177 -177 -178 -178 -179 -179 -180 -180 -181 -181 -182 -182 -183 -183 -184 -184 -185 -185 -186 -186 -187 -187 -188 -188 -189 -189 -190 -190 -191 -191 -192 -192 -193 -193 -194 -194 -195 -195 -196 -196 -197 -197 -198 -198 -199 -199 -200 -200 -201 -201 -202 -202 -203 -203 -204 -204 -205 -205 -206 -206 -207 -207 -208 -208 -209 -209 -210 -210 -211 -211 -212 -212 -213 -213 -214 -214 -215 -215 -216 -216 -217 -217 -218 -218 -219 -219 -220 -220 -221 -221 -222 -222 -223 -223 -224 -224 -225 -225 -226 -226 -227 -227 -228 -228 -229 -229 -230 -230 -231 -231 -232 -232 -233 -233 -234 -234 -235 -235 -236 -236 -237 -237 -238 -238 -239 -239 -240 -240 -241 -241 -242 -242 -243 -243 -244 -244 -245 -245 -246 -246 -247 -247 -248 -248 -249 -249 -250 -250 -251 -251 -252 -252 -253 -253 -254 -254 -255 -255 -256 -256 -257 -257 -258 -258 -259 -259 -260 -260 -261 -261 -262 -262 -263 -263 -264 -264 -265 -265 -266 -266 -267 -267 -268 -268 -269 -269 -270 -270 -271 -271 -272 -272 -273 -273 -274 -274 -275 -275 -276 -276 -277 -277 -278 -278 -279 -279 -280 -280 -281 -281 -282 -282 -283 -283 -284 -284 -285 -285 -286 -286 -287 -287 -288 -288 -289 -289 -290 -290 -291 -291 -292 -292 -293 -293 -294 -294 -295 -295 -296 -296 -297 -297 -298 -298 -299 -299 -300 -300 -301 -301 -302 -302 -303 -303 -304 -304 -305 -305 -306 -306 -307 -307 -308 -308 -309 -309 -310 -310 -311 -311 -312 -312 -313 -313 -314 -314 -315 -315 -316 -316 -317 -317 -318 -318 -319 -319 -320 -320 -321 -321 -322 -322 -323 -323 -324 -324 -325 -325 -326 -326 -327 -327 -328 -328 -329 -329 -330 -330 -331 -331 -332 -332 -333 -333 -334 -334 -335 -335 -336 -336 -337 -337 -338 -338 -339 -339 -340 -340 -341 -341 -342 -342 -343 -343 -344 -344 -345 -345 -346 -346 -347 -347 -348 -348 -349 -349 -350 -350 -351 -351 -352 -352 -353 -353 -354 -354 -355 -355 -356 -356 -357 -357 -358 -358 -359 -359 -360 -360 -361 -361 -362 -362 -363 -363 -364 -364 -365 -365 -366 -366 -367 -367 -368 -368 -369 -369 -370 -370 -371 -371 -372 -372 -373 -373 -374 -374 -375 -375 -376 -376 -377 -377 -378 -378 -379 -379 -380 -380 -381 -381 -382 -382 -383 -383 -384 -384 -385 -385 -386 -386 -387 -387 -388 -388 -389 -389 -390 -390 -391 -391 -392 -392 -393 -393 -394 -394 -395 -395 -396 -396 -397 -397 -398 -398 -399 -399 -400 -400 -401 -401 -402 -402 -403 -403 -404 -404 -405 -405 -406 -406 -407 -407 -408 -408 -409 -409 -410 -410 -411 -411 -412 -412 -413 -413 -414 -414 -415 -415 -416 -416 -417 -417 -418 -418 -419 -419 -420 -420 -421 -421 -422 -422 -423 -423 -424 -424 -425 -425 -426 -426 -427 -427 -428 -428 -429 -429 -430 -430 -431 -431 -432 -432 -433 -433 -434 -434 -435 -435 -436 -436 -437 -437 -438 -438 -439 -439 -440 -440 -441 -441 -442 -442 -443 -443 -444 -444 -445 -445 -446 -446 -447 -447 -448 -448 -449 -449 -450 -450 -451 -451 -452 -452 -453 -453 -454 -454 -455 -455 -456 -456 -457 -457 -458 -458 -459 -459 -460 -460 -461 -461 -462 -462 -463 -463 -464 -464 -465 -465 -466 -466 -467 -467 -468 -468 -469 -469 -470 -470 -471 -471 -472 -472 -473 -473 -474 -474 -475 -475 -476 -476 -477 -477 -478 -478 -479 -479 -480 -480 -481 -481 -482 -482 -483 -483 -484 -484 -485 -485 -486 -486 -487 -487 -488 -488 -489 -489 -490 -490 -491 -491 -492 -492 -493 -493 -494 -494 -495 -495 -496 -496 -497 -497 -498 -498 -499 -499 -500 -500 -501 -501 -502 -502 -503 -503 -504 -504 -505 -505 -506 -506 -507 -507 -508 -508 -509 -509 -510 -510 -511 -511 -512 -512 -513 -513 -514 -514 -515 -515 -516 -516 -517 -517 -518 -518 -519 -519 -520 -520 -521 -521 -522 -522 -523 -523 -524 -524 -525 -525 -526 -526 -527 -527 -528 -528 -529 -529 -530 -530 -531 -531 -532 -532 -533 -533 -534 -534 -535 -535 -536 -536 -537 -537 -538 -538 -539 -539 -540 -540 -541 -541 -542 -542 -543 -543 -544 -544 -545 -545 -546 -546 -547 -547 -548 -548 -549 -549 -550 -550 -551 -551 -552 -552 -553 -553 -554 -554 -555 -555 -556 -556 -557 -557 -558 -558 -559 -559 -560 -560 -561 -561 -562 -562 -563 -563 -564 -564 -565 -565 -566 -566 -567 -567 -568 -568 -569 -569 -570 -570 -571 -571 -572 -572 -573 -573 -574 -574 -575 -575 -576 -576 -577 -577 -578 -578 -579 -579 -580 -580 -581 -581 -582 -582 -583 -583 -584 -584 -585 -585 -586 -586 -587 -587 -588 -588 -589 -589 -590 -590 -591 -591 -592 -592 -593 -593 -594 -594 -595 -595 -596 -596 -597 -597 -598 -598 -599 -599 -600 -600 -601 -601 -602 -602 -603 -603 -604 -604 -605 -605 -606 -606 -607 -607 -608 -608 -609 -609 -610 -610 -611 -611 -612 -612 -613 -613 -614 -614 -615 -615 -616 -616 -617 -617 -618 -618 -619 -619 -620 -620 -621 -621 -622 -622 -623 -623 -624 -624 -625 -625 -626 -626 -627 -627 -628 -628 -629 -629 -630 -630 -631 -631 -632 -632 -633 -633 -634 -634 -635 -635 -636 -636 -637 -637 -638 -638 -639 -639 -640 -640 -641 -641 -642 -642 -643 -643 -644 -644 -645 -645 -646 -646 -647 -647 -648 -648 -649 -649 -650 -650 -651 -651 -652 -652 -653 -653 -654 -654 -655 -655 -656 -656 -657 -657 -658 -658 -659 -659 -660 -660 -661 -661 -662 -662 -663 -663 -664 -664 -665 -665 -666 -666 -667 -667 -668 -668 -669 -669 -670 -670 -671 -671 -672 -672 -673 -673 -674 -674 -675 -675 -676 -676 -677 -677 -678 -678 -679 -679 -680 -680 -681 -681 -682 -682 -683 -683 -684 -684 -685 -685 -686 -686 -687 -687 -688 -688 -689 -689 -690 -690 -691 -691 -692 -692 -693 -693 -694 -694 -695 -695 -696 -696 -697 -697 -698 -698 -699 -699 -700 -700 -701 -701 -702 -702 -703 -703 -704 -704 -705 -705 -706 -706 -707 -707 -708 -708 -709 -709 -710 -710 -711 -711 -712 -712 -713 -713 -714 -714 -715 -715 -716 -716 -717 -717 -718 -718 -719 -719 -720 -720 -721 -721 -722 -722 -723 -723 -724 -724 -725 -725 -726 -726 -727 -727 -728 -728 -729 -729 -730 -730 -731 -731 -732 -732 -733 -733 -734 -734 -735 -735 -736 -736 -737 -737 -738 -738 -739 -739 -740 -740 -741 -741 -742 -742 -743 -743 -744 -744 -745 -745 -746 -746 -747 -747 -748 -748 -749 -749 -750 -750 -751 -751 -752 -752 -753 -753 -754 -754 -755 -755 -756 -756 -757 -757 -758 -758 -759 -759 -760 -760 -761 -761 -762 -762 -763 -763 -764 -764 -765 -765 -766 -766 -767 -767 -768 -768 -769 -769 -770 -770 -771 -771 -772 -772 -773 -773 -774 -774 -775 -775 -776 -776 -777 -777 -778 -778 -779 -779 -780 -780 -781 -781 -782 -782 -783 -783 -784 -784 -785 -785 -786 -786 -787 -787 -788 -788 -789 -789 -790 -790 -791 -791 -792 -792 -793 -793 -794 -794 -795 -795 -796 -796 -797 -797 -798 -798 -799 -799 -800 -800 -801 -801 -802 -802 -803 -803 -804 -804 -805 -805 -806 -806 -807 -807 -808 -808 -809 -809 -810 -810 -811 -811 -812 -812 -813 -813 -814 -814 -815 -815 -816 -816 -817 -817 -818 -818 -819 -819 -820 -820 -821 -821 -822 -822 -823 -823 -824 -824 -825 -825 -826 -826 -827 -827 -828 -828 -829 -829 -830 -830 -831 -831 -832 -832 -833 -833 -834 -834 -835 -835 -836 -836 -837 -837 -838 -838 -839 -839 -840 -840 -841 -841 -842 -842 -843 -843 -844 -844 -845 -845 -846 -846 -847 -847 -848 -848 -849 -849 -850 -850 -851 -851 -852 -852 -853 -853 -854 -854 -855 -855 -856 -856 -857 -857 -858 -858 -859 -859 -860 -860 -861 -861 -862 -862 -863 -863 -864 -864 -865 -865 -866 -866 -867 -867 -868 -868 -869 -869 -870 -870 -871 -871 -872 -872 -873 -873 -874 -874 -875 -875 -876 -876 -877 -877 -878 -878 -879 -879 -880 -880 -881 -881 -882 -882 -883 -883 -884 -884 -885 -885 -886 -886 -887 -887 -888 -888 -889 -889 -890 -890 -891 -891 -892 -892 -893 -893 -894 -894 -895 -895 -896 -896 -897 -897 -898 -898 -899 -899 -900 -900 -901 -901 -902 -902 -903 -903 -904 -904 -905 -905 -906 -906 -907 -907 -908 -908 -909 -909 -910 -910 -911 -911 -912 -912 -913 -913 -914 -914 -915 -915 -916 -916 -917 -917 -918 -918 -919 -919 -920 -920 -921 -921 -922 -922 -923 -923 -924 -924 -925 -925 -926 -926 -927 -927 -928 -928 -929 -929 -930 -930 -931 -931 -932 -932 -933 -933 -934 -934 -935 -935 -936 -936 -937 -937 -938 -938 -939 -939 -940 -940 -941 -941 -942 -942 -943 -943 -944 -944 -945 -945 -946 -946 -947 -947 -948 -948 -949 -949 -950 -950 -951 -951 -952 -952 -953 -953 -954 -954 -955 -955 -956 -956 -957 -957 -958 -958 -959 -959 -960 -960 -961 -961 -962 -962 -963 -963 -964 -964 -965 -965 -966 -966 -967 -967 -968 -968 -969 -969 -970 -970 -971 -971 -972 -972 -973 -973 -974 -974 -975 -975 -976 -976 -977 -977 -978 -978 -979 -979 -980 -980 -981 -981 -982 -982 -983 -983 -984 -984 -985 -985 -986 -986 -987 -987 -988 -988 -989 -989 -990 -990 -991 -991 -992 -992 -993 -993 -994 -994 -995 -995 -996 -996 -997 -997 -998 -998 -999 -999 -1000 -1000 -1001 -1001 -1002 -1002 -1003 -1003 -1004 -1004 -1005 -1005 -1006 -1006 -1007 -1007 -1008 -1008 -1009 -1009 -1010 -1010 -1011 -1011 -1012 -1012 -1013 -1013 -1014 -1014 -1015 -1015 -1016 -1016 -1017 -1017 -1018 -1018 -1019 -1019 -1020 -1020 -1021 -1021 -1022 -1022 -1023 -1023 -1024 -1024 -1025 -1025 -1026 -1026 -1027 -1027 -1028 -1028 -1029 -1029 -1030 -1030 -1031 -1031 -1032 -1032 -1033 -1033 -1034 -1034 -1035 -1035 -1036 -1036 -1037 -1037 -1038 -1038 -1039 -1039 -1040 -1040 -1041 -1041 -1042 -1042 -1043 -1043 -1044 -1044 -1045 -1045 -1046 -1046 -1047 -1047 -1048 -1048 -1049 -1049 -1050 -1050 -1051 -1051 -1052 -1052 -1053 -1053 -1054 -1054 -1055 -1055 -1056 -1056 -1057 -1057 -1058 -1058 -1059 -1059 -1060 -1060 -1061 -1061 -1062 -1062 -1063 -1063 -1064 -1064 -1065 -1065 -1066 -1066 -1067 -1067 -1068 -1068 -1069 -1069 -1070 -1070 -1071 -1071 -1072 -1072 -1073 -1073 -1074 -1074 -1075 -1075 -1076 -1076 -1077 -1077 -1078 -1078 -1079 -1079 -1080 -1080 -1081 -1081 -1082 -1082 -1083 -1083 -1084 -1084 -1085 -1085 -1086 -1086 -1087 -1087 -1088 -1088 -1089 -1089 -1090 -1090 -1091 -1091 -1092 -1092 -1093 -1093 -1094 -1094 -1095 -1095 -1096 -1096 -1097 -1097 -1098 -1098 -1099 -1099 -1100 -1100 -1101 -1101 -1102 -1102 -1103 -1103 -1104 -1104 -1105 -1105 -1106 -1106 -1107 -1107 -1108 -1108 -1109 -1109 -1110 -1110 -1111 -1111 -1112 -1112 -1113 -1113 -1114 -1114 -1115 -1115 -1116 -1116 -1117 -1117 -1118 -1118 -1119 -1119 -1120 -1120 -1121 -1121 -1122 -1122 -1123 -1123 -1124 -1124 -1125 -1125 -1126 -1126 -1127 -1127 -1128 -1128 -1129 -1129 -1130 -1130 -1131 -1131 -1132 -1132 -1133 -1133 -1134 -1134 -1135 -1135 -1136 -1136 -1137 -1137 -1138 -1138 -1139 -1139 -1140 -1140 -1141 -1141 -1142 -1142 -1143 -1143 -1144 -1144 -1145 -1145 -1146 -1146 -1147 -1147 -1148 -1148 -1149 -1149 -1150 -1150 -1151 -1151 -1152 -1152 -1153 -1153 -1154 -1154 -1155 -1155 -1156 -1156 -1157 -1157 -1158 -1158 -1159 -1159 -1160 -1160 -1161 -1161 -1162 -1162 -1163 -1163 -1164 -1164 -1165 -1165 -1166 -1166 -1167 -1167 -1168 -1168 -1169 -1169 -1170 -1170 -1171 -1171 -1172 -1172 -1173 -1173 -1174 -1174 -1175 -1175 -1176 -1176 -1177 -1177 -1178 -1178 -1179 -1179 -1180 -1180 -1181 -1181 -1182 -1182 -1183 -1183 -1184 -1184 -1185 -1185 -1186 -1186 -1187 -1187 -1188 -1188 -1189 -1189 -1190 -1190 -1191 -1191 -1192 -1192 -1193 -1193 -1194 -1194 -1195 -1195 -1196 -1196 -1197 -1197 -1198 -1198 -1199 -1199 -1200 -1200 -1201 -1201 -1202 -1202 -1203 -1203 -1204 -1204 -1205 -1205 -1206 -1206 -1207 -1207 -1208 -1208 -1209 -1209 -1210 -1210 -1211 -1211 -1212 -1212 -1213 -1213 -1214 -1214 -1215 -1215 -1216 -1216 -1217 -1217 -1218 -1218 -1219 -1219 -1220 -1220 -1221 -1221 -1222 -1222 -1223 -1223 -1224 -1224 -1225 -1225 -1226 -1226 -1227 -1227 -1228 -1228 -1229 -1229 -1230 -1230 -1231 -1231 -1232 -1232 -1233 -1233 -1234 -1234 -1235 -1235 -1236 -1236 -1237 -1237 -1238 -1238 -1239 -1239 -1240 -1240 -1241 -1241 -1242 -1242 -1243 -1243 -1244 -1244 -1245 -1245 -1246 -1246 -1247 -1247 -1248 -1248 -1249 -1249 -1250 -1250 -1251 -1251 -1252 -1252 -1253 -1253 -1254 -1254 -1255 -1255 -1256 -1256 -1257 -1257 -1258 -1258 -1259 -1259 -1260 -1260 -1261 -1261 -1262 -1262 -1263 -1263 -1264 -1264 -1265 -1265 -1266 -1266 -1267 -1267 -1268 -1268 -1269 -1269 -1270 -1270 -1271 -1271 -1272 -1272 -1273 -1273 -1274 -1274 -1275 -1275 -1276 -1276 -1277 -1277 -1278 -1278 -1279 -1279 -1280 -1280 -1281 -1281 -1282 -1282 -1283 -1283 -1284 -1284 -1285 -1285 -1286 -1286 -1287 -1287 -1288 -1288 -1289 -1289 -1290 -1290 -1291 -1291 -1292 -1292 -1293 -1293 -1294 -1294 -1295 -1295 -1296 -1296 -1297 -1297 -1298 -1298 -1299 -1299 -1300 -1300 -1301 -1301 -1302 -1302 -1303 -1303 -1304 -1304 -1305 -1305 -1306 -1306 -1307 -1307 -1308 -1308 -1309 -1309 -1310 -1310 -1311 -1311 -1312 -1312 -1313 -1313 -1314 -1314 -1315 -1315 -1316 -1316 -1317 -1317 -1318 -1318 -1319 -1319 -1320 -1320 -1321 -1321 -1322 -1322 -1323 -1323 -1324 -1324 -1325 -1325 -1326 -1326 -1327 -1327 -1328 -1328 -1329 -1329 -1330 -1330 -1331 -1331 -1332 -1332 -1333 -1333 -1334 -1334 -1335 -1335 -1336 -1336 -1337 -1337 -1338 -1338 -1339 -1339 -1340 -1340 -1341 -1341 -1342 -1342 -1343 -1343 -1344 -1344 -1345 -1345 -1346 -1346 -1347 -1347 -1348 -1348 -1349 -1349 -1350 -1350 -1351 -1351 -1352 -1352 -1353 -1353 -1354 -1354 -1355 -1355 -1356 -1356 -1357 -1357 -1358 -1358 -1359 -1359 -1360 -1360 -1361 -1361 -1362 -1362 -1363 -1363 -1364 -1364 -1365 -1365 -1366 -1366 -1367 -1367 -1368 -1368 -1369 -1369 -1370 -1370 -1371 -1371 -1372 -1372 -1373 -1373 -1374 -1374 -1375 -1375 -1376 -1376 -1377 -1377 -1378 -1378 -1379 -1379 -1380 -1380 -1381 -1381 -1382 -1382 -1383 -1383 -1384 -1384 -1385 -1385 -1386 -1386 -1387 -1387 -1388 -1388 -1389 -1389 -1390 -1390 -1391 -1391 -1392 -1392 -1393 -1393 -1394 -1394 -1395 -1395 -1396 -1396 -1397 -1397 -1398 -1398 -1399 -1399 -1400 -1400 -1401 -1401 -1402 -1402 -1403 -1403 -1404 -1404 -1405 -1405 -1406 -1406 -1407 -1407 -1408 -1408 -1409 -1409 -1410 -1410 -1411 -1411 -1412 -1412 -1413 -1413 -1414 -1414 -1415 -1415 -1416 -1416 -1417 -1417 -1418 -1418 -1419 -1419 -1420 -1420 -1421 -1421 -1422 -1422 -1423 -1423 -1424 -1424 -1425 -1425 -1426 -1426 -1427 -1427 -1428 -1428 -1429 -1429 -1430 -1430 -1431 -1431 -1432 -1432 -1433 -1433 -1434 -1434 -1435 -1435 -1436 -1436 -1437 -1437 -1438 -1438 -1439 -1439 -1440 -1440 -1441 -1441 -1442 -1442 -1443 -1443 -1444 -1444 -1445 -1445 -1446 -1446 -1447 -1447 -1448 -1448 -1449 -1449 -1450 -1450 -1451 -1451 -1452 -1452 -1453 -1453 -1454 -1454 -1455 -1455 -1456 -1456 -1457 -1457 -1458 -1458 -1459 -1459 -1460 -1460 -1461 -1461 -1462 -1462 -1463 -1463 -1464 -1464 -1465 -1465 -1466 -1466 -1467 -1467 -1468 -1468 -1469 -1469 -1470 -1470 -1471 -1471 -1472 -1472 -1473 -1473 -1474 -1474 -1475 -1475 -1476 -1476 -1477 -1477 -1478 -1478 -1479 -1479 -1480 -1480 -1481 -1481 -1482 -1482 -1483 -1483 -1484 -1484 -1485 -1485 -1486 -1486 -1487 -1487 -1488 -1488 -1489 -1489 -1490 -1490 -1491 -1491 -1492 -1492 -1493 -1493 -1494 -1494 -1495 -1495 -1496 -1496 -1497 -1497 -1498 -1498 -1499 -1499 -1500 -1500 -1501 -1501 -1502 -1502 -1503 -1503 -1504 -1504 -1505 -1505 -1506 -1506 -1507 -1507 -1508 -1508 -1509 -1509 -1510 -1510 -1511 -1511 -1512 -1512 -1513 -1513 -1514 -1514 -1515 -1515 -1516 -1516 -1517 -1517 -1518 -1518 -1519 -1519 -1520 -1520 -1521 -1521 -1522 -1522 -1523 -1523 -1524 -1524 -1525 -1525 -1526 -1526 -1527 -1527 -1528 -1528 -1529 -1529 -1530 -1530 -1531 -1531 -1532 -1532 -1533 -1533 -1534 -1534 -1535 -1535 -1536 -1536 -1537 -1537 -1538 -1538 -1539 -1539 -1540 -1540 -1541 -1541 -1542 -1542 -1543 -1543 -1544 -1544 -1545 -1545 -1546 -1546 -1547 -1547 -1548 -1548 -1549 -1549 -1550 -1550 -1551 -1551 -1552 -1552 -1553 -1553 -1554 -1554 -1555 -1555 -1556 -1556 -1557 -1557 -1558 -1558 -1559 -1559 -1560 -1560 -1561 -1561 -1562 -1562 -1563 -1563 -1564 -1564 -1565 -1565 -1566 -1566 -1567 -1567 -1568 -1568 -1569 -1569 -1570 -1570 -1571 -1571 -1572 -1572 -1573 -1573 -1574 -1574 -1575 -1575 -1576 -1576 -1577 -1577 -1578 -1578 -1579 -1579 -1580 -1580 -1581 -1581 -1582 -1582 -1583 -1583 -1584 -1584 -1585 -1585 -1586 -1586 -1587 -1587 -1588 -1588 -1589 -1589 -1590 -1590 -1591 -1591 -1592 -1592 -1593 -1593 -1594 -1594 -1595 -1595 -1596 -1596 -1597 -1597 -1598 -1598 -1599 -1599 -1600 -1600 -1601 -1601 -1602 -1602 -1603 -1603 -1604 -1604 -1605 -1605 -1606 -1606 -1607 -1607 -1608 -1608 -1609 -1609 -1610 -1610 -1611 -1611 -1612 -1612 -1613 -1613 -1614 -1614 -1615 -1615 -1616 -1616 -1617 -1617 -1618 -1618 -1619 -1619 -1620 -1620 -1621 -1621 -1622 -1622 -1623 -1623 -1624 -1624 -1625 -1625 -1626 -1626 -1627 -1627 -1628 -1628 -1629 -1629 -1630 -1630 -1631 -1631 -1632 -1632 -1633 -1633 -1634 -1634 -1635 -1635 -1636 -1636 -1637 -1637 -1638 -1638 -1639 -1639 -1640 -1640 -1641 -1641 -1642 -1642 -1643 -1643 -1644 -1644 -1645 -1645 -1646 -1646 -1647 -1647 -1648 -1648 -1649 -1649 -1650 -1650 -1651 -1651 -1652 -1652 -1653 -1653 -1654 -1654 -1655 -1655 -1656 -1656 -1657 -1657 -1658 -1658 -1659 -1659 -1660 -1660 -1661 -1661 -1662 -1662 -1663 -1663 -1664 -1664 -1665 -1665 -1666 -1666 -1667 -1667 -1668 -1668 -1669 -1669 -1670 -1670 -1671 -1671 -1672 -1672 -1673 -1673 -1674 -1674 -1675 -1675 -1676 -1676 -1677 -1677 -1678 -1678 -1679 -1679 -1680 -1680 -1681 -1681 -1682 -1682 -1683 -1683 -1684 -1684 -1685 -1685 -1686 -1686 -1687 -1687 -1688 -1688 -1689 -1689 -1690 -1690 -1691 -1691 -1692 -1692 -1693 -1693 -1694 -1694 -1695 -1695 -1696 -1696 -1697 -1697 -1698 -1698 -1699 -1699 -1700 -1700 -1701 -1701 -1702 -1702 -1703 -1703 -1704 -1704 -1705 -1705 -1706 -1706 -1707 -1707 -1708 -1708 -1709 -1709 -1710 -1710 -1711 -1711 -1712 -1712 -1713 -1713 -1714 -1714 -1715 -1715 -1716 -1716 -1717 -1717 -1718 -1718 -1719 -1719 -1720 -1720 -1721 -1721 -1722 -1722 -1723 -1723 -1724 -1724 -1725 -1725 -1726 -1726 -1727 -1727 -1728 -1728 -1729 -1729 -1730 -1730 -1731 -1731 -1732 -1732 -1733 -1733 -1734 -1734 -1735 -1735 -1736 -1736 -1737 -1737 -1738 -1738 -1739 -1739 -1740 -1740 -1741 -1741 -1742 -1742 -1743 -1743 -1744 -1744 -1745 -1745 -1746 -1746 -1747 -1747 -1748 -1748 -1749 -1749 -1750 -1750 -1751 -1751 -1752 -1752 -1753 -1753 -1754 -1754 -1755 -1755 -1756 -1756 -1757 -1757 -1758 -1758 -1759 -1759 -1760 -1760 -1761 -1761 -1762 -1762 -1763 -1763 -1764 -1764 -1765 -1765 -1766 -1766 -1767 -1767 -1768 -1768 -1769 -1769 -1770 -1770 -1771 -1771 -1772 -1772 -1773 -1773 -1774 -1774 -1775 -1775 -1776 -1776 -1777 -1777 -1778 -1778 -1779 -1779 -1780 -1780 -1781 -1781 -1782 -1782 -1783 -1783 -1784 -1784 -1785 -1785 -1786 -1786 -1787 -1787 -1788 -1788 -1789 -1789 -1790 -1790 -1791 -1791 -1792 -1792 -1793 -1793 -1794 -1794 -1795 -1795 -1796 -1796 -1797 -1797 -1798 -1798 -1799 -1799 -1800 -1800 -1801 -1801 -1802 -1802 -1803 -1803 -1804 -1804 -1805 -1805 -1806 -1806 -1807 -1807 -1808 -1808 -1809 -1809 -1810 -1810 -1811 -1811 -1812 -1812 -1813 -1813 -1814 -1814 -1815 -1815 -1816 -1816 -1817 -1817 -1818 -1818 -1819 -1819 -1820 -1820 -1821 -1821 -1822 -1822 -1823 -1823 -1824 -1824 -1825 -1825 -1826 -1826 -1827 -1827 -1828 -1828 -1829 -1829 -1830 -1830 -1831 -1831 -1832 -1832 -1833 -1833 -1834 -1834 -1835 -1835 -1836 -1836 -1837 -1837 -1838 -1838 -1839 -1839 -1840 -1840 -1841 -1841 -1842 -1842 -1843 -1843 -1844 -1844 -1845 -1845 -1846 -1846 -1847 -1847 -1848 -1848 -1849 -1849 -1850 -1850 -1851 -1851 -1852 -1852 -1853 -1853 -1854 -1854 -1855 -1855 -1856 -1856 -1857 -1857 -1858 -1858 -1859 -1859 -1860 -1860 -1861 -1861 -1862 -1862 -1863 -1863 -1864 -1864 -1865 -1865 -1866 -1866 -1867 -1867 -1868 -1868 -1869 -1869 -1870 -1870 -1871 -1871 -1872 -1872 -1873 -1873 -1874 -1874 -1875 -1875 -1876 -1876 -1877 -1877 -1878 -1878 -1879 -1879 -1880 -1880 -) - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/pointZones b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/pointZones deleted file mode 100755 index 8730f1423..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/pointZones +++ /dev/null @@ -1,21 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class regIOobject; - location "constant/polyMesh"; - object pointZones; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -0 -() - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/points b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/points deleted file mode 100755 index dae0fb5e8..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/points +++ /dev/null @@ -1,4024 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class vectorField; - location "constant/polyMesh"; - object points; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -4000 -( -(0 0 0.00050009999) -(0.005050505051 0 0.00050009999) -(0 2.5e-05 0.00050009999) -(0.005050505051 2.5e-05 0.00050009999) -(0 7.08119053e-05 0.00050009999) -(0.005050505051 7.08119053e-05 0.00050009999) -(0 0.00015426567 0.00050009999) -(0.005050505051 0.00015426567 0.00050009999) -(0 0.0003046635713 0.00050009999) -(0.005050505051 0.0003046635713 0.00050009999) -(0 0.0005705243934 0.00050009999) -(0.005050505051 0.0005705243934 0.00050009999) -(0 0.001024837958 0.00050009999) -(0.005050505051 0.001024837958 0.00050009999) -(0 0.001758019915 0.00050009999) -(0.005050505051 0.001758019915 0.00050009999) -(0 0.002838575912 0.00050009999) -(0.005050505051 0.002838575912 0.00050009999) -(0 0.004235474916 0.00050009999) -(0.005050505051 0.004235474916 0.00050009999) -(0 0.005764525084 0.00050009999) -(0.005050505051 0.005764525084 0.00050009999) -(0 0.007161424088 0.00050009999) -(0.005050505051 0.007161424088 0.00050009999) -(0 0.008241980085 0.00050009999) -(0.005050505051 0.008241980085 0.00050009999) -(0 0.008975162042 0.00050009999) -(0.005050505051 0.008975162042 0.00050009999) -(0 0.009429475607 0.00050009999) -(0.005050505051 0.009429475607 0.00050009999) -(0 0.009695336429 0.00050009999) -(0.005050505051 0.009695336429 0.00050009999) -(0 0.00984573433 0.00050009999) -(0.005050505051 0.00984573433 0.00050009999) -(0 0.009929188095 0.00050009999) -(0.005050505051 0.009929188095 0.00050009999) -(0 0.009975 0.00050009999) -(0.005050505051 0.009975 0.00050009999) -(0 0.01 0.00050009999) -(0.005050505051 0.01 0.00050009999) -(0.0101010101 0 0.00050009999) -(0.0101010101 2.5e-05 0.00050009999) -(0.0101010101 7.08119053e-05 0.00050009999) -(0.0101010101 0.00015426567 0.00050009999) -(0.0101010101 0.0003046635713 0.00050009999) -(0.0101010101 0.0005705243934 0.00050009999) -(0.0101010101 0.001024837958 0.00050009999) -(0.0101010101 0.001758019915 0.00050009999) -(0.0101010101 0.002838575912 0.00050009999) -(0.0101010101 0.004235474916 0.00050009999) -(0.0101010101 0.005764525084 0.00050009999) -(0.0101010101 0.007161424088 0.00050009999) -(0.0101010101 0.008241980085 0.00050009999) -(0.0101010101 0.008975162042 0.00050009999) -(0.0101010101 0.009429475607 0.00050009999) -(0.0101010101 0.009695336429 0.00050009999) -(0.0101010101 0.00984573433 0.00050009999) -(0.0101010101 0.009929188095 0.00050009999) -(0.0101010101 0.009975 0.00050009999) -(0.0101010101 0.01 0.00050009999) -(0.01515151515 0 0.00050009999) -(0.01515151515 2.5e-05 0.00050009999) -(0.01515151515 7.08119053e-05 0.00050009999) -(0.01515151515 0.00015426567 0.00050009999) -(0.01515151515 0.0003046635713 0.00050009999) -(0.01515151515 0.0005705243934 0.00050009999) -(0.01515151515 0.001024837958 0.00050009999) -(0.01515151515 0.001758019915 0.00050009999) -(0.01515151515 0.002838575912 0.00050009999) -(0.01515151515 0.004235474916 0.00050009999) -(0.01515151515 0.005764525084 0.00050009999) -(0.01515151515 0.007161424088 0.00050009999) -(0.01515151515 0.008241980085 0.00050009999) -(0.01515151515 0.008975162042 0.00050009999) -(0.01515151515 0.009429475607 0.00050009999) -(0.01515151515 0.009695336429 0.00050009999) -(0.01515151515 0.00984573433 0.00050009999) -(0.01515151515 0.009929188095 0.00050009999) -(0.01515151515 0.009975 0.00050009999) -(0.01515151515 0.01 0.00050009999) -(0.0202020202 0 0.00050009999) -(0.0202020202 2.5e-05 0.00050009999) -(0.0202020202 7.08119053e-05 0.00050009999) -(0.0202020202 0.00015426567 0.00050009999) -(0.0202020202 0.0003046635713 0.00050009999) -(0.0202020202 0.0005705243934 0.00050009999) -(0.0202020202 0.001024837958 0.00050009999) -(0.0202020202 0.001758019915 0.00050009999) -(0.0202020202 0.002838575912 0.00050009999) -(0.0202020202 0.004235474916 0.00050009999) -(0.0202020202 0.005764525084 0.00050009999) -(0.0202020202 0.007161424088 0.00050009999) -(0.0202020202 0.008241980085 0.00050009999) -(0.0202020202 0.008975162042 0.00050009999) -(0.0202020202 0.009429475607 0.00050009999) -(0.0202020202 0.009695336429 0.00050009999) -(0.0202020202 0.00984573433 0.00050009999) -(0.0202020202 0.009929188095 0.00050009999) -(0.0202020202 0.009975 0.00050009999) -(0.0202020202 0.01 0.00050009999) -(0.02525252525 0 0.00050009999) -(0.02525252525 2.5e-05 0.00050009999) -(0.02525252525 7.08119053e-05 0.00050009999) -(0.02525252525 0.00015426567 0.00050009999) -(0.02525252525 0.0003046635713 0.00050009999) -(0.02525252525 0.0005705243934 0.00050009999) -(0.02525252525 0.001024837958 0.00050009999) -(0.02525252525 0.001758019915 0.00050009999) -(0.02525252525 0.002838575912 0.00050009999) -(0.02525252525 0.004235474916 0.00050009999) -(0.02525252525 0.005764525084 0.00050009999) -(0.02525252525 0.007161424088 0.00050009999) -(0.02525252525 0.008241980085 0.00050009999) -(0.02525252525 0.008975162042 0.00050009999) -(0.02525252525 0.009429475607 0.00050009999) -(0.02525252525 0.009695336429 0.00050009999) -(0.02525252525 0.00984573433 0.00050009999) -(0.02525252525 0.009929188095 0.00050009999) -(0.02525252525 0.009975 0.00050009999) -(0.02525252525 0.01 0.00050009999) -(0.0303030303 0 0.00050009999) -(0.0303030303 2.5e-05 0.00050009999) -(0.0303030303 7.08119053e-05 0.00050009999) -(0.0303030303 0.00015426567 0.00050009999) -(0.0303030303 0.0003046635713 0.00050009999) -(0.0303030303 0.0005705243934 0.00050009999) -(0.0303030303 0.001024837958 0.00050009999) -(0.0303030303 0.001758019915 0.00050009999) -(0.0303030303 0.002838575912 0.00050009999) -(0.0303030303 0.004235474916 0.00050009999) -(0.0303030303 0.005764525084 0.00050009999) -(0.0303030303 0.007161424088 0.00050009999) -(0.0303030303 0.008241980085 0.00050009999) -(0.0303030303 0.008975162042 0.00050009999) -(0.0303030303 0.009429475607 0.00050009999) -(0.0303030303 0.009695336429 0.00050009999) -(0.0303030303 0.00984573433 0.00050009999) -(0.0303030303 0.009929188095 0.00050009999) -(0.0303030303 0.009975 0.00050009999) -(0.0303030303 0.01 0.00050009999) -(0.03535353535 0 0.00050009999) -(0.03535353535 2.5e-05 0.00050009999) -(0.03535353535 7.08119053e-05 0.00050009999) -(0.03535353535 0.00015426567 0.00050009999) -(0.03535353535 0.0003046635713 0.00050009999) -(0.03535353535 0.0005705243934 0.00050009999) -(0.03535353535 0.001024837958 0.00050009999) -(0.03535353535 0.001758019915 0.00050009999) -(0.03535353535 0.002838575912 0.00050009999) -(0.03535353535 0.004235474916 0.00050009999) -(0.03535353535 0.005764525084 0.00050009999) -(0.03535353535 0.007161424088 0.00050009999) -(0.03535353535 0.008241980085 0.00050009999) -(0.03535353535 0.008975162042 0.00050009999) -(0.03535353535 0.009429475607 0.00050009999) -(0.03535353535 0.009695336429 0.00050009999) -(0.03535353535 0.00984573433 0.00050009999) -(0.03535353535 0.009929188095 0.00050009999) -(0.03535353535 0.009975 0.00050009999) -(0.03535353535 0.01 0.00050009999) -(0.0404040404 0 0.00050009999) -(0.0404040404 2.5e-05 0.00050009999) -(0.0404040404 7.08119053e-05 0.00050009999) -(0.0404040404 0.00015426567 0.00050009999) -(0.0404040404 0.0003046635713 0.00050009999) -(0.0404040404 0.0005705243934 0.00050009999) -(0.0404040404 0.001024837958 0.00050009999) -(0.0404040404 0.001758019915 0.00050009999) -(0.0404040404 0.002838575912 0.00050009999) -(0.0404040404 0.004235474916 0.00050009999) -(0.0404040404 0.005764525084 0.00050009999) -(0.0404040404 0.007161424088 0.00050009999) -(0.0404040404 0.008241980085 0.00050009999) -(0.0404040404 0.008975162042 0.00050009999) -(0.0404040404 0.009429475607 0.00050009999) -(0.0404040404 0.009695336429 0.00050009999) -(0.0404040404 0.00984573433 0.00050009999) -(0.0404040404 0.009929188095 0.00050009999) -(0.0404040404 0.009975 0.00050009999) -(0.0404040404 0.01 0.00050009999) -(0.04545454545 0 0.00050009999) -(0.04545454545 2.5e-05 0.00050009999) -(0.04545454545 7.08119053e-05 0.00050009999) -(0.04545454545 0.00015426567 0.00050009999) -(0.04545454545 0.0003046635713 0.00050009999) -(0.04545454545 0.0005705243934 0.00050009999) -(0.04545454545 0.001024837958 0.00050009999) -(0.04545454545 0.001758019915 0.00050009999) -(0.04545454545 0.002838575912 0.00050009999) -(0.04545454545 0.004235474916 0.00050009999) -(0.04545454545 0.005764525084 0.00050009999) -(0.04545454545 0.007161424088 0.00050009999) -(0.04545454545 0.008241980085 0.00050009999) -(0.04545454545 0.008975162042 0.00050009999) -(0.04545454545 0.009429475607 0.00050009999) -(0.04545454545 0.009695336429 0.00050009999) -(0.04545454545 0.00984573433 0.00050009999) -(0.04545454545 0.009929188095 0.00050009999) -(0.04545454545 0.009975 0.00050009999) -(0.04545454545 0.01 0.00050009999) -(0.05050505051 0 0.00050009999) -(0.05050505051 2.5e-05 0.00050009999) -(0.05050505051 7.08119053e-05 0.00050009999) -(0.05050505051 0.00015426567 0.00050009999) -(0.05050505051 0.0003046635713 0.00050009999) -(0.05050505051 0.0005705243934 0.00050009999) -(0.05050505051 0.001024837958 0.00050009999) -(0.05050505051 0.001758019915 0.00050009999) -(0.05050505051 0.002838575912 0.00050009999) -(0.05050505051 0.004235474916 0.00050009999) -(0.05050505051 0.005764525084 0.00050009999) -(0.05050505051 0.007161424088 0.00050009999) -(0.05050505051 0.008241980085 0.00050009999) -(0.05050505051 0.008975162042 0.00050009999) -(0.05050505051 0.009429475607 0.00050009999) -(0.05050505051 0.009695336429 0.00050009999) -(0.05050505051 0.00984573433 0.00050009999) -(0.05050505051 0.009929188095 0.00050009999) -(0.05050505051 0.009975 0.00050009999) -(0.05050505051 0.01 0.00050009999) -(0.05555555556 0 0.00050009999) -(0.05555555556 2.5e-05 0.00050009999) -(0.05555555556 7.08119053e-05 0.00050009999) -(0.05555555556 0.00015426567 0.00050009999) -(0.05555555556 0.0003046635713 0.00050009999) -(0.05555555556 0.0005705243934 0.00050009999) -(0.05555555556 0.001024837958 0.00050009999) -(0.05555555556 0.001758019915 0.00050009999) -(0.05555555556 0.002838575912 0.00050009999) -(0.05555555556 0.004235474916 0.00050009999) -(0.05555555556 0.005764525084 0.00050009999) -(0.05555555556 0.007161424088 0.00050009999) -(0.05555555556 0.008241980085 0.00050009999) -(0.05555555556 0.008975162042 0.00050009999) -(0.05555555556 0.009429475607 0.00050009999) -(0.05555555556 0.009695336429 0.00050009999) -(0.05555555556 0.00984573433 0.00050009999) -(0.05555555556 0.009929188095 0.00050009999) -(0.05555555556 0.009975 0.00050009999) -(0.05555555556 0.01 0.00050009999) -(0.06060606061 0 0.00050009999) -(0.06060606061 2.5e-05 0.00050009999) -(0.06060606061 7.08119053e-05 0.00050009999) -(0.06060606061 0.00015426567 0.00050009999) -(0.06060606061 0.0003046635713 0.00050009999) -(0.06060606061 0.0005705243934 0.00050009999) -(0.06060606061 0.001024837958 0.00050009999) -(0.06060606061 0.001758019915 0.00050009999) -(0.06060606061 0.002838575912 0.00050009999) -(0.06060606061 0.004235474916 0.00050009999) -(0.06060606061 0.005764525084 0.00050009999) -(0.06060606061 0.007161424088 0.00050009999) -(0.06060606061 0.008241980085 0.00050009999) -(0.06060606061 0.008975162042 0.00050009999) -(0.06060606061 0.009429475607 0.00050009999) -(0.06060606061 0.009695336429 0.00050009999) -(0.06060606061 0.00984573433 0.00050009999) -(0.06060606061 0.009929188095 0.00050009999) -(0.06060606061 0.009975 0.00050009999) -(0.06060606061 0.01 0.00050009999) -(0.06565656566 0 0.00050009999) -(0.06565656566 2.5e-05 0.00050009999) -(0.06565656566 7.08119053e-05 0.00050009999) -(0.06565656566 0.00015426567 0.00050009999) -(0.06565656566 0.0003046635713 0.00050009999) -(0.06565656566 0.0005705243934 0.00050009999) -(0.06565656566 0.001024837958 0.00050009999) -(0.06565656566 0.001758019915 0.00050009999) -(0.06565656566 0.002838575912 0.00050009999) -(0.06565656566 0.004235474916 0.00050009999) -(0.06565656566 0.005764525084 0.00050009999) -(0.06565656566 0.007161424088 0.00050009999) -(0.06565656566 0.008241980085 0.00050009999) -(0.06565656566 0.008975162042 0.00050009999) -(0.06565656566 0.009429475607 0.00050009999) -(0.06565656566 0.009695336429 0.00050009999) -(0.06565656566 0.00984573433 0.00050009999) -(0.06565656566 0.009929188095 0.00050009999) -(0.06565656566 0.009975 0.00050009999) -(0.06565656566 0.01 0.00050009999) -(0.07070707071 0 0.00050009999) -(0.07070707071 2.5e-05 0.00050009999) -(0.07070707071 7.08119053e-05 0.00050009999) -(0.07070707071 0.00015426567 0.00050009999) -(0.07070707071 0.0003046635713 0.00050009999) -(0.07070707071 0.0005705243934 0.00050009999) -(0.07070707071 0.001024837958 0.00050009999) -(0.07070707071 0.001758019915 0.00050009999) -(0.07070707071 0.002838575912 0.00050009999) -(0.07070707071 0.004235474916 0.00050009999) -(0.07070707071 0.005764525084 0.00050009999) -(0.07070707071 0.007161424088 0.00050009999) -(0.07070707071 0.008241980085 0.00050009999) -(0.07070707071 0.008975162042 0.00050009999) -(0.07070707071 0.009429475607 0.00050009999) -(0.07070707071 0.009695336429 0.00050009999) -(0.07070707071 0.00984573433 0.00050009999) -(0.07070707071 0.009929188095 0.00050009999) -(0.07070707071 0.009975 0.00050009999) -(0.07070707071 0.01 0.00050009999) -(0.07575757576 0 0.00050009999) -(0.07575757576 2.5e-05 0.00050009999) -(0.07575757576 7.08119053e-05 0.00050009999) -(0.07575757576 0.00015426567 0.00050009999) -(0.07575757576 0.0003046635713 0.00050009999) -(0.07575757576 0.0005705243934 0.00050009999) -(0.07575757576 0.001024837958 0.00050009999) -(0.07575757576 0.001758019915 0.00050009999) -(0.07575757576 0.002838575912 0.00050009999) -(0.07575757576 0.004235474916 0.00050009999) -(0.07575757576 0.005764525084 0.00050009999) -(0.07575757576 0.007161424088 0.00050009999) -(0.07575757576 0.008241980085 0.00050009999) -(0.07575757576 0.008975162042 0.00050009999) -(0.07575757576 0.009429475607 0.00050009999) -(0.07575757576 0.009695336429 0.00050009999) -(0.07575757576 0.00984573433 0.00050009999) -(0.07575757576 0.009929188095 0.00050009999) -(0.07575757576 0.009975 0.00050009999) -(0.07575757576 0.01 0.00050009999) -(0.08080808081 0 0.00050009999) -(0.08080808081 2.5e-05 0.00050009999) -(0.08080808081 7.08119053e-05 0.00050009999) -(0.08080808081 0.00015426567 0.00050009999) -(0.08080808081 0.0003046635713 0.00050009999) -(0.08080808081 0.0005705243934 0.00050009999) -(0.08080808081 0.001024837958 0.00050009999) -(0.08080808081 0.001758019915 0.00050009999) -(0.08080808081 0.002838575912 0.00050009999) -(0.08080808081 0.004235474916 0.00050009999) -(0.08080808081 0.005764525084 0.00050009999) -(0.08080808081 0.007161424088 0.00050009999) -(0.08080808081 0.008241980085 0.00050009999) -(0.08080808081 0.008975162042 0.00050009999) -(0.08080808081 0.009429475607 0.00050009999) -(0.08080808081 0.009695336429 0.00050009999) -(0.08080808081 0.00984573433 0.00050009999) -(0.08080808081 0.009929188095 0.00050009999) -(0.08080808081 0.009975 0.00050009999) -(0.08080808081 0.01 0.00050009999) -(0.08585858586 0 0.00050009999) -(0.08585858586 2.5e-05 0.00050009999) -(0.08585858586 7.08119053e-05 0.00050009999) -(0.08585858586 0.00015426567 0.00050009999) -(0.08585858586 0.0003046635713 0.00050009999) -(0.08585858586 0.0005705243934 0.00050009999) -(0.08585858586 0.001024837958 0.00050009999) -(0.08585858586 0.001758019915 0.00050009999) -(0.08585858586 0.002838575912 0.00050009999) -(0.08585858586 0.004235474916 0.00050009999) -(0.08585858586 0.005764525084 0.00050009999) -(0.08585858586 0.007161424088 0.00050009999) -(0.08585858586 0.008241980085 0.00050009999) -(0.08585858586 0.008975162042 0.00050009999) -(0.08585858586 0.009429475607 0.00050009999) -(0.08585858586 0.009695336429 0.00050009999) -(0.08585858586 0.00984573433 0.00050009999) -(0.08585858586 0.009929188095 0.00050009999) -(0.08585858586 0.009975 0.00050009999) -(0.08585858586 0.01 0.00050009999) -(0.09090909091 0 0.00050009999) -(0.09090909091 2.5e-05 0.00050009999) -(0.09090909091 7.08119053e-05 0.00050009999) -(0.09090909091 0.00015426567 0.00050009999) -(0.09090909091 0.0003046635713 0.00050009999) -(0.09090909091 0.0005705243934 0.00050009999) -(0.09090909091 0.001024837958 0.00050009999) -(0.09090909091 0.001758019915 0.00050009999) -(0.09090909091 0.002838575912 0.00050009999) -(0.09090909091 0.004235474916 0.00050009999) -(0.09090909091 0.005764525084 0.00050009999) -(0.09090909091 0.007161424088 0.00050009999) -(0.09090909091 0.008241980085 0.00050009999) -(0.09090909091 0.008975162042 0.00050009999) -(0.09090909091 0.009429475607 0.00050009999) -(0.09090909091 0.009695336429 0.00050009999) -(0.09090909091 0.00984573433 0.00050009999) -(0.09090909091 0.009929188095 0.00050009999) -(0.09090909091 0.009975 0.00050009999) -(0.09090909091 0.01 0.00050009999) -(0.09595959596 0 0.00050009999) -(0.09595959596 2.5e-05 0.00050009999) -(0.09595959596 7.08119053e-05 0.00050009999) -(0.09595959596 0.00015426567 0.00050009999) -(0.09595959596 0.0003046635713 0.00050009999) -(0.09595959596 0.0005705243934 0.00050009999) -(0.09595959596 0.001024837958 0.00050009999) -(0.09595959596 0.001758019915 0.00050009999) -(0.09595959596 0.002838575912 0.00050009999) -(0.09595959596 0.004235474916 0.00050009999) -(0.09595959596 0.005764525084 0.00050009999) -(0.09595959596 0.007161424088 0.00050009999) -(0.09595959596 0.008241980085 0.00050009999) -(0.09595959596 0.008975162042 0.00050009999) -(0.09595959596 0.009429475607 0.00050009999) -(0.09595959596 0.009695336429 0.00050009999) -(0.09595959596 0.00984573433 0.00050009999) -(0.09595959596 0.009929188095 0.00050009999) -(0.09595959596 0.009975 0.00050009999) -(0.09595959596 0.01 0.00050009999) -(0.101010101 0 0.00050009999) -(0.101010101 2.5e-05 0.00050009999) -(0.101010101 7.08119053e-05 0.00050009999) -(0.101010101 0.00015426567 0.00050009999) -(0.101010101 0.0003046635713 0.00050009999) -(0.101010101 0.0005705243934 0.00050009999) -(0.101010101 0.001024837958 0.00050009999) -(0.101010101 0.001758019915 0.00050009999) -(0.101010101 0.002838575912 0.00050009999) -(0.101010101 0.004235474916 0.00050009999) -(0.101010101 0.005764525084 0.00050009999) -(0.101010101 0.007161424088 0.00050009999) -(0.101010101 0.008241980085 0.00050009999) -(0.101010101 0.008975162042 0.00050009999) -(0.101010101 0.009429475607 0.00050009999) -(0.101010101 0.009695336429 0.00050009999) -(0.101010101 0.00984573433 0.00050009999) -(0.101010101 0.009929188095 0.00050009999) -(0.101010101 0.009975 0.00050009999) -(0.101010101 0.01 0.00050009999) -(0.1060606061 0 0.00050009999) -(0.1060606061 2.5e-05 0.00050009999) -(0.1060606061 7.08119053e-05 0.00050009999) -(0.1060606061 0.00015426567 0.00050009999) -(0.1060606061 0.0003046635713 0.00050009999) -(0.1060606061 0.0005705243934 0.00050009999) -(0.1060606061 0.001024837958 0.00050009999) -(0.1060606061 0.001758019915 0.00050009999) -(0.1060606061 0.002838575912 0.00050009999) -(0.1060606061 0.004235474916 0.00050009999) -(0.1060606061 0.005764525084 0.00050009999) -(0.1060606061 0.007161424088 0.00050009999) -(0.1060606061 0.008241980085 0.00050009999) -(0.1060606061 0.008975162042 0.00050009999) -(0.1060606061 0.009429475607 0.00050009999) -(0.1060606061 0.009695336429 0.00050009999) -(0.1060606061 0.00984573433 0.00050009999) -(0.1060606061 0.009929188095 0.00050009999) -(0.1060606061 0.009975 0.00050009999) -(0.1060606061 0.01 0.00050009999) -(0.1111111111 0 0.00050009999) -(0.1111111111 2.5e-05 0.00050009999) -(0.1111111111 7.08119053e-05 0.00050009999) -(0.1111111111 0.00015426567 0.00050009999) -(0.1111111111 0.0003046635713 0.00050009999) -(0.1111111111 0.0005705243934 0.00050009999) -(0.1111111111 0.001024837958 0.00050009999) -(0.1111111111 0.001758019915 0.00050009999) -(0.1111111111 0.002838575912 0.00050009999) -(0.1111111111 0.004235474916 0.00050009999) -(0.1111111111 0.005764525084 0.00050009999) -(0.1111111111 0.007161424088 0.00050009999) -(0.1111111111 0.008241980085 0.00050009999) -(0.1111111111 0.008975162042 0.00050009999) -(0.1111111111 0.009429475607 0.00050009999) -(0.1111111111 0.009695336429 0.00050009999) -(0.1111111111 0.00984573433 0.00050009999) -(0.1111111111 0.009929188095 0.00050009999) -(0.1111111111 0.009975 0.00050009999) -(0.1111111111 0.01 0.00050009999) -(0.1161616162 0 0.00050009999) -(0.1161616162 2.5e-05 0.00050009999) -(0.1161616162 7.08119053e-05 0.00050009999) -(0.1161616162 0.00015426567 0.00050009999) -(0.1161616162 0.0003046635713 0.00050009999) -(0.1161616162 0.0005705243934 0.00050009999) -(0.1161616162 0.001024837958 0.00050009999) -(0.1161616162 0.001758019915 0.00050009999) -(0.1161616162 0.002838575912 0.00050009999) -(0.1161616162 0.004235474916 0.00050009999) -(0.1161616162 0.005764525084 0.00050009999) -(0.1161616162 0.007161424088 0.00050009999) -(0.1161616162 0.008241980085 0.00050009999) -(0.1161616162 0.008975162042 0.00050009999) -(0.1161616162 0.009429475607 0.00050009999) -(0.1161616162 0.009695336429 0.00050009999) -(0.1161616162 0.00984573433 0.00050009999) -(0.1161616162 0.009929188095 0.00050009999) -(0.1161616162 0.009975 0.00050009999) -(0.1161616162 0.01 0.00050009999) -(0.1212121212 0 0.00050009999) -(0.1212121212 2.5e-05 0.00050009999) -(0.1212121212 7.08119053e-05 0.00050009999) -(0.1212121212 0.00015426567 0.00050009999) -(0.1212121212 0.0003046635713 0.00050009999) -(0.1212121212 0.0005705243934 0.00050009999) -(0.1212121212 0.001024837958 0.00050009999) -(0.1212121212 0.001758019915 0.00050009999) -(0.1212121212 0.002838575912 0.00050009999) -(0.1212121212 0.004235474916 0.00050009999) -(0.1212121212 0.005764525084 0.00050009999) -(0.1212121212 0.007161424088 0.00050009999) -(0.1212121212 0.008241980085 0.00050009999) -(0.1212121212 0.008975162042 0.00050009999) -(0.1212121212 0.009429475607 0.00050009999) -(0.1212121212 0.009695336429 0.00050009999) -(0.1212121212 0.00984573433 0.00050009999) -(0.1212121212 0.009929188095 0.00050009999) -(0.1212121212 0.009975 0.00050009999) -(0.1212121212 0.01 0.00050009999) -(0.1262626263 0 0.00050009999) -(0.1262626263 2.5e-05 0.00050009999) -(0.1262626263 7.08119053e-05 0.00050009999) -(0.1262626263 0.00015426567 0.00050009999) -(0.1262626263 0.0003046635713 0.00050009999) -(0.1262626263 0.0005705243934 0.00050009999) -(0.1262626263 0.001024837958 0.00050009999) -(0.1262626263 0.001758019915 0.00050009999) -(0.1262626263 0.002838575912 0.00050009999) -(0.1262626263 0.004235474916 0.00050009999) -(0.1262626263 0.005764525084 0.00050009999) -(0.1262626263 0.007161424088 0.00050009999) -(0.1262626263 0.008241980085 0.00050009999) -(0.1262626263 0.008975162042 0.00050009999) -(0.1262626263 0.009429475607 0.00050009999) -(0.1262626263 0.009695336429 0.00050009999) -(0.1262626263 0.00984573433 0.00050009999) -(0.1262626263 0.009929188095 0.00050009999) -(0.1262626263 0.009975 0.00050009999) -(0.1262626263 0.01 0.00050009999) -(0.1313131313 0 0.00050009999) -(0.1313131313 2.5e-05 0.00050009999) -(0.1313131313 7.08119053e-05 0.00050009999) -(0.1313131313 0.00015426567 0.00050009999) -(0.1313131313 0.0003046635713 0.00050009999) -(0.1313131313 0.0005705243934 0.00050009999) -(0.1313131313 0.001024837958 0.00050009999) -(0.1313131313 0.001758019915 0.00050009999) -(0.1313131313 0.002838575912 0.00050009999) -(0.1313131313 0.004235474916 0.00050009999) -(0.1313131313 0.005764525084 0.00050009999) -(0.1313131313 0.007161424088 0.00050009999) -(0.1313131313 0.008241980085 0.00050009999) -(0.1313131313 0.008975162042 0.00050009999) -(0.1313131313 0.009429475607 0.00050009999) -(0.1313131313 0.009695336429 0.00050009999) -(0.1313131313 0.00984573433 0.00050009999) -(0.1313131313 0.009929188095 0.00050009999) -(0.1313131313 0.009975 0.00050009999) -(0.1313131313 0.01 0.00050009999) -(0.1363636364 0 0.00050009999) -(0.1363636364 2.5e-05 0.00050009999) -(0.1363636364 7.08119053e-05 0.00050009999) -(0.1363636364 0.00015426567 0.00050009999) -(0.1363636364 0.0003046635713 0.00050009999) -(0.1363636364 0.0005705243934 0.00050009999) -(0.1363636364 0.001024837958 0.00050009999) -(0.1363636364 0.001758019915 0.00050009999) -(0.1363636364 0.002838575912 0.00050009999) -(0.1363636364 0.004235474916 0.00050009999) -(0.1363636364 0.005764525084 0.00050009999) -(0.1363636364 0.007161424088 0.00050009999) -(0.1363636364 0.008241980085 0.00050009999) -(0.1363636364 0.008975162042 0.00050009999) -(0.1363636364 0.009429475607 0.00050009999) -(0.1363636364 0.009695336429 0.00050009999) -(0.1363636364 0.00984573433 0.00050009999) -(0.1363636364 0.009929188095 0.00050009999) -(0.1363636364 0.009975 0.00050009999) -(0.1363636364 0.01 0.00050009999) -(0.1414141414 0 0.00050009999) -(0.1414141414 2.5e-05 0.00050009999) -(0.1414141414 7.08119053e-05 0.00050009999) -(0.1414141414 0.00015426567 0.00050009999) -(0.1414141414 0.0003046635713 0.00050009999) -(0.1414141414 0.0005705243934 0.00050009999) -(0.1414141414 0.001024837958 0.00050009999) -(0.1414141414 0.001758019915 0.00050009999) -(0.1414141414 0.002838575912 0.00050009999) -(0.1414141414 0.004235474916 0.00050009999) -(0.1414141414 0.005764525084 0.00050009999) -(0.1414141414 0.007161424088 0.00050009999) -(0.1414141414 0.008241980085 0.00050009999) -(0.1414141414 0.008975162042 0.00050009999) -(0.1414141414 0.009429475607 0.00050009999) -(0.1414141414 0.009695336429 0.00050009999) -(0.1414141414 0.00984573433 0.00050009999) -(0.1414141414 0.009929188095 0.00050009999) -(0.1414141414 0.009975 0.00050009999) -(0.1414141414 0.01 0.00050009999) -(0.1464646465 0 0.00050009999) -(0.1464646465 2.5e-05 0.00050009999) -(0.1464646465 7.08119053e-05 0.00050009999) -(0.1464646465 0.00015426567 0.00050009999) -(0.1464646465 0.0003046635713 0.00050009999) -(0.1464646465 0.0005705243934 0.00050009999) -(0.1464646465 0.001024837958 0.00050009999) -(0.1464646465 0.001758019915 0.00050009999) -(0.1464646465 0.002838575912 0.00050009999) -(0.1464646465 0.004235474916 0.00050009999) -(0.1464646465 0.005764525084 0.00050009999) -(0.1464646465 0.007161424088 0.00050009999) -(0.1464646465 0.008241980085 0.00050009999) -(0.1464646465 0.008975162042 0.00050009999) -(0.1464646465 0.009429475607 0.00050009999) -(0.1464646465 0.009695336429 0.00050009999) -(0.1464646465 0.00984573433 0.00050009999) -(0.1464646465 0.009929188095 0.00050009999) -(0.1464646465 0.009975 0.00050009999) -(0.1464646465 0.01 0.00050009999) -(0.1515151515 0 0.00050009999) -(0.1515151515 2.5e-05 0.00050009999) -(0.1515151515 7.08119053e-05 0.00050009999) -(0.1515151515 0.00015426567 0.00050009999) -(0.1515151515 0.0003046635713 0.00050009999) -(0.1515151515 0.0005705243934 0.00050009999) -(0.1515151515 0.001024837958 0.00050009999) -(0.1515151515 0.001758019915 0.00050009999) -(0.1515151515 0.002838575912 0.00050009999) -(0.1515151515 0.004235474916 0.00050009999) -(0.1515151515 0.005764525084 0.00050009999) -(0.1515151515 0.007161424088 0.00050009999) -(0.1515151515 0.008241980085 0.00050009999) -(0.1515151515 0.008975162042 0.00050009999) -(0.1515151515 0.009429475607 0.00050009999) -(0.1515151515 0.009695336429 0.00050009999) -(0.1515151515 0.00984573433 0.00050009999) -(0.1515151515 0.009929188095 0.00050009999) -(0.1515151515 0.009975 0.00050009999) -(0.1515151515 0.01 0.00050009999) -(0.1565656566 0 0.00050009999) -(0.1565656566 2.5e-05 0.00050009999) -(0.1565656566 7.08119053e-05 0.00050009999) -(0.1565656566 0.00015426567 0.00050009999) -(0.1565656566 0.0003046635713 0.00050009999) -(0.1565656566 0.0005705243934 0.00050009999) -(0.1565656566 0.001024837958 0.00050009999) -(0.1565656566 0.001758019915 0.00050009999) -(0.1565656566 0.002838575912 0.00050009999) -(0.1565656566 0.004235474916 0.00050009999) -(0.1565656566 0.005764525084 0.00050009999) -(0.1565656566 0.007161424088 0.00050009999) -(0.1565656566 0.008241980085 0.00050009999) -(0.1565656566 0.008975162042 0.00050009999) -(0.1565656566 0.009429475607 0.00050009999) -(0.1565656566 0.009695336429 0.00050009999) -(0.1565656566 0.00984573433 0.00050009999) -(0.1565656566 0.009929188095 0.00050009999) -(0.1565656566 0.009975 0.00050009999) -(0.1565656566 0.01 0.00050009999) -(0.1616161616 0 0.00050009999) -(0.1616161616 2.5e-05 0.00050009999) -(0.1616161616 7.08119053e-05 0.00050009999) -(0.1616161616 0.00015426567 0.00050009999) -(0.1616161616 0.0003046635713 0.00050009999) -(0.1616161616 0.0005705243934 0.00050009999) -(0.1616161616 0.001024837958 0.00050009999) -(0.1616161616 0.001758019915 0.00050009999) -(0.1616161616 0.002838575912 0.00050009999) -(0.1616161616 0.004235474916 0.00050009999) -(0.1616161616 0.005764525084 0.00050009999) -(0.1616161616 0.007161424088 0.00050009999) -(0.1616161616 0.008241980085 0.00050009999) -(0.1616161616 0.008975162042 0.00050009999) -(0.1616161616 0.009429475607 0.00050009999) -(0.1616161616 0.009695336429 0.00050009999) -(0.1616161616 0.00984573433 0.00050009999) -(0.1616161616 0.009929188095 0.00050009999) -(0.1616161616 0.009975 0.00050009999) -(0.1616161616 0.01 0.00050009999) -(0.1666666667 0 0.00050009999) -(0.1666666667 2.5e-05 0.00050009999) -(0.1666666667 7.08119053e-05 0.00050009999) -(0.1666666667 0.00015426567 0.00050009999) -(0.1666666667 0.0003046635713 0.00050009999) -(0.1666666667 0.0005705243934 0.00050009999) -(0.1666666667 0.001024837958 0.00050009999) -(0.1666666667 0.001758019915 0.00050009999) -(0.1666666667 0.002838575912 0.00050009999) -(0.1666666667 0.004235474916 0.00050009999) -(0.1666666667 0.005764525084 0.00050009999) -(0.1666666667 0.007161424088 0.00050009999) -(0.1666666667 0.008241980085 0.00050009999) -(0.1666666667 0.008975162042 0.00050009999) -(0.1666666667 0.009429475607 0.00050009999) -(0.1666666667 0.009695336429 0.00050009999) -(0.1666666667 0.00984573433 0.00050009999) -(0.1666666667 0.009929188095 0.00050009999) -(0.1666666667 0.009975 0.00050009999) -(0.1666666667 0.01 0.00050009999) -(0.1717171717 0 0.00050009999) -(0.1717171717 2.5e-05 0.00050009999) -(0.1717171717 7.08119053e-05 0.00050009999) -(0.1717171717 0.00015426567 0.00050009999) -(0.1717171717 0.0003046635713 0.00050009999) -(0.1717171717 0.0005705243934 0.00050009999) -(0.1717171717 0.001024837958 0.00050009999) -(0.1717171717 0.001758019915 0.00050009999) -(0.1717171717 0.002838575912 0.00050009999) -(0.1717171717 0.004235474916 0.00050009999) -(0.1717171717 0.005764525084 0.00050009999) -(0.1717171717 0.007161424088 0.00050009999) -(0.1717171717 0.008241980085 0.00050009999) -(0.1717171717 0.008975162042 0.00050009999) -(0.1717171717 0.009429475607 0.00050009999) -(0.1717171717 0.009695336429 0.00050009999) -(0.1717171717 0.00984573433 0.00050009999) -(0.1717171717 0.009929188095 0.00050009999) -(0.1717171717 0.009975 0.00050009999) -(0.1717171717 0.01 0.00050009999) -(0.1767676768 0 0.00050009999) -(0.1767676768 2.5e-05 0.00050009999) -(0.1767676768 7.08119053e-05 0.00050009999) -(0.1767676768 0.00015426567 0.00050009999) -(0.1767676768 0.0003046635713 0.00050009999) -(0.1767676768 0.0005705243934 0.00050009999) -(0.1767676768 0.001024837958 0.00050009999) -(0.1767676768 0.001758019915 0.00050009999) -(0.1767676768 0.002838575912 0.00050009999) -(0.1767676768 0.004235474916 0.00050009999) -(0.1767676768 0.005764525084 0.00050009999) -(0.1767676768 0.007161424088 0.00050009999) -(0.1767676768 0.008241980085 0.00050009999) -(0.1767676768 0.008975162042 0.00050009999) -(0.1767676768 0.009429475607 0.00050009999) -(0.1767676768 0.009695336429 0.00050009999) -(0.1767676768 0.00984573433 0.00050009999) -(0.1767676768 0.009929188095 0.00050009999) -(0.1767676768 0.009975 0.00050009999) -(0.1767676768 0.01 0.00050009999) -(0.1818181818 0 0.00050009999) -(0.1818181818 2.5e-05 0.00050009999) -(0.1818181818 7.08119053e-05 0.00050009999) -(0.1818181818 0.00015426567 0.00050009999) -(0.1818181818 0.0003046635713 0.00050009999) -(0.1818181818 0.0005705243934 0.00050009999) -(0.1818181818 0.001024837958 0.00050009999) -(0.1818181818 0.001758019915 0.00050009999) -(0.1818181818 0.002838575912 0.00050009999) -(0.1818181818 0.004235474916 0.00050009999) -(0.1818181818 0.005764525084 0.00050009999) -(0.1818181818 0.007161424088 0.00050009999) -(0.1818181818 0.008241980085 0.00050009999) -(0.1818181818 0.008975162042 0.00050009999) -(0.1818181818 0.009429475607 0.00050009999) -(0.1818181818 0.009695336429 0.00050009999) -(0.1818181818 0.00984573433 0.00050009999) -(0.1818181818 0.009929188095 0.00050009999) -(0.1818181818 0.009975 0.00050009999) -(0.1818181818 0.01 0.00050009999) -(0.1868686869 0 0.00050009999) -(0.1868686869 2.5e-05 0.00050009999) -(0.1868686869 7.08119053e-05 0.00050009999) -(0.1868686869 0.00015426567 0.00050009999) -(0.1868686869 0.0003046635713 0.00050009999) -(0.1868686869 0.0005705243934 0.00050009999) -(0.1868686869 0.001024837958 0.00050009999) -(0.1868686869 0.001758019915 0.00050009999) -(0.1868686869 0.002838575912 0.00050009999) -(0.1868686869 0.004235474916 0.00050009999) -(0.1868686869 0.005764525084 0.00050009999) -(0.1868686869 0.007161424088 0.00050009999) -(0.1868686869 0.008241980085 0.00050009999) -(0.1868686869 0.008975162042 0.00050009999) -(0.1868686869 0.009429475607 0.00050009999) -(0.1868686869 0.009695336429 0.00050009999) -(0.1868686869 0.00984573433 0.00050009999) -(0.1868686869 0.009929188095 0.00050009999) -(0.1868686869 0.009975 0.00050009999) -(0.1868686869 0.01 0.00050009999) -(0.1919191919 0 0.00050009999) -(0.1919191919 2.5e-05 0.00050009999) -(0.1919191919 7.08119053e-05 0.00050009999) -(0.1919191919 0.00015426567 0.00050009999) -(0.1919191919 0.0003046635713 0.00050009999) -(0.1919191919 0.0005705243934 0.00050009999) -(0.1919191919 0.001024837958 0.00050009999) -(0.1919191919 0.001758019915 0.00050009999) -(0.1919191919 0.002838575912 0.00050009999) -(0.1919191919 0.004235474916 0.00050009999) -(0.1919191919 0.005764525084 0.00050009999) -(0.1919191919 0.007161424088 0.00050009999) -(0.1919191919 0.008241980085 0.00050009999) -(0.1919191919 0.008975162042 0.00050009999) -(0.1919191919 0.009429475607 0.00050009999) -(0.1919191919 0.009695336429 0.00050009999) -(0.1919191919 0.00984573433 0.00050009999) -(0.1919191919 0.009929188095 0.00050009999) -(0.1919191919 0.009975 0.00050009999) -(0.1919191919 0.01 0.00050009999) -(0.196969697 0 0.00050009999) -(0.196969697 2.5e-05 0.00050009999) -(0.196969697 7.08119053e-05 0.00050009999) -(0.196969697 0.00015426567 0.00050009999) -(0.196969697 0.0003046635713 0.00050009999) -(0.196969697 0.0005705243934 0.00050009999) -(0.196969697 0.001024837958 0.00050009999) -(0.196969697 0.001758019915 0.00050009999) -(0.196969697 0.002838575912 0.00050009999) -(0.196969697 0.004235474916 0.00050009999) -(0.196969697 0.005764525084 0.00050009999) -(0.196969697 0.007161424088 0.00050009999) -(0.196969697 0.008241980085 0.00050009999) -(0.196969697 0.008975162042 0.00050009999) -(0.196969697 0.009429475607 0.00050009999) -(0.196969697 0.009695336429 0.00050009999) -(0.196969697 0.00984573433 0.00050009999) -(0.196969697 0.009929188095 0.00050009999) -(0.196969697 0.009975 0.00050009999) -(0.196969697 0.01 0.00050009999) -(0.202020202 0 0.00050009999) -(0.202020202 2.5e-05 0.00050009999) -(0.202020202 7.08119053e-05 0.00050009999) -(0.202020202 0.00015426567 0.00050009999) -(0.202020202 0.0003046635713 0.00050009999) -(0.202020202 0.0005705243934 0.00050009999) -(0.202020202 0.001024837958 0.00050009999) -(0.202020202 0.001758019915 0.00050009999) -(0.202020202 0.002838575912 0.00050009999) -(0.202020202 0.004235474916 0.00050009999) -(0.202020202 0.005764525084 0.00050009999) -(0.202020202 0.007161424088 0.00050009999) -(0.202020202 0.008241980085 0.00050009999) -(0.202020202 0.008975162042 0.00050009999) -(0.202020202 0.009429475607 0.00050009999) -(0.202020202 0.009695336429 0.00050009999) -(0.202020202 0.00984573433 0.00050009999) -(0.202020202 0.009929188095 0.00050009999) -(0.202020202 0.009975 0.00050009999) -(0.202020202 0.01 0.00050009999) -(0.2070707071 0 0.00050009999) -(0.2070707071 2.5e-05 0.00050009999) -(0.2070707071 7.08119053e-05 0.00050009999) -(0.2070707071 0.00015426567 0.00050009999) -(0.2070707071 0.0003046635713 0.00050009999) -(0.2070707071 0.0005705243934 0.00050009999) -(0.2070707071 0.001024837958 0.00050009999) -(0.2070707071 0.001758019915 0.00050009999) -(0.2070707071 0.002838575912 0.00050009999) -(0.2070707071 0.004235474916 0.00050009999) -(0.2070707071 0.005764525084 0.00050009999) -(0.2070707071 0.007161424088 0.00050009999) -(0.2070707071 0.008241980085 0.00050009999) -(0.2070707071 0.008975162042 0.00050009999) -(0.2070707071 0.009429475607 0.00050009999) -(0.2070707071 0.009695336429 0.00050009999) -(0.2070707071 0.00984573433 0.00050009999) -(0.2070707071 0.009929188095 0.00050009999) -(0.2070707071 0.009975 0.00050009999) -(0.2070707071 0.01 0.00050009999) -(0.2121212121 0 0.00050009999) -(0.2121212121 2.5e-05 0.00050009999) -(0.2121212121 7.08119053e-05 0.00050009999) -(0.2121212121 0.00015426567 0.00050009999) -(0.2121212121 0.0003046635713 0.00050009999) -(0.2121212121 0.0005705243934 0.00050009999) -(0.2121212121 0.001024837958 0.00050009999) -(0.2121212121 0.001758019915 0.00050009999) -(0.2121212121 0.002838575912 0.00050009999) -(0.2121212121 0.004235474916 0.00050009999) -(0.2121212121 0.005764525084 0.00050009999) -(0.2121212121 0.007161424088 0.00050009999) -(0.2121212121 0.008241980085 0.00050009999) -(0.2121212121 0.008975162042 0.00050009999) -(0.2121212121 0.009429475607 0.00050009999) -(0.2121212121 0.009695336429 0.00050009999) -(0.2121212121 0.00984573433 0.00050009999) -(0.2121212121 0.009929188095 0.00050009999) -(0.2121212121 0.009975 0.00050009999) -(0.2121212121 0.01 0.00050009999) -(0.2171717172 0 0.00050009999) -(0.2171717172 2.5e-05 0.00050009999) -(0.2171717172 7.08119053e-05 0.00050009999) -(0.2171717172 0.00015426567 0.00050009999) -(0.2171717172 0.0003046635713 0.00050009999) -(0.2171717172 0.0005705243934 0.00050009999) -(0.2171717172 0.001024837958 0.00050009999) -(0.2171717172 0.001758019915 0.00050009999) -(0.2171717172 0.002838575912 0.00050009999) -(0.2171717172 0.004235474916 0.00050009999) -(0.2171717172 0.005764525084 0.00050009999) -(0.2171717172 0.007161424088 0.00050009999) -(0.2171717172 0.008241980085 0.00050009999) -(0.2171717172 0.008975162042 0.00050009999) -(0.2171717172 0.009429475607 0.00050009999) -(0.2171717172 0.009695336429 0.00050009999) -(0.2171717172 0.00984573433 0.00050009999) -(0.2171717172 0.009929188095 0.00050009999) -(0.2171717172 0.009975 0.00050009999) -(0.2171717172 0.01 0.00050009999) -(0.2222222222 0 0.00050009999) -(0.2222222222 2.5e-05 0.00050009999) -(0.2222222222 7.08119053e-05 0.00050009999) -(0.2222222222 0.00015426567 0.00050009999) -(0.2222222222 0.0003046635713 0.00050009999) -(0.2222222222 0.0005705243934 0.00050009999) -(0.2222222222 0.001024837958 0.00050009999) -(0.2222222222 0.001758019915 0.00050009999) -(0.2222222222 0.002838575912 0.00050009999) -(0.2222222222 0.004235474916 0.00050009999) -(0.2222222222 0.005764525084 0.00050009999) -(0.2222222222 0.007161424088 0.00050009999) -(0.2222222222 0.008241980085 0.00050009999) -(0.2222222222 0.008975162042 0.00050009999) -(0.2222222222 0.009429475607 0.00050009999) -(0.2222222222 0.009695336429 0.00050009999) -(0.2222222222 0.00984573433 0.00050009999) -(0.2222222222 0.009929188095 0.00050009999) -(0.2222222222 0.009975 0.00050009999) -(0.2222222222 0.01 0.00050009999) -(0.2272727273 0 0.00050009999) -(0.2272727273 2.5e-05 0.00050009999) -(0.2272727273 7.08119053e-05 0.00050009999) -(0.2272727273 0.00015426567 0.00050009999) -(0.2272727273 0.0003046635713 0.00050009999) -(0.2272727273 0.0005705243934 0.00050009999) -(0.2272727273 0.001024837958 0.00050009999) -(0.2272727273 0.001758019915 0.00050009999) -(0.2272727273 0.002838575912 0.00050009999) -(0.2272727273 0.004235474916 0.00050009999) -(0.2272727273 0.005764525084 0.00050009999) -(0.2272727273 0.007161424088 0.00050009999) -(0.2272727273 0.008241980085 0.00050009999) -(0.2272727273 0.008975162042 0.00050009999) -(0.2272727273 0.009429475607 0.00050009999) -(0.2272727273 0.009695336429 0.00050009999) -(0.2272727273 0.00984573433 0.00050009999) -(0.2272727273 0.009929188095 0.00050009999) -(0.2272727273 0.009975 0.00050009999) -(0.2272727273 0.01 0.00050009999) -(0.2323232323 0 0.00050009999) -(0.2323232323 2.5e-05 0.00050009999) -(0.2323232323 7.08119053e-05 0.00050009999) -(0.2323232323 0.00015426567 0.00050009999) -(0.2323232323 0.0003046635713 0.00050009999) -(0.2323232323 0.0005705243934 0.00050009999) -(0.2323232323 0.001024837958 0.00050009999) -(0.2323232323 0.001758019915 0.00050009999) -(0.2323232323 0.002838575912 0.00050009999) -(0.2323232323 0.004235474916 0.00050009999) -(0.2323232323 0.005764525084 0.00050009999) -(0.2323232323 0.007161424088 0.00050009999) -(0.2323232323 0.008241980085 0.00050009999) -(0.2323232323 0.008975162042 0.00050009999) -(0.2323232323 0.009429475607 0.00050009999) -(0.2323232323 0.009695336429 0.00050009999) -(0.2323232323 0.00984573433 0.00050009999) -(0.2323232323 0.009929188095 0.00050009999) -(0.2323232323 0.009975 0.00050009999) -(0.2323232323 0.01 0.00050009999) -(0.2373737374 0 0.00050009999) -(0.2373737374 2.5e-05 0.00050009999) -(0.2373737374 7.08119053e-05 0.00050009999) -(0.2373737374 0.00015426567 0.00050009999) -(0.2373737374 0.0003046635713 0.00050009999) -(0.2373737374 0.0005705243934 0.00050009999) -(0.2373737374 0.001024837958 0.00050009999) -(0.2373737374 0.001758019915 0.00050009999) -(0.2373737374 0.002838575912 0.00050009999) -(0.2373737374 0.004235474916 0.00050009999) -(0.2373737374 0.005764525084 0.00050009999) -(0.2373737374 0.007161424088 0.00050009999) -(0.2373737374 0.008241980085 0.00050009999) -(0.2373737374 0.008975162042 0.00050009999) -(0.2373737374 0.009429475607 0.00050009999) -(0.2373737374 0.009695336429 0.00050009999) -(0.2373737374 0.00984573433 0.00050009999) -(0.2373737374 0.009929188095 0.00050009999) -(0.2373737374 0.009975 0.00050009999) -(0.2373737374 0.01 0.00050009999) -(0.2424242424 0 0.00050009999) -(0.2424242424 2.5e-05 0.00050009999) -(0.2424242424 7.08119053e-05 0.00050009999) -(0.2424242424 0.00015426567 0.00050009999) -(0.2424242424 0.0003046635713 0.00050009999) -(0.2424242424 0.0005705243934 0.00050009999) -(0.2424242424 0.001024837958 0.00050009999) -(0.2424242424 0.001758019915 0.00050009999) -(0.2424242424 0.002838575912 0.00050009999) -(0.2424242424 0.004235474916 0.00050009999) -(0.2424242424 0.005764525084 0.00050009999) -(0.2424242424 0.007161424088 0.00050009999) -(0.2424242424 0.008241980085 0.00050009999) -(0.2424242424 0.008975162042 0.00050009999) -(0.2424242424 0.009429475607 0.00050009999) -(0.2424242424 0.009695336429 0.00050009999) -(0.2424242424 0.00984573433 0.00050009999) -(0.2424242424 0.009929188095 0.00050009999) -(0.2424242424 0.009975 0.00050009999) -(0.2424242424 0.01 0.00050009999) -(0.2474747475 0 0.00050009999) -(0.2474747475 2.5e-05 0.00050009999) -(0.2474747475 7.08119053e-05 0.00050009999) -(0.2474747475 0.00015426567 0.00050009999) -(0.2474747475 0.0003046635713 0.00050009999) -(0.2474747475 0.0005705243934 0.00050009999) -(0.2474747475 0.001024837958 0.00050009999) -(0.2474747475 0.001758019915 0.00050009999) -(0.2474747475 0.002838575912 0.00050009999) -(0.2474747475 0.004235474916 0.00050009999) -(0.2474747475 0.005764525084 0.00050009999) -(0.2474747475 0.007161424088 0.00050009999) -(0.2474747475 0.008241980085 0.00050009999) -(0.2474747475 0.008975162042 0.00050009999) -(0.2474747475 0.009429475607 0.00050009999) -(0.2474747475 0.009695336429 0.00050009999) -(0.2474747475 0.00984573433 0.00050009999) -(0.2474747475 0.009929188095 0.00050009999) -(0.2474747475 0.009975 0.00050009999) -(0.2474747475 0.01 0.00050009999) -(0.2525252525 0 0.00050009999) -(0.2525252525 2.5e-05 0.00050009999) -(0.2525252525 7.08119053e-05 0.00050009999) -(0.2525252525 0.00015426567 0.00050009999) -(0.2525252525 0.0003046635713 0.00050009999) -(0.2525252525 0.0005705243934 0.00050009999) -(0.2525252525 0.001024837958 0.00050009999) -(0.2525252525 0.001758019915 0.00050009999) -(0.2525252525 0.002838575912 0.00050009999) -(0.2525252525 0.004235474916 0.00050009999) -(0.2525252525 0.005764525084 0.00050009999) -(0.2525252525 0.007161424088 0.00050009999) -(0.2525252525 0.008241980085 0.00050009999) -(0.2525252525 0.008975162042 0.00050009999) -(0.2525252525 0.009429475607 0.00050009999) -(0.2525252525 0.009695336429 0.00050009999) -(0.2525252525 0.00984573433 0.00050009999) -(0.2525252525 0.009929188095 0.00050009999) -(0.2525252525 0.009975 0.00050009999) -(0.2525252525 0.01 0.00050009999) -(0.2575757576 0 0.00050009999) -(0.2575757576 2.5e-05 0.00050009999) -(0.2575757576 7.08119053e-05 0.00050009999) -(0.2575757576 0.00015426567 0.00050009999) -(0.2575757576 0.0003046635713 0.00050009999) -(0.2575757576 0.0005705243934 0.00050009999) -(0.2575757576 0.001024837958 0.00050009999) -(0.2575757576 0.001758019915 0.00050009999) -(0.2575757576 0.002838575912 0.00050009999) -(0.2575757576 0.004235474916 0.00050009999) -(0.2575757576 0.005764525084 0.00050009999) -(0.2575757576 0.007161424088 0.00050009999) -(0.2575757576 0.008241980085 0.00050009999) -(0.2575757576 0.008975162042 0.00050009999) -(0.2575757576 0.009429475607 0.00050009999) -(0.2575757576 0.009695336429 0.00050009999) -(0.2575757576 0.00984573433 0.00050009999) -(0.2575757576 0.009929188095 0.00050009999) -(0.2575757576 0.009975 0.00050009999) -(0.2575757576 0.01 0.00050009999) -(0.2626262626 0 0.00050009999) -(0.2626262626 2.5e-05 0.00050009999) -(0.2626262626 7.08119053e-05 0.00050009999) -(0.2626262626 0.00015426567 0.00050009999) -(0.2626262626 0.0003046635713 0.00050009999) -(0.2626262626 0.0005705243934 0.00050009999) -(0.2626262626 0.001024837958 0.00050009999) -(0.2626262626 0.001758019915 0.00050009999) -(0.2626262626 0.002838575912 0.00050009999) -(0.2626262626 0.004235474916 0.00050009999) -(0.2626262626 0.005764525084 0.00050009999) -(0.2626262626 0.007161424088 0.00050009999) -(0.2626262626 0.008241980085 0.00050009999) -(0.2626262626 0.008975162042 0.00050009999) -(0.2626262626 0.009429475607 0.00050009999) -(0.2626262626 0.009695336429 0.00050009999) -(0.2626262626 0.00984573433 0.00050009999) -(0.2626262626 0.009929188095 0.00050009999) -(0.2626262626 0.009975 0.00050009999) -(0.2626262626 0.01 0.00050009999) -(0.2676767677 0 0.00050009999) -(0.2676767677 2.5e-05 0.00050009999) -(0.2676767677 7.08119053e-05 0.00050009999) -(0.2676767677 0.00015426567 0.00050009999) -(0.2676767677 0.0003046635713 0.00050009999) -(0.2676767677 0.0005705243934 0.00050009999) -(0.2676767677 0.001024837958 0.00050009999) -(0.2676767677 0.001758019915 0.00050009999) -(0.2676767677 0.002838575912 0.00050009999) -(0.2676767677 0.004235474916 0.00050009999) -(0.2676767677 0.005764525084 0.00050009999) -(0.2676767677 0.007161424088 0.00050009999) -(0.2676767677 0.008241980085 0.00050009999) -(0.2676767677 0.008975162042 0.00050009999) -(0.2676767677 0.009429475607 0.00050009999) -(0.2676767677 0.009695336429 0.00050009999) -(0.2676767677 0.00984573433 0.00050009999) -(0.2676767677 0.009929188095 0.00050009999) -(0.2676767677 0.009975 0.00050009999) -(0.2676767677 0.01 0.00050009999) -(0.2727272727 0 0.00050009999) -(0.2727272727 2.5e-05 0.00050009999) -(0.2727272727 7.08119053e-05 0.00050009999) -(0.2727272727 0.00015426567 0.00050009999) -(0.2727272727 0.0003046635713 0.00050009999) -(0.2727272727 0.0005705243934 0.00050009999) -(0.2727272727 0.001024837958 0.00050009999) -(0.2727272727 0.001758019915 0.00050009999) -(0.2727272727 0.002838575912 0.00050009999) -(0.2727272727 0.004235474916 0.00050009999) -(0.2727272727 0.005764525084 0.00050009999) -(0.2727272727 0.007161424088 0.00050009999) -(0.2727272727 0.008241980085 0.00050009999) -(0.2727272727 0.008975162042 0.00050009999) -(0.2727272727 0.009429475607 0.00050009999) -(0.2727272727 0.009695336429 0.00050009999) -(0.2727272727 0.00984573433 0.00050009999) -(0.2727272727 0.009929188095 0.00050009999) -(0.2727272727 0.009975 0.00050009999) -(0.2727272727 0.01 0.00050009999) -(0.2777777778 0 0.00050009999) -(0.2777777778 2.5e-05 0.00050009999) -(0.2777777778 7.08119053e-05 0.00050009999) -(0.2777777778 0.00015426567 0.00050009999) -(0.2777777778 0.0003046635713 0.00050009999) -(0.2777777778 0.0005705243934 0.00050009999) -(0.2777777778 0.001024837958 0.00050009999) -(0.2777777778 0.001758019915 0.00050009999) -(0.2777777778 0.002838575912 0.00050009999) -(0.2777777778 0.004235474916 0.00050009999) -(0.2777777778 0.005764525084 0.00050009999) -(0.2777777778 0.007161424088 0.00050009999) -(0.2777777778 0.008241980085 0.00050009999) -(0.2777777778 0.008975162042 0.00050009999) -(0.2777777778 0.009429475607 0.00050009999) -(0.2777777778 0.009695336429 0.00050009999) -(0.2777777778 0.00984573433 0.00050009999) -(0.2777777778 0.009929188095 0.00050009999) -(0.2777777778 0.009975 0.00050009999) -(0.2777777778 0.01 0.00050009999) -(0.2828282828 0 0.00050009999) -(0.2828282828 2.5e-05 0.00050009999) -(0.2828282828 7.08119053e-05 0.00050009999) -(0.2828282828 0.00015426567 0.00050009999) -(0.2828282828 0.0003046635713 0.00050009999) -(0.2828282828 0.0005705243934 0.00050009999) -(0.2828282828 0.001024837958 0.00050009999) -(0.2828282828 0.001758019915 0.00050009999) -(0.2828282828 0.002838575912 0.00050009999) -(0.2828282828 0.004235474916 0.00050009999) -(0.2828282828 0.005764525084 0.00050009999) -(0.2828282828 0.007161424088 0.00050009999) -(0.2828282828 0.008241980085 0.00050009999) -(0.2828282828 0.008975162042 0.00050009999) -(0.2828282828 0.009429475607 0.00050009999) -(0.2828282828 0.009695336429 0.00050009999) -(0.2828282828 0.00984573433 0.00050009999) -(0.2828282828 0.009929188095 0.00050009999) -(0.2828282828 0.009975 0.00050009999) -(0.2828282828 0.01 0.00050009999) -(0.2878787879 0 0.00050009999) -(0.2878787879 2.5e-05 0.00050009999) -(0.2878787879 7.08119053e-05 0.00050009999) -(0.2878787879 0.00015426567 0.00050009999) -(0.2878787879 0.0003046635713 0.00050009999) -(0.2878787879 0.0005705243934 0.00050009999) -(0.2878787879 0.001024837958 0.00050009999) -(0.2878787879 0.001758019915 0.00050009999) -(0.2878787879 0.002838575912 0.00050009999) -(0.2878787879 0.004235474916 0.00050009999) -(0.2878787879 0.005764525084 0.00050009999) -(0.2878787879 0.007161424088 0.00050009999) -(0.2878787879 0.008241980085 0.00050009999) -(0.2878787879 0.008975162042 0.00050009999) -(0.2878787879 0.009429475607 0.00050009999) -(0.2878787879 0.009695336429 0.00050009999) -(0.2878787879 0.00984573433 0.00050009999) -(0.2878787879 0.009929188095 0.00050009999) -(0.2878787879 0.009975 0.00050009999) -(0.2878787879 0.01 0.00050009999) -(0.2929292929 0 0.00050009999) -(0.2929292929 2.5e-05 0.00050009999) -(0.2929292929 7.08119053e-05 0.00050009999) -(0.2929292929 0.00015426567 0.00050009999) -(0.2929292929 0.0003046635713 0.00050009999) -(0.2929292929 0.0005705243934 0.00050009999) -(0.2929292929 0.001024837958 0.00050009999) -(0.2929292929 0.001758019915 0.00050009999) -(0.2929292929 0.002838575912 0.00050009999) -(0.2929292929 0.004235474916 0.00050009999) -(0.2929292929 0.005764525084 0.00050009999) -(0.2929292929 0.007161424088 0.00050009999) -(0.2929292929 0.008241980085 0.00050009999) -(0.2929292929 0.008975162042 0.00050009999) -(0.2929292929 0.009429475607 0.00050009999) -(0.2929292929 0.009695336429 0.00050009999) -(0.2929292929 0.00984573433 0.00050009999) -(0.2929292929 0.009929188095 0.00050009999) -(0.2929292929 0.009975 0.00050009999) -(0.2929292929 0.01 0.00050009999) -(0.297979798 0 0.00050009999) -(0.297979798 2.5e-05 0.00050009999) -(0.297979798 7.08119053e-05 0.00050009999) -(0.297979798 0.00015426567 0.00050009999) -(0.297979798 0.0003046635713 0.00050009999) -(0.297979798 0.0005705243934 0.00050009999) -(0.297979798 0.001024837958 0.00050009999) -(0.297979798 0.001758019915 0.00050009999) -(0.297979798 0.002838575912 0.00050009999) -(0.297979798 0.004235474916 0.00050009999) -(0.297979798 0.005764525084 0.00050009999) -(0.297979798 0.007161424088 0.00050009999) -(0.297979798 0.008241980085 0.00050009999) -(0.297979798 0.008975162042 0.00050009999) -(0.297979798 0.009429475607 0.00050009999) -(0.297979798 0.009695336429 0.00050009999) -(0.297979798 0.00984573433 0.00050009999) -(0.297979798 0.009929188095 0.00050009999) -(0.297979798 0.009975 0.00050009999) -(0.297979798 0.01 0.00050009999) -(0.303030303 0 0.00050009999) -(0.303030303 2.5e-05 0.00050009999) -(0.303030303 7.08119053e-05 0.00050009999) -(0.303030303 0.00015426567 0.00050009999) -(0.303030303 0.0003046635713 0.00050009999) -(0.303030303 0.0005705243934 0.00050009999) -(0.303030303 0.001024837958 0.00050009999) -(0.303030303 0.001758019915 0.00050009999) -(0.303030303 0.002838575912 0.00050009999) -(0.303030303 0.004235474916 0.00050009999) -(0.303030303 0.005764525084 0.00050009999) -(0.303030303 0.007161424088 0.00050009999) -(0.303030303 0.008241980085 0.00050009999) -(0.303030303 0.008975162042 0.00050009999) -(0.303030303 0.009429475607 0.00050009999) -(0.303030303 0.009695336429 0.00050009999) -(0.303030303 0.00984573433 0.00050009999) -(0.303030303 0.009929188095 0.00050009999) -(0.303030303 0.009975 0.00050009999) -(0.303030303 0.01 0.00050009999) -(0.3080808081 0 0.00050009999) -(0.3080808081 2.5e-05 0.00050009999) -(0.3080808081 7.08119053e-05 0.00050009999) -(0.3080808081 0.00015426567 0.00050009999) -(0.3080808081 0.0003046635713 0.00050009999) -(0.3080808081 0.0005705243934 0.00050009999) -(0.3080808081 0.001024837958 0.00050009999) -(0.3080808081 0.001758019915 0.00050009999) -(0.3080808081 0.002838575912 0.00050009999) -(0.3080808081 0.004235474916 0.00050009999) -(0.3080808081 0.005764525084 0.00050009999) -(0.3080808081 0.007161424088 0.00050009999) -(0.3080808081 0.008241980085 0.00050009999) -(0.3080808081 0.008975162042 0.00050009999) -(0.3080808081 0.009429475607 0.00050009999) -(0.3080808081 0.009695336429 0.00050009999) -(0.3080808081 0.00984573433 0.00050009999) -(0.3080808081 0.009929188095 0.00050009999) -(0.3080808081 0.009975 0.00050009999) -(0.3080808081 0.01 0.00050009999) -(0.3131313131 0 0.00050009999) -(0.3131313131 2.5e-05 0.00050009999) -(0.3131313131 7.08119053e-05 0.00050009999) -(0.3131313131 0.00015426567 0.00050009999) -(0.3131313131 0.0003046635713 0.00050009999) -(0.3131313131 0.0005705243934 0.00050009999) -(0.3131313131 0.001024837958 0.00050009999) -(0.3131313131 0.001758019915 0.00050009999) -(0.3131313131 0.002838575912 0.00050009999) -(0.3131313131 0.004235474916 0.00050009999) -(0.3131313131 0.005764525084 0.00050009999) -(0.3131313131 0.007161424088 0.00050009999) -(0.3131313131 0.008241980085 0.00050009999) -(0.3131313131 0.008975162042 0.00050009999) -(0.3131313131 0.009429475607 0.00050009999) -(0.3131313131 0.009695336429 0.00050009999) -(0.3131313131 0.00984573433 0.00050009999) -(0.3131313131 0.009929188095 0.00050009999) -(0.3131313131 0.009975 0.00050009999) -(0.3131313131 0.01 0.00050009999) -(0.3181818182 0 0.00050009999) -(0.3181818182 2.5e-05 0.00050009999) -(0.3181818182 7.08119053e-05 0.00050009999) -(0.3181818182 0.00015426567 0.00050009999) -(0.3181818182 0.0003046635713 0.00050009999) -(0.3181818182 0.0005705243934 0.00050009999) -(0.3181818182 0.001024837958 0.00050009999) -(0.3181818182 0.001758019915 0.00050009999) -(0.3181818182 0.002838575912 0.00050009999) -(0.3181818182 0.004235474916 0.00050009999) -(0.3181818182 0.005764525084 0.00050009999) -(0.3181818182 0.007161424088 0.00050009999) -(0.3181818182 0.008241980085 0.00050009999) -(0.3181818182 0.008975162042 0.00050009999) -(0.3181818182 0.009429475607 0.00050009999) -(0.3181818182 0.009695336429 0.00050009999) -(0.3181818182 0.00984573433 0.00050009999) -(0.3181818182 0.009929188095 0.00050009999) -(0.3181818182 0.009975 0.00050009999) -(0.3181818182 0.01 0.00050009999) -(0.3232323232 0 0.00050009999) -(0.3232323232 2.5e-05 0.00050009999) -(0.3232323232 7.08119053e-05 0.00050009999) -(0.3232323232 0.00015426567 0.00050009999) -(0.3232323232 0.0003046635713 0.00050009999) -(0.3232323232 0.0005705243934 0.00050009999) -(0.3232323232 0.001024837958 0.00050009999) -(0.3232323232 0.001758019915 0.00050009999) -(0.3232323232 0.002838575912 0.00050009999) -(0.3232323232 0.004235474916 0.00050009999) -(0.3232323232 0.005764525084 0.00050009999) -(0.3232323232 0.007161424088 0.00050009999) -(0.3232323232 0.008241980085 0.00050009999) -(0.3232323232 0.008975162042 0.00050009999) -(0.3232323232 0.009429475607 0.00050009999) -(0.3232323232 0.009695336429 0.00050009999) -(0.3232323232 0.00984573433 0.00050009999) -(0.3232323232 0.009929188095 0.00050009999) -(0.3232323232 0.009975 0.00050009999) -(0.3232323232 0.01 0.00050009999) -(0.3282828283 0 0.00050009999) -(0.3282828283 2.5e-05 0.00050009999) -(0.3282828283 7.08119053e-05 0.00050009999) -(0.3282828283 0.00015426567 0.00050009999) -(0.3282828283 0.0003046635713 0.00050009999) -(0.3282828283 0.0005705243934 0.00050009999) -(0.3282828283 0.001024837958 0.00050009999) -(0.3282828283 0.001758019915 0.00050009999) -(0.3282828283 0.002838575912 0.00050009999) -(0.3282828283 0.004235474916 0.00050009999) -(0.3282828283 0.005764525084 0.00050009999) -(0.3282828283 0.007161424088 0.00050009999) -(0.3282828283 0.008241980085 0.00050009999) -(0.3282828283 0.008975162042 0.00050009999) -(0.3282828283 0.009429475607 0.00050009999) -(0.3282828283 0.009695336429 0.00050009999) -(0.3282828283 0.00984573433 0.00050009999) -(0.3282828283 0.009929188095 0.00050009999) -(0.3282828283 0.009975 0.00050009999) -(0.3282828283 0.01 0.00050009999) -(0.3333333333 0 0.00050009999) -(0.3333333333 2.5e-05 0.00050009999) -(0.3333333333 7.08119053e-05 0.00050009999) -(0.3333333333 0.00015426567 0.00050009999) -(0.3333333333 0.0003046635713 0.00050009999) -(0.3333333333 0.0005705243934 0.00050009999) -(0.3333333333 0.001024837958 0.00050009999) -(0.3333333333 0.001758019915 0.00050009999) -(0.3333333333 0.002838575912 0.00050009999) -(0.3333333333 0.004235474916 0.00050009999) -(0.3333333333 0.005764525084 0.00050009999) -(0.3333333333 0.007161424088 0.00050009999) -(0.3333333333 0.008241980085 0.00050009999) -(0.3333333333 0.008975162042 0.00050009999) -(0.3333333333 0.009429475607 0.00050009999) -(0.3333333333 0.009695336429 0.00050009999) -(0.3333333333 0.00984573433 0.00050009999) -(0.3333333333 0.009929188095 0.00050009999) -(0.3333333333 0.009975 0.00050009999) -(0.3333333333 0.01 0.00050009999) -(0.3383838384 0 0.00050009999) -(0.3383838384 2.5e-05 0.00050009999) -(0.3383838384 7.08119053e-05 0.00050009999) -(0.3383838384 0.00015426567 0.00050009999) -(0.3383838384 0.0003046635713 0.00050009999) -(0.3383838384 0.0005705243934 0.00050009999) -(0.3383838384 0.001024837958 0.00050009999) -(0.3383838384 0.001758019915 0.00050009999) -(0.3383838384 0.002838575912 0.00050009999) -(0.3383838384 0.004235474916 0.00050009999) -(0.3383838384 0.005764525084 0.00050009999) -(0.3383838384 0.007161424088 0.00050009999) -(0.3383838384 0.008241980085 0.00050009999) -(0.3383838384 0.008975162042 0.00050009999) -(0.3383838384 0.009429475607 0.00050009999) -(0.3383838384 0.009695336429 0.00050009999) -(0.3383838384 0.00984573433 0.00050009999) -(0.3383838384 0.009929188095 0.00050009999) -(0.3383838384 0.009975 0.00050009999) -(0.3383838384 0.01 0.00050009999) -(0.3434343434 0 0.00050009999) -(0.3434343434 2.5e-05 0.00050009999) -(0.3434343434 7.08119053e-05 0.00050009999) -(0.3434343434 0.00015426567 0.00050009999) -(0.3434343434 0.0003046635713 0.00050009999) -(0.3434343434 0.0005705243934 0.00050009999) -(0.3434343434 0.001024837958 0.00050009999) -(0.3434343434 0.001758019915 0.00050009999) -(0.3434343434 0.002838575912 0.00050009999) -(0.3434343434 0.004235474916 0.00050009999) -(0.3434343434 0.005764525084 0.00050009999) -(0.3434343434 0.007161424088 0.00050009999) -(0.3434343434 0.008241980085 0.00050009999) -(0.3434343434 0.008975162042 0.00050009999) -(0.3434343434 0.009429475607 0.00050009999) -(0.3434343434 0.009695336429 0.00050009999) -(0.3434343434 0.00984573433 0.00050009999) -(0.3434343434 0.009929188095 0.00050009999) -(0.3434343434 0.009975 0.00050009999) -(0.3434343434 0.01 0.00050009999) -(0.3484848485 0 0.00050009999) -(0.3484848485 2.5e-05 0.00050009999) -(0.3484848485 7.08119053e-05 0.00050009999) -(0.3484848485 0.00015426567 0.00050009999) -(0.3484848485 0.0003046635713 0.00050009999) -(0.3484848485 0.0005705243934 0.00050009999) -(0.3484848485 0.001024837958 0.00050009999) -(0.3484848485 0.001758019915 0.00050009999) -(0.3484848485 0.002838575912 0.00050009999) -(0.3484848485 0.004235474916 0.00050009999) -(0.3484848485 0.005764525084 0.00050009999) -(0.3484848485 0.007161424088 0.00050009999) -(0.3484848485 0.008241980085 0.00050009999) -(0.3484848485 0.008975162042 0.00050009999) -(0.3484848485 0.009429475607 0.00050009999) -(0.3484848485 0.009695336429 0.00050009999) -(0.3484848485 0.00984573433 0.00050009999) -(0.3484848485 0.009929188095 0.00050009999) -(0.3484848485 0.009975 0.00050009999) -(0.3484848485 0.01 0.00050009999) -(0.3535353535 0 0.00050009999) -(0.3535353535 2.5e-05 0.00050009999) -(0.3535353535 7.08119053e-05 0.00050009999) -(0.3535353535 0.00015426567 0.00050009999) -(0.3535353535 0.0003046635713 0.00050009999) -(0.3535353535 0.0005705243934 0.00050009999) -(0.3535353535 0.001024837958 0.00050009999) -(0.3535353535 0.001758019915 0.00050009999) -(0.3535353535 0.002838575912 0.00050009999) -(0.3535353535 0.004235474916 0.00050009999) -(0.3535353535 0.005764525084 0.00050009999) -(0.3535353535 0.007161424088 0.00050009999) -(0.3535353535 0.008241980085 0.00050009999) -(0.3535353535 0.008975162042 0.00050009999) -(0.3535353535 0.009429475607 0.00050009999) -(0.3535353535 0.009695336429 0.00050009999) -(0.3535353535 0.00984573433 0.00050009999) -(0.3535353535 0.009929188095 0.00050009999) -(0.3535353535 0.009975 0.00050009999) -(0.3535353535 0.01 0.00050009999) -(0.3585858586 0 0.00050009999) -(0.3585858586 2.5e-05 0.00050009999) -(0.3585858586 7.08119053e-05 0.00050009999) -(0.3585858586 0.00015426567 0.00050009999) -(0.3585858586 0.0003046635713 0.00050009999) -(0.3585858586 0.0005705243934 0.00050009999) -(0.3585858586 0.001024837958 0.00050009999) -(0.3585858586 0.001758019915 0.00050009999) -(0.3585858586 0.002838575912 0.00050009999) -(0.3585858586 0.004235474916 0.00050009999) -(0.3585858586 0.005764525084 0.00050009999) -(0.3585858586 0.007161424088 0.00050009999) -(0.3585858586 0.008241980085 0.00050009999) -(0.3585858586 0.008975162042 0.00050009999) -(0.3585858586 0.009429475607 0.00050009999) -(0.3585858586 0.009695336429 0.00050009999) -(0.3585858586 0.00984573433 0.00050009999) -(0.3585858586 0.009929188095 0.00050009999) -(0.3585858586 0.009975 0.00050009999) -(0.3585858586 0.01 0.00050009999) -(0.3636363636 0 0.00050009999) -(0.3636363636 2.5e-05 0.00050009999) -(0.3636363636 7.08119053e-05 0.00050009999) -(0.3636363636 0.00015426567 0.00050009999) -(0.3636363636 0.0003046635713 0.00050009999) -(0.3636363636 0.0005705243934 0.00050009999) -(0.3636363636 0.001024837958 0.00050009999) -(0.3636363636 0.001758019915 0.00050009999) -(0.3636363636 0.002838575912 0.00050009999) -(0.3636363636 0.004235474916 0.00050009999) -(0.3636363636 0.005764525084 0.00050009999) -(0.3636363636 0.007161424088 0.00050009999) -(0.3636363636 0.008241980085 0.00050009999) -(0.3636363636 0.008975162042 0.00050009999) -(0.3636363636 0.009429475607 0.00050009999) -(0.3636363636 0.009695336429 0.00050009999) -(0.3636363636 0.00984573433 0.00050009999) -(0.3636363636 0.009929188095 0.00050009999) -(0.3636363636 0.009975 0.00050009999) -(0.3636363636 0.01 0.00050009999) -(0.3686868687 0 0.00050009999) -(0.3686868687 2.5e-05 0.00050009999) -(0.3686868687 7.08119053e-05 0.00050009999) -(0.3686868687 0.00015426567 0.00050009999) -(0.3686868687 0.0003046635713 0.00050009999) -(0.3686868687 0.0005705243934 0.00050009999) -(0.3686868687 0.001024837958 0.00050009999) -(0.3686868687 0.001758019915 0.00050009999) -(0.3686868687 0.002838575912 0.00050009999) -(0.3686868687 0.004235474916 0.00050009999) -(0.3686868687 0.005764525084 0.00050009999) -(0.3686868687 0.007161424088 0.00050009999) -(0.3686868687 0.008241980085 0.00050009999) -(0.3686868687 0.008975162042 0.00050009999) -(0.3686868687 0.009429475607 0.00050009999) -(0.3686868687 0.009695336429 0.00050009999) -(0.3686868687 0.00984573433 0.00050009999) -(0.3686868687 0.009929188095 0.00050009999) -(0.3686868687 0.009975 0.00050009999) -(0.3686868687 0.01 0.00050009999) -(0.3737373737 0 0.00050009999) -(0.3737373737 2.5e-05 0.00050009999) -(0.3737373737 7.08119053e-05 0.00050009999) -(0.3737373737 0.00015426567 0.00050009999) -(0.3737373737 0.0003046635713 0.00050009999) -(0.3737373737 0.0005705243934 0.00050009999) -(0.3737373737 0.001024837958 0.00050009999) -(0.3737373737 0.001758019915 0.00050009999) -(0.3737373737 0.002838575912 0.00050009999) -(0.3737373737 0.004235474916 0.00050009999) -(0.3737373737 0.005764525084 0.00050009999) -(0.3737373737 0.007161424088 0.00050009999) -(0.3737373737 0.008241980085 0.00050009999) -(0.3737373737 0.008975162042 0.00050009999) -(0.3737373737 0.009429475607 0.00050009999) -(0.3737373737 0.009695336429 0.00050009999) -(0.3737373737 0.00984573433 0.00050009999) -(0.3737373737 0.009929188095 0.00050009999) -(0.3737373737 0.009975 0.00050009999) -(0.3737373737 0.01 0.00050009999) -(0.3787878788 0 0.00050009999) -(0.3787878788 2.5e-05 0.00050009999) -(0.3787878788 7.08119053e-05 0.00050009999) -(0.3787878788 0.00015426567 0.00050009999) -(0.3787878788 0.0003046635713 0.00050009999) -(0.3787878788 0.0005705243934 0.00050009999) -(0.3787878788 0.001024837958 0.00050009999) -(0.3787878788 0.001758019915 0.00050009999) -(0.3787878788 0.002838575912 0.00050009999) -(0.3787878788 0.004235474916 0.00050009999) -(0.3787878788 0.005764525084 0.00050009999) -(0.3787878788 0.007161424088 0.00050009999) -(0.3787878788 0.008241980085 0.00050009999) -(0.3787878788 0.008975162042 0.00050009999) -(0.3787878788 0.009429475607 0.00050009999) -(0.3787878788 0.009695336429 0.00050009999) -(0.3787878788 0.00984573433 0.00050009999) -(0.3787878788 0.009929188095 0.00050009999) -(0.3787878788 0.009975 0.00050009999) -(0.3787878788 0.01 0.00050009999) -(0.3838383838 0 0.00050009999) -(0.3838383838 2.5e-05 0.00050009999) -(0.3838383838 7.08119053e-05 0.00050009999) -(0.3838383838 0.00015426567 0.00050009999) -(0.3838383838 0.0003046635713 0.00050009999) -(0.3838383838 0.0005705243934 0.00050009999) -(0.3838383838 0.001024837958 0.00050009999) -(0.3838383838 0.001758019915 0.00050009999) -(0.3838383838 0.002838575912 0.00050009999) -(0.3838383838 0.004235474916 0.00050009999) -(0.3838383838 0.005764525084 0.00050009999) -(0.3838383838 0.007161424088 0.00050009999) -(0.3838383838 0.008241980085 0.00050009999) -(0.3838383838 0.008975162042 0.00050009999) -(0.3838383838 0.009429475607 0.00050009999) -(0.3838383838 0.009695336429 0.00050009999) -(0.3838383838 0.00984573433 0.00050009999) -(0.3838383838 0.009929188095 0.00050009999) -(0.3838383838 0.009975 0.00050009999) -(0.3838383838 0.01 0.00050009999) -(0.3888888889 0 0.00050009999) -(0.3888888889 2.5e-05 0.00050009999) -(0.3888888889 7.08119053e-05 0.00050009999) -(0.3888888889 0.00015426567 0.00050009999) -(0.3888888889 0.0003046635713 0.00050009999) -(0.3888888889 0.0005705243934 0.00050009999) -(0.3888888889 0.001024837958 0.00050009999) -(0.3888888889 0.001758019915 0.00050009999) -(0.3888888889 0.002838575912 0.00050009999) -(0.3888888889 0.004235474916 0.00050009999) -(0.3888888889 0.005764525084 0.00050009999) -(0.3888888889 0.007161424088 0.00050009999) -(0.3888888889 0.008241980085 0.00050009999) -(0.3888888889 0.008975162042 0.00050009999) -(0.3888888889 0.009429475607 0.00050009999) -(0.3888888889 0.009695336429 0.00050009999) -(0.3888888889 0.00984573433 0.00050009999) -(0.3888888889 0.009929188095 0.00050009999) -(0.3888888889 0.009975 0.00050009999) -(0.3888888889 0.01 0.00050009999) -(0.3939393939 0 0.00050009999) -(0.3939393939 2.5e-05 0.00050009999) -(0.3939393939 7.08119053e-05 0.00050009999) -(0.3939393939 0.00015426567 0.00050009999) -(0.3939393939 0.0003046635713 0.00050009999) -(0.3939393939 0.0005705243934 0.00050009999) -(0.3939393939 0.001024837958 0.00050009999) -(0.3939393939 0.001758019915 0.00050009999) -(0.3939393939 0.002838575912 0.00050009999) -(0.3939393939 0.004235474916 0.00050009999) -(0.3939393939 0.005764525084 0.00050009999) -(0.3939393939 0.007161424088 0.00050009999) -(0.3939393939 0.008241980085 0.00050009999) -(0.3939393939 0.008975162042 0.00050009999) -(0.3939393939 0.009429475607 0.00050009999) -(0.3939393939 0.009695336429 0.00050009999) -(0.3939393939 0.00984573433 0.00050009999) -(0.3939393939 0.009929188095 0.00050009999) -(0.3939393939 0.009975 0.00050009999) -(0.3939393939 0.01 0.00050009999) -(0.398989899 0 0.00050009999) -(0.398989899 2.5e-05 0.00050009999) -(0.398989899 7.08119053e-05 0.00050009999) -(0.398989899 0.00015426567 0.00050009999) -(0.398989899 0.0003046635713 0.00050009999) -(0.398989899 0.0005705243934 0.00050009999) -(0.398989899 0.001024837958 0.00050009999) -(0.398989899 0.001758019915 0.00050009999) -(0.398989899 0.002838575912 0.00050009999) -(0.398989899 0.004235474916 0.00050009999) -(0.398989899 0.005764525084 0.00050009999) -(0.398989899 0.007161424088 0.00050009999) -(0.398989899 0.008241980085 0.00050009999) -(0.398989899 0.008975162042 0.00050009999) -(0.398989899 0.009429475607 0.00050009999) -(0.398989899 0.009695336429 0.00050009999) -(0.398989899 0.00984573433 0.00050009999) -(0.398989899 0.009929188095 0.00050009999) -(0.398989899 0.009975 0.00050009999) -(0.398989899 0.01 0.00050009999) -(0.404040404 0 0.00050009999) -(0.404040404 2.5e-05 0.00050009999) -(0.404040404 7.08119053e-05 0.00050009999) -(0.404040404 0.00015426567 0.00050009999) -(0.404040404 0.0003046635713 0.00050009999) -(0.404040404 0.0005705243934 0.00050009999) -(0.404040404 0.001024837958 0.00050009999) -(0.404040404 0.001758019915 0.00050009999) -(0.404040404 0.002838575912 0.00050009999) -(0.404040404 0.004235474916 0.00050009999) -(0.404040404 0.005764525084 0.00050009999) -(0.404040404 0.007161424088 0.00050009999) -(0.404040404 0.008241980085 0.00050009999) -(0.404040404 0.008975162042 0.00050009999) -(0.404040404 0.009429475607 0.00050009999) -(0.404040404 0.009695336429 0.00050009999) -(0.404040404 0.00984573433 0.00050009999) -(0.404040404 0.009929188095 0.00050009999) -(0.404040404 0.009975 0.00050009999) -(0.404040404 0.01 0.00050009999) -(0.4090909091 0 0.00050009999) -(0.4090909091 2.5e-05 0.00050009999) -(0.4090909091 7.08119053e-05 0.00050009999) -(0.4090909091 0.00015426567 0.00050009999) -(0.4090909091 0.0003046635713 0.00050009999) -(0.4090909091 0.0005705243934 0.00050009999) -(0.4090909091 0.001024837958 0.00050009999) -(0.4090909091 0.001758019915 0.00050009999) -(0.4090909091 0.002838575912 0.00050009999) -(0.4090909091 0.004235474916 0.00050009999) -(0.4090909091 0.005764525084 0.00050009999) -(0.4090909091 0.007161424088 0.00050009999) -(0.4090909091 0.008241980085 0.00050009999) -(0.4090909091 0.008975162042 0.00050009999) -(0.4090909091 0.009429475607 0.00050009999) -(0.4090909091 0.009695336429 0.00050009999) -(0.4090909091 0.00984573433 0.00050009999) -(0.4090909091 0.009929188095 0.00050009999) -(0.4090909091 0.009975 0.00050009999) -(0.4090909091 0.01 0.00050009999) -(0.4141414141 0 0.00050009999) -(0.4141414141 2.5e-05 0.00050009999) -(0.4141414141 7.08119053e-05 0.00050009999) -(0.4141414141 0.00015426567 0.00050009999) -(0.4141414141 0.0003046635713 0.00050009999) -(0.4141414141 0.0005705243934 0.00050009999) -(0.4141414141 0.001024837958 0.00050009999) -(0.4141414141 0.001758019915 0.00050009999) -(0.4141414141 0.002838575912 0.00050009999) -(0.4141414141 0.004235474916 0.00050009999) -(0.4141414141 0.005764525084 0.00050009999) -(0.4141414141 0.007161424088 0.00050009999) -(0.4141414141 0.008241980085 0.00050009999) -(0.4141414141 0.008975162042 0.00050009999) -(0.4141414141 0.009429475607 0.00050009999) -(0.4141414141 0.009695336429 0.00050009999) -(0.4141414141 0.00984573433 0.00050009999) -(0.4141414141 0.009929188095 0.00050009999) -(0.4141414141 0.009975 0.00050009999) -(0.4141414141 0.01 0.00050009999) -(0.4191919192 0 0.00050009999) -(0.4191919192 2.5e-05 0.00050009999) -(0.4191919192 7.08119053e-05 0.00050009999) -(0.4191919192 0.00015426567 0.00050009999) -(0.4191919192 0.0003046635713 0.00050009999) -(0.4191919192 0.0005705243934 0.00050009999) -(0.4191919192 0.001024837958 0.00050009999) -(0.4191919192 0.001758019915 0.00050009999) -(0.4191919192 0.002838575912 0.00050009999) -(0.4191919192 0.004235474916 0.00050009999) -(0.4191919192 0.005764525084 0.00050009999) -(0.4191919192 0.007161424088 0.00050009999) -(0.4191919192 0.008241980085 0.00050009999) -(0.4191919192 0.008975162042 0.00050009999) -(0.4191919192 0.009429475607 0.00050009999) -(0.4191919192 0.009695336429 0.00050009999) -(0.4191919192 0.00984573433 0.00050009999) -(0.4191919192 0.009929188095 0.00050009999) -(0.4191919192 0.009975 0.00050009999) -(0.4191919192 0.01 0.00050009999) -(0.4242424242 0 0.00050009999) -(0.4242424242 2.5e-05 0.00050009999) -(0.4242424242 7.08119053e-05 0.00050009999) -(0.4242424242 0.00015426567 0.00050009999) -(0.4242424242 0.0003046635713 0.00050009999) -(0.4242424242 0.0005705243934 0.00050009999) -(0.4242424242 0.001024837958 0.00050009999) -(0.4242424242 0.001758019915 0.00050009999) -(0.4242424242 0.002838575912 0.00050009999) -(0.4242424242 0.004235474916 0.00050009999) -(0.4242424242 0.005764525084 0.00050009999) -(0.4242424242 0.007161424088 0.00050009999) -(0.4242424242 0.008241980085 0.00050009999) -(0.4242424242 0.008975162042 0.00050009999) -(0.4242424242 0.009429475607 0.00050009999) -(0.4242424242 0.009695336429 0.00050009999) -(0.4242424242 0.00984573433 0.00050009999) -(0.4242424242 0.009929188095 0.00050009999) -(0.4242424242 0.009975 0.00050009999) -(0.4242424242 0.01 0.00050009999) -(0.4292929293 0 0.00050009999) -(0.4292929293 2.5e-05 0.00050009999) -(0.4292929293 7.08119053e-05 0.00050009999) -(0.4292929293 0.00015426567 0.00050009999) -(0.4292929293 0.0003046635713 0.00050009999) -(0.4292929293 0.0005705243934 0.00050009999) -(0.4292929293 0.001024837958 0.00050009999) -(0.4292929293 0.001758019915 0.00050009999) -(0.4292929293 0.002838575912 0.00050009999) -(0.4292929293 0.004235474916 0.00050009999) -(0.4292929293 0.005764525084 0.00050009999) -(0.4292929293 0.007161424088 0.00050009999) -(0.4292929293 0.008241980085 0.00050009999) -(0.4292929293 0.008975162042 0.00050009999) -(0.4292929293 0.009429475607 0.00050009999) -(0.4292929293 0.009695336429 0.00050009999) -(0.4292929293 0.00984573433 0.00050009999) -(0.4292929293 0.009929188095 0.00050009999) -(0.4292929293 0.009975 0.00050009999) -(0.4292929293 0.01 0.00050009999) -(0.4343434343 0 0.00050009999) -(0.4343434343 2.5e-05 0.00050009999) -(0.4343434343 7.08119053e-05 0.00050009999) -(0.4343434343 0.00015426567 0.00050009999) -(0.4343434343 0.0003046635713 0.00050009999) -(0.4343434343 0.0005705243934 0.00050009999) -(0.4343434343 0.001024837958 0.00050009999) -(0.4343434343 0.001758019915 0.00050009999) -(0.4343434343 0.002838575912 0.00050009999) -(0.4343434343 0.004235474916 0.00050009999) -(0.4343434343 0.005764525084 0.00050009999) -(0.4343434343 0.007161424088 0.00050009999) -(0.4343434343 0.008241980085 0.00050009999) -(0.4343434343 0.008975162042 0.00050009999) -(0.4343434343 0.009429475607 0.00050009999) -(0.4343434343 0.009695336429 0.00050009999) -(0.4343434343 0.00984573433 0.00050009999) -(0.4343434343 0.009929188095 0.00050009999) -(0.4343434343 0.009975 0.00050009999) -(0.4343434343 0.01 0.00050009999) -(0.4393939394 0 0.00050009999) -(0.4393939394 2.5e-05 0.00050009999) -(0.4393939394 7.08119053e-05 0.00050009999) -(0.4393939394 0.00015426567 0.00050009999) -(0.4393939394 0.0003046635713 0.00050009999) -(0.4393939394 0.0005705243934 0.00050009999) -(0.4393939394 0.001024837958 0.00050009999) -(0.4393939394 0.001758019915 0.00050009999) -(0.4393939394 0.002838575912 0.00050009999) -(0.4393939394 0.004235474916 0.00050009999) -(0.4393939394 0.005764525084 0.00050009999) -(0.4393939394 0.007161424088 0.00050009999) -(0.4393939394 0.008241980085 0.00050009999) -(0.4393939394 0.008975162042 0.00050009999) -(0.4393939394 0.009429475607 0.00050009999) -(0.4393939394 0.009695336429 0.00050009999) -(0.4393939394 0.00984573433 0.00050009999) -(0.4393939394 0.009929188095 0.00050009999) -(0.4393939394 0.009975 0.00050009999) -(0.4393939394 0.01 0.00050009999) -(0.4444444444 0 0.00050009999) -(0.4444444444 2.5e-05 0.00050009999) -(0.4444444444 7.08119053e-05 0.00050009999) -(0.4444444444 0.00015426567 0.00050009999) -(0.4444444444 0.0003046635713 0.00050009999) -(0.4444444444 0.0005705243934 0.00050009999) -(0.4444444444 0.001024837958 0.00050009999) -(0.4444444444 0.001758019915 0.00050009999) -(0.4444444444 0.002838575912 0.00050009999) -(0.4444444444 0.004235474916 0.00050009999) -(0.4444444444 0.005764525084 0.00050009999) -(0.4444444444 0.007161424088 0.00050009999) -(0.4444444444 0.008241980085 0.00050009999) -(0.4444444444 0.008975162042 0.00050009999) -(0.4444444444 0.009429475607 0.00050009999) -(0.4444444444 0.009695336429 0.00050009999) -(0.4444444444 0.00984573433 0.00050009999) -(0.4444444444 0.009929188095 0.00050009999) -(0.4444444444 0.009975 0.00050009999) -(0.4444444444 0.01 0.00050009999) -(0.4494949495 0 0.00050009999) -(0.4494949495 2.5e-05 0.00050009999) -(0.4494949495 7.08119053e-05 0.00050009999) -(0.4494949495 0.00015426567 0.00050009999) -(0.4494949495 0.0003046635713 0.00050009999) -(0.4494949495 0.0005705243934 0.00050009999) -(0.4494949495 0.001024837958 0.00050009999) -(0.4494949495 0.001758019915 0.00050009999) -(0.4494949495 0.002838575912 0.00050009999) -(0.4494949495 0.004235474916 0.00050009999) -(0.4494949495 0.005764525084 0.00050009999) -(0.4494949495 0.007161424088 0.00050009999) -(0.4494949495 0.008241980085 0.00050009999) -(0.4494949495 0.008975162042 0.00050009999) -(0.4494949495 0.009429475607 0.00050009999) -(0.4494949495 0.009695336429 0.00050009999) -(0.4494949495 0.00984573433 0.00050009999) -(0.4494949495 0.009929188095 0.00050009999) -(0.4494949495 0.009975 0.00050009999) -(0.4494949495 0.01 0.00050009999) -(0.4545454545 0 0.00050009999) -(0.4545454545 2.5e-05 0.00050009999) -(0.4545454545 7.08119053e-05 0.00050009999) -(0.4545454545 0.00015426567 0.00050009999) -(0.4545454545 0.0003046635713 0.00050009999) -(0.4545454545 0.0005705243934 0.00050009999) -(0.4545454545 0.001024837958 0.00050009999) -(0.4545454545 0.001758019915 0.00050009999) -(0.4545454545 0.002838575912 0.00050009999) -(0.4545454545 0.004235474916 0.00050009999) -(0.4545454545 0.005764525084 0.00050009999) -(0.4545454545 0.007161424088 0.00050009999) -(0.4545454545 0.008241980085 0.00050009999) -(0.4545454545 0.008975162042 0.00050009999) -(0.4545454545 0.009429475607 0.00050009999) -(0.4545454545 0.009695336429 0.00050009999) -(0.4545454545 0.00984573433 0.00050009999) -(0.4545454545 0.009929188095 0.00050009999) -(0.4545454545 0.009975 0.00050009999) -(0.4545454545 0.01 0.00050009999) -(0.4595959596 0 0.00050009999) -(0.4595959596 2.5e-05 0.00050009999) -(0.4595959596 7.08119053e-05 0.00050009999) -(0.4595959596 0.00015426567 0.00050009999) -(0.4595959596 0.0003046635713 0.00050009999) -(0.4595959596 0.0005705243934 0.00050009999) -(0.4595959596 0.001024837958 0.00050009999) -(0.4595959596 0.001758019915 0.00050009999) -(0.4595959596 0.002838575912 0.00050009999) -(0.4595959596 0.004235474916 0.00050009999) -(0.4595959596 0.005764525084 0.00050009999) -(0.4595959596 0.007161424088 0.00050009999) -(0.4595959596 0.008241980085 0.00050009999) -(0.4595959596 0.008975162042 0.00050009999) -(0.4595959596 0.009429475607 0.00050009999) -(0.4595959596 0.009695336429 0.00050009999) -(0.4595959596 0.00984573433 0.00050009999) -(0.4595959596 0.009929188095 0.00050009999) -(0.4595959596 0.009975 0.00050009999) -(0.4595959596 0.01 0.00050009999) -(0.4646464646 0 0.00050009999) -(0.4646464646 2.5e-05 0.00050009999) -(0.4646464646 7.08119053e-05 0.00050009999) -(0.4646464646 0.00015426567 0.00050009999) -(0.4646464646 0.0003046635713 0.00050009999) -(0.4646464646 0.0005705243934 0.00050009999) -(0.4646464646 0.001024837958 0.00050009999) -(0.4646464646 0.001758019915 0.00050009999) -(0.4646464646 0.002838575912 0.00050009999) -(0.4646464646 0.004235474916 0.00050009999) -(0.4646464646 0.005764525084 0.00050009999) -(0.4646464646 0.007161424088 0.00050009999) -(0.4646464646 0.008241980085 0.00050009999) -(0.4646464646 0.008975162042 0.00050009999) -(0.4646464646 0.009429475607 0.00050009999) -(0.4646464646 0.009695336429 0.00050009999) -(0.4646464646 0.00984573433 0.00050009999) -(0.4646464646 0.009929188095 0.00050009999) -(0.4646464646 0.009975 0.00050009999) -(0.4646464646 0.01 0.00050009999) -(0.4696969697 0 0.00050009999) -(0.4696969697 2.5e-05 0.00050009999) -(0.4696969697 7.08119053e-05 0.00050009999) -(0.4696969697 0.00015426567 0.00050009999) -(0.4696969697 0.0003046635713 0.00050009999) -(0.4696969697 0.0005705243934 0.00050009999) -(0.4696969697 0.001024837958 0.00050009999) -(0.4696969697 0.001758019915 0.00050009999) -(0.4696969697 0.002838575912 0.00050009999) -(0.4696969697 0.004235474916 0.00050009999) -(0.4696969697 0.005764525084 0.00050009999) -(0.4696969697 0.007161424088 0.00050009999) -(0.4696969697 0.008241980085 0.00050009999) -(0.4696969697 0.008975162042 0.00050009999) -(0.4696969697 0.009429475607 0.00050009999) -(0.4696969697 0.009695336429 0.00050009999) -(0.4696969697 0.00984573433 0.00050009999) -(0.4696969697 0.009929188095 0.00050009999) -(0.4696969697 0.009975 0.00050009999) -(0.4696969697 0.01 0.00050009999) -(0.4747474747 0 0.00050009999) -(0.4747474747 2.5e-05 0.00050009999) -(0.4747474747 7.08119053e-05 0.00050009999) -(0.4747474747 0.00015426567 0.00050009999) -(0.4747474747 0.0003046635713 0.00050009999) -(0.4747474747 0.0005705243934 0.00050009999) -(0.4747474747 0.001024837958 0.00050009999) -(0.4747474747 0.001758019915 0.00050009999) -(0.4747474747 0.002838575912 0.00050009999) -(0.4747474747 0.004235474916 0.00050009999) -(0.4747474747 0.005764525084 0.00050009999) -(0.4747474747 0.007161424088 0.00050009999) -(0.4747474747 0.008241980085 0.00050009999) -(0.4747474747 0.008975162042 0.00050009999) -(0.4747474747 0.009429475607 0.00050009999) -(0.4747474747 0.009695336429 0.00050009999) -(0.4747474747 0.00984573433 0.00050009999) -(0.4747474747 0.009929188095 0.00050009999) -(0.4747474747 0.009975 0.00050009999) -(0.4747474747 0.01 0.00050009999) -(0.4797979798 0 0.00050009999) -(0.4797979798 2.5e-05 0.00050009999) -(0.4797979798 7.08119053e-05 0.00050009999) -(0.4797979798 0.00015426567 0.00050009999) -(0.4797979798 0.0003046635713 0.00050009999) -(0.4797979798 0.0005705243934 0.00050009999) -(0.4797979798 0.001024837958 0.00050009999) -(0.4797979798 0.001758019915 0.00050009999) -(0.4797979798 0.002838575912 0.00050009999) -(0.4797979798 0.004235474916 0.00050009999) -(0.4797979798 0.005764525084 0.00050009999) -(0.4797979798 0.007161424088 0.00050009999) -(0.4797979798 0.008241980085 0.00050009999) -(0.4797979798 0.008975162042 0.00050009999) -(0.4797979798 0.009429475607 0.00050009999) -(0.4797979798 0.009695336429 0.00050009999) -(0.4797979798 0.00984573433 0.00050009999) -(0.4797979798 0.009929188095 0.00050009999) -(0.4797979798 0.009975 0.00050009999) -(0.4797979798 0.01 0.00050009999) -(0.4848484848 0 0.00050009999) -(0.4848484848 2.5e-05 0.00050009999) -(0.4848484848 7.08119053e-05 0.00050009999) -(0.4848484848 0.00015426567 0.00050009999) -(0.4848484848 0.0003046635713 0.00050009999) -(0.4848484848 0.0005705243934 0.00050009999) -(0.4848484848 0.001024837958 0.00050009999) -(0.4848484848 0.001758019915 0.00050009999) -(0.4848484848 0.002838575912 0.00050009999) -(0.4848484848 0.004235474916 0.00050009999) -(0.4848484848 0.005764525084 0.00050009999) -(0.4848484848 0.007161424088 0.00050009999) -(0.4848484848 0.008241980085 0.00050009999) -(0.4848484848 0.008975162042 0.00050009999) -(0.4848484848 0.009429475607 0.00050009999) -(0.4848484848 0.009695336429 0.00050009999) -(0.4848484848 0.00984573433 0.00050009999) -(0.4848484848 0.009929188095 0.00050009999) -(0.4848484848 0.009975 0.00050009999) -(0.4848484848 0.01 0.00050009999) -(0.4898989899 0 0.00050009999) -(0.4898989899 2.5e-05 0.00050009999) -(0.4898989899 7.08119053e-05 0.00050009999) -(0.4898989899 0.00015426567 0.00050009999) -(0.4898989899 0.0003046635713 0.00050009999) -(0.4898989899 0.0005705243934 0.00050009999) -(0.4898989899 0.001024837958 0.00050009999) -(0.4898989899 0.001758019915 0.00050009999) -(0.4898989899 0.002838575912 0.00050009999) -(0.4898989899 0.004235474916 0.00050009999) -(0.4898989899 0.005764525084 0.00050009999) -(0.4898989899 0.007161424088 0.00050009999) -(0.4898989899 0.008241980085 0.00050009999) -(0.4898989899 0.008975162042 0.00050009999) -(0.4898989899 0.009429475607 0.00050009999) -(0.4898989899 0.009695336429 0.00050009999) -(0.4898989899 0.00984573433 0.00050009999) -(0.4898989899 0.009929188095 0.00050009999) -(0.4898989899 0.009975 0.00050009999) -(0.4898989899 0.01 0.00050009999) -(0.4949494949 0 0.00050009999) -(0.4949494949 2.5e-05 0.00050009999) -(0.4949494949 7.08119053e-05 0.00050009999) -(0.4949494949 0.00015426567 0.00050009999) -(0.4949494949 0.0003046635713 0.00050009999) -(0.4949494949 0.0005705243934 0.00050009999) -(0.4949494949 0.001024837958 0.00050009999) -(0.4949494949 0.001758019915 0.00050009999) -(0.4949494949 0.002838575912 0.00050009999) -(0.4949494949 0.004235474916 0.00050009999) -(0.4949494949 0.005764525084 0.00050009999) -(0.4949494949 0.007161424088 0.00050009999) -(0.4949494949 0.008241980085 0.00050009999) -(0.4949494949 0.008975162042 0.00050009999) -(0.4949494949 0.009429475607 0.00050009999) -(0.4949494949 0.009695336429 0.00050009999) -(0.4949494949 0.00984573433 0.00050009999) -(0.4949494949 0.009929188095 0.00050009999) -(0.4949494949 0.009975 0.00050009999) -(0.4949494949 0.01 0.00050009999) -(0.5 0 0.00050009999) -(0.5 2.5e-05 0.00050009999) -(0.5 7.08119053e-05 0.00050009999) -(0.5 0.00015426567 0.00050009999) -(0.5 0.0003046635713 0.00050009999) -(0.5 0.0005705243934 0.00050009999) -(0.5 0.001024837958 0.00050009999) -(0.5 0.001758019915 0.00050009999) -(0.5 0.002838575912 0.00050009999) -(0.5 0.004235474916 0.00050009999) -(0.5 0.005764525084 0.00050009999) -(0.5 0.007161424088 0.00050009999) -(0.5 0.008241980085 0.00050009999) -(0.5 0.008975162042 0.00050009999) -(0.5 0.009429475607 0.00050009999) -(0.5 0.009695336429 0.00050009999) -(0.5 0.00984573433 0.00050009999) -(0.5 0.009929188095 0.00050009999) -(0.5 0.009975 0.00050009999) -(0.5 0.01 0.00050009999) -(0 0 -0.00050009999) -(0.005050505051 0 -0.00050009999) -(0 2.5e-05 -0.00050009999) -(0.005050505051 2.5e-05 -0.00050009999) -(0 7.08119053e-05 -0.00050009999) -(0.005050505051 7.08119053e-05 -0.00050009999) -(0 0.00015426567 -0.00050009999) -(0.005050505051 0.00015426567 -0.00050009999) -(0 0.0003046635713 -0.00050009999) -(0.005050505051 0.0003046635713 -0.00050009999) -(0 0.0005705243934 -0.00050009999) -(0.005050505051 0.0005705243934 -0.00050009999) -(0 0.001024837958 -0.00050009999) -(0.005050505051 0.001024837958 -0.00050009999) -(0 0.001758019915 -0.00050009999) -(0.005050505051 0.001758019915 -0.00050009999) -(0 0.002838575912 -0.00050009999) -(0.005050505051 0.002838575912 -0.00050009999) -(0 0.004235474916 -0.00050009999) -(0.005050505051 0.004235474916 -0.00050009999) -(0 0.005764525084 -0.00050009999) -(0.005050505051 0.005764525084 -0.00050009999) -(0 0.007161424088 -0.00050009999) -(0.005050505051 0.007161424088 -0.00050009999) -(0 0.008241980085 -0.00050009999) -(0.005050505051 0.008241980085 -0.00050009999) -(0 0.008975162042 -0.00050009999) -(0.005050505051 0.008975162042 -0.00050009999) -(0 0.009429475607 -0.00050009999) -(0.005050505051 0.009429475607 -0.00050009999) -(0 0.009695336429 -0.00050009999) -(0.005050505051 0.009695336429 -0.00050009999) -(0 0.00984573433 -0.00050009999) -(0.005050505051 0.00984573433 -0.00050009999) -(0 0.009929188095 -0.00050009999) -(0.005050505051 0.009929188095 -0.00050009999) -(0 0.009975 -0.00050009999) -(0.005050505051 0.009975 -0.00050009999) -(0 0.01 -0.00050009999) -(0.005050505051 0.01 -0.00050009999) -(0.0101010101 0 -0.00050009999) -(0.0101010101 2.5e-05 -0.00050009999) -(0.0101010101 7.08119053e-05 -0.00050009999) -(0.0101010101 0.00015426567 -0.00050009999) -(0.0101010101 0.0003046635713 -0.00050009999) -(0.0101010101 0.0005705243934 -0.00050009999) -(0.0101010101 0.001024837958 -0.00050009999) -(0.0101010101 0.001758019915 -0.00050009999) -(0.0101010101 0.002838575912 -0.00050009999) -(0.0101010101 0.004235474916 -0.00050009999) -(0.0101010101 0.005764525084 -0.00050009999) -(0.0101010101 0.007161424088 -0.00050009999) -(0.0101010101 0.008241980085 -0.00050009999) -(0.0101010101 0.008975162042 -0.00050009999) -(0.0101010101 0.009429475607 -0.00050009999) -(0.0101010101 0.009695336429 -0.00050009999) -(0.0101010101 0.00984573433 -0.00050009999) -(0.0101010101 0.009929188095 -0.00050009999) -(0.0101010101 0.009975 -0.00050009999) -(0.0101010101 0.01 -0.00050009999) -(0.01515151515 0 -0.00050009999) -(0.01515151515 2.5e-05 -0.00050009999) -(0.01515151515 7.08119053e-05 -0.00050009999) -(0.01515151515 0.00015426567 -0.00050009999) -(0.01515151515 0.0003046635713 -0.00050009999) -(0.01515151515 0.0005705243934 -0.00050009999) -(0.01515151515 0.001024837958 -0.00050009999) -(0.01515151515 0.001758019915 -0.00050009999) -(0.01515151515 0.002838575912 -0.00050009999) -(0.01515151515 0.004235474916 -0.00050009999) -(0.01515151515 0.005764525084 -0.00050009999) -(0.01515151515 0.007161424088 -0.00050009999) -(0.01515151515 0.008241980085 -0.00050009999) -(0.01515151515 0.008975162042 -0.00050009999) -(0.01515151515 0.009429475607 -0.00050009999) -(0.01515151515 0.009695336429 -0.00050009999) -(0.01515151515 0.00984573433 -0.00050009999) -(0.01515151515 0.009929188095 -0.00050009999) -(0.01515151515 0.009975 -0.00050009999) -(0.01515151515 0.01 -0.00050009999) -(0.0202020202 0 -0.00050009999) -(0.0202020202 2.5e-05 -0.00050009999) -(0.0202020202 7.08119053e-05 -0.00050009999) -(0.0202020202 0.00015426567 -0.00050009999) -(0.0202020202 0.0003046635713 -0.00050009999) -(0.0202020202 0.0005705243934 -0.00050009999) -(0.0202020202 0.001024837958 -0.00050009999) -(0.0202020202 0.001758019915 -0.00050009999) -(0.0202020202 0.002838575912 -0.00050009999) -(0.0202020202 0.004235474916 -0.00050009999) -(0.0202020202 0.005764525084 -0.00050009999) -(0.0202020202 0.007161424088 -0.00050009999) -(0.0202020202 0.008241980085 -0.00050009999) -(0.0202020202 0.008975162042 -0.00050009999) -(0.0202020202 0.009429475607 -0.00050009999) -(0.0202020202 0.009695336429 -0.00050009999) -(0.0202020202 0.00984573433 -0.00050009999) -(0.0202020202 0.009929188095 -0.00050009999) -(0.0202020202 0.009975 -0.00050009999) -(0.0202020202 0.01 -0.00050009999) -(0.02525252525 0 -0.00050009999) -(0.02525252525 2.5e-05 -0.00050009999) -(0.02525252525 7.08119053e-05 -0.00050009999) -(0.02525252525 0.00015426567 -0.00050009999) -(0.02525252525 0.0003046635713 -0.00050009999) -(0.02525252525 0.0005705243934 -0.00050009999) -(0.02525252525 0.001024837958 -0.00050009999) -(0.02525252525 0.001758019915 -0.00050009999) -(0.02525252525 0.002838575912 -0.00050009999) -(0.02525252525 0.004235474916 -0.00050009999) -(0.02525252525 0.005764525084 -0.00050009999) -(0.02525252525 0.007161424088 -0.00050009999) -(0.02525252525 0.008241980085 -0.00050009999) -(0.02525252525 0.008975162042 -0.00050009999) -(0.02525252525 0.009429475607 -0.00050009999) -(0.02525252525 0.009695336429 -0.00050009999) -(0.02525252525 0.00984573433 -0.00050009999) -(0.02525252525 0.009929188095 -0.00050009999) -(0.02525252525 0.009975 -0.00050009999) -(0.02525252525 0.01 -0.00050009999) -(0.0303030303 0 -0.00050009999) -(0.0303030303 2.5e-05 -0.00050009999) -(0.0303030303 7.08119053e-05 -0.00050009999) -(0.0303030303 0.00015426567 -0.00050009999) -(0.0303030303 0.0003046635713 -0.00050009999) -(0.0303030303 0.0005705243934 -0.00050009999) -(0.0303030303 0.001024837958 -0.00050009999) -(0.0303030303 0.001758019915 -0.00050009999) -(0.0303030303 0.002838575912 -0.00050009999) -(0.0303030303 0.004235474916 -0.00050009999) -(0.0303030303 0.005764525084 -0.00050009999) -(0.0303030303 0.007161424088 -0.00050009999) -(0.0303030303 0.008241980085 -0.00050009999) -(0.0303030303 0.008975162042 -0.00050009999) -(0.0303030303 0.009429475607 -0.00050009999) -(0.0303030303 0.009695336429 -0.00050009999) -(0.0303030303 0.00984573433 -0.00050009999) -(0.0303030303 0.009929188095 -0.00050009999) -(0.0303030303 0.009975 -0.00050009999) -(0.0303030303 0.01 -0.00050009999) -(0.03535353535 0 -0.00050009999) -(0.03535353535 2.5e-05 -0.00050009999) -(0.03535353535 7.08119053e-05 -0.00050009999) -(0.03535353535 0.00015426567 -0.00050009999) -(0.03535353535 0.0003046635713 -0.00050009999) -(0.03535353535 0.0005705243934 -0.00050009999) -(0.03535353535 0.001024837958 -0.00050009999) -(0.03535353535 0.001758019915 -0.00050009999) -(0.03535353535 0.002838575912 -0.00050009999) -(0.03535353535 0.004235474916 -0.00050009999) -(0.03535353535 0.005764525084 -0.00050009999) -(0.03535353535 0.007161424088 -0.00050009999) -(0.03535353535 0.008241980085 -0.00050009999) -(0.03535353535 0.008975162042 -0.00050009999) -(0.03535353535 0.009429475607 -0.00050009999) -(0.03535353535 0.009695336429 -0.00050009999) -(0.03535353535 0.00984573433 -0.00050009999) -(0.03535353535 0.009929188095 -0.00050009999) -(0.03535353535 0.009975 -0.00050009999) -(0.03535353535 0.01 -0.00050009999) -(0.0404040404 0 -0.00050009999) -(0.0404040404 2.5e-05 -0.00050009999) -(0.0404040404 7.08119053e-05 -0.00050009999) -(0.0404040404 0.00015426567 -0.00050009999) -(0.0404040404 0.0003046635713 -0.00050009999) -(0.0404040404 0.0005705243934 -0.00050009999) -(0.0404040404 0.001024837958 -0.00050009999) -(0.0404040404 0.001758019915 -0.00050009999) -(0.0404040404 0.002838575912 -0.00050009999) -(0.0404040404 0.004235474916 -0.00050009999) -(0.0404040404 0.005764525084 -0.00050009999) -(0.0404040404 0.007161424088 -0.00050009999) -(0.0404040404 0.008241980085 -0.00050009999) -(0.0404040404 0.008975162042 -0.00050009999) -(0.0404040404 0.009429475607 -0.00050009999) -(0.0404040404 0.009695336429 -0.00050009999) -(0.0404040404 0.00984573433 -0.00050009999) -(0.0404040404 0.009929188095 -0.00050009999) -(0.0404040404 0.009975 -0.00050009999) -(0.0404040404 0.01 -0.00050009999) -(0.04545454545 0 -0.00050009999) -(0.04545454545 2.5e-05 -0.00050009999) -(0.04545454545 7.08119053e-05 -0.00050009999) -(0.04545454545 0.00015426567 -0.00050009999) -(0.04545454545 0.0003046635713 -0.00050009999) -(0.04545454545 0.0005705243934 -0.00050009999) -(0.04545454545 0.001024837958 -0.00050009999) -(0.04545454545 0.001758019915 -0.00050009999) -(0.04545454545 0.002838575912 -0.00050009999) -(0.04545454545 0.004235474916 -0.00050009999) -(0.04545454545 0.005764525084 -0.00050009999) -(0.04545454545 0.007161424088 -0.00050009999) -(0.04545454545 0.008241980085 -0.00050009999) -(0.04545454545 0.008975162042 -0.00050009999) -(0.04545454545 0.009429475607 -0.00050009999) -(0.04545454545 0.009695336429 -0.00050009999) -(0.04545454545 0.00984573433 -0.00050009999) -(0.04545454545 0.009929188095 -0.00050009999) -(0.04545454545 0.009975 -0.00050009999) -(0.04545454545 0.01 -0.00050009999) -(0.05050505051 0 -0.00050009999) -(0.05050505051 2.5e-05 -0.00050009999) -(0.05050505051 7.08119053e-05 -0.00050009999) -(0.05050505051 0.00015426567 -0.00050009999) -(0.05050505051 0.0003046635713 -0.00050009999) -(0.05050505051 0.0005705243934 -0.00050009999) -(0.05050505051 0.001024837958 -0.00050009999) -(0.05050505051 0.001758019915 -0.00050009999) -(0.05050505051 0.002838575912 -0.00050009999) -(0.05050505051 0.004235474916 -0.00050009999) -(0.05050505051 0.005764525084 -0.00050009999) -(0.05050505051 0.007161424088 -0.00050009999) -(0.05050505051 0.008241980085 -0.00050009999) -(0.05050505051 0.008975162042 -0.00050009999) -(0.05050505051 0.009429475607 -0.00050009999) -(0.05050505051 0.009695336429 -0.00050009999) -(0.05050505051 0.00984573433 -0.00050009999) -(0.05050505051 0.009929188095 -0.00050009999) -(0.05050505051 0.009975 -0.00050009999) -(0.05050505051 0.01 -0.00050009999) -(0.05555555556 0 -0.00050009999) -(0.05555555556 2.5e-05 -0.00050009999) -(0.05555555556 7.08119053e-05 -0.00050009999) -(0.05555555556 0.00015426567 -0.00050009999) -(0.05555555556 0.0003046635713 -0.00050009999) -(0.05555555556 0.0005705243934 -0.00050009999) -(0.05555555556 0.001024837958 -0.00050009999) -(0.05555555556 0.001758019915 -0.00050009999) -(0.05555555556 0.002838575912 -0.00050009999) -(0.05555555556 0.004235474916 -0.00050009999) -(0.05555555556 0.005764525084 -0.00050009999) -(0.05555555556 0.007161424088 -0.00050009999) -(0.05555555556 0.008241980085 -0.00050009999) -(0.05555555556 0.008975162042 -0.00050009999) -(0.05555555556 0.009429475607 -0.00050009999) -(0.05555555556 0.009695336429 -0.00050009999) -(0.05555555556 0.00984573433 -0.00050009999) -(0.05555555556 0.009929188095 -0.00050009999) -(0.05555555556 0.009975 -0.00050009999) -(0.05555555556 0.01 -0.00050009999) -(0.06060606061 0 -0.00050009999) -(0.06060606061 2.5e-05 -0.00050009999) -(0.06060606061 7.08119053e-05 -0.00050009999) -(0.06060606061 0.00015426567 -0.00050009999) -(0.06060606061 0.0003046635713 -0.00050009999) -(0.06060606061 0.0005705243934 -0.00050009999) -(0.06060606061 0.001024837958 -0.00050009999) -(0.06060606061 0.001758019915 -0.00050009999) -(0.06060606061 0.002838575912 -0.00050009999) -(0.06060606061 0.004235474916 -0.00050009999) -(0.06060606061 0.005764525084 -0.00050009999) -(0.06060606061 0.007161424088 -0.00050009999) -(0.06060606061 0.008241980085 -0.00050009999) -(0.06060606061 0.008975162042 -0.00050009999) -(0.06060606061 0.009429475607 -0.00050009999) -(0.06060606061 0.009695336429 -0.00050009999) -(0.06060606061 0.00984573433 -0.00050009999) -(0.06060606061 0.009929188095 -0.00050009999) -(0.06060606061 0.009975 -0.00050009999) -(0.06060606061 0.01 -0.00050009999) -(0.06565656566 0 -0.00050009999) -(0.06565656566 2.5e-05 -0.00050009999) -(0.06565656566 7.08119053e-05 -0.00050009999) -(0.06565656566 0.00015426567 -0.00050009999) -(0.06565656566 0.0003046635713 -0.00050009999) -(0.06565656566 0.0005705243934 -0.00050009999) -(0.06565656566 0.001024837958 -0.00050009999) -(0.06565656566 0.001758019915 -0.00050009999) -(0.06565656566 0.002838575912 -0.00050009999) -(0.06565656566 0.004235474916 -0.00050009999) -(0.06565656566 0.005764525084 -0.00050009999) -(0.06565656566 0.007161424088 -0.00050009999) -(0.06565656566 0.008241980085 -0.00050009999) -(0.06565656566 0.008975162042 -0.00050009999) -(0.06565656566 0.009429475607 -0.00050009999) -(0.06565656566 0.009695336429 -0.00050009999) -(0.06565656566 0.00984573433 -0.00050009999) -(0.06565656566 0.009929188095 -0.00050009999) -(0.06565656566 0.009975 -0.00050009999) -(0.06565656566 0.01 -0.00050009999) -(0.07070707071 0 -0.00050009999) -(0.07070707071 2.5e-05 -0.00050009999) -(0.07070707071 7.08119053e-05 -0.00050009999) -(0.07070707071 0.00015426567 -0.00050009999) -(0.07070707071 0.0003046635713 -0.00050009999) -(0.07070707071 0.0005705243934 -0.00050009999) -(0.07070707071 0.001024837958 -0.00050009999) -(0.07070707071 0.001758019915 -0.00050009999) -(0.07070707071 0.002838575912 -0.00050009999) -(0.07070707071 0.004235474916 -0.00050009999) -(0.07070707071 0.005764525084 -0.00050009999) -(0.07070707071 0.007161424088 -0.00050009999) -(0.07070707071 0.008241980085 -0.00050009999) -(0.07070707071 0.008975162042 -0.00050009999) -(0.07070707071 0.009429475607 -0.00050009999) -(0.07070707071 0.009695336429 -0.00050009999) -(0.07070707071 0.00984573433 -0.00050009999) -(0.07070707071 0.009929188095 -0.00050009999) -(0.07070707071 0.009975 -0.00050009999) -(0.07070707071 0.01 -0.00050009999) -(0.07575757576 0 -0.00050009999) -(0.07575757576 2.5e-05 -0.00050009999) -(0.07575757576 7.08119053e-05 -0.00050009999) -(0.07575757576 0.00015426567 -0.00050009999) -(0.07575757576 0.0003046635713 -0.00050009999) -(0.07575757576 0.0005705243934 -0.00050009999) -(0.07575757576 0.001024837958 -0.00050009999) -(0.07575757576 0.001758019915 -0.00050009999) -(0.07575757576 0.002838575912 -0.00050009999) -(0.07575757576 0.004235474916 -0.00050009999) -(0.07575757576 0.005764525084 -0.00050009999) -(0.07575757576 0.007161424088 -0.00050009999) -(0.07575757576 0.008241980085 -0.00050009999) -(0.07575757576 0.008975162042 -0.00050009999) -(0.07575757576 0.009429475607 -0.00050009999) -(0.07575757576 0.009695336429 -0.00050009999) -(0.07575757576 0.00984573433 -0.00050009999) -(0.07575757576 0.009929188095 -0.00050009999) -(0.07575757576 0.009975 -0.00050009999) -(0.07575757576 0.01 -0.00050009999) -(0.08080808081 0 -0.00050009999) -(0.08080808081 2.5e-05 -0.00050009999) -(0.08080808081 7.08119053e-05 -0.00050009999) -(0.08080808081 0.00015426567 -0.00050009999) -(0.08080808081 0.0003046635713 -0.00050009999) -(0.08080808081 0.0005705243934 -0.00050009999) -(0.08080808081 0.001024837958 -0.00050009999) -(0.08080808081 0.001758019915 -0.00050009999) -(0.08080808081 0.002838575912 -0.00050009999) -(0.08080808081 0.004235474916 -0.00050009999) -(0.08080808081 0.005764525084 -0.00050009999) -(0.08080808081 0.007161424088 -0.00050009999) -(0.08080808081 0.008241980085 -0.00050009999) -(0.08080808081 0.008975162042 -0.00050009999) -(0.08080808081 0.009429475607 -0.00050009999) -(0.08080808081 0.009695336429 -0.00050009999) -(0.08080808081 0.00984573433 -0.00050009999) -(0.08080808081 0.009929188095 -0.00050009999) -(0.08080808081 0.009975 -0.00050009999) -(0.08080808081 0.01 -0.00050009999) -(0.08585858586 0 -0.00050009999) -(0.08585858586 2.5e-05 -0.00050009999) -(0.08585858586 7.08119053e-05 -0.00050009999) -(0.08585858586 0.00015426567 -0.00050009999) -(0.08585858586 0.0003046635713 -0.00050009999) -(0.08585858586 0.0005705243934 -0.00050009999) -(0.08585858586 0.001024837958 -0.00050009999) -(0.08585858586 0.001758019915 -0.00050009999) -(0.08585858586 0.002838575912 -0.00050009999) -(0.08585858586 0.004235474916 -0.00050009999) -(0.08585858586 0.005764525084 -0.00050009999) -(0.08585858586 0.007161424088 -0.00050009999) -(0.08585858586 0.008241980085 -0.00050009999) -(0.08585858586 0.008975162042 -0.00050009999) -(0.08585858586 0.009429475607 -0.00050009999) -(0.08585858586 0.009695336429 -0.00050009999) -(0.08585858586 0.00984573433 -0.00050009999) -(0.08585858586 0.009929188095 -0.00050009999) -(0.08585858586 0.009975 -0.00050009999) -(0.08585858586 0.01 -0.00050009999) -(0.09090909091 0 -0.00050009999) -(0.09090909091 2.5e-05 -0.00050009999) -(0.09090909091 7.08119053e-05 -0.00050009999) -(0.09090909091 0.00015426567 -0.00050009999) -(0.09090909091 0.0003046635713 -0.00050009999) -(0.09090909091 0.0005705243934 -0.00050009999) -(0.09090909091 0.001024837958 -0.00050009999) -(0.09090909091 0.001758019915 -0.00050009999) -(0.09090909091 0.002838575912 -0.00050009999) -(0.09090909091 0.004235474916 -0.00050009999) -(0.09090909091 0.005764525084 -0.00050009999) -(0.09090909091 0.007161424088 -0.00050009999) -(0.09090909091 0.008241980085 -0.00050009999) -(0.09090909091 0.008975162042 -0.00050009999) -(0.09090909091 0.009429475607 -0.00050009999) -(0.09090909091 0.009695336429 -0.00050009999) -(0.09090909091 0.00984573433 -0.00050009999) -(0.09090909091 0.009929188095 -0.00050009999) -(0.09090909091 0.009975 -0.00050009999) -(0.09090909091 0.01 -0.00050009999) -(0.09595959596 0 -0.00050009999) -(0.09595959596 2.5e-05 -0.00050009999) -(0.09595959596 7.08119053e-05 -0.00050009999) -(0.09595959596 0.00015426567 -0.00050009999) -(0.09595959596 0.0003046635713 -0.00050009999) -(0.09595959596 0.0005705243934 -0.00050009999) -(0.09595959596 0.001024837958 -0.00050009999) -(0.09595959596 0.001758019915 -0.00050009999) -(0.09595959596 0.002838575912 -0.00050009999) -(0.09595959596 0.004235474916 -0.00050009999) -(0.09595959596 0.005764525084 -0.00050009999) -(0.09595959596 0.007161424088 -0.00050009999) -(0.09595959596 0.008241980085 -0.00050009999) -(0.09595959596 0.008975162042 -0.00050009999) -(0.09595959596 0.009429475607 -0.00050009999) -(0.09595959596 0.009695336429 -0.00050009999) -(0.09595959596 0.00984573433 -0.00050009999) -(0.09595959596 0.009929188095 -0.00050009999) -(0.09595959596 0.009975 -0.00050009999) -(0.09595959596 0.01 -0.00050009999) -(0.101010101 0 -0.00050009999) -(0.101010101 2.5e-05 -0.00050009999) -(0.101010101 7.08119053e-05 -0.00050009999) -(0.101010101 0.00015426567 -0.00050009999) -(0.101010101 0.0003046635713 -0.00050009999) -(0.101010101 0.0005705243934 -0.00050009999) -(0.101010101 0.001024837958 -0.00050009999) -(0.101010101 0.001758019915 -0.00050009999) -(0.101010101 0.002838575912 -0.00050009999) -(0.101010101 0.004235474916 -0.00050009999) -(0.101010101 0.005764525084 -0.00050009999) -(0.101010101 0.007161424088 -0.00050009999) -(0.101010101 0.008241980085 -0.00050009999) -(0.101010101 0.008975162042 -0.00050009999) -(0.101010101 0.009429475607 -0.00050009999) -(0.101010101 0.009695336429 -0.00050009999) -(0.101010101 0.00984573433 -0.00050009999) -(0.101010101 0.009929188095 -0.00050009999) -(0.101010101 0.009975 -0.00050009999) -(0.101010101 0.01 -0.00050009999) -(0.1060606061 0 -0.00050009999) -(0.1060606061 2.5e-05 -0.00050009999) -(0.1060606061 7.08119053e-05 -0.00050009999) -(0.1060606061 0.00015426567 -0.00050009999) -(0.1060606061 0.0003046635713 -0.00050009999) -(0.1060606061 0.0005705243934 -0.00050009999) -(0.1060606061 0.001024837958 -0.00050009999) -(0.1060606061 0.001758019915 -0.00050009999) -(0.1060606061 0.002838575912 -0.00050009999) -(0.1060606061 0.004235474916 -0.00050009999) -(0.1060606061 0.005764525084 -0.00050009999) -(0.1060606061 0.007161424088 -0.00050009999) -(0.1060606061 0.008241980085 -0.00050009999) -(0.1060606061 0.008975162042 -0.00050009999) -(0.1060606061 0.009429475607 -0.00050009999) -(0.1060606061 0.009695336429 -0.00050009999) -(0.1060606061 0.00984573433 -0.00050009999) -(0.1060606061 0.009929188095 -0.00050009999) -(0.1060606061 0.009975 -0.00050009999) -(0.1060606061 0.01 -0.00050009999) -(0.1111111111 0 -0.00050009999) -(0.1111111111 2.5e-05 -0.00050009999) -(0.1111111111 7.08119053e-05 -0.00050009999) -(0.1111111111 0.00015426567 -0.00050009999) -(0.1111111111 0.0003046635713 -0.00050009999) -(0.1111111111 0.0005705243934 -0.00050009999) -(0.1111111111 0.001024837958 -0.00050009999) -(0.1111111111 0.001758019915 -0.00050009999) -(0.1111111111 0.002838575912 -0.00050009999) -(0.1111111111 0.004235474916 -0.00050009999) -(0.1111111111 0.005764525084 -0.00050009999) -(0.1111111111 0.007161424088 -0.00050009999) -(0.1111111111 0.008241980085 -0.00050009999) -(0.1111111111 0.008975162042 -0.00050009999) -(0.1111111111 0.009429475607 -0.00050009999) -(0.1111111111 0.009695336429 -0.00050009999) -(0.1111111111 0.00984573433 -0.00050009999) -(0.1111111111 0.009929188095 -0.00050009999) -(0.1111111111 0.009975 -0.00050009999) -(0.1111111111 0.01 -0.00050009999) -(0.1161616162 0 -0.00050009999) -(0.1161616162 2.5e-05 -0.00050009999) -(0.1161616162 7.08119053e-05 -0.00050009999) -(0.1161616162 0.00015426567 -0.00050009999) -(0.1161616162 0.0003046635713 -0.00050009999) -(0.1161616162 0.0005705243934 -0.00050009999) -(0.1161616162 0.001024837958 -0.00050009999) -(0.1161616162 0.001758019915 -0.00050009999) -(0.1161616162 0.002838575912 -0.00050009999) -(0.1161616162 0.004235474916 -0.00050009999) -(0.1161616162 0.005764525084 -0.00050009999) -(0.1161616162 0.007161424088 -0.00050009999) -(0.1161616162 0.008241980085 -0.00050009999) -(0.1161616162 0.008975162042 -0.00050009999) -(0.1161616162 0.009429475607 -0.00050009999) -(0.1161616162 0.009695336429 -0.00050009999) -(0.1161616162 0.00984573433 -0.00050009999) -(0.1161616162 0.009929188095 -0.00050009999) -(0.1161616162 0.009975 -0.00050009999) -(0.1161616162 0.01 -0.00050009999) -(0.1212121212 0 -0.00050009999) -(0.1212121212 2.5e-05 -0.00050009999) -(0.1212121212 7.08119053e-05 -0.00050009999) -(0.1212121212 0.00015426567 -0.00050009999) -(0.1212121212 0.0003046635713 -0.00050009999) -(0.1212121212 0.0005705243934 -0.00050009999) -(0.1212121212 0.001024837958 -0.00050009999) -(0.1212121212 0.001758019915 -0.00050009999) -(0.1212121212 0.002838575912 -0.00050009999) -(0.1212121212 0.004235474916 -0.00050009999) -(0.1212121212 0.005764525084 -0.00050009999) -(0.1212121212 0.007161424088 -0.00050009999) -(0.1212121212 0.008241980085 -0.00050009999) -(0.1212121212 0.008975162042 -0.00050009999) -(0.1212121212 0.009429475607 -0.00050009999) -(0.1212121212 0.009695336429 -0.00050009999) -(0.1212121212 0.00984573433 -0.00050009999) -(0.1212121212 0.009929188095 -0.00050009999) -(0.1212121212 0.009975 -0.00050009999) -(0.1212121212 0.01 -0.00050009999) -(0.1262626263 0 -0.00050009999) -(0.1262626263 2.5e-05 -0.00050009999) -(0.1262626263 7.08119053e-05 -0.00050009999) -(0.1262626263 0.00015426567 -0.00050009999) -(0.1262626263 0.0003046635713 -0.00050009999) -(0.1262626263 0.0005705243934 -0.00050009999) -(0.1262626263 0.001024837958 -0.00050009999) -(0.1262626263 0.001758019915 -0.00050009999) -(0.1262626263 0.002838575912 -0.00050009999) -(0.1262626263 0.004235474916 -0.00050009999) -(0.1262626263 0.005764525084 -0.00050009999) -(0.1262626263 0.007161424088 -0.00050009999) -(0.1262626263 0.008241980085 -0.00050009999) -(0.1262626263 0.008975162042 -0.00050009999) -(0.1262626263 0.009429475607 -0.00050009999) -(0.1262626263 0.009695336429 -0.00050009999) -(0.1262626263 0.00984573433 -0.00050009999) -(0.1262626263 0.009929188095 -0.00050009999) -(0.1262626263 0.009975 -0.00050009999) -(0.1262626263 0.01 -0.00050009999) -(0.1313131313 0 -0.00050009999) -(0.1313131313 2.5e-05 -0.00050009999) -(0.1313131313 7.08119053e-05 -0.00050009999) -(0.1313131313 0.00015426567 -0.00050009999) -(0.1313131313 0.0003046635713 -0.00050009999) -(0.1313131313 0.0005705243934 -0.00050009999) -(0.1313131313 0.001024837958 -0.00050009999) -(0.1313131313 0.001758019915 -0.00050009999) -(0.1313131313 0.002838575912 -0.00050009999) -(0.1313131313 0.004235474916 -0.00050009999) -(0.1313131313 0.005764525084 -0.00050009999) -(0.1313131313 0.007161424088 -0.00050009999) -(0.1313131313 0.008241980085 -0.00050009999) -(0.1313131313 0.008975162042 -0.00050009999) -(0.1313131313 0.009429475607 -0.00050009999) -(0.1313131313 0.009695336429 -0.00050009999) -(0.1313131313 0.00984573433 -0.00050009999) -(0.1313131313 0.009929188095 -0.00050009999) -(0.1313131313 0.009975 -0.00050009999) -(0.1313131313 0.01 -0.00050009999) -(0.1363636364 0 -0.00050009999) -(0.1363636364 2.5e-05 -0.00050009999) -(0.1363636364 7.08119053e-05 -0.00050009999) -(0.1363636364 0.00015426567 -0.00050009999) -(0.1363636364 0.0003046635713 -0.00050009999) -(0.1363636364 0.0005705243934 -0.00050009999) -(0.1363636364 0.001024837958 -0.00050009999) -(0.1363636364 0.001758019915 -0.00050009999) -(0.1363636364 0.002838575912 -0.00050009999) -(0.1363636364 0.004235474916 -0.00050009999) -(0.1363636364 0.005764525084 -0.00050009999) -(0.1363636364 0.007161424088 -0.00050009999) -(0.1363636364 0.008241980085 -0.00050009999) -(0.1363636364 0.008975162042 -0.00050009999) -(0.1363636364 0.009429475607 -0.00050009999) -(0.1363636364 0.009695336429 -0.00050009999) -(0.1363636364 0.00984573433 -0.00050009999) -(0.1363636364 0.009929188095 -0.00050009999) -(0.1363636364 0.009975 -0.00050009999) -(0.1363636364 0.01 -0.00050009999) -(0.1414141414 0 -0.00050009999) -(0.1414141414 2.5e-05 -0.00050009999) -(0.1414141414 7.08119053e-05 -0.00050009999) -(0.1414141414 0.00015426567 -0.00050009999) -(0.1414141414 0.0003046635713 -0.00050009999) -(0.1414141414 0.0005705243934 -0.00050009999) -(0.1414141414 0.001024837958 -0.00050009999) -(0.1414141414 0.001758019915 -0.00050009999) -(0.1414141414 0.002838575912 -0.00050009999) -(0.1414141414 0.004235474916 -0.00050009999) -(0.1414141414 0.005764525084 -0.00050009999) -(0.1414141414 0.007161424088 -0.00050009999) -(0.1414141414 0.008241980085 -0.00050009999) -(0.1414141414 0.008975162042 -0.00050009999) -(0.1414141414 0.009429475607 -0.00050009999) -(0.1414141414 0.009695336429 -0.00050009999) -(0.1414141414 0.00984573433 -0.00050009999) -(0.1414141414 0.009929188095 -0.00050009999) -(0.1414141414 0.009975 -0.00050009999) -(0.1414141414 0.01 -0.00050009999) -(0.1464646465 0 -0.00050009999) -(0.1464646465 2.5e-05 -0.00050009999) -(0.1464646465 7.08119053e-05 -0.00050009999) -(0.1464646465 0.00015426567 -0.00050009999) -(0.1464646465 0.0003046635713 -0.00050009999) -(0.1464646465 0.0005705243934 -0.00050009999) -(0.1464646465 0.001024837958 -0.00050009999) -(0.1464646465 0.001758019915 -0.00050009999) -(0.1464646465 0.002838575912 -0.00050009999) -(0.1464646465 0.004235474916 -0.00050009999) -(0.1464646465 0.005764525084 -0.00050009999) -(0.1464646465 0.007161424088 -0.00050009999) -(0.1464646465 0.008241980085 -0.00050009999) -(0.1464646465 0.008975162042 -0.00050009999) -(0.1464646465 0.009429475607 -0.00050009999) -(0.1464646465 0.009695336429 -0.00050009999) -(0.1464646465 0.00984573433 -0.00050009999) -(0.1464646465 0.009929188095 -0.00050009999) -(0.1464646465 0.009975 -0.00050009999) -(0.1464646465 0.01 -0.00050009999) -(0.1515151515 0 -0.00050009999) -(0.1515151515 2.5e-05 -0.00050009999) -(0.1515151515 7.08119053e-05 -0.00050009999) -(0.1515151515 0.00015426567 -0.00050009999) -(0.1515151515 0.0003046635713 -0.00050009999) -(0.1515151515 0.0005705243934 -0.00050009999) -(0.1515151515 0.001024837958 -0.00050009999) -(0.1515151515 0.001758019915 -0.00050009999) -(0.1515151515 0.002838575912 -0.00050009999) -(0.1515151515 0.004235474916 -0.00050009999) -(0.1515151515 0.005764525084 -0.00050009999) -(0.1515151515 0.007161424088 -0.00050009999) -(0.1515151515 0.008241980085 -0.00050009999) -(0.1515151515 0.008975162042 -0.00050009999) -(0.1515151515 0.009429475607 -0.00050009999) -(0.1515151515 0.009695336429 -0.00050009999) -(0.1515151515 0.00984573433 -0.00050009999) -(0.1515151515 0.009929188095 -0.00050009999) -(0.1515151515 0.009975 -0.00050009999) -(0.1515151515 0.01 -0.00050009999) -(0.1565656566 0 -0.00050009999) -(0.1565656566 2.5e-05 -0.00050009999) -(0.1565656566 7.08119053e-05 -0.00050009999) -(0.1565656566 0.00015426567 -0.00050009999) -(0.1565656566 0.0003046635713 -0.00050009999) -(0.1565656566 0.0005705243934 -0.00050009999) -(0.1565656566 0.001024837958 -0.00050009999) -(0.1565656566 0.001758019915 -0.00050009999) -(0.1565656566 0.002838575912 -0.00050009999) -(0.1565656566 0.004235474916 -0.00050009999) -(0.1565656566 0.005764525084 -0.00050009999) -(0.1565656566 0.007161424088 -0.00050009999) -(0.1565656566 0.008241980085 -0.00050009999) -(0.1565656566 0.008975162042 -0.00050009999) -(0.1565656566 0.009429475607 -0.00050009999) -(0.1565656566 0.009695336429 -0.00050009999) -(0.1565656566 0.00984573433 -0.00050009999) -(0.1565656566 0.009929188095 -0.00050009999) -(0.1565656566 0.009975 -0.00050009999) -(0.1565656566 0.01 -0.00050009999) -(0.1616161616 0 -0.00050009999) -(0.1616161616 2.5e-05 -0.00050009999) -(0.1616161616 7.08119053e-05 -0.00050009999) -(0.1616161616 0.00015426567 -0.00050009999) -(0.1616161616 0.0003046635713 -0.00050009999) -(0.1616161616 0.0005705243934 -0.00050009999) -(0.1616161616 0.001024837958 -0.00050009999) -(0.1616161616 0.001758019915 -0.00050009999) -(0.1616161616 0.002838575912 -0.00050009999) -(0.1616161616 0.004235474916 -0.00050009999) -(0.1616161616 0.005764525084 -0.00050009999) -(0.1616161616 0.007161424088 -0.00050009999) -(0.1616161616 0.008241980085 -0.00050009999) -(0.1616161616 0.008975162042 -0.00050009999) -(0.1616161616 0.009429475607 -0.00050009999) -(0.1616161616 0.009695336429 -0.00050009999) -(0.1616161616 0.00984573433 -0.00050009999) -(0.1616161616 0.009929188095 -0.00050009999) -(0.1616161616 0.009975 -0.00050009999) -(0.1616161616 0.01 -0.00050009999) -(0.1666666667 0 -0.00050009999) -(0.1666666667 2.5e-05 -0.00050009999) -(0.1666666667 7.08119053e-05 -0.00050009999) -(0.1666666667 0.00015426567 -0.00050009999) -(0.1666666667 0.0003046635713 -0.00050009999) -(0.1666666667 0.0005705243934 -0.00050009999) -(0.1666666667 0.001024837958 -0.00050009999) -(0.1666666667 0.001758019915 -0.00050009999) -(0.1666666667 0.002838575912 -0.00050009999) -(0.1666666667 0.004235474916 -0.00050009999) -(0.1666666667 0.005764525084 -0.00050009999) -(0.1666666667 0.007161424088 -0.00050009999) -(0.1666666667 0.008241980085 -0.00050009999) -(0.1666666667 0.008975162042 -0.00050009999) -(0.1666666667 0.009429475607 -0.00050009999) -(0.1666666667 0.009695336429 -0.00050009999) -(0.1666666667 0.00984573433 -0.00050009999) -(0.1666666667 0.009929188095 -0.00050009999) -(0.1666666667 0.009975 -0.00050009999) -(0.1666666667 0.01 -0.00050009999) -(0.1717171717 0 -0.00050009999) -(0.1717171717 2.5e-05 -0.00050009999) -(0.1717171717 7.08119053e-05 -0.00050009999) -(0.1717171717 0.00015426567 -0.00050009999) -(0.1717171717 0.0003046635713 -0.00050009999) -(0.1717171717 0.0005705243934 -0.00050009999) -(0.1717171717 0.001024837958 -0.00050009999) -(0.1717171717 0.001758019915 -0.00050009999) -(0.1717171717 0.002838575912 -0.00050009999) -(0.1717171717 0.004235474916 -0.00050009999) -(0.1717171717 0.005764525084 -0.00050009999) -(0.1717171717 0.007161424088 -0.00050009999) -(0.1717171717 0.008241980085 -0.00050009999) -(0.1717171717 0.008975162042 -0.00050009999) -(0.1717171717 0.009429475607 -0.00050009999) -(0.1717171717 0.009695336429 -0.00050009999) -(0.1717171717 0.00984573433 -0.00050009999) -(0.1717171717 0.009929188095 -0.00050009999) -(0.1717171717 0.009975 -0.00050009999) -(0.1717171717 0.01 -0.00050009999) -(0.1767676768 0 -0.00050009999) -(0.1767676768 2.5e-05 -0.00050009999) -(0.1767676768 7.08119053e-05 -0.00050009999) -(0.1767676768 0.00015426567 -0.00050009999) -(0.1767676768 0.0003046635713 -0.00050009999) -(0.1767676768 0.0005705243934 -0.00050009999) -(0.1767676768 0.001024837958 -0.00050009999) -(0.1767676768 0.001758019915 -0.00050009999) -(0.1767676768 0.002838575912 -0.00050009999) -(0.1767676768 0.004235474916 -0.00050009999) -(0.1767676768 0.005764525084 -0.00050009999) -(0.1767676768 0.007161424088 -0.00050009999) -(0.1767676768 0.008241980085 -0.00050009999) -(0.1767676768 0.008975162042 -0.00050009999) -(0.1767676768 0.009429475607 -0.00050009999) -(0.1767676768 0.009695336429 -0.00050009999) -(0.1767676768 0.00984573433 -0.00050009999) -(0.1767676768 0.009929188095 -0.00050009999) -(0.1767676768 0.009975 -0.00050009999) -(0.1767676768 0.01 -0.00050009999) -(0.1818181818 0 -0.00050009999) -(0.1818181818 2.5e-05 -0.00050009999) -(0.1818181818 7.08119053e-05 -0.00050009999) -(0.1818181818 0.00015426567 -0.00050009999) -(0.1818181818 0.0003046635713 -0.00050009999) -(0.1818181818 0.0005705243934 -0.00050009999) -(0.1818181818 0.001024837958 -0.00050009999) -(0.1818181818 0.001758019915 -0.00050009999) -(0.1818181818 0.002838575912 -0.00050009999) -(0.1818181818 0.004235474916 -0.00050009999) -(0.1818181818 0.005764525084 -0.00050009999) -(0.1818181818 0.007161424088 -0.00050009999) -(0.1818181818 0.008241980085 -0.00050009999) -(0.1818181818 0.008975162042 -0.00050009999) -(0.1818181818 0.009429475607 -0.00050009999) -(0.1818181818 0.009695336429 -0.00050009999) -(0.1818181818 0.00984573433 -0.00050009999) -(0.1818181818 0.009929188095 -0.00050009999) -(0.1818181818 0.009975 -0.00050009999) -(0.1818181818 0.01 -0.00050009999) -(0.1868686869 0 -0.00050009999) -(0.1868686869 2.5e-05 -0.00050009999) -(0.1868686869 7.08119053e-05 -0.00050009999) -(0.1868686869 0.00015426567 -0.00050009999) -(0.1868686869 0.0003046635713 -0.00050009999) -(0.1868686869 0.0005705243934 -0.00050009999) -(0.1868686869 0.001024837958 -0.00050009999) -(0.1868686869 0.001758019915 -0.00050009999) -(0.1868686869 0.002838575912 -0.00050009999) -(0.1868686869 0.004235474916 -0.00050009999) -(0.1868686869 0.005764525084 -0.00050009999) -(0.1868686869 0.007161424088 -0.00050009999) -(0.1868686869 0.008241980085 -0.00050009999) -(0.1868686869 0.008975162042 -0.00050009999) -(0.1868686869 0.009429475607 -0.00050009999) -(0.1868686869 0.009695336429 -0.00050009999) -(0.1868686869 0.00984573433 -0.00050009999) -(0.1868686869 0.009929188095 -0.00050009999) -(0.1868686869 0.009975 -0.00050009999) -(0.1868686869 0.01 -0.00050009999) -(0.1919191919 0 -0.00050009999) -(0.1919191919 2.5e-05 -0.00050009999) -(0.1919191919 7.08119053e-05 -0.00050009999) -(0.1919191919 0.00015426567 -0.00050009999) -(0.1919191919 0.0003046635713 -0.00050009999) -(0.1919191919 0.0005705243934 -0.00050009999) -(0.1919191919 0.001024837958 -0.00050009999) -(0.1919191919 0.001758019915 -0.00050009999) -(0.1919191919 0.002838575912 -0.00050009999) -(0.1919191919 0.004235474916 -0.00050009999) -(0.1919191919 0.005764525084 -0.00050009999) -(0.1919191919 0.007161424088 -0.00050009999) -(0.1919191919 0.008241980085 -0.00050009999) -(0.1919191919 0.008975162042 -0.00050009999) -(0.1919191919 0.009429475607 -0.00050009999) -(0.1919191919 0.009695336429 -0.00050009999) -(0.1919191919 0.00984573433 -0.00050009999) -(0.1919191919 0.009929188095 -0.00050009999) -(0.1919191919 0.009975 -0.00050009999) -(0.1919191919 0.01 -0.00050009999) -(0.196969697 0 -0.00050009999) -(0.196969697 2.5e-05 -0.00050009999) -(0.196969697 7.08119053e-05 -0.00050009999) -(0.196969697 0.00015426567 -0.00050009999) -(0.196969697 0.0003046635713 -0.00050009999) -(0.196969697 0.0005705243934 -0.00050009999) -(0.196969697 0.001024837958 -0.00050009999) -(0.196969697 0.001758019915 -0.00050009999) -(0.196969697 0.002838575912 -0.00050009999) -(0.196969697 0.004235474916 -0.00050009999) -(0.196969697 0.005764525084 -0.00050009999) -(0.196969697 0.007161424088 -0.00050009999) -(0.196969697 0.008241980085 -0.00050009999) -(0.196969697 0.008975162042 -0.00050009999) -(0.196969697 0.009429475607 -0.00050009999) -(0.196969697 0.009695336429 -0.00050009999) -(0.196969697 0.00984573433 -0.00050009999) -(0.196969697 0.009929188095 -0.00050009999) -(0.196969697 0.009975 -0.00050009999) -(0.196969697 0.01 -0.00050009999) -(0.202020202 0 -0.00050009999) -(0.202020202 2.5e-05 -0.00050009999) -(0.202020202 7.08119053e-05 -0.00050009999) -(0.202020202 0.00015426567 -0.00050009999) -(0.202020202 0.0003046635713 -0.00050009999) -(0.202020202 0.0005705243934 -0.00050009999) -(0.202020202 0.001024837958 -0.00050009999) -(0.202020202 0.001758019915 -0.00050009999) -(0.202020202 0.002838575912 -0.00050009999) -(0.202020202 0.004235474916 -0.00050009999) -(0.202020202 0.005764525084 -0.00050009999) -(0.202020202 0.007161424088 -0.00050009999) -(0.202020202 0.008241980085 -0.00050009999) -(0.202020202 0.008975162042 -0.00050009999) -(0.202020202 0.009429475607 -0.00050009999) -(0.202020202 0.009695336429 -0.00050009999) -(0.202020202 0.00984573433 -0.00050009999) -(0.202020202 0.009929188095 -0.00050009999) -(0.202020202 0.009975 -0.00050009999) -(0.202020202 0.01 -0.00050009999) -(0.2070707071 0 -0.00050009999) -(0.2070707071 2.5e-05 -0.00050009999) -(0.2070707071 7.08119053e-05 -0.00050009999) -(0.2070707071 0.00015426567 -0.00050009999) -(0.2070707071 0.0003046635713 -0.00050009999) -(0.2070707071 0.0005705243934 -0.00050009999) -(0.2070707071 0.001024837958 -0.00050009999) -(0.2070707071 0.001758019915 -0.00050009999) -(0.2070707071 0.002838575912 -0.00050009999) -(0.2070707071 0.004235474916 -0.00050009999) -(0.2070707071 0.005764525084 -0.00050009999) -(0.2070707071 0.007161424088 -0.00050009999) -(0.2070707071 0.008241980085 -0.00050009999) -(0.2070707071 0.008975162042 -0.00050009999) -(0.2070707071 0.009429475607 -0.00050009999) -(0.2070707071 0.009695336429 -0.00050009999) -(0.2070707071 0.00984573433 -0.00050009999) -(0.2070707071 0.009929188095 -0.00050009999) -(0.2070707071 0.009975 -0.00050009999) -(0.2070707071 0.01 -0.00050009999) -(0.2121212121 0 -0.00050009999) -(0.2121212121 2.5e-05 -0.00050009999) -(0.2121212121 7.08119053e-05 -0.00050009999) -(0.2121212121 0.00015426567 -0.00050009999) -(0.2121212121 0.0003046635713 -0.00050009999) -(0.2121212121 0.0005705243934 -0.00050009999) -(0.2121212121 0.001024837958 -0.00050009999) -(0.2121212121 0.001758019915 -0.00050009999) -(0.2121212121 0.002838575912 -0.00050009999) -(0.2121212121 0.004235474916 -0.00050009999) -(0.2121212121 0.005764525084 -0.00050009999) -(0.2121212121 0.007161424088 -0.00050009999) -(0.2121212121 0.008241980085 -0.00050009999) -(0.2121212121 0.008975162042 -0.00050009999) -(0.2121212121 0.009429475607 -0.00050009999) -(0.2121212121 0.009695336429 -0.00050009999) -(0.2121212121 0.00984573433 -0.00050009999) -(0.2121212121 0.009929188095 -0.00050009999) -(0.2121212121 0.009975 -0.00050009999) -(0.2121212121 0.01 -0.00050009999) -(0.2171717172 0 -0.00050009999) -(0.2171717172 2.5e-05 -0.00050009999) -(0.2171717172 7.08119053e-05 -0.00050009999) -(0.2171717172 0.00015426567 -0.00050009999) -(0.2171717172 0.0003046635713 -0.00050009999) -(0.2171717172 0.0005705243934 -0.00050009999) -(0.2171717172 0.001024837958 -0.00050009999) -(0.2171717172 0.001758019915 -0.00050009999) -(0.2171717172 0.002838575912 -0.00050009999) -(0.2171717172 0.004235474916 -0.00050009999) -(0.2171717172 0.005764525084 -0.00050009999) -(0.2171717172 0.007161424088 -0.00050009999) -(0.2171717172 0.008241980085 -0.00050009999) -(0.2171717172 0.008975162042 -0.00050009999) -(0.2171717172 0.009429475607 -0.00050009999) -(0.2171717172 0.009695336429 -0.00050009999) -(0.2171717172 0.00984573433 -0.00050009999) -(0.2171717172 0.009929188095 -0.00050009999) -(0.2171717172 0.009975 -0.00050009999) -(0.2171717172 0.01 -0.00050009999) -(0.2222222222 0 -0.00050009999) -(0.2222222222 2.5e-05 -0.00050009999) -(0.2222222222 7.08119053e-05 -0.00050009999) -(0.2222222222 0.00015426567 -0.00050009999) -(0.2222222222 0.0003046635713 -0.00050009999) -(0.2222222222 0.0005705243934 -0.00050009999) -(0.2222222222 0.001024837958 -0.00050009999) -(0.2222222222 0.001758019915 -0.00050009999) -(0.2222222222 0.002838575912 -0.00050009999) -(0.2222222222 0.004235474916 -0.00050009999) -(0.2222222222 0.005764525084 -0.00050009999) -(0.2222222222 0.007161424088 -0.00050009999) -(0.2222222222 0.008241980085 -0.00050009999) -(0.2222222222 0.008975162042 -0.00050009999) -(0.2222222222 0.009429475607 -0.00050009999) -(0.2222222222 0.009695336429 -0.00050009999) -(0.2222222222 0.00984573433 -0.00050009999) -(0.2222222222 0.009929188095 -0.00050009999) -(0.2222222222 0.009975 -0.00050009999) -(0.2222222222 0.01 -0.00050009999) -(0.2272727273 0 -0.00050009999) -(0.2272727273 2.5e-05 -0.00050009999) -(0.2272727273 7.08119053e-05 -0.00050009999) -(0.2272727273 0.00015426567 -0.00050009999) -(0.2272727273 0.0003046635713 -0.00050009999) -(0.2272727273 0.0005705243934 -0.00050009999) -(0.2272727273 0.001024837958 -0.00050009999) -(0.2272727273 0.001758019915 -0.00050009999) -(0.2272727273 0.002838575912 -0.00050009999) -(0.2272727273 0.004235474916 -0.00050009999) -(0.2272727273 0.005764525084 -0.00050009999) -(0.2272727273 0.007161424088 -0.00050009999) -(0.2272727273 0.008241980085 -0.00050009999) -(0.2272727273 0.008975162042 -0.00050009999) -(0.2272727273 0.009429475607 -0.00050009999) -(0.2272727273 0.009695336429 -0.00050009999) -(0.2272727273 0.00984573433 -0.00050009999) -(0.2272727273 0.009929188095 -0.00050009999) -(0.2272727273 0.009975 -0.00050009999) -(0.2272727273 0.01 -0.00050009999) -(0.2323232323 0 -0.00050009999) -(0.2323232323 2.5e-05 -0.00050009999) -(0.2323232323 7.08119053e-05 -0.00050009999) -(0.2323232323 0.00015426567 -0.00050009999) -(0.2323232323 0.0003046635713 -0.00050009999) -(0.2323232323 0.0005705243934 -0.00050009999) -(0.2323232323 0.001024837958 -0.00050009999) -(0.2323232323 0.001758019915 -0.00050009999) -(0.2323232323 0.002838575912 -0.00050009999) -(0.2323232323 0.004235474916 -0.00050009999) -(0.2323232323 0.005764525084 -0.00050009999) -(0.2323232323 0.007161424088 -0.00050009999) -(0.2323232323 0.008241980085 -0.00050009999) -(0.2323232323 0.008975162042 -0.00050009999) -(0.2323232323 0.009429475607 -0.00050009999) -(0.2323232323 0.009695336429 -0.00050009999) -(0.2323232323 0.00984573433 -0.00050009999) -(0.2323232323 0.009929188095 -0.00050009999) -(0.2323232323 0.009975 -0.00050009999) -(0.2323232323 0.01 -0.00050009999) -(0.2373737374 0 -0.00050009999) -(0.2373737374 2.5e-05 -0.00050009999) -(0.2373737374 7.08119053e-05 -0.00050009999) -(0.2373737374 0.00015426567 -0.00050009999) -(0.2373737374 0.0003046635713 -0.00050009999) -(0.2373737374 0.0005705243934 -0.00050009999) -(0.2373737374 0.001024837958 -0.00050009999) -(0.2373737374 0.001758019915 -0.00050009999) -(0.2373737374 0.002838575912 -0.00050009999) -(0.2373737374 0.004235474916 -0.00050009999) -(0.2373737374 0.005764525084 -0.00050009999) -(0.2373737374 0.007161424088 -0.00050009999) -(0.2373737374 0.008241980085 -0.00050009999) -(0.2373737374 0.008975162042 -0.00050009999) -(0.2373737374 0.009429475607 -0.00050009999) -(0.2373737374 0.009695336429 -0.00050009999) -(0.2373737374 0.00984573433 -0.00050009999) -(0.2373737374 0.009929188095 -0.00050009999) -(0.2373737374 0.009975 -0.00050009999) -(0.2373737374 0.01 -0.00050009999) -(0.2424242424 0 -0.00050009999) -(0.2424242424 2.5e-05 -0.00050009999) -(0.2424242424 7.08119053e-05 -0.00050009999) -(0.2424242424 0.00015426567 -0.00050009999) -(0.2424242424 0.0003046635713 -0.00050009999) -(0.2424242424 0.0005705243934 -0.00050009999) -(0.2424242424 0.001024837958 -0.00050009999) -(0.2424242424 0.001758019915 -0.00050009999) -(0.2424242424 0.002838575912 -0.00050009999) -(0.2424242424 0.004235474916 -0.00050009999) -(0.2424242424 0.005764525084 -0.00050009999) -(0.2424242424 0.007161424088 -0.00050009999) -(0.2424242424 0.008241980085 -0.00050009999) -(0.2424242424 0.008975162042 -0.00050009999) -(0.2424242424 0.009429475607 -0.00050009999) -(0.2424242424 0.009695336429 -0.00050009999) -(0.2424242424 0.00984573433 -0.00050009999) -(0.2424242424 0.009929188095 -0.00050009999) -(0.2424242424 0.009975 -0.00050009999) -(0.2424242424 0.01 -0.00050009999) -(0.2474747475 0 -0.00050009999) -(0.2474747475 2.5e-05 -0.00050009999) -(0.2474747475 7.08119053e-05 -0.00050009999) -(0.2474747475 0.00015426567 -0.00050009999) -(0.2474747475 0.0003046635713 -0.00050009999) -(0.2474747475 0.0005705243934 -0.00050009999) -(0.2474747475 0.001024837958 -0.00050009999) -(0.2474747475 0.001758019915 -0.00050009999) -(0.2474747475 0.002838575912 -0.00050009999) -(0.2474747475 0.004235474916 -0.00050009999) -(0.2474747475 0.005764525084 -0.00050009999) -(0.2474747475 0.007161424088 -0.00050009999) -(0.2474747475 0.008241980085 -0.00050009999) -(0.2474747475 0.008975162042 -0.00050009999) -(0.2474747475 0.009429475607 -0.00050009999) -(0.2474747475 0.009695336429 -0.00050009999) -(0.2474747475 0.00984573433 -0.00050009999) -(0.2474747475 0.009929188095 -0.00050009999) -(0.2474747475 0.009975 -0.00050009999) -(0.2474747475 0.01 -0.00050009999) -(0.2525252525 0 -0.00050009999) -(0.2525252525 2.5e-05 -0.00050009999) -(0.2525252525 7.08119053e-05 -0.00050009999) -(0.2525252525 0.00015426567 -0.00050009999) -(0.2525252525 0.0003046635713 -0.00050009999) -(0.2525252525 0.0005705243934 -0.00050009999) -(0.2525252525 0.001024837958 -0.00050009999) -(0.2525252525 0.001758019915 -0.00050009999) -(0.2525252525 0.002838575912 -0.00050009999) -(0.2525252525 0.004235474916 -0.00050009999) -(0.2525252525 0.005764525084 -0.00050009999) -(0.2525252525 0.007161424088 -0.00050009999) -(0.2525252525 0.008241980085 -0.00050009999) -(0.2525252525 0.008975162042 -0.00050009999) -(0.2525252525 0.009429475607 -0.00050009999) -(0.2525252525 0.009695336429 -0.00050009999) -(0.2525252525 0.00984573433 -0.00050009999) -(0.2525252525 0.009929188095 -0.00050009999) -(0.2525252525 0.009975 -0.00050009999) -(0.2525252525 0.01 -0.00050009999) -(0.2575757576 0 -0.00050009999) -(0.2575757576 2.5e-05 -0.00050009999) -(0.2575757576 7.08119053e-05 -0.00050009999) -(0.2575757576 0.00015426567 -0.00050009999) -(0.2575757576 0.0003046635713 -0.00050009999) -(0.2575757576 0.0005705243934 -0.00050009999) -(0.2575757576 0.001024837958 -0.00050009999) -(0.2575757576 0.001758019915 -0.00050009999) -(0.2575757576 0.002838575912 -0.00050009999) -(0.2575757576 0.004235474916 -0.00050009999) -(0.2575757576 0.005764525084 -0.00050009999) -(0.2575757576 0.007161424088 -0.00050009999) -(0.2575757576 0.008241980085 -0.00050009999) -(0.2575757576 0.008975162042 -0.00050009999) -(0.2575757576 0.009429475607 -0.00050009999) -(0.2575757576 0.009695336429 -0.00050009999) -(0.2575757576 0.00984573433 -0.00050009999) -(0.2575757576 0.009929188095 -0.00050009999) -(0.2575757576 0.009975 -0.00050009999) -(0.2575757576 0.01 -0.00050009999) -(0.2626262626 0 -0.00050009999) -(0.2626262626 2.5e-05 -0.00050009999) -(0.2626262626 7.08119053e-05 -0.00050009999) -(0.2626262626 0.00015426567 -0.00050009999) -(0.2626262626 0.0003046635713 -0.00050009999) -(0.2626262626 0.0005705243934 -0.00050009999) -(0.2626262626 0.001024837958 -0.00050009999) -(0.2626262626 0.001758019915 -0.00050009999) -(0.2626262626 0.002838575912 -0.00050009999) -(0.2626262626 0.004235474916 -0.00050009999) -(0.2626262626 0.005764525084 -0.00050009999) -(0.2626262626 0.007161424088 -0.00050009999) -(0.2626262626 0.008241980085 -0.00050009999) -(0.2626262626 0.008975162042 -0.00050009999) -(0.2626262626 0.009429475607 -0.00050009999) -(0.2626262626 0.009695336429 -0.00050009999) -(0.2626262626 0.00984573433 -0.00050009999) -(0.2626262626 0.009929188095 -0.00050009999) -(0.2626262626 0.009975 -0.00050009999) -(0.2626262626 0.01 -0.00050009999) -(0.2676767677 0 -0.00050009999) -(0.2676767677 2.5e-05 -0.00050009999) -(0.2676767677 7.08119053e-05 -0.00050009999) -(0.2676767677 0.00015426567 -0.00050009999) -(0.2676767677 0.0003046635713 -0.00050009999) -(0.2676767677 0.0005705243934 -0.00050009999) -(0.2676767677 0.001024837958 -0.00050009999) -(0.2676767677 0.001758019915 -0.00050009999) -(0.2676767677 0.002838575912 -0.00050009999) -(0.2676767677 0.004235474916 -0.00050009999) -(0.2676767677 0.005764525084 -0.00050009999) -(0.2676767677 0.007161424088 -0.00050009999) -(0.2676767677 0.008241980085 -0.00050009999) -(0.2676767677 0.008975162042 -0.00050009999) -(0.2676767677 0.009429475607 -0.00050009999) -(0.2676767677 0.009695336429 -0.00050009999) -(0.2676767677 0.00984573433 -0.00050009999) -(0.2676767677 0.009929188095 -0.00050009999) -(0.2676767677 0.009975 -0.00050009999) -(0.2676767677 0.01 -0.00050009999) -(0.2727272727 0 -0.00050009999) -(0.2727272727 2.5e-05 -0.00050009999) -(0.2727272727 7.08119053e-05 -0.00050009999) -(0.2727272727 0.00015426567 -0.00050009999) -(0.2727272727 0.0003046635713 -0.00050009999) -(0.2727272727 0.0005705243934 -0.00050009999) -(0.2727272727 0.001024837958 -0.00050009999) -(0.2727272727 0.001758019915 -0.00050009999) -(0.2727272727 0.002838575912 -0.00050009999) -(0.2727272727 0.004235474916 -0.00050009999) -(0.2727272727 0.005764525084 -0.00050009999) -(0.2727272727 0.007161424088 -0.00050009999) -(0.2727272727 0.008241980085 -0.00050009999) -(0.2727272727 0.008975162042 -0.00050009999) -(0.2727272727 0.009429475607 -0.00050009999) -(0.2727272727 0.009695336429 -0.00050009999) -(0.2727272727 0.00984573433 -0.00050009999) -(0.2727272727 0.009929188095 -0.00050009999) -(0.2727272727 0.009975 -0.00050009999) -(0.2727272727 0.01 -0.00050009999) -(0.2777777778 0 -0.00050009999) -(0.2777777778 2.5e-05 -0.00050009999) -(0.2777777778 7.08119053e-05 -0.00050009999) -(0.2777777778 0.00015426567 -0.00050009999) -(0.2777777778 0.0003046635713 -0.00050009999) -(0.2777777778 0.0005705243934 -0.00050009999) -(0.2777777778 0.001024837958 -0.00050009999) -(0.2777777778 0.001758019915 -0.00050009999) -(0.2777777778 0.002838575912 -0.00050009999) -(0.2777777778 0.004235474916 -0.00050009999) -(0.2777777778 0.005764525084 -0.00050009999) -(0.2777777778 0.007161424088 -0.00050009999) -(0.2777777778 0.008241980085 -0.00050009999) -(0.2777777778 0.008975162042 -0.00050009999) -(0.2777777778 0.009429475607 -0.00050009999) -(0.2777777778 0.009695336429 -0.00050009999) -(0.2777777778 0.00984573433 -0.00050009999) -(0.2777777778 0.009929188095 -0.00050009999) -(0.2777777778 0.009975 -0.00050009999) -(0.2777777778 0.01 -0.00050009999) -(0.2828282828 0 -0.00050009999) -(0.2828282828 2.5e-05 -0.00050009999) -(0.2828282828 7.08119053e-05 -0.00050009999) -(0.2828282828 0.00015426567 -0.00050009999) -(0.2828282828 0.0003046635713 -0.00050009999) -(0.2828282828 0.0005705243934 -0.00050009999) -(0.2828282828 0.001024837958 -0.00050009999) -(0.2828282828 0.001758019915 -0.00050009999) -(0.2828282828 0.002838575912 -0.00050009999) -(0.2828282828 0.004235474916 -0.00050009999) -(0.2828282828 0.005764525084 -0.00050009999) -(0.2828282828 0.007161424088 -0.00050009999) -(0.2828282828 0.008241980085 -0.00050009999) -(0.2828282828 0.008975162042 -0.00050009999) -(0.2828282828 0.009429475607 -0.00050009999) -(0.2828282828 0.009695336429 -0.00050009999) -(0.2828282828 0.00984573433 -0.00050009999) -(0.2828282828 0.009929188095 -0.00050009999) -(0.2828282828 0.009975 -0.00050009999) -(0.2828282828 0.01 -0.00050009999) -(0.2878787879 0 -0.00050009999) -(0.2878787879 2.5e-05 -0.00050009999) -(0.2878787879 7.08119053e-05 -0.00050009999) -(0.2878787879 0.00015426567 -0.00050009999) -(0.2878787879 0.0003046635713 -0.00050009999) -(0.2878787879 0.0005705243934 -0.00050009999) -(0.2878787879 0.001024837958 -0.00050009999) -(0.2878787879 0.001758019915 -0.00050009999) -(0.2878787879 0.002838575912 -0.00050009999) -(0.2878787879 0.004235474916 -0.00050009999) -(0.2878787879 0.005764525084 -0.00050009999) -(0.2878787879 0.007161424088 -0.00050009999) -(0.2878787879 0.008241980085 -0.00050009999) -(0.2878787879 0.008975162042 -0.00050009999) -(0.2878787879 0.009429475607 -0.00050009999) -(0.2878787879 0.009695336429 -0.00050009999) -(0.2878787879 0.00984573433 -0.00050009999) -(0.2878787879 0.009929188095 -0.00050009999) -(0.2878787879 0.009975 -0.00050009999) -(0.2878787879 0.01 -0.00050009999) -(0.2929292929 0 -0.00050009999) -(0.2929292929 2.5e-05 -0.00050009999) -(0.2929292929 7.08119053e-05 -0.00050009999) -(0.2929292929 0.00015426567 -0.00050009999) -(0.2929292929 0.0003046635713 -0.00050009999) -(0.2929292929 0.0005705243934 -0.00050009999) -(0.2929292929 0.001024837958 -0.00050009999) -(0.2929292929 0.001758019915 -0.00050009999) -(0.2929292929 0.002838575912 -0.00050009999) -(0.2929292929 0.004235474916 -0.00050009999) -(0.2929292929 0.005764525084 -0.00050009999) -(0.2929292929 0.007161424088 -0.00050009999) -(0.2929292929 0.008241980085 -0.00050009999) -(0.2929292929 0.008975162042 -0.00050009999) -(0.2929292929 0.009429475607 -0.00050009999) -(0.2929292929 0.009695336429 -0.00050009999) -(0.2929292929 0.00984573433 -0.00050009999) -(0.2929292929 0.009929188095 -0.00050009999) -(0.2929292929 0.009975 -0.00050009999) -(0.2929292929 0.01 -0.00050009999) -(0.297979798 0 -0.00050009999) -(0.297979798 2.5e-05 -0.00050009999) -(0.297979798 7.08119053e-05 -0.00050009999) -(0.297979798 0.00015426567 -0.00050009999) -(0.297979798 0.0003046635713 -0.00050009999) -(0.297979798 0.0005705243934 -0.00050009999) -(0.297979798 0.001024837958 -0.00050009999) -(0.297979798 0.001758019915 -0.00050009999) -(0.297979798 0.002838575912 -0.00050009999) -(0.297979798 0.004235474916 -0.00050009999) -(0.297979798 0.005764525084 -0.00050009999) -(0.297979798 0.007161424088 -0.00050009999) -(0.297979798 0.008241980085 -0.00050009999) -(0.297979798 0.008975162042 -0.00050009999) -(0.297979798 0.009429475607 -0.00050009999) -(0.297979798 0.009695336429 -0.00050009999) -(0.297979798 0.00984573433 -0.00050009999) -(0.297979798 0.009929188095 -0.00050009999) -(0.297979798 0.009975 -0.00050009999) -(0.297979798 0.01 -0.00050009999) -(0.303030303 0 -0.00050009999) -(0.303030303 2.5e-05 -0.00050009999) -(0.303030303 7.08119053e-05 -0.00050009999) -(0.303030303 0.00015426567 -0.00050009999) -(0.303030303 0.0003046635713 -0.00050009999) -(0.303030303 0.0005705243934 -0.00050009999) -(0.303030303 0.001024837958 -0.00050009999) -(0.303030303 0.001758019915 -0.00050009999) -(0.303030303 0.002838575912 -0.00050009999) -(0.303030303 0.004235474916 -0.00050009999) -(0.303030303 0.005764525084 -0.00050009999) -(0.303030303 0.007161424088 -0.00050009999) -(0.303030303 0.008241980085 -0.00050009999) -(0.303030303 0.008975162042 -0.00050009999) -(0.303030303 0.009429475607 -0.00050009999) -(0.303030303 0.009695336429 -0.00050009999) -(0.303030303 0.00984573433 -0.00050009999) -(0.303030303 0.009929188095 -0.00050009999) -(0.303030303 0.009975 -0.00050009999) -(0.303030303 0.01 -0.00050009999) -(0.3080808081 0 -0.00050009999) -(0.3080808081 2.5e-05 -0.00050009999) -(0.3080808081 7.08119053e-05 -0.00050009999) -(0.3080808081 0.00015426567 -0.00050009999) -(0.3080808081 0.0003046635713 -0.00050009999) -(0.3080808081 0.0005705243934 -0.00050009999) -(0.3080808081 0.001024837958 -0.00050009999) -(0.3080808081 0.001758019915 -0.00050009999) -(0.3080808081 0.002838575912 -0.00050009999) -(0.3080808081 0.004235474916 -0.00050009999) -(0.3080808081 0.005764525084 -0.00050009999) -(0.3080808081 0.007161424088 -0.00050009999) -(0.3080808081 0.008241980085 -0.00050009999) -(0.3080808081 0.008975162042 -0.00050009999) -(0.3080808081 0.009429475607 -0.00050009999) -(0.3080808081 0.009695336429 -0.00050009999) -(0.3080808081 0.00984573433 -0.00050009999) -(0.3080808081 0.009929188095 -0.00050009999) -(0.3080808081 0.009975 -0.00050009999) -(0.3080808081 0.01 -0.00050009999) -(0.3131313131 0 -0.00050009999) -(0.3131313131 2.5e-05 -0.00050009999) -(0.3131313131 7.08119053e-05 -0.00050009999) -(0.3131313131 0.00015426567 -0.00050009999) -(0.3131313131 0.0003046635713 -0.00050009999) -(0.3131313131 0.0005705243934 -0.00050009999) -(0.3131313131 0.001024837958 -0.00050009999) -(0.3131313131 0.001758019915 -0.00050009999) -(0.3131313131 0.002838575912 -0.00050009999) -(0.3131313131 0.004235474916 -0.00050009999) -(0.3131313131 0.005764525084 -0.00050009999) -(0.3131313131 0.007161424088 -0.00050009999) -(0.3131313131 0.008241980085 -0.00050009999) -(0.3131313131 0.008975162042 -0.00050009999) -(0.3131313131 0.009429475607 -0.00050009999) -(0.3131313131 0.009695336429 -0.00050009999) -(0.3131313131 0.00984573433 -0.00050009999) -(0.3131313131 0.009929188095 -0.00050009999) -(0.3131313131 0.009975 -0.00050009999) -(0.3131313131 0.01 -0.00050009999) -(0.3181818182 0 -0.00050009999) -(0.3181818182 2.5e-05 -0.00050009999) -(0.3181818182 7.08119053e-05 -0.00050009999) -(0.3181818182 0.00015426567 -0.00050009999) -(0.3181818182 0.0003046635713 -0.00050009999) -(0.3181818182 0.0005705243934 -0.00050009999) -(0.3181818182 0.001024837958 -0.00050009999) -(0.3181818182 0.001758019915 -0.00050009999) -(0.3181818182 0.002838575912 -0.00050009999) -(0.3181818182 0.004235474916 -0.00050009999) -(0.3181818182 0.005764525084 -0.00050009999) -(0.3181818182 0.007161424088 -0.00050009999) -(0.3181818182 0.008241980085 -0.00050009999) -(0.3181818182 0.008975162042 -0.00050009999) -(0.3181818182 0.009429475607 -0.00050009999) -(0.3181818182 0.009695336429 -0.00050009999) -(0.3181818182 0.00984573433 -0.00050009999) -(0.3181818182 0.009929188095 -0.00050009999) -(0.3181818182 0.009975 -0.00050009999) -(0.3181818182 0.01 -0.00050009999) -(0.3232323232 0 -0.00050009999) -(0.3232323232 2.5e-05 -0.00050009999) -(0.3232323232 7.08119053e-05 -0.00050009999) -(0.3232323232 0.00015426567 -0.00050009999) -(0.3232323232 0.0003046635713 -0.00050009999) -(0.3232323232 0.0005705243934 -0.00050009999) -(0.3232323232 0.001024837958 -0.00050009999) -(0.3232323232 0.001758019915 -0.00050009999) -(0.3232323232 0.002838575912 -0.00050009999) -(0.3232323232 0.004235474916 -0.00050009999) -(0.3232323232 0.005764525084 -0.00050009999) -(0.3232323232 0.007161424088 -0.00050009999) -(0.3232323232 0.008241980085 -0.00050009999) -(0.3232323232 0.008975162042 -0.00050009999) -(0.3232323232 0.009429475607 -0.00050009999) -(0.3232323232 0.009695336429 -0.00050009999) -(0.3232323232 0.00984573433 -0.00050009999) -(0.3232323232 0.009929188095 -0.00050009999) -(0.3232323232 0.009975 -0.00050009999) -(0.3232323232 0.01 -0.00050009999) -(0.3282828283 0 -0.00050009999) -(0.3282828283 2.5e-05 -0.00050009999) -(0.3282828283 7.08119053e-05 -0.00050009999) -(0.3282828283 0.00015426567 -0.00050009999) -(0.3282828283 0.0003046635713 -0.00050009999) -(0.3282828283 0.0005705243934 -0.00050009999) -(0.3282828283 0.001024837958 -0.00050009999) -(0.3282828283 0.001758019915 -0.00050009999) -(0.3282828283 0.002838575912 -0.00050009999) -(0.3282828283 0.004235474916 -0.00050009999) -(0.3282828283 0.005764525084 -0.00050009999) -(0.3282828283 0.007161424088 -0.00050009999) -(0.3282828283 0.008241980085 -0.00050009999) -(0.3282828283 0.008975162042 -0.00050009999) -(0.3282828283 0.009429475607 -0.00050009999) -(0.3282828283 0.009695336429 -0.00050009999) -(0.3282828283 0.00984573433 -0.00050009999) -(0.3282828283 0.009929188095 -0.00050009999) -(0.3282828283 0.009975 -0.00050009999) -(0.3282828283 0.01 -0.00050009999) -(0.3333333333 0 -0.00050009999) -(0.3333333333 2.5e-05 -0.00050009999) -(0.3333333333 7.08119053e-05 -0.00050009999) -(0.3333333333 0.00015426567 -0.00050009999) -(0.3333333333 0.0003046635713 -0.00050009999) -(0.3333333333 0.0005705243934 -0.00050009999) -(0.3333333333 0.001024837958 -0.00050009999) -(0.3333333333 0.001758019915 -0.00050009999) -(0.3333333333 0.002838575912 -0.00050009999) -(0.3333333333 0.004235474916 -0.00050009999) -(0.3333333333 0.005764525084 -0.00050009999) -(0.3333333333 0.007161424088 -0.00050009999) -(0.3333333333 0.008241980085 -0.00050009999) -(0.3333333333 0.008975162042 -0.00050009999) -(0.3333333333 0.009429475607 -0.00050009999) -(0.3333333333 0.009695336429 -0.00050009999) -(0.3333333333 0.00984573433 -0.00050009999) -(0.3333333333 0.009929188095 -0.00050009999) -(0.3333333333 0.009975 -0.00050009999) -(0.3333333333 0.01 -0.00050009999) -(0.3383838384 0 -0.00050009999) -(0.3383838384 2.5e-05 -0.00050009999) -(0.3383838384 7.08119053e-05 -0.00050009999) -(0.3383838384 0.00015426567 -0.00050009999) -(0.3383838384 0.0003046635713 -0.00050009999) -(0.3383838384 0.0005705243934 -0.00050009999) -(0.3383838384 0.001024837958 -0.00050009999) -(0.3383838384 0.001758019915 -0.00050009999) -(0.3383838384 0.002838575912 -0.00050009999) -(0.3383838384 0.004235474916 -0.00050009999) -(0.3383838384 0.005764525084 -0.00050009999) -(0.3383838384 0.007161424088 -0.00050009999) -(0.3383838384 0.008241980085 -0.00050009999) -(0.3383838384 0.008975162042 -0.00050009999) -(0.3383838384 0.009429475607 -0.00050009999) -(0.3383838384 0.009695336429 -0.00050009999) -(0.3383838384 0.00984573433 -0.00050009999) -(0.3383838384 0.009929188095 -0.00050009999) -(0.3383838384 0.009975 -0.00050009999) -(0.3383838384 0.01 -0.00050009999) -(0.3434343434 0 -0.00050009999) -(0.3434343434 2.5e-05 -0.00050009999) -(0.3434343434 7.08119053e-05 -0.00050009999) -(0.3434343434 0.00015426567 -0.00050009999) -(0.3434343434 0.0003046635713 -0.00050009999) -(0.3434343434 0.0005705243934 -0.00050009999) -(0.3434343434 0.001024837958 -0.00050009999) -(0.3434343434 0.001758019915 -0.00050009999) -(0.3434343434 0.002838575912 -0.00050009999) -(0.3434343434 0.004235474916 -0.00050009999) -(0.3434343434 0.005764525084 -0.00050009999) -(0.3434343434 0.007161424088 -0.00050009999) -(0.3434343434 0.008241980085 -0.00050009999) -(0.3434343434 0.008975162042 -0.00050009999) -(0.3434343434 0.009429475607 -0.00050009999) -(0.3434343434 0.009695336429 -0.00050009999) -(0.3434343434 0.00984573433 -0.00050009999) -(0.3434343434 0.009929188095 -0.00050009999) -(0.3434343434 0.009975 -0.00050009999) -(0.3434343434 0.01 -0.00050009999) -(0.3484848485 0 -0.00050009999) -(0.3484848485 2.5e-05 -0.00050009999) -(0.3484848485 7.08119053e-05 -0.00050009999) -(0.3484848485 0.00015426567 -0.00050009999) -(0.3484848485 0.0003046635713 -0.00050009999) -(0.3484848485 0.0005705243934 -0.00050009999) -(0.3484848485 0.001024837958 -0.00050009999) -(0.3484848485 0.001758019915 -0.00050009999) -(0.3484848485 0.002838575912 -0.00050009999) -(0.3484848485 0.004235474916 -0.00050009999) -(0.3484848485 0.005764525084 -0.00050009999) -(0.3484848485 0.007161424088 -0.00050009999) -(0.3484848485 0.008241980085 -0.00050009999) -(0.3484848485 0.008975162042 -0.00050009999) -(0.3484848485 0.009429475607 -0.00050009999) -(0.3484848485 0.009695336429 -0.00050009999) -(0.3484848485 0.00984573433 -0.00050009999) -(0.3484848485 0.009929188095 -0.00050009999) -(0.3484848485 0.009975 -0.00050009999) -(0.3484848485 0.01 -0.00050009999) -(0.3535353535 0 -0.00050009999) -(0.3535353535 2.5e-05 -0.00050009999) -(0.3535353535 7.08119053e-05 -0.00050009999) -(0.3535353535 0.00015426567 -0.00050009999) -(0.3535353535 0.0003046635713 -0.00050009999) -(0.3535353535 0.0005705243934 -0.00050009999) -(0.3535353535 0.001024837958 -0.00050009999) -(0.3535353535 0.001758019915 -0.00050009999) -(0.3535353535 0.002838575912 -0.00050009999) -(0.3535353535 0.004235474916 -0.00050009999) -(0.3535353535 0.005764525084 -0.00050009999) -(0.3535353535 0.007161424088 -0.00050009999) -(0.3535353535 0.008241980085 -0.00050009999) -(0.3535353535 0.008975162042 -0.00050009999) -(0.3535353535 0.009429475607 -0.00050009999) -(0.3535353535 0.009695336429 -0.00050009999) -(0.3535353535 0.00984573433 -0.00050009999) -(0.3535353535 0.009929188095 -0.00050009999) -(0.3535353535 0.009975 -0.00050009999) -(0.3535353535 0.01 -0.00050009999) -(0.3585858586 0 -0.00050009999) -(0.3585858586 2.5e-05 -0.00050009999) -(0.3585858586 7.08119053e-05 -0.00050009999) -(0.3585858586 0.00015426567 -0.00050009999) -(0.3585858586 0.0003046635713 -0.00050009999) -(0.3585858586 0.0005705243934 -0.00050009999) -(0.3585858586 0.001024837958 -0.00050009999) -(0.3585858586 0.001758019915 -0.00050009999) -(0.3585858586 0.002838575912 -0.00050009999) -(0.3585858586 0.004235474916 -0.00050009999) -(0.3585858586 0.005764525084 -0.00050009999) -(0.3585858586 0.007161424088 -0.00050009999) -(0.3585858586 0.008241980085 -0.00050009999) -(0.3585858586 0.008975162042 -0.00050009999) -(0.3585858586 0.009429475607 -0.00050009999) -(0.3585858586 0.009695336429 -0.00050009999) -(0.3585858586 0.00984573433 -0.00050009999) -(0.3585858586 0.009929188095 -0.00050009999) -(0.3585858586 0.009975 -0.00050009999) -(0.3585858586 0.01 -0.00050009999) -(0.3636363636 0 -0.00050009999) -(0.3636363636 2.5e-05 -0.00050009999) -(0.3636363636 7.08119053e-05 -0.00050009999) -(0.3636363636 0.00015426567 -0.00050009999) -(0.3636363636 0.0003046635713 -0.00050009999) -(0.3636363636 0.0005705243934 -0.00050009999) -(0.3636363636 0.001024837958 -0.00050009999) -(0.3636363636 0.001758019915 -0.00050009999) -(0.3636363636 0.002838575912 -0.00050009999) -(0.3636363636 0.004235474916 -0.00050009999) -(0.3636363636 0.005764525084 -0.00050009999) -(0.3636363636 0.007161424088 -0.00050009999) -(0.3636363636 0.008241980085 -0.00050009999) -(0.3636363636 0.008975162042 -0.00050009999) -(0.3636363636 0.009429475607 -0.00050009999) -(0.3636363636 0.009695336429 -0.00050009999) -(0.3636363636 0.00984573433 -0.00050009999) -(0.3636363636 0.009929188095 -0.00050009999) -(0.3636363636 0.009975 -0.00050009999) -(0.3636363636 0.01 -0.00050009999) -(0.3686868687 0 -0.00050009999) -(0.3686868687 2.5e-05 -0.00050009999) -(0.3686868687 7.08119053e-05 -0.00050009999) -(0.3686868687 0.00015426567 -0.00050009999) -(0.3686868687 0.0003046635713 -0.00050009999) -(0.3686868687 0.0005705243934 -0.00050009999) -(0.3686868687 0.001024837958 -0.00050009999) -(0.3686868687 0.001758019915 -0.00050009999) -(0.3686868687 0.002838575912 -0.00050009999) -(0.3686868687 0.004235474916 -0.00050009999) -(0.3686868687 0.005764525084 -0.00050009999) -(0.3686868687 0.007161424088 -0.00050009999) -(0.3686868687 0.008241980085 -0.00050009999) -(0.3686868687 0.008975162042 -0.00050009999) -(0.3686868687 0.009429475607 -0.00050009999) -(0.3686868687 0.009695336429 -0.00050009999) -(0.3686868687 0.00984573433 -0.00050009999) -(0.3686868687 0.009929188095 -0.00050009999) -(0.3686868687 0.009975 -0.00050009999) -(0.3686868687 0.01 -0.00050009999) -(0.3737373737 0 -0.00050009999) -(0.3737373737 2.5e-05 -0.00050009999) -(0.3737373737 7.08119053e-05 -0.00050009999) -(0.3737373737 0.00015426567 -0.00050009999) -(0.3737373737 0.0003046635713 -0.00050009999) -(0.3737373737 0.0005705243934 -0.00050009999) -(0.3737373737 0.001024837958 -0.00050009999) -(0.3737373737 0.001758019915 -0.00050009999) -(0.3737373737 0.002838575912 -0.00050009999) -(0.3737373737 0.004235474916 -0.00050009999) -(0.3737373737 0.005764525084 -0.00050009999) -(0.3737373737 0.007161424088 -0.00050009999) -(0.3737373737 0.008241980085 -0.00050009999) -(0.3737373737 0.008975162042 -0.00050009999) -(0.3737373737 0.009429475607 -0.00050009999) -(0.3737373737 0.009695336429 -0.00050009999) -(0.3737373737 0.00984573433 -0.00050009999) -(0.3737373737 0.009929188095 -0.00050009999) -(0.3737373737 0.009975 -0.00050009999) -(0.3737373737 0.01 -0.00050009999) -(0.3787878788 0 -0.00050009999) -(0.3787878788 2.5e-05 -0.00050009999) -(0.3787878788 7.08119053e-05 -0.00050009999) -(0.3787878788 0.00015426567 -0.00050009999) -(0.3787878788 0.0003046635713 -0.00050009999) -(0.3787878788 0.0005705243934 -0.00050009999) -(0.3787878788 0.001024837958 -0.00050009999) -(0.3787878788 0.001758019915 -0.00050009999) -(0.3787878788 0.002838575912 -0.00050009999) -(0.3787878788 0.004235474916 -0.00050009999) -(0.3787878788 0.005764525084 -0.00050009999) -(0.3787878788 0.007161424088 -0.00050009999) -(0.3787878788 0.008241980085 -0.00050009999) -(0.3787878788 0.008975162042 -0.00050009999) -(0.3787878788 0.009429475607 -0.00050009999) -(0.3787878788 0.009695336429 -0.00050009999) -(0.3787878788 0.00984573433 -0.00050009999) -(0.3787878788 0.009929188095 -0.00050009999) -(0.3787878788 0.009975 -0.00050009999) -(0.3787878788 0.01 -0.00050009999) -(0.3838383838 0 -0.00050009999) -(0.3838383838 2.5e-05 -0.00050009999) -(0.3838383838 7.08119053e-05 -0.00050009999) -(0.3838383838 0.00015426567 -0.00050009999) -(0.3838383838 0.0003046635713 -0.00050009999) -(0.3838383838 0.0005705243934 -0.00050009999) -(0.3838383838 0.001024837958 -0.00050009999) -(0.3838383838 0.001758019915 -0.00050009999) -(0.3838383838 0.002838575912 -0.00050009999) -(0.3838383838 0.004235474916 -0.00050009999) -(0.3838383838 0.005764525084 -0.00050009999) -(0.3838383838 0.007161424088 -0.00050009999) -(0.3838383838 0.008241980085 -0.00050009999) -(0.3838383838 0.008975162042 -0.00050009999) -(0.3838383838 0.009429475607 -0.00050009999) -(0.3838383838 0.009695336429 -0.00050009999) -(0.3838383838 0.00984573433 -0.00050009999) -(0.3838383838 0.009929188095 -0.00050009999) -(0.3838383838 0.009975 -0.00050009999) -(0.3838383838 0.01 -0.00050009999) -(0.3888888889 0 -0.00050009999) -(0.3888888889 2.5e-05 -0.00050009999) -(0.3888888889 7.08119053e-05 -0.00050009999) -(0.3888888889 0.00015426567 -0.00050009999) -(0.3888888889 0.0003046635713 -0.00050009999) -(0.3888888889 0.0005705243934 -0.00050009999) -(0.3888888889 0.001024837958 -0.00050009999) -(0.3888888889 0.001758019915 -0.00050009999) -(0.3888888889 0.002838575912 -0.00050009999) -(0.3888888889 0.004235474916 -0.00050009999) -(0.3888888889 0.005764525084 -0.00050009999) -(0.3888888889 0.007161424088 -0.00050009999) -(0.3888888889 0.008241980085 -0.00050009999) -(0.3888888889 0.008975162042 -0.00050009999) -(0.3888888889 0.009429475607 -0.00050009999) -(0.3888888889 0.009695336429 -0.00050009999) -(0.3888888889 0.00984573433 -0.00050009999) -(0.3888888889 0.009929188095 -0.00050009999) -(0.3888888889 0.009975 -0.00050009999) -(0.3888888889 0.01 -0.00050009999) -(0.3939393939 0 -0.00050009999) -(0.3939393939 2.5e-05 -0.00050009999) -(0.3939393939 7.08119053e-05 -0.00050009999) -(0.3939393939 0.00015426567 -0.00050009999) -(0.3939393939 0.0003046635713 -0.00050009999) -(0.3939393939 0.0005705243934 -0.00050009999) -(0.3939393939 0.001024837958 -0.00050009999) -(0.3939393939 0.001758019915 -0.00050009999) -(0.3939393939 0.002838575912 -0.00050009999) -(0.3939393939 0.004235474916 -0.00050009999) -(0.3939393939 0.005764525084 -0.00050009999) -(0.3939393939 0.007161424088 -0.00050009999) -(0.3939393939 0.008241980085 -0.00050009999) -(0.3939393939 0.008975162042 -0.00050009999) -(0.3939393939 0.009429475607 -0.00050009999) -(0.3939393939 0.009695336429 -0.00050009999) -(0.3939393939 0.00984573433 -0.00050009999) -(0.3939393939 0.009929188095 -0.00050009999) -(0.3939393939 0.009975 -0.00050009999) -(0.3939393939 0.01 -0.00050009999) -(0.398989899 0 -0.00050009999) -(0.398989899 2.5e-05 -0.00050009999) -(0.398989899 7.08119053e-05 -0.00050009999) -(0.398989899 0.00015426567 -0.00050009999) -(0.398989899 0.0003046635713 -0.00050009999) -(0.398989899 0.0005705243934 -0.00050009999) -(0.398989899 0.001024837958 -0.00050009999) -(0.398989899 0.001758019915 -0.00050009999) -(0.398989899 0.002838575912 -0.00050009999) -(0.398989899 0.004235474916 -0.00050009999) -(0.398989899 0.005764525084 -0.00050009999) -(0.398989899 0.007161424088 -0.00050009999) -(0.398989899 0.008241980085 -0.00050009999) -(0.398989899 0.008975162042 -0.00050009999) -(0.398989899 0.009429475607 -0.00050009999) -(0.398989899 0.009695336429 -0.00050009999) -(0.398989899 0.00984573433 -0.00050009999) -(0.398989899 0.009929188095 -0.00050009999) -(0.398989899 0.009975 -0.00050009999) -(0.398989899 0.01 -0.00050009999) -(0.404040404 0 -0.00050009999) -(0.404040404 2.5e-05 -0.00050009999) -(0.404040404 7.08119053e-05 -0.00050009999) -(0.404040404 0.00015426567 -0.00050009999) -(0.404040404 0.0003046635713 -0.00050009999) -(0.404040404 0.0005705243934 -0.00050009999) -(0.404040404 0.001024837958 -0.00050009999) -(0.404040404 0.001758019915 -0.00050009999) -(0.404040404 0.002838575912 -0.00050009999) -(0.404040404 0.004235474916 -0.00050009999) -(0.404040404 0.005764525084 -0.00050009999) -(0.404040404 0.007161424088 -0.00050009999) -(0.404040404 0.008241980085 -0.00050009999) -(0.404040404 0.008975162042 -0.00050009999) -(0.404040404 0.009429475607 -0.00050009999) -(0.404040404 0.009695336429 -0.00050009999) -(0.404040404 0.00984573433 -0.00050009999) -(0.404040404 0.009929188095 -0.00050009999) -(0.404040404 0.009975 -0.00050009999) -(0.404040404 0.01 -0.00050009999) -(0.4090909091 0 -0.00050009999) -(0.4090909091 2.5e-05 -0.00050009999) -(0.4090909091 7.08119053e-05 -0.00050009999) -(0.4090909091 0.00015426567 -0.00050009999) -(0.4090909091 0.0003046635713 -0.00050009999) -(0.4090909091 0.0005705243934 -0.00050009999) -(0.4090909091 0.001024837958 -0.00050009999) -(0.4090909091 0.001758019915 -0.00050009999) -(0.4090909091 0.002838575912 -0.00050009999) -(0.4090909091 0.004235474916 -0.00050009999) -(0.4090909091 0.005764525084 -0.00050009999) -(0.4090909091 0.007161424088 -0.00050009999) -(0.4090909091 0.008241980085 -0.00050009999) -(0.4090909091 0.008975162042 -0.00050009999) -(0.4090909091 0.009429475607 -0.00050009999) -(0.4090909091 0.009695336429 -0.00050009999) -(0.4090909091 0.00984573433 -0.00050009999) -(0.4090909091 0.009929188095 -0.00050009999) -(0.4090909091 0.009975 -0.00050009999) -(0.4090909091 0.01 -0.00050009999) -(0.4141414141 0 -0.00050009999) -(0.4141414141 2.5e-05 -0.00050009999) -(0.4141414141 7.08119053e-05 -0.00050009999) -(0.4141414141 0.00015426567 -0.00050009999) -(0.4141414141 0.0003046635713 -0.00050009999) -(0.4141414141 0.0005705243934 -0.00050009999) -(0.4141414141 0.001024837958 -0.00050009999) -(0.4141414141 0.001758019915 -0.00050009999) -(0.4141414141 0.002838575912 -0.00050009999) -(0.4141414141 0.004235474916 -0.00050009999) -(0.4141414141 0.005764525084 -0.00050009999) -(0.4141414141 0.007161424088 -0.00050009999) -(0.4141414141 0.008241980085 -0.00050009999) -(0.4141414141 0.008975162042 -0.00050009999) -(0.4141414141 0.009429475607 -0.00050009999) -(0.4141414141 0.009695336429 -0.00050009999) -(0.4141414141 0.00984573433 -0.00050009999) -(0.4141414141 0.009929188095 -0.00050009999) -(0.4141414141 0.009975 -0.00050009999) -(0.4141414141 0.01 -0.00050009999) -(0.4191919192 0 -0.00050009999) -(0.4191919192 2.5e-05 -0.00050009999) -(0.4191919192 7.08119053e-05 -0.00050009999) -(0.4191919192 0.00015426567 -0.00050009999) -(0.4191919192 0.0003046635713 -0.00050009999) -(0.4191919192 0.0005705243934 -0.00050009999) -(0.4191919192 0.001024837958 -0.00050009999) -(0.4191919192 0.001758019915 -0.00050009999) -(0.4191919192 0.002838575912 -0.00050009999) -(0.4191919192 0.004235474916 -0.00050009999) -(0.4191919192 0.005764525084 -0.00050009999) -(0.4191919192 0.007161424088 -0.00050009999) -(0.4191919192 0.008241980085 -0.00050009999) -(0.4191919192 0.008975162042 -0.00050009999) -(0.4191919192 0.009429475607 -0.00050009999) -(0.4191919192 0.009695336429 -0.00050009999) -(0.4191919192 0.00984573433 -0.00050009999) -(0.4191919192 0.009929188095 -0.00050009999) -(0.4191919192 0.009975 -0.00050009999) -(0.4191919192 0.01 -0.00050009999) -(0.4242424242 0 -0.00050009999) -(0.4242424242 2.5e-05 -0.00050009999) -(0.4242424242 7.08119053e-05 -0.00050009999) -(0.4242424242 0.00015426567 -0.00050009999) -(0.4242424242 0.0003046635713 -0.00050009999) -(0.4242424242 0.0005705243934 -0.00050009999) -(0.4242424242 0.001024837958 -0.00050009999) -(0.4242424242 0.001758019915 -0.00050009999) -(0.4242424242 0.002838575912 -0.00050009999) -(0.4242424242 0.004235474916 -0.00050009999) -(0.4242424242 0.005764525084 -0.00050009999) -(0.4242424242 0.007161424088 -0.00050009999) -(0.4242424242 0.008241980085 -0.00050009999) -(0.4242424242 0.008975162042 -0.00050009999) -(0.4242424242 0.009429475607 -0.00050009999) -(0.4242424242 0.009695336429 -0.00050009999) -(0.4242424242 0.00984573433 -0.00050009999) -(0.4242424242 0.009929188095 -0.00050009999) -(0.4242424242 0.009975 -0.00050009999) -(0.4242424242 0.01 -0.00050009999) -(0.4292929293 0 -0.00050009999) -(0.4292929293 2.5e-05 -0.00050009999) -(0.4292929293 7.08119053e-05 -0.00050009999) -(0.4292929293 0.00015426567 -0.00050009999) -(0.4292929293 0.0003046635713 -0.00050009999) -(0.4292929293 0.0005705243934 -0.00050009999) -(0.4292929293 0.001024837958 -0.00050009999) -(0.4292929293 0.001758019915 -0.00050009999) -(0.4292929293 0.002838575912 -0.00050009999) -(0.4292929293 0.004235474916 -0.00050009999) -(0.4292929293 0.005764525084 -0.00050009999) -(0.4292929293 0.007161424088 -0.00050009999) -(0.4292929293 0.008241980085 -0.00050009999) -(0.4292929293 0.008975162042 -0.00050009999) -(0.4292929293 0.009429475607 -0.00050009999) -(0.4292929293 0.009695336429 -0.00050009999) -(0.4292929293 0.00984573433 -0.00050009999) -(0.4292929293 0.009929188095 -0.00050009999) -(0.4292929293 0.009975 -0.00050009999) -(0.4292929293 0.01 -0.00050009999) -(0.4343434343 0 -0.00050009999) -(0.4343434343 2.5e-05 -0.00050009999) -(0.4343434343 7.08119053e-05 -0.00050009999) -(0.4343434343 0.00015426567 -0.00050009999) -(0.4343434343 0.0003046635713 -0.00050009999) -(0.4343434343 0.0005705243934 -0.00050009999) -(0.4343434343 0.001024837958 -0.00050009999) -(0.4343434343 0.001758019915 -0.00050009999) -(0.4343434343 0.002838575912 -0.00050009999) -(0.4343434343 0.004235474916 -0.00050009999) -(0.4343434343 0.005764525084 -0.00050009999) -(0.4343434343 0.007161424088 -0.00050009999) -(0.4343434343 0.008241980085 -0.00050009999) -(0.4343434343 0.008975162042 -0.00050009999) -(0.4343434343 0.009429475607 -0.00050009999) -(0.4343434343 0.009695336429 -0.00050009999) -(0.4343434343 0.00984573433 -0.00050009999) -(0.4343434343 0.009929188095 -0.00050009999) -(0.4343434343 0.009975 -0.00050009999) -(0.4343434343 0.01 -0.00050009999) -(0.4393939394 0 -0.00050009999) -(0.4393939394 2.5e-05 -0.00050009999) -(0.4393939394 7.08119053e-05 -0.00050009999) -(0.4393939394 0.00015426567 -0.00050009999) -(0.4393939394 0.0003046635713 -0.00050009999) -(0.4393939394 0.0005705243934 -0.00050009999) -(0.4393939394 0.001024837958 -0.00050009999) -(0.4393939394 0.001758019915 -0.00050009999) -(0.4393939394 0.002838575912 -0.00050009999) -(0.4393939394 0.004235474916 -0.00050009999) -(0.4393939394 0.005764525084 -0.00050009999) -(0.4393939394 0.007161424088 -0.00050009999) -(0.4393939394 0.008241980085 -0.00050009999) -(0.4393939394 0.008975162042 -0.00050009999) -(0.4393939394 0.009429475607 -0.00050009999) -(0.4393939394 0.009695336429 -0.00050009999) -(0.4393939394 0.00984573433 -0.00050009999) -(0.4393939394 0.009929188095 -0.00050009999) -(0.4393939394 0.009975 -0.00050009999) -(0.4393939394 0.01 -0.00050009999) -(0.4444444444 0 -0.00050009999) -(0.4444444444 2.5e-05 -0.00050009999) -(0.4444444444 7.08119053e-05 -0.00050009999) -(0.4444444444 0.00015426567 -0.00050009999) -(0.4444444444 0.0003046635713 -0.00050009999) -(0.4444444444 0.0005705243934 -0.00050009999) -(0.4444444444 0.001024837958 -0.00050009999) -(0.4444444444 0.001758019915 -0.00050009999) -(0.4444444444 0.002838575912 -0.00050009999) -(0.4444444444 0.004235474916 -0.00050009999) -(0.4444444444 0.005764525084 -0.00050009999) -(0.4444444444 0.007161424088 -0.00050009999) -(0.4444444444 0.008241980085 -0.00050009999) -(0.4444444444 0.008975162042 -0.00050009999) -(0.4444444444 0.009429475607 -0.00050009999) -(0.4444444444 0.009695336429 -0.00050009999) -(0.4444444444 0.00984573433 -0.00050009999) -(0.4444444444 0.009929188095 -0.00050009999) -(0.4444444444 0.009975 -0.00050009999) -(0.4444444444 0.01 -0.00050009999) -(0.4494949495 0 -0.00050009999) -(0.4494949495 2.5e-05 -0.00050009999) -(0.4494949495 7.08119053e-05 -0.00050009999) -(0.4494949495 0.00015426567 -0.00050009999) -(0.4494949495 0.0003046635713 -0.00050009999) -(0.4494949495 0.0005705243934 -0.00050009999) -(0.4494949495 0.001024837958 -0.00050009999) -(0.4494949495 0.001758019915 -0.00050009999) -(0.4494949495 0.002838575912 -0.00050009999) -(0.4494949495 0.004235474916 -0.00050009999) -(0.4494949495 0.005764525084 -0.00050009999) -(0.4494949495 0.007161424088 -0.00050009999) -(0.4494949495 0.008241980085 -0.00050009999) -(0.4494949495 0.008975162042 -0.00050009999) -(0.4494949495 0.009429475607 -0.00050009999) -(0.4494949495 0.009695336429 -0.00050009999) -(0.4494949495 0.00984573433 -0.00050009999) -(0.4494949495 0.009929188095 -0.00050009999) -(0.4494949495 0.009975 -0.00050009999) -(0.4494949495 0.01 -0.00050009999) -(0.4545454545 0 -0.00050009999) -(0.4545454545 2.5e-05 -0.00050009999) -(0.4545454545 7.08119053e-05 -0.00050009999) -(0.4545454545 0.00015426567 -0.00050009999) -(0.4545454545 0.0003046635713 -0.00050009999) -(0.4545454545 0.0005705243934 -0.00050009999) -(0.4545454545 0.001024837958 -0.00050009999) -(0.4545454545 0.001758019915 -0.00050009999) -(0.4545454545 0.002838575912 -0.00050009999) -(0.4545454545 0.004235474916 -0.00050009999) -(0.4545454545 0.005764525084 -0.00050009999) -(0.4545454545 0.007161424088 -0.00050009999) -(0.4545454545 0.008241980085 -0.00050009999) -(0.4545454545 0.008975162042 -0.00050009999) -(0.4545454545 0.009429475607 -0.00050009999) -(0.4545454545 0.009695336429 -0.00050009999) -(0.4545454545 0.00984573433 -0.00050009999) -(0.4545454545 0.009929188095 -0.00050009999) -(0.4545454545 0.009975 -0.00050009999) -(0.4545454545 0.01 -0.00050009999) -(0.4595959596 0 -0.00050009999) -(0.4595959596 2.5e-05 -0.00050009999) -(0.4595959596 7.08119053e-05 -0.00050009999) -(0.4595959596 0.00015426567 -0.00050009999) -(0.4595959596 0.0003046635713 -0.00050009999) -(0.4595959596 0.0005705243934 -0.00050009999) -(0.4595959596 0.001024837958 -0.00050009999) -(0.4595959596 0.001758019915 -0.00050009999) -(0.4595959596 0.002838575912 -0.00050009999) -(0.4595959596 0.004235474916 -0.00050009999) -(0.4595959596 0.005764525084 -0.00050009999) -(0.4595959596 0.007161424088 -0.00050009999) -(0.4595959596 0.008241980085 -0.00050009999) -(0.4595959596 0.008975162042 -0.00050009999) -(0.4595959596 0.009429475607 -0.00050009999) -(0.4595959596 0.009695336429 -0.00050009999) -(0.4595959596 0.00984573433 -0.00050009999) -(0.4595959596 0.009929188095 -0.00050009999) -(0.4595959596 0.009975 -0.00050009999) -(0.4595959596 0.01 -0.00050009999) -(0.4646464646 0 -0.00050009999) -(0.4646464646 2.5e-05 -0.00050009999) -(0.4646464646 7.08119053e-05 -0.00050009999) -(0.4646464646 0.00015426567 -0.00050009999) -(0.4646464646 0.0003046635713 -0.00050009999) -(0.4646464646 0.0005705243934 -0.00050009999) -(0.4646464646 0.001024837958 -0.00050009999) -(0.4646464646 0.001758019915 -0.00050009999) -(0.4646464646 0.002838575912 -0.00050009999) -(0.4646464646 0.004235474916 -0.00050009999) -(0.4646464646 0.005764525084 -0.00050009999) -(0.4646464646 0.007161424088 -0.00050009999) -(0.4646464646 0.008241980085 -0.00050009999) -(0.4646464646 0.008975162042 -0.00050009999) -(0.4646464646 0.009429475607 -0.00050009999) -(0.4646464646 0.009695336429 -0.00050009999) -(0.4646464646 0.00984573433 -0.00050009999) -(0.4646464646 0.009929188095 -0.00050009999) -(0.4646464646 0.009975 -0.00050009999) -(0.4646464646 0.01 -0.00050009999) -(0.4696969697 0 -0.00050009999) -(0.4696969697 2.5e-05 -0.00050009999) -(0.4696969697 7.08119053e-05 -0.00050009999) -(0.4696969697 0.00015426567 -0.00050009999) -(0.4696969697 0.0003046635713 -0.00050009999) -(0.4696969697 0.0005705243934 -0.00050009999) -(0.4696969697 0.001024837958 -0.00050009999) -(0.4696969697 0.001758019915 -0.00050009999) -(0.4696969697 0.002838575912 -0.00050009999) -(0.4696969697 0.004235474916 -0.00050009999) -(0.4696969697 0.005764525084 -0.00050009999) -(0.4696969697 0.007161424088 -0.00050009999) -(0.4696969697 0.008241980085 -0.00050009999) -(0.4696969697 0.008975162042 -0.00050009999) -(0.4696969697 0.009429475607 -0.00050009999) -(0.4696969697 0.009695336429 -0.00050009999) -(0.4696969697 0.00984573433 -0.00050009999) -(0.4696969697 0.009929188095 -0.00050009999) -(0.4696969697 0.009975 -0.00050009999) -(0.4696969697 0.01 -0.00050009999) -(0.4747474747 0 -0.00050009999) -(0.4747474747 2.5e-05 -0.00050009999) -(0.4747474747 7.08119053e-05 -0.00050009999) -(0.4747474747 0.00015426567 -0.00050009999) -(0.4747474747 0.0003046635713 -0.00050009999) -(0.4747474747 0.0005705243934 -0.00050009999) -(0.4747474747 0.001024837958 -0.00050009999) -(0.4747474747 0.001758019915 -0.00050009999) -(0.4747474747 0.002838575912 -0.00050009999) -(0.4747474747 0.004235474916 -0.00050009999) -(0.4747474747 0.005764525084 -0.00050009999) -(0.4747474747 0.007161424088 -0.00050009999) -(0.4747474747 0.008241980085 -0.00050009999) -(0.4747474747 0.008975162042 -0.00050009999) -(0.4747474747 0.009429475607 -0.00050009999) -(0.4747474747 0.009695336429 -0.00050009999) -(0.4747474747 0.00984573433 -0.00050009999) -(0.4747474747 0.009929188095 -0.00050009999) -(0.4747474747 0.009975 -0.00050009999) -(0.4747474747 0.01 -0.00050009999) -(0.4797979798 0 -0.00050009999) -(0.4797979798 2.5e-05 -0.00050009999) -(0.4797979798 7.08119053e-05 -0.00050009999) -(0.4797979798 0.00015426567 -0.00050009999) -(0.4797979798 0.0003046635713 -0.00050009999) -(0.4797979798 0.0005705243934 -0.00050009999) -(0.4797979798 0.001024837958 -0.00050009999) -(0.4797979798 0.001758019915 -0.00050009999) -(0.4797979798 0.002838575912 -0.00050009999) -(0.4797979798 0.004235474916 -0.00050009999) -(0.4797979798 0.005764525084 -0.00050009999) -(0.4797979798 0.007161424088 -0.00050009999) -(0.4797979798 0.008241980085 -0.00050009999) -(0.4797979798 0.008975162042 -0.00050009999) -(0.4797979798 0.009429475607 -0.00050009999) -(0.4797979798 0.009695336429 -0.00050009999) -(0.4797979798 0.00984573433 -0.00050009999) -(0.4797979798 0.009929188095 -0.00050009999) -(0.4797979798 0.009975 -0.00050009999) -(0.4797979798 0.01 -0.00050009999) -(0.4848484848 0 -0.00050009999) -(0.4848484848 2.5e-05 -0.00050009999) -(0.4848484848 7.08119053e-05 -0.00050009999) -(0.4848484848 0.00015426567 -0.00050009999) -(0.4848484848 0.0003046635713 -0.00050009999) -(0.4848484848 0.0005705243934 -0.00050009999) -(0.4848484848 0.001024837958 -0.00050009999) -(0.4848484848 0.001758019915 -0.00050009999) -(0.4848484848 0.002838575912 -0.00050009999) -(0.4848484848 0.004235474916 -0.00050009999) -(0.4848484848 0.005764525084 -0.00050009999) -(0.4848484848 0.007161424088 -0.00050009999) -(0.4848484848 0.008241980085 -0.00050009999) -(0.4848484848 0.008975162042 -0.00050009999) -(0.4848484848 0.009429475607 -0.00050009999) -(0.4848484848 0.009695336429 -0.00050009999) -(0.4848484848 0.00984573433 -0.00050009999) -(0.4848484848 0.009929188095 -0.00050009999) -(0.4848484848 0.009975 -0.00050009999) -(0.4848484848 0.01 -0.00050009999) -(0.4898989899 0 -0.00050009999) -(0.4898989899 2.5e-05 -0.00050009999) -(0.4898989899 7.08119053e-05 -0.00050009999) -(0.4898989899 0.00015426567 -0.00050009999) -(0.4898989899 0.0003046635713 -0.00050009999) -(0.4898989899 0.0005705243934 -0.00050009999) -(0.4898989899 0.001024837958 -0.00050009999) -(0.4898989899 0.001758019915 -0.00050009999) -(0.4898989899 0.002838575912 -0.00050009999) -(0.4898989899 0.004235474916 -0.00050009999) -(0.4898989899 0.005764525084 -0.00050009999) -(0.4898989899 0.007161424088 -0.00050009999) -(0.4898989899 0.008241980085 -0.00050009999) -(0.4898989899 0.008975162042 -0.00050009999) -(0.4898989899 0.009429475607 -0.00050009999) -(0.4898989899 0.009695336429 -0.00050009999) -(0.4898989899 0.00984573433 -0.00050009999) -(0.4898989899 0.009929188095 -0.00050009999) -(0.4898989899 0.009975 -0.00050009999) -(0.4898989899 0.01 -0.00050009999) -(0.4949494949 0 -0.00050009999) -(0.4949494949 2.5e-05 -0.00050009999) -(0.4949494949 7.08119053e-05 -0.00050009999) -(0.4949494949 0.00015426567 -0.00050009999) -(0.4949494949 0.0003046635713 -0.00050009999) -(0.4949494949 0.0005705243934 -0.00050009999) -(0.4949494949 0.001024837958 -0.00050009999) -(0.4949494949 0.001758019915 -0.00050009999) -(0.4949494949 0.002838575912 -0.00050009999) -(0.4949494949 0.004235474916 -0.00050009999) -(0.4949494949 0.005764525084 -0.00050009999) -(0.4949494949 0.007161424088 -0.00050009999) -(0.4949494949 0.008241980085 -0.00050009999) -(0.4949494949 0.008975162042 -0.00050009999) -(0.4949494949 0.009429475607 -0.00050009999) -(0.4949494949 0.009695336429 -0.00050009999) -(0.4949494949 0.00984573433 -0.00050009999) -(0.4949494949 0.009929188095 -0.00050009999) -(0.4949494949 0.009975 -0.00050009999) -(0.4949494949 0.01 -0.00050009999) -(0.5 0 -0.00050009999) -(0.5 2.5e-05 -0.00050009999) -(0.5 7.08119053e-05 -0.00050009999) -(0.5 0.00015426567 -0.00050009999) -(0.5 0.0003046635713 -0.00050009999) -(0.5 0.0005705243934 -0.00050009999) -(0.5 0.001024837958 -0.00050009999) -(0.5 0.001758019915 -0.00050009999) -(0.5 0.002838575912 -0.00050009999) -(0.5 0.004235474916 -0.00050009999) -(0.5 0.005764525084 -0.00050009999) -(0.5 0.007161424088 -0.00050009999) -(0.5 0.008241980085 -0.00050009999) -(0.5 0.008975162042 -0.00050009999) -(0.5 0.009429475607 -0.00050009999) -(0.5 0.009695336429 -0.00050009999) -(0.5 0.00984573433 -0.00050009999) -(0.5 0.009929188095 -0.00050009999) -(0.5 0.009975 -0.00050009999) -(0.5 0.01 -0.00050009999) -) - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/zoneToPatchName b/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/zoneToPatchName deleted file mode 100755 index 929cab1d7..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe/constant/polyMesh/zoneToPatchName +++ /dev/null @@ -1,40 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class wordList; - location "constant/polyMesh"; - object zoneToPatchName; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -16 -( -unknown -unknown -unknown -unknown -unknown -unknown -unknown -unknown -unknown -unknown -unknown -int_SOLID -WALL_1 -WALL_2 -INLET -OUTLET -) - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/boundary b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/boundary deleted file mode 100755 index 7a59636ef..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/boundary +++ /dev/null @@ -1,52 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class polyBoundaryMesh; - location "constant/polyMesh"; - object boundary; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -5 -( - WALL_1 - { - type wall; - nFaces 99; - startFace 3644; - } - WALL_2 - { - type wall; - nFaces 99; - startFace 3743; - } - INLET - { - type patch; - nFaces 19; - startFace 3842; - } - OUTLET - { - type patch; - nFaces 19; - startFace 3861; - } - frontAndBackPlanes - { - type empty; - nFaces 3762; - startFace 3880; - } -) - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/cellZones b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/cellZones deleted file mode 100755 index 965611ab5..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/cellZones +++ /dev/null @@ -1,21 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class regIOobject; - location "constant/polyMesh"; - object cellZones; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -0 -() - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faceZones b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faceZones deleted file mode 100755 index 6469973da..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faceZones +++ /dev/null @@ -1,21 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class regIOobject; - location "constant/polyMesh"; - object faceZones; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -0 -() - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faces b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faces deleted file mode 100755 index d2a85b7dd..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/faces +++ /dev/null @@ -1,7666 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class faceList; - location "constant/polyMesh"; - object faces; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -7642 -( -4(3 2003 2002 2) -4(3 1 2001 2003) -4(5 2005 2004 4) -4(3 2003 2005 5) -4(7 2007 2006 6) -4(5 2005 2007 7) -4(9 2009 2008 8) -4(7 2007 2009 9) -4(11 2011 2010 10) -4(9 2009 2011 11) -4(13 2013 2012 12) -4(11 2011 2013 13) -4(15 2015 2014 14) -4(13 2013 2015 15) -4(17 2017 2016 16) -4(15 2015 2017 17) -4(19 2019 2018 18) -4(17 2017 2019 19) -4(21 2021 2020 20) -4(19 2019 2021 21) -4(23 2023 2022 22) -4(21 2021 2023 23) -4(25 2025 2024 24) -4(23 2023 2025 25) -4(27 2027 2026 26) -4(25 2025 2027 27) -4(29 2029 2028 28) -4(27 2027 2029 29) -4(31 2031 2030 30) -4(29 2029 2031 31) -4(33 2033 2032 32) -4(31 2031 2033 33) -4(35 2035 2034 34) -4(33 2033 2035 35) -4(37 2037 2036 36) -4(35 2035 2037 37) -4(37 2037 2039 39) -4(3 41 2041 2003) -4(40 2040 2041 41) -4(5 42 2042 2005) -4(41 2041 2042 42) -4(7 43 2043 2007) -4(42 2042 2043 43) -4(9 44 2044 2009) -4(43 2043 2044 44) -4(11 45 2045 2011) -4(44 2044 2045 45) -4(13 46 2046 2013) -4(45 2045 2046 46) -4(15 47 2047 2015) -4(46 2046 2047 47) -4(17 48 2048 2017) -4(47 2047 2048 48) -4(19 49 2049 2019) -4(48 2048 2049 49) -4(21 50 2050 2021) -4(49 2049 2050 50) -4(23 51 2051 2023) -4(50 2050 2051 51) -4(25 52 2052 2025) -4(51 2051 2052 52) -4(27 53 2053 2027) -4(52 2052 2053 53) -4(29 54 2054 2029) -4(53 2053 2054 54) -4(31 55 2055 2031) -4(54 2054 2055 55) -4(33 56 2056 2033) -4(55 2055 2056 56) -4(35 57 2057 2035) -4(56 2056 2057 57) -4(37 58 2058 2037) -4(57 2057 2058 58) -4(58 2058 2059 59) -4(41 61 2061 2041) -4(60 2060 2061 61) -4(42 62 2062 2042) -4(61 2061 2062 62) -4(43 63 2063 2043) -4(62 2062 2063 63) -4(44 64 2064 2044) -4(63 2063 2064 64) -4(45 65 2065 2045) -4(64 2064 2065 65) -4(46 66 2066 2046) -4(65 2065 2066 66) -4(47 67 2067 2047) -4(66 2066 2067 67) -4(48 68 2068 2048) -4(67 2067 2068 68) -4(49 69 2069 2049) -4(68 2068 2069 69) -4(50 70 2070 2050) -4(69 2069 2070 70) -4(51 71 2071 2051) -4(70 2070 2071 71) -4(52 72 2072 2052) -4(71 2071 2072 72) -4(53 73 2073 2053) -4(72 2072 2073 73) -4(54 74 2074 2054) -4(73 2073 2074 74) -4(55 75 2075 2055) -4(74 2074 2075 75) -4(56 76 2076 2056) -4(75 2075 2076 76) -4(57 77 2077 2057) -4(76 2076 2077 77) -4(58 78 2078 2058) -4(77 2077 2078 78) -4(78 2078 2079 79) -4(61 81 2081 2061) -4(80 2080 2081 81) -4(62 82 2082 2062) -4(81 2081 2082 82) -4(63 83 2083 2063) -4(82 2082 2083 83) -4(64 84 2084 2064) -4(83 2083 2084 84) -4(65 85 2085 2065) -4(84 2084 2085 85) -4(66 86 2086 2066) -4(85 2085 2086 86) -4(67 87 2087 2067) -4(86 2086 2087 87) -4(68 88 2088 2068) -4(87 2087 2088 88) -4(69 89 2089 2069) -4(88 2088 2089 89) -4(70 90 2090 2070) -4(89 2089 2090 90) -4(71 91 2091 2071) -4(90 2090 2091 91) -4(72 92 2092 2072) -4(91 2091 2092 92) -4(73 93 2093 2073) -4(92 2092 2093 93) -4(74 94 2094 2074) -4(93 2093 2094 94) -4(75 95 2095 2075) -4(94 2094 2095 95) -4(76 96 2096 2076) -4(95 2095 2096 96) -4(77 97 2097 2077) -4(96 2096 2097 97) -4(78 98 2098 2078) -4(97 2097 2098 98) -4(98 2098 2099 99) -4(81 101 2101 2081) -4(100 2100 2101 101) -4(82 102 2102 2082) -4(101 2101 2102 102) -4(83 103 2103 2083) -4(102 2102 2103 103) -4(84 104 2104 2084) -4(103 2103 2104 104) -4(85 105 2105 2085) -4(104 2104 2105 105) -4(86 106 2106 2086) -4(105 2105 2106 106) -4(87 107 2107 2087) -4(106 2106 2107 107) -4(88 108 2108 2088) -4(107 2107 2108 108) -4(89 109 2109 2089) -4(108 2108 2109 109) -4(90 110 2110 2090) -4(109 2109 2110 110) -4(91 111 2111 2091) -4(110 2110 2111 111) -4(92 112 2112 2092) -4(111 2111 2112 112) -4(93 113 2113 2093) -4(112 2112 2113 113) -4(94 114 2114 2094) -4(113 2113 2114 114) -4(95 115 2115 2095) -4(114 2114 2115 115) -4(96 116 2116 2096) -4(115 2115 2116 116) -4(97 117 2117 2097) -4(116 2116 2117 117) -4(98 118 2118 2098) -4(117 2117 2118 118) -4(118 2118 2119 119) -4(101 121 2121 2101) -4(120 2120 2121 121) -4(102 122 2122 2102) -4(121 2121 2122 122) -4(103 123 2123 2103) -4(122 2122 2123 123) -4(104 124 2124 2104) -4(123 2123 2124 124) -4(105 125 2125 2105) -4(124 2124 2125 125) -4(106 126 2126 2106) -4(125 2125 2126 126) -4(107 127 2127 2107) -4(126 2126 2127 127) -4(108 128 2128 2108) -4(127 2127 2128 128) -4(109 129 2129 2109) -4(128 2128 2129 129) -4(110 130 2130 2110) -4(129 2129 2130 130) -4(111 131 2131 2111) -4(130 2130 2131 131) -4(112 132 2132 2112) -4(131 2131 2132 132) -4(113 133 2133 2113) -4(132 2132 2133 133) -4(114 134 2134 2114) -4(133 2133 2134 134) -4(115 135 2135 2115) -4(134 2134 2135 135) -4(116 136 2136 2116) -4(135 2135 2136 136) -4(117 137 2137 2117) -4(136 2136 2137 137) -4(118 138 2138 2118) -4(137 2137 2138 138) -4(138 2138 2139 139) -4(121 141 2141 2121) -4(140 2140 2141 141) -4(122 142 2142 2122) -4(141 2141 2142 142) -4(123 143 2143 2123) -4(142 2142 2143 143) -4(124 144 2144 2124) -4(143 2143 2144 144) -4(125 145 2145 2125) -4(144 2144 2145 145) -4(126 146 2146 2126) -4(145 2145 2146 146) -4(127 147 2147 2127) -4(146 2146 2147 147) -4(128 148 2148 2128) -4(147 2147 2148 148) -4(129 149 2149 2129) -4(148 2148 2149 149) -4(130 150 2150 2130) -4(149 2149 2150 150) -4(131 151 2151 2131) -4(150 2150 2151 151) -4(132 152 2152 2132) -4(151 2151 2152 152) -4(133 153 2153 2133) -4(152 2152 2153 153) -4(134 154 2154 2134) -4(153 2153 2154 154) -4(135 155 2155 2135) -4(154 2154 2155 155) -4(136 156 2156 2136) -4(155 2155 2156 156) -4(137 157 2157 2137) -4(156 2156 2157 157) -4(138 158 2158 2138) -4(157 2157 2158 158) -4(158 2158 2159 159) -4(141 161 2161 2141) -4(160 2160 2161 161) -4(142 162 2162 2142) -4(161 2161 2162 162) -4(143 163 2163 2143) -4(162 2162 2163 163) -4(144 164 2164 2144) -4(163 2163 2164 164) -4(145 165 2165 2145) -4(164 2164 2165 165) -4(146 166 2166 2146) -4(165 2165 2166 166) -4(147 167 2167 2147) -4(166 2166 2167 167) -4(148 168 2168 2148) -4(167 2167 2168 168) -4(149 169 2169 2149) -4(168 2168 2169 169) -4(150 170 2170 2150) -4(169 2169 2170 170) -4(151 171 2171 2151) -4(170 2170 2171 171) -4(152 172 2172 2152) -4(171 2171 2172 172) -4(153 173 2173 2153) -4(172 2172 2173 173) -4(154 174 2174 2154) -4(173 2173 2174 174) -4(155 175 2175 2155) -4(174 2174 2175 175) -4(156 176 2176 2156) -4(175 2175 2176 176) -4(157 177 2177 2157) -4(176 2176 2177 177) -4(158 178 2178 2158) -4(177 2177 2178 178) -4(178 2178 2179 179) -4(161 181 2181 2161) -4(180 2180 2181 181) -4(162 182 2182 2162) -4(181 2181 2182 182) -4(163 183 2183 2163) -4(182 2182 2183 183) -4(164 184 2184 2164) -4(183 2183 2184 184) -4(165 185 2185 2165) -4(184 2184 2185 185) -4(166 186 2186 2166) -4(185 2185 2186 186) -4(167 187 2187 2167) -4(186 2186 2187 187) -4(168 188 2188 2168) -4(187 2187 2188 188) -4(169 189 2189 2169) -4(188 2188 2189 189) -4(170 190 2190 2170) -4(189 2189 2190 190) -4(171 191 2191 2171) -4(190 2190 2191 191) -4(172 192 2192 2172) -4(191 2191 2192 192) -4(173 193 2193 2173) -4(192 2192 2193 193) -4(174 194 2194 2174) -4(193 2193 2194 194) -4(175 195 2195 2175) -4(194 2194 2195 195) -4(176 196 2196 2176) -4(195 2195 2196 196) -4(177 197 2197 2177) -4(196 2196 2197 197) -4(178 198 2198 2178) -4(197 2197 2198 198) -4(198 2198 2199 199) -4(181 201 2201 2181) -4(200 2200 2201 201) -4(182 202 2202 2182) -4(201 2201 2202 202) -4(183 203 2203 2183) -4(202 2202 2203 203) -4(184 204 2204 2184) -4(203 2203 2204 204) -4(185 205 2205 2185) -4(204 2204 2205 205) -4(186 206 2206 2186) -4(205 2205 2206 206) -4(187 207 2207 2187) -4(206 2206 2207 207) -4(188 208 2208 2188) -4(207 2207 2208 208) -4(189 209 2209 2189) -4(208 2208 2209 209) -4(190 210 2210 2190) -4(209 2209 2210 210) -4(191 211 2211 2191) -4(210 2210 2211 211) -4(192 212 2212 2192) -4(211 2211 2212 212) -4(193 213 2213 2193) -4(212 2212 2213 213) -4(194 214 2214 2194) -4(213 2213 2214 214) -4(195 215 2215 2195) -4(214 2214 2215 215) -4(196 216 2216 2196) -4(215 2215 2216 216) -4(197 217 2217 2197) -4(216 2216 2217 217) -4(198 218 2218 2198) -4(217 2217 2218 218) -4(218 2218 2219 219) -4(201 221 2221 2201) -4(220 2220 2221 221) -4(202 222 2222 2202) -4(221 2221 2222 222) -4(203 223 2223 2203) -4(222 2222 2223 223) -4(204 224 2224 2204) -4(223 2223 2224 224) -4(205 225 2225 2205) -4(224 2224 2225 225) -4(206 226 2226 2206) -4(225 2225 2226 226) -4(207 227 2227 2207) -4(226 2226 2227 227) -4(208 228 2228 2208) -4(227 2227 2228 228) -4(209 229 2229 2209) -4(228 2228 2229 229) -4(210 230 2230 2210) -4(229 2229 2230 230) -4(211 231 2231 2211) -4(230 2230 2231 231) -4(212 232 2232 2212) -4(231 2231 2232 232) -4(213 233 2233 2213) -4(232 2232 2233 233) -4(214 234 2234 2214) -4(233 2233 2234 234) -4(215 235 2235 2215) -4(234 2234 2235 235) -4(216 236 2236 2216) -4(235 2235 2236 236) -4(217 237 2237 2217) -4(236 2236 2237 237) -4(218 238 2238 2218) -4(237 2237 2238 238) -4(238 2238 2239 239) -4(221 241 2241 2221) -4(240 2240 2241 241) -4(222 242 2242 2222) -4(241 2241 2242 242) -4(223 243 2243 2223) -4(242 2242 2243 243) -4(224 244 2244 2224) -4(243 2243 2244 244) -4(225 245 2245 2225) -4(244 2244 2245 245) -4(226 246 2246 2226) -4(245 2245 2246 246) -4(227 247 2247 2227) -4(246 2246 2247 247) -4(228 248 2248 2228) -4(247 2247 2248 248) -4(229 249 2249 2229) -4(248 2248 2249 249) -4(230 250 2250 2230) -4(249 2249 2250 250) -4(231 251 2251 2231) -4(250 2250 2251 251) -4(232 252 2252 2232) -4(251 2251 2252 252) -4(233 253 2253 2233) -4(252 2252 2253 253) -4(234 254 2254 2234) -4(253 2253 2254 254) -4(235 255 2255 2235) -4(254 2254 2255 255) -4(236 256 2256 2236) -4(255 2255 2256 256) -4(237 257 2257 2237) -4(256 2256 2257 257) -4(238 258 2258 2238) -4(257 2257 2258 258) -4(258 2258 2259 259) -4(241 261 2261 2241) -4(260 2260 2261 261) -4(242 262 2262 2242) -4(261 2261 2262 262) -4(243 263 2263 2243) -4(262 2262 2263 263) -4(244 264 2264 2244) -4(263 2263 2264 264) -4(245 265 2265 2245) -4(264 2264 2265 265) -4(246 266 2266 2246) -4(265 2265 2266 266) -4(247 267 2267 2247) -4(266 2266 2267 267) -4(248 268 2268 2248) -4(267 2267 2268 268) -4(249 269 2269 2249) -4(268 2268 2269 269) -4(250 270 2270 2250) -4(269 2269 2270 270) -4(251 271 2271 2251) -4(270 2270 2271 271) -4(252 272 2272 2252) -4(271 2271 2272 272) -4(253 273 2273 2253) -4(272 2272 2273 273) -4(254 274 2274 2254) -4(273 2273 2274 274) -4(255 275 2275 2255) -4(274 2274 2275 275) -4(256 276 2276 2256) -4(275 2275 2276 276) -4(257 277 2277 2257) -4(276 2276 2277 277) -4(258 278 2278 2258) -4(277 2277 2278 278) -4(278 2278 2279 279) -4(261 281 2281 2261) -4(280 2280 2281 281) -4(262 282 2282 2262) -4(281 2281 2282 282) -4(263 283 2283 2263) -4(282 2282 2283 283) -4(264 284 2284 2264) -4(283 2283 2284 284) -4(265 285 2285 2265) -4(284 2284 2285 285) -4(266 286 2286 2266) -4(285 2285 2286 286) -4(267 287 2287 2267) -4(286 2286 2287 287) -4(268 288 2288 2268) -4(287 2287 2288 288) -4(269 289 2289 2269) -4(288 2288 2289 289) -4(270 290 2290 2270) -4(289 2289 2290 290) -4(271 291 2291 2271) -4(290 2290 2291 291) -4(272 292 2292 2272) -4(291 2291 2292 292) -4(273 293 2293 2273) -4(292 2292 2293 293) -4(274 294 2294 2274) -4(293 2293 2294 294) -4(275 295 2295 2275) -4(294 2294 2295 295) -4(276 296 2296 2276) -4(295 2295 2296 296) -4(277 297 2297 2277) -4(296 2296 2297 297) -4(278 298 2298 2278) -4(297 2297 2298 298) -4(298 2298 2299 299) -4(281 301 2301 2281) -4(300 2300 2301 301) -4(282 302 2302 2282) -4(301 2301 2302 302) -4(283 303 2303 2283) -4(302 2302 2303 303) -4(284 304 2304 2284) -4(303 2303 2304 304) -4(285 305 2305 2285) -4(304 2304 2305 305) -4(286 306 2306 2286) -4(305 2305 2306 306) -4(287 307 2307 2287) -4(306 2306 2307 307) -4(288 308 2308 2288) -4(307 2307 2308 308) -4(289 309 2309 2289) -4(308 2308 2309 309) -4(290 310 2310 2290) -4(309 2309 2310 310) -4(291 311 2311 2291) -4(310 2310 2311 311) -4(292 312 2312 2292) -4(311 2311 2312 312) -4(293 313 2313 2293) -4(312 2312 2313 313) -4(294 314 2314 2294) -4(313 2313 2314 314) -4(295 315 2315 2295) -4(314 2314 2315 315) -4(296 316 2316 2296) -4(315 2315 2316 316) -4(297 317 2317 2297) -4(316 2316 2317 317) -4(298 318 2318 2298) -4(317 2317 2318 318) -4(318 2318 2319 319) -4(301 321 2321 2301) -4(320 2320 2321 321) -4(302 322 2322 2302) -4(321 2321 2322 322) -4(303 323 2323 2303) -4(322 2322 2323 323) -4(304 324 2324 2304) -4(323 2323 2324 324) -4(305 325 2325 2305) -4(324 2324 2325 325) -4(306 326 2326 2306) -4(325 2325 2326 326) -4(307 327 2327 2307) -4(326 2326 2327 327) -4(308 328 2328 2308) -4(327 2327 2328 328) -4(309 329 2329 2309) -4(328 2328 2329 329) -4(310 330 2330 2310) -4(329 2329 2330 330) -4(311 331 2331 2311) -4(330 2330 2331 331) -4(312 332 2332 2312) -4(331 2331 2332 332) -4(313 333 2333 2313) -4(332 2332 2333 333) -4(314 334 2334 2314) -4(333 2333 2334 334) -4(315 335 2335 2315) -4(334 2334 2335 335) -4(316 336 2336 2316) -4(335 2335 2336 336) -4(317 337 2337 2317) -4(336 2336 2337 337) -4(318 338 2338 2318) -4(337 2337 2338 338) -4(338 2338 2339 339) -4(321 341 2341 2321) -4(340 2340 2341 341) -4(322 342 2342 2322) -4(341 2341 2342 342) -4(323 343 2343 2323) -4(342 2342 2343 343) -4(324 344 2344 2324) -4(343 2343 2344 344) -4(325 345 2345 2325) -4(344 2344 2345 345) -4(326 346 2346 2326) -4(345 2345 2346 346) -4(327 347 2347 2327) -4(346 2346 2347 347) -4(328 348 2348 2328) -4(347 2347 2348 348) -4(329 349 2349 2329) -4(348 2348 2349 349) -4(330 350 2350 2330) -4(349 2349 2350 350) -4(331 351 2351 2331) -4(350 2350 2351 351) -4(332 352 2352 2332) -4(351 2351 2352 352) -4(333 353 2353 2333) -4(352 2352 2353 353) -4(334 354 2354 2334) -4(353 2353 2354 354) -4(335 355 2355 2335) -4(354 2354 2355 355) -4(336 356 2356 2336) -4(355 2355 2356 356) -4(337 357 2357 2337) -4(356 2356 2357 357) -4(338 358 2358 2338) -4(357 2357 2358 358) -4(358 2358 2359 359) -4(341 361 2361 2341) -4(360 2360 2361 361) -4(342 362 2362 2342) -4(361 2361 2362 362) -4(343 363 2363 2343) -4(362 2362 2363 363) -4(344 364 2364 2344) -4(363 2363 2364 364) -4(345 365 2365 2345) -4(364 2364 2365 365) -4(346 366 2366 2346) -4(365 2365 2366 366) -4(347 367 2367 2347) -4(366 2366 2367 367) -4(348 368 2368 2348) -4(367 2367 2368 368) -4(349 369 2369 2349) -4(368 2368 2369 369) -4(350 370 2370 2350) -4(369 2369 2370 370) -4(351 371 2371 2351) -4(370 2370 2371 371) -4(352 372 2372 2352) -4(371 2371 2372 372) -4(353 373 2373 2353) -4(372 2372 2373 373) -4(354 374 2374 2354) -4(373 2373 2374 374) -4(355 375 2375 2355) -4(374 2374 2375 375) -4(356 376 2376 2356) -4(375 2375 2376 376) -4(357 377 2377 2357) -4(376 2376 2377 377) -4(358 378 2378 2358) -4(377 2377 2378 378) -4(378 2378 2379 379) -4(361 381 2381 2361) -4(380 2380 2381 381) -4(362 382 2382 2362) -4(381 2381 2382 382) -4(363 383 2383 2363) -4(382 2382 2383 383) -4(364 384 2384 2364) -4(383 2383 2384 384) -4(365 385 2385 2365) -4(384 2384 2385 385) -4(366 386 2386 2366) -4(385 2385 2386 386) -4(367 387 2387 2367) -4(386 2386 2387 387) -4(368 388 2388 2368) -4(387 2387 2388 388) -4(369 389 2389 2369) -4(388 2388 2389 389) -4(370 390 2390 2370) -4(389 2389 2390 390) -4(371 391 2391 2371) -4(390 2390 2391 391) -4(372 392 2392 2372) -4(391 2391 2392 392) -4(373 393 2393 2373) -4(392 2392 2393 393) -4(374 394 2394 2374) -4(393 2393 2394 394) -4(375 395 2395 2375) -4(394 2394 2395 395) -4(376 396 2396 2376) -4(395 2395 2396 396) -4(377 397 2397 2377) -4(396 2396 2397 397) -4(378 398 2398 2378) -4(397 2397 2398 398) -4(398 2398 2399 399) -4(381 401 2401 2381) -4(400 2400 2401 401) -4(382 402 2402 2382) -4(401 2401 2402 402) -4(383 403 2403 2383) -4(402 2402 2403 403) -4(384 404 2404 2384) -4(403 2403 2404 404) -4(385 405 2405 2385) -4(404 2404 2405 405) -4(386 406 2406 2386) -4(405 2405 2406 406) -4(387 407 2407 2387) -4(406 2406 2407 407) -4(388 408 2408 2388) -4(407 2407 2408 408) -4(389 409 2409 2389) -4(408 2408 2409 409) -4(390 410 2410 2390) -4(409 2409 2410 410) -4(391 411 2411 2391) -4(410 2410 2411 411) -4(392 412 2412 2392) -4(411 2411 2412 412) -4(393 413 2413 2393) -4(412 2412 2413 413) -4(394 414 2414 2394) -4(413 2413 2414 414) -4(395 415 2415 2395) -4(414 2414 2415 415) -4(396 416 2416 2396) -4(415 2415 2416 416) -4(397 417 2417 2397) -4(416 2416 2417 417) -4(398 418 2418 2398) -4(417 2417 2418 418) -4(418 2418 2419 419) -4(401 421 2421 2401) -4(420 2420 2421 421) -4(402 422 2422 2402) -4(421 2421 2422 422) -4(403 423 2423 2403) -4(422 2422 2423 423) -4(404 424 2424 2404) -4(423 2423 2424 424) -4(405 425 2425 2405) -4(424 2424 2425 425) -4(406 426 2426 2406) -4(425 2425 2426 426) -4(407 427 2427 2407) -4(426 2426 2427 427) -4(408 428 2428 2408) -4(427 2427 2428 428) -4(409 429 2429 2409) -4(428 2428 2429 429) -4(410 430 2430 2410) -4(429 2429 2430 430) -4(411 431 2431 2411) -4(430 2430 2431 431) -4(412 432 2432 2412) -4(431 2431 2432 432) -4(413 433 2433 2413) -4(432 2432 2433 433) -4(414 434 2434 2414) -4(433 2433 2434 434) -4(415 435 2435 2415) -4(434 2434 2435 435) -4(416 436 2436 2416) -4(435 2435 2436 436) -4(417 437 2437 2417) -4(436 2436 2437 437) -4(418 438 2438 2418) -4(437 2437 2438 438) -4(438 2438 2439 439) -4(421 441 2441 2421) -4(440 2440 2441 441) -4(422 442 2442 2422) -4(441 2441 2442 442) -4(423 443 2443 2423) -4(442 2442 2443 443) -4(424 444 2444 2424) -4(443 2443 2444 444) -4(425 445 2445 2425) -4(444 2444 2445 445) -4(426 446 2446 2426) -4(445 2445 2446 446) -4(427 447 2447 2427) -4(446 2446 2447 447) -4(428 448 2448 2428) -4(447 2447 2448 448) -4(429 449 2449 2429) -4(448 2448 2449 449) -4(430 450 2450 2430) -4(449 2449 2450 450) -4(431 451 2451 2431) -4(450 2450 2451 451) -4(432 452 2452 2432) -4(451 2451 2452 452) -4(433 453 2453 2433) -4(452 2452 2453 453) -4(434 454 2454 2434) -4(453 2453 2454 454) -4(435 455 2455 2435) -4(454 2454 2455 455) -4(436 456 2456 2436) -4(455 2455 2456 456) -4(437 457 2457 2437) -4(456 2456 2457 457) -4(438 458 2458 2438) -4(457 2457 2458 458) -4(458 2458 2459 459) -4(441 461 2461 2441) -4(460 2460 2461 461) -4(442 462 2462 2442) -4(461 2461 2462 462) -4(443 463 2463 2443) -4(462 2462 2463 463) -4(444 464 2464 2444) -4(463 2463 2464 464) -4(445 465 2465 2445) -4(464 2464 2465 465) -4(446 466 2466 2446) -4(465 2465 2466 466) -4(447 467 2467 2447) -4(466 2466 2467 467) -4(448 468 2468 2448) -4(467 2467 2468 468) -4(449 469 2469 2449) -4(468 2468 2469 469) -4(450 470 2470 2450) -4(469 2469 2470 470) -4(451 471 2471 2451) -4(470 2470 2471 471) -4(452 472 2472 2452) -4(471 2471 2472 472) -4(453 473 2473 2453) -4(472 2472 2473 473) -4(454 474 2474 2454) -4(473 2473 2474 474) -4(455 475 2475 2455) -4(474 2474 2475 475) -4(456 476 2476 2456) -4(475 2475 2476 476) -4(457 477 2477 2457) -4(476 2476 2477 477) -4(458 478 2478 2458) -4(477 2477 2478 478) -4(478 2478 2479 479) -4(461 481 2481 2461) -4(480 2480 2481 481) -4(462 482 2482 2462) -4(481 2481 2482 482) -4(463 483 2483 2463) -4(482 2482 2483 483) -4(464 484 2484 2464) -4(483 2483 2484 484) -4(465 485 2485 2465) -4(484 2484 2485 485) -4(466 486 2486 2466) -4(485 2485 2486 486) -4(467 487 2487 2467) -4(486 2486 2487 487) -4(468 488 2488 2468) -4(487 2487 2488 488) -4(469 489 2489 2469) -4(488 2488 2489 489) -4(470 490 2490 2470) -4(489 2489 2490 490) -4(471 491 2491 2471) -4(490 2490 2491 491) -4(472 492 2492 2472) -4(491 2491 2492 492) -4(473 493 2493 2473) -4(492 2492 2493 493) -4(474 494 2494 2474) -4(493 2493 2494 494) -4(475 495 2495 2475) -4(494 2494 2495 495) -4(476 496 2496 2476) -4(495 2495 2496 496) -4(477 497 2497 2477) -4(496 2496 2497 497) -4(478 498 2498 2478) -4(497 2497 2498 498) -4(498 2498 2499 499) -4(481 501 2501 2481) -4(500 2500 2501 501) -4(482 502 2502 2482) -4(501 2501 2502 502) -4(483 503 2503 2483) -4(502 2502 2503 503) -4(484 504 2504 2484) -4(503 2503 2504 504) -4(485 505 2505 2485) -4(504 2504 2505 505) -4(486 506 2506 2486) -4(505 2505 2506 506) -4(487 507 2507 2487) -4(506 2506 2507 507) -4(488 508 2508 2488) -4(507 2507 2508 508) -4(489 509 2509 2489) -4(508 2508 2509 509) -4(490 510 2510 2490) -4(509 2509 2510 510) -4(491 511 2511 2491) -4(510 2510 2511 511) -4(492 512 2512 2492) -4(511 2511 2512 512) -4(493 513 2513 2493) -4(512 2512 2513 513) -4(494 514 2514 2494) -4(513 2513 2514 514) -4(495 515 2515 2495) -4(514 2514 2515 515) -4(496 516 2516 2496) -4(515 2515 2516 516) -4(497 517 2517 2497) -4(516 2516 2517 517) -4(498 518 2518 2498) -4(517 2517 2518 518) -4(518 2518 2519 519) -4(501 521 2521 2501) -4(520 2520 2521 521) -4(502 522 2522 2502) -4(521 2521 2522 522) -4(503 523 2523 2503) -4(522 2522 2523 523) -4(504 524 2524 2504) -4(523 2523 2524 524) -4(505 525 2525 2505) -4(524 2524 2525 525) -4(506 526 2526 2506) -4(525 2525 2526 526) -4(507 527 2527 2507) -4(526 2526 2527 527) -4(508 528 2528 2508) -4(527 2527 2528 528) -4(509 529 2529 2509) -4(528 2528 2529 529) -4(510 530 2530 2510) -4(529 2529 2530 530) -4(511 531 2531 2511) -4(530 2530 2531 531) -4(512 532 2532 2512) -4(531 2531 2532 532) -4(513 533 2533 2513) -4(532 2532 2533 533) -4(514 534 2534 2514) -4(533 2533 2534 534) -4(515 535 2535 2515) -4(534 2534 2535 535) -4(516 536 2536 2516) -4(535 2535 2536 536) -4(517 537 2537 2517) -4(536 2536 2537 537) -4(518 538 2538 2518) -4(537 2537 2538 538) -4(538 2538 2539 539) -4(521 541 2541 2521) -4(540 2540 2541 541) -4(522 542 2542 2522) -4(541 2541 2542 542) -4(523 543 2543 2523) -4(542 2542 2543 543) -4(524 544 2544 2524) -4(543 2543 2544 544) -4(525 545 2545 2525) -4(544 2544 2545 545) -4(526 546 2546 2526) -4(545 2545 2546 546) -4(527 547 2547 2527) -4(546 2546 2547 547) -4(528 548 2548 2528) -4(547 2547 2548 548) -4(529 549 2549 2529) -4(548 2548 2549 549) -4(530 550 2550 2530) -4(549 2549 2550 550) -4(531 551 2551 2531) -4(550 2550 2551 551) -4(532 552 2552 2532) -4(551 2551 2552 552) -4(533 553 2553 2533) -4(552 2552 2553 553) -4(534 554 2554 2534) -4(553 2553 2554 554) -4(535 555 2555 2535) -4(554 2554 2555 555) -4(536 556 2556 2536) -4(555 2555 2556 556) -4(537 557 2557 2537) -4(556 2556 2557 557) -4(538 558 2558 2538) -4(557 2557 2558 558) -4(558 2558 2559 559) -4(541 561 2561 2541) -4(560 2560 2561 561) -4(542 562 2562 2542) -4(561 2561 2562 562) -4(543 563 2563 2543) -4(562 2562 2563 563) -4(544 564 2564 2544) -4(563 2563 2564 564) -4(545 565 2565 2545) -4(564 2564 2565 565) -4(546 566 2566 2546) -4(565 2565 2566 566) -4(547 567 2567 2547) -4(566 2566 2567 567) -4(548 568 2568 2548) -4(567 2567 2568 568) -4(549 569 2569 2549) -4(568 2568 2569 569) -4(550 570 2570 2550) -4(569 2569 2570 570) -4(551 571 2571 2551) -4(570 2570 2571 571) -4(552 572 2572 2552) -4(571 2571 2572 572) -4(553 573 2573 2553) -4(572 2572 2573 573) -4(554 574 2574 2554) -4(573 2573 2574 574) -4(555 575 2575 2555) -4(574 2574 2575 575) -4(556 576 2576 2556) -4(575 2575 2576 576) -4(557 577 2577 2557) -4(576 2576 2577 577) -4(558 578 2578 2558) -4(577 2577 2578 578) -4(578 2578 2579 579) -4(561 581 2581 2561) -4(580 2580 2581 581) -4(562 582 2582 2562) -4(581 2581 2582 582) -4(563 583 2583 2563) -4(582 2582 2583 583) -4(564 584 2584 2564) -4(583 2583 2584 584) -4(565 585 2585 2565) -4(584 2584 2585 585) -4(566 586 2586 2566) -4(585 2585 2586 586) -4(567 587 2587 2567) -4(586 2586 2587 587) -4(568 588 2588 2568) -4(587 2587 2588 588) -4(569 589 2589 2569) -4(588 2588 2589 589) -4(570 590 2590 2570) -4(589 2589 2590 590) -4(571 591 2591 2571) -4(590 2590 2591 591) -4(572 592 2592 2572) -4(591 2591 2592 592) -4(573 593 2593 2573) -4(592 2592 2593 593) -4(574 594 2594 2574) -4(593 2593 2594 594) -4(575 595 2595 2575) -4(594 2594 2595 595) -4(576 596 2596 2576) -4(595 2595 2596 596) -4(577 597 2597 2577) -4(596 2596 2597 597) -4(578 598 2598 2578) -4(597 2597 2598 598) -4(598 2598 2599 599) -4(581 601 2601 2581) -4(600 2600 2601 601) -4(582 602 2602 2582) -4(601 2601 2602 602) -4(583 603 2603 2583) -4(602 2602 2603 603) -4(584 604 2604 2584) -4(603 2603 2604 604) -4(585 605 2605 2585) -4(604 2604 2605 605) -4(586 606 2606 2586) -4(605 2605 2606 606) -4(587 607 2607 2587) -4(606 2606 2607 607) -4(588 608 2608 2588) -4(607 2607 2608 608) -4(589 609 2609 2589) -4(608 2608 2609 609) -4(590 610 2610 2590) -4(609 2609 2610 610) -4(591 611 2611 2591) -4(610 2610 2611 611) -4(592 612 2612 2592) -4(611 2611 2612 612) -4(593 613 2613 2593) -4(612 2612 2613 613) -4(594 614 2614 2594) -4(613 2613 2614 614) -4(595 615 2615 2595) -4(614 2614 2615 615) -4(596 616 2616 2596) -4(615 2615 2616 616) -4(597 617 2617 2597) -4(616 2616 2617 617) -4(598 618 2618 2598) -4(617 2617 2618 618) -4(618 2618 2619 619) -4(601 621 2621 2601) -4(620 2620 2621 621) -4(602 622 2622 2602) -4(621 2621 2622 622) -4(603 623 2623 2603) -4(622 2622 2623 623) -4(604 624 2624 2604) -4(623 2623 2624 624) -4(605 625 2625 2605) -4(624 2624 2625 625) -4(606 626 2626 2606) -4(625 2625 2626 626) -4(607 627 2627 2607) -4(626 2626 2627 627) -4(608 628 2628 2608) -4(627 2627 2628 628) -4(609 629 2629 2609) -4(628 2628 2629 629) -4(610 630 2630 2610) -4(629 2629 2630 630) -4(611 631 2631 2611) -4(630 2630 2631 631) -4(612 632 2632 2612) -4(631 2631 2632 632) -4(613 633 2633 2613) -4(632 2632 2633 633) -4(614 634 2634 2614) -4(633 2633 2634 634) -4(615 635 2635 2615) -4(634 2634 2635 635) -4(616 636 2636 2616) -4(635 2635 2636 636) -4(617 637 2637 2617) -4(636 2636 2637 637) -4(618 638 2638 2618) -4(637 2637 2638 638) -4(638 2638 2639 639) -4(621 641 2641 2621) -4(640 2640 2641 641) -4(622 642 2642 2622) -4(641 2641 2642 642) -4(623 643 2643 2623) -4(642 2642 2643 643) -4(624 644 2644 2624) -4(643 2643 2644 644) -4(625 645 2645 2625) -4(644 2644 2645 645) -4(626 646 2646 2626) -4(645 2645 2646 646) -4(627 647 2647 2627) -4(646 2646 2647 647) -4(628 648 2648 2628) -4(647 2647 2648 648) -4(629 649 2649 2629) -4(648 2648 2649 649) -4(630 650 2650 2630) -4(649 2649 2650 650) -4(631 651 2651 2631) -4(650 2650 2651 651) -4(632 652 2652 2632) -4(651 2651 2652 652) -4(633 653 2653 2633) -4(652 2652 2653 653) -4(634 654 2654 2634) -4(653 2653 2654 654) -4(635 655 2655 2635) -4(654 2654 2655 655) -4(636 656 2656 2636) -4(655 2655 2656 656) -4(637 657 2657 2637) -4(656 2656 2657 657) -4(638 658 2658 2638) -4(657 2657 2658 658) -4(658 2658 2659 659) -4(641 661 2661 2641) -4(660 2660 2661 661) -4(642 662 2662 2642) -4(661 2661 2662 662) -4(643 663 2663 2643) -4(662 2662 2663 663) -4(644 664 2664 2644) -4(663 2663 2664 664) -4(645 665 2665 2645) -4(664 2664 2665 665) -4(646 666 2666 2646) -4(665 2665 2666 666) -4(647 667 2667 2647) -4(666 2666 2667 667) -4(648 668 2668 2648) -4(667 2667 2668 668) -4(649 669 2669 2649) -4(668 2668 2669 669) -4(650 670 2670 2650) -4(669 2669 2670 670) -4(651 671 2671 2651) -4(670 2670 2671 671) -4(652 672 2672 2652) -4(671 2671 2672 672) -4(653 673 2673 2653) -4(672 2672 2673 673) -4(654 674 2674 2654) -4(673 2673 2674 674) -4(655 675 2675 2655) -4(674 2674 2675 675) -4(656 676 2676 2656) -4(675 2675 2676 676) -4(657 677 2677 2657) -4(676 2676 2677 677) -4(658 678 2678 2658) -4(677 2677 2678 678) -4(678 2678 2679 679) -4(661 681 2681 2661) -4(680 2680 2681 681) -4(662 682 2682 2662) -4(681 2681 2682 682) -4(663 683 2683 2663) -4(682 2682 2683 683) -4(664 684 2684 2664) -4(683 2683 2684 684) -4(665 685 2685 2665) -4(684 2684 2685 685) -4(666 686 2686 2666) -4(685 2685 2686 686) -4(667 687 2687 2667) -4(686 2686 2687 687) -4(668 688 2688 2668) -4(687 2687 2688 688) -4(669 689 2689 2669) -4(688 2688 2689 689) -4(670 690 2690 2670) -4(689 2689 2690 690) -4(671 691 2691 2671) -4(690 2690 2691 691) -4(672 692 2692 2672) -4(691 2691 2692 692) -4(673 693 2693 2673) -4(692 2692 2693 693) -4(674 694 2694 2674) -4(693 2693 2694 694) -4(675 695 2695 2675) -4(694 2694 2695 695) -4(676 696 2696 2676) -4(695 2695 2696 696) -4(677 697 2697 2677) -4(696 2696 2697 697) -4(678 698 2698 2678) -4(697 2697 2698 698) -4(698 2698 2699 699) -4(681 701 2701 2681) -4(700 2700 2701 701) -4(682 702 2702 2682) -4(701 2701 2702 702) -4(683 703 2703 2683) -4(702 2702 2703 703) -4(684 704 2704 2684) -4(703 2703 2704 704) -4(685 705 2705 2685) -4(704 2704 2705 705) -4(686 706 2706 2686) -4(705 2705 2706 706) -4(687 707 2707 2687) -4(706 2706 2707 707) -4(688 708 2708 2688) -4(707 2707 2708 708) -4(689 709 2709 2689) -4(708 2708 2709 709) -4(690 710 2710 2690) -4(709 2709 2710 710) -4(691 711 2711 2691) -4(710 2710 2711 711) -4(692 712 2712 2692) -4(711 2711 2712 712) -4(693 713 2713 2693) -4(712 2712 2713 713) -4(694 714 2714 2694) -4(713 2713 2714 714) -4(695 715 2715 2695) -4(714 2714 2715 715) -4(696 716 2716 2696) -4(715 2715 2716 716) -4(697 717 2717 2697) -4(716 2716 2717 717) -4(698 718 2718 2698) -4(717 2717 2718 718) -4(718 2718 2719 719) -4(701 721 2721 2701) -4(720 2720 2721 721) -4(702 722 2722 2702) -4(721 2721 2722 722) -4(703 723 2723 2703) -4(722 2722 2723 723) -4(704 724 2724 2704) -4(723 2723 2724 724) -4(705 725 2725 2705) -4(724 2724 2725 725) -4(706 726 2726 2706) -4(725 2725 2726 726) -4(707 727 2727 2707) -4(726 2726 2727 727) -4(708 728 2728 2708) -4(727 2727 2728 728) -4(709 729 2729 2709) -4(728 2728 2729 729) -4(710 730 2730 2710) -4(729 2729 2730 730) -4(711 731 2731 2711) -4(730 2730 2731 731) -4(712 732 2732 2712) -4(731 2731 2732 732) -4(713 733 2733 2713) -4(732 2732 2733 733) -4(714 734 2734 2714) -4(733 2733 2734 734) -4(715 735 2735 2715) -4(734 2734 2735 735) -4(716 736 2736 2716) -4(735 2735 2736 736) -4(717 737 2737 2717) -4(736 2736 2737 737) -4(718 738 2738 2718) -4(737 2737 2738 738) -4(738 2738 2739 739) -4(721 741 2741 2721) -4(740 2740 2741 741) -4(722 742 2742 2722) -4(741 2741 2742 742) -4(723 743 2743 2723) -4(742 2742 2743 743) -4(724 744 2744 2724) -4(743 2743 2744 744) -4(725 745 2745 2725) -4(744 2744 2745 745) -4(726 746 2746 2726) -4(745 2745 2746 746) -4(727 747 2747 2727) -4(746 2746 2747 747) -4(728 748 2748 2728) -4(747 2747 2748 748) -4(729 749 2749 2729) -4(748 2748 2749 749) -4(730 750 2750 2730) -4(749 2749 2750 750) -4(731 751 2751 2731) -4(750 2750 2751 751) -4(732 752 2752 2732) -4(751 2751 2752 752) -4(733 753 2753 2733) -4(752 2752 2753 753) -4(734 754 2754 2734) -4(753 2753 2754 754) -4(735 755 2755 2735) -4(754 2754 2755 755) -4(736 756 2756 2736) -4(755 2755 2756 756) -4(737 757 2757 2737) -4(756 2756 2757 757) -4(738 758 2758 2738) -4(757 2757 2758 758) -4(758 2758 2759 759) -4(741 761 2761 2741) -4(760 2760 2761 761) -4(742 762 2762 2742) -4(761 2761 2762 762) -4(743 763 2763 2743) -4(762 2762 2763 763) -4(744 764 2764 2744) -4(763 2763 2764 764) -4(745 765 2765 2745) -4(764 2764 2765 765) -4(746 766 2766 2746) -4(765 2765 2766 766) -4(747 767 2767 2747) -4(766 2766 2767 767) -4(748 768 2768 2748) -4(767 2767 2768 768) -4(749 769 2769 2749) -4(768 2768 2769 769) -4(750 770 2770 2750) -4(769 2769 2770 770) -4(751 771 2771 2751) -4(770 2770 2771 771) -4(752 772 2772 2752) -4(771 2771 2772 772) -4(753 773 2773 2753) -4(772 2772 2773 773) -4(754 774 2774 2754) -4(773 2773 2774 774) -4(755 775 2775 2755) -4(774 2774 2775 775) -4(756 776 2776 2756) -4(775 2775 2776 776) -4(757 777 2777 2757) -4(776 2776 2777 777) -4(758 778 2778 2758) -4(777 2777 2778 778) -4(778 2778 2779 779) -4(761 781 2781 2761) -4(780 2780 2781 781) -4(762 782 2782 2762) -4(781 2781 2782 782) -4(763 783 2783 2763) -4(782 2782 2783 783) -4(764 784 2784 2764) -4(783 2783 2784 784) -4(765 785 2785 2765) -4(784 2784 2785 785) -4(766 786 2786 2766) -4(785 2785 2786 786) -4(767 787 2787 2767) -4(786 2786 2787 787) -4(768 788 2788 2768) -4(787 2787 2788 788) -4(769 789 2789 2769) -4(788 2788 2789 789) -4(770 790 2790 2770) -4(789 2789 2790 790) -4(771 791 2791 2771) -4(790 2790 2791 791) -4(772 792 2792 2772) -4(791 2791 2792 792) -4(773 793 2793 2773) -4(792 2792 2793 793) -4(774 794 2794 2774) -4(793 2793 2794 794) -4(775 795 2795 2775) -4(794 2794 2795 795) -4(776 796 2796 2776) -4(795 2795 2796 796) -4(777 797 2797 2777) -4(796 2796 2797 797) -4(778 798 2798 2778) -4(797 2797 2798 798) -4(798 2798 2799 799) -4(781 801 2801 2781) -4(800 2800 2801 801) -4(782 802 2802 2782) -4(801 2801 2802 802) -4(783 803 2803 2783) -4(802 2802 2803 803) -4(784 804 2804 2784) -4(803 2803 2804 804) -4(785 805 2805 2785) -4(804 2804 2805 805) -4(786 806 2806 2786) -4(805 2805 2806 806) -4(787 807 2807 2787) -4(806 2806 2807 807) -4(788 808 2808 2788) -4(807 2807 2808 808) -4(789 809 2809 2789) -4(808 2808 2809 809) -4(790 810 2810 2790) -4(809 2809 2810 810) -4(791 811 2811 2791) -4(810 2810 2811 811) -4(792 812 2812 2792) -4(811 2811 2812 812) -4(793 813 2813 2793) -4(812 2812 2813 813) -4(794 814 2814 2794) -4(813 2813 2814 814) -4(795 815 2815 2795) -4(814 2814 2815 815) -4(796 816 2816 2796) -4(815 2815 2816 816) -4(797 817 2817 2797) -4(816 2816 2817 817) -4(798 818 2818 2798) -4(817 2817 2818 818) -4(818 2818 2819 819) -4(801 821 2821 2801) -4(820 2820 2821 821) -4(802 822 2822 2802) -4(821 2821 2822 822) -4(803 823 2823 2803) -4(822 2822 2823 823) -4(804 824 2824 2804) -4(823 2823 2824 824) -4(805 825 2825 2805) -4(824 2824 2825 825) -4(806 826 2826 2806) -4(825 2825 2826 826) -4(807 827 2827 2807) -4(826 2826 2827 827) -4(808 828 2828 2808) -4(827 2827 2828 828) -4(809 829 2829 2809) -4(828 2828 2829 829) -4(810 830 2830 2810) -4(829 2829 2830 830) -4(811 831 2831 2811) -4(830 2830 2831 831) -4(812 832 2832 2812) -4(831 2831 2832 832) -4(813 833 2833 2813) -4(832 2832 2833 833) -4(814 834 2834 2814) -4(833 2833 2834 834) -4(815 835 2835 2815) -4(834 2834 2835 835) -4(816 836 2836 2816) -4(835 2835 2836 836) -4(817 837 2837 2817) -4(836 2836 2837 837) -4(818 838 2838 2818) -4(837 2837 2838 838) -4(838 2838 2839 839) -4(821 841 2841 2821) -4(840 2840 2841 841) -4(822 842 2842 2822) -4(841 2841 2842 842) -4(823 843 2843 2823) -4(842 2842 2843 843) -4(824 844 2844 2824) -4(843 2843 2844 844) -4(825 845 2845 2825) -4(844 2844 2845 845) -4(826 846 2846 2826) -4(845 2845 2846 846) -4(827 847 2847 2827) -4(846 2846 2847 847) -4(828 848 2848 2828) -4(847 2847 2848 848) -4(829 849 2849 2829) -4(848 2848 2849 849) -4(830 850 2850 2830) -4(849 2849 2850 850) -4(831 851 2851 2831) -4(850 2850 2851 851) -4(832 852 2852 2832) -4(851 2851 2852 852) -4(833 853 2853 2833) -4(852 2852 2853 853) -4(834 854 2854 2834) -4(853 2853 2854 854) -4(835 855 2855 2835) -4(854 2854 2855 855) -4(836 856 2856 2836) -4(855 2855 2856 856) -4(837 857 2857 2837) -4(856 2856 2857 857) -4(838 858 2858 2838) -4(857 2857 2858 858) -4(858 2858 2859 859) -4(841 861 2861 2841) -4(860 2860 2861 861) -4(842 862 2862 2842) -4(861 2861 2862 862) -4(843 863 2863 2843) -4(862 2862 2863 863) -4(844 864 2864 2844) -4(863 2863 2864 864) -4(845 865 2865 2845) -4(864 2864 2865 865) -4(846 866 2866 2846) -4(865 2865 2866 866) -4(847 867 2867 2847) -4(866 2866 2867 867) -4(848 868 2868 2848) -4(867 2867 2868 868) -4(849 869 2869 2849) -4(868 2868 2869 869) -4(850 870 2870 2850) -4(869 2869 2870 870) -4(851 871 2871 2851) -4(870 2870 2871 871) -4(852 872 2872 2852) -4(871 2871 2872 872) -4(853 873 2873 2853) -4(872 2872 2873 873) -4(854 874 2874 2854) -4(873 2873 2874 874) -4(855 875 2875 2855) -4(874 2874 2875 875) -4(856 876 2876 2856) -4(875 2875 2876 876) -4(857 877 2877 2857) -4(876 2876 2877 877) -4(858 878 2878 2858) -4(877 2877 2878 878) -4(878 2878 2879 879) -4(861 881 2881 2861) -4(880 2880 2881 881) -4(862 882 2882 2862) -4(881 2881 2882 882) -4(863 883 2883 2863) -4(882 2882 2883 883) -4(864 884 2884 2864) -4(883 2883 2884 884) -4(865 885 2885 2865) -4(884 2884 2885 885) -4(866 886 2886 2866) -4(885 2885 2886 886) -4(867 887 2887 2867) -4(886 2886 2887 887) -4(868 888 2888 2868) -4(887 2887 2888 888) -4(869 889 2889 2869) -4(888 2888 2889 889) -4(870 890 2890 2870) -4(889 2889 2890 890) -4(871 891 2891 2871) -4(890 2890 2891 891) -4(872 892 2892 2872) -4(891 2891 2892 892) -4(873 893 2893 2873) -4(892 2892 2893 893) -4(874 894 2894 2874) -4(893 2893 2894 894) -4(875 895 2895 2875) -4(894 2894 2895 895) -4(876 896 2896 2876) -4(895 2895 2896 896) -4(877 897 2897 2877) -4(896 2896 2897 897) -4(878 898 2898 2878) -4(897 2897 2898 898) -4(898 2898 2899 899) -4(881 901 2901 2881) -4(900 2900 2901 901) -4(882 902 2902 2882) -4(901 2901 2902 902) -4(883 903 2903 2883) -4(902 2902 2903 903) -4(884 904 2904 2884) -4(903 2903 2904 904) -4(885 905 2905 2885) -4(904 2904 2905 905) -4(886 906 2906 2886) -4(905 2905 2906 906) -4(887 907 2907 2887) -4(906 2906 2907 907) -4(888 908 2908 2888) -4(907 2907 2908 908) -4(889 909 2909 2889) -4(908 2908 2909 909) -4(890 910 2910 2890) -4(909 2909 2910 910) -4(891 911 2911 2891) -4(910 2910 2911 911) -4(892 912 2912 2892) -4(911 2911 2912 912) -4(893 913 2913 2893) -4(912 2912 2913 913) -4(894 914 2914 2894) -4(913 2913 2914 914) -4(895 915 2915 2895) -4(914 2914 2915 915) -4(896 916 2916 2896) -4(915 2915 2916 916) -4(897 917 2917 2897) -4(916 2916 2917 917) -4(898 918 2918 2898) -4(917 2917 2918 918) -4(918 2918 2919 919) -4(901 921 2921 2901) -4(920 2920 2921 921) -4(902 922 2922 2902) -4(921 2921 2922 922) -4(903 923 2923 2903) -4(922 2922 2923 923) -4(904 924 2924 2904) -4(923 2923 2924 924) -4(905 925 2925 2905) -4(924 2924 2925 925) -4(906 926 2926 2906) -4(925 2925 2926 926) -4(907 927 2927 2907) -4(926 2926 2927 927) -4(908 928 2928 2908) -4(927 2927 2928 928) -4(909 929 2929 2909) -4(928 2928 2929 929) -4(910 930 2930 2910) -4(929 2929 2930 930) -4(911 931 2931 2911) -4(930 2930 2931 931) -4(912 932 2932 2912) -4(931 2931 2932 932) -4(913 933 2933 2913) -4(932 2932 2933 933) -4(914 934 2934 2914) -4(933 2933 2934 934) -4(915 935 2935 2915) -4(934 2934 2935 935) -4(916 936 2936 2916) -4(935 2935 2936 936) -4(917 937 2937 2917) -4(936 2936 2937 937) -4(918 938 2938 2918) -4(937 2937 2938 938) -4(938 2938 2939 939) -4(921 941 2941 2921) -4(940 2940 2941 941) -4(922 942 2942 2922) -4(941 2941 2942 942) -4(923 943 2943 2923) -4(942 2942 2943 943) -4(924 944 2944 2924) -4(943 2943 2944 944) -4(925 945 2945 2925) -4(944 2944 2945 945) -4(926 946 2946 2926) -4(945 2945 2946 946) -4(927 947 2947 2927) -4(946 2946 2947 947) -4(928 948 2948 2928) -4(947 2947 2948 948) -4(929 949 2949 2929) -4(948 2948 2949 949) -4(930 950 2950 2930) -4(949 2949 2950 950) -4(931 951 2951 2931) -4(950 2950 2951 951) -4(932 952 2952 2932) -4(951 2951 2952 952) -4(933 953 2953 2933) -4(952 2952 2953 953) -4(934 954 2954 2934) -4(953 2953 2954 954) -4(935 955 2955 2935) -4(954 2954 2955 955) -4(936 956 2956 2936) -4(955 2955 2956 956) -4(937 957 2957 2937) -4(956 2956 2957 957) -4(938 958 2958 2938) -4(957 2957 2958 958) -4(958 2958 2959 959) -4(941 961 2961 2941) -4(960 2960 2961 961) -4(942 962 2962 2942) -4(961 2961 2962 962) -4(943 963 2963 2943) -4(962 2962 2963 963) -4(944 964 2964 2944) -4(963 2963 2964 964) -4(945 965 2965 2945) -4(964 2964 2965 965) -4(946 966 2966 2946) -4(965 2965 2966 966) -4(947 967 2967 2947) -4(966 2966 2967 967) -4(948 968 2968 2948) -4(967 2967 2968 968) -4(949 969 2969 2949) -4(968 2968 2969 969) -4(950 970 2970 2950) -4(969 2969 2970 970) -4(951 971 2971 2951) -4(970 2970 2971 971) -4(952 972 2972 2952) -4(971 2971 2972 972) -4(953 973 2973 2953) -4(972 2972 2973 973) -4(954 974 2974 2954) -4(973 2973 2974 974) -4(955 975 2975 2955) -4(974 2974 2975 975) -4(956 976 2976 2956) -4(975 2975 2976 976) -4(957 977 2977 2957) -4(976 2976 2977 977) -4(958 978 2978 2958) -4(977 2977 2978 978) -4(978 2978 2979 979) -4(961 981 2981 2961) -4(980 2980 2981 981) -4(962 982 2982 2962) -4(981 2981 2982 982) -4(963 983 2983 2963) -4(982 2982 2983 983) -4(964 984 2984 2964) -4(983 2983 2984 984) -4(965 985 2985 2965) -4(984 2984 2985 985) -4(966 986 2986 2966) -4(985 2985 2986 986) -4(967 987 2987 2967) -4(986 2986 2987 987) -4(968 988 2988 2968) -4(987 2987 2988 988) -4(969 989 2989 2969) -4(988 2988 2989 989) -4(970 990 2990 2970) -4(989 2989 2990 990) -4(971 991 2991 2971) -4(990 2990 2991 991) -4(972 992 2992 2972) -4(991 2991 2992 992) -4(973 993 2993 2973) -4(992 2992 2993 993) -4(974 994 2994 2974) -4(993 2993 2994 994) -4(975 995 2995 2975) -4(994 2994 2995 995) -4(976 996 2996 2976) -4(995 2995 2996 996) -4(977 997 2997 2977) -4(996 2996 2997 997) -4(978 998 2998 2978) -4(997 2997 2998 998) -4(998 2998 2999 999) -4(981 1001 3001 2981) -4(1000 3000 3001 1001) -4(982 1002 3002 2982) -4(1001 3001 3002 1002) -4(983 1003 3003 2983) -4(1002 3002 3003 1003) -4(984 1004 3004 2984) -4(1003 3003 3004 1004) -4(985 1005 3005 2985) -4(1004 3004 3005 1005) -4(986 1006 3006 2986) -4(1005 3005 3006 1006) -4(987 1007 3007 2987) -4(1006 3006 3007 1007) -4(988 1008 3008 2988) -4(1007 3007 3008 1008) -4(989 1009 3009 2989) -4(1008 3008 3009 1009) -4(990 1010 3010 2990) -4(1009 3009 3010 1010) -4(991 1011 3011 2991) -4(1010 3010 3011 1011) -4(992 1012 3012 2992) -4(1011 3011 3012 1012) -4(993 1013 3013 2993) -4(1012 3012 3013 1013) -4(994 1014 3014 2994) -4(1013 3013 3014 1014) -4(995 1015 3015 2995) -4(1014 3014 3015 1015) -4(996 1016 3016 2996) -4(1015 3015 3016 1016) -4(997 1017 3017 2997) -4(1016 3016 3017 1017) -4(998 1018 3018 2998) -4(1017 3017 3018 1018) -4(1018 3018 3019 1019) -4(1001 1021 3021 3001) -4(1020 3020 3021 1021) -4(1002 1022 3022 3002) -4(1021 3021 3022 1022) -4(1003 1023 3023 3003) -4(1022 3022 3023 1023) -4(1004 1024 3024 3004) -4(1023 3023 3024 1024) -4(1005 1025 3025 3005) -4(1024 3024 3025 1025) -4(1006 1026 3026 3006) -4(1025 3025 3026 1026) -4(1007 1027 3027 3007) -4(1026 3026 3027 1027) -4(1008 1028 3028 3008) -4(1027 3027 3028 1028) -4(1009 1029 3029 3009) -4(1028 3028 3029 1029) -4(1010 1030 3030 3010) -4(1029 3029 3030 1030) -4(1011 1031 3031 3011) -4(1030 3030 3031 1031) -4(1012 1032 3032 3012) -4(1031 3031 3032 1032) -4(1013 1033 3033 3013) -4(1032 3032 3033 1033) -4(1014 1034 3034 3014) -4(1033 3033 3034 1034) -4(1015 1035 3035 3015) -4(1034 3034 3035 1035) -4(1016 1036 3036 3016) -4(1035 3035 3036 1036) -4(1017 1037 3037 3017) -4(1036 3036 3037 1037) -4(1018 1038 3038 3018) -4(1037 3037 3038 1038) -4(1038 3038 3039 1039) -4(1021 1041 3041 3021) -4(1040 3040 3041 1041) -4(1022 1042 3042 3022) -4(1041 3041 3042 1042) -4(1023 1043 3043 3023) -4(1042 3042 3043 1043) -4(1024 1044 3044 3024) -4(1043 3043 3044 1044) -4(1025 1045 3045 3025) -4(1044 3044 3045 1045) -4(1026 1046 3046 3026) -4(1045 3045 3046 1046) -4(1027 1047 3047 3027) -4(1046 3046 3047 1047) -4(1028 1048 3048 3028) -4(1047 3047 3048 1048) -4(1029 1049 3049 3029) -4(1048 3048 3049 1049) -4(1030 1050 3050 3030) -4(1049 3049 3050 1050) -4(1031 1051 3051 3031) -4(1050 3050 3051 1051) -4(1032 1052 3052 3032) -4(1051 3051 3052 1052) -4(1033 1053 3053 3033) -4(1052 3052 3053 1053) -4(1034 1054 3054 3034) -4(1053 3053 3054 1054) -4(1035 1055 3055 3035) -4(1054 3054 3055 1055) -4(1036 1056 3056 3036) -4(1055 3055 3056 1056) -4(1037 1057 3057 3037) -4(1056 3056 3057 1057) -4(1038 1058 3058 3038) -4(1057 3057 3058 1058) -4(1058 3058 3059 1059) -4(1041 1061 3061 3041) -4(1060 3060 3061 1061) -4(1042 1062 3062 3042) -4(1061 3061 3062 1062) -4(1043 1063 3063 3043) -4(1062 3062 3063 1063) -4(1044 1064 3064 3044) -4(1063 3063 3064 1064) -4(1045 1065 3065 3045) -4(1064 3064 3065 1065) -4(1046 1066 3066 3046) -4(1065 3065 3066 1066) -4(1047 1067 3067 3047) -4(1066 3066 3067 1067) -4(1048 1068 3068 3048) -4(1067 3067 3068 1068) -4(1049 1069 3069 3049) -4(1068 3068 3069 1069) -4(1050 1070 3070 3050) -4(1069 3069 3070 1070) -4(1051 1071 3071 3051) -4(1070 3070 3071 1071) -4(1052 1072 3072 3052) -4(1071 3071 3072 1072) -4(1053 1073 3073 3053) -4(1072 3072 3073 1073) -4(1054 1074 3074 3054) -4(1073 3073 3074 1074) -4(1055 1075 3075 3055) -4(1074 3074 3075 1075) -4(1056 1076 3076 3056) -4(1075 3075 3076 1076) -4(1057 1077 3077 3057) -4(1076 3076 3077 1077) -4(1058 1078 3078 3058) -4(1077 3077 3078 1078) -4(1078 3078 3079 1079) -4(1061 1081 3081 3061) -4(1080 3080 3081 1081) -4(1062 1082 3082 3062) -4(1081 3081 3082 1082) -4(1063 1083 3083 3063) -4(1082 3082 3083 1083) -4(1064 1084 3084 3064) -4(1083 3083 3084 1084) -4(1065 1085 3085 3065) -4(1084 3084 3085 1085) -4(1066 1086 3086 3066) -4(1085 3085 3086 1086) -4(1067 1087 3087 3067) -4(1086 3086 3087 1087) -4(1068 1088 3088 3068) -4(1087 3087 3088 1088) -4(1069 1089 3089 3069) -4(1088 3088 3089 1089) -4(1070 1090 3090 3070) -4(1089 3089 3090 1090) -4(1071 1091 3091 3071) -4(1090 3090 3091 1091) -4(1072 1092 3092 3072) -4(1091 3091 3092 1092) -4(1073 1093 3093 3073) -4(1092 3092 3093 1093) -4(1074 1094 3094 3074) -4(1093 3093 3094 1094) -4(1075 1095 3095 3075) -4(1094 3094 3095 1095) -4(1076 1096 3096 3076) -4(1095 3095 3096 1096) -4(1077 1097 3097 3077) -4(1096 3096 3097 1097) -4(1078 1098 3098 3078) -4(1097 3097 3098 1098) -4(1098 3098 3099 1099) -4(1081 1101 3101 3081) -4(1100 3100 3101 1101) -4(1082 1102 3102 3082) -4(1101 3101 3102 1102) -4(1083 1103 3103 3083) -4(1102 3102 3103 1103) -4(1084 1104 3104 3084) -4(1103 3103 3104 1104) -4(1085 1105 3105 3085) -4(1104 3104 3105 1105) -4(1086 1106 3106 3086) -4(1105 3105 3106 1106) -4(1087 1107 3107 3087) -4(1106 3106 3107 1107) -4(1088 1108 3108 3088) -4(1107 3107 3108 1108) -4(1089 1109 3109 3089) -4(1108 3108 3109 1109) -4(1090 1110 3110 3090) -4(1109 3109 3110 1110) -4(1091 1111 3111 3091) -4(1110 3110 3111 1111) -4(1092 1112 3112 3092) -4(1111 3111 3112 1112) -4(1093 1113 3113 3093) -4(1112 3112 3113 1113) -4(1094 1114 3114 3094) -4(1113 3113 3114 1114) -4(1095 1115 3115 3095) -4(1114 3114 3115 1115) -4(1096 1116 3116 3096) -4(1115 3115 3116 1116) -4(1097 1117 3117 3097) -4(1116 3116 3117 1117) -4(1098 1118 3118 3098) -4(1117 3117 3118 1118) -4(1118 3118 3119 1119) -4(1101 1121 3121 3101) -4(1120 3120 3121 1121) -4(1102 1122 3122 3102) -4(1121 3121 3122 1122) -4(1103 1123 3123 3103) -4(1122 3122 3123 1123) -4(1104 1124 3124 3104) -4(1123 3123 3124 1124) -4(1105 1125 3125 3105) -4(1124 3124 3125 1125) -4(1106 1126 3126 3106) -4(1125 3125 3126 1126) -4(1107 1127 3127 3107) -4(1126 3126 3127 1127) -4(1108 1128 3128 3108) -4(1127 3127 3128 1128) -4(1109 1129 3129 3109) -4(1128 3128 3129 1129) -4(1110 1130 3130 3110) -4(1129 3129 3130 1130) -4(1111 1131 3131 3111) -4(1130 3130 3131 1131) -4(1112 1132 3132 3112) -4(1131 3131 3132 1132) -4(1113 1133 3133 3113) -4(1132 3132 3133 1133) -4(1114 1134 3134 3114) -4(1133 3133 3134 1134) -4(1115 1135 3135 3115) -4(1134 3134 3135 1135) -4(1116 1136 3136 3116) -4(1135 3135 3136 1136) -4(1117 1137 3137 3117) -4(1136 3136 3137 1137) -4(1118 1138 3138 3118) -4(1137 3137 3138 1138) -4(1138 3138 3139 1139) -4(1121 1141 3141 3121) -4(1140 3140 3141 1141) -4(1122 1142 3142 3122) -4(1141 3141 3142 1142) -4(1123 1143 3143 3123) -4(1142 3142 3143 1143) -4(1124 1144 3144 3124) -4(1143 3143 3144 1144) -4(1125 1145 3145 3125) -4(1144 3144 3145 1145) -4(1126 1146 3146 3126) -4(1145 3145 3146 1146) -4(1127 1147 3147 3127) -4(1146 3146 3147 1147) -4(1128 1148 3148 3128) -4(1147 3147 3148 1148) -4(1129 1149 3149 3129) -4(1148 3148 3149 1149) -4(1130 1150 3150 3130) -4(1149 3149 3150 1150) -4(1131 1151 3151 3131) -4(1150 3150 3151 1151) -4(1132 1152 3152 3132) -4(1151 3151 3152 1152) -4(1133 1153 3153 3133) -4(1152 3152 3153 1153) -4(1134 1154 3154 3134) -4(1153 3153 3154 1154) -4(1135 1155 3155 3135) -4(1154 3154 3155 1155) -4(1136 1156 3156 3136) -4(1155 3155 3156 1156) -4(1137 1157 3157 3137) -4(1156 3156 3157 1157) -4(1138 1158 3158 3138) -4(1157 3157 3158 1158) -4(1158 3158 3159 1159) -4(1141 1161 3161 3141) -4(1160 3160 3161 1161) -4(1142 1162 3162 3142) -4(1161 3161 3162 1162) -4(1143 1163 3163 3143) -4(1162 3162 3163 1163) -4(1144 1164 3164 3144) -4(1163 3163 3164 1164) -4(1145 1165 3165 3145) -4(1164 3164 3165 1165) -4(1146 1166 3166 3146) -4(1165 3165 3166 1166) -4(1147 1167 3167 3147) -4(1166 3166 3167 1167) -4(1148 1168 3168 3148) -4(1167 3167 3168 1168) -4(1149 1169 3169 3149) -4(1168 3168 3169 1169) -4(1150 1170 3170 3150) -4(1169 3169 3170 1170) -4(1151 1171 3171 3151) -4(1170 3170 3171 1171) -4(1152 1172 3172 3152) -4(1171 3171 3172 1172) -4(1153 1173 3173 3153) -4(1172 3172 3173 1173) -4(1154 1174 3174 3154) -4(1173 3173 3174 1174) -4(1155 1175 3175 3155) -4(1174 3174 3175 1175) -4(1156 1176 3176 3156) -4(1175 3175 3176 1176) -4(1157 1177 3177 3157) -4(1176 3176 3177 1177) -4(1158 1178 3178 3158) -4(1177 3177 3178 1178) -4(1178 3178 3179 1179) -4(1161 1181 3181 3161) -4(1180 3180 3181 1181) -4(1162 1182 3182 3162) -4(1181 3181 3182 1182) -4(1163 1183 3183 3163) -4(1182 3182 3183 1183) -4(1164 1184 3184 3164) -4(1183 3183 3184 1184) -4(1165 1185 3185 3165) -4(1184 3184 3185 1185) -4(1166 1186 3186 3166) -4(1185 3185 3186 1186) -4(1167 1187 3187 3167) -4(1186 3186 3187 1187) -4(1168 1188 3188 3168) -4(1187 3187 3188 1188) -4(1169 1189 3189 3169) -4(1188 3188 3189 1189) -4(1170 1190 3190 3170) -4(1189 3189 3190 1190) -4(1171 1191 3191 3171) -4(1190 3190 3191 1191) -4(1172 1192 3192 3172) -4(1191 3191 3192 1192) -4(1173 1193 3193 3173) -4(1192 3192 3193 1193) -4(1174 1194 3194 3174) -4(1193 3193 3194 1194) -4(1175 1195 3195 3175) -4(1194 3194 3195 1195) -4(1176 1196 3196 3176) -4(1195 3195 3196 1196) -4(1177 1197 3197 3177) -4(1196 3196 3197 1197) -4(1178 1198 3198 3178) -4(1197 3197 3198 1198) -4(1198 3198 3199 1199) -4(1181 1201 3201 3181) -4(1200 3200 3201 1201) -4(1182 1202 3202 3182) -4(1201 3201 3202 1202) -4(1183 1203 3203 3183) -4(1202 3202 3203 1203) -4(1184 1204 3204 3184) -4(1203 3203 3204 1204) -4(1185 1205 3205 3185) -4(1204 3204 3205 1205) -4(1186 1206 3206 3186) -4(1205 3205 3206 1206) -4(1187 1207 3207 3187) -4(1206 3206 3207 1207) -4(1188 1208 3208 3188) -4(1207 3207 3208 1208) -4(1189 1209 3209 3189) -4(1208 3208 3209 1209) -4(1190 1210 3210 3190) -4(1209 3209 3210 1210) -4(1191 1211 3211 3191) -4(1210 3210 3211 1211) -4(1192 1212 3212 3192) -4(1211 3211 3212 1212) -4(1193 1213 3213 3193) -4(1212 3212 3213 1213) -4(1194 1214 3214 3194) -4(1213 3213 3214 1214) -4(1195 1215 3215 3195) -4(1214 3214 3215 1215) -4(1196 1216 3216 3196) -4(1215 3215 3216 1216) -4(1197 1217 3217 3197) -4(1216 3216 3217 1217) -4(1198 1218 3218 3198) -4(1217 3217 3218 1218) -4(1218 3218 3219 1219) -4(1201 1221 3221 3201) -4(1220 3220 3221 1221) -4(1202 1222 3222 3202) -4(1221 3221 3222 1222) -4(1203 1223 3223 3203) -4(1222 3222 3223 1223) -4(1204 1224 3224 3204) -4(1223 3223 3224 1224) -4(1205 1225 3225 3205) -4(1224 3224 3225 1225) -4(1206 1226 3226 3206) -4(1225 3225 3226 1226) -4(1207 1227 3227 3207) -4(1226 3226 3227 1227) -4(1208 1228 3228 3208) -4(1227 3227 3228 1228) -4(1209 1229 3229 3209) -4(1228 3228 3229 1229) -4(1210 1230 3230 3210) -4(1229 3229 3230 1230) -4(1211 1231 3231 3211) -4(1230 3230 3231 1231) -4(1212 1232 3232 3212) -4(1231 3231 3232 1232) -4(1213 1233 3233 3213) -4(1232 3232 3233 1233) -4(1214 1234 3234 3214) -4(1233 3233 3234 1234) -4(1215 1235 3235 3215) -4(1234 3234 3235 1235) -4(1216 1236 3236 3216) -4(1235 3235 3236 1236) -4(1217 1237 3237 3217) -4(1236 3236 3237 1237) -4(1218 1238 3238 3218) -4(1237 3237 3238 1238) -4(1238 3238 3239 1239) -4(1221 1241 3241 3221) -4(1240 3240 3241 1241) -4(1222 1242 3242 3222) -4(1241 3241 3242 1242) -4(1223 1243 3243 3223) -4(1242 3242 3243 1243) -4(1224 1244 3244 3224) -4(1243 3243 3244 1244) -4(1225 1245 3245 3225) -4(1244 3244 3245 1245) -4(1226 1246 3246 3226) -4(1245 3245 3246 1246) -4(1227 1247 3247 3227) -4(1246 3246 3247 1247) -4(1228 1248 3248 3228) -4(1247 3247 3248 1248) -4(1229 1249 3249 3229) -4(1248 3248 3249 1249) -4(1230 1250 3250 3230) -4(1249 3249 3250 1250) -4(1231 1251 3251 3231) -4(1250 3250 3251 1251) -4(1232 1252 3252 3232) -4(1251 3251 3252 1252) -4(1233 1253 3253 3233) -4(1252 3252 3253 1253) -4(1234 1254 3254 3234) -4(1253 3253 3254 1254) -4(1235 1255 3255 3235) -4(1254 3254 3255 1255) -4(1236 1256 3256 3236) -4(1255 3255 3256 1256) -4(1237 1257 3257 3237) -4(1256 3256 3257 1257) -4(1238 1258 3258 3238) -4(1257 3257 3258 1258) -4(1258 3258 3259 1259) -4(1241 1261 3261 3241) -4(1260 3260 3261 1261) -4(1242 1262 3262 3242) -4(1261 3261 3262 1262) -4(1243 1263 3263 3243) -4(1262 3262 3263 1263) -4(1244 1264 3264 3244) -4(1263 3263 3264 1264) -4(1245 1265 3265 3245) -4(1264 3264 3265 1265) -4(1246 1266 3266 3246) -4(1265 3265 3266 1266) -4(1247 1267 3267 3247) -4(1266 3266 3267 1267) -4(1248 1268 3268 3248) -4(1267 3267 3268 1268) -4(1249 1269 3269 3249) -4(1268 3268 3269 1269) -4(1250 1270 3270 3250) -4(1269 3269 3270 1270) -4(1251 1271 3271 3251) -4(1270 3270 3271 1271) -4(1252 1272 3272 3252) -4(1271 3271 3272 1272) -4(1253 1273 3273 3253) -4(1272 3272 3273 1273) -4(1254 1274 3274 3254) -4(1273 3273 3274 1274) -4(1255 1275 3275 3255) -4(1274 3274 3275 1275) -4(1256 1276 3276 3256) -4(1275 3275 3276 1276) -4(1257 1277 3277 3257) -4(1276 3276 3277 1277) -4(1258 1278 3278 3258) -4(1277 3277 3278 1278) -4(1278 3278 3279 1279) -4(1261 1281 3281 3261) -4(1280 3280 3281 1281) -4(1262 1282 3282 3262) -4(1281 3281 3282 1282) -4(1263 1283 3283 3263) -4(1282 3282 3283 1283) -4(1264 1284 3284 3264) -4(1283 3283 3284 1284) -4(1265 1285 3285 3265) -4(1284 3284 3285 1285) -4(1266 1286 3286 3266) -4(1285 3285 3286 1286) -4(1267 1287 3287 3267) -4(1286 3286 3287 1287) -4(1268 1288 3288 3268) -4(1287 3287 3288 1288) -4(1269 1289 3289 3269) -4(1288 3288 3289 1289) -4(1270 1290 3290 3270) -4(1289 3289 3290 1290) -4(1271 1291 3291 3271) -4(1290 3290 3291 1291) -4(1272 1292 3292 3272) -4(1291 3291 3292 1292) -4(1273 1293 3293 3273) -4(1292 3292 3293 1293) -4(1274 1294 3294 3274) -4(1293 3293 3294 1294) -4(1275 1295 3295 3275) -4(1294 3294 3295 1295) -4(1276 1296 3296 3276) -4(1295 3295 3296 1296) -4(1277 1297 3297 3277) -4(1296 3296 3297 1297) -4(1278 1298 3298 3278) -4(1297 3297 3298 1298) -4(1298 3298 3299 1299) -4(1281 1301 3301 3281) -4(1300 3300 3301 1301) -4(1282 1302 3302 3282) -4(1301 3301 3302 1302) -4(1283 1303 3303 3283) -4(1302 3302 3303 1303) -4(1284 1304 3304 3284) -4(1303 3303 3304 1304) -4(1285 1305 3305 3285) -4(1304 3304 3305 1305) -4(1286 1306 3306 3286) -4(1305 3305 3306 1306) -4(1287 1307 3307 3287) -4(1306 3306 3307 1307) -4(1288 1308 3308 3288) -4(1307 3307 3308 1308) -4(1289 1309 3309 3289) -4(1308 3308 3309 1309) -4(1290 1310 3310 3290) -4(1309 3309 3310 1310) -4(1291 1311 3311 3291) -4(1310 3310 3311 1311) -4(1292 1312 3312 3292) -4(1311 3311 3312 1312) -4(1293 1313 3313 3293) -4(1312 3312 3313 1313) -4(1294 1314 3314 3294) -4(1313 3313 3314 1314) -4(1295 1315 3315 3295) -4(1314 3314 3315 1315) -4(1296 1316 3316 3296) -4(1315 3315 3316 1316) -4(1297 1317 3317 3297) -4(1316 3316 3317 1317) -4(1298 1318 3318 3298) -4(1317 3317 3318 1318) -4(1318 3318 3319 1319) -4(1301 1321 3321 3301) -4(1320 3320 3321 1321) -4(1302 1322 3322 3302) -4(1321 3321 3322 1322) -4(1303 1323 3323 3303) -4(1322 3322 3323 1323) -4(1304 1324 3324 3304) -4(1323 3323 3324 1324) -4(1305 1325 3325 3305) -4(1324 3324 3325 1325) -4(1306 1326 3326 3306) -4(1325 3325 3326 1326) -4(1307 1327 3327 3307) -4(1326 3326 3327 1327) -4(1308 1328 3328 3308) -4(1327 3327 3328 1328) -4(1309 1329 3329 3309) -4(1328 3328 3329 1329) -4(1310 1330 3330 3310) -4(1329 3329 3330 1330) -4(1311 1331 3331 3311) -4(1330 3330 3331 1331) -4(1312 1332 3332 3312) -4(1331 3331 3332 1332) -4(1313 1333 3333 3313) -4(1332 3332 3333 1333) -4(1314 1334 3334 3314) -4(1333 3333 3334 1334) -4(1315 1335 3335 3315) -4(1334 3334 3335 1335) -4(1316 1336 3336 3316) -4(1335 3335 3336 1336) -4(1317 1337 3337 3317) -4(1336 3336 3337 1337) -4(1318 1338 3338 3318) -4(1337 3337 3338 1338) -4(1338 3338 3339 1339) -4(1321 1341 3341 3321) -4(1340 3340 3341 1341) -4(1322 1342 3342 3322) -4(1341 3341 3342 1342) -4(1323 1343 3343 3323) -4(1342 3342 3343 1343) -4(1324 1344 3344 3324) -4(1343 3343 3344 1344) -4(1325 1345 3345 3325) -4(1344 3344 3345 1345) -4(1326 1346 3346 3326) -4(1345 3345 3346 1346) -4(1327 1347 3347 3327) -4(1346 3346 3347 1347) -4(1328 1348 3348 3328) -4(1347 3347 3348 1348) -4(1329 1349 3349 3329) -4(1348 3348 3349 1349) -4(1330 1350 3350 3330) -4(1349 3349 3350 1350) -4(1331 1351 3351 3331) -4(1350 3350 3351 1351) -4(1332 1352 3352 3332) -4(1351 3351 3352 1352) -4(1333 1353 3353 3333) -4(1352 3352 3353 1353) -4(1334 1354 3354 3334) -4(1353 3353 3354 1354) -4(1335 1355 3355 3335) -4(1354 3354 3355 1355) -4(1336 1356 3356 3336) -4(1355 3355 3356 1356) -4(1337 1357 3357 3337) -4(1356 3356 3357 1357) -4(1338 1358 3358 3338) -4(1357 3357 3358 1358) -4(1358 3358 3359 1359) -4(1341 1361 3361 3341) -4(1360 3360 3361 1361) -4(1342 1362 3362 3342) -4(1361 3361 3362 1362) -4(1343 1363 3363 3343) -4(1362 3362 3363 1363) -4(1344 1364 3364 3344) -4(1363 3363 3364 1364) -4(1345 1365 3365 3345) -4(1364 3364 3365 1365) -4(1346 1366 3366 3346) -4(1365 3365 3366 1366) -4(1347 1367 3367 3347) -4(1366 3366 3367 1367) -4(1348 1368 3368 3348) -4(1367 3367 3368 1368) -4(1349 1369 3369 3349) -4(1368 3368 3369 1369) -4(1350 1370 3370 3350) -4(1369 3369 3370 1370) -4(1351 1371 3371 3351) -4(1370 3370 3371 1371) -4(1352 1372 3372 3352) -4(1371 3371 3372 1372) -4(1353 1373 3373 3353) -4(1372 3372 3373 1373) -4(1354 1374 3374 3354) -4(1373 3373 3374 1374) -4(1355 1375 3375 3355) -4(1374 3374 3375 1375) -4(1356 1376 3376 3356) -4(1375 3375 3376 1376) -4(1357 1377 3377 3357) -4(1376 3376 3377 1377) -4(1358 1378 3378 3358) -4(1377 3377 3378 1378) -4(1378 3378 3379 1379) -4(1361 1381 3381 3361) -4(1380 3380 3381 1381) -4(1362 1382 3382 3362) -4(1381 3381 3382 1382) -4(1363 1383 3383 3363) -4(1382 3382 3383 1383) -4(1364 1384 3384 3364) -4(1383 3383 3384 1384) -4(1365 1385 3385 3365) -4(1384 3384 3385 1385) -4(1366 1386 3386 3366) -4(1385 3385 3386 1386) -4(1367 1387 3387 3367) -4(1386 3386 3387 1387) -4(1368 1388 3388 3368) -4(1387 3387 3388 1388) -4(1369 1389 3389 3369) -4(1388 3388 3389 1389) -4(1370 1390 3390 3370) -4(1389 3389 3390 1390) -4(1371 1391 3391 3371) -4(1390 3390 3391 1391) -4(1372 1392 3392 3372) -4(1391 3391 3392 1392) -4(1373 1393 3393 3373) -4(1392 3392 3393 1393) -4(1374 1394 3394 3374) -4(1393 3393 3394 1394) -4(1375 1395 3395 3375) -4(1394 3394 3395 1395) -4(1376 1396 3396 3376) -4(1395 3395 3396 1396) -4(1377 1397 3397 3377) -4(1396 3396 3397 1397) -4(1378 1398 3398 3378) -4(1397 3397 3398 1398) -4(1398 3398 3399 1399) -4(1381 1401 3401 3381) -4(1400 3400 3401 1401) -4(1382 1402 3402 3382) -4(1401 3401 3402 1402) -4(1383 1403 3403 3383) -4(1402 3402 3403 1403) -4(1384 1404 3404 3384) -4(1403 3403 3404 1404) -4(1385 1405 3405 3385) -4(1404 3404 3405 1405) -4(1386 1406 3406 3386) -4(1405 3405 3406 1406) -4(1387 1407 3407 3387) -4(1406 3406 3407 1407) -4(1388 1408 3408 3388) -4(1407 3407 3408 1408) -4(1389 1409 3409 3389) -4(1408 3408 3409 1409) -4(1390 1410 3410 3390) -4(1409 3409 3410 1410) -4(1391 1411 3411 3391) -4(1410 3410 3411 1411) -4(1392 1412 3412 3392) -4(1411 3411 3412 1412) -4(1393 1413 3413 3393) -4(1412 3412 3413 1413) -4(1394 1414 3414 3394) -4(1413 3413 3414 1414) -4(1395 1415 3415 3395) -4(1414 3414 3415 1415) -4(1396 1416 3416 3396) -4(1415 3415 3416 1416) -4(1397 1417 3417 3397) -4(1416 3416 3417 1417) -4(1398 1418 3418 3398) -4(1417 3417 3418 1418) -4(1418 3418 3419 1419) -4(1401 1421 3421 3401) -4(1420 3420 3421 1421) -4(1402 1422 3422 3402) -4(1421 3421 3422 1422) -4(1403 1423 3423 3403) -4(1422 3422 3423 1423) -4(1404 1424 3424 3404) -4(1423 3423 3424 1424) -4(1405 1425 3425 3405) -4(1424 3424 3425 1425) -4(1406 1426 3426 3406) -4(1425 3425 3426 1426) -4(1407 1427 3427 3407) -4(1426 3426 3427 1427) -4(1408 1428 3428 3408) -4(1427 3427 3428 1428) -4(1409 1429 3429 3409) -4(1428 3428 3429 1429) -4(1410 1430 3430 3410) -4(1429 3429 3430 1430) -4(1411 1431 3431 3411) -4(1430 3430 3431 1431) -4(1412 1432 3432 3412) -4(1431 3431 3432 1432) -4(1413 1433 3433 3413) -4(1432 3432 3433 1433) -4(1414 1434 3434 3414) -4(1433 3433 3434 1434) -4(1415 1435 3435 3415) -4(1434 3434 3435 1435) -4(1416 1436 3436 3416) -4(1435 3435 3436 1436) -4(1417 1437 3437 3417) -4(1436 3436 3437 1437) -4(1418 1438 3438 3418) -4(1437 3437 3438 1438) -4(1438 3438 3439 1439) -4(1421 1441 3441 3421) -4(1440 3440 3441 1441) -4(1422 1442 3442 3422) -4(1441 3441 3442 1442) -4(1423 1443 3443 3423) -4(1442 3442 3443 1443) -4(1424 1444 3444 3424) -4(1443 3443 3444 1444) -4(1425 1445 3445 3425) -4(1444 3444 3445 1445) -4(1426 1446 3446 3426) -4(1445 3445 3446 1446) -4(1427 1447 3447 3427) -4(1446 3446 3447 1447) -4(1428 1448 3448 3428) -4(1447 3447 3448 1448) -4(1429 1449 3449 3429) -4(1448 3448 3449 1449) -4(1430 1450 3450 3430) -4(1449 3449 3450 1450) -4(1431 1451 3451 3431) -4(1450 3450 3451 1451) -4(1432 1452 3452 3432) -4(1451 3451 3452 1452) -4(1433 1453 3453 3433) -4(1452 3452 3453 1453) -4(1434 1454 3454 3434) -4(1453 3453 3454 1454) -4(1435 1455 3455 3435) -4(1454 3454 3455 1455) -4(1436 1456 3456 3436) -4(1455 3455 3456 1456) -4(1437 1457 3457 3437) -4(1456 3456 3457 1457) -4(1438 1458 3458 3438) -4(1457 3457 3458 1458) -4(1458 3458 3459 1459) -4(1441 1461 3461 3441) -4(1460 3460 3461 1461) -4(1442 1462 3462 3442) -4(1461 3461 3462 1462) -4(1443 1463 3463 3443) -4(1462 3462 3463 1463) -4(1444 1464 3464 3444) -4(1463 3463 3464 1464) -4(1445 1465 3465 3445) -4(1464 3464 3465 1465) -4(1446 1466 3466 3446) -4(1465 3465 3466 1466) -4(1447 1467 3467 3447) -4(1466 3466 3467 1467) -4(1448 1468 3468 3448) -4(1467 3467 3468 1468) -4(1449 1469 3469 3449) -4(1468 3468 3469 1469) -4(1450 1470 3470 3450) -4(1469 3469 3470 1470) -4(1451 1471 3471 3451) -4(1470 3470 3471 1471) -4(1452 1472 3472 3452) -4(1471 3471 3472 1472) -4(1453 1473 3473 3453) -4(1472 3472 3473 1473) -4(1454 1474 3474 3454) -4(1473 3473 3474 1474) -4(1455 1475 3475 3455) -4(1474 3474 3475 1475) -4(1456 1476 3476 3456) -4(1475 3475 3476 1476) -4(1457 1477 3477 3457) -4(1476 3476 3477 1477) -4(1458 1478 3478 3458) -4(1477 3477 3478 1478) -4(1478 3478 3479 1479) -4(1461 1481 3481 3461) -4(1480 3480 3481 1481) -4(1462 1482 3482 3462) -4(1481 3481 3482 1482) -4(1463 1483 3483 3463) -4(1482 3482 3483 1483) -4(1464 1484 3484 3464) -4(1483 3483 3484 1484) -4(1465 1485 3485 3465) -4(1484 3484 3485 1485) -4(1466 1486 3486 3466) -4(1485 3485 3486 1486) -4(1467 1487 3487 3467) -4(1486 3486 3487 1487) -4(1468 1488 3488 3468) -4(1487 3487 3488 1488) -4(1469 1489 3489 3469) -4(1488 3488 3489 1489) -4(1470 1490 3490 3470) -4(1489 3489 3490 1490) -4(1471 1491 3491 3471) -4(1490 3490 3491 1491) -4(1472 1492 3492 3472) -4(1491 3491 3492 1492) -4(1473 1493 3493 3473) -4(1492 3492 3493 1493) -4(1474 1494 3494 3474) -4(1493 3493 3494 1494) -4(1475 1495 3495 3475) -4(1494 3494 3495 1495) -4(1476 1496 3496 3476) -4(1495 3495 3496 1496) -4(1477 1497 3497 3477) -4(1496 3496 3497 1497) -4(1478 1498 3498 3478) -4(1497 3497 3498 1498) -4(1498 3498 3499 1499) -4(1481 1501 3501 3481) -4(1500 3500 3501 1501) -4(1482 1502 3502 3482) -4(1501 3501 3502 1502) -4(1483 1503 3503 3483) -4(1502 3502 3503 1503) -4(1484 1504 3504 3484) -4(1503 3503 3504 1504) -4(1485 1505 3505 3485) -4(1504 3504 3505 1505) -4(1486 1506 3506 3486) -4(1505 3505 3506 1506) -4(1487 1507 3507 3487) -4(1506 3506 3507 1507) -4(1488 1508 3508 3488) -4(1507 3507 3508 1508) -4(1489 1509 3509 3489) -4(1508 3508 3509 1509) -4(1490 1510 3510 3490) -4(1509 3509 3510 1510) -4(1491 1511 3511 3491) -4(1510 3510 3511 1511) -4(1492 1512 3512 3492) -4(1511 3511 3512 1512) -4(1493 1513 3513 3493) -4(1512 3512 3513 1513) -4(1494 1514 3514 3494) -4(1513 3513 3514 1514) -4(1495 1515 3515 3495) -4(1514 3514 3515 1515) -4(1496 1516 3516 3496) -4(1515 3515 3516 1516) -4(1497 1517 3517 3497) -4(1516 3516 3517 1517) -4(1498 1518 3518 3498) -4(1517 3517 3518 1518) -4(1518 3518 3519 1519) -4(1501 1521 3521 3501) -4(1520 3520 3521 1521) -4(1502 1522 3522 3502) -4(1521 3521 3522 1522) -4(1503 1523 3523 3503) -4(1522 3522 3523 1523) -4(1504 1524 3524 3504) -4(1523 3523 3524 1524) -4(1505 1525 3525 3505) -4(1524 3524 3525 1525) -4(1506 1526 3526 3506) -4(1525 3525 3526 1526) -4(1507 1527 3527 3507) -4(1526 3526 3527 1527) -4(1508 1528 3528 3508) -4(1527 3527 3528 1528) -4(1509 1529 3529 3509) -4(1528 3528 3529 1529) -4(1510 1530 3530 3510) -4(1529 3529 3530 1530) -4(1511 1531 3531 3511) -4(1530 3530 3531 1531) -4(1512 1532 3532 3512) -4(1531 3531 3532 1532) -4(1513 1533 3533 3513) -4(1532 3532 3533 1533) -4(1514 1534 3534 3514) -4(1533 3533 3534 1534) -4(1515 1535 3535 3515) -4(1534 3534 3535 1535) -4(1516 1536 3536 3516) -4(1535 3535 3536 1536) -4(1517 1537 3537 3517) -4(1536 3536 3537 1537) -4(1518 1538 3538 3518) -4(1537 3537 3538 1538) -4(1538 3538 3539 1539) -4(1521 1541 3541 3521) -4(1540 3540 3541 1541) -4(1522 1542 3542 3522) -4(1541 3541 3542 1542) -4(1523 1543 3543 3523) -4(1542 3542 3543 1543) -4(1524 1544 3544 3524) -4(1543 3543 3544 1544) -4(1525 1545 3545 3525) -4(1544 3544 3545 1545) -4(1526 1546 3546 3526) -4(1545 3545 3546 1546) -4(1527 1547 3547 3527) -4(1546 3546 3547 1547) -4(1528 1548 3548 3528) -4(1547 3547 3548 1548) -4(1529 1549 3549 3529) -4(1548 3548 3549 1549) -4(1530 1550 3550 3530) -4(1549 3549 3550 1550) -4(1531 1551 3551 3531) -4(1550 3550 3551 1551) -4(1532 1552 3552 3532) -4(1551 3551 3552 1552) -4(1533 1553 3553 3533) -4(1552 3552 3553 1553) -4(1534 1554 3554 3534) -4(1553 3553 3554 1554) -4(1535 1555 3555 3535) -4(1554 3554 3555 1555) -4(1536 1556 3556 3536) -4(1555 3555 3556 1556) -4(1537 1557 3557 3537) -4(1556 3556 3557 1557) -4(1538 1558 3558 3538) -4(1557 3557 3558 1558) -4(1558 3558 3559 1559) -4(1541 1561 3561 3541) -4(1560 3560 3561 1561) -4(1542 1562 3562 3542) -4(1561 3561 3562 1562) -4(1543 1563 3563 3543) -4(1562 3562 3563 1563) -4(1544 1564 3564 3544) -4(1563 3563 3564 1564) -4(1545 1565 3565 3545) -4(1564 3564 3565 1565) -4(1546 1566 3566 3546) -4(1565 3565 3566 1566) -4(1547 1567 3567 3547) -4(1566 3566 3567 1567) -4(1548 1568 3568 3548) -4(1567 3567 3568 1568) -4(1549 1569 3569 3549) -4(1568 3568 3569 1569) -4(1550 1570 3570 3550) -4(1569 3569 3570 1570) -4(1551 1571 3571 3551) -4(1570 3570 3571 1571) -4(1552 1572 3572 3552) -4(1571 3571 3572 1572) -4(1553 1573 3573 3553) -4(1572 3572 3573 1573) -4(1554 1574 3574 3554) -4(1573 3573 3574 1574) -4(1555 1575 3575 3555) -4(1574 3574 3575 1575) -4(1556 1576 3576 3556) -4(1575 3575 3576 1576) -4(1557 1577 3577 3557) -4(1576 3576 3577 1577) -4(1558 1578 3578 3558) -4(1577 3577 3578 1578) -4(1578 3578 3579 1579) -4(1561 1581 3581 3561) -4(1580 3580 3581 1581) -4(1562 1582 3582 3562) -4(1581 3581 3582 1582) -4(1563 1583 3583 3563) -4(1582 3582 3583 1583) -4(1564 1584 3584 3564) -4(1583 3583 3584 1584) -4(1565 1585 3585 3565) -4(1584 3584 3585 1585) -4(1566 1586 3586 3566) -4(1585 3585 3586 1586) -4(1567 1587 3587 3567) -4(1586 3586 3587 1587) -4(1568 1588 3588 3568) -4(1587 3587 3588 1588) -4(1569 1589 3589 3569) -4(1588 3588 3589 1589) -4(1570 1590 3590 3570) -4(1589 3589 3590 1590) -4(1571 1591 3591 3571) -4(1590 3590 3591 1591) -4(1572 1592 3592 3572) -4(1591 3591 3592 1592) -4(1573 1593 3593 3573) -4(1592 3592 3593 1593) -4(1574 1594 3594 3574) -4(1593 3593 3594 1594) -4(1575 1595 3595 3575) -4(1594 3594 3595 1595) -4(1576 1596 3596 3576) -4(1595 3595 3596 1596) -4(1577 1597 3597 3577) -4(1596 3596 3597 1597) -4(1578 1598 3598 3578) -4(1597 3597 3598 1598) -4(1598 3598 3599 1599) -4(1581 1601 3601 3581) -4(1600 3600 3601 1601) -4(1582 1602 3602 3582) -4(1601 3601 3602 1602) -4(1583 1603 3603 3583) -4(1602 3602 3603 1603) -4(1584 1604 3604 3584) -4(1603 3603 3604 1604) -4(1585 1605 3605 3585) -4(1604 3604 3605 1605) -4(1586 1606 3606 3586) -4(1605 3605 3606 1606) -4(1587 1607 3607 3587) -4(1606 3606 3607 1607) -4(1588 1608 3608 3588) -4(1607 3607 3608 1608) -4(1589 1609 3609 3589) -4(1608 3608 3609 1609) -4(1590 1610 3610 3590) -4(1609 3609 3610 1610) -4(1591 1611 3611 3591) -4(1610 3610 3611 1611) -4(1592 1612 3612 3592) -4(1611 3611 3612 1612) -4(1593 1613 3613 3593) -4(1612 3612 3613 1613) -4(1594 1614 3614 3594) -4(1613 3613 3614 1614) -4(1595 1615 3615 3595) -4(1614 3614 3615 1615) -4(1596 1616 3616 3596) -4(1615 3615 3616 1616) -4(1597 1617 3617 3597) -4(1616 3616 3617 1617) -4(1598 1618 3618 3598) -4(1617 3617 3618 1618) -4(1618 3618 3619 1619) -4(1601 1621 3621 3601) -4(1620 3620 3621 1621) -4(1602 1622 3622 3602) -4(1621 3621 3622 1622) -4(1603 1623 3623 3603) -4(1622 3622 3623 1623) -4(1604 1624 3624 3604) -4(1623 3623 3624 1624) -4(1605 1625 3625 3605) -4(1624 3624 3625 1625) -4(1606 1626 3626 3606) -4(1625 3625 3626 1626) -4(1607 1627 3627 3607) -4(1626 3626 3627 1627) -4(1608 1628 3628 3608) -4(1627 3627 3628 1628) -4(1609 1629 3629 3609) -4(1628 3628 3629 1629) -4(1610 1630 3630 3610) -4(1629 3629 3630 1630) -4(1611 1631 3631 3611) -4(1630 3630 3631 1631) -4(1612 1632 3632 3612) -4(1631 3631 3632 1632) -4(1613 1633 3633 3613) -4(1632 3632 3633 1633) -4(1614 1634 3634 3614) -4(1633 3633 3634 1634) -4(1615 1635 3635 3615) -4(1634 3634 3635 1635) -4(1616 1636 3636 3616) -4(1635 3635 3636 1636) -4(1617 1637 3637 3617) -4(1636 3636 3637 1637) -4(1618 1638 3638 3618) -4(1637 3637 3638 1638) -4(1638 3638 3639 1639) -4(1621 1641 3641 3621) -4(1640 3640 3641 1641) -4(1622 1642 3642 3622) -4(1641 3641 3642 1642) -4(1623 1643 3643 3623) -4(1642 3642 3643 1643) -4(1624 1644 3644 3624) -4(1643 3643 3644 1644) -4(1625 1645 3645 3625) -4(1644 3644 3645 1645) -4(1626 1646 3646 3626) -4(1645 3645 3646 1646) -4(1627 1647 3647 3627) -4(1646 3646 3647 1647) -4(1628 1648 3648 3628) -4(1647 3647 3648 1648) -4(1629 1649 3649 3629) -4(1648 3648 3649 1649) -4(1630 1650 3650 3630) -4(1649 3649 3650 1650) -4(1631 1651 3651 3631) -4(1650 3650 3651 1651) -4(1632 1652 3652 3632) -4(1651 3651 3652 1652) -4(1633 1653 3653 3633) -4(1652 3652 3653 1653) -4(1634 1654 3654 3634) -4(1653 3653 3654 1654) -4(1635 1655 3655 3635) -4(1654 3654 3655 1655) -4(1636 1656 3656 3636) -4(1655 3655 3656 1656) -4(1637 1657 3657 3637) -4(1656 3656 3657 1657) -4(1638 1658 3658 3638) -4(1657 3657 3658 1658) -4(1658 3658 3659 1659) -4(1641 1661 3661 3641) -4(1660 3660 3661 1661) -4(1642 1662 3662 3642) -4(1661 3661 3662 1662) -4(1643 1663 3663 3643) -4(1662 3662 3663 1663) -4(1644 1664 3664 3644) -4(1663 3663 3664 1664) -4(1645 1665 3665 3645) -4(1664 3664 3665 1665) -4(1646 1666 3666 3646) -4(1665 3665 3666 1666) -4(1647 1667 3667 3647) -4(1666 3666 3667 1667) -4(1648 1668 3668 3648) -4(1667 3667 3668 1668) -4(1649 1669 3669 3649) -4(1668 3668 3669 1669) -4(1650 1670 3670 3650) -4(1669 3669 3670 1670) -4(1651 1671 3671 3651) -4(1670 3670 3671 1671) -4(1652 1672 3672 3652) -4(1671 3671 3672 1672) -4(1653 1673 3673 3653) -4(1672 3672 3673 1673) -4(1654 1674 3674 3654) -4(1673 3673 3674 1674) -4(1655 1675 3675 3655) -4(1674 3674 3675 1675) -4(1656 1676 3676 3656) -4(1675 3675 3676 1676) -4(1657 1677 3677 3657) -4(1676 3676 3677 1677) -4(1658 1678 3678 3658) -4(1677 3677 3678 1678) -4(1678 3678 3679 1679) -4(1661 1681 3681 3661) -4(1680 3680 3681 1681) -4(1662 1682 3682 3662) -4(1681 3681 3682 1682) -4(1663 1683 3683 3663) -4(1682 3682 3683 1683) -4(1664 1684 3684 3664) -4(1683 3683 3684 1684) -4(1665 1685 3685 3665) -4(1684 3684 3685 1685) -4(1666 1686 3686 3666) -4(1685 3685 3686 1686) -4(1667 1687 3687 3667) -4(1686 3686 3687 1687) -4(1668 1688 3688 3668) -4(1687 3687 3688 1688) -4(1669 1689 3689 3669) -4(1688 3688 3689 1689) -4(1670 1690 3690 3670) -4(1689 3689 3690 1690) -4(1671 1691 3691 3671) -4(1690 3690 3691 1691) -4(1672 1692 3692 3672) -4(1691 3691 3692 1692) -4(1673 1693 3693 3673) -4(1692 3692 3693 1693) -4(1674 1694 3694 3674) -4(1693 3693 3694 1694) -4(1675 1695 3695 3675) -4(1694 3694 3695 1695) -4(1676 1696 3696 3676) -4(1695 3695 3696 1696) -4(1677 1697 3697 3677) -4(1696 3696 3697 1697) -4(1678 1698 3698 3678) -4(1697 3697 3698 1698) -4(1698 3698 3699 1699) -4(1681 1701 3701 3681) -4(1700 3700 3701 1701) -4(1682 1702 3702 3682) -4(1701 3701 3702 1702) -4(1683 1703 3703 3683) -4(1702 3702 3703 1703) -4(1684 1704 3704 3684) -4(1703 3703 3704 1704) -4(1685 1705 3705 3685) -4(1704 3704 3705 1705) -4(1686 1706 3706 3686) -4(1705 3705 3706 1706) -4(1687 1707 3707 3687) -4(1706 3706 3707 1707) -4(1688 1708 3708 3688) -4(1707 3707 3708 1708) -4(1689 1709 3709 3689) -4(1708 3708 3709 1709) -4(1690 1710 3710 3690) -4(1709 3709 3710 1710) -4(1691 1711 3711 3691) -4(1710 3710 3711 1711) -4(1692 1712 3712 3692) -4(1711 3711 3712 1712) -4(1693 1713 3713 3693) -4(1712 3712 3713 1713) -4(1694 1714 3714 3694) -4(1713 3713 3714 1714) -4(1695 1715 3715 3695) -4(1714 3714 3715 1715) -4(1696 1716 3716 3696) -4(1715 3715 3716 1716) -4(1697 1717 3717 3697) -4(1716 3716 3717 1717) -4(1698 1718 3718 3698) -4(1717 3717 3718 1718) -4(1718 3718 3719 1719) -4(1701 1721 3721 3701) -4(1720 3720 3721 1721) -4(1702 1722 3722 3702) -4(1721 3721 3722 1722) -4(1703 1723 3723 3703) -4(1722 3722 3723 1723) -4(1704 1724 3724 3704) -4(1723 3723 3724 1724) -4(1705 1725 3725 3705) -4(1724 3724 3725 1725) -4(1706 1726 3726 3706) -4(1725 3725 3726 1726) -4(1707 1727 3727 3707) -4(1726 3726 3727 1727) -4(1708 1728 3728 3708) -4(1727 3727 3728 1728) -4(1709 1729 3729 3709) -4(1728 3728 3729 1729) -4(1710 1730 3730 3710) -4(1729 3729 3730 1730) -4(1711 1731 3731 3711) -4(1730 3730 3731 1731) -4(1712 1732 3732 3712) -4(1731 3731 3732 1732) -4(1713 1733 3733 3713) -4(1732 3732 3733 1733) -4(1714 1734 3734 3714) -4(1733 3733 3734 1734) -4(1715 1735 3735 3715) -4(1734 3734 3735 1735) -4(1716 1736 3736 3716) -4(1735 3735 3736 1736) -4(1717 1737 3737 3717) -4(1736 3736 3737 1737) -4(1718 1738 3738 3718) -4(1737 3737 3738 1738) -4(1738 3738 3739 1739) -4(1721 1741 3741 3721) -4(1740 3740 3741 1741) -4(1722 1742 3742 3722) -4(1741 3741 3742 1742) -4(1723 1743 3743 3723) -4(1742 3742 3743 1743) -4(1724 1744 3744 3724) -4(1743 3743 3744 1744) -4(1725 1745 3745 3725) -4(1744 3744 3745 1745) -4(1726 1746 3746 3726) -4(1745 3745 3746 1746) -4(1727 1747 3747 3727) -4(1746 3746 3747 1747) -4(1728 1748 3748 3728) -4(1747 3747 3748 1748) -4(1729 1749 3749 3729) -4(1748 3748 3749 1749) -4(1730 1750 3750 3730) -4(1749 3749 3750 1750) -4(1731 1751 3751 3731) -4(1750 3750 3751 1751) -4(1732 1752 3752 3732) -4(1751 3751 3752 1752) -4(1733 1753 3753 3733) -4(1752 3752 3753 1753) -4(1734 1754 3754 3734) -4(1753 3753 3754 1754) -4(1735 1755 3755 3735) -4(1754 3754 3755 1755) -4(1736 1756 3756 3736) -4(1755 3755 3756 1756) -4(1737 1757 3757 3737) -4(1756 3756 3757 1757) -4(1738 1758 3758 3738) -4(1757 3757 3758 1758) -4(1758 3758 3759 1759) -4(1741 1761 3761 3741) -4(1760 3760 3761 1761) -4(1742 1762 3762 3742) -4(1761 3761 3762 1762) -4(1743 1763 3763 3743) -4(1762 3762 3763 1763) -4(1744 1764 3764 3744) -4(1763 3763 3764 1764) -4(1745 1765 3765 3745) -4(1764 3764 3765 1765) -4(1746 1766 3766 3746) -4(1765 3765 3766 1766) -4(1747 1767 3767 3747) -4(1766 3766 3767 1767) -4(1748 1768 3768 3748) -4(1767 3767 3768 1768) -4(1749 1769 3769 3749) -4(1768 3768 3769 1769) -4(1750 1770 3770 3750) -4(1769 3769 3770 1770) -4(1751 1771 3771 3751) -4(1770 3770 3771 1771) -4(1752 1772 3772 3752) -4(1771 3771 3772 1772) -4(1753 1773 3773 3753) -4(1772 3772 3773 1773) -4(1754 1774 3774 3754) -4(1773 3773 3774 1774) -4(1755 1775 3775 3755) -4(1774 3774 3775 1775) -4(1756 1776 3776 3756) -4(1775 3775 3776 1776) -4(1757 1777 3777 3757) -4(1776 3776 3777 1777) -4(1758 1778 3778 3758) -4(1777 3777 3778 1778) -4(1778 3778 3779 1779) -4(1761 1781 3781 3761) -4(1780 3780 3781 1781) -4(1762 1782 3782 3762) -4(1781 3781 3782 1782) -4(1763 1783 3783 3763) -4(1782 3782 3783 1783) -4(1764 1784 3784 3764) -4(1783 3783 3784 1784) -4(1765 1785 3785 3765) -4(1784 3784 3785 1785) -4(1766 1786 3786 3766) -4(1785 3785 3786 1786) -4(1767 1787 3787 3767) -4(1786 3786 3787 1787) -4(1768 1788 3788 3768) -4(1787 3787 3788 1788) -4(1769 1789 3789 3769) -4(1788 3788 3789 1789) -4(1770 1790 3790 3770) -4(1789 3789 3790 1790) -4(1771 1791 3791 3771) -4(1790 3790 3791 1791) -4(1772 1792 3792 3772) -4(1791 3791 3792 1792) -4(1773 1793 3793 3773) -4(1792 3792 3793 1793) -4(1774 1794 3794 3774) -4(1793 3793 3794 1794) -4(1775 1795 3795 3775) -4(1794 3794 3795 1795) -4(1776 1796 3796 3776) -4(1795 3795 3796 1796) -4(1777 1797 3797 3777) -4(1796 3796 3797 1797) -4(1778 1798 3798 3778) -4(1797 3797 3798 1798) -4(1798 3798 3799 1799) -4(1781 1801 3801 3781) -4(1800 3800 3801 1801) -4(1782 1802 3802 3782) -4(1801 3801 3802 1802) -4(1783 1803 3803 3783) -4(1802 3802 3803 1803) -4(1784 1804 3804 3784) -4(1803 3803 3804 1804) -4(1785 1805 3805 3785) -4(1804 3804 3805 1805) -4(1786 1806 3806 3786) -4(1805 3805 3806 1806) -4(1787 1807 3807 3787) -4(1806 3806 3807 1807) -4(1788 1808 3808 3788) -4(1807 3807 3808 1808) -4(1789 1809 3809 3789) -4(1808 3808 3809 1809) -4(1790 1810 3810 3790) -4(1809 3809 3810 1810) -4(1791 1811 3811 3791) -4(1810 3810 3811 1811) -4(1792 1812 3812 3792) -4(1811 3811 3812 1812) -4(1793 1813 3813 3793) -4(1812 3812 3813 1813) -4(1794 1814 3814 3794) -4(1813 3813 3814 1814) -4(1795 1815 3815 3795) -4(1814 3814 3815 1815) -4(1796 1816 3816 3796) -4(1815 3815 3816 1816) -4(1797 1817 3817 3797) -4(1816 3816 3817 1817) -4(1798 1818 3818 3798) -4(1817 3817 3818 1818) -4(1818 3818 3819 1819) -4(1801 1821 3821 3801) -4(1820 3820 3821 1821) -4(1802 1822 3822 3802) -4(1821 3821 3822 1822) -4(1803 1823 3823 3803) -4(1822 3822 3823 1823) -4(1804 1824 3824 3804) -4(1823 3823 3824 1824) -4(1805 1825 3825 3805) -4(1824 3824 3825 1825) -4(1806 1826 3826 3806) -4(1825 3825 3826 1826) -4(1807 1827 3827 3807) -4(1826 3826 3827 1827) -4(1808 1828 3828 3808) -4(1827 3827 3828 1828) -4(1809 1829 3829 3809) -4(1828 3828 3829 1829) -4(1810 1830 3830 3810) -4(1829 3829 3830 1830) -4(1811 1831 3831 3811) -4(1830 3830 3831 1831) -4(1812 1832 3832 3812) -4(1831 3831 3832 1832) -4(1813 1833 3833 3813) -4(1832 3832 3833 1833) -4(1814 1834 3834 3814) -4(1833 3833 3834 1834) -4(1815 1835 3835 3815) -4(1834 3834 3835 1835) -4(1816 1836 3836 3816) -4(1835 3835 3836 1836) -4(1817 1837 3837 3817) -4(1836 3836 3837 1837) -4(1818 1838 3838 3818) -4(1837 3837 3838 1838) -4(1838 3838 3839 1839) -4(1821 1841 3841 3821) -4(1840 3840 3841 1841) -4(1822 1842 3842 3822) -4(1841 3841 3842 1842) -4(1823 1843 3843 3823) -4(1842 3842 3843 1843) -4(1824 1844 3844 3824) -4(1843 3843 3844 1844) -4(1825 1845 3845 3825) -4(1844 3844 3845 1845) -4(1826 1846 3846 3826) -4(1845 3845 3846 1846) -4(1827 1847 3847 3827) -4(1846 3846 3847 1847) -4(1828 1848 3848 3828) -4(1847 3847 3848 1848) -4(1829 1849 3849 3829) -4(1848 3848 3849 1849) -4(1830 1850 3850 3830) -4(1849 3849 3850 1850) -4(1831 1851 3851 3831) -4(1850 3850 3851 1851) -4(1832 1852 3852 3832) -4(1851 3851 3852 1852) -4(1833 1853 3853 3833) -4(1852 3852 3853 1853) -4(1834 1854 3854 3834) -4(1853 3853 3854 1854) -4(1835 1855 3855 3835) -4(1854 3854 3855 1855) -4(1836 1856 3856 3836) -4(1855 3855 3856 1856) -4(1837 1857 3857 3837) -4(1856 3856 3857 1857) -4(1838 1858 3858 3838) -4(1857 3857 3858 1858) -4(1858 3858 3859 1859) -4(1841 1861 3861 3841) -4(1860 3860 3861 1861) -4(1842 1862 3862 3842) -4(1861 3861 3862 1862) -4(1843 1863 3863 3843) -4(1862 3862 3863 1863) -4(1844 1864 3864 3844) -4(1863 3863 3864 1864) -4(1845 1865 3865 3845) -4(1864 3864 3865 1865) -4(1846 1866 3866 3846) -4(1865 3865 3866 1866) -4(1847 1867 3867 3847) -4(1866 3866 3867 1867) -4(1848 1868 3868 3848) -4(1867 3867 3868 1868) -4(1849 1869 3869 3849) -4(1868 3868 3869 1869) -4(1850 1870 3870 3850) -4(1869 3869 3870 1870) -4(1851 1871 3871 3851) -4(1870 3870 3871 1871) -4(1852 1872 3872 3852) -4(1871 3871 3872 1872) -4(1853 1873 3873 3853) -4(1872 3872 3873 1873) -4(1854 1874 3874 3854) -4(1873 3873 3874 1874) -4(1855 1875 3875 3855) -4(1874 3874 3875 1875) -4(1856 1876 3876 3856) -4(1875 3875 3876 1876) -4(1857 1877 3877 3857) -4(1876 3876 3877 1877) -4(1858 1878 3878 3858) -4(1877 3877 3878 1878) -4(1878 3878 3879 1879) -4(1861 1881 3881 3861) -4(1880 3880 3881 1881) -4(1862 1882 3882 3862) -4(1881 3881 3882 1882) -4(1863 1883 3883 3863) -4(1882 3882 3883 1883) -4(1864 1884 3884 3864) -4(1883 3883 3884 1884) -4(1865 1885 3885 3865) -4(1884 3884 3885 1885) -4(1866 1886 3886 3866) -4(1885 3885 3886 1886) -4(1867 1887 3887 3867) -4(1886 3886 3887 1887) -4(1868 1888 3888 3868) -4(1887 3887 3888 1888) -4(1869 1889 3889 3869) -4(1888 3888 3889 1889) -4(1870 1890 3890 3870) -4(1889 3889 3890 1890) -4(1871 1891 3891 3871) -4(1890 3890 3891 1891) -4(1872 1892 3892 3872) -4(1891 3891 3892 1892) -4(1873 1893 3893 3873) -4(1892 3892 3893 1893) -4(1874 1894 3894 3874) -4(1893 3893 3894 1894) -4(1875 1895 3895 3875) -4(1894 3894 3895 1895) -4(1876 1896 3896 3876) -4(1895 3895 3896 1896) -4(1877 1897 3897 3877) -4(1896 3896 3897 1897) -4(1878 1898 3898 3878) -4(1897 3897 3898 1898) -4(1898 3898 3899 1899) -4(1881 1901 3901 3881) -4(1900 3900 3901 1901) -4(1882 1902 3902 3882) -4(1901 3901 3902 1902) -4(1883 1903 3903 3883) -4(1902 3902 3903 1903) -4(1884 1904 3904 3884) -4(1903 3903 3904 1904) -4(1885 1905 3905 3885) -4(1904 3904 3905 1905) -4(1886 1906 3906 3886) -4(1905 3905 3906 1906) -4(1887 1907 3907 3887) -4(1906 3906 3907 1907) -4(1888 1908 3908 3888) -4(1907 3907 3908 1908) -4(1889 1909 3909 3889) -4(1908 3908 3909 1909) -4(1890 1910 3910 3890) -4(1909 3909 3910 1910) -4(1891 1911 3911 3891) -4(1910 3910 3911 1911) -4(1892 1912 3912 3892) -4(1911 3911 3912 1912) -4(1893 1913 3913 3893) -4(1912 3912 3913 1913) -4(1894 1914 3914 3894) -4(1913 3913 3914 1914) -4(1895 1915 3915 3895) -4(1914 3914 3915 1915) -4(1896 1916 3916 3896) -4(1915 3915 3916 1916) -4(1897 1917 3917 3897) -4(1916 3916 3917 1917) -4(1898 1918 3918 3898) -4(1917 3917 3918 1918) -4(1918 3918 3919 1919) -4(1901 1921 3921 3901) -4(1920 3920 3921 1921) -4(1902 1922 3922 3902) -4(1921 3921 3922 1922) -4(1903 1923 3923 3903) -4(1922 3922 3923 1923) -4(1904 1924 3924 3904) -4(1923 3923 3924 1924) -4(1905 1925 3925 3905) -4(1924 3924 3925 1925) -4(1906 1926 3926 3906) -4(1925 3925 3926 1926) -4(1907 1927 3927 3907) -4(1926 3926 3927 1927) -4(1908 1928 3928 3908) -4(1927 3927 3928 1928) -4(1909 1929 3929 3909) -4(1928 3928 3929 1929) -4(1910 1930 3930 3910) -4(1929 3929 3930 1930) -4(1911 1931 3931 3911) -4(1930 3930 3931 1931) -4(1912 1932 3932 3912) -4(1931 3931 3932 1932) -4(1913 1933 3933 3913) -4(1932 3932 3933 1933) -4(1914 1934 3934 3914) -4(1933 3933 3934 1934) -4(1915 1935 3935 3915) -4(1934 3934 3935 1935) -4(1916 1936 3936 3916) -4(1935 3935 3936 1936) -4(1917 1937 3937 3917) -4(1936 3936 3937 1937) -4(1918 1938 3938 3918) -4(1937 3937 3938 1938) -4(1938 3938 3939 1939) -4(1921 1941 3941 3921) -4(1940 3940 3941 1941) -4(1922 1942 3942 3922) -4(1941 3941 3942 1942) -4(1923 1943 3943 3923) -4(1942 3942 3943 1943) -4(1924 1944 3944 3924) -4(1943 3943 3944 1944) -4(1925 1945 3945 3925) -4(1944 3944 3945 1945) -4(1926 1946 3946 3926) -4(1945 3945 3946 1946) -4(1927 1947 3947 3927) -4(1946 3946 3947 1947) -4(1928 1948 3948 3928) -4(1947 3947 3948 1948) -4(1929 1949 3949 3929) -4(1948 3948 3949 1949) -4(1930 1950 3950 3930) -4(1949 3949 3950 1950) -4(1931 1951 3951 3931) -4(1950 3950 3951 1951) -4(1932 1952 3952 3932) -4(1951 3951 3952 1952) -4(1933 1953 3953 3933) -4(1952 3952 3953 1953) -4(1934 1954 3954 3934) -4(1953 3953 3954 1954) -4(1935 1955 3955 3935) -4(1954 3954 3955 1955) -4(1936 1956 3956 3936) -4(1955 3955 3956 1956) -4(1937 1957 3957 3937) -4(1956 3956 3957 1957) -4(1938 1958 3958 3938) -4(1957 3957 3958 1958) -4(1958 3958 3959 1959) -4(1941 1961 3961 3941) -4(1960 3960 3961 1961) -4(1942 1962 3962 3942) -4(1961 3961 3962 1962) -4(1943 1963 3963 3943) -4(1962 3962 3963 1963) -4(1944 1964 3964 3944) -4(1963 3963 3964 1964) -4(1945 1965 3965 3945) -4(1964 3964 3965 1965) -4(1946 1966 3966 3946) -4(1965 3965 3966 1966) -4(1947 1967 3967 3947) -4(1966 3966 3967 1967) -4(1948 1968 3968 3948) -4(1967 3967 3968 1968) -4(1949 1969 3969 3949) -4(1968 3968 3969 1969) -4(1950 1970 3970 3950) -4(1969 3969 3970 1970) -4(1951 1971 3971 3951) -4(1970 3970 3971 1971) -4(1952 1972 3972 3952) -4(1971 3971 3972 1972) -4(1953 1973 3973 3953) -4(1972 3972 3973 1973) -4(1954 1974 3974 3954) -4(1973 3973 3974 1974) -4(1955 1975 3975 3955) -4(1974 3974 3975 1975) -4(1956 1976 3976 3956) -4(1975 3975 3976 1976) -4(1957 1977 3977 3957) -4(1976 3976 3977 1977) -4(1958 1978 3978 3958) -4(1977 3977 3978 1978) -4(1978 3978 3979 1979) -4(1961 1981 3981 3961) -4(1962 1982 3982 3962) -4(1963 1983 3983 3963) -4(1964 1984 3984 3964) -4(1965 1985 3985 3965) -4(1966 1986 3986 3966) -4(1967 1987 3987 3967) -4(1968 1988 3988 3968) -4(1969 1989 3989 3969) -4(1970 1990 3990 3970) -4(1971 1991 3991 3971) -4(1972 1992 3992 3972) -4(1973 1993 3993 3973) -4(1974 1994 3994 3974) -4(1975 1995 3995 3975) -4(1976 1996 3996 3976) -4(1977 1997 3997 3977) -4(1978 1998 3998 3978) -4(39 2039 2038 38) -4(39 59 2059 2039) -4(59 79 2079 2059) -4(79 99 2099 2079) -4(99 119 2119 2099) -4(119 139 2139 2119) -4(139 159 2159 2139) -4(159 179 2179 2159) -4(179 199 2199 2179) -4(199 219 2219 2199) -4(219 239 2239 2219) -4(239 259 2259 2239) -4(259 279 2279 2259) -4(279 299 2299 2279) -4(299 319 2319 2299) -4(319 339 2339 2319) -4(339 359 2359 2339) -4(359 379 2379 2359) -4(379 399 2399 2379) -4(399 419 2419 2399) -4(419 439 2439 2419) -4(439 459 2459 2439) -4(459 479 2479 2459) -4(479 499 2499 2479) -4(499 519 2519 2499) -4(519 539 2539 2519) -4(539 559 2559 2539) -4(559 579 2579 2559) -4(579 599 2599 2579) -4(599 619 2619 2599) -4(619 639 2639 2619) -4(639 659 2659 2639) -4(659 679 2679 2659) -4(679 699 2699 2679) -4(699 719 2719 2699) -4(719 739 2739 2719) -4(739 759 2759 2739) -4(759 779 2779 2759) -4(779 799 2799 2779) -4(799 819 2819 2799) -4(819 839 2839 2819) -4(839 859 2859 2839) -4(859 879 2879 2859) -4(879 899 2899 2879) -4(899 919 2919 2899) -4(919 939 2939 2919) -4(939 959 2959 2939) -4(959 979 2979 2959) -4(979 999 2999 2979) -4(999 1019 3019 2999) -4(1019 1039 3039 3019) -4(1039 1059 3059 3039) -4(1059 1079 3079 3059) -4(1079 1099 3099 3079) -4(1099 1119 3119 3099) -4(1119 1139 3139 3119) -4(1139 1159 3159 3139) -4(1159 1179 3179 3159) -4(1179 1199 3199 3179) -4(1199 1219 3219 3199) -4(1219 1239 3239 3219) -4(1239 1259 3259 3239) -4(1259 1279 3279 3259) -4(1279 1299 3299 3279) -4(1299 1319 3319 3299) -4(1319 1339 3339 3319) -4(1339 1359 3359 3339) -4(1359 1379 3379 3359) -4(1379 1399 3399 3379) -4(1399 1419 3419 3399) -4(1419 1439 3439 3419) -4(1439 1459 3459 3439) -4(1459 1479 3479 3459) -4(1479 1499 3499 3479) -4(1499 1519 3519 3499) -4(1519 1539 3539 3519) -4(1539 1559 3559 3539) -4(1559 1579 3579 3559) -4(1579 1599 3599 3579) -4(1599 1619 3619 3599) -4(1619 1639 3639 3619) -4(1639 1659 3659 3639) -4(1659 1679 3679 3659) -4(1679 1699 3699 3679) -4(1699 1719 3719 3699) -4(1719 1739 3739 3719) -4(1739 1759 3759 3739) -4(1759 1779 3779 3759) -4(1779 1799 3799 3779) -4(1799 1819 3819 3799) -4(1819 1839 3839 3819) -4(1839 1859 3859 3839) -4(1859 1879 3879 3859) -4(1879 1899 3899 3879) -4(1899 1919 3919 3899) -4(1919 1939 3939 3919) -4(1939 1959 3959 3939) -4(1959 1979 3979 3959) -4(1979 1999 3999 3979) -4(1 0 2000 2001) -4(1 2001 2040 40) -4(40 2040 2060 60) -4(60 2060 2080 80) -4(80 2080 2100 100) -4(100 2100 2120 120) -4(120 2120 2140 140) -4(140 2140 2160 160) -4(160 2160 2180 180) -4(180 2180 2200 200) -4(200 2200 2220 220) -4(220 2220 2240 240) -4(240 2240 2260 260) -4(260 2260 2280 280) -4(280 2280 2300 300) -4(300 2300 2320 320) -4(320 2320 2340 340) -4(340 2340 2360 360) -4(360 2360 2380 380) -4(380 2380 2400 400) -4(400 2400 2420 420) -4(420 2420 2440 440) -4(440 2440 2460 460) -4(460 2460 2480 480) -4(480 2480 2500 500) -4(500 2500 2520 520) -4(520 2520 2540 540) -4(540 2540 2560 560) -4(560 2560 2580 580) -4(580 2580 2600 600) -4(600 2600 2620 620) -4(620 2620 2640 640) -4(640 2640 2660 660) -4(660 2660 2680 680) -4(680 2680 2700 700) -4(700 2700 2720 720) -4(720 2720 2740 740) -4(740 2740 2760 760) -4(760 2760 2780 780) -4(780 2780 2800 800) -4(800 2800 2820 820) -4(820 2820 2840 840) -4(840 2840 2860 860) -4(860 2860 2880 880) -4(880 2880 2900 900) -4(900 2900 2920 920) -4(920 2920 2940 940) -4(940 2940 2960 960) -4(960 2960 2980 980) -4(980 2980 3000 1000) -4(1000 3000 3020 1020) -4(1020 3020 3040 1040) -4(1040 3040 3060 1060) -4(1060 3060 3080 1080) -4(1080 3080 3100 1100) -4(1100 3100 3120 1120) -4(1120 3120 3140 1140) -4(1140 3140 3160 1160) -4(1160 3160 3180 1180) -4(1180 3180 3200 1200) -4(1200 3200 3220 1220) -4(1220 3220 3240 1240) -4(1240 3240 3260 1260) -4(1260 3260 3280 1280) -4(1280 3280 3300 1300) -4(1300 3300 3320 1320) -4(1320 3320 3340 1340) -4(1340 3340 3360 1360) -4(1360 3360 3380 1380) -4(1380 3380 3400 1400) -4(1400 3400 3420 1420) -4(1420 3420 3440 1440) -4(1440 3440 3460 1460) -4(1460 3460 3480 1480) -4(1480 3480 3500 1500) -4(1500 3500 3520 1520) -4(1520 3520 3540 1540) -4(1540 3540 3560 1560) -4(1560 3560 3580 1580) -4(1580 3580 3600 1600) -4(1600 3600 3620 1620) -4(1620 3620 3640 1640) -4(1640 3640 3660 1660) -4(1660 3660 3680 1680) -4(1680 3680 3700 1700) -4(1700 3700 3720 1720) -4(1720 3720 3740 1740) -4(1740 3740 3760 1760) -4(1760 3760 3780 1780) -4(1780 3780 3800 1800) -4(1800 3800 3820 1820) -4(1820 3820 3840 1840) -4(1840 3840 3860 1860) -4(1860 3860 3880 1880) -4(1880 3880 3900 1900) -4(1900 3900 3920 1920) -4(1920 3920 3940 1940) -4(1940 3940 3960 1960) -4(1960 3960 3980 1980) -4(2 2002 2000 0) -4(2 4 2004 2002) -4(4 6 2006 2004) -4(6 8 2008 2006) -4(8 10 2010 2008) -4(10 12 2012 2010) -4(12 14 2014 2012) -4(14 16 2016 2014) -4(16 18 2018 2016) -4(18 20 2020 2018) -4(20 22 2022 2020) -4(22 24 2024 2022) -4(24 26 2026 2024) -4(26 28 2028 2026) -4(28 30 2030 2028) -4(30 32 2032 2030) -4(32 34 2034 2032) -4(34 36 2036 2034) -4(36 38 2038 2036) -4(1980 3980 3981 1981) -4(1981 3981 3982 1982) -4(1982 3982 3983 1983) -4(1983 3983 3984 1984) -4(1984 3984 3985 1985) -4(1985 3985 3986 1986) -4(1986 3986 3987 1987) -4(1987 3987 3988 1988) -4(1988 3988 3989 1989) -4(1989 3989 3990 1990) -4(1990 3990 3991 1991) -4(1991 3991 3992 1992) -4(1992 3992 3993 1993) -4(1993 3993 3994 1994) -4(1994 3994 3995 1995) -4(1995 3995 3996 1996) -4(1996 3996 3997 1997) -4(1997 3997 3998 1998) -4(1998 3998 3999 1999) -4(3 2 0 1) -4(2003 2001 2000 2002) -4(3 5 4 2) -4(2003 2002 2004 2005) -4(5 7 6 4) -4(2005 2004 2006 2007) -4(7 9 8 6) -4(2007 2006 2008 2009) -4(9 11 10 8) -4(2009 2008 2010 2011) -4(11 13 12 10) -4(2011 2010 2012 2013) -4(13 15 14 12) -4(2013 2012 2014 2015) -4(15 17 16 14) -4(2015 2014 2016 2017) -4(17 19 18 16) -4(2017 2016 2018 2019) -4(19 21 20 18) -4(2019 2018 2020 2021) -4(21 23 22 20) -4(2021 2020 2022 2023) -4(23 25 24 22) -4(2023 2022 2024 2025) -4(25 27 26 24) -4(2025 2024 2026 2027) -4(27 29 28 26) -4(2027 2026 2028 2029) -4(29 31 30 28) -4(2029 2028 2030 2031) -4(31 33 32 30) -4(2031 2030 2032 2033) -4(33 35 34 32) -4(2033 2032 2034 2035) -4(35 37 36 34) -4(2035 2034 2036 2037) -4(37 39 38 36) -4(2037 2036 2038 2039) -4(1 40 41 3) -4(2001 2003 2041 2040) -4(3 41 42 5) -4(2003 2005 2042 2041) -4(5 42 43 7) -4(2005 2007 2043 2042) -4(7 43 44 9) -4(2007 2009 2044 2043) -4(9 44 45 11) -4(2009 2011 2045 2044) -4(11 45 46 13) -4(2011 2013 2046 2045) -4(13 46 47 15) -4(2013 2015 2047 2046) -4(15 47 48 17) -4(2015 2017 2048 2047) -4(17 48 49 19) -4(2017 2019 2049 2048) -4(19 49 50 21) -4(2019 2021 2050 2049) -4(21 50 51 23) -4(2021 2023 2051 2050) -4(23 51 52 25) -4(2023 2025 2052 2051) -4(25 52 53 27) -4(2025 2027 2053 2052) -4(27 53 54 29) -4(2027 2029 2054 2053) -4(29 54 55 31) -4(2029 2031 2055 2054) -4(31 55 56 33) -4(2031 2033 2056 2055) -4(33 56 57 35) -4(2033 2035 2057 2056) -4(35 57 58 37) -4(2035 2037 2058 2057) -4(37 58 59 39) -4(2037 2039 2059 2058) -4(40 60 61 41) -4(2040 2041 2061 2060) -4(41 61 62 42) -4(2041 2042 2062 2061) -4(42 62 63 43) -4(2042 2043 2063 2062) -4(43 63 64 44) -4(2043 2044 2064 2063) -4(44 64 65 45) -4(2044 2045 2065 2064) -4(45 65 66 46) -4(2045 2046 2066 2065) -4(46 66 67 47) -4(2046 2047 2067 2066) -4(47 67 68 48) -4(2047 2048 2068 2067) -4(48 68 69 49) -4(2048 2049 2069 2068) -4(49 69 70 50) -4(2049 2050 2070 2069) -4(50 70 71 51) -4(2050 2051 2071 2070) -4(51 71 72 52) -4(2051 2052 2072 2071) -4(52 72 73 53) -4(2052 2053 2073 2072) -4(53 73 74 54) -4(2053 2054 2074 2073) -4(54 74 75 55) -4(2054 2055 2075 2074) -4(55 75 76 56) -4(2055 2056 2076 2075) -4(56 76 77 57) -4(2056 2057 2077 2076) -4(57 77 78 58) -4(2057 2058 2078 2077) -4(58 78 79 59) -4(2058 2059 2079 2078) -4(60 80 81 61) -4(2060 2061 2081 2080) -4(61 81 82 62) -4(2061 2062 2082 2081) -4(62 82 83 63) -4(2062 2063 2083 2082) -4(63 83 84 64) -4(2063 2064 2084 2083) -4(64 84 85 65) -4(2064 2065 2085 2084) -4(65 85 86 66) -4(2065 2066 2086 2085) -4(66 86 87 67) -4(2066 2067 2087 2086) -4(67 87 88 68) -4(2067 2068 2088 2087) -4(68 88 89 69) -4(2068 2069 2089 2088) -4(69 89 90 70) -4(2069 2070 2090 2089) -4(70 90 91 71) -4(2070 2071 2091 2090) -4(71 91 92 72) -4(2071 2072 2092 2091) -4(72 92 93 73) -4(2072 2073 2093 2092) -4(73 93 94 74) -4(2073 2074 2094 2093) -4(74 94 95 75) -4(2074 2075 2095 2094) -4(75 95 96 76) -4(2075 2076 2096 2095) -4(76 96 97 77) -4(2076 2077 2097 2096) -4(77 97 98 78) -4(2077 2078 2098 2097) -4(78 98 99 79) -4(2078 2079 2099 2098) -4(80 100 101 81) -4(2080 2081 2101 2100) -4(81 101 102 82) -4(2081 2082 2102 2101) -4(82 102 103 83) -4(2082 2083 2103 2102) -4(83 103 104 84) -4(2083 2084 2104 2103) -4(84 104 105 85) -4(2084 2085 2105 2104) -4(85 105 106 86) -4(2085 2086 2106 2105) -4(86 106 107 87) -4(2086 2087 2107 2106) -4(87 107 108 88) -4(2087 2088 2108 2107) -4(88 108 109 89) -4(2088 2089 2109 2108) -4(89 109 110 90) -4(2089 2090 2110 2109) -4(90 110 111 91) -4(2090 2091 2111 2110) -4(91 111 112 92) -4(2091 2092 2112 2111) -4(92 112 113 93) -4(2092 2093 2113 2112) -4(93 113 114 94) -4(2093 2094 2114 2113) -4(94 114 115 95) -4(2094 2095 2115 2114) -4(95 115 116 96) -4(2095 2096 2116 2115) -4(96 116 117 97) -4(2096 2097 2117 2116) -4(97 117 118 98) -4(2097 2098 2118 2117) -4(98 118 119 99) -4(2098 2099 2119 2118) -4(100 120 121 101) -4(2100 2101 2121 2120) -4(101 121 122 102) -4(2101 2102 2122 2121) -4(102 122 123 103) -4(2102 2103 2123 2122) -4(103 123 124 104) -4(2103 2104 2124 2123) -4(104 124 125 105) -4(2104 2105 2125 2124) -4(105 125 126 106) -4(2105 2106 2126 2125) -4(106 126 127 107) -4(2106 2107 2127 2126) -4(107 127 128 108) -4(2107 2108 2128 2127) -4(108 128 129 109) -4(2108 2109 2129 2128) -4(109 129 130 110) -4(2109 2110 2130 2129) -4(110 130 131 111) -4(2110 2111 2131 2130) -4(111 131 132 112) -4(2111 2112 2132 2131) -4(112 132 133 113) -4(2112 2113 2133 2132) -4(113 133 134 114) -4(2113 2114 2134 2133) -4(114 134 135 115) -4(2114 2115 2135 2134) -4(115 135 136 116) -4(2115 2116 2136 2135) -4(116 136 137 117) -4(2116 2117 2137 2136) -4(117 137 138 118) -4(2117 2118 2138 2137) -4(118 138 139 119) -4(2118 2119 2139 2138) -4(120 140 141 121) -4(2120 2121 2141 2140) -4(121 141 142 122) -4(2121 2122 2142 2141) -4(122 142 143 123) -4(2122 2123 2143 2142) -4(123 143 144 124) -4(2123 2124 2144 2143) -4(124 144 145 125) -4(2124 2125 2145 2144) -4(125 145 146 126) -4(2125 2126 2146 2145) -4(126 146 147 127) -4(2126 2127 2147 2146) -4(127 147 148 128) -4(2127 2128 2148 2147) -4(128 148 149 129) -4(2128 2129 2149 2148) -4(129 149 150 130) -4(2129 2130 2150 2149) -4(130 150 151 131) -4(2130 2131 2151 2150) -4(131 151 152 132) -4(2131 2132 2152 2151) -4(132 152 153 133) -4(2132 2133 2153 2152) -4(133 153 154 134) -4(2133 2134 2154 2153) -4(134 154 155 135) -4(2134 2135 2155 2154) -4(135 155 156 136) -4(2135 2136 2156 2155) -4(136 156 157 137) -4(2136 2137 2157 2156) -4(137 157 158 138) -4(2137 2138 2158 2157) -4(138 158 159 139) -4(2138 2139 2159 2158) -4(140 160 161 141) -4(2140 2141 2161 2160) -4(141 161 162 142) -4(2141 2142 2162 2161) -4(142 162 163 143) -4(2142 2143 2163 2162) -4(143 163 164 144) -4(2143 2144 2164 2163) -4(144 164 165 145) -4(2144 2145 2165 2164) -4(145 165 166 146) -4(2145 2146 2166 2165) -4(146 166 167 147) -4(2146 2147 2167 2166) -4(147 167 168 148) -4(2147 2148 2168 2167) -4(148 168 169 149) -4(2148 2149 2169 2168) -4(149 169 170 150) -4(2149 2150 2170 2169) -4(150 170 171 151) -4(2150 2151 2171 2170) -4(151 171 172 152) -4(2151 2152 2172 2171) -4(152 172 173 153) -4(2152 2153 2173 2172) -4(153 173 174 154) -4(2153 2154 2174 2173) -4(154 174 175 155) -4(2154 2155 2175 2174) -4(155 175 176 156) -4(2155 2156 2176 2175) -4(156 176 177 157) -4(2156 2157 2177 2176) -4(157 177 178 158) -4(2157 2158 2178 2177) -4(158 178 179 159) -4(2158 2159 2179 2178) -4(160 180 181 161) -4(2160 2161 2181 2180) -4(161 181 182 162) -4(2161 2162 2182 2181) -4(162 182 183 163) -4(2162 2163 2183 2182) -4(163 183 184 164) -4(2163 2164 2184 2183) -4(164 184 185 165) -4(2164 2165 2185 2184) -4(165 185 186 166) -4(2165 2166 2186 2185) -4(166 186 187 167) -4(2166 2167 2187 2186) -4(167 187 188 168) -4(2167 2168 2188 2187) -4(168 188 189 169) -4(2168 2169 2189 2188) -4(169 189 190 170) -4(2169 2170 2190 2189) -4(170 190 191 171) -4(2170 2171 2191 2190) -4(171 191 192 172) -4(2171 2172 2192 2191) -4(172 192 193 173) -4(2172 2173 2193 2192) -4(173 193 194 174) -4(2173 2174 2194 2193) -4(174 194 195 175) -4(2174 2175 2195 2194) -4(175 195 196 176) -4(2175 2176 2196 2195) -4(176 196 197 177) -4(2176 2177 2197 2196) -4(177 197 198 178) -4(2177 2178 2198 2197) -4(178 198 199 179) -4(2178 2179 2199 2198) -4(180 200 201 181) -4(2180 2181 2201 2200) -4(181 201 202 182) -4(2181 2182 2202 2201) -4(182 202 203 183) -4(2182 2183 2203 2202) -4(183 203 204 184) -4(2183 2184 2204 2203) -4(184 204 205 185) -4(2184 2185 2205 2204) -4(185 205 206 186) -4(2185 2186 2206 2205) -4(186 206 207 187) -4(2186 2187 2207 2206) -4(187 207 208 188) -4(2187 2188 2208 2207) -4(188 208 209 189) -4(2188 2189 2209 2208) -4(189 209 210 190) -4(2189 2190 2210 2209) -4(190 210 211 191) -4(2190 2191 2211 2210) -4(191 211 212 192) -4(2191 2192 2212 2211) -4(192 212 213 193) -4(2192 2193 2213 2212) -4(193 213 214 194) -4(2193 2194 2214 2213) -4(194 214 215 195) -4(2194 2195 2215 2214) -4(195 215 216 196) -4(2195 2196 2216 2215) -4(196 216 217 197) -4(2196 2197 2217 2216) -4(197 217 218 198) -4(2197 2198 2218 2217) -4(198 218 219 199) -4(2198 2199 2219 2218) -4(200 220 221 201) -4(2200 2201 2221 2220) -4(201 221 222 202) -4(2201 2202 2222 2221) -4(202 222 223 203) -4(2202 2203 2223 2222) -4(203 223 224 204) -4(2203 2204 2224 2223) -4(204 224 225 205) -4(2204 2205 2225 2224) -4(205 225 226 206) -4(2205 2206 2226 2225) -4(206 226 227 207) -4(2206 2207 2227 2226) -4(207 227 228 208) -4(2207 2208 2228 2227) -4(208 228 229 209) -4(2208 2209 2229 2228) -4(209 229 230 210) -4(2209 2210 2230 2229) -4(210 230 231 211) -4(2210 2211 2231 2230) -4(211 231 232 212) -4(2211 2212 2232 2231) -4(212 232 233 213) -4(2212 2213 2233 2232) -4(213 233 234 214) -4(2213 2214 2234 2233) -4(214 234 235 215) -4(2214 2215 2235 2234) -4(215 235 236 216) -4(2215 2216 2236 2235) -4(216 236 237 217) -4(2216 2217 2237 2236) -4(217 237 238 218) -4(2217 2218 2238 2237) -4(218 238 239 219) -4(2218 2219 2239 2238) -4(220 240 241 221) -4(2220 2221 2241 2240) -4(221 241 242 222) -4(2221 2222 2242 2241) -4(222 242 243 223) -4(2222 2223 2243 2242) -4(223 243 244 224) -4(2223 2224 2244 2243) -4(224 244 245 225) -4(2224 2225 2245 2244) -4(225 245 246 226) -4(2225 2226 2246 2245) -4(226 246 247 227) -4(2226 2227 2247 2246) -4(227 247 248 228) -4(2227 2228 2248 2247) -4(228 248 249 229) -4(2228 2229 2249 2248) -4(229 249 250 230) -4(2229 2230 2250 2249) -4(230 250 251 231) -4(2230 2231 2251 2250) -4(231 251 252 232) -4(2231 2232 2252 2251) -4(232 252 253 233) -4(2232 2233 2253 2252) -4(233 253 254 234) -4(2233 2234 2254 2253) -4(234 254 255 235) -4(2234 2235 2255 2254) -4(235 255 256 236) -4(2235 2236 2256 2255) -4(236 256 257 237) -4(2236 2237 2257 2256) -4(237 257 258 238) -4(2237 2238 2258 2257) -4(238 258 259 239) -4(2238 2239 2259 2258) -4(240 260 261 241) -4(2240 2241 2261 2260) -4(241 261 262 242) -4(2241 2242 2262 2261) -4(242 262 263 243) -4(2242 2243 2263 2262) -4(243 263 264 244) -4(2243 2244 2264 2263) -4(244 264 265 245) -4(2244 2245 2265 2264) -4(245 265 266 246) -4(2245 2246 2266 2265) -4(246 266 267 247) -4(2246 2247 2267 2266) -4(247 267 268 248) -4(2247 2248 2268 2267) -4(248 268 269 249) -4(2248 2249 2269 2268) -4(249 269 270 250) -4(2249 2250 2270 2269) -4(250 270 271 251) -4(2250 2251 2271 2270) -4(251 271 272 252) -4(2251 2252 2272 2271) -4(252 272 273 253) -4(2252 2253 2273 2272) -4(253 273 274 254) -4(2253 2254 2274 2273) -4(254 274 275 255) -4(2254 2255 2275 2274) -4(255 275 276 256) -4(2255 2256 2276 2275) -4(256 276 277 257) -4(2256 2257 2277 2276) -4(257 277 278 258) -4(2257 2258 2278 2277) -4(258 278 279 259) -4(2258 2259 2279 2278) -4(260 280 281 261) -4(2260 2261 2281 2280) -4(261 281 282 262) -4(2261 2262 2282 2281) -4(262 282 283 263) -4(2262 2263 2283 2282) -4(263 283 284 264) -4(2263 2264 2284 2283) -4(264 284 285 265) -4(2264 2265 2285 2284) -4(265 285 286 266) -4(2265 2266 2286 2285) -4(266 286 287 267) -4(2266 2267 2287 2286) -4(267 287 288 268) -4(2267 2268 2288 2287) -4(268 288 289 269) -4(2268 2269 2289 2288) -4(269 289 290 270) -4(2269 2270 2290 2289) -4(270 290 291 271) -4(2270 2271 2291 2290) -4(271 291 292 272) -4(2271 2272 2292 2291) -4(272 292 293 273) -4(2272 2273 2293 2292) -4(273 293 294 274) -4(2273 2274 2294 2293) -4(274 294 295 275) -4(2274 2275 2295 2294) -4(275 295 296 276) -4(2275 2276 2296 2295) -4(276 296 297 277) -4(2276 2277 2297 2296) -4(277 297 298 278) -4(2277 2278 2298 2297) -4(278 298 299 279) -4(2278 2279 2299 2298) -4(280 300 301 281) -4(2280 2281 2301 2300) -4(281 301 302 282) -4(2281 2282 2302 2301) -4(282 302 303 283) -4(2282 2283 2303 2302) -4(283 303 304 284) -4(2283 2284 2304 2303) -4(284 304 305 285) -4(2284 2285 2305 2304) -4(285 305 306 286) -4(2285 2286 2306 2305) -4(286 306 307 287) -4(2286 2287 2307 2306) -4(287 307 308 288) -4(2287 2288 2308 2307) -4(288 308 309 289) -4(2288 2289 2309 2308) -4(289 309 310 290) -4(2289 2290 2310 2309) -4(290 310 311 291) -4(2290 2291 2311 2310) -4(291 311 312 292) -4(2291 2292 2312 2311) -4(292 312 313 293) -4(2292 2293 2313 2312) -4(293 313 314 294) -4(2293 2294 2314 2313) -4(294 314 315 295) -4(2294 2295 2315 2314) -4(295 315 316 296) -4(2295 2296 2316 2315) -4(296 316 317 297) -4(2296 2297 2317 2316) -4(297 317 318 298) -4(2297 2298 2318 2317) -4(298 318 319 299) -4(2298 2299 2319 2318) -4(300 320 321 301) -4(2300 2301 2321 2320) -4(301 321 322 302) -4(2301 2302 2322 2321) -4(302 322 323 303) -4(2302 2303 2323 2322) -4(303 323 324 304) -4(2303 2304 2324 2323) -4(304 324 325 305) -4(2304 2305 2325 2324) -4(305 325 326 306) -4(2305 2306 2326 2325) -4(306 326 327 307) -4(2306 2307 2327 2326) -4(307 327 328 308) -4(2307 2308 2328 2327) -4(308 328 329 309) -4(2308 2309 2329 2328) -4(309 329 330 310) -4(2309 2310 2330 2329) -4(310 330 331 311) -4(2310 2311 2331 2330) -4(311 331 332 312) -4(2311 2312 2332 2331) -4(312 332 333 313) -4(2312 2313 2333 2332) -4(313 333 334 314) -4(2313 2314 2334 2333) -4(314 334 335 315) -4(2314 2315 2335 2334) -4(315 335 336 316) -4(2315 2316 2336 2335) -4(316 336 337 317) -4(2316 2317 2337 2336) -4(317 337 338 318) -4(2317 2318 2338 2337) -4(318 338 339 319) -4(2318 2319 2339 2338) -4(320 340 341 321) -4(2320 2321 2341 2340) -4(321 341 342 322) -4(2321 2322 2342 2341) -4(322 342 343 323) -4(2322 2323 2343 2342) -4(323 343 344 324) -4(2323 2324 2344 2343) -4(324 344 345 325) -4(2324 2325 2345 2344) -4(325 345 346 326) -4(2325 2326 2346 2345) -4(326 346 347 327) -4(2326 2327 2347 2346) -4(327 347 348 328) -4(2327 2328 2348 2347) -4(328 348 349 329) -4(2328 2329 2349 2348) -4(329 349 350 330) -4(2329 2330 2350 2349) -4(330 350 351 331) -4(2330 2331 2351 2350) -4(331 351 352 332) -4(2331 2332 2352 2351) -4(332 352 353 333) -4(2332 2333 2353 2352) -4(333 353 354 334) -4(2333 2334 2354 2353) -4(334 354 355 335) -4(2334 2335 2355 2354) -4(335 355 356 336) -4(2335 2336 2356 2355) -4(336 356 357 337) -4(2336 2337 2357 2356) -4(337 357 358 338) -4(2337 2338 2358 2357) -4(338 358 359 339) -4(2338 2339 2359 2358) -4(340 360 361 341) -4(2340 2341 2361 2360) -4(341 361 362 342) -4(2341 2342 2362 2361) -4(342 362 363 343) -4(2342 2343 2363 2362) -4(343 363 364 344) -4(2343 2344 2364 2363) -4(344 364 365 345) -4(2344 2345 2365 2364) -4(345 365 366 346) -4(2345 2346 2366 2365) -4(346 366 367 347) -4(2346 2347 2367 2366) -4(347 367 368 348) -4(2347 2348 2368 2367) -4(348 368 369 349) -4(2348 2349 2369 2368) -4(349 369 370 350) -4(2349 2350 2370 2369) -4(350 370 371 351) -4(2350 2351 2371 2370) -4(351 371 372 352) -4(2351 2352 2372 2371) -4(352 372 373 353) -4(2352 2353 2373 2372) -4(353 373 374 354) -4(2353 2354 2374 2373) -4(354 374 375 355) -4(2354 2355 2375 2374) -4(355 375 376 356) -4(2355 2356 2376 2375) -4(356 376 377 357) -4(2356 2357 2377 2376) -4(357 377 378 358) -4(2357 2358 2378 2377) -4(358 378 379 359) -4(2358 2359 2379 2378) -4(360 380 381 361) -4(2360 2361 2381 2380) -4(361 381 382 362) -4(2361 2362 2382 2381) -4(362 382 383 363) -4(2362 2363 2383 2382) -4(363 383 384 364) -4(2363 2364 2384 2383) -4(364 384 385 365) -4(2364 2365 2385 2384) -4(365 385 386 366) -4(2365 2366 2386 2385) -4(366 386 387 367) -4(2366 2367 2387 2386) -4(367 387 388 368) -4(2367 2368 2388 2387) -4(368 388 389 369) -4(2368 2369 2389 2388) -4(369 389 390 370) -4(2369 2370 2390 2389) -4(370 390 391 371) -4(2370 2371 2391 2390) -4(371 391 392 372) -4(2371 2372 2392 2391) -4(372 392 393 373) -4(2372 2373 2393 2392) -4(373 393 394 374) -4(2373 2374 2394 2393) -4(374 394 395 375) -4(2374 2375 2395 2394) -4(375 395 396 376) -4(2375 2376 2396 2395) -4(376 396 397 377) -4(2376 2377 2397 2396) -4(377 397 398 378) -4(2377 2378 2398 2397) -4(378 398 399 379) -4(2378 2379 2399 2398) -4(380 400 401 381) -4(2380 2381 2401 2400) -4(381 401 402 382) -4(2381 2382 2402 2401) -4(382 402 403 383) -4(2382 2383 2403 2402) -4(383 403 404 384) -4(2383 2384 2404 2403) -4(384 404 405 385) -4(2384 2385 2405 2404) -4(385 405 406 386) -4(2385 2386 2406 2405) -4(386 406 407 387) -4(2386 2387 2407 2406) -4(387 407 408 388) -4(2387 2388 2408 2407) -4(388 408 409 389) -4(2388 2389 2409 2408) -4(389 409 410 390) -4(2389 2390 2410 2409) -4(390 410 411 391) -4(2390 2391 2411 2410) -4(391 411 412 392) -4(2391 2392 2412 2411) -4(392 412 413 393) -4(2392 2393 2413 2412) -4(393 413 414 394) -4(2393 2394 2414 2413) -4(394 414 415 395) -4(2394 2395 2415 2414) -4(395 415 416 396) -4(2395 2396 2416 2415) -4(396 416 417 397) -4(2396 2397 2417 2416) -4(397 417 418 398) -4(2397 2398 2418 2417) -4(398 418 419 399) -4(2398 2399 2419 2418) -4(400 420 421 401) -4(2400 2401 2421 2420) -4(401 421 422 402) -4(2401 2402 2422 2421) -4(402 422 423 403) -4(2402 2403 2423 2422) -4(403 423 424 404) -4(2403 2404 2424 2423) -4(404 424 425 405) -4(2404 2405 2425 2424) -4(405 425 426 406) -4(2405 2406 2426 2425) -4(406 426 427 407) -4(2406 2407 2427 2426) -4(407 427 428 408) -4(2407 2408 2428 2427) -4(408 428 429 409) -4(2408 2409 2429 2428) -4(409 429 430 410) -4(2409 2410 2430 2429) -4(410 430 431 411) -4(2410 2411 2431 2430) -4(411 431 432 412) -4(2411 2412 2432 2431) -4(412 432 433 413) -4(2412 2413 2433 2432) -4(413 433 434 414) -4(2413 2414 2434 2433) -4(414 434 435 415) -4(2414 2415 2435 2434) -4(415 435 436 416) -4(2415 2416 2436 2435) -4(416 436 437 417) -4(2416 2417 2437 2436) -4(417 437 438 418) -4(2417 2418 2438 2437) -4(418 438 439 419) -4(2418 2419 2439 2438) -4(420 440 441 421) -4(2420 2421 2441 2440) -4(421 441 442 422) -4(2421 2422 2442 2441) -4(422 442 443 423) -4(2422 2423 2443 2442) -4(423 443 444 424) -4(2423 2424 2444 2443) -4(424 444 445 425) -4(2424 2425 2445 2444) -4(425 445 446 426) -4(2425 2426 2446 2445) -4(426 446 447 427) -4(2426 2427 2447 2446) -4(427 447 448 428) -4(2427 2428 2448 2447) -4(428 448 449 429) -4(2428 2429 2449 2448) -4(429 449 450 430) -4(2429 2430 2450 2449) -4(430 450 451 431) -4(2430 2431 2451 2450) -4(431 451 452 432) -4(2431 2432 2452 2451) -4(432 452 453 433) -4(2432 2433 2453 2452) -4(433 453 454 434) -4(2433 2434 2454 2453) -4(434 454 455 435) -4(2434 2435 2455 2454) -4(435 455 456 436) -4(2435 2436 2456 2455) -4(436 456 457 437) -4(2436 2437 2457 2456) -4(437 457 458 438) -4(2437 2438 2458 2457) -4(438 458 459 439) -4(2438 2439 2459 2458) -4(440 460 461 441) -4(2440 2441 2461 2460) -4(441 461 462 442) -4(2441 2442 2462 2461) -4(442 462 463 443) -4(2442 2443 2463 2462) -4(443 463 464 444) -4(2443 2444 2464 2463) -4(444 464 465 445) -4(2444 2445 2465 2464) -4(445 465 466 446) -4(2445 2446 2466 2465) -4(446 466 467 447) -4(2446 2447 2467 2466) -4(447 467 468 448) -4(2447 2448 2468 2467) -4(448 468 469 449) -4(2448 2449 2469 2468) -4(449 469 470 450) -4(2449 2450 2470 2469) -4(450 470 471 451) -4(2450 2451 2471 2470) -4(451 471 472 452) -4(2451 2452 2472 2471) -4(452 472 473 453) -4(2452 2453 2473 2472) -4(453 473 474 454) -4(2453 2454 2474 2473) -4(454 474 475 455) -4(2454 2455 2475 2474) -4(455 475 476 456) -4(2455 2456 2476 2475) -4(456 476 477 457) -4(2456 2457 2477 2476) -4(457 477 478 458) -4(2457 2458 2478 2477) -4(458 478 479 459) -4(2458 2459 2479 2478) -4(460 480 481 461) -4(2460 2461 2481 2480) -4(461 481 482 462) -4(2461 2462 2482 2481) -4(462 482 483 463) -4(2462 2463 2483 2482) -4(463 483 484 464) -4(2463 2464 2484 2483) -4(464 484 485 465) -4(2464 2465 2485 2484) -4(465 485 486 466) -4(2465 2466 2486 2485) -4(466 486 487 467) -4(2466 2467 2487 2486) -4(467 487 488 468) -4(2467 2468 2488 2487) -4(468 488 489 469) -4(2468 2469 2489 2488) -4(469 489 490 470) -4(2469 2470 2490 2489) -4(470 490 491 471) -4(2470 2471 2491 2490) -4(471 491 492 472) -4(2471 2472 2492 2491) -4(472 492 493 473) -4(2472 2473 2493 2492) -4(473 493 494 474) -4(2473 2474 2494 2493) -4(474 494 495 475) -4(2474 2475 2495 2494) -4(475 495 496 476) -4(2475 2476 2496 2495) -4(476 496 497 477) -4(2476 2477 2497 2496) -4(477 497 498 478) -4(2477 2478 2498 2497) -4(478 498 499 479) -4(2478 2479 2499 2498) -4(480 500 501 481) -4(2480 2481 2501 2500) -4(481 501 502 482) -4(2481 2482 2502 2501) -4(482 502 503 483) -4(2482 2483 2503 2502) -4(483 503 504 484) -4(2483 2484 2504 2503) -4(484 504 505 485) -4(2484 2485 2505 2504) -4(485 505 506 486) -4(2485 2486 2506 2505) -4(486 506 507 487) -4(2486 2487 2507 2506) -4(487 507 508 488) -4(2487 2488 2508 2507) -4(488 508 509 489) -4(2488 2489 2509 2508) -4(489 509 510 490) -4(2489 2490 2510 2509) -4(490 510 511 491) -4(2490 2491 2511 2510) -4(491 511 512 492) -4(2491 2492 2512 2511) -4(492 512 513 493) -4(2492 2493 2513 2512) -4(493 513 514 494) -4(2493 2494 2514 2513) -4(494 514 515 495) -4(2494 2495 2515 2514) -4(495 515 516 496) -4(2495 2496 2516 2515) -4(496 516 517 497) -4(2496 2497 2517 2516) -4(497 517 518 498) -4(2497 2498 2518 2517) -4(498 518 519 499) -4(2498 2499 2519 2518) -4(500 520 521 501) -4(2500 2501 2521 2520) -4(501 521 522 502) -4(2501 2502 2522 2521) -4(502 522 523 503) -4(2502 2503 2523 2522) -4(503 523 524 504) -4(2503 2504 2524 2523) -4(504 524 525 505) -4(2504 2505 2525 2524) -4(505 525 526 506) -4(2505 2506 2526 2525) -4(506 526 527 507) -4(2506 2507 2527 2526) -4(507 527 528 508) -4(2507 2508 2528 2527) -4(508 528 529 509) -4(2508 2509 2529 2528) -4(509 529 530 510) -4(2509 2510 2530 2529) -4(510 530 531 511) -4(2510 2511 2531 2530) -4(511 531 532 512) -4(2511 2512 2532 2531) -4(512 532 533 513) -4(2512 2513 2533 2532) -4(513 533 534 514) -4(2513 2514 2534 2533) -4(514 534 535 515) -4(2514 2515 2535 2534) -4(515 535 536 516) -4(2515 2516 2536 2535) -4(516 536 537 517) -4(2516 2517 2537 2536) -4(517 537 538 518) -4(2517 2518 2538 2537) -4(518 538 539 519) -4(2518 2519 2539 2538) -4(520 540 541 521) -4(2520 2521 2541 2540) -4(521 541 542 522) -4(2521 2522 2542 2541) -4(522 542 543 523) -4(2522 2523 2543 2542) -4(523 543 544 524) -4(2523 2524 2544 2543) -4(524 544 545 525) -4(2524 2525 2545 2544) -4(525 545 546 526) -4(2525 2526 2546 2545) -4(526 546 547 527) -4(2526 2527 2547 2546) -4(527 547 548 528) -4(2527 2528 2548 2547) -4(528 548 549 529) -4(2528 2529 2549 2548) -4(529 549 550 530) -4(2529 2530 2550 2549) -4(530 550 551 531) -4(2530 2531 2551 2550) -4(531 551 552 532) -4(2531 2532 2552 2551) -4(532 552 553 533) -4(2532 2533 2553 2552) -4(533 553 554 534) -4(2533 2534 2554 2553) -4(534 554 555 535) -4(2534 2535 2555 2554) -4(535 555 556 536) -4(2535 2536 2556 2555) -4(536 556 557 537) -4(2536 2537 2557 2556) -4(537 557 558 538) -4(2537 2538 2558 2557) -4(538 558 559 539) -4(2538 2539 2559 2558) -4(540 560 561 541) -4(2540 2541 2561 2560) -4(541 561 562 542) -4(2541 2542 2562 2561) -4(542 562 563 543) -4(2542 2543 2563 2562) -4(543 563 564 544) -4(2543 2544 2564 2563) -4(544 564 565 545) -4(2544 2545 2565 2564) -4(545 565 566 546) -4(2545 2546 2566 2565) -4(546 566 567 547) -4(2546 2547 2567 2566) -4(547 567 568 548) -4(2547 2548 2568 2567) -4(548 568 569 549) -4(2548 2549 2569 2568) -4(549 569 570 550) -4(2549 2550 2570 2569) -4(550 570 571 551) -4(2550 2551 2571 2570) -4(551 571 572 552) -4(2551 2552 2572 2571) -4(552 572 573 553) -4(2552 2553 2573 2572) -4(553 573 574 554) -4(2553 2554 2574 2573) -4(554 574 575 555) -4(2554 2555 2575 2574) -4(555 575 576 556) -4(2555 2556 2576 2575) -4(556 576 577 557) -4(2556 2557 2577 2576) -4(557 577 578 558) -4(2557 2558 2578 2577) -4(558 578 579 559) -4(2558 2559 2579 2578) -4(560 580 581 561) -4(2560 2561 2581 2580) -4(561 581 582 562) -4(2561 2562 2582 2581) -4(562 582 583 563) -4(2562 2563 2583 2582) -4(563 583 584 564) -4(2563 2564 2584 2583) -4(564 584 585 565) -4(2564 2565 2585 2584) -4(565 585 586 566) -4(2565 2566 2586 2585) -4(566 586 587 567) -4(2566 2567 2587 2586) -4(567 587 588 568) -4(2567 2568 2588 2587) -4(568 588 589 569) -4(2568 2569 2589 2588) -4(569 589 590 570) -4(2569 2570 2590 2589) -4(570 590 591 571) -4(2570 2571 2591 2590) -4(571 591 592 572) -4(2571 2572 2592 2591) -4(572 592 593 573) -4(2572 2573 2593 2592) -4(573 593 594 574) -4(2573 2574 2594 2593) -4(574 594 595 575) -4(2574 2575 2595 2594) -4(575 595 596 576) -4(2575 2576 2596 2595) -4(576 596 597 577) -4(2576 2577 2597 2596) -4(577 597 598 578) -4(2577 2578 2598 2597) -4(578 598 599 579) -4(2578 2579 2599 2598) -4(580 600 601 581) -4(2580 2581 2601 2600) -4(581 601 602 582) -4(2581 2582 2602 2601) -4(582 602 603 583) -4(2582 2583 2603 2602) -4(583 603 604 584) -4(2583 2584 2604 2603) -4(584 604 605 585) -4(2584 2585 2605 2604) -4(585 605 606 586) -4(2585 2586 2606 2605) -4(586 606 607 587) -4(2586 2587 2607 2606) -4(587 607 608 588) -4(2587 2588 2608 2607) -4(588 608 609 589) -4(2588 2589 2609 2608) -4(589 609 610 590) -4(2589 2590 2610 2609) -4(590 610 611 591) -4(2590 2591 2611 2610) -4(591 611 612 592) -4(2591 2592 2612 2611) -4(592 612 613 593) -4(2592 2593 2613 2612) -4(593 613 614 594) -4(2593 2594 2614 2613) -4(594 614 615 595) -4(2594 2595 2615 2614) -4(595 615 616 596) -4(2595 2596 2616 2615) -4(596 616 617 597) -4(2596 2597 2617 2616) -4(597 617 618 598) -4(2597 2598 2618 2617) -4(598 618 619 599) -4(2598 2599 2619 2618) -4(600 620 621 601) -4(2600 2601 2621 2620) -4(601 621 622 602) -4(2601 2602 2622 2621) -4(602 622 623 603) -4(2602 2603 2623 2622) -4(603 623 624 604) -4(2603 2604 2624 2623) -4(604 624 625 605) -4(2604 2605 2625 2624) -4(605 625 626 606) -4(2605 2606 2626 2625) -4(606 626 627 607) -4(2606 2607 2627 2626) -4(607 627 628 608) -4(2607 2608 2628 2627) -4(608 628 629 609) -4(2608 2609 2629 2628) -4(609 629 630 610) -4(2609 2610 2630 2629) -4(610 630 631 611) -4(2610 2611 2631 2630) -4(611 631 632 612) -4(2611 2612 2632 2631) -4(612 632 633 613) -4(2612 2613 2633 2632) -4(613 633 634 614) -4(2613 2614 2634 2633) -4(614 634 635 615) -4(2614 2615 2635 2634) -4(615 635 636 616) -4(2615 2616 2636 2635) -4(616 636 637 617) -4(2616 2617 2637 2636) -4(617 637 638 618) -4(2617 2618 2638 2637) -4(618 638 639 619) -4(2618 2619 2639 2638) -4(620 640 641 621) -4(2620 2621 2641 2640) -4(621 641 642 622) -4(2621 2622 2642 2641) -4(622 642 643 623) -4(2622 2623 2643 2642) -4(623 643 644 624) -4(2623 2624 2644 2643) -4(624 644 645 625) -4(2624 2625 2645 2644) -4(625 645 646 626) -4(2625 2626 2646 2645) -4(626 646 647 627) -4(2626 2627 2647 2646) -4(627 647 648 628) -4(2627 2628 2648 2647) -4(628 648 649 629) -4(2628 2629 2649 2648) -4(629 649 650 630) -4(2629 2630 2650 2649) -4(630 650 651 631) -4(2630 2631 2651 2650) -4(631 651 652 632) -4(2631 2632 2652 2651) -4(632 652 653 633) -4(2632 2633 2653 2652) -4(633 653 654 634) -4(2633 2634 2654 2653) -4(634 654 655 635) -4(2634 2635 2655 2654) -4(635 655 656 636) -4(2635 2636 2656 2655) -4(636 656 657 637) -4(2636 2637 2657 2656) -4(637 657 658 638) -4(2637 2638 2658 2657) -4(638 658 659 639) -4(2638 2639 2659 2658) -4(640 660 661 641) -4(2640 2641 2661 2660) -4(641 661 662 642) -4(2641 2642 2662 2661) -4(642 662 663 643) -4(2642 2643 2663 2662) -4(643 663 664 644) -4(2643 2644 2664 2663) -4(644 664 665 645) -4(2644 2645 2665 2664) -4(645 665 666 646) -4(2645 2646 2666 2665) -4(646 666 667 647) -4(2646 2647 2667 2666) -4(647 667 668 648) -4(2647 2648 2668 2667) -4(648 668 669 649) -4(2648 2649 2669 2668) -4(649 669 670 650) -4(2649 2650 2670 2669) -4(650 670 671 651) -4(2650 2651 2671 2670) -4(651 671 672 652) -4(2651 2652 2672 2671) -4(652 672 673 653) -4(2652 2653 2673 2672) -4(653 673 674 654) -4(2653 2654 2674 2673) -4(654 674 675 655) -4(2654 2655 2675 2674) -4(655 675 676 656) -4(2655 2656 2676 2675) -4(656 676 677 657) -4(2656 2657 2677 2676) -4(657 677 678 658) -4(2657 2658 2678 2677) -4(658 678 679 659) -4(2658 2659 2679 2678) -4(660 680 681 661) -4(2660 2661 2681 2680) -4(661 681 682 662) -4(2661 2662 2682 2681) -4(662 682 683 663) -4(2662 2663 2683 2682) -4(663 683 684 664) -4(2663 2664 2684 2683) -4(664 684 685 665) -4(2664 2665 2685 2684) -4(665 685 686 666) -4(2665 2666 2686 2685) -4(666 686 687 667) -4(2666 2667 2687 2686) -4(667 687 688 668) -4(2667 2668 2688 2687) -4(668 688 689 669) -4(2668 2669 2689 2688) -4(669 689 690 670) -4(2669 2670 2690 2689) -4(670 690 691 671) -4(2670 2671 2691 2690) -4(671 691 692 672) -4(2671 2672 2692 2691) -4(672 692 693 673) -4(2672 2673 2693 2692) -4(673 693 694 674) -4(2673 2674 2694 2693) -4(674 694 695 675) -4(2674 2675 2695 2694) -4(675 695 696 676) -4(2675 2676 2696 2695) -4(676 696 697 677) -4(2676 2677 2697 2696) -4(677 697 698 678) -4(2677 2678 2698 2697) -4(678 698 699 679) -4(2678 2679 2699 2698) -4(680 700 701 681) -4(2680 2681 2701 2700) -4(681 701 702 682) -4(2681 2682 2702 2701) -4(682 702 703 683) -4(2682 2683 2703 2702) -4(683 703 704 684) -4(2683 2684 2704 2703) -4(684 704 705 685) -4(2684 2685 2705 2704) -4(685 705 706 686) -4(2685 2686 2706 2705) -4(686 706 707 687) -4(2686 2687 2707 2706) -4(687 707 708 688) -4(2687 2688 2708 2707) -4(688 708 709 689) -4(2688 2689 2709 2708) -4(689 709 710 690) -4(2689 2690 2710 2709) -4(690 710 711 691) -4(2690 2691 2711 2710) -4(691 711 712 692) -4(2691 2692 2712 2711) -4(692 712 713 693) -4(2692 2693 2713 2712) -4(693 713 714 694) -4(2693 2694 2714 2713) -4(694 714 715 695) -4(2694 2695 2715 2714) -4(695 715 716 696) -4(2695 2696 2716 2715) -4(696 716 717 697) -4(2696 2697 2717 2716) -4(697 717 718 698) -4(2697 2698 2718 2717) -4(698 718 719 699) -4(2698 2699 2719 2718) -4(700 720 721 701) -4(2700 2701 2721 2720) -4(701 721 722 702) -4(2701 2702 2722 2721) -4(702 722 723 703) -4(2702 2703 2723 2722) -4(703 723 724 704) -4(2703 2704 2724 2723) -4(704 724 725 705) -4(2704 2705 2725 2724) -4(705 725 726 706) -4(2705 2706 2726 2725) -4(706 726 727 707) -4(2706 2707 2727 2726) -4(707 727 728 708) -4(2707 2708 2728 2727) -4(708 728 729 709) -4(2708 2709 2729 2728) -4(709 729 730 710) -4(2709 2710 2730 2729) -4(710 730 731 711) -4(2710 2711 2731 2730) -4(711 731 732 712) -4(2711 2712 2732 2731) -4(712 732 733 713) -4(2712 2713 2733 2732) -4(713 733 734 714) -4(2713 2714 2734 2733) -4(714 734 735 715) -4(2714 2715 2735 2734) -4(715 735 736 716) -4(2715 2716 2736 2735) -4(716 736 737 717) -4(2716 2717 2737 2736) -4(717 737 738 718) -4(2717 2718 2738 2737) -4(718 738 739 719) -4(2718 2719 2739 2738) -4(720 740 741 721) -4(2720 2721 2741 2740) -4(721 741 742 722) -4(2721 2722 2742 2741) -4(722 742 743 723) -4(2722 2723 2743 2742) -4(723 743 744 724) -4(2723 2724 2744 2743) -4(724 744 745 725) -4(2724 2725 2745 2744) -4(725 745 746 726) -4(2725 2726 2746 2745) -4(726 746 747 727) -4(2726 2727 2747 2746) -4(727 747 748 728) -4(2727 2728 2748 2747) -4(728 748 749 729) -4(2728 2729 2749 2748) -4(729 749 750 730) -4(2729 2730 2750 2749) -4(730 750 751 731) -4(2730 2731 2751 2750) -4(731 751 752 732) -4(2731 2732 2752 2751) -4(732 752 753 733) -4(2732 2733 2753 2752) -4(733 753 754 734) -4(2733 2734 2754 2753) -4(734 754 755 735) -4(2734 2735 2755 2754) -4(735 755 756 736) -4(2735 2736 2756 2755) -4(736 756 757 737) -4(2736 2737 2757 2756) -4(737 757 758 738) -4(2737 2738 2758 2757) -4(738 758 759 739) -4(2738 2739 2759 2758) -4(740 760 761 741) -4(2740 2741 2761 2760) -4(741 761 762 742) -4(2741 2742 2762 2761) -4(742 762 763 743) -4(2742 2743 2763 2762) -4(743 763 764 744) -4(2743 2744 2764 2763) -4(744 764 765 745) -4(2744 2745 2765 2764) -4(745 765 766 746) -4(2745 2746 2766 2765) -4(746 766 767 747) -4(2746 2747 2767 2766) -4(747 767 768 748) -4(2747 2748 2768 2767) -4(748 768 769 749) -4(2748 2749 2769 2768) -4(749 769 770 750) -4(2749 2750 2770 2769) -4(750 770 771 751) -4(2750 2751 2771 2770) -4(751 771 772 752) -4(2751 2752 2772 2771) -4(752 772 773 753) -4(2752 2753 2773 2772) -4(753 773 774 754) -4(2753 2754 2774 2773) -4(754 774 775 755) -4(2754 2755 2775 2774) -4(755 775 776 756) -4(2755 2756 2776 2775) -4(756 776 777 757) -4(2756 2757 2777 2776) -4(757 777 778 758) -4(2757 2758 2778 2777) -4(758 778 779 759) -4(2758 2759 2779 2778) -4(760 780 781 761) -4(2760 2761 2781 2780) -4(761 781 782 762) -4(2761 2762 2782 2781) -4(762 782 783 763) -4(2762 2763 2783 2782) -4(763 783 784 764) -4(2763 2764 2784 2783) -4(764 784 785 765) -4(2764 2765 2785 2784) -4(765 785 786 766) -4(2765 2766 2786 2785) -4(766 786 787 767) -4(2766 2767 2787 2786) -4(767 787 788 768) -4(2767 2768 2788 2787) -4(768 788 789 769) -4(2768 2769 2789 2788) -4(769 789 790 770) -4(2769 2770 2790 2789) -4(770 790 791 771) -4(2770 2771 2791 2790) -4(771 791 792 772) -4(2771 2772 2792 2791) -4(772 792 793 773) -4(2772 2773 2793 2792) -4(773 793 794 774) -4(2773 2774 2794 2793) -4(774 794 795 775) -4(2774 2775 2795 2794) -4(775 795 796 776) -4(2775 2776 2796 2795) -4(776 796 797 777) -4(2776 2777 2797 2796) -4(777 797 798 778) -4(2777 2778 2798 2797) -4(778 798 799 779) -4(2778 2779 2799 2798) -4(780 800 801 781) -4(2780 2781 2801 2800) -4(781 801 802 782) -4(2781 2782 2802 2801) -4(782 802 803 783) -4(2782 2783 2803 2802) -4(783 803 804 784) -4(2783 2784 2804 2803) -4(784 804 805 785) -4(2784 2785 2805 2804) -4(785 805 806 786) -4(2785 2786 2806 2805) -4(786 806 807 787) -4(2786 2787 2807 2806) -4(787 807 808 788) -4(2787 2788 2808 2807) -4(788 808 809 789) -4(2788 2789 2809 2808) -4(789 809 810 790) -4(2789 2790 2810 2809) -4(790 810 811 791) -4(2790 2791 2811 2810) -4(791 811 812 792) -4(2791 2792 2812 2811) -4(792 812 813 793) -4(2792 2793 2813 2812) -4(793 813 814 794) -4(2793 2794 2814 2813) -4(794 814 815 795) -4(2794 2795 2815 2814) -4(795 815 816 796) -4(2795 2796 2816 2815) -4(796 816 817 797) -4(2796 2797 2817 2816) -4(797 817 818 798) -4(2797 2798 2818 2817) -4(798 818 819 799) -4(2798 2799 2819 2818) -4(800 820 821 801) -4(2800 2801 2821 2820) -4(801 821 822 802) -4(2801 2802 2822 2821) -4(802 822 823 803) -4(2802 2803 2823 2822) -4(803 823 824 804) -4(2803 2804 2824 2823) -4(804 824 825 805) -4(2804 2805 2825 2824) -4(805 825 826 806) -4(2805 2806 2826 2825) -4(806 826 827 807) -4(2806 2807 2827 2826) -4(807 827 828 808) -4(2807 2808 2828 2827) -4(808 828 829 809) -4(2808 2809 2829 2828) -4(809 829 830 810) -4(2809 2810 2830 2829) -4(810 830 831 811) -4(2810 2811 2831 2830) -4(811 831 832 812) -4(2811 2812 2832 2831) -4(812 832 833 813) -4(2812 2813 2833 2832) -4(813 833 834 814) -4(2813 2814 2834 2833) -4(814 834 835 815) -4(2814 2815 2835 2834) -4(815 835 836 816) -4(2815 2816 2836 2835) -4(816 836 837 817) -4(2816 2817 2837 2836) -4(817 837 838 818) -4(2817 2818 2838 2837) -4(818 838 839 819) -4(2818 2819 2839 2838) -4(820 840 841 821) -4(2820 2821 2841 2840) -4(821 841 842 822) -4(2821 2822 2842 2841) -4(822 842 843 823) -4(2822 2823 2843 2842) -4(823 843 844 824) -4(2823 2824 2844 2843) -4(824 844 845 825) -4(2824 2825 2845 2844) -4(825 845 846 826) -4(2825 2826 2846 2845) -4(826 846 847 827) -4(2826 2827 2847 2846) -4(827 847 848 828) -4(2827 2828 2848 2847) -4(828 848 849 829) -4(2828 2829 2849 2848) -4(829 849 850 830) -4(2829 2830 2850 2849) -4(830 850 851 831) -4(2830 2831 2851 2850) -4(831 851 852 832) -4(2831 2832 2852 2851) -4(832 852 853 833) -4(2832 2833 2853 2852) -4(833 853 854 834) -4(2833 2834 2854 2853) -4(834 854 855 835) -4(2834 2835 2855 2854) -4(835 855 856 836) -4(2835 2836 2856 2855) -4(836 856 857 837) -4(2836 2837 2857 2856) -4(837 857 858 838) -4(2837 2838 2858 2857) -4(838 858 859 839) -4(2838 2839 2859 2858) -4(840 860 861 841) -4(2840 2841 2861 2860) -4(841 861 862 842) -4(2841 2842 2862 2861) -4(842 862 863 843) -4(2842 2843 2863 2862) -4(843 863 864 844) -4(2843 2844 2864 2863) -4(844 864 865 845) -4(2844 2845 2865 2864) -4(845 865 866 846) -4(2845 2846 2866 2865) -4(846 866 867 847) -4(2846 2847 2867 2866) -4(847 867 868 848) -4(2847 2848 2868 2867) -4(848 868 869 849) -4(2848 2849 2869 2868) -4(849 869 870 850) -4(2849 2850 2870 2869) -4(850 870 871 851) -4(2850 2851 2871 2870) -4(851 871 872 852) -4(2851 2852 2872 2871) -4(852 872 873 853) -4(2852 2853 2873 2872) -4(853 873 874 854) -4(2853 2854 2874 2873) -4(854 874 875 855) -4(2854 2855 2875 2874) -4(855 875 876 856) -4(2855 2856 2876 2875) -4(856 876 877 857) -4(2856 2857 2877 2876) -4(857 877 878 858) -4(2857 2858 2878 2877) -4(858 878 879 859) -4(2858 2859 2879 2878) -4(860 880 881 861) -4(2860 2861 2881 2880) -4(861 881 882 862) -4(2861 2862 2882 2881) -4(862 882 883 863) -4(2862 2863 2883 2882) -4(863 883 884 864) -4(2863 2864 2884 2883) -4(864 884 885 865) -4(2864 2865 2885 2884) -4(865 885 886 866) -4(2865 2866 2886 2885) -4(866 886 887 867) -4(2866 2867 2887 2886) -4(867 887 888 868) -4(2867 2868 2888 2887) -4(868 888 889 869) -4(2868 2869 2889 2888) -4(869 889 890 870) -4(2869 2870 2890 2889) -4(870 890 891 871) -4(2870 2871 2891 2890) -4(871 891 892 872) -4(2871 2872 2892 2891) -4(872 892 893 873) -4(2872 2873 2893 2892) -4(873 893 894 874) -4(2873 2874 2894 2893) -4(874 894 895 875) -4(2874 2875 2895 2894) -4(875 895 896 876) -4(2875 2876 2896 2895) -4(876 896 897 877) -4(2876 2877 2897 2896) -4(877 897 898 878) -4(2877 2878 2898 2897) -4(878 898 899 879) -4(2878 2879 2899 2898) -4(880 900 901 881) -4(2880 2881 2901 2900) -4(881 901 902 882) -4(2881 2882 2902 2901) -4(882 902 903 883) -4(2882 2883 2903 2902) -4(883 903 904 884) -4(2883 2884 2904 2903) -4(884 904 905 885) -4(2884 2885 2905 2904) -4(885 905 906 886) -4(2885 2886 2906 2905) -4(886 906 907 887) -4(2886 2887 2907 2906) -4(887 907 908 888) -4(2887 2888 2908 2907) -4(888 908 909 889) -4(2888 2889 2909 2908) -4(889 909 910 890) -4(2889 2890 2910 2909) -4(890 910 911 891) -4(2890 2891 2911 2910) -4(891 911 912 892) -4(2891 2892 2912 2911) -4(892 912 913 893) -4(2892 2893 2913 2912) -4(893 913 914 894) -4(2893 2894 2914 2913) -4(894 914 915 895) -4(2894 2895 2915 2914) -4(895 915 916 896) -4(2895 2896 2916 2915) -4(896 916 917 897) -4(2896 2897 2917 2916) -4(897 917 918 898) -4(2897 2898 2918 2917) -4(898 918 919 899) -4(2898 2899 2919 2918) -4(900 920 921 901) -4(2900 2901 2921 2920) -4(901 921 922 902) -4(2901 2902 2922 2921) -4(902 922 923 903) -4(2902 2903 2923 2922) -4(903 923 924 904) -4(2903 2904 2924 2923) -4(904 924 925 905) -4(2904 2905 2925 2924) -4(905 925 926 906) -4(2905 2906 2926 2925) -4(906 926 927 907) -4(2906 2907 2927 2926) -4(907 927 928 908) -4(2907 2908 2928 2927) -4(908 928 929 909) -4(2908 2909 2929 2928) -4(909 929 930 910) -4(2909 2910 2930 2929) -4(910 930 931 911) -4(2910 2911 2931 2930) -4(911 931 932 912) -4(2911 2912 2932 2931) -4(912 932 933 913) -4(2912 2913 2933 2932) -4(913 933 934 914) -4(2913 2914 2934 2933) -4(914 934 935 915) -4(2914 2915 2935 2934) -4(915 935 936 916) -4(2915 2916 2936 2935) -4(916 936 937 917) -4(2916 2917 2937 2936) -4(917 937 938 918) -4(2917 2918 2938 2937) -4(918 938 939 919) -4(2918 2919 2939 2938) -4(920 940 941 921) -4(2920 2921 2941 2940) -4(921 941 942 922) -4(2921 2922 2942 2941) -4(922 942 943 923) -4(2922 2923 2943 2942) -4(923 943 944 924) -4(2923 2924 2944 2943) -4(924 944 945 925) -4(2924 2925 2945 2944) -4(925 945 946 926) -4(2925 2926 2946 2945) -4(926 946 947 927) -4(2926 2927 2947 2946) -4(927 947 948 928) -4(2927 2928 2948 2947) -4(928 948 949 929) -4(2928 2929 2949 2948) -4(929 949 950 930) -4(2929 2930 2950 2949) -4(930 950 951 931) -4(2930 2931 2951 2950) -4(931 951 952 932) -4(2931 2932 2952 2951) -4(932 952 953 933) -4(2932 2933 2953 2952) -4(933 953 954 934) -4(2933 2934 2954 2953) -4(934 954 955 935) -4(2934 2935 2955 2954) -4(935 955 956 936) -4(2935 2936 2956 2955) -4(936 956 957 937) -4(2936 2937 2957 2956) -4(937 957 958 938) -4(2937 2938 2958 2957) -4(938 958 959 939) -4(2938 2939 2959 2958) -4(940 960 961 941) -4(2940 2941 2961 2960) -4(941 961 962 942) -4(2941 2942 2962 2961) -4(942 962 963 943) -4(2942 2943 2963 2962) -4(943 963 964 944) -4(2943 2944 2964 2963) -4(944 964 965 945) -4(2944 2945 2965 2964) -4(945 965 966 946) -4(2945 2946 2966 2965) -4(946 966 967 947) -4(2946 2947 2967 2966) -4(947 967 968 948) -4(2947 2948 2968 2967) -4(948 968 969 949) -4(2948 2949 2969 2968) -4(949 969 970 950) -4(2949 2950 2970 2969) -4(950 970 971 951) -4(2950 2951 2971 2970) -4(951 971 972 952) -4(2951 2952 2972 2971) -4(952 972 973 953) -4(2952 2953 2973 2972) -4(953 973 974 954) -4(2953 2954 2974 2973) -4(954 974 975 955) -4(2954 2955 2975 2974) -4(955 975 976 956) -4(2955 2956 2976 2975) -4(956 976 977 957) -4(2956 2957 2977 2976) -4(957 977 978 958) -4(2957 2958 2978 2977) -4(958 978 979 959) -4(2958 2959 2979 2978) -4(960 980 981 961) -4(2960 2961 2981 2980) -4(961 981 982 962) -4(2961 2962 2982 2981) -4(962 982 983 963) -4(2962 2963 2983 2982) -4(963 983 984 964) -4(2963 2964 2984 2983) -4(964 984 985 965) -4(2964 2965 2985 2984) -4(965 985 986 966) -4(2965 2966 2986 2985) -4(966 986 987 967) -4(2966 2967 2987 2986) -4(967 987 988 968) -4(2967 2968 2988 2987) -4(968 988 989 969) -4(2968 2969 2989 2988) -4(969 989 990 970) -4(2969 2970 2990 2989) -4(970 990 991 971) -4(2970 2971 2991 2990) -4(971 991 992 972) -4(2971 2972 2992 2991) -4(972 992 993 973) -4(2972 2973 2993 2992) -4(973 993 994 974) -4(2973 2974 2994 2993) -4(974 994 995 975) -4(2974 2975 2995 2994) -4(975 995 996 976) -4(2975 2976 2996 2995) -4(976 996 997 977) -4(2976 2977 2997 2996) -4(977 997 998 978) -4(2977 2978 2998 2997) -4(978 998 999 979) -4(2978 2979 2999 2998) -4(980 1000 1001 981) -4(2980 2981 3001 3000) -4(981 1001 1002 982) -4(2981 2982 3002 3001) -4(982 1002 1003 983) -4(2982 2983 3003 3002) -4(983 1003 1004 984) -4(2983 2984 3004 3003) -4(984 1004 1005 985) -4(2984 2985 3005 3004) -4(985 1005 1006 986) -4(2985 2986 3006 3005) -4(986 1006 1007 987) -4(2986 2987 3007 3006) -4(987 1007 1008 988) -4(2987 2988 3008 3007) -4(988 1008 1009 989) -4(2988 2989 3009 3008) -4(989 1009 1010 990) -4(2989 2990 3010 3009) -4(990 1010 1011 991) -4(2990 2991 3011 3010) -4(991 1011 1012 992) -4(2991 2992 3012 3011) -4(992 1012 1013 993) -4(2992 2993 3013 3012) -4(993 1013 1014 994) -4(2993 2994 3014 3013) -4(994 1014 1015 995) -4(2994 2995 3015 3014) -4(995 1015 1016 996) -4(2995 2996 3016 3015) -4(996 1016 1017 997) -4(2996 2997 3017 3016) -4(997 1017 1018 998) -4(2997 2998 3018 3017) -4(998 1018 1019 999) -4(2998 2999 3019 3018) -4(1000 1020 1021 1001) -4(3000 3001 3021 3020) -4(1001 1021 1022 1002) -4(3001 3002 3022 3021) -4(1002 1022 1023 1003) -4(3002 3003 3023 3022) -4(1003 1023 1024 1004) -4(3003 3004 3024 3023) -4(1004 1024 1025 1005) -4(3004 3005 3025 3024) -4(1005 1025 1026 1006) -4(3005 3006 3026 3025) -4(1006 1026 1027 1007) -4(3006 3007 3027 3026) -4(1007 1027 1028 1008) -4(3007 3008 3028 3027) -4(1008 1028 1029 1009) -4(3008 3009 3029 3028) -4(1009 1029 1030 1010) -4(3009 3010 3030 3029) -4(1010 1030 1031 1011) -4(3010 3011 3031 3030) -4(1011 1031 1032 1012) -4(3011 3012 3032 3031) -4(1012 1032 1033 1013) -4(3012 3013 3033 3032) -4(1013 1033 1034 1014) -4(3013 3014 3034 3033) -4(1014 1034 1035 1015) -4(3014 3015 3035 3034) -4(1015 1035 1036 1016) -4(3015 3016 3036 3035) -4(1016 1036 1037 1017) -4(3016 3017 3037 3036) -4(1017 1037 1038 1018) -4(3017 3018 3038 3037) -4(1018 1038 1039 1019) -4(3018 3019 3039 3038) -4(1020 1040 1041 1021) -4(3020 3021 3041 3040) -4(1021 1041 1042 1022) -4(3021 3022 3042 3041) -4(1022 1042 1043 1023) -4(3022 3023 3043 3042) -4(1023 1043 1044 1024) -4(3023 3024 3044 3043) -4(1024 1044 1045 1025) -4(3024 3025 3045 3044) -4(1025 1045 1046 1026) -4(3025 3026 3046 3045) -4(1026 1046 1047 1027) -4(3026 3027 3047 3046) -4(1027 1047 1048 1028) -4(3027 3028 3048 3047) -4(1028 1048 1049 1029) -4(3028 3029 3049 3048) -4(1029 1049 1050 1030) -4(3029 3030 3050 3049) -4(1030 1050 1051 1031) -4(3030 3031 3051 3050) -4(1031 1051 1052 1032) -4(3031 3032 3052 3051) -4(1032 1052 1053 1033) -4(3032 3033 3053 3052) -4(1033 1053 1054 1034) -4(3033 3034 3054 3053) -4(1034 1054 1055 1035) -4(3034 3035 3055 3054) -4(1035 1055 1056 1036) -4(3035 3036 3056 3055) -4(1036 1056 1057 1037) -4(3036 3037 3057 3056) -4(1037 1057 1058 1038) -4(3037 3038 3058 3057) -4(1038 1058 1059 1039) -4(3038 3039 3059 3058) -4(1040 1060 1061 1041) -4(3040 3041 3061 3060) -4(1041 1061 1062 1042) -4(3041 3042 3062 3061) -4(1042 1062 1063 1043) -4(3042 3043 3063 3062) -4(1043 1063 1064 1044) -4(3043 3044 3064 3063) -4(1044 1064 1065 1045) -4(3044 3045 3065 3064) -4(1045 1065 1066 1046) -4(3045 3046 3066 3065) -4(1046 1066 1067 1047) -4(3046 3047 3067 3066) -4(1047 1067 1068 1048) -4(3047 3048 3068 3067) -4(1048 1068 1069 1049) -4(3048 3049 3069 3068) -4(1049 1069 1070 1050) -4(3049 3050 3070 3069) -4(1050 1070 1071 1051) -4(3050 3051 3071 3070) -4(1051 1071 1072 1052) -4(3051 3052 3072 3071) -4(1052 1072 1073 1053) -4(3052 3053 3073 3072) -4(1053 1073 1074 1054) -4(3053 3054 3074 3073) -4(1054 1074 1075 1055) -4(3054 3055 3075 3074) -4(1055 1075 1076 1056) -4(3055 3056 3076 3075) -4(1056 1076 1077 1057) -4(3056 3057 3077 3076) -4(1057 1077 1078 1058) -4(3057 3058 3078 3077) -4(1058 1078 1079 1059) -4(3058 3059 3079 3078) -4(1060 1080 1081 1061) -4(3060 3061 3081 3080) -4(1061 1081 1082 1062) -4(3061 3062 3082 3081) -4(1062 1082 1083 1063) -4(3062 3063 3083 3082) -4(1063 1083 1084 1064) -4(3063 3064 3084 3083) -4(1064 1084 1085 1065) -4(3064 3065 3085 3084) -4(1065 1085 1086 1066) -4(3065 3066 3086 3085) -4(1066 1086 1087 1067) -4(3066 3067 3087 3086) -4(1067 1087 1088 1068) -4(3067 3068 3088 3087) -4(1068 1088 1089 1069) -4(3068 3069 3089 3088) -4(1069 1089 1090 1070) -4(3069 3070 3090 3089) -4(1070 1090 1091 1071) -4(3070 3071 3091 3090) -4(1071 1091 1092 1072) -4(3071 3072 3092 3091) -4(1072 1092 1093 1073) -4(3072 3073 3093 3092) -4(1073 1093 1094 1074) -4(3073 3074 3094 3093) -4(1074 1094 1095 1075) -4(3074 3075 3095 3094) -4(1075 1095 1096 1076) -4(3075 3076 3096 3095) -4(1076 1096 1097 1077) -4(3076 3077 3097 3096) -4(1077 1097 1098 1078) -4(3077 3078 3098 3097) -4(1078 1098 1099 1079) -4(3078 3079 3099 3098) -4(1080 1100 1101 1081) -4(3080 3081 3101 3100) -4(1081 1101 1102 1082) -4(3081 3082 3102 3101) -4(1082 1102 1103 1083) -4(3082 3083 3103 3102) -4(1083 1103 1104 1084) -4(3083 3084 3104 3103) -4(1084 1104 1105 1085) -4(3084 3085 3105 3104) -4(1085 1105 1106 1086) -4(3085 3086 3106 3105) -4(1086 1106 1107 1087) -4(3086 3087 3107 3106) -4(1087 1107 1108 1088) -4(3087 3088 3108 3107) -4(1088 1108 1109 1089) -4(3088 3089 3109 3108) -4(1089 1109 1110 1090) -4(3089 3090 3110 3109) -4(1090 1110 1111 1091) -4(3090 3091 3111 3110) -4(1091 1111 1112 1092) -4(3091 3092 3112 3111) -4(1092 1112 1113 1093) -4(3092 3093 3113 3112) -4(1093 1113 1114 1094) -4(3093 3094 3114 3113) -4(1094 1114 1115 1095) -4(3094 3095 3115 3114) -4(1095 1115 1116 1096) -4(3095 3096 3116 3115) -4(1096 1116 1117 1097) -4(3096 3097 3117 3116) -4(1097 1117 1118 1098) -4(3097 3098 3118 3117) -4(1098 1118 1119 1099) -4(3098 3099 3119 3118) -4(1100 1120 1121 1101) -4(3100 3101 3121 3120) -4(1101 1121 1122 1102) -4(3101 3102 3122 3121) -4(1102 1122 1123 1103) -4(3102 3103 3123 3122) -4(1103 1123 1124 1104) -4(3103 3104 3124 3123) -4(1104 1124 1125 1105) -4(3104 3105 3125 3124) -4(1105 1125 1126 1106) -4(3105 3106 3126 3125) -4(1106 1126 1127 1107) -4(3106 3107 3127 3126) -4(1107 1127 1128 1108) -4(3107 3108 3128 3127) -4(1108 1128 1129 1109) -4(3108 3109 3129 3128) -4(1109 1129 1130 1110) -4(3109 3110 3130 3129) -4(1110 1130 1131 1111) -4(3110 3111 3131 3130) -4(1111 1131 1132 1112) -4(3111 3112 3132 3131) -4(1112 1132 1133 1113) -4(3112 3113 3133 3132) -4(1113 1133 1134 1114) -4(3113 3114 3134 3133) -4(1114 1134 1135 1115) -4(3114 3115 3135 3134) -4(1115 1135 1136 1116) -4(3115 3116 3136 3135) -4(1116 1136 1137 1117) -4(3116 3117 3137 3136) -4(1117 1137 1138 1118) -4(3117 3118 3138 3137) -4(1118 1138 1139 1119) -4(3118 3119 3139 3138) -4(1120 1140 1141 1121) -4(3120 3121 3141 3140) -4(1121 1141 1142 1122) -4(3121 3122 3142 3141) -4(1122 1142 1143 1123) -4(3122 3123 3143 3142) -4(1123 1143 1144 1124) -4(3123 3124 3144 3143) -4(1124 1144 1145 1125) -4(3124 3125 3145 3144) -4(1125 1145 1146 1126) -4(3125 3126 3146 3145) -4(1126 1146 1147 1127) -4(3126 3127 3147 3146) -4(1127 1147 1148 1128) -4(3127 3128 3148 3147) -4(1128 1148 1149 1129) -4(3128 3129 3149 3148) -4(1129 1149 1150 1130) -4(3129 3130 3150 3149) -4(1130 1150 1151 1131) -4(3130 3131 3151 3150) -4(1131 1151 1152 1132) -4(3131 3132 3152 3151) -4(1132 1152 1153 1133) -4(3132 3133 3153 3152) -4(1133 1153 1154 1134) -4(3133 3134 3154 3153) -4(1134 1154 1155 1135) -4(3134 3135 3155 3154) -4(1135 1155 1156 1136) -4(3135 3136 3156 3155) -4(1136 1156 1157 1137) -4(3136 3137 3157 3156) -4(1137 1157 1158 1138) -4(3137 3138 3158 3157) -4(1138 1158 1159 1139) -4(3138 3139 3159 3158) -4(1140 1160 1161 1141) -4(3140 3141 3161 3160) -4(1141 1161 1162 1142) -4(3141 3142 3162 3161) -4(1142 1162 1163 1143) -4(3142 3143 3163 3162) -4(1143 1163 1164 1144) -4(3143 3144 3164 3163) -4(1144 1164 1165 1145) -4(3144 3145 3165 3164) -4(1145 1165 1166 1146) -4(3145 3146 3166 3165) -4(1146 1166 1167 1147) -4(3146 3147 3167 3166) -4(1147 1167 1168 1148) -4(3147 3148 3168 3167) -4(1148 1168 1169 1149) -4(3148 3149 3169 3168) -4(1149 1169 1170 1150) -4(3149 3150 3170 3169) -4(1150 1170 1171 1151) -4(3150 3151 3171 3170) -4(1151 1171 1172 1152) -4(3151 3152 3172 3171) -4(1152 1172 1173 1153) -4(3152 3153 3173 3172) -4(1153 1173 1174 1154) -4(3153 3154 3174 3173) -4(1154 1174 1175 1155) -4(3154 3155 3175 3174) -4(1155 1175 1176 1156) -4(3155 3156 3176 3175) -4(1156 1176 1177 1157) -4(3156 3157 3177 3176) -4(1157 1177 1178 1158) -4(3157 3158 3178 3177) -4(1158 1178 1179 1159) -4(3158 3159 3179 3178) -4(1160 1180 1181 1161) -4(3160 3161 3181 3180) -4(1161 1181 1182 1162) -4(3161 3162 3182 3181) -4(1162 1182 1183 1163) -4(3162 3163 3183 3182) -4(1163 1183 1184 1164) -4(3163 3164 3184 3183) -4(1164 1184 1185 1165) -4(3164 3165 3185 3184) -4(1165 1185 1186 1166) -4(3165 3166 3186 3185) -4(1166 1186 1187 1167) -4(3166 3167 3187 3186) -4(1167 1187 1188 1168) -4(3167 3168 3188 3187) -4(1168 1188 1189 1169) -4(3168 3169 3189 3188) -4(1169 1189 1190 1170) -4(3169 3170 3190 3189) -4(1170 1190 1191 1171) -4(3170 3171 3191 3190) -4(1171 1191 1192 1172) -4(3171 3172 3192 3191) -4(1172 1192 1193 1173) -4(3172 3173 3193 3192) -4(1173 1193 1194 1174) -4(3173 3174 3194 3193) -4(1174 1194 1195 1175) -4(3174 3175 3195 3194) -4(1175 1195 1196 1176) -4(3175 3176 3196 3195) -4(1176 1196 1197 1177) -4(3176 3177 3197 3196) -4(1177 1197 1198 1178) -4(3177 3178 3198 3197) -4(1178 1198 1199 1179) -4(3178 3179 3199 3198) -4(1180 1200 1201 1181) -4(3180 3181 3201 3200) -4(1181 1201 1202 1182) -4(3181 3182 3202 3201) -4(1182 1202 1203 1183) -4(3182 3183 3203 3202) -4(1183 1203 1204 1184) -4(3183 3184 3204 3203) -4(1184 1204 1205 1185) -4(3184 3185 3205 3204) -4(1185 1205 1206 1186) -4(3185 3186 3206 3205) -4(1186 1206 1207 1187) -4(3186 3187 3207 3206) -4(1187 1207 1208 1188) -4(3187 3188 3208 3207) -4(1188 1208 1209 1189) -4(3188 3189 3209 3208) -4(1189 1209 1210 1190) -4(3189 3190 3210 3209) -4(1190 1210 1211 1191) -4(3190 3191 3211 3210) -4(1191 1211 1212 1192) -4(3191 3192 3212 3211) -4(1192 1212 1213 1193) -4(3192 3193 3213 3212) -4(1193 1213 1214 1194) -4(3193 3194 3214 3213) -4(1194 1214 1215 1195) -4(3194 3195 3215 3214) -4(1195 1215 1216 1196) -4(3195 3196 3216 3215) -4(1196 1216 1217 1197) -4(3196 3197 3217 3216) -4(1197 1217 1218 1198) -4(3197 3198 3218 3217) -4(1198 1218 1219 1199) -4(3198 3199 3219 3218) -4(1200 1220 1221 1201) -4(3200 3201 3221 3220) -4(1201 1221 1222 1202) -4(3201 3202 3222 3221) -4(1202 1222 1223 1203) -4(3202 3203 3223 3222) -4(1203 1223 1224 1204) -4(3203 3204 3224 3223) -4(1204 1224 1225 1205) -4(3204 3205 3225 3224) -4(1205 1225 1226 1206) -4(3205 3206 3226 3225) -4(1206 1226 1227 1207) -4(3206 3207 3227 3226) -4(1207 1227 1228 1208) -4(3207 3208 3228 3227) -4(1208 1228 1229 1209) -4(3208 3209 3229 3228) -4(1209 1229 1230 1210) -4(3209 3210 3230 3229) -4(1210 1230 1231 1211) -4(3210 3211 3231 3230) -4(1211 1231 1232 1212) -4(3211 3212 3232 3231) -4(1212 1232 1233 1213) -4(3212 3213 3233 3232) -4(1213 1233 1234 1214) -4(3213 3214 3234 3233) -4(1214 1234 1235 1215) -4(3214 3215 3235 3234) -4(1215 1235 1236 1216) -4(3215 3216 3236 3235) -4(1216 1236 1237 1217) -4(3216 3217 3237 3236) -4(1217 1237 1238 1218) -4(3217 3218 3238 3237) -4(1218 1238 1239 1219) -4(3218 3219 3239 3238) -4(1220 1240 1241 1221) -4(3220 3221 3241 3240) -4(1221 1241 1242 1222) -4(3221 3222 3242 3241) -4(1222 1242 1243 1223) -4(3222 3223 3243 3242) -4(1223 1243 1244 1224) -4(3223 3224 3244 3243) -4(1224 1244 1245 1225) -4(3224 3225 3245 3244) -4(1225 1245 1246 1226) -4(3225 3226 3246 3245) -4(1226 1246 1247 1227) -4(3226 3227 3247 3246) -4(1227 1247 1248 1228) -4(3227 3228 3248 3247) -4(1228 1248 1249 1229) -4(3228 3229 3249 3248) -4(1229 1249 1250 1230) -4(3229 3230 3250 3249) -4(1230 1250 1251 1231) -4(3230 3231 3251 3250) -4(1231 1251 1252 1232) -4(3231 3232 3252 3251) -4(1232 1252 1253 1233) -4(3232 3233 3253 3252) -4(1233 1253 1254 1234) -4(3233 3234 3254 3253) -4(1234 1254 1255 1235) -4(3234 3235 3255 3254) -4(1235 1255 1256 1236) -4(3235 3236 3256 3255) -4(1236 1256 1257 1237) -4(3236 3237 3257 3256) -4(1237 1257 1258 1238) -4(3237 3238 3258 3257) -4(1238 1258 1259 1239) -4(3238 3239 3259 3258) -4(1240 1260 1261 1241) -4(3240 3241 3261 3260) -4(1241 1261 1262 1242) -4(3241 3242 3262 3261) -4(1242 1262 1263 1243) -4(3242 3243 3263 3262) -4(1243 1263 1264 1244) -4(3243 3244 3264 3263) -4(1244 1264 1265 1245) -4(3244 3245 3265 3264) -4(1245 1265 1266 1246) -4(3245 3246 3266 3265) -4(1246 1266 1267 1247) -4(3246 3247 3267 3266) -4(1247 1267 1268 1248) -4(3247 3248 3268 3267) -4(1248 1268 1269 1249) -4(3248 3249 3269 3268) -4(1249 1269 1270 1250) -4(3249 3250 3270 3269) -4(1250 1270 1271 1251) -4(3250 3251 3271 3270) -4(1251 1271 1272 1252) -4(3251 3252 3272 3271) -4(1252 1272 1273 1253) -4(3252 3253 3273 3272) -4(1253 1273 1274 1254) -4(3253 3254 3274 3273) -4(1254 1274 1275 1255) -4(3254 3255 3275 3274) -4(1255 1275 1276 1256) -4(3255 3256 3276 3275) -4(1256 1276 1277 1257) -4(3256 3257 3277 3276) -4(1257 1277 1278 1258) -4(3257 3258 3278 3277) -4(1258 1278 1279 1259) -4(3258 3259 3279 3278) -4(1260 1280 1281 1261) -4(3260 3261 3281 3280) -4(1261 1281 1282 1262) -4(3261 3262 3282 3281) -4(1262 1282 1283 1263) -4(3262 3263 3283 3282) -4(1263 1283 1284 1264) -4(3263 3264 3284 3283) -4(1264 1284 1285 1265) -4(3264 3265 3285 3284) -4(1265 1285 1286 1266) -4(3265 3266 3286 3285) -4(1266 1286 1287 1267) -4(3266 3267 3287 3286) -4(1267 1287 1288 1268) -4(3267 3268 3288 3287) -4(1268 1288 1289 1269) -4(3268 3269 3289 3288) -4(1269 1289 1290 1270) -4(3269 3270 3290 3289) -4(1270 1290 1291 1271) -4(3270 3271 3291 3290) -4(1271 1291 1292 1272) -4(3271 3272 3292 3291) -4(1272 1292 1293 1273) -4(3272 3273 3293 3292) -4(1273 1293 1294 1274) -4(3273 3274 3294 3293) -4(1274 1294 1295 1275) -4(3274 3275 3295 3294) -4(1275 1295 1296 1276) -4(3275 3276 3296 3295) -4(1276 1296 1297 1277) -4(3276 3277 3297 3296) -4(1277 1297 1298 1278) -4(3277 3278 3298 3297) -4(1278 1298 1299 1279) -4(3278 3279 3299 3298) -4(1280 1300 1301 1281) -4(3280 3281 3301 3300) -4(1281 1301 1302 1282) -4(3281 3282 3302 3301) -4(1282 1302 1303 1283) -4(3282 3283 3303 3302) -4(1283 1303 1304 1284) -4(3283 3284 3304 3303) -4(1284 1304 1305 1285) -4(3284 3285 3305 3304) -4(1285 1305 1306 1286) -4(3285 3286 3306 3305) -4(1286 1306 1307 1287) -4(3286 3287 3307 3306) -4(1287 1307 1308 1288) -4(3287 3288 3308 3307) -4(1288 1308 1309 1289) -4(3288 3289 3309 3308) -4(1289 1309 1310 1290) -4(3289 3290 3310 3309) -4(1290 1310 1311 1291) -4(3290 3291 3311 3310) -4(1291 1311 1312 1292) -4(3291 3292 3312 3311) -4(1292 1312 1313 1293) -4(3292 3293 3313 3312) -4(1293 1313 1314 1294) -4(3293 3294 3314 3313) -4(1294 1314 1315 1295) -4(3294 3295 3315 3314) -4(1295 1315 1316 1296) -4(3295 3296 3316 3315) -4(1296 1316 1317 1297) -4(3296 3297 3317 3316) -4(1297 1317 1318 1298) -4(3297 3298 3318 3317) -4(1298 1318 1319 1299) -4(3298 3299 3319 3318) -4(1300 1320 1321 1301) -4(3300 3301 3321 3320) -4(1301 1321 1322 1302) -4(3301 3302 3322 3321) -4(1302 1322 1323 1303) -4(3302 3303 3323 3322) -4(1303 1323 1324 1304) -4(3303 3304 3324 3323) -4(1304 1324 1325 1305) -4(3304 3305 3325 3324) -4(1305 1325 1326 1306) -4(3305 3306 3326 3325) -4(1306 1326 1327 1307) -4(3306 3307 3327 3326) -4(1307 1327 1328 1308) -4(3307 3308 3328 3327) -4(1308 1328 1329 1309) -4(3308 3309 3329 3328) -4(1309 1329 1330 1310) -4(3309 3310 3330 3329) -4(1310 1330 1331 1311) -4(3310 3311 3331 3330) -4(1311 1331 1332 1312) -4(3311 3312 3332 3331) -4(1312 1332 1333 1313) -4(3312 3313 3333 3332) -4(1313 1333 1334 1314) -4(3313 3314 3334 3333) -4(1314 1334 1335 1315) -4(3314 3315 3335 3334) -4(1315 1335 1336 1316) -4(3315 3316 3336 3335) -4(1316 1336 1337 1317) -4(3316 3317 3337 3336) -4(1317 1337 1338 1318) -4(3317 3318 3338 3337) -4(1318 1338 1339 1319) -4(3318 3319 3339 3338) -4(1320 1340 1341 1321) -4(3320 3321 3341 3340) -4(1321 1341 1342 1322) -4(3321 3322 3342 3341) -4(1322 1342 1343 1323) -4(3322 3323 3343 3342) -4(1323 1343 1344 1324) -4(3323 3324 3344 3343) -4(1324 1344 1345 1325) -4(3324 3325 3345 3344) -4(1325 1345 1346 1326) -4(3325 3326 3346 3345) -4(1326 1346 1347 1327) -4(3326 3327 3347 3346) -4(1327 1347 1348 1328) -4(3327 3328 3348 3347) -4(1328 1348 1349 1329) -4(3328 3329 3349 3348) -4(1329 1349 1350 1330) -4(3329 3330 3350 3349) -4(1330 1350 1351 1331) -4(3330 3331 3351 3350) -4(1331 1351 1352 1332) -4(3331 3332 3352 3351) -4(1332 1352 1353 1333) -4(3332 3333 3353 3352) -4(1333 1353 1354 1334) -4(3333 3334 3354 3353) -4(1334 1354 1355 1335) -4(3334 3335 3355 3354) -4(1335 1355 1356 1336) -4(3335 3336 3356 3355) -4(1336 1356 1357 1337) -4(3336 3337 3357 3356) -4(1337 1357 1358 1338) -4(3337 3338 3358 3357) -4(1338 1358 1359 1339) -4(3338 3339 3359 3358) -4(1340 1360 1361 1341) -4(3340 3341 3361 3360) -4(1341 1361 1362 1342) -4(3341 3342 3362 3361) -4(1342 1362 1363 1343) -4(3342 3343 3363 3362) -4(1343 1363 1364 1344) -4(3343 3344 3364 3363) -4(1344 1364 1365 1345) -4(3344 3345 3365 3364) -4(1345 1365 1366 1346) -4(3345 3346 3366 3365) -4(1346 1366 1367 1347) -4(3346 3347 3367 3366) -4(1347 1367 1368 1348) -4(3347 3348 3368 3367) -4(1348 1368 1369 1349) -4(3348 3349 3369 3368) -4(1349 1369 1370 1350) -4(3349 3350 3370 3369) -4(1350 1370 1371 1351) -4(3350 3351 3371 3370) -4(1351 1371 1372 1352) -4(3351 3352 3372 3371) -4(1352 1372 1373 1353) -4(3352 3353 3373 3372) -4(1353 1373 1374 1354) -4(3353 3354 3374 3373) -4(1354 1374 1375 1355) -4(3354 3355 3375 3374) -4(1355 1375 1376 1356) -4(3355 3356 3376 3375) -4(1356 1376 1377 1357) -4(3356 3357 3377 3376) -4(1357 1377 1378 1358) -4(3357 3358 3378 3377) -4(1358 1378 1379 1359) -4(3358 3359 3379 3378) -4(1360 1380 1381 1361) -4(3360 3361 3381 3380) -4(1361 1381 1382 1362) -4(3361 3362 3382 3381) -4(1362 1382 1383 1363) -4(3362 3363 3383 3382) -4(1363 1383 1384 1364) -4(3363 3364 3384 3383) -4(1364 1384 1385 1365) -4(3364 3365 3385 3384) -4(1365 1385 1386 1366) -4(3365 3366 3386 3385) -4(1366 1386 1387 1367) -4(3366 3367 3387 3386) -4(1367 1387 1388 1368) -4(3367 3368 3388 3387) -4(1368 1388 1389 1369) -4(3368 3369 3389 3388) -4(1369 1389 1390 1370) -4(3369 3370 3390 3389) -4(1370 1390 1391 1371) -4(3370 3371 3391 3390) -4(1371 1391 1392 1372) -4(3371 3372 3392 3391) -4(1372 1392 1393 1373) -4(3372 3373 3393 3392) -4(1373 1393 1394 1374) -4(3373 3374 3394 3393) -4(1374 1394 1395 1375) -4(3374 3375 3395 3394) -4(1375 1395 1396 1376) -4(3375 3376 3396 3395) -4(1376 1396 1397 1377) -4(3376 3377 3397 3396) -4(1377 1397 1398 1378) -4(3377 3378 3398 3397) -4(1378 1398 1399 1379) -4(3378 3379 3399 3398) -4(1380 1400 1401 1381) -4(3380 3381 3401 3400) -4(1381 1401 1402 1382) -4(3381 3382 3402 3401) -4(1382 1402 1403 1383) -4(3382 3383 3403 3402) -4(1383 1403 1404 1384) -4(3383 3384 3404 3403) -4(1384 1404 1405 1385) -4(3384 3385 3405 3404) -4(1385 1405 1406 1386) -4(3385 3386 3406 3405) -4(1386 1406 1407 1387) -4(3386 3387 3407 3406) -4(1387 1407 1408 1388) -4(3387 3388 3408 3407) -4(1388 1408 1409 1389) -4(3388 3389 3409 3408) -4(1389 1409 1410 1390) -4(3389 3390 3410 3409) -4(1390 1410 1411 1391) -4(3390 3391 3411 3410) -4(1391 1411 1412 1392) -4(3391 3392 3412 3411) -4(1392 1412 1413 1393) -4(3392 3393 3413 3412) -4(1393 1413 1414 1394) -4(3393 3394 3414 3413) -4(1394 1414 1415 1395) -4(3394 3395 3415 3414) -4(1395 1415 1416 1396) -4(3395 3396 3416 3415) -4(1396 1416 1417 1397) -4(3396 3397 3417 3416) -4(1397 1417 1418 1398) -4(3397 3398 3418 3417) -4(1398 1418 1419 1399) -4(3398 3399 3419 3418) -4(1400 1420 1421 1401) -4(3400 3401 3421 3420) -4(1401 1421 1422 1402) -4(3401 3402 3422 3421) -4(1402 1422 1423 1403) -4(3402 3403 3423 3422) -4(1403 1423 1424 1404) -4(3403 3404 3424 3423) -4(1404 1424 1425 1405) -4(3404 3405 3425 3424) -4(1405 1425 1426 1406) -4(3405 3406 3426 3425) -4(1406 1426 1427 1407) -4(3406 3407 3427 3426) -4(1407 1427 1428 1408) -4(3407 3408 3428 3427) -4(1408 1428 1429 1409) -4(3408 3409 3429 3428) -4(1409 1429 1430 1410) -4(3409 3410 3430 3429) -4(1410 1430 1431 1411) -4(3410 3411 3431 3430) -4(1411 1431 1432 1412) -4(3411 3412 3432 3431) -4(1412 1432 1433 1413) -4(3412 3413 3433 3432) -4(1413 1433 1434 1414) -4(3413 3414 3434 3433) -4(1414 1434 1435 1415) -4(3414 3415 3435 3434) -4(1415 1435 1436 1416) -4(3415 3416 3436 3435) -4(1416 1436 1437 1417) -4(3416 3417 3437 3436) -4(1417 1437 1438 1418) -4(3417 3418 3438 3437) -4(1418 1438 1439 1419) -4(3418 3419 3439 3438) -4(1420 1440 1441 1421) -4(3420 3421 3441 3440) -4(1421 1441 1442 1422) -4(3421 3422 3442 3441) -4(1422 1442 1443 1423) -4(3422 3423 3443 3442) -4(1423 1443 1444 1424) -4(3423 3424 3444 3443) -4(1424 1444 1445 1425) -4(3424 3425 3445 3444) -4(1425 1445 1446 1426) -4(3425 3426 3446 3445) -4(1426 1446 1447 1427) -4(3426 3427 3447 3446) -4(1427 1447 1448 1428) -4(3427 3428 3448 3447) -4(1428 1448 1449 1429) -4(3428 3429 3449 3448) -4(1429 1449 1450 1430) -4(3429 3430 3450 3449) -4(1430 1450 1451 1431) -4(3430 3431 3451 3450) -4(1431 1451 1452 1432) -4(3431 3432 3452 3451) -4(1432 1452 1453 1433) -4(3432 3433 3453 3452) -4(1433 1453 1454 1434) -4(3433 3434 3454 3453) -4(1434 1454 1455 1435) -4(3434 3435 3455 3454) -4(1435 1455 1456 1436) -4(3435 3436 3456 3455) -4(1436 1456 1457 1437) -4(3436 3437 3457 3456) -4(1437 1457 1458 1438) -4(3437 3438 3458 3457) -4(1438 1458 1459 1439) -4(3438 3439 3459 3458) -4(1440 1460 1461 1441) -4(3440 3441 3461 3460) -4(1441 1461 1462 1442) -4(3441 3442 3462 3461) -4(1442 1462 1463 1443) -4(3442 3443 3463 3462) -4(1443 1463 1464 1444) -4(3443 3444 3464 3463) -4(1444 1464 1465 1445) -4(3444 3445 3465 3464) -4(1445 1465 1466 1446) -4(3445 3446 3466 3465) -4(1446 1466 1467 1447) -4(3446 3447 3467 3466) -4(1447 1467 1468 1448) -4(3447 3448 3468 3467) -4(1448 1468 1469 1449) -4(3448 3449 3469 3468) -4(1449 1469 1470 1450) -4(3449 3450 3470 3469) -4(1450 1470 1471 1451) -4(3450 3451 3471 3470) -4(1451 1471 1472 1452) -4(3451 3452 3472 3471) -4(1452 1472 1473 1453) -4(3452 3453 3473 3472) -4(1453 1473 1474 1454) -4(3453 3454 3474 3473) -4(1454 1474 1475 1455) -4(3454 3455 3475 3474) -4(1455 1475 1476 1456) -4(3455 3456 3476 3475) -4(1456 1476 1477 1457) -4(3456 3457 3477 3476) -4(1457 1477 1478 1458) -4(3457 3458 3478 3477) -4(1458 1478 1479 1459) -4(3458 3459 3479 3478) -4(1460 1480 1481 1461) -4(3460 3461 3481 3480) -4(1461 1481 1482 1462) -4(3461 3462 3482 3481) -4(1462 1482 1483 1463) -4(3462 3463 3483 3482) -4(1463 1483 1484 1464) -4(3463 3464 3484 3483) -4(1464 1484 1485 1465) -4(3464 3465 3485 3484) -4(1465 1485 1486 1466) -4(3465 3466 3486 3485) -4(1466 1486 1487 1467) -4(3466 3467 3487 3486) -4(1467 1487 1488 1468) -4(3467 3468 3488 3487) -4(1468 1488 1489 1469) -4(3468 3469 3489 3488) -4(1469 1489 1490 1470) -4(3469 3470 3490 3489) -4(1470 1490 1491 1471) -4(3470 3471 3491 3490) -4(1471 1491 1492 1472) -4(3471 3472 3492 3491) -4(1472 1492 1493 1473) -4(3472 3473 3493 3492) -4(1473 1493 1494 1474) -4(3473 3474 3494 3493) -4(1474 1494 1495 1475) -4(3474 3475 3495 3494) -4(1475 1495 1496 1476) -4(3475 3476 3496 3495) -4(1476 1496 1497 1477) -4(3476 3477 3497 3496) -4(1477 1497 1498 1478) -4(3477 3478 3498 3497) -4(1478 1498 1499 1479) -4(3478 3479 3499 3498) -4(1480 1500 1501 1481) -4(3480 3481 3501 3500) -4(1481 1501 1502 1482) -4(3481 3482 3502 3501) -4(1482 1502 1503 1483) -4(3482 3483 3503 3502) -4(1483 1503 1504 1484) -4(3483 3484 3504 3503) -4(1484 1504 1505 1485) -4(3484 3485 3505 3504) -4(1485 1505 1506 1486) -4(3485 3486 3506 3505) -4(1486 1506 1507 1487) -4(3486 3487 3507 3506) -4(1487 1507 1508 1488) -4(3487 3488 3508 3507) -4(1488 1508 1509 1489) -4(3488 3489 3509 3508) -4(1489 1509 1510 1490) -4(3489 3490 3510 3509) -4(1490 1510 1511 1491) -4(3490 3491 3511 3510) -4(1491 1511 1512 1492) -4(3491 3492 3512 3511) -4(1492 1512 1513 1493) -4(3492 3493 3513 3512) -4(1493 1513 1514 1494) -4(3493 3494 3514 3513) -4(1494 1514 1515 1495) -4(3494 3495 3515 3514) -4(1495 1515 1516 1496) -4(3495 3496 3516 3515) -4(1496 1516 1517 1497) -4(3496 3497 3517 3516) -4(1497 1517 1518 1498) -4(3497 3498 3518 3517) -4(1498 1518 1519 1499) -4(3498 3499 3519 3518) -4(1500 1520 1521 1501) -4(3500 3501 3521 3520) -4(1501 1521 1522 1502) -4(3501 3502 3522 3521) -4(1502 1522 1523 1503) -4(3502 3503 3523 3522) -4(1503 1523 1524 1504) -4(3503 3504 3524 3523) -4(1504 1524 1525 1505) -4(3504 3505 3525 3524) -4(1505 1525 1526 1506) -4(3505 3506 3526 3525) -4(1506 1526 1527 1507) -4(3506 3507 3527 3526) -4(1507 1527 1528 1508) -4(3507 3508 3528 3527) -4(1508 1528 1529 1509) -4(3508 3509 3529 3528) -4(1509 1529 1530 1510) -4(3509 3510 3530 3529) -4(1510 1530 1531 1511) -4(3510 3511 3531 3530) -4(1511 1531 1532 1512) -4(3511 3512 3532 3531) -4(1512 1532 1533 1513) -4(3512 3513 3533 3532) -4(1513 1533 1534 1514) -4(3513 3514 3534 3533) -4(1514 1534 1535 1515) -4(3514 3515 3535 3534) -4(1515 1535 1536 1516) -4(3515 3516 3536 3535) -4(1516 1536 1537 1517) -4(3516 3517 3537 3536) -4(1517 1537 1538 1518) -4(3517 3518 3538 3537) -4(1518 1538 1539 1519) -4(3518 3519 3539 3538) -4(1520 1540 1541 1521) -4(3520 3521 3541 3540) -4(1521 1541 1542 1522) -4(3521 3522 3542 3541) -4(1522 1542 1543 1523) -4(3522 3523 3543 3542) -4(1523 1543 1544 1524) -4(3523 3524 3544 3543) -4(1524 1544 1545 1525) -4(3524 3525 3545 3544) -4(1525 1545 1546 1526) -4(3525 3526 3546 3545) -4(1526 1546 1547 1527) -4(3526 3527 3547 3546) -4(1527 1547 1548 1528) -4(3527 3528 3548 3547) -4(1528 1548 1549 1529) -4(3528 3529 3549 3548) -4(1529 1549 1550 1530) -4(3529 3530 3550 3549) -4(1530 1550 1551 1531) -4(3530 3531 3551 3550) -4(1531 1551 1552 1532) -4(3531 3532 3552 3551) -4(1532 1552 1553 1533) -4(3532 3533 3553 3552) -4(1533 1553 1554 1534) -4(3533 3534 3554 3553) -4(1534 1554 1555 1535) -4(3534 3535 3555 3554) -4(1535 1555 1556 1536) -4(3535 3536 3556 3555) -4(1536 1556 1557 1537) -4(3536 3537 3557 3556) -4(1537 1557 1558 1538) -4(3537 3538 3558 3557) -4(1538 1558 1559 1539) -4(3538 3539 3559 3558) -4(1540 1560 1561 1541) -4(3540 3541 3561 3560) -4(1541 1561 1562 1542) -4(3541 3542 3562 3561) -4(1542 1562 1563 1543) -4(3542 3543 3563 3562) -4(1543 1563 1564 1544) -4(3543 3544 3564 3563) -4(1544 1564 1565 1545) -4(3544 3545 3565 3564) -4(1545 1565 1566 1546) -4(3545 3546 3566 3565) -4(1546 1566 1567 1547) -4(3546 3547 3567 3566) -4(1547 1567 1568 1548) -4(3547 3548 3568 3567) -4(1548 1568 1569 1549) -4(3548 3549 3569 3568) -4(1549 1569 1570 1550) -4(3549 3550 3570 3569) -4(1550 1570 1571 1551) -4(3550 3551 3571 3570) -4(1551 1571 1572 1552) -4(3551 3552 3572 3571) -4(1552 1572 1573 1553) -4(3552 3553 3573 3572) -4(1553 1573 1574 1554) -4(3553 3554 3574 3573) -4(1554 1574 1575 1555) -4(3554 3555 3575 3574) -4(1555 1575 1576 1556) -4(3555 3556 3576 3575) -4(1556 1576 1577 1557) -4(3556 3557 3577 3576) -4(1557 1577 1578 1558) -4(3557 3558 3578 3577) -4(1558 1578 1579 1559) -4(3558 3559 3579 3578) -4(1560 1580 1581 1561) -4(3560 3561 3581 3580) -4(1561 1581 1582 1562) -4(3561 3562 3582 3581) -4(1562 1582 1583 1563) -4(3562 3563 3583 3582) -4(1563 1583 1584 1564) -4(3563 3564 3584 3583) -4(1564 1584 1585 1565) -4(3564 3565 3585 3584) -4(1565 1585 1586 1566) -4(3565 3566 3586 3585) -4(1566 1586 1587 1567) -4(3566 3567 3587 3586) -4(1567 1587 1588 1568) -4(3567 3568 3588 3587) -4(1568 1588 1589 1569) -4(3568 3569 3589 3588) -4(1569 1589 1590 1570) -4(3569 3570 3590 3589) -4(1570 1590 1591 1571) -4(3570 3571 3591 3590) -4(1571 1591 1592 1572) -4(3571 3572 3592 3591) -4(1572 1592 1593 1573) -4(3572 3573 3593 3592) -4(1573 1593 1594 1574) -4(3573 3574 3594 3593) -4(1574 1594 1595 1575) -4(3574 3575 3595 3594) -4(1575 1595 1596 1576) -4(3575 3576 3596 3595) -4(1576 1596 1597 1577) -4(3576 3577 3597 3596) -4(1577 1597 1598 1578) -4(3577 3578 3598 3597) -4(1578 1598 1599 1579) -4(3578 3579 3599 3598) -4(1580 1600 1601 1581) -4(3580 3581 3601 3600) -4(1581 1601 1602 1582) -4(3581 3582 3602 3601) -4(1582 1602 1603 1583) -4(3582 3583 3603 3602) -4(1583 1603 1604 1584) -4(3583 3584 3604 3603) -4(1584 1604 1605 1585) -4(3584 3585 3605 3604) -4(1585 1605 1606 1586) -4(3585 3586 3606 3605) -4(1586 1606 1607 1587) -4(3586 3587 3607 3606) -4(1587 1607 1608 1588) -4(3587 3588 3608 3607) -4(1588 1608 1609 1589) -4(3588 3589 3609 3608) -4(1589 1609 1610 1590) -4(3589 3590 3610 3609) -4(1590 1610 1611 1591) -4(3590 3591 3611 3610) -4(1591 1611 1612 1592) -4(3591 3592 3612 3611) -4(1592 1612 1613 1593) -4(3592 3593 3613 3612) -4(1593 1613 1614 1594) -4(3593 3594 3614 3613) -4(1594 1614 1615 1595) -4(3594 3595 3615 3614) -4(1595 1615 1616 1596) -4(3595 3596 3616 3615) -4(1596 1616 1617 1597) -4(3596 3597 3617 3616) -4(1597 1617 1618 1598) -4(3597 3598 3618 3617) -4(1598 1618 1619 1599) -4(3598 3599 3619 3618) -4(1600 1620 1621 1601) -4(3600 3601 3621 3620) -4(1601 1621 1622 1602) -4(3601 3602 3622 3621) -4(1602 1622 1623 1603) -4(3602 3603 3623 3622) -4(1603 1623 1624 1604) -4(3603 3604 3624 3623) -4(1604 1624 1625 1605) -4(3604 3605 3625 3624) -4(1605 1625 1626 1606) -4(3605 3606 3626 3625) -4(1606 1626 1627 1607) -4(3606 3607 3627 3626) -4(1607 1627 1628 1608) -4(3607 3608 3628 3627) -4(1608 1628 1629 1609) -4(3608 3609 3629 3628) -4(1609 1629 1630 1610) -4(3609 3610 3630 3629) -4(1610 1630 1631 1611) -4(3610 3611 3631 3630) -4(1611 1631 1632 1612) -4(3611 3612 3632 3631) -4(1612 1632 1633 1613) -4(3612 3613 3633 3632) -4(1613 1633 1634 1614) -4(3613 3614 3634 3633) -4(1614 1634 1635 1615) -4(3614 3615 3635 3634) -4(1615 1635 1636 1616) -4(3615 3616 3636 3635) -4(1616 1636 1637 1617) -4(3616 3617 3637 3636) -4(1617 1637 1638 1618) -4(3617 3618 3638 3637) -4(1618 1638 1639 1619) -4(3618 3619 3639 3638) -4(1620 1640 1641 1621) -4(3620 3621 3641 3640) -4(1621 1641 1642 1622) -4(3621 3622 3642 3641) -4(1622 1642 1643 1623) -4(3622 3623 3643 3642) -4(1623 1643 1644 1624) -4(3623 3624 3644 3643) -4(1624 1644 1645 1625) -4(3624 3625 3645 3644) -4(1625 1645 1646 1626) -4(3625 3626 3646 3645) -4(1626 1646 1647 1627) -4(3626 3627 3647 3646) -4(1627 1647 1648 1628) -4(3627 3628 3648 3647) -4(1628 1648 1649 1629) -4(3628 3629 3649 3648) -4(1629 1649 1650 1630) -4(3629 3630 3650 3649) -4(1630 1650 1651 1631) -4(3630 3631 3651 3650) -4(1631 1651 1652 1632) -4(3631 3632 3652 3651) -4(1632 1652 1653 1633) -4(3632 3633 3653 3652) -4(1633 1653 1654 1634) -4(3633 3634 3654 3653) -4(1634 1654 1655 1635) -4(3634 3635 3655 3654) -4(1635 1655 1656 1636) -4(3635 3636 3656 3655) -4(1636 1656 1657 1637) -4(3636 3637 3657 3656) -4(1637 1657 1658 1638) -4(3637 3638 3658 3657) -4(1638 1658 1659 1639) -4(3638 3639 3659 3658) -4(1640 1660 1661 1641) -4(3640 3641 3661 3660) -4(1641 1661 1662 1642) -4(3641 3642 3662 3661) -4(1642 1662 1663 1643) -4(3642 3643 3663 3662) -4(1643 1663 1664 1644) -4(3643 3644 3664 3663) -4(1644 1664 1665 1645) -4(3644 3645 3665 3664) -4(1645 1665 1666 1646) -4(3645 3646 3666 3665) -4(1646 1666 1667 1647) -4(3646 3647 3667 3666) -4(1647 1667 1668 1648) -4(3647 3648 3668 3667) -4(1648 1668 1669 1649) -4(3648 3649 3669 3668) -4(1649 1669 1670 1650) -4(3649 3650 3670 3669) -4(1650 1670 1671 1651) -4(3650 3651 3671 3670) -4(1651 1671 1672 1652) -4(3651 3652 3672 3671) -4(1652 1672 1673 1653) -4(3652 3653 3673 3672) -4(1653 1673 1674 1654) -4(3653 3654 3674 3673) -4(1654 1674 1675 1655) -4(3654 3655 3675 3674) -4(1655 1675 1676 1656) -4(3655 3656 3676 3675) -4(1656 1676 1677 1657) -4(3656 3657 3677 3676) -4(1657 1677 1678 1658) -4(3657 3658 3678 3677) -4(1658 1678 1679 1659) -4(3658 3659 3679 3678) -4(1660 1680 1681 1661) -4(3660 3661 3681 3680) -4(1661 1681 1682 1662) -4(3661 3662 3682 3681) -4(1662 1682 1683 1663) -4(3662 3663 3683 3682) -4(1663 1683 1684 1664) -4(3663 3664 3684 3683) -4(1664 1684 1685 1665) -4(3664 3665 3685 3684) -4(1665 1685 1686 1666) -4(3665 3666 3686 3685) -4(1666 1686 1687 1667) -4(3666 3667 3687 3686) -4(1667 1687 1688 1668) -4(3667 3668 3688 3687) -4(1668 1688 1689 1669) -4(3668 3669 3689 3688) -4(1669 1689 1690 1670) -4(3669 3670 3690 3689) -4(1670 1690 1691 1671) -4(3670 3671 3691 3690) -4(1671 1691 1692 1672) -4(3671 3672 3692 3691) -4(1672 1692 1693 1673) -4(3672 3673 3693 3692) -4(1673 1693 1694 1674) -4(3673 3674 3694 3693) -4(1674 1694 1695 1675) -4(3674 3675 3695 3694) -4(1675 1695 1696 1676) -4(3675 3676 3696 3695) -4(1676 1696 1697 1677) -4(3676 3677 3697 3696) -4(1677 1697 1698 1678) -4(3677 3678 3698 3697) -4(1678 1698 1699 1679) -4(3678 3679 3699 3698) -4(1680 1700 1701 1681) -4(3680 3681 3701 3700) -4(1681 1701 1702 1682) -4(3681 3682 3702 3701) -4(1682 1702 1703 1683) -4(3682 3683 3703 3702) -4(1683 1703 1704 1684) -4(3683 3684 3704 3703) -4(1684 1704 1705 1685) -4(3684 3685 3705 3704) -4(1685 1705 1706 1686) -4(3685 3686 3706 3705) -4(1686 1706 1707 1687) -4(3686 3687 3707 3706) -4(1687 1707 1708 1688) -4(3687 3688 3708 3707) -4(1688 1708 1709 1689) -4(3688 3689 3709 3708) -4(1689 1709 1710 1690) -4(3689 3690 3710 3709) -4(1690 1710 1711 1691) -4(3690 3691 3711 3710) -4(1691 1711 1712 1692) -4(3691 3692 3712 3711) -4(1692 1712 1713 1693) -4(3692 3693 3713 3712) -4(1693 1713 1714 1694) -4(3693 3694 3714 3713) -4(1694 1714 1715 1695) -4(3694 3695 3715 3714) -4(1695 1715 1716 1696) -4(3695 3696 3716 3715) -4(1696 1716 1717 1697) -4(3696 3697 3717 3716) -4(1697 1717 1718 1698) -4(3697 3698 3718 3717) -4(1698 1718 1719 1699) -4(3698 3699 3719 3718) -4(1700 1720 1721 1701) -4(3700 3701 3721 3720) -4(1701 1721 1722 1702) -4(3701 3702 3722 3721) -4(1702 1722 1723 1703) -4(3702 3703 3723 3722) -4(1703 1723 1724 1704) -4(3703 3704 3724 3723) -4(1704 1724 1725 1705) -4(3704 3705 3725 3724) -4(1705 1725 1726 1706) -4(3705 3706 3726 3725) -4(1706 1726 1727 1707) -4(3706 3707 3727 3726) -4(1707 1727 1728 1708) -4(3707 3708 3728 3727) -4(1708 1728 1729 1709) -4(3708 3709 3729 3728) -4(1709 1729 1730 1710) -4(3709 3710 3730 3729) -4(1710 1730 1731 1711) -4(3710 3711 3731 3730) -4(1711 1731 1732 1712) -4(3711 3712 3732 3731) -4(1712 1732 1733 1713) -4(3712 3713 3733 3732) -4(1713 1733 1734 1714) -4(3713 3714 3734 3733) -4(1714 1734 1735 1715) -4(3714 3715 3735 3734) -4(1715 1735 1736 1716) -4(3715 3716 3736 3735) -4(1716 1736 1737 1717) -4(3716 3717 3737 3736) -4(1717 1737 1738 1718) -4(3717 3718 3738 3737) -4(1718 1738 1739 1719) -4(3718 3719 3739 3738) -4(1720 1740 1741 1721) -4(3720 3721 3741 3740) -4(1721 1741 1742 1722) -4(3721 3722 3742 3741) -4(1722 1742 1743 1723) -4(3722 3723 3743 3742) -4(1723 1743 1744 1724) -4(3723 3724 3744 3743) -4(1724 1744 1745 1725) -4(3724 3725 3745 3744) -4(1725 1745 1746 1726) -4(3725 3726 3746 3745) -4(1726 1746 1747 1727) -4(3726 3727 3747 3746) -4(1727 1747 1748 1728) -4(3727 3728 3748 3747) -4(1728 1748 1749 1729) -4(3728 3729 3749 3748) -4(1729 1749 1750 1730) -4(3729 3730 3750 3749) -4(1730 1750 1751 1731) -4(3730 3731 3751 3750) -4(1731 1751 1752 1732) -4(3731 3732 3752 3751) -4(1732 1752 1753 1733) -4(3732 3733 3753 3752) -4(1733 1753 1754 1734) -4(3733 3734 3754 3753) -4(1734 1754 1755 1735) -4(3734 3735 3755 3754) -4(1735 1755 1756 1736) -4(3735 3736 3756 3755) -4(1736 1756 1757 1737) -4(3736 3737 3757 3756) -4(1737 1757 1758 1738) -4(3737 3738 3758 3757) -4(1738 1758 1759 1739) -4(3738 3739 3759 3758) -4(1740 1760 1761 1741) -4(3740 3741 3761 3760) -4(1741 1761 1762 1742) -4(3741 3742 3762 3761) -4(1742 1762 1763 1743) -4(3742 3743 3763 3762) -4(1743 1763 1764 1744) -4(3743 3744 3764 3763) -4(1744 1764 1765 1745) -4(3744 3745 3765 3764) -4(1745 1765 1766 1746) -4(3745 3746 3766 3765) -4(1746 1766 1767 1747) -4(3746 3747 3767 3766) -4(1747 1767 1768 1748) -4(3747 3748 3768 3767) -4(1748 1768 1769 1749) -4(3748 3749 3769 3768) -4(1749 1769 1770 1750) -4(3749 3750 3770 3769) -4(1750 1770 1771 1751) -4(3750 3751 3771 3770) -4(1751 1771 1772 1752) -4(3751 3752 3772 3771) -4(1752 1772 1773 1753) -4(3752 3753 3773 3772) -4(1753 1773 1774 1754) -4(3753 3754 3774 3773) -4(1754 1774 1775 1755) -4(3754 3755 3775 3774) -4(1755 1775 1776 1756) -4(3755 3756 3776 3775) -4(1756 1776 1777 1757) -4(3756 3757 3777 3776) -4(1757 1777 1778 1758) -4(3757 3758 3778 3777) -4(1758 1778 1779 1759) -4(3758 3759 3779 3778) -4(1760 1780 1781 1761) -4(3760 3761 3781 3780) -4(1761 1781 1782 1762) -4(3761 3762 3782 3781) -4(1762 1782 1783 1763) -4(3762 3763 3783 3782) -4(1763 1783 1784 1764) -4(3763 3764 3784 3783) -4(1764 1784 1785 1765) -4(3764 3765 3785 3784) -4(1765 1785 1786 1766) -4(3765 3766 3786 3785) -4(1766 1786 1787 1767) -4(3766 3767 3787 3786) -4(1767 1787 1788 1768) -4(3767 3768 3788 3787) -4(1768 1788 1789 1769) -4(3768 3769 3789 3788) -4(1769 1789 1790 1770) -4(3769 3770 3790 3789) -4(1770 1790 1791 1771) -4(3770 3771 3791 3790) -4(1771 1791 1792 1772) -4(3771 3772 3792 3791) -4(1772 1792 1793 1773) -4(3772 3773 3793 3792) -4(1773 1793 1794 1774) -4(3773 3774 3794 3793) -4(1774 1794 1795 1775) -4(3774 3775 3795 3794) -4(1775 1795 1796 1776) -4(3775 3776 3796 3795) -4(1776 1796 1797 1777) -4(3776 3777 3797 3796) -4(1777 1797 1798 1778) -4(3777 3778 3798 3797) -4(1778 1798 1799 1779) -4(3778 3779 3799 3798) -4(1780 1800 1801 1781) -4(3780 3781 3801 3800) -4(1781 1801 1802 1782) -4(3781 3782 3802 3801) -4(1782 1802 1803 1783) -4(3782 3783 3803 3802) -4(1783 1803 1804 1784) -4(3783 3784 3804 3803) -4(1784 1804 1805 1785) -4(3784 3785 3805 3804) -4(1785 1805 1806 1786) -4(3785 3786 3806 3805) -4(1786 1806 1807 1787) -4(3786 3787 3807 3806) -4(1787 1807 1808 1788) -4(3787 3788 3808 3807) -4(1788 1808 1809 1789) -4(3788 3789 3809 3808) -4(1789 1809 1810 1790) -4(3789 3790 3810 3809) -4(1790 1810 1811 1791) -4(3790 3791 3811 3810) -4(1791 1811 1812 1792) -4(3791 3792 3812 3811) -4(1792 1812 1813 1793) -4(3792 3793 3813 3812) -4(1793 1813 1814 1794) -4(3793 3794 3814 3813) -4(1794 1814 1815 1795) -4(3794 3795 3815 3814) -4(1795 1815 1816 1796) -4(3795 3796 3816 3815) -4(1796 1816 1817 1797) -4(3796 3797 3817 3816) -4(1797 1817 1818 1798) -4(3797 3798 3818 3817) -4(1798 1818 1819 1799) -4(3798 3799 3819 3818) -4(1800 1820 1821 1801) -4(3800 3801 3821 3820) -4(1801 1821 1822 1802) -4(3801 3802 3822 3821) -4(1802 1822 1823 1803) -4(3802 3803 3823 3822) -4(1803 1823 1824 1804) -4(3803 3804 3824 3823) -4(1804 1824 1825 1805) -4(3804 3805 3825 3824) -4(1805 1825 1826 1806) -4(3805 3806 3826 3825) -4(1806 1826 1827 1807) -4(3806 3807 3827 3826) -4(1807 1827 1828 1808) -4(3807 3808 3828 3827) -4(1808 1828 1829 1809) -4(3808 3809 3829 3828) -4(1809 1829 1830 1810) -4(3809 3810 3830 3829) -4(1810 1830 1831 1811) -4(3810 3811 3831 3830) -4(1811 1831 1832 1812) -4(3811 3812 3832 3831) -4(1812 1832 1833 1813) -4(3812 3813 3833 3832) -4(1813 1833 1834 1814) -4(3813 3814 3834 3833) -4(1814 1834 1835 1815) -4(3814 3815 3835 3834) -4(1815 1835 1836 1816) -4(3815 3816 3836 3835) -4(1816 1836 1837 1817) -4(3816 3817 3837 3836) -4(1817 1837 1838 1818) -4(3817 3818 3838 3837) -4(1818 1838 1839 1819) -4(3818 3819 3839 3838) -4(1820 1840 1841 1821) -4(3820 3821 3841 3840) -4(1821 1841 1842 1822) -4(3821 3822 3842 3841) -4(1822 1842 1843 1823) -4(3822 3823 3843 3842) -4(1823 1843 1844 1824) -4(3823 3824 3844 3843) -4(1824 1844 1845 1825) -4(3824 3825 3845 3844) -4(1825 1845 1846 1826) -4(3825 3826 3846 3845) -4(1826 1846 1847 1827) -4(3826 3827 3847 3846) -4(1827 1847 1848 1828) -4(3827 3828 3848 3847) -4(1828 1848 1849 1829) -4(3828 3829 3849 3848) -4(1829 1849 1850 1830) -4(3829 3830 3850 3849) -4(1830 1850 1851 1831) -4(3830 3831 3851 3850) -4(1831 1851 1852 1832) -4(3831 3832 3852 3851) -4(1832 1852 1853 1833) -4(3832 3833 3853 3852) -4(1833 1853 1854 1834) -4(3833 3834 3854 3853) -4(1834 1854 1855 1835) -4(3834 3835 3855 3854) -4(1835 1855 1856 1836) -4(3835 3836 3856 3855) -4(1836 1856 1857 1837) -4(3836 3837 3857 3856) -4(1837 1857 1858 1838) -4(3837 3838 3858 3857) -4(1838 1858 1859 1839) -4(3838 3839 3859 3858) -4(1840 1860 1861 1841) -4(3840 3841 3861 3860) -4(1841 1861 1862 1842) -4(3841 3842 3862 3861) -4(1842 1862 1863 1843) -4(3842 3843 3863 3862) -4(1843 1863 1864 1844) -4(3843 3844 3864 3863) -4(1844 1864 1865 1845) -4(3844 3845 3865 3864) -4(1845 1865 1866 1846) -4(3845 3846 3866 3865) -4(1846 1866 1867 1847) -4(3846 3847 3867 3866) -4(1847 1867 1868 1848) -4(3847 3848 3868 3867) -4(1848 1868 1869 1849) -4(3848 3849 3869 3868) -4(1849 1869 1870 1850) -4(3849 3850 3870 3869) -4(1850 1870 1871 1851) -4(3850 3851 3871 3870) -4(1851 1871 1872 1852) -4(3851 3852 3872 3871) -4(1852 1872 1873 1853) -4(3852 3853 3873 3872) -4(1853 1873 1874 1854) -4(3853 3854 3874 3873) -4(1854 1874 1875 1855) -4(3854 3855 3875 3874) -4(1855 1875 1876 1856) -4(3855 3856 3876 3875) -4(1856 1876 1877 1857) -4(3856 3857 3877 3876) -4(1857 1877 1878 1858) -4(3857 3858 3878 3877) -4(1858 1878 1879 1859) -4(3858 3859 3879 3878) -4(1860 1880 1881 1861) -4(3860 3861 3881 3880) -4(1861 1881 1882 1862) -4(3861 3862 3882 3881) -4(1862 1882 1883 1863) -4(3862 3863 3883 3882) -4(1863 1883 1884 1864) -4(3863 3864 3884 3883) -4(1864 1884 1885 1865) -4(3864 3865 3885 3884) -4(1865 1885 1886 1866) -4(3865 3866 3886 3885) -4(1866 1886 1887 1867) -4(3866 3867 3887 3886) -4(1867 1887 1888 1868) -4(3867 3868 3888 3887) -4(1868 1888 1889 1869) -4(3868 3869 3889 3888) -4(1869 1889 1890 1870) -4(3869 3870 3890 3889) -4(1870 1890 1891 1871) -4(3870 3871 3891 3890) -4(1871 1891 1892 1872) -4(3871 3872 3892 3891) -4(1872 1892 1893 1873) -4(3872 3873 3893 3892) -4(1873 1893 1894 1874) -4(3873 3874 3894 3893) -4(1874 1894 1895 1875) -4(3874 3875 3895 3894) -4(1875 1895 1896 1876) -4(3875 3876 3896 3895) -4(1876 1896 1897 1877) -4(3876 3877 3897 3896) -4(1877 1897 1898 1878) -4(3877 3878 3898 3897) -4(1878 1898 1899 1879) -4(3878 3879 3899 3898) -4(1880 1900 1901 1881) -4(3880 3881 3901 3900) -4(1881 1901 1902 1882) -4(3881 3882 3902 3901) -4(1882 1902 1903 1883) -4(3882 3883 3903 3902) -4(1883 1903 1904 1884) -4(3883 3884 3904 3903) -4(1884 1904 1905 1885) -4(3884 3885 3905 3904) -4(1885 1905 1906 1886) -4(3885 3886 3906 3905) -4(1886 1906 1907 1887) -4(3886 3887 3907 3906) -4(1887 1907 1908 1888) -4(3887 3888 3908 3907) -4(1888 1908 1909 1889) -4(3888 3889 3909 3908) -4(1889 1909 1910 1890) -4(3889 3890 3910 3909) -4(1890 1910 1911 1891) -4(3890 3891 3911 3910) -4(1891 1911 1912 1892) -4(3891 3892 3912 3911) -4(1892 1912 1913 1893) -4(3892 3893 3913 3912) -4(1893 1913 1914 1894) -4(3893 3894 3914 3913) -4(1894 1914 1915 1895) -4(3894 3895 3915 3914) -4(1895 1915 1916 1896) -4(3895 3896 3916 3915) -4(1896 1916 1917 1897) -4(3896 3897 3917 3916) -4(1897 1917 1918 1898) -4(3897 3898 3918 3917) -4(1898 1918 1919 1899) -4(3898 3899 3919 3918) -4(1900 1920 1921 1901) -4(3900 3901 3921 3920) -4(1901 1921 1922 1902) -4(3901 3902 3922 3921) -4(1902 1922 1923 1903) -4(3902 3903 3923 3922) -4(1903 1923 1924 1904) -4(3903 3904 3924 3923) -4(1904 1924 1925 1905) -4(3904 3905 3925 3924) -4(1905 1925 1926 1906) -4(3905 3906 3926 3925) -4(1906 1926 1927 1907) -4(3906 3907 3927 3926) -4(1907 1927 1928 1908) -4(3907 3908 3928 3927) -4(1908 1928 1929 1909) -4(3908 3909 3929 3928) -4(1909 1929 1930 1910) -4(3909 3910 3930 3929) -4(1910 1930 1931 1911) -4(3910 3911 3931 3930) -4(1911 1931 1932 1912) -4(3911 3912 3932 3931) -4(1912 1932 1933 1913) -4(3912 3913 3933 3932) -4(1913 1933 1934 1914) -4(3913 3914 3934 3933) -4(1914 1934 1935 1915) -4(3914 3915 3935 3934) -4(1915 1935 1936 1916) -4(3915 3916 3936 3935) -4(1916 1936 1937 1917) -4(3916 3917 3937 3936) -4(1917 1937 1938 1918) -4(3917 3918 3938 3937) -4(1918 1938 1939 1919) -4(3918 3919 3939 3938) -4(1920 1940 1941 1921) -4(3920 3921 3941 3940) -4(1921 1941 1942 1922) -4(3921 3922 3942 3941) -4(1922 1942 1943 1923) -4(3922 3923 3943 3942) -4(1923 1943 1944 1924) -4(3923 3924 3944 3943) -4(1924 1944 1945 1925) -4(3924 3925 3945 3944) -4(1925 1945 1946 1926) -4(3925 3926 3946 3945) -4(1926 1946 1947 1927) -4(3926 3927 3947 3946) -4(1927 1947 1948 1928) -4(3927 3928 3948 3947) -4(1928 1948 1949 1929) -4(3928 3929 3949 3948) -4(1929 1949 1950 1930) -4(3929 3930 3950 3949) -4(1930 1950 1951 1931) -4(3930 3931 3951 3950) -4(1931 1951 1952 1932) -4(3931 3932 3952 3951) -4(1932 1952 1953 1933) -4(3932 3933 3953 3952) -4(1933 1953 1954 1934) -4(3933 3934 3954 3953) -4(1934 1954 1955 1935) -4(3934 3935 3955 3954) -4(1935 1955 1956 1936) -4(3935 3936 3956 3955) -4(1936 1956 1957 1937) -4(3936 3937 3957 3956) -4(1937 1957 1958 1938) -4(3937 3938 3958 3957) -4(1938 1958 1959 1939) -4(3938 3939 3959 3958) -4(1940 1960 1961 1941) -4(3940 3941 3961 3960) -4(1941 1961 1962 1942) -4(3941 3942 3962 3961) -4(1942 1962 1963 1943) -4(3942 3943 3963 3962) -4(1943 1963 1964 1944) -4(3943 3944 3964 3963) -4(1944 1964 1965 1945) -4(3944 3945 3965 3964) -4(1945 1965 1966 1946) -4(3945 3946 3966 3965) -4(1946 1966 1967 1947) -4(3946 3947 3967 3966) -4(1947 1967 1968 1948) -4(3947 3948 3968 3967) -4(1948 1968 1969 1949) -4(3948 3949 3969 3968) -4(1949 1969 1970 1950) -4(3949 3950 3970 3969) -4(1950 1970 1971 1951) -4(3950 3951 3971 3970) -4(1951 1971 1972 1952) -4(3951 3952 3972 3971) -4(1952 1972 1973 1953) -4(3952 3953 3973 3972) -4(1953 1973 1974 1954) -4(3953 3954 3974 3973) -4(1954 1974 1975 1955) -4(3954 3955 3975 3974) -4(1955 1975 1976 1956) -4(3955 3956 3976 3975) -4(1956 1976 1977 1957) -4(3956 3957 3977 3976) -4(1957 1977 1978 1958) -4(3957 3958 3978 3977) -4(1958 1978 1979 1959) -4(3958 3959 3979 3978) -4(1960 1980 1981 1961) -4(3960 3961 3981 3980) -4(1961 1981 1982 1962) -4(3961 3962 3982 3981) -4(1962 1982 1983 1963) -4(3962 3963 3983 3982) -4(1963 1983 1984 1964) -4(3963 3964 3984 3983) -4(1964 1984 1985 1965) -4(3964 3965 3985 3984) -4(1965 1985 1986 1966) -4(3965 3966 3986 3985) -4(1966 1986 1987 1967) -4(3966 3967 3987 3986) -4(1967 1987 1988 1968) -4(3967 3968 3988 3987) -4(1968 1988 1989 1969) -4(3968 3969 3989 3988) -4(1969 1989 1990 1970) -4(3969 3970 3990 3989) -4(1970 1990 1991 1971) -4(3970 3971 3991 3990) -4(1971 1991 1992 1972) -4(3971 3972 3992 3991) -4(1972 1992 1993 1973) -4(3972 3973 3993 3992) -4(1973 1993 1994 1974) -4(3973 3974 3994 3993) -4(1974 1994 1995 1975) -4(3974 3975 3995 3994) -4(1975 1995 1996 1976) -4(3975 3976 3996 3995) -4(1976 1996 1997 1977) -4(3976 3977 3997 3996) -4(1977 1997 1998 1978) -4(3977 3978 3998 3997) -4(1978 1998 1999 1979) -4(3978 3979 3999 3998) -) - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/neighbour b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/neighbour deleted file mode 100755 index c58d3b2b1..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/neighbour +++ /dev/null @@ -1,3669 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class labelList; - note "nPoints: 4000 nCells: 1881 nFaces: 7642 nInternalFaces: 3644"; - location "constant/polyMesh"; - object neighbour; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -3644 -( -1 -19 -2 -20 -3 -21 -4 -22 -5 -23 -6 -24 -7 -25 -8 -26 -9 -27 -10 -28 -11 -29 -12 -30 -13 -31 -14 -32 -15 -33 -16 -34 -17 -35 -18 -36 -37 -20 -38 -21 -39 -22 -40 -23 -41 -24 -42 -25 -43 -26 -44 -27 -45 -28 -46 -29 -47 -30 -48 -31 -49 -32 -50 -33 -51 -34 -52 -35 -53 -36 -54 -37 -55 -56 -39 -57 -40 -58 -41 -59 -42 -60 -43 -61 -44 -62 -45 -63 -46 -64 -47 -65 -48 -66 -49 -67 -50 -68 -51 -69 -52 -70 -53 -71 -54 -72 -55 -73 -56 -74 -75 -58 -76 -59 -77 -60 -78 -61 -79 -62 -80 -63 -81 -64 -82 -65 -83 -66 -84 -67 -85 -68 -86 -69 -87 -70 -88 -71 -89 -72 -90 -73 -91 -74 -92 -75 -93 -94 -77 -95 -78 -96 -79 -97 -80 -98 -81 -99 -82 -100 -83 -101 -84 -102 -85 -103 -86 -104 -87 -105 -88 -106 -89 -107 -90 -108 -91 -109 -92 -110 -93 -111 -94 -112 -113 -96 -114 -97 -115 -98 -116 -99 -117 -100 -118 -101 -119 -102 -120 -103 -121 -104 -122 -105 -123 -106 -124 -107 -125 -108 -126 -109 -127 -110 -128 -111 -129 -112 -130 -113 -131 -132 -115 -133 -116 -134 -117 -135 -118 -136 -119 -137 -120 -138 -121 -139 -122 -140 -123 -141 -124 -142 -125 -143 -126 -144 -127 -145 -128 -146 -129 -147 -130 -148 -131 -149 -132 -150 -151 -134 -152 -135 -153 -136 -154 -137 -155 -138 -156 -139 -157 -140 -158 -141 -159 -142 -160 -143 -161 -144 -162 -145 -163 -146 -164 -147 -165 -148 -166 -149 -167 -150 -168 -151 -169 -170 -153 -171 -154 -172 -155 -173 -156 -174 -157 -175 -158 -176 -159 -177 -160 -178 -161 -179 -162 -180 -163 -181 -164 -182 -165 -183 -166 -184 -167 -185 -168 -186 -169 -187 -170 -188 -189 -172 -190 -173 -191 -174 -192 -175 -193 -176 -194 -177 -195 -178 -196 -179 -197 -180 -198 -181 -199 -182 -200 -183 -201 -184 -202 -185 -203 -186 -204 -187 -205 -188 -206 -189 -207 -208 -191 -209 -192 -210 -193 -211 -194 -212 -195 -213 -196 -214 -197 -215 -198 -216 -199 -217 -200 -218 -201 -219 -202 -220 -203 -221 -204 -222 -205 -223 -206 -224 -207 -225 -208 -226 -227 -210 -228 -211 -229 -212 -230 -213 -231 -214 -232 -215 -233 -216 -234 -217 -235 -218 -236 -219 -237 -220 -238 -221 -239 -222 -240 -223 -241 -224 -242 -225 -243 -226 -244 -227 -245 -246 -229 -247 -230 -248 -231 -249 -232 -250 -233 -251 -234 -252 -235 -253 -236 -254 -237 -255 -238 -256 -239 -257 -240 -258 -241 -259 -242 -260 -243 -261 -244 -262 -245 -263 -246 -264 -265 -248 -266 -249 -267 -250 -268 -251 -269 -252 -270 -253 -271 -254 -272 -255 -273 -256 -274 -257 -275 -258 -276 -259 -277 -260 -278 -261 -279 -262 -280 -263 -281 -264 -282 -265 -283 -284 -267 -285 -268 -286 -269 -287 -270 -288 -271 -289 -272 -290 -273 -291 -274 -292 -275 -293 -276 -294 -277 -295 -278 -296 -279 -297 -280 -298 -281 -299 -282 -300 -283 -301 -284 -302 -303 -286 -304 -287 -305 -288 -306 -289 -307 -290 -308 -291 -309 -292 -310 -293 -311 -294 -312 -295 -313 -296 -314 -297 -315 -298 -316 -299 -317 -300 -318 -301 -319 -302 -320 -303 -321 -322 -305 -323 -306 -324 -307 -325 -308 -326 -309 -327 -310 -328 -311 -329 -312 -330 -313 -331 -314 -332 -315 -333 -316 -334 -317 -335 -318 -336 -319 -337 -320 -338 -321 -339 -322 -340 -341 -324 -342 -325 -343 -326 -344 -327 -345 -328 -346 -329 -347 -330 -348 -331 -349 -332 -350 -333 -351 -334 -352 -335 -353 -336 -354 -337 -355 -338 -356 -339 -357 -340 -358 -341 -359 -360 -343 -361 -344 -362 -345 -363 -346 -364 -347 -365 -348 -366 -349 -367 -350 -368 -351 -369 -352 -370 -353 -371 -354 -372 -355 -373 -356 -374 -357 -375 -358 -376 -359 -377 -360 -378 -379 -362 -380 -363 -381 -364 -382 -365 -383 -366 -384 -367 -385 -368 -386 -369 -387 -370 -388 -371 -389 -372 -390 -373 -391 -374 -392 -375 -393 -376 -394 -377 -395 -378 -396 -379 -397 -398 -381 -399 -382 -400 -383 -401 -384 -402 -385 -403 -386 -404 -387 -405 -388 -406 -389 -407 -390 -408 -391 -409 -392 -410 -393 -411 -394 -412 -395 -413 -396 -414 -397 -415 -398 -416 -417 -400 -418 -401 -419 -402 -420 -403 -421 -404 -422 -405 -423 -406 -424 -407 -425 -408 -426 -409 -427 -410 -428 -411 -429 -412 -430 -413 -431 -414 -432 -415 -433 -416 -434 -417 -435 -436 -419 -437 -420 -438 -421 -439 -422 -440 -423 -441 -424 -442 -425 -443 -426 -444 -427 -445 -428 -446 -429 -447 -430 -448 -431 -449 -432 -450 -433 -451 -434 -452 -435 -453 -436 -454 -455 -438 -456 -439 -457 -440 -458 -441 -459 -442 -460 -443 -461 -444 -462 -445 -463 -446 -464 -447 -465 -448 -466 -449 -467 -450 -468 -451 -469 -452 -470 -453 -471 -454 -472 -455 -473 -474 -457 -475 -458 -476 -459 -477 -460 -478 -461 -479 -462 -480 -463 -481 -464 -482 -465 -483 -466 -484 -467 -485 -468 -486 -469 -487 -470 -488 -471 -489 -472 -490 -473 -491 -474 -492 -493 -476 -494 -477 -495 -478 -496 -479 -497 -480 -498 -481 -499 -482 -500 -483 -501 -484 -502 -485 -503 -486 -504 -487 -505 -488 -506 -489 -507 -490 -508 -491 -509 -492 -510 -493 -511 -512 -495 -513 -496 -514 -497 -515 -498 -516 -499 -517 -500 -518 -501 -519 -502 -520 -503 -521 -504 -522 -505 -523 -506 -524 -507 -525 -508 -526 -509 -527 -510 -528 -511 -529 -512 -530 -531 -514 -532 -515 -533 -516 -534 -517 -535 -518 -536 -519 -537 -520 -538 -521 -539 -522 -540 -523 -541 -524 -542 -525 -543 -526 -544 -527 -545 -528 -546 -529 -547 -530 -548 -531 -549 -550 -533 -551 -534 -552 -535 -553 -536 -554 -537 -555 -538 -556 -539 -557 -540 -558 -541 -559 -542 -560 -543 -561 -544 -562 -545 -563 -546 -564 -547 -565 -548 -566 -549 -567 -550 -568 -569 -552 -570 -553 -571 -554 -572 -555 -573 -556 -574 -557 -575 -558 -576 -559 -577 -560 -578 -561 -579 -562 -580 -563 -581 -564 -582 -565 -583 -566 -584 -567 -585 -568 -586 -569 -587 -588 -571 -589 -572 -590 -573 -591 -574 -592 -575 -593 -576 -594 -577 -595 -578 -596 -579 -597 -580 -598 -581 -599 -582 -600 -583 -601 -584 -602 -585 -603 -586 -604 -587 -605 -588 -606 -607 -590 -608 -591 -609 -592 -610 -593 -611 -594 -612 -595 -613 -596 -614 -597 -615 -598 -616 -599 -617 -600 -618 -601 -619 -602 -620 -603 -621 -604 -622 -605 -623 -606 -624 -607 -625 -626 -609 -627 -610 -628 -611 -629 -612 -630 -613 -631 -614 -632 -615 -633 -616 -634 -617 -635 -618 -636 -619 -637 -620 -638 -621 -639 -622 -640 -623 -641 -624 -642 -625 -643 -626 -644 -645 -628 -646 -629 -647 -630 -648 -631 -649 -632 -650 -633 -651 -634 -652 -635 -653 -636 -654 -637 -655 -638 -656 -639 -657 -640 -658 -641 -659 -642 -660 -643 -661 -644 -662 -645 -663 -664 -647 -665 -648 -666 -649 -667 -650 -668 -651 -669 -652 -670 -653 -671 -654 -672 -655 -673 -656 -674 -657 -675 -658 -676 -659 -677 -660 -678 -661 -679 -662 -680 -663 -681 -664 -682 -683 -666 -684 -667 -685 -668 -686 -669 -687 -670 -688 -671 -689 -672 -690 -673 -691 -674 -692 -675 -693 -676 -694 -677 -695 -678 -696 -679 -697 -680 -698 -681 -699 -682 -700 -683 -701 -702 -685 -703 -686 -704 -687 -705 -688 -706 -689 -707 -690 -708 -691 -709 -692 -710 -693 -711 -694 -712 -695 -713 -696 -714 -697 -715 -698 -716 -699 -717 -700 -718 -701 -719 -702 -720 -721 -704 -722 -705 -723 -706 -724 -707 -725 -708 -726 -709 -727 -710 -728 -711 -729 -712 -730 -713 -731 -714 -732 -715 -733 -716 -734 -717 -735 -718 -736 -719 -737 -720 -738 -721 -739 -740 -723 -741 -724 -742 -725 -743 -726 -744 -727 -745 -728 -746 -729 -747 -730 -748 -731 -749 -732 -750 -733 -751 -734 -752 -735 -753 -736 -754 -737 -755 -738 -756 -739 -757 -740 -758 -759 -742 -760 -743 -761 -744 -762 -745 -763 -746 -764 -747 -765 -748 -766 -749 -767 -750 -768 -751 -769 -752 -770 -753 -771 -754 -772 -755 -773 -756 -774 -757 -775 -758 -776 -759 -777 -778 -761 -779 -762 -780 -763 -781 -764 -782 -765 -783 -766 -784 -767 -785 -768 -786 -769 -787 -770 -788 -771 -789 -772 -790 -773 -791 -774 -792 -775 -793 -776 -794 -777 -795 -778 -796 -797 -780 -798 -781 -799 -782 -800 -783 -801 -784 -802 -785 -803 -786 -804 -787 -805 -788 -806 -789 -807 -790 -808 -791 -809 -792 -810 -793 -811 -794 -812 -795 -813 -796 -814 -797 -815 -816 -799 -817 -800 -818 -801 -819 -802 -820 -803 -821 -804 -822 -805 -823 -806 -824 -807 -825 -808 -826 -809 -827 -810 -828 -811 -829 -812 -830 -813 -831 -814 -832 -815 -833 -816 -834 -835 -818 -836 -819 -837 -820 -838 -821 -839 -822 -840 -823 -841 -824 -842 -825 -843 -826 -844 -827 -845 -828 -846 -829 -847 -830 -848 -831 -849 -832 -850 -833 -851 -834 -852 -835 -853 -854 -837 -855 -838 -856 -839 -857 -840 -858 -841 -859 -842 -860 -843 -861 -844 -862 -845 -863 -846 -864 -847 -865 -848 -866 -849 -867 -850 -868 -851 -869 -852 -870 -853 -871 -854 -872 -873 -856 -874 -857 -875 -858 -876 -859 -877 -860 -878 -861 -879 -862 -880 -863 -881 -864 -882 -865 -883 -866 -884 -867 -885 -868 -886 -869 -887 -870 -888 -871 -889 -872 -890 -873 -891 -892 -875 -893 -876 -894 -877 -895 -878 -896 -879 -897 -880 -898 -881 -899 -882 -900 -883 -901 -884 -902 -885 -903 -886 -904 -887 -905 -888 -906 -889 -907 -890 -908 -891 -909 -892 -910 -911 -894 -912 -895 -913 -896 -914 -897 -915 -898 -916 -899 -917 -900 -918 -901 -919 -902 -920 -903 -921 -904 -922 -905 -923 -906 -924 -907 -925 -908 -926 -909 -927 -910 -928 -911 -929 -930 -913 -931 -914 -932 -915 -933 -916 -934 -917 -935 -918 -936 -919 -937 -920 -938 -921 -939 -922 -940 -923 -941 -924 -942 -925 -943 -926 -944 -927 -945 -928 -946 -929 -947 -930 -948 -949 -932 -950 -933 -951 -934 -952 -935 -953 -936 -954 -937 -955 -938 -956 -939 -957 -940 -958 -941 -959 -942 -960 -943 -961 -944 -962 -945 -963 -946 -964 -947 -965 -948 -966 -949 -967 -968 -951 -969 -952 -970 -953 -971 -954 -972 -955 -973 -956 -974 -957 -975 -958 -976 -959 -977 -960 -978 -961 -979 -962 -980 -963 -981 -964 -982 -965 -983 -966 -984 -967 -985 -968 -986 -987 -970 -988 -971 -989 -972 -990 -973 -991 -974 -992 -975 -993 -976 -994 -977 -995 -978 -996 -979 -997 -980 -998 -981 -999 -982 -1000 -983 -1001 -984 -1002 -985 -1003 -986 -1004 -987 -1005 -1006 -989 -1007 -990 -1008 -991 -1009 -992 -1010 -993 -1011 -994 -1012 -995 -1013 -996 -1014 -997 -1015 -998 -1016 -999 -1017 -1000 -1018 -1001 -1019 -1002 -1020 -1003 -1021 -1004 -1022 -1005 -1023 -1006 -1024 -1025 -1008 -1026 -1009 -1027 -1010 -1028 -1011 -1029 -1012 -1030 -1013 -1031 -1014 -1032 -1015 -1033 -1016 -1034 -1017 -1035 -1018 -1036 -1019 -1037 -1020 -1038 -1021 -1039 -1022 -1040 -1023 -1041 -1024 -1042 -1025 -1043 -1044 -1027 -1045 -1028 -1046 -1029 -1047 -1030 -1048 -1031 -1049 -1032 -1050 -1033 -1051 -1034 -1052 -1035 -1053 -1036 -1054 -1037 -1055 -1038 -1056 -1039 -1057 -1040 -1058 -1041 -1059 -1042 -1060 -1043 -1061 -1044 -1062 -1063 -1046 -1064 -1047 -1065 -1048 -1066 -1049 -1067 -1050 -1068 -1051 -1069 -1052 -1070 -1053 -1071 -1054 -1072 -1055 -1073 -1056 -1074 -1057 -1075 -1058 -1076 -1059 -1077 -1060 -1078 -1061 -1079 -1062 -1080 -1063 -1081 -1082 -1065 -1083 -1066 -1084 -1067 -1085 -1068 -1086 -1069 -1087 -1070 -1088 -1071 -1089 -1072 -1090 -1073 -1091 -1074 -1092 -1075 -1093 -1076 -1094 -1077 -1095 -1078 -1096 -1079 -1097 -1080 -1098 -1081 -1099 -1082 -1100 -1101 -1084 -1102 -1085 -1103 -1086 -1104 -1087 -1105 -1088 -1106 -1089 -1107 -1090 -1108 -1091 -1109 -1092 -1110 -1093 -1111 -1094 -1112 -1095 -1113 -1096 -1114 -1097 -1115 -1098 -1116 -1099 -1117 -1100 -1118 -1101 -1119 -1120 -1103 -1121 -1104 -1122 -1105 -1123 -1106 -1124 -1107 -1125 -1108 -1126 -1109 -1127 -1110 -1128 -1111 -1129 -1112 -1130 -1113 -1131 -1114 -1132 -1115 -1133 -1116 -1134 -1117 -1135 -1118 -1136 -1119 -1137 -1120 -1138 -1139 -1122 -1140 -1123 -1141 -1124 -1142 -1125 -1143 -1126 -1144 -1127 -1145 -1128 -1146 -1129 -1147 -1130 -1148 -1131 -1149 -1132 -1150 -1133 -1151 -1134 -1152 -1135 -1153 -1136 -1154 -1137 -1155 -1138 -1156 -1139 -1157 -1158 -1141 -1159 -1142 -1160 -1143 -1161 -1144 -1162 -1145 -1163 -1146 -1164 -1147 -1165 -1148 -1166 -1149 -1167 -1150 -1168 -1151 -1169 -1152 -1170 -1153 -1171 -1154 -1172 -1155 -1173 -1156 -1174 -1157 -1175 -1158 -1176 -1177 -1160 -1178 -1161 -1179 -1162 -1180 -1163 -1181 -1164 -1182 -1165 -1183 -1166 -1184 -1167 -1185 -1168 -1186 -1169 -1187 -1170 -1188 -1171 -1189 -1172 -1190 -1173 -1191 -1174 -1192 -1175 -1193 -1176 -1194 -1177 -1195 -1196 -1179 -1197 -1180 -1198 -1181 -1199 -1182 -1200 -1183 -1201 -1184 -1202 -1185 -1203 -1186 -1204 -1187 -1205 -1188 -1206 -1189 -1207 -1190 -1208 -1191 -1209 -1192 -1210 -1193 -1211 -1194 -1212 -1195 -1213 -1196 -1214 -1215 -1198 -1216 -1199 -1217 -1200 -1218 -1201 -1219 -1202 -1220 -1203 -1221 -1204 -1222 -1205 -1223 -1206 -1224 -1207 -1225 -1208 -1226 -1209 -1227 -1210 -1228 -1211 -1229 -1212 -1230 -1213 -1231 -1214 -1232 -1215 -1233 -1234 -1217 -1235 -1218 -1236 -1219 -1237 -1220 -1238 -1221 -1239 -1222 -1240 -1223 -1241 -1224 -1242 -1225 -1243 -1226 -1244 -1227 -1245 -1228 -1246 -1229 -1247 -1230 -1248 -1231 -1249 -1232 -1250 -1233 -1251 -1234 -1252 -1253 -1236 -1254 -1237 -1255 -1238 -1256 -1239 -1257 -1240 -1258 -1241 -1259 -1242 -1260 -1243 -1261 -1244 -1262 -1245 -1263 -1246 -1264 -1247 -1265 -1248 -1266 -1249 -1267 -1250 -1268 -1251 -1269 -1252 -1270 -1253 -1271 -1272 -1255 -1273 -1256 -1274 -1257 -1275 -1258 -1276 -1259 -1277 -1260 -1278 -1261 -1279 -1262 -1280 -1263 -1281 -1264 -1282 -1265 -1283 -1266 -1284 -1267 -1285 -1268 -1286 -1269 -1287 -1270 -1288 -1271 -1289 -1272 -1290 -1291 -1274 -1292 -1275 -1293 -1276 -1294 -1277 -1295 -1278 -1296 -1279 -1297 -1280 -1298 -1281 -1299 -1282 -1300 -1283 -1301 -1284 -1302 -1285 -1303 -1286 -1304 -1287 -1305 -1288 -1306 -1289 -1307 -1290 -1308 -1291 -1309 -1310 -1293 -1311 -1294 -1312 -1295 -1313 -1296 -1314 -1297 -1315 -1298 -1316 -1299 -1317 -1300 -1318 -1301 -1319 -1302 -1320 -1303 -1321 -1304 -1322 -1305 -1323 -1306 -1324 -1307 -1325 -1308 -1326 -1309 -1327 -1310 -1328 -1329 -1312 -1330 -1313 -1331 -1314 -1332 -1315 -1333 -1316 -1334 -1317 -1335 -1318 -1336 -1319 -1337 -1320 -1338 -1321 -1339 -1322 -1340 -1323 -1341 -1324 -1342 -1325 -1343 -1326 -1344 -1327 -1345 -1328 -1346 -1329 -1347 -1348 -1331 -1349 -1332 -1350 -1333 -1351 -1334 -1352 -1335 -1353 -1336 -1354 -1337 -1355 -1338 -1356 -1339 -1357 -1340 -1358 -1341 -1359 -1342 -1360 -1343 -1361 -1344 -1362 -1345 -1363 -1346 -1364 -1347 -1365 -1348 -1366 -1367 -1350 -1368 -1351 -1369 -1352 -1370 -1353 -1371 -1354 -1372 -1355 -1373 -1356 -1374 -1357 -1375 -1358 -1376 -1359 -1377 -1360 -1378 -1361 -1379 -1362 -1380 -1363 -1381 -1364 -1382 -1365 -1383 -1366 -1384 -1367 -1385 -1386 -1369 -1387 -1370 -1388 -1371 -1389 -1372 -1390 -1373 -1391 -1374 -1392 -1375 -1393 -1376 -1394 -1377 -1395 -1378 -1396 -1379 -1397 -1380 -1398 -1381 -1399 -1382 -1400 -1383 -1401 -1384 -1402 -1385 -1403 -1386 -1404 -1405 -1388 -1406 -1389 -1407 -1390 -1408 -1391 -1409 -1392 -1410 -1393 -1411 -1394 -1412 -1395 -1413 -1396 -1414 -1397 -1415 -1398 -1416 -1399 -1417 -1400 -1418 -1401 -1419 -1402 -1420 -1403 -1421 -1404 -1422 -1405 -1423 -1424 -1407 -1425 -1408 -1426 -1409 -1427 -1410 -1428 -1411 -1429 -1412 -1430 -1413 -1431 -1414 -1432 -1415 -1433 -1416 -1434 -1417 -1435 -1418 -1436 -1419 -1437 -1420 -1438 -1421 -1439 -1422 -1440 -1423 -1441 -1424 -1442 -1443 -1426 -1444 -1427 -1445 -1428 -1446 -1429 -1447 -1430 -1448 -1431 -1449 -1432 -1450 -1433 -1451 -1434 -1452 -1435 -1453 -1436 -1454 -1437 -1455 -1438 -1456 -1439 -1457 -1440 -1458 -1441 -1459 -1442 -1460 -1443 -1461 -1462 -1445 -1463 -1446 -1464 -1447 -1465 -1448 -1466 -1449 -1467 -1450 -1468 -1451 -1469 -1452 -1470 -1453 -1471 -1454 -1472 -1455 -1473 -1456 -1474 -1457 -1475 -1458 -1476 -1459 -1477 -1460 -1478 -1461 -1479 -1462 -1480 -1481 -1464 -1482 -1465 -1483 -1466 -1484 -1467 -1485 -1468 -1486 -1469 -1487 -1470 -1488 -1471 -1489 -1472 -1490 -1473 -1491 -1474 -1492 -1475 -1493 -1476 -1494 -1477 -1495 -1478 -1496 -1479 -1497 -1480 -1498 -1481 -1499 -1500 -1483 -1501 -1484 -1502 -1485 -1503 -1486 -1504 -1487 -1505 -1488 -1506 -1489 -1507 -1490 -1508 -1491 -1509 -1492 -1510 -1493 -1511 -1494 -1512 -1495 -1513 -1496 -1514 -1497 -1515 -1498 -1516 -1499 -1517 -1500 -1518 -1519 -1502 -1520 -1503 -1521 -1504 -1522 -1505 -1523 -1506 -1524 -1507 -1525 -1508 -1526 -1509 -1527 -1510 -1528 -1511 -1529 -1512 -1530 -1513 -1531 -1514 -1532 -1515 -1533 -1516 -1534 -1517 -1535 -1518 -1536 -1519 -1537 -1538 -1521 -1539 -1522 -1540 -1523 -1541 -1524 -1542 -1525 -1543 -1526 -1544 -1527 -1545 -1528 -1546 -1529 -1547 -1530 -1548 -1531 -1549 -1532 -1550 -1533 -1551 -1534 -1552 -1535 -1553 -1536 -1554 -1537 -1555 -1538 -1556 -1557 -1540 -1558 -1541 -1559 -1542 -1560 -1543 -1561 -1544 -1562 -1545 -1563 -1546 -1564 -1547 -1565 -1548 -1566 -1549 -1567 -1550 -1568 -1551 -1569 -1552 -1570 -1553 -1571 -1554 -1572 -1555 -1573 -1556 -1574 -1557 -1575 -1576 -1559 -1577 -1560 -1578 -1561 -1579 -1562 -1580 -1563 -1581 -1564 -1582 -1565 -1583 -1566 -1584 -1567 -1585 -1568 -1586 -1569 -1587 -1570 -1588 -1571 -1589 -1572 -1590 -1573 -1591 -1574 -1592 -1575 -1593 -1576 -1594 -1595 -1578 -1596 -1579 -1597 -1580 -1598 -1581 -1599 -1582 -1600 -1583 -1601 -1584 -1602 -1585 -1603 -1586 -1604 -1587 -1605 -1588 -1606 -1589 -1607 -1590 -1608 -1591 -1609 -1592 -1610 -1593 -1611 -1594 -1612 -1595 -1613 -1614 -1597 -1615 -1598 -1616 -1599 -1617 -1600 -1618 -1601 -1619 -1602 -1620 -1603 -1621 -1604 -1622 -1605 -1623 -1606 -1624 -1607 -1625 -1608 -1626 -1609 -1627 -1610 -1628 -1611 -1629 -1612 -1630 -1613 -1631 -1614 -1632 -1633 -1616 -1634 -1617 -1635 -1618 -1636 -1619 -1637 -1620 -1638 -1621 -1639 -1622 -1640 -1623 -1641 -1624 -1642 -1625 -1643 -1626 -1644 -1627 -1645 -1628 -1646 -1629 -1647 -1630 -1648 -1631 -1649 -1632 -1650 -1633 -1651 -1652 -1635 -1653 -1636 -1654 -1637 -1655 -1638 -1656 -1639 -1657 -1640 -1658 -1641 -1659 -1642 -1660 -1643 -1661 -1644 -1662 -1645 -1663 -1646 -1664 -1647 -1665 -1648 -1666 -1649 -1667 -1650 -1668 -1651 -1669 -1652 -1670 -1671 -1654 -1672 -1655 -1673 -1656 -1674 -1657 -1675 -1658 -1676 -1659 -1677 -1660 -1678 -1661 -1679 -1662 -1680 -1663 -1681 -1664 -1682 -1665 -1683 -1666 -1684 -1667 -1685 -1668 -1686 -1669 -1687 -1670 -1688 -1671 -1689 -1690 -1673 -1691 -1674 -1692 -1675 -1693 -1676 -1694 -1677 -1695 -1678 -1696 -1679 -1697 -1680 -1698 -1681 -1699 -1682 -1700 -1683 -1701 -1684 -1702 -1685 -1703 -1686 -1704 -1687 -1705 -1688 -1706 -1689 -1707 -1690 -1708 -1709 -1692 -1710 -1693 -1711 -1694 -1712 -1695 -1713 -1696 -1714 -1697 -1715 -1698 -1716 -1699 -1717 -1700 -1718 -1701 -1719 -1702 -1720 -1703 -1721 -1704 -1722 -1705 -1723 -1706 -1724 -1707 -1725 -1708 -1726 -1709 -1727 -1728 -1711 -1729 -1712 -1730 -1713 -1731 -1714 -1732 -1715 -1733 -1716 -1734 -1717 -1735 -1718 -1736 -1719 -1737 -1720 -1738 -1721 -1739 -1722 -1740 -1723 -1741 -1724 -1742 -1725 -1743 -1726 -1744 -1727 -1745 -1728 -1746 -1747 -1730 -1748 -1731 -1749 -1732 -1750 -1733 -1751 -1734 -1752 -1735 -1753 -1736 -1754 -1737 -1755 -1738 -1756 -1739 -1757 -1740 -1758 -1741 -1759 -1742 -1760 -1743 -1761 -1744 -1762 -1745 -1763 -1746 -1764 -1747 -1765 -1766 -1749 -1767 -1750 -1768 -1751 -1769 -1752 -1770 -1753 -1771 -1754 -1772 -1755 -1773 -1756 -1774 -1757 -1775 -1758 -1776 -1759 -1777 -1760 -1778 -1761 -1779 -1762 -1780 -1763 -1781 -1764 -1782 -1765 -1783 -1766 -1784 -1785 -1768 -1786 -1769 -1787 -1770 -1788 -1771 -1789 -1772 -1790 -1773 -1791 -1774 -1792 -1775 -1793 -1776 -1794 -1777 -1795 -1778 -1796 -1779 -1797 -1780 -1798 -1781 -1799 -1782 -1800 -1783 -1801 -1784 -1802 -1785 -1803 -1804 -1787 -1805 -1788 -1806 -1789 -1807 -1790 -1808 -1791 -1809 -1792 -1810 -1793 -1811 -1794 -1812 -1795 -1813 -1796 -1814 -1797 -1815 -1798 -1816 -1799 -1817 -1800 -1818 -1801 -1819 -1802 -1820 -1803 -1821 -1804 -1822 -1823 -1806 -1824 -1807 -1825 -1808 -1826 -1809 -1827 -1810 -1828 -1811 -1829 -1812 -1830 -1813 -1831 -1814 -1832 -1815 -1833 -1816 -1834 -1817 -1835 -1818 -1836 -1819 -1837 -1820 -1838 -1821 -1839 -1822 -1840 -1823 -1841 -1842 -1825 -1843 -1826 -1844 -1827 -1845 -1828 -1846 -1829 -1847 -1830 -1848 -1831 -1849 -1832 -1850 -1833 -1851 -1834 -1852 -1835 -1853 -1836 -1854 -1837 -1855 -1838 -1856 -1839 -1857 -1840 -1858 -1841 -1859 -1842 -1860 -1861 -1844 -1862 -1845 -1863 -1846 -1864 -1847 -1865 -1848 -1866 -1849 -1867 -1850 -1868 -1851 -1869 -1852 -1870 -1853 -1871 -1854 -1872 -1855 -1873 -1856 -1874 -1857 -1875 -1858 -1876 -1859 -1877 -1860 -1878 -1861 -1879 -1880 -1863 -1864 -1865 -1866 -1867 -1868 -1869 -1870 -1871 -1872 -1873 -1874 -1875 -1876 -1877 -1878 -1879 -1880 -) - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/owner b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/owner deleted file mode 100755 index 244904734..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/owner +++ /dev/null @@ -1,7667 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class labelList; - note "nPoints: 4000 nCells: 1881 nFaces: 7642 nInternalFaces: 3644"; - location "constant/polyMesh"; - object owner; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -7642 -( -0 -0 -1 -1 -2 -2 -3 -3 -4 -4 -5 -5 -6 -6 -7 -7 -8 -8 -9 -9 -10 -10 -11 -11 -12 -12 -13 -13 -14 -14 -15 -15 -16 -16 -17 -17 -18 -19 -19 -20 -20 -21 -21 -22 -22 -23 -23 -24 -24 -25 -25 -26 -26 -27 -27 -28 -28 -29 -29 -30 -30 -31 -31 -32 -32 -33 -33 -34 -34 -35 -35 -36 -36 -37 -38 -38 -39 -39 -40 -40 -41 -41 -42 -42 -43 -43 -44 -44 -45 -45 -46 -46 -47 -47 -48 -48 -49 -49 -50 -50 -51 -51 -52 -52 -53 -53 -54 -54 -55 -55 -56 -57 -57 -58 -58 -59 -59 -60 -60 -61 -61 -62 -62 -63 -63 -64 -64 -65 -65 -66 -66 -67 -67 -68 -68 -69 -69 -70 -70 -71 -71 -72 -72 -73 -73 -74 -74 -75 -76 -76 -77 -77 -78 -78 -79 -79 -80 -80 -81 -81 -82 -82 -83 -83 -84 -84 -85 -85 -86 -86 -87 -87 -88 -88 -89 -89 -90 -90 -91 -91 -92 -92 -93 -93 -94 -95 -95 -96 -96 -97 -97 -98 -98 -99 -99 -100 -100 -101 -101 -102 -102 -103 -103 -104 -104 -105 -105 -106 -106 -107 -107 -108 -108 -109 -109 -110 -110 -111 -111 -112 -112 -113 -114 -114 -115 -115 -116 -116 -117 -117 -118 -118 -119 -119 -120 -120 -121 -121 -122 -122 -123 -123 -124 -124 -125 -125 -126 -126 -127 -127 -128 -128 -129 -129 -130 -130 -131 -131 -132 -133 -133 -134 -134 -135 -135 -136 -136 -137 -137 -138 -138 -139 -139 -140 -140 -141 -141 -142 -142 -143 -143 -144 -144 -145 -145 -146 -146 -147 -147 -148 -148 -149 -149 -150 -150 -151 -152 -152 -153 -153 -154 -154 -155 -155 -156 -156 -157 -157 -158 -158 -159 -159 -160 -160 -161 -161 -162 -162 -163 -163 -164 -164 -165 -165 -166 -166 -167 -167 -168 -168 -169 -169 -170 -171 -171 -172 -172 -173 -173 -174 -174 -175 -175 -176 -176 -177 -177 -178 -178 -179 -179 -180 -180 -181 -181 -182 -182 -183 -183 -184 -184 -185 -185 -186 -186 -187 -187 -188 -188 -189 -190 -190 -191 -191 -192 -192 -193 -193 -194 -194 -195 -195 -196 -196 -197 -197 -198 -198 -199 -199 -200 -200 -201 -201 -202 -202 -203 -203 -204 -204 -205 -205 -206 -206 -207 -207 -208 -209 -209 -210 -210 -211 -211 -212 -212 -213 -213 -214 -214 -215 -215 -216 -216 -217 -217 -218 -218 -219 -219 -220 -220 -221 -221 -222 -222 -223 -223 -224 -224 -225 -225 -226 -226 -227 -228 -228 -229 -229 -230 -230 -231 -231 -232 -232 -233 -233 -234 -234 -235 -235 -236 -236 -237 -237 -238 -238 -239 -239 -240 -240 -241 -241 -242 -242 -243 -243 -244 -244 -245 -245 -246 -247 -247 -248 -248 -249 -249 -250 -250 -251 -251 -252 -252 -253 -253 -254 -254 -255 -255 -256 -256 -257 -257 -258 -258 -259 -259 -260 -260 -261 -261 -262 -262 -263 -263 -264 -264 -265 -266 -266 -267 -267 -268 -268 -269 -269 -270 -270 -271 -271 -272 -272 -273 -273 -274 -274 -275 -275 -276 -276 -277 -277 -278 -278 -279 -279 -280 -280 -281 -281 -282 -282 -283 -283 -284 -285 -285 -286 -286 -287 -287 -288 -288 -289 -289 -290 -290 -291 -291 -292 -292 -293 -293 -294 -294 -295 -295 -296 -296 -297 -297 -298 -298 -299 -299 -300 -300 -301 -301 -302 -302 -303 -304 -304 -305 -305 -306 -306 -307 -307 -308 -308 -309 -309 -310 -310 -311 -311 -312 -312 -313 -313 -314 -314 -315 -315 -316 -316 -317 -317 -318 -318 -319 -319 -320 -320 -321 -321 -322 -323 -323 -324 -324 -325 -325 -326 -326 -327 -327 -328 -328 -329 -329 -330 -330 -331 -331 -332 -332 -333 -333 -334 -334 -335 -335 -336 -336 -337 -337 -338 -338 -339 -339 -340 -340 -341 -342 -342 -343 -343 -344 -344 -345 -345 -346 -346 -347 -347 -348 -348 -349 -349 -350 -350 -351 -351 -352 -352 -353 -353 -354 -354 -355 -355 -356 -356 -357 -357 -358 -358 -359 -359 -360 -361 -361 -362 -362 -363 -363 -364 -364 -365 -365 -366 -366 -367 -367 -368 -368 -369 -369 -370 -370 -371 -371 -372 -372 -373 -373 -374 -374 -375 -375 -376 -376 -377 -377 -378 -378 -379 -380 -380 -381 -381 -382 -382 -383 -383 -384 -384 -385 -385 -386 -386 -387 -387 -388 -388 -389 -389 -390 -390 -391 -391 -392 -392 -393 -393 -394 -394 -395 -395 -396 -396 -397 -397 -398 -399 -399 -400 -400 -401 -401 -402 -402 -403 -403 -404 -404 -405 -405 -406 -406 -407 -407 -408 -408 -409 -409 -410 -410 -411 -411 -412 -412 -413 -413 -414 -414 -415 -415 -416 -416 -417 -418 -418 -419 -419 -420 -420 -421 -421 -422 -422 -423 -423 -424 -424 -425 -425 -426 -426 -427 -427 -428 -428 -429 -429 -430 -430 -431 -431 -432 -432 -433 -433 -434 -434 -435 -435 -436 -437 -437 -438 -438 -439 -439 -440 -440 -441 -441 -442 -442 -443 -443 -444 -444 -445 -445 -446 -446 -447 -447 -448 -448 -449 -449 -450 -450 -451 -451 -452 -452 -453 -453 -454 -454 -455 -456 -456 -457 -457 -458 -458 -459 -459 -460 -460 -461 -461 -462 -462 -463 -463 -464 -464 -465 -465 -466 -466 -467 -467 -468 -468 -469 -469 -470 -470 -471 -471 -472 -472 -473 -473 -474 -475 -475 -476 -476 -477 -477 -478 -478 -479 -479 -480 -480 -481 -481 -482 -482 -483 -483 -484 -484 -485 -485 -486 -486 -487 -487 -488 -488 -489 -489 -490 -490 -491 -491 -492 -492 -493 -494 -494 -495 -495 -496 -496 -497 -497 -498 -498 -499 -499 -500 -500 -501 -501 -502 -502 -503 -503 -504 -504 -505 -505 -506 -506 -507 -507 -508 -508 -509 -509 -510 -510 -511 -511 -512 -513 -513 -514 -514 -515 -515 -516 -516 -517 -517 -518 -518 -519 -519 -520 -520 -521 -521 -522 -522 -523 -523 -524 -524 -525 -525 -526 -526 -527 -527 -528 -528 -529 -529 -530 -530 -531 -532 -532 -533 -533 -534 -534 -535 -535 -536 -536 -537 -537 -538 -538 -539 -539 -540 -540 -541 -541 -542 -542 -543 -543 -544 -544 -545 -545 -546 -546 -547 -547 -548 -548 -549 -549 -550 -551 -551 -552 -552 -553 -553 -554 -554 -555 -555 -556 -556 -557 -557 -558 -558 -559 -559 -560 -560 -561 -561 -562 -562 -563 -563 -564 -564 -565 -565 -566 -566 -567 -567 -568 -568 -569 -570 -570 -571 -571 -572 -572 -573 -573 -574 -574 -575 -575 -576 -576 -577 -577 -578 -578 -579 -579 -580 -580 -581 -581 -582 -582 -583 -583 -584 -584 -585 -585 -586 -586 -587 -587 -588 -589 -589 -590 -590 -591 -591 -592 -592 -593 -593 -594 -594 -595 -595 -596 -596 -597 -597 -598 -598 -599 -599 -600 -600 -601 -601 -602 -602 -603 -603 -604 -604 -605 -605 -606 -606 -607 -608 -608 -609 -609 -610 -610 -611 -611 -612 -612 -613 -613 -614 -614 -615 -615 -616 -616 -617 -617 -618 -618 -619 -619 -620 -620 -621 -621 -622 -622 -623 -623 -624 -624 -625 -625 -626 -627 -627 -628 -628 -629 -629 -630 -630 -631 -631 -632 -632 -633 -633 -634 -634 -635 -635 -636 -636 -637 -637 -638 -638 -639 -639 -640 -640 -641 -641 -642 -642 -643 -643 -644 -644 -645 -646 -646 -647 -647 -648 -648 -649 -649 -650 -650 -651 -651 -652 -652 -653 -653 -654 -654 -655 -655 -656 -656 -657 -657 -658 -658 -659 -659 -660 -660 -661 -661 -662 -662 -663 -663 -664 -665 -665 -666 -666 -667 -667 -668 -668 -669 -669 -670 -670 -671 -671 -672 -672 -673 -673 -674 -674 -675 -675 -676 -676 -677 -677 -678 -678 -679 -679 -680 -680 -681 -681 -682 -682 -683 -684 -684 -685 -685 -686 -686 -687 -687 -688 -688 -689 -689 -690 -690 -691 -691 -692 -692 -693 -693 -694 -694 -695 -695 -696 -696 -697 -697 -698 -698 -699 -699 -700 -700 -701 -701 -702 -703 -703 -704 -704 -705 -705 -706 -706 -707 -707 -708 -708 -709 -709 -710 -710 -711 -711 -712 -712 -713 -713 -714 -714 -715 -715 -716 -716 -717 -717 -718 -718 -719 -719 -720 -720 -721 -722 -722 -723 -723 -724 -724 -725 -725 -726 -726 -727 -727 -728 -728 -729 -729 -730 -730 -731 -731 -732 -732 -733 -733 -734 -734 -735 -735 -736 -736 -737 -737 -738 -738 -739 -739 -740 -741 -741 -742 -742 -743 -743 -744 -744 -745 -745 -746 -746 -747 -747 -748 -748 -749 -749 -750 -750 -751 -751 -752 -752 -753 -753 -754 -754 -755 -755 -756 -756 -757 -757 -758 -758 -759 -760 -760 -761 -761 -762 -762 -763 -763 -764 -764 -765 -765 -766 -766 -767 -767 -768 -768 -769 -769 -770 -770 -771 -771 -772 -772 -773 -773 -774 -774 -775 -775 -776 -776 -777 -777 -778 -779 -779 -780 -780 -781 -781 -782 -782 -783 -783 -784 -784 -785 -785 -786 -786 -787 -787 -788 -788 -789 -789 -790 -790 -791 -791 -792 -792 -793 -793 -794 -794 -795 -795 -796 -796 -797 -798 -798 -799 -799 -800 -800 -801 -801 -802 -802 -803 -803 -804 -804 -805 -805 -806 -806 -807 -807 -808 -808 -809 -809 -810 -810 -811 -811 -812 -812 -813 -813 -814 -814 -815 -815 -816 -817 -817 -818 -818 -819 -819 -820 -820 -821 -821 -822 -822 -823 -823 -824 -824 -825 -825 -826 -826 -827 -827 -828 -828 -829 -829 -830 -830 -831 -831 -832 -832 -833 -833 -834 -834 -835 -836 -836 -837 -837 -838 -838 -839 -839 -840 -840 -841 -841 -842 -842 -843 -843 -844 -844 -845 -845 -846 -846 -847 -847 -848 -848 -849 -849 -850 -850 -851 -851 -852 -852 -853 -853 -854 -855 -855 -856 -856 -857 -857 -858 -858 -859 -859 -860 -860 -861 -861 -862 -862 -863 -863 -864 -864 -865 -865 -866 -866 -867 -867 -868 -868 -869 -869 -870 -870 -871 -871 -872 -872 -873 -874 -874 -875 -875 -876 -876 -877 -877 -878 -878 -879 -879 -880 -880 -881 -881 -882 -882 -883 -883 -884 -884 -885 -885 -886 -886 -887 -887 -888 -888 -889 -889 -890 -890 -891 -891 -892 -893 -893 -894 -894 -895 -895 -896 -896 -897 -897 -898 -898 -899 -899 -900 -900 -901 -901 -902 -902 -903 -903 -904 -904 -905 -905 -906 -906 -907 -907 -908 -908 -909 -909 -910 -910 -911 -912 -912 -913 -913 -914 -914 -915 -915 -916 -916 -917 -917 -918 -918 -919 -919 -920 -920 -921 -921 -922 -922 -923 -923 -924 -924 -925 -925 -926 -926 -927 -927 -928 -928 -929 -929 -930 -931 -931 -932 -932 -933 -933 -934 -934 -935 -935 -936 -936 -937 -937 -938 -938 -939 -939 -940 -940 -941 -941 -942 -942 -943 -943 -944 -944 -945 -945 -946 -946 -947 -947 -948 -948 -949 -950 -950 -951 -951 -952 -952 -953 -953 -954 -954 -955 -955 -956 -956 -957 -957 -958 -958 -959 -959 -960 -960 -961 -961 -962 -962 -963 -963 -964 -964 -965 -965 -966 -966 -967 -967 -968 -969 -969 -970 -970 -971 -971 -972 -972 -973 -973 -974 -974 -975 -975 -976 -976 -977 -977 -978 -978 -979 -979 -980 -980 -981 -981 -982 -982 -983 -983 -984 -984 -985 -985 -986 -986 -987 -988 -988 -989 -989 -990 -990 -991 -991 -992 -992 -993 -993 -994 -994 -995 -995 -996 -996 -997 -997 -998 -998 -999 -999 -1000 -1000 -1001 -1001 -1002 -1002 -1003 -1003 -1004 -1004 -1005 -1005 -1006 -1007 -1007 -1008 -1008 -1009 -1009 -1010 -1010 -1011 -1011 -1012 -1012 -1013 -1013 -1014 -1014 -1015 -1015 -1016 -1016 -1017 -1017 -1018 -1018 -1019 -1019 -1020 -1020 -1021 -1021 -1022 -1022 -1023 -1023 -1024 -1024 -1025 -1026 -1026 -1027 -1027 -1028 -1028 -1029 -1029 -1030 -1030 -1031 -1031 -1032 -1032 -1033 -1033 -1034 -1034 -1035 -1035 -1036 -1036 -1037 -1037 -1038 -1038 -1039 -1039 -1040 -1040 -1041 -1041 -1042 -1042 -1043 -1043 -1044 -1045 -1045 -1046 -1046 -1047 -1047 -1048 -1048 -1049 -1049 -1050 -1050 -1051 -1051 -1052 -1052 -1053 -1053 -1054 -1054 -1055 -1055 -1056 -1056 -1057 -1057 -1058 -1058 -1059 -1059 -1060 -1060 -1061 -1061 -1062 -1062 -1063 -1064 -1064 -1065 -1065 -1066 -1066 -1067 -1067 -1068 -1068 -1069 -1069 -1070 -1070 -1071 -1071 -1072 -1072 -1073 -1073 -1074 -1074 -1075 -1075 -1076 -1076 -1077 -1077 -1078 -1078 -1079 -1079 -1080 -1080 -1081 -1081 -1082 -1083 -1083 -1084 -1084 -1085 -1085 -1086 -1086 -1087 -1087 -1088 -1088 -1089 -1089 -1090 -1090 -1091 -1091 -1092 -1092 -1093 -1093 -1094 -1094 -1095 -1095 -1096 -1096 -1097 -1097 -1098 -1098 -1099 -1099 -1100 -1100 -1101 -1102 -1102 -1103 -1103 -1104 -1104 -1105 -1105 -1106 -1106 -1107 -1107 -1108 -1108 -1109 -1109 -1110 -1110 -1111 -1111 -1112 -1112 -1113 -1113 -1114 -1114 -1115 -1115 -1116 -1116 -1117 -1117 -1118 -1118 -1119 -1119 -1120 -1121 -1121 -1122 -1122 -1123 -1123 -1124 -1124 -1125 -1125 -1126 -1126 -1127 -1127 -1128 -1128 -1129 -1129 -1130 -1130 -1131 -1131 -1132 -1132 -1133 -1133 -1134 -1134 -1135 -1135 -1136 -1136 -1137 -1137 -1138 -1138 -1139 -1140 -1140 -1141 -1141 -1142 -1142 -1143 -1143 -1144 -1144 -1145 -1145 -1146 -1146 -1147 -1147 -1148 -1148 -1149 -1149 -1150 -1150 -1151 -1151 -1152 -1152 -1153 -1153 -1154 -1154 -1155 -1155 -1156 -1156 -1157 -1157 -1158 -1159 -1159 -1160 -1160 -1161 -1161 -1162 -1162 -1163 -1163 -1164 -1164 -1165 -1165 -1166 -1166 -1167 -1167 -1168 -1168 -1169 -1169 -1170 -1170 -1171 -1171 -1172 -1172 -1173 -1173 -1174 -1174 -1175 -1175 -1176 -1176 -1177 -1178 -1178 -1179 -1179 -1180 -1180 -1181 -1181 -1182 -1182 -1183 -1183 -1184 -1184 -1185 -1185 -1186 -1186 -1187 -1187 -1188 -1188 -1189 -1189 -1190 -1190 -1191 -1191 -1192 -1192 -1193 -1193 -1194 -1194 -1195 -1195 -1196 -1197 -1197 -1198 -1198 -1199 -1199 -1200 -1200 -1201 -1201 -1202 -1202 -1203 -1203 -1204 -1204 -1205 -1205 -1206 -1206 -1207 -1207 -1208 -1208 -1209 -1209 -1210 -1210 -1211 -1211 -1212 -1212 -1213 -1213 -1214 -1214 -1215 -1216 -1216 -1217 -1217 -1218 -1218 -1219 -1219 -1220 -1220 -1221 -1221 -1222 -1222 -1223 -1223 -1224 -1224 -1225 -1225 -1226 -1226 -1227 -1227 -1228 -1228 -1229 -1229 -1230 -1230 -1231 -1231 -1232 -1232 -1233 -1233 -1234 -1235 -1235 -1236 -1236 -1237 -1237 -1238 -1238 -1239 -1239 -1240 -1240 -1241 -1241 -1242 -1242 -1243 -1243 -1244 -1244 -1245 -1245 -1246 -1246 -1247 -1247 -1248 -1248 -1249 -1249 -1250 -1250 -1251 -1251 -1252 -1252 -1253 -1254 -1254 -1255 -1255 -1256 -1256 -1257 -1257 -1258 -1258 -1259 -1259 -1260 -1260 -1261 -1261 -1262 -1262 -1263 -1263 -1264 -1264 -1265 -1265 -1266 -1266 -1267 -1267 -1268 -1268 -1269 -1269 -1270 -1270 -1271 -1271 -1272 -1273 -1273 -1274 -1274 -1275 -1275 -1276 -1276 -1277 -1277 -1278 -1278 -1279 -1279 -1280 -1280 -1281 -1281 -1282 -1282 -1283 -1283 -1284 -1284 -1285 -1285 -1286 -1286 -1287 -1287 -1288 -1288 -1289 -1289 -1290 -1290 -1291 -1292 -1292 -1293 -1293 -1294 -1294 -1295 -1295 -1296 -1296 -1297 -1297 -1298 -1298 -1299 -1299 -1300 -1300 -1301 -1301 -1302 -1302 -1303 -1303 -1304 -1304 -1305 -1305 -1306 -1306 -1307 -1307 -1308 -1308 -1309 -1309 -1310 -1311 -1311 -1312 -1312 -1313 -1313 -1314 -1314 -1315 -1315 -1316 -1316 -1317 -1317 -1318 -1318 -1319 -1319 -1320 -1320 -1321 -1321 -1322 -1322 -1323 -1323 -1324 -1324 -1325 -1325 -1326 -1326 -1327 -1327 -1328 -1328 -1329 -1330 -1330 -1331 -1331 -1332 -1332 -1333 -1333 -1334 -1334 -1335 -1335 -1336 -1336 -1337 -1337 -1338 -1338 -1339 -1339 -1340 -1340 -1341 -1341 -1342 -1342 -1343 -1343 -1344 -1344 -1345 -1345 -1346 -1346 -1347 -1347 -1348 -1349 -1349 -1350 -1350 -1351 -1351 -1352 -1352 -1353 -1353 -1354 -1354 -1355 -1355 -1356 -1356 -1357 -1357 -1358 -1358 -1359 -1359 -1360 -1360 -1361 -1361 -1362 -1362 -1363 -1363 -1364 -1364 -1365 -1365 -1366 -1366 -1367 -1368 -1368 -1369 -1369 -1370 -1370 -1371 -1371 -1372 -1372 -1373 -1373 -1374 -1374 -1375 -1375 -1376 -1376 -1377 -1377 -1378 -1378 -1379 -1379 -1380 -1380 -1381 -1381 -1382 -1382 -1383 -1383 -1384 -1384 -1385 -1385 -1386 -1387 -1387 -1388 -1388 -1389 -1389 -1390 -1390 -1391 -1391 -1392 -1392 -1393 -1393 -1394 -1394 -1395 -1395 -1396 -1396 -1397 -1397 -1398 -1398 -1399 -1399 -1400 -1400 -1401 -1401 -1402 -1402 -1403 -1403 -1404 -1404 -1405 -1406 -1406 -1407 -1407 -1408 -1408 -1409 -1409 -1410 -1410 -1411 -1411 -1412 -1412 -1413 -1413 -1414 -1414 -1415 -1415 -1416 -1416 -1417 -1417 -1418 -1418 -1419 -1419 -1420 -1420 -1421 -1421 -1422 -1422 -1423 -1423 -1424 -1425 -1425 -1426 -1426 -1427 -1427 -1428 -1428 -1429 -1429 -1430 -1430 -1431 -1431 -1432 -1432 -1433 -1433 -1434 -1434 -1435 -1435 -1436 -1436 -1437 -1437 -1438 -1438 -1439 -1439 -1440 -1440 -1441 -1441 -1442 -1442 -1443 -1444 -1444 -1445 -1445 -1446 -1446 -1447 -1447 -1448 -1448 -1449 -1449 -1450 -1450 -1451 -1451 -1452 -1452 -1453 -1453 -1454 -1454 -1455 -1455 -1456 -1456 -1457 -1457 -1458 -1458 -1459 -1459 -1460 -1460 -1461 -1461 -1462 -1463 -1463 -1464 -1464 -1465 -1465 -1466 -1466 -1467 -1467 -1468 -1468 -1469 -1469 -1470 -1470 -1471 -1471 -1472 -1472 -1473 -1473 -1474 -1474 -1475 -1475 -1476 -1476 -1477 -1477 -1478 -1478 -1479 -1479 -1480 -1480 -1481 -1482 -1482 -1483 -1483 -1484 -1484 -1485 -1485 -1486 -1486 -1487 -1487 -1488 -1488 -1489 -1489 -1490 -1490 -1491 -1491 -1492 -1492 -1493 -1493 -1494 -1494 -1495 -1495 -1496 -1496 -1497 -1497 -1498 -1498 -1499 -1499 -1500 -1501 -1501 -1502 -1502 -1503 -1503 -1504 -1504 -1505 -1505 -1506 -1506 -1507 -1507 -1508 -1508 -1509 -1509 -1510 -1510 -1511 -1511 -1512 -1512 -1513 -1513 -1514 -1514 -1515 -1515 -1516 -1516 -1517 -1517 -1518 -1518 -1519 -1520 -1520 -1521 -1521 -1522 -1522 -1523 -1523 -1524 -1524 -1525 -1525 -1526 -1526 -1527 -1527 -1528 -1528 -1529 -1529 -1530 -1530 -1531 -1531 -1532 -1532 -1533 -1533 -1534 -1534 -1535 -1535 -1536 -1536 -1537 -1537 -1538 -1539 -1539 -1540 -1540 -1541 -1541 -1542 -1542 -1543 -1543 -1544 -1544 -1545 -1545 -1546 -1546 -1547 -1547 -1548 -1548 -1549 -1549 -1550 -1550 -1551 -1551 -1552 -1552 -1553 -1553 -1554 -1554 -1555 -1555 -1556 -1556 -1557 -1558 -1558 -1559 -1559 -1560 -1560 -1561 -1561 -1562 -1562 -1563 -1563 -1564 -1564 -1565 -1565 -1566 -1566 -1567 -1567 -1568 -1568 -1569 -1569 -1570 -1570 -1571 -1571 -1572 -1572 -1573 -1573 -1574 -1574 -1575 -1575 -1576 -1577 -1577 -1578 -1578 -1579 -1579 -1580 -1580 -1581 -1581 -1582 -1582 -1583 -1583 -1584 -1584 -1585 -1585 -1586 -1586 -1587 -1587 -1588 -1588 -1589 -1589 -1590 -1590 -1591 -1591 -1592 -1592 -1593 -1593 -1594 -1594 -1595 -1596 -1596 -1597 -1597 -1598 -1598 -1599 -1599 -1600 -1600 -1601 -1601 -1602 -1602 -1603 -1603 -1604 -1604 -1605 -1605 -1606 -1606 -1607 -1607 -1608 -1608 -1609 -1609 -1610 -1610 -1611 -1611 -1612 -1612 -1613 -1613 -1614 -1615 -1615 -1616 -1616 -1617 -1617 -1618 -1618 -1619 -1619 -1620 -1620 -1621 -1621 -1622 -1622 -1623 -1623 -1624 -1624 -1625 -1625 -1626 -1626 -1627 -1627 -1628 -1628 -1629 -1629 -1630 -1630 -1631 -1631 -1632 -1632 -1633 -1634 -1634 -1635 -1635 -1636 -1636 -1637 -1637 -1638 -1638 -1639 -1639 -1640 -1640 -1641 -1641 -1642 -1642 -1643 -1643 -1644 -1644 -1645 -1645 -1646 -1646 -1647 -1647 -1648 -1648 -1649 -1649 -1650 -1650 -1651 -1651 -1652 -1653 -1653 -1654 -1654 -1655 -1655 -1656 -1656 -1657 -1657 -1658 -1658 -1659 -1659 -1660 -1660 -1661 -1661 -1662 -1662 -1663 -1663 -1664 -1664 -1665 -1665 -1666 -1666 -1667 -1667 -1668 -1668 -1669 -1669 -1670 -1670 -1671 -1672 -1672 -1673 -1673 -1674 -1674 -1675 -1675 -1676 -1676 -1677 -1677 -1678 -1678 -1679 -1679 -1680 -1680 -1681 -1681 -1682 -1682 -1683 -1683 -1684 -1684 -1685 -1685 -1686 -1686 -1687 -1687 -1688 -1688 -1689 -1689 -1690 -1691 -1691 -1692 -1692 -1693 -1693 -1694 -1694 -1695 -1695 -1696 -1696 -1697 -1697 -1698 -1698 -1699 -1699 -1700 -1700 -1701 -1701 -1702 -1702 -1703 -1703 -1704 -1704 -1705 -1705 -1706 -1706 -1707 -1707 -1708 -1708 -1709 -1710 -1710 -1711 -1711 -1712 -1712 -1713 -1713 -1714 -1714 -1715 -1715 -1716 -1716 -1717 -1717 -1718 -1718 -1719 -1719 -1720 -1720 -1721 -1721 -1722 -1722 -1723 -1723 -1724 -1724 -1725 -1725 -1726 -1726 -1727 -1727 -1728 -1729 -1729 -1730 -1730 -1731 -1731 -1732 -1732 -1733 -1733 -1734 -1734 -1735 -1735 -1736 -1736 -1737 -1737 -1738 -1738 -1739 -1739 -1740 -1740 -1741 -1741 -1742 -1742 -1743 -1743 -1744 -1744 -1745 -1745 -1746 -1746 -1747 -1748 -1748 -1749 -1749 -1750 -1750 -1751 -1751 -1752 -1752 -1753 -1753 -1754 -1754 -1755 -1755 -1756 -1756 -1757 -1757 -1758 -1758 -1759 -1759 -1760 -1760 -1761 -1761 -1762 -1762 -1763 -1763 -1764 -1764 -1765 -1765 -1766 -1767 -1767 -1768 -1768 -1769 -1769 -1770 -1770 -1771 -1771 -1772 -1772 -1773 -1773 -1774 -1774 -1775 -1775 -1776 -1776 -1777 -1777 -1778 -1778 -1779 -1779 -1780 -1780 -1781 -1781 -1782 -1782 -1783 -1783 -1784 -1784 -1785 -1786 -1786 -1787 -1787 -1788 -1788 -1789 -1789 -1790 -1790 -1791 -1791 -1792 -1792 -1793 -1793 -1794 -1794 -1795 -1795 -1796 -1796 -1797 -1797 -1798 -1798 -1799 -1799 -1800 -1800 -1801 -1801 -1802 -1802 -1803 -1803 -1804 -1805 -1805 -1806 -1806 -1807 -1807 -1808 -1808 -1809 -1809 -1810 -1810 -1811 -1811 -1812 -1812 -1813 -1813 -1814 -1814 -1815 -1815 -1816 -1816 -1817 -1817 -1818 -1818 -1819 -1819 -1820 -1820 -1821 -1821 -1822 -1822 -1823 -1824 -1824 -1825 -1825 -1826 -1826 -1827 -1827 -1828 -1828 -1829 -1829 -1830 -1830 -1831 -1831 -1832 -1832 -1833 -1833 -1834 -1834 -1835 -1835 -1836 -1836 -1837 -1837 -1838 -1838 -1839 -1839 -1840 -1840 -1841 -1841 -1842 -1843 -1843 -1844 -1844 -1845 -1845 -1846 -1846 -1847 -1847 -1848 -1848 -1849 -1849 -1850 -1850 -1851 -1851 -1852 -1852 -1853 -1853 -1854 -1854 -1855 -1855 -1856 -1856 -1857 -1857 -1858 -1858 -1859 -1859 -1860 -1860 -1861 -1862 -1863 -1864 -1865 -1866 -1867 -1868 -1869 -1870 -1871 -1872 -1873 -1874 -1875 -1876 -1877 -1878 -1879 -18 -37 -56 -75 -94 -113 -132 -151 -170 -189 -208 -227 -246 -265 -284 -303 -322 -341 -360 -379 -398 -417 -436 -455 -474 -493 -512 -531 -550 -569 -588 -607 -626 -645 -664 -683 -702 -721 -740 -759 -778 -797 -816 -835 -854 -873 -892 -911 -930 -949 -968 -987 -1006 -1025 -1044 -1063 -1082 -1101 -1120 -1139 -1158 -1177 -1196 -1215 -1234 -1253 -1272 -1291 -1310 -1329 -1348 -1367 -1386 -1405 -1424 -1443 -1462 -1481 -1500 -1519 -1538 -1557 -1576 -1595 -1614 -1633 -1652 -1671 -1690 -1709 -1728 -1747 -1766 -1785 -1804 -1823 -1842 -1861 -1880 -0 -19 -38 -57 -76 -95 -114 -133 -152 -171 -190 -209 -228 -247 -266 -285 -304 -323 -342 -361 -380 -399 -418 -437 -456 -475 -494 -513 -532 -551 -570 -589 -608 -627 -646 -665 -684 -703 -722 -741 -760 -779 -798 -817 -836 -855 -874 -893 -912 -931 -950 -969 -988 -1007 -1026 -1045 -1064 -1083 -1102 -1121 -1140 -1159 -1178 -1197 -1216 -1235 -1254 -1273 -1292 -1311 -1330 -1349 -1368 -1387 -1406 -1425 -1444 -1463 -1482 -1501 -1520 -1539 -1558 -1577 -1596 -1615 -1634 -1653 -1672 -1691 -1710 -1729 -1748 -1767 -1786 -1805 -1824 -1843 -1862 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -1862 -1863 -1864 -1865 -1866 -1867 -1868 -1869 -1870 -1871 -1872 -1873 -1874 -1875 -1876 -1877 -1878 -1879 -1880 -0 -0 -1 -1 -2 -2 -3 -3 -4 -4 -5 -5 -6 -6 -7 -7 -8 -8 -9 -9 -10 -10 -11 -11 -12 -12 -13 -13 -14 -14 -15 -15 -16 -16 -17 -17 -18 -18 -19 -19 -20 -20 -21 -21 -22 -22 -23 -23 -24 -24 -25 -25 -26 -26 -27 -27 -28 -28 -29 -29 -30 -30 -31 -31 -32 -32 -33 -33 -34 -34 -35 -35 -36 -36 -37 -37 -38 -38 -39 -39 -40 -40 -41 -41 -42 -42 -43 -43 -44 -44 -45 -45 -46 -46 -47 -47 -48 -48 -49 -49 -50 -50 -51 -51 -52 -52 -53 -53 -54 -54 -55 -55 -56 -56 -57 -57 -58 -58 -59 -59 -60 -60 -61 -61 -62 -62 -63 -63 -64 -64 -65 -65 -66 -66 -67 -67 -68 -68 -69 -69 -70 -70 -71 -71 -72 -72 -73 -73 -74 -74 -75 -75 -76 -76 -77 -77 -78 -78 -79 -79 -80 -80 -81 -81 -82 -82 -83 -83 -84 -84 -85 -85 -86 -86 -87 -87 -88 -88 -89 -89 -90 -90 -91 -91 -92 -92 -93 -93 -94 -94 -95 -95 -96 -96 -97 -97 -98 -98 -99 -99 -100 -100 -101 -101 -102 -102 -103 -103 -104 -104 -105 -105 -106 -106 -107 -107 -108 -108 -109 -109 -110 -110 -111 -111 -112 -112 -113 -113 -114 -114 -115 -115 -116 -116 -117 -117 -118 -118 -119 -119 -120 -120 -121 -121 -122 -122 -123 -123 -124 -124 -125 -125 -126 -126 -127 -127 -128 -128 -129 -129 -130 -130 -131 -131 -132 -132 -133 -133 -134 -134 -135 -135 -136 -136 -137 -137 -138 -138 -139 -139 -140 -140 -141 -141 -142 -142 -143 -143 -144 -144 -145 -145 -146 -146 -147 -147 -148 -148 -149 -149 -150 -150 -151 -151 -152 -152 -153 -153 -154 -154 -155 -155 -156 -156 -157 -157 -158 -158 -159 -159 -160 -160 -161 -161 -162 -162 -163 -163 -164 -164 -165 -165 -166 -166 -167 -167 -168 -168 -169 -169 -170 -170 -171 -171 -172 -172 -173 -173 -174 -174 -175 -175 -176 -176 -177 -177 -178 -178 -179 -179 -180 -180 -181 -181 -182 -182 -183 -183 -184 -184 -185 -185 -186 -186 -187 -187 -188 -188 -189 -189 -190 -190 -191 -191 -192 -192 -193 -193 -194 -194 -195 -195 -196 -196 -197 -197 -198 -198 -199 -199 -200 -200 -201 -201 -202 -202 -203 -203 -204 -204 -205 -205 -206 -206 -207 -207 -208 -208 -209 -209 -210 -210 -211 -211 -212 -212 -213 -213 -214 -214 -215 -215 -216 -216 -217 -217 -218 -218 -219 -219 -220 -220 -221 -221 -222 -222 -223 -223 -224 -224 -225 -225 -226 -226 -227 -227 -228 -228 -229 -229 -230 -230 -231 -231 -232 -232 -233 -233 -234 -234 -235 -235 -236 -236 -237 -237 -238 -238 -239 -239 -240 -240 -241 -241 -242 -242 -243 -243 -244 -244 -245 -245 -246 -246 -247 -247 -248 -248 -249 -249 -250 -250 -251 -251 -252 -252 -253 -253 -254 -254 -255 -255 -256 -256 -257 -257 -258 -258 -259 -259 -260 -260 -261 -261 -262 -262 -263 -263 -264 -264 -265 -265 -266 -266 -267 -267 -268 -268 -269 -269 -270 -270 -271 -271 -272 -272 -273 -273 -274 -274 -275 -275 -276 -276 -277 -277 -278 -278 -279 -279 -280 -280 -281 -281 -282 -282 -283 -283 -284 -284 -285 -285 -286 -286 -287 -287 -288 -288 -289 -289 -290 -290 -291 -291 -292 -292 -293 -293 -294 -294 -295 -295 -296 -296 -297 -297 -298 -298 -299 -299 -300 -300 -301 -301 -302 -302 -303 -303 -304 -304 -305 -305 -306 -306 -307 -307 -308 -308 -309 -309 -310 -310 -311 -311 -312 -312 -313 -313 -314 -314 -315 -315 -316 -316 -317 -317 -318 -318 -319 -319 -320 -320 -321 -321 -322 -322 -323 -323 -324 -324 -325 -325 -326 -326 -327 -327 -328 -328 -329 -329 -330 -330 -331 -331 -332 -332 -333 -333 -334 -334 -335 -335 -336 -336 -337 -337 -338 -338 -339 -339 -340 -340 -341 -341 -342 -342 -343 -343 -344 -344 -345 -345 -346 -346 -347 -347 -348 -348 -349 -349 -350 -350 -351 -351 -352 -352 -353 -353 -354 -354 -355 -355 -356 -356 -357 -357 -358 -358 -359 -359 -360 -360 -361 -361 -362 -362 -363 -363 -364 -364 -365 -365 -366 -366 -367 -367 -368 -368 -369 -369 -370 -370 -371 -371 -372 -372 -373 -373 -374 -374 -375 -375 -376 -376 -377 -377 -378 -378 -379 -379 -380 -380 -381 -381 -382 -382 -383 -383 -384 -384 -385 -385 -386 -386 -387 -387 -388 -388 -389 -389 -390 -390 -391 -391 -392 -392 -393 -393 -394 -394 -395 -395 -396 -396 -397 -397 -398 -398 -399 -399 -400 -400 -401 -401 -402 -402 -403 -403 -404 -404 -405 -405 -406 -406 -407 -407 -408 -408 -409 -409 -410 -410 -411 -411 -412 -412 -413 -413 -414 -414 -415 -415 -416 -416 -417 -417 -418 -418 -419 -419 -420 -420 -421 -421 -422 -422 -423 -423 -424 -424 -425 -425 -426 -426 -427 -427 -428 -428 -429 -429 -430 -430 -431 -431 -432 -432 -433 -433 -434 -434 -435 -435 -436 -436 -437 -437 -438 -438 -439 -439 -440 -440 -441 -441 -442 -442 -443 -443 -444 -444 -445 -445 -446 -446 -447 -447 -448 -448 -449 -449 -450 -450 -451 -451 -452 -452 -453 -453 -454 -454 -455 -455 -456 -456 -457 -457 -458 -458 -459 -459 -460 -460 -461 -461 -462 -462 -463 -463 -464 -464 -465 -465 -466 -466 -467 -467 -468 -468 -469 -469 -470 -470 -471 -471 -472 -472 -473 -473 -474 -474 -475 -475 -476 -476 -477 -477 -478 -478 -479 -479 -480 -480 -481 -481 -482 -482 -483 -483 -484 -484 -485 -485 -486 -486 -487 -487 -488 -488 -489 -489 -490 -490 -491 -491 -492 -492 -493 -493 -494 -494 -495 -495 -496 -496 -497 -497 -498 -498 -499 -499 -500 -500 -501 -501 -502 -502 -503 -503 -504 -504 -505 -505 -506 -506 -507 -507 -508 -508 -509 -509 -510 -510 -511 -511 -512 -512 -513 -513 -514 -514 -515 -515 -516 -516 -517 -517 -518 -518 -519 -519 -520 -520 -521 -521 -522 -522 -523 -523 -524 -524 -525 -525 -526 -526 -527 -527 -528 -528 -529 -529 -530 -530 -531 -531 -532 -532 -533 -533 -534 -534 -535 -535 -536 -536 -537 -537 -538 -538 -539 -539 -540 -540 -541 -541 -542 -542 -543 -543 -544 -544 -545 -545 -546 -546 -547 -547 -548 -548 -549 -549 -550 -550 -551 -551 -552 -552 -553 -553 -554 -554 -555 -555 -556 -556 -557 -557 -558 -558 -559 -559 -560 -560 -561 -561 -562 -562 -563 -563 -564 -564 -565 -565 -566 -566 -567 -567 -568 -568 -569 -569 -570 -570 -571 -571 -572 -572 -573 -573 -574 -574 -575 -575 -576 -576 -577 -577 -578 -578 -579 -579 -580 -580 -581 -581 -582 -582 -583 -583 -584 -584 -585 -585 -586 -586 -587 -587 -588 -588 -589 -589 -590 -590 -591 -591 -592 -592 -593 -593 -594 -594 -595 -595 -596 -596 -597 -597 -598 -598 -599 -599 -600 -600 -601 -601 -602 -602 -603 -603 -604 -604 -605 -605 -606 -606 -607 -607 -608 -608 -609 -609 -610 -610 -611 -611 -612 -612 -613 -613 -614 -614 -615 -615 -616 -616 -617 -617 -618 -618 -619 -619 -620 -620 -621 -621 -622 -622 -623 -623 -624 -624 -625 -625 -626 -626 -627 -627 -628 -628 -629 -629 -630 -630 -631 -631 -632 -632 -633 -633 -634 -634 -635 -635 -636 -636 -637 -637 -638 -638 -639 -639 -640 -640 -641 -641 -642 -642 -643 -643 -644 -644 -645 -645 -646 -646 -647 -647 -648 -648 -649 -649 -650 -650 -651 -651 -652 -652 -653 -653 -654 -654 -655 -655 -656 -656 -657 -657 -658 -658 -659 -659 -660 -660 -661 -661 -662 -662 -663 -663 -664 -664 -665 -665 -666 -666 -667 -667 -668 -668 -669 -669 -670 -670 -671 -671 -672 -672 -673 -673 -674 -674 -675 -675 -676 -676 -677 -677 -678 -678 -679 -679 -680 -680 -681 -681 -682 -682 -683 -683 -684 -684 -685 -685 -686 -686 -687 -687 -688 -688 -689 -689 -690 -690 -691 -691 -692 -692 -693 -693 -694 -694 -695 -695 -696 -696 -697 -697 -698 -698 -699 -699 -700 -700 -701 -701 -702 -702 -703 -703 -704 -704 -705 -705 -706 -706 -707 -707 -708 -708 -709 -709 -710 -710 -711 -711 -712 -712 -713 -713 -714 -714 -715 -715 -716 -716 -717 -717 -718 -718 -719 -719 -720 -720 -721 -721 -722 -722 -723 -723 -724 -724 -725 -725 -726 -726 -727 -727 -728 -728 -729 -729 -730 -730 -731 -731 -732 -732 -733 -733 -734 -734 -735 -735 -736 -736 -737 -737 -738 -738 -739 -739 -740 -740 -741 -741 -742 -742 -743 -743 -744 -744 -745 -745 -746 -746 -747 -747 -748 -748 -749 -749 -750 -750 -751 -751 -752 -752 -753 -753 -754 -754 -755 -755 -756 -756 -757 -757 -758 -758 -759 -759 -760 -760 -761 -761 -762 -762 -763 -763 -764 -764 -765 -765 -766 -766 -767 -767 -768 -768 -769 -769 -770 -770 -771 -771 -772 -772 -773 -773 -774 -774 -775 -775 -776 -776 -777 -777 -778 -778 -779 -779 -780 -780 -781 -781 -782 -782 -783 -783 -784 -784 -785 -785 -786 -786 -787 -787 -788 -788 -789 -789 -790 -790 -791 -791 -792 -792 -793 -793 -794 -794 -795 -795 -796 -796 -797 -797 -798 -798 -799 -799 -800 -800 -801 -801 -802 -802 -803 -803 -804 -804 -805 -805 -806 -806 -807 -807 -808 -808 -809 -809 -810 -810 -811 -811 -812 -812 -813 -813 -814 -814 -815 -815 -816 -816 -817 -817 -818 -818 -819 -819 -820 -820 -821 -821 -822 -822 -823 -823 -824 -824 -825 -825 -826 -826 -827 -827 -828 -828 -829 -829 -830 -830 -831 -831 -832 -832 -833 -833 -834 -834 -835 -835 -836 -836 -837 -837 -838 -838 -839 -839 -840 -840 -841 -841 -842 -842 -843 -843 -844 -844 -845 -845 -846 -846 -847 -847 -848 -848 -849 -849 -850 -850 -851 -851 -852 -852 -853 -853 -854 -854 -855 -855 -856 -856 -857 -857 -858 -858 -859 -859 -860 -860 -861 -861 -862 -862 -863 -863 -864 -864 -865 -865 -866 -866 -867 -867 -868 -868 -869 -869 -870 -870 -871 -871 -872 -872 -873 -873 -874 -874 -875 -875 -876 -876 -877 -877 -878 -878 -879 -879 -880 -880 -881 -881 -882 -882 -883 -883 -884 -884 -885 -885 -886 -886 -887 -887 -888 -888 -889 -889 -890 -890 -891 -891 -892 -892 -893 -893 -894 -894 -895 -895 -896 -896 -897 -897 -898 -898 -899 -899 -900 -900 -901 -901 -902 -902 -903 -903 -904 -904 -905 -905 -906 -906 -907 -907 -908 -908 -909 -909 -910 -910 -911 -911 -912 -912 -913 -913 -914 -914 -915 -915 -916 -916 -917 -917 -918 -918 -919 -919 -920 -920 -921 -921 -922 -922 -923 -923 -924 -924 -925 -925 -926 -926 -927 -927 -928 -928 -929 -929 -930 -930 -931 -931 -932 -932 -933 -933 -934 -934 -935 -935 -936 -936 -937 -937 -938 -938 -939 -939 -940 -940 -941 -941 -942 -942 -943 -943 -944 -944 -945 -945 -946 -946 -947 -947 -948 -948 -949 -949 -950 -950 -951 -951 -952 -952 -953 -953 -954 -954 -955 -955 -956 -956 -957 -957 -958 -958 -959 -959 -960 -960 -961 -961 -962 -962 -963 -963 -964 -964 -965 -965 -966 -966 -967 -967 -968 -968 -969 -969 -970 -970 -971 -971 -972 -972 -973 -973 -974 -974 -975 -975 -976 -976 -977 -977 -978 -978 -979 -979 -980 -980 -981 -981 -982 -982 -983 -983 -984 -984 -985 -985 -986 -986 -987 -987 -988 -988 -989 -989 -990 -990 -991 -991 -992 -992 -993 -993 -994 -994 -995 -995 -996 -996 -997 -997 -998 -998 -999 -999 -1000 -1000 -1001 -1001 -1002 -1002 -1003 -1003 -1004 -1004 -1005 -1005 -1006 -1006 -1007 -1007 -1008 -1008 -1009 -1009 -1010 -1010 -1011 -1011 -1012 -1012 -1013 -1013 -1014 -1014 -1015 -1015 -1016 -1016 -1017 -1017 -1018 -1018 -1019 -1019 -1020 -1020 -1021 -1021 -1022 -1022 -1023 -1023 -1024 -1024 -1025 -1025 -1026 -1026 -1027 -1027 -1028 -1028 -1029 -1029 -1030 -1030 -1031 -1031 -1032 -1032 -1033 -1033 -1034 -1034 -1035 -1035 -1036 -1036 -1037 -1037 -1038 -1038 -1039 -1039 -1040 -1040 -1041 -1041 -1042 -1042 -1043 -1043 -1044 -1044 -1045 -1045 -1046 -1046 -1047 -1047 -1048 -1048 -1049 -1049 -1050 -1050 -1051 -1051 -1052 -1052 -1053 -1053 -1054 -1054 -1055 -1055 -1056 -1056 -1057 -1057 -1058 -1058 -1059 -1059 -1060 -1060 -1061 -1061 -1062 -1062 -1063 -1063 -1064 -1064 -1065 -1065 -1066 -1066 -1067 -1067 -1068 -1068 -1069 -1069 -1070 -1070 -1071 -1071 -1072 -1072 -1073 -1073 -1074 -1074 -1075 -1075 -1076 -1076 -1077 -1077 -1078 -1078 -1079 -1079 -1080 -1080 -1081 -1081 -1082 -1082 -1083 -1083 -1084 -1084 -1085 -1085 -1086 -1086 -1087 -1087 -1088 -1088 -1089 -1089 -1090 -1090 -1091 -1091 -1092 -1092 -1093 -1093 -1094 -1094 -1095 -1095 -1096 -1096 -1097 -1097 -1098 -1098 -1099 -1099 -1100 -1100 -1101 -1101 -1102 -1102 -1103 -1103 -1104 -1104 -1105 -1105 -1106 -1106 -1107 -1107 -1108 -1108 -1109 -1109 -1110 -1110 -1111 -1111 -1112 -1112 -1113 -1113 -1114 -1114 -1115 -1115 -1116 -1116 -1117 -1117 -1118 -1118 -1119 -1119 -1120 -1120 -1121 -1121 -1122 -1122 -1123 -1123 -1124 -1124 -1125 -1125 -1126 -1126 -1127 -1127 -1128 -1128 -1129 -1129 -1130 -1130 -1131 -1131 -1132 -1132 -1133 -1133 -1134 -1134 -1135 -1135 -1136 -1136 -1137 -1137 -1138 -1138 -1139 -1139 -1140 -1140 -1141 -1141 -1142 -1142 -1143 -1143 -1144 -1144 -1145 -1145 -1146 -1146 -1147 -1147 -1148 -1148 -1149 -1149 -1150 -1150 -1151 -1151 -1152 -1152 -1153 -1153 -1154 -1154 -1155 -1155 -1156 -1156 -1157 -1157 -1158 -1158 -1159 -1159 -1160 -1160 -1161 -1161 -1162 -1162 -1163 -1163 -1164 -1164 -1165 -1165 -1166 -1166 -1167 -1167 -1168 -1168 -1169 -1169 -1170 -1170 -1171 -1171 -1172 -1172 -1173 -1173 -1174 -1174 -1175 -1175 -1176 -1176 -1177 -1177 -1178 -1178 -1179 -1179 -1180 -1180 -1181 -1181 -1182 -1182 -1183 -1183 -1184 -1184 -1185 -1185 -1186 -1186 -1187 -1187 -1188 -1188 -1189 -1189 -1190 -1190 -1191 -1191 -1192 -1192 -1193 -1193 -1194 -1194 -1195 -1195 -1196 -1196 -1197 -1197 -1198 -1198 -1199 -1199 -1200 -1200 -1201 -1201 -1202 -1202 -1203 -1203 -1204 -1204 -1205 -1205 -1206 -1206 -1207 -1207 -1208 -1208 -1209 -1209 -1210 -1210 -1211 -1211 -1212 -1212 -1213 -1213 -1214 -1214 -1215 -1215 -1216 -1216 -1217 -1217 -1218 -1218 -1219 -1219 -1220 -1220 -1221 -1221 -1222 -1222 -1223 -1223 -1224 -1224 -1225 -1225 -1226 -1226 -1227 -1227 -1228 -1228 -1229 -1229 -1230 -1230 -1231 -1231 -1232 -1232 -1233 -1233 -1234 -1234 -1235 -1235 -1236 -1236 -1237 -1237 -1238 -1238 -1239 -1239 -1240 -1240 -1241 -1241 -1242 -1242 -1243 -1243 -1244 -1244 -1245 -1245 -1246 -1246 -1247 -1247 -1248 -1248 -1249 -1249 -1250 -1250 -1251 -1251 -1252 -1252 -1253 -1253 -1254 -1254 -1255 -1255 -1256 -1256 -1257 -1257 -1258 -1258 -1259 -1259 -1260 -1260 -1261 -1261 -1262 -1262 -1263 -1263 -1264 -1264 -1265 -1265 -1266 -1266 -1267 -1267 -1268 -1268 -1269 -1269 -1270 -1270 -1271 -1271 -1272 -1272 -1273 -1273 -1274 -1274 -1275 -1275 -1276 -1276 -1277 -1277 -1278 -1278 -1279 -1279 -1280 -1280 -1281 -1281 -1282 -1282 -1283 -1283 -1284 -1284 -1285 -1285 -1286 -1286 -1287 -1287 -1288 -1288 -1289 -1289 -1290 -1290 -1291 -1291 -1292 -1292 -1293 -1293 -1294 -1294 -1295 -1295 -1296 -1296 -1297 -1297 -1298 -1298 -1299 -1299 -1300 -1300 -1301 -1301 -1302 -1302 -1303 -1303 -1304 -1304 -1305 -1305 -1306 -1306 -1307 -1307 -1308 -1308 -1309 -1309 -1310 -1310 -1311 -1311 -1312 -1312 -1313 -1313 -1314 -1314 -1315 -1315 -1316 -1316 -1317 -1317 -1318 -1318 -1319 -1319 -1320 -1320 -1321 -1321 -1322 -1322 -1323 -1323 -1324 -1324 -1325 -1325 -1326 -1326 -1327 -1327 -1328 -1328 -1329 -1329 -1330 -1330 -1331 -1331 -1332 -1332 -1333 -1333 -1334 -1334 -1335 -1335 -1336 -1336 -1337 -1337 -1338 -1338 -1339 -1339 -1340 -1340 -1341 -1341 -1342 -1342 -1343 -1343 -1344 -1344 -1345 -1345 -1346 -1346 -1347 -1347 -1348 -1348 -1349 -1349 -1350 -1350 -1351 -1351 -1352 -1352 -1353 -1353 -1354 -1354 -1355 -1355 -1356 -1356 -1357 -1357 -1358 -1358 -1359 -1359 -1360 -1360 -1361 -1361 -1362 -1362 -1363 -1363 -1364 -1364 -1365 -1365 -1366 -1366 -1367 -1367 -1368 -1368 -1369 -1369 -1370 -1370 -1371 -1371 -1372 -1372 -1373 -1373 -1374 -1374 -1375 -1375 -1376 -1376 -1377 -1377 -1378 -1378 -1379 -1379 -1380 -1380 -1381 -1381 -1382 -1382 -1383 -1383 -1384 -1384 -1385 -1385 -1386 -1386 -1387 -1387 -1388 -1388 -1389 -1389 -1390 -1390 -1391 -1391 -1392 -1392 -1393 -1393 -1394 -1394 -1395 -1395 -1396 -1396 -1397 -1397 -1398 -1398 -1399 -1399 -1400 -1400 -1401 -1401 -1402 -1402 -1403 -1403 -1404 -1404 -1405 -1405 -1406 -1406 -1407 -1407 -1408 -1408 -1409 -1409 -1410 -1410 -1411 -1411 -1412 -1412 -1413 -1413 -1414 -1414 -1415 -1415 -1416 -1416 -1417 -1417 -1418 -1418 -1419 -1419 -1420 -1420 -1421 -1421 -1422 -1422 -1423 -1423 -1424 -1424 -1425 -1425 -1426 -1426 -1427 -1427 -1428 -1428 -1429 -1429 -1430 -1430 -1431 -1431 -1432 -1432 -1433 -1433 -1434 -1434 -1435 -1435 -1436 -1436 -1437 -1437 -1438 -1438 -1439 -1439 -1440 -1440 -1441 -1441 -1442 -1442 -1443 -1443 -1444 -1444 -1445 -1445 -1446 -1446 -1447 -1447 -1448 -1448 -1449 -1449 -1450 -1450 -1451 -1451 -1452 -1452 -1453 -1453 -1454 -1454 -1455 -1455 -1456 -1456 -1457 -1457 -1458 -1458 -1459 -1459 -1460 -1460 -1461 -1461 -1462 -1462 -1463 -1463 -1464 -1464 -1465 -1465 -1466 -1466 -1467 -1467 -1468 -1468 -1469 -1469 -1470 -1470 -1471 -1471 -1472 -1472 -1473 -1473 -1474 -1474 -1475 -1475 -1476 -1476 -1477 -1477 -1478 -1478 -1479 -1479 -1480 -1480 -1481 -1481 -1482 -1482 -1483 -1483 -1484 -1484 -1485 -1485 -1486 -1486 -1487 -1487 -1488 -1488 -1489 -1489 -1490 -1490 -1491 -1491 -1492 -1492 -1493 -1493 -1494 -1494 -1495 -1495 -1496 -1496 -1497 -1497 -1498 -1498 -1499 -1499 -1500 -1500 -1501 -1501 -1502 -1502 -1503 -1503 -1504 -1504 -1505 -1505 -1506 -1506 -1507 -1507 -1508 -1508 -1509 -1509 -1510 -1510 -1511 -1511 -1512 -1512 -1513 -1513 -1514 -1514 -1515 -1515 -1516 -1516 -1517 -1517 -1518 -1518 -1519 -1519 -1520 -1520 -1521 -1521 -1522 -1522 -1523 -1523 -1524 -1524 -1525 -1525 -1526 -1526 -1527 -1527 -1528 -1528 -1529 -1529 -1530 -1530 -1531 -1531 -1532 -1532 -1533 -1533 -1534 -1534 -1535 -1535 -1536 -1536 -1537 -1537 -1538 -1538 -1539 -1539 -1540 -1540 -1541 -1541 -1542 -1542 -1543 -1543 -1544 -1544 -1545 -1545 -1546 -1546 -1547 -1547 -1548 -1548 -1549 -1549 -1550 -1550 -1551 -1551 -1552 -1552 -1553 -1553 -1554 -1554 -1555 -1555 -1556 -1556 -1557 -1557 -1558 -1558 -1559 -1559 -1560 -1560 -1561 -1561 -1562 -1562 -1563 -1563 -1564 -1564 -1565 -1565 -1566 -1566 -1567 -1567 -1568 -1568 -1569 -1569 -1570 -1570 -1571 -1571 -1572 -1572 -1573 -1573 -1574 -1574 -1575 -1575 -1576 -1576 -1577 -1577 -1578 -1578 -1579 -1579 -1580 -1580 -1581 -1581 -1582 -1582 -1583 -1583 -1584 -1584 -1585 -1585 -1586 -1586 -1587 -1587 -1588 -1588 -1589 -1589 -1590 -1590 -1591 -1591 -1592 -1592 -1593 -1593 -1594 -1594 -1595 -1595 -1596 -1596 -1597 -1597 -1598 -1598 -1599 -1599 -1600 -1600 -1601 -1601 -1602 -1602 -1603 -1603 -1604 -1604 -1605 -1605 -1606 -1606 -1607 -1607 -1608 -1608 -1609 -1609 -1610 -1610 -1611 -1611 -1612 -1612 -1613 -1613 -1614 -1614 -1615 -1615 -1616 -1616 -1617 -1617 -1618 -1618 -1619 -1619 -1620 -1620 -1621 -1621 -1622 -1622 -1623 -1623 -1624 -1624 -1625 -1625 -1626 -1626 -1627 -1627 -1628 -1628 -1629 -1629 -1630 -1630 -1631 -1631 -1632 -1632 -1633 -1633 -1634 -1634 -1635 -1635 -1636 -1636 -1637 -1637 -1638 -1638 -1639 -1639 -1640 -1640 -1641 -1641 -1642 -1642 -1643 -1643 -1644 -1644 -1645 -1645 -1646 -1646 -1647 -1647 -1648 -1648 -1649 -1649 -1650 -1650 -1651 -1651 -1652 -1652 -1653 -1653 -1654 -1654 -1655 -1655 -1656 -1656 -1657 -1657 -1658 -1658 -1659 -1659 -1660 -1660 -1661 -1661 -1662 -1662 -1663 -1663 -1664 -1664 -1665 -1665 -1666 -1666 -1667 -1667 -1668 -1668 -1669 -1669 -1670 -1670 -1671 -1671 -1672 -1672 -1673 -1673 -1674 -1674 -1675 -1675 -1676 -1676 -1677 -1677 -1678 -1678 -1679 -1679 -1680 -1680 -1681 -1681 -1682 -1682 -1683 -1683 -1684 -1684 -1685 -1685 -1686 -1686 -1687 -1687 -1688 -1688 -1689 -1689 -1690 -1690 -1691 -1691 -1692 -1692 -1693 -1693 -1694 -1694 -1695 -1695 -1696 -1696 -1697 -1697 -1698 -1698 -1699 -1699 -1700 -1700 -1701 -1701 -1702 -1702 -1703 -1703 -1704 -1704 -1705 -1705 -1706 -1706 -1707 -1707 -1708 -1708 -1709 -1709 -1710 -1710 -1711 -1711 -1712 -1712 -1713 -1713 -1714 -1714 -1715 -1715 -1716 -1716 -1717 -1717 -1718 -1718 -1719 -1719 -1720 -1720 -1721 -1721 -1722 -1722 -1723 -1723 -1724 -1724 -1725 -1725 -1726 -1726 -1727 -1727 -1728 -1728 -1729 -1729 -1730 -1730 -1731 -1731 -1732 -1732 -1733 -1733 -1734 -1734 -1735 -1735 -1736 -1736 -1737 -1737 -1738 -1738 -1739 -1739 -1740 -1740 -1741 -1741 -1742 -1742 -1743 -1743 -1744 -1744 -1745 -1745 -1746 -1746 -1747 -1747 -1748 -1748 -1749 -1749 -1750 -1750 -1751 -1751 -1752 -1752 -1753 -1753 -1754 -1754 -1755 -1755 -1756 -1756 -1757 -1757 -1758 -1758 -1759 -1759 -1760 -1760 -1761 -1761 -1762 -1762 -1763 -1763 -1764 -1764 -1765 -1765 -1766 -1766 -1767 -1767 -1768 -1768 -1769 -1769 -1770 -1770 -1771 -1771 -1772 -1772 -1773 -1773 -1774 -1774 -1775 -1775 -1776 -1776 -1777 -1777 -1778 -1778 -1779 -1779 -1780 -1780 -1781 -1781 -1782 -1782 -1783 -1783 -1784 -1784 -1785 -1785 -1786 -1786 -1787 -1787 -1788 -1788 -1789 -1789 -1790 -1790 -1791 -1791 -1792 -1792 -1793 -1793 -1794 -1794 -1795 -1795 -1796 -1796 -1797 -1797 -1798 -1798 -1799 -1799 -1800 -1800 -1801 -1801 -1802 -1802 -1803 -1803 -1804 -1804 -1805 -1805 -1806 -1806 -1807 -1807 -1808 -1808 -1809 -1809 -1810 -1810 -1811 -1811 -1812 -1812 -1813 -1813 -1814 -1814 -1815 -1815 -1816 -1816 -1817 -1817 -1818 -1818 -1819 -1819 -1820 -1820 -1821 -1821 -1822 -1822 -1823 -1823 -1824 -1824 -1825 -1825 -1826 -1826 -1827 -1827 -1828 -1828 -1829 -1829 -1830 -1830 -1831 -1831 -1832 -1832 -1833 -1833 -1834 -1834 -1835 -1835 -1836 -1836 -1837 -1837 -1838 -1838 -1839 -1839 -1840 -1840 -1841 -1841 -1842 -1842 -1843 -1843 -1844 -1844 -1845 -1845 -1846 -1846 -1847 -1847 -1848 -1848 -1849 -1849 -1850 -1850 -1851 -1851 -1852 -1852 -1853 -1853 -1854 -1854 -1855 -1855 -1856 -1856 -1857 -1857 -1858 -1858 -1859 -1859 -1860 -1860 -1861 -1861 -1862 -1862 -1863 -1863 -1864 -1864 -1865 -1865 -1866 -1866 -1867 -1867 -1868 -1868 -1869 -1869 -1870 -1870 -1871 -1871 -1872 -1872 -1873 -1873 -1874 -1874 -1875 -1875 -1876 -1876 -1877 -1877 -1878 -1878 -1879 -1879 -1880 -1880 -) - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/pointZones b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/pointZones deleted file mode 100755 index 8730f1423..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/pointZones +++ /dev/null @@ -1,21 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class regIOobject; - location "constant/polyMesh"; - object pointZones; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -0 -() - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/points b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/points deleted file mode 100755 index dae0fb5e8..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/points +++ /dev/null @@ -1,4024 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class vectorField; - location "constant/polyMesh"; - object points; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -4000 -( -(0 0 0.00050009999) -(0.005050505051 0 0.00050009999) -(0 2.5e-05 0.00050009999) -(0.005050505051 2.5e-05 0.00050009999) -(0 7.08119053e-05 0.00050009999) -(0.005050505051 7.08119053e-05 0.00050009999) -(0 0.00015426567 0.00050009999) -(0.005050505051 0.00015426567 0.00050009999) -(0 0.0003046635713 0.00050009999) -(0.005050505051 0.0003046635713 0.00050009999) -(0 0.0005705243934 0.00050009999) -(0.005050505051 0.0005705243934 0.00050009999) -(0 0.001024837958 0.00050009999) -(0.005050505051 0.001024837958 0.00050009999) -(0 0.001758019915 0.00050009999) -(0.005050505051 0.001758019915 0.00050009999) -(0 0.002838575912 0.00050009999) -(0.005050505051 0.002838575912 0.00050009999) -(0 0.004235474916 0.00050009999) -(0.005050505051 0.004235474916 0.00050009999) -(0 0.005764525084 0.00050009999) -(0.005050505051 0.005764525084 0.00050009999) -(0 0.007161424088 0.00050009999) -(0.005050505051 0.007161424088 0.00050009999) -(0 0.008241980085 0.00050009999) -(0.005050505051 0.008241980085 0.00050009999) -(0 0.008975162042 0.00050009999) -(0.005050505051 0.008975162042 0.00050009999) -(0 0.009429475607 0.00050009999) -(0.005050505051 0.009429475607 0.00050009999) -(0 0.009695336429 0.00050009999) -(0.005050505051 0.009695336429 0.00050009999) -(0 0.00984573433 0.00050009999) -(0.005050505051 0.00984573433 0.00050009999) -(0 0.009929188095 0.00050009999) -(0.005050505051 0.009929188095 0.00050009999) -(0 0.009975 0.00050009999) -(0.005050505051 0.009975 0.00050009999) -(0 0.01 0.00050009999) -(0.005050505051 0.01 0.00050009999) -(0.0101010101 0 0.00050009999) -(0.0101010101 2.5e-05 0.00050009999) -(0.0101010101 7.08119053e-05 0.00050009999) -(0.0101010101 0.00015426567 0.00050009999) -(0.0101010101 0.0003046635713 0.00050009999) -(0.0101010101 0.0005705243934 0.00050009999) -(0.0101010101 0.001024837958 0.00050009999) -(0.0101010101 0.001758019915 0.00050009999) -(0.0101010101 0.002838575912 0.00050009999) -(0.0101010101 0.004235474916 0.00050009999) -(0.0101010101 0.005764525084 0.00050009999) -(0.0101010101 0.007161424088 0.00050009999) -(0.0101010101 0.008241980085 0.00050009999) -(0.0101010101 0.008975162042 0.00050009999) -(0.0101010101 0.009429475607 0.00050009999) -(0.0101010101 0.009695336429 0.00050009999) -(0.0101010101 0.00984573433 0.00050009999) -(0.0101010101 0.009929188095 0.00050009999) -(0.0101010101 0.009975 0.00050009999) -(0.0101010101 0.01 0.00050009999) -(0.01515151515 0 0.00050009999) -(0.01515151515 2.5e-05 0.00050009999) -(0.01515151515 7.08119053e-05 0.00050009999) -(0.01515151515 0.00015426567 0.00050009999) -(0.01515151515 0.0003046635713 0.00050009999) -(0.01515151515 0.0005705243934 0.00050009999) -(0.01515151515 0.001024837958 0.00050009999) -(0.01515151515 0.001758019915 0.00050009999) -(0.01515151515 0.002838575912 0.00050009999) -(0.01515151515 0.004235474916 0.00050009999) -(0.01515151515 0.005764525084 0.00050009999) -(0.01515151515 0.007161424088 0.00050009999) -(0.01515151515 0.008241980085 0.00050009999) -(0.01515151515 0.008975162042 0.00050009999) -(0.01515151515 0.009429475607 0.00050009999) -(0.01515151515 0.009695336429 0.00050009999) -(0.01515151515 0.00984573433 0.00050009999) -(0.01515151515 0.009929188095 0.00050009999) -(0.01515151515 0.009975 0.00050009999) -(0.01515151515 0.01 0.00050009999) -(0.0202020202 0 0.00050009999) -(0.0202020202 2.5e-05 0.00050009999) -(0.0202020202 7.08119053e-05 0.00050009999) -(0.0202020202 0.00015426567 0.00050009999) -(0.0202020202 0.0003046635713 0.00050009999) -(0.0202020202 0.0005705243934 0.00050009999) -(0.0202020202 0.001024837958 0.00050009999) -(0.0202020202 0.001758019915 0.00050009999) -(0.0202020202 0.002838575912 0.00050009999) -(0.0202020202 0.004235474916 0.00050009999) -(0.0202020202 0.005764525084 0.00050009999) -(0.0202020202 0.007161424088 0.00050009999) -(0.0202020202 0.008241980085 0.00050009999) -(0.0202020202 0.008975162042 0.00050009999) -(0.0202020202 0.009429475607 0.00050009999) -(0.0202020202 0.009695336429 0.00050009999) -(0.0202020202 0.00984573433 0.00050009999) -(0.0202020202 0.009929188095 0.00050009999) -(0.0202020202 0.009975 0.00050009999) -(0.0202020202 0.01 0.00050009999) -(0.02525252525 0 0.00050009999) -(0.02525252525 2.5e-05 0.00050009999) -(0.02525252525 7.08119053e-05 0.00050009999) -(0.02525252525 0.00015426567 0.00050009999) -(0.02525252525 0.0003046635713 0.00050009999) -(0.02525252525 0.0005705243934 0.00050009999) -(0.02525252525 0.001024837958 0.00050009999) -(0.02525252525 0.001758019915 0.00050009999) -(0.02525252525 0.002838575912 0.00050009999) -(0.02525252525 0.004235474916 0.00050009999) -(0.02525252525 0.005764525084 0.00050009999) -(0.02525252525 0.007161424088 0.00050009999) -(0.02525252525 0.008241980085 0.00050009999) -(0.02525252525 0.008975162042 0.00050009999) -(0.02525252525 0.009429475607 0.00050009999) -(0.02525252525 0.009695336429 0.00050009999) -(0.02525252525 0.00984573433 0.00050009999) -(0.02525252525 0.009929188095 0.00050009999) -(0.02525252525 0.009975 0.00050009999) -(0.02525252525 0.01 0.00050009999) -(0.0303030303 0 0.00050009999) -(0.0303030303 2.5e-05 0.00050009999) -(0.0303030303 7.08119053e-05 0.00050009999) -(0.0303030303 0.00015426567 0.00050009999) -(0.0303030303 0.0003046635713 0.00050009999) -(0.0303030303 0.0005705243934 0.00050009999) -(0.0303030303 0.001024837958 0.00050009999) -(0.0303030303 0.001758019915 0.00050009999) -(0.0303030303 0.002838575912 0.00050009999) -(0.0303030303 0.004235474916 0.00050009999) -(0.0303030303 0.005764525084 0.00050009999) -(0.0303030303 0.007161424088 0.00050009999) -(0.0303030303 0.008241980085 0.00050009999) -(0.0303030303 0.008975162042 0.00050009999) -(0.0303030303 0.009429475607 0.00050009999) -(0.0303030303 0.009695336429 0.00050009999) -(0.0303030303 0.00984573433 0.00050009999) -(0.0303030303 0.009929188095 0.00050009999) -(0.0303030303 0.009975 0.00050009999) -(0.0303030303 0.01 0.00050009999) -(0.03535353535 0 0.00050009999) -(0.03535353535 2.5e-05 0.00050009999) -(0.03535353535 7.08119053e-05 0.00050009999) -(0.03535353535 0.00015426567 0.00050009999) -(0.03535353535 0.0003046635713 0.00050009999) -(0.03535353535 0.0005705243934 0.00050009999) -(0.03535353535 0.001024837958 0.00050009999) -(0.03535353535 0.001758019915 0.00050009999) -(0.03535353535 0.002838575912 0.00050009999) -(0.03535353535 0.004235474916 0.00050009999) -(0.03535353535 0.005764525084 0.00050009999) -(0.03535353535 0.007161424088 0.00050009999) -(0.03535353535 0.008241980085 0.00050009999) -(0.03535353535 0.008975162042 0.00050009999) -(0.03535353535 0.009429475607 0.00050009999) -(0.03535353535 0.009695336429 0.00050009999) -(0.03535353535 0.00984573433 0.00050009999) -(0.03535353535 0.009929188095 0.00050009999) -(0.03535353535 0.009975 0.00050009999) -(0.03535353535 0.01 0.00050009999) -(0.0404040404 0 0.00050009999) -(0.0404040404 2.5e-05 0.00050009999) -(0.0404040404 7.08119053e-05 0.00050009999) -(0.0404040404 0.00015426567 0.00050009999) -(0.0404040404 0.0003046635713 0.00050009999) -(0.0404040404 0.0005705243934 0.00050009999) -(0.0404040404 0.001024837958 0.00050009999) -(0.0404040404 0.001758019915 0.00050009999) -(0.0404040404 0.002838575912 0.00050009999) -(0.0404040404 0.004235474916 0.00050009999) -(0.0404040404 0.005764525084 0.00050009999) -(0.0404040404 0.007161424088 0.00050009999) -(0.0404040404 0.008241980085 0.00050009999) -(0.0404040404 0.008975162042 0.00050009999) -(0.0404040404 0.009429475607 0.00050009999) -(0.0404040404 0.009695336429 0.00050009999) -(0.0404040404 0.00984573433 0.00050009999) -(0.0404040404 0.009929188095 0.00050009999) -(0.0404040404 0.009975 0.00050009999) -(0.0404040404 0.01 0.00050009999) -(0.04545454545 0 0.00050009999) -(0.04545454545 2.5e-05 0.00050009999) -(0.04545454545 7.08119053e-05 0.00050009999) -(0.04545454545 0.00015426567 0.00050009999) -(0.04545454545 0.0003046635713 0.00050009999) -(0.04545454545 0.0005705243934 0.00050009999) -(0.04545454545 0.001024837958 0.00050009999) -(0.04545454545 0.001758019915 0.00050009999) -(0.04545454545 0.002838575912 0.00050009999) -(0.04545454545 0.004235474916 0.00050009999) -(0.04545454545 0.005764525084 0.00050009999) -(0.04545454545 0.007161424088 0.00050009999) -(0.04545454545 0.008241980085 0.00050009999) -(0.04545454545 0.008975162042 0.00050009999) -(0.04545454545 0.009429475607 0.00050009999) -(0.04545454545 0.009695336429 0.00050009999) -(0.04545454545 0.00984573433 0.00050009999) -(0.04545454545 0.009929188095 0.00050009999) -(0.04545454545 0.009975 0.00050009999) -(0.04545454545 0.01 0.00050009999) -(0.05050505051 0 0.00050009999) -(0.05050505051 2.5e-05 0.00050009999) -(0.05050505051 7.08119053e-05 0.00050009999) -(0.05050505051 0.00015426567 0.00050009999) -(0.05050505051 0.0003046635713 0.00050009999) -(0.05050505051 0.0005705243934 0.00050009999) -(0.05050505051 0.001024837958 0.00050009999) -(0.05050505051 0.001758019915 0.00050009999) -(0.05050505051 0.002838575912 0.00050009999) -(0.05050505051 0.004235474916 0.00050009999) -(0.05050505051 0.005764525084 0.00050009999) -(0.05050505051 0.007161424088 0.00050009999) -(0.05050505051 0.008241980085 0.00050009999) -(0.05050505051 0.008975162042 0.00050009999) -(0.05050505051 0.009429475607 0.00050009999) -(0.05050505051 0.009695336429 0.00050009999) -(0.05050505051 0.00984573433 0.00050009999) -(0.05050505051 0.009929188095 0.00050009999) -(0.05050505051 0.009975 0.00050009999) -(0.05050505051 0.01 0.00050009999) -(0.05555555556 0 0.00050009999) -(0.05555555556 2.5e-05 0.00050009999) -(0.05555555556 7.08119053e-05 0.00050009999) -(0.05555555556 0.00015426567 0.00050009999) -(0.05555555556 0.0003046635713 0.00050009999) -(0.05555555556 0.0005705243934 0.00050009999) -(0.05555555556 0.001024837958 0.00050009999) -(0.05555555556 0.001758019915 0.00050009999) -(0.05555555556 0.002838575912 0.00050009999) -(0.05555555556 0.004235474916 0.00050009999) -(0.05555555556 0.005764525084 0.00050009999) -(0.05555555556 0.007161424088 0.00050009999) -(0.05555555556 0.008241980085 0.00050009999) -(0.05555555556 0.008975162042 0.00050009999) -(0.05555555556 0.009429475607 0.00050009999) -(0.05555555556 0.009695336429 0.00050009999) -(0.05555555556 0.00984573433 0.00050009999) -(0.05555555556 0.009929188095 0.00050009999) -(0.05555555556 0.009975 0.00050009999) -(0.05555555556 0.01 0.00050009999) -(0.06060606061 0 0.00050009999) -(0.06060606061 2.5e-05 0.00050009999) -(0.06060606061 7.08119053e-05 0.00050009999) -(0.06060606061 0.00015426567 0.00050009999) -(0.06060606061 0.0003046635713 0.00050009999) -(0.06060606061 0.0005705243934 0.00050009999) -(0.06060606061 0.001024837958 0.00050009999) -(0.06060606061 0.001758019915 0.00050009999) -(0.06060606061 0.002838575912 0.00050009999) -(0.06060606061 0.004235474916 0.00050009999) -(0.06060606061 0.005764525084 0.00050009999) -(0.06060606061 0.007161424088 0.00050009999) -(0.06060606061 0.008241980085 0.00050009999) -(0.06060606061 0.008975162042 0.00050009999) -(0.06060606061 0.009429475607 0.00050009999) -(0.06060606061 0.009695336429 0.00050009999) -(0.06060606061 0.00984573433 0.00050009999) -(0.06060606061 0.009929188095 0.00050009999) -(0.06060606061 0.009975 0.00050009999) -(0.06060606061 0.01 0.00050009999) -(0.06565656566 0 0.00050009999) -(0.06565656566 2.5e-05 0.00050009999) -(0.06565656566 7.08119053e-05 0.00050009999) -(0.06565656566 0.00015426567 0.00050009999) -(0.06565656566 0.0003046635713 0.00050009999) -(0.06565656566 0.0005705243934 0.00050009999) -(0.06565656566 0.001024837958 0.00050009999) -(0.06565656566 0.001758019915 0.00050009999) -(0.06565656566 0.002838575912 0.00050009999) -(0.06565656566 0.004235474916 0.00050009999) -(0.06565656566 0.005764525084 0.00050009999) -(0.06565656566 0.007161424088 0.00050009999) -(0.06565656566 0.008241980085 0.00050009999) -(0.06565656566 0.008975162042 0.00050009999) -(0.06565656566 0.009429475607 0.00050009999) -(0.06565656566 0.009695336429 0.00050009999) -(0.06565656566 0.00984573433 0.00050009999) -(0.06565656566 0.009929188095 0.00050009999) -(0.06565656566 0.009975 0.00050009999) -(0.06565656566 0.01 0.00050009999) -(0.07070707071 0 0.00050009999) -(0.07070707071 2.5e-05 0.00050009999) -(0.07070707071 7.08119053e-05 0.00050009999) -(0.07070707071 0.00015426567 0.00050009999) -(0.07070707071 0.0003046635713 0.00050009999) -(0.07070707071 0.0005705243934 0.00050009999) -(0.07070707071 0.001024837958 0.00050009999) -(0.07070707071 0.001758019915 0.00050009999) -(0.07070707071 0.002838575912 0.00050009999) -(0.07070707071 0.004235474916 0.00050009999) -(0.07070707071 0.005764525084 0.00050009999) -(0.07070707071 0.007161424088 0.00050009999) -(0.07070707071 0.008241980085 0.00050009999) -(0.07070707071 0.008975162042 0.00050009999) -(0.07070707071 0.009429475607 0.00050009999) -(0.07070707071 0.009695336429 0.00050009999) -(0.07070707071 0.00984573433 0.00050009999) -(0.07070707071 0.009929188095 0.00050009999) -(0.07070707071 0.009975 0.00050009999) -(0.07070707071 0.01 0.00050009999) -(0.07575757576 0 0.00050009999) -(0.07575757576 2.5e-05 0.00050009999) -(0.07575757576 7.08119053e-05 0.00050009999) -(0.07575757576 0.00015426567 0.00050009999) -(0.07575757576 0.0003046635713 0.00050009999) -(0.07575757576 0.0005705243934 0.00050009999) -(0.07575757576 0.001024837958 0.00050009999) -(0.07575757576 0.001758019915 0.00050009999) -(0.07575757576 0.002838575912 0.00050009999) -(0.07575757576 0.004235474916 0.00050009999) -(0.07575757576 0.005764525084 0.00050009999) -(0.07575757576 0.007161424088 0.00050009999) -(0.07575757576 0.008241980085 0.00050009999) -(0.07575757576 0.008975162042 0.00050009999) -(0.07575757576 0.009429475607 0.00050009999) -(0.07575757576 0.009695336429 0.00050009999) -(0.07575757576 0.00984573433 0.00050009999) -(0.07575757576 0.009929188095 0.00050009999) -(0.07575757576 0.009975 0.00050009999) -(0.07575757576 0.01 0.00050009999) -(0.08080808081 0 0.00050009999) -(0.08080808081 2.5e-05 0.00050009999) -(0.08080808081 7.08119053e-05 0.00050009999) -(0.08080808081 0.00015426567 0.00050009999) -(0.08080808081 0.0003046635713 0.00050009999) -(0.08080808081 0.0005705243934 0.00050009999) -(0.08080808081 0.001024837958 0.00050009999) -(0.08080808081 0.001758019915 0.00050009999) -(0.08080808081 0.002838575912 0.00050009999) -(0.08080808081 0.004235474916 0.00050009999) -(0.08080808081 0.005764525084 0.00050009999) -(0.08080808081 0.007161424088 0.00050009999) -(0.08080808081 0.008241980085 0.00050009999) -(0.08080808081 0.008975162042 0.00050009999) -(0.08080808081 0.009429475607 0.00050009999) -(0.08080808081 0.009695336429 0.00050009999) -(0.08080808081 0.00984573433 0.00050009999) -(0.08080808081 0.009929188095 0.00050009999) -(0.08080808081 0.009975 0.00050009999) -(0.08080808081 0.01 0.00050009999) -(0.08585858586 0 0.00050009999) -(0.08585858586 2.5e-05 0.00050009999) -(0.08585858586 7.08119053e-05 0.00050009999) -(0.08585858586 0.00015426567 0.00050009999) -(0.08585858586 0.0003046635713 0.00050009999) -(0.08585858586 0.0005705243934 0.00050009999) -(0.08585858586 0.001024837958 0.00050009999) -(0.08585858586 0.001758019915 0.00050009999) -(0.08585858586 0.002838575912 0.00050009999) -(0.08585858586 0.004235474916 0.00050009999) -(0.08585858586 0.005764525084 0.00050009999) -(0.08585858586 0.007161424088 0.00050009999) -(0.08585858586 0.008241980085 0.00050009999) -(0.08585858586 0.008975162042 0.00050009999) -(0.08585858586 0.009429475607 0.00050009999) -(0.08585858586 0.009695336429 0.00050009999) -(0.08585858586 0.00984573433 0.00050009999) -(0.08585858586 0.009929188095 0.00050009999) -(0.08585858586 0.009975 0.00050009999) -(0.08585858586 0.01 0.00050009999) -(0.09090909091 0 0.00050009999) -(0.09090909091 2.5e-05 0.00050009999) -(0.09090909091 7.08119053e-05 0.00050009999) -(0.09090909091 0.00015426567 0.00050009999) -(0.09090909091 0.0003046635713 0.00050009999) -(0.09090909091 0.0005705243934 0.00050009999) -(0.09090909091 0.001024837958 0.00050009999) -(0.09090909091 0.001758019915 0.00050009999) -(0.09090909091 0.002838575912 0.00050009999) -(0.09090909091 0.004235474916 0.00050009999) -(0.09090909091 0.005764525084 0.00050009999) -(0.09090909091 0.007161424088 0.00050009999) -(0.09090909091 0.008241980085 0.00050009999) -(0.09090909091 0.008975162042 0.00050009999) -(0.09090909091 0.009429475607 0.00050009999) -(0.09090909091 0.009695336429 0.00050009999) -(0.09090909091 0.00984573433 0.00050009999) -(0.09090909091 0.009929188095 0.00050009999) -(0.09090909091 0.009975 0.00050009999) -(0.09090909091 0.01 0.00050009999) -(0.09595959596 0 0.00050009999) -(0.09595959596 2.5e-05 0.00050009999) -(0.09595959596 7.08119053e-05 0.00050009999) -(0.09595959596 0.00015426567 0.00050009999) -(0.09595959596 0.0003046635713 0.00050009999) -(0.09595959596 0.0005705243934 0.00050009999) -(0.09595959596 0.001024837958 0.00050009999) -(0.09595959596 0.001758019915 0.00050009999) -(0.09595959596 0.002838575912 0.00050009999) -(0.09595959596 0.004235474916 0.00050009999) -(0.09595959596 0.005764525084 0.00050009999) -(0.09595959596 0.007161424088 0.00050009999) -(0.09595959596 0.008241980085 0.00050009999) -(0.09595959596 0.008975162042 0.00050009999) -(0.09595959596 0.009429475607 0.00050009999) -(0.09595959596 0.009695336429 0.00050009999) -(0.09595959596 0.00984573433 0.00050009999) -(0.09595959596 0.009929188095 0.00050009999) -(0.09595959596 0.009975 0.00050009999) -(0.09595959596 0.01 0.00050009999) -(0.101010101 0 0.00050009999) -(0.101010101 2.5e-05 0.00050009999) -(0.101010101 7.08119053e-05 0.00050009999) -(0.101010101 0.00015426567 0.00050009999) -(0.101010101 0.0003046635713 0.00050009999) -(0.101010101 0.0005705243934 0.00050009999) -(0.101010101 0.001024837958 0.00050009999) -(0.101010101 0.001758019915 0.00050009999) -(0.101010101 0.002838575912 0.00050009999) -(0.101010101 0.004235474916 0.00050009999) -(0.101010101 0.005764525084 0.00050009999) -(0.101010101 0.007161424088 0.00050009999) -(0.101010101 0.008241980085 0.00050009999) -(0.101010101 0.008975162042 0.00050009999) -(0.101010101 0.009429475607 0.00050009999) -(0.101010101 0.009695336429 0.00050009999) -(0.101010101 0.00984573433 0.00050009999) -(0.101010101 0.009929188095 0.00050009999) -(0.101010101 0.009975 0.00050009999) -(0.101010101 0.01 0.00050009999) -(0.1060606061 0 0.00050009999) -(0.1060606061 2.5e-05 0.00050009999) -(0.1060606061 7.08119053e-05 0.00050009999) -(0.1060606061 0.00015426567 0.00050009999) -(0.1060606061 0.0003046635713 0.00050009999) -(0.1060606061 0.0005705243934 0.00050009999) -(0.1060606061 0.001024837958 0.00050009999) -(0.1060606061 0.001758019915 0.00050009999) -(0.1060606061 0.002838575912 0.00050009999) -(0.1060606061 0.004235474916 0.00050009999) -(0.1060606061 0.005764525084 0.00050009999) -(0.1060606061 0.007161424088 0.00050009999) -(0.1060606061 0.008241980085 0.00050009999) -(0.1060606061 0.008975162042 0.00050009999) -(0.1060606061 0.009429475607 0.00050009999) -(0.1060606061 0.009695336429 0.00050009999) -(0.1060606061 0.00984573433 0.00050009999) -(0.1060606061 0.009929188095 0.00050009999) -(0.1060606061 0.009975 0.00050009999) -(0.1060606061 0.01 0.00050009999) -(0.1111111111 0 0.00050009999) -(0.1111111111 2.5e-05 0.00050009999) -(0.1111111111 7.08119053e-05 0.00050009999) -(0.1111111111 0.00015426567 0.00050009999) -(0.1111111111 0.0003046635713 0.00050009999) -(0.1111111111 0.0005705243934 0.00050009999) -(0.1111111111 0.001024837958 0.00050009999) -(0.1111111111 0.001758019915 0.00050009999) -(0.1111111111 0.002838575912 0.00050009999) -(0.1111111111 0.004235474916 0.00050009999) -(0.1111111111 0.005764525084 0.00050009999) -(0.1111111111 0.007161424088 0.00050009999) -(0.1111111111 0.008241980085 0.00050009999) -(0.1111111111 0.008975162042 0.00050009999) -(0.1111111111 0.009429475607 0.00050009999) -(0.1111111111 0.009695336429 0.00050009999) -(0.1111111111 0.00984573433 0.00050009999) -(0.1111111111 0.009929188095 0.00050009999) -(0.1111111111 0.009975 0.00050009999) -(0.1111111111 0.01 0.00050009999) -(0.1161616162 0 0.00050009999) -(0.1161616162 2.5e-05 0.00050009999) -(0.1161616162 7.08119053e-05 0.00050009999) -(0.1161616162 0.00015426567 0.00050009999) -(0.1161616162 0.0003046635713 0.00050009999) -(0.1161616162 0.0005705243934 0.00050009999) -(0.1161616162 0.001024837958 0.00050009999) -(0.1161616162 0.001758019915 0.00050009999) -(0.1161616162 0.002838575912 0.00050009999) -(0.1161616162 0.004235474916 0.00050009999) -(0.1161616162 0.005764525084 0.00050009999) -(0.1161616162 0.007161424088 0.00050009999) -(0.1161616162 0.008241980085 0.00050009999) -(0.1161616162 0.008975162042 0.00050009999) -(0.1161616162 0.009429475607 0.00050009999) -(0.1161616162 0.009695336429 0.00050009999) -(0.1161616162 0.00984573433 0.00050009999) -(0.1161616162 0.009929188095 0.00050009999) -(0.1161616162 0.009975 0.00050009999) -(0.1161616162 0.01 0.00050009999) -(0.1212121212 0 0.00050009999) -(0.1212121212 2.5e-05 0.00050009999) -(0.1212121212 7.08119053e-05 0.00050009999) -(0.1212121212 0.00015426567 0.00050009999) -(0.1212121212 0.0003046635713 0.00050009999) -(0.1212121212 0.0005705243934 0.00050009999) -(0.1212121212 0.001024837958 0.00050009999) -(0.1212121212 0.001758019915 0.00050009999) -(0.1212121212 0.002838575912 0.00050009999) -(0.1212121212 0.004235474916 0.00050009999) -(0.1212121212 0.005764525084 0.00050009999) -(0.1212121212 0.007161424088 0.00050009999) -(0.1212121212 0.008241980085 0.00050009999) -(0.1212121212 0.008975162042 0.00050009999) -(0.1212121212 0.009429475607 0.00050009999) -(0.1212121212 0.009695336429 0.00050009999) -(0.1212121212 0.00984573433 0.00050009999) -(0.1212121212 0.009929188095 0.00050009999) -(0.1212121212 0.009975 0.00050009999) -(0.1212121212 0.01 0.00050009999) -(0.1262626263 0 0.00050009999) -(0.1262626263 2.5e-05 0.00050009999) -(0.1262626263 7.08119053e-05 0.00050009999) -(0.1262626263 0.00015426567 0.00050009999) -(0.1262626263 0.0003046635713 0.00050009999) -(0.1262626263 0.0005705243934 0.00050009999) -(0.1262626263 0.001024837958 0.00050009999) -(0.1262626263 0.001758019915 0.00050009999) -(0.1262626263 0.002838575912 0.00050009999) -(0.1262626263 0.004235474916 0.00050009999) -(0.1262626263 0.005764525084 0.00050009999) -(0.1262626263 0.007161424088 0.00050009999) -(0.1262626263 0.008241980085 0.00050009999) -(0.1262626263 0.008975162042 0.00050009999) -(0.1262626263 0.009429475607 0.00050009999) -(0.1262626263 0.009695336429 0.00050009999) -(0.1262626263 0.00984573433 0.00050009999) -(0.1262626263 0.009929188095 0.00050009999) -(0.1262626263 0.009975 0.00050009999) -(0.1262626263 0.01 0.00050009999) -(0.1313131313 0 0.00050009999) -(0.1313131313 2.5e-05 0.00050009999) -(0.1313131313 7.08119053e-05 0.00050009999) -(0.1313131313 0.00015426567 0.00050009999) -(0.1313131313 0.0003046635713 0.00050009999) -(0.1313131313 0.0005705243934 0.00050009999) -(0.1313131313 0.001024837958 0.00050009999) -(0.1313131313 0.001758019915 0.00050009999) -(0.1313131313 0.002838575912 0.00050009999) -(0.1313131313 0.004235474916 0.00050009999) -(0.1313131313 0.005764525084 0.00050009999) -(0.1313131313 0.007161424088 0.00050009999) -(0.1313131313 0.008241980085 0.00050009999) -(0.1313131313 0.008975162042 0.00050009999) -(0.1313131313 0.009429475607 0.00050009999) -(0.1313131313 0.009695336429 0.00050009999) -(0.1313131313 0.00984573433 0.00050009999) -(0.1313131313 0.009929188095 0.00050009999) -(0.1313131313 0.009975 0.00050009999) -(0.1313131313 0.01 0.00050009999) -(0.1363636364 0 0.00050009999) -(0.1363636364 2.5e-05 0.00050009999) -(0.1363636364 7.08119053e-05 0.00050009999) -(0.1363636364 0.00015426567 0.00050009999) -(0.1363636364 0.0003046635713 0.00050009999) -(0.1363636364 0.0005705243934 0.00050009999) -(0.1363636364 0.001024837958 0.00050009999) -(0.1363636364 0.001758019915 0.00050009999) -(0.1363636364 0.002838575912 0.00050009999) -(0.1363636364 0.004235474916 0.00050009999) -(0.1363636364 0.005764525084 0.00050009999) -(0.1363636364 0.007161424088 0.00050009999) -(0.1363636364 0.008241980085 0.00050009999) -(0.1363636364 0.008975162042 0.00050009999) -(0.1363636364 0.009429475607 0.00050009999) -(0.1363636364 0.009695336429 0.00050009999) -(0.1363636364 0.00984573433 0.00050009999) -(0.1363636364 0.009929188095 0.00050009999) -(0.1363636364 0.009975 0.00050009999) -(0.1363636364 0.01 0.00050009999) -(0.1414141414 0 0.00050009999) -(0.1414141414 2.5e-05 0.00050009999) -(0.1414141414 7.08119053e-05 0.00050009999) -(0.1414141414 0.00015426567 0.00050009999) -(0.1414141414 0.0003046635713 0.00050009999) -(0.1414141414 0.0005705243934 0.00050009999) -(0.1414141414 0.001024837958 0.00050009999) -(0.1414141414 0.001758019915 0.00050009999) -(0.1414141414 0.002838575912 0.00050009999) -(0.1414141414 0.004235474916 0.00050009999) -(0.1414141414 0.005764525084 0.00050009999) -(0.1414141414 0.007161424088 0.00050009999) -(0.1414141414 0.008241980085 0.00050009999) -(0.1414141414 0.008975162042 0.00050009999) -(0.1414141414 0.009429475607 0.00050009999) -(0.1414141414 0.009695336429 0.00050009999) -(0.1414141414 0.00984573433 0.00050009999) -(0.1414141414 0.009929188095 0.00050009999) -(0.1414141414 0.009975 0.00050009999) -(0.1414141414 0.01 0.00050009999) -(0.1464646465 0 0.00050009999) -(0.1464646465 2.5e-05 0.00050009999) -(0.1464646465 7.08119053e-05 0.00050009999) -(0.1464646465 0.00015426567 0.00050009999) -(0.1464646465 0.0003046635713 0.00050009999) -(0.1464646465 0.0005705243934 0.00050009999) -(0.1464646465 0.001024837958 0.00050009999) -(0.1464646465 0.001758019915 0.00050009999) -(0.1464646465 0.002838575912 0.00050009999) -(0.1464646465 0.004235474916 0.00050009999) -(0.1464646465 0.005764525084 0.00050009999) -(0.1464646465 0.007161424088 0.00050009999) -(0.1464646465 0.008241980085 0.00050009999) -(0.1464646465 0.008975162042 0.00050009999) -(0.1464646465 0.009429475607 0.00050009999) -(0.1464646465 0.009695336429 0.00050009999) -(0.1464646465 0.00984573433 0.00050009999) -(0.1464646465 0.009929188095 0.00050009999) -(0.1464646465 0.009975 0.00050009999) -(0.1464646465 0.01 0.00050009999) -(0.1515151515 0 0.00050009999) -(0.1515151515 2.5e-05 0.00050009999) -(0.1515151515 7.08119053e-05 0.00050009999) -(0.1515151515 0.00015426567 0.00050009999) -(0.1515151515 0.0003046635713 0.00050009999) -(0.1515151515 0.0005705243934 0.00050009999) -(0.1515151515 0.001024837958 0.00050009999) -(0.1515151515 0.001758019915 0.00050009999) -(0.1515151515 0.002838575912 0.00050009999) -(0.1515151515 0.004235474916 0.00050009999) -(0.1515151515 0.005764525084 0.00050009999) -(0.1515151515 0.007161424088 0.00050009999) -(0.1515151515 0.008241980085 0.00050009999) -(0.1515151515 0.008975162042 0.00050009999) -(0.1515151515 0.009429475607 0.00050009999) -(0.1515151515 0.009695336429 0.00050009999) -(0.1515151515 0.00984573433 0.00050009999) -(0.1515151515 0.009929188095 0.00050009999) -(0.1515151515 0.009975 0.00050009999) -(0.1515151515 0.01 0.00050009999) -(0.1565656566 0 0.00050009999) -(0.1565656566 2.5e-05 0.00050009999) -(0.1565656566 7.08119053e-05 0.00050009999) -(0.1565656566 0.00015426567 0.00050009999) -(0.1565656566 0.0003046635713 0.00050009999) -(0.1565656566 0.0005705243934 0.00050009999) -(0.1565656566 0.001024837958 0.00050009999) -(0.1565656566 0.001758019915 0.00050009999) -(0.1565656566 0.002838575912 0.00050009999) -(0.1565656566 0.004235474916 0.00050009999) -(0.1565656566 0.005764525084 0.00050009999) -(0.1565656566 0.007161424088 0.00050009999) -(0.1565656566 0.008241980085 0.00050009999) -(0.1565656566 0.008975162042 0.00050009999) -(0.1565656566 0.009429475607 0.00050009999) -(0.1565656566 0.009695336429 0.00050009999) -(0.1565656566 0.00984573433 0.00050009999) -(0.1565656566 0.009929188095 0.00050009999) -(0.1565656566 0.009975 0.00050009999) -(0.1565656566 0.01 0.00050009999) -(0.1616161616 0 0.00050009999) -(0.1616161616 2.5e-05 0.00050009999) -(0.1616161616 7.08119053e-05 0.00050009999) -(0.1616161616 0.00015426567 0.00050009999) -(0.1616161616 0.0003046635713 0.00050009999) -(0.1616161616 0.0005705243934 0.00050009999) -(0.1616161616 0.001024837958 0.00050009999) -(0.1616161616 0.001758019915 0.00050009999) -(0.1616161616 0.002838575912 0.00050009999) -(0.1616161616 0.004235474916 0.00050009999) -(0.1616161616 0.005764525084 0.00050009999) -(0.1616161616 0.007161424088 0.00050009999) -(0.1616161616 0.008241980085 0.00050009999) -(0.1616161616 0.008975162042 0.00050009999) -(0.1616161616 0.009429475607 0.00050009999) -(0.1616161616 0.009695336429 0.00050009999) -(0.1616161616 0.00984573433 0.00050009999) -(0.1616161616 0.009929188095 0.00050009999) -(0.1616161616 0.009975 0.00050009999) -(0.1616161616 0.01 0.00050009999) -(0.1666666667 0 0.00050009999) -(0.1666666667 2.5e-05 0.00050009999) -(0.1666666667 7.08119053e-05 0.00050009999) -(0.1666666667 0.00015426567 0.00050009999) -(0.1666666667 0.0003046635713 0.00050009999) -(0.1666666667 0.0005705243934 0.00050009999) -(0.1666666667 0.001024837958 0.00050009999) -(0.1666666667 0.001758019915 0.00050009999) -(0.1666666667 0.002838575912 0.00050009999) -(0.1666666667 0.004235474916 0.00050009999) -(0.1666666667 0.005764525084 0.00050009999) -(0.1666666667 0.007161424088 0.00050009999) -(0.1666666667 0.008241980085 0.00050009999) -(0.1666666667 0.008975162042 0.00050009999) -(0.1666666667 0.009429475607 0.00050009999) -(0.1666666667 0.009695336429 0.00050009999) -(0.1666666667 0.00984573433 0.00050009999) -(0.1666666667 0.009929188095 0.00050009999) -(0.1666666667 0.009975 0.00050009999) -(0.1666666667 0.01 0.00050009999) -(0.1717171717 0 0.00050009999) -(0.1717171717 2.5e-05 0.00050009999) -(0.1717171717 7.08119053e-05 0.00050009999) -(0.1717171717 0.00015426567 0.00050009999) -(0.1717171717 0.0003046635713 0.00050009999) -(0.1717171717 0.0005705243934 0.00050009999) -(0.1717171717 0.001024837958 0.00050009999) -(0.1717171717 0.001758019915 0.00050009999) -(0.1717171717 0.002838575912 0.00050009999) -(0.1717171717 0.004235474916 0.00050009999) -(0.1717171717 0.005764525084 0.00050009999) -(0.1717171717 0.007161424088 0.00050009999) -(0.1717171717 0.008241980085 0.00050009999) -(0.1717171717 0.008975162042 0.00050009999) -(0.1717171717 0.009429475607 0.00050009999) -(0.1717171717 0.009695336429 0.00050009999) -(0.1717171717 0.00984573433 0.00050009999) -(0.1717171717 0.009929188095 0.00050009999) -(0.1717171717 0.009975 0.00050009999) -(0.1717171717 0.01 0.00050009999) -(0.1767676768 0 0.00050009999) -(0.1767676768 2.5e-05 0.00050009999) -(0.1767676768 7.08119053e-05 0.00050009999) -(0.1767676768 0.00015426567 0.00050009999) -(0.1767676768 0.0003046635713 0.00050009999) -(0.1767676768 0.0005705243934 0.00050009999) -(0.1767676768 0.001024837958 0.00050009999) -(0.1767676768 0.001758019915 0.00050009999) -(0.1767676768 0.002838575912 0.00050009999) -(0.1767676768 0.004235474916 0.00050009999) -(0.1767676768 0.005764525084 0.00050009999) -(0.1767676768 0.007161424088 0.00050009999) -(0.1767676768 0.008241980085 0.00050009999) -(0.1767676768 0.008975162042 0.00050009999) -(0.1767676768 0.009429475607 0.00050009999) -(0.1767676768 0.009695336429 0.00050009999) -(0.1767676768 0.00984573433 0.00050009999) -(0.1767676768 0.009929188095 0.00050009999) -(0.1767676768 0.009975 0.00050009999) -(0.1767676768 0.01 0.00050009999) -(0.1818181818 0 0.00050009999) -(0.1818181818 2.5e-05 0.00050009999) -(0.1818181818 7.08119053e-05 0.00050009999) -(0.1818181818 0.00015426567 0.00050009999) -(0.1818181818 0.0003046635713 0.00050009999) -(0.1818181818 0.0005705243934 0.00050009999) -(0.1818181818 0.001024837958 0.00050009999) -(0.1818181818 0.001758019915 0.00050009999) -(0.1818181818 0.002838575912 0.00050009999) -(0.1818181818 0.004235474916 0.00050009999) -(0.1818181818 0.005764525084 0.00050009999) -(0.1818181818 0.007161424088 0.00050009999) -(0.1818181818 0.008241980085 0.00050009999) -(0.1818181818 0.008975162042 0.00050009999) -(0.1818181818 0.009429475607 0.00050009999) -(0.1818181818 0.009695336429 0.00050009999) -(0.1818181818 0.00984573433 0.00050009999) -(0.1818181818 0.009929188095 0.00050009999) -(0.1818181818 0.009975 0.00050009999) -(0.1818181818 0.01 0.00050009999) -(0.1868686869 0 0.00050009999) -(0.1868686869 2.5e-05 0.00050009999) -(0.1868686869 7.08119053e-05 0.00050009999) -(0.1868686869 0.00015426567 0.00050009999) -(0.1868686869 0.0003046635713 0.00050009999) -(0.1868686869 0.0005705243934 0.00050009999) -(0.1868686869 0.001024837958 0.00050009999) -(0.1868686869 0.001758019915 0.00050009999) -(0.1868686869 0.002838575912 0.00050009999) -(0.1868686869 0.004235474916 0.00050009999) -(0.1868686869 0.005764525084 0.00050009999) -(0.1868686869 0.007161424088 0.00050009999) -(0.1868686869 0.008241980085 0.00050009999) -(0.1868686869 0.008975162042 0.00050009999) -(0.1868686869 0.009429475607 0.00050009999) -(0.1868686869 0.009695336429 0.00050009999) -(0.1868686869 0.00984573433 0.00050009999) -(0.1868686869 0.009929188095 0.00050009999) -(0.1868686869 0.009975 0.00050009999) -(0.1868686869 0.01 0.00050009999) -(0.1919191919 0 0.00050009999) -(0.1919191919 2.5e-05 0.00050009999) -(0.1919191919 7.08119053e-05 0.00050009999) -(0.1919191919 0.00015426567 0.00050009999) -(0.1919191919 0.0003046635713 0.00050009999) -(0.1919191919 0.0005705243934 0.00050009999) -(0.1919191919 0.001024837958 0.00050009999) -(0.1919191919 0.001758019915 0.00050009999) -(0.1919191919 0.002838575912 0.00050009999) -(0.1919191919 0.004235474916 0.00050009999) -(0.1919191919 0.005764525084 0.00050009999) -(0.1919191919 0.007161424088 0.00050009999) -(0.1919191919 0.008241980085 0.00050009999) -(0.1919191919 0.008975162042 0.00050009999) -(0.1919191919 0.009429475607 0.00050009999) -(0.1919191919 0.009695336429 0.00050009999) -(0.1919191919 0.00984573433 0.00050009999) -(0.1919191919 0.009929188095 0.00050009999) -(0.1919191919 0.009975 0.00050009999) -(0.1919191919 0.01 0.00050009999) -(0.196969697 0 0.00050009999) -(0.196969697 2.5e-05 0.00050009999) -(0.196969697 7.08119053e-05 0.00050009999) -(0.196969697 0.00015426567 0.00050009999) -(0.196969697 0.0003046635713 0.00050009999) -(0.196969697 0.0005705243934 0.00050009999) -(0.196969697 0.001024837958 0.00050009999) -(0.196969697 0.001758019915 0.00050009999) -(0.196969697 0.002838575912 0.00050009999) -(0.196969697 0.004235474916 0.00050009999) -(0.196969697 0.005764525084 0.00050009999) -(0.196969697 0.007161424088 0.00050009999) -(0.196969697 0.008241980085 0.00050009999) -(0.196969697 0.008975162042 0.00050009999) -(0.196969697 0.009429475607 0.00050009999) -(0.196969697 0.009695336429 0.00050009999) -(0.196969697 0.00984573433 0.00050009999) -(0.196969697 0.009929188095 0.00050009999) -(0.196969697 0.009975 0.00050009999) -(0.196969697 0.01 0.00050009999) -(0.202020202 0 0.00050009999) -(0.202020202 2.5e-05 0.00050009999) -(0.202020202 7.08119053e-05 0.00050009999) -(0.202020202 0.00015426567 0.00050009999) -(0.202020202 0.0003046635713 0.00050009999) -(0.202020202 0.0005705243934 0.00050009999) -(0.202020202 0.001024837958 0.00050009999) -(0.202020202 0.001758019915 0.00050009999) -(0.202020202 0.002838575912 0.00050009999) -(0.202020202 0.004235474916 0.00050009999) -(0.202020202 0.005764525084 0.00050009999) -(0.202020202 0.007161424088 0.00050009999) -(0.202020202 0.008241980085 0.00050009999) -(0.202020202 0.008975162042 0.00050009999) -(0.202020202 0.009429475607 0.00050009999) -(0.202020202 0.009695336429 0.00050009999) -(0.202020202 0.00984573433 0.00050009999) -(0.202020202 0.009929188095 0.00050009999) -(0.202020202 0.009975 0.00050009999) -(0.202020202 0.01 0.00050009999) -(0.2070707071 0 0.00050009999) -(0.2070707071 2.5e-05 0.00050009999) -(0.2070707071 7.08119053e-05 0.00050009999) -(0.2070707071 0.00015426567 0.00050009999) -(0.2070707071 0.0003046635713 0.00050009999) -(0.2070707071 0.0005705243934 0.00050009999) -(0.2070707071 0.001024837958 0.00050009999) -(0.2070707071 0.001758019915 0.00050009999) -(0.2070707071 0.002838575912 0.00050009999) -(0.2070707071 0.004235474916 0.00050009999) -(0.2070707071 0.005764525084 0.00050009999) -(0.2070707071 0.007161424088 0.00050009999) -(0.2070707071 0.008241980085 0.00050009999) -(0.2070707071 0.008975162042 0.00050009999) -(0.2070707071 0.009429475607 0.00050009999) -(0.2070707071 0.009695336429 0.00050009999) -(0.2070707071 0.00984573433 0.00050009999) -(0.2070707071 0.009929188095 0.00050009999) -(0.2070707071 0.009975 0.00050009999) -(0.2070707071 0.01 0.00050009999) -(0.2121212121 0 0.00050009999) -(0.2121212121 2.5e-05 0.00050009999) -(0.2121212121 7.08119053e-05 0.00050009999) -(0.2121212121 0.00015426567 0.00050009999) -(0.2121212121 0.0003046635713 0.00050009999) -(0.2121212121 0.0005705243934 0.00050009999) -(0.2121212121 0.001024837958 0.00050009999) -(0.2121212121 0.001758019915 0.00050009999) -(0.2121212121 0.002838575912 0.00050009999) -(0.2121212121 0.004235474916 0.00050009999) -(0.2121212121 0.005764525084 0.00050009999) -(0.2121212121 0.007161424088 0.00050009999) -(0.2121212121 0.008241980085 0.00050009999) -(0.2121212121 0.008975162042 0.00050009999) -(0.2121212121 0.009429475607 0.00050009999) -(0.2121212121 0.009695336429 0.00050009999) -(0.2121212121 0.00984573433 0.00050009999) -(0.2121212121 0.009929188095 0.00050009999) -(0.2121212121 0.009975 0.00050009999) -(0.2121212121 0.01 0.00050009999) -(0.2171717172 0 0.00050009999) -(0.2171717172 2.5e-05 0.00050009999) -(0.2171717172 7.08119053e-05 0.00050009999) -(0.2171717172 0.00015426567 0.00050009999) -(0.2171717172 0.0003046635713 0.00050009999) -(0.2171717172 0.0005705243934 0.00050009999) -(0.2171717172 0.001024837958 0.00050009999) -(0.2171717172 0.001758019915 0.00050009999) -(0.2171717172 0.002838575912 0.00050009999) -(0.2171717172 0.004235474916 0.00050009999) -(0.2171717172 0.005764525084 0.00050009999) -(0.2171717172 0.007161424088 0.00050009999) -(0.2171717172 0.008241980085 0.00050009999) -(0.2171717172 0.008975162042 0.00050009999) -(0.2171717172 0.009429475607 0.00050009999) -(0.2171717172 0.009695336429 0.00050009999) -(0.2171717172 0.00984573433 0.00050009999) -(0.2171717172 0.009929188095 0.00050009999) -(0.2171717172 0.009975 0.00050009999) -(0.2171717172 0.01 0.00050009999) -(0.2222222222 0 0.00050009999) -(0.2222222222 2.5e-05 0.00050009999) -(0.2222222222 7.08119053e-05 0.00050009999) -(0.2222222222 0.00015426567 0.00050009999) -(0.2222222222 0.0003046635713 0.00050009999) -(0.2222222222 0.0005705243934 0.00050009999) -(0.2222222222 0.001024837958 0.00050009999) -(0.2222222222 0.001758019915 0.00050009999) -(0.2222222222 0.002838575912 0.00050009999) -(0.2222222222 0.004235474916 0.00050009999) -(0.2222222222 0.005764525084 0.00050009999) -(0.2222222222 0.007161424088 0.00050009999) -(0.2222222222 0.008241980085 0.00050009999) -(0.2222222222 0.008975162042 0.00050009999) -(0.2222222222 0.009429475607 0.00050009999) -(0.2222222222 0.009695336429 0.00050009999) -(0.2222222222 0.00984573433 0.00050009999) -(0.2222222222 0.009929188095 0.00050009999) -(0.2222222222 0.009975 0.00050009999) -(0.2222222222 0.01 0.00050009999) -(0.2272727273 0 0.00050009999) -(0.2272727273 2.5e-05 0.00050009999) -(0.2272727273 7.08119053e-05 0.00050009999) -(0.2272727273 0.00015426567 0.00050009999) -(0.2272727273 0.0003046635713 0.00050009999) -(0.2272727273 0.0005705243934 0.00050009999) -(0.2272727273 0.001024837958 0.00050009999) -(0.2272727273 0.001758019915 0.00050009999) -(0.2272727273 0.002838575912 0.00050009999) -(0.2272727273 0.004235474916 0.00050009999) -(0.2272727273 0.005764525084 0.00050009999) -(0.2272727273 0.007161424088 0.00050009999) -(0.2272727273 0.008241980085 0.00050009999) -(0.2272727273 0.008975162042 0.00050009999) -(0.2272727273 0.009429475607 0.00050009999) -(0.2272727273 0.009695336429 0.00050009999) -(0.2272727273 0.00984573433 0.00050009999) -(0.2272727273 0.009929188095 0.00050009999) -(0.2272727273 0.009975 0.00050009999) -(0.2272727273 0.01 0.00050009999) -(0.2323232323 0 0.00050009999) -(0.2323232323 2.5e-05 0.00050009999) -(0.2323232323 7.08119053e-05 0.00050009999) -(0.2323232323 0.00015426567 0.00050009999) -(0.2323232323 0.0003046635713 0.00050009999) -(0.2323232323 0.0005705243934 0.00050009999) -(0.2323232323 0.001024837958 0.00050009999) -(0.2323232323 0.001758019915 0.00050009999) -(0.2323232323 0.002838575912 0.00050009999) -(0.2323232323 0.004235474916 0.00050009999) -(0.2323232323 0.005764525084 0.00050009999) -(0.2323232323 0.007161424088 0.00050009999) -(0.2323232323 0.008241980085 0.00050009999) -(0.2323232323 0.008975162042 0.00050009999) -(0.2323232323 0.009429475607 0.00050009999) -(0.2323232323 0.009695336429 0.00050009999) -(0.2323232323 0.00984573433 0.00050009999) -(0.2323232323 0.009929188095 0.00050009999) -(0.2323232323 0.009975 0.00050009999) -(0.2323232323 0.01 0.00050009999) -(0.2373737374 0 0.00050009999) -(0.2373737374 2.5e-05 0.00050009999) -(0.2373737374 7.08119053e-05 0.00050009999) -(0.2373737374 0.00015426567 0.00050009999) -(0.2373737374 0.0003046635713 0.00050009999) -(0.2373737374 0.0005705243934 0.00050009999) -(0.2373737374 0.001024837958 0.00050009999) -(0.2373737374 0.001758019915 0.00050009999) -(0.2373737374 0.002838575912 0.00050009999) -(0.2373737374 0.004235474916 0.00050009999) -(0.2373737374 0.005764525084 0.00050009999) -(0.2373737374 0.007161424088 0.00050009999) -(0.2373737374 0.008241980085 0.00050009999) -(0.2373737374 0.008975162042 0.00050009999) -(0.2373737374 0.009429475607 0.00050009999) -(0.2373737374 0.009695336429 0.00050009999) -(0.2373737374 0.00984573433 0.00050009999) -(0.2373737374 0.009929188095 0.00050009999) -(0.2373737374 0.009975 0.00050009999) -(0.2373737374 0.01 0.00050009999) -(0.2424242424 0 0.00050009999) -(0.2424242424 2.5e-05 0.00050009999) -(0.2424242424 7.08119053e-05 0.00050009999) -(0.2424242424 0.00015426567 0.00050009999) -(0.2424242424 0.0003046635713 0.00050009999) -(0.2424242424 0.0005705243934 0.00050009999) -(0.2424242424 0.001024837958 0.00050009999) -(0.2424242424 0.001758019915 0.00050009999) -(0.2424242424 0.002838575912 0.00050009999) -(0.2424242424 0.004235474916 0.00050009999) -(0.2424242424 0.005764525084 0.00050009999) -(0.2424242424 0.007161424088 0.00050009999) -(0.2424242424 0.008241980085 0.00050009999) -(0.2424242424 0.008975162042 0.00050009999) -(0.2424242424 0.009429475607 0.00050009999) -(0.2424242424 0.009695336429 0.00050009999) -(0.2424242424 0.00984573433 0.00050009999) -(0.2424242424 0.009929188095 0.00050009999) -(0.2424242424 0.009975 0.00050009999) -(0.2424242424 0.01 0.00050009999) -(0.2474747475 0 0.00050009999) -(0.2474747475 2.5e-05 0.00050009999) -(0.2474747475 7.08119053e-05 0.00050009999) -(0.2474747475 0.00015426567 0.00050009999) -(0.2474747475 0.0003046635713 0.00050009999) -(0.2474747475 0.0005705243934 0.00050009999) -(0.2474747475 0.001024837958 0.00050009999) -(0.2474747475 0.001758019915 0.00050009999) -(0.2474747475 0.002838575912 0.00050009999) -(0.2474747475 0.004235474916 0.00050009999) -(0.2474747475 0.005764525084 0.00050009999) -(0.2474747475 0.007161424088 0.00050009999) -(0.2474747475 0.008241980085 0.00050009999) -(0.2474747475 0.008975162042 0.00050009999) -(0.2474747475 0.009429475607 0.00050009999) -(0.2474747475 0.009695336429 0.00050009999) -(0.2474747475 0.00984573433 0.00050009999) -(0.2474747475 0.009929188095 0.00050009999) -(0.2474747475 0.009975 0.00050009999) -(0.2474747475 0.01 0.00050009999) -(0.2525252525 0 0.00050009999) -(0.2525252525 2.5e-05 0.00050009999) -(0.2525252525 7.08119053e-05 0.00050009999) -(0.2525252525 0.00015426567 0.00050009999) -(0.2525252525 0.0003046635713 0.00050009999) -(0.2525252525 0.0005705243934 0.00050009999) -(0.2525252525 0.001024837958 0.00050009999) -(0.2525252525 0.001758019915 0.00050009999) -(0.2525252525 0.002838575912 0.00050009999) -(0.2525252525 0.004235474916 0.00050009999) -(0.2525252525 0.005764525084 0.00050009999) -(0.2525252525 0.007161424088 0.00050009999) -(0.2525252525 0.008241980085 0.00050009999) -(0.2525252525 0.008975162042 0.00050009999) -(0.2525252525 0.009429475607 0.00050009999) -(0.2525252525 0.009695336429 0.00050009999) -(0.2525252525 0.00984573433 0.00050009999) -(0.2525252525 0.009929188095 0.00050009999) -(0.2525252525 0.009975 0.00050009999) -(0.2525252525 0.01 0.00050009999) -(0.2575757576 0 0.00050009999) -(0.2575757576 2.5e-05 0.00050009999) -(0.2575757576 7.08119053e-05 0.00050009999) -(0.2575757576 0.00015426567 0.00050009999) -(0.2575757576 0.0003046635713 0.00050009999) -(0.2575757576 0.0005705243934 0.00050009999) -(0.2575757576 0.001024837958 0.00050009999) -(0.2575757576 0.001758019915 0.00050009999) -(0.2575757576 0.002838575912 0.00050009999) -(0.2575757576 0.004235474916 0.00050009999) -(0.2575757576 0.005764525084 0.00050009999) -(0.2575757576 0.007161424088 0.00050009999) -(0.2575757576 0.008241980085 0.00050009999) -(0.2575757576 0.008975162042 0.00050009999) -(0.2575757576 0.009429475607 0.00050009999) -(0.2575757576 0.009695336429 0.00050009999) -(0.2575757576 0.00984573433 0.00050009999) -(0.2575757576 0.009929188095 0.00050009999) -(0.2575757576 0.009975 0.00050009999) -(0.2575757576 0.01 0.00050009999) -(0.2626262626 0 0.00050009999) -(0.2626262626 2.5e-05 0.00050009999) -(0.2626262626 7.08119053e-05 0.00050009999) -(0.2626262626 0.00015426567 0.00050009999) -(0.2626262626 0.0003046635713 0.00050009999) -(0.2626262626 0.0005705243934 0.00050009999) -(0.2626262626 0.001024837958 0.00050009999) -(0.2626262626 0.001758019915 0.00050009999) -(0.2626262626 0.002838575912 0.00050009999) -(0.2626262626 0.004235474916 0.00050009999) -(0.2626262626 0.005764525084 0.00050009999) -(0.2626262626 0.007161424088 0.00050009999) -(0.2626262626 0.008241980085 0.00050009999) -(0.2626262626 0.008975162042 0.00050009999) -(0.2626262626 0.009429475607 0.00050009999) -(0.2626262626 0.009695336429 0.00050009999) -(0.2626262626 0.00984573433 0.00050009999) -(0.2626262626 0.009929188095 0.00050009999) -(0.2626262626 0.009975 0.00050009999) -(0.2626262626 0.01 0.00050009999) -(0.2676767677 0 0.00050009999) -(0.2676767677 2.5e-05 0.00050009999) -(0.2676767677 7.08119053e-05 0.00050009999) -(0.2676767677 0.00015426567 0.00050009999) -(0.2676767677 0.0003046635713 0.00050009999) -(0.2676767677 0.0005705243934 0.00050009999) -(0.2676767677 0.001024837958 0.00050009999) -(0.2676767677 0.001758019915 0.00050009999) -(0.2676767677 0.002838575912 0.00050009999) -(0.2676767677 0.004235474916 0.00050009999) -(0.2676767677 0.005764525084 0.00050009999) -(0.2676767677 0.007161424088 0.00050009999) -(0.2676767677 0.008241980085 0.00050009999) -(0.2676767677 0.008975162042 0.00050009999) -(0.2676767677 0.009429475607 0.00050009999) -(0.2676767677 0.009695336429 0.00050009999) -(0.2676767677 0.00984573433 0.00050009999) -(0.2676767677 0.009929188095 0.00050009999) -(0.2676767677 0.009975 0.00050009999) -(0.2676767677 0.01 0.00050009999) -(0.2727272727 0 0.00050009999) -(0.2727272727 2.5e-05 0.00050009999) -(0.2727272727 7.08119053e-05 0.00050009999) -(0.2727272727 0.00015426567 0.00050009999) -(0.2727272727 0.0003046635713 0.00050009999) -(0.2727272727 0.0005705243934 0.00050009999) -(0.2727272727 0.001024837958 0.00050009999) -(0.2727272727 0.001758019915 0.00050009999) -(0.2727272727 0.002838575912 0.00050009999) -(0.2727272727 0.004235474916 0.00050009999) -(0.2727272727 0.005764525084 0.00050009999) -(0.2727272727 0.007161424088 0.00050009999) -(0.2727272727 0.008241980085 0.00050009999) -(0.2727272727 0.008975162042 0.00050009999) -(0.2727272727 0.009429475607 0.00050009999) -(0.2727272727 0.009695336429 0.00050009999) -(0.2727272727 0.00984573433 0.00050009999) -(0.2727272727 0.009929188095 0.00050009999) -(0.2727272727 0.009975 0.00050009999) -(0.2727272727 0.01 0.00050009999) -(0.2777777778 0 0.00050009999) -(0.2777777778 2.5e-05 0.00050009999) -(0.2777777778 7.08119053e-05 0.00050009999) -(0.2777777778 0.00015426567 0.00050009999) -(0.2777777778 0.0003046635713 0.00050009999) -(0.2777777778 0.0005705243934 0.00050009999) -(0.2777777778 0.001024837958 0.00050009999) -(0.2777777778 0.001758019915 0.00050009999) -(0.2777777778 0.002838575912 0.00050009999) -(0.2777777778 0.004235474916 0.00050009999) -(0.2777777778 0.005764525084 0.00050009999) -(0.2777777778 0.007161424088 0.00050009999) -(0.2777777778 0.008241980085 0.00050009999) -(0.2777777778 0.008975162042 0.00050009999) -(0.2777777778 0.009429475607 0.00050009999) -(0.2777777778 0.009695336429 0.00050009999) -(0.2777777778 0.00984573433 0.00050009999) -(0.2777777778 0.009929188095 0.00050009999) -(0.2777777778 0.009975 0.00050009999) -(0.2777777778 0.01 0.00050009999) -(0.2828282828 0 0.00050009999) -(0.2828282828 2.5e-05 0.00050009999) -(0.2828282828 7.08119053e-05 0.00050009999) -(0.2828282828 0.00015426567 0.00050009999) -(0.2828282828 0.0003046635713 0.00050009999) -(0.2828282828 0.0005705243934 0.00050009999) -(0.2828282828 0.001024837958 0.00050009999) -(0.2828282828 0.001758019915 0.00050009999) -(0.2828282828 0.002838575912 0.00050009999) -(0.2828282828 0.004235474916 0.00050009999) -(0.2828282828 0.005764525084 0.00050009999) -(0.2828282828 0.007161424088 0.00050009999) -(0.2828282828 0.008241980085 0.00050009999) -(0.2828282828 0.008975162042 0.00050009999) -(0.2828282828 0.009429475607 0.00050009999) -(0.2828282828 0.009695336429 0.00050009999) -(0.2828282828 0.00984573433 0.00050009999) -(0.2828282828 0.009929188095 0.00050009999) -(0.2828282828 0.009975 0.00050009999) -(0.2828282828 0.01 0.00050009999) -(0.2878787879 0 0.00050009999) -(0.2878787879 2.5e-05 0.00050009999) -(0.2878787879 7.08119053e-05 0.00050009999) -(0.2878787879 0.00015426567 0.00050009999) -(0.2878787879 0.0003046635713 0.00050009999) -(0.2878787879 0.0005705243934 0.00050009999) -(0.2878787879 0.001024837958 0.00050009999) -(0.2878787879 0.001758019915 0.00050009999) -(0.2878787879 0.002838575912 0.00050009999) -(0.2878787879 0.004235474916 0.00050009999) -(0.2878787879 0.005764525084 0.00050009999) -(0.2878787879 0.007161424088 0.00050009999) -(0.2878787879 0.008241980085 0.00050009999) -(0.2878787879 0.008975162042 0.00050009999) -(0.2878787879 0.009429475607 0.00050009999) -(0.2878787879 0.009695336429 0.00050009999) -(0.2878787879 0.00984573433 0.00050009999) -(0.2878787879 0.009929188095 0.00050009999) -(0.2878787879 0.009975 0.00050009999) -(0.2878787879 0.01 0.00050009999) -(0.2929292929 0 0.00050009999) -(0.2929292929 2.5e-05 0.00050009999) -(0.2929292929 7.08119053e-05 0.00050009999) -(0.2929292929 0.00015426567 0.00050009999) -(0.2929292929 0.0003046635713 0.00050009999) -(0.2929292929 0.0005705243934 0.00050009999) -(0.2929292929 0.001024837958 0.00050009999) -(0.2929292929 0.001758019915 0.00050009999) -(0.2929292929 0.002838575912 0.00050009999) -(0.2929292929 0.004235474916 0.00050009999) -(0.2929292929 0.005764525084 0.00050009999) -(0.2929292929 0.007161424088 0.00050009999) -(0.2929292929 0.008241980085 0.00050009999) -(0.2929292929 0.008975162042 0.00050009999) -(0.2929292929 0.009429475607 0.00050009999) -(0.2929292929 0.009695336429 0.00050009999) -(0.2929292929 0.00984573433 0.00050009999) -(0.2929292929 0.009929188095 0.00050009999) -(0.2929292929 0.009975 0.00050009999) -(0.2929292929 0.01 0.00050009999) -(0.297979798 0 0.00050009999) -(0.297979798 2.5e-05 0.00050009999) -(0.297979798 7.08119053e-05 0.00050009999) -(0.297979798 0.00015426567 0.00050009999) -(0.297979798 0.0003046635713 0.00050009999) -(0.297979798 0.0005705243934 0.00050009999) -(0.297979798 0.001024837958 0.00050009999) -(0.297979798 0.001758019915 0.00050009999) -(0.297979798 0.002838575912 0.00050009999) -(0.297979798 0.004235474916 0.00050009999) -(0.297979798 0.005764525084 0.00050009999) -(0.297979798 0.007161424088 0.00050009999) -(0.297979798 0.008241980085 0.00050009999) -(0.297979798 0.008975162042 0.00050009999) -(0.297979798 0.009429475607 0.00050009999) -(0.297979798 0.009695336429 0.00050009999) -(0.297979798 0.00984573433 0.00050009999) -(0.297979798 0.009929188095 0.00050009999) -(0.297979798 0.009975 0.00050009999) -(0.297979798 0.01 0.00050009999) -(0.303030303 0 0.00050009999) -(0.303030303 2.5e-05 0.00050009999) -(0.303030303 7.08119053e-05 0.00050009999) -(0.303030303 0.00015426567 0.00050009999) -(0.303030303 0.0003046635713 0.00050009999) -(0.303030303 0.0005705243934 0.00050009999) -(0.303030303 0.001024837958 0.00050009999) -(0.303030303 0.001758019915 0.00050009999) -(0.303030303 0.002838575912 0.00050009999) -(0.303030303 0.004235474916 0.00050009999) -(0.303030303 0.005764525084 0.00050009999) -(0.303030303 0.007161424088 0.00050009999) -(0.303030303 0.008241980085 0.00050009999) -(0.303030303 0.008975162042 0.00050009999) -(0.303030303 0.009429475607 0.00050009999) -(0.303030303 0.009695336429 0.00050009999) -(0.303030303 0.00984573433 0.00050009999) -(0.303030303 0.009929188095 0.00050009999) -(0.303030303 0.009975 0.00050009999) -(0.303030303 0.01 0.00050009999) -(0.3080808081 0 0.00050009999) -(0.3080808081 2.5e-05 0.00050009999) -(0.3080808081 7.08119053e-05 0.00050009999) -(0.3080808081 0.00015426567 0.00050009999) -(0.3080808081 0.0003046635713 0.00050009999) -(0.3080808081 0.0005705243934 0.00050009999) -(0.3080808081 0.001024837958 0.00050009999) -(0.3080808081 0.001758019915 0.00050009999) -(0.3080808081 0.002838575912 0.00050009999) -(0.3080808081 0.004235474916 0.00050009999) -(0.3080808081 0.005764525084 0.00050009999) -(0.3080808081 0.007161424088 0.00050009999) -(0.3080808081 0.008241980085 0.00050009999) -(0.3080808081 0.008975162042 0.00050009999) -(0.3080808081 0.009429475607 0.00050009999) -(0.3080808081 0.009695336429 0.00050009999) -(0.3080808081 0.00984573433 0.00050009999) -(0.3080808081 0.009929188095 0.00050009999) -(0.3080808081 0.009975 0.00050009999) -(0.3080808081 0.01 0.00050009999) -(0.3131313131 0 0.00050009999) -(0.3131313131 2.5e-05 0.00050009999) -(0.3131313131 7.08119053e-05 0.00050009999) -(0.3131313131 0.00015426567 0.00050009999) -(0.3131313131 0.0003046635713 0.00050009999) -(0.3131313131 0.0005705243934 0.00050009999) -(0.3131313131 0.001024837958 0.00050009999) -(0.3131313131 0.001758019915 0.00050009999) -(0.3131313131 0.002838575912 0.00050009999) -(0.3131313131 0.004235474916 0.00050009999) -(0.3131313131 0.005764525084 0.00050009999) -(0.3131313131 0.007161424088 0.00050009999) -(0.3131313131 0.008241980085 0.00050009999) -(0.3131313131 0.008975162042 0.00050009999) -(0.3131313131 0.009429475607 0.00050009999) -(0.3131313131 0.009695336429 0.00050009999) -(0.3131313131 0.00984573433 0.00050009999) -(0.3131313131 0.009929188095 0.00050009999) -(0.3131313131 0.009975 0.00050009999) -(0.3131313131 0.01 0.00050009999) -(0.3181818182 0 0.00050009999) -(0.3181818182 2.5e-05 0.00050009999) -(0.3181818182 7.08119053e-05 0.00050009999) -(0.3181818182 0.00015426567 0.00050009999) -(0.3181818182 0.0003046635713 0.00050009999) -(0.3181818182 0.0005705243934 0.00050009999) -(0.3181818182 0.001024837958 0.00050009999) -(0.3181818182 0.001758019915 0.00050009999) -(0.3181818182 0.002838575912 0.00050009999) -(0.3181818182 0.004235474916 0.00050009999) -(0.3181818182 0.005764525084 0.00050009999) -(0.3181818182 0.007161424088 0.00050009999) -(0.3181818182 0.008241980085 0.00050009999) -(0.3181818182 0.008975162042 0.00050009999) -(0.3181818182 0.009429475607 0.00050009999) -(0.3181818182 0.009695336429 0.00050009999) -(0.3181818182 0.00984573433 0.00050009999) -(0.3181818182 0.009929188095 0.00050009999) -(0.3181818182 0.009975 0.00050009999) -(0.3181818182 0.01 0.00050009999) -(0.3232323232 0 0.00050009999) -(0.3232323232 2.5e-05 0.00050009999) -(0.3232323232 7.08119053e-05 0.00050009999) -(0.3232323232 0.00015426567 0.00050009999) -(0.3232323232 0.0003046635713 0.00050009999) -(0.3232323232 0.0005705243934 0.00050009999) -(0.3232323232 0.001024837958 0.00050009999) -(0.3232323232 0.001758019915 0.00050009999) -(0.3232323232 0.002838575912 0.00050009999) -(0.3232323232 0.004235474916 0.00050009999) -(0.3232323232 0.005764525084 0.00050009999) -(0.3232323232 0.007161424088 0.00050009999) -(0.3232323232 0.008241980085 0.00050009999) -(0.3232323232 0.008975162042 0.00050009999) -(0.3232323232 0.009429475607 0.00050009999) -(0.3232323232 0.009695336429 0.00050009999) -(0.3232323232 0.00984573433 0.00050009999) -(0.3232323232 0.009929188095 0.00050009999) -(0.3232323232 0.009975 0.00050009999) -(0.3232323232 0.01 0.00050009999) -(0.3282828283 0 0.00050009999) -(0.3282828283 2.5e-05 0.00050009999) -(0.3282828283 7.08119053e-05 0.00050009999) -(0.3282828283 0.00015426567 0.00050009999) -(0.3282828283 0.0003046635713 0.00050009999) -(0.3282828283 0.0005705243934 0.00050009999) -(0.3282828283 0.001024837958 0.00050009999) -(0.3282828283 0.001758019915 0.00050009999) -(0.3282828283 0.002838575912 0.00050009999) -(0.3282828283 0.004235474916 0.00050009999) -(0.3282828283 0.005764525084 0.00050009999) -(0.3282828283 0.007161424088 0.00050009999) -(0.3282828283 0.008241980085 0.00050009999) -(0.3282828283 0.008975162042 0.00050009999) -(0.3282828283 0.009429475607 0.00050009999) -(0.3282828283 0.009695336429 0.00050009999) -(0.3282828283 0.00984573433 0.00050009999) -(0.3282828283 0.009929188095 0.00050009999) -(0.3282828283 0.009975 0.00050009999) -(0.3282828283 0.01 0.00050009999) -(0.3333333333 0 0.00050009999) -(0.3333333333 2.5e-05 0.00050009999) -(0.3333333333 7.08119053e-05 0.00050009999) -(0.3333333333 0.00015426567 0.00050009999) -(0.3333333333 0.0003046635713 0.00050009999) -(0.3333333333 0.0005705243934 0.00050009999) -(0.3333333333 0.001024837958 0.00050009999) -(0.3333333333 0.001758019915 0.00050009999) -(0.3333333333 0.002838575912 0.00050009999) -(0.3333333333 0.004235474916 0.00050009999) -(0.3333333333 0.005764525084 0.00050009999) -(0.3333333333 0.007161424088 0.00050009999) -(0.3333333333 0.008241980085 0.00050009999) -(0.3333333333 0.008975162042 0.00050009999) -(0.3333333333 0.009429475607 0.00050009999) -(0.3333333333 0.009695336429 0.00050009999) -(0.3333333333 0.00984573433 0.00050009999) -(0.3333333333 0.009929188095 0.00050009999) -(0.3333333333 0.009975 0.00050009999) -(0.3333333333 0.01 0.00050009999) -(0.3383838384 0 0.00050009999) -(0.3383838384 2.5e-05 0.00050009999) -(0.3383838384 7.08119053e-05 0.00050009999) -(0.3383838384 0.00015426567 0.00050009999) -(0.3383838384 0.0003046635713 0.00050009999) -(0.3383838384 0.0005705243934 0.00050009999) -(0.3383838384 0.001024837958 0.00050009999) -(0.3383838384 0.001758019915 0.00050009999) -(0.3383838384 0.002838575912 0.00050009999) -(0.3383838384 0.004235474916 0.00050009999) -(0.3383838384 0.005764525084 0.00050009999) -(0.3383838384 0.007161424088 0.00050009999) -(0.3383838384 0.008241980085 0.00050009999) -(0.3383838384 0.008975162042 0.00050009999) -(0.3383838384 0.009429475607 0.00050009999) -(0.3383838384 0.009695336429 0.00050009999) -(0.3383838384 0.00984573433 0.00050009999) -(0.3383838384 0.009929188095 0.00050009999) -(0.3383838384 0.009975 0.00050009999) -(0.3383838384 0.01 0.00050009999) -(0.3434343434 0 0.00050009999) -(0.3434343434 2.5e-05 0.00050009999) -(0.3434343434 7.08119053e-05 0.00050009999) -(0.3434343434 0.00015426567 0.00050009999) -(0.3434343434 0.0003046635713 0.00050009999) -(0.3434343434 0.0005705243934 0.00050009999) -(0.3434343434 0.001024837958 0.00050009999) -(0.3434343434 0.001758019915 0.00050009999) -(0.3434343434 0.002838575912 0.00050009999) -(0.3434343434 0.004235474916 0.00050009999) -(0.3434343434 0.005764525084 0.00050009999) -(0.3434343434 0.007161424088 0.00050009999) -(0.3434343434 0.008241980085 0.00050009999) -(0.3434343434 0.008975162042 0.00050009999) -(0.3434343434 0.009429475607 0.00050009999) -(0.3434343434 0.009695336429 0.00050009999) -(0.3434343434 0.00984573433 0.00050009999) -(0.3434343434 0.009929188095 0.00050009999) -(0.3434343434 0.009975 0.00050009999) -(0.3434343434 0.01 0.00050009999) -(0.3484848485 0 0.00050009999) -(0.3484848485 2.5e-05 0.00050009999) -(0.3484848485 7.08119053e-05 0.00050009999) -(0.3484848485 0.00015426567 0.00050009999) -(0.3484848485 0.0003046635713 0.00050009999) -(0.3484848485 0.0005705243934 0.00050009999) -(0.3484848485 0.001024837958 0.00050009999) -(0.3484848485 0.001758019915 0.00050009999) -(0.3484848485 0.002838575912 0.00050009999) -(0.3484848485 0.004235474916 0.00050009999) -(0.3484848485 0.005764525084 0.00050009999) -(0.3484848485 0.007161424088 0.00050009999) -(0.3484848485 0.008241980085 0.00050009999) -(0.3484848485 0.008975162042 0.00050009999) -(0.3484848485 0.009429475607 0.00050009999) -(0.3484848485 0.009695336429 0.00050009999) -(0.3484848485 0.00984573433 0.00050009999) -(0.3484848485 0.009929188095 0.00050009999) -(0.3484848485 0.009975 0.00050009999) -(0.3484848485 0.01 0.00050009999) -(0.3535353535 0 0.00050009999) -(0.3535353535 2.5e-05 0.00050009999) -(0.3535353535 7.08119053e-05 0.00050009999) -(0.3535353535 0.00015426567 0.00050009999) -(0.3535353535 0.0003046635713 0.00050009999) -(0.3535353535 0.0005705243934 0.00050009999) -(0.3535353535 0.001024837958 0.00050009999) -(0.3535353535 0.001758019915 0.00050009999) -(0.3535353535 0.002838575912 0.00050009999) -(0.3535353535 0.004235474916 0.00050009999) -(0.3535353535 0.005764525084 0.00050009999) -(0.3535353535 0.007161424088 0.00050009999) -(0.3535353535 0.008241980085 0.00050009999) -(0.3535353535 0.008975162042 0.00050009999) -(0.3535353535 0.009429475607 0.00050009999) -(0.3535353535 0.009695336429 0.00050009999) -(0.3535353535 0.00984573433 0.00050009999) -(0.3535353535 0.009929188095 0.00050009999) -(0.3535353535 0.009975 0.00050009999) -(0.3535353535 0.01 0.00050009999) -(0.3585858586 0 0.00050009999) -(0.3585858586 2.5e-05 0.00050009999) -(0.3585858586 7.08119053e-05 0.00050009999) -(0.3585858586 0.00015426567 0.00050009999) -(0.3585858586 0.0003046635713 0.00050009999) -(0.3585858586 0.0005705243934 0.00050009999) -(0.3585858586 0.001024837958 0.00050009999) -(0.3585858586 0.001758019915 0.00050009999) -(0.3585858586 0.002838575912 0.00050009999) -(0.3585858586 0.004235474916 0.00050009999) -(0.3585858586 0.005764525084 0.00050009999) -(0.3585858586 0.007161424088 0.00050009999) -(0.3585858586 0.008241980085 0.00050009999) -(0.3585858586 0.008975162042 0.00050009999) -(0.3585858586 0.009429475607 0.00050009999) -(0.3585858586 0.009695336429 0.00050009999) -(0.3585858586 0.00984573433 0.00050009999) -(0.3585858586 0.009929188095 0.00050009999) -(0.3585858586 0.009975 0.00050009999) -(0.3585858586 0.01 0.00050009999) -(0.3636363636 0 0.00050009999) -(0.3636363636 2.5e-05 0.00050009999) -(0.3636363636 7.08119053e-05 0.00050009999) -(0.3636363636 0.00015426567 0.00050009999) -(0.3636363636 0.0003046635713 0.00050009999) -(0.3636363636 0.0005705243934 0.00050009999) -(0.3636363636 0.001024837958 0.00050009999) -(0.3636363636 0.001758019915 0.00050009999) -(0.3636363636 0.002838575912 0.00050009999) -(0.3636363636 0.004235474916 0.00050009999) -(0.3636363636 0.005764525084 0.00050009999) -(0.3636363636 0.007161424088 0.00050009999) -(0.3636363636 0.008241980085 0.00050009999) -(0.3636363636 0.008975162042 0.00050009999) -(0.3636363636 0.009429475607 0.00050009999) -(0.3636363636 0.009695336429 0.00050009999) -(0.3636363636 0.00984573433 0.00050009999) -(0.3636363636 0.009929188095 0.00050009999) -(0.3636363636 0.009975 0.00050009999) -(0.3636363636 0.01 0.00050009999) -(0.3686868687 0 0.00050009999) -(0.3686868687 2.5e-05 0.00050009999) -(0.3686868687 7.08119053e-05 0.00050009999) -(0.3686868687 0.00015426567 0.00050009999) -(0.3686868687 0.0003046635713 0.00050009999) -(0.3686868687 0.0005705243934 0.00050009999) -(0.3686868687 0.001024837958 0.00050009999) -(0.3686868687 0.001758019915 0.00050009999) -(0.3686868687 0.002838575912 0.00050009999) -(0.3686868687 0.004235474916 0.00050009999) -(0.3686868687 0.005764525084 0.00050009999) -(0.3686868687 0.007161424088 0.00050009999) -(0.3686868687 0.008241980085 0.00050009999) -(0.3686868687 0.008975162042 0.00050009999) -(0.3686868687 0.009429475607 0.00050009999) -(0.3686868687 0.009695336429 0.00050009999) -(0.3686868687 0.00984573433 0.00050009999) -(0.3686868687 0.009929188095 0.00050009999) -(0.3686868687 0.009975 0.00050009999) -(0.3686868687 0.01 0.00050009999) -(0.3737373737 0 0.00050009999) -(0.3737373737 2.5e-05 0.00050009999) -(0.3737373737 7.08119053e-05 0.00050009999) -(0.3737373737 0.00015426567 0.00050009999) -(0.3737373737 0.0003046635713 0.00050009999) -(0.3737373737 0.0005705243934 0.00050009999) -(0.3737373737 0.001024837958 0.00050009999) -(0.3737373737 0.001758019915 0.00050009999) -(0.3737373737 0.002838575912 0.00050009999) -(0.3737373737 0.004235474916 0.00050009999) -(0.3737373737 0.005764525084 0.00050009999) -(0.3737373737 0.007161424088 0.00050009999) -(0.3737373737 0.008241980085 0.00050009999) -(0.3737373737 0.008975162042 0.00050009999) -(0.3737373737 0.009429475607 0.00050009999) -(0.3737373737 0.009695336429 0.00050009999) -(0.3737373737 0.00984573433 0.00050009999) -(0.3737373737 0.009929188095 0.00050009999) -(0.3737373737 0.009975 0.00050009999) -(0.3737373737 0.01 0.00050009999) -(0.3787878788 0 0.00050009999) -(0.3787878788 2.5e-05 0.00050009999) -(0.3787878788 7.08119053e-05 0.00050009999) -(0.3787878788 0.00015426567 0.00050009999) -(0.3787878788 0.0003046635713 0.00050009999) -(0.3787878788 0.0005705243934 0.00050009999) -(0.3787878788 0.001024837958 0.00050009999) -(0.3787878788 0.001758019915 0.00050009999) -(0.3787878788 0.002838575912 0.00050009999) -(0.3787878788 0.004235474916 0.00050009999) -(0.3787878788 0.005764525084 0.00050009999) -(0.3787878788 0.007161424088 0.00050009999) -(0.3787878788 0.008241980085 0.00050009999) -(0.3787878788 0.008975162042 0.00050009999) -(0.3787878788 0.009429475607 0.00050009999) -(0.3787878788 0.009695336429 0.00050009999) -(0.3787878788 0.00984573433 0.00050009999) -(0.3787878788 0.009929188095 0.00050009999) -(0.3787878788 0.009975 0.00050009999) -(0.3787878788 0.01 0.00050009999) -(0.3838383838 0 0.00050009999) -(0.3838383838 2.5e-05 0.00050009999) -(0.3838383838 7.08119053e-05 0.00050009999) -(0.3838383838 0.00015426567 0.00050009999) -(0.3838383838 0.0003046635713 0.00050009999) -(0.3838383838 0.0005705243934 0.00050009999) -(0.3838383838 0.001024837958 0.00050009999) -(0.3838383838 0.001758019915 0.00050009999) -(0.3838383838 0.002838575912 0.00050009999) -(0.3838383838 0.004235474916 0.00050009999) -(0.3838383838 0.005764525084 0.00050009999) -(0.3838383838 0.007161424088 0.00050009999) -(0.3838383838 0.008241980085 0.00050009999) -(0.3838383838 0.008975162042 0.00050009999) -(0.3838383838 0.009429475607 0.00050009999) -(0.3838383838 0.009695336429 0.00050009999) -(0.3838383838 0.00984573433 0.00050009999) -(0.3838383838 0.009929188095 0.00050009999) -(0.3838383838 0.009975 0.00050009999) -(0.3838383838 0.01 0.00050009999) -(0.3888888889 0 0.00050009999) -(0.3888888889 2.5e-05 0.00050009999) -(0.3888888889 7.08119053e-05 0.00050009999) -(0.3888888889 0.00015426567 0.00050009999) -(0.3888888889 0.0003046635713 0.00050009999) -(0.3888888889 0.0005705243934 0.00050009999) -(0.3888888889 0.001024837958 0.00050009999) -(0.3888888889 0.001758019915 0.00050009999) -(0.3888888889 0.002838575912 0.00050009999) -(0.3888888889 0.004235474916 0.00050009999) -(0.3888888889 0.005764525084 0.00050009999) -(0.3888888889 0.007161424088 0.00050009999) -(0.3888888889 0.008241980085 0.00050009999) -(0.3888888889 0.008975162042 0.00050009999) -(0.3888888889 0.009429475607 0.00050009999) -(0.3888888889 0.009695336429 0.00050009999) -(0.3888888889 0.00984573433 0.00050009999) -(0.3888888889 0.009929188095 0.00050009999) -(0.3888888889 0.009975 0.00050009999) -(0.3888888889 0.01 0.00050009999) -(0.3939393939 0 0.00050009999) -(0.3939393939 2.5e-05 0.00050009999) -(0.3939393939 7.08119053e-05 0.00050009999) -(0.3939393939 0.00015426567 0.00050009999) -(0.3939393939 0.0003046635713 0.00050009999) -(0.3939393939 0.0005705243934 0.00050009999) -(0.3939393939 0.001024837958 0.00050009999) -(0.3939393939 0.001758019915 0.00050009999) -(0.3939393939 0.002838575912 0.00050009999) -(0.3939393939 0.004235474916 0.00050009999) -(0.3939393939 0.005764525084 0.00050009999) -(0.3939393939 0.007161424088 0.00050009999) -(0.3939393939 0.008241980085 0.00050009999) -(0.3939393939 0.008975162042 0.00050009999) -(0.3939393939 0.009429475607 0.00050009999) -(0.3939393939 0.009695336429 0.00050009999) -(0.3939393939 0.00984573433 0.00050009999) -(0.3939393939 0.009929188095 0.00050009999) -(0.3939393939 0.009975 0.00050009999) -(0.3939393939 0.01 0.00050009999) -(0.398989899 0 0.00050009999) -(0.398989899 2.5e-05 0.00050009999) -(0.398989899 7.08119053e-05 0.00050009999) -(0.398989899 0.00015426567 0.00050009999) -(0.398989899 0.0003046635713 0.00050009999) -(0.398989899 0.0005705243934 0.00050009999) -(0.398989899 0.001024837958 0.00050009999) -(0.398989899 0.001758019915 0.00050009999) -(0.398989899 0.002838575912 0.00050009999) -(0.398989899 0.004235474916 0.00050009999) -(0.398989899 0.005764525084 0.00050009999) -(0.398989899 0.007161424088 0.00050009999) -(0.398989899 0.008241980085 0.00050009999) -(0.398989899 0.008975162042 0.00050009999) -(0.398989899 0.009429475607 0.00050009999) -(0.398989899 0.009695336429 0.00050009999) -(0.398989899 0.00984573433 0.00050009999) -(0.398989899 0.009929188095 0.00050009999) -(0.398989899 0.009975 0.00050009999) -(0.398989899 0.01 0.00050009999) -(0.404040404 0 0.00050009999) -(0.404040404 2.5e-05 0.00050009999) -(0.404040404 7.08119053e-05 0.00050009999) -(0.404040404 0.00015426567 0.00050009999) -(0.404040404 0.0003046635713 0.00050009999) -(0.404040404 0.0005705243934 0.00050009999) -(0.404040404 0.001024837958 0.00050009999) -(0.404040404 0.001758019915 0.00050009999) -(0.404040404 0.002838575912 0.00050009999) -(0.404040404 0.004235474916 0.00050009999) -(0.404040404 0.005764525084 0.00050009999) -(0.404040404 0.007161424088 0.00050009999) -(0.404040404 0.008241980085 0.00050009999) -(0.404040404 0.008975162042 0.00050009999) -(0.404040404 0.009429475607 0.00050009999) -(0.404040404 0.009695336429 0.00050009999) -(0.404040404 0.00984573433 0.00050009999) -(0.404040404 0.009929188095 0.00050009999) -(0.404040404 0.009975 0.00050009999) -(0.404040404 0.01 0.00050009999) -(0.4090909091 0 0.00050009999) -(0.4090909091 2.5e-05 0.00050009999) -(0.4090909091 7.08119053e-05 0.00050009999) -(0.4090909091 0.00015426567 0.00050009999) -(0.4090909091 0.0003046635713 0.00050009999) -(0.4090909091 0.0005705243934 0.00050009999) -(0.4090909091 0.001024837958 0.00050009999) -(0.4090909091 0.001758019915 0.00050009999) -(0.4090909091 0.002838575912 0.00050009999) -(0.4090909091 0.004235474916 0.00050009999) -(0.4090909091 0.005764525084 0.00050009999) -(0.4090909091 0.007161424088 0.00050009999) -(0.4090909091 0.008241980085 0.00050009999) -(0.4090909091 0.008975162042 0.00050009999) -(0.4090909091 0.009429475607 0.00050009999) -(0.4090909091 0.009695336429 0.00050009999) -(0.4090909091 0.00984573433 0.00050009999) -(0.4090909091 0.009929188095 0.00050009999) -(0.4090909091 0.009975 0.00050009999) -(0.4090909091 0.01 0.00050009999) -(0.4141414141 0 0.00050009999) -(0.4141414141 2.5e-05 0.00050009999) -(0.4141414141 7.08119053e-05 0.00050009999) -(0.4141414141 0.00015426567 0.00050009999) -(0.4141414141 0.0003046635713 0.00050009999) -(0.4141414141 0.0005705243934 0.00050009999) -(0.4141414141 0.001024837958 0.00050009999) -(0.4141414141 0.001758019915 0.00050009999) -(0.4141414141 0.002838575912 0.00050009999) -(0.4141414141 0.004235474916 0.00050009999) -(0.4141414141 0.005764525084 0.00050009999) -(0.4141414141 0.007161424088 0.00050009999) -(0.4141414141 0.008241980085 0.00050009999) -(0.4141414141 0.008975162042 0.00050009999) -(0.4141414141 0.009429475607 0.00050009999) -(0.4141414141 0.009695336429 0.00050009999) -(0.4141414141 0.00984573433 0.00050009999) -(0.4141414141 0.009929188095 0.00050009999) -(0.4141414141 0.009975 0.00050009999) -(0.4141414141 0.01 0.00050009999) -(0.4191919192 0 0.00050009999) -(0.4191919192 2.5e-05 0.00050009999) -(0.4191919192 7.08119053e-05 0.00050009999) -(0.4191919192 0.00015426567 0.00050009999) -(0.4191919192 0.0003046635713 0.00050009999) -(0.4191919192 0.0005705243934 0.00050009999) -(0.4191919192 0.001024837958 0.00050009999) -(0.4191919192 0.001758019915 0.00050009999) -(0.4191919192 0.002838575912 0.00050009999) -(0.4191919192 0.004235474916 0.00050009999) -(0.4191919192 0.005764525084 0.00050009999) -(0.4191919192 0.007161424088 0.00050009999) -(0.4191919192 0.008241980085 0.00050009999) -(0.4191919192 0.008975162042 0.00050009999) -(0.4191919192 0.009429475607 0.00050009999) -(0.4191919192 0.009695336429 0.00050009999) -(0.4191919192 0.00984573433 0.00050009999) -(0.4191919192 0.009929188095 0.00050009999) -(0.4191919192 0.009975 0.00050009999) -(0.4191919192 0.01 0.00050009999) -(0.4242424242 0 0.00050009999) -(0.4242424242 2.5e-05 0.00050009999) -(0.4242424242 7.08119053e-05 0.00050009999) -(0.4242424242 0.00015426567 0.00050009999) -(0.4242424242 0.0003046635713 0.00050009999) -(0.4242424242 0.0005705243934 0.00050009999) -(0.4242424242 0.001024837958 0.00050009999) -(0.4242424242 0.001758019915 0.00050009999) -(0.4242424242 0.002838575912 0.00050009999) -(0.4242424242 0.004235474916 0.00050009999) -(0.4242424242 0.005764525084 0.00050009999) -(0.4242424242 0.007161424088 0.00050009999) -(0.4242424242 0.008241980085 0.00050009999) -(0.4242424242 0.008975162042 0.00050009999) -(0.4242424242 0.009429475607 0.00050009999) -(0.4242424242 0.009695336429 0.00050009999) -(0.4242424242 0.00984573433 0.00050009999) -(0.4242424242 0.009929188095 0.00050009999) -(0.4242424242 0.009975 0.00050009999) -(0.4242424242 0.01 0.00050009999) -(0.4292929293 0 0.00050009999) -(0.4292929293 2.5e-05 0.00050009999) -(0.4292929293 7.08119053e-05 0.00050009999) -(0.4292929293 0.00015426567 0.00050009999) -(0.4292929293 0.0003046635713 0.00050009999) -(0.4292929293 0.0005705243934 0.00050009999) -(0.4292929293 0.001024837958 0.00050009999) -(0.4292929293 0.001758019915 0.00050009999) -(0.4292929293 0.002838575912 0.00050009999) -(0.4292929293 0.004235474916 0.00050009999) -(0.4292929293 0.005764525084 0.00050009999) -(0.4292929293 0.007161424088 0.00050009999) -(0.4292929293 0.008241980085 0.00050009999) -(0.4292929293 0.008975162042 0.00050009999) -(0.4292929293 0.009429475607 0.00050009999) -(0.4292929293 0.009695336429 0.00050009999) -(0.4292929293 0.00984573433 0.00050009999) -(0.4292929293 0.009929188095 0.00050009999) -(0.4292929293 0.009975 0.00050009999) -(0.4292929293 0.01 0.00050009999) -(0.4343434343 0 0.00050009999) -(0.4343434343 2.5e-05 0.00050009999) -(0.4343434343 7.08119053e-05 0.00050009999) -(0.4343434343 0.00015426567 0.00050009999) -(0.4343434343 0.0003046635713 0.00050009999) -(0.4343434343 0.0005705243934 0.00050009999) -(0.4343434343 0.001024837958 0.00050009999) -(0.4343434343 0.001758019915 0.00050009999) -(0.4343434343 0.002838575912 0.00050009999) -(0.4343434343 0.004235474916 0.00050009999) -(0.4343434343 0.005764525084 0.00050009999) -(0.4343434343 0.007161424088 0.00050009999) -(0.4343434343 0.008241980085 0.00050009999) -(0.4343434343 0.008975162042 0.00050009999) -(0.4343434343 0.009429475607 0.00050009999) -(0.4343434343 0.009695336429 0.00050009999) -(0.4343434343 0.00984573433 0.00050009999) -(0.4343434343 0.009929188095 0.00050009999) -(0.4343434343 0.009975 0.00050009999) -(0.4343434343 0.01 0.00050009999) -(0.4393939394 0 0.00050009999) -(0.4393939394 2.5e-05 0.00050009999) -(0.4393939394 7.08119053e-05 0.00050009999) -(0.4393939394 0.00015426567 0.00050009999) -(0.4393939394 0.0003046635713 0.00050009999) -(0.4393939394 0.0005705243934 0.00050009999) -(0.4393939394 0.001024837958 0.00050009999) -(0.4393939394 0.001758019915 0.00050009999) -(0.4393939394 0.002838575912 0.00050009999) -(0.4393939394 0.004235474916 0.00050009999) -(0.4393939394 0.005764525084 0.00050009999) -(0.4393939394 0.007161424088 0.00050009999) -(0.4393939394 0.008241980085 0.00050009999) -(0.4393939394 0.008975162042 0.00050009999) -(0.4393939394 0.009429475607 0.00050009999) -(0.4393939394 0.009695336429 0.00050009999) -(0.4393939394 0.00984573433 0.00050009999) -(0.4393939394 0.009929188095 0.00050009999) -(0.4393939394 0.009975 0.00050009999) -(0.4393939394 0.01 0.00050009999) -(0.4444444444 0 0.00050009999) -(0.4444444444 2.5e-05 0.00050009999) -(0.4444444444 7.08119053e-05 0.00050009999) -(0.4444444444 0.00015426567 0.00050009999) -(0.4444444444 0.0003046635713 0.00050009999) -(0.4444444444 0.0005705243934 0.00050009999) -(0.4444444444 0.001024837958 0.00050009999) -(0.4444444444 0.001758019915 0.00050009999) -(0.4444444444 0.002838575912 0.00050009999) -(0.4444444444 0.004235474916 0.00050009999) -(0.4444444444 0.005764525084 0.00050009999) -(0.4444444444 0.007161424088 0.00050009999) -(0.4444444444 0.008241980085 0.00050009999) -(0.4444444444 0.008975162042 0.00050009999) -(0.4444444444 0.009429475607 0.00050009999) -(0.4444444444 0.009695336429 0.00050009999) -(0.4444444444 0.00984573433 0.00050009999) -(0.4444444444 0.009929188095 0.00050009999) -(0.4444444444 0.009975 0.00050009999) -(0.4444444444 0.01 0.00050009999) -(0.4494949495 0 0.00050009999) -(0.4494949495 2.5e-05 0.00050009999) -(0.4494949495 7.08119053e-05 0.00050009999) -(0.4494949495 0.00015426567 0.00050009999) -(0.4494949495 0.0003046635713 0.00050009999) -(0.4494949495 0.0005705243934 0.00050009999) -(0.4494949495 0.001024837958 0.00050009999) -(0.4494949495 0.001758019915 0.00050009999) -(0.4494949495 0.002838575912 0.00050009999) -(0.4494949495 0.004235474916 0.00050009999) -(0.4494949495 0.005764525084 0.00050009999) -(0.4494949495 0.007161424088 0.00050009999) -(0.4494949495 0.008241980085 0.00050009999) -(0.4494949495 0.008975162042 0.00050009999) -(0.4494949495 0.009429475607 0.00050009999) -(0.4494949495 0.009695336429 0.00050009999) -(0.4494949495 0.00984573433 0.00050009999) -(0.4494949495 0.009929188095 0.00050009999) -(0.4494949495 0.009975 0.00050009999) -(0.4494949495 0.01 0.00050009999) -(0.4545454545 0 0.00050009999) -(0.4545454545 2.5e-05 0.00050009999) -(0.4545454545 7.08119053e-05 0.00050009999) -(0.4545454545 0.00015426567 0.00050009999) -(0.4545454545 0.0003046635713 0.00050009999) -(0.4545454545 0.0005705243934 0.00050009999) -(0.4545454545 0.001024837958 0.00050009999) -(0.4545454545 0.001758019915 0.00050009999) -(0.4545454545 0.002838575912 0.00050009999) -(0.4545454545 0.004235474916 0.00050009999) -(0.4545454545 0.005764525084 0.00050009999) -(0.4545454545 0.007161424088 0.00050009999) -(0.4545454545 0.008241980085 0.00050009999) -(0.4545454545 0.008975162042 0.00050009999) -(0.4545454545 0.009429475607 0.00050009999) -(0.4545454545 0.009695336429 0.00050009999) -(0.4545454545 0.00984573433 0.00050009999) -(0.4545454545 0.009929188095 0.00050009999) -(0.4545454545 0.009975 0.00050009999) -(0.4545454545 0.01 0.00050009999) -(0.4595959596 0 0.00050009999) -(0.4595959596 2.5e-05 0.00050009999) -(0.4595959596 7.08119053e-05 0.00050009999) -(0.4595959596 0.00015426567 0.00050009999) -(0.4595959596 0.0003046635713 0.00050009999) -(0.4595959596 0.0005705243934 0.00050009999) -(0.4595959596 0.001024837958 0.00050009999) -(0.4595959596 0.001758019915 0.00050009999) -(0.4595959596 0.002838575912 0.00050009999) -(0.4595959596 0.004235474916 0.00050009999) -(0.4595959596 0.005764525084 0.00050009999) -(0.4595959596 0.007161424088 0.00050009999) -(0.4595959596 0.008241980085 0.00050009999) -(0.4595959596 0.008975162042 0.00050009999) -(0.4595959596 0.009429475607 0.00050009999) -(0.4595959596 0.009695336429 0.00050009999) -(0.4595959596 0.00984573433 0.00050009999) -(0.4595959596 0.009929188095 0.00050009999) -(0.4595959596 0.009975 0.00050009999) -(0.4595959596 0.01 0.00050009999) -(0.4646464646 0 0.00050009999) -(0.4646464646 2.5e-05 0.00050009999) -(0.4646464646 7.08119053e-05 0.00050009999) -(0.4646464646 0.00015426567 0.00050009999) -(0.4646464646 0.0003046635713 0.00050009999) -(0.4646464646 0.0005705243934 0.00050009999) -(0.4646464646 0.001024837958 0.00050009999) -(0.4646464646 0.001758019915 0.00050009999) -(0.4646464646 0.002838575912 0.00050009999) -(0.4646464646 0.004235474916 0.00050009999) -(0.4646464646 0.005764525084 0.00050009999) -(0.4646464646 0.007161424088 0.00050009999) -(0.4646464646 0.008241980085 0.00050009999) -(0.4646464646 0.008975162042 0.00050009999) -(0.4646464646 0.009429475607 0.00050009999) -(0.4646464646 0.009695336429 0.00050009999) -(0.4646464646 0.00984573433 0.00050009999) -(0.4646464646 0.009929188095 0.00050009999) -(0.4646464646 0.009975 0.00050009999) -(0.4646464646 0.01 0.00050009999) -(0.4696969697 0 0.00050009999) -(0.4696969697 2.5e-05 0.00050009999) -(0.4696969697 7.08119053e-05 0.00050009999) -(0.4696969697 0.00015426567 0.00050009999) -(0.4696969697 0.0003046635713 0.00050009999) -(0.4696969697 0.0005705243934 0.00050009999) -(0.4696969697 0.001024837958 0.00050009999) -(0.4696969697 0.001758019915 0.00050009999) -(0.4696969697 0.002838575912 0.00050009999) -(0.4696969697 0.004235474916 0.00050009999) -(0.4696969697 0.005764525084 0.00050009999) -(0.4696969697 0.007161424088 0.00050009999) -(0.4696969697 0.008241980085 0.00050009999) -(0.4696969697 0.008975162042 0.00050009999) -(0.4696969697 0.009429475607 0.00050009999) -(0.4696969697 0.009695336429 0.00050009999) -(0.4696969697 0.00984573433 0.00050009999) -(0.4696969697 0.009929188095 0.00050009999) -(0.4696969697 0.009975 0.00050009999) -(0.4696969697 0.01 0.00050009999) -(0.4747474747 0 0.00050009999) -(0.4747474747 2.5e-05 0.00050009999) -(0.4747474747 7.08119053e-05 0.00050009999) -(0.4747474747 0.00015426567 0.00050009999) -(0.4747474747 0.0003046635713 0.00050009999) -(0.4747474747 0.0005705243934 0.00050009999) -(0.4747474747 0.001024837958 0.00050009999) -(0.4747474747 0.001758019915 0.00050009999) -(0.4747474747 0.002838575912 0.00050009999) -(0.4747474747 0.004235474916 0.00050009999) -(0.4747474747 0.005764525084 0.00050009999) -(0.4747474747 0.007161424088 0.00050009999) -(0.4747474747 0.008241980085 0.00050009999) -(0.4747474747 0.008975162042 0.00050009999) -(0.4747474747 0.009429475607 0.00050009999) -(0.4747474747 0.009695336429 0.00050009999) -(0.4747474747 0.00984573433 0.00050009999) -(0.4747474747 0.009929188095 0.00050009999) -(0.4747474747 0.009975 0.00050009999) -(0.4747474747 0.01 0.00050009999) -(0.4797979798 0 0.00050009999) -(0.4797979798 2.5e-05 0.00050009999) -(0.4797979798 7.08119053e-05 0.00050009999) -(0.4797979798 0.00015426567 0.00050009999) -(0.4797979798 0.0003046635713 0.00050009999) -(0.4797979798 0.0005705243934 0.00050009999) -(0.4797979798 0.001024837958 0.00050009999) -(0.4797979798 0.001758019915 0.00050009999) -(0.4797979798 0.002838575912 0.00050009999) -(0.4797979798 0.004235474916 0.00050009999) -(0.4797979798 0.005764525084 0.00050009999) -(0.4797979798 0.007161424088 0.00050009999) -(0.4797979798 0.008241980085 0.00050009999) -(0.4797979798 0.008975162042 0.00050009999) -(0.4797979798 0.009429475607 0.00050009999) -(0.4797979798 0.009695336429 0.00050009999) -(0.4797979798 0.00984573433 0.00050009999) -(0.4797979798 0.009929188095 0.00050009999) -(0.4797979798 0.009975 0.00050009999) -(0.4797979798 0.01 0.00050009999) -(0.4848484848 0 0.00050009999) -(0.4848484848 2.5e-05 0.00050009999) -(0.4848484848 7.08119053e-05 0.00050009999) -(0.4848484848 0.00015426567 0.00050009999) -(0.4848484848 0.0003046635713 0.00050009999) -(0.4848484848 0.0005705243934 0.00050009999) -(0.4848484848 0.001024837958 0.00050009999) -(0.4848484848 0.001758019915 0.00050009999) -(0.4848484848 0.002838575912 0.00050009999) -(0.4848484848 0.004235474916 0.00050009999) -(0.4848484848 0.005764525084 0.00050009999) -(0.4848484848 0.007161424088 0.00050009999) -(0.4848484848 0.008241980085 0.00050009999) -(0.4848484848 0.008975162042 0.00050009999) -(0.4848484848 0.009429475607 0.00050009999) -(0.4848484848 0.009695336429 0.00050009999) -(0.4848484848 0.00984573433 0.00050009999) -(0.4848484848 0.009929188095 0.00050009999) -(0.4848484848 0.009975 0.00050009999) -(0.4848484848 0.01 0.00050009999) -(0.4898989899 0 0.00050009999) -(0.4898989899 2.5e-05 0.00050009999) -(0.4898989899 7.08119053e-05 0.00050009999) -(0.4898989899 0.00015426567 0.00050009999) -(0.4898989899 0.0003046635713 0.00050009999) -(0.4898989899 0.0005705243934 0.00050009999) -(0.4898989899 0.001024837958 0.00050009999) -(0.4898989899 0.001758019915 0.00050009999) -(0.4898989899 0.002838575912 0.00050009999) -(0.4898989899 0.004235474916 0.00050009999) -(0.4898989899 0.005764525084 0.00050009999) -(0.4898989899 0.007161424088 0.00050009999) -(0.4898989899 0.008241980085 0.00050009999) -(0.4898989899 0.008975162042 0.00050009999) -(0.4898989899 0.009429475607 0.00050009999) -(0.4898989899 0.009695336429 0.00050009999) -(0.4898989899 0.00984573433 0.00050009999) -(0.4898989899 0.009929188095 0.00050009999) -(0.4898989899 0.009975 0.00050009999) -(0.4898989899 0.01 0.00050009999) -(0.4949494949 0 0.00050009999) -(0.4949494949 2.5e-05 0.00050009999) -(0.4949494949 7.08119053e-05 0.00050009999) -(0.4949494949 0.00015426567 0.00050009999) -(0.4949494949 0.0003046635713 0.00050009999) -(0.4949494949 0.0005705243934 0.00050009999) -(0.4949494949 0.001024837958 0.00050009999) -(0.4949494949 0.001758019915 0.00050009999) -(0.4949494949 0.002838575912 0.00050009999) -(0.4949494949 0.004235474916 0.00050009999) -(0.4949494949 0.005764525084 0.00050009999) -(0.4949494949 0.007161424088 0.00050009999) -(0.4949494949 0.008241980085 0.00050009999) -(0.4949494949 0.008975162042 0.00050009999) -(0.4949494949 0.009429475607 0.00050009999) -(0.4949494949 0.009695336429 0.00050009999) -(0.4949494949 0.00984573433 0.00050009999) -(0.4949494949 0.009929188095 0.00050009999) -(0.4949494949 0.009975 0.00050009999) -(0.4949494949 0.01 0.00050009999) -(0.5 0 0.00050009999) -(0.5 2.5e-05 0.00050009999) -(0.5 7.08119053e-05 0.00050009999) -(0.5 0.00015426567 0.00050009999) -(0.5 0.0003046635713 0.00050009999) -(0.5 0.0005705243934 0.00050009999) -(0.5 0.001024837958 0.00050009999) -(0.5 0.001758019915 0.00050009999) -(0.5 0.002838575912 0.00050009999) -(0.5 0.004235474916 0.00050009999) -(0.5 0.005764525084 0.00050009999) -(0.5 0.007161424088 0.00050009999) -(0.5 0.008241980085 0.00050009999) -(0.5 0.008975162042 0.00050009999) -(0.5 0.009429475607 0.00050009999) -(0.5 0.009695336429 0.00050009999) -(0.5 0.00984573433 0.00050009999) -(0.5 0.009929188095 0.00050009999) -(0.5 0.009975 0.00050009999) -(0.5 0.01 0.00050009999) -(0 0 -0.00050009999) -(0.005050505051 0 -0.00050009999) -(0 2.5e-05 -0.00050009999) -(0.005050505051 2.5e-05 -0.00050009999) -(0 7.08119053e-05 -0.00050009999) -(0.005050505051 7.08119053e-05 -0.00050009999) -(0 0.00015426567 -0.00050009999) -(0.005050505051 0.00015426567 -0.00050009999) -(0 0.0003046635713 -0.00050009999) -(0.005050505051 0.0003046635713 -0.00050009999) -(0 0.0005705243934 -0.00050009999) -(0.005050505051 0.0005705243934 -0.00050009999) -(0 0.001024837958 -0.00050009999) -(0.005050505051 0.001024837958 -0.00050009999) -(0 0.001758019915 -0.00050009999) -(0.005050505051 0.001758019915 -0.00050009999) -(0 0.002838575912 -0.00050009999) -(0.005050505051 0.002838575912 -0.00050009999) -(0 0.004235474916 -0.00050009999) -(0.005050505051 0.004235474916 -0.00050009999) -(0 0.005764525084 -0.00050009999) -(0.005050505051 0.005764525084 -0.00050009999) -(0 0.007161424088 -0.00050009999) -(0.005050505051 0.007161424088 -0.00050009999) -(0 0.008241980085 -0.00050009999) -(0.005050505051 0.008241980085 -0.00050009999) -(0 0.008975162042 -0.00050009999) -(0.005050505051 0.008975162042 -0.00050009999) -(0 0.009429475607 -0.00050009999) -(0.005050505051 0.009429475607 -0.00050009999) -(0 0.009695336429 -0.00050009999) -(0.005050505051 0.009695336429 -0.00050009999) -(0 0.00984573433 -0.00050009999) -(0.005050505051 0.00984573433 -0.00050009999) -(0 0.009929188095 -0.00050009999) -(0.005050505051 0.009929188095 -0.00050009999) -(0 0.009975 -0.00050009999) -(0.005050505051 0.009975 -0.00050009999) -(0 0.01 -0.00050009999) -(0.005050505051 0.01 -0.00050009999) -(0.0101010101 0 -0.00050009999) -(0.0101010101 2.5e-05 -0.00050009999) -(0.0101010101 7.08119053e-05 -0.00050009999) -(0.0101010101 0.00015426567 -0.00050009999) -(0.0101010101 0.0003046635713 -0.00050009999) -(0.0101010101 0.0005705243934 -0.00050009999) -(0.0101010101 0.001024837958 -0.00050009999) -(0.0101010101 0.001758019915 -0.00050009999) -(0.0101010101 0.002838575912 -0.00050009999) -(0.0101010101 0.004235474916 -0.00050009999) -(0.0101010101 0.005764525084 -0.00050009999) -(0.0101010101 0.007161424088 -0.00050009999) -(0.0101010101 0.008241980085 -0.00050009999) -(0.0101010101 0.008975162042 -0.00050009999) -(0.0101010101 0.009429475607 -0.00050009999) -(0.0101010101 0.009695336429 -0.00050009999) -(0.0101010101 0.00984573433 -0.00050009999) -(0.0101010101 0.009929188095 -0.00050009999) -(0.0101010101 0.009975 -0.00050009999) -(0.0101010101 0.01 -0.00050009999) -(0.01515151515 0 -0.00050009999) -(0.01515151515 2.5e-05 -0.00050009999) -(0.01515151515 7.08119053e-05 -0.00050009999) -(0.01515151515 0.00015426567 -0.00050009999) -(0.01515151515 0.0003046635713 -0.00050009999) -(0.01515151515 0.0005705243934 -0.00050009999) -(0.01515151515 0.001024837958 -0.00050009999) -(0.01515151515 0.001758019915 -0.00050009999) -(0.01515151515 0.002838575912 -0.00050009999) -(0.01515151515 0.004235474916 -0.00050009999) -(0.01515151515 0.005764525084 -0.00050009999) -(0.01515151515 0.007161424088 -0.00050009999) -(0.01515151515 0.008241980085 -0.00050009999) -(0.01515151515 0.008975162042 -0.00050009999) -(0.01515151515 0.009429475607 -0.00050009999) -(0.01515151515 0.009695336429 -0.00050009999) -(0.01515151515 0.00984573433 -0.00050009999) -(0.01515151515 0.009929188095 -0.00050009999) -(0.01515151515 0.009975 -0.00050009999) -(0.01515151515 0.01 -0.00050009999) -(0.0202020202 0 -0.00050009999) -(0.0202020202 2.5e-05 -0.00050009999) -(0.0202020202 7.08119053e-05 -0.00050009999) -(0.0202020202 0.00015426567 -0.00050009999) -(0.0202020202 0.0003046635713 -0.00050009999) -(0.0202020202 0.0005705243934 -0.00050009999) -(0.0202020202 0.001024837958 -0.00050009999) -(0.0202020202 0.001758019915 -0.00050009999) -(0.0202020202 0.002838575912 -0.00050009999) -(0.0202020202 0.004235474916 -0.00050009999) -(0.0202020202 0.005764525084 -0.00050009999) -(0.0202020202 0.007161424088 -0.00050009999) -(0.0202020202 0.008241980085 -0.00050009999) -(0.0202020202 0.008975162042 -0.00050009999) -(0.0202020202 0.009429475607 -0.00050009999) -(0.0202020202 0.009695336429 -0.00050009999) -(0.0202020202 0.00984573433 -0.00050009999) -(0.0202020202 0.009929188095 -0.00050009999) -(0.0202020202 0.009975 -0.00050009999) -(0.0202020202 0.01 -0.00050009999) -(0.02525252525 0 -0.00050009999) -(0.02525252525 2.5e-05 -0.00050009999) -(0.02525252525 7.08119053e-05 -0.00050009999) -(0.02525252525 0.00015426567 -0.00050009999) -(0.02525252525 0.0003046635713 -0.00050009999) -(0.02525252525 0.0005705243934 -0.00050009999) -(0.02525252525 0.001024837958 -0.00050009999) -(0.02525252525 0.001758019915 -0.00050009999) -(0.02525252525 0.002838575912 -0.00050009999) -(0.02525252525 0.004235474916 -0.00050009999) -(0.02525252525 0.005764525084 -0.00050009999) -(0.02525252525 0.007161424088 -0.00050009999) -(0.02525252525 0.008241980085 -0.00050009999) -(0.02525252525 0.008975162042 -0.00050009999) -(0.02525252525 0.009429475607 -0.00050009999) -(0.02525252525 0.009695336429 -0.00050009999) -(0.02525252525 0.00984573433 -0.00050009999) -(0.02525252525 0.009929188095 -0.00050009999) -(0.02525252525 0.009975 -0.00050009999) -(0.02525252525 0.01 -0.00050009999) -(0.0303030303 0 -0.00050009999) -(0.0303030303 2.5e-05 -0.00050009999) -(0.0303030303 7.08119053e-05 -0.00050009999) -(0.0303030303 0.00015426567 -0.00050009999) -(0.0303030303 0.0003046635713 -0.00050009999) -(0.0303030303 0.0005705243934 -0.00050009999) -(0.0303030303 0.001024837958 -0.00050009999) -(0.0303030303 0.001758019915 -0.00050009999) -(0.0303030303 0.002838575912 -0.00050009999) -(0.0303030303 0.004235474916 -0.00050009999) -(0.0303030303 0.005764525084 -0.00050009999) -(0.0303030303 0.007161424088 -0.00050009999) -(0.0303030303 0.008241980085 -0.00050009999) -(0.0303030303 0.008975162042 -0.00050009999) -(0.0303030303 0.009429475607 -0.00050009999) -(0.0303030303 0.009695336429 -0.00050009999) -(0.0303030303 0.00984573433 -0.00050009999) -(0.0303030303 0.009929188095 -0.00050009999) -(0.0303030303 0.009975 -0.00050009999) -(0.0303030303 0.01 -0.00050009999) -(0.03535353535 0 -0.00050009999) -(0.03535353535 2.5e-05 -0.00050009999) -(0.03535353535 7.08119053e-05 -0.00050009999) -(0.03535353535 0.00015426567 -0.00050009999) -(0.03535353535 0.0003046635713 -0.00050009999) -(0.03535353535 0.0005705243934 -0.00050009999) -(0.03535353535 0.001024837958 -0.00050009999) -(0.03535353535 0.001758019915 -0.00050009999) -(0.03535353535 0.002838575912 -0.00050009999) -(0.03535353535 0.004235474916 -0.00050009999) -(0.03535353535 0.005764525084 -0.00050009999) -(0.03535353535 0.007161424088 -0.00050009999) -(0.03535353535 0.008241980085 -0.00050009999) -(0.03535353535 0.008975162042 -0.00050009999) -(0.03535353535 0.009429475607 -0.00050009999) -(0.03535353535 0.009695336429 -0.00050009999) -(0.03535353535 0.00984573433 -0.00050009999) -(0.03535353535 0.009929188095 -0.00050009999) -(0.03535353535 0.009975 -0.00050009999) -(0.03535353535 0.01 -0.00050009999) -(0.0404040404 0 -0.00050009999) -(0.0404040404 2.5e-05 -0.00050009999) -(0.0404040404 7.08119053e-05 -0.00050009999) -(0.0404040404 0.00015426567 -0.00050009999) -(0.0404040404 0.0003046635713 -0.00050009999) -(0.0404040404 0.0005705243934 -0.00050009999) -(0.0404040404 0.001024837958 -0.00050009999) -(0.0404040404 0.001758019915 -0.00050009999) -(0.0404040404 0.002838575912 -0.00050009999) -(0.0404040404 0.004235474916 -0.00050009999) -(0.0404040404 0.005764525084 -0.00050009999) -(0.0404040404 0.007161424088 -0.00050009999) -(0.0404040404 0.008241980085 -0.00050009999) -(0.0404040404 0.008975162042 -0.00050009999) -(0.0404040404 0.009429475607 -0.00050009999) -(0.0404040404 0.009695336429 -0.00050009999) -(0.0404040404 0.00984573433 -0.00050009999) -(0.0404040404 0.009929188095 -0.00050009999) -(0.0404040404 0.009975 -0.00050009999) -(0.0404040404 0.01 -0.00050009999) -(0.04545454545 0 -0.00050009999) -(0.04545454545 2.5e-05 -0.00050009999) -(0.04545454545 7.08119053e-05 -0.00050009999) -(0.04545454545 0.00015426567 -0.00050009999) -(0.04545454545 0.0003046635713 -0.00050009999) -(0.04545454545 0.0005705243934 -0.00050009999) -(0.04545454545 0.001024837958 -0.00050009999) -(0.04545454545 0.001758019915 -0.00050009999) -(0.04545454545 0.002838575912 -0.00050009999) -(0.04545454545 0.004235474916 -0.00050009999) -(0.04545454545 0.005764525084 -0.00050009999) -(0.04545454545 0.007161424088 -0.00050009999) -(0.04545454545 0.008241980085 -0.00050009999) -(0.04545454545 0.008975162042 -0.00050009999) -(0.04545454545 0.009429475607 -0.00050009999) -(0.04545454545 0.009695336429 -0.00050009999) -(0.04545454545 0.00984573433 -0.00050009999) -(0.04545454545 0.009929188095 -0.00050009999) -(0.04545454545 0.009975 -0.00050009999) -(0.04545454545 0.01 -0.00050009999) -(0.05050505051 0 -0.00050009999) -(0.05050505051 2.5e-05 -0.00050009999) -(0.05050505051 7.08119053e-05 -0.00050009999) -(0.05050505051 0.00015426567 -0.00050009999) -(0.05050505051 0.0003046635713 -0.00050009999) -(0.05050505051 0.0005705243934 -0.00050009999) -(0.05050505051 0.001024837958 -0.00050009999) -(0.05050505051 0.001758019915 -0.00050009999) -(0.05050505051 0.002838575912 -0.00050009999) -(0.05050505051 0.004235474916 -0.00050009999) -(0.05050505051 0.005764525084 -0.00050009999) -(0.05050505051 0.007161424088 -0.00050009999) -(0.05050505051 0.008241980085 -0.00050009999) -(0.05050505051 0.008975162042 -0.00050009999) -(0.05050505051 0.009429475607 -0.00050009999) -(0.05050505051 0.009695336429 -0.00050009999) -(0.05050505051 0.00984573433 -0.00050009999) -(0.05050505051 0.009929188095 -0.00050009999) -(0.05050505051 0.009975 -0.00050009999) -(0.05050505051 0.01 -0.00050009999) -(0.05555555556 0 -0.00050009999) -(0.05555555556 2.5e-05 -0.00050009999) -(0.05555555556 7.08119053e-05 -0.00050009999) -(0.05555555556 0.00015426567 -0.00050009999) -(0.05555555556 0.0003046635713 -0.00050009999) -(0.05555555556 0.0005705243934 -0.00050009999) -(0.05555555556 0.001024837958 -0.00050009999) -(0.05555555556 0.001758019915 -0.00050009999) -(0.05555555556 0.002838575912 -0.00050009999) -(0.05555555556 0.004235474916 -0.00050009999) -(0.05555555556 0.005764525084 -0.00050009999) -(0.05555555556 0.007161424088 -0.00050009999) -(0.05555555556 0.008241980085 -0.00050009999) -(0.05555555556 0.008975162042 -0.00050009999) -(0.05555555556 0.009429475607 -0.00050009999) -(0.05555555556 0.009695336429 -0.00050009999) -(0.05555555556 0.00984573433 -0.00050009999) -(0.05555555556 0.009929188095 -0.00050009999) -(0.05555555556 0.009975 -0.00050009999) -(0.05555555556 0.01 -0.00050009999) -(0.06060606061 0 -0.00050009999) -(0.06060606061 2.5e-05 -0.00050009999) -(0.06060606061 7.08119053e-05 -0.00050009999) -(0.06060606061 0.00015426567 -0.00050009999) -(0.06060606061 0.0003046635713 -0.00050009999) -(0.06060606061 0.0005705243934 -0.00050009999) -(0.06060606061 0.001024837958 -0.00050009999) -(0.06060606061 0.001758019915 -0.00050009999) -(0.06060606061 0.002838575912 -0.00050009999) -(0.06060606061 0.004235474916 -0.00050009999) -(0.06060606061 0.005764525084 -0.00050009999) -(0.06060606061 0.007161424088 -0.00050009999) -(0.06060606061 0.008241980085 -0.00050009999) -(0.06060606061 0.008975162042 -0.00050009999) -(0.06060606061 0.009429475607 -0.00050009999) -(0.06060606061 0.009695336429 -0.00050009999) -(0.06060606061 0.00984573433 -0.00050009999) -(0.06060606061 0.009929188095 -0.00050009999) -(0.06060606061 0.009975 -0.00050009999) -(0.06060606061 0.01 -0.00050009999) -(0.06565656566 0 -0.00050009999) -(0.06565656566 2.5e-05 -0.00050009999) -(0.06565656566 7.08119053e-05 -0.00050009999) -(0.06565656566 0.00015426567 -0.00050009999) -(0.06565656566 0.0003046635713 -0.00050009999) -(0.06565656566 0.0005705243934 -0.00050009999) -(0.06565656566 0.001024837958 -0.00050009999) -(0.06565656566 0.001758019915 -0.00050009999) -(0.06565656566 0.002838575912 -0.00050009999) -(0.06565656566 0.004235474916 -0.00050009999) -(0.06565656566 0.005764525084 -0.00050009999) -(0.06565656566 0.007161424088 -0.00050009999) -(0.06565656566 0.008241980085 -0.00050009999) -(0.06565656566 0.008975162042 -0.00050009999) -(0.06565656566 0.009429475607 -0.00050009999) -(0.06565656566 0.009695336429 -0.00050009999) -(0.06565656566 0.00984573433 -0.00050009999) -(0.06565656566 0.009929188095 -0.00050009999) -(0.06565656566 0.009975 -0.00050009999) -(0.06565656566 0.01 -0.00050009999) -(0.07070707071 0 -0.00050009999) -(0.07070707071 2.5e-05 -0.00050009999) -(0.07070707071 7.08119053e-05 -0.00050009999) -(0.07070707071 0.00015426567 -0.00050009999) -(0.07070707071 0.0003046635713 -0.00050009999) -(0.07070707071 0.0005705243934 -0.00050009999) -(0.07070707071 0.001024837958 -0.00050009999) -(0.07070707071 0.001758019915 -0.00050009999) -(0.07070707071 0.002838575912 -0.00050009999) -(0.07070707071 0.004235474916 -0.00050009999) -(0.07070707071 0.005764525084 -0.00050009999) -(0.07070707071 0.007161424088 -0.00050009999) -(0.07070707071 0.008241980085 -0.00050009999) -(0.07070707071 0.008975162042 -0.00050009999) -(0.07070707071 0.009429475607 -0.00050009999) -(0.07070707071 0.009695336429 -0.00050009999) -(0.07070707071 0.00984573433 -0.00050009999) -(0.07070707071 0.009929188095 -0.00050009999) -(0.07070707071 0.009975 -0.00050009999) -(0.07070707071 0.01 -0.00050009999) -(0.07575757576 0 -0.00050009999) -(0.07575757576 2.5e-05 -0.00050009999) -(0.07575757576 7.08119053e-05 -0.00050009999) -(0.07575757576 0.00015426567 -0.00050009999) -(0.07575757576 0.0003046635713 -0.00050009999) -(0.07575757576 0.0005705243934 -0.00050009999) -(0.07575757576 0.001024837958 -0.00050009999) -(0.07575757576 0.001758019915 -0.00050009999) -(0.07575757576 0.002838575912 -0.00050009999) -(0.07575757576 0.004235474916 -0.00050009999) -(0.07575757576 0.005764525084 -0.00050009999) -(0.07575757576 0.007161424088 -0.00050009999) -(0.07575757576 0.008241980085 -0.00050009999) -(0.07575757576 0.008975162042 -0.00050009999) -(0.07575757576 0.009429475607 -0.00050009999) -(0.07575757576 0.009695336429 -0.00050009999) -(0.07575757576 0.00984573433 -0.00050009999) -(0.07575757576 0.009929188095 -0.00050009999) -(0.07575757576 0.009975 -0.00050009999) -(0.07575757576 0.01 -0.00050009999) -(0.08080808081 0 -0.00050009999) -(0.08080808081 2.5e-05 -0.00050009999) -(0.08080808081 7.08119053e-05 -0.00050009999) -(0.08080808081 0.00015426567 -0.00050009999) -(0.08080808081 0.0003046635713 -0.00050009999) -(0.08080808081 0.0005705243934 -0.00050009999) -(0.08080808081 0.001024837958 -0.00050009999) -(0.08080808081 0.001758019915 -0.00050009999) -(0.08080808081 0.002838575912 -0.00050009999) -(0.08080808081 0.004235474916 -0.00050009999) -(0.08080808081 0.005764525084 -0.00050009999) -(0.08080808081 0.007161424088 -0.00050009999) -(0.08080808081 0.008241980085 -0.00050009999) -(0.08080808081 0.008975162042 -0.00050009999) -(0.08080808081 0.009429475607 -0.00050009999) -(0.08080808081 0.009695336429 -0.00050009999) -(0.08080808081 0.00984573433 -0.00050009999) -(0.08080808081 0.009929188095 -0.00050009999) -(0.08080808081 0.009975 -0.00050009999) -(0.08080808081 0.01 -0.00050009999) -(0.08585858586 0 -0.00050009999) -(0.08585858586 2.5e-05 -0.00050009999) -(0.08585858586 7.08119053e-05 -0.00050009999) -(0.08585858586 0.00015426567 -0.00050009999) -(0.08585858586 0.0003046635713 -0.00050009999) -(0.08585858586 0.0005705243934 -0.00050009999) -(0.08585858586 0.001024837958 -0.00050009999) -(0.08585858586 0.001758019915 -0.00050009999) -(0.08585858586 0.002838575912 -0.00050009999) -(0.08585858586 0.004235474916 -0.00050009999) -(0.08585858586 0.005764525084 -0.00050009999) -(0.08585858586 0.007161424088 -0.00050009999) -(0.08585858586 0.008241980085 -0.00050009999) -(0.08585858586 0.008975162042 -0.00050009999) -(0.08585858586 0.009429475607 -0.00050009999) -(0.08585858586 0.009695336429 -0.00050009999) -(0.08585858586 0.00984573433 -0.00050009999) -(0.08585858586 0.009929188095 -0.00050009999) -(0.08585858586 0.009975 -0.00050009999) -(0.08585858586 0.01 -0.00050009999) -(0.09090909091 0 -0.00050009999) -(0.09090909091 2.5e-05 -0.00050009999) -(0.09090909091 7.08119053e-05 -0.00050009999) -(0.09090909091 0.00015426567 -0.00050009999) -(0.09090909091 0.0003046635713 -0.00050009999) -(0.09090909091 0.0005705243934 -0.00050009999) -(0.09090909091 0.001024837958 -0.00050009999) -(0.09090909091 0.001758019915 -0.00050009999) -(0.09090909091 0.002838575912 -0.00050009999) -(0.09090909091 0.004235474916 -0.00050009999) -(0.09090909091 0.005764525084 -0.00050009999) -(0.09090909091 0.007161424088 -0.00050009999) -(0.09090909091 0.008241980085 -0.00050009999) -(0.09090909091 0.008975162042 -0.00050009999) -(0.09090909091 0.009429475607 -0.00050009999) -(0.09090909091 0.009695336429 -0.00050009999) -(0.09090909091 0.00984573433 -0.00050009999) -(0.09090909091 0.009929188095 -0.00050009999) -(0.09090909091 0.009975 -0.00050009999) -(0.09090909091 0.01 -0.00050009999) -(0.09595959596 0 -0.00050009999) -(0.09595959596 2.5e-05 -0.00050009999) -(0.09595959596 7.08119053e-05 -0.00050009999) -(0.09595959596 0.00015426567 -0.00050009999) -(0.09595959596 0.0003046635713 -0.00050009999) -(0.09595959596 0.0005705243934 -0.00050009999) -(0.09595959596 0.001024837958 -0.00050009999) -(0.09595959596 0.001758019915 -0.00050009999) -(0.09595959596 0.002838575912 -0.00050009999) -(0.09595959596 0.004235474916 -0.00050009999) -(0.09595959596 0.005764525084 -0.00050009999) -(0.09595959596 0.007161424088 -0.00050009999) -(0.09595959596 0.008241980085 -0.00050009999) -(0.09595959596 0.008975162042 -0.00050009999) -(0.09595959596 0.009429475607 -0.00050009999) -(0.09595959596 0.009695336429 -0.00050009999) -(0.09595959596 0.00984573433 -0.00050009999) -(0.09595959596 0.009929188095 -0.00050009999) -(0.09595959596 0.009975 -0.00050009999) -(0.09595959596 0.01 -0.00050009999) -(0.101010101 0 -0.00050009999) -(0.101010101 2.5e-05 -0.00050009999) -(0.101010101 7.08119053e-05 -0.00050009999) -(0.101010101 0.00015426567 -0.00050009999) -(0.101010101 0.0003046635713 -0.00050009999) -(0.101010101 0.0005705243934 -0.00050009999) -(0.101010101 0.001024837958 -0.00050009999) -(0.101010101 0.001758019915 -0.00050009999) -(0.101010101 0.002838575912 -0.00050009999) -(0.101010101 0.004235474916 -0.00050009999) -(0.101010101 0.005764525084 -0.00050009999) -(0.101010101 0.007161424088 -0.00050009999) -(0.101010101 0.008241980085 -0.00050009999) -(0.101010101 0.008975162042 -0.00050009999) -(0.101010101 0.009429475607 -0.00050009999) -(0.101010101 0.009695336429 -0.00050009999) -(0.101010101 0.00984573433 -0.00050009999) -(0.101010101 0.009929188095 -0.00050009999) -(0.101010101 0.009975 -0.00050009999) -(0.101010101 0.01 -0.00050009999) -(0.1060606061 0 -0.00050009999) -(0.1060606061 2.5e-05 -0.00050009999) -(0.1060606061 7.08119053e-05 -0.00050009999) -(0.1060606061 0.00015426567 -0.00050009999) -(0.1060606061 0.0003046635713 -0.00050009999) -(0.1060606061 0.0005705243934 -0.00050009999) -(0.1060606061 0.001024837958 -0.00050009999) -(0.1060606061 0.001758019915 -0.00050009999) -(0.1060606061 0.002838575912 -0.00050009999) -(0.1060606061 0.004235474916 -0.00050009999) -(0.1060606061 0.005764525084 -0.00050009999) -(0.1060606061 0.007161424088 -0.00050009999) -(0.1060606061 0.008241980085 -0.00050009999) -(0.1060606061 0.008975162042 -0.00050009999) -(0.1060606061 0.009429475607 -0.00050009999) -(0.1060606061 0.009695336429 -0.00050009999) -(0.1060606061 0.00984573433 -0.00050009999) -(0.1060606061 0.009929188095 -0.00050009999) -(0.1060606061 0.009975 -0.00050009999) -(0.1060606061 0.01 -0.00050009999) -(0.1111111111 0 -0.00050009999) -(0.1111111111 2.5e-05 -0.00050009999) -(0.1111111111 7.08119053e-05 -0.00050009999) -(0.1111111111 0.00015426567 -0.00050009999) -(0.1111111111 0.0003046635713 -0.00050009999) -(0.1111111111 0.0005705243934 -0.00050009999) -(0.1111111111 0.001024837958 -0.00050009999) -(0.1111111111 0.001758019915 -0.00050009999) -(0.1111111111 0.002838575912 -0.00050009999) -(0.1111111111 0.004235474916 -0.00050009999) -(0.1111111111 0.005764525084 -0.00050009999) -(0.1111111111 0.007161424088 -0.00050009999) -(0.1111111111 0.008241980085 -0.00050009999) -(0.1111111111 0.008975162042 -0.00050009999) -(0.1111111111 0.009429475607 -0.00050009999) -(0.1111111111 0.009695336429 -0.00050009999) -(0.1111111111 0.00984573433 -0.00050009999) -(0.1111111111 0.009929188095 -0.00050009999) -(0.1111111111 0.009975 -0.00050009999) -(0.1111111111 0.01 -0.00050009999) -(0.1161616162 0 -0.00050009999) -(0.1161616162 2.5e-05 -0.00050009999) -(0.1161616162 7.08119053e-05 -0.00050009999) -(0.1161616162 0.00015426567 -0.00050009999) -(0.1161616162 0.0003046635713 -0.00050009999) -(0.1161616162 0.0005705243934 -0.00050009999) -(0.1161616162 0.001024837958 -0.00050009999) -(0.1161616162 0.001758019915 -0.00050009999) -(0.1161616162 0.002838575912 -0.00050009999) -(0.1161616162 0.004235474916 -0.00050009999) -(0.1161616162 0.005764525084 -0.00050009999) -(0.1161616162 0.007161424088 -0.00050009999) -(0.1161616162 0.008241980085 -0.00050009999) -(0.1161616162 0.008975162042 -0.00050009999) -(0.1161616162 0.009429475607 -0.00050009999) -(0.1161616162 0.009695336429 -0.00050009999) -(0.1161616162 0.00984573433 -0.00050009999) -(0.1161616162 0.009929188095 -0.00050009999) -(0.1161616162 0.009975 -0.00050009999) -(0.1161616162 0.01 -0.00050009999) -(0.1212121212 0 -0.00050009999) -(0.1212121212 2.5e-05 -0.00050009999) -(0.1212121212 7.08119053e-05 -0.00050009999) -(0.1212121212 0.00015426567 -0.00050009999) -(0.1212121212 0.0003046635713 -0.00050009999) -(0.1212121212 0.0005705243934 -0.00050009999) -(0.1212121212 0.001024837958 -0.00050009999) -(0.1212121212 0.001758019915 -0.00050009999) -(0.1212121212 0.002838575912 -0.00050009999) -(0.1212121212 0.004235474916 -0.00050009999) -(0.1212121212 0.005764525084 -0.00050009999) -(0.1212121212 0.007161424088 -0.00050009999) -(0.1212121212 0.008241980085 -0.00050009999) -(0.1212121212 0.008975162042 -0.00050009999) -(0.1212121212 0.009429475607 -0.00050009999) -(0.1212121212 0.009695336429 -0.00050009999) -(0.1212121212 0.00984573433 -0.00050009999) -(0.1212121212 0.009929188095 -0.00050009999) -(0.1212121212 0.009975 -0.00050009999) -(0.1212121212 0.01 -0.00050009999) -(0.1262626263 0 -0.00050009999) -(0.1262626263 2.5e-05 -0.00050009999) -(0.1262626263 7.08119053e-05 -0.00050009999) -(0.1262626263 0.00015426567 -0.00050009999) -(0.1262626263 0.0003046635713 -0.00050009999) -(0.1262626263 0.0005705243934 -0.00050009999) -(0.1262626263 0.001024837958 -0.00050009999) -(0.1262626263 0.001758019915 -0.00050009999) -(0.1262626263 0.002838575912 -0.00050009999) -(0.1262626263 0.004235474916 -0.00050009999) -(0.1262626263 0.005764525084 -0.00050009999) -(0.1262626263 0.007161424088 -0.00050009999) -(0.1262626263 0.008241980085 -0.00050009999) -(0.1262626263 0.008975162042 -0.00050009999) -(0.1262626263 0.009429475607 -0.00050009999) -(0.1262626263 0.009695336429 -0.00050009999) -(0.1262626263 0.00984573433 -0.00050009999) -(0.1262626263 0.009929188095 -0.00050009999) -(0.1262626263 0.009975 -0.00050009999) -(0.1262626263 0.01 -0.00050009999) -(0.1313131313 0 -0.00050009999) -(0.1313131313 2.5e-05 -0.00050009999) -(0.1313131313 7.08119053e-05 -0.00050009999) -(0.1313131313 0.00015426567 -0.00050009999) -(0.1313131313 0.0003046635713 -0.00050009999) -(0.1313131313 0.0005705243934 -0.00050009999) -(0.1313131313 0.001024837958 -0.00050009999) -(0.1313131313 0.001758019915 -0.00050009999) -(0.1313131313 0.002838575912 -0.00050009999) -(0.1313131313 0.004235474916 -0.00050009999) -(0.1313131313 0.005764525084 -0.00050009999) -(0.1313131313 0.007161424088 -0.00050009999) -(0.1313131313 0.008241980085 -0.00050009999) -(0.1313131313 0.008975162042 -0.00050009999) -(0.1313131313 0.009429475607 -0.00050009999) -(0.1313131313 0.009695336429 -0.00050009999) -(0.1313131313 0.00984573433 -0.00050009999) -(0.1313131313 0.009929188095 -0.00050009999) -(0.1313131313 0.009975 -0.00050009999) -(0.1313131313 0.01 -0.00050009999) -(0.1363636364 0 -0.00050009999) -(0.1363636364 2.5e-05 -0.00050009999) -(0.1363636364 7.08119053e-05 -0.00050009999) -(0.1363636364 0.00015426567 -0.00050009999) -(0.1363636364 0.0003046635713 -0.00050009999) -(0.1363636364 0.0005705243934 -0.00050009999) -(0.1363636364 0.001024837958 -0.00050009999) -(0.1363636364 0.001758019915 -0.00050009999) -(0.1363636364 0.002838575912 -0.00050009999) -(0.1363636364 0.004235474916 -0.00050009999) -(0.1363636364 0.005764525084 -0.00050009999) -(0.1363636364 0.007161424088 -0.00050009999) -(0.1363636364 0.008241980085 -0.00050009999) -(0.1363636364 0.008975162042 -0.00050009999) -(0.1363636364 0.009429475607 -0.00050009999) -(0.1363636364 0.009695336429 -0.00050009999) -(0.1363636364 0.00984573433 -0.00050009999) -(0.1363636364 0.009929188095 -0.00050009999) -(0.1363636364 0.009975 -0.00050009999) -(0.1363636364 0.01 -0.00050009999) -(0.1414141414 0 -0.00050009999) -(0.1414141414 2.5e-05 -0.00050009999) -(0.1414141414 7.08119053e-05 -0.00050009999) -(0.1414141414 0.00015426567 -0.00050009999) -(0.1414141414 0.0003046635713 -0.00050009999) -(0.1414141414 0.0005705243934 -0.00050009999) -(0.1414141414 0.001024837958 -0.00050009999) -(0.1414141414 0.001758019915 -0.00050009999) -(0.1414141414 0.002838575912 -0.00050009999) -(0.1414141414 0.004235474916 -0.00050009999) -(0.1414141414 0.005764525084 -0.00050009999) -(0.1414141414 0.007161424088 -0.00050009999) -(0.1414141414 0.008241980085 -0.00050009999) -(0.1414141414 0.008975162042 -0.00050009999) -(0.1414141414 0.009429475607 -0.00050009999) -(0.1414141414 0.009695336429 -0.00050009999) -(0.1414141414 0.00984573433 -0.00050009999) -(0.1414141414 0.009929188095 -0.00050009999) -(0.1414141414 0.009975 -0.00050009999) -(0.1414141414 0.01 -0.00050009999) -(0.1464646465 0 -0.00050009999) -(0.1464646465 2.5e-05 -0.00050009999) -(0.1464646465 7.08119053e-05 -0.00050009999) -(0.1464646465 0.00015426567 -0.00050009999) -(0.1464646465 0.0003046635713 -0.00050009999) -(0.1464646465 0.0005705243934 -0.00050009999) -(0.1464646465 0.001024837958 -0.00050009999) -(0.1464646465 0.001758019915 -0.00050009999) -(0.1464646465 0.002838575912 -0.00050009999) -(0.1464646465 0.004235474916 -0.00050009999) -(0.1464646465 0.005764525084 -0.00050009999) -(0.1464646465 0.007161424088 -0.00050009999) -(0.1464646465 0.008241980085 -0.00050009999) -(0.1464646465 0.008975162042 -0.00050009999) -(0.1464646465 0.009429475607 -0.00050009999) -(0.1464646465 0.009695336429 -0.00050009999) -(0.1464646465 0.00984573433 -0.00050009999) -(0.1464646465 0.009929188095 -0.00050009999) -(0.1464646465 0.009975 -0.00050009999) -(0.1464646465 0.01 -0.00050009999) -(0.1515151515 0 -0.00050009999) -(0.1515151515 2.5e-05 -0.00050009999) -(0.1515151515 7.08119053e-05 -0.00050009999) -(0.1515151515 0.00015426567 -0.00050009999) -(0.1515151515 0.0003046635713 -0.00050009999) -(0.1515151515 0.0005705243934 -0.00050009999) -(0.1515151515 0.001024837958 -0.00050009999) -(0.1515151515 0.001758019915 -0.00050009999) -(0.1515151515 0.002838575912 -0.00050009999) -(0.1515151515 0.004235474916 -0.00050009999) -(0.1515151515 0.005764525084 -0.00050009999) -(0.1515151515 0.007161424088 -0.00050009999) -(0.1515151515 0.008241980085 -0.00050009999) -(0.1515151515 0.008975162042 -0.00050009999) -(0.1515151515 0.009429475607 -0.00050009999) -(0.1515151515 0.009695336429 -0.00050009999) -(0.1515151515 0.00984573433 -0.00050009999) -(0.1515151515 0.009929188095 -0.00050009999) -(0.1515151515 0.009975 -0.00050009999) -(0.1515151515 0.01 -0.00050009999) -(0.1565656566 0 -0.00050009999) -(0.1565656566 2.5e-05 -0.00050009999) -(0.1565656566 7.08119053e-05 -0.00050009999) -(0.1565656566 0.00015426567 -0.00050009999) -(0.1565656566 0.0003046635713 -0.00050009999) -(0.1565656566 0.0005705243934 -0.00050009999) -(0.1565656566 0.001024837958 -0.00050009999) -(0.1565656566 0.001758019915 -0.00050009999) -(0.1565656566 0.002838575912 -0.00050009999) -(0.1565656566 0.004235474916 -0.00050009999) -(0.1565656566 0.005764525084 -0.00050009999) -(0.1565656566 0.007161424088 -0.00050009999) -(0.1565656566 0.008241980085 -0.00050009999) -(0.1565656566 0.008975162042 -0.00050009999) -(0.1565656566 0.009429475607 -0.00050009999) -(0.1565656566 0.009695336429 -0.00050009999) -(0.1565656566 0.00984573433 -0.00050009999) -(0.1565656566 0.009929188095 -0.00050009999) -(0.1565656566 0.009975 -0.00050009999) -(0.1565656566 0.01 -0.00050009999) -(0.1616161616 0 -0.00050009999) -(0.1616161616 2.5e-05 -0.00050009999) -(0.1616161616 7.08119053e-05 -0.00050009999) -(0.1616161616 0.00015426567 -0.00050009999) -(0.1616161616 0.0003046635713 -0.00050009999) -(0.1616161616 0.0005705243934 -0.00050009999) -(0.1616161616 0.001024837958 -0.00050009999) -(0.1616161616 0.001758019915 -0.00050009999) -(0.1616161616 0.002838575912 -0.00050009999) -(0.1616161616 0.004235474916 -0.00050009999) -(0.1616161616 0.005764525084 -0.00050009999) -(0.1616161616 0.007161424088 -0.00050009999) -(0.1616161616 0.008241980085 -0.00050009999) -(0.1616161616 0.008975162042 -0.00050009999) -(0.1616161616 0.009429475607 -0.00050009999) -(0.1616161616 0.009695336429 -0.00050009999) -(0.1616161616 0.00984573433 -0.00050009999) -(0.1616161616 0.009929188095 -0.00050009999) -(0.1616161616 0.009975 -0.00050009999) -(0.1616161616 0.01 -0.00050009999) -(0.1666666667 0 -0.00050009999) -(0.1666666667 2.5e-05 -0.00050009999) -(0.1666666667 7.08119053e-05 -0.00050009999) -(0.1666666667 0.00015426567 -0.00050009999) -(0.1666666667 0.0003046635713 -0.00050009999) -(0.1666666667 0.0005705243934 -0.00050009999) -(0.1666666667 0.001024837958 -0.00050009999) -(0.1666666667 0.001758019915 -0.00050009999) -(0.1666666667 0.002838575912 -0.00050009999) -(0.1666666667 0.004235474916 -0.00050009999) -(0.1666666667 0.005764525084 -0.00050009999) -(0.1666666667 0.007161424088 -0.00050009999) -(0.1666666667 0.008241980085 -0.00050009999) -(0.1666666667 0.008975162042 -0.00050009999) -(0.1666666667 0.009429475607 -0.00050009999) -(0.1666666667 0.009695336429 -0.00050009999) -(0.1666666667 0.00984573433 -0.00050009999) -(0.1666666667 0.009929188095 -0.00050009999) -(0.1666666667 0.009975 -0.00050009999) -(0.1666666667 0.01 -0.00050009999) -(0.1717171717 0 -0.00050009999) -(0.1717171717 2.5e-05 -0.00050009999) -(0.1717171717 7.08119053e-05 -0.00050009999) -(0.1717171717 0.00015426567 -0.00050009999) -(0.1717171717 0.0003046635713 -0.00050009999) -(0.1717171717 0.0005705243934 -0.00050009999) -(0.1717171717 0.001024837958 -0.00050009999) -(0.1717171717 0.001758019915 -0.00050009999) -(0.1717171717 0.002838575912 -0.00050009999) -(0.1717171717 0.004235474916 -0.00050009999) -(0.1717171717 0.005764525084 -0.00050009999) -(0.1717171717 0.007161424088 -0.00050009999) -(0.1717171717 0.008241980085 -0.00050009999) -(0.1717171717 0.008975162042 -0.00050009999) -(0.1717171717 0.009429475607 -0.00050009999) -(0.1717171717 0.009695336429 -0.00050009999) -(0.1717171717 0.00984573433 -0.00050009999) -(0.1717171717 0.009929188095 -0.00050009999) -(0.1717171717 0.009975 -0.00050009999) -(0.1717171717 0.01 -0.00050009999) -(0.1767676768 0 -0.00050009999) -(0.1767676768 2.5e-05 -0.00050009999) -(0.1767676768 7.08119053e-05 -0.00050009999) -(0.1767676768 0.00015426567 -0.00050009999) -(0.1767676768 0.0003046635713 -0.00050009999) -(0.1767676768 0.0005705243934 -0.00050009999) -(0.1767676768 0.001024837958 -0.00050009999) -(0.1767676768 0.001758019915 -0.00050009999) -(0.1767676768 0.002838575912 -0.00050009999) -(0.1767676768 0.004235474916 -0.00050009999) -(0.1767676768 0.005764525084 -0.00050009999) -(0.1767676768 0.007161424088 -0.00050009999) -(0.1767676768 0.008241980085 -0.00050009999) -(0.1767676768 0.008975162042 -0.00050009999) -(0.1767676768 0.009429475607 -0.00050009999) -(0.1767676768 0.009695336429 -0.00050009999) -(0.1767676768 0.00984573433 -0.00050009999) -(0.1767676768 0.009929188095 -0.00050009999) -(0.1767676768 0.009975 -0.00050009999) -(0.1767676768 0.01 -0.00050009999) -(0.1818181818 0 -0.00050009999) -(0.1818181818 2.5e-05 -0.00050009999) -(0.1818181818 7.08119053e-05 -0.00050009999) -(0.1818181818 0.00015426567 -0.00050009999) -(0.1818181818 0.0003046635713 -0.00050009999) -(0.1818181818 0.0005705243934 -0.00050009999) -(0.1818181818 0.001024837958 -0.00050009999) -(0.1818181818 0.001758019915 -0.00050009999) -(0.1818181818 0.002838575912 -0.00050009999) -(0.1818181818 0.004235474916 -0.00050009999) -(0.1818181818 0.005764525084 -0.00050009999) -(0.1818181818 0.007161424088 -0.00050009999) -(0.1818181818 0.008241980085 -0.00050009999) -(0.1818181818 0.008975162042 -0.00050009999) -(0.1818181818 0.009429475607 -0.00050009999) -(0.1818181818 0.009695336429 -0.00050009999) -(0.1818181818 0.00984573433 -0.00050009999) -(0.1818181818 0.009929188095 -0.00050009999) -(0.1818181818 0.009975 -0.00050009999) -(0.1818181818 0.01 -0.00050009999) -(0.1868686869 0 -0.00050009999) -(0.1868686869 2.5e-05 -0.00050009999) -(0.1868686869 7.08119053e-05 -0.00050009999) -(0.1868686869 0.00015426567 -0.00050009999) -(0.1868686869 0.0003046635713 -0.00050009999) -(0.1868686869 0.0005705243934 -0.00050009999) -(0.1868686869 0.001024837958 -0.00050009999) -(0.1868686869 0.001758019915 -0.00050009999) -(0.1868686869 0.002838575912 -0.00050009999) -(0.1868686869 0.004235474916 -0.00050009999) -(0.1868686869 0.005764525084 -0.00050009999) -(0.1868686869 0.007161424088 -0.00050009999) -(0.1868686869 0.008241980085 -0.00050009999) -(0.1868686869 0.008975162042 -0.00050009999) -(0.1868686869 0.009429475607 -0.00050009999) -(0.1868686869 0.009695336429 -0.00050009999) -(0.1868686869 0.00984573433 -0.00050009999) -(0.1868686869 0.009929188095 -0.00050009999) -(0.1868686869 0.009975 -0.00050009999) -(0.1868686869 0.01 -0.00050009999) -(0.1919191919 0 -0.00050009999) -(0.1919191919 2.5e-05 -0.00050009999) -(0.1919191919 7.08119053e-05 -0.00050009999) -(0.1919191919 0.00015426567 -0.00050009999) -(0.1919191919 0.0003046635713 -0.00050009999) -(0.1919191919 0.0005705243934 -0.00050009999) -(0.1919191919 0.001024837958 -0.00050009999) -(0.1919191919 0.001758019915 -0.00050009999) -(0.1919191919 0.002838575912 -0.00050009999) -(0.1919191919 0.004235474916 -0.00050009999) -(0.1919191919 0.005764525084 -0.00050009999) -(0.1919191919 0.007161424088 -0.00050009999) -(0.1919191919 0.008241980085 -0.00050009999) -(0.1919191919 0.008975162042 -0.00050009999) -(0.1919191919 0.009429475607 -0.00050009999) -(0.1919191919 0.009695336429 -0.00050009999) -(0.1919191919 0.00984573433 -0.00050009999) -(0.1919191919 0.009929188095 -0.00050009999) -(0.1919191919 0.009975 -0.00050009999) -(0.1919191919 0.01 -0.00050009999) -(0.196969697 0 -0.00050009999) -(0.196969697 2.5e-05 -0.00050009999) -(0.196969697 7.08119053e-05 -0.00050009999) -(0.196969697 0.00015426567 -0.00050009999) -(0.196969697 0.0003046635713 -0.00050009999) -(0.196969697 0.0005705243934 -0.00050009999) -(0.196969697 0.001024837958 -0.00050009999) -(0.196969697 0.001758019915 -0.00050009999) -(0.196969697 0.002838575912 -0.00050009999) -(0.196969697 0.004235474916 -0.00050009999) -(0.196969697 0.005764525084 -0.00050009999) -(0.196969697 0.007161424088 -0.00050009999) -(0.196969697 0.008241980085 -0.00050009999) -(0.196969697 0.008975162042 -0.00050009999) -(0.196969697 0.009429475607 -0.00050009999) -(0.196969697 0.009695336429 -0.00050009999) -(0.196969697 0.00984573433 -0.00050009999) -(0.196969697 0.009929188095 -0.00050009999) -(0.196969697 0.009975 -0.00050009999) -(0.196969697 0.01 -0.00050009999) -(0.202020202 0 -0.00050009999) -(0.202020202 2.5e-05 -0.00050009999) -(0.202020202 7.08119053e-05 -0.00050009999) -(0.202020202 0.00015426567 -0.00050009999) -(0.202020202 0.0003046635713 -0.00050009999) -(0.202020202 0.0005705243934 -0.00050009999) -(0.202020202 0.001024837958 -0.00050009999) -(0.202020202 0.001758019915 -0.00050009999) -(0.202020202 0.002838575912 -0.00050009999) -(0.202020202 0.004235474916 -0.00050009999) -(0.202020202 0.005764525084 -0.00050009999) -(0.202020202 0.007161424088 -0.00050009999) -(0.202020202 0.008241980085 -0.00050009999) -(0.202020202 0.008975162042 -0.00050009999) -(0.202020202 0.009429475607 -0.00050009999) -(0.202020202 0.009695336429 -0.00050009999) -(0.202020202 0.00984573433 -0.00050009999) -(0.202020202 0.009929188095 -0.00050009999) -(0.202020202 0.009975 -0.00050009999) -(0.202020202 0.01 -0.00050009999) -(0.2070707071 0 -0.00050009999) -(0.2070707071 2.5e-05 -0.00050009999) -(0.2070707071 7.08119053e-05 -0.00050009999) -(0.2070707071 0.00015426567 -0.00050009999) -(0.2070707071 0.0003046635713 -0.00050009999) -(0.2070707071 0.0005705243934 -0.00050009999) -(0.2070707071 0.001024837958 -0.00050009999) -(0.2070707071 0.001758019915 -0.00050009999) -(0.2070707071 0.002838575912 -0.00050009999) -(0.2070707071 0.004235474916 -0.00050009999) -(0.2070707071 0.005764525084 -0.00050009999) -(0.2070707071 0.007161424088 -0.00050009999) -(0.2070707071 0.008241980085 -0.00050009999) -(0.2070707071 0.008975162042 -0.00050009999) -(0.2070707071 0.009429475607 -0.00050009999) -(0.2070707071 0.009695336429 -0.00050009999) -(0.2070707071 0.00984573433 -0.00050009999) -(0.2070707071 0.009929188095 -0.00050009999) -(0.2070707071 0.009975 -0.00050009999) -(0.2070707071 0.01 -0.00050009999) -(0.2121212121 0 -0.00050009999) -(0.2121212121 2.5e-05 -0.00050009999) -(0.2121212121 7.08119053e-05 -0.00050009999) -(0.2121212121 0.00015426567 -0.00050009999) -(0.2121212121 0.0003046635713 -0.00050009999) -(0.2121212121 0.0005705243934 -0.00050009999) -(0.2121212121 0.001024837958 -0.00050009999) -(0.2121212121 0.001758019915 -0.00050009999) -(0.2121212121 0.002838575912 -0.00050009999) -(0.2121212121 0.004235474916 -0.00050009999) -(0.2121212121 0.005764525084 -0.00050009999) -(0.2121212121 0.007161424088 -0.00050009999) -(0.2121212121 0.008241980085 -0.00050009999) -(0.2121212121 0.008975162042 -0.00050009999) -(0.2121212121 0.009429475607 -0.00050009999) -(0.2121212121 0.009695336429 -0.00050009999) -(0.2121212121 0.00984573433 -0.00050009999) -(0.2121212121 0.009929188095 -0.00050009999) -(0.2121212121 0.009975 -0.00050009999) -(0.2121212121 0.01 -0.00050009999) -(0.2171717172 0 -0.00050009999) -(0.2171717172 2.5e-05 -0.00050009999) -(0.2171717172 7.08119053e-05 -0.00050009999) -(0.2171717172 0.00015426567 -0.00050009999) -(0.2171717172 0.0003046635713 -0.00050009999) -(0.2171717172 0.0005705243934 -0.00050009999) -(0.2171717172 0.001024837958 -0.00050009999) -(0.2171717172 0.001758019915 -0.00050009999) -(0.2171717172 0.002838575912 -0.00050009999) -(0.2171717172 0.004235474916 -0.00050009999) -(0.2171717172 0.005764525084 -0.00050009999) -(0.2171717172 0.007161424088 -0.00050009999) -(0.2171717172 0.008241980085 -0.00050009999) -(0.2171717172 0.008975162042 -0.00050009999) -(0.2171717172 0.009429475607 -0.00050009999) -(0.2171717172 0.009695336429 -0.00050009999) -(0.2171717172 0.00984573433 -0.00050009999) -(0.2171717172 0.009929188095 -0.00050009999) -(0.2171717172 0.009975 -0.00050009999) -(0.2171717172 0.01 -0.00050009999) -(0.2222222222 0 -0.00050009999) -(0.2222222222 2.5e-05 -0.00050009999) -(0.2222222222 7.08119053e-05 -0.00050009999) -(0.2222222222 0.00015426567 -0.00050009999) -(0.2222222222 0.0003046635713 -0.00050009999) -(0.2222222222 0.0005705243934 -0.00050009999) -(0.2222222222 0.001024837958 -0.00050009999) -(0.2222222222 0.001758019915 -0.00050009999) -(0.2222222222 0.002838575912 -0.00050009999) -(0.2222222222 0.004235474916 -0.00050009999) -(0.2222222222 0.005764525084 -0.00050009999) -(0.2222222222 0.007161424088 -0.00050009999) -(0.2222222222 0.008241980085 -0.00050009999) -(0.2222222222 0.008975162042 -0.00050009999) -(0.2222222222 0.009429475607 -0.00050009999) -(0.2222222222 0.009695336429 -0.00050009999) -(0.2222222222 0.00984573433 -0.00050009999) -(0.2222222222 0.009929188095 -0.00050009999) -(0.2222222222 0.009975 -0.00050009999) -(0.2222222222 0.01 -0.00050009999) -(0.2272727273 0 -0.00050009999) -(0.2272727273 2.5e-05 -0.00050009999) -(0.2272727273 7.08119053e-05 -0.00050009999) -(0.2272727273 0.00015426567 -0.00050009999) -(0.2272727273 0.0003046635713 -0.00050009999) -(0.2272727273 0.0005705243934 -0.00050009999) -(0.2272727273 0.001024837958 -0.00050009999) -(0.2272727273 0.001758019915 -0.00050009999) -(0.2272727273 0.002838575912 -0.00050009999) -(0.2272727273 0.004235474916 -0.00050009999) -(0.2272727273 0.005764525084 -0.00050009999) -(0.2272727273 0.007161424088 -0.00050009999) -(0.2272727273 0.008241980085 -0.00050009999) -(0.2272727273 0.008975162042 -0.00050009999) -(0.2272727273 0.009429475607 -0.00050009999) -(0.2272727273 0.009695336429 -0.00050009999) -(0.2272727273 0.00984573433 -0.00050009999) -(0.2272727273 0.009929188095 -0.00050009999) -(0.2272727273 0.009975 -0.00050009999) -(0.2272727273 0.01 -0.00050009999) -(0.2323232323 0 -0.00050009999) -(0.2323232323 2.5e-05 -0.00050009999) -(0.2323232323 7.08119053e-05 -0.00050009999) -(0.2323232323 0.00015426567 -0.00050009999) -(0.2323232323 0.0003046635713 -0.00050009999) -(0.2323232323 0.0005705243934 -0.00050009999) -(0.2323232323 0.001024837958 -0.00050009999) -(0.2323232323 0.001758019915 -0.00050009999) -(0.2323232323 0.002838575912 -0.00050009999) -(0.2323232323 0.004235474916 -0.00050009999) -(0.2323232323 0.005764525084 -0.00050009999) -(0.2323232323 0.007161424088 -0.00050009999) -(0.2323232323 0.008241980085 -0.00050009999) -(0.2323232323 0.008975162042 -0.00050009999) -(0.2323232323 0.009429475607 -0.00050009999) -(0.2323232323 0.009695336429 -0.00050009999) -(0.2323232323 0.00984573433 -0.00050009999) -(0.2323232323 0.009929188095 -0.00050009999) -(0.2323232323 0.009975 -0.00050009999) -(0.2323232323 0.01 -0.00050009999) -(0.2373737374 0 -0.00050009999) -(0.2373737374 2.5e-05 -0.00050009999) -(0.2373737374 7.08119053e-05 -0.00050009999) -(0.2373737374 0.00015426567 -0.00050009999) -(0.2373737374 0.0003046635713 -0.00050009999) -(0.2373737374 0.0005705243934 -0.00050009999) -(0.2373737374 0.001024837958 -0.00050009999) -(0.2373737374 0.001758019915 -0.00050009999) -(0.2373737374 0.002838575912 -0.00050009999) -(0.2373737374 0.004235474916 -0.00050009999) -(0.2373737374 0.005764525084 -0.00050009999) -(0.2373737374 0.007161424088 -0.00050009999) -(0.2373737374 0.008241980085 -0.00050009999) -(0.2373737374 0.008975162042 -0.00050009999) -(0.2373737374 0.009429475607 -0.00050009999) -(0.2373737374 0.009695336429 -0.00050009999) -(0.2373737374 0.00984573433 -0.00050009999) -(0.2373737374 0.009929188095 -0.00050009999) -(0.2373737374 0.009975 -0.00050009999) -(0.2373737374 0.01 -0.00050009999) -(0.2424242424 0 -0.00050009999) -(0.2424242424 2.5e-05 -0.00050009999) -(0.2424242424 7.08119053e-05 -0.00050009999) -(0.2424242424 0.00015426567 -0.00050009999) -(0.2424242424 0.0003046635713 -0.00050009999) -(0.2424242424 0.0005705243934 -0.00050009999) -(0.2424242424 0.001024837958 -0.00050009999) -(0.2424242424 0.001758019915 -0.00050009999) -(0.2424242424 0.002838575912 -0.00050009999) -(0.2424242424 0.004235474916 -0.00050009999) -(0.2424242424 0.005764525084 -0.00050009999) -(0.2424242424 0.007161424088 -0.00050009999) -(0.2424242424 0.008241980085 -0.00050009999) -(0.2424242424 0.008975162042 -0.00050009999) -(0.2424242424 0.009429475607 -0.00050009999) -(0.2424242424 0.009695336429 -0.00050009999) -(0.2424242424 0.00984573433 -0.00050009999) -(0.2424242424 0.009929188095 -0.00050009999) -(0.2424242424 0.009975 -0.00050009999) -(0.2424242424 0.01 -0.00050009999) -(0.2474747475 0 -0.00050009999) -(0.2474747475 2.5e-05 -0.00050009999) -(0.2474747475 7.08119053e-05 -0.00050009999) -(0.2474747475 0.00015426567 -0.00050009999) -(0.2474747475 0.0003046635713 -0.00050009999) -(0.2474747475 0.0005705243934 -0.00050009999) -(0.2474747475 0.001024837958 -0.00050009999) -(0.2474747475 0.001758019915 -0.00050009999) -(0.2474747475 0.002838575912 -0.00050009999) -(0.2474747475 0.004235474916 -0.00050009999) -(0.2474747475 0.005764525084 -0.00050009999) -(0.2474747475 0.007161424088 -0.00050009999) -(0.2474747475 0.008241980085 -0.00050009999) -(0.2474747475 0.008975162042 -0.00050009999) -(0.2474747475 0.009429475607 -0.00050009999) -(0.2474747475 0.009695336429 -0.00050009999) -(0.2474747475 0.00984573433 -0.00050009999) -(0.2474747475 0.009929188095 -0.00050009999) -(0.2474747475 0.009975 -0.00050009999) -(0.2474747475 0.01 -0.00050009999) -(0.2525252525 0 -0.00050009999) -(0.2525252525 2.5e-05 -0.00050009999) -(0.2525252525 7.08119053e-05 -0.00050009999) -(0.2525252525 0.00015426567 -0.00050009999) -(0.2525252525 0.0003046635713 -0.00050009999) -(0.2525252525 0.0005705243934 -0.00050009999) -(0.2525252525 0.001024837958 -0.00050009999) -(0.2525252525 0.001758019915 -0.00050009999) -(0.2525252525 0.002838575912 -0.00050009999) -(0.2525252525 0.004235474916 -0.00050009999) -(0.2525252525 0.005764525084 -0.00050009999) -(0.2525252525 0.007161424088 -0.00050009999) -(0.2525252525 0.008241980085 -0.00050009999) -(0.2525252525 0.008975162042 -0.00050009999) -(0.2525252525 0.009429475607 -0.00050009999) -(0.2525252525 0.009695336429 -0.00050009999) -(0.2525252525 0.00984573433 -0.00050009999) -(0.2525252525 0.009929188095 -0.00050009999) -(0.2525252525 0.009975 -0.00050009999) -(0.2525252525 0.01 -0.00050009999) -(0.2575757576 0 -0.00050009999) -(0.2575757576 2.5e-05 -0.00050009999) -(0.2575757576 7.08119053e-05 -0.00050009999) -(0.2575757576 0.00015426567 -0.00050009999) -(0.2575757576 0.0003046635713 -0.00050009999) -(0.2575757576 0.0005705243934 -0.00050009999) -(0.2575757576 0.001024837958 -0.00050009999) -(0.2575757576 0.001758019915 -0.00050009999) -(0.2575757576 0.002838575912 -0.00050009999) -(0.2575757576 0.004235474916 -0.00050009999) -(0.2575757576 0.005764525084 -0.00050009999) -(0.2575757576 0.007161424088 -0.00050009999) -(0.2575757576 0.008241980085 -0.00050009999) -(0.2575757576 0.008975162042 -0.00050009999) -(0.2575757576 0.009429475607 -0.00050009999) -(0.2575757576 0.009695336429 -0.00050009999) -(0.2575757576 0.00984573433 -0.00050009999) -(0.2575757576 0.009929188095 -0.00050009999) -(0.2575757576 0.009975 -0.00050009999) -(0.2575757576 0.01 -0.00050009999) -(0.2626262626 0 -0.00050009999) -(0.2626262626 2.5e-05 -0.00050009999) -(0.2626262626 7.08119053e-05 -0.00050009999) -(0.2626262626 0.00015426567 -0.00050009999) -(0.2626262626 0.0003046635713 -0.00050009999) -(0.2626262626 0.0005705243934 -0.00050009999) -(0.2626262626 0.001024837958 -0.00050009999) -(0.2626262626 0.001758019915 -0.00050009999) -(0.2626262626 0.002838575912 -0.00050009999) -(0.2626262626 0.004235474916 -0.00050009999) -(0.2626262626 0.005764525084 -0.00050009999) -(0.2626262626 0.007161424088 -0.00050009999) -(0.2626262626 0.008241980085 -0.00050009999) -(0.2626262626 0.008975162042 -0.00050009999) -(0.2626262626 0.009429475607 -0.00050009999) -(0.2626262626 0.009695336429 -0.00050009999) -(0.2626262626 0.00984573433 -0.00050009999) -(0.2626262626 0.009929188095 -0.00050009999) -(0.2626262626 0.009975 -0.00050009999) -(0.2626262626 0.01 -0.00050009999) -(0.2676767677 0 -0.00050009999) -(0.2676767677 2.5e-05 -0.00050009999) -(0.2676767677 7.08119053e-05 -0.00050009999) -(0.2676767677 0.00015426567 -0.00050009999) -(0.2676767677 0.0003046635713 -0.00050009999) -(0.2676767677 0.0005705243934 -0.00050009999) -(0.2676767677 0.001024837958 -0.00050009999) -(0.2676767677 0.001758019915 -0.00050009999) -(0.2676767677 0.002838575912 -0.00050009999) -(0.2676767677 0.004235474916 -0.00050009999) -(0.2676767677 0.005764525084 -0.00050009999) -(0.2676767677 0.007161424088 -0.00050009999) -(0.2676767677 0.008241980085 -0.00050009999) -(0.2676767677 0.008975162042 -0.00050009999) -(0.2676767677 0.009429475607 -0.00050009999) -(0.2676767677 0.009695336429 -0.00050009999) -(0.2676767677 0.00984573433 -0.00050009999) -(0.2676767677 0.009929188095 -0.00050009999) -(0.2676767677 0.009975 -0.00050009999) -(0.2676767677 0.01 -0.00050009999) -(0.2727272727 0 -0.00050009999) -(0.2727272727 2.5e-05 -0.00050009999) -(0.2727272727 7.08119053e-05 -0.00050009999) -(0.2727272727 0.00015426567 -0.00050009999) -(0.2727272727 0.0003046635713 -0.00050009999) -(0.2727272727 0.0005705243934 -0.00050009999) -(0.2727272727 0.001024837958 -0.00050009999) -(0.2727272727 0.001758019915 -0.00050009999) -(0.2727272727 0.002838575912 -0.00050009999) -(0.2727272727 0.004235474916 -0.00050009999) -(0.2727272727 0.005764525084 -0.00050009999) -(0.2727272727 0.007161424088 -0.00050009999) -(0.2727272727 0.008241980085 -0.00050009999) -(0.2727272727 0.008975162042 -0.00050009999) -(0.2727272727 0.009429475607 -0.00050009999) -(0.2727272727 0.009695336429 -0.00050009999) -(0.2727272727 0.00984573433 -0.00050009999) -(0.2727272727 0.009929188095 -0.00050009999) -(0.2727272727 0.009975 -0.00050009999) -(0.2727272727 0.01 -0.00050009999) -(0.2777777778 0 -0.00050009999) -(0.2777777778 2.5e-05 -0.00050009999) -(0.2777777778 7.08119053e-05 -0.00050009999) -(0.2777777778 0.00015426567 -0.00050009999) -(0.2777777778 0.0003046635713 -0.00050009999) -(0.2777777778 0.0005705243934 -0.00050009999) -(0.2777777778 0.001024837958 -0.00050009999) -(0.2777777778 0.001758019915 -0.00050009999) -(0.2777777778 0.002838575912 -0.00050009999) -(0.2777777778 0.004235474916 -0.00050009999) -(0.2777777778 0.005764525084 -0.00050009999) -(0.2777777778 0.007161424088 -0.00050009999) -(0.2777777778 0.008241980085 -0.00050009999) -(0.2777777778 0.008975162042 -0.00050009999) -(0.2777777778 0.009429475607 -0.00050009999) -(0.2777777778 0.009695336429 -0.00050009999) -(0.2777777778 0.00984573433 -0.00050009999) -(0.2777777778 0.009929188095 -0.00050009999) -(0.2777777778 0.009975 -0.00050009999) -(0.2777777778 0.01 -0.00050009999) -(0.2828282828 0 -0.00050009999) -(0.2828282828 2.5e-05 -0.00050009999) -(0.2828282828 7.08119053e-05 -0.00050009999) -(0.2828282828 0.00015426567 -0.00050009999) -(0.2828282828 0.0003046635713 -0.00050009999) -(0.2828282828 0.0005705243934 -0.00050009999) -(0.2828282828 0.001024837958 -0.00050009999) -(0.2828282828 0.001758019915 -0.00050009999) -(0.2828282828 0.002838575912 -0.00050009999) -(0.2828282828 0.004235474916 -0.00050009999) -(0.2828282828 0.005764525084 -0.00050009999) -(0.2828282828 0.007161424088 -0.00050009999) -(0.2828282828 0.008241980085 -0.00050009999) -(0.2828282828 0.008975162042 -0.00050009999) -(0.2828282828 0.009429475607 -0.00050009999) -(0.2828282828 0.009695336429 -0.00050009999) -(0.2828282828 0.00984573433 -0.00050009999) -(0.2828282828 0.009929188095 -0.00050009999) -(0.2828282828 0.009975 -0.00050009999) -(0.2828282828 0.01 -0.00050009999) -(0.2878787879 0 -0.00050009999) -(0.2878787879 2.5e-05 -0.00050009999) -(0.2878787879 7.08119053e-05 -0.00050009999) -(0.2878787879 0.00015426567 -0.00050009999) -(0.2878787879 0.0003046635713 -0.00050009999) -(0.2878787879 0.0005705243934 -0.00050009999) -(0.2878787879 0.001024837958 -0.00050009999) -(0.2878787879 0.001758019915 -0.00050009999) -(0.2878787879 0.002838575912 -0.00050009999) -(0.2878787879 0.004235474916 -0.00050009999) -(0.2878787879 0.005764525084 -0.00050009999) -(0.2878787879 0.007161424088 -0.00050009999) -(0.2878787879 0.008241980085 -0.00050009999) -(0.2878787879 0.008975162042 -0.00050009999) -(0.2878787879 0.009429475607 -0.00050009999) -(0.2878787879 0.009695336429 -0.00050009999) -(0.2878787879 0.00984573433 -0.00050009999) -(0.2878787879 0.009929188095 -0.00050009999) -(0.2878787879 0.009975 -0.00050009999) -(0.2878787879 0.01 -0.00050009999) -(0.2929292929 0 -0.00050009999) -(0.2929292929 2.5e-05 -0.00050009999) -(0.2929292929 7.08119053e-05 -0.00050009999) -(0.2929292929 0.00015426567 -0.00050009999) -(0.2929292929 0.0003046635713 -0.00050009999) -(0.2929292929 0.0005705243934 -0.00050009999) -(0.2929292929 0.001024837958 -0.00050009999) -(0.2929292929 0.001758019915 -0.00050009999) -(0.2929292929 0.002838575912 -0.00050009999) -(0.2929292929 0.004235474916 -0.00050009999) -(0.2929292929 0.005764525084 -0.00050009999) -(0.2929292929 0.007161424088 -0.00050009999) -(0.2929292929 0.008241980085 -0.00050009999) -(0.2929292929 0.008975162042 -0.00050009999) -(0.2929292929 0.009429475607 -0.00050009999) -(0.2929292929 0.009695336429 -0.00050009999) -(0.2929292929 0.00984573433 -0.00050009999) -(0.2929292929 0.009929188095 -0.00050009999) -(0.2929292929 0.009975 -0.00050009999) -(0.2929292929 0.01 -0.00050009999) -(0.297979798 0 -0.00050009999) -(0.297979798 2.5e-05 -0.00050009999) -(0.297979798 7.08119053e-05 -0.00050009999) -(0.297979798 0.00015426567 -0.00050009999) -(0.297979798 0.0003046635713 -0.00050009999) -(0.297979798 0.0005705243934 -0.00050009999) -(0.297979798 0.001024837958 -0.00050009999) -(0.297979798 0.001758019915 -0.00050009999) -(0.297979798 0.002838575912 -0.00050009999) -(0.297979798 0.004235474916 -0.00050009999) -(0.297979798 0.005764525084 -0.00050009999) -(0.297979798 0.007161424088 -0.00050009999) -(0.297979798 0.008241980085 -0.00050009999) -(0.297979798 0.008975162042 -0.00050009999) -(0.297979798 0.009429475607 -0.00050009999) -(0.297979798 0.009695336429 -0.00050009999) -(0.297979798 0.00984573433 -0.00050009999) -(0.297979798 0.009929188095 -0.00050009999) -(0.297979798 0.009975 -0.00050009999) -(0.297979798 0.01 -0.00050009999) -(0.303030303 0 -0.00050009999) -(0.303030303 2.5e-05 -0.00050009999) -(0.303030303 7.08119053e-05 -0.00050009999) -(0.303030303 0.00015426567 -0.00050009999) -(0.303030303 0.0003046635713 -0.00050009999) -(0.303030303 0.0005705243934 -0.00050009999) -(0.303030303 0.001024837958 -0.00050009999) -(0.303030303 0.001758019915 -0.00050009999) -(0.303030303 0.002838575912 -0.00050009999) -(0.303030303 0.004235474916 -0.00050009999) -(0.303030303 0.005764525084 -0.00050009999) -(0.303030303 0.007161424088 -0.00050009999) -(0.303030303 0.008241980085 -0.00050009999) -(0.303030303 0.008975162042 -0.00050009999) -(0.303030303 0.009429475607 -0.00050009999) -(0.303030303 0.009695336429 -0.00050009999) -(0.303030303 0.00984573433 -0.00050009999) -(0.303030303 0.009929188095 -0.00050009999) -(0.303030303 0.009975 -0.00050009999) -(0.303030303 0.01 -0.00050009999) -(0.3080808081 0 -0.00050009999) -(0.3080808081 2.5e-05 -0.00050009999) -(0.3080808081 7.08119053e-05 -0.00050009999) -(0.3080808081 0.00015426567 -0.00050009999) -(0.3080808081 0.0003046635713 -0.00050009999) -(0.3080808081 0.0005705243934 -0.00050009999) -(0.3080808081 0.001024837958 -0.00050009999) -(0.3080808081 0.001758019915 -0.00050009999) -(0.3080808081 0.002838575912 -0.00050009999) -(0.3080808081 0.004235474916 -0.00050009999) -(0.3080808081 0.005764525084 -0.00050009999) -(0.3080808081 0.007161424088 -0.00050009999) -(0.3080808081 0.008241980085 -0.00050009999) -(0.3080808081 0.008975162042 -0.00050009999) -(0.3080808081 0.009429475607 -0.00050009999) -(0.3080808081 0.009695336429 -0.00050009999) -(0.3080808081 0.00984573433 -0.00050009999) -(0.3080808081 0.009929188095 -0.00050009999) -(0.3080808081 0.009975 -0.00050009999) -(0.3080808081 0.01 -0.00050009999) -(0.3131313131 0 -0.00050009999) -(0.3131313131 2.5e-05 -0.00050009999) -(0.3131313131 7.08119053e-05 -0.00050009999) -(0.3131313131 0.00015426567 -0.00050009999) -(0.3131313131 0.0003046635713 -0.00050009999) -(0.3131313131 0.0005705243934 -0.00050009999) -(0.3131313131 0.001024837958 -0.00050009999) -(0.3131313131 0.001758019915 -0.00050009999) -(0.3131313131 0.002838575912 -0.00050009999) -(0.3131313131 0.004235474916 -0.00050009999) -(0.3131313131 0.005764525084 -0.00050009999) -(0.3131313131 0.007161424088 -0.00050009999) -(0.3131313131 0.008241980085 -0.00050009999) -(0.3131313131 0.008975162042 -0.00050009999) -(0.3131313131 0.009429475607 -0.00050009999) -(0.3131313131 0.009695336429 -0.00050009999) -(0.3131313131 0.00984573433 -0.00050009999) -(0.3131313131 0.009929188095 -0.00050009999) -(0.3131313131 0.009975 -0.00050009999) -(0.3131313131 0.01 -0.00050009999) -(0.3181818182 0 -0.00050009999) -(0.3181818182 2.5e-05 -0.00050009999) -(0.3181818182 7.08119053e-05 -0.00050009999) -(0.3181818182 0.00015426567 -0.00050009999) -(0.3181818182 0.0003046635713 -0.00050009999) -(0.3181818182 0.0005705243934 -0.00050009999) -(0.3181818182 0.001024837958 -0.00050009999) -(0.3181818182 0.001758019915 -0.00050009999) -(0.3181818182 0.002838575912 -0.00050009999) -(0.3181818182 0.004235474916 -0.00050009999) -(0.3181818182 0.005764525084 -0.00050009999) -(0.3181818182 0.007161424088 -0.00050009999) -(0.3181818182 0.008241980085 -0.00050009999) -(0.3181818182 0.008975162042 -0.00050009999) -(0.3181818182 0.009429475607 -0.00050009999) -(0.3181818182 0.009695336429 -0.00050009999) -(0.3181818182 0.00984573433 -0.00050009999) -(0.3181818182 0.009929188095 -0.00050009999) -(0.3181818182 0.009975 -0.00050009999) -(0.3181818182 0.01 -0.00050009999) -(0.3232323232 0 -0.00050009999) -(0.3232323232 2.5e-05 -0.00050009999) -(0.3232323232 7.08119053e-05 -0.00050009999) -(0.3232323232 0.00015426567 -0.00050009999) -(0.3232323232 0.0003046635713 -0.00050009999) -(0.3232323232 0.0005705243934 -0.00050009999) -(0.3232323232 0.001024837958 -0.00050009999) -(0.3232323232 0.001758019915 -0.00050009999) -(0.3232323232 0.002838575912 -0.00050009999) -(0.3232323232 0.004235474916 -0.00050009999) -(0.3232323232 0.005764525084 -0.00050009999) -(0.3232323232 0.007161424088 -0.00050009999) -(0.3232323232 0.008241980085 -0.00050009999) -(0.3232323232 0.008975162042 -0.00050009999) -(0.3232323232 0.009429475607 -0.00050009999) -(0.3232323232 0.009695336429 -0.00050009999) -(0.3232323232 0.00984573433 -0.00050009999) -(0.3232323232 0.009929188095 -0.00050009999) -(0.3232323232 0.009975 -0.00050009999) -(0.3232323232 0.01 -0.00050009999) -(0.3282828283 0 -0.00050009999) -(0.3282828283 2.5e-05 -0.00050009999) -(0.3282828283 7.08119053e-05 -0.00050009999) -(0.3282828283 0.00015426567 -0.00050009999) -(0.3282828283 0.0003046635713 -0.00050009999) -(0.3282828283 0.0005705243934 -0.00050009999) -(0.3282828283 0.001024837958 -0.00050009999) -(0.3282828283 0.001758019915 -0.00050009999) -(0.3282828283 0.002838575912 -0.00050009999) -(0.3282828283 0.004235474916 -0.00050009999) -(0.3282828283 0.005764525084 -0.00050009999) -(0.3282828283 0.007161424088 -0.00050009999) -(0.3282828283 0.008241980085 -0.00050009999) -(0.3282828283 0.008975162042 -0.00050009999) -(0.3282828283 0.009429475607 -0.00050009999) -(0.3282828283 0.009695336429 -0.00050009999) -(0.3282828283 0.00984573433 -0.00050009999) -(0.3282828283 0.009929188095 -0.00050009999) -(0.3282828283 0.009975 -0.00050009999) -(0.3282828283 0.01 -0.00050009999) -(0.3333333333 0 -0.00050009999) -(0.3333333333 2.5e-05 -0.00050009999) -(0.3333333333 7.08119053e-05 -0.00050009999) -(0.3333333333 0.00015426567 -0.00050009999) -(0.3333333333 0.0003046635713 -0.00050009999) -(0.3333333333 0.0005705243934 -0.00050009999) -(0.3333333333 0.001024837958 -0.00050009999) -(0.3333333333 0.001758019915 -0.00050009999) -(0.3333333333 0.002838575912 -0.00050009999) -(0.3333333333 0.004235474916 -0.00050009999) -(0.3333333333 0.005764525084 -0.00050009999) -(0.3333333333 0.007161424088 -0.00050009999) -(0.3333333333 0.008241980085 -0.00050009999) -(0.3333333333 0.008975162042 -0.00050009999) -(0.3333333333 0.009429475607 -0.00050009999) -(0.3333333333 0.009695336429 -0.00050009999) -(0.3333333333 0.00984573433 -0.00050009999) -(0.3333333333 0.009929188095 -0.00050009999) -(0.3333333333 0.009975 -0.00050009999) -(0.3333333333 0.01 -0.00050009999) -(0.3383838384 0 -0.00050009999) -(0.3383838384 2.5e-05 -0.00050009999) -(0.3383838384 7.08119053e-05 -0.00050009999) -(0.3383838384 0.00015426567 -0.00050009999) -(0.3383838384 0.0003046635713 -0.00050009999) -(0.3383838384 0.0005705243934 -0.00050009999) -(0.3383838384 0.001024837958 -0.00050009999) -(0.3383838384 0.001758019915 -0.00050009999) -(0.3383838384 0.002838575912 -0.00050009999) -(0.3383838384 0.004235474916 -0.00050009999) -(0.3383838384 0.005764525084 -0.00050009999) -(0.3383838384 0.007161424088 -0.00050009999) -(0.3383838384 0.008241980085 -0.00050009999) -(0.3383838384 0.008975162042 -0.00050009999) -(0.3383838384 0.009429475607 -0.00050009999) -(0.3383838384 0.009695336429 -0.00050009999) -(0.3383838384 0.00984573433 -0.00050009999) -(0.3383838384 0.009929188095 -0.00050009999) -(0.3383838384 0.009975 -0.00050009999) -(0.3383838384 0.01 -0.00050009999) -(0.3434343434 0 -0.00050009999) -(0.3434343434 2.5e-05 -0.00050009999) -(0.3434343434 7.08119053e-05 -0.00050009999) -(0.3434343434 0.00015426567 -0.00050009999) -(0.3434343434 0.0003046635713 -0.00050009999) -(0.3434343434 0.0005705243934 -0.00050009999) -(0.3434343434 0.001024837958 -0.00050009999) -(0.3434343434 0.001758019915 -0.00050009999) -(0.3434343434 0.002838575912 -0.00050009999) -(0.3434343434 0.004235474916 -0.00050009999) -(0.3434343434 0.005764525084 -0.00050009999) -(0.3434343434 0.007161424088 -0.00050009999) -(0.3434343434 0.008241980085 -0.00050009999) -(0.3434343434 0.008975162042 -0.00050009999) -(0.3434343434 0.009429475607 -0.00050009999) -(0.3434343434 0.009695336429 -0.00050009999) -(0.3434343434 0.00984573433 -0.00050009999) -(0.3434343434 0.009929188095 -0.00050009999) -(0.3434343434 0.009975 -0.00050009999) -(0.3434343434 0.01 -0.00050009999) -(0.3484848485 0 -0.00050009999) -(0.3484848485 2.5e-05 -0.00050009999) -(0.3484848485 7.08119053e-05 -0.00050009999) -(0.3484848485 0.00015426567 -0.00050009999) -(0.3484848485 0.0003046635713 -0.00050009999) -(0.3484848485 0.0005705243934 -0.00050009999) -(0.3484848485 0.001024837958 -0.00050009999) -(0.3484848485 0.001758019915 -0.00050009999) -(0.3484848485 0.002838575912 -0.00050009999) -(0.3484848485 0.004235474916 -0.00050009999) -(0.3484848485 0.005764525084 -0.00050009999) -(0.3484848485 0.007161424088 -0.00050009999) -(0.3484848485 0.008241980085 -0.00050009999) -(0.3484848485 0.008975162042 -0.00050009999) -(0.3484848485 0.009429475607 -0.00050009999) -(0.3484848485 0.009695336429 -0.00050009999) -(0.3484848485 0.00984573433 -0.00050009999) -(0.3484848485 0.009929188095 -0.00050009999) -(0.3484848485 0.009975 -0.00050009999) -(0.3484848485 0.01 -0.00050009999) -(0.3535353535 0 -0.00050009999) -(0.3535353535 2.5e-05 -0.00050009999) -(0.3535353535 7.08119053e-05 -0.00050009999) -(0.3535353535 0.00015426567 -0.00050009999) -(0.3535353535 0.0003046635713 -0.00050009999) -(0.3535353535 0.0005705243934 -0.00050009999) -(0.3535353535 0.001024837958 -0.00050009999) -(0.3535353535 0.001758019915 -0.00050009999) -(0.3535353535 0.002838575912 -0.00050009999) -(0.3535353535 0.004235474916 -0.00050009999) -(0.3535353535 0.005764525084 -0.00050009999) -(0.3535353535 0.007161424088 -0.00050009999) -(0.3535353535 0.008241980085 -0.00050009999) -(0.3535353535 0.008975162042 -0.00050009999) -(0.3535353535 0.009429475607 -0.00050009999) -(0.3535353535 0.009695336429 -0.00050009999) -(0.3535353535 0.00984573433 -0.00050009999) -(0.3535353535 0.009929188095 -0.00050009999) -(0.3535353535 0.009975 -0.00050009999) -(0.3535353535 0.01 -0.00050009999) -(0.3585858586 0 -0.00050009999) -(0.3585858586 2.5e-05 -0.00050009999) -(0.3585858586 7.08119053e-05 -0.00050009999) -(0.3585858586 0.00015426567 -0.00050009999) -(0.3585858586 0.0003046635713 -0.00050009999) -(0.3585858586 0.0005705243934 -0.00050009999) -(0.3585858586 0.001024837958 -0.00050009999) -(0.3585858586 0.001758019915 -0.00050009999) -(0.3585858586 0.002838575912 -0.00050009999) -(0.3585858586 0.004235474916 -0.00050009999) -(0.3585858586 0.005764525084 -0.00050009999) -(0.3585858586 0.007161424088 -0.00050009999) -(0.3585858586 0.008241980085 -0.00050009999) -(0.3585858586 0.008975162042 -0.00050009999) -(0.3585858586 0.009429475607 -0.00050009999) -(0.3585858586 0.009695336429 -0.00050009999) -(0.3585858586 0.00984573433 -0.00050009999) -(0.3585858586 0.009929188095 -0.00050009999) -(0.3585858586 0.009975 -0.00050009999) -(0.3585858586 0.01 -0.00050009999) -(0.3636363636 0 -0.00050009999) -(0.3636363636 2.5e-05 -0.00050009999) -(0.3636363636 7.08119053e-05 -0.00050009999) -(0.3636363636 0.00015426567 -0.00050009999) -(0.3636363636 0.0003046635713 -0.00050009999) -(0.3636363636 0.0005705243934 -0.00050009999) -(0.3636363636 0.001024837958 -0.00050009999) -(0.3636363636 0.001758019915 -0.00050009999) -(0.3636363636 0.002838575912 -0.00050009999) -(0.3636363636 0.004235474916 -0.00050009999) -(0.3636363636 0.005764525084 -0.00050009999) -(0.3636363636 0.007161424088 -0.00050009999) -(0.3636363636 0.008241980085 -0.00050009999) -(0.3636363636 0.008975162042 -0.00050009999) -(0.3636363636 0.009429475607 -0.00050009999) -(0.3636363636 0.009695336429 -0.00050009999) -(0.3636363636 0.00984573433 -0.00050009999) -(0.3636363636 0.009929188095 -0.00050009999) -(0.3636363636 0.009975 -0.00050009999) -(0.3636363636 0.01 -0.00050009999) -(0.3686868687 0 -0.00050009999) -(0.3686868687 2.5e-05 -0.00050009999) -(0.3686868687 7.08119053e-05 -0.00050009999) -(0.3686868687 0.00015426567 -0.00050009999) -(0.3686868687 0.0003046635713 -0.00050009999) -(0.3686868687 0.0005705243934 -0.00050009999) -(0.3686868687 0.001024837958 -0.00050009999) -(0.3686868687 0.001758019915 -0.00050009999) -(0.3686868687 0.002838575912 -0.00050009999) -(0.3686868687 0.004235474916 -0.00050009999) -(0.3686868687 0.005764525084 -0.00050009999) -(0.3686868687 0.007161424088 -0.00050009999) -(0.3686868687 0.008241980085 -0.00050009999) -(0.3686868687 0.008975162042 -0.00050009999) -(0.3686868687 0.009429475607 -0.00050009999) -(0.3686868687 0.009695336429 -0.00050009999) -(0.3686868687 0.00984573433 -0.00050009999) -(0.3686868687 0.009929188095 -0.00050009999) -(0.3686868687 0.009975 -0.00050009999) -(0.3686868687 0.01 -0.00050009999) -(0.3737373737 0 -0.00050009999) -(0.3737373737 2.5e-05 -0.00050009999) -(0.3737373737 7.08119053e-05 -0.00050009999) -(0.3737373737 0.00015426567 -0.00050009999) -(0.3737373737 0.0003046635713 -0.00050009999) -(0.3737373737 0.0005705243934 -0.00050009999) -(0.3737373737 0.001024837958 -0.00050009999) -(0.3737373737 0.001758019915 -0.00050009999) -(0.3737373737 0.002838575912 -0.00050009999) -(0.3737373737 0.004235474916 -0.00050009999) -(0.3737373737 0.005764525084 -0.00050009999) -(0.3737373737 0.007161424088 -0.00050009999) -(0.3737373737 0.008241980085 -0.00050009999) -(0.3737373737 0.008975162042 -0.00050009999) -(0.3737373737 0.009429475607 -0.00050009999) -(0.3737373737 0.009695336429 -0.00050009999) -(0.3737373737 0.00984573433 -0.00050009999) -(0.3737373737 0.009929188095 -0.00050009999) -(0.3737373737 0.009975 -0.00050009999) -(0.3737373737 0.01 -0.00050009999) -(0.3787878788 0 -0.00050009999) -(0.3787878788 2.5e-05 -0.00050009999) -(0.3787878788 7.08119053e-05 -0.00050009999) -(0.3787878788 0.00015426567 -0.00050009999) -(0.3787878788 0.0003046635713 -0.00050009999) -(0.3787878788 0.0005705243934 -0.00050009999) -(0.3787878788 0.001024837958 -0.00050009999) -(0.3787878788 0.001758019915 -0.00050009999) -(0.3787878788 0.002838575912 -0.00050009999) -(0.3787878788 0.004235474916 -0.00050009999) -(0.3787878788 0.005764525084 -0.00050009999) -(0.3787878788 0.007161424088 -0.00050009999) -(0.3787878788 0.008241980085 -0.00050009999) -(0.3787878788 0.008975162042 -0.00050009999) -(0.3787878788 0.009429475607 -0.00050009999) -(0.3787878788 0.009695336429 -0.00050009999) -(0.3787878788 0.00984573433 -0.00050009999) -(0.3787878788 0.009929188095 -0.00050009999) -(0.3787878788 0.009975 -0.00050009999) -(0.3787878788 0.01 -0.00050009999) -(0.3838383838 0 -0.00050009999) -(0.3838383838 2.5e-05 -0.00050009999) -(0.3838383838 7.08119053e-05 -0.00050009999) -(0.3838383838 0.00015426567 -0.00050009999) -(0.3838383838 0.0003046635713 -0.00050009999) -(0.3838383838 0.0005705243934 -0.00050009999) -(0.3838383838 0.001024837958 -0.00050009999) -(0.3838383838 0.001758019915 -0.00050009999) -(0.3838383838 0.002838575912 -0.00050009999) -(0.3838383838 0.004235474916 -0.00050009999) -(0.3838383838 0.005764525084 -0.00050009999) -(0.3838383838 0.007161424088 -0.00050009999) -(0.3838383838 0.008241980085 -0.00050009999) -(0.3838383838 0.008975162042 -0.00050009999) -(0.3838383838 0.009429475607 -0.00050009999) -(0.3838383838 0.009695336429 -0.00050009999) -(0.3838383838 0.00984573433 -0.00050009999) -(0.3838383838 0.009929188095 -0.00050009999) -(0.3838383838 0.009975 -0.00050009999) -(0.3838383838 0.01 -0.00050009999) -(0.3888888889 0 -0.00050009999) -(0.3888888889 2.5e-05 -0.00050009999) -(0.3888888889 7.08119053e-05 -0.00050009999) -(0.3888888889 0.00015426567 -0.00050009999) -(0.3888888889 0.0003046635713 -0.00050009999) -(0.3888888889 0.0005705243934 -0.00050009999) -(0.3888888889 0.001024837958 -0.00050009999) -(0.3888888889 0.001758019915 -0.00050009999) -(0.3888888889 0.002838575912 -0.00050009999) -(0.3888888889 0.004235474916 -0.00050009999) -(0.3888888889 0.005764525084 -0.00050009999) -(0.3888888889 0.007161424088 -0.00050009999) -(0.3888888889 0.008241980085 -0.00050009999) -(0.3888888889 0.008975162042 -0.00050009999) -(0.3888888889 0.009429475607 -0.00050009999) -(0.3888888889 0.009695336429 -0.00050009999) -(0.3888888889 0.00984573433 -0.00050009999) -(0.3888888889 0.009929188095 -0.00050009999) -(0.3888888889 0.009975 -0.00050009999) -(0.3888888889 0.01 -0.00050009999) -(0.3939393939 0 -0.00050009999) -(0.3939393939 2.5e-05 -0.00050009999) -(0.3939393939 7.08119053e-05 -0.00050009999) -(0.3939393939 0.00015426567 -0.00050009999) -(0.3939393939 0.0003046635713 -0.00050009999) -(0.3939393939 0.0005705243934 -0.00050009999) -(0.3939393939 0.001024837958 -0.00050009999) -(0.3939393939 0.001758019915 -0.00050009999) -(0.3939393939 0.002838575912 -0.00050009999) -(0.3939393939 0.004235474916 -0.00050009999) -(0.3939393939 0.005764525084 -0.00050009999) -(0.3939393939 0.007161424088 -0.00050009999) -(0.3939393939 0.008241980085 -0.00050009999) -(0.3939393939 0.008975162042 -0.00050009999) -(0.3939393939 0.009429475607 -0.00050009999) -(0.3939393939 0.009695336429 -0.00050009999) -(0.3939393939 0.00984573433 -0.00050009999) -(0.3939393939 0.009929188095 -0.00050009999) -(0.3939393939 0.009975 -0.00050009999) -(0.3939393939 0.01 -0.00050009999) -(0.398989899 0 -0.00050009999) -(0.398989899 2.5e-05 -0.00050009999) -(0.398989899 7.08119053e-05 -0.00050009999) -(0.398989899 0.00015426567 -0.00050009999) -(0.398989899 0.0003046635713 -0.00050009999) -(0.398989899 0.0005705243934 -0.00050009999) -(0.398989899 0.001024837958 -0.00050009999) -(0.398989899 0.001758019915 -0.00050009999) -(0.398989899 0.002838575912 -0.00050009999) -(0.398989899 0.004235474916 -0.00050009999) -(0.398989899 0.005764525084 -0.00050009999) -(0.398989899 0.007161424088 -0.00050009999) -(0.398989899 0.008241980085 -0.00050009999) -(0.398989899 0.008975162042 -0.00050009999) -(0.398989899 0.009429475607 -0.00050009999) -(0.398989899 0.009695336429 -0.00050009999) -(0.398989899 0.00984573433 -0.00050009999) -(0.398989899 0.009929188095 -0.00050009999) -(0.398989899 0.009975 -0.00050009999) -(0.398989899 0.01 -0.00050009999) -(0.404040404 0 -0.00050009999) -(0.404040404 2.5e-05 -0.00050009999) -(0.404040404 7.08119053e-05 -0.00050009999) -(0.404040404 0.00015426567 -0.00050009999) -(0.404040404 0.0003046635713 -0.00050009999) -(0.404040404 0.0005705243934 -0.00050009999) -(0.404040404 0.001024837958 -0.00050009999) -(0.404040404 0.001758019915 -0.00050009999) -(0.404040404 0.002838575912 -0.00050009999) -(0.404040404 0.004235474916 -0.00050009999) -(0.404040404 0.005764525084 -0.00050009999) -(0.404040404 0.007161424088 -0.00050009999) -(0.404040404 0.008241980085 -0.00050009999) -(0.404040404 0.008975162042 -0.00050009999) -(0.404040404 0.009429475607 -0.00050009999) -(0.404040404 0.009695336429 -0.00050009999) -(0.404040404 0.00984573433 -0.00050009999) -(0.404040404 0.009929188095 -0.00050009999) -(0.404040404 0.009975 -0.00050009999) -(0.404040404 0.01 -0.00050009999) -(0.4090909091 0 -0.00050009999) -(0.4090909091 2.5e-05 -0.00050009999) -(0.4090909091 7.08119053e-05 -0.00050009999) -(0.4090909091 0.00015426567 -0.00050009999) -(0.4090909091 0.0003046635713 -0.00050009999) -(0.4090909091 0.0005705243934 -0.00050009999) -(0.4090909091 0.001024837958 -0.00050009999) -(0.4090909091 0.001758019915 -0.00050009999) -(0.4090909091 0.002838575912 -0.00050009999) -(0.4090909091 0.004235474916 -0.00050009999) -(0.4090909091 0.005764525084 -0.00050009999) -(0.4090909091 0.007161424088 -0.00050009999) -(0.4090909091 0.008241980085 -0.00050009999) -(0.4090909091 0.008975162042 -0.00050009999) -(0.4090909091 0.009429475607 -0.00050009999) -(0.4090909091 0.009695336429 -0.00050009999) -(0.4090909091 0.00984573433 -0.00050009999) -(0.4090909091 0.009929188095 -0.00050009999) -(0.4090909091 0.009975 -0.00050009999) -(0.4090909091 0.01 -0.00050009999) -(0.4141414141 0 -0.00050009999) -(0.4141414141 2.5e-05 -0.00050009999) -(0.4141414141 7.08119053e-05 -0.00050009999) -(0.4141414141 0.00015426567 -0.00050009999) -(0.4141414141 0.0003046635713 -0.00050009999) -(0.4141414141 0.0005705243934 -0.00050009999) -(0.4141414141 0.001024837958 -0.00050009999) -(0.4141414141 0.001758019915 -0.00050009999) -(0.4141414141 0.002838575912 -0.00050009999) -(0.4141414141 0.004235474916 -0.00050009999) -(0.4141414141 0.005764525084 -0.00050009999) -(0.4141414141 0.007161424088 -0.00050009999) -(0.4141414141 0.008241980085 -0.00050009999) -(0.4141414141 0.008975162042 -0.00050009999) -(0.4141414141 0.009429475607 -0.00050009999) -(0.4141414141 0.009695336429 -0.00050009999) -(0.4141414141 0.00984573433 -0.00050009999) -(0.4141414141 0.009929188095 -0.00050009999) -(0.4141414141 0.009975 -0.00050009999) -(0.4141414141 0.01 -0.00050009999) -(0.4191919192 0 -0.00050009999) -(0.4191919192 2.5e-05 -0.00050009999) -(0.4191919192 7.08119053e-05 -0.00050009999) -(0.4191919192 0.00015426567 -0.00050009999) -(0.4191919192 0.0003046635713 -0.00050009999) -(0.4191919192 0.0005705243934 -0.00050009999) -(0.4191919192 0.001024837958 -0.00050009999) -(0.4191919192 0.001758019915 -0.00050009999) -(0.4191919192 0.002838575912 -0.00050009999) -(0.4191919192 0.004235474916 -0.00050009999) -(0.4191919192 0.005764525084 -0.00050009999) -(0.4191919192 0.007161424088 -0.00050009999) -(0.4191919192 0.008241980085 -0.00050009999) -(0.4191919192 0.008975162042 -0.00050009999) -(0.4191919192 0.009429475607 -0.00050009999) -(0.4191919192 0.009695336429 -0.00050009999) -(0.4191919192 0.00984573433 -0.00050009999) -(0.4191919192 0.009929188095 -0.00050009999) -(0.4191919192 0.009975 -0.00050009999) -(0.4191919192 0.01 -0.00050009999) -(0.4242424242 0 -0.00050009999) -(0.4242424242 2.5e-05 -0.00050009999) -(0.4242424242 7.08119053e-05 -0.00050009999) -(0.4242424242 0.00015426567 -0.00050009999) -(0.4242424242 0.0003046635713 -0.00050009999) -(0.4242424242 0.0005705243934 -0.00050009999) -(0.4242424242 0.001024837958 -0.00050009999) -(0.4242424242 0.001758019915 -0.00050009999) -(0.4242424242 0.002838575912 -0.00050009999) -(0.4242424242 0.004235474916 -0.00050009999) -(0.4242424242 0.005764525084 -0.00050009999) -(0.4242424242 0.007161424088 -0.00050009999) -(0.4242424242 0.008241980085 -0.00050009999) -(0.4242424242 0.008975162042 -0.00050009999) -(0.4242424242 0.009429475607 -0.00050009999) -(0.4242424242 0.009695336429 -0.00050009999) -(0.4242424242 0.00984573433 -0.00050009999) -(0.4242424242 0.009929188095 -0.00050009999) -(0.4242424242 0.009975 -0.00050009999) -(0.4242424242 0.01 -0.00050009999) -(0.4292929293 0 -0.00050009999) -(0.4292929293 2.5e-05 -0.00050009999) -(0.4292929293 7.08119053e-05 -0.00050009999) -(0.4292929293 0.00015426567 -0.00050009999) -(0.4292929293 0.0003046635713 -0.00050009999) -(0.4292929293 0.0005705243934 -0.00050009999) -(0.4292929293 0.001024837958 -0.00050009999) -(0.4292929293 0.001758019915 -0.00050009999) -(0.4292929293 0.002838575912 -0.00050009999) -(0.4292929293 0.004235474916 -0.00050009999) -(0.4292929293 0.005764525084 -0.00050009999) -(0.4292929293 0.007161424088 -0.00050009999) -(0.4292929293 0.008241980085 -0.00050009999) -(0.4292929293 0.008975162042 -0.00050009999) -(0.4292929293 0.009429475607 -0.00050009999) -(0.4292929293 0.009695336429 -0.00050009999) -(0.4292929293 0.00984573433 -0.00050009999) -(0.4292929293 0.009929188095 -0.00050009999) -(0.4292929293 0.009975 -0.00050009999) -(0.4292929293 0.01 -0.00050009999) -(0.4343434343 0 -0.00050009999) -(0.4343434343 2.5e-05 -0.00050009999) -(0.4343434343 7.08119053e-05 -0.00050009999) -(0.4343434343 0.00015426567 -0.00050009999) -(0.4343434343 0.0003046635713 -0.00050009999) -(0.4343434343 0.0005705243934 -0.00050009999) -(0.4343434343 0.001024837958 -0.00050009999) -(0.4343434343 0.001758019915 -0.00050009999) -(0.4343434343 0.002838575912 -0.00050009999) -(0.4343434343 0.004235474916 -0.00050009999) -(0.4343434343 0.005764525084 -0.00050009999) -(0.4343434343 0.007161424088 -0.00050009999) -(0.4343434343 0.008241980085 -0.00050009999) -(0.4343434343 0.008975162042 -0.00050009999) -(0.4343434343 0.009429475607 -0.00050009999) -(0.4343434343 0.009695336429 -0.00050009999) -(0.4343434343 0.00984573433 -0.00050009999) -(0.4343434343 0.009929188095 -0.00050009999) -(0.4343434343 0.009975 -0.00050009999) -(0.4343434343 0.01 -0.00050009999) -(0.4393939394 0 -0.00050009999) -(0.4393939394 2.5e-05 -0.00050009999) -(0.4393939394 7.08119053e-05 -0.00050009999) -(0.4393939394 0.00015426567 -0.00050009999) -(0.4393939394 0.0003046635713 -0.00050009999) -(0.4393939394 0.0005705243934 -0.00050009999) -(0.4393939394 0.001024837958 -0.00050009999) -(0.4393939394 0.001758019915 -0.00050009999) -(0.4393939394 0.002838575912 -0.00050009999) -(0.4393939394 0.004235474916 -0.00050009999) -(0.4393939394 0.005764525084 -0.00050009999) -(0.4393939394 0.007161424088 -0.00050009999) -(0.4393939394 0.008241980085 -0.00050009999) -(0.4393939394 0.008975162042 -0.00050009999) -(0.4393939394 0.009429475607 -0.00050009999) -(0.4393939394 0.009695336429 -0.00050009999) -(0.4393939394 0.00984573433 -0.00050009999) -(0.4393939394 0.009929188095 -0.00050009999) -(0.4393939394 0.009975 -0.00050009999) -(0.4393939394 0.01 -0.00050009999) -(0.4444444444 0 -0.00050009999) -(0.4444444444 2.5e-05 -0.00050009999) -(0.4444444444 7.08119053e-05 -0.00050009999) -(0.4444444444 0.00015426567 -0.00050009999) -(0.4444444444 0.0003046635713 -0.00050009999) -(0.4444444444 0.0005705243934 -0.00050009999) -(0.4444444444 0.001024837958 -0.00050009999) -(0.4444444444 0.001758019915 -0.00050009999) -(0.4444444444 0.002838575912 -0.00050009999) -(0.4444444444 0.004235474916 -0.00050009999) -(0.4444444444 0.005764525084 -0.00050009999) -(0.4444444444 0.007161424088 -0.00050009999) -(0.4444444444 0.008241980085 -0.00050009999) -(0.4444444444 0.008975162042 -0.00050009999) -(0.4444444444 0.009429475607 -0.00050009999) -(0.4444444444 0.009695336429 -0.00050009999) -(0.4444444444 0.00984573433 -0.00050009999) -(0.4444444444 0.009929188095 -0.00050009999) -(0.4444444444 0.009975 -0.00050009999) -(0.4444444444 0.01 -0.00050009999) -(0.4494949495 0 -0.00050009999) -(0.4494949495 2.5e-05 -0.00050009999) -(0.4494949495 7.08119053e-05 -0.00050009999) -(0.4494949495 0.00015426567 -0.00050009999) -(0.4494949495 0.0003046635713 -0.00050009999) -(0.4494949495 0.0005705243934 -0.00050009999) -(0.4494949495 0.001024837958 -0.00050009999) -(0.4494949495 0.001758019915 -0.00050009999) -(0.4494949495 0.002838575912 -0.00050009999) -(0.4494949495 0.004235474916 -0.00050009999) -(0.4494949495 0.005764525084 -0.00050009999) -(0.4494949495 0.007161424088 -0.00050009999) -(0.4494949495 0.008241980085 -0.00050009999) -(0.4494949495 0.008975162042 -0.00050009999) -(0.4494949495 0.009429475607 -0.00050009999) -(0.4494949495 0.009695336429 -0.00050009999) -(0.4494949495 0.00984573433 -0.00050009999) -(0.4494949495 0.009929188095 -0.00050009999) -(0.4494949495 0.009975 -0.00050009999) -(0.4494949495 0.01 -0.00050009999) -(0.4545454545 0 -0.00050009999) -(0.4545454545 2.5e-05 -0.00050009999) -(0.4545454545 7.08119053e-05 -0.00050009999) -(0.4545454545 0.00015426567 -0.00050009999) -(0.4545454545 0.0003046635713 -0.00050009999) -(0.4545454545 0.0005705243934 -0.00050009999) -(0.4545454545 0.001024837958 -0.00050009999) -(0.4545454545 0.001758019915 -0.00050009999) -(0.4545454545 0.002838575912 -0.00050009999) -(0.4545454545 0.004235474916 -0.00050009999) -(0.4545454545 0.005764525084 -0.00050009999) -(0.4545454545 0.007161424088 -0.00050009999) -(0.4545454545 0.008241980085 -0.00050009999) -(0.4545454545 0.008975162042 -0.00050009999) -(0.4545454545 0.009429475607 -0.00050009999) -(0.4545454545 0.009695336429 -0.00050009999) -(0.4545454545 0.00984573433 -0.00050009999) -(0.4545454545 0.009929188095 -0.00050009999) -(0.4545454545 0.009975 -0.00050009999) -(0.4545454545 0.01 -0.00050009999) -(0.4595959596 0 -0.00050009999) -(0.4595959596 2.5e-05 -0.00050009999) -(0.4595959596 7.08119053e-05 -0.00050009999) -(0.4595959596 0.00015426567 -0.00050009999) -(0.4595959596 0.0003046635713 -0.00050009999) -(0.4595959596 0.0005705243934 -0.00050009999) -(0.4595959596 0.001024837958 -0.00050009999) -(0.4595959596 0.001758019915 -0.00050009999) -(0.4595959596 0.002838575912 -0.00050009999) -(0.4595959596 0.004235474916 -0.00050009999) -(0.4595959596 0.005764525084 -0.00050009999) -(0.4595959596 0.007161424088 -0.00050009999) -(0.4595959596 0.008241980085 -0.00050009999) -(0.4595959596 0.008975162042 -0.00050009999) -(0.4595959596 0.009429475607 -0.00050009999) -(0.4595959596 0.009695336429 -0.00050009999) -(0.4595959596 0.00984573433 -0.00050009999) -(0.4595959596 0.009929188095 -0.00050009999) -(0.4595959596 0.009975 -0.00050009999) -(0.4595959596 0.01 -0.00050009999) -(0.4646464646 0 -0.00050009999) -(0.4646464646 2.5e-05 -0.00050009999) -(0.4646464646 7.08119053e-05 -0.00050009999) -(0.4646464646 0.00015426567 -0.00050009999) -(0.4646464646 0.0003046635713 -0.00050009999) -(0.4646464646 0.0005705243934 -0.00050009999) -(0.4646464646 0.001024837958 -0.00050009999) -(0.4646464646 0.001758019915 -0.00050009999) -(0.4646464646 0.002838575912 -0.00050009999) -(0.4646464646 0.004235474916 -0.00050009999) -(0.4646464646 0.005764525084 -0.00050009999) -(0.4646464646 0.007161424088 -0.00050009999) -(0.4646464646 0.008241980085 -0.00050009999) -(0.4646464646 0.008975162042 -0.00050009999) -(0.4646464646 0.009429475607 -0.00050009999) -(0.4646464646 0.009695336429 -0.00050009999) -(0.4646464646 0.00984573433 -0.00050009999) -(0.4646464646 0.009929188095 -0.00050009999) -(0.4646464646 0.009975 -0.00050009999) -(0.4646464646 0.01 -0.00050009999) -(0.4696969697 0 -0.00050009999) -(0.4696969697 2.5e-05 -0.00050009999) -(0.4696969697 7.08119053e-05 -0.00050009999) -(0.4696969697 0.00015426567 -0.00050009999) -(0.4696969697 0.0003046635713 -0.00050009999) -(0.4696969697 0.0005705243934 -0.00050009999) -(0.4696969697 0.001024837958 -0.00050009999) -(0.4696969697 0.001758019915 -0.00050009999) -(0.4696969697 0.002838575912 -0.00050009999) -(0.4696969697 0.004235474916 -0.00050009999) -(0.4696969697 0.005764525084 -0.00050009999) -(0.4696969697 0.007161424088 -0.00050009999) -(0.4696969697 0.008241980085 -0.00050009999) -(0.4696969697 0.008975162042 -0.00050009999) -(0.4696969697 0.009429475607 -0.00050009999) -(0.4696969697 0.009695336429 -0.00050009999) -(0.4696969697 0.00984573433 -0.00050009999) -(0.4696969697 0.009929188095 -0.00050009999) -(0.4696969697 0.009975 -0.00050009999) -(0.4696969697 0.01 -0.00050009999) -(0.4747474747 0 -0.00050009999) -(0.4747474747 2.5e-05 -0.00050009999) -(0.4747474747 7.08119053e-05 -0.00050009999) -(0.4747474747 0.00015426567 -0.00050009999) -(0.4747474747 0.0003046635713 -0.00050009999) -(0.4747474747 0.0005705243934 -0.00050009999) -(0.4747474747 0.001024837958 -0.00050009999) -(0.4747474747 0.001758019915 -0.00050009999) -(0.4747474747 0.002838575912 -0.00050009999) -(0.4747474747 0.004235474916 -0.00050009999) -(0.4747474747 0.005764525084 -0.00050009999) -(0.4747474747 0.007161424088 -0.00050009999) -(0.4747474747 0.008241980085 -0.00050009999) -(0.4747474747 0.008975162042 -0.00050009999) -(0.4747474747 0.009429475607 -0.00050009999) -(0.4747474747 0.009695336429 -0.00050009999) -(0.4747474747 0.00984573433 -0.00050009999) -(0.4747474747 0.009929188095 -0.00050009999) -(0.4747474747 0.009975 -0.00050009999) -(0.4747474747 0.01 -0.00050009999) -(0.4797979798 0 -0.00050009999) -(0.4797979798 2.5e-05 -0.00050009999) -(0.4797979798 7.08119053e-05 -0.00050009999) -(0.4797979798 0.00015426567 -0.00050009999) -(0.4797979798 0.0003046635713 -0.00050009999) -(0.4797979798 0.0005705243934 -0.00050009999) -(0.4797979798 0.001024837958 -0.00050009999) -(0.4797979798 0.001758019915 -0.00050009999) -(0.4797979798 0.002838575912 -0.00050009999) -(0.4797979798 0.004235474916 -0.00050009999) -(0.4797979798 0.005764525084 -0.00050009999) -(0.4797979798 0.007161424088 -0.00050009999) -(0.4797979798 0.008241980085 -0.00050009999) -(0.4797979798 0.008975162042 -0.00050009999) -(0.4797979798 0.009429475607 -0.00050009999) -(0.4797979798 0.009695336429 -0.00050009999) -(0.4797979798 0.00984573433 -0.00050009999) -(0.4797979798 0.009929188095 -0.00050009999) -(0.4797979798 0.009975 -0.00050009999) -(0.4797979798 0.01 -0.00050009999) -(0.4848484848 0 -0.00050009999) -(0.4848484848 2.5e-05 -0.00050009999) -(0.4848484848 7.08119053e-05 -0.00050009999) -(0.4848484848 0.00015426567 -0.00050009999) -(0.4848484848 0.0003046635713 -0.00050009999) -(0.4848484848 0.0005705243934 -0.00050009999) -(0.4848484848 0.001024837958 -0.00050009999) -(0.4848484848 0.001758019915 -0.00050009999) -(0.4848484848 0.002838575912 -0.00050009999) -(0.4848484848 0.004235474916 -0.00050009999) -(0.4848484848 0.005764525084 -0.00050009999) -(0.4848484848 0.007161424088 -0.00050009999) -(0.4848484848 0.008241980085 -0.00050009999) -(0.4848484848 0.008975162042 -0.00050009999) -(0.4848484848 0.009429475607 -0.00050009999) -(0.4848484848 0.009695336429 -0.00050009999) -(0.4848484848 0.00984573433 -0.00050009999) -(0.4848484848 0.009929188095 -0.00050009999) -(0.4848484848 0.009975 -0.00050009999) -(0.4848484848 0.01 -0.00050009999) -(0.4898989899 0 -0.00050009999) -(0.4898989899 2.5e-05 -0.00050009999) -(0.4898989899 7.08119053e-05 -0.00050009999) -(0.4898989899 0.00015426567 -0.00050009999) -(0.4898989899 0.0003046635713 -0.00050009999) -(0.4898989899 0.0005705243934 -0.00050009999) -(0.4898989899 0.001024837958 -0.00050009999) -(0.4898989899 0.001758019915 -0.00050009999) -(0.4898989899 0.002838575912 -0.00050009999) -(0.4898989899 0.004235474916 -0.00050009999) -(0.4898989899 0.005764525084 -0.00050009999) -(0.4898989899 0.007161424088 -0.00050009999) -(0.4898989899 0.008241980085 -0.00050009999) -(0.4898989899 0.008975162042 -0.00050009999) -(0.4898989899 0.009429475607 -0.00050009999) -(0.4898989899 0.009695336429 -0.00050009999) -(0.4898989899 0.00984573433 -0.00050009999) -(0.4898989899 0.009929188095 -0.00050009999) -(0.4898989899 0.009975 -0.00050009999) -(0.4898989899 0.01 -0.00050009999) -(0.4949494949 0 -0.00050009999) -(0.4949494949 2.5e-05 -0.00050009999) -(0.4949494949 7.08119053e-05 -0.00050009999) -(0.4949494949 0.00015426567 -0.00050009999) -(0.4949494949 0.0003046635713 -0.00050009999) -(0.4949494949 0.0005705243934 -0.00050009999) -(0.4949494949 0.001024837958 -0.00050009999) -(0.4949494949 0.001758019915 -0.00050009999) -(0.4949494949 0.002838575912 -0.00050009999) -(0.4949494949 0.004235474916 -0.00050009999) -(0.4949494949 0.005764525084 -0.00050009999) -(0.4949494949 0.007161424088 -0.00050009999) -(0.4949494949 0.008241980085 -0.00050009999) -(0.4949494949 0.008975162042 -0.00050009999) -(0.4949494949 0.009429475607 -0.00050009999) -(0.4949494949 0.009695336429 -0.00050009999) -(0.4949494949 0.00984573433 -0.00050009999) -(0.4949494949 0.009929188095 -0.00050009999) -(0.4949494949 0.009975 -0.00050009999) -(0.4949494949 0.01 -0.00050009999) -(0.5 0 -0.00050009999) -(0.5 2.5e-05 -0.00050009999) -(0.5 7.08119053e-05 -0.00050009999) -(0.5 0.00015426567 -0.00050009999) -(0.5 0.0003046635713 -0.00050009999) -(0.5 0.0005705243934 -0.00050009999) -(0.5 0.001024837958 -0.00050009999) -(0.5 0.001758019915 -0.00050009999) -(0.5 0.002838575912 -0.00050009999) -(0.5 0.004235474916 -0.00050009999) -(0.5 0.005764525084 -0.00050009999) -(0.5 0.007161424088 -0.00050009999) -(0.5 0.008241980085 -0.00050009999) -(0.5 0.008975162042 -0.00050009999) -(0.5 0.009429475607 -0.00050009999) -(0.5 0.009695336429 -0.00050009999) -(0.5 0.00984573433 -0.00050009999) -(0.5 0.009929188095 -0.00050009999) -(0.5 0.009975 -0.00050009999) -(0.5 0.01 -0.00050009999) -) - - -// ************************************************************************* // diff --git a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/zoneToPatchName b/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/zoneToPatchName deleted file mode 100755 index 929cab1d7..000000000 --- a/tutorials/compressible/rhoPisoFoam/ras/pipe/constant/polyMesh/zoneToPatchName +++ /dev/null @@ -1,40 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM Extend Project: Open source CFD | -| \\ / O peration | Version: 1.6-ext | -| \\ / A nd | Web: www.extend-project.de | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class wordList; - location "constant/polyMesh"; - object zoneToPatchName; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - -16 -( -unknown -unknown -unknown -unknown -unknown -unknown -unknown -unknown -unknown -unknown -unknown -int_SOLID -WALL_1 -WALL_2 -INLET -OUTLET -) - - -// ************************************************************************* // From 4d29d1981d2e4e35d2d3fcca7f866339a5594b4b Mon Sep 17 00:00:00 2001 From: morgoth Date: Thu, 22 Aug 2013 19:47:37 +0200 Subject: [PATCH 15/18] add branch ReadMe file --- README_RealGasBranch | 63 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 README_RealGasBranch diff --git a/README_RealGasBranch b/README_RealGasBranch new file mode 100644 index 000000000..d97432011 --- /dev/null +++ b/README_RealGasBranch @@ -0,0 +1,63 @@ +Features + + +/*************************************Libraries**************************************************/ + +1. Included cubic equations of state for pure fluid. + --> Redlich Kwong --> class = redlichKwong + --> Peng Robinson --> class = pengRobinson + --> Soave Redlich Kwong --> class = soaveRedlichKwong + --> Aungier Redlich Kwong --> class = aungierRedlichKwong + +2. Included cubic equations of state for mixtures. + TODO: connect the classes to the reaction models + -->class = mixtureRedlichKwong + -->class = mixturePengRobinson + -->class = mixtureSoaveRedlichKwong + -->class = aungierSoaveRedlichKwong + +3. Included a new Thermo model + --> enthalpy calculated using NASA heat capacity polynomical + Added real gas correction in class + class = nasaHeatCapacityPolynomial + +4. Minor changed in thermo related models so that they can be used with real gas classes + --> class = realGasSpecieThermo + --> class = sutherland + --> class = const + --> class = basicMixture + --> class = basicPsiThermo + +5. Added enthalpy and internal energy thermodynamic class based on basicPsiThermo for real gases + --> enthalpy based thermo model, class = realGasHThermo + --> internal energy based thermo model, class = realGasEThermo + +6. Added high precision water properties (IAPWS97) based on freeSteam (external program, not included) + Classes will not be compiled by Allwmake file + Classes will compile without freeSteam. Freesteam is loaded at runTime (see Tutorial) + --> classes = externalMedia/IAPWS_Waterproperties + +/*************************************Solver**************************************************/ + +1. Changed pressure equation of rhoPisoFoam. Orginal pressure equation assumes perfect gas + (linear relationship between pressure and density) + --> new solver = realFluidPisoFoam + +/*************************************Tutorials**************************************************/ + +1. pure fluid real gas mixture tutorial + --> realFluidPisoFoam/ras/backStep + +2. IAPWS97 water properties tutorial + freeSteam must be installed for this tutorial + additional classes loaded in controlDict + --> realFluidPisoFoam/ras/cavity_IAPWS97 + + +/*************************************Change log**************************************************/ + +git commit: "add branch ReadMe file" + --> added this file + + + From 1826063cad9017a7a044c39161fd8daeb4afa3d5 Mon Sep 17 00:00:00 2001 From: Henrik Rusche Date: Thu, 12 May 2016 14:33:49 +0200 Subject: [PATCH 16/18] Fix compilation after rebase --- .../fixedEnthalpyFvPatchScalarField.C | 19 ++------ .../gradientEnthalpyFvPatchScalarField.C | 30 ++++--------- .../mixedEnthalpyFvPatchScalarField.C | 35 +++++---------- .../mixtures/basicMixture/basicMixtures.C | 2 + .../basic/psiThermo/hPsiThermo/hPsiThermo.C | 2 +- .../psiThermo/realGasEThermo/realGasEThermo.C | 16 ++++--- .../psiThermo/realGasEThermo/realGasEThermo.H | 12 ++--- .../psiThermo/realGasHThermo/realGasHThermo.C | 44 +++++++++---------- .../psiThermo/realGasHThermo/realGasHThermo.H | 2 +- .../aungierRedlichKwong/aungierRedlichKwong.C | 20 ++++----- .../aungierRedlichKwongI.H | 18 ++++---- .../mixturePengRobinson/mixturePengRobinson.C | 2 +- .../mixturePengRobinsonI.H | 13 +++--- .../mixtureRedlichKwongI.H | 12 ++--- .../mixtureSoaveRedlichKwong.C | 2 +- .../mixtureSoaveRedlichKwongI.H | 13 +++--- .../pengRobinson/pengRobinson.C | 18 ++++---- .../pengRobinson/pengRobinsonI.H | 22 +++++----- .../redlichKwong/redlichKwong.C | 14 +++--- .../redlichKwong/redlichKwong.H | 8 ++-- .../redlichKwong/redlichKwongI.H | 18 ++++---- .../soaveRedlichKwong/soaveRedlichKwong.C | 18 ++++---- .../soaveRedlichKwong/soaveRedlichKwongI.H | 22 +++++----- .../nasaHeatCapacityPolynomial.C | 10 ++--- .../nasaHeatCapacityPolynomialI.H | 26 +++++------ .../specie/transport/const/constTransportI.H | 4 +- .../sutherland/sutherlandTransportI.H | 4 +- 27 files changed, 185 insertions(+), 221 deletions(-) diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C index 1f6d69a3c..e2c0dd721 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C @@ -103,26 +103,13 @@ void Foam::fixedEnthalpyFvPatchScalarField::updateCoeffs() const_cast(thermo.T().boundaryField()[patchi]); Tw.evaluate(); - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - pw.evaluate(); - - if - ( - dimensionedInternalField().name() == db().mangleFileName("h") - ) - { - operator==(pw, thermo.h(Tw, patchi)); - } - else if - ( - dimensionedInternalField().name() == db().mangleFileName("i") - ) + if (dimensionedInternalField().name() == "h") { + operator==(thermo.h(Tw, patchi)); } else { - operator==(pw, thermo.hs(Tw, patchi)); + operator==(thermo.hs(Tw, patchi)); } fixedValueFvPatchScalarField::updateCoeffs(); diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnthalpy/gradientEnthalpyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnthalpy/gradientEnthalpyFvPatchScalarField.C index c0bda5782..e4dfbd88d 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnthalpy/gradientEnthalpyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnthalpy/gradientEnthalpyFvPatchScalarField.C @@ -104,36 +104,22 @@ void Foam::gradientEnthalpyFvPatchScalarField::updateCoeffs() Tw.evaluate(); - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - - pw.evaluate(); - - if - ( - dimensionedInternalField().name() == db().mangleFileName("h") - ) + if (dimensionedInternalField().name() == "h") { gradient() = thermo.Cp(Tw, patchi)*Tw.snGrad() - + patch().deltaCoeffs()* - ( - thermo.h(pw, Tw, patchi) - - thermo.h(pw, Tw, patch().faceCells()) - ); - } - else if - ( - dimensionedInternalField().name() == db().mangleFileName("i") - ) - { + + patch().deltaCoeffs()* + ( + thermo.h(Tw, patchi) + - thermo.h(Tw, patch().faceCells()) + ); } else { gradient() = thermo.Cp(Tw, patchi)*Tw.snGrad() + patch().deltaCoeffs()* ( - thermo.hs(pw, Tw, patchi) - - thermo.hs(pw, Tw, patch().faceCells()) + thermo.hs(Tw, patchi) + - thermo.hs(Tw, patch().faceCells()) ); } diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/mixedEnthalpy/mixedEnthalpyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/mixedEnthalpy/mixedEnthalpyFvPatchScalarField.C index 0c63c5a24..a679413d5 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/mixedEnthalpy/mixedEnthalpyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/mixedEnthalpy/mixedEnthalpyFvPatchScalarField.C @@ -111,40 +111,27 @@ void Foam::mixedEnthalpyFvPatchScalarField::updateCoeffs() Tw.evaluate(); - fvPatchScalarField& pw = - const_cast(thermo.p().boundaryField()[patchi]); - pw.evaluate(); - valueFraction() = Tw.valueFraction(); - if - ( - dimensionedInternalField().name() == db().mangleFileName("h") - ) + if (dimensionedInternalField().name() == "h") { refValue() = thermo.h(Tw.refValue(), patchi); refGrad() = thermo.Cp(Tw, patchi)*Tw.refGrad() - + patch().deltaCoeffs()* - ( - thermo.h(pw, Tw, patchi) - - thermo.h(pw, Tw, patch().faceCells()) - ); - } - else if - ( - dimensionedInternalField().name() == db().mangleFileName("i") - ) - { + + patch().deltaCoeffs()* + ( + thermo.h(Tw, patchi) + - thermo.h(Tw, patch().faceCells()) + ); } else { refValue() = thermo.hs(Tw.refValue(), patchi); refGrad() = thermo.Cp(Tw, patchi)*Tw.refGrad() - + patch().deltaCoeffs()* - ( - thermo.hs(pw, Tw, patchi) - - thermo.hs(pw, Tw, patch().faceCells()) - ); + + patch().deltaCoeffs()* + ( + thermo.hs(Tw, patchi) + - thermo.hs(Tw, patch().faceCells()) + ); } mixedFvPatchScalarField::updateCoeffs(); diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C index 0d9ecb899..9861ca1e3 100644 --- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C +++ b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C @@ -45,6 +45,8 @@ Description #include "pureMixture.H" +#include "thermoPhysicsTypes.H" + #include "addToRunTimeSelectionTable.H" #include "redlichKwong.H" diff --git a/src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermo.C b/src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermo.C index 49e9f002b..b72d3ac61 100644 --- a/src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermo.C @@ -111,7 +111,7 @@ Foam::hPsiThermo::hPsiThermo ( "h", mesh.time().timeName(), - mesh, + obj, IOobject::NO_READ, IOobject::NO_WRITE ), diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C index 72fc7f5d7..ea1285ebb 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C @@ -109,10 +109,14 @@ void Foam::realGasEThermo::calculate() // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template -Foam::realGasEThermo::realGasEThermo(const fvMesh& mesh) +Foam::realGasEThermo::realGasEThermo +( + const fvMesh& mesh, + const objectRegistry& obj +) : - basicPsiThermo(mesh), - MixtureType(*this, mesh), + basicPsiThermo(mesh, obj), + MixtureType(*this, mesh, obj), e_ ( @@ -120,7 +124,7 @@ Foam::realGasEThermo::realGasEThermo(const fvMesh& mesh) ( "e", mesh.time().timeName(), - mesh, + obj, IOobject::NO_READ, IOobject::NO_WRITE ), @@ -135,7 +139,7 @@ Foam::realGasEThermo::realGasEThermo(const fvMesh& mesh) ( "rhoThermo", mesh.time().timeName(), - mesh, + obj, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE ), @@ -149,7 +153,7 @@ Foam::realGasEThermo::realGasEThermo(const fvMesh& mesh) ( "drhode", mesh.time().timeName(), - mesh, + obj, IOobject::NO_READ, IOobject::NO_WRITE ), diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H index 444bf9780..2fa2b3b6a 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H @@ -90,8 +90,8 @@ public: // Constructors - //- Construct from mesh - realGasEThermo(const fvMesh&); + //- Construct from mesh and object registry + realGasEThermo(const fvMesh&, const objectRegistry&); //- Destructor virtual ~realGasEThermo(); @@ -117,14 +117,14 @@ public: // Access to thermodynamic state variables - //- Enthalpy [J/kg] + //- Internal energy [J/kg] // Non-const access allowed for transport equations virtual volScalarField& e() { return e_; } - //- Enthalpy [J/kg] + //- Internal energy [J/kg] virtual const volScalarField& e() const { return e_; @@ -138,14 +138,14 @@ public: // Fields derived from thermodynamic state variables - //- Enthalpy for cell-set [J/kg] + //- Internal energy for cell-set [J/kg] virtual tmp e ( const scalarField& T, const labelList& cells ) const; - //- Enthalpy for patch [J/kg] + //- Internal energy for patch [J/kg] virtual tmp e ( const scalarField& T, diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C index 92a41963b..c69e23b3e 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C @@ -72,10 +72,8 @@ void Foam::realGasHThermo::calculate() fvPatchScalarField& pmu = this->mu_.boundaryField()[patchi]; fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi]; - if (pT.fixesValue()) { - forAll(pT, facei) { const typename MixtureType::thermoType& mixture_ = @@ -84,7 +82,7 @@ void Foam::realGasHThermo::calculate() prho[facei] = mixture_.rho(pp[facei], pT[facei],prho[facei]); ppsi[facei]=mixture_.psi(prho[facei],pT[facei]); pdrhodh[facei]=mixture_.drhodH(prho[facei],pT[facei]); - ph[facei] = mixture_.H(prho[facei], pT[facei]); + ph[facei] = mixture_.H(prho[facei], pT[facei]); pmu[facei] = mixture_.mu(pT[facei]); palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); } @@ -98,8 +96,8 @@ void Foam::realGasHThermo::calculate() mixture_.TH(ph[facei], pT[facei],pp[facei],prho[facei]); pmu[facei] = mixture_.mu(pT[facei]); - ppsi[facei]=mixture_.psi(prho[facei],pT[facei]); - pdrhodh[facei]=mixture_.drhodH(prho[facei],pT[facei]); + ppsi[facei]=mixture_.psi(prho[facei],pT[facei]); + pdrhodh[facei]=mixture_.drhodH(prho[facei],pT[facei]); palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); } } @@ -110,10 +108,15 @@ void Foam::realGasHThermo::calculate() // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template -Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) +Foam::realGasHThermo::realGasHThermo +( + const fvMesh& mesh, + const objectRegistry& obj +) + : - basicPsiThermo(mesh), - MixtureType(*this, mesh), + basicPsiThermo(mesh, obj), + MixtureType(*this, mesh, obj), h_ ( @@ -121,44 +124,41 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) ( "h", mesh.time().timeName(), - mesh, + obj, IOobject::NO_READ, IOobject::NO_WRITE ), - mesh, + mesh, dimensionSet(0, 2, -2, 0, 0), this->hBoundaryTypes() - ), - + ), rho_ ( IOobject ( "rhoThermo", mesh.time().timeName(), - mesh, + obj, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE ), - mesh, - dimDensity + mesh, + dimDensity ), - drhodh_ ( IOobject ( "drhodh", mesh.time().timeName(), - mesh, + obj, IOobject::NO_READ, IOobject::NO_WRITE ), - mesh, - dimensionSet(1, -5, 2, 0, 0) + mesh, + dimensionSet(1, -5, 2, 0, 0) ) { - scalarField& hCells = h_.internalField(); const scalarField& TCells = this->T_.internalField(); const scalarField& pCells =this->p_.internalField(); @@ -187,15 +187,15 @@ Foam::realGasHThermo::realGasHThermo(const fvMesh& mesh) forAll(h_.boundaryField(), patchi) { h_.boundaryField()[patchi] == - h(this->T_.boundaryField()[patchi], patchi); + h(this->T_.boundaryField()[patchi], patchi); } hBoundaryCorrection(h_); + calculate(); // Switch on saving old time this->psi_.oldTime(); - } diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H index a8026871d..b984e4fbc 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H @@ -91,7 +91,7 @@ public: // Constructors //- Construct from mesh - realGasHThermo(const fvMesh&); + realGasHThermo(const fvMesh&, const objectRegistry& obj); //- Destructor virtual ~realGasHThermo(); diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C index 034fcbc32..883e3f99e 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C @@ -50,21 +50,21 @@ aungierRedlichKwong::aungierRedlichKwong(Istream& is) Tcrit_(readScalar(is)), azentricFactor_(readScalar(is)), rhocrit_(readScalar(is)), - a0_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), - b_(0.08664*this->RR*Tcrit_/pcrit_), - c_(this->RR*Tcrit_/(pcrit_+(a0_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), + a0_(0.42747*pow(this->RR(),2)*pow(Tcrit_,2)/pcrit_), + b_(0.08664*this->RR()*Tcrit_/pcrit_), + c_(this->RR()*Tcrit_/(pcrit_+(a0_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), n_(0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2)), - TSave(0.0), //CL: Only uses the default values - rhoMin_(1e-3), - rhoMax_(1500), b2_(pow(b_,2)), b3_(pow(b_,3)), b4_(pow(b_,4)), b5_(pow(b_,5)), c2_(pow(c_,2)), // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) + rhostd_(this->rho(this->Pstd(),this->Tstd(),this->Pstd()/(this->Tstd()*this->R()))), + rhoMax_(1500), + rhoMin_(1e-3), + TSave(0.0) { is.check("aungierRedlichKwong::aungierRedlichKwong(Istream& is)"); } @@ -84,9 +84,9 @@ aungierRedlichKwong::aungierRedlichKwong(const dictionary& dict) //CL: therefore, rho can be larger than rhoMax and smaller than rhoMin rhoMin_(dict.subDict("equationOfState").lookupOrDefault("rhoMin",1e-3)), rhoMax_(dict.subDict("equationOfState").lookupOrDefault("rhoMax",1500)), - a0_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), - b_(0.08664*this->RR*Tcrit_/pcrit_), - c_(this->RR*Tcrit_/(pcrit_+(a0_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), + a0_(0.42747*pow(this->RR(),2)*pow(Tcrit_,2)/pcrit_), + b_(0.08664*this->RR()*Tcrit_/pcrit_), + c_(this->RR()*Tcrit_/(pcrit_+(a0_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), n_(0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2)), TSave(0.0), b2_(pow(b_,2)), diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwongI.H index f41ee741c..b5eb933c0 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwongI.H @@ -61,12 +61,12 @@ inline aungierRedlichKwong::aungierRedlichKwong(const word& name, const aungierR b_(pg.b_), c_(pg.c_), n_(pg.n_), - rhostd_(pg.rhostd_), b2_(pg.b2_), b3_(pg.b3_), b4_(pg.b4_), b5_(pg.b5_), - c2_(pg.c2_) + c2_(pg.c2_), + rhostd_(pg.rhostd_) {} @@ -206,7 +206,7 @@ inline scalar aungierRedlichKwong::c2()const inline scalar aungierRedlichKwong::p(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return this->RR*T/(Vm-b()+c()) + return this->RR()*T/(Vm-b()+c()) -a(T)/(Vm*(Vm+b())); } @@ -219,7 +219,7 @@ inline scalar aungierRedlichKwong::dpdv(const scalar rho, const scalar T) const scalar Vm2 = Vm*Vm; return (a(T)*(b3()-2*b2()*c()+b()*(c()+Vm)*(c()-3*Vm)+2*Vm*pow(c()+Vm,2)) - -this->RR*T*Vm2*(b2()+2*b()*Vm+Vm2)) + -this->RR()*T*Vm2*(b2()+2*b()*Vm+Vm2)) /(Vm2*pow(b()-c()-Vm,2)*pow(b()+Vm,2)); } @@ -229,7 +229,7 @@ inline scalar aungierRedlichKwong::dpdv(const scalar rho, const scalar T) const inline scalar aungierRedlichKwong::dpdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return this->RR/(Vm-b()+c())-dadT(T)/(Vm*(Vm+b())); + return this->RR()/(Vm-b()+c())-dadT(T)/(Vm*(Vm+b())); } @@ -259,7 +259,7 @@ inline scalar aungierRedlichKwong::integral_p_dv ) const { scalar Vm = this->W()/rho; - return this->RR*T*log(-b()+c()+Vm)+a(T)*log(b()+Vm)/b()-a(T)*log(Vm)/b(); + return this->RR()*T*log(-b()+c()+Vm)+a(T)*log(b()+Vm)/b()-a(T)*log(Vm)/b(); } @@ -272,7 +272,7 @@ inline scalar aungierRedlichKwong::integral_dpdT_dv ) const { scalar Vm = this->W()/rho; - return this->RR*log(-b()+c()+Vm)+dadT(T)*log(b()+Vm)/b()-dadT(T)*log(Vm)/b(); + return this->RR()*log(-b()+c()+Vm)+dadT(T)*log(b()+Vm)/b()-dadT(T)*log(Vm)/b(); } @@ -293,7 +293,7 @@ inline scalar aungierRedlichKwong::d2pdv2(const scalar rho,const scalar T) const return -2*(a(T)*(b5()-3*b4()*c()+3*b3()*(c2()-c()*Vm-Vm2) -b2()*(c()+Vm)*(c2()-7*c()*Vm+Vm2)+3*b()*Vm*pow(c()+Vm,2)*(2*Vm-c()) - -3*Vm2*pow(c()+Vm,3))+this->RR*T*Vm3*(b3()+3*b2()*Vm + -3*Vm2*pow(c()+Vm,3))+this->RR()*T*Vm3*(b3()+3*b2()*Vm +3*b()*Vm2+Vm3)) /(Vm3*pow(b()-c()-Vm,3)*pow(b()+Vm,3)); } @@ -320,7 +320,7 @@ inline scalar aungierRedlichKwong::d2pdvdT(const scalar rho, const scalar T) con scalar Vm2 = Vm*Vm; return (dadT(T)*(b3()-2*b2()*c()+b()*(c()+Vm)*(c()-3*Vm)+2*Vm*pow(c()+Vm,2)) - -this->RR*Vm2*(b2()+2*b()*Vm+Vm2)) + -this->RR()*Vm2*(b2()+2*b()*Vm+Vm2)) /(Vm2*pow(b()-c()-Vm,2)*pow(b()+Vm,2)); } diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C index 2b1ef84ae..d84fa7759 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C @@ -46,8 +46,8 @@ namespace Foam mixturePengRobinson::mixturePengRobinson(Istream& is) : pengRobinson(is), - numOfComp(1), singleComponent(1), + numOfComp(1), //CL: no real gas mixture correction when stream constructor is used realMixtureCorr_(false) { diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinsonI.H index 7cf527189..f1aed3743 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinsonI.H @@ -57,10 +57,10 @@ inline mixturePengRobinson::mixturePengRobinson ) : pengRobinson(pr), - numOfComp(numOfComp), + singleComponent(1), weigths(weigths), mixtureComponents(mixtureComponents), - singleComponent(1) + numOfComp(numOfComp) { a0_=a0; b_=b; @@ -84,16 +84,15 @@ inline mixturePengRobinson::mixturePengRobinson ) : pengRobinson(pr), - numOfComp(numOfComp), + singleComponent(0), weigths(weigths), mixtureComponents(mixtureComponents), - singleComponent(0) - + numOfComp(numOfComp) { TSave=0.0; rhoMin_=rhoMin; rhoMax_=rhoMax; - rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); + rhostd_=this->rho(this->Pstd(), this->Tstd(), this->Pstd()*this->W()/(this->Tstd()*this->R())); } @@ -443,7 +442,7 @@ inline void mixturePengRobinson::operator+=(const mixturePengRobinson& pr) rhoMax_=max(rhoMax_,pr.rhoMax_); //CL: calculating rho @ std - rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); + rhostd_=this->rho(this->Pstd(), this->Tstd(), this->Pstd()*this->W()/(this->Tstd()*this->R())); } diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwongI.H index a48f2cab1..44e419cc0 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwongI.H @@ -55,9 +55,9 @@ inline mixtureRedlichKwong::mixtureRedlichKwong ) : redlichKwong(rK), - numOfComp(numOfComp), weigths(weigths), - mixtureComponents(mixtureComponents) + mixtureComponents(mixtureComponents), + numOfComp(numOfComp) { a_=a; b_=b; @@ -84,9 +84,9 @@ inline mixtureRedlichKwong::mixtureRedlichKwong ) : redlichKwong(rK), - numOfComp(numOfComp), weigths(weigths), - mixtureComponents(mixtureComponents) + mixtureComponents(mixtureComponents), + numOfComp(numOfComp) { //CL: update model coefficients updateModelCoefficients(); @@ -96,7 +96,7 @@ inline mixtureRedlichKwong::mixtureRedlichKwong rhoMax_=rhoMax; //CL: calculating rho @ std - rhostd_=this->rho(Pstd, Tstd, Pstd/(Tstd*this->R())); + rhostd_=this->rho(this->Pstd(), this->Tstd(), this->Pstd()/(this->Tstd()*this->R())); } @@ -200,7 +200,7 @@ inline void mixtureRedlichKwong::operator+=(const mixtureRedlichKwong& rK) rhoMax_=max(rhoMax_,rK.rhoMax_); //CL: calculating rho @ std - rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); + rhostd_=this->rho(this->Pstd(), this->Tstd(), this->Pstd()*this->W()/(this->Tstd()*this->R())); } // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C index 214432bcc..b11f3fed1 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C @@ -46,8 +46,8 @@ namespace Foam mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(Istream& is) : soaveRedlichKwong(is), - numOfComp(1), singleComponent(1), + numOfComp(1), //CL: no real gas mixture correction when stream constructor is used realMixtureCorr_(false) { diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H index 82ef4ab6d..9791dc217 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H @@ -57,10 +57,10 @@ inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong ) : soaveRedlichKwong(srk), - numOfComp(numOfComp), + singleComponent(1), weigths(weigths), mixtureComponents(mixtureComponents), - singleComponent(1) + numOfComp(numOfComp) { a0_=a0; b_=b; @@ -85,16 +85,15 @@ inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong ) : soaveRedlichKwong(srk), - numOfComp(numOfComp), + singleComponent(0), weigths(weigths), mixtureComponents(mixtureComponents), - singleComponent(0) - + numOfComp(numOfComp) { TSave=0.0; rhoMin_=rhoMin; rhoMax_=rhoMax; - rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); + rhostd_=this->rho(this->Pstd(), this->Tstd(), this->Pstd()*this->W()/(this->Tstd()*this->R())); } @@ -443,7 +442,7 @@ inline void mixtureSoaveRedlichKwong::operator+=(const mixtureSoaveRedlichKwong& rhoMax_=max(rhoMax_,srk.rhoMax_); //CL: calculating rho @ std - rhostd_=this->rho(Pstd, Tstd, Pstd*this->W()/(Tstd*this->R())); + rhostd_=this->rho(this->Pstd(), this->Tstd(), this->Pstd()*this->W()/(this->Tstd()*this->R())); } diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C index e6fb2b170..b107498e4 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C @@ -49,18 +49,18 @@ pengRobinson::pengRobinson(Istream& is) pcrit_(readScalar(is)), Tcrit_(readScalar(is)), azentricFactor_(readScalar(is)), - a0_(0.457235*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), - b_(0.077796*this->RR*Tcrit_/pcrit_), n_(0.37464+1.54226*azentricFactor_-0.26992*pow(azentricFactor_,2)), - TSave(0.0), - rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))), + a0_(0.457235*pow(this->RR(),2)*pow(Tcrit_,2)/pcrit_), + b_(0.077796*this->RR()*Tcrit_/pcrit_), //CL: Only uses the default values - rhoMin_(1e-3), - rhoMax_(1500), b2_(pow(b_,2)), b3_(pow(b_,3)), b4_(pow(b_,4)), - b5_(pow(b_,5)) + b5_(pow(b_,5)), + rhoMax_(1500), + rhoMin_(1e-3), + TSave(0.0), + rhostd_(this->rho(this->Pstd(),this->Tstd(),this->Pstd()/(this->Tstd()*this->R()))) { is.check("pengRobinson::pengRobinson(Istream& is)"); } @@ -79,8 +79,8 @@ pengRobinson::pengRobinson(const dictionary& dict) //CL: therefore, rho can be larger than rhoMax and smaller than rhoMin rhoMin_(dict.subDict("equationOfState").lookupOrDefault("rhoMin",1e-3)), rhoMax_(dict.subDict("equationOfState").lookupOrDefault("rhoMax",1500)), - a0_(0.457235*pow(this->RR,2)*pow(Tcrit_,2)/pcrit_), - b_(0.077796*this->RR*Tcrit_/pcrit_), + a0_(0.457235*pow(this->RR(),2)*pow(Tcrit_,2)/pcrit_), + b_(0.077796*this->RR()*Tcrit_/pcrit_), n_(0.37464+1.54226*azentricFactor_-0.26992*pow(azentricFactor_,2)), TSave(0.0), b2_(pow(b_,2)), diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H index 407691ebb..70829bdbf 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H @@ -57,15 +57,15 @@ inline pengRobinson::pengRobinson(const word& name, const pengRobinson& pr) pcrit_(pr.pcrit_), Tcrit_(pr.Tcrit_), azentricFactor_(pr.azentricFactor_), + n_(pr.n_), a0_(pr.a0_), b_(pr.b_), - n_(pr.n_), - rhostd_(pr.rhostd_), - TSave(0), b2_(pr.b2_), b3_(pr.b3_), b4_(pr.b4_), - b5_(pr.b5_) + b5_(pr.b5_), + TSave(0), + rhostd_(pr.rhostd_) {} @@ -196,7 +196,7 @@ inline scalar pengRobinson::p(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return this->RR*T/(Vm-b())-a(T)/(pow(Vm,2)+2*b()*Vm-b2()); + return this->RR()*T/(Vm-b())-a(T)/(pow(Vm,2)+2*b()*Vm-b2()); } @@ -213,7 +213,7 @@ inline scalar pengRobinson::dpdv(const scalar rho, const scalar T) const ( b3()-b2()*Vm-b()*Vm2+Vm3 ) - -this->RR*T* + -this->RR()*T* ( b4()-4*b3()*Vm+2*b2()*Vm2 +4*b()*Vm3+pow(Vm,4) @@ -229,7 +229,7 @@ inline scalar pengRobinson::dpdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return this->RR/(Vm-b())-dadT(T)/(pow(Vm,2)+2*b()*Vm-b2()); + return this->RR()/(Vm-b())-dadT(T)/(pow(Vm,2)+2*b()*Vm-b2()); } @@ -255,7 +255,7 @@ inline scalar pengRobinson::integral_p_dv(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return -pow(2,0.5)*a(T)*log(b()*(1-pow(2,0.5))+Vm)/(4*b())+this->RR*T*log(Vm-b()) + return -pow(2,0.5)*a(T)*log(b()*(1-pow(2,0.5))+Vm)/(4*b())+this->RR()*T*log(Vm-b()) +pow(2,0.5)*a(T)*log(b()*(pow(2,0.5)+1)+Vm)/(4*b()); } @@ -267,7 +267,7 @@ inline scalar pengRobinson::integral_dpdT_dv(const scalar rho,const scalar T) co scalar Vm = this->W()/rho; return -pow(2,0.5)*dadT(T)*log(b()*(1-pow(2,0.5))+Vm)/(4*b()) - +this->RR*log(Vm-b())+pow(2,0.5)*dadT(T)*log(b()*(pow(2,0.5)+1)+Vm)/(4*b()); + +this->RR()*log(Vm-b())+pow(2,0.5)*dadT(T)*log(b()*(pow(2,0.5)+1)+Vm)/(4*b()); } @@ -295,7 +295,7 @@ inline scalar pengRobinson::d2pdv2(const scalar rho,const scalar T) const ( 5*b5()-9*b4()*Vm+4*b2()*Vm3+3*b()*Vm4-3*Vm5 ) - -this->RR*T* + -this->RR()*T* ( pow(b(),6)-6*b5()*Vm+9*b4()*Vm2+4*b3()*Vm3 -9*b2()*Vm4-6*b()*Vm5-pow(Vm,6) @@ -331,7 +331,7 @@ inline scalar pengRobinson::d2pdvdT(const scalar rho, const scalar T) const ( b3()-b2()*Vm-b()*Vm2+Vm3 ) - -this->RR* + -this->RR()* ( b4()-4*b3()*Vm+2*b2()*Vm2 +4*b()*Vm3+pow(Vm,4) diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C index 06116bf72..d6e51bf1c 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C @@ -48,16 +48,16 @@ redlichKwong::redlichKwong(Istream& is) specie(is), pcrit_(readScalar(is)), Tcrit_(readScalar(is)), - a_(0.42748*pow(this->RR,2)*pow(Tcrit_,2.5)/pcrit_), - b_(0.08664*this->RR*Tcrit_/pcrit_), + a_(0.42748*pow(this->RR(),2)*pow(Tcrit_,2.5)/pcrit_), + b_(0.08664*this->RR()*Tcrit_/pcrit_), //CL: Only uses the default values - rhoMin_(1e-3), - rhoMax_(1500), b2_(pow(b_,2)), b3_(pow(b_,3)), b5_(pow(b_,5)), + rhoMax_(1500), + rhoMin_(1e-3), // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd, Tstd, Pstd/(Tstd*this->R()))) + rhostd_(this->rho(this->Pstd(), this->Tstd(), this->Pstd()/(this->Tstd()*this->R()))) { is.check("redlichKwong::redlichKwong(Istream& is)"); } @@ -75,8 +75,8 @@ redlichKwong::redlichKwong(const dictionary& dict) //CL: therefore, rho can be larger than rhoMax and smaller than rhoMin rhoMin_(dict.subDict("equationOfState").lookupOrDefault("rhoMin",1e-3)), rhoMax_(dict.subDict("equationOfState").lookupOrDefault("rhoMax",1500)), - a_(0.42748*pow(this->RR,2)*pow(Tcrit_,2.5)/pcrit_), - b_(0.08664*this->RR*Tcrit_/pcrit_), + a_(0.42748*pow(this->RR(),2)*pow(Tcrit_,2.5)/pcrit_), + b_(0.08664*this->RR()*Tcrit_/pcrit_), b2_(pow(b_,2)), b3_(pow(b_,3)), b5_(pow(b_,5)), diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H index 2202c39d4..b42135e76 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H @@ -67,10 +67,6 @@ protected: scalar pcrit_; scalar Tcrit_; - //CL: rhoMin and rhoMax are only used as boundaries for the bisection methode (see rho function) - scalar rhoMax_; - scalar rhoMin_; - //-Redlich Kwong factors mutable scalar a_; mutable scalar b_; @@ -80,6 +76,10 @@ protected: mutable scalar b3_; mutable scalar b5_; + //CL: rhoMin and rhoMax are only used as boundaries for the bisection methode (see rho function) + scalar rhoMax_; + scalar rhoMin_; + //- Density @STD, initialise after a, b! mutable scalar rhostd_; diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H index db9b48c29..486c42e41 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H @@ -57,10 +57,10 @@ inline redlichKwong::redlichKwong(const word& name, const redlichKwong& rk) Tcrit_(rk.Tcrit_), a_(rk.a_), b_(rk.b_), - rhostd_(rk.rhostd_), b2_(rk.b2_), b3_(rk.b3_), - b5_(rk.b5_) + b5_(rk.b5_), + rhostd_(rk.rhostd_) {} @@ -118,7 +118,7 @@ inline scalar redlichKwong::b5()const inline scalar redlichKwong::p(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return this->RR*T/(Vm - b_) - a_/(sqrt(T)*Vm*(Vm + b_)); + return this->RR()*T/(Vm - b_) - a_/(sqrt(T)*Vm*(Vm + b_)); } @@ -130,7 +130,7 @@ inline scalar redlichKwong::dpdv(const scalar rho, const scalar T) const scalar Vm2 = Vm*Vm; return (a_*(b3() - 3*b_*Vm2 + 2*pow(Vm,3)) - - this->RR*pow(T,1.5)*Vm2*(b2() + 2*b_*Vm + Vm2)) + - this->RR()*pow(T,1.5)*Vm2*(b2() + 2*b_*Vm + Vm2)) /(sqrt(T)*Vm2*pow((b_ + Vm),2)*pow( (b_ - Vm),2)); } @@ -140,7 +140,7 @@ inline scalar redlichKwong::dpdv(const scalar rho, const scalar T) const inline scalar redlichKwong::dpdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - return 0.5*a_/(pow(T,1.5)*Vm*(b_ + Vm))-this->RR/(b_ - Vm); + return 0.5*a_/(pow(T,1.5)*Vm*(b_ + Vm))-this->RR()/(b_ - Vm); } @@ -170,7 +170,7 @@ inline scalar redlichKwong::integral_p_dv ) const { scalar Vm = this->W()/rho; - return this->RR*T*log(Vm - b_) + return this->RR()*T*log(Vm - b_) + (a_*log(b_ + Vm))/(b_*sqrt(T)) - (a_*log(Vm))/(b_*sqrt(T)); } @@ -185,7 +185,7 @@ inline scalar redlichKwong::integral_dpdT_dv ) const { scalar Vm = this->W()/rho; - return this->RR*log(Vm - b_) + return this->RR()*log(Vm - b_) -(a_*log(b_ + Vm))/(2*b_*pow(T,1.5)) +(a_*log(Vm))/(2*b_*pow(T,1.5)); } @@ -214,7 +214,7 @@ inline scalar redlichKwong::d2pdv2(const scalar rho, const scalar T) const - b2()*Vm3 + 6*b_*pow(Vm,4)-3*pow(Vm,5) ) - + this->RR*pow(T,1.5)*Vm3*(b3() + + this->RR()*pow(T,1.5)*Vm3*(b3() + 3*b2()*Vm + 3*b_*Vm2+Vm3) ) @@ -246,7 +246,7 @@ inline scalar redlichKwong::d2pdvdT(const scalar rho, const scalar T) const return -(0.5*( a_*(b3() - 3*b_*Vm2 + 2*pow(Vm,3)) - + 2*this->RR*pow(T,1.5)*Vm2*(b2() + 2*b_*Vm + Vm2) + + 2*this->RR()*pow(T,1.5)*Vm2*(b2() + 2*b_*Vm + Vm2) )) /(pow(T,1.5)*Vm2*pow(b_ + Vm,2)*pow(b_ - Vm,2)); } diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C index 834f53042..b1241b187 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C @@ -49,18 +49,18 @@ soaveRedlichKwong::soaveRedlichKwong(Istream& is) pcrit_(readScalar(is)), Tcrit_(readScalar(is)), azentricFactor_(readScalar(is)), - a0_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/(pcrit_)), - b_(0.08664*this->RR*Tcrit_/pcrit_), n_(0.48508+1.55171*azentricFactor_-0.15613*pow(azentricFactor_,2)), - TSave(0.0), + a0_(0.42747*pow(this->RR(),2)*pow(Tcrit_,2)/(pcrit_)), + b_(0.08664*this->RR()*Tcrit_/pcrit_), //CL: Only uses the default values - rhoMin_(1e-3), - rhoMax_(1500), b2_(pow(b_,2)), b3_(pow(b_,3)), b5_(pow(b_,5)), + rhoMax_(1500), + rhoMin_(1e-3), + TSave(0.0), // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) + rhostd_(this->rho(this->Pstd(),this->Tstd(),this->Pstd()/(this->Tstd()*this->R()))) { is.check("soaveRedlichKwong::soaveRedlichKwong(Istream& is)"); } @@ -79,15 +79,15 @@ soaveRedlichKwong::soaveRedlichKwong(const dictionary& dict) //CL: therefore, rho can be larger than rhoMax and smaller than rhoMin rhoMin_(dict.subDict("equationOfState").lookupOrDefault("rhoMin",1e-3)), rhoMax_(dict.subDict("equationOfState").lookupOrDefault("rhoMax",1500)), - a0_(0.42747*pow(this->RR,2)*pow(Tcrit_,2)/(pcrit_)), - b_(0.08664*this->RR*Tcrit_/pcrit_), + a0_(0.42747*pow(this->RR(),2)*pow(Tcrit_,2)/(pcrit_)), + b_(0.08664*this->RR()*Tcrit_/pcrit_), n_(0.48508+1.55171*azentricFactor_-0.15613*pow(azentricFactor_,2)), TSave(0.0), b2_(pow(b_,2)), b3_(pow(b_,3)), b5_(pow(b_,5)), // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) + rhostd_(this->rho(this->Pstd(),this->Tstd(),this->Pstd()/(this->Tstd()*this->R()))) {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H index f1d98c222..2f17700be 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H @@ -58,14 +58,14 @@ inline soaveRedlichKwong::soaveRedlichKwong(const word& name,const soaveRedlich pcrit_(srk.pcrit_), Tcrit_(srk.Tcrit_), azentricFactor_(srk.azentricFactor_), + n_(srk.n_), a0_(srk.a0_), b_(srk.b_), - n_(srk.n_), - rhostd_(srk.rhostd_), - TSave(0), b2_(srk.b2_), b3_(srk.b3_), - b5_(srk.b5_) + b5_(srk.b5_), + TSave(0), + rhostd_(srk.rhostd_) {} @@ -194,7 +194,7 @@ inline scalar soaveRedlichKwong::p(const scalar rho,const scalar T) const return ( - this->RR*T/(Vm-b_) + this->RR()*T/(Vm-b_) -a(T)/(Vm*(Vm+b_)) ); } @@ -210,7 +210,7 @@ inline scalar soaveRedlichKwong::dpdv(const scalar rho, const scalar T) const return ( a(T)*(b3()-3*b_*Vm2+2*pow(Vm,3)) - -this->RR*T*Vm2*(b2()+2*b_*Vm+Vm2) + -this->RR()*T*Vm2*(b2()+2*b_*Vm+Vm2) ) /(Vm2*pow(b_+Vm,2)*pow(b_-Vm,2)); } @@ -224,7 +224,7 @@ inline scalar soaveRedlichKwong::dpdT(const scalar rho, const scalar T) const return ( - this->RR/(Vm-b_) + this->RR()/(Vm-b_) -dadT(T)/(Vm*(Vm+b_)) ); } @@ -253,7 +253,7 @@ inline scalar soaveRedlichKwong::integral_p_dv(const scalar rho,const scalar T) { scalar Vm = this->W()/rho; - return this->RR*T*log(Vm-b_)+a(T)*log(b_+Vm)/b_-a(T)*log(Vm)/b_; + return this->RR()*T*log(Vm-b_)+a(T)*log(b_+Vm)/b_-a(T)*log(Vm)/b_; } @@ -263,7 +263,7 @@ inline scalar soaveRedlichKwong::integral_dpdT_dv(const scalar rho,const scalar { scalar Vm = this->W()/rho; - return this->RR*log(Vm-b_)+dadT(T)*log(b_+Vm)/b_-dadT(T)*log(Vm)/b_; + return this->RR()*log(Vm-b_)+dadT(T)*log(b_+Vm)/b_-dadT(T)*log(Vm)/b_; } @@ -290,7 +290,7 @@ inline scalar soaveRedlichKwong::d2pdv2(const scalar rho,const scalar T) const ( b5()-3*b3()*Vm2-b2()*Vm3+6*b_*pow(Vm,4)-3*pow(Vm,5) ) - +this->RR*T*Vm3* + +this->RR()*T*Vm3* ( b3()+3*b2()*Vm+3*b_*Vm2+Vm3 ) @@ -322,7 +322,7 @@ inline scalar soaveRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const return ( dadT(T)*(b3()-3*b_*Vm2+2*pow(Vm,3)) - -this->RR*Vm2*(b2()+2*b_*Vm+Vm2) + -this->RR()*Vm2*(b2()+2*b_*Vm+Vm2) ) /(Vm2*pow(b_+Vm,2)*pow(b_-Vm,2)); } diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C index feaeffa1c..e6bd96b22 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C @@ -47,12 +47,12 @@ Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Is a6_(readScalar(is)), a7_(readScalar(is)), //values for some need terms at std - e0_std(e0(this->Tstd)), - s0_std(s0(this->Tstd)), - integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd)), - integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd)), + e0_std(e0(this->Tstd())), + s0_std(s0(this->Tstd())), + integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd())), + integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd())), // cp @ STD (needed to limit cp for stability - cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd)) + cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd())) { is.check("nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Istream& is)"); } diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H index 0ecd13f80..5d1c31386 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H @@ -58,11 +58,11 @@ inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolyno a5_(a5), a6_(a6), a7_(a7), - e0_std(e0(this->Tstd)), - s0_std(s0(this->Tstd)), - integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd)), - integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd)), - cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd)) + e0_std(e0(this->Tstd())), + s0_std(s0(this->Tstd())), + integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd())), + integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd())), + cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd())) {} //- Construct from components @@ -157,7 +157,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h0 ) const { return - this->RR*T* + this->RR()*T* ( -this->a1_*pow(T,-2) +this->a2_*log(T)/T @@ -178,7 +178,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e0 const scalar T ) const { - return this->h0(T) - this->RR*T; + return this->h0(T) - this->RR()*T; } // used to calculate the entropy @@ -189,7 +189,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s0 const scalar T ) const { - return this->RR* + return this->RR()* ( this->a1_*(-1)/(2*pow(T,2)) -this->a2_/T+this->a3_*log(T) @@ -210,7 +210,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp0 const scalar T ) const { - return this->RR* + return this->RR()* ( this->a1_*1/pow(T,2) +this->a2_*1/T @@ -231,7 +231,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cv0 ) const { - return this->cp0(T)-this->RR; + return this->cp0(T)-this->RR(); } @@ -299,7 +299,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h const scalar T ) const { - return this->e(rho,T)+this->p(rho,T)/rho*this->W()-this->Pstd/this->rhostd()*this->W(); + return this->e(rho,T)+this->p(rho,T)/rho*this->W()-this->Pstd()/this->rhostd()*this->W(); } @@ -315,7 +315,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e { return ( - -this->Tstd*integral_dpdT_dv_std + -this->Tstd()*integral_dpdT_dv_std +integral_p_dv_std +this->e0(T)-e0_std +T*this->integral_dpdT_dv(rho,T) @@ -338,7 +338,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s { return -integral_dpdT_dv_std +(this->s0(T)-s0_std) - -this->RR*log(T/this->Tstd) + -this->RR()*log(T/this->Tstd()) + this->integral_dpdT_dv(rho,T); } diff --git a/src/thermophysicalModels/specie/transport/const/constTransportI.H b/src/thermophysicalModels/specie/transport/const/constTransportI.H index 5df481a0a..f171314e9 100644 --- a/src/thermophysicalModels/specie/transport/const/constTransportI.H +++ b/src/thermophysicalModels/specie/transport/const/constTransportI.H @@ -131,9 +131,9 @@ inline scalar constTransport::alpha(const scalar rho,const scalar T) con { scalar Cp_ = this->Cp(rho,T); - scalar deltaT = T - specie::Tstd; + scalar deltaT = T - specie::Tstd(); scalar CpBar = - (deltaT*(this->H(rho,T) - this->H(this->rhostd(),specie::Tstd)) + Cp_)/(sqr(deltaT) + 1); + (deltaT*(this->H(rho,T) - this->H(this->rhostd(),specie::Tstd())) + Cp_)/(sqr(deltaT) + 1); return Cp_*mu(T)*rPr/CpBar; } diff --git a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H index 08e658cb6..3583b7320 100644 --- a/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H +++ b/src/thermophysicalModels/specie/transport/sutherland/sutherlandTransportI.H @@ -172,9 +172,9 @@ inline scalar sutherlandTransport::alpha(const scalar rho, const scalar scalar Cv_ = this->Cv(rho,T); scalar Cp_ = this->Cp(rho,T); - scalar deltaT = T - specie::Tstd; + scalar deltaT = T - specie::Tstd(); scalar CpBar = - (deltaT*(this->H(rho, T) - this->H(this->rhostd(),specie::Tstd)) + Cp_)/(sqr(deltaT) + 1); + (deltaT*(this->H(rho, T) - this->H(this->rhostd(),specie::Tstd())) + Cp_)/(sqr(deltaT) + 1); return mu(T)*Cv_*(1.32 + 1.77*this->R()/Cv_)/CpBar; } From 40b0d8adf1d41f5e4dae37c94460d47ae164893e Mon Sep 17 00:00:00 2001 From: Henrik Rusche Date: Thu, 12 May 2016 15:01:44 +0200 Subject: [PATCH 17/18] Fix some whitespace and indentation + minor bugs --- .../basicPsiThermo/makeBasicPsiThermo.H | 21 ++++--- .../basic/psiThermo/ePsiThermo/ePsiThermo.C | 2 +- .../psiThermo/realGasEThermo/realGasEThermo.C | 57 ++++++++---------- .../psiThermo/realGasEThermo/realGasEThermo.H | 2 +- .../psiThermo/realGasHThermo/realGasHThermo.C | 37 +++++------- .../psiThermo/realGasHThermo/realGasHThermo.H | 2 +- .../IAPWSThermo/IAPWS-IF97.C | 6 +- .../IAPWSThermo/IAPWS-IF97.H | 4 +- .../IAPWSThermo/IAPWSThermo.C | 59 ++++++++++--------- .../IAPWSThermo/IAPWSThermo.H | 18 +++--- .../IAPWS_Waterproperties/IAPWSThermo/steam.H | 22 +++---- .../IAPWS_Waterproperties/Make/files | 1 - .../aungierRedlichKwong/aungierRedlichKwong.C | 8 +-- .../aungierRedlichKwong/aungierRedlichKwong.H | 40 ++++++------- .../aungierRedlichKwongI.H | 16 ++--- .../pengRobinson/pengRobinson.C | 3 +- .../pengRobinson/pengRobinson.H | 46 +++++++-------- .../pengRobinson/pengRobinsonI.H | 12 ++-- .../redlichKwong/redlichKwong.H | 6 +- .../redlichKwong/redlichKwongI.H | 12 ++-- .../soaveRedlichKwong/soaveRedlichKwong.C | 2 +- .../soaveRedlichKwong/soaveRedlichKwong.H | 24 ++++---- .../soaveRedlichKwong/soaveRedlichKwongI.H | 12 ++-- .../nasaHeatCapacityPolynomial.C | 6 +- .../nasaHeatCapacityPolynomial.H | 38 ++++++------ .../nasaHeatCapacityPolynomialI.H | 28 ++++----- .../realGasSpecieThermo/realGasSpecieThermo.C | 2 - .../realGasSpecieThermo/realGasSpecieThermo.H | 10 ++-- .../realGasSpecieThermoI.H | 31 +++++----- .../ras/cavity_IAPWS97/system/controlDict | 3 +- 30 files changed, 256 insertions(+), 274 deletions(-) diff --git a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H index bb0a1ecc2..201400581 100644 --- a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H @@ -62,14 +62,14 @@ addToRunTimeSelectionTable \ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#define makeBasicRealGasThermo(Cthermo,Mixture,Transport,SpecieThermo,Thermo,EqnOfState) \ +#define makeBasicRealGasThermo(Cthermo,Mixture,Transport,SpecieThermo,Thermo,EqnOfState) \ \ typedef Cthermo > > > > \ - Cthermo##Mixture##Transport##SpecieThermo##Thermo##EqnOfState; \ + Cthermo##Mixture##Transport##SpecieThermo##Thermo##EqnOfState; \ \ defineTemplateTypeNameAndDebugWithName \ ( \ - Cthermo##Mixture##Transport##SpecieThermo##Thermo##EqnOfState, \ + Cthermo##Mixture##Transport##SpecieThermo##Thermo##EqnOfState, \ #Cthermo \ "<"#Mixture"<"#Transport"<"#SpecieThermo"<"#Thermo"<"#EqnOfState">>>>>", \ 0 \ @@ -78,7 +78,7 @@ defineTemplateTypeNameAndDebugWithName \ addToRunTimeSelectionTable \ ( \ basicPsiThermo, \ - Cthermo##Mixture##Transport##SpecieThermo##Thermo##EqnOfState, \ + Cthermo##Mixture##Transport##SpecieThermo##Thermo##EqnOfState, \ fvMesh \ ) @@ -86,22 +86,21 @@ addToRunTimeSelectionTable \ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#define makeBasicExternalLibraryBasedThermo(Cthermo) \ +#define makeBasicExternalLibraryBasedThermo(Cthermo) \ \ -typedef Cthermo \ - Cthermo; \ +typedef Cthermo \ + Cthermo; \ \ -defineTemplateTypeNameAndDebugWithName \ +defineTypeNameAndDebug \ ( \ - Cthermo, \ - #Cthermo, \ + Cthermo, \ 0 \ ); \ \ addToRunTimeSelectionTable \ ( \ basicPsiThermo, \ - Cthermo, \ + Cthermo, \ fvMesh \ ) diff --git a/src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermo.C b/src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermo.C index 0a9ab5438..f140b2819 100644 --- a/src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermo.C @@ -345,7 +345,7 @@ Foam::tmp Foam::ePsiThermo::Cv() const forAll(this->T_.boundaryField(), patchi) { cv.boundaryField()[patchi] = - Cv(this->T_.boundaryField()[patchi], patchi); + Cv(this->T_.boundaryField()[patchi], patchi); } return tCv; diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C index ea1285ebb..1607fee9f 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C @@ -47,7 +47,6 @@ void Foam::realGasEThermo::calculate() scalarField& muCells = this->mu_.internalField(); scalarField& alphaCells = this->alpha_.internalField(); - forAll(TCells, celli) { const typename MixtureType::thermoType& mixture_ = @@ -72,10 +71,8 @@ void Foam::realGasEThermo::calculate() fvPatchScalarField& pmu = this->mu_.boundaryField()[patchi]; fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi]; - if (pT.fixesValue()) { - forAll(pT, facei) { const typename MixtureType::thermoType& mixture_ = @@ -84,7 +81,7 @@ void Foam::realGasEThermo::calculate() prho[facei] = mixture_.rho(pp[facei], pT[facei],prho[facei]); ppsi[facei]=mixture_.psiE(prho[facei],pT[facei]); pdrhode[facei]=mixture_.drhodE(prho[facei],pT[facei]); - pe[facei] = mixture_.E(prho[facei], pT[facei]); + pe[facei] = mixture_.E(prho[facei], pT[facei]); pmu[facei] = mixture_.mu(pT[facei]); palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); } @@ -97,8 +94,8 @@ void Foam::realGasEThermo::calculate() this->patchFaceMixture(patchi, facei); mixture_.TE(pe[facei], pT[facei],pp[facei],prho[facei]); pmu[facei] = mixture_.mu(pT[facei]); - ppsi[facei]=mixture_.psiE(prho[facei],pT[facei]); - pdrhode[facei]=mixture_.drhodE(prho[facei],pT[facei]); + ppsi[facei]=mixture_.psiE(prho[facei],pT[facei]); + pdrhode[facei]=mixture_.drhodE(prho[facei],pT[facei]); palpha[facei] = mixture_.alpha(prho[facei],pT[facei]); } } @@ -132,7 +129,6 @@ Foam::realGasEThermo::realGasEThermo dimensionSet(0, 2, -2, 0, 0), this->eBoundaryTypes() ), - rho_ ( IOobject @@ -143,10 +139,9 @@ Foam::realGasEThermo::realGasEThermo IOobject::READ_IF_PRESENT, IOobject::NO_WRITE ), - mesh, - dimDensity + mesh, + dimDensity ), - drhode_ ( IOobject @@ -157,11 +152,10 @@ Foam::realGasEThermo::realGasEThermo IOobject::NO_READ, IOobject::NO_WRITE ), - mesh, - dimensionSet(1, -5, 2, 0, 0) + mesh, + dimensionSet(1, -5, 2, 0, 0) ) { - scalarField& eCells = e_.internalField(); const scalarField& TCells = this->T_.internalField(); const scalarField& pCells =this->p_.internalField(); @@ -173,32 +167,29 @@ Foam::realGasEThermo::realGasEThermo rhoCells[celli]=this->cellMixture(celli).rho(pCells[celli],TCells[celli]); } - forAll(rho_.boundaryField(), patchi) { rho_.boundaryField()[patchi] == rho(this->T_.boundaryField()[patchi], patchi); } - forAll(eCells, celli) { - eCells[celli] = this->cellMixture(celli).E(rhoCells[celli],TCells[celli]); + eCells[celli] = this->cellMixture(celli).E(rhoCells[celli],TCells[celli]); } - forAll(e_.boundaryField(), patchi) { e_.boundaryField()[patchi] == - e(this->T_.boundaryField()[patchi], patchi); + e(this->T_.boundaryField()[patchi], patchi); } - eBoundaryCorrection(e_); + this->eBoundaryCorrection(e_); + calculate(); // Switch on saving old time this->psi_.oldTime(); - } @@ -331,13 +322,12 @@ Foam::tmp Foam::realGasEThermo::Cp() const ( "Cp", mesh.time().timeName(), - mesh, + T_.db(), IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), mesh, - dimensionSet(0, 2, -2, -1, 0), - this->T_.boundaryField().types() + dimensionSet(0, 2, -2, -1, 0) ) ); @@ -351,7 +341,7 @@ Foam::tmp Foam::realGasEThermo::Cp() const forAll(this->T_.boundaryField(), patchi) { const fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; - const fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; + const fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; fvPatchScalarField& pCp = cp.boundaryField()[patchi]; forAll(pT, facei) @@ -404,12 +394,12 @@ Foam::tmp Foam::realGasEThermo::rho() const ( "rhoFunctionThermo", mesh.time().timeName(), - mesh, + T_.db(), IOobject::NO_READ, IOobject::NO_WRITE ), - mesh, - dimDensity + mesh, + dimDensity ) ); @@ -428,7 +418,7 @@ Foam::tmp Foam::realGasEThermo::rho() const const typename MixtureType::thermoType& mixture_ = this->cellMixture(celli); - // getting the new rho Field + // getting the new rho Field mixture_.TE(eCells[celli], TCells[celli], pCells[celli], rho[celli]); } @@ -445,7 +435,7 @@ Foam::tmp Foam::realGasEThermo::rho() const const typename MixtureType::thermoType& mixture_ = this->patchFaceMixture(patchi, facei); - // getting the new rho patch Field + // getting the new rho patch Field mixture_.TE(pe[facei], pT[facei],pp[facei],prho_[facei]); } } @@ -455,7 +445,6 @@ Foam::tmp Foam::realGasEThermo::rho() const template Foam::tmp Foam::realGasEThermo::Cv() const { - const fvMesh& mesh = this->T_.mesh(); tmp tCv @@ -466,9 +455,9 @@ Foam::tmp Foam::realGasEThermo::Cv() const ( "Cv", mesh.time().timeName(), - mesh, + T_.db(), IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), mesh, dimensionSet(0, 2, -2, -1, 0) @@ -485,7 +474,7 @@ Foam::tmp Foam::realGasEThermo::Cv() const forAll(this->T_.boundaryField(), patchi) { cv.boundaryField()[patchi] = - Cv(this->T_.boundaryField()[patchi], patchi); + Cv(this->T_.boundaryField()[patchi], patchi); } return tCv; diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H index 2fa2b3b6a..c447c05d3 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H @@ -66,7 +66,7 @@ class realGasEThermo //- Enthalpy field volScalarField e_; - + //- DensityField volScalarField rho_; diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C index c69e23b3e..5fa656c01 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C @@ -47,20 +47,18 @@ void Foam::realGasHThermo::calculate() scalarField& muCells = this->mu_.internalField(); scalarField& alphaCells = this->alpha_.internalField(); - forAll(TCells, celli) { const typename MixtureType::thermoType& mixture_ = this->cellMixture(celli); mixture_.TH(hCells[celli], TCells[celli], pCells[celli], rhoCells[celli]); - psiCells[celli]=mixture_.psi(rhoCells[celli], TCells[celli]); - drhodhCells[celli]=mixture_.drhodH(rhoCells[celli], TCells[celli]); + psiCells[celli] = mixture_.psi(rhoCells[celli], TCells[celli]); + drhodhCells[celli] = mixture_.drhodH(rhoCells[celli], TCells[celli]); muCells[celli] = mixture_.mu(TCells[celli]); alphaCells[celli] = mixture_.alpha(rhoCells[celli], TCells[celli]); } - forAll(T_.boundaryField(), patchi) { fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; @@ -113,7 +111,6 @@ Foam::realGasHThermo::realGasHThermo const fvMesh& mesh, const objectRegistry& obj ) - : basicPsiThermo(mesh, obj), MixtureType(*this, mesh, obj), @@ -164,26 +161,22 @@ Foam::realGasHThermo::realGasHThermo const scalarField& pCells =this->p_.internalField(); scalarField& rhoCells =this->rho_.internalField(); - forAll(rhoCells, celli) { - rhoCells[celli]=this->cellMixture(celli).rho(pCells[celli],TCells[celli]); + rhoCells[celli]=this->cellMixture(celli).rho(pCells[celli],TCells[celli]); } - forAll(rho_.boundaryField(), patchi) { rho_.boundaryField()[patchi] == rho(this->T_.boundaryField()[patchi], patchi); } - forAll(hCells, celli) { hCells[celli] = this->cellMixture(celli).H(rhoCells[celli],TCells[celli]); } - forAll(h_.boundaryField(), patchi) { h_.boundaryField()[patchi] == @@ -328,13 +321,12 @@ Foam::tmp Foam::realGasHThermo::Cp() const ( "Cp", mesh.time().timeName(), - mesh, + this->T_.db(), IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), mesh, - dimensionSet(0, 2, -2, -1, 0), - this->T_.boundaryField().types() + dimensionSet(0, 2, -2, -1, 0) ) ); @@ -348,7 +340,7 @@ Foam::tmp Foam::realGasHThermo::Cp() const forAll(this->T_.boundaryField(), patchi) { const fvPatchScalarField& pT = this->T_.boundaryField()[patchi]; - const fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; + const fvPatchScalarField& prho = this->rho_.boundaryField()[patchi]; fvPatchScalarField& pCp = cp.boundaryField()[patchi]; forAll(pT, facei) @@ -401,12 +393,12 @@ Foam::tmp Foam::realGasHThermo::rho() const ( "rhoFunctionThermo", mesh.time().timeName(), - mesh, + this->T_.db(), IOobject::NO_READ, IOobject::NO_WRITE ), - mesh, - dimDensity + mesh, + dimDensity ) ); @@ -425,7 +417,7 @@ Foam::tmp Foam::realGasHThermo::rho() const const typename MixtureType::thermoType& mixture_ = this->cellMixture(celli); - // getting the new rho Field + // getting the new rho Field mixture_.TH(hCells[celli], TCells[celli], pCells[celli], rho[celli]); } @@ -442,7 +434,7 @@ Foam::tmp Foam::realGasHThermo::rho() const const typename MixtureType::thermoType& mixture_ = this->patchFaceMixture(patchi, facei); - // getting the new rho patch Field + // getting the new rho patch Field mixture_.TH(ph[facei], pT[facei],pp[facei],prho_[facei]); } } @@ -452,7 +444,6 @@ Foam::tmp Foam::realGasHThermo::rho() const template Foam::tmp Foam::realGasHThermo::Cv() const { - const fvMesh& mesh = this->T_.mesh(); tmp tCv @@ -463,9 +454,9 @@ Foam::tmp Foam::realGasHThermo::Cv() const ( "Cv", mesh.time().timeName(), - mesh, + this->T_.db(), IOobject::NO_READ, - IOobject::AUTO_WRITE + IOobject::NO_WRITE ), mesh, dimensionSet(0, 2, -2, -1, 0) diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H index b984e4fbc..3ea9ff654 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H @@ -66,7 +66,7 @@ class realGasHThermo //- Enthalpy field volScalarField h_; - + //- DensityField volScalarField rho_; diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C index cc3b8480d..b841e9cd5 100644 --- a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C @@ -261,7 +261,7 @@ void Foam::calculateProperties_h dpdT=freesteam_region4_dpsatdT_T(S.R4.T); - // getting the states outside the vapour dome + // getting the states outside the vapour dome Sl=freesteam_set_pv(p,vl-0.0000001); //inside region 1 Sv=freesteam_set_pv(p,vv+0.0000001); //inside region 2 @@ -450,7 +450,7 @@ Foam::scalar Foam::psiH(SteamState S) dpdT=freesteam_region4_dpsatdT_T(S.R4.T); - // getting the states outside the vapour dome + // getting the states outside the vapour dome Sl=freesteam_set_pv(p,vl-0.0000001); //inside region 1 Sv=freesteam_set_pv(p,vv+0.0000001); //inside region 2 @@ -568,7 +568,7 @@ Foam::scalar Foam::drhodh(SteamState S) vv=1/freesteam_region4_rhog_T(S.R4.T); vl=1/freesteam_region4_rhof_T(S.R4.T); - // getting the states outside the vapour dome + // getting the states outside the vapour dome Sl=freesteam_set_pv(p,vl-0.0000001); //inside region 1 Sv=freesteam_set_pv(p,vv+0.0000001); //inside region 2 diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.H b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.H index 75d61bd7f..202724566 100644 --- a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.H +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.H @@ -45,9 +45,9 @@ Germany #include "steam.H" #ifdef __cplusplus - #define EXTERN extern "C" + #define EXTERN extern "C" #else - #define EXTERN extern + #define EXTERN extern #endif diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C index dae4bd1f9..0ebd0a18e 100755 --- a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C @@ -121,9 +121,13 @@ void Foam::IAPWSThermo::calculate() // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::IAPWSThermo::IAPWSThermo(const fvMesh& mesh) +Foam::IAPWSThermo::IAPWSThermo +( + const fvMesh& mesh, + const objectRegistry& obj +) : - basicPsiThermo(mesh), + basicPsiThermo(mesh, obj), h_ ( @@ -131,7 +135,7 @@ Foam::IAPWSThermo::IAPWSThermo(const fvMesh& mesh) ( "h", mesh.time().timeName(), - mesh, + obj, IOobject::NO_READ, IOobject::NO_WRITE ), @@ -144,14 +148,14 @@ Foam::IAPWSThermo::IAPWSThermo(const fvMesh& mesh) ( IOobject ( - "rhoThermo", + "rhoThermo", mesh.time().timeName(), - mesh, + obj, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE ), - mesh, - dimDensity + mesh, + dimDensity ), drhodh_ @@ -160,12 +164,12 @@ Foam::IAPWSThermo::IAPWSThermo(const fvMesh& mesh) ( "drhodh", mesh.time().timeName(), - mesh, + obj, IOobject::NO_READ, IOobject::NO_WRITE ), - mesh, - dimensionSet(1, -5, 2, 0, 0) + mesh, + dimensionSet(1, -5, 2, 0, 0) ) { @@ -248,7 +252,7 @@ Foam::tmp Foam::IAPWSThermo::h forAll(T, celli) { - h[celli] = h_pT(pCells[cells[celli]],T[celli]); + h[celli] = h_pT(pCells[cells[celli]],T[celli]); } return th; @@ -289,7 +293,7 @@ Foam::tmp Foam::IAPWSThermo::rho forAll(h, facei) { - rho[facei] = rho_ph(p[facei], h[facei]); + rho[facei] = rho_ph(p[facei], h[facei]); } return trho; @@ -310,7 +314,7 @@ Foam::tmp Foam::IAPWSThermo::Cp forAll(T, facei) { - cp[facei] = cp_ph(pp[facei],h_pT(pp[facei], T[facei])); + cp[facei] = cp_ph(pp[facei],h_pT(pp[facei], T[facei])); } return tCp; @@ -329,13 +333,12 @@ Foam::tmp Foam::IAPWSThermo::Cp() const ( "Cp", mesh.time().timeName(), - mesh, + this->T_.db(), IOobject::NO_READ, IOobject::NO_WRITE ), mesh, - dimensionSet(0, 2, -2, -1, 0), - this->T_.boundaryField().types() + dimensionSet(0, 2, -2, -1, 0) ) ); @@ -343,18 +346,18 @@ Foam::tmp Foam::IAPWSThermo::Cp() const forAll(this->T_, celli) { - cp[celli] = cp_ph(this->p_[celli], this->h_[celli]); + cp[celli] = cp_ph(this->p_[celli], this->h_[celli]); } forAll(this->T_.boundaryField(), patchi) { const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; - const fvPatchScalarField& ph = this->h_.boundaryField()[patchi]; + const fvPatchScalarField& ph = this->h_.boundaryField()[patchi]; fvPatchScalarField& pCp = cp.boundaryField()[patchi]; forAll(ph, facei) { - pCp[facei] = cp_ph(pp[facei], ph[facei]); + pCp[facei] = cp_ph(pp[facei], ph[facei]); } } @@ -375,12 +378,12 @@ Foam::tmp Foam::IAPWSThermo::rho() const ( "rhoThermo2", mesh.time().timeName(), - mesh, + this->T_.db(), IOobject::NO_READ, IOobject::NO_WRITE ), mesh, - dimDensity + dimDensity ) ); @@ -388,18 +391,18 @@ Foam::tmp Foam::IAPWSThermo::rho() const forAll(this->p_, celli) { - rho[celli] = rho_ph(this->p_[celli], this->h_[celli]); + rho[celli] = rho_ph(this->p_[celli], this->h_[celli]); } forAll(this->T_.boundaryField(), patchi) { const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; - const fvPatchScalarField& ph = this->h_.boundaryField()[patchi]; + const fvPatchScalarField& ph = this->h_.boundaryField()[patchi]; fvPatchScalarField& prho = rho.boundaryField()[patchi]; forAll(ph, facei) { - prho[facei] = rho_ph(pp[facei], ph[facei]); + prho[facei] = rho_ph(pp[facei], ph[facei]); } } @@ -420,8 +423,8 @@ Foam::tmp Foam::IAPWSThermo::Cv scalarField& cv = tCv(); forAll(T, facei) - { - cv[facei] = cv_ph(pp[facei], h_pT(pp[facei], T[facei])); + { + cv[facei] = cv_ph(pp[facei], h_pT(pp[facei], T[facei])); } return tCv; @@ -440,7 +443,7 @@ Foam::tmp Foam::IAPWSThermo::Cv() const ( "Cv", mesh.time().timeName(), - mesh, + this->T_.db(), IOobject::NO_READ, IOobject::NO_WRITE ), @@ -453,7 +456,7 @@ Foam::tmp Foam::IAPWSThermo::Cv() const forAll(this->h_, celli) { - cv[celli] = cv_ph(this->p_[celli], this->h_[celli]); + cv[celli] = cv_ph(this->p_[celli], this->h_[celli]); } forAll(this->T_.boundaryField(), patchi) diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H index 9b253a33c..70385b8e8 100755 --- a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H @@ -64,12 +64,11 @@ class IAPWSThermo : public basicPsiThermo { - // Private data //- Enthalpy field volScalarField h_; - + //- DensityField volScalarField rho_; @@ -83,6 +82,10 @@ class IAPWSThermo //- Calculate the thermo variables void calculate(); + //- Construct as copy (not implemented) + IAPWSThermo(const IAPWSThermo&); + + public: //- Runtime type information @@ -90,8 +93,9 @@ public: // Constructors - //- Construct from mesh - IAPWSThermo(const fvMesh&); + //- Construct from mesh + IAPWSThermo(const fvMesh&, const objectRegistry& obj); + //- Destructor virtual ~IAPWSThermo(); @@ -140,13 +144,13 @@ public: //- Density for patch [J/kg] virtual tmp rho ( - const scalarField& p, + const scalarField& p, const scalarField& h, const label patchi ) const; //- Heat capacity at constant pressure for patch [J/kg/K] - // dummy function needed for BC + // dummy function needed for BC virtual tmp Cp ( const scalarField& T, @@ -185,7 +189,7 @@ public: } // End namespace Foam -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository # include "IAPWSThermo.C" diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/steam.H b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/steam.H index c99778bf5..214d764cc 100644 --- a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/steam.H +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/steam.H @@ -32,27 +32,27 @@ Code copied from freestream --> steam.h typedef struct SteamState_R1_struct{ - double p, T; + double p, T; } SteamState_R1; typedef struct SteamState_R2_struct{ - double p, T; + double p, T; } SteamState_R2; typedef struct SteamState_R3_struct{ - double rho, T; + double rho, T; } SteamState_R3; typedef struct SteamState_R4_struct{ - double T, x; + double T, x; } SteamState_R4; typedef struct SteamState_struct{ - char region; - union{ - SteamState_R1 R1; - SteamState_R2 R2; - SteamState_R3 R3; - SteamState_R4 R4; - }; + char region; + union{ + SteamState_R1 R1; + SteamState_R2 R2; + SteamState_R3 R3; + SteamState_R4 R4; + }; } SteamState; diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files index 79e5948aa..2de700ff5 100644 --- a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files @@ -1,4 +1,3 @@ -//CL: IAPWS water properties thermodynamic classes IAPWSThermo/IAPWS-IF97.C IAPWSThermo/IAPWSThermos.C diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C index 883e3f99e..9ff6c6c6e 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C @@ -60,11 +60,11 @@ aungierRedlichKwong::aungierRedlichKwong(Istream& is) b4_(pow(b_,4)), b5_(pow(b_,5)), c2_(pow(c_,2)), - // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(this->Pstd(),this->Tstd(),this->Pstd()/(this->Tstd()*this->R()))), - rhoMax_(1500), + rhoMax_(1500), rhoMin_(1e-3), - TSave(0.0) + // Starting GUESS for the density by ideal gas law + TSave(0.0), + rhostd_(this->rho(this->Pstd(),this->Tstd(),this->Pstd()/(this->Tstd()*this->R()))) { is.check("aungierRedlichKwong::aungierRedlichKwong(Istream& is)"); } diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.H index 5de758e5d..b6fcd3a5f 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.H @@ -87,9 +87,6 @@ protected: mutable scalar b5_; mutable scalar c2_; - //Density @STD, initialise after a, b! - scalar rhostd_; - //CL: rhoMin and rhoMax are only used as boundaries for the bisection methode (see rho function) scalar rhoMax_; scalar rhoMin_; @@ -103,6 +100,9 @@ protected: //CL: save the temperature for which the save coefficients (amix,dadTmix,d2adT2mix) are correct mutable scalar TSave; + //Density @STD, initialise after a, b! + scalar rhostd_; + //Protected functions //CL: function updates the coefficients (aSave, daSave, d2aSave) inline void updateModelCoefficients(const scalar T) const; @@ -135,36 +135,36 @@ public: // Member functions - inline scalar rhostd() const; + inline scalar rhostd() const; //CL: Model coefficient a(T) - inline scalar a(const scalar T)const; + inline scalar a(const scalar T)const; //CL: temperature deriviative of model coefficient a(T) - inline scalar dadT(const scalar T)const; + inline scalar dadT(const scalar T)const; //CL: second order temperature deriviative of model coefficient a(T) - inline scalar d2adT2(const scalar T)const; + inline scalar d2adT2(const scalar T)const; //Return Aungier Redlich Kwong factors - inline scalar a0()const; + inline scalar a0()const; - inline scalar b()const; + inline scalar b()const; - inline scalar c()const; + inline scalar c()const; - inline scalar n()const; + inline scalar n()const; //CL: return power of constants (b_, c_) - inline scalar b2()const; + inline scalar b2()const; - inline scalar b3()const; + inline scalar b3()const; - inline scalar b4()const; + inline scalar b4()const; - inline scalar b5()const; + inline scalar b5()const; - inline scalar c2()const; + inline scalar c2()const; //CL: Equation of state @@ -197,11 +197,11 @@ public: //CL: second order derivatives, not Used At The Moment inline scalar d2pdv2(const scalar rho, const scalar T) const; - inline scalar d2pdT2(const scalar rho, scalar T) const; + inline scalar d2pdT2(const scalar rho, scalar T) const; inline scalar d2pdvdT(const scalar rho, const scalar T) const; - inline scalar d2vdT2(const scalar rho, const scalar T) const; + inline scalar d2vdT2(const scalar rho, const scalar T) const; //CL: Used for internal Energy inline scalar integral_p_dv(const scalar rho, const scalar T) const; @@ -212,13 +212,13 @@ public: //- Return density [kg/m^3] // rho0 is the starting point of the newton solver used to calculate rho inline scalar rho - ( + ( const scalar p, const scalar T, const scalar rho0 ) const; - inline scalar rho(const scalar p, const scalar T) const; + inline scalar rho(const scalar p, const scalar T) const; //- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar psi(const scalar rho, const scalar T) const; diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwongI.H index b5eb933c0..701572cb1 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwongI.H @@ -356,13 +356,13 @@ inline scalar aungierRedlichKwong::isothermalCompressiblity(const scalar rho,con //- Return density [kg/m^3] -inline scalar aungierRedlichKwong::rho( +inline scalar aungierRedlichKwong::rho +( const scalar p, const scalar T, const scalar rho0 ) const { - scalar molarVolumePrevIteration; scalar molarVolume; label iter=0; @@ -371,7 +371,7 @@ inline scalar aungierRedlichKwong::rho( scalar rho1=rhoMax_; scalar rho2=rhoMin_; - molarVolume=this->W()/rho0; + molarVolume=this->W()/rho0; do { @@ -398,7 +398,7 @@ inline scalar aungierRedlichKwong::rho( scalar f2 = this->p(rho2,T) - p; scalar rho3 = (rho1 + rho2)/2; scalar f3 = this->p(rho3,T) - p; - + if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) { rho1=rho3; @@ -406,14 +406,14 @@ inline scalar aungierRedlichKwong::rho( else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) { rho2=rho3; - } - else + } + else { rho2=(rho2 + rho3)/2; } if(mag(f3) < p*tol_) - { + { molarVolume=this->W()/rho3; molarVolumePrevIteration=this->W()/rho3; break; @@ -422,7 +422,7 @@ inline scalar aungierRedlichKwong::rho( { molarVolumePrevIteration=this->W()/rho3; } - } + } } } while diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C index b107498e4..c5e15ca52 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C @@ -59,7 +59,8 @@ pengRobinson::pengRobinson(Istream& is) b5_(pow(b_,5)), rhoMax_(1500), rhoMin_(1e-3), - TSave(0.0), + TSave(0.0), + // Starting GUESS for the density by ideal gas law rhostd_(this->rho(this->Pstd(),this->Tstd(),this->Pstd()/(this->Tstd()*this->R()))) { is.check("pengRobinson::pengRobinson(Istream& is)"); diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H index ce876b7f7..c44c93413 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H @@ -114,8 +114,8 @@ public: //- Construct from components inline pengRobinson ( - const specie& sp - ); + const specie& sp + ); //- Construct from Istream pengRobinson(Istream&); @@ -133,32 +133,32 @@ public: inline static autoPtr New(Istream& is); // Member functions - inline scalar rhostd()const; + inline scalar rhostd()const; //CL: Model coefficient a(T) - inline scalar a(const scalar T)const; + inline scalar a(const scalar T)const; //CL: temperature deriviative of model coefficient a(T) - inline scalar dadT(const scalar T)const; + inline scalar dadT(const scalar T)const; //CL: second order temperature deriviative of model coefficient a(T) - inline scalar d2adT2(const scalar T)const; + inline scalar d2adT2(const scalar T)const; //Return Peng Robinson factors - inline scalar a0()const; + inline scalar a0()const; - inline scalar b()const; + inline scalar b()const; - inline scalar n()const; + inline scalar n()const; //CL: return power of constants b_ - inline scalar b2()const; + inline scalar b2()const; - inline scalar b3()const; + inline scalar b3()const; - inline scalar b4()const; + inline scalar b4()const; - inline scalar b5()const; + inline scalar b5()const; //CL: Equation of state inline scalar p(const scalar rho, const scalar T) const; @@ -190,21 +190,21 @@ public: const scalar rho, const scalar T ) const ; - + //CL: second order derivatives, not Used At The Moment - inline scalar d2pdv2(const scalar rho,const scalar T) const; - - inline scalar d2pdT2(const scalar rho,const scalar T) const; - - inline scalar d2pdvdT(const scalar rho,const scalar T) const; - - inline scalar d2vdT2(const scalar rho,const scalar T) const; - + inline scalar d2pdv2(const scalar rho,const scalar T) const; + + inline scalar d2pdT2(const scalar rho,const scalar T) const; + + inline scalar d2pdvdT(const scalar rho,const scalar T) const; + + inline scalar d2vdT2(const scalar rho,const scalar T) const; + //CL: Used for internal Energy inline scalar integral_p_dv(const scalar rho,const scalar T) const; //CL: Used for Entropy - inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; + inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; //- Return density [kg/m^3] // rho0 is the starting point of the newton solver used to calculate rho diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H index 70829bdbf..f471b90ad 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H @@ -385,7 +385,7 @@ inline scalar pengRobinson::rho( scalar rho1=rhoMax_; scalar rho2=rhoMin_; - molarVolume=this->W()/rho0; + molarVolume=this->W()/rho0; do { @@ -412,7 +412,7 @@ inline scalar pengRobinson::rho( scalar f2 = this->p(rho2,T) - p; scalar rho3 = (rho1 + rho2)/2; scalar f3 = this->p(rho3,T) - p; - + if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) { rho1=rho3; @@ -420,14 +420,14 @@ inline scalar pengRobinson::rho( else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) { rho2=rho3; - } - else + } + else { rho2=(rho2 + rho3)/2; } if(mag(f3) < p*tol_) - { + { molarVolume=this->W()/rho3; molarVolumePrevIteration=this->W()/rho3; break; @@ -436,7 +436,7 @@ inline scalar pengRobinson::rho( { molarVolumePrevIteration=this->W()/rho3; } - } + } } } while diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H index b42135e76..303b47c46 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H @@ -120,11 +120,11 @@ public: inline scalar p(const scalar rho, const scalar T) const; //CL: return power of constants b_ - inline scalar b2()const; + inline scalar b2()const; - inline scalar b3()const; + inline scalar b3()const; - inline scalar b5()const; + inline scalar b5()const; //first order derivatives diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H index 486c42e41..4cc6f16c0 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H @@ -308,7 +308,7 @@ inline scalar redlichKwong::rho scalar rho1=rhoMax_; scalar rho2=rhoMin_; - molarVolume=this->W()/rho0; + molarVolume=this->W()/rho0; do { @@ -335,7 +335,7 @@ inline scalar redlichKwong::rho scalar f2 = this->p(rho2,T) - p; scalar rho3 = (rho1 + rho2)/2; scalar f3 = this->p(rho3,T) - p; - + if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) { rho1=rho3; @@ -343,14 +343,14 @@ inline scalar redlichKwong::rho else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) { rho2=rho3; - } - else + } + else { rho2=(rho2 + rho3)/2; } if(mag(f3) < p*tol_) - { + { molarVolume=this->W()/rho3; molarVolumePrevIteration=this->W()/rho3; break; @@ -359,7 +359,7 @@ inline scalar redlichKwong::rho { molarVolumePrevIteration=this->W()/rho3; } - } + } } } while diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C index b1241b187..2dae0bbb0 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C @@ -62,7 +62,7 @@ soaveRedlichKwong::soaveRedlichKwong(Istream& is) // Starting GUESS for the density by ideal gas law rhostd_(this->rho(this->Pstd(),this->Tstd(),this->Pstd()/(this->Tstd()*this->R()))) { - is.check("soaveRedlichKwong::soaveRedlichKwong(Istream& is)"); + is.check("soaveRedlichKwong::soaveRedlichKwong(Istream& is)"); } //CL: Constructed needed in OpenFOAM 2.x.x //CL: Code works fine, but compiling problem in OpenFOAM 1.6.ext diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.H index 21582f5b1..550b86791 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.H @@ -131,30 +131,30 @@ public: inline static autoPtr New(Istream& is); // Member functions - inline scalar rhostd()const; + inline scalar rhostd()const; //CL: Model coefficient a(T) - inline scalar a(const scalar T)const; + inline scalar a(const scalar T)const; //CL: temperature deriviative of model coefficient a(T) - inline scalar dadT(const scalar T)const; + inline scalar dadT(const scalar T)const; //CL: second order temperature deriviative of model coefficient a(T) - inline scalar d2adT2(const scalar T)const; + inline scalar d2adT2(const scalar T)const; //Return Soave Redlich Kwong factors - inline scalar a0()const; + inline scalar a0()const; - inline scalar b()const; + inline scalar b()const; - inline scalar n()const; + inline scalar n()const; //CL: return power of constants b_ - inline scalar b2()const; + inline scalar b2()const; - inline scalar b3()const; + inline scalar b3()const; - inline scalar b5()const; + inline scalar b5()const; //CL: Equation of state inline scalar p(const scalar rho, const scalar T) const; @@ -186,11 +186,11 @@ public: //CL: second order derivatives, not Used At The Moment inline scalar d2pdv2(const scalar rho,const scalar T) const; - inline scalar d2pdT2(const scalar rho,const scalar T) const; + inline scalar d2pdT2(const scalar rho,const scalar T) const; inline scalar d2pdvdT(const scalar rho,const scalar T) const; - inline scalar d2vdT2(const scalar rho,const scalar T) const; + inline scalar d2vdT2(const scalar rho,const scalar T) const; //CL: Used for internal Energy inline scalar integral_p_dv(const scalar rho,const scalar T) const; diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H index 2f17700be..f79948e19 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H @@ -370,7 +370,7 @@ inline scalar soaveRedlichKwong::rho( scalar rho1=rhoMax_; scalar rho2=rhoMin_; - molarVolume=this->W()/rho0; + molarVolume=this->W()/rho0; do { @@ -397,7 +397,7 @@ inline scalar soaveRedlichKwong::rho( scalar f2 = this->p(rho2,T) - p; scalar rho3 = (rho1 + rho2)/2; scalar f3 = this->p(rho3,T) - p; - + if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) { rho1=rho3; @@ -405,14 +405,14 @@ inline scalar soaveRedlichKwong::rho( else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) { rho2=rho3; - } - else + } + else { rho2=(rho2 + rho3)/2; } if(mag(f3) < p*tol_) - { + { molarVolume=this->W()/rho3; molarVolumePrevIteration=this->W()/rho3; break; @@ -421,7 +421,7 @@ inline scalar soaveRedlichKwong::rho( { molarVolumePrevIteration=this->W()/rho3; } - } + } } } while diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C index e6bd96b22..06b2b9eee 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C @@ -48,13 +48,13 @@ Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Is a7_(readScalar(is)), //values for some need terms at std e0_std(e0(this->Tstd())), - s0_std(s0(this->Tstd())), + s0_std(s0(this->Tstd())), integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd())), integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd())), // cp @ STD (needed to limit cp for stability - cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd())) + cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd())) { - is.check("nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Istream& is)"); + is.check("nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Istream& is)"); } diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H index 11b48d0d3..93581a14b 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H @@ -109,17 +109,17 @@ class nasaHeatCapacityPolynomial // Private data scalar a1_; - scalar a2_; - scalar a3_; - scalar a4_; - scalar a5_; - scalar a6_; + scalar a2_; + scalar a3_; + scalar a4_; + scalar a5_; + scalar a6_; scalar a7_; - scalar e0_std; - scalar s0_std; - scalar integral_p_dv_std; - scalar integral_dpdT_dv_std; - scalar cp_std; + scalar e0_std; + scalar s0_std; + scalar integral_p_dv_std; + scalar integral_dpdT_dv_std; + scalar cp_std; // Private member functions @@ -129,13 +129,13 @@ class nasaHeatCapacityPolynomial ( const equationOfState& st, const scalar a1, - const scalar a2, + const scalar a2, const scalar a3, - const scalar a4, - const scalar a5, - const scalar a6, + const scalar a4, + const scalar a5, + const scalar a6, const scalar a7 - ); + ); //- Construct from components //CL: used for the operator* @@ -175,9 +175,9 @@ public: // Member Functions - //- perfect Gas Enthalpy [J/kmol] + //- perfect Gas Enthalpy [J/kmol] inline scalar h0(const scalar T) const; - + //- perfect Gas Entropy [J/(kmol K)] inline scalar s0(const scalar T) const; @@ -194,7 +194,7 @@ public: inline scalar cp(const scalar rho, const scalar T) const; //- non Limited Heat capacity at constant pressure [J/(kmol K)] - inline scalar cp_nonLimited(const scalar rho, const scalar T) const; + inline scalar cp_nonLimited(const scalar rho, const scalar T) const; //- Heat capacity at constant pressure [J/(kmol K)] inline scalar cv(const scalar rho, const scalar T) const; @@ -204,7 +204,7 @@ public: //- Entropy [J/(kmol K)] inline scalar s(const scalar rho,const scalar T) const; - + //- Internal Energy [J/kmol] inline scalar e(const scalar rho, const scalar T) const; diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H index 5d1c31386..602583402 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H @@ -180,7 +180,6 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e0 { return this->h0(T) - this->RR()*T; } - // used to calculate the entropy // perfect gas entropy template @@ -316,10 +315,10 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e return ( -this->Tstd()*integral_dpdT_dv_std - +integral_p_dv_std - +this->e0(T)-e0_std - +T*this->integral_dpdT_dv(rho,T) - -this->integral_p_dv(rho,T) + +integral_p_dv_std + +this->e0(T)-e0_std + +T*this->integral_dpdT_dv(rho,T) + -this->integral_p_dv(rho,T) ); } @@ -351,7 +350,6 @@ inline void Foam::nasaHeatCapacityPolynomial::operator+= const nasaHeatCapacityPolynomial& np ) { - scalar molr1 = this->nMoles(); equationOfState::operator+=(np); @@ -417,15 +415,15 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator+ + np2.nMoles()/eofs.nMoles()*np2.a1_, np1.nMoles()/eofs.nMoles()*np1.a2_ + np2.nMoles()/eofs.nMoles()*np2.a2_, - np1.nMoles()/eofs.nMoles()*np1.a3_ + np1.nMoles()/eofs.nMoles()*np1.a3_ + np2.nMoles()/eofs.nMoles()*np2.a3_, np1.nMoles()/eofs.nMoles()*np1.a4_ + np2.nMoles()/eofs.nMoles()*np2.a4_, - np1.nMoles()/eofs.nMoles()*np1.a5_ + np1.nMoles()/eofs.nMoles()*np1.a5_ + np2.nMoles()/eofs.nMoles()*np2.a5_, np1.nMoles()/eofs.nMoles()*np1.a6_ + np2.nMoles()/eofs.nMoles()*np2.a6_, - np1.nMoles()/eofs.nMoles()*np1.a7_ + np1.nMoles()/eofs.nMoles()*np1.a7_ + np2.nMoles()/eofs.nMoles()*np2.a7_ ); } @@ -451,15 +449,15 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator- - np2.nMoles()/eofs.nMoles()*np2.a1_, np1.nMoles()/eofs.nMoles()*np1.a2_ - np2.nMoles()/eofs.nMoles()*np2.a2_, - np1.nMoles()/eofs.nMoles()*np1.a3_ + np1.nMoles()/eofs.nMoles()*np1.a3_ - np2.nMoles()/eofs.nMoles()*np2.a3_, np1.nMoles()/eofs.nMoles()*np1.a4_ - np2.nMoles()/eofs.nMoles()*np2.a4_, - np1.nMoles()/eofs.nMoles()*np1.a5_ + np1.nMoles()/eofs.nMoles()*np1.a5_ - np2.nMoles()/eofs.nMoles()*np2.a5_, np1.nMoles()/eofs.nMoles()*np1.a6_ - np2.nMoles()/eofs.nMoles()*np2.a6_, - np1.nMoles()/eofs.nMoles()*np1.a7_ + np1.nMoles()/eofs.nMoles()*np1.a7_ - np2.nMoles()/eofs.nMoles()*np2.a7_ ); } @@ -479,11 +477,11 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator* s*static_cast(np), np.a1_, np.a2_, - np.a3_, + np.a3_, np.a4_, - np.a5_, + np.a5_, np.a6_, - np.a7_, + np.a7_, np.e0_std, np.s0_std, np.integral_p_dv_std, diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C index c2e2ca81c..6b9c1e255 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C @@ -50,8 +50,6 @@ Foam::realGasSpecieThermo::realGasSpecieThermo(Istream& is) thermo(is) { is.check("realGasSpecieThermo::realGasSpecieThermo(Istream& is)"); - - } diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H index 10f4f981c..352a4dd4c 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H @@ -123,8 +123,8 @@ class realGasSpecieThermo ( scalar f, scalar &T0, - scalar p, - scalar &rho0, + scalar p, + scalar &rho0, scalar (realGasSpecieThermo::*F)(const scalar,const scalar) const, scalar (realGasSpecieThermo::*dFdT)(const scalar,const scalar) const ) const; @@ -201,16 +201,16 @@ public: //CL: Other variables - //- Return compressibility drho/dp at h=constant [s^2/m^2] + //- Return compressibility drho/dp at h=constant [s^2/m^2] inline scalar psiH(const scalar rho, const scalar T) const; //- Return compressibility drho/dp at e=constant [s^2/m^2] inline scalar psiE(const scalar rho, const scalar T) const; - //- Return compressibility drho/dH at p=constant + //- Return compressibility drho/dH at p=constant inline scalar drhodH(const scalar rho, const scalar T) const; - //- Return compressibility drho/dE at p=constant + //- Return compressibility drho/dE at p=constant inline scalar drhodE(const scalar rho, const scalar T) const; // Energy->temperature inversion functions diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H index 18c53f0c2..926418e35 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H @@ -69,16 +69,17 @@ inline void Foam::realGasSpecieThermo::T do { - Test = Tnew; - rhoOld=rho; - rho=this->rho(p,Test,rhoOld); + Test = Tnew; + rhoOld=rho; + rho=this->rho(p,Test,rhoOld); i=0; - do - { + + do + { //CL: using a stabilizing newton solver //CL: if the solve is diverging, the step is reduced until the solver converges Tnew = Test - ((this->*F)(rho,Test) - f)/(this->*dFdT)(rho,Test)/(pow(2,i)); - i++; + i++; }while ( (i<20) @@ -88,7 +89,7 @@ inline void Foam::realGasSpecieThermo::T > mag((this->*F)(rho,Test) - f) )) - ); + ); if (iter++ > maxIter_) { @@ -107,7 +108,7 @@ inline void Foam::realGasSpecieThermo::T (mag(mag(Tnew) - mag(Test)) > Ttol) || (mag(mag(rho) - mag(rhoOld)) > rhotol) - ); + ); rho0=rho; T0=Tnew; @@ -166,7 +167,7 @@ inline Foam::scalar Foam::realGasSpecieThermo::Cv( const scalar rho, con template inline Foam::scalar Foam::realGasSpecieThermo::H(const scalar rho, const scalar T) const -{ +{ return this->h(rho, T)/this->W(); } @@ -234,14 +235,14 @@ inline Foam::scalar Foam::realGasSpecieThermo::psiE return -( ( - T*pow(beta,2)*V - -this->isothermalCompressiblity(rho,T)*cp - ) - / - ( + T*pow(beta,2)*V + -this->isothermalCompressiblity(rho,T)*cp + ) + / + ( cp*V -beta*this->p(rho,T)*pow(V,2) - ) + ) ); } diff --git a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/controlDict b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/controlDict index 57bf40c09..7e04f623d 100755 --- a/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/controlDict +++ b/tutorials/compressible/realFluidPisoFoam/ras/cavity_IAPWS97/system/controlDict @@ -27,8 +27,7 @@ deltaT 1e-5; writeControl runTime; -writeInterval 0.1ls -; +writeInterval 0.1; purgeWrite 0; From d16b06a15ad19006782e62808ccbe1453d2cefd8 Mon Sep 17 00:00:00 2001 From: Henrik Rusche Date: Mon, 30 May 2016 12:23:04 +0200 Subject: [PATCH 18/18] Removing trailing whitespace, tabs and DOS CR --- .../basic/basicThermo/basicThermo.H | 2 +- .../psiThermo/basicPsiThermo/basicPsiThermo.H | 4 +- .../psiThermo/realGasEThermo/realGasEThermo.C | 32 +- .../psiThermo/realGasEThermo/realGasEThermo.H | 4 +- .../realGasEThermo/realGasEThermos.C | 4 +- .../psiThermo/realGasHThermo/realGasHThermo.C | 34 +- .../psiThermo/realGasHThermo/realGasHThermo.H | 4 +- .../realGasHThermo/realGasHThermos.C | 4 +- .../IAPWSThermo/IAPWS-IF97.C | 1178 ++++++++--------- .../IAPWSThermo/IAPWS-IF97.H | 462 +++---- .../IAPWSThermo/IAPWSThermo.C | 62 +- .../IAPWSThermo/IAPWSThermo.H | 10 +- .../IAPWSThermo/IAPWSThermos.C | 4 +- .../IAPWS_Waterproperties/Make/files | 2 +- .../IAPWS_Waterproperties/Make/options | 2 +- src/thermophysicalModels/externalMedia/README | 2 +- .../aungierRedlichKwong/aungierRedlichKwong.C | 8 +- .../aungierRedlichKwong/aungierRedlichKwong.H | 38 +- .../aungierRedlichKwongI.H | 48 +- .../cubicEquationOfState/mixtures/README | 2 +- .../mixtureAungierRedlichKwong.C | 2 +- .../mixtureAungierRedlichKwong.H | 14 +- .../mixtureAungierRedlichKwongI.H | 24 +- .../mixturePengRobinson/mixturePengRobinson.C | 16 +- .../mixturePengRobinson/mixturePengRobinson.H | 34 +- .../mixturePengRobinsonI.H | 68 +- .../mixtureRedlichKwong/mixtureRedlichKwong.C | 18 +- .../mixtureRedlichKwong/mixtureRedlichKwong.H | 18 +- .../mixtureRedlichKwongI.H | 32 +- .../mixtureSoaveRedlichKwong.C | 18 +- .../mixtureSoaveRedlichKwong.H | 34 +- .../mixtureSoaveRedlichKwongI.H | 64 +- .../pengRobinson/pengRobinson.C | 10 +- .../pengRobinson/pengRobinson.H | 26 +- .../pengRobinson/pengRobinsonI.H | 56 +- .../redlichKwong/redlichKwong.C | 8 +- .../redlichKwong/redlichKwong.H | 20 +- .../redlichKwong/redlichKwongI.H | 38 +- .../soaveRedlichKwong/soaveRedlichKwong.C | 6 +- .../soaveRedlichKwong/soaveRedlichKwong.H | 40 +- .../soaveRedlichKwong/soaveRedlichKwongI.H | 78 +- .../nasaHeatCapacityPolynomial.C | 4 +- .../nasaHeatCapacityPolynomial.H | 12 +- .../nasaHeatCapacityPolynomialI.H | 56 +- .../realGasSpecieThermo/realGasSpecieThermo.C | 4 +- .../realGasSpecieThermo/realGasSpecieThermo.H | 18 +- .../realGasSpecieThermoI.H | 32 +- 47 files changed, 1328 insertions(+), 1328 deletions(-) diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.H b/src/thermophysicalModels/basic/basicThermo/basicThermo.H index 13ec9a9d3..a6d52f45c 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.H +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.H @@ -247,7 +247,7 @@ public: //- Thermal diffusivity for enthalpy of mixture [kg/m/s] virtual const volScalarField& alpha() const; - + //- Read thermophysicalProperties dictionary virtual bool read(); }; diff --git a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H index 99c7a2c85..591f1c98d 100644 --- a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H @@ -109,10 +109,10 @@ public: return p_*psi(); } - //CL: drhodh needed for pressure equation of the real gas solver + //CL: drhodh needed for pressure equation of the real gas solver virtual const volScalarField& drhodh() const; - //CL: drhode needed for pressure equation of the real gas solver + //CL: drhode needed for pressure equation of the real gas solver virtual const volScalarField& drhode() const; }; diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C index 1607fee9f..fd4dfd6d3 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -170,7 +170,7 @@ Foam::realGasEThermo::realGasEThermo forAll(rho_.boundaryField(), patchi) { rho_.boundaryField()[patchi] == - rho(this->T_.boundaryField()[patchi], patchi); + rho(this->T_.boundaryField()[patchi], patchi); } forAll(eCells, celli) @@ -229,7 +229,7 @@ Foam::tmp Foam::realGasEThermo::e ) const { //CL: need the pressure of the internal field to calculate the realGas internal energy - //CL: this is done this way to assure compatibility to old OF Thermo-Versions + //CL: this is done this way to assure compatibility to old OF Thermo-Versions const scalarField& pCells = this->p_.internalField(); tmp te(new scalarField(T.size())); @@ -241,7 +241,7 @@ Foam::tmp Foam::realGasEThermo::e } return te; -} +} template Foam::tmp Foam::realGasEThermo::e @@ -251,7 +251,7 @@ Foam::tmp Foam::realGasEThermo::e ) const { //CL: need the pressure at the patch to calculate the realGas internal energy - //CL: this is done this way to assure compatibility to old OF Thermo-Versions + //CL: this is done this way to assure compatibility to old OF Thermo-Versions const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; tmp te(new scalarField(T.size())); @@ -273,7 +273,7 @@ Foam::tmp Foam::realGasEThermo::rho ) const { //CL: need the pressure at the patch to calculate the realGas density - //CL: this is done this way to assure compatibility to old OF Thermo-Versions + //CL: this is done this way to assure compatibility to old OF Thermo-Versions const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; tmp trho(new scalarField(T.size())); @@ -295,7 +295,7 @@ Foam::tmp Foam::realGasEThermo::Cp ) const { //CL: need the pressure at the patch to calculate the realGas cp - //CL: this is done this way to assure compatibility to old OF Thermo-Versions + //CL: this is done this way to assure compatibility to old OF Thermo-Versions const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; tmp tCp(new scalarField(T.size())); @@ -362,7 +362,7 @@ Foam::tmp Foam::realGasEThermo::Cv ) const { //CL: need the pressure at the patch to calculate the realGas internal energy - //CL: this is done this way to assure compatibility to old OF Thermo-Versions + //CL: this is done this way to assure compatibility to old OF Thermo-Versions const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; tmp tCv(new scalarField(T.size())); @@ -384,7 +384,7 @@ Foam::tmp Foam::realGasEThermo::rho() const const fvMesh& mesh = this->T_.mesh(); //CL: create an rho Field, which will be return - //CL: the problem is that this function is "const", + //CL: the problem is that this function is "const", //CL: so a new variabel is needed tmp trho ( @@ -402,11 +402,11 @@ Foam::tmp Foam::realGasEThermo::rho() const dimDensity ) ); - - //CL: copy "old" rho value onto the new rho field as start point - //CL: for the newton solver used in this->TE( ... ) + + //CL: copy "old" rho value onto the new rho field as start point + //CL: for the newton solver used in this->TE( ... ) trho()=rho_; - + volScalarField& rho = trho(); const scalarField& eCells = e_.internalField(); @@ -426,8 +426,8 @@ Foam::tmp Foam::realGasEThermo::rho() const { fvPatchScalarField pp = this->p_.boundaryField()[patchi]; fvPatchScalarField pe = e_.boundaryField()[patchi]; - fvPatchScalarField pT = this->T_.boundaryField()[patchi]; - + fvPatchScalarField pT = this->T_.boundaryField()[patchi]; + fvPatchScalarField& prho_ = rho.boundaryField()[patchi]; forAll(pp, facei) diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H index c447c05d3..a0e970a8b 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermo.H @@ -35,7 +35,7 @@ SourceFiles Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany @@ -130,7 +130,7 @@ public: return e_; } - //CL: drhode needed for pressure equation of the real gas solver + //CL: drhode needed for pressure equation of the real gas solver virtual const volScalarField& drhode() const { return drhode_; diff --git a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermos.C b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermos.C index 96737ed1b..fefde88fa 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermos.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasEThermo/realGasEThermos.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C index 5fa656c01..bee1f796f 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -169,12 +169,12 @@ Foam::realGasHThermo::realGasHThermo forAll(rho_.boundaryField(), patchi) { rho_.boundaryField()[patchi] == - rho(this->T_.boundaryField()[patchi], patchi); + rho(this->T_.boundaryField()[patchi], patchi); } forAll(hCells, celli) { - hCells[celli] = this->cellMixture(celli).H(rhoCells[celli],TCells[celli]); + hCells[celli] = this->cellMixture(celli).H(rhoCells[celli],TCells[celli]); } forAll(h_.boundaryField(), patchi) @@ -228,7 +228,7 @@ Foam::tmp Foam::realGasHThermo::h ) const { //CL: need the pressure of the internal field to calculate the realGas enthalpy - //CL: this is done this way to assure compatibility to old OF Thermo-Versions + //CL: this is done this way to assure compatibility to old OF Thermo-Versions const scalarField& pCells = this->p_.internalField(); tmp th(new scalarField(T.size())); @@ -240,7 +240,7 @@ Foam::tmp Foam::realGasHThermo::h } return th; -} +} template Foam::tmp Foam::realGasHThermo::h @@ -250,7 +250,7 @@ Foam::tmp Foam::realGasHThermo::h ) const { //CL: need the pressure at the patch to calculate the realGas enthalpy - //CL: this is done this way to assure compatibility to old OF Thermo-Versions + //CL: this is done this way to assure compatibility to old OF Thermo-Versions const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; tmp th(new scalarField(T.size())); @@ -272,7 +272,7 @@ Foam::tmp Foam::realGasHThermo::rho ) const { //CL: need the pressure at the patch to calculate the realGas enthalpy - //CL: this is done this way to assure compatibility to old OF Thermo-Versions + //CL: this is done this way to assure compatibility to old OF Thermo-Versions const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; tmp trho(new scalarField(T.size())); @@ -294,7 +294,7 @@ Foam::tmp Foam::realGasHThermo::Cp ) const { //CL: need the pressure at the patch to calculate the realGas enthalpy - //CL: this is done this way to assure compatibility to old OF Thermo-Versions + //CL: this is done this way to assure compatibility to old OF Thermo-Versions const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; tmp tCp(new scalarField(T.size())); @@ -361,7 +361,7 @@ Foam::tmp Foam::realGasHThermo::Cv ) const { //CL: need the pressure at the patch to calculate the realGas enthalpy - //CL: this is done this way to assure compatibility to old OF Thermo-Versions + //CL: this is done this way to assure compatibility to old OF Thermo-Versions const fvPatchScalarField& pp = this->p_.boundaryField()[patchi]; tmp tCv(new scalarField(T.size())); @@ -383,7 +383,7 @@ Foam::tmp Foam::realGasHThermo::rho() const const fvMesh& mesh = this->T_.mesh(); //CL: create a rho Field, which will be return - //CL: the problem is that this function is "const", + //CL: the problem is that this function is "const", //CL: so a new variabel is needed tmp trho ( @@ -401,11 +401,11 @@ Foam::tmp Foam::realGasHThermo::rho() const dimDensity ) ); - - //CL: copy "old" rho value onto the new rho field as start point - //CL: for the newton solver used in this->TH( ... ) + + //CL: copy "old" rho value onto the new rho field as start point + //CL: for the newton solver used in this->TH( ... ) trho()=rho_; - + volScalarField& rho = trho(); const scalarField& hCells = h_.internalField(); @@ -425,8 +425,8 @@ Foam::tmp Foam::realGasHThermo::rho() const { fvPatchScalarField pp = this->p_.boundaryField()[patchi]; fvPatchScalarField ph = h_.boundaryField()[patchi]; - fvPatchScalarField pT = this->T_.boundaryField()[patchi]; - + fvPatchScalarField pT = this->T_.boundaryField()[patchi]; + fvPatchScalarField& prho_ = rho.boundaryField()[patchi]; forAll(pp, facei) diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H index 3ea9ff654..7f9042a2c 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermo.H @@ -35,7 +35,7 @@ SourceFiles Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany @@ -130,7 +130,7 @@ public: return h_; } - //CL: drhodh needed for pressure equation of the real gas solver + //CL: drhodh needed for pressure equation of the real gas solver virtual const volScalarField& drhodh() const { return drhodh_; diff --git a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C index 547fcee63..9422bf8e3 100755 --- a/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C +++ b/src/thermophysicalModels/basic/psiThermo/realGasHThermo/realGasHThermos.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C index b841e9cd5..7312cda08 100644 --- a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWS-IF97.C @@ -1,589 +1,589 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright held by original author - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM 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 2 of the License, or (at your - option) any later version. - - OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Author -Christian Lucas -Institut für Thermodynamik -Technische Universität Braunschweig -Germany -\*---------------------------------------------------------------------------*/ - - -#include "IAPWS-IF97.H" -#include -#include - - -//CL: calculated all (minimal) needed properties for a given pressure and enthalpy -void Foam::calculateProperties_ph -( - scalar &p, - scalar &h, - scalar &T, - scalar &rho, - scalar &psi, - scalar &drhodh, - scalar &mu, - scalar &alpha -) -{ - SteamState S; - - // CL: vapor mass fraction is also calculated in calculateProperties_h - // CL: in this fuction, x is a dummy variable and x is not return to IAPWSThermo.C - scalar x; - - S=freesteam_set_ph(p,h); - calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); -} - -//CL: calculated all (minimal) needed properties + the vapor mass fraction for a given pressure and enthalpy -void Foam::calculateProperties_ph -( - scalar &p, - scalar &h, - scalar &T, - scalar &rho, - scalar &psi, - scalar &drhodh, - scalar &mu, - scalar &alpha, - scalar &x -) -{ - SteamState S; - - S=freesteam_set_ph(p,h); - calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); -} - -//CL: calculated all (minimal) needed properties for a given pressure and temperature -void Foam::calculateProperties_pT -( - scalar &p, - scalar &T, - scalar &h, - scalar &rho, - scalar &psi, - scalar &drhodh, - scalar &mu, - scalar &alpha -) -{ - SteamState S; - - // CL: vapor mass fraction is also calculated in calculateProperties_h - // CL: in this fuction, x is a dummy variable and x is not return to IAPWSThermo. - scalar x; - - S=freesteam_set_pT(p,T); - calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); -} - -//CL: calculated all (minimal) needed properties + the vapor mass fraction for a given pressure and temperature -void Foam::calculateProperties_pT -( - scalar &p, - scalar &T, - scalar &h, - scalar &rho, - scalar &psi, - scalar &drhodh, - scalar &mu, - scalar &alpha, - scalar &x -) -{ - SteamState S; - - S=freesteam_set_pT(p,T); - calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); -} - - -//CL: calculated the properties --> this function is called by the functions above -//CL: does not calulated the internal energy, if this is needed e.g. for sonicFoam -//CL: the function has to be changed a little bit -void Foam::calculateProperties_h -( - SteamState S, - scalar &p, - scalar &h, - scalar &T, - scalar &rho, - scalar &psi, - scalar &drhodh, - scalar &mu, - scalar &alpha, - scalar &x -) -{ - label region; - scalar kappa,lambda,cp,beta; - - region=freesteam_region(S); - - if (region==1) - { - p=S.R1.p; - T=S.R1.T; - rho=1/freesteam_region1_v_pT(S.R1.p,S.R1.T); - h=freesteam_region1_h_pT(S.R1.p,S.R1.T); - x=0; - - //Cl: note: in FreeStream, beta=1/V*(dV/dP)_P=const is called alphaV (in this region) - //Cl: note: in FreeStream, kappa=1/V*(dV/dP)_T=const is called kappaT (in this region) - kappa=freesteam_region1_kappaT_pT(S.R1.p,S.R1.T); - beta=freesteam_region1_alphav_pT(S.R1.p,S.R1.T); - cp=freesteam_region1_cp_pT(S.R1.p,S.R1.T); - - //CL: getting derivatives using Bridgmans table - //CL: psi=(drho/dp)_h=const - //CL: drhodh=(drho/dh)_p=const - psi=-((T*beta*beta-beta)/cp-kappa*rho); - drhodh=-rho*beta/cp; - - //CL: getting transport properties - mu=freesteam_mu_rhoT(rho, T); - lambda=freesteam_k_rhoT(rho,T); - alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density - } - else if (region==2) - { - p=S.R2.p; - T=S.R2.T; - rho=1/freesteam_region2_v_pT(S.R2.p,S.R2.T); - h=freesteam_region2_h_pT(S.R2.p,S.R2.T); - x=1; - - //Cl: note: in FreeStream, beta=1/V*(dV/dP)_P=const is called alphaV (in this region) - //Cl: note: in FreeStream, kappa=1/V*(dV/dP)_T=const is called kappaT (in this region) - kappa=freesteam_region2_kappaT_pT(S.R2.p,S.R2.T); - beta=freesteam_region2_alphav_pT(S.R2.p,S.R2.T); - cp=freesteam_region2_cp_pT(S.R2.p,S.R2.T); - - //CL: getting derivatives using Bridgmans table - //CL: psi=(drho/dp)_h=const - //CL: drhodh=(drho/dh)_p=const - psi=-((T*beta*beta-beta)/cp-kappa*rho); - drhodh=-rho*beta/cp; - - //CL: getting transport properties - mu=freesteam_mu_rhoT(rho, T); - lambda=freesteam_k_rhoT(rho,T); - alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density - } - else if (region==3) - { - scalar gamma,cv; - - rho=S.R3.rho; - T=S.R3.T; - p=freesteam_region3_p_rhoT(S.R3.rho,S.R3.T); - h=freesteam_region3_h_rhoT(S.R3.rho,S.R3.T); - - //CL= when hx=0 else x=1 - if (h<2084256.263) - { - x=0; - } - else - { - x=1; - } - - //Cl: note: beta=1/V*(dV/dP)_P=const - //Cl: note: kappa=1/V*(dV/dP)_T=const - //Cl: note: in FreeStream, gamma=1/p*(dp/dT)_v=const is called alphap (in this region) - gamma=freesteam_region3_alphap_rhoT(S.R3.rho,S.R3.T); - cp=freesteam_region3_cp_rhoT(S.R3.rho,S.R3.T); - cv=freesteam_region3_cv_rhoT(S.R3.rho,S.R3.T); - beta=(cp-cv)/(S.R3.T/S.R3.rho*p*gamma); - kappa=(cp-cv)/(S.R3.T/S.R3.rho*p*p*gamma*gamma); - - //CL: getting derivatives using Bridgmans table - //CL: psi=(drho/dp)_h=const - //CL: drhodh=(drho/dh)_p=const - psi=-((T*beta*beta-beta)/cp-kappa*rho); - drhodh=-rho*beta/cp; - - - //CL: getting transport properties - mu=freesteam_mu_rhoT(rho, T); - lambda=freesteam_k_rhoT(rho,T); - alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density - - } - else if (region==4) - { - scalar rhov,rhol,betav,betal,kappav,kappal,vv,vl,cpl,cpv,hl,hv,cp; - scalar dvldp,dvvdp,dhldp,dhvdp; - scalar dpdT,dvdh,dvdp,dxdp; - - SteamState Sl,Sv; - - x=S.R4.x; - T=S.R4.T; - rho=1/freesteam_region4_v_Tx(S.R4.T,S.R4.x); - h=freesteam_region4_h_Tx(S.R4.T,S.R4.x); - p=freesteam_region4_psat_T(S.R4.T); - cp=freesteam_region4_cp_Tx(S.R4.T,S.R4.x); - - - //CL: Getting density on the vapour and liquid lines - rhov=freesteam_region4_rhog_T(S.R4.T); - rhol=freesteam_region4_rhof_T(S.R4.T); - vv=1/rhov; - vl=1/rhol; - - //CL: getting derivatives --> this is a bit tricky inside the vapor dome - - dpdT=freesteam_region4_dpsatdT_T(S.R4.T); - - // getting the states outside the vapour dome - Sl=freesteam_set_pv(p,vl-0.0000001); //inside region 1 - Sv=freesteam_set_pv(p,vv+0.0000001); //inside region 2 - - kappal=freesteam_region1_kappaT_pT(Sl.R1.p,Sl.R1.T); - kappav=freesteam_region2_kappaT_pT(Sv.R2.p,Sv.R2.T); - - betal=freesteam_region1_alphav_pT(Sl.R1.p,Sl.R1.T); - betav=freesteam_region2_alphav_pT(Sv.R2.p,Sv.R2.T); - - cpl=freesteam_region1_cp_pT(Sl.R1.p,Sl.R1.T); - cpv=freesteam_region2_cp_pT(Sv.R2.p,Sv.R2.T); - - hl=freesteam_region1_h_pT(Sl.R1.p,Sl.R1.T); - hv=freesteam_region2_h_pT(Sv.R2.p,Sv.R2.T); - - - //calculation derviatives on liquid and vapour line - dvldp=betal*vl/dpdT-kappal*vl; - dvvdp=betav*vv/dpdT-kappav*vv; - - dhldp=vl*(1-betal*Sl.R1.T)+cpl/dpdT; - dhvdp=vv*(1-betav*Sv.R2.T)+cpl/dpdT; - - dxdp=-dhldp/(hv-hl) - +(h-hl)/((hv-hl)*(hv-hl)) - *(dhvdp-dhldp); - - //CL: psi=(drho/dp)_h=const - dvdp=dvldp+(dvvdp-dvldp)*x+(vv-vl)*dxdp; - psi=-rho*rho*dvdp; - - //CL: drhodh=(drho/dh)_p=const - dvdh=(vv-vl)/(hv-hl); - drhodh=-rho*rho*dvdh; - - //CL: getting transport properties - mu=freesteam_mu_rhoT(rho, T); - lambda=freesteam_k_rhoT(rho,T); - alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density - } - else - { - std::cout<<"IAPWS-IF97 error, outside the regions 1-4"< this is a bit tricky in the vapor dome - - dpdT=freesteam_region4_dpsatdT_T(S.R4.T); - - // getting the states outside the vapour dome - Sl=freesteam_set_pv(p,vl-0.0000001); //inside region 1 - Sv=freesteam_set_pv(p,vv+0.0000001); //inside region 2 - - kappal=freesteam_region1_kappaT_pT(Sl.R1.p,Sl.R1.T); - kappav=freesteam_region2_kappaT_pT(Sv.R2.p,Sv.R2.T); - - betal=freesteam_region1_alphav_pT(Sl.R1.p,Sl.R1.T); - betav=freesteam_region2_alphav_pT(Sv.R2.p,Sv.R2.T); - - cpl=freesteam_region1_cp_pT(Sl.R1.p,Sl.R1.T); - cpv=freesteam_region2_cp_pT(Sv.R2.p,Sv.R2.T); - - hl=freesteam_region1_h_pT(Sl.R1.p,Sl.R1.T); - hv=freesteam_region2_h_pT(Sv.R2.p,Sv.R2.T); - - //calculation derviatives on liquid and vapour line - dvldp=betal*vl/dpdT-kappal*vl; - dvvdp=betav*vv/dpdT-kappav*vv; - - dhldp=vl*(1-betal*Sl.R1.T)+cpl/dpdT; - dhvdp=vv*(1-betav*Sv.R2.T)+cpl/dpdT; - - dxdp=-dhldp/(hv-hl) - +(h-hl)/((hv-hl)*(hv-hl)) - *(dhvdp-dhldp); - - //CL: psiH=(drho/dp)_h=const - dvdp=dvldp+(dvvdp-dvldp)*S.R4.x+(vv-vl)*dxdp; - psiH=-rho*rho*dvdp; - } - else - { - Info<<"IAPWS-IF97.C error, outside the regions 1-4"< +#include + + +//CL: calculated all (minimal) needed properties for a given pressure and enthalpy +void Foam::calculateProperties_ph +( + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha +) +{ + SteamState S; + + // CL: vapor mass fraction is also calculated in calculateProperties_h + // CL: in this fuction, x is a dummy variable and x is not return to IAPWSThermo.C + scalar x; + + S=freesteam_set_ph(p,h); + calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); +} + +//CL: calculated all (minimal) needed properties + the vapor mass fraction for a given pressure and enthalpy +void Foam::calculateProperties_ph +( + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x +) +{ + SteamState S; + + S=freesteam_set_ph(p,h); + calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); +} + +//CL: calculated all (minimal) needed properties for a given pressure and temperature +void Foam::calculateProperties_pT +( + scalar &p, + scalar &T, + scalar &h, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha +) +{ + SteamState S; + + // CL: vapor mass fraction is also calculated in calculateProperties_h + // CL: in this fuction, x is a dummy variable and x is not return to IAPWSThermo. + scalar x; + + S=freesteam_set_pT(p,T); + calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); +} + +//CL: calculated all (minimal) needed properties + the vapor mass fraction for a given pressure and temperature +void Foam::calculateProperties_pT +( + scalar &p, + scalar &T, + scalar &h, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x +) +{ + SteamState S; + + S=freesteam_set_pT(p,T); + calculateProperties_h(S,p,h,T,rho,psi,drhodh,mu,alpha,x); +} + + +//CL: calculated the properties --> this function is called by the functions above +//CL: does not calulated the internal energy, if this is needed e.g. for sonicFoam +//CL: the function has to be changed a little bit +void Foam::calculateProperties_h +( + SteamState S, + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x +) +{ + label region; + scalar kappa,lambda,cp,beta; + + region=freesteam_region(S); + + if (region==1) + { + p=S.R1.p; + T=S.R1.T; + rho=1/freesteam_region1_v_pT(S.R1.p,S.R1.T); + h=freesteam_region1_h_pT(S.R1.p,S.R1.T); + x=0; + + //Cl: note: in FreeStream, beta=1/V*(dV/dP)_P=const is called alphaV (in this region) + //Cl: note: in FreeStream, kappa=1/V*(dV/dP)_T=const is called kappaT (in this region) + kappa=freesteam_region1_kappaT_pT(S.R1.p,S.R1.T); + beta=freesteam_region1_alphav_pT(S.R1.p,S.R1.T); + cp=freesteam_region1_cp_pT(S.R1.p,S.R1.T); + + //CL: getting derivatives using Bridgmans table + //CL: psi=(drho/dp)_h=const + //CL: drhodh=(drho/dh)_p=const + psi=-((T*beta*beta-beta)/cp-kappa*rho); + drhodh=-rho*beta/cp; + + //CL: getting transport properties + mu=freesteam_mu_rhoT(rho, T); + lambda=freesteam_k_rhoT(rho,T); + alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density + } + else if (region==2) + { + p=S.R2.p; + T=S.R2.T; + rho=1/freesteam_region2_v_pT(S.R2.p,S.R2.T); + h=freesteam_region2_h_pT(S.R2.p,S.R2.T); + x=1; + + //Cl: note: in FreeStream, beta=1/V*(dV/dP)_P=const is called alphaV (in this region) + //Cl: note: in FreeStream, kappa=1/V*(dV/dP)_T=const is called kappaT (in this region) + kappa=freesteam_region2_kappaT_pT(S.R2.p,S.R2.T); + beta=freesteam_region2_alphav_pT(S.R2.p,S.R2.T); + cp=freesteam_region2_cp_pT(S.R2.p,S.R2.T); + + //CL: getting derivatives using Bridgmans table + //CL: psi=(drho/dp)_h=const + //CL: drhodh=(drho/dh)_p=const + psi=-((T*beta*beta-beta)/cp-kappa*rho); + drhodh=-rho*beta/cp; + + //CL: getting transport properties + mu=freesteam_mu_rhoT(rho, T); + lambda=freesteam_k_rhoT(rho,T); + alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density + } + else if (region==3) + { + scalar gamma,cv; + + rho=S.R3.rho; + T=S.R3.T; + p=freesteam_region3_p_rhoT(S.R3.rho,S.R3.T); + h=freesteam_region3_h_rhoT(S.R3.rho,S.R3.T); + + //CL= when hx=0 else x=1 + if (h<2084256.263) + { + x=0; + } + else + { + x=1; + } + + //Cl: note: beta=1/V*(dV/dP)_P=const + //Cl: note: kappa=1/V*(dV/dP)_T=const + //Cl: note: in FreeStream, gamma=1/p*(dp/dT)_v=const is called alphap (in this region) + gamma=freesteam_region3_alphap_rhoT(S.R3.rho,S.R3.T); + cp=freesteam_region3_cp_rhoT(S.R3.rho,S.R3.T); + cv=freesteam_region3_cv_rhoT(S.R3.rho,S.R3.T); + beta=(cp-cv)/(S.R3.T/S.R3.rho*p*gamma); + kappa=(cp-cv)/(S.R3.T/S.R3.rho*p*p*gamma*gamma); + + //CL: getting derivatives using Bridgmans table + //CL: psi=(drho/dp)_h=const + //CL: drhodh=(drho/dh)_p=const + psi=-((T*beta*beta-beta)/cp-kappa*rho); + drhodh=-rho*beta/cp; + + + //CL: getting transport properties + mu=freesteam_mu_rhoT(rho, T); + lambda=freesteam_k_rhoT(rho,T); + alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density + + } + else if (region==4) + { + scalar rhov,rhol,betav,betal,kappav,kappal,vv,vl,cpl,cpv,hl,hv,cp; + scalar dvldp,dvvdp,dhldp,dhvdp; + scalar dpdT,dvdh,dvdp,dxdp; + + SteamState Sl,Sv; + + x=S.R4.x; + T=S.R4.T; + rho=1/freesteam_region4_v_Tx(S.R4.T,S.R4.x); + h=freesteam_region4_h_Tx(S.R4.T,S.R4.x); + p=freesteam_region4_psat_T(S.R4.T); + cp=freesteam_region4_cp_Tx(S.R4.T,S.R4.x); + + + //CL: Getting density on the vapour and liquid lines + rhov=freesteam_region4_rhog_T(S.R4.T); + rhol=freesteam_region4_rhof_T(S.R4.T); + vv=1/rhov; + vl=1/rhol; + + //CL: getting derivatives --> this is a bit tricky inside the vapor dome + + dpdT=freesteam_region4_dpsatdT_T(S.R4.T); + + // getting the states outside the vapour dome + Sl=freesteam_set_pv(p,vl-0.0000001); //inside region 1 + Sv=freesteam_set_pv(p,vv+0.0000001); //inside region 2 + + kappal=freesteam_region1_kappaT_pT(Sl.R1.p,Sl.R1.T); + kappav=freesteam_region2_kappaT_pT(Sv.R2.p,Sv.R2.T); + + betal=freesteam_region1_alphav_pT(Sl.R1.p,Sl.R1.T); + betav=freesteam_region2_alphav_pT(Sv.R2.p,Sv.R2.T); + + cpl=freesteam_region1_cp_pT(Sl.R1.p,Sl.R1.T); + cpv=freesteam_region2_cp_pT(Sv.R2.p,Sv.R2.T); + + hl=freesteam_region1_h_pT(Sl.R1.p,Sl.R1.T); + hv=freesteam_region2_h_pT(Sv.R2.p,Sv.R2.T); + + + //calculation derviatives on liquid and vapour line + dvldp=betal*vl/dpdT-kappal*vl; + dvvdp=betav*vv/dpdT-kappav*vv; + + dhldp=vl*(1-betal*Sl.R1.T)+cpl/dpdT; + dhvdp=vv*(1-betav*Sv.R2.T)+cpl/dpdT; + + dxdp=-dhldp/(hv-hl) + +(h-hl)/((hv-hl)*(hv-hl)) + *(dhvdp-dhldp); + + //CL: psi=(drho/dp)_h=const + dvdp=dvldp+(dvvdp-dvldp)*x+(vv-vl)*dxdp; + psi=-rho*rho*dvdp; + + //CL: drhodh=(drho/dh)_p=const + dvdh=(vv-vl)/(hv-hl); + drhodh=-rho*rho*dvdh; + + //CL: getting transport properties + mu=freesteam_mu_rhoT(rho, T); + lambda=freesteam_k_rhoT(rho,T); + alpha=lambda/cp; //Cl: Important info -->alpha= thermal diffusivity time density + } + else + { + std::cout<<"IAPWS-IF97 error, outside the regions 1-4"< this is a bit tricky in the vapor dome + + dpdT=freesteam_region4_dpsatdT_T(S.R4.T); + + // getting the states outside the vapour dome + Sl=freesteam_set_pv(p,vl-0.0000001); //inside region 1 + Sv=freesteam_set_pv(p,vv+0.0000001); //inside region 2 + + kappal=freesteam_region1_kappaT_pT(Sl.R1.p,Sl.R1.T); + kappav=freesteam_region2_kappaT_pT(Sv.R2.p,Sv.R2.T); + + betal=freesteam_region1_alphav_pT(Sl.R1.p,Sl.R1.T); + betav=freesteam_region2_alphav_pT(Sv.R2.p,Sv.R2.T); + + cpl=freesteam_region1_cp_pT(Sl.R1.p,Sl.R1.T); + cpv=freesteam_region2_cp_pT(Sv.R2.p,Sv.R2.T); + + hl=freesteam_region1_h_pT(Sl.R1.p,Sl.R1.T); + hv=freesteam_region2_h_pT(Sv.R2.p,Sv.R2.T); + + //calculation derviatives on liquid and vapour line + dvldp=betal*vl/dpdT-kappal*vl; + dvvdp=betav*vv/dpdT-kappav*vv; + + dhldp=vl*(1-betal*Sl.R1.T)+cpl/dpdT; + dhvdp=vv*(1-betav*Sv.R2.T)+cpl/dpdT; + + dxdp=-dhldp/(hv-hl) + +(h-hl)/((hv-hl)*(hv-hl)) + *(dhvdp-dhldp); + + //CL: psiH=(drho/dp)_h=const + dvdp=dvldp+(dvvdp-dvldp)*S.R4.x+(vv-vl)*dxdp; + psiH=-rho*rho*dvdp; + } + else + { + Info<<"IAPWS-IF97.C error, outside the regions 1-4"< see region1.h (freesteam) -EXTERN double freesteam_region1_v_pT(double,double); -EXTERN double freesteam_region1_h_pT(double,double); -EXTERN double freesteam_region1_kappaT_pT(double,double); -EXTERN double freesteam_region1_alphav_pT(double,double); -EXTERN double freesteam_region1_cp_pT(double,double); -EXTERN double freesteam_region1_u_pT(double,double); -EXTERN double freesteam_region1_s_pT(double,double); -EXTERN double freesteam_region1_cv_pT(double,double); - -//CL: Region 2 --> see region2.h (freesteam) -EXTERN double freesteam_region2_v_pT(double,double); -EXTERN double freesteam_region2_u_pT(double,double); -EXTERN double freesteam_region2_s_pT(double,double); -EXTERN double freesteam_region2_h_pT(double,double); -EXTERN double freesteam_region2_cp_pT(double,double); -EXTERN double freesteam_region2_cv_pT(double,double); -EXTERN double freesteam_region2_alphav_pT(double,double); -EXTERN double freesteam_region2_kappaT_pT(double,double); - -//CL: Region 3 --> see region3.h (freesteam) -EXTERN double freesteam_region3_p_rhoT(double,double); -EXTERN double freesteam_region3_u_rhoT(double,double); -EXTERN double freesteam_region3_s_rhoT(double,double); -EXTERN double freesteam_region3_h_rhoT(double,double); -EXTERN double freesteam_region3_cp_rhoT(double,double); -EXTERN double freesteam_region3_cv_rhoT(double,double); -EXTERN double freesteam_region3_alphap_rhoT(double,double); -EXTERN double freesteam_region3_betap_rhoT(double,double); - -//CL: Region 4 --> see region4.h (freesteam) -EXTERN double freesteam_region4_psat_T(double); -EXTERN double freesteam_region4_Tsat_p(double); -EXTERN double freesteam_region4_rhof_T(double); -EXTERN double freesteam_region4_rhog_T(double); -EXTERN double freesteam_region4_v_Tx(double,double); -EXTERN double freesteam_region4_u_Tx(double,double); -EXTERN double freesteam_region4_h_Tx(double,double); -EXTERN double freesteam_region4_s_Tx(double,double); -EXTERN double freesteam_region4_cp_Tx(double,double); -EXTERN double freesteam_region4_cv_Tx(double,double); -EXTERN double freesteam_region4_dpsatdT_T(double); - -namespace Foam -{ - //CL: Functions to caluculate all fluid properties - void calculateProperties_h - ( - SteamState S, - scalar &rho, - scalar &h, - scalar &T, - scalar &p, - scalar &psi, - scalar &drhodh, - scalar &mu, - scalar &alpha, - scalar &x - ); - - //CL: This functions returns all (minimal) needed propeties (p,T,h,rho,psi,drhodh,mu and alpha) for given p and T - void calculateProperties_pT - ( - scalar &p, - scalar &T, - scalar &h, - scalar &rho, - scalar &psi, - scalar &drhodh, - scalar &mu, - scalar &alpha - ); - - //CL: This function returns the same values as the function above for given p and T - //CL: Additionally, the vapor mass fraction x is return - //CL: NOTE: This function is only included to have the possibility to update x at the fixedValue (Temperature) BC - //CL: can only return x=0 and x=1 because it is not possible to describe the vapour dome with p and T - void calculateProperties_pT - ( - scalar &p, - scalar &T, - scalar &h, - scalar &rho, - scalar &psi, - scalar &drhodh, - scalar &mu, - scalar &alpha, - scalar &x - ); - - //CL: This functions returns all (minimal) needed properties (p,T,h,rho,psi,drhodh,mu and alpha) for given p and h - void calculateProperties_ph - ( - scalar &p, - scalar &h, - scalar &T, - scalar &rho, - scalar &psi, - scalar &drhodh, - scalar &mu, - scalar &alpha - ); - - //CL: This function returns the same values as the function above for given p and h - //CL: Additionally, the vapor mass fraction x is return - void calculateProperties_ph - ( - scalar &p, - scalar &h, - scalar &T, - scalar &rho, - scalar &psi, - scalar &drhodh, - scalar &mu, - scalar &alpha, - scalar &x - ); - - - //CL: Return density for given pT or ph; - scalar rho_pT(scalar p,scalar T); - scalar rho_ph(scalar p,scalar h); - - //CL: Return cp for given pT or ph; - scalar cp_pT(scalar p,scalar T); - scalar cp_ph(scalar p,scalar h); - - //CL: Return cv for given pT or ph; - scalar cv_pT(scalar p,scalar T); - scalar cv_ph(scalar p,scalar h); - - //CL: Return enthalpy for given pT; - scalar h_pT(scalar p,scalar T); - - //CL: Return temperature for given ph; - scalar T_ph(scalar p,scalar T); - - //CL: Return psiH=(drho/dp)_h=constant for given pT or ph; - scalar psiH_pT(scalar p,scalar T); - scalar psiH_ph(scalar p,scalar h); - scalar psiH(SteamState S); - - //CL: Return drhodh=(drho/dh)_p=constant for given pT or ph; - scalar drhodh_pT(scalar p,scalar T); - scalar drhodh_ph(scalar p,scalar h); - scalar drhodh(SteamState S); - -} - -#endif //IAPWSIF97_C_ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright held by original author + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 2 of the License, or (at your + option) any later version. + + OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + IAPWS-IF97 (water) based thermodynamic class. Water properties calculated by freeSteam. + + This code connects OpenFoam with freeSteam and provides the basic functions needed in OpenFOAM + + For more information about freeSteam and its authors have a look @ http://freesteam.sourceforge.net/example.php + +SourceFiles + IAPWS-IF97.C + +Author +Christian Lucas +Institut für Thermodynamik +Technische Universität Braunschweig +Germany +\*---------------------------------------------------------------------------*/ +#ifndef IAPWSIF97_H +#define IAPWSIF97_H + +#include "basicPsiThermo.H" +#include "steam.H" + +#ifdef __cplusplus + #define EXTERN extern "C" +#else + #define EXTERN extern +#endif + + +//CL: +EXTERN double freesteam_p(SteamState S); +EXTERN double freesteam_T(SteamState S); +EXTERN double freesteam_rho(SteamState S); +EXTERN double freesteam_v(SteamState S); +EXTERN double freesteam_u(SteamState S); +EXTERN double freesteam_h(SteamState S); +EXTERN double freesteam_s(SteamState S); +EXTERN double freesteam_cp(SteamState S); +EXTERN double freesteam_cv(SteamState S); +EXTERN double freesteam_w(SteamState S); +EXTERN double freesteam_x(SteamState S); +EXTERN double freesteam_mu(SteamState S); +EXTERN double freesteam_k(SteamState S); + +//CL: getting SteamState for two given properties e.g. pressure and temperatur +EXTERN SteamState freesteam_set_pv(double,double); +EXTERN SteamState freesteam_set_pu(double,double); +EXTERN SteamState freesteam_set_pT(double,double); +EXTERN SteamState freesteam_set_ph(double,double); + +//CL: getting region of the SteamState +EXTERN int freesteam_region(SteamState); + +//CL: transport properties +EXTERN double freesteam_mu_rhoT(double,double); +EXTERN double freesteam_k_rhoT(double,double); + +//CL: Region 1 --> see region1.h (freesteam) +EXTERN double freesteam_region1_v_pT(double,double); +EXTERN double freesteam_region1_h_pT(double,double); +EXTERN double freesteam_region1_kappaT_pT(double,double); +EXTERN double freesteam_region1_alphav_pT(double,double); +EXTERN double freesteam_region1_cp_pT(double,double); +EXTERN double freesteam_region1_u_pT(double,double); +EXTERN double freesteam_region1_s_pT(double,double); +EXTERN double freesteam_region1_cv_pT(double,double); + +//CL: Region 2 --> see region2.h (freesteam) +EXTERN double freesteam_region2_v_pT(double,double); +EXTERN double freesteam_region2_u_pT(double,double); +EXTERN double freesteam_region2_s_pT(double,double); +EXTERN double freesteam_region2_h_pT(double,double); +EXTERN double freesteam_region2_cp_pT(double,double); +EXTERN double freesteam_region2_cv_pT(double,double); +EXTERN double freesteam_region2_alphav_pT(double,double); +EXTERN double freesteam_region2_kappaT_pT(double,double); + +//CL: Region 3 --> see region3.h (freesteam) +EXTERN double freesteam_region3_p_rhoT(double,double); +EXTERN double freesteam_region3_u_rhoT(double,double); +EXTERN double freesteam_region3_s_rhoT(double,double); +EXTERN double freesteam_region3_h_rhoT(double,double); +EXTERN double freesteam_region3_cp_rhoT(double,double); +EXTERN double freesteam_region3_cv_rhoT(double,double); +EXTERN double freesteam_region3_alphap_rhoT(double,double); +EXTERN double freesteam_region3_betap_rhoT(double,double); + +//CL: Region 4 --> see region4.h (freesteam) +EXTERN double freesteam_region4_psat_T(double); +EXTERN double freesteam_region4_Tsat_p(double); +EXTERN double freesteam_region4_rhof_T(double); +EXTERN double freesteam_region4_rhog_T(double); +EXTERN double freesteam_region4_v_Tx(double,double); +EXTERN double freesteam_region4_u_Tx(double,double); +EXTERN double freesteam_region4_h_Tx(double,double); +EXTERN double freesteam_region4_s_Tx(double,double); +EXTERN double freesteam_region4_cp_Tx(double,double); +EXTERN double freesteam_region4_cv_Tx(double,double); +EXTERN double freesteam_region4_dpsatdT_T(double); + +namespace Foam +{ + //CL: Functions to caluculate all fluid properties + void calculateProperties_h + ( + SteamState S, + scalar &rho, + scalar &h, + scalar &T, + scalar &p, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x + ); + + //CL: This functions returns all (minimal) needed propeties (p,T,h,rho,psi,drhodh,mu and alpha) for given p and T + void calculateProperties_pT + ( + scalar &p, + scalar &T, + scalar &h, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha + ); + + //CL: This function returns the same values as the function above for given p and T + //CL: Additionally, the vapor mass fraction x is return + //CL: NOTE: This function is only included to have the possibility to update x at the fixedValue (Temperature) BC + //CL: can only return x=0 and x=1 because it is not possible to describe the vapour dome with p and T + void calculateProperties_pT + ( + scalar &p, + scalar &T, + scalar &h, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x + ); + + //CL: This functions returns all (minimal) needed properties (p,T,h,rho,psi,drhodh,mu and alpha) for given p and h + void calculateProperties_ph + ( + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha + ); + + //CL: This function returns the same values as the function above for given p and h + //CL: Additionally, the vapor mass fraction x is return + void calculateProperties_ph + ( + scalar &p, + scalar &h, + scalar &T, + scalar &rho, + scalar &psi, + scalar &drhodh, + scalar &mu, + scalar &alpha, + scalar &x + ); + + + //CL: Return density for given pT or ph; + scalar rho_pT(scalar p,scalar T); + scalar rho_ph(scalar p,scalar h); + + //CL: Return cp for given pT or ph; + scalar cp_pT(scalar p,scalar T); + scalar cp_ph(scalar p,scalar h); + + //CL: Return cv for given pT or ph; + scalar cv_pT(scalar p,scalar T); + scalar cv_ph(scalar p,scalar h); + + //CL: Return enthalpy for given pT; + scalar h_pT(scalar p,scalar T); + + //CL: Return temperature for given ph; + scalar T_ph(scalar p,scalar T); + + //CL: Return psiH=(drho/dp)_h=constant for given pT or ph; + scalar psiH_pT(scalar p,scalar T); + scalar psiH_ph(scalar p,scalar h); + scalar psiH(SteamState S); + + //CL: Return drhodh=(drho/dh)_p=constant for given pT or ph; + scalar drhodh_pT(scalar p,scalar T); + scalar drhodh_ph(scalar p,scalar h); + scalar drhodh(SteamState S); + +} + +#endif //IAPWSIF97_C_ diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C index 0ebd0a18e..c878893b7 100755 --- a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.C @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -45,21 +45,21 @@ void Foam::IAPWSThermo::calculate() scalarField& drhodhCells = this->drhodh_.internalField(); scalarField& muCells = this->mu_.internalField(); scalarField& alphaCells = this->alpha_.internalField(); - + //CL: Updating all cell properties //CL: loop through all cells forAll(TCells, celli) - { + { //CL: see IAPWAS-IF97.H calculateProperties_ph ( - pCells[celli], - hCells[celli], - TCells[celli], - rhoCells[celli], - psiCells[celli], - drhodhCells[celli], - muCells[celli], + pCells[celli], + hCells[celli], + TCells[celli], + rhoCells[celli], + psiCells[celli], + drhodhCells[celli], + muCells[celli], alphaCells[celli] ); } @@ -84,13 +84,13 @@ void Foam::IAPWSThermo::calculate() //CL: see IAPWAS-IF97.H calculateProperties_pT ( - pp[facei], - pT[facei], - ph[facei], - prho[facei], - ppsi[facei], - pdrhodh[facei], - pmu[facei], + pp[facei], + pT[facei], + ph[facei], + prho[facei], + ppsi[facei], + pdrhodh[facei], + pmu[facei], palpha[facei] ); } @@ -103,13 +103,13 @@ void Foam::IAPWSThermo::calculate() //CL: see IAPWAS-IF97.H calculateProperties_ph ( - pp[facei], - ph[facei], - pT[facei], - prho[facei], - ppsi[facei], - pdrhodh[facei], - pmu[facei], + pp[facei], + ph[facei], + pT[facei], + prho[facei], + ppsi[facei], + pdrhodh[facei], + pmu[facei], palpha[facei] ); } @@ -143,7 +143,7 @@ Foam::IAPWSThermo::IAPWSThermo dimensionSet(0, 2, -2, 0, 0), this->hBoundaryTypes() ), - + rho_ ( IOobject @@ -186,18 +186,18 @@ Foam::IAPWSThermo::IAPWSThermo forAll(h_.boundaryField(), patchi) { h_.boundaryField()[patchi] == - h(this->T_.boundaryField()[patchi], patchi); + h(this->T_.boundaryField()[patchi], patchi); } forAll(rhoCells, celli) { - rhoCells[celli] = rho_pT(pCells[celli],TCells[celli]); + rhoCells[celli] = rho_pT(pCells[celli],TCells[celli]); } forAll(rho_.boundaryField(), patchi) { rho_.boundaryField()[patchi] == - rho(this->p_.boundaryField()[patchi] ,this->h_.boundaryField()[patchi], patchi); + rho(this->p_.boundaryField()[patchi] ,this->h_.boundaryField()[patchi], patchi); } hBoundaryCorrection(h_); @@ -256,7 +256,7 @@ Foam::tmp Foam::IAPWSThermo::h } return th; -} +} Foam::tmp Foam::IAPWSThermo::h @@ -273,7 +273,7 @@ Foam::tmp Foam::IAPWSThermo::h forAll(T, facei) { - h[facei] = h_pT(pp[facei], T[facei]); + h[facei] = h_pT(pp[facei], T[facei]); } return th; @@ -365,7 +365,7 @@ Foam::tmp Foam::IAPWSThermo::Cp() const } -//CL: Returns an updated field for rho +//CL: Returns an updated field for rho Foam::tmp Foam::IAPWSThermo::rho() const { const fvMesh& mesh = this->p_.mesh(); diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H index 70385b8e8..36d967b58 100755 --- a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermo.H @@ -27,12 +27,12 @@ Class Description: - Waterproperties based on the IAPWS 97 tables - The water properties are caluclated using freeSteam (http://freesteam.sourceforge.net/example.php) - + Waterproperties based on the IAPWS 97 tables + The water properties are caluclated using freeSteam (http://freesteam.sourceforge.net/example.php) + General paper decribing the water tables: - "Revised Release on the IAPWS Industrial Formulation 1997 for the Thermodynamic Properties of Water and Steam" + "Revised Release on the IAPWS Industrial Formulation 1997 for the Thermodynamic Properties of Water and Steam" SourceFiles IAPWSThermo.C @@ -40,7 +40,7 @@ SourceFiles Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermos.C b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermos.C index 14172cbf3..d2dcbcf87 100755 --- a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermos.C +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/IAPWSThermo/IAPWSThermos.C @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -34,7 +34,7 @@ Germany #include "makeBasicPsiThermo.H" #include "IAPWSThermo.H" -// including dummy classes --> this classes do nothing +// including dummy classes --> this classes do nothing // except satisfy the template structure //#include "dummyEqnOfState.H" //#include "dummyThermo.H" diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files index 2de700ff5..32c11d9f0 100644 --- a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/files @@ -1,4 +1,4 @@ IAPWSThermo/IAPWS-IF97.C -IAPWSThermo/IAPWSThermos.C +IAPWSThermo/IAPWSThermos.C LIB = $(FOAM_LIBBIN)/libIAPWSThermo diff --git a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/options b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/options index 267982f35..696f9ce3a 100644 --- a/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/options +++ b/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties/Make/options @@ -1,7 +1,7 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude LIB_LIBS = \ -lfiniteVolume\ diff --git a/src/thermophysicalModels/externalMedia/README b/src/thermophysicalModels/externalMedia/README index b22394bf9..4cb815f36 100644 --- a/src/thermophysicalModels/externalMedia/README +++ b/src/thermophysicalModels/externalMedia/README @@ -1,4 +1,4 @@ -CL: +CL: In this folder, thermodynamic classes similar to "hPsiThermo" are provided. These classes use external fluid property libraries e.g. freesteam for water.The classes are not directly linked into the basicThermophysicalModels dynamic library (see folder OpenFOAM-x.x/src/thermophysicalModels/basic). To use the code, add the dynamic library (the one you want to use from this folder + the one from the external library) in the controldict of your case diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C index 9ff6c6c6e..87caa7814 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/aungierRedlichKwong/aungierRedlichKwong.C @@ -28,7 +28,7 @@ Description Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -49,7 +49,7 @@ aungierRedlichKwong::aungierRedlichKwong(Istream& is) pcrit_(readScalar(is)), Tcrit_(readScalar(is)), azentricFactor_(readScalar(is)), - rhocrit_(readScalar(is)), + rhocrit_(readScalar(is)), a0_(0.42747*pow(this->RR(),2)*pow(Tcrit_,2)/pcrit_), b_(0.08664*this->RR()*Tcrit_/pcrit_), c_(this->RR()*Tcrit_/(pcrit_+(a0_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), @@ -88,7 +88,7 @@ aungierRedlichKwong::aungierRedlichKwong(const dictionary& dict) b_(0.08664*this->RR()*Tcrit_/pcrit_), c_(this->RR()*Tcrit_/(pcrit_+(a0_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_), n_(0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2)), - TSave(0.0), + TSave(0.0), b2_(pow(b_,2)), b3_(pow(b_,3)), b4_(pow(b_,4)), @@ -119,7 +119,7 @@ void Foam::aungierRedlichKwong::write(Ostream& os) const Ostream& operator<<(Ostream& os, const aungierRedlichKwong& ark) { - os << static_cast(ark)<< token::SPACE + os << static_cast(ark)<< token::SPACE << ark.pcrit_ << tab<< ark.Tcrit_<< tab<W()/rho; @@ -211,7 +211,7 @@ inline scalar aungierRedlichKwong::p(const scalar rho,const scalar T) const } -//Real deviative dp/dv at constant temperature +//Real deviative dp/dv at constant temperature //(molar values) inline scalar aungierRedlichKwong::dpdv(const scalar rho, const scalar T) const { @@ -224,7 +224,7 @@ inline scalar aungierRedlichKwong::dpdv(const scalar rho, const scalar T) const } -//Real deviative dp/dT at constant molar volume +//Real deviative dp/dT at constant molar volume //(molar values) inline scalar aungierRedlichKwong::dpdT(const scalar rho, const scalar T) const { @@ -233,7 +233,7 @@ inline scalar aungierRedlichKwong::dpdT(const scalar rho, const scalar T) const } -//Real deviative dv/dT at constant pressure +//Real deviative dv/dT at constant pressure //using implicit differentiation //(molar values) inline scalar aungierRedlichKwong::dvdT(const scalar rho,const scalar T) const @@ -242,9 +242,9 @@ inline scalar aungierRedlichKwong::dvdT(const scalar rho,const scalar T) const } -//Real deviative dv/dp at constant temperature +//Real deviative dv/dp at constant temperature //(molar values) -inline scalar aungierRedlichKwong::dvdp(const scalar rho,const scalar T) const +inline scalar aungierRedlichKwong::dvdp(const scalar rho,const scalar T) const { return 1/this->dpdv(rho,T); } @@ -266,7 +266,7 @@ inline scalar aungierRedlichKwong::integral_p_dv //needed to calculate the entropy //(molar values) inline scalar aungierRedlichKwong::integral_dpdT_dv -( +( const scalar rho, const scalar T ) const @@ -300,10 +300,10 @@ inline scalar aungierRedlichKwong::d2pdv2(const scalar rho,const scalar T) const //(molar values) -//using second order implicit differentiation +//using second order implicit differentiation inline scalar aungierRedlichKwong::d2vdT2(const scalar rho, const scalar T) const { - return + return -( pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T) + pow(this->dpdv(rho,T),2)*this->d2pdT2(rho,T) @@ -325,13 +325,13 @@ inline scalar aungierRedlichKwong::d2pdvdT(const scalar rho, const scalar T) con } -// the result of this intergal is needed for the nasa based cp polynomial +// the result of this intergal is needed for the nasa based cp polynomial //(molar values) inline scalar aungierRedlichKwong::integral_d2pdT2_dv ( const scalar rho, const scalar T -) const +) const { scalar Vm = this->W()/rho; return d2adT2(T)*log(b()+Vm)/b()-d2adT2(T)*log(Vm)/b(); @@ -376,7 +376,7 @@ inline scalar aungierRedlichKwong::rho do { molarVolumePrevIteration= molarVolume; - + label i=0; do { @@ -387,7 +387,7 @@ inline scalar aungierRedlichKwong::rho )/pow(2,i); i++; - if (i>8) + if (i>8) { //CL: using bisection methode as backup, //CL: solution must be between rho=0.001 to rho=1500; @@ -402,7 +402,7 @@ inline scalar aungierRedlichKwong::rho if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) { rho1=rho3; - } + } else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) { rho2=rho3; @@ -416,7 +416,7 @@ inline scalar aungierRedlichKwong::rho { molarVolume=this->W()/rho3; molarVolumePrevIteration=this->W()/rho3; - break; + break; } else { diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/README b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/README index b30bb2b76..696fea68d 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/README +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/README @@ -1,5 +1,5 @@ CL: Real gas mixture classes using mixture models. -CL: other models are possible +CL: other models are possible CL: Mixtures based on a pseudo critical point approach diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.C index 1150ef93a..ea7e6af31 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.C @@ -28,7 +28,7 @@ Description Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.H index e0407fe5f..b422d66ad 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwong.H @@ -28,8 +28,8 @@ Class Description Mixture Aungier Redlich Kwong equation of state. - Mixture based on a pseudo critical point approach. - + Mixture based on a pseudo critical point approach. + For further information, see: BOOK Title: The Properties of Gases And Liquids, Fifth Edition, McGraw-Hill, Chapter 5 Authors: B. Poling; J. Prausnitz; J. O'Connell @@ -42,7 +42,7 @@ SourceFiles Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -73,27 +73,27 @@ protected: // data at the critical point scalar Zcrit_; - + //CL. molar volume at the critical point scalar Vcrit_; //CL: save the concentrations of each component of the mixture //CL: needs to be multiplied by this->W() to get the molar fractions //mutable DynamicList weigths; - + //CL: saves a pointer to the pure component classes of the mixture // mutable DynamicList mixtureComponents; public: - + // Constructors //- Construct from components inline mixtureAungierRedlichKwong ( - const aungierRedlichKwong& sp, + const aungierRedlichKwong& sp, scalar Tcrit, scalar azentricFactor, scalar Vcrit, diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwongI.H index 9e959e02e..47ec9ad39 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureAungierRedlichKwong/mixtureAungierRedlichKwongI.H @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -51,14 +51,14 @@ inline mixtureAungierRedlichKwong::mixtureAungierRedlichKwong scalar rhoMax ) : - aungierRedlichKwong(sp), + aungierRedlichKwong(sp), Vcrit_(Vcrit), Zcrit_(Zcrit) { //CL: Saving critical data Tcrit_=Tcrit; - pcrit_=Zcrit*this->RR*Tcrit/Vcrit; - rhocrit_=this->W()/Vcrit_; + pcrit_=Zcrit*this->RR*Tcrit/Vcrit; + rhocrit_=this->W()/Vcrit_; azentricFactor_=azentricFactor; //CL: calculating the aungier redlich kwong coefficience @@ -71,7 +71,7 @@ inline mixtureAungierRedlichKwong::mixtureAungierRedlichKwong rhoMin_=rhoMin; rhoMax_=rhoMax; - //CL: + //CL: b2_=pow(b_,2); b3_=pow(b_,3); b4_=pow(b_,4); @@ -128,7 +128,7 @@ inline void mixtureAungierRedlichKwong::operator+=(const mixtureAungierRedlichKw Vcrit_=molr1*Vcrit_+molr2*pr.Vcrit_; pcrit_=Zcrit_*this->RR*Tcrit_/Vcrit_; rhocrit_=this->W()/Vcrit_; - + //CL: calculating new azentric factor azentricFactor_=molr1*azentricFactor_+molr2*pr.azentricFactor_; @@ -142,7 +142,7 @@ inline void mixtureAungierRedlichKwong::operator+=(const mixtureAungierRedlichKw c_=this->RR*Tcrit_/(pcrit_+(a0_/(this->W()/rhocrit_*(this->W()/rhocrit_+b_))))+b_-this->W()/rhocrit_; n_=0.4986+1.2735*azentricFactor_+0.4754*pow(azentricFactor_,2); - //CL: + //CL: b2_=pow(b_,2); b3_=pow(b_,3); b4_=pow(b_,4); @@ -195,11 +195,11 @@ inline mixtureAungierRedlichKwong operator* return mixtureAungierRedlichKwong ( s*static_cast(pr), - pr.Tcrit_, - pr.azentricFactor_, - pr.Vcrit_, - pr.Zcrit_, - pr.rhoMin_, + pr.Tcrit_, + pr.azentricFactor_, + pr.Vcrit_, + pr.Zcrit_, + pr.rhoMin_, pr.rhoMax_ ); } diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C index d84fa7759..1e1c0cd9b 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.C @@ -28,7 +28,7 @@ Description Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -50,7 +50,7 @@ mixturePengRobinson::mixturePengRobinson(Istream& is) numOfComp(1), //CL: no real gas mixture correction when stream constructor is used realMixtureCorr_(false) -{ +{ //CL: set size of weigths, mixtureComponents ... to 10, //CL: when more mixture components are used //CL: size of the DynamicLis increases automatically @@ -101,21 +101,21 @@ mixturePengRobinson::mixturePengRobinson(const dictionary& dict) label i; label j; label k=0; - + // CL: saves the number of mixtureCorrectionCoefficients needed for this mixture // CL: need to be set to 1 label sizeOfVector_=1; //CL: size of the vector depends on the number of components - //CL: determine the size of the vector + //CL: determine the size of the vector for (i=3; i<=nCom_;i++) - { + { sizeOfVector_=sizeOfVector_+(i-1); } - - //CL: setting the size + + //CL: setting the size realMixtureCorrCoef_.setSize(sizeOfVector_); - + //CL: Reading the real mixture correction coefficients //CL: Naming convention e.g for 3 component mixture: //CL: mixtureCorrectionCoefficient_12, mixtureCorrectionCoefficient_13, mixtureCorrectionCoefficient_23 diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.H index 27ced59e6..9e87d6676 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinson.H @@ -41,7 +41,7 @@ SourceFiles Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -77,34 +77,34 @@ protected: //CL: bool used to make sure the model behaves like a single component model when needed //CL: this is needed during the construction of the mixture - mutable bool singleComponent; - + mutable bool singleComponent; + //CL: save the concentrations of each component of the mixture //CL: needs to be multiplied by this->W() to get the molar fractions mutable DynamicList weigths; - + //CL: saves a pointer to the pure component classes of the mixture mutable DynamicList mixtureComponents; - + //CL: counts the number of components mutable label numOfComp; //Protected functions - //CL: function updates the coefficients (aSave, daSave, d2aSave, b) of the mixture + //CL: function updates the coefficients (aSave, daSave, d2aSave, b) of the mixture //CL: this is the function with the mixing rule - inline void updateModelCoefficients(const scalar T) const; + inline void updateModelCoefficients(const scalar T) const; //CL: Variables used in real gas mixture correction //CL: If true, the real gas mixture correction is used mutable bool realMixtureCorr_; - + //CL: number of mixture components, needed to calculate the mixture correction factors needed //CL: do not mistake this variable with numOfComp, //CL: numOfComp is a counter to counts the number of components while the mixture is constructed mutable label nCom_; - + //CL: stores real mixture correction coefficients mutable DynamicList realMixtureCorrCoef_; @@ -121,7 +121,7 @@ public: label numOfComp, DynamicList weigths, DynamicList mixtureComponents, - scalar a0, + scalar a0, scalar b, scalar Tcrit, scalar n, @@ -161,29 +161,29 @@ public: //CL: mixture coefficience inline scalar amix(const scalar T, const label i, const label j) const; - + inline scalar dadTmix(const scalar T, const label i, const label j) const; inline scalar d2adT2mix(const scalar T, const label i, const label j) const; inline scalar p(const scalar rho, const scalar T) const; - //first order derivatives + //first order derivatives inline scalar dpdv(const scalar rho, const scalar T) const; inline scalar dpdT(const scalar rho, const scalar T) const; inline scalar dvdT(const scalar rho, const scalar T) const; - inline scalar dvdp(const scalar rho, const scalar T) const; + inline scalar dvdp(const scalar rho, const scalar T) const; - inline scalar isobarExpCoef(const scalar rho, const scalar T) const; + inline scalar isobarExpCoef(const scalar rho, const scalar T) const; inline scalar isothermalCompressiblity ( const scalar rho, const scalar T - ) const; + ) const; // Used for cv inline scalar integral_d2pdT2_dv @@ -193,7 +193,7 @@ public: ) const; //Used for internal Energy - inline scalar integral_p_dv(const scalar rho, const scalar T) const; + inline scalar integral_p_dv(const scalar rho, const scalar T) const; // Used for Entropy inline scalar integral_dpdT_dv(const scalar rho, const scalar T) const; @@ -218,7 +218,7 @@ public: inline scalar rho(const scalar p, const scalar T) const; - //- Return compressibility drho/dp at T=constant [s^2/m^2] + //- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar psi(const scalar rho, const scalar T) const; //- Return compression factor [] diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinsonI.H index f1aed3743..a6d814e8d 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixturePengRobinson/mixturePengRobinsonI.H @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -40,7 +40,7 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // Construct from components -// CL: needed for operator* +// CL: needed for operator* inline mixturePengRobinson::mixturePengRobinson ( const pengRobinson& pr, @@ -55,7 +55,7 @@ inline mixturePengRobinson::mixturePengRobinson scalar rhoMin, scalar rhoMax ) -: +: pengRobinson(pr), singleComponent(1), weigths(weigths), @@ -64,7 +64,7 @@ inline mixturePengRobinson::mixturePengRobinson { a0_=a0; b_=b; - Tcrit_=Tcrit; + Tcrit_=Tcrit; n_=n; rhostd_=rhostd; rhoMin_=rhoMin; @@ -82,12 +82,12 @@ inline mixturePengRobinson::mixturePengRobinson scalar rhoMin, scalar rhoMax ) -: +: pengRobinson(pr), singleComponent(0), weigths(weigths), mixtureComponents(mixtureComponents), - numOfComp(numOfComp) + numOfComp(numOfComp) { TSave=0.0; rhoMin_=rhoMin; @@ -120,23 +120,23 @@ inline autoPtr mixturePengRobinson::New(Istream& is) //CL: updates the coefficents of the model after the construction of the mixture //CL: uses the van der waals mixing rule inline void mixturePengRobinson::updateModelCoefficients(const scalar T) const -{ - // CL: to make sure that the coefficents are only updated if the mixture has more than 1 component +{ + // CL: to make sure that the coefficents are only updated if the mixture has more than 1 component if (singleComponent==0) - { + { // Checking if the mixture coefficient were already calculated for this temperature if(TSave!=T) { label i,j,k; - + aSave=0; daSave=0; d2aSave=0; b_=0; for (i=0;irealMixtureCorr_==true) { - // first and second order temperature derivative of the van der waals mixing rule for a(T) + // first and second order temperature derivative of the van der waals mixing rule for a(T) if(i==j) { aSave=aSave+amix(T,i,j); daSave=daSave+dadTmix(T,i,j); d2aSave=d2aSave+d2adT2mix(T,i,j); } - else + else { //CL: gives the position of the correction factor in the vector realMixtureCorrCoef_ k=i+j-1; aSave=aSave+amix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); daSave=daSave+dadTmix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); - d2aSave=d2aSave+d2adT2mix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); - } + d2aSave=d2aSave+d2adT2mix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); + } } else @@ -167,17 +167,17 @@ inline void mixturePengRobinson::updateModelCoefficients(const scalar T) const aSave=aSave+amix(T,i,j); daSave=daSave+dadTmix(T,i,j); d2aSave=d2aSave+d2adT2mix(T,i,j); - } + } } - //CL: getting b for the mixture + //CL: getting b for the mixture //CL: using van der waals mixing rule b_=b_+weigths[i]*mixtureComponents[i]->b()*this->W(); //CL: saving the temperature at which the mixture coefficients are valid TSave=T; } - + b2_=b_*b_; b3_=pow(b_,3); b4_=pow(b_,4); @@ -229,7 +229,7 @@ inline scalar mixturePengRobinson::d2adT2mix(const scalar T, const label i, cons -//returns the pressure for a given density and temperature +//returns the pressure for a given density and temperature inline scalar mixturePengRobinson::p(const scalar rho, const scalar T) const { updateModelCoefficients(T); @@ -237,7 +237,7 @@ inline scalar mixturePengRobinson::p(const scalar rho, const scalar T) const } -//Real deviative dp/dv at constant temperature +//Real deviative dp/dv at constant temperature //(molar values) inline scalar mixturePengRobinson::dpdv(const scalar rho, const scalar T) const { @@ -246,7 +246,7 @@ inline scalar mixturePengRobinson::dpdv(const scalar rho, const scalar T) const } -//Real deviative dp/dT at constant molar volume +//Real deviative dp/dT at constant molar volume //(molar values) inline scalar mixturePengRobinson::dpdT(const scalar rho, const scalar T) const { @@ -255,7 +255,7 @@ inline scalar mixturePengRobinson::dpdT(const scalar rho, const scalar T) const } -//Real deviative dv/dT at constant pressure +//Real deviative dv/dT at constant pressure //(molar values) inline scalar mixturePengRobinson::dvdT(const scalar rho, const scalar T) const { @@ -264,7 +264,7 @@ inline scalar mixturePengRobinson::dvdT(const scalar rho, const scalar T) const } -//Real deviative dv/dp at constant temperature +//Real deviative dv/dp at constant temperature //(molar values) inline scalar mixturePengRobinson::dvdp(const scalar rho, const scalar T) const { @@ -280,7 +280,7 @@ inline scalar mixturePengRobinson::integral_p_dv const scalar rho, const scalar T ) const -{ +{ updateModelCoefficients(T); return pengRobinson::integral_p_dv(rho,T); } @@ -304,7 +304,7 @@ inline scalar mixturePengRobinson::d2pdT2(const scalar rho, const scalar T) cons { updateModelCoefficients(T); return pengRobinson::d2pdT2(rho,T); -} +} //(molar values) @@ -331,7 +331,7 @@ inline scalar mixturePengRobinson::d2pdvdT(const scalar rho, const scalar T) con } -// the result of this intergal is needed for the nasa based cp polynomial +// the result of this intergal is needed for the nasa based cp polynomial //(molar values) inline scalar mixturePengRobinson::integral_d2pdT2_dv ( @@ -370,7 +370,7 @@ inline scalar mixturePengRobinson::isothermalCompressiblity } -//- Return density [kg/m^3]on +//- Return density [kg/m^3]on inline scalar mixturePengRobinson::rho ( const scalar p, @@ -383,7 +383,7 @@ inline scalar mixturePengRobinson::rho } -//- Return density [kg/m^3]on +//- Return density [kg/m^3]on inline scalar mixturePengRobinson::rho(const scalar p, const scalar T) const { updateModelCoefficients(T); @@ -422,9 +422,9 @@ inline void mixturePengRobinson::operator+=(const mixturePengRobinson& pr) weigths.setSize(2*numOfComp); mixtureComponents.setSize(2*numOfComp); } - - //Cl: oldClass+=pr - //CL: Saving the object pointer and weigths of pr (which is @ mixtureComponents[0] and weigths[0]) at the numOfComp's value of the oldClass + + //Cl: oldClass+=pr + //CL: Saving the object pointer and weigths of pr (which is @ mixtureComponents[0] and weigths[0]) at the numOfComp's value of the oldClass weigths[numOfComp]=pr.weigths[0]; mixtureComponents[numOfComp]=pr.mixtureComponents[0]; @@ -465,7 +465,7 @@ inline mixturePengRobinson operator+ mixtureComponents.setSize(2*pr1.numOfComp); } - //CL: Getting the new weigths and mixtureComponents lists, + //CL: Getting the new weigths and mixtureComponents lists, //CL: Saving the object pointer and weigths of pr2 (which is @ mixtureComponents[0] and weigths[0]) at the numOfComp's value of the new object weigths[pr1.numOfComp]=pr2.weigths[0]; mixtureComponents[pr1.numOfComp]=pr2.mixtureComponents[0]; @@ -484,7 +484,7 @@ inline mixturePengRobinson operator* //CL: saving the "concentraction" of the component of the mixture in the vector weights //CL: saved at the Position "numOfComp-1" DynamicList weigths=pr.weigths; - weigths[pr.numOfComp-1]=s*pr.nMoles(); + weigths[pr.numOfComp-1]=s*pr.nMoles(); return mixturePengRobinson(s*static_cast(pr), pr.numOfComp, weigths, pr.mixtureComponents,pr.a0_,pr.b_,pr.Tcrit_,pr.n_,pr.rhostd_, pr.rhoMin_, pr.rhoMax_); diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.C index b3abea406..ef19a9c55 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.C @@ -28,7 +28,7 @@ Description Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -49,7 +49,7 @@ mixtureRedlichKwong::mixtureRedlichKwong(Istream& is) numOfComp(1), //CL: no real gas mixture correction when stream constructor is used realMixtureCorr_(false) -{ +{ //CL: set size of weigths and mixtureComponents to 10 //CL: when more mixture components are used //CL: size of the DynamicLis increases automatically @@ -98,22 +98,22 @@ mixtureRedlichKwong::mixtureRedlichKwong(const dictionary& dict) label i; label j; label k=0; - - + + // CL: saves the number of mixtureCorrectionCoefficients needed for this mixture // CL: need to be set to 1 label sizeOfVector_=1; //CL: size of the vector depends on the number of components - //CL: determine the size of the vector + //CL: determine the size of the vector for (i=3; i<=nCom_;i++) - { + { sizeOfVector_=sizeOfVector_+(i-1); } - - //CL: setting the size + + //CL: setting the size realMixtureCorrCoef_.setSize(sizeOfVector_); - + //CL: Reading the real mixture correction coefficients //CL: Naming convention e.g for 3 component mixture: //CL: mixtureCorrectionCoefficient_12, mixtureCorrectionCoefficient_13, mixtureCorrectionCoefficient_23 diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.H index 5b9839b30..6e565efc8 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwong.H @@ -41,7 +41,7 @@ SourceFiles Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -72,23 +72,23 @@ class mixtureRedlichKwong : public redlichKwong { - // Private data - + // Private data + // Private functions //CL: function updates the model coefficients (a,b) of the mixture - //CL: this is the function with the mixing rule - inline void updateModelCoefficients() const; + //CL: this is the function with the mixing rule + inline void updateModelCoefficients() const; protected: - + //CL: save the concentrations of each component of the mixture //CL: needs to be multiplied by this->W() to get the molar fractions mutable DynamicList weigths; - + //CL: saves a pointer to the pure component classes of the mixture mutable DynamicList mixtureComponents; - + //CL: counts the number of components mutable label numOfComp; @@ -118,7 +118,7 @@ public: label numOfComp, DynamicList weigths, DynamicList mixtureComponents, - scalar a, + scalar a, scalar b, scalar rhostd, scalar rhoMin, diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwongI.H index 44e419cc0..30fa13e3c 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureRedlichKwong/mixtureRedlichKwongI.H @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -40,7 +40,7 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // Construct from components -// CL: needed for operator* +// CL: needed for operator* inline mixtureRedlichKwong::mixtureRedlichKwong ( const redlichKwong& rK, @@ -53,7 +53,7 @@ inline mixtureRedlichKwong::mixtureRedlichKwong scalar rhoMin, scalar rhoMax ) -: +: redlichKwong(rK), weigths(weigths), mixtureComponents(mixtureComponents), @@ -82,7 +82,7 @@ inline mixtureRedlichKwong::mixtureRedlichKwong scalar rhoMin, scalar rhoMax ) -: +: redlichKwong(rK), weigths(weigths), mixtureComponents(mixtureComponents), @@ -126,15 +126,15 @@ inline autoPtr mixtureRedlichKwong::New(Istream& is) //CL: updates the coefficents of the model after the final construction of the mixture //CL: uses the van der waals mixing rule inline void mixtureRedlichKwong::updateModelCoefficients() const -{ +{ label i,j,k; - + a_=0; b_=0; for (i=0;ia()*mixtureComponents[j]->a(),0.5)*this->W()*this->W(); - } - //CL: getting b for the mixture + a_=a_+weigths[i]*weigths[j]*pow(mixtureComponents[i]->a()*mixtureComponents[j]->a(),0.5)*this->W()*this->W(); + } + //CL: getting b for the mixture //CL: using van der waals mixing rule b_=b_+weigths[i]*mixtureComponents[i]->b()*this->W(); } } - + b2_=b_*b_; b3_=pow(b_,3); b5_=pow(b_,4); @@ -182,8 +182,8 @@ inline void mixtureRedlichKwong::operator+=(const mixtureRedlichKwong& rK) mixtureComponents.setSize(2*numOfComp); } - //Cl: oldClass+=rK - //CL: Saving the object pointer and weigths of rK (which is @ mixtureComponents[0] and weigths[0]) at the numOfComp's value of the oldClass + //Cl: oldClass+=rK + //CL: Saving the object pointer and weigths of rK (which is @ mixtureComponents[0] and weigths[0]) at the numOfComp's value of the oldClass weigths[numOfComp]=rK.weigths[0]; mixtureComponents[numOfComp]=rK.mixtureComponents[0]; @@ -223,7 +223,7 @@ inline mixtureRedlichKwong operator+ mixtureComponents.setSize(2*rK1.numOfComp); } - //CL: Getting the new weigths and mixtureComponents lists, + //CL: Getting the new weigths and mixtureComponents lists, //CL: Saving the object pointer and weigths of rK2 (which is @ mixtureComponents[0] and weigths[0]) at the numOfComp's value of the new object weigths[rK1.numOfComp]=rK2.weigths[0]; mixtureComponents[rK1.numOfComp]=rK2.mixtureComponents[0]; @@ -241,9 +241,9 @@ inline mixtureRedlichKwong operator* { //CL: saving the "concentraction" of the component of the mixture in the vector weights DynamicList weigths=rK.weigths; - weigths[rK.numOfComp-1]=s*rK.nMoles(); + weigths[rK.numOfComp-1]=s*rK.nMoles(); - return mixtureRedlichKwong(s*static_cast(rK), rK.numOfComp, weigths, + return mixtureRedlichKwong(s*static_cast(rK), rK.numOfComp, weigths, rK.mixtureComponents,rK.a_,rK.b_,rK.rhostd_, rK.rhoMin_, rK.rhoMax_); } diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C index b11f3fed1..54f28cb92 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.C @@ -28,7 +28,7 @@ Description Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -50,7 +50,7 @@ mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(Istream& is) numOfComp(1), //CL: no real gas mixture correction when stream constructor is used realMixtureCorr_(false) -{ +{ //CL: set size of weigths, mixtureComponents ... to 10, //CL: when more mixture componentents are used //CL: size of the DynamicLis increases automatically @@ -72,7 +72,7 @@ mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(const dictionary& dict) numOfComp(1), singleComponent(1), realMixtureCorr_(dict.subDict("equationOfState").lookupOrDefault("realMixtureCorrection",false)) -{ +{ //CL: set size of weigths, mixtureComponents ... to 10, //CL: when more mixture componentents are used //CL: size of the DynamicLis increases automatically @@ -101,21 +101,21 @@ mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong(const dictionary& dict) label i; label j; label k=0; - + // CL: saves the number of mixtureCorrectionCoefficients needed for this mixture // CL: need to be set to 1 label sizeOfVector_=1; //CL: size of the vector depends on the number of components - //CL: determine the size of the vector + //CL: determine the size of the vector for (i=3; i<=nCom_;i++) - { + { sizeOfVector_=sizeOfVector_+(i-1); } - - //CL: setting the size + + //CL: setting the size realMixtureCorrCoef_.setSize(sizeOfVector_); - + //CL: Reading the real mixture correction coefficients //CL: Naming convention e.g for 3 component mixture: //CL: mixtureCorrectionCoefficient_12, mixtureCorrectionCoefficient_13, mixtureCorrectionCoefficient_23 diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H index 7dbd69c2a..829c8200d 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwong.H @@ -41,7 +41,7 @@ SourceFiles Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -77,33 +77,33 @@ protected: //CL: bool used to make sure the model behaves like a single component model when needed //CL: this is needed during the construction of the mixture - mutable bool singleComponent; - + mutable bool singleComponent; + //CL: save the concentrations of each component of the mixture //CL: needs to be multiplied by this->W() to get the molar fractions mutable DynamicList weigths; - + //CL: saves a pointer to the pure component classes of the mixture mutable DynamicList mixtureComponents; - + //CL: counts the number of components mutable label numOfComp; //Protected functions - //CL: function updates the coefficients (aSave, daSave, d2aSave, b) of the mixture - inline void updateModelCoefficients(const scalar T) const; + //CL: function updates the coefficients (aSave, daSave, d2aSave, b) of the mixture + inline void updateModelCoefficients(const scalar T) const; //CL: Variables used in real gas mixture correction //CL: If true, the real gas mixture correction is used mutable bool realMixtureCorr_; - + //CL: number of mixture components, needed to calculate the mixture correction factors needed //CL: do not mistake this variable with numOfComp, //CL: numOfComp is a counter to counts the number of components while the mixture is constructed mutable label nCom_; - + //CL: stores real mixture correction coefficients mutable DynamicList realMixtureCorrCoef_; @@ -120,7 +120,7 @@ public: label numOfComp, DynamicList weigths, DynamicList mixtureComponents, - scalar a0, + scalar a0, scalar b, scalar Tcrit, scalar n, @@ -160,29 +160,29 @@ public: //CL: mixture coefficience inline scalar amix(const scalar T, const label i, const label j) const; - + inline scalar dadTmix(const scalar T, const label i, const label j) const; inline scalar d2adT2mix(const scalar T, const label i, const label j) const; inline scalar p(const scalar rho, const scalar T) const; - //first order derivatives + //first order derivatives inline scalar dpdv(const scalar rho, const scalar T) const; inline scalar dpdT(const scalar rho, const scalar T) const; inline scalar dvdT(const scalar rho, const scalar T) const; - inline scalar dvdp(const scalar rho, const scalar T) const; + inline scalar dvdp(const scalar rho, const scalar T) const; - inline scalar isobarExpCoef(const scalar rho, const scalar T) const; + inline scalar isobarExpCoef(const scalar rho, const scalar T) const; inline scalar isothermalCompressiblity ( const scalar rho, const scalar T - ) const; + ) const; // Used for cv inline scalar integral_d2pdT2_dv @@ -192,7 +192,7 @@ public: ) const; //Used for internal Energy - inline scalar integral_p_dv(const scalar rho, const scalar T) const; + inline scalar integral_p_dv(const scalar rho, const scalar T) const; // Used for Entropy inline scalar integral_dpdT_dv(const scalar rho, const scalar T) const; @@ -217,7 +217,7 @@ public: inline scalar rho(const scalar p, const scalar T) const; - //- Return compressibility drho/dp at T=constant [s^2/m^2] + //- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar psi(const scalar rho, const scalar T) const; //- Return compression factor [] diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H index 9791dc217..af4aa1bd6 100644 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/mixtures/mixtureSoaveRedlichKwong/mixtureSoaveRedlichKwongI.H @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -40,7 +40,7 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // Construct from components -// CL: needed for operator* +// CL: needed for operator* inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong ( const soaveRedlichKwong& srk, @@ -55,7 +55,7 @@ inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong scalar rhoMin, scalar rhoMax ) -: +: soaveRedlichKwong(srk), singleComponent(1), weigths(weigths), @@ -64,7 +64,7 @@ inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong { a0_=a0; b_=b; - Tcrit_=Tcrit; + Tcrit_=Tcrit; n_=n; rhostd_=rhostd; rhoMin_=rhoMin; @@ -83,7 +83,7 @@ inline mixtureSoaveRedlichKwong::mixtureSoaveRedlichKwong scalar rhoMin, scalar rhoMax ) -: +: soaveRedlichKwong(srk), singleComponent(0), weigths(weigths), @@ -123,23 +123,23 @@ inline autoPtr mixtureSoaveRedlichKwong::New(Istream& //CL: updates the coefficents of the model after the final construction of the mixture //CL: uses the van der waals mixing rule inline void mixtureSoaveRedlichKwong::updateModelCoefficients(const scalar T) const -{ - // CL: to make sure that the coefficents are only updated if the mixture has more than 1 component +{ + // CL: to make sure that the coefficents are only updated if the mixture has more than 1 component if (singleComponent==0) - { + { // Checking if the mixture coefficient were already calculated for this temperature if(TSave!=T) { label i,j,k; - + aSave=0; daSave=0; d2aSave=0; b_=0; for (i=0;irealMixtureCorr_==true) { - // first and second order temperature derivative of the van der waals mixing rule for a(T) + // first and second order temperature derivative of the van der waals mixing rule for a(T) if(i==j) { aSave=aSave+amix(T,i,j); daSave=daSave+dadTmix(T,i,j); d2aSave=d2aSave+d2adT2mix(T,i,j); } - else + else { //CL: gives the position of the correction factor in the vector realMixtureCorrCoef_ k=i+j-1; aSave=aSave+amix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); daSave=daSave+dadTmix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); - d2aSave=d2aSave+d2adT2mix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); - } + d2aSave=d2aSave+d2adT2mix(T,i,j)*(1-mixtureComponents[0]->realMixtureCorrCoef_[k]); + } } else @@ -170,17 +170,17 @@ inline void mixtureSoaveRedlichKwong::updateModelCoefficients(const scalar T) c aSave=aSave+amix(T,i,j); daSave=daSave+dadTmix(T,i,j); d2aSave=d2aSave+d2adT2mix(T,i,j); - } + } } - //CL: getting b for the mixture + //CL: getting b for the mixture //CL: using van der waals mixing rule b_=b_+weigths[i]*mixtureComponents[i]->b()*this->W(); //CL: saving the temperature at which the mixture coefficients are valid TSave=T; } - + b2_=b_*b_; b3_=pow(b_,3); b5_=pow(b_,5); @@ -228,7 +228,7 @@ inline scalar mixtureSoaveRedlichKwong::d2adT2mix(const scalar T, const label i, ); } -//returns the pressure for a given density and temperature +//returns the pressure for a given density and temperature inline scalar mixtureSoaveRedlichKwong::p(const scalar rho, const scalar T) const { updateModelCoefficients(T); @@ -236,7 +236,7 @@ inline scalar mixtureSoaveRedlichKwong::p(const scalar rho, const scalar T) cons } -//Real deviative dp/dv at constant temperature +//Real deviative dp/dv at constant temperature //(molar values) inline scalar mixtureSoaveRedlichKwong::dpdv(const scalar rho, const scalar T) const { @@ -245,7 +245,7 @@ inline scalar mixtureSoaveRedlichKwong::dpdv(const scalar rho, const scalar T) c } -//Real deviative dp/dT at constant molar volume +//Real deviative dp/dT at constant molar volume //(molar values) inline scalar mixtureSoaveRedlichKwong::dpdT(const scalar rho, const scalar T) const { @@ -254,7 +254,7 @@ inline scalar mixtureSoaveRedlichKwong::dpdT(const scalar rho, const scalar T) c } -//Real deviative dv/dT at constant pressure +//Real deviative dv/dT at constant pressure //(molar values) inline scalar mixtureSoaveRedlichKwong::dvdT(const scalar rho, const scalar T) const { @@ -263,7 +263,7 @@ inline scalar mixtureSoaveRedlichKwong::dvdT(const scalar rho, const scalar T) c } -//Real deviative dv/dp at constant temperature +//Real deviative dv/dp at constant temperature //(molar values) inline scalar mixtureSoaveRedlichKwong::dvdp(const scalar rho, const scalar T) const { @@ -279,7 +279,7 @@ inline scalar mixtureSoaveRedlichKwong::integral_p_dv const scalar rho, const scalar T ) const -{ +{ updateModelCoefficients(T); return soaveRedlichKwong::integral_p_dv(rho,T); } @@ -303,7 +303,7 @@ inline scalar mixtureSoaveRedlichKwong::d2pdT2(const scalar rho, const scalar T) { updateModelCoefficients(T); return soaveRedlichKwong::d2pdT2(rho,T); -} +} //(molar values) @@ -330,7 +330,7 @@ inline scalar mixtureSoaveRedlichKwong::d2pdvdT(const scalar rho, const scalar T } -// the result of this intergal is needed for the nasa based cp polynomial +// the result of this intergal is needed for the nasa based cp polynomial //(molar values) inline scalar mixtureSoaveRedlichKwong::integral_d2pdT2_dv ( @@ -369,7 +369,7 @@ inline scalar mixtureSoaveRedlichKwong::isothermalCompressiblity } -//- Return density [kg/m^3]on +//- Return density [kg/m^3]on inline scalar mixtureSoaveRedlichKwong::rho ( const scalar p, @@ -383,7 +383,7 @@ inline scalar mixtureSoaveRedlichKwong::rho } -//- Return density [kg/m^3]on +//- Return density [kg/m^3]on inline scalar mixtureSoaveRedlichKwong::rho(const scalar p, const scalar T) const { updateModelCoefficients(T); @@ -423,8 +423,8 @@ inline void mixtureSoaveRedlichKwong::operator+=(const mixtureSoaveRedlichKwong& mixtureComponents.setSize(2*numOfComp); } - //Cl: oldClass+=srk - //CL: Saving the object pointer and weigths of pr (which is @ mixtureComponents[0] and weigths[0]) at the numOfComp's value of the oldClass + //Cl: oldClass+=srk + //CL: Saving the object pointer and weigths of pr (which is @ mixtureComponents[0] and weigths[0]) at the numOfComp's value of the oldClass weigths[numOfComp]=srk.weigths[0]; mixtureComponents[numOfComp]=srk.mixtureComponents[0]; @@ -466,7 +466,7 @@ inline mixtureSoaveRedlichKwong operator+ mixtureComponents.setSize(2*srk1.numOfComp); } - //CL: Getting the new weigths and mixtureComponents lists, + //CL: Getting the new weigths and mixtureComponents lists, //CL: Saving the object pointer and weigths of srk2 (which is @ mixtureComponents[0] and weigths[0]) at the numOfComp's value of the new object weigths[srk1.numOfComp]=srk2.weigths[0]; mixtureComponents[srk1.numOfComp]=srk2.mixtureComponents[0]; @@ -485,7 +485,7 @@ inline mixtureSoaveRedlichKwong operator* //CL: saving the "concentraction" of the component of the mixture in the vector weights //CL: saved at the Position "numOfComp-1" DynamicList weigths=srk.weigths; - weigths[srk.numOfComp-1]=s*srk.nMoles(); + weigths[srk.numOfComp-1]=s*srk.nMoles(); return mixtureSoaveRedlichKwong(s*static_cast(srk), srk.numOfComp, weigths, srk.mixtureComponents,srk.a0_,srk.b_,srk.Tcrit_,srk.n_,srk.rhostd_, srk.rhoMin_, srk.rhoMax_); diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C index c5e15ca52..6da4a239f 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.C @@ -28,7 +28,7 @@ Description Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -81,14 +81,14 @@ pengRobinson::pengRobinson(const dictionary& dict) rhoMin_(dict.subDict("equationOfState").lookupOrDefault("rhoMin",1e-3)), rhoMax_(dict.subDict("equationOfState").lookupOrDefault("rhoMax",1500)), a0_(0.457235*pow(this->RR(),2)*pow(Tcrit_,2)/pcrit_), - b_(0.077796*this->RR()*Tcrit_/pcrit_), + b_(0.077796*this->RR()*Tcrit_/pcrit_), n_(0.37464+1.54226*azentricFactor_-0.26992*pow(azentricFactor_,2)), - TSave(0.0), + TSave(0.0), b2_(pow(b_,2)), b3_(pow(b_,3)), b4_(pow(b_,4)), b5_(pow(b_,5)), - rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) + rhostd_(this->rho(Pstd,Tstd,Pstd/(Tstd*this->R()))) {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -111,7 +111,7 @@ void Foam::pengRobinson::write(Ostream& os) const Ostream& operator<<(Ostream& os, const pengRobinson& pr) { - os << static_cast(pr)<< token::SPACE + os << static_cast(pr)<< token::SPACE << pr.pcrit_ << tab<< pr.Tcrit_<< tab << pr.azentricFactor_; os.check("Ostream& operator<<(Ostream& os, const pengRobinson& st)"); diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H index c44c93413..fc0d4e1ba 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinson.H @@ -42,7 +42,7 @@ SourceFiles Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -72,11 +72,11 @@ class pengRobinson protected: // Protected data scalar pcrit_; - scalar Tcrit_; + scalar Tcrit_; scalar azentricFactor_; //-Peng Robinson factors - scalar n_; + scalar n_; scalar a0_; mutable scalar b_; @@ -104,10 +104,10 @@ protected: //Protected functions //CL: function updates the coefficients (aSave, daSave, d2aSave) - inline void updateModelCoefficients(const scalar T) const; + inline void updateModelCoefficients(const scalar T) const; public: - + // Constructors @@ -163,33 +163,33 @@ public: //CL: Equation of state inline scalar p(const scalar rho, const scalar T) const; - //CL: first order derivatives + //CL: first order derivatives inline scalar dpdv(const scalar rho,const scalar T) const; inline scalar dpdT(const scalar rho, const scalar T) const; inline scalar dvdT(const scalar rho,const scalar T) const; - inline scalar dvdp(const scalar rho, const scalar T) const; + inline scalar dvdp(const scalar rho, const scalar T) const; inline scalar isobarExpCoef ( const scalar rho, const scalar T - ) const; + ) const; inline scalar isothermalCompressiblity ( const scalar rho, const scalar T - ) const; + ) const; //CL: Used for cv inline scalar integral_d2pdT2_dv - ( + ( const scalar rho, const scalar T - ) const ; + ) const ; //CL: second order derivatives, not Used At The Moment inline scalar d2pdv2(const scalar rho,const scalar T) const; @@ -202,11 +202,11 @@ public: //CL: Used for internal Energy inline scalar integral_p_dv(const scalar rho,const scalar T) const; - + //CL: Used for Entropy inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; - //- Return density [kg/m^3] + //- Return density [kg/m^3] // rho0 is the starting point of the newton solver used to calculate rho inline scalar rho ( diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H index f471b90ad..01a501d97 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/pengRobinson/pengRobinsonI.H @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -42,11 +42,11 @@ namespace Foam // Construct from components inline pengRobinson::pengRobinson ( - const specie& sp + const specie& sp ) : specie(sp), - TSave(0) + TSave(0) {} @@ -107,15 +107,15 @@ inline scalar pengRobinson::a(const scalar T)const { //CL: check if a has already been calculated for this temperature if(TSave==T) - { - return aSave; + { + return aSave; } //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) else { updateModelCoefficients(T); return aSave; - } + } } @@ -125,14 +125,14 @@ inline scalar pengRobinson::dadT(const scalar T)const // check if a has already been calculated for this temperature if(TSave==T) { - return daSave; + return daSave; } //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) else { updateModelCoefficients(T); return daSave; - } + } } @@ -142,14 +142,14 @@ inline scalar pengRobinson::d2adT2(const scalar T)const // check if a has already been calculated for this temperature if(TSave==T) { - return d2aSave; + return d2aSave; } //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) else { updateModelCoefficients(T); return d2aSave; - } + } } @@ -191,16 +191,16 @@ inline scalar pengRobinson::b5()const return b5_; } -//returns the pressure for a given density and temperature +//returns the pressure for a given density and temperature inline scalar pengRobinson::p(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - + return this->RR()*T/(Vm-b())-a(T)/(pow(Vm,2)+2*b()*Vm-b2()); } -//Real deviative dp/dv at constant temperature +//Real deviative dp/dv at constant temperature //(molar values) inline scalar pengRobinson::dpdv(const scalar rho, const scalar T) const { @@ -223,7 +223,7 @@ inline scalar pengRobinson::dpdv(const scalar rho, const scalar T) const } -//Real deviative dp/dT at constant molar volume +//Real deviative dp/dT at constant molar volume //(molar values) inline scalar pengRobinson::dpdT(const scalar rho, const scalar T) const { @@ -233,7 +233,7 @@ inline scalar pengRobinson::dpdT(const scalar rho, const scalar T) const } -//Real deviative dv/dT at constant pressure +//Real deviative dv/dT at constant pressure //by using implicit differentiation //(molar values) inline scalar pengRobinson::dvdT(const scalar rho,const scalar T) const @@ -243,7 +243,7 @@ inline scalar pengRobinson::dvdT(const scalar rho,const scalar T) const //(molar values) -inline scalar pengRobinson::dvdp(const scalar rho,const scalar T) const +inline scalar pengRobinson::dvdp(const scalar rho,const scalar T) const { return 1/this->dpdv(rho,T); } @@ -306,10 +306,10 @@ inline scalar pengRobinson::d2pdv2(const scalar rho,const scalar T) const //(molar values) -//using second order implicit differentiation +//using second order implicit differentiation inline scalar pengRobinson::d2vdT2(const scalar rho, const scalar T) const { - return + return -( pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T) + pow(this->dpdv(rho,T),2)*this->d2pdT2(rho,T) @@ -325,7 +325,7 @@ inline scalar pengRobinson::d2pdvdT(const scalar rho, const scalar T) const scalar Vm = this->W()/rho; scalar Vm2 = Vm*Vm; scalar Vm3 = Vm*Vm*Vm; - + return( 2*dadT(T)* ( @@ -341,9 +341,9 @@ inline scalar pengRobinson::d2pdvdT(const scalar rho, const scalar T) const } -// the result of this intergal is needed for the nasa based cp polynomial +// the result of this intergal is needed for the nasa based cp polynomial //(molar values) -inline scalar pengRobinson::integral_d2pdT2_dv(const scalar rho,const scalar T) const +inline scalar pengRobinson::integral_d2pdT2_dv(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; @@ -364,7 +364,7 @@ inline scalar pengRobinson::isobarExpCoef(const scalar rho,const scalar T) cons inline scalar pengRobinson::isothermalCompressiblity(const scalar rho,const scalar T) const { return this->isobarExpCoef(rho, T)/this->dpdT(rho, T); - //CL: also possible + //CL: also possible //CL: return -this->dvdp(rho,T)*rho/this->W(); } @@ -401,7 +401,7 @@ inline scalar pengRobinson::rho( )/pow(2,i); i++; - if (i>8) + if (i>8) { //CL: using bisection methode as backup, //CL: solution must be between rho=0.001 to rho=1500; @@ -416,7 +416,7 @@ inline scalar pengRobinson::rho( if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) { rho1=rho3; - } + } else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) { rho2=rho3; @@ -430,7 +430,7 @@ inline scalar pengRobinson::rho( { molarVolume=this->W()/rho3; molarVolumePrevIteration=this->W()/rho3; - break; + break; } else { @@ -460,15 +460,15 @@ inline scalar pengRobinson::rho( } -//- Return density [kg/m^3]on +//- Return density [kg/m^3]on inline scalar pengRobinson::rho(const scalar p,const scalar T) const { // using perfect gas equation as starting point - return rho(p,T,p/(this->R()*T)); + return rho(p,T,p/(this->R()*T)); } -//- Return compressibility drho/dp at T=constant [s^2/m^2] +//- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar pengRobinson::psi(const scalar rho, const scalar T) const { return -this->dvdp(rho,T)*pow(rho,2)/this->W(); diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C index d6e51bf1c..938cec729 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.C @@ -28,7 +28,7 @@ Description Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -58,7 +58,7 @@ redlichKwong::redlichKwong(Istream& is) rhoMin_(1e-3), // Starting GUESS for the density by ideal gas law rhostd_(this->rho(this->Pstd(), this->Tstd(), this->Pstd()/(this->Tstd()*this->R()))) -{ +{ is.check("redlichKwong::redlichKwong(Istream& is)"); } //CL: Constructed needed in OpenFOAM 2.x.x @@ -81,7 +81,7 @@ redlichKwong::redlichKwong(const dictionary& dict) b3_(pow(b_,3)), b5_(pow(b_,5)), // Starting GUESS for the density by ideal gas law - rhostd_(this->rho(Pstd, Tstd, Pstd/(Tstd*this->R()))) + rhostd_(this->rho(Pstd, Tstd, Pstd/(Tstd*this->R()))) {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -104,7 +104,7 @@ void Foam::redlichKwong::write(Ostream& os) const Ostream& operator<<(Ostream& os, const redlichKwong& rk) { - os << static_cast(rk)<< token::SPACE + os << static_cast(rk)<< token::SPACE << rk.pcrit_ << tab<< rk.Tcrit_; os.check("Ostream& operator<<(Ostream& os, const redlichKwong& st)"); diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H index 303b47c46..4c8ef580d 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwong.H @@ -35,7 +35,7 @@ SourceFiles Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -65,7 +65,7 @@ protected: // Protected data scalar pcrit_; - scalar Tcrit_; + scalar Tcrit_; //-Redlich Kwong factors mutable scalar a_; @@ -84,7 +84,7 @@ protected: mutable scalar rhostd_; public: - + // Constructors //- Construct from components @@ -127,22 +127,22 @@ public: inline scalar b5()const; - //first order derivatives + //first order derivatives inline scalar dpdv(const scalar rho, const scalar T) const; inline scalar dpdT(const scalar rho, const scalar T) const; inline scalar dvdT(const scalar rho, const scalar T) const; - inline scalar dvdp(const scalar rho, const scalar T) const; + inline scalar dvdp(const scalar rho, const scalar T) const; - inline scalar isobarExpCoef(const scalar rho, const scalar T) const; + inline scalar isobarExpCoef(const scalar rho, const scalar T) const; inline scalar isothermalCompressiblity ( const scalar rho, const scalar T - ) const; + ) const; // Used for cv inline scalar integral_d2pdT2_dv @@ -152,7 +152,7 @@ public: ) const; //Used for internal Energy - inline scalar integral_p_dv(const scalar rho, const scalar T) const; + inline scalar integral_p_dv(const scalar rho, const scalar T) const; // Used for Entropy inline scalar integral_dpdT_dv(const scalar rho, const scalar T) const; @@ -177,7 +177,7 @@ public: inline scalar rho(const scalar p, const scalar T) const; - //- Return compressibility drho/dp at T=constant [s^2/m^2] + //- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar psi(const scalar rho, const scalar T) const; //- Return compression factor [] @@ -198,7 +198,7 @@ public: // Member operators inline void operator+=(const redlichKwong&); -/* +/* inline void operator-=(const redlichKwong&); inline void operator*=(const scalar); */ diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H index 4cc6f16c0..d27532a00 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/redlichKwong/redlichKwongI.H @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -114,15 +114,15 @@ inline scalar redlichKwong::b5()const -//returns the pressure for a given density and temperature +//returns the pressure for a given density and temperature inline scalar redlichKwong::p(const scalar rho, const scalar T) const { - scalar Vm = this->W()/rho; + scalar Vm = this->W()/rho; return this->RR()*T/(Vm - b_) - a_/(sqrt(T)*Vm*(Vm + b_)); } -//Real deviative dp/dv at constant temperature +//Real deviative dp/dv at constant temperature //(molar values) inline scalar redlichKwong::dpdv(const scalar rho, const scalar T) const { @@ -135,7 +135,7 @@ inline scalar redlichKwong::dpdv(const scalar rho, const scalar T) const } -//Real deviative dp/dT at constant molar volume +//Real deviative dp/dT at constant molar volume //(molar values) inline scalar redlichKwong::dpdT(const scalar rho, const scalar T) const { @@ -144,7 +144,7 @@ inline scalar redlichKwong::dpdT(const scalar rho, const scalar T) const } -//Real deviative dv/dT at constant pressure +//Real deviative dv/dT at constant pressure //using implicit differentiation //(molar values) inline scalar redlichKwong::dvdT(const scalar rho, const scalar T) const @@ -153,9 +153,9 @@ inline scalar redlichKwong::dvdT(const scalar rho, const scalar T) const } -//Real deviative dv/dp at constant temperature +//Real deviative dv/dp at constant temperature //(molar values) -inline scalar redlichKwong::dvdp(const scalar rho, const scalar T) const +inline scalar redlichKwong::dvdp(const scalar rho, const scalar T) const { return 1/this->dpdv(rho,T); } @@ -224,10 +224,10 @@ inline scalar redlichKwong::d2pdv2(const scalar rho, const scalar T) const //(molar values) -//using second Order implicit differentiation +//using second Order implicit differentiation inline scalar redlichKwong::d2vdT2(const scalar rho, const scalar T) const { - return + return -( pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T) + pow(this->dpdv(rho,T),2)*this->d2pdT2(rho,T) @@ -242,7 +242,7 @@ inline scalar redlichKwong::d2pdvdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; scalar Vm2 = Vm*Vm; - + return -(0.5*( a_*(b3() - 3*b_*Vm2 + 2*pow(Vm,3)) @@ -252,13 +252,13 @@ inline scalar redlichKwong::d2pdvdT(const scalar rho, const scalar T) const } -// the result of this intergal is needed for the nasa based cp polynomial +// the result of this intergal is needed for the nasa based cp polynomial //(molar values) inline scalar redlichKwong::integral_d2pdT2_dv ( const scalar rho, const scalar T -) const +) const { scalar Vm = this->W()/rho; return 0.75*a_*log(b_ + Vm)/(pow(T,2.5)*b_) @@ -299,7 +299,7 @@ inline scalar redlichKwong::rho const scalar rho0 ) const { - + scalar molarVolumePrevIteration; scalar molarVolume; label iter=0; @@ -313,7 +313,7 @@ inline scalar redlichKwong::rho do { molarVolumePrevIteration= molarVolume; - + label i=0; do { @@ -325,7 +325,7 @@ inline scalar redlichKwong::rho )/pow(2,i); i++; - if (i>8) + if (i>8) { //CL: using bisection methode as backup, //CL: solution must be between rhoMin_ to rhoMax @@ -339,7 +339,7 @@ inline scalar redlichKwong::rho if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) { rho1=rho3; - } + } else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) { rho2=rho3; @@ -353,7 +353,7 @@ inline scalar redlichKwong::rho { molarVolume=this->W()/rho3; molarVolumePrevIteration=this->W()/rho3; - break; + break; } else { @@ -383,7 +383,7 @@ inline scalar redlichKwong::rho } -//- Return density [kg/m^3]on +//- Return density [kg/m^3]on inline scalar redlichKwong::rho(const scalar p, const scalar T) const { // using perfect gas equation as starting point diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C index 2dae0bbb0..ceda21b58 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwong.C @@ -28,7 +28,7 @@ Description Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -82,7 +82,7 @@ soaveRedlichKwong::soaveRedlichKwong(const dictionary& dict) a0_(0.42747*pow(this->RR(),2)*pow(Tcrit_,2)/(pcrit_)), b_(0.08664*this->RR()*Tcrit_/pcrit_), n_(0.48508+1.55171*azentricFactor_-0.15613*pow(azentricFactor_,2)), - TSave(0.0), + TSave(0.0), b2_(pow(b_,2)), b3_(pow(b_,3)), b5_(pow(b_,5)), @@ -110,7 +110,7 @@ void Foam::soaveRedlichKwong::write(Ostream& os) const Ostream& operator<<(Ostream& os, const soaveRedlichKwong& srk) { - os << static_cast(srk)<< token::SPACE + os << static_cast(srk)<< token::SPACE << srk.pcrit_ << tab<< srk.Tcrit_< New(Istream& is); - + // Member functions inline scalar rhostd()const; @@ -159,46 +159,46 @@ public: //CL: Equation of state inline scalar p(const scalar rho, const scalar T) const; - //CL: first order derivatives + //CL: first order derivatives inline scalar dpdv(const scalar rho,const scalar T) const; inline scalar dpdT(const scalar rho, const scalar T) const; inline scalar dvdT(const scalar rho,const scalar T) const; - inline scalar dvdp(const scalar rho, const scalar T) const; + inline scalar dvdp(const scalar rho, const scalar T) const; inline scalar isobarExpCoef ( const scalar rho, const scalar T - ) const; + ) const; inline scalar isothermalCompressiblity ( const scalar rho, const scalar T - ) const; + ) const; //CL: Used for cv - inline scalar integral_d2pdT2_dv(const scalar rho,const scalar T) const ; + inline scalar integral_d2pdT2_dv(const scalar rho,const scalar T) const ; //CL: second order derivatives, not Used At The Moment - inline scalar d2pdv2(const scalar rho,const scalar T) const; + inline scalar d2pdv2(const scalar rho,const scalar T) const; - inline scalar d2pdT2(const scalar rho,const scalar T) const; + inline scalar d2pdT2(const scalar rho,const scalar T) const; - inline scalar d2pdvdT(const scalar rho,const scalar T) const; + inline scalar d2pdvdT(const scalar rho,const scalar T) const; - inline scalar d2vdT2(const scalar rho,const scalar T) const; + inline scalar d2vdT2(const scalar rho,const scalar T) const; //CL: Used for internal Energy - inline scalar integral_p_dv(const scalar rho,const scalar T) const; + inline scalar integral_p_dv(const scalar rho,const scalar T) const; //Used for Entropy - inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; + inline scalar integral_dpdT_dv(const scalar rho,const scalar T) const; - //- Return density [kg/m^3] + //- Return density [kg/m^3] // rho0 is the starting point of the newton solver used to calculate rho inline scalar rho ( @@ -209,7 +209,7 @@ public: inline scalar rho(const scalar p,const scalar T) const; - //- Return compressibility drho/dp at T=constant [s^2/m^2] + //- Return compressibility drho/dp at T=constant [s^2/m^2] inline scalar psi(const scalar rho, const scalar T) const; //- Return compression factor [] @@ -232,7 +232,7 @@ public: inline void operator+=(const soaveRedlichKwong&); -/* +/* inline void operator-=(const soaveRedlichKwong&); inline void operator*=(const scalar); diff --git a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H index f79948e19..e03905652 100755 --- a/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H +++ b/src/thermophysicalModels/specie/equationOfState/cubicEquationOfState/soaveRedlichKwong/soaveRedlichKwongI.H @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany @@ -43,11 +43,11 @@ namespace Foam // Construct from components inline soaveRedlichKwong::soaveRedlichKwong ( - const specie& sp + const specie& sp ) : specie(sp), - TSave(0) + TSave(0) {} @@ -107,15 +107,15 @@ inline scalar soaveRedlichKwong::a(const scalar T)const { //CL: check if a has already been calculated for this temperature if(TSave==T) - { - return aSave; + { + return aSave; } //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) else { updateModelCoefficients(T); return aSave; - } + } } @@ -125,14 +125,14 @@ inline scalar soaveRedlichKwong::dadT(const scalar T)const // check if a has already been calculated for this temperature if(TSave==T) { - return daSave; + return daSave; } //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) else { updateModelCoefficients(T); return daSave; - } + } } @@ -142,14 +142,14 @@ inline scalar soaveRedlichKwong::d2adT2(const scalar T)const // check if a has already been calculated for this temperature if(TSave==T) { - return d2aSave; + return d2aSave; } //CL: If not, recalculate a(T), dadT(T) and d2adT2(T) else { updateModelCoefficients(T); return d2aSave; - } + } } @@ -187,12 +187,12 @@ inline scalar soaveRedlichKwong::b5()const } -//returns the pressure for a given density and temperature +//returns the pressure for a given density and temperature inline scalar soaveRedlichKwong::p(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - return + return ( this->RR()*T/(Vm-b_) -a(T)/(Vm*(Vm+b_)) @@ -200,29 +200,29 @@ inline scalar soaveRedlichKwong::p(const scalar rho,const scalar T) const } -//Real deviative dp/dv at constant temperature +//Real deviative dp/dv at constant temperature //(molar values) inline scalar soaveRedlichKwong::dpdv(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; scalar Vm2 = Vm*Vm; - return + return ( a(T)*(b3()-3*b_*Vm2+2*pow(Vm,3)) -this->RR()*T*Vm2*(b2()+2*b_*Vm+Vm2) ) - /(Vm2*pow(b_+Vm,2)*pow(b_-Vm,2)); + /(Vm2*pow(b_+Vm,2)*pow(b_-Vm,2)); } -//Real deviative dp/dT at constant molar volume +//Real deviative dp/dT at constant molar volume //(molar values) inline scalar soaveRedlichKwong::dpdT(const scalar rho, const scalar T) const { scalar Vm = this->W()/rho; - - return + + return ( this->RR()/(Vm-b_) -dadT(T)/(Vm*(Vm+b_)) @@ -239,20 +239,20 @@ inline scalar soaveRedlichKwong::dvdT(const scalar rho,const scalar T) const } -//Real deviative dv/dp at constant temperature +//Real deviative dv/dp at constant temperature //(molar values) -inline scalar soaveRedlichKwong::dvdp(const scalar rho,const scalar T) const +inline scalar soaveRedlichKwong::dvdp(const scalar rho,const scalar T) const { return 1/this->dpdv(rho,T); } -//needed to calculate the internal energy +//needed to calculate the internal energy //(molar values) inline scalar soaveRedlichKwong::integral_p_dv(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; - + return this->RR()*T*log(Vm-b_)+a(T)*log(b_+Vm)/b_-a(T)*log(Vm)/b_; } @@ -276,14 +276,14 @@ inline scalar soaveRedlichKwong::d2pdT2(const scalar rho,const scalar T) const } -//(molar values) +//(molar values) inline scalar soaveRedlichKwong::d2pdv2(const scalar rho,const scalar T) const { scalar Vm = this->W()/rho; scalar Vm2 = Vm*Vm; scalar Vm3 = Vm*Vm*Vm; - return + return 2* ( a(T)* @@ -295,15 +295,15 @@ inline scalar soaveRedlichKwong::d2pdv2(const scalar rho,const scalar T) const b3()+3*b2()*Vm+3*b_*Vm2+Vm3 ) ) - /(Vm3*pow(b_+Vm,3)*pow(Vm-b_,3)); + /(Vm3*pow(b_+Vm,3)*pow(Vm-b_,3)); } //(molar values) -// using second Order implicit differentiation +// using second Order implicit differentiation inline scalar soaveRedlichKwong::d2vdT2(const scalar rho, const scalar T) const { - return + return -( pow(this->dpdT(rho,T),2)*this->d2pdv2(rho,T) + pow(this->dpdv(rho,T),2)*this->d2pdT2(rho,T) @@ -319,19 +319,19 @@ inline scalar soaveRedlichKwong::d2pdvdT(const scalar rho, const scalar T) const scalar Vm = this->W()/rho; scalar Vm2 = Vm*Vm; - return + return ( dadT(T)*(b3()-3*b_*Vm2+2*pow(Vm,3)) -this->RR()*Vm2*(b2()+2*b_*Vm+Vm2) ) - /(Vm2*pow(b_+Vm,2)*pow(b_-Vm,2)); + /(Vm2*pow(b_+Vm,2)*pow(b_-Vm,2)); } -// the result of this intergal is needed for the nasa based cp polynomial +// the result of this intergal is needed for the nasa based cp polynomial //(molar values) -inline scalar soaveRedlichKwong::integral_d2pdT2_dv(const scalar rho,const scalar T) const -{ +inline scalar soaveRedlichKwong::integral_d2pdT2_dv(const scalar rho,const scalar T) const +{ scalar Vm = this->W()/rho; return d2adT2(T)*log(b_+Vm)/b_-d2adT2(T)*log(Vm)/b_; @@ -361,7 +361,7 @@ inline scalar soaveRedlichKwong::rho( const scalar rho0 ) const { - + scalar molarVolumePrevIteration; scalar molarVolume; label iter=0; @@ -375,7 +375,7 @@ inline scalar soaveRedlichKwong::rho( do { molarVolumePrevIteration= molarVolume; - + label i=0; do { @@ -386,7 +386,7 @@ inline scalar soaveRedlichKwong::rho( )/pow(2,i); i++; - if (i>8) + if (i>8) { //CL: using bisection methode as backup, //CL: solution must be between rho=0.001 to rho=1500; @@ -401,11 +401,11 @@ inline scalar soaveRedlichKwong::rho( if ((f2 < 0 && f3 > 0) || (f2 > 0 && f3 < 0)) { rho1=rho3; - } + } else if ((f1 < 0 && f3 > 0)||(f1 > 0 && f3 < 0)) { rho2=rho3; - } + } else { rho2=(rho2 + rho3)/2; @@ -415,7 +415,7 @@ inline scalar soaveRedlichKwong::rho( { molarVolume=this->W()/rho3; molarVolumePrevIteration=this->W()/rho3; - break; + break; } else { @@ -444,7 +444,7 @@ inline scalar soaveRedlichKwong::rho( return this->W()/molarVolume; } -//- Return density [kg/m^3]on +//- Return density [kg/m^3]on inline scalar soaveRedlichKwong::rho(const scalar p,const scalar T) const { //CL: using perfect gas equation as starting point diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C index 06b2b9eee..72059a67e 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H index 93581a14b..342e1772b 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomial.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -26,13 +26,13 @@ Class Foam::nasaHeatCapacityPolynomial Description - Nasa Heat Capacity Polynomial for perfect Gas (7.order polynominal) --> freely available for many fluids - --> paper title: NASA Glenn Coefficients for Calculating Thermodynamic Properties of Individual Species + Nasa Heat Capacity Polynomial for perfect Gas (7.order polynominal) --> freely available for many fluids + --> paper title: NASA Glenn Coefficients for Calculating Thermodynamic Properties of Individual Species templated into the equationOfState -> uses the equation of state to calculate all real Gas properties like Enthalpy, Entropy ... -> can not be used with the perfectGas equation of state - + Equations for the real gas correction: Have a look at thermodnamics books e.g. Thermodynamics: An Engineering Approch, 5 Edition, Chapter 12 SourceFiles @@ -42,7 +42,7 @@ SourceFiles Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -174,7 +174,7 @@ public: inline static autoPtr New(Istream& is); // Member Functions - + //- perfect Gas Enthalpy [J/kmol] inline scalar h0(const scalar T) const; diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H index 602583402..e4d1187bc 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/nasaHeatCapacityPolynomial/nasaHeatCapacityPolynomialI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ @@ -62,7 +62,7 @@ inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolyno s0_std(s0(this->Tstd())), integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd())), integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd())), - cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd())) + cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd())) {} //- Construct from components @@ -97,7 +97,7 @@ inline Foam::nasaHeatCapacityPolynomial::nasaHeatCapacityPolyno s0_std(s0_std_), integral_p_dv_std(integral_p_dv_std_), integral_dpdT_dv_std(integral_dpdT_dv_std_), - cp_std(cp_std_) + cp_std(cp_std_) {} @@ -149,14 +149,14 @@ Foam::nasaHeatCapacityPolynomial::New(Istream& is) // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // //used to calculate the internal energy -//perfect gas enthalpy +//perfect gas enthalpy template inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h0 ( const scalar T ) const { - return + return this->RR()*T* ( -this->a1_*pow(T,-2) @@ -171,7 +171,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h0 //used to calculate the internal energy -//perfect gas internal energy +//perfect gas internal energy template inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e0 ( @@ -181,7 +181,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e0 return this->h0(T) - this->RR()*T; } // used to calculate the entropy -// perfect gas entropy +// perfect gas entropy template inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s0 ( @@ -189,7 +189,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s0 ) const { return this->RR()* - ( + ( this->a1_*(-1)/(2*pow(T,2)) -this->a2_/T+this->a3_*log(T) +this->a4_*T @@ -241,14 +241,14 @@ template inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp ( const scalar rho, - const scalar T + const scalar T ) const { - // Problem --> dpdv(rho,T) is =0 at some points within the vapour dome. To increase stability, (dp/dv) has to be limited + // Problem --> dpdv(rho,T) is =0 at some points within the vapour dome. To increase stability, (dp/dv) has to be limited // cp can be negative within the vapor dome. To avoid this nonphysical result, the absolute value is used. - // within the vapourdome and at the critical point, cp increases to very high values --> infinity, - // this would decrease the stability, so cp will be limited to 20 times the cp @ STD - return + // within the vapourdome and at the critical point, cp increases to very high values --> infinity, + // this would decrease the stability, so cp will be limited to 20 times the cp @ STD + return min ( cp_std*20, @@ -258,7 +258,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp -T*pow((this->dpdT(rho, T)),2) /min(this->dpdv(rho, T),-1) ) - ); + ); } // this function is needed to get cp @ STD (without the limit imposed in the function above), @@ -267,10 +267,10 @@ template inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cp_nonLimited ( const scalar rho, - const scalar T + const scalar T ) const { - return fabs(this->cv(rho,T)-T*pow((this->dpdT(rho, T)),2)/min(this->dpdv(rho, T),-1)); + return fabs(this->cv(rho,T)-T*pow((this->dpdT(rho, T)),2)/min(this->dpdv(rho, T),-1)); } @@ -281,7 +281,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cv ( const scalar rho, const scalar T - + ) const { return this->cv0(T)+T*this->integral_d2pdT2_dv(rho, T); @@ -293,9 +293,9 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::cv //function to calculate real gas enthalpy template inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h -( +( const scalar rho, - const scalar T + const scalar T ) const { return this->e(rho,T)+this->p(rho,T)/rho*this->W()-this->Pstd()/this->rhostd()*this->W(); @@ -307,12 +307,12 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::h // equation: du= cv0 dT +[T*dp/dT -p]dv template inline Foam::scalar Foam::nasaHeatCapacityPolynomial::e -( +( const scalar rho, - const scalar T + const scalar T ) const { - return + return ( -this->Tstd()*integral_dpdT_dv_std +integral_p_dv_std @@ -332,7 +332,7 @@ inline Foam::scalar Foam::nasaHeatCapacityPolynomial::s ( const scalar rho, const scalar T - + ) const { return -integral_dpdT_dv_std @@ -422,7 +422,7 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator+ np1.nMoles()/eofs.nMoles()*np1.a5_ + np2.nMoles()/eofs.nMoles()*np2.a5_, np1.nMoles()/eofs.nMoles()*np1.a6_ - + np2.nMoles()/eofs.nMoles()*np2.a6_, + + np2.nMoles()/eofs.nMoles()*np2.a6_, np1.nMoles()/eofs.nMoles()*np1.a7_ + np2.nMoles()/eofs.nMoles()*np2.a7_ ); @@ -456,7 +456,7 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator- np1.nMoles()/eofs.nMoles()*np1.a5_ - np2.nMoles()/eofs.nMoles()*np2.a5_, np1.nMoles()/eofs.nMoles()*np1.a6_ - - np2.nMoles()/eofs.nMoles()*np2.a6_, + - np2.nMoles()/eofs.nMoles()*np2.a6_, np1.nMoles()/eofs.nMoles()*np1.a7_ - np2.nMoles()/eofs.nMoles()*np2.a7_ ); @@ -470,8 +470,8 @@ inline Foam::nasaHeatCapacityPolynomial Foam::operator* const nasaHeatCapacityPolynomial& np ) { - //CL: values at STD don't need to be recalculated, - //CL: therefore, providing the values in the constructor + //CL: values at STD don't need to be recalculated, + //CL: therefore, providing the values in the constructor return nasaHeatCapacityPolynomial ( s*static_cast(np), diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C index 6b9c1e255..56e1ea83d 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany \*---------------------------------------------------------------------------*/ diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H index 352a4dd4c..faee6dd19 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,9 +27,9 @@ Class Description - This is an subversion of the specieThermo function. While the "orginal" specieThermo function + This is an subversion of the specieThermo function. While the "orginal" specieThermo function is only valid for perfect Gases, this function is valid for real gases. - + Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the template argument type thermo. All other properties are derived from these primitive functions. @@ -43,7 +43,7 @@ SourceFiles Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany @@ -157,7 +157,7 @@ public: // Calculate and return derived properties // (These functions need not provided in derived types) - //CL: isentropic expansion factor "gamma" (heat capacity ratio for perfect gas) + //CL: isentropic expansion factor "gamma" (heat capacity ratio for perfect gas) inline scalar gamma(const scalar T, const scalar rho) const; //- Sensible internal energy [J/kmol] @@ -201,16 +201,16 @@ public: //CL: Other variables - //- Return compressibility drho/dp at h=constant [s^2/m^2] + //- Return compressibility drho/dp at h=constant [s^2/m^2] inline scalar psiH(const scalar rho, const scalar T) const; - //- Return compressibility drho/dp at e=constant [s^2/m^2] + //- Return compressibility drho/dp at e=constant [s^2/m^2] inline scalar psiE(const scalar rho, const scalar T) const; - //- Return compressibility drho/dH at p=constant + //- Return compressibility drho/dH at p=constant inline scalar drhodH(const scalar rho, const scalar T) const; - //- Return compressibility drho/dE at p=constant + //- Return compressibility drho/dE at p=constant inline scalar drhodE(const scalar rho, const scalar T) const; // Energy->temperature inversion functions diff --git a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H index 926418e35..749f99af8 100755 --- a/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H +++ b/src/thermophysicalModels/specie/thermo/realGasThermo/realGasSpecieThermo/realGasSpecieThermoI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,7 @@ License Author Christian Lucas Institut für Thermodynamik -Technische Universität Braunschweig +Technische Universität Braunschweig Germany @@ -75,18 +75,18 @@ inline void Foam::realGasSpecieThermo::T i=0; do - { - //CL: using a stabilizing newton solver + { + //CL: using a stabilizing newton solver //CL: if the solve is diverging, the step is reduced until the solver converges - Tnew = Test - ((this->*F)(rho,Test) - f)/(this->*dFdT)(rho,Test)/(pow(2,i)); + Tnew = Test - ((this->*F)(rho,Test) - f)/(this->*dFdT)(rho,Test)/(pow(2,i)); i++; }while ( (i<20) && (( - mag((this->*F)(rho,Tnew) - f) - > + mag((this->*F)(rho,Tnew) - f) + > mag((this->*F)(rho,Test) - f) )) ); @@ -104,7 +104,7 @@ inline void Foam::realGasSpecieThermo::T } } while //CL: both fields must converge - ( + ( (mag(mag(Tnew) - mag(Test)) > Ttol) || (mag(mag(rho) - mag(rhoOld)) > rhotol) @@ -206,12 +206,12 @@ inline Foam::scalar Foam::realGasSpecieThermo::psiH ( const scalar rho, const scalar T - + ) const { scalar beta=this->isobarExpCoef(rho,T); - return + return -( (T*beta*beta-beta)/this->Cp(rho,T) -this->isothermalCompressiblity(rho,T)*rho @@ -225,14 +225,14 @@ inline Foam::scalar Foam::realGasSpecieThermo::psiE ( const scalar rho, const scalar T - + ) const { scalar V = 1/rho; scalar cp=this->Cp(rho,T); scalar beta=this->isobarExpCoef(rho,T); - return + return -( ( T*pow(beta,2)*V @@ -246,27 +246,27 @@ inline Foam::scalar Foam::realGasSpecieThermo::psiE ); } -//CL:- Returns drho/dH at p=constant +//CL:- Returns drho/dH at p=constant //CL:- using Bridgeman's Table template inline Foam::scalar Foam::realGasSpecieThermo::drhodH ( const scalar rho, const scalar T - + ) const { return -(rho*this->isobarExpCoef(rho,T))/this->Cp(rho,T); } -//CL:- Returns drho/dE at p=constant +//CL:- Returns drho/dE at p=constant //CL:- using Bridgeman's Table template inline Foam::scalar Foam::realGasSpecieThermo::drhodE ( const scalar rho, const scalar T - + ) const { scalar beta=this->isobarExpCoef(rho,T);