Line data Source code
1 : // EnergyPlus, Copyright (c) 1996-2024, The Board of Trustees of the University of Illinois,
2 : // The Regents of the University of California, through Lawrence Berkeley National Laboratory
3 : // (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge
4 : // National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other
5 : // contributors. All rights reserved.
6 : //
7 : // NOTICE: This Software was developed under funding from the U.S. Department of Energy and the
8 : // U.S. Government consequently retains certain rights. As such, the U.S. Government has been
9 : // granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable,
10 : // worldwide license in the Software to reproduce, distribute copies to the public, prepare
11 : // derivative works, and perform publicly and display publicly, and to permit others to do so.
12 : //
13 : // Redistribution and use in source and binary forms, with or without modification, are permitted
14 : // provided that the following conditions are met:
15 : //
16 : // (1) Redistributions of source code must retain the above copyright notice, this list of
17 : // conditions and the following disclaimer.
18 : //
19 : // (2) Redistributions in binary form must reproduce the above copyright notice, this list of
20 : // conditions and the following disclaimer in the documentation and/or other materials
21 : // provided with the distribution.
22 : //
23 : // (3) Neither the name of the University of California, Lawrence Berkeley National Laboratory,
24 : // the University of Illinois, U.S. Dept. of Energy nor the names of its contributors may be
25 : // used to endorse or promote products derived from this software without specific prior
26 : // written permission.
27 : //
28 : // (4) Use of EnergyPlus(TM) Name. If Licensee (i) distributes the software in stand-alone form
29 : // without changes from the version obtained under this License, or (ii) Licensee makes a
30 : // reference solely to the software portion of its product, Licensee must refer to the
31 : // software as "EnergyPlus version X" software, where "X" is the version number Licensee
32 : // obtained under this License and may not use a different name for the software. Except as
33 : // specifically required in this Section (4), Licensee shall not use in a company name, a
34 : // product name, in advertising, publicity, or other promotional activities any name, trade
35 : // name, trademark, logo, or other designation of "EnergyPlus", "E+", "e+" or confusingly
36 : // similar designation, without the U.S. Department of Energy's prior written consent.
37 : //
38 : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
39 : // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
40 : // AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
41 : // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
42 : // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
43 : // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
44 : // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
45 : // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
46 : // POSSIBILITY OF SUCH DAMAGE.
47 :
48 : // C++ Headers
49 : #include <cassert>
50 : #include <cstddef>
51 : #include <functional>
52 : #include <limits>
53 :
54 : // ObjexxFCL Headers
55 : #include <ObjexxFCL/Fmath.hh>
56 :
57 : // EnergyPlus Headers
58 : #include <EnergyPlus/Data/EnergyPlusData.hh>
59 : #include <EnergyPlus/DataIPShortCuts.hh>
60 : #include <EnergyPlus/FluidProperties.hh>
61 : #include <EnergyPlus/General.hh>
62 : #include <EnergyPlus/InputProcessing/InputProcessor.hh>
63 : #include <EnergyPlus/UtilityRoutines.hh>
64 :
65 : namespace EnergyPlus {
66 :
67 : namespace FluidProperties {
68 :
69 : // MODULE INFORMATION:
70 : // AUTHOR Mike Turner
71 : // DATE WRITTEN 10 December 99
72 : // MODIFIED Rick Strand (April 2000, May 2000)
73 : // Simon Rees (May, June 2002)
74 : // Rick Strand (June 2004)
75 : // Linda Lawrie (March 2008)
76 : // RE-ENGINEERED Rick Strand (April 2000, May 2000)
77 :
78 : // PURPOSE OF THIS MODULE:
79 : // This module contains subroutines which determine and return properties
80 : // of materials including enthalpy, quality, specific heat, and density.
81 : // The module uses InputProcessor to read the material type and the
82 : // associated charts from IN.IDF. The module is only as powerful as the
83 : // amount of data loaded into this file.
84 :
85 : // METHODOLOGY EMPLOYED:
86 : // The module will first check if the current refrigerant has been read
87 : // in yet. If not, it will get the data from IN.IDF and "store" it into
88 : // a set of variables. Any future iterations with that refrigerant will
89 : // simply retrieve the data from storage instead of reading from the .IDF
90 : // file again. After the data is made available, the module uses input
91 : // temperatures, pressures, and either quality or enthalpy to locate the
92 : // state point and choose the proper routine. Finally, it performs a
93 : // double interpolation between temperatures and pressures or qualities
94 : // which surround the point on a chart specified by the input conditions.
95 : // The program is designed to work on either side of or under the vapor
96 : // dome. This data can be added as needed.
97 : // Where properties are invalid at particular pressure/temperature points
98 : // in the data input file, zeros have to be inserted. This is necessary
99 : // as the data structures are rectangular. The zero values are used to detect
100 : // bounds of the data and issue appropriate warnings.
101 : // Properties of liquids (e.g. water) can be specified as glycol properties by
102 : // supplying the same data for concentrations of 0.0 and 1.0 only.
103 : // Temperature data has to be supplied in ascending order only.
104 :
105 : constexpr int DefaultNumGlyTemps(33); // Temperature dimension of default glycol data
106 : constexpr int DefaultNumGlyConcs(10); // Concentration dimension of default glycol data
107 : constexpr int DefaultNumSteamTemps(111); // Temperature dimension of default steam data.
108 : constexpr int DefaultNumSteamSuperheatedTemps(114); // Temperature dimension of default steam data.
109 : constexpr int DefaultNumSteamSuperheatedPressure(114); // Temperature dimension of default steam data.
110 :
111 : static constexpr std::array<Real64, DefaultNumGlyTemps> DefaultGlycolTemps = {
112 : -35.0, -30.0, -25.0, -20.0, -15.0, -10.0, -5.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0,
113 : 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 105.0, 110.0, 115.0, 120.0, 125.0}; // 33 total temperature
114 : // points
115 :
116 : inline int GlycolTempToTempIndex(Real64 Temp)
117 : {
118 : return (int)(Temp / 5.0) + ((Temp < 0.0) ? 6 : 7);
119 : }
120 :
121 : static constexpr std::array<Real64, DefaultNumGlyConcs> DefaultGlycolConcs = {
122 : 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}; // 10 total concentration points
123 :
124 : static constexpr std::array<Real64, DefaultNumGlyTemps> DefaultWaterCpData = {
125 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4217.0, 4198.0, 4191.0, 4185.0, 4181.0, 4179.0, 4180.0, 4180.0, 4180.0, 4180.0,
126 : 4181.0, 4183.0, 4185.0, 4188.0, 4192.0, 4196.0, 4200.0, 4203.0, 4208.0, 4213.0, 4218.0, 4223.0, 4228.0, 4233.0, 4238.0, 4243.0}; // in J/kg-K
127 :
128 : static constexpr std::array<Real64, DefaultNumGlyTemps> DefaultWaterViscData = {
129 : 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 1.7912e-3, 1.5183e-3, 1.306e-3, 1.1376e-3,
130 : 1.0016e-3, 0.8901e-3, 0.7974e-3, 0.7193e-3, 0.653e-3, 0.5961e-3, 0.5468e-3, 0.504e-3, 0.4664e-3, 0.4332e-3, 0.4039e-3,
131 : 0.3777e-3, 0.3543e-3, 0.3333e-3, 0.3144e-3, 0.2973e-3, 0.2817e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3}; // in Pa-s
132 :
133 : static constexpr std::array<Real64, DefaultNumGlyTemps> DefaultWaterRhoData = {
134 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 999.8, 999.9, 999.7, 999.1, 998.2, 997.0, 995.6, 994.0, 992.2, 990.2,
135 : 988.0, 985.7, 983.2, 980.5, 977.7, 974.8, 971.8, 968.6, 965.3, 961.9, 958.3, 0.0, 0.0, 0.0, 0.0, 0.0}; // in kg/m3
136 :
137 : static constexpr std::array<Real64, DefaultNumGlyTemps> DefaultWaterCondData = {
138 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.561, 0.5705, 0.58, 0.5893, 0.5984, 0.6072, 0.6155, 0.6233, 0.6306, 0.6373,
139 : 0.6436, 0.6492, 0.6543, 0.659, 0.6631, 0.6668, 0.67, 0.6728, 0.6753, 0.6773, 0.6791, 0.0, 0.0, 0.0, 0.0, 0.0}; // in W/mK
140 :
141 : // Ethylene Glycol Data: Specific Heat in J/(kg-k)
142 :
143 : static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs>
144 : DefaultEthGlyCpData =
145 : {
146 : {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4217.0, 4198.0, 4191.0, 4185.0,
147 : 4181.0, 4179.0, 4180.0, 4180.0, 4180.0, 4180.0, 4181.0, 4183.0, 4185.0, 4188.0, 4192.0,
148 : 4196.0, 4200.0, 4203.0, 4208.0, 4213.0, 4218.0, 4223.0, 4228.0, 4233.0, 4238.0, 4243.0}, // DefaultWaterCpData
149 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3937.0, 3946.0, 3954.0, 3963.0,
150 : 3972.0, 3981.0, 3989.0, 3998.0, 4007.0, 4015.0, 4024.0, 4033.0, 4042.0, 4050.0, 4059.0,
151 : 4068.0, 4077.0, 4085.0, 4094.0, 4103.0, 4112.0, 4120.0, 4129.0, 4138.0, 4147.0, 4155.0}, // Conc=0.1
152 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3757.0, 3769.0, 3780.0, 3792.0, 3803.0,
153 : 3815.0, 3826.0, 3838.0, 3849.0, 3861.0, 3872.0, 3884.0, 3895.0, 3907.0, 3918.0, 3930.0,
154 : 3941.0, 3953.0, 3964.0, 3976.0, 3987.0, 3999.0, 4010.0, 4022.0, 4033.0, 4045.0, 4056.0}, // Conc=0.2
155 : {0.0, 0.0, 0.0, 0.0, 0.0, 3560.0, 3574.0, 3589.0, 3603.0, 3617.0, 3631.0,
156 : 3645.0, 3660.0, 3674.0, 3688.0, 3702.0, 3716.0, 3730.0, 3745.0, 3759.0, 3773.0, 3787.0,
157 : 3801.0, 3816.0, 3830.0, 3844.0, 3858.0, 3872.0, 3886.0, 3901.0, 3915.0, 3929.0, 3943.0}, // Conc=0.3
158 : {0.0, 0.0, 0.0, 3334.0, 3351.0, 3367.0, 3384.0, 3401.0, 3418.0, 3435.0, 3451.0,
159 : 3468.0, 3485.0, 3502.0, 3518.0, 3535.0, 3552.0, 3569.0, 3585.0, 3602.0, 3619.0, 3636.0,
160 : 3653.0, 3669.0, 3686.0, 3703.0, 3720.0, 3736.0, 3753.0, 3770.0, 3787.0, 3804.0, 3820.0}, // Conc=0.4
161 : {3068.0, 3088.0, 3107.0, 3126.0, 3145.0, 3165.0, 3184.0, 3203.0, 3223.0, 3242.0, 3261.0,
162 : 3281.0, 3300.0, 3319.0, 3339.0, 3358.0, 3377.0, 3396.0, 3416.0, 3435.0, 3454.0, 3474.0,
163 : 3493.0, 3512.0, 3532.0, 3551.0, 3570.0, 3590.0, 3609.0, 3628.0, 3647.0, 3667.0, 3686.0}, // Conc=0.5
164 : {2844.0, 2866.0, 2888.0, 2909.0, 2931.0, 2953.0, 2975.0, 2997.0, 3018.0, 3040.0, 3062.0,
165 : 3084.0, 3106.0, 3127.0, 3149.0, 3171.0, 3193.0, 3215.0, 3236.0, 3258.0, 3280.0, 3302.0,
166 : 3324.0, 3345.0, 3367.0, 3389.0, 3411.0, 3433.0, 3454.0, 3476.0, 3498.0, 3520.0, 3542.0}, // Conc=0.6
167 : {2612.0, 2636.0, 2660.0, 2685.0, 2709.0, 2733.0, 2757.0, 2782.0, 2806.0, 2830.0, 2854.0,
168 : 2878.0, 2903.0, 2927.0, 2951.0, 2975.0, 3000.0, 3024.0, 3048.0, 3072.0, 3097.0, 3121.0,
169 : 3145.0, 3169.0, 3193.0, 3218.0, 3242.0, 3266.0, 3290.0, 3315.0, 3339.0, 3363.0, 3387.0}, // Conc=0.7
170 : {2370.0, 2397.0, 2423.0, 2450.0, 2477.0, 2503.0, 2530.0, 2556.0, 2583.0, 2610.0, 2636.0,
171 : 2663.0, 2690.0, 2716.0, 2743.0, 2770.0, 2796.0, 2823.0, 2850.0, 2876.0, 2903.0, 2929.0,
172 : 2956.0, 2983.0, 3009.0, 3036.0, 3063.0, 3089.0, 3116.0, 3143.0, 3169.0, 3196.0, 3223.0}, // Conc=0.8
173 : {0.0, 0.0, 2177.0, 2206.0, 2235.0, 2264.0, 2293.0, 2322.0, 2351.0, 2380.0, 2409.0,
174 : 2438.0, 2467.0, 2496.0, 2525.0, 2554.0, 2583.0, 2612.0, 2641.0, 2670.0, 2699.0, 2728.0,
175 : 2757.0, 2786.0, 2815.0, 2844.0, 2873.0, 2902.0, 2931.0, 2960.0, 2989.0, 3018.0, 3047.0}} // Conc=0.9
176 : };
177 :
178 : // Ethylene Glycol Data: Viscosity in mPa-s
179 : static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs> DefaultEthGlyViscData = {
180 : {{0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 1.7912e-3, 1.5183e-3, 1.306e-3, 1.1376e-3,
181 : 1.0016e-3, 0.8901e-3, 0.7974e-3, 0.7193e-3, 0.653e-3, 0.5961e-3, 0.5468e-3, 0.504e-3, 0.4664e-3, 0.4332e-3, 0.4039e-3,
182 : 0.3777e-3, 0.3543e-3, 0.3333e-3, 0.3144e-3, 0.2973e-3, 0.2817e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3},
183 : {0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 2.08e-03, 1.79e-03, 1.56e-03, 1.37e-03,
184 : 1.21e-03, 1.08e-03, 9.7e-04, 8.8e-04, 8.0e-04, 7.3e-04, 6.7e-04, 6.2e-04, 5.7e-04, 5.3e-04, 5.0e-04,
185 : 4.7e-04, 4.4e-04, 4.1e-04, 3.9e-04, 3.7e-04, 3.5e-04, 3.3e-04, 3.2e-04, 3.0e-04, 2.9e-04, 2.8e-04}, // Conc = 0.1
186 : {0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 3.65e-03, 3.02e-03, 2.54e-03, 2.18e-03, 1.89e-03,
187 : 1.65e-03, 1.46e-03, 1.30e-03, 1.17e-03, 1.06e-03, 9.6e-04, 8.8e-04, 8.1e-04, 7.4e-04, 6.9e-04, 6.4e-04,
188 : 5.9e-04, 5.5e-04, 5.2e-04, 4.9e-04, 4.6e-04, 4.3e-04, 4.0e-04, 3.8e-04, 3.6e-04, 3.4e-04, 3.3e-04}, // Conc = 0.2
189 : {0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 6.19e-03, 5.03e-03, 4.15e-03, 3.48e-03, 2.95e-03, 2.53e-03,
190 : 2.20e-03, 1.92e-03, 1.69e-03, 1.50e-03, 1.34e-03, 1.21e-03, 1.09e-03, 9.9e-04, 9.0e-04, 8.3e-04, 7.6e-04,
191 : 7.0e-04, 6.5e-04, 6.0e-04, 5.6e-04, 5.2e-04, 4.9e-04, 4.6e-04, 4.3e-04, 4.1e-04, 3.8e-04, 3.6e-04}, // Conc = 0.3
192 : {0.0e+00, 0.0e+00, 0.0e+00, 1.575e-02, 1.174e-02, 9.06e-03, 7.18e-03, 5.83e-03, 4.82e-03, 4.04e-03, 3.44e-03,
193 : 2.96e-03, 2.57e-03, 2.26e-03, 1.99e-03, 1.77e-03, 1.59e-03, 1.43e-03, 1.29e-03, 1.17e-03, 1.06e-03, 9.7e-04,
194 : 8.9e-04, 8.2e-04, 7.6e-04, 7.0e-04, 6.5e-04, 6.0e-04, 5.6e-04, 5.3e-04, 4.9e-04, 4.6e-04, 4.3e-04}, // Conc = 0.4
195 : {6.693e-02, 4.398e-02, 3.050e-02, 2.207e-02, 1.653e-02, 1.274e-02, 1.005e-02, 8.09e-03, 6.63e-03, 5.50e-03, 4.63e-03,
196 : 3.94e-03, 3.39e-03, 2.94e-03, 2.56e-03, 2.26e-03, 2.00e-03, 1.78e-03, 1.59e-03, 1.43e-03, 1.29e-03, 1.17e-03,
197 : 1.07e-03, 9.8e-04, 8.9e-04, 8.2e-04, 7.6e-04, 7.0e-04, 6.5e-04, 6.0e-04, 5.6e-04, 5.3e-04, 4.9e-04}, // Conc = 0.5
198 : {9.344e-02, 6.525e-02, 4.675e-02, 3.428e-02, 2.569e-02, 1.962e-02, 1.525e-02, 1.205e-02, 9.66e-03, 7.85e-03, 6.46e-03,
199 : 5.38e-03, 4.52e-03, 3.84e-03, 3.29e-03, 2.84e-03, 2.47e-03, 2.16e-03, 1.91e-03, 1.69e-03, 1.51e-03, 1.35e-03,
200 : 1.22e-03, 1.10e-03, 1.00e-03, 9.2e-04, 8.4e-04, 7.7e-04, 7.1e-04, 6.6e-04, 6.1e-04, 5.7e-04, 5.3e-04}, // Conc = 0.6
201 : {1.3353e-01, 9.657e-02, 7.038e-02, 5.194e-02, 3.888e-02, 2.953e-02, 2.276e-02, 1.779e-02, 1.409e-02, 1.131e-02, 9.18e-03,
202 : 7.53e-03, 6.24e-03, 5.23e-03, 4.42e-03, 3.76e-03, 3.23e-03, 2.80e-03, 2.43e-03, 2.13e-03, 1.88e-03, 1.67e-03,
203 : 1.49e-03, 1.33e-03, 1.20e-03, 1.09e-03, 9.9e-04, 9.0e-04, 8.2e-04, 7.6e-04, 7.0e-04, 6.4e-04, 6.0e-04}, // Conc = 0.7
204 : {1.9109e-01, 1.4102e-01, 1.0221e-01, 7.453e-02, 5.509e-02, 4.136e-02, 3.156e-02, 2.444e-02, 1.920e-02, 1.529e-02, 1.233e-02,
205 : 1.005e-02, 8.29e-03, 6.90e-03, 5.79e-03, 4.91e-03, 4.19e-03, 3.61e-03, 3.12e-03, 2.72e-03, 2.39e-03, 2.11e-03,
206 : 1.87e-03, 1.66e-03, 1.49e-03, 1.34e-03, 1.21e-03, 1.10e-03, 1.00e-03, 9.1e-04, 8.3e-04, 7.7e-04, 7.1e-04}, // Conc = 0.8
207 : {0.0e+00, 0.0e+00, 1.9687e-01, 1.2843e-01, 8.752e-02, 6.185e-02, 4.508e-02, 3.374e-02, 2.584e-02, 2.018e-02, 1.604e-02,
208 : 1.295e-02, 1.059e-02, 8.77e-03, 7.34e-03, 6.21e-03, 5.30e-03, 4.56e-03, 3.95e-03, 3.45e-03, 3.03e-03, 2.67e-03,
209 : 2.37e-03, 2.12e-03, 1.90e-03, 1.71e-03, 1.54e-03, 1.40e-03, 1.27e-03, 1.16e-03, 1.07e-03, 9.8e-04, 9.0e-04}} // Conc = 0.9
210 : };
211 :
212 : // Ethylene Glycol Data: Density in kg/m3
213 : static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs> DefaultEthGlyRhoData = {
214 : {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 999.8, 999.9, 999.7, 999.1, 998.2, 997.0, 995.6, 994.0, 992.2, 990.2,
215 : 988.0, 985.7, 983.2, 980.5, 977.7, 974.8, 971.8, 968.6, 965.3, 961.9, 958.3, 0.0, 0.0, 0.0, 0.0, 0.0}, // DefaultWaterRhoData
216 : {0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1018.73, 1017.57, 1016.28, 1014.87,
217 : 1013.34, 1011.69, 1009.92, 1008.02, 1006.01, 1003.87, 1001.61, 999.23, 996.72, 994.10, 991.35,
218 : 988.49, 985.50, 982.39, 979.15, 975.80, 972.32, 968.73, 965.01, 961.17, 957.21, 953.12}, // Conc=0.1
219 : {0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1036.85, 1035.67, 1034.36, 1032.94, 1031.39,
220 : 1029.72, 1027.93, 1026.02, 1023.99, 1021.83, 1019.55, 1017.16, 1014.64, 1011.99, 1009.23, 1006.35,
221 : 1003.34, 1000.21, 996.96, 993.59, 990.10, 986.48, 982.75, 978.89, 974.91, 970.81, 966.59}, // Conc=0.2
222 : {0.00, 0.00, 0.00, 0.00, 0.00, 1054.31, 1053.11, 1051.78, 1050.33, 1048.76, 1047.07,
223 : 1045.25, 1043.32, 1041.26, 1039.08, 1036.78, 1034.36, 1031.36, 1029.15, 1026.36, 1023.45, 1020.42,
224 : 1017.27, 1014.00, 1010.60, 1007.09, 1003.45, 999.69, 995.81, 991.81, 987.68, 983.43, 979.07}, // Conc=0.3
225 : {0.00, 0.00, 0.00, 1071.98, 1070.87, 1069.63, 1068.28, 1066.80, 1065.21, 1063.49, 1061.65,
226 : 1059.68, 1057.60, 1055.39, 1053.07, 1050.62, 1048.05, 1045.35, 1042.54, 1039.61, 1036.55, 1033.37,
227 : 1030.07, 1026.65, 1023.10, 1019.44, 1015.65, 1011.74, 1007.70, 1003.56, 999.29, 994.90, 990.38}, // Conc=0.4
228 : {1089.94, 1089.04, 1088.01, 1086.87, 1085.61, 1084.22, 1082.71, 1081.08, 1079.33, 1077.46, 1075.46,
229 : 1073.35, 1071.11, 1068.75, 1066.27, 1063.66, 1060.94, 1058.09, 1055.13, 1052.04, 1048.83, 1045.49,
230 : 1042.04, 1038.46, 1034.77, 1030.95, 1027.01, 1022.95, 1018.76, 1014.46, 1010.03, 1005.48, 1000.81}, // Conc=0.5
231 : {1104.60, 1103.54, 1102.36, 1101.06, 1099.64, 1098.09, 1096.43, 1094.64, 1092.73, 1090.70, 1088.54,
232 : 1086.27, 1083.87, 1081.35, 1078.71, 1075.95, 1073.07, 1070.06, 1066.94, 1063.69, 1060.32, 1056.83,
233 : 1053.22, 1049.48, 1045.63, 1041.65, 1037.55, 1033.33, 1028.99, 1024.52, 1019.94, 1015.23, 1010.40}, // Conc=0.6
234 : {1118.61, 1117.38, 1116.04, 1114.58, 1112.99, 1111.28, 1109.45, 1107.50, 1105.43, 1103.23, 1100.92,
235 : 1098.48, 1095.92, 1093.24, 1090.43, 1087.51, 1084.46, 1081.30, 1078.01, 1074.60, 1071.06, 1067.41,
236 : 1063.64, 1059.74, 1055.72, 1051.58, 1047.32, 1042.93, 1038.43, 1033.80, 1029.05, 1024.18, 1019.19}, // Conc=0.7
237 : {1132.11, 1130.72, 1129.21, 1127.57, 1125.82, 1123.94, 1121.94, 1119.82, 1117.58, 1115.22, 1112.73,
238 : 1110.13, 1107.40, 1104.55, 1101.58, 1098.48, 1095.27, 1091.93, 1088.48, 1084.90, 1081.20, 1077.37,
239 : 1073.43, 1069.36, 1065.18, 1060.87, 1056.44, 1051.88, 1047.21, 1042.41, 1037.50, 1032.46, 1027.30}, // Conc=0.8
240 : {0.00, 0.00, 1141.87, 1140.07, 1138.14, 1136.09, 1133.91, 1131.62, 1129.20, 1126.67, 1124.01,
241 : 1121.23, 1118.32, 1115.30, 1112.15, 1108.89, 1105.50, 1101.99, 1098.36, 1094.60, 1090.73, 1086.73,
242 : 1082.61, 1078.37, 1074.01, 1069.53, 1064.92, 1060.20, 1055.35, 1050.38, 1045.29, 1040.08, 1034.74}} // Conc=0.9
243 : };
244 :
245 : // Ethylene Glycol Data: Conductivity in W/(m-K)
246 : static constexpr std::
247 : array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs>
248 : DefaultEthGlyCondData =
249 : {
250 : {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.561, 0.5705, 0.58, 0.5893,
251 : 0.5984, 0.6072, 0.6155, 0.6233, 0.6306, 0.6373, 0.6436, 0.6492, 0.6543, 0.659, 0.6631,
252 : 0.6668, 0.67, 0.6728, 0.6753, 0.6773, 0.6791, 0.0, 0.0, 0.0, 0.0, 0.0}, // DefaultWaterCondData
253 : {0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.511, 0.520, 0.528, 0.537, 0.545, 0.552, 0.559, 0.566, 0.572, 0.577,
254 : 0.583, 0.588, 0.592, 0.596, 0.600, 0.603, 0.606, 0.608, 0.610, 0.612, 0.613, 0.614, 0.614, 0.614, 0.613, 0.612}, // Conc=0.1
255 : {0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.460, 0.468, 0.476, 0.483, 0.490, 0.497, 0.503, 0.509, 0.515, 0.520, 0.525,
256 : 0.529, 0.534, 0.538, 0.541, 0.544, 0.547, 0.549, 0.551, 0.553, 0.555, 0.556, 0.556, 0.557, 0.557, 0.556, 0.555}, // Conc=0.2
257 : {0.000, 0.000, 0.000, 0.000, 0.000, 0.415, 0.422, 0.429, 0.436, 0.442, 0.448, 0.453, 0.459, 0.464, 0.469, 0.473, 0.477,
258 : 0.481, 0.485, 0.488, 0.491, 0.494, 0.496, 0.498, 0.500, 0.501, 0.503, 0.504, 0.504, 0.505, 0.505, 0.504, 0.504}, // Conc=0.3
259 : {0.000, 0.000, 0.000, 0.371, 0.377, 0.383, 0.389, 0.395, 0.400, 0.405, 0.410, 0.415, 0.419, 0.424, 0.428, 0.431, 0.435,
260 : 0.438, 0.441, 0.444, 0.446, 0.449, 0.451, 0.452, 0.454, 0.455, 0.456, 0.457, 0.458, 0.458, 0.458, 0.458, 0.458}, // Conc=0.4
261 : {0.328, 0.333, 0.339, 0.344, 0.349, 0.354, 0.359, 0.364, 0.368, 0.373, 0.377, 0.380, 0.384, 0.387, 0.391, 0.394, 0.397,
262 : 0.399, 0.402, 0.404, 0.406, 0.408, 0.410, 0.411, 0.413, 0.414, 0.415, 0.416, 0.416, 0.417, 0.417, 0.417, 0.417}, // Conc=0.5
263 : {0.307, 0.312, 0.316, 0.321, 0.325, 0.329, 0.333, 0.336, 0.340, 0.343, 0.346, 0.349, 0.352, 0.355, 0.358, 0.360, 0.363,
264 : 0.365, 0.367, 0.369, 0.371, 0.372, 0.374, 0.375, 0.376, 0.377, 0.378, 0.379, 0.379, 0.380, 0.380, 0.380, 0.380}, // Conc=0.6
265 : {0.289, 0.293, 0.296, 0.300, 0.303, 0.306, 0.309, 0.312, 0.314, 0.317, 0.320, 0.322, 0.324, 0.327, 0.329, 0.331, 0.332,
266 : 0.334, 0.336, 0.337, 0.339, 0.340, 0.341, 0.342, 0.343, 0.344, 0.345, 0.346, 0.346, 0.347, 0.347, 0.347, 0.347}, // Conc=0.7
267 : {0.274, 0.276, 0.279, 0.281, 0.283, 0.286, 0.288, 0.290, 0.292, 0.294, 0.296, 0.298, 0.299, 0.301, 0.303, 0.304, 0.306,
268 : 0.307, 0.308, 0.310, 0.311, 0.312, 0.313, 0.314, 0.314, 0.315, 0.316, 0.316, 0.317, 0.317, 0.318, 0.318, 0.318}, // Conc=0.8
269 : {0.000, 0.000, 0.263, 0.265, 0.266, 0.268, 0.269, 0.271, 0.272, 0.274, 0.275, 0.276, 0.278, 0.279, 0.280, 0.281, 0.282,
270 : 0.283, 0.284, 0.285, 0.286, 0.287, 0.288, 0.288, 0.289, 0.290, 0.290, 0.291, 0.291, 0.292, 0.292, 0.293, 0.293}} // Conc=0.9
271 : };
272 :
273 : // Propylene Glycol Data: Specific Heat in J/(kg-k)
274 : static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs>
275 : DefaultPropGlyCpData =
276 : {
277 : {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4217.0, 4198.0, 4191.0, 4185.0,
278 : 4181.0, 4179.0, 4180.0, 4180.0, 4180.0, 4180.0, 4181.0, 4183.0, 4185.0, 4188.0, 4192.0,
279 : 4196.0, 4200.0, 4203.0, 4208.0, 4213.0, 4218.0, 4223.0, 4228.0, 4233.0, 4238.0, 4243.0}, // DefaultWaterCpData
280 : // in
281 : // J/kg-K
282 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4042.0, 4050.0, 4058.0, 4067.0,
283 : 4075.0, 4083.0, 4091.0, 4099.0, 4107.0, 4115.0, 4123.0, 4131.0, 4139.0, 4147.0, 4155.0,
284 : 4163.0, 4171.0, 4179.0, 4187.0, 4195.0, 4203.0, 4211.0, 4219.0, 4227.0, 4235.0, 4243.0}, // Conc=0.1
285 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3918.0, 3929.0, 3940.0, 3951.0, 3962.0,
286 : 3973.0, 3983.0, 3994.0, 4005.0, 4016.0, 4027.0, 4038.0, 4049.0, 4060.0, 4071.0, 4082.0,
287 : 4093.0, 4104.0, 4115.0, 4126.0, 4136.0, 4147.0, 4158.0, 4169.0, 4180.0, 4191.0, 4202.0}, // Conc=0.2
288 : {0.0, 0.0, 0.0, 0.0, 0.0, 3765.0, 3779.0, 3793.0, 3807.0, 3820.0, 3834.0,
289 : 3848.0, 3862.0, 3875.0, 3889.0, 3903.0, 3917.0, 3930.0, 3944.0, 3958.0, 3972.0, 3985.0,
290 : 3999.0, 4013.0, 4027.0, 4040.0, 4054.0, 4068.0, 4082.0, 4095.0, 4109.0, 4123.0, 4137.0}, // Conc=0.3
291 : {0.0, 0.0, 0.0, 0.0, 3586.0, 3603.0, 3619.0, 3636.0, 3652.0, 3669.0, 3685.0,
292 : 3702.0, 3718.0, 3735.0, 3751.0, 3768.0, 3784.0, 3801.0, 3817.0, 3834.0, 3850.0, 3867.0,
293 : 3883.0, 3900.0, 3916.0, 3933.0, 3949.0, 3966.0, 3982.0, 3999.0, 4015.0, 4032.0, 4049.0}, // Conc=0.4
294 : {0.0, 0.0, 3358.0, 3378.0, 3397.0, 3416.0, 3435.0, 3455.0, 3474.0, 3493.0, 3513.0,
295 : 3532.0, 3551.0, 3570.0, 3590.0, 3609.0, 3628.0, 3648.0, 3667.0, 3686.0, 3706.0, 3725.0,
296 : 3744.0, 3763.0, 3783.0, 3802.0, 3821.0, 3841.0, 3860.0, 3879.0, 3898.0, 3918.0, 3937.0}, // Conc=0.5
297 : {3096.0, 3118.0, 3140.0, 3162.0, 3184.0, 3206.0, 3228.0, 3250.0, 3272.0, 3295.0, 3317.0,
298 : 3339.0, 3361.0, 3383.0, 3405.0, 3427.0, 3449.0, 3471.0, 3493.0, 3515.0, 3537.0, 3559.0,
299 : 3581.0, 3603.0, 3625.0, 3647.0, 3670.0, 3692.0, 3714.0, 3736.0, 3758.0, 3780.0, 3802.0}, // Conc=0.6
300 : {2843.0, 2868.0, 2893.0, 2918.0, 2943.0, 2968.0, 2993.0, 3018.0, 3042.0, 3067.0, 3092.0,
301 : 3117.0, 3142.0, 3167.0, 3192.0, 3217.0, 3242.0, 3266.0, 3291.0, 3316.0, 3341.0, 3366.0,
302 : 3391.0, 3416.0, 3441.0, 3465.0, 3490.0, 3515.0, 3540.0, 3565.0, 3590.0, 3615.0, 3640.0}, // Conc=0.7
303 : {2572.0, 2600.0, 2627.0, 2655.0, 2683.0, 2710.0, 2738.0, 2766.0, 2793.0, 2821.0, 2849.0,
304 : 2876.0, 2904.0, 2931.0, 2959.0, 2987.0, 3014.0, 3042.0, 3070.0, 3097.0, 3125.0, 3153.0,
305 : 3180.0, 3208.0, 3236.0, 3263.0, 3291.0, 3319.0, 3346.0, 3374.0, 3402.0, 3429.0, 3457.0}, // Conc=0.8
306 : {2264.0, 2295.0, 2326.0, 2356.0, 2387.0, 2417.0, 2448.0, 2478.0, 2509.0, 2539.0, 2570.0,
307 : 2600.0, 2631.0, 2661.0, 2692.0, 2723.0, 2753.0, 2784.0, 2814.0, 2845.0, 2875.0, 2906.0,
308 : 2936.0, 2967.0, 2997.0, 3028.0, 3058.0, 3089.0, 3119.0, 3150.0, 3181.0, 3211.0, 3242.0}} // Conc=0.9
309 : };
310 :
311 : // Propylene Glycol Data: Viscosity in mPa-s
312 : static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs> DefaultPropGlyViscData = {
313 : {{0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 1.7912e-3, 1.5183e-3, 1.306e-3, 1.1376e-3, 1.0016e-3,
314 : 0.8901e-3, 0.7974e-3, 0.7193e-3, 0.653e-3, 0.5961e-3, 0.5468e-3, 0.504e-3, 0.4664e-3, 0.4332e-3, 0.4039e-3, 0.3777e-3, 0.3543e-3,
315 : 0.3333e-3, 0.3144e-3, 0.2973e-3, 0.2817e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3, 0.0e-3}, // DefaultWaterViscData in Pa-s
316 : {0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 2.68e-03, 2.23e-03, 1.89e-03, 1.63e-03,
317 : 1.42e-03, 1.25e-03, 1.11e-03, 9.9e-04, 8.9e-04, 8.1e-04, 7.3e-04, 6.7e-04, 6.2e-04, 5.7e-04, 5.3e-04,
318 : 4.9e-04, 4.6e-04, 4.3e-04, 4.0e-04, 3.8e-04, 3.5e-04, 3.3e-04, 3.2e-04, 3.0e-04, 2.8e-04, 2.7e-04}, // Conc=0.1
319 : {0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 4.98e-03, 4.05e-03, 3.34e-03, 2.79e-03, 2.36e-03,
320 : 2.02e-03, 1.74e-03, 1.52e-03, 1.34e-03, 1.18e-03, 1.06e-03, 9.5e-04, 8.6e-04, 7.8e-04, 7.1e-04, 6.6e-04,
321 : 6.0e-04, 5.6e-04, 5.2e-04, 4.9e-04, 4.5e-04, 4.3e-04, 4.0e-04, 3.8e-04, 3.6e-04, 3.4e-04, 3.2e-04}, // Conc=0.2
322 : {0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 1.187e-02, 9.08e-03, 7.08e-03, 5.61e-03, 4.52e-03, 3.69e-03,
323 : 3.06e-03, 2.57e-03, 2.18e-03, 1.88e-03, 1.63e-03, 1.43e-03, 1.26e-03, 1.13e-03, 1.01e-03, 9.1e-04, 8.3e-04,
324 : 7.6e-04, 7.0e-04, 6.5e-04, 6.1e-04, 5.7e-04, 5.3e-04, 5.0e-04, 4.7e-04, 4.5e-04, 4.3e-04, 4.1e-04}, // Conc=0.3
325 : {0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 3.322e-02, 2.327e-02, 1.675e-02, 1.237e-02, 9.35e-03, 7.22e-03, 5.69e-03,
326 : 4.57e-03, 3.73e-03, 3.09e-03, 2.60e-03, 2.21e-03, 1.91e-03, 1.66e-03, 1.47e-03, 1.30e-03, 1.17e-03, 1.06e-03,
327 : 9.6e-04, 8.8e-04, 8.1e-04, 7.5e-04, 7.0e-04, 6.6e-04, 6.2e-04, 5.9e-04, 5.6e-04, 5.3e-04, 5.1e-04}, // Conc=0.4
328 : {0.0e+00, 0.0e+00, 1.1059e-01, 7.303e-02, 4.970e-02, 3.478e-02, 2.499e-02, 1.840e-02, 1.385e-02, 1.065e-02, 8.34e-03,
329 : 6.65e-03, 5.39e-03, 4.43e-03, 3.69e-03, 3.11e-03, 2.65e-03, 2.29e-03, 1.99e-03, 1.75e-03, 1.55e-03, 1.38e-03,
330 : 1.24e-03, 1.12e-03, 1.02e-03, 9.3e-04, 8.6e-04, 7.9e-04, 7.4e-04, 6.9e-04, 6.4e-04, 6.0e-04, 5.7e-04}, // Conc=0.5
331 : {5.2401e-01, 3.3039e-01, 2.1143e-01, 1.3796e-01, 9.200e-02, 6.278e-02, 4.384e-02, 3.132e-02, 2.287e-02, 1.705e-02, 1.296e-02,
332 : 1.004e-02, 7.91e-03, 6.34e-03, 5.15e-03, 4.25e-03, 3.55e-03, 3.00e-03, 2.57e-03, 2.22e-03, 1.93e-03, 1.70e-03,
333 : 1.51e-03, 1.35e-03, 1.22e-03, 1.10e-03, 1.01e-03, 9.2e-04, 8.5e-04, 7.9e-04, 7.4e-04, 6.9e-04, 6.5e-04}, // Conc=0.6
334 : {9.1618e-01, 5.5112e-01, 3.4009e-01, 2.1567e-01, 1.4062e-01, 9.423e-02, 6.483e-02, 4.574e-02, 3.304e-02, 2.441e-02, 1.841e-02,
335 : 1.415e-02, 1.108e-02, 8.81e-03, 7.12e-03, 5.84e-03, 4.85e-03, 4.08e-03, 3.46e-03, 2.98e-03, 2.58e-03, 2.26e-03,
336 : 1.99e-03, 1.77e-03, 1.59e-03, 1.43e-03, 1.30e-03, 1.18e-03, 1.08e-03, 1.00e-03, 9.3e-04, 8.6e-04, 8.0e-04}, // Conc=0.7
337 : {1.43422e+00, 9.0847e-01, 5.7592e-01, 3.6877e-01, 2.3986e-01, 1.5902e-01, 1.0764e-01, 7.445e-02, 5.263e-02, 3.799e-02, 2.800e-02,
338 : 2.104e-02, 1.610e-02, 1.255e-02, 9.94e-03, 7.99e-03, 6.52e-03, 5.39e-03, 4.51e-03, 3.82e-03, 3.28e-03, 2.83e-03,
339 : 2.47e-03, 2.18e-03, 1.94e-03, 1.73e-03, 1.56e-03, 1.42e-03, 1.29e-03, 1.19e-03, 1.09e-03, 1.02e-03, 9.5e-04}, // Conc=0.8
340 : {3.81329e+00, 2.07134e+00, 1.17609e+00, 6.9609e-01, 4.2819e-01, 2.7294e-01, 1.7978e-01, 1.2203e-01, 8.515e-02,
341 : 6.093e-02, 4.462e-02, 3.338e-02, 2.545e-02, 1.976e-02, 1.560e-02, 1.249e-02, 1.015e-02, 8.35e-03,
342 : 6.95e-03, 5.85e-03, 4.97e-03, 4.26e-03, 3.69e-03, 3.22e-03, 2.83e-03, 2.50e-03, 2.23e-03,
343 : 2.00e-03, 1.80e-03, 1.63e-03, 1.48e-03, 1.35e-03, 1.24e-03}} // Conc=0.9
344 : };
345 :
346 : // Propylene Glycol Data: Density in kg/m3
347 : static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs> DefaultPropGlyRhoData = {
348 : {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 999.8, 999.9, 999.7, 999.1, 998.2, 997.0, 995.6, 994.0, 992.2, 990.2,
349 : 988.0, 985.7, 983.2, 980.5, 977.7, 974.8, 971.8, 968.6, 965.3, 961.9, 958.3, 0.0, 0.0, 0.0, 0.0, 0.0}, // DefaultWaterRhoData in
350 : // kg/m3
351 : {0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1013.85, 1012.61, 1011.24, 1009.75,
352 : 1008.13, 1006.40, 1004.54, 1002.56, 1000.46, 998.23, 995.88, 993.41, 990.82, 988.11, 985.27,
353 : 982.31, 979.23, 976.03, 972.70, 969.25, 965.68, 961.99, 958.17, 954.24, 950.18, 945.99}, // Conc=0.1
354 : {0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1027.24, 1025.84, 1024.32, 1022.68, 1020.91,
355 : 1019.01, 1016.99, 1014.84, 1012.56, 1010.16, 1007.64, 1004.99, 1002.21, 999.31, 996.28, 993.12,
356 : 989.85, 986.44, 982.91, 979.25, 975.47, 971.56, 967.53, 963.37, 959.09, 954.67, 950.14}, // Conc=0.2
357 : {0.00, 0.00, 0.00, 0.00, 0.00, 1039.42, 1037.89, 1036.24, 1034.46, 1032.55, 1030.51,
358 : 1028.35, 1026.06, 1023.64, 1021.09, 1018.42, 1015.62, 1012.69, 1009.63, 1006.44, 1003.13, 999.69,
359 : 996.12, 992.42, 988.60, 984.65, 980.57, 976.36, 972.03, 967.56, 962.97, 958.26, 953.41}, // Conc=0.3
360 : {0.00, 0.00, 0.00, 0.00, 1050.43, 1048.79, 1047.02, 1045.12, 1043.09, 1040.94, 1038.65,
361 : 1036.24, 1033.70, 1031.03, 1028.23, 1025.30, 1022.24, 1019.06, 1015.75, 1012.30, 1008.73, 1005.03,
362 : 1001.21, 997.25, 993.17, 988.95, 984.61, 980.14, 975.54, 970.81, 965.95, 960.97, 955.86}, // Conc=0.4
363 : {0.00, 0.00, 1062.11, 1060.49, 1058.73, 1056.85, 1054.84, 1052.71, 1050.44, 1048.04, 1045.52,
364 : 1042.87, 1040.09, 1037.18, 1034.15, 1030.98, 1027.69, 1024.27, 1020.72, 1017.04, 1013.23, 1009.30,
365 : 1005.24, 1001.05, 996.73, 992.28, 987.70, 983.00, 978.16, 973.20, 968.11, 962.89, 957.55}, // Conc=0.5
366 : {1072.92, 1071.31, 1069.58, 1067.72, 1065.73, 1063.61, 1061.37, 1059.00, 1056.50, 1053.88, 1051.13,
367 : 1048.25, 1045.24, 1042.11, 1038.85, 1035.47, 1031.95, 1028.32, 1024.55, 1020.66, 1016.63, 1012.49,
368 : 1008.21, 1003.81, 999.28, 994.63, 989.85, 984.94, 979.90, 974.74, 969.45, 964.03, 958.49}, // Conc=0.6
369 : {1079.67, 1077.82, 1075.84, 1073.74, 1071.51, 1069.16, 1066.69, 1064.09, 1061.36, 1058.51, 1055.54,
370 : 1052.44, 1049.22, 1045.87, 1042.40, 1038.81, 1035.09, 1031.25, 1027.28, 1023.19, 1018.97, 1014.63,
371 : 1010.16, 1005.57, 1000.86, 996.02, 991.06, 985.97, 980.76, 975.42, 969.96, 964.38, 958.67}, // Conc=0.7
372 : {1094.50, 1090.85, 1087.18, 1083.49, 1079.77, 1076.04, 1072.27, 1068.49, 1064.68, 1060.85, 1057.00,
373 : 1053.12, 1049.22, 1045.30, 1041.35, 1037.38, 1033.39, 1029.37, 1025.33, 1021.27, 1017.19, 1013.08,
374 : 1008.95, 1004.79, 1000.62, 996.41, 992.19, 987.94, 983.68, 979.38, 975.07, 970.73, 966.37}, // Conc=0.8
375 : {1092.46, 1088.82, 1085.15, 1081.46, 1077.74, 1074.00, 1070.24, 1066.46, 1062.65, 1058.82, 1054.96,
376 : 1051.09, 1047.19, 1043.26, 1039.32, 1035.35, 1031.35, 1027.34, 1023.30, 1019.24, 1015.15, 1011.04,
377 : 1006.91, 1002.76, 998.58, 994.38, 990.16, 985.91, 981.64, 977.35, 973.03, 968.69, 964.33}} // Conc=0.9
378 : };
379 :
380 : // Propylene Glycol Data: Conductivity in W/(m-K)
381 : static constexpr std::
382 : array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs>
383 : DefaultPropGlyCondData =
384 : {
385 : {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.561, 0.5705, 0.58, 0.5893,
386 : 0.5984, 0.6072, 0.6155, 0.6233, 0.6306, 0.6373, 0.6436, 0.6492, 0.6543, 0.659, 0.6631,
387 : 0.6668, 0.67, 0.6728, 0.6753, 0.6773, 0.6791, 0.0, 0.0, 0.0, 0.0, 0.0}, // DefaultWaterCondData
388 : // in W/mK
389 : {0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.510, 0.518, 0.527, 0.535, 0.543, 0.550, 0.557, 0.563, 0.569, 0.575,
390 : 0.580, 0.585, 0.589, 0.593, 0.596, 0.599, 0.602, 0.604, 0.606, 0.607, 0.608, 0.609, 0.609, 0.608, 0.608, 0.606}, // Conc=0.1
391 : {0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.456, 0.464, 0.472, 0.479, 0.485, 0.492, 0.498, 0.503, 0.508, 0.513, 0.518,
392 : 0.522, 0.526, 0.529, 0.532, 0.535, 0.538, 0.540, 0.541, 0.543, 0.544, 0.544, 0.544, 0.544, 0.544, 0.543, 0.542}, // Conc=0.2
393 : {0.000, 0.000, 0.000, 0.000, 0.000, 0.410, 0.416, 0.423, 0.429, 0.434, 0.440, 0.445, 0.449, 0.454, 0.458, 0.462, 0.466,
394 : 0.469, 0.472, 0.475, 0.477, 0.479, 0.481, 0.482, 0.484, 0.484, 0.485, 0.485, 0.485, 0.485, 0.485, 0.484, 0.482}, // Conc=0.3
395 : {0.000, 0.000, 0.000, 0.000, 0.369, 0.375, 0.380, 0.385, 0.389, 0.394, 0.398, 0.402, 0.406, 0.409, 0.412, 0.415, 0.418,
396 : 0.420, 0.423, 0.425, 0.426, 0.428, 0.429, 0.430, 0.431, 0.431, 0.432, 0.432, 0.432, 0.431, 0.430, 0.429, 0.428}, // Conc=0.4
397 : {0.000, 0.000, 0.329, 0.334, 0.338, 0.342, 0.346, 0.349, 0.353, 0.356, 0.359, 0.362, 0.365, 0.367, 0.370, 0.372, 0.374,
398 : 0.375, 0.377, 0.378, 0.379, 0.380, 0.381, 0.382, 0.382, 0.382, 0.382, 0.382, 0.382, 0.381, 0.380, 0.379, 0.378}, // Conc=0.5
399 : {0.296, 0.300, 0.303, 0.306, 0.309, 0.312, 0.314, 0.317, 0.319, 0.321, 0.323, 0.325, 0.327, 0.329, 0.330, 0.331, 0.333,
400 : 0.334, 0.335, 0.335, 0.336, 0.336, 0.337, 0.337, 0.337, 0.337, 0.336, 0.336, 0.335, 0.335, 0.334, 0.333, 0.332}, // Conc=0.6
401 : {0.275, 0.277, 0.278, 0.280, 0.282, 0.284, 0.285, 0.286, 0.289, 0.290, 0.291, 0.292, 0.293, 0.293, 0.294, 0.294, 0.295,
402 : 0.295, 0.295, 0.295, 0.295, 0.295, 0.295, 0.295, 0.295, 0.294, 0.294, 0.293, 0.292, 0.292, 0.291, 0.290, 0.288}, // Conc=0.7
403 : {0.255, 0.256, 0.257, 0.257, 0.258, 0.259, 0.259, 0.259, 0.260, 0.260, 0.260, 0.261, 0.261, 0.261, 0.261, 0.261, 0.260,
404 : 0.260, 0.260, 0.260, 0.259, 0.259, 0.258, 0.258, 0.257, 0.256, 0.256, 0.255, 0.254, 0.253, 0.252, 0.251, 0.250}, // Conc=0.8
405 : {0.237, 0.237, 0.236, 0.236, 0.236, 0.235, 0.235, 0.234, 0.234, 0.233, 0.233, 0.232, 0.233, 0.231, 0.230, 0.229, 0.229,
406 : 0.228, 0.227, 0.227, 0.226, 0.225, 0.224, 0.223, 0.222, 0.221, 0.220, 0.219, 0.218, 0.217, 0.216, 0.215, 0.214}} // Conc=0.9
407 : };
408 :
409 : // Steam Refrigerant Data
410 : static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamTemps = {
411 : 1.00e-002, 1.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 72.0, 74.0, 76.0,
412 : 78.0, 80.0, 82.0, 84.0, 86.0, 88.0, 90.0, 92.0, 94.0, 96.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0,
413 : 107.0, 108.0, 109.0, 110.0, 111.0, 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0, 120.0, 121.0, 122.0, 123.0, 124.0, 125.0,
414 : 126.0, 127.0, 128.0, 129.0, 130.0, 132.0, 134.0, 136.0, 138.0, 140.0, 142.0, 144.0, 146.0, 148.0, 150.0, 152.0, 154.0, 156.0, 158.0,
415 : 160.0, 162.0, 164.0, 166.0, 168.0, 170.0, 172.0, 174.0, 176.0, 178.0, 180.0, 185.0, 190.0, 195.0, 200.0, 205.0, 210.0, 215.0, 220.0,
416 : 225.0, 230.0, 240.0, 250.0, 260.0, 270.0, 280.0, 290.0, 300.0, 310.0, 320.0, 330.0, 340.0, 350.0, 360.0, 370.0};
417 :
418 : static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamPressData = {
419 : 611.7, 657.1, 872.6, 1228.0, 1706.0, 2339.0, 3170.0, 4247.0, 5629.0, 7385.0, 9595.0, 12350.0,
420 : 15760.0, 19950.0, 25040.0, 31200.0, 34000.0, 37010.0, 40240.0, 43700.0, 47410.0, 51390.0, 55640.0, 60170.0,
421 : 65020.0, 70180.0, 75680.0, 81540.0, 87770.0, 94390.0, 97850.0, 101400.0, 105100.0, 108900.0, 112800.0, 116800.0,
422 : 120900.0, 125100.0, 129500.0, 134000.0, 138600.0, 143400.0, 148300.0, 153300.0, 158400.0, 163700.0, 169200.0, 174800.0,
423 : 180500.0, 186400.0, 192500.0, 198700.0, 205000.0, 211600.0, 218300.0, 225200.0, 232200.0, 239500.0, 246900.0, 254500.0,
424 : 262300.0, 270300.0, 286800.0, 304200.0, 322400.0, 341500.0, 361500.0, 382500.0, 404400.0, 427300.0, 451200.0, 476200.0,
425 : 502200.0, 529500.0, 557800.0, 587400.0, 618200.0, 650300.0, 683700.0, 718500.0, 754600.0, 792200.0, 831200.0, 871800.0,
426 : 913800.0, 957500.0, 1003000.0, 1123000.0, 1255000.0, 1399000.0, 1555000.0, 1724000.0, 1908000.0, 2106000.0, 2320000.0, 2550000.0,
427 : 2797000.0, 3347000.0, 3976000.0, 4692000.0, 5503000.0, 6417000.0, 7442000.0, 8588000.0, 9865000.0, 11280000.0, 12860000.0, 14600000.0,
428 : 16530000.0, 18670000.0, 21040000.0};
429 :
430 : static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamEnthalpyFluidData = {
431 : 0.59, 4177.0, 21020.0, 42020.0, 62980.0, 83910.0, 104800.0, 125700.0, 146600.0, 167500.0, 188400.0, 209300.0, 230300.0,
432 : 251200.0, 272100.0, 293100.0, 301400.0, 309800.0, 318200.0, 326600.0, 335000.0, 343400.0, 351800.0, 360200.0, 368600.0, 377000.0,
433 : 385500.0, 393900.0, 402300.0, 410700.0, 414900.0, 419200.0, 423400.0, 427600.0, 431800.0, 436000.0, 440300.0, 444500.0, 448700.0,
434 : 453000.0, 457200.0, 461400.0, 465600.0, 469900.0, 474100.0, 478400.0, 482600.0, 486800.0, 491100.0, 495300.0, 499600.0, 503800.0,
435 : 508100.0, 512300.0, 516600.0, 520800.0, 525100.0, 529300.0, 533600.0, 537900.0, 542100.0, 546400.0, 554900.0, 563500.0, 572000.0,
436 : 580600.0, 589200.0, 597700.0, 606300.0, 614900.0, 623600.0, 632200.0, 640800.0, 649500.0, 658100.0, 666800.0, 675500.0, 684200.0,
437 : 692900.0, 701600.0, 710300.0, 719100.0, 727800.0, 736600.0, 745400.0, 754200.0, 763100.0, 785200.0, 807400.0, 829800.0, 852300.0,
438 : 874900.0, 897600.0, 920500.0, 943600.0, 966800.0, 990200.0, 1038000.0, 1086000.0, 1135000.0, 1185000.0, 1237000.0, 1290000.0, 1345000.0,
439 : 1402000.0, 1462000.0, 1526000.0, 1595000.0, 1671000.0, 1762000.0, 1891000.0};
440 :
441 : static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamEnthalpyGasFluidData = {
442 : 2501000.0, 2503000.0, 2510000.0, 2519000.0, 2528000.0, 2537000.0, 2547000.0, 2556000.0, 2565000.0, 2574000.0, 2582000.0, 2591000.0, 2600000.0,
443 : 2609000.0, 2618000.0, 2626000.0, 2630000.0, 2633000.0, 2636000.0, 2640000.0, 2643000.0, 2646000.0, 2650000.0, 2653000.0, 2656000.0, 2660000.0,
444 : 2663000.0, 2666000.0, 2669000.0, 2672000.0, 2674000.0, 2676000.0, 2677000.0, 2679000.0, 2680000.0, 2682000.0, 2683000.0, 2685000.0, 2686000.0,
445 : 2688000.0, 2690000.0, 2691000.0, 2693000.0, 2694000.0, 2696000.0, 2697000.0, 2699000.0, 2700000.0, 2702000.0, 2703000.0, 2704000.0, 2706000.0,
446 : 2707000.0, 2709000.0, 2710000.0, 2712000.0, 2713000.0, 2715000.0, 2716000.0, 2717000.0, 2719000.0, 2720000.0, 2723000.0, 2726000.0, 2728000.0,
447 : 2731000.0, 2733000.0, 2736000.0, 2739000.0, 2741000.0, 2744000.0, 2746000.0, 2748000.0, 2751000.0, 2753000.0, 2755000.0, 2757000.0, 2760000.0,
448 : 2762000.0, 2764000.0, 2766000.0, 2768000.0, 2770000.0, 2772000.0, 2774000.0, 2775000.0, 2777000.0, 2781000.0, 2785000.0, 2789000.0, 2792000.0,
449 : 2795000.0, 2797000.0, 2799000.0, 2801000.0, 2802000.0, 2803000.0, 2803000.0, 2801000.0, 2797000.0, 2790000.0, 2780000.0, 2767000.0, 2750000.0,
450 : 2728000.0, 2701000.0, 2666000.0, 2622000.0, 2564000.0, 2481000.0, 2335000.0};
451 :
452 : static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamCpFluidData = {
453 : 4220.0, 4217.0, 4205.0, 4196.0, 4189.0, 4184.0, 4182.0, 4180.0, 4180.0, 4180.0, 4180.0, 4182.0, 4183.0, 4185.0, 4187.0, 4190.0,
454 : 4191.0, 4193.0, 4194.0, 4195.0, 4197.0, 4198.0, 4200.0, 4202.0, 4203.0, 4205.0, 4207.0, 4209.0, 4211.0, 4213.0, 4215.0, 4216.0,
455 : 4217.0, 4218.0, 4219.0, 4220.0, 4222.0, 4223.0, 4224.0, 4226.0, 4227.0, 4228.0, 4230.0, 4231.0, 4233.0, 4234.0, 4236.0, 4237.0,
456 : 4239.0, 4240.0, 4242.0, 4244.0, 4245.0, 4247.0, 4249.0, 4250.0, 4252.0, 4254.0, 4256.0, 4258.0, 4260.0, 4261.0, 4265.0, 4270.0,
457 : 4274.0, 4278.0, 4283.0, 4287.0, 4292.0, 4297.0, 4302.0, 4307.0, 4312.0, 4318.0, 4324.0, 4329.0, 4335.0, 4341.0, 4348.0, 4354.0,
458 : 4361.0, 4368.0, 4375.0, 4382.0, 4390.0, 4397.0, 4405.0, 4425.0, 4447.0, 4471.0, 4496.0, 4523.0, 4551.0, 4582.0, 4615.0, 4650.0,
459 : 4688.0, 4772.0, 4870.0, 4986.0, 5123.0, 5289.0, 5493.0, 5750.0, 6085.0, 6537.0, 7186.0, 8208.0, 10120.0, 15000.0, 45160.0};
460 :
461 : static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamCpGasFluidData = {
462 : 1884.0, 1885.0, 1889.0, 1895.0, 1900.0, 1906.0, 1912.0, 1918.0, 1925.0, 1931.0, 1939.0, 1947.0, 1955.0, 1965.0, 1975.0, 1986.0,
463 : 1991.0, 1996.0, 2001.0, 2006.0, 2012.0, 2018.0, 2024.0, 2030.0, 2036.0, 2043.0, 2050.0, 2057.0, 2064.0, 2072.0, 2076.0, 2080.0,
464 : 2084.0, 2088.0, 2093.0, 2097.0, 2101.0, 2106.0, 2110.0, 2115.0, 2120.0, 2124.0, 2129.0, 2134.0, 2139.0, 2144.0, 2150.0, 2155.0,
465 : 2160.0, 2166.0, 2171.0, 2177.0, 2183.0, 2189.0, 2195.0, 2201.0, 2207.0, 2213.0, 2219.0, 2226.0, 2232.0, 2239.0, 2252.0, 2266.0,
466 : 2281.0, 2296.0, 2311.0, 2327.0, 2343.0, 2359.0, 2376.0, 2394.0, 2412.0, 2430.0, 2449.0, 2468.0, 2488.0, 2509.0, 2529.0, 2551.0,
467 : 2572.0, 2594.0, 2617.0, 2640.0, 2664.0, 2688.0, 2713.0, 2777.0, 2844.0, 2915.0, 2990.0, 3068.0, 3150.0, 3237.0, 3329.0, 3426.0,
468 : 3528.0, 3754.0, 4011.0, 4308.0, 4656.0, 5073.0, 5582.0, 6220.0, 7045.0, 8159.0, 9753.0, 12240.0, 16690.0, 27360.0, 96600.0};
469 :
470 : static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamDensityFluidData = {
471 : 999.8, 999.9, 999.9, 999.7, 999.1, 998.2, 997.0, 995.6, 994.0, 992.2, 990.2, 988.0, 985.7, 983.2, 980.5, 977.7, 976.6, 975.4, 974.2,
472 : 973.0, 971.8, 970.5, 969.2, 967.9, 966.6, 965.3, 963.9, 962.6, 961.2, 959.8, 959.1, 958.3, 957.6, 956.9, 956.2, 955.4, 954.7, 954.0,
473 : 953.2, 952.5, 951.7, 950.9, 950.2, 949.4, 948.6, 947.9, 947.1, 946.3, 945.5, 944.7, 943.9, 943.1, 942.3, 941.5, 940.7, 939.8, 939.0,
474 : 938.2, 937.4, 936.5, 935.7, 934.8, 933.1, 931.4, 929.7, 927.9, 926.1, 924.3, 922.5, 920.7, 918.9, 917.0, 915.1, 913.2, 911.3, 909.4,
475 : 907.4, 905.5, 903.5, 901.5, 899.5, 897.5, 895.4, 893.3, 891.2, 889.1, 887.0, 881.6, 876.1, 870.4, 864.7, 858.8, 852.7, 846.5, 840.2,
476 : 833.7, 827.1, 813.4, 798.9, 783.6, 767.5, 750.3, 731.9, 712.1, 690.7, 667.1, 640.8, 610.7, 574.7, 527.6, 451.4};
477 :
478 : static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamDensityGasFluidData = {
479 : 4.86e-003, 5.20e-003, 6.80e-003, 9.41e-003, 1.28e-002, 1.73e-002, 2.31e-002, 3.04e-002, 3.97e-002, 5.12e-002, 6.56e-002, 8.32e-002, 0.10,
480 : 0.13, 0.16, 0.20, 0.22, 0.23, 0.25, 0.27, 0.29, 0.32, 0.34, 0.37, 0.39, 0.42,
481 : 0.45, 0.49, 0.52, 0.56, 0.58, 0.60, 0.62, 0.64, 0.66, 0.68, 0.71, 0.73, 0.75,
482 : 0.78, 0.80, 0.83, 0.85, 0.88, 0.91, 0.94, 0.97, 1.00, 1.03, 1.06, 1.09, 1.12,
483 : 1.16, 1.19, 1.23, 1.26, 1.30, 1.34, 1.38, 1.42, 1.46, 1.50, 1.58, 1.67, 1.77,
484 : 1.86, 1.97, 2.07, 2.19, 2.30, 2.42, 2.55, 2.68, 2.82, 2.96, 3.11, 3.26, 3.42,
485 : 3.59, 3.76, 3.94, 4.12, 4.32, 4.52, 4.72, 4.94, 5.16, 5.75, 6.40, 7.10, 7.86,
486 : 8.69, 9.59, 10.56, 11.62, 12.75, 13.99, 16.75, 19.97, 23.71, 28.07, 33.16, 39.13, 46.17,
487 : 54.54, 64.64, 77.05, 92.76, 113.60, 143.90, 201.80};
488 :
489 : static constexpr std::array<Real64, DefaultNumSteamSuperheatedTemps> DefaultSteamSuperheatedTemps = {
490 : 1.00e-002, 1.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 72.0, 74.0, 76.0,
491 : 78.0, 80.0, 82.0, 84.0, 86.0, 88.0, 90.0, 92.0, 94.0, 96.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0,
492 : 107.0, 108.0, 109.0, 110.0, 111.0, 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0, 120.0, 121.0, 122.0, 123.0, 124.0, 125.0,
493 : 126.0, 127.0, 128.0, 129.0, 130.0, 132.0, 134.0, 136.0, 138.0, 140.0, 142.0, 144.0, 146.0, 148.0, 150.0, 152.0, 154.0, 156.0, 158.0,
494 : 160.0, 162.0, 164.0, 166.0, 168.0, 170.0, 172.0, 174.0, 176.0, 178.0, 180.0, 185.0, 190.0, 195.0, 200.0, 205.0, 210.0, 215.0, 220.0,
495 : 225.0, 230.0, 240.0, 250.0, 260.0, 270.0, 280.0, 290.0, 300.0, 310.0, 320.0, 330.0, 340.0, 350.0, 360.0, 370.0, 400.0, 450.0, 500.0};
496 :
497 : static constexpr std::array<Real64, DefaultNumSteamSuperheatedTemps> DefaultSteamSuperheatedPressData = {
498 : 611.70, 657.10, 872.60, 1228.0, 1706.0, 2339.0, 3170.0, 4247.0, 5629.0, 7385.0, 9595.0, 12350.0,
499 : 15760.0, 19950.0, 25040.0, 31200.0, 34000.0, 37010.0, 40240.0, 43700.0, 47410.0, 51390.0, 55640.0, 60170.0,
500 : 65020.0, 70180.0, 75680.0, 81540.0, 87770.0, 94390.0, 97850.0, 101400.0, 105100.0, 108900.0, 112800.0, 116800.0,
501 : 120900.0, 125100.0, 129500.0, 134000.0, 138600.0, 143400.0, 148300.0, 153300.0, 158400.0, 163700.0, 169200.0, 174800.0,
502 : 180500.0, 186400.0, 192500.0, 198700.0, 205000.0, 211600.0, 218300.0, 225200.0, 232200.0, 239500.0, 246900.0, 254500.0,
503 : 262300.0, 270300.0, 286800.0, 304200.0, 322400.0, 341500.0, 361500.0, 382500.0, 404400.0, 427300.0, 451200.0, 476200.0,
504 : 502200.0, 529500.0, 557800.0, 587400.0, 618200.0, 650300.0, 683700.0, 718500.0, 754600.0, 792200.0, 831200.0, 871800.0,
505 : 913800.0, 957500.0, 1003000.0, 1123000.0, 1255000.0, 1399000.0, 1555000.0, 1724000.0, 1908000.0, 2106000.0, 2320000.0, 2550000.0,
506 : 2797000.0, 3347000.0, 3976000.0, 4692000.0, 5503000.0, 6417000.0, 7442000.0, 8588000.0, 9865000.0, 11280000.0, 12860000.0, 14600000.0,
507 : 16530000.0, 18670000.0, 21040000.0, 30000000.0, 35000000.0, 40000000.0};
508 :
509 796 : void GetFluidPropertiesData(EnergyPlusData &state)
510 : {
511 :
512 : // SUBROUTINE INFORMATION:
513 : // AUTHOR Rick Strand
514 : // DATE WRITTEN April 2000
515 : // MODIFIED May 2002 Simon Rees (Added saturated pressure data retreaval)
516 : // June 2004 Rick Strand (Added glycol defaults and modified glycol data structure)
517 : // August 2011 Linda Lawrie (Added steam as default refrigerant)
518 : // August 2012 Linda Lawrie (more error checks on data input)
519 :
520 : // PURPOSE OF THIS SUBROUTINE:
521 : // The purpose of this subroutine is to read in all of the fluid
522 : // property data contained in the user input file.
523 :
524 : // METHODOLOGY EMPLOYED:
525 : // Standard EnergyPlus methodology. Derived type portions are
526 : // allocated as necessary as the data is read into the program.
527 :
528 : // SUBROUTINE PARAMETER DEFINITIONS:
529 796 : Real64 constexpr PressToler(1.0); // Some reasonable value for comparisons
530 : static constexpr std::string_view routineName = "GetFluidPropertiesData";
531 :
532 : // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
533 796 : Array1D_string Alphas; // Reads string value from input file
534 796 : Array1D_string cAlphaFields; // field names for alpha fields
535 796 : Array1D_string cNumericFields; // field names for numeric fields
536 : int NumAlphas; // States which alpha value to read from a "Number" line
537 796 : Array1D<Real64> Numbers; // brings in data from IP
538 796 : Array1D_bool lAlphaFieldBlanks; // logical for blank alpha fields
539 796 : Array1D_bool lNumericFieldBlanks; // logical for blank numeric fields
540 : int NumNumbers; // States which number value to read from a "Numbers" line
541 : int Status; // Either 1 "object found" or -1 "not found" (also used as temp)
542 :
543 796 : bool ErrorsFound(false);
544 796 : std::string CurrentModuleObject; // for ease in renaming.
545 :
546 : // SUBROUTINE LOCAL DATA:
547 :
548 : // Note two methods of Array initialization in use:
549 : // - Fixed list of values. The second parameter is an initializer list (brace
550 : // delimited list of numbers).
551 : // - Initializer function. The second parameter is the function name.
552 : // In several cases we need to pass water data to the initializer, but an
553 : // Array initializer only takes one argument. std::bind is used to convert the
554 : // actual initializer into a function of one argument.
555 :
556 796 : auto &df = state.dataFluidProps;
557 :
558 : // This is here because of a unit test in HVACVRF:2358
559 796 : for (int i = 1; i <= df->refrigs.isize(); ++i)
560 0 : delete df->refrigs(i);
561 796 : df->refrigs.clear();
562 796 : for (int i = 1; i <= df->glycolsRaw.isize(); ++i)
563 0 : delete df->glycolsRaw(i);
564 796 : df->glycolsRaw.clear();
565 796 : for (int i = 1; i <= df->glycols.isize(); ++i)
566 0 : delete df->glycols(i);
567 796 : df->glycols.clear();
568 :
569 : // For default "glycol" fluids of Water, Ethylene Glycol, and Propylene Glycol
570 :
571 : // Where are these things initialized?
572 1592 : Array2D<Real64> DefaultSteamSuperheatedEnthalpyData(DefaultNumSteamSuperheatedPressure, DefaultNumSteamSuperheatedTemps);
573 1592 : Array2D<Real64> DefaultSteamSuperheatedDensityData(DefaultNumSteamSuperheatedPressure, DefaultNumSteamSuperheatedTemps);
574 :
575 : struct FluidTempData
576 : {
577 : // Members
578 : std::string Name; // Name of the temperature list
579 : int NumOfTemps = 0; // Number of temperatures in a particular arry
580 : Array1D<Real64> Temps; // Temperature values (degrees C)
581 : };
582 :
583 : // Object Data
584 796 : Array1D<FluidTempData> FluidTemps;
585 :
586 796 : int MaxAlphas = 0;
587 796 : int MaxNumbers = 0;
588 796 : if (state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, "FluidProperties:Name") > 0) {
589 37 : state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(state, "FluidProperties:Name", Status, NumAlphas, NumNumbers);
590 37 : MaxAlphas = max(MaxAlphas, NumAlphas);
591 37 : MaxNumbers = max(MaxNumbers, NumNumbers);
592 : }
593 796 : if (state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, "FluidProperties:GlycolConcentration") > 0) {
594 28 : state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(
595 : state, "FluidProperties:GlycolConcentration", Status, NumAlphas, NumNumbers);
596 28 : MaxAlphas = max(MaxAlphas, NumAlphas);
597 28 : MaxNumbers = max(MaxNumbers, NumNumbers);
598 : }
599 796 : int NumOfFluidTempArrays = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, "FluidProperties:Temperatures");
600 796 : if (NumOfFluidTempArrays > 0) {
601 30 : state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(state, "FluidProperties:Temperatures", Status, NumAlphas, NumNumbers);
602 30 : MaxAlphas = max(MaxAlphas, NumAlphas);
603 30 : MaxNumbers = max(MaxNumbers, NumNumbers);
604 : }
605 796 : int NumOfSatFluidPropArrays = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, "FluidProperties:Saturated");
606 796 : if (NumOfSatFluidPropArrays > 0) {
607 28 : state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(state, "FluidProperties:Saturated", Status, NumAlphas, NumNumbers);
608 28 : MaxAlphas = max(MaxAlphas, NumAlphas);
609 28 : MaxNumbers = max(MaxNumbers, NumNumbers);
610 : }
611 796 : int NumOfSHFluidPropArrays = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, "FluidProperties:Superheated");
612 796 : if (NumOfSHFluidPropArrays > 0) {
613 28 : state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(state, "FluidProperties:Superheated", Status, NumAlphas, NumNumbers);
614 28 : MaxAlphas = max(MaxAlphas, NumAlphas);
615 28 : MaxNumbers = max(MaxNumbers, NumNumbers);
616 : }
617 796 : int NumOfGlyFluidPropArrays = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, "FluidProperties:Concentration");
618 796 : if (NumOfGlyFluidPropArrays > 0) {
619 4 : state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(state, "FluidProperties:Concentration", Status, NumAlphas, NumNumbers);
620 4 : MaxAlphas = max(MaxAlphas, NumAlphas);
621 4 : MaxNumbers = max(MaxNumbers, NumNumbers);
622 : }
623 :
624 796 : Alphas.allocate(MaxAlphas);
625 796 : cAlphaFields.allocate(MaxAlphas);
626 796 : lAlphaFieldBlanks.allocate(MaxAlphas);
627 :
628 796 : Alphas = "";
629 796 : cAlphaFields = "";
630 796 : lAlphaFieldBlanks = false;
631 :
632 796 : Numbers.allocate(MaxNumbers);
633 796 : cNumericFields.allocate(MaxNumbers);
634 796 : lNumericFieldBlanks.allocate(MaxNumbers);
635 :
636 796 : Numbers = 0.0;
637 796 : cNumericFields = "";
638 796 : lNumericFieldBlanks = false;
639 :
640 : // First things first, add refrigerant placeholder for Steam.
641 796 : auto *steam = new RefrigProps;
642 796 : steam->Name = "STEAM";
643 796 : df->refrigs.push_back(steam);
644 796 : steam->Num = df->refrigs.isize();
645 :
646 : // Check to see if there is any FluidName input. If not, this is okay as
647 : // long as the user only desires to simulate loops with water. More than
648 : // one FluidName input is not allowed.
649 796 : CurrentModuleObject = "FluidProperties:Name";
650 796 : int NumOfOptionalInput = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, CurrentModuleObject);
651 :
652 836 : for (int Loop = 1; Loop <= NumOfOptionalInput; ++Loop) {
653 40 : state.dataInputProcessing->inputProcessor->getObjectItem(state,
654 : CurrentModuleObject,
655 : Loop,
656 : Alphas,
657 : NumAlphas,
658 : Numbers,
659 : NumNumbers,
660 : Status,
661 : lNumericFieldBlanks,
662 : lAlphaFieldBlanks,
663 : cAlphaFields,
664 : cNumericFields);
665 :
666 40 : if (Alphas(2) == "REFRIGERANT") {
667 29 : if (GetRefrigNum(state, Alphas(1)) == 0) {
668 29 : auto *refrig = new RefrigProps;
669 29 : refrig->Name = Alphas(1);
670 29 : df->refrigs.push_back(refrig);
671 29 : refrig->Num = df->refrigs.isize();
672 : }
673 11 : } else if (Alphas(2) == "GLYCOL") {
674 11 : if (GetGlycolRawNum(state, Alphas(1)) == 0) {
675 11 : auto *glycolRaw = new GlycolRawProps;
676 11 : glycolRaw->Name = Alphas(1);
677 11 : df->glycolsRaw.push_back(glycolRaw);
678 11 : glycolRaw->Num = df->glycolsRaw.isize();
679 : }
680 : } else {
681 0 : ShowSevereError(state, format("{}: {}=\"{}\", invalid type", routineName, CurrentModuleObject, Alphas(1)));
682 0 : ShowContinueError(state, format("...entered value=\"{}, Only REFRIGERANT or GLYCOL allowed as {}", Alphas(2), cAlphaFields(2)));
683 0 : ErrorsFound = true;
684 : }
685 : }
686 :
687 796 : if (ErrorsFound) {
688 0 : ShowFatalError(state, format("{}: Previous errors in input cause program termination.", routineName));
689 : }
690 :
691 : // Initialize Steam
692 796 : steam->NumPsPoints = DefaultNumSteamTemps;
693 796 : steam->PsTemps.allocate(DefaultNumSteamTemps);
694 796 : steam->PsValues.allocate(DefaultNumSteamTemps);
695 796 : steam->NumHPoints = DefaultNumSteamTemps;
696 796 : steam->HTemps.allocate(DefaultNumSteamTemps);
697 796 : steam->HfValues.allocate(DefaultNumSteamTemps);
698 796 : steam->HfgValues.allocate(DefaultNumSteamTemps);
699 796 : steam->NumCpPoints = DefaultNumSteamTemps;
700 796 : steam->CpTemps.allocate(DefaultNumSteamTemps);
701 796 : steam->CpfValues.allocate(DefaultNumSteamTemps);
702 796 : steam->CpfgValues.allocate(DefaultNumSteamTemps);
703 796 : steam->NumRhoPoints = DefaultNumSteamTemps;
704 796 : steam->RhoTemps.allocate(DefaultNumSteamTemps);
705 796 : steam->RhofValues.allocate(DefaultNumSteamTemps);
706 796 : steam->RhofgValues.allocate(DefaultNumSteamTemps);
707 :
708 796 : steam->PsTemps = DefaultSteamTemps;
709 796 : steam->PsValues = DefaultSteamPressData;
710 796 : steam->HTemps = DefaultSteamTemps;
711 796 : steam->HfValues = DefaultSteamEnthalpyFluidData;
712 796 : steam->HfgValues = DefaultSteamEnthalpyGasFluidData;
713 796 : steam->CpTemps = DefaultSteamTemps;
714 796 : steam->CpfValues = DefaultSteamCpFluidData;
715 796 : steam->CpfgValues = DefaultSteamCpGasFluidData;
716 796 : steam->RhoTemps = DefaultSteamTemps;
717 796 : steam->RhofValues = DefaultSteamDensityFluidData;
718 796 : steam->RhofgValues = DefaultSteamDensityGasFluidData;
719 :
720 796 : steam->NumSupTempPoints = DefaultNumSteamSuperheatedTemps;
721 796 : steam->NumSupPressPoints = DefaultNumSteamSuperheatedPressure;
722 796 : steam->SupTemps.allocate(steam->NumSupTempPoints);
723 796 : steam->SupPress.allocate(steam->NumSupPressPoints);
724 796 : steam->HshValues.allocate(steam->NumSupPressPoints, steam->NumSupTempPoints);
725 796 : steam->RhoshValues.allocate(steam->NumSupPressPoints, steam->NumSupTempPoints);
726 796 : steam->SupTemps = DefaultSteamSuperheatedTemps;
727 796 : steam->SupPress = DefaultSteamSuperheatedPressData;
728 796 : steam->HshValues = DefaultSteamSuperheatedEnthalpyData;
729 796 : steam->RhoshValues = DefaultSteamSuperheatedDensityData;
730 :
731 : // Read in all of the temperature arrays in the input file
732 796 : FluidTemps.allocate(NumOfFluidTempArrays);
733 :
734 796 : CurrentModuleObject = "FluidProperties:Temperatures";
735 :
736 858 : for (int Loop = 1; Loop <= NumOfFluidTempArrays; ++Loop) {
737 62 : auto &tempArray = FluidTemps(Loop);
738 :
739 62 : state.dataInputProcessing->inputProcessor->getObjectItem(state,
740 : CurrentModuleObject,
741 : Loop,
742 : Alphas,
743 : NumAlphas,
744 : Numbers,
745 : NumNumbers,
746 : Status,
747 : lNumericFieldBlanks,
748 : lAlphaFieldBlanks,
749 : cAlphaFields,
750 : cNumericFields);
751 :
752 62 : tempArray.Name = Alphas(1);
753 62 : tempArray.NumOfTemps = NumNumbers;
754 :
755 62 : tempArray.Temps.allocate(tempArray.NumOfTemps);
756 62 : tempArray.Temps = Numbers({1, NumNumbers});
757 :
758 4877 : for (int TempLoop = 2; TempLoop <= tempArray.NumOfTemps; ++TempLoop) {
759 4815 : if (tempArray.Temps(TempLoop) <= tempArray.Temps(TempLoop - 1)) {
760 0 : ShowSevereError(
761 0 : state, format("{}: {} name={}, lists must have data in ascending order", routineName, CurrentModuleObject, tempArray.Name));
762 0 : ShowContinueError(state,
763 0 : format("First out of order occurrence at Temperature #({}) {{{:.R3}}} >= Temp({}) {{{:.R3}}}",
764 0 : TempLoop - 1,
765 : tempArray.Temps(TempLoop - 1),
766 : TempLoop,
767 : tempArray.Temps(TempLoop)));
768 0 : ErrorsFound = true;
769 0 : break;
770 : }
771 : }
772 : }
773 :
774 : // For each property, cycle through all the valid input until the proper match is found.
775 :
776 : // ********** SATURATED DATA SECTION **********
777 :
778 : // Get: ***** Saturation Pressure temperatures and data (fluidgas only) *****
779 : // This section added by S.J.Rees May 2002.
780 796 : CurrentModuleObject = "FluidProperties:Saturated";
781 999 : for (int InData = 1; InData <= NumOfSatFluidPropArrays; ++InData) {
782 :
783 203 : state.dataInputProcessing->inputProcessor->getObjectItem(state,
784 : CurrentModuleObject,
785 : InData,
786 : Alphas,
787 : NumAlphas,
788 : Numbers,
789 : NumNumbers,
790 : Status,
791 : lNumericFieldBlanks,
792 : lAlphaFieldBlanks,
793 : cAlphaFields,
794 : cNumericFields);
795 :
796 203 : ErrorObjectHeader eoh{routineName, CurrentModuleObject, Alphas(1)};
797 :
798 203 : auto *refrig = GetRefrig(state, Alphas(1));
799 203 : if (refrig == nullptr) {
800 0 : ShowSevereItemNotFound(state, eoh, cAlphaFields(1), Alphas(1));
801 0 : ErrorsFound = true;
802 0 : continue;
803 : }
804 :
805 203 : if (refrig->satTempArrayName != "" && refrig->satTempArrayName != Alphas(4)) {
806 0 : ShowSevereCustomMessage(state, eoh, "Saturated temperature arrays are not the same for different properties");
807 0 : ErrorsFound = true;
808 0 : continue;
809 : }
810 203 : refrig->satTempArrayName = Alphas(4);
811 :
812 203 : int tempArrayNum = Util::FindItemInList(Alphas(4), FluidTemps);
813 203 : if (tempArrayNum == 0) {
814 0 : ShowSevereItemNotFound(state, eoh, cAlphaFields(4), Alphas(4));
815 0 : ErrorsFound = true;
816 0 : continue;
817 : }
818 :
819 203 : auto &tempArray = FluidTemps(tempArrayNum);
820 :
821 : // Make sure the number of points in the two arrays (temps and values) are the same
822 203 : if (NumNumbers != tempArray.NumOfTemps) {
823 0 : ShowSevereError(state, format("{}: {} Name={}", routineName, CurrentModuleObject, refrig->Name));
824 0 : ShowContinueError(state,
825 0 : format("Temperature Name={}, Temperature array and fluid saturation pressure array must have the "
826 : "same number of points",
827 0 : tempArray.Name));
828 0 : ShowContinueError(
829 0 : state, format("Temperature # points={} whereas {} # {} points={}", tempArray.NumOfTemps, refrig->Name, Alphas(2), NumNumbers));
830 0 : ErrorsFound = true;
831 0 : break; // the TempLoop DO Loop
832 : }
833 :
834 203 : if (Alphas(2) == "PRESSURE" && Alphas(3) == "FLUIDGAS") {
835 29 : refrig->NumPsPoints = tempArray.NumOfTemps;
836 29 : refrig->PsTemps.allocate(refrig->NumPsPoints);
837 29 : refrig->PsValues.allocate(refrig->NumPsPoints);
838 29 : refrig->PsTemps = tempArray.Temps;
839 29 : refrig->PsValues = Numbers({1, NumNumbers});
840 :
841 174 : } else if (Alphas(2) == "ENTHALPY" && Alphas(3) == "FLUID") {
842 29 : refrig->NumHPoints = tempArray.NumOfTemps;
843 29 : refrig->HTemps.allocate(refrig->NumHPoints);
844 29 : refrig->HfValues.allocate(refrig->NumHPoints);
845 29 : refrig->HTemps = tempArray.Temps;
846 29 : refrig->HfValues = Numbers({1, NumNumbers});
847 :
848 145 : } else if (Alphas(2) == "ENTHALPY" && Alphas(3) == "FLUIDGAS") {
849 29 : refrig->NumHPoints = tempArray.NumOfTemps;
850 29 : refrig->HfgValues.allocate(refrig->NumHPoints);
851 29 : refrig->HfgValues = Numbers({1, NumNumbers});
852 :
853 116 : } else if (Alphas(2) == "SPECIFICHEAT" && Alphas(3) == "FLUID") {
854 29 : refrig->NumCpPoints = tempArray.NumOfTemps;
855 29 : refrig->CpTemps.allocate(refrig->NumCpPoints);
856 29 : refrig->CpfValues.allocate(refrig->NumCpPoints);
857 29 : refrig->CpTemps = tempArray.Temps;
858 29 : refrig->CpfValues = Numbers({1, NumNumbers});
859 :
860 87 : } else if (Alphas(2) == "SPECIFICHEAT" && Alphas(3) == "FLUIDGAS") {
861 29 : refrig->NumCpPoints = tempArray.NumOfTemps;
862 29 : refrig->CpfgValues.allocate(refrig->NumCpPoints);
863 29 : refrig->CpfgValues = Numbers({1, NumNumbers});
864 :
865 58 : } else if (Alphas(2) == "DENSITY" && Alphas(3) == "FLUID") {
866 29 : refrig->NumRhoPoints = tempArray.NumOfTemps;
867 29 : refrig->RhoTemps.allocate(refrig->NumRhoPoints);
868 29 : refrig->RhofValues.allocate(refrig->NumRhoPoints);
869 29 : refrig->RhoTemps = tempArray.Temps;
870 29 : refrig->RhofValues = Numbers({1, NumNumbers});
871 :
872 29 : } else if (Alphas(2) == "DENSITY" && Alphas(3) == "FLUIDGAS") {
873 29 : refrig->NumRhoPoints = tempArray.NumOfTemps;
874 29 : refrig->RhofgValues.allocate(refrig->NumRhoPoints);
875 29 : refrig->RhofgValues = Numbers({1, NumNumbers});
876 :
877 0 : } else if (Alphas(3) == "FLUID") {
878 0 : if (Alphas(2) != "ENTHALPY" && Alphas(2) != "SPECIFICHEAT" && Alphas(2) != "DENSITY") {
879 0 : ShowWarningError(state, format("{}: {} Name={}", routineName, CurrentModuleObject, refrig->Name));
880 0 : ShowContinueError(state, format(R"({}="FLUID", but {}="{}" is not valid.)", cAlphaFields(3), cAlphaFields(2), Alphas(2)));
881 0 : ShowContinueError(state, format(R"(Valid choices are "Enthalpy", "SpecificHeat", "Density".)"));
882 0 : ShowContinueError(state, "This fluid property will not be processed nor available for the simulation.");
883 : }
884 :
885 0 : } else if (Alphas(3) == "FLUIDGAS") {
886 0 : if (Alphas(2) != "PRESSURE" && Alphas(2) != "ENTHALPY" && Alphas(2) != "SPECIFICHEAT" && Alphas(2) != "DENSITY") {
887 0 : ShowWarningError(state, format("{}: {} Name={}", routineName, CurrentModuleObject, refrig->Name));
888 0 : ShowContinueError(state, format(R"({}="FluidGas", but {}="{}" is not valid.)", cAlphaFields(3), cAlphaFields(2), Alphas(2)));
889 0 : ShowContinueError(state, format(R"(Valid choices are "Pressure", "Enthalpy", "SpecificHeat", "Density".)"));
890 0 : ShowContinueError(state, "This fluid property will not be processed nor available for the simulation.");
891 : }
892 : } else {
893 0 : ShowWarningError(state, format("{}: {} Name={}", routineName, CurrentModuleObject, refrig->Name));
894 0 : ShowContinueError(state, format("{}=\"{}\" is not valid.", cAlphaFields(3), Alphas(3)));
895 0 : ShowContinueError(state, format(R"(Valid choices are "Fluid", "GasFluid".)"));
896 0 : ShowContinueError(state, "This fluid property will not be processed nor available for the simulation.");
897 : }
898 : } // for (inData)
899 :
900 1621 : for (auto const *refrig : df->refrigs) {
901 :
902 825 : ErrorObjectHeader eoh{routineName, CurrentModuleObject, refrig->Name};
903 825 : if (refrig->PsValues.size() == 0) {
904 0 : ShowSevereCustomMessage(state,
905 : eoh,
906 0 : format(R"(No Gas/Fluid Saturation Pressure found. Need properties with {}="Pressure" and {}="FluidGas".)",
907 : cAlphaFields(2),
908 : cAlphaFields(3)));
909 0 : ErrorsFound = true;
910 : }
911 :
912 825 : if (refrig->HfValues.size() == 0) {
913 0 : ShowSevereCustomMessage(state,
914 : eoh,
915 0 : format(R"(No Saturated Fluid Enthalpy found. Need properties with {}="Enthalpy" and {}="Fluid".)",
916 : cAlphaFields(2),
917 : cAlphaFields(3)));
918 0 : ErrorsFound = true;
919 : }
920 :
921 825 : if (refrig->HfgValues.size() == 0) {
922 0 : ShowSevereCustomMessage(state,
923 : eoh,
924 0 : format(R"(No Saturated Gas/Fluid Enthalpy found. Need properties with {}="Enthalpy" and {}="FluidGas".)",
925 : cAlphaFields(2),
926 : cAlphaFields(3)));
927 0 : ErrorsFound = true;
928 : }
929 :
930 825 : if (refrig->CpfValues.size() == 0) {
931 0 : ShowSevereCustomMessage(state,
932 : eoh,
933 0 : format(R"(No Saturated Fluid Specific Heat found. Need properties with {}="SpecificHeat" and {}="Fluid".)",
934 : cAlphaFields(2),
935 : cAlphaFields(3)));
936 0 : ErrorsFound = true;
937 : }
938 :
939 825 : if (refrig->CpfgValues.size() == 0) {
940 0 : ShowSevereCustomMessage(
941 : state,
942 : eoh,
943 0 : format(R"(No Saturated Gas/Fluid Specific Heat found. Need properties with {}="SpecificHeat" and {}="FluidGas".)",
944 : cAlphaFields(2),
945 : cAlphaFields(3)));
946 0 : ErrorsFound = true;
947 : }
948 :
949 825 : if (refrig->RhofValues.size() == 0) {
950 0 : ShowSevereCustomMessage(state,
951 : eoh,
952 0 : format(R"(No Saturated Fluid Density found. Need properties with {}="Density" and {}="Fluid".)",
953 : cAlphaFields(2),
954 : cAlphaFields(3)));
955 0 : ErrorsFound = true;
956 : }
957 :
958 825 : if (refrig->RhofgValues.size() == 0) {
959 0 : ShowSevereCustomMessage(state,
960 : eoh,
961 0 : format(R"(No Saturated Gas/Fluid Density found. Need properties with {}="Density" and {}="FluidGas".)",
962 : cAlphaFields(2),
963 : cAlphaFields(3)));
964 0 : ErrorsFound = true;
965 : }
966 : } // for (refrigNum)
967 :
968 : // Check: TEMPERATURES for saturated density (must all be the same)
969 : // IF (RefrigData(Loop)%NumCpPoints /= RefrigData(Loop)%NumCpPoints) THEN
970 : //!!! Error -- can never happen, does this mean NumCp vs. NumRho?
971 : // CALL ShowFatalError(state, 'GetFluidPropertiesData: Number of specific heat fluid and gas/fluid points are not the same')
972 : // ELSE
973 : // DO TempLoop = 1, RefrigData(Loop)%NumCpPoints
974 : //!!! Error -- something else that can never happen
975 : // IF (ABS(RefrigData(Loop)%CpTemps(TempLoop)-RefrigData(Loop)%CpTemps(TempLoop)) > TempToler) THEN
976 : // CALL ShowSevereError(state, 'GetFluidPropertiesData: Temperatures for specific heat fluid and '// &
977 : // 'gas/fluid points are not the same')
978 : // CALL ShowContinueError(state, 'Error occurs in Refrigerant Data Name='//TRIM(RefrigData(Loop)%Name))
979 : // WRITE(String1,*) TempLoop
980 : // String1=ADJUSTL(String1)
981 : // String2=TrimSigDigits(RefrigData(Loop)%CpTemps(TempLoop),3)
982 : // String2=ADJUSTL(String2)
983 : // String4=TrimSigDigits(RefrigData(Loop)%CpTemps(TempLoop),3)
984 : // String4=ADJUSTL(String4)
985 : // CALL ShowContinueError(state, 'First Occurrence at CpTemp('//TRIM(String1)//') {'//TRIM(String2)//'} /=
986 : // {'//TRIM(String4)//'}') ErrorsFound=.TRUE. EXIT
987 : // ENDIF
988 : // END DO
989 : // END IF
990 :
991 : // ********** SUPERHEATED DATA SECTION **********
992 : // Get: ***** ENTHALPY of SUPERHEATED GAS *****
993 : // First find the number of pressure value syntax lines have been entered and
994 : // make sure that all of the pressure input is linked to the same temperature list
995 :
996 : // Need to do a setup pass to find the number of pressure points
997 796 : CurrentModuleObject = "FluidProperties:Superheated";
998 4346 : for (int InData = 1; InData <= NumOfSHFluidPropArrays; ++InData) {
999 3550 : state.dataInputProcessing->inputProcessor->getObjectItem(state,
1000 : CurrentModuleObject,
1001 : InData,
1002 : Alphas,
1003 : NumAlphas,
1004 : Numbers,
1005 : NumNumbers,
1006 : Status,
1007 : lNumericFieldBlanks,
1008 : lAlphaFieldBlanks,
1009 : cAlphaFields,
1010 : cNumericFields);
1011 :
1012 3550 : ErrorObjectHeader eoh{routineName, CurrentModuleObject, Alphas(1)};
1013 :
1014 3550 : auto *refrig = GetRefrig(state, Alphas(1));
1015 3550 : if (refrig == nullptr) {
1016 0 : ShowSevereItemNotFound(state, eoh, cAlphaFields(1), Alphas(1));
1017 0 : ErrorsFound = true;
1018 1775 : continue;
1019 : }
1020 :
1021 3550 : if (refrig->supTempArrayName != "" && refrig->supTempArrayName != Alphas(3)) {
1022 0 : ShowSevereCustomMessage(state, eoh, "Saturated temperature arrays are not the same for different properties");
1023 0 : ErrorsFound = true;
1024 0 : continue;
1025 : }
1026 :
1027 3550 : refrig->supTempArrayName = Alphas(3);
1028 :
1029 3550 : if (Alphas(2) != "ENTHALPY") continue;
1030 :
1031 1775 : int supTempArrayNum = Util::FindItemInList(refrig->supTempArrayName, FluidTemps);
1032 1775 : if (supTempArrayNum == 0) {
1033 0 : ShowSevereItemNotFound(state, eoh, cAlphaFields(3), Alphas(3));
1034 0 : ErrorsFound = true;
1035 0 : continue;
1036 : }
1037 :
1038 1775 : auto const &supTempArray = FluidTemps(supTempArrayNum);
1039 1775 : refrig->NumSupTempPoints = supTempArray.NumOfTemps;
1040 1775 : refrig->SupTemps.allocate(refrig->NumSupTempPoints);
1041 1775 : refrig->SupTemps = supTempArray.Temps;
1042 :
1043 1775 : if (Numbers(1) <= 0.0) {
1044 0 : ShowSevereError(state, format("{}: {} Name={}", routineName, CurrentModuleObject, refrig->Name));
1045 0 : ShowContinueError(state, format("Negative pressures not allowed in fluid property input data, Value =[{:.3R}].", Numbers(1)));
1046 0 : ErrorsFound = true;
1047 0 : continue;
1048 : }
1049 :
1050 1775 : if (std::find(refrig->SupPress.begin(), refrig->SupPress.end(), Numbers(1)) == refrig->SupPress.end()) {
1051 1775 : refrig->SupPress.push_back(Numbers(1));
1052 1775 : ++refrig->NumSupPressPoints;
1053 : }
1054 : }
1055 :
1056 : // Sort and allocate pressure point arrays
1057 1621 : for (auto *refrig : df->refrigs) {
1058 825 : if (refrig->Name == "STEAM") continue;
1059 :
1060 29 : std::sort(refrig->SupPress.begin(), refrig->SupPress.end());
1061 :
1062 29 : refrig->HshValues.allocate(refrig->NumSupPressPoints, refrig->NumSupTempPoints);
1063 29 : refrig->RhoshValues.allocate(refrig->NumSupPressPoints, refrig->NumSupTempPoints);
1064 : }
1065 :
1066 : // Finally, get the pressure and enthalpy values from the user input
1067 796 : CurrentModuleObject = "FluidProperties:Superheated";
1068 4346 : for (int InData = 1; InData <= NumOfSHFluidPropArrays; ++InData) {
1069 3550 : state.dataInputProcessing->inputProcessor->getObjectItem(state,
1070 : CurrentModuleObject,
1071 : InData,
1072 : Alphas,
1073 : NumAlphas,
1074 : Numbers,
1075 : NumNumbers,
1076 : Status,
1077 : lNumericFieldBlanks,
1078 : lAlphaFieldBlanks,
1079 : cAlphaFields,
1080 : cNumericFields);
1081 :
1082 3550 : ErrorObjectHeader eoh{routineName, CurrentModuleObject, Alphas(1)};
1083 :
1084 3550 : auto *refrig = GetRefrig(state, Alphas(1));
1085 3550 : if (refrig == nullptr) {
1086 0 : ShowSevereItemNotFound(state, eoh, cAlphaFields(1), Alphas(1));
1087 0 : ErrorsFound = true;
1088 0 : continue;
1089 : }
1090 :
1091 3550 : if ((NumNumbers - 1) != refrig->NumSupTempPoints) {
1092 0 : ShowSevereCustomMessage(state,
1093 : eoh,
1094 0 : format("Number of superheated {} points ({}) not equal to number of temperature points ({})",
1095 : Alphas(2),
1096 0 : NumNumbers - 1,
1097 0 : refrig->NumSupTempPoints));
1098 0 : ErrorsFound = true;
1099 0 : continue;
1100 : }
1101 :
1102 : // Find which pressure point this temperature series belongs to
1103 3550 : auto pressFound = std::find(refrig->SupPress.begin(), refrig->SupPress.end(), Numbers(1));
1104 3550 : assert(pressFound != refrig->SupPress.end());
1105 3550 : int pressNum = (pressFound - refrig->SupPress.begin()) + 1;
1106 :
1107 3550 : if (Alphas(2) == "ENTHALPY") {
1108 1775 : refrig->HshValues(pressNum, {1, refrig->NumSupTempPoints}) = Numbers({2, NumNumbers});
1109 1775 : } else if (Alphas(2) == "DENSITY") {
1110 1775 : refrig->RhoshValues(pressNum, {1, refrig->NumSupTempPoints}) = Numbers({2, NumNumbers});
1111 : } else {
1112 0 : ShowWarningInvalidKey(state,
1113 : eoh,
1114 0 : cAlphaFields(2),
1115 0 : Alphas(2),
1116 : "",
1117 : R"(Valid options are ("Enthalpy", "Density"). Fluid will not be available for simulation.)");
1118 0 : ErrorsFound = true;
1119 0 : continue;
1120 : }
1121 : } // for (InData)
1122 :
1123 : // *************** RAW GLYCOLS ***************
1124 : // Go through each glycol found in the fluid names statement and read in the data
1125 : // Note that every valid fluid must have ALL of the necessary data or a fatal error will
1126 : // be produced.
1127 :
1128 : // Propylene and ethylene are available by default
1129 :
1130 796 : auto *waterRaw = GetGlycolRaw(state, "WATER");
1131 796 : if (waterRaw == nullptr) {
1132 796 : waterRaw = new GlycolRawProps;
1133 796 : waterRaw->Name = "WATER";
1134 :
1135 796 : df->glycolsRaw.push_back(waterRaw);
1136 796 : waterRaw->Num = df->glycolsRaw.isize();
1137 : }
1138 :
1139 796 : waterRaw->CpDataPresent = true;
1140 796 : waterRaw->NumCpConcPoints = 1;
1141 796 : waterRaw->NumCpTempPoints = DefaultNumGlyTemps;
1142 796 : waterRaw->CpTemps.allocate(waterRaw->NumCpTempPoints);
1143 796 : waterRaw->CpTemps = DefaultGlycolTemps;
1144 796 : waterRaw->CpConcs.allocate(waterRaw->NumCpConcPoints);
1145 796 : waterRaw->CpConcs = 0.0;
1146 796 : waterRaw->CpValues.allocate(waterRaw->NumCpConcPoints, waterRaw->NumCpTempPoints);
1147 796 : waterRaw->CpValues(1, {1, waterRaw->NumCpTempPoints}) = DefaultWaterCpData;
1148 :
1149 796 : waterRaw->RhoDataPresent = true;
1150 796 : waterRaw->NumRhoConcPoints = 1;
1151 796 : waterRaw->NumRhoTempPoints = DefaultNumGlyTemps;
1152 796 : waterRaw->RhoTemps.allocate(waterRaw->NumRhoTempPoints);
1153 796 : waterRaw->RhoTemps = DefaultGlycolTemps;
1154 796 : waterRaw->RhoConcs.allocate(waterRaw->NumRhoConcPoints);
1155 796 : waterRaw->RhoConcs = 0.0;
1156 796 : waterRaw->RhoValues.allocate(waterRaw->NumRhoConcPoints, waterRaw->NumRhoTempPoints);
1157 796 : waterRaw->RhoValues(1, {1, waterRaw->NumRhoTempPoints}) = DefaultWaterRhoData;
1158 :
1159 796 : waterRaw->CondDataPresent = true;
1160 796 : waterRaw->NumCondConcPoints = 1;
1161 796 : waterRaw->NumCondTempPoints = DefaultNumGlyTemps;
1162 796 : waterRaw->CondTemps.allocate(waterRaw->NumCondTempPoints);
1163 796 : waterRaw->CondTemps = DefaultGlycolTemps;
1164 796 : waterRaw->CondConcs.allocate(waterRaw->NumCondConcPoints);
1165 796 : waterRaw->CondConcs = 0.0;
1166 796 : waterRaw->CondValues.allocate(waterRaw->NumCondConcPoints, waterRaw->NumCondTempPoints);
1167 796 : waterRaw->CondValues(1, {1, waterRaw->NumCondTempPoints}) = DefaultWaterCondData;
1168 :
1169 796 : waterRaw->ViscDataPresent = true;
1170 796 : waterRaw->NumViscConcPoints = 1;
1171 796 : waterRaw->NumViscTempPoints = DefaultNumGlyTemps;
1172 796 : waterRaw->ViscTemps.allocate(waterRaw->NumViscTempPoints);
1173 796 : waterRaw->ViscTemps = DefaultGlycolTemps;
1174 796 : waterRaw->ViscConcs.allocate(waterRaw->NumViscConcPoints);
1175 796 : waterRaw->ViscConcs = 0.0;
1176 796 : waterRaw->ViscValues.allocate(waterRaw->NumViscConcPoints, waterRaw->NumViscTempPoints);
1177 796 : waterRaw->ViscValues(1, {1, waterRaw->NumViscTempPoints}) = DefaultWaterViscData;
1178 :
1179 796 : auto *ethylene = GetGlycolRaw(state, "ETHYLENEGLYCOL");
1180 796 : if (ethylene == nullptr) {
1181 796 : ethylene = new GlycolRawProps;
1182 796 : ethylene->Name = "ETHYLENEGLYCOL";
1183 796 : df->glycolsRaw.push_back(ethylene);
1184 796 : ethylene->Num = df->glycolsRaw.isize();
1185 : }
1186 :
1187 : // Specific Heat
1188 796 : ethylene->CpDataPresent = true; // Flag set when specific heat data is available
1189 796 : ethylene->NumCpTempPoints = DefaultNumGlyTemps; // Number of temperature points for specific heat
1190 796 : ethylene->NumCpConcPoints = DefaultNumGlyConcs; // Number of concentration points for specific heat
1191 :
1192 796 : ethylene->CpTemps.allocate(ethylene->NumCpTempPoints); // Temperatures for specific heat of glycol
1193 796 : ethylene->CpTemps = DefaultGlycolTemps;
1194 :
1195 796 : ethylene->CpConcs.allocate(ethylene->NumCpConcPoints); // Concentration for specific heat of glycol
1196 796 : ethylene->CpConcs = DefaultGlycolConcs;
1197 :
1198 796 : ethylene->CpValues.allocate(ethylene->NumCpConcPoints, ethylene->NumCpTempPoints); // Specific heat data values
1199 8756 : for (int i = 1; i <= ethylene->NumCpConcPoints; ++i)
1200 7960 : ethylene->CpValues(i, {1, ethylene->NumCpTempPoints}) = DefaultEthGlyCpData[i - 1];
1201 :
1202 : // Density
1203 796 : ethylene->RhoDataPresent = true;
1204 796 : ethylene->NumRhoTempPoints = DefaultNumGlyTemps;
1205 796 : ethylene->NumRhoConcPoints = DefaultNumGlyConcs;
1206 :
1207 796 : ethylene->RhoTemps.allocate(ethylene->NumRhoTempPoints); // Temperatures for density of glycol
1208 796 : ethylene->RhoTemps = DefaultGlycolTemps;
1209 :
1210 796 : ethylene->RhoConcs.allocate(ethylene->NumRhoConcPoints); // Concentration for density of glycol
1211 796 : ethylene->RhoConcs = DefaultGlycolConcs;
1212 :
1213 796 : ethylene->RhoValues.allocate(ethylene->NumRhoConcPoints, ethylene->NumRhoTempPoints); // Density data values
1214 8756 : for (int i = 1; i <= ethylene->NumRhoConcPoints; ++i)
1215 7960 : ethylene->RhoValues(i, {1, ethylene->NumRhoTempPoints}) = DefaultEthGlyRhoData[i - 1];
1216 :
1217 : // Conductivity
1218 796 : ethylene->CondDataPresent = true;
1219 796 : ethylene->NumCondTempPoints = DefaultNumGlyTemps;
1220 796 : ethylene->NumCondConcPoints = DefaultNumGlyConcs;
1221 :
1222 796 : ethylene->CondTemps.allocate(ethylene->NumCondTempPoints); // Temperatures for density of glycol
1223 796 : ethylene->CondTemps = DefaultGlycolTemps;
1224 :
1225 796 : ethylene->CondConcs.allocate(ethylene->NumCondConcPoints); // Concentration for density of glycol
1226 796 : ethylene->CondConcs = DefaultGlycolConcs;
1227 :
1228 796 : ethylene->CondValues.allocate(ethylene->NumCondConcPoints, ethylene->NumCondTempPoints); // Density data values
1229 8756 : for (int i = 1; i <= ethylene->NumCondConcPoints; ++i)
1230 7960 : ethylene->CondValues(i, {1, ethylene->NumCondTempPoints}) = DefaultEthGlyCondData[i - 1];
1231 :
1232 : // Viscosity
1233 796 : ethylene->ViscDataPresent = true;
1234 796 : ethylene->NumViscTempPoints = DefaultNumGlyTemps;
1235 796 : ethylene->NumViscConcPoints = DefaultNumGlyConcs;
1236 :
1237 796 : ethylene->ViscTemps.allocate(ethylene->NumViscTempPoints); // Temperatures for density of glycol
1238 796 : ethylene->ViscTemps = DefaultGlycolTemps;
1239 :
1240 796 : ethylene->ViscConcs.allocate(ethylene->NumViscConcPoints); // Concentration for density of glycol
1241 796 : ethylene->ViscConcs = DefaultGlycolConcs;
1242 :
1243 796 : ethylene->ViscValues.allocate(ethylene->NumViscConcPoints, ethylene->NumViscTempPoints); // Density data values
1244 8756 : for (int i = 1; i <= ethylene->NumViscConcPoints; ++i)
1245 7960 : ethylene->ViscValues(i, {1, ethylene->NumViscTempPoints}) = DefaultEthGlyViscData[i - 1];
1246 :
1247 : // Propylene
1248 796 : auto *propylene = GetGlycolRaw(state, "PROPYLENEGLYCOL");
1249 796 : if (propylene == nullptr) {
1250 789 : propylene = new GlycolRawProps;
1251 789 : propylene->Name = "PROPYLENEGLYCOL";
1252 789 : df->glycolsRaw.push_back(propylene);
1253 789 : propylene->Num = df->glycolsRaw.isize();
1254 : }
1255 :
1256 : // Specific Heat
1257 796 : propylene->CpDataPresent = true; // Flag set when specific heat data is available
1258 796 : propylene->NumCpTempPoints = DefaultNumGlyTemps; // Number of temperature points for specific heat
1259 796 : propylene->NumCpConcPoints = DefaultNumGlyConcs; // Number of concentration points for specific heat
1260 :
1261 : // No ObjexxFCL templates for assigning std::array to Array1S, Probably want to covert these Array1D and 2D to std::vector eventually anyway
1262 796 : propylene->CpTemps.allocate(propylene->NumCpTempPoints); // Temperatures for specific heat of glycol
1263 796 : propylene->CpTemps = DefaultGlycolTemps;
1264 :
1265 796 : propylene->CpConcs.allocate(propylene->NumCpConcPoints); // Concentration for specific heat of glycol
1266 796 : propylene->CpConcs = DefaultGlycolConcs;
1267 :
1268 796 : propylene->CpValues.allocate(propylene->NumCpConcPoints, propylene->NumCpTempPoints); // Specific heat data values
1269 8756 : for (int i = 1; i <= propylene->NumCpConcPoints; ++i)
1270 7960 : propylene->CpValues(i, {1, propylene->NumCpTempPoints}) = DefaultPropGlyCpData[i - 1];
1271 :
1272 : // Density
1273 796 : propylene->RhoDataPresent = true;
1274 796 : propylene->NumRhoTempPoints = DefaultNumGlyTemps;
1275 796 : propylene->NumRhoConcPoints = DefaultNumGlyConcs;
1276 :
1277 796 : propylene->RhoTemps.allocate(propylene->NumRhoTempPoints); // Temperatures for density of glycol
1278 796 : propylene->RhoTemps = DefaultGlycolTemps;
1279 :
1280 796 : propylene->RhoConcs.allocate(propylene->NumRhoConcPoints); // Concentration for density of glycol
1281 796 : propylene->RhoConcs = DefaultGlycolConcs;
1282 :
1283 796 : propylene->RhoValues.allocate(propylene->NumRhoConcPoints, propylene->NumRhoTempPoints); // Density data values
1284 8756 : for (int i = 1; i <= propylene->NumRhoConcPoints; ++i)
1285 7960 : propylene->RhoValues(i, {1, propylene->NumRhoTempPoints}) = DefaultPropGlyRhoData[i - 1];
1286 :
1287 : // Conductivity
1288 796 : propylene->CondDataPresent = true;
1289 796 : propylene->NumCondTempPoints = DefaultNumGlyTemps;
1290 796 : propylene->NumCondConcPoints = DefaultNumGlyConcs;
1291 :
1292 796 : propylene->CondTemps.allocate(propylene->NumCondTempPoints); // Temperatures for density of glycol
1293 796 : propylene->CondTemps = DefaultGlycolTemps;
1294 :
1295 796 : propylene->CondConcs.allocate(propylene->NumCondConcPoints); // Concentration for density of glycol
1296 796 : propylene->CondConcs = DefaultGlycolConcs;
1297 :
1298 796 : propylene->CondValues.allocate(propylene->NumCondConcPoints, propylene->NumCondTempPoints); // Density data values
1299 8756 : for (int i = 1; i <= propylene->NumCondConcPoints; ++i)
1300 7960 : propylene->CondValues(i, {1, propylene->NumCondTempPoints}) = DefaultPropGlyCondData[i - 1];
1301 :
1302 : // Viscosity
1303 796 : propylene->ViscDataPresent = true;
1304 796 : propylene->NumViscTempPoints = DefaultNumGlyTemps;
1305 796 : propylene->NumViscConcPoints = DefaultNumGlyConcs;
1306 :
1307 796 : propylene->ViscTemps.allocate(propylene->NumViscTempPoints); // Temperatures for density of glycol
1308 796 : propylene->ViscTemps = DefaultGlycolTemps;
1309 :
1310 796 : propylene->ViscConcs.allocate(propylene->NumViscConcPoints); // Concentration for density of glycol
1311 796 : propylene->ViscConcs = DefaultGlycolConcs;
1312 :
1313 796 : propylene->ViscValues.allocate(propylene->NumViscConcPoints, propylene->NumViscTempPoints); // Density data values
1314 8756 : for (int i = 1; i <= propylene->NumViscConcPoints; ++i)
1315 7960 : propylene->ViscValues(i, {1, propylene->NumViscTempPoints}) = DefaultPropGlyViscData[i - 1];
1316 :
1317 796 : CurrentModuleObject = "FluidProperties:Concentration";
1318 896 : for (int InData = 1; InData <= NumOfGlyFluidPropArrays; ++InData) { // check temperatures given for specific heat are consistant
1319 100 : state.dataInputProcessing->inputProcessor->getObjectItem(state,
1320 : CurrentModuleObject,
1321 : InData,
1322 : Alphas,
1323 : NumAlphas,
1324 : Numbers,
1325 : NumNumbers,
1326 : Status,
1327 : lNumericFieldBlanks,
1328 : lAlphaFieldBlanks,
1329 : cAlphaFields,
1330 : cNumericFields);
1331 :
1332 100 : if (Alphas(1) == "WATER") continue; // Is this the right thing to do?
1333 :
1334 100 : ErrorObjectHeader eoh{routineName, CurrentModuleObject, Alphas(1)};
1335 :
1336 100 : auto *glycolRaw = GetGlycolRaw(state, Alphas(1));
1337 100 : if (glycolRaw == nullptr) {
1338 0 : ShowSevereItemNotFound(state, eoh, cAlphaFields(1), Alphas(1));
1339 0 : ErrorsFound = true;
1340 0 : continue;
1341 : }
1342 :
1343 100 : if (Util::FindItemInList(Alphas(3), FluidTemps) == 0) {
1344 0 : ShowSevereItemNotFound(state, eoh, cAlphaFields(3), Alphas(3));
1345 0 : ErrorsFound = true;
1346 0 : continue;
1347 : }
1348 :
1349 100 : if (Numbers(1) < 0.0) {
1350 0 : ShowSevereCustomMessage(state, eoh, "Negative concentrations not allowed in fluid property input data");
1351 0 : ErrorsFound = true;
1352 0 : continue;
1353 : }
1354 :
1355 : // Can temperatue and pressure points be different for different properties? Why is this allowed?
1356 100 : if (Alphas(2) == "SPECIFICHEAT") {
1357 25 : if (glycolRaw->CpTempArrayName != "" && glycolRaw->CpTempArrayName != Alphas(3)) {
1358 0 : ShowSevereCustomMessage(state,
1359 : eoh,
1360 0 : format("All specific heat data for the same glycol must use the same temperature list"
1361 : "Expected name={}, Entered name={}",
1362 0 : glycolRaw->CpTempArrayName,
1363 : Alphas(3)));
1364 0 : ErrorsFound = true;
1365 0 : continue;
1366 : }
1367 25 : glycolRaw->CpTempArrayName = Alphas(3);
1368 :
1369 25 : if (std::find(glycolRaw->CpConcs.begin(), glycolRaw->CpConcs.end(), Numbers(1)) == glycolRaw->CpConcs.end()) {
1370 15 : glycolRaw->CpConcs.push_back(Numbers(1));
1371 15 : ++glycolRaw->NumCpConcPoints;
1372 : }
1373 25 : glycolRaw->CpDataPresent = true;
1374 :
1375 75 : } else if (Alphas(2) == "DENSITY") {
1376 25 : if (glycolRaw->RhoTempArrayName != "" && glycolRaw->RhoTempArrayName != Alphas(3)) {
1377 0 : ShowSevereCustomMessage(state,
1378 : eoh,
1379 0 : format("All density data for the same glycol must use the same temperature list"
1380 : "Expected name={}, Entered name={}",
1381 0 : glycolRaw->RhoTempArrayName,
1382 : Alphas(3)));
1383 0 : ErrorsFound = true;
1384 0 : continue;
1385 : }
1386 25 : glycolRaw->RhoTempArrayName = Alphas(3);
1387 :
1388 25 : if (std::find(glycolRaw->RhoConcs.begin(), glycolRaw->RhoConcs.end(), Numbers(1)) == glycolRaw->RhoConcs.end()) {
1389 15 : glycolRaw->RhoConcs.push_back(Numbers(1));
1390 15 : ++glycolRaw->NumRhoConcPoints;
1391 : }
1392 25 : glycolRaw->RhoDataPresent = true;
1393 :
1394 50 : } else if (Alphas(2) == "CONDUCTIVITY") {
1395 25 : if (glycolRaw->CondTempArrayName != "" && glycolRaw->CondTempArrayName != Alphas(3)) {
1396 0 : ShowSevereCustomMessage(state,
1397 : eoh,
1398 0 : format("All conductivity data for the same glycol must use the same temperature list"
1399 : "Expected name={}, Entered name={}",
1400 0 : glycolRaw->CondTempArrayName,
1401 : Alphas(3)));
1402 0 : ErrorsFound = true;
1403 0 : continue;
1404 : }
1405 25 : glycolRaw->CondTempArrayName = Alphas(3);
1406 :
1407 25 : if (std::find(glycolRaw->CondConcs.begin(), glycolRaw->CondConcs.end(), Numbers(1)) == glycolRaw->CondConcs.end()) {
1408 15 : glycolRaw->CondConcs.push_back(Numbers(1));
1409 15 : ++glycolRaw->NumCondConcPoints;
1410 : }
1411 25 : glycolRaw->CondDataPresent = true;
1412 :
1413 25 : } else if (Alphas(2) == "VISCOSITY") {
1414 25 : if (glycolRaw->ViscTempArrayName != "" && glycolRaw->ViscTempArrayName != Alphas(3)) {
1415 0 : ShowSevereCustomMessage(state,
1416 : eoh,
1417 0 : format("All conductivity data for the same glycol must use the same temperature list"
1418 : "Expected name={}, Entered name={}",
1419 0 : glycolRaw->ViscTempArrayName,
1420 : Alphas(3)));
1421 0 : ErrorsFound = true;
1422 0 : continue;
1423 : }
1424 25 : glycolRaw->ViscTempArrayName = Alphas(3);
1425 :
1426 25 : if (std::find(glycolRaw->ViscConcs.begin(), glycolRaw->ViscConcs.end(), Numbers(1)) == glycolRaw->ViscConcs.end()) {
1427 15 : glycolRaw->ViscConcs.push_back(Numbers(1));
1428 15 : ++glycolRaw->NumViscConcPoints;
1429 : }
1430 25 : glycolRaw->ViscDataPresent = true;
1431 :
1432 : } else {
1433 0 : ShowSevereInvalidKey(
1434 0 : state, eoh, cAlphaFields(2), Alphas(2), "Valid options are (\"Specific Heat\", \"Density\", \"Conductivity\", \"Viscosity\")");
1435 0 : ErrorsFound = true;
1436 : }
1437 : }
1438 :
1439 : // Allocate and sort temp point/conc point arrays
1440 3188 : for (auto *glycolRaw : df->glycolsRaw) {
1441 :
1442 2392 : if (!glycolRaw->CpTempArrayName.empty()) {
1443 4 : int cpTempArrayNum = Util::FindItemInList(glycolRaw->CpTempArrayName, FluidTemps);
1444 4 : auto const &cpTempArray = FluidTemps(cpTempArrayNum);
1445 4 : glycolRaw->NumCpTempPoints = cpTempArray.NumOfTemps;
1446 4 : glycolRaw->CpTemps.allocate(glycolRaw->NumCpTempPoints);
1447 4 : glycolRaw->CpTemps = cpTempArray.Temps;
1448 :
1449 4 : glycolRaw->CpValues.allocate(glycolRaw->NumCpConcPoints, glycolRaw->NumCpTempPoints);
1450 4 : std::sort(glycolRaw->CpConcs.begin(), glycolRaw->CpConcs.end());
1451 : }
1452 :
1453 2392 : if (!glycolRaw->RhoTempArrayName.empty()) {
1454 4 : int rhoTempArrayNum = Util::FindItemInList(glycolRaw->RhoTempArrayName, FluidTemps);
1455 4 : auto const &rhoTempArray = FluidTemps(rhoTempArrayNum);
1456 4 : glycolRaw->NumRhoTempPoints = rhoTempArray.NumOfTemps;
1457 4 : glycolRaw->RhoTemps.allocate(glycolRaw->NumRhoTempPoints);
1458 4 : glycolRaw->RhoTemps = rhoTempArray.Temps;
1459 :
1460 4 : glycolRaw->RhoValues.allocate(glycolRaw->NumRhoConcPoints, glycolRaw->NumRhoTempPoints);
1461 4 : std::sort(glycolRaw->RhoConcs.begin(), glycolRaw->RhoConcs.end());
1462 : }
1463 :
1464 2392 : if (!glycolRaw->CondTempArrayName.empty()) {
1465 4 : int condTempArrayNum = Util::FindItemInList(glycolRaw->CondTempArrayName, FluidTemps);
1466 4 : auto const &condTempArray = FluidTemps(condTempArrayNum);
1467 4 : glycolRaw->NumCondTempPoints = condTempArray.NumOfTemps;
1468 4 : glycolRaw->CondTemps.allocate(glycolRaw->NumCondTempPoints);
1469 4 : glycolRaw->CondTemps = condTempArray.Temps;
1470 :
1471 4 : glycolRaw->CondValues.allocate(glycolRaw->NumCondConcPoints, glycolRaw->NumCondTempPoints);
1472 4 : std::sort(glycolRaw->CondConcs.begin(), glycolRaw->CondConcs.end());
1473 : }
1474 :
1475 2392 : if (!glycolRaw->ViscTempArrayName.empty()) {
1476 4 : int viscTempArrayNum = Util::FindItemInList(glycolRaw->ViscTempArrayName, FluidTemps);
1477 4 : auto const &viscTempArray = FluidTemps(viscTempArrayNum);
1478 4 : glycolRaw->NumViscTempPoints = viscTempArray.NumOfTemps;
1479 4 : glycolRaw->ViscTemps.allocate(glycolRaw->NumViscTempPoints);
1480 4 : glycolRaw->ViscTemps = viscTempArray.Temps;
1481 :
1482 4 : glycolRaw->ViscValues.allocate(glycolRaw->NumViscConcPoints, glycolRaw->NumViscTempPoints);
1483 4 : std::sort(glycolRaw->ViscConcs.begin(), glycolRaw->ViscConcs.end());
1484 : }
1485 : }
1486 :
1487 : // Finally, get the specific heat and concentration values from the user input
1488 796 : CurrentModuleObject = "FluidProperties:Concentration";
1489 896 : for (int InData = 1; InData <= NumOfGlyFluidPropArrays; ++InData) {
1490 100 : state.dataInputProcessing->inputProcessor->getObjectItem(state,
1491 : CurrentModuleObject,
1492 : InData,
1493 : Alphas,
1494 : NumAlphas,
1495 : Numbers,
1496 : NumNumbers,
1497 : Status,
1498 : lNumericFieldBlanks,
1499 : lAlphaFieldBlanks,
1500 : cAlphaFields,
1501 : cNumericFields);
1502 :
1503 100 : if (Alphas(1) == "WATER") continue; // Is this the right thing to do?
1504 :
1505 100 : ErrorObjectHeader eoh{routineName, CurrentModuleObject, Alphas(1)};
1506 100 : auto *glycolRaw = GetGlycolRaw(state, Alphas(1));
1507 100 : assert(glycolRaw != nullptr); // We've already tested for this, can just assert now
1508 :
1509 100 : if (Alphas(2) == "SPECIFICHEAT") {
1510 25 : if ((NumNumbers - 1) != glycolRaw->NumCpTempPoints) {
1511 0 : ShowSevereCustomMessage(state,
1512 : eoh,
1513 0 : format("Number of specific heat points ({}) not equal to number of temperature points ({})",
1514 0 : NumNumbers - 1,
1515 0 : glycolRaw->NumCpTempPoints));
1516 0 : ErrorsFound = true;
1517 0 : continue;
1518 : }
1519 25 : auto concFound = std::find(glycolRaw->CpConcs.begin(), glycolRaw->CpConcs.end(), Numbers(1));
1520 25 : assert(concFound != glycolRaw->CpConcs.end());
1521 25 : int concNum = (concFound - glycolRaw->CpConcs.begin()) + 1;
1522 25 : glycolRaw->CpValues(concNum, {1, glycolRaw->NumCpTempPoints}) = Numbers({2, NumNumbers});
1523 :
1524 75 : } else if (Alphas(2) == "DENSITY") {
1525 25 : if ((NumNumbers - 1) != glycolRaw->NumRhoTempPoints) {
1526 0 : ShowSevereCustomMessage(state,
1527 : eoh,
1528 0 : format("Number of density points ({}) not equal to number of temperature points ({})",
1529 0 : NumNumbers - 1,
1530 0 : glycolRaw->NumRhoTempPoints));
1531 0 : ErrorsFound = true;
1532 0 : continue;
1533 : }
1534 25 : auto concFound = std::find(glycolRaw->RhoConcs.begin(), glycolRaw->RhoConcs.end(), Numbers(1));
1535 25 : assert(concFound != glycolRaw->RhoConcs.end());
1536 25 : int concNum = (concFound - glycolRaw->RhoConcs.begin()) + 1;
1537 25 : glycolRaw->RhoValues(concNum, {1, glycolRaw->NumRhoTempPoints}) = Numbers({2, NumNumbers});
1538 :
1539 50 : } else if (Alphas(2) == "CONDUCTIVITY") {
1540 25 : if ((NumNumbers - 1) != glycolRaw->NumCondTempPoints) {
1541 0 : ShowSevereCustomMessage(state,
1542 : eoh,
1543 0 : format("Number of conductivity points ({}) not equal to number of temperature points ({})",
1544 0 : NumNumbers - 1,
1545 0 : glycolRaw->NumCondTempPoints));
1546 0 : ErrorsFound = true;
1547 0 : continue;
1548 : }
1549 25 : auto concFound = std::find(glycolRaw->CondConcs.begin(), glycolRaw->CondConcs.end(), Numbers(1));
1550 25 : assert(concFound != glycolRaw->CondConcs.end());
1551 25 : int concNum = (concFound - glycolRaw->CondConcs.begin()) + 1;
1552 25 : glycolRaw->CondValues(concNum, {1, glycolRaw->NumCondTempPoints}) = Numbers({2, NumNumbers});
1553 :
1554 25 : } else if (Alphas(2) == "VISCOSITY") {
1555 25 : if ((NumNumbers - 1) != glycolRaw->NumViscTempPoints) {
1556 0 : ShowSevereCustomMessage(state,
1557 : eoh,
1558 0 : format("Number of viscosity points ({}) not equal to number of temperature points ({})",
1559 0 : NumNumbers - 1,
1560 0 : glycolRaw->NumViscTempPoints));
1561 0 : ErrorsFound = true;
1562 0 : continue;
1563 : }
1564 25 : auto concFound = std::find(glycolRaw->ViscConcs.begin(), glycolRaw->ViscConcs.end(), Numbers(1));
1565 25 : assert(concFound != glycolRaw->ViscConcs.end());
1566 25 : int concNum = (concFound - glycolRaw->ViscConcs.begin()) + 1;
1567 25 : glycolRaw->ViscValues(concNum, {1, glycolRaw->NumViscTempPoints}) = Numbers({2, NumNumbers});
1568 : }
1569 : } // for (InData)
1570 :
1571 : // Get: ***** GLYCOL CONCENTRATIONS *****
1572 : // Read in the GlycolConcentrations input and then set the property data accordingly
1573 : // Input Syntax:
1574 : // FluidProperties:GlycolConcentration,
1575 : // \memo glycol and what concentration it is
1576 : // A1, \field Name
1577 : // \type alpha
1578 : // \required-field
1579 : // \reference GlycolConcentrations
1580 : // A2, \field Glycol Type
1581 : // \required-field
1582 : // \type choice
1583 : // \key EthyleneGlycol
1584 : // \key PropyleneGlycol
1585 : // \key UserDefinedGlycolType
1586 : // \note or UserDefined Fluid (must show up as a glycol in FluidProperties:Name object)
1587 : // A3, \field User Defined Glycol Name
1588 : // \type object-list
1589 : // \object-list FluidAndGlycolNames
1590 : // N1; \field Glycol Concentration
1591 : // \type real
1592 : // \minimum 0.0
1593 : // \maximum 1.0
1594 :
1595 : // Check to see if there is any GlycolConcentrations input. If not, this
1596 : // is okay as long as the user only desires to simulate loops with water.
1597 : // More than one GlycolConcentrations input is not allowed.
1598 :
1599 796 : CurrentModuleObject = "FluidProperties:GlycolConcentration";
1600 796 : NumOfOptionalInput = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, CurrentModuleObject);
1601 :
1602 796 : auto *water = GetGlycol(state, "WATER");
1603 796 : if (water == nullptr) {
1604 796 : water = new GlycolProps;
1605 796 : water->Name = "WATER";
1606 796 : water->GlycolName = "WATER";
1607 796 : water->used = true; // mark Water as always used
1608 :
1609 796 : df->glycols.push_back(water);
1610 796 : water->Num = df->glycols.isize();
1611 : }
1612 796 : water->Concentration = 1.0;
1613 796 : water->CpDataPresent = true;
1614 796 : water->NumCpTempPoints = DefaultNumGlyTemps;
1615 796 : water->RhoDataPresent = true;
1616 796 : water->NumRhoTempPoints = DefaultNumGlyTemps;
1617 796 : water->CondDataPresent = true;
1618 796 : water->NumCondTempPoints = DefaultNumGlyTemps;
1619 796 : water->ViscDataPresent = true;
1620 796 : water->NumViscTempPoints = DefaultNumGlyTemps;
1621 796 : water->CpTemps.allocate(water->NumCpTempPoints);
1622 796 : water->CpValues.allocate(water->NumCpTempPoints);
1623 796 : water->RhoTemps.allocate(water->NumRhoTempPoints);
1624 796 : water->RhoValues.allocate(water->NumRhoTempPoints);
1625 796 : water->CondTemps.allocate(water->NumCondTempPoints);
1626 796 : water->CondValues.allocate(water->NumCondTempPoints);
1627 796 : water->ViscTemps.allocate(water->NumViscTempPoints);
1628 796 : water->ViscValues.allocate(water->NumViscTempPoints);
1629 796 : water->CpTemps = DefaultGlycolTemps;
1630 796 : water->CpValues = DefaultWaterCpData;
1631 796 : water->RhoTemps = DefaultGlycolTemps;
1632 796 : water->RhoValues = DefaultWaterRhoData;
1633 796 : water->CondTemps = DefaultGlycolTemps;
1634 796 : water->CondValues = DefaultWaterCondData;
1635 796 : water->ViscTemps = DefaultGlycolTemps;
1636 796 : water->ViscValues = DefaultWaterViscData;
1637 :
1638 : #ifdef PERFORMANCE_OPT
1639 : // This is a speed optimization. Maybe.
1640 : water->CpTempRatios.allocate(water->NumCpTempPoints);
1641 : for (int i = 1; i < water->NumCpTempPoints; ++i)
1642 : water->CpTempRatios(i) = (water->CpValues(i + 1) - water->CpValues(i)) / (water->CpTemps(i + 1) - water->CpTemps(i));
1643 : water->RhoTempRatios.allocate(water->NumRhoTempPoints);
1644 : for (int i = 1; i < water->NumRhoTempPoints; ++i)
1645 : water->RhoTempRatios(i) = (water->RhoValues(i + 1) - water->RhoValues(i)) / (water->RhoTemps(i + 1) - water->RhoTemps(i));
1646 : water->CondTempRatios.allocate(water->NumCondTempPoints);
1647 : for (int i = 1; i < water->NumCondTempPoints; ++i)
1648 : water->CondTempRatios(i) = (water->CondValues(i + 1) - water->CondValues(i)) / (water->CondTemps(i + 1) - water->CondTemps(i));
1649 : water->ViscTempRatios.allocate(water->NumViscTempPoints);
1650 : for (int i = 1; i < water->NumCondTempPoints; ++i)
1651 : water->ViscTempRatios(i) = (water->ViscValues(i + 1) - water->ViscValues(i)) / (water->ViscTemps(i + 1) - water->ViscTemps(i));
1652 : #endif // PERFORMANCE_OPT
1653 :
1654 824 : for (int Loop = 1; Loop <= NumOfOptionalInput; ++Loop) {
1655 28 : state.dataInputProcessing->inputProcessor->getObjectItem(state,
1656 : CurrentModuleObject,
1657 : Loop,
1658 : Alphas,
1659 : NumAlphas,
1660 : Numbers,
1661 : NumNumbers,
1662 : Status,
1663 : lNumericFieldBlanks,
1664 : lAlphaFieldBlanks,
1665 : cAlphaFields,
1666 : cNumericFields);
1667 :
1668 28 : ErrorObjectHeader eoh{routineName, CurrentModuleObject, Alphas(1)};
1669 :
1670 28 : auto *glycol = GetGlycol(state, Alphas(1));
1671 28 : if (glycol == nullptr) { // It appears that FluidProperties:Name is not necessary
1672 28 : glycol = new GlycolProps;
1673 28 : glycol->Name = Alphas(1);
1674 28 : df->glycols.push_back(glycol);
1675 28 : glycol->Num = df->glycols.isize();
1676 : }
1677 :
1678 28 : GlycolRawProps *glycolRaw = nullptr;
1679 :
1680 28 : if (Alphas(2) == "ETHYLENEGLYCOL" || Alphas(2) == "PROPYLENEGLYCOL") {
1681 25 : glycol->GlycolName = Alphas(2);
1682 25 : glycolRaw = GetGlycolRaw(state, Alphas(2));
1683 25 : assert(glycolRaw != nullptr);
1684 3 : } else if (Alphas(2) == "USERDEFINEDGLYCOLTYPE") { // Why can't this just be the name of the user-defined glycol?
1685 3 : glycol->GlycolName = Alphas(3);
1686 3 : glycolRaw = GetGlycolRaw(state, Alphas(3));
1687 3 : if (glycolRaw == nullptr) {
1688 0 : ShowSevereItemNotFound(state, eoh, cAlphaFields(3), Alphas(3));
1689 0 : ErrorsFound = true;
1690 0 : continue;
1691 : }
1692 : } else {
1693 0 : ShowSevereInvalidKey(state, eoh, cAlphaFields(2), Alphas(2));
1694 0 : ErrorsFound = true;
1695 0 : continue;
1696 : }
1697 :
1698 : // We're good to go
1699 28 : glycol->Concentration = Numbers(1);
1700 :
1701 28 : glycol->CpDataPresent = glycolRaw->CpDataPresent;
1702 28 : if (!glycol->CpDataPresent) {
1703 0 : ShowSevereError(state, format("{}: Specific heat data not entered for a {}", routineName, CurrentModuleObject));
1704 0 : ShowContinueError(state, "ALL data must be entered for user-defined glycols");
1705 0 : ShowContinueError(state, format("Glycol mixture name = {}", glycol->Name));
1706 0 : ShowContinueError(state, format("Glycol fluid name = {}", glycol->GlycolName));
1707 0 : ErrorsFound = true;
1708 0 : continue;
1709 : }
1710 :
1711 28 : glycol->NumCpTempPoints = glycolRaw->NumCpTempPoints;
1712 28 : glycol->CpTemps.allocate(glycol->NumCpTempPoints);
1713 28 : glycol->CpTemps({1, glycol->NumCpTempPoints}) = glycolRaw->CpTemps({1, glycolRaw->NumCpTempPoints});
1714 28 : glycol->CpValues.allocate(glycol->NumCpTempPoints);
1715 28 : InterpValuesForGlycolConc(state,
1716 : glycolRaw->NumCpConcPoints,
1717 : glycolRaw->NumCpTempPoints,
1718 28 : glycolRaw->CpConcs,
1719 28 : glycolRaw->CpValues,
1720 : glycol->Concentration,
1721 28 : glycol->CpValues);
1722 :
1723 28 : glycol->RhoDataPresent = glycolRaw->RhoDataPresent;
1724 28 : if (!glycol->RhoDataPresent) {
1725 0 : ShowSevereError(state, format("{}: density data not entered for a {}", routineName, CurrentModuleObject));
1726 0 : ShowContinueError(state, "ALL data must be entered for user-defined glycols");
1727 0 : ShowContinueError(state, format("Glycol mixture name = {}", glycol->Name));
1728 0 : ShowContinueError(state, format("Glycol fluid name = {}", glycol->GlycolName));
1729 0 : ErrorsFound = true;
1730 0 : continue;
1731 : }
1732 :
1733 28 : glycol->NumRhoTempPoints = glycolRaw->NumRhoTempPoints;
1734 28 : glycol->RhoTemps.allocate(glycol->NumRhoTempPoints);
1735 28 : glycol->RhoTemps({1, glycol->NumRhoTempPoints}) = glycolRaw->RhoTemps({1, glycolRaw->NumRhoTempPoints});
1736 28 : glycol->RhoValues.allocate(glycol->NumRhoTempPoints);
1737 28 : InterpValuesForGlycolConc(state,
1738 : glycolRaw->NumRhoConcPoints,
1739 : glycolRaw->NumRhoTempPoints,
1740 28 : glycolRaw->RhoConcs,
1741 28 : glycolRaw->RhoValues,
1742 : glycol->Concentration,
1743 28 : glycol->RhoValues);
1744 :
1745 28 : glycol->CondDataPresent = glycolRaw->CondDataPresent;
1746 28 : if (!glycol->CondDataPresent) {
1747 0 : ShowSevereError(state, format("{}: conductivity data not entered for a {}", routineName, CurrentModuleObject));
1748 0 : ShowContinueError(state, "ALL data must be entered for user-defined glycols");
1749 0 : ShowContinueError(state, format("Glycol mixture name = {}", glycol->Name));
1750 0 : ShowContinueError(state, format("Glycol fluid name = {}", glycol->GlycolName));
1751 0 : ErrorsFound = true;
1752 0 : continue;
1753 : }
1754 :
1755 28 : glycol->NumCondTempPoints = glycolRaw->NumCondTempPoints;
1756 28 : glycol->CondTemps.allocate(glycol->NumCondTempPoints);
1757 28 : glycol->CondTemps({1, glycol->NumCondTempPoints}) = glycolRaw->CondTemps({1, glycolRaw->NumCondTempPoints});
1758 28 : glycol->CondValues.allocate(glycol->NumCondTempPoints);
1759 28 : InterpValuesForGlycolConc(state,
1760 : glycolRaw->NumCondConcPoints,
1761 : glycolRaw->NumCondTempPoints,
1762 28 : glycolRaw->CondConcs,
1763 28 : glycolRaw->CondValues,
1764 : glycol->Concentration,
1765 28 : glycol->CondValues);
1766 :
1767 28 : glycol->ViscDataPresent = glycolRaw->ViscDataPresent;
1768 28 : if (!glycol->ViscDataPresent) {
1769 0 : ShowSevereError(state, format("{}: viscosity data not entered for a {}", routineName, CurrentModuleObject));
1770 0 : ShowContinueError(state, "ALL data must be entered for user-defined glycols");
1771 0 : ShowContinueError(state, format("Glycol mixture name = {}", glycol->Name));
1772 0 : ShowContinueError(state, format("Glycol fluid name = {}", glycol->GlycolName));
1773 0 : ErrorsFound = true;
1774 0 : continue;
1775 : }
1776 :
1777 28 : glycol->NumViscTempPoints = glycolRaw->NumViscTempPoints;
1778 28 : glycol->ViscTemps.allocate(glycol->NumViscTempPoints);
1779 28 : glycol->ViscTemps({1, glycol->NumViscTempPoints}) = glycolRaw->ViscTemps({1, glycolRaw->NumViscTempPoints});
1780 28 : glycol->ViscValues.allocate(glycol->NumViscTempPoints);
1781 28 : InterpValuesForGlycolConc(state,
1782 : glycolRaw->NumViscConcPoints,
1783 : glycolRaw->NumViscTempPoints,
1784 28 : glycolRaw->ViscConcs,
1785 28 : glycolRaw->ViscValues,
1786 : glycol->Concentration,
1787 28 : glycol->ViscValues);
1788 :
1789 : #ifdef PERFORMANCE_OPT
1790 : // This is a speed optimization. Maybe.
1791 : glycol->CpTempRatios.allocate(glycol->NumCpTempPoints);
1792 : for (int i = 1; i < glycol->NumCpTempPoints; ++i)
1793 : glycol->CpTempRatios(i) = (glycol->CpValues(i + 1) - glycol->CpValues(i)) / (glycol->CpTemps(i + 1) - glycol->CpTemps(i));
1794 : glycol->RhoTempRatios.allocate(glycol->NumRhoTempPoints);
1795 : for (int i = 1; i < glycol->NumRhoTempPoints; ++i)
1796 : glycol->RhoTempRatios(i) = (glycol->RhoValues(i + 1) - glycol->RhoValues(i)) / (glycol->RhoTemps(i + 1) - glycol->RhoTemps(i));
1797 : glycol->CondTempRatios.allocate(glycol->NumCondTempPoints);
1798 : for (int i = 1; i < glycol->NumCondTempPoints; ++i)
1799 : glycol->CondTempRatios(i) = (glycol->CondValues(i + 1) - glycol->CondValues(i)) / (glycol->CondTemps(i + 1) - glycol->CondTemps(i));
1800 : glycol->ViscTempRatios.allocate(glycol->NumViscTempPoints);
1801 : for (int i = 1; i < glycol->NumCondTempPoints; ++i)
1802 : glycol->ViscTempRatios(i) = (glycol->ViscValues(i + 1) - glycol->ViscValues(i)) / (glycol->ViscTemps(i + 1) - glycol->ViscTemps(i));
1803 : #endif // PERFORMANCE_OPT
1804 : } // for (Loop)
1805 :
1806 796 : if (!ErrorsFound) InitializeGlycolTempLimits(state, ErrorsFound); // Initialize the Temp limits for the glycols
1807 :
1808 796 : if (!ErrorsFound) InitializeRefrigerantLimits(state, ErrorsFound); // Initialize the limits for the refrigerants
1809 :
1810 796 : FluidTemps.deallocate();
1811 :
1812 796 : Alphas.deallocate();
1813 796 : cAlphaFields.deallocate();
1814 796 : lAlphaFieldBlanks.deallocate();
1815 796 : Numbers.deallocate();
1816 796 : cNumericFields.deallocate();
1817 796 : lNumericFieldBlanks.deallocate();
1818 :
1819 796 : if (ErrorsFound) {
1820 0 : ShowFatalError(state, format("{}: Previous errors in input cause program termination.", routineName));
1821 : }
1822 :
1823 796 : if (state.dataInputProcessing->inputProcessor->getNumSectionsFound("REPORTGLYCOLS") > 0) df->DebugReportGlycols = true;
1824 796 : if (state.dataInputProcessing->inputProcessor->getNumSectionsFound("REPORTREFRIGERANTS") > 0) df->DebugReportRefrigerants = true;
1825 796 : if (state.dataInputProcessing->inputProcessor->getNumSectionsFound("INCREASEGLYCOLERRORLIMIT") > 0) df->GlycolErrorLimitTest += 10;
1826 796 : if (state.dataInputProcessing->inputProcessor->getNumSectionsFound("INCREASEREFRIGERANTERRORLIMIT") > 0) df->RefrigErrorLimitTest += 10;
1827 :
1828 796 : if (df->DebugReportGlycols) ReportAndTestGlycols(state);
1829 796 : if (df->DebugReportRefrigerants) ReportAndTestRefrigerants(state);
1830 796 : }
1831 :
1832 : //*****************************************************************************
1833 :
1834 112 : void InterpValuesForGlycolConc(EnergyPlusData &state,
1835 : int const NumOfConcs, // number of concentrations (dimension of raw data)
1836 : int const NumOfTemps, // number of temperatures (dimension of raw data)
1837 : const Array1D<Real64> &RawConcData, // concentrations for raw data
1838 : Array2S<Real64> const RawPropData, // raw property data (temperature,concentration)
1839 : Real64 const Concentration, // concentration of actual fluid mix
1840 : Array1D<Real64> &InterpData // interpolated output data at proper concentration
1841 : )
1842 : {
1843 :
1844 : // SUBROUTINE INFORMATION:
1845 : // AUTHOR Rick Strand
1846 : // DATE WRITTEN June 2004
1847 :
1848 : // PURPOSE OF THIS SUBROUTINE:
1849 : // The purpose of this subroutine is to find the values for the property
1850 : // data at a particular concentration from default data that is at "generic"
1851 : // concentrations. This is then returned to the main get routine and
1852 : // then used later in the program to find values at various temperatures.
1853 : // The ultimate purpose of this is to avoid double interpolation during
1854 : // the simulation. Since concentration does not change during the simulation,
1855 : // there is no reason to do a double interpolation every time a property
1856 : // value is needed.
1857 :
1858 : // METHODOLOGY EMPLOYED:
1859 : // Fairly straight forward--find the two concentrations between which
1860 : // the actual concentration falls and then interpolate the property
1861 : // data using standard linear interpolation. Note that data is stored
1862 : // in the format: 2dArray(Temperature,Concentration). Temperature
1863 : // data is not needed here since we are only interpolating to eliminate
1864 : // the concentration as a variable (it really isn't one during the
1865 : // simulation).
1866 :
1867 : // REFERENCES:
1868 : // GetFluidPropertiesData--subroutine forces user to input data in
1869 : // order of increasing concentration. This is assumed in this subroutine.
1870 :
1871 : // SUBROUTINE PARAMETER DEFINITIONS:
1872 112 : constexpr Real64 ConcToler(0.0001); // Some reasonable value for comparisons
1873 : static constexpr std::string_view routineName = "InterpValuesForGlycolConc";
1874 :
1875 : // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
1876 : int HiIndex; // index on the high side of the concentration
1877 : Real64 InterpFrac; // intermediate value for interpolations
1878 : int LoopC; // loop counter for concentration
1879 : int LoopT; // loop counter for temperature
1880 :
1881 : // First, find where the actual concentration falls between the concentration data.
1882 : // Then, interpolate if necessary.
1883 112 : if (Concentration < RawConcData(1)) { // Concentration too low
1884 0 : ShowWarningError(state,
1885 0 : format("{}: Glycol concentration out of range for data (too low), concentration = {:.3R}", routineName, Concentration));
1886 0 : ShowContinueError(state, "Check your data or the definition of your glycols in the GlycolConcentrations input");
1887 0 : ShowContinueError(state, "Property data set to data for lowest concentration entered");
1888 0 : InterpData = RawPropData(1, _);
1889 112 : } else if (Concentration > RawConcData(NumOfConcs)) { // Concentration too high
1890 0 : ShowWarningError(state,
1891 0 : format("{}: Glycol concentration out of range for data (too high), concentration = {:.3R}", routineName, Concentration));
1892 0 : ShowContinueError(state, "Check your data or the definition of your glycols in the GlycolConcentrations input");
1893 0 : ShowContinueError(state, "Property data set to data for highest concentration entered");
1894 0 : InterpData = RawPropData(NumOfConcs, _);
1895 : } else { // Concentration somewhere between lowest and highest point--interpolate
1896 112 : HiIndex = NumOfConcs; // Default to highest concentration
1897 500 : for (LoopC = 2; LoopC <= NumOfConcs - 1; ++LoopC) {
1898 500 : if (Concentration <= RawConcData(LoopC)) {
1899 112 : HiIndex = LoopC;
1900 112 : break; // LoopC DO loop
1901 : }
1902 : }
1903 :
1904 112 : if (HiIndex == 1) {
1905 0 : for (LoopT = 1; LoopT <= NumOfTemps; ++LoopT) {
1906 0 : InterpData(LoopT) = RawPropData(HiIndex, LoopT);
1907 : }
1908 112 : } else if (std::abs(RawConcData(HiIndex) - RawConcData(HiIndex - 1)) >= ConcToler) {
1909 112 : InterpFrac = (RawConcData(HiIndex) - Concentration) / (RawConcData(HiIndex) - RawConcData(HiIndex - 1));
1910 3484 : for (LoopT = 1; LoopT <= NumOfTemps; ++LoopT) {
1911 3372 : if ((RawPropData(HiIndex, LoopT) < ConcToler) || (RawPropData(HiIndex - 1, LoopT) < ConcToler)) {
1912 380 : InterpData(LoopT) = 0.0;
1913 : } else {
1914 2992 : InterpData(LoopT) =
1915 2992 : RawPropData(HiIndex, LoopT) - (InterpFrac * (RawPropData(HiIndex, LoopT) - RawPropData(HiIndex - 1, LoopT)));
1916 : }
1917 : }
1918 : } else { // user has input data for concentrations that are too close or repeated, this must be fixed
1919 0 : ShowFatalError(state,
1920 0 : format("{}: concentration values too close or data repeated, check your fluid property input data", routineName));
1921 : }
1922 : }
1923 112 : }
1924 :
1925 : //*****************************************************************************
1926 :
1927 796 : void InitializeGlycolTempLimits(EnergyPlusData &state, bool &ErrorsFound) // set to true if errors found here
1928 : {
1929 :
1930 : // SUBROUTINE INFORMATION:
1931 : // AUTHOR Linda Lawrie
1932 : // DATE WRITTEN March 2008
1933 :
1934 : // PURPOSE OF THIS SUBROUTINE:
1935 : // This routine sets up the min/max temperature limits for the glycol properties.
1936 : // Most properties requested (e.g., Specific Heat) must be > 0 but the tables may
1937 : // be set up for symmetry and not be limited to just valid values.
1938 :
1939 796 : auto const &df = state.dataFluidProps;
1940 :
1941 1620 : for (auto *glycol : df->glycols) {
1942 824 : if (glycol->CpDataPresent) {
1943 : // check for lowest non-zero value by referencing temp data
1944 6491 : for (int IndexNum = 1; IndexNum <= glycol->NumCpTempPoints; ++IndexNum) {
1945 6491 : if (glycol->CpValues(IndexNum) <= 0.0) continue;
1946 824 : glycol->CpLowTempIndex = IndexNum;
1947 824 : glycol->CpLowTempValue = glycol->CpTemps(IndexNum);
1948 824 : break;
1949 : }
1950 : // check for highest non-zero value by referencing temp data
1951 824 : for (int IndexNum = glycol->NumCpTempPoints; IndexNum >= 1; --IndexNum) {
1952 824 : if (glycol->CpValues(IndexNum) <= 0.0) continue;
1953 824 : glycol->CpHighTempIndex = IndexNum;
1954 824 : glycol->CpHighTempValue = glycol->CpTemps(IndexNum);
1955 824 : break;
1956 : }
1957 : }
1958 824 : if (glycol->RhoDataPresent) {
1959 : // check for lowest non-zero value by referencing temp data
1960 6491 : for (int IndexNum = 1; IndexNum <= glycol->NumRhoTempPoints; ++IndexNum) {
1961 6491 : if (glycol->RhoValues(IndexNum) <= 0.0) continue;
1962 824 : glycol->RhoLowTempIndex = IndexNum;
1963 824 : glycol->RhoLowTempValue = glycol->RhoTemps(IndexNum);
1964 824 : break;
1965 : }
1966 : // check for highest non-zero value by referencing temp data
1967 4804 : for (int IndexNum = glycol->NumRhoTempPoints; IndexNum >= 1; --IndexNum) {
1968 4804 : if (glycol->RhoValues(IndexNum) <= 0.0) continue;
1969 824 : glycol->RhoHighTempIndex = IndexNum;
1970 824 : glycol->RhoHighTempValue = glycol->RhoTemps(IndexNum);
1971 824 : break;
1972 : }
1973 : }
1974 824 : if (glycol->CondDataPresent) {
1975 : // check for lowest non-zero value by referencing temp data
1976 6491 : for (int IndexNum = 1; IndexNum <= glycol->NumCondTempPoints; ++IndexNum) {
1977 6491 : if (glycol->CondValues(IndexNum) <= 0.0) continue;
1978 824 : glycol->CondLowTempIndex = IndexNum;
1979 824 : glycol->CondLowTempValue = glycol->CondTemps(IndexNum);
1980 824 : break;
1981 : }
1982 : // check for highest non-zero value by referencing temp data
1983 4804 : for (int IndexNum = glycol->NumCondTempPoints; IndexNum >= 1; --IndexNum) {
1984 4804 : if (glycol->CondValues(IndexNum) <= 0.0) continue;
1985 824 : glycol->CondHighTempIndex = IndexNum;
1986 824 : glycol->CondHighTempValue = glycol->CondTemps(IndexNum);
1987 824 : break;
1988 : }
1989 : }
1990 824 : if (glycol->ViscDataPresent) {
1991 : // check for lowest non-zero value by referencing temp data
1992 6491 : for (int IndexNum = 1; IndexNum <= glycol->NumViscTempPoints; ++IndexNum) {
1993 6491 : if (glycol->ViscValues(IndexNum) <= 0.0) continue;
1994 824 : glycol->ViscLowTempIndex = IndexNum;
1995 824 : glycol->ViscLowTempValue = glycol->ViscTemps(IndexNum);
1996 824 : break;
1997 : }
1998 : // check for highest non-zero value by referencing temp data
1999 4804 : for (int IndexNum = glycol->NumViscTempPoints; IndexNum >= 1; --IndexNum) {
2000 4804 : if (glycol->ViscValues(IndexNum) <= 0.0) continue;
2001 824 : glycol->ViscHighTempIndex = IndexNum;
2002 824 : glycol->ViscHighTempValue = glycol->ViscTemps(IndexNum);
2003 824 : break;
2004 : }
2005 : }
2006 824 : bool Failure = false;
2007 : // Check to see that all are set to non-zero
2008 824 : if (glycol->CpDataPresent) {
2009 824 : Failure = glycol->CpLowTempIndex == 0 || glycol->CpHighTempIndex == 0;
2010 : }
2011 824 : if (glycol->RhoDataPresent) {
2012 824 : Failure = glycol->RhoLowTempIndex == 0 || glycol->RhoHighTempIndex == 0;
2013 : }
2014 824 : if (glycol->CondDataPresent) {
2015 824 : Failure = glycol->CondLowTempIndex == 0 || glycol->CondHighTempIndex == 0;
2016 : }
2017 824 : if (glycol->ViscDataPresent) {
2018 824 : Failure = glycol->ViscLowTempIndex == 0 || glycol->ViscHighTempIndex == 0;
2019 : }
2020 824 : if (Failure) {
2021 0 : ShowSevereError(
2022 0 : state, format("InitializeGlycolTempLimits: Required values for Glycol={} are all zeroes for some data types.", glycol->Name));
2023 0 : ErrorsFound = true;
2024 : }
2025 : }
2026 796 : }
2027 :
2028 : //*****************************************************************************
2029 :
2030 796 : void InitializeRefrigerantLimits(EnergyPlusData &state, bool &ErrorsFound) // set to true if errors found here
2031 : {
2032 :
2033 : // SUBROUTINE INFORMATION:
2034 : // AUTHOR Linda Lawrie
2035 : // DATE WRITTEN March 2008
2036 :
2037 : // PURPOSE OF THIS SUBROUTINE:
2038 : // This routine sets up the min/max limits (usually temperature and/or pressure)
2039 : // for the refrigerant properties.
2040 : // Most properties requested (e.g., Specific Heat) must be > 0 but the tables may
2041 : // be set up for symmetry and not be limited to just valid values.
2042 796 : auto const &df = state.dataFluidProps;
2043 :
2044 1621 : for (auto *refrig : df->refrigs) {
2045 825 : for (int IndexNum = 1; IndexNum <= refrig->NumPsPoints; ++IndexNum) {
2046 825 : if (refrig->PsValues(IndexNum) <= 0.0) continue;
2047 825 : refrig->PsLowPresIndex = IndexNum;
2048 825 : refrig->PsLowPresValue = refrig->PsValues(IndexNum);
2049 825 : refrig->PsLowTempValue = refrig->PsTemps(IndexNum);
2050 825 : refrig->PsLowTempIndex = IndexNum;
2051 825 : break;
2052 : }
2053 825 : for (int IndexNum = refrig->NumPsPoints; IndexNum >= 1; --IndexNum) {
2054 825 : if (refrig->PsValues(IndexNum) <= 0.0) continue;
2055 825 : refrig->PsHighPresIndex = IndexNum;
2056 825 : refrig->PsHighPresValue = refrig->PsValues(IndexNum);
2057 825 : refrig->PsHighTempValue = refrig->PsTemps(IndexNum);
2058 825 : refrig->PsHighTempIndex = IndexNum;
2059 825 : break;
2060 : }
2061 842 : for (int IndexNum = 1; IndexNum <= refrig->NumHPoints; ++IndexNum) {
2062 842 : if (refrig->HfValues(IndexNum) <= 0.0) continue;
2063 825 : refrig->HfLowTempValue = refrig->HfValues(IndexNum);
2064 825 : refrig->HfLowTempIndex = IndexNum;
2065 825 : break;
2066 : }
2067 825 : for (int IndexNum = refrig->NumHPoints; IndexNum >= 1; --IndexNum) {
2068 825 : if (refrig->HfValues(IndexNum) <= 0.0) continue;
2069 825 : refrig->HfHighTempValue = refrig->HfValues(IndexNum);
2070 825 : refrig->HfHighTempIndex = IndexNum;
2071 825 : break;
2072 : }
2073 825 : for (int IndexNum = 1; IndexNum <= refrig->NumHPoints; ++IndexNum) {
2074 825 : if (refrig->HfgValues(IndexNum) <= 0.0) continue;
2075 825 : refrig->HfgLowTempValue = refrig->HfgValues(IndexNum);
2076 825 : refrig->HfgLowTempIndex = IndexNum;
2077 825 : break;
2078 : }
2079 825 : for (int IndexNum = refrig->NumHPoints; IndexNum >= 1; --IndexNum) {
2080 825 : if (refrig->HfgValues(IndexNum) <= 0.0) continue;
2081 825 : refrig->HfgHighTempValue = refrig->HfgValues(IndexNum);
2082 825 : refrig->HfgHighTempIndex = IndexNum;
2083 825 : break;
2084 : }
2085 825 : for (int IndexNum = 1; IndexNum <= refrig->NumCpPoints; ++IndexNum) {
2086 825 : if (refrig->CpfValues(IndexNum) <= 0.0) continue;
2087 825 : refrig->CpfLowTempValue = refrig->CpfValues(IndexNum);
2088 825 : refrig->CpfLowTempIndex = IndexNum;
2089 825 : break;
2090 : }
2091 846 : for (int IndexNum = refrig->NumCpPoints; IndexNum >= 1; --IndexNum) {
2092 846 : if (refrig->CpfValues(IndexNum) <= 0.0) continue;
2093 825 : refrig->CpfHighTempValue = refrig->CpfValues(IndexNum);
2094 825 : refrig->CpfHighTempIndex = IndexNum;
2095 825 : break;
2096 : }
2097 825 : for (int IndexNum = 1; IndexNum <= refrig->NumCpPoints; ++IndexNum) {
2098 825 : if (refrig->CpfgValues(IndexNum) <= 0.0) continue;
2099 825 : refrig->CpfgLowTempValue = refrig->CpfgValues(IndexNum);
2100 825 : refrig->CpfgLowTempIndex = IndexNum;
2101 825 : break;
2102 : }
2103 846 : for (int IndexNum = refrig->NumCpPoints; IndexNum >= 1; --IndexNum) {
2104 846 : if (refrig->CpfgValues(IndexNum) <= 0.0) continue;
2105 825 : refrig->CpfgHighTempValue = refrig->CpfgValues(IndexNum);
2106 825 : refrig->CpfgHighTempIndex = IndexNum;
2107 825 : break;
2108 : }
2109 825 : for (int IndexNum = 1; IndexNum <= refrig->NumRhoPoints; ++IndexNum) {
2110 825 : if (refrig->RhofValues(IndexNum) <= 0.0) continue;
2111 825 : refrig->RhofLowTempValue = refrig->RhofValues(IndexNum);
2112 825 : refrig->RhofLowTempIndex = IndexNum;
2113 825 : break;
2114 : }
2115 825 : for (int IndexNum = refrig->NumRhoPoints; IndexNum >= 1; --IndexNum) {
2116 825 : if (refrig->RhofValues(IndexNum) <= 0.0) continue;
2117 825 : refrig->RhofHighTempValue = refrig->RhofValues(IndexNum);
2118 825 : refrig->RhofHighTempIndex = IndexNum;
2119 825 : break;
2120 : }
2121 825 : for (int IndexNum = 1; IndexNum <= refrig->NumRhoPoints; ++IndexNum) {
2122 825 : if (refrig->RhofgValues(IndexNum) <= 0.0) continue;
2123 825 : refrig->RhofgLowTempValue = refrig->RhofgValues(IndexNum);
2124 825 : refrig->RhofgLowTempIndex = IndexNum;
2125 825 : break;
2126 : }
2127 825 : for (int IndexNum = refrig->NumRhoPoints; IndexNum >= 1; --IndexNum) {
2128 825 : if (refrig->RhofgValues(IndexNum) <= 0.0) continue;
2129 825 : refrig->RhofgHighTempValue = refrig->RhofgValues(IndexNum);
2130 825 : refrig->RhofgHighTempIndex = IndexNum;
2131 825 : break;
2132 : }
2133 825 : bool Failure = false;
2134 : // Check to see that all are set to non-zero
2135 825 : if (refrig->NumPsPoints > 0) {
2136 825 : Failure = refrig->PsLowPresIndex == 0 || refrig->PsLowTempIndex == 0 || refrig->PsHighPresIndex == 0 || refrig->PsHighTempIndex == 0;
2137 : }
2138 825 : if (refrig->NumHPoints > 0) {
2139 825 : Failure =
2140 825 : refrig->HfLowTempIndex == 0 || refrig->HfgLowTempIndex == 0 || refrig->HfHighTempIndex == 0 || refrig->HfgHighTempIndex == 0;
2141 : }
2142 825 : if (refrig->NumCpPoints > 0) {
2143 825 : Failure =
2144 825 : refrig->CpfLowTempIndex == 0 || refrig->CpfgLowTempIndex == 0 || refrig->CpfHighTempIndex == 0 || refrig->CpfgHighTempIndex == 0;
2145 : }
2146 825 : if (refrig->NumRhoPoints > 0) {
2147 1650 : Failure = refrig->RhofLowTempIndex == 0 || refrig->RhofgLowTempIndex == 0 || refrig->RhofHighTempIndex == 0 ||
2148 825 : refrig->RhofgHighTempIndex == 0;
2149 : }
2150 825 : if (Failure) {
2151 0 : ShowSevereError(
2152 : state,
2153 0 : format("InitializeRefrigerantLimits: Required values for Refrigerant={} are all zeroes for some data types.", refrig->Name));
2154 0 : ErrorsFound = true;
2155 : }
2156 : }
2157 796 : }
2158 :
2159 : //*****************************************************************************
2160 :
2161 0 : void ReportAndTestGlycols(EnergyPlusData &state)
2162 : {
2163 :
2164 : // SUBROUTINE INFORMATION:
2165 : // AUTHOR Linda Lawrie
2166 : // DATE WRITTEN March 2008
2167 :
2168 : // PURPOSE OF THIS SUBROUTINE:
2169 : // This subroutine is written to report and test glycols through their range
2170 : // of temperatures and make sure that proper values will be returned.
2171 :
2172 : // METHODOLOGY EMPLOYED:
2173 : // Use internal structure as the temperature limits. Write output to the
2174 : // debug output file.
2175 :
2176 : // SUBROUTINE PARAMETER DEFINITIONS:
2177 0 : constexpr Real64 incr(10.0);
2178 : static constexpr std::string_view routineName = "ReportAndTestGlycols";
2179 :
2180 : // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
2181 : Real64 Temperature; // Temperature to drive values
2182 : Real64 ReturnValue; // Values returned from glycol functions
2183 :
2184 0 : auto const &df = state.dataFluidProps;
2185 :
2186 0 : for (auto *glycol : df->glycols) {
2187 :
2188 0 : int GlycolIndex = 0; // used in routine calls -- value is returned when first 0
2189 : // Lay out the basic values:
2190 0 : if (!glycol->GlycolName.empty()) {
2191 0 : print(state.files.debug, "Glycol={}, Mixture fluid={}\n", glycol->Name, glycol->GlycolName);
2192 : } else {
2193 0 : print(state.files.debug, "Glycol={}\n", glycol->Name);
2194 : }
2195 0 : print(state.files.debug, "Concentration:,{:.2R}\n", glycol->Concentration);
2196 0 : if (glycol->CpDataPresent) {
2197 0 : print(state.files.debug,
2198 : "Specific Heat Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
2199 0 : glycol->CpLowTempValue,
2200 0 : glycol->CpLowTempIndex,
2201 0 : glycol->CpHighTempValue,
2202 0 : glycol->CpHighTempIndex);
2203 0 : print(state.files.debug, "{}", "Temperatures:");
2204 0 : for (int Loop = 1; Loop <= glycol->NumCpTempPoints - 1; ++Loop) {
2205 0 : print(state.files.debug, ",{:.2R}", glycol->CpTemps(Loop));
2206 : }
2207 0 : print(state.files.debug, ",{}\n", glycol->CpTemps(glycol->NumCpTempPoints));
2208 0 : print(state.files.debug, "{}", "Specific Heat:");
2209 0 : for (int Loop = 1; Loop <= glycol->NumCpTempPoints - 1; ++Loop) {
2210 0 : print(state.files.debug, ",{:.2R}", glycol->CpValues(Loop));
2211 : }
2212 0 : print(state.files.debug, ",{}\n", glycol->CpValues(glycol->NumCpTempPoints));
2213 : }
2214 0 : if (glycol->RhoDataPresent) {
2215 0 : print(state.files.debug,
2216 : "Density Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
2217 0 : glycol->RhoLowTempValue,
2218 0 : glycol->RhoLowTempIndex,
2219 0 : glycol->RhoHighTempValue,
2220 0 : glycol->RhoHighTempIndex);
2221 0 : print(state.files.debug, "{}", "Temperatures:");
2222 0 : for (int Loop = 1; Loop <= glycol->NumRhoTempPoints - 1; ++Loop) {
2223 0 : print(state.files.debug, ",{:.2R}", glycol->RhoTemps(Loop));
2224 : }
2225 0 : print(state.files.debug, ",{}\n", glycol->RhoTemps(glycol->NumRhoTempPoints));
2226 0 : print(state.files.debug, "{}", "Density:");
2227 0 : for (int Loop = 1; Loop <= glycol->NumRhoTempPoints - 1; ++Loop) {
2228 0 : print(state.files.debug, ",{:.2R}", glycol->RhoValues(Loop));
2229 : }
2230 0 : print(state.files.debug, ",{}\n", glycol->RhoTemps(glycol->NumRhoTempPoints));
2231 : }
2232 0 : if (glycol->CondDataPresent) {
2233 0 : print(state.files.debug,
2234 : "Conductivity Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
2235 0 : glycol->CondLowTempValue,
2236 0 : glycol->CondLowTempIndex,
2237 0 : glycol->CondHighTempValue,
2238 0 : glycol->CondHighTempIndex);
2239 0 : print(state.files.debug, "{}", "Temperatures:");
2240 0 : for (int Loop = 1; Loop <= glycol->NumCondTempPoints - 1; ++Loop) {
2241 0 : print(state.files.debug, ",{:.2R}", glycol->CondTemps(Loop));
2242 : }
2243 0 : print(state.files.debug, ",{}\n", glycol->CondTemps(glycol->NumCondTempPoints));
2244 0 : print(state.files.debug, "{}", "Conductivity:");
2245 0 : for (int Loop = 1; Loop <= glycol->NumCondTempPoints - 1; ++Loop) {
2246 0 : print(state.files.debug, ",{:.2R}", glycol->CondValues(Loop));
2247 : }
2248 0 : print(state.files.debug, ",{}\n", glycol->CondValues(glycol->NumCondTempPoints));
2249 : }
2250 0 : if (glycol->ViscDataPresent) {
2251 0 : print(state.files.debug,
2252 : "Viscosity Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
2253 0 : glycol->ViscLowTempValue,
2254 0 : glycol->ViscLowTempIndex,
2255 0 : glycol->ViscHighTempValue,
2256 0 : glycol->ViscHighTempIndex);
2257 0 : print(state.files.debug, "{}", "Temperatures:");
2258 0 : for (int Loop = 1; Loop <= glycol->NumViscTempPoints - 1; ++Loop) {
2259 0 : print(state.files.debug, ",{:.2R}", glycol->ViscTemps(Loop));
2260 : }
2261 0 : print(state.files.debug, ",{}\n", glycol->ViscTemps(glycol->NumViscTempPoints));
2262 0 : print(state.files.debug, "{}", "Viscosity:");
2263 0 : for (int Loop = 1; Loop <= glycol->NumViscTempPoints - 1; ++Loop) {
2264 0 : print(state.files.debug, ",{:.2R}", glycol->ViscValues(Loop));
2265 : }
2266 0 : print(state.files.debug, ",{}\n", glycol->ViscValues(glycol->NumViscTempPoints));
2267 : }
2268 : // ============================================
2269 : // Glycol Results, using out of bounds to out of bounds values in calling
2270 : // ============================================
2271 :
2272 : // ========= Specific Heat from Temperatures
2273 0 : print(state.files.debug, "Glycol={} **** Results ****\n", glycol->Name);
2274 0 : if (glycol->CpDataPresent) {
2275 0 : print(state.files.debug, "Specific Heat Results at Temperatures:");
2276 0 : print(state.files.debug, ",{:.2R}", glycol->CpTemps(1) - incr);
2277 :
2278 0 : for (int Loop = 1; Loop <= glycol->NumCpTempPoints - 1; ++Loop) {
2279 0 : print(state.files.debug, ",{:.2R}", glycol->CpTemps(Loop));
2280 0 : Temperature = glycol->CpTemps(Loop) + (glycol->CpTemps(Loop + 1) - glycol->CpTemps(Loop)) / 2.0;
2281 0 : print(state.files.debug, ",{:.2R}", Temperature);
2282 : }
2283 0 : print(state.files.debug, ",{:.2R}", glycol->CpTemps(glycol->NumCpTempPoints));
2284 0 : print(state.files.debug, ",{:.2R}\n", glycol->CpTemps(glycol->NumCpTempPoints) + incr);
2285 0 : print(state.files.debug, "Specific Heat:");
2286 0 : Temperature = glycol->CpTemps(1) - incr;
2287 0 : ReturnValue = GetSpecificHeatGlycol(state, glycol->Name, Temperature, GlycolIndex, routineName);
2288 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2289 0 : for (int Loop = 1; Loop <= glycol->NumCpTempPoints - 1; ++Loop) {
2290 0 : Temperature = glycol->CpTemps(Loop);
2291 0 : ReturnValue = glycol->getSpecificHeat(state, Temperature, routineName);
2292 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2293 0 : Temperature = glycol->CpTemps(Loop) + (glycol->CpTemps(Loop + 1) - glycol->CpTemps(Loop)) / 2.0;
2294 0 : ReturnValue = glycol->getSpecificHeat(state, Temperature, routineName);
2295 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2296 : }
2297 0 : Temperature = glycol->CpTemps(glycol->NumCpTempPoints);
2298 0 : ReturnValue = glycol->getSpecificHeat(state, Temperature, routineName);
2299 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2300 0 : Temperature = glycol->CpTemps(glycol->NumCpTempPoints) + incr;
2301 0 : ReturnValue = glycol->getSpecificHeat(state, Temperature, routineName);
2302 0 : print(state.files.debug, ",{:.2R}\n", ReturnValue);
2303 : }
2304 :
2305 : // ========= Density from Temperatures
2306 0 : if (glycol->RhoDataPresent) {
2307 0 : print(state.files.debug, "Density Results at Temperatures:");
2308 0 : print(state.files.debug, ",{:.2R}", glycol->RhoTemps(1) - incr);
2309 0 : for (int Loop = 1; Loop <= glycol->NumRhoTempPoints - 1; ++Loop) {
2310 0 : print(state.files.debug, ",{:.2R}", glycol->RhoTemps(Loop));
2311 0 : Temperature = glycol->RhoTemps(Loop) + (glycol->RhoTemps(Loop + 1) - glycol->RhoTemps(Loop)) / 2.0;
2312 0 : print(state.files.debug, ",{:.2R}", Temperature);
2313 : }
2314 0 : print(state.files.debug, ",{}", glycol->RhoTemps(glycol->NumRhoTempPoints));
2315 0 : print(state.files.debug, ",{:.2R}\n", glycol->RhoTemps(glycol->NumRhoTempPoints) + incr);
2316 0 : print(state.files.debug, "Density:");
2317 0 : Temperature = glycol->RhoTemps(1) - incr;
2318 0 : ReturnValue = GetDensityGlycol(state, glycol->Name, Temperature, GlycolIndex, routineName);
2319 0 : print(state.files.debug, ",{:.3R}", ReturnValue);
2320 0 : for (int Loop = 1; Loop <= glycol->NumRhoTempPoints - 1; ++Loop) {
2321 0 : Temperature = glycol->RhoTemps(Loop);
2322 0 : ReturnValue = glycol->getDensity(state, Temperature, routineName);
2323 0 : print(state.files.debug, ",{:.3R}", ReturnValue);
2324 0 : Temperature = glycol->RhoTemps(Loop) + (glycol->RhoTemps(Loop + 1) - glycol->RhoTemps(Loop)) / 2.0;
2325 0 : ReturnValue = glycol->getDensity(state, Temperature, routineName);
2326 0 : print(state.files.debug, ",{:.3R}", ReturnValue);
2327 : }
2328 0 : Temperature = glycol->RhoTemps(glycol->NumRhoTempPoints);
2329 0 : ReturnValue = glycol->getDensity(state, Temperature, routineName);
2330 0 : print(state.files.debug, ",{:.3R}", ReturnValue);
2331 0 : Temperature = glycol->RhoTemps(glycol->NumRhoTempPoints) + incr;
2332 0 : ReturnValue = glycol->getDensity(state, Temperature, routineName);
2333 0 : print(state.files.debug, ",{:.3R}\n", ReturnValue);
2334 : }
2335 :
2336 : // ========= Conductivity from Temperatures
2337 0 : if (glycol->CondDataPresent) {
2338 0 : print(state.files.debug, "Conductivity Results at Temperatures:");
2339 0 : print(state.files.debug, ",{:.2R}", glycol->CondTemps(1) - incr);
2340 0 : for (int Loop = 1; Loop <= glycol->NumCondTempPoints - 1; ++Loop) {
2341 0 : print(state.files.debug, ",{:.2R}", glycol->CondTemps(Loop));
2342 0 : Temperature = glycol->CondTemps(Loop) + (glycol->CondTemps(Loop + 1) - glycol->CondTemps(Loop)) / 2.0;
2343 0 : print(state.files.debug, ",{:.2R}", Temperature);
2344 : }
2345 0 : print(state.files.debug, ",{:.2R}", glycol->CondTemps(glycol->NumCondTempPoints));
2346 0 : print(state.files.debug, ",{:.2R}\n", glycol->CondTemps(glycol->NumCondTempPoints) + incr);
2347 0 : print(state.files.debug, "Conductivity:");
2348 0 : Temperature = glycol->CondTemps(1) - incr;
2349 0 : ReturnValue = glycol->getConductivity(state, Temperature, routineName);
2350 0 : print(state.files.debug, ",{:.3R}", ReturnValue);
2351 0 : for (int Loop = 1; Loop <= glycol->NumCondTempPoints - 1; ++Loop) {
2352 0 : Temperature = glycol->CondTemps(Loop);
2353 0 : ReturnValue = glycol->getConductivity(state, Temperature, routineName);
2354 0 : print(state.files.debug, ",{:.3R}", ReturnValue);
2355 0 : Temperature = glycol->CondTemps(Loop) + (glycol->CondTemps(Loop + 1) - glycol->CondTemps(Loop)) / 2.0;
2356 0 : ReturnValue = glycol->getConductivity(state, Temperature, routineName);
2357 0 : print(state.files.debug, ",{:.3R}", ReturnValue);
2358 : }
2359 0 : Temperature = glycol->CondTemps(glycol->NumCondTempPoints);
2360 0 : ReturnValue = glycol->getConductivity(state, Temperature, routineName);
2361 0 : print(state.files.debug, ",{:.3R}", ReturnValue);
2362 0 : Temperature = glycol->CondTemps(glycol->NumCondTempPoints) + incr;
2363 0 : ReturnValue = glycol->getConductivity(state, Temperature, routineName);
2364 0 : print(state.files.debug, ",{:.3R}\n", ReturnValue);
2365 : }
2366 :
2367 : // ========= Viscosity from Temperatures
2368 0 : if (glycol->ViscDataPresent) {
2369 0 : print(state.files.debug, "Viscosity Results at Temperatures:");
2370 0 : print(state.files.debug, ",{:.2R}", glycol->ViscTemps(1) - incr);
2371 0 : for (int Loop = 1; Loop <= glycol->NumViscTempPoints - 1; ++Loop) {
2372 0 : print(state.files.debug, ",{:.2R}", glycol->ViscTemps(Loop));
2373 0 : Temperature = glycol->ViscTemps(Loop) + (glycol->ViscTemps(Loop + 1) - glycol->ViscTemps(Loop)) / 2.0;
2374 0 : print(state.files.debug, ",{:.2R}", Temperature);
2375 : }
2376 0 : print(state.files.debug, ",{:.2R}", glycol->ViscTemps(glycol->NumViscTempPoints));
2377 0 : print(state.files.debug, ",{:.2R}\n", glycol->ViscTemps(glycol->NumViscTempPoints) + incr);
2378 0 : print(state.files.debug, "Viscosity:");
2379 0 : Temperature = glycol->ViscTemps(1) - incr;
2380 0 : ReturnValue = glycol->getViscosity(state, Temperature, routineName);
2381 0 : print(state.files.debug, ",{:.4R}", ReturnValue);
2382 0 : for (int Loop = 1; Loop <= glycol->NumViscTempPoints - 1; ++Loop) {
2383 0 : Temperature = glycol->ViscTemps(Loop);
2384 0 : ReturnValue = glycol->getViscosity(state, Temperature, routineName);
2385 0 : print(state.files.debug, ",{:.4R}", ReturnValue);
2386 0 : Temperature = glycol->ViscTemps(Loop) + (glycol->ViscTemps(Loop + 1) - glycol->ViscTemps(Loop)) / 2.0;
2387 0 : ReturnValue = glycol->getViscosity(state, Temperature, routineName);
2388 0 : print(state.files.debug, ",{:.4R}", ReturnValue);
2389 : }
2390 0 : Temperature = glycol->ViscTemps(glycol->NumViscTempPoints);
2391 0 : ReturnValue = glycol->getViscosity(state, Temperature, routineName);
2392 0 : print(state.files.debug, ",{:.4R}", ReturnValue);
2393 0 : Temperature = glycol->ViscTemps(glycol->NumViscTempPoints) + incr;
2394 0 : ReturnValue = glycol->getViscosity(state, Temperature, routineName);
2395 0 : print(state.files.debug, ",{:.4R}\n", ReturnValue);
2396 : }
2397 : }
2398 0 : }
2399 :
2400 : //*****************************************************************************
2401 :
2402 0 : void ReportAndTestRefrigerants(EnergyPlusData &state)
2403 : {
2404 :
2405 : // SUBROUTINE INFORMATION:
2406 : // AUTHOR Linda Lawrie
2407 : // DATE WRITTEN March 2008; only stub provided to satisfy calling programs.
2408 :
2409 : // PURPOSE OF THIS SUBROUTINE:
2410 : // This subroutine is written to report and test refrigerants through their range
2411 : // of inputs (temperatures?) and make sure that proper values will be returned.
2412 :
2413 : // METHODOLOGY EMPLOYED:
2414 : // Use internal structure as the range limits. Write output to the
2415 : // debug output file.
2416 :
2417 : // SUBROUTINE PARAMETER DEFINITIONS:
2418 0 : constexpr Real64 incr(10.0);
2419 0 : constexpr Real64 Quality(1.0);
2420 : static constexpr std::string_view routineName = "ReportAndTestRefrigerants";
2421 :
2422 : // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
2423 : Real64 Temperature; // Temperature to drive values
2424 : Real64 ReturnValue; // Values returned from refrigerant functions
2425 :
2426 0 : auto const &df = state.dataFluidProps;
2427 :
2428 0 : for (auto *refrig : df->refrigs) {
2429 : // Lay out the basic values:
2430 0 : if (!refrig->Name.empty()) {
2431 0 : print(state.files.debug, "Refrigerant={}", refrig->Name);
2432 : }
2433 0 : if (refrig->NumPsPoints > 0) {
2434 0 : print(state.files.debug,
2435 : "Saturation Pressures Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
2436 0 : refrig->PsLowTempValue,
2437 0 : refrig->PsLowTempIndex,
2438 0 : refrig->PsHighTempValue,
2439 0 : refrig->PsHighTempIndex);
2440 0 : print(state.files.debug, "Temperatures:");
2441 0 : for (int Loop = 1; Loop <= refrig->NumPsPoints - 1; ++Loop) {
2442 0 : print(state.files.debug, ",{:.2R}", refrig->PsTemps(Loop));
2443 : }
2444 0 : print(state.files.debug, ",{:.2R}\n", refrig->PsTemps(refrig->NumPsPoints));
2445 0 : print(state.files.debug, "Saturation Pressure:");
2446 0 : for (int Loop = 1; Loop <= refrig->NumPsPoints - 1; ++Loop) {
2447 0 : print(state.files.debug, ",{:.2R}", refrig->PsValues(Loop));
2448 : }
2449 0 : print(state.files.debug, ",{:.2R}\n", refrig->PsValues(refrig->NumPsPoints));
2450 : }
2451 0 : if (refrig->NumHPoints > 0) {
2452 0 : print(state.files.debug,
2453 : "Enthalpy Saturated Fluid Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
2454 0 : refrig->HfLowTempValue,
2455 0 : refrig->HfLowTempIndex,
2456 0 : refrig->HfHighTempValue,
2457 0 : refrig->HfHighTempIndex);
2458 0 : print(state.files.debug, "Temperatures:");
2459 0 : for (int Loop = 1; Loop <= refrig->NumHPoints - 1; ++Loop) {
2460 0 : print(state.files.debug, ",{:.2R}", refrig->HTemps(Loop));
2461 : }
2462 0 : print(state.files.debug, ",{:.2R}\n", refrig->HTemps(refrig->NumHPoints));
2463 0 : print(state.files.debug, "Enthalpy Saturated Fluid:");
2464 0 : for (int Loop = 1; Loop <= refrig->NumHPoints - 1; ++Loop) {
2465 0 : print(state.files.debug, ",{:.2R}", refrig->HfValues(Loop));
2466 : }
2467 0 : print(state.files.debug, ",{:.2R}\n", refrig->HfValues(refrig->NumHPoints));
2468 0 : print(state.files.debug,
2469 : "Enthalpy Saturated Fluid/Gas Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
2470 0 : refrig->HfgLowTempValue,
2471 0 : refrig->HfgLowTempIndex,
2472 0 : refrig->HfgHighTempValue,
2473 0 : refrig->HfgHighTempIndex);
2474 :
2475 0 : print(state.files.debug, "Temperatures:");
2476 0 : for (int Loop = 1; Loop <= refrig->NumHPoints - 1; ++Loop) {
2477 0 : print(state.files.debug, ",{:.2R}", refrig->HTemps(Loop));
2478 : }
2479 0 : print(state.files.debug, ",{:.2R}\n", refrig->HTemps(refrig->NumHPoints));
2480 0 : print(state.files.debug, "Enthalpy Saturated Fluid/Gas:");
2481 0 : for (int Loop = 1; Loop <= refrig->NumHPoints - 1; ++Loop) {
2482 0 : print(state.files.debug, ",{:.2R}", refrig->HfgValues(Loop));
2483 : }
2484 0 : print(state.files.debug, ",{:.2R}\n", refrig->HfgValues(refrig->NumHPoints));
2485 : }
2486 0 : if (refrig->NumCpPoints > 0) {
2487 0 : print(state.files.debug,
2488 : "Specific Heat Saturated Fluid Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
2489 0 : refrig->CpfLowTempValue,
2490 0 : refrig->CpfLowTempIndex,
2491 0 : refrig->CpfHighTempValue,
2492 0 : refrig->CpfHighTempIndex);
2493 0 : print(state.files.debug, "Temperatures:");
2494 0 : for (int Loop = 1; Loop <= refrig->NumCpPoints - 1; ++Loop) {
2495 0 : print(state.files.debug, ",{:.2R}", refrig->CpTemps(Loop));
2496 : }
2497 0 : print(state.files.debug, ",{:.2R}\n", refrig->CpTemps(refrig->NumCpPoints));
2498 0 : print(state.files.debug, "Specific Heat Saturated Fluid:");
2499 0 : for (int Loop = 1; Loop <= refrig->NumCpPoints - 1; ++Loop) {
2500 0 : print(state.files.debug, ",{:.2R}\n", refrig->CpfValues(Loop));
2501 : }
2502 0 : print(state.files.debug, ",{:.2R}", refrig->CpfValues(refrig->NumCpPoints));
2503 0 : print(state.files.debug,
2504 : "Specific Heat Saturated Fluid/Gas Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
2505 0 : refrig->CpfgLowTempValue,
2506 0 : refrig->CpfgLowTempIndex,
2507 0 : refrig->CpfgHighTempValue,
2508 0 : refrig->CpfgHighTempIndex);
2509 0 : print(state.files.debug, "Temperatures:");
2510 0 : for (int Loop = 1; Loop <= refrig->NumCpPoints - 1; ++Loop) {
2511 0 : print(state.files.debug, ",{:.2R}", refrig->CpTemps(Loop));
2512 : }
2513 0 : print(state.files.debug, ",{:.2R}\n", refrig->CpTemps(refrig->NumCpPoints));
2514 0 : print(state.files.debug, "Specific Heat Saturated Fluid/Gas:");
2515 0 : for (int Loop = 1; Loop <= refrig->NumCpPoints - 1; ++Loop) {
2516 0 : print(state.files.debug, ",{:.2R}", refrig->CpfgValues(Loop));
2517 : }
2518 0 : print(state.files.debug, ",{:.2R}\n", refrig->CpfgValues(refrig->NumCpPoints));
2519 : }
2520 0 : if (refrig->NumRhoPoints > 0) {
2521 0 : print(state.files.debug,
2522 : "Density Saturated Fluid Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
2523 0 : refrig->RhofLowTempValue,
2524 0 : refrig->RhofLowTempIndex,
2525 0 : refrig->RhofHighTempValue,
2526 0 : refrig->RhofHighTempIndex);
2527 0 : print(state.files.debug, "Temperatures:");
2528 0 : for (int Loop = 1; Loop <= refrig->NumRhoPoints - 1; ++Loop) {
2529 0 : print(state.files.debug, ",{:.2R}", refrig->RhoTemps(Loop));
2530 : }
2531 0 : print(state.files.debug, ",{:.2R}", refrig->RhoTemps(refrig->NumRhoPoints));
2532 0 : print(state.files.debug, "Density Saturated Fluid:");
2533 0 : for (int Loop = 1; Loop <= refrig->NumRhoPoints - 1; ++Loop) {
2534 0 : print(state.files.debug, ",{:.2R}", refrig->RhofValues(Loop));
2535 : }
2536 0 : print(state.files.debug, ",{:.2R}", refrig->RhofValues(refrig->NumRhoPoints));
2537 0 : print(state.files.debug,
2538 : "Density Saturated Fluid/Gas Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
2539 0 : refrig->RhofgLowTempValue,
2540 0 : refrig->RhofgLowTempIndex,
2541 0 : refrig->RhofgHighTempValue,
2542 0 : refrig->RhofgHighTempIndex);
2543 0 : print(state.files.debug, "Temperatures:");
2544 0 : for (int Loop = 1; Loop <= refrig->NumRhoPoints - 1; ++Loop) {
2545 0 : print(state.files.debug, ",{:.2R}", refrig->RhoTemps(Loop));
2546 : }
2547 0 : print(state.files.debug, ",{:.2R}\n", refrig->RhoTemps(refrig->NumRhoPoints));
2548 0 : print(state.files.debug, "Density Saturated Fluid/Gas:");
2549 0 : for (int Loop = 1; Loop <= refrig->NumRhoPoints - 1; ++Loop) {
2550 0 : print(state.files.debug, ",{:.2R}", refrig->RhofgValues(Loop));
2551 : }
2552 0 : print(state.files.debug, ",{:.2R}\n", refrig->RhofgValues(refrig->NumRhoPoints));
2553 : }
2554 :
2555 0 : if (refrig->NumSupTempPoints > 0 && refrig->NumSupPressPoints > 0) {
2556 0 : print(state.files.debug,
2557 : "Superheated Gas Fluid Data points:,NumTemperaturePoints=,{},NumPressurePoints=,{}\n",
2558 0 : refrig->NumSupTempPoints,
2559 0 : refrig->NumSupPressPoints);
2560 0 : print(state.files.debug, "Superheated Temperatures:");
2561 0 : for (int Loop = 1; Loop <= refrig->NumSupTempPoints - 1; ++Loop) {
2562 0 : print(state.files.debug, ",{:.3R}", refrig->SupTemps(Loop));
2563 : }
2564 0 : print(state.files.debug, ",{:.3R}\n", refrig->SupTemps(refrig->NumSupTempPoints));
2565 0 : print(state.files.debug, "Superheated Pressures:");
2566 0 : for (int Loop = 1; Loop <= refrig->NumSupPressPoints - 1; ++Loop) {
2567 0 : print(state.files.debug, ",{:.3R}", refrig->SupPress(Loop));
2568 : }
2569 0 : print(state.files.debug, ",{:.3R}\n", refrig->SupPress(refrig->NumSupPressPoints));
2570 0 : for (int Loop = 1; Loop <= refrig->NumSupPressPoints; ++Loop) {
2571 0 : print(state.files.debug, "Superheated Pressure:#{}={:.2R}\n", Loop, refrig->SupPress(Loop));
2572 0 : print(state.files.debug, "Enthalpy Superheated Gas:");
2573 0 : for (int Loop1 = 1; Loop1 <= refrig->NumSupTempPoints - 1; ++Loop1) {
2574 0 : print(state.files.debug, ",{:.3R}", refrig->HshValues(Loop, Loop1));
2575 : }
2576 0 : print(state.files.debug, ",{:.3R}\n", refrig->HshValues(Loop, refrig->NumSupTempPoints));
2577 : }
2578 0 : for (int Loop = 1; Loop <= refrig->NumSupPressPoints; ++Loop) {
2579 0 : print(state.files.debug, "Superheated Pressure:#{}={:.2R}\n", Loop, refrig->SupPress(Loop));
2580 0 : print(state.files.debug, "Density Superheated Gas:");
2581 0 : for (int Loop1 = 1; Loop1 <= refrig->NumSupTempPoints - 1; ++Loop1) {
2582 0 : print(state.files.debug, ",{:.3R}", refrig->RhoshValues(Loop, Loop1));
2583 : }
2584 0 : print(state.files.debug, ",{:.3R}\n", refrig->RhoshValues(Loop, refrig->NumSupTempPoints));
2585 : }
2586 0 : for (int Loop = 1; Loop <= refrig->NumSupTempPoints; ++Loop) {
2587 0 : print(state.files.debug, "Superheated Temperature:#{}={:.2R}\n", Loop, refrig->SupTemps(Loop));
2588 0 : print(state.files.debug, "Enthalpy Superheated Gas:");
2589 0 : for (int Loop1 = 1; Loop1 <= refrig->NumSupPressPoints - 1; ++Loop1) {
2590 0 : print(state.files.debug, ",{:.3R}", refrig->HshValues(Loop1, Loop));
2591 : }
2592 0 : print(state.files.debug, ",{:.3R}\n", refrig->HshValues(refrig->NumSupPressPoints, Loop));
2593 : }
2594 0 : for (int Loop = 1; Loop <= refrig->NumSupTempPoints; ++Loop) {
2595 0 : print(state.files.debug, "Superheated Temperature:#{}={:.2R}\n", Loop, refrig->SupTemps(Loop));
2596 0 : print(state.files.debug, "Density Superheated Gas:");
2597 0 : for (int Loop1 = 1; Loop1 <= refrig->NumSupPressPoints - 1; ++Loop1) {
2598 0 : print(state.files.debug, ",{:.3R}", refrig->RhoshValues(Loop1, Loop));
2599 : }
2600 0 : print(state.files.debug, ",{:.3R}\n", refrig->RhoshValues(refrig->NumSupPressPoints, Loop));
2601 : }
2602 : }
2603 :
2604 : // ============================================
2605 : // Refrigeration Results, using out of bounds to out of bounds values in calling
2606 : // ============================================
2607 :
2608 : // ========= Pressure from Temperatures
2609 0 : print(state.files.debug, "Refrigerant={} **** Results ****\n", refrig->Name);
2610 0 : if (refrig->NumPsPoints > 0) {
2611 0 : print(state.files.debug, "Pressure Results at Temperatures:");
2612 0 : print(state.files.debug, ",{:.2R}", refrig->PsTemps(1) - incr);
2613 0 : for (int Loop = 1; Loop <= refrig->NumPsPoints - 1; ++Loop) {
2614 0 : print(state.files.debug, ",{:.2R}", refrig->PsTemps(Loop));
2615 0 : Temperature = refrig->PsTemps(Loop) + (refrig->PsTemps(Loop + 1) - refrig->PsTemps(Loop)) / 2.0;
2616 0 : print(state.files.debug, ",{:.2R}", Temperature);
2617 : }
2618 0 : print(state.files.debug, ",{:.2R}", refrig->PsTemps(refrig->NumPsPoints));
2619 0 : print(state.files.debug, ",{:.2R}\n", refrig->PsTemps(refrig->NumPsPoints) + incr);
2620 0 : print(state.files.debug, "Saturated Pressures:");
2621 0 : Temperature = refrig->PsTemps(1) - incr;
2622 0 : ReturnValue = refrig->getSatPressure(state, Temperature, routineName);
2623 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2624 0 : for (int Loop = 1; Loop <= refrig->NumPsPoints - 1; ++Loop) {
2625 0 : Temperature = refrig->PsTemps(Loop);
2626 0 : ReturnValue = refrig->getSatPressure(state, Temperature, routineName);
2627 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2628 0 : Temperature = refrig->PsTemps(Loop) + (refrig->PsTemps(Loop + 1) - refrig->PsTemps(Loop)) / 2.0;
2629 0 : ReturnValue = refrig->getSatPressure(state, Temperature, routineName);
2630 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2631 : }
2632 0 : Temperature = refrig->PsTemps(refrig->NumPsPoints);
2633 0 : ReturnValue = refrig->getSatPressure(state, Temperature, routineName);
2634 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2635 0 : Temperature = refrig->PsTemps(refrig->NumPsPoints) + incr;
2636 0 : ReturnValue = refrig->getSatPressure(state, Temperature, routineName);
2637 0 : print(state.files.debug, ",{:.2R}\n", ReturnValue);
2638 : }
2639 :
2640 : // ========= Enthalpy from Temperatures
2641 0 : if (refrig->NumHPoints > 0) {
2642 0 : print(state.files.debug, "Enthalpy Results at Temperatures:");
2643 0 : print(state.files.debug, ",{:.2R}", refrig->HTemps(1) - incr);
2644 0 : for (int Loop = 1; Loop <= refrig->NumHPoints - 1; ++Loop) {
2645 0 : print(state.files.debug, ",{:.2R}", refrig->HTemps(Loop));
2646 0 : Temperature = refrig->HTemps(Loop) + (refrig->HTemps(Loop + 1) - refrig->HTemps(Loop)) / 2.0;
2647 0 : print(state.files.debug, ",{:.2R}", Temperature);
2648 : }
2649 0 : print(state.files.debug, ",{:.2R}", refrig->HTemps(refrig->NumHPoints));
2650 0 : print(state.files.debug, ",{:.2R}\n", refrig->HTemps(refrig->NumHPoints) + incr);
2651 0 : print(state.files.debug, "Saturated Enthalpy:");
2652 0 : Temperature = refrig->HTemps(1) - incr;
2653 0 : ReturnValue = refrig->getSatEnthalpy(state, Temperature, Quality, routineName);
2654 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2655 0 : for (int Loop = 1; Loop <= refrig->NumHPoints - 1; ++Loop) {
2656 0 : Temperature = refrig->HTemps(Loop);
2657 0 : ReturnValue = refrig->getSatEnthalpy(state, Temperature, Quality, routineName);
2658 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2659 0 : Temperature = refrig->HTemps(Loop) + (refrig->HTemps(Loop + 1) - refrig->HTemps(Loop)) / 2.0;
2660 0 : ReturnValue = refrig->getSatEnthalpy(state, Temperature, Quality, routineName);
2661 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2662 : }
2663 0 : Temperature = refrig->HTemps(refrig->NumHPoints);
2664 0 : ReturnValue = refrig->getSatEnthalpy(state, Temperature, Quality, routineName);
2665 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2666 0 : Temperature = refrig->HTemps(refrig->NumHPoints) + incr;
2667 0 : ReturnValue = refrig->getSatEnthalpy(state, Temperature, Quality, routineName);
2668 0 : print(state.files.debug, ",{:.2R}\n", ReturnValue);
2669 : }
2670 :
2671 : // ========= Specific Heat from Temperatures
2672 0 : if (refrig->NumCpPoints > 0) {
2673 0 : print(state.files.debug, "Specific Heat Results at Temperatures:");
2674 0 : print(state.files.debug, ",{:.2R}", refrig->CpTemps(1) - incr);
2675 0 : for (int Loop = 1; Loop <= refrig->NumCpPoints - 1; ++Loop) {
2676 0 : print(state.files.debug, ",{:.2R}", refrig->CpTemps(Loop));
2677 0 : Temperature = refrig->CpTemps(Loop) + (refrig->CpTemps(Loop + 1) - refrig->CpTemps(Loop)) / 2.0;
2678 0 : print(state.files.debug, ",{:.2R}", Temperature);
2679 : }
2680 0 : print(state.files.debug, ",{:.2R}", refrig->CpTemps(refrig->NumCpPoints));
2681 0 : print(state.files.debug, ",{:.2R}\n", refrig->CpTemps(refrig->NumCpPoints) + incr);
2682 0 : print(state.files.debug, "Saturated Specific Heat:");
2683 0 : Temperature = refrig->CpTemps(1) - incr;
2684 0 : ReturnValue = refrig->getSatSpecificHeat(state, Temperature, Quality, routineName);
2685 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2686 0 : for (int Loop = 1; Loop <= refrig->NumCpPoints - 1; ++Loop) {
2687 0 : Temperature = refrig->CpTemps(Loop);
2688 0 : ReturnValue = refrig->getSatSpecificHeat(state, Temperature, Quality, routineName);
2689 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2690 0 : Temperature = refrig->CpTemps(Loop) + (refrig->CpTemps(Loop + 1) - refrig->CpTemps(Loop)) / 2.0;
2691 0 : ReturnValue = refrig->getSatSpecificHeat(state, Temperature, Quality, routineName);
2692 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2693 : }
2694 0 : Temperature = refrig->CpTemps(refrig->NumCpPoints);
2695 0 : ReturnValue = refrig->getSatSpecificHeat(state, Temperature, Quality, routineName);
2696 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2697 0 : Temperature = refrig->CpTemps(refrig->NumCpPoints) + incr;
2698 0 : ReturnValue = refrig->getSatSpecificHeat(state, Temperature, Quality, routineName);
2699 0 : print(state.files.debug, ",{:.2R}\n", ReturnValue);
2700 : }
2701 :
2702 : // ========= Density from Temperatures
2703 0 : if (refrig->NumRhoPoints > 0) {
2704 0 : print(state.files.debug, "Density Results at Temperatures:");
2705 0 : print(state.files.debug, ",{:.2R}", refrig->RhoTemps(1) - incr);
2706 0 : for (int Loop = 1; Loop <= refrig->NumRhoPoints - 1; ++Loop) {
2707 0 : print(state.files.debug, ",{:.2R}", refrig->RhoTemps(Loop));
2708 0 : Temperature = refrig->RhoTemps(Loop) + (refrig->RhoTemps(Loop + 1) - refrig->RhoTemps(Loop)) / 2.0;
2709 0 : print(state.files.debug, ",{:.2R}", Temperature);
2710 : }
2711 0 : print(state.files.debug, ",{:.2R}", refrig->RhoTemps(refrig->NumRhoPoints));
2712 0 : print(state.files.debug, ",{:.2R}\n", refrig->RhoTemps(refrig->NumRhoPoints) + incr);
2713 0 : print(state.files.debug, "Saturated Density:");
2714 0 : Temperature = refrig->RhoTemps(1) - incr;
2715 0 : ReturnValue = refrig->getSatDensity(state, Temperature, Quality, routineName);
2716 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2717 0 : for (int Loop = 1; Loop <= refrig->NumRhoPoints - 1; ++Loop) {
2718 0 : Temperature = refrig->RhoTemps(Loop);
2719 0 : ReturnValue = refrig->getSatDensity(state, Temperature, Quality, routineName);
2720 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2721 0 : Temperature = refrig->RhoTemps(Loop) + (refrig->RhoTemps(Loop + 1) - refrig->RhoTemps(Loop)) / 2.0;
2722 0 : ReturnValue = refrig->getSatDensity(state, Temperature, Quality, routineName);
2723 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2724 : }
2725 0 : Temperature = refrig->RhoTemps(refrig->NumRhoPoints);
2726 0 : ReturnValue = refrig->getSatDensity(state, Temperature, Quality, routineName);
2727 0 : print(state.files.debug, ",{:.2R}", ReturnValue);
2728 0 : Temperature = refrig->RhoTemps(refrig->NumRhoPoints) + incr;
2729 0 : ReturnValue = refrig->getSatDensity(state, Temperature, Quality, routineName);
2730 0 : print(state.files.debug, ",{:.2R}\n", ReturnValue);
2731 : }
2732 : }
2733 0 : }
2734 :
2735 : //*****************************************************************************
2736 :
2737 35347998 : Real64 RefrigProps::getSatPressure(EnergyPlusData &state,
2738 : Real64 const Temperature, // actual temperature given as input
2739 : std::string_view const CalledFrom // routine this function was called from (error messages)
2740 : )
2741 : {
2742 :
2743 : // SUBROUTINE INFORMATION:
2744 : // AUTHOR Simon Rees
2745 : // DATE WRITTEN 24 May 2002
2746 :
2747 : // PURPOSE OF THIS FUNCTION:
2748 : // This finds the saturation pressure for given temperature.
2749 :
2750 : // METHODOLOGY EMPLOYED:
2751 : // Calls FindArrayIndex to find indices either side of requested temperature
2752 : // and linearly interpolates the corresponding saturation pressure values.
2753 :
2754 : // FUNCTION PARAMETER DEFINITIONS:
2755 : static constexpr std::string_view routineName = "RefrigProps::getSatPressure";
2756 :
2757 35347998 : Real64 ReturnValue = 0;
2758 35347998 : bool ErrorFlag = false; // error flag for current call
2759 :
2760 35347998 : int LoTempIndex = FindArrayIndex(Temperature, this->PsTemps, this->PsLowTempIndex, this->PsHighTempIndex);
2761 :
2762 : // check for out of data bounds problems
2763 35347998 : if (LoTempIndex == 0) {
2764 0 : ReturnValue = this->PsValues(this->PsLowTempIndex);
2765 0 : ErrorFlag = true;
2766 35347998 : } else if (LoTempIndex + 1 > this->PsHighTempIndex) {
2767 0 : ReturnValue = this->PsValues(this->PsHighTempIndex);
2768 0 : ErrorFlag = true;
2769 : } else {
2770 : // find interpolation ratio w.r.t temperature
2771 35347998 : Real64 TempInterpRatio = (Temperature - this->PsTemps(LoTempIndex)) / (this->PsTemps(LoTempIndex + 1) - this->PsTemps(LoTempIndex));
2772 :
2773 : // apply final linear interpolation
2774 35347998 : ReturnValue = this->PsValues(LoTempIndex) + TempInterpRatio * (this->PsValues(LoTempIndex + 1) - this->PsValues(LoTempIndex));
2775 : }
2776 :
2777 35347998 : if (!state.dataGlobal->WarmupFlag && ErrorFlag) {
2778 0 : ++this->errors[(int)RefrigError::SatTemp].count;
2779 0 : auto &df = state.dataFluidProps;
2780 :
2781 : // send warning
2782 0 : if (this->errors[(int)RefrigError::SatTemp].count <= df->RefrigErrorLimitTest) {
2783 0 : ShowSevereMessage(
2784 0 : state, format("{}: Saturation temperature is out of range for refrigerant [{}] supplied data: **", routineName, this->Name));
2785 0 : ShowContinueError(state,
2786 0 : format("...Called From:{}, supplied data range=[{:.2R},{:.2R}]",
2787 : CalledFrom,
2788 : this->PsTemps(this->PsLowTempIndex),
2789 : this->PsTemps(this->PsHighTempIndex)));
2790 0 : ShowContinueError(
2791 0 : state, format("...Supplied Refrigerant Temperature={:.2R} Returned saturated pressure value = {:.0R}", Temperature, ReturnValue));
2792 0 : ShowContinueErrorTimeStamp(state, "");
2793 : }
2794 0 : ShowRecurringSevereErrorAtEnd(
2795 : state,
2796 0 : format("{}: Saturation temperature is out of range for refrigerant [{}] supplied data: **", routineName, this->Name),
2797 0 : this->errors[(int)RefrigError::SatTemp].index,
2798 : Temperature,
2799 : "{C}");
2800 : }
2801 :
2802 35347998 : return ReturnValue;
2803 : }
2804 :
2805 34568420 : Real64 GetSatPressureRefrig(EnergyPlusData &state,
2806 : std::string_view const refrigName, // carries in substance name
2807 : Real64 const Temperature, // actual temperature given as input
2808 : int &RefrigIndex, // Index to Refrigerant Properties
2809 : std::string_view const CalledFrom // routine this function was called from (error messages)
2810 : )
2811 : {
2812 : // Wrapper for RefrigProps::getSatPressure()
2813 34568420 : auto &df = state.dataFluidProps;
2814 :
2815 34568420 : if (RefrigIndex == 0) {
2816 8 : if ((RefrigIndex = GetRefrigNum(state, refrigName)) == 0) {
2817 0 : ShowSevereError(state, format("Refrigerant \"{}\" not found, called from: {}", refrigName, CalledFrom));
2818 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
2819 0 : return 0.0;
2820 : }
2821 : }
2822 :
2823 34568420 : return df->refrigs(RefrigIndex)->getSatPressure(state, Temperature, CalledFrom);
2824 : }
2825 :
2826 : //*****************************************************************************
2827 :
2828 6356769 : Real64 RefrigProps::getSatTemperature(EnergyPlusData &state,
2829 : Real64 const Pressure, // actual temperature given as input
2830 : std::string_view const CalledFrom // routine this function was called from (error messages)
2831 : )
2832 : {
2833 :
2834 : // SUBROUTINE INFORMATION:
2835 : // AUTHOR Simon Rees
2836 : // DATE WRITTEN 24 May 2002
2837 :
2838 : // PURPOSE OF THIS FUNCTION:
2839 : // This finds the saturation temperature for given pressure.
2840 :
2841 : // METHODOLOGY EMPLOYED:
2842 : // Calls FindArrayIndex to find indices either side of requested pressure
2843 : // and linearly interpolates the corresponding saturation temperature values.
2844 :
2845 : // Return value
2846 6356769 : Real64 ReturnValue = 0.0;
2847 :
2848 : // FUNCTION PARAMETER DEFINITIONS:
2849 : static constexpr std::string_view routineName = "RefrigProps::getSatTemperature";
2850 :
2851 : // FUNCTION LOCAL VARIABLE DECLARATIONS:
2852 6356769 : bool ErrorFlag = false; // error flag for current call
2853 :
2854 : // get the array indices
2855 6356769 : int LoPresIndex = FindArrayIndex(Pressure, this->PsValues, this->PsLowPresIndex, this->PsHighPresIndex);
2856 :
2857 : // check for out of data bounds problems
2858 6356769 : if (LoPresIndex == 0) {
2859 0 : ReturnValue = this->PsTemps(this->PsLowPresIndex);
2860 0 : ErrorFlag = true;
2861 6356769 : } else if (LoPresIndex + 1 > this->PsHighPresIndex) {
2862 0 : ReturnValue = this->PsTemps(this->PsHighPresIndex);
2863 0 : ErrorFlag = true;
2864 : } else {
2865 : // find interpolation ratio w.r.t temperature
2866 6356769 : Real64 PresInterpRatio = (Pressure - this->PsValues(LoPresIndex)) / (this->PsValues(LoPresIndex + 1) - this->PsValues(LoPresIndex));
2867 :
2868 : // apply final linear interpolation
2869 6356769 : ReturnValue = this->PsTemps(LoPresIndex) + PresInterpRatio * (this->PsTemps(LoPresIndex + 1) - this->PsTemps(LoPresIndex));
2870 : }
2871 :
2872 6356769 : if (!state.dataGlobal->WarmupFlag && ErrorFlag) {
2873 0 : ++this->errors[(int)RefrigError::SatPress].count;
2874 0 : auto &df = state.dataFluidProps;
2875 :
2876 : // send warning
2877 0 : if (this->errors[(int)RefrigError::SatPress].count <= df->RefrigErrorLimitTest) {
2878 0 : ShowSevereMessage(state,
2879 0 : format("{}: Saturation pressure is out of range for refrigerant [{}] supplied data: **", routineName, this->Name));
2880 0 : ShowContinueError(state,
2881 0 : format("...Called From:{}, supplied data range=[{:.0R},{:.0R}]",
2882 : CalledFrom,
2883 : this->PsValues(this->PsLowPresIndex),
2884 : this->PsValues(this->PsHighPresIndex)));
2885 0 : ShowContinueError(
2886 0 : state, format("...Supplied Refrigerant Pressure={:.0R} Returned saturated temperature value ={:.2R}", Pressure, ReturnValue));
2887 0 : ShowContinueErrorTimeStamp(state, "");
2888 : }
2889 0 : ShowRecurringSevereErrorAtEnd(
2890 : state,
2891 0 : format("{}: Saturation pressure is out of range for refrigerant [{}] supplied data: **", routineName, this->Name),
2892 0 : this->errors[(int)RefrigError::SatPress].index,
2893 : Pressure,
2894 : "{Pa}");
2895 : }
2896 6356769 : return ReturnValue;
2897 : }
2898 :
2899 2537167 : Real64 GetSatTemperatureRefrig(EnergyPlusData &state,
2900 : std::string_view const refrigName, // carries in substance name
2901 : Real64 const Pressure, // actual temperature given as input
2902 : int &RefrigIndex, // Index to Refrigerant Properties
2903 : std::string_view const CalledFrom // routine this function was called from (error messages)
2904 : )
2905 : {
2906 : // Wrapper for RefrigProps::getSatTemperature()
2907 2537167 : auto &df = state.dataFluidProps;
2908 :
2909 2537167 : if (RefrigIndex == 0) {
2910 0 : if ((RefrigIndex = GetRefrigNum(state, refrigName)) == 0) {
2911 0 : ShowSevereError(state, format("Refrigerant \"{}\" not found, called from: {}", refrigName, CalledFrom));
2912 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
2913 0 : return 0.0;
2914 : }
2915 : }
2916 :
2917 2537167 : return df->refrigs(RefrigIndex)->getSatTemperature(state, Pressure, CalledFrom);
2918 : }
2919 :
2920 : //*****************************************************************************
2921 :
2922 118414713 : Real64 RefrigProps::getSatEnthalpy(EnergyPlusData &state,
2923 : Real64 const Temperature, // actual temperature given as input
2924 : Real64 const Quality, // actual quality given as input
2925 : std::string_view const CalledFrom // routine this function was called from (error messages)
2926 : )
2927 : {
2928 :
2929 : // SUBROUTINE INFORMATION:
2930 : // AUTHOR Mike Turner
2931 : // DATE WRITTEN 10 December 99
2932 : // MODIFIED Rick Strand (April 2000, May 2000)
2933 : // Simon Rees (May 2002)
2934 :
2935 : // PURPOSE OF THIS FUNCTION:
2936 : // This finds enthalpy for given temperature and a quality under the vapor dome.
2937 : // This fucntion is only called with a valid refrigerant and quality between 0 and 1.
2938 :
2939 : // METHODOLOGY EMPLOYED:
2940 : // Calls GetInterpolatedSatProp to linearly interpolate between the saturated
2941 : // liquid and vapour enthalpies according to the given quality.
2942 :
2943 : // Apply linear interpolation function
2944 236829426 : return GetInterpolatedSatProp(
2945 118414713 : state, Temperature, this->HTemps, this->HfValues, this->HfgValues, Quality, CalledFrom, this->HfLowTempIndex, this->HfHighTempIndex);
2946 : }
2947 :
2948 110111715 : Real64 GetSatEnthalpyRefrig(EnergyPlusData &state,
2949 : std::string_view const refrigName, // carries in substance name
2950 : Real64 const Temperature, // actual temperature given as input
2951 : Real64 const Quality, // actual quality given as input
2952 : int &RefrigIndex, // Index to Refrigerant Properties
2953 : std::string_view const CalledFrom // routine this function was called from (error messages)
2954 : )
2955 : {
2956 : // Wrapper for RefrigProps::getSatEnthalpy()
2957 110111715 : auto &df = state.dataFluidProps;
2958 :
2959 110111715 : if (RefrigIndex == 0) {
2960 31 : if ((RefrigIndex = GetRefrigNum(state, refrigName)) == 0) {
2961 0 : ShowSevereError(state, format("Refrigerant \"{}\" not found, called from: {}", refrigName, CalledFrom));
2962 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
2963 0 : return 0.0;
2964 : }
2965 : }
2966 110111715 : return df->refrigs(RefrigIndex)->getSatEnthalpy(state, Temperature, Quality, CalledFrom);
2967 : }
2968 :
2969 : //*****************************************************************************
2970 :
2971 2096308 : Real64 RefrigProps::getSatDensity(EnergyPlusData &state,
2972 : Real64 const Temperature, // actual temperature given as input
2973 : Real64 const Quality, // actual quality given as input
2974 : std::string_view const CalledFrom // routine this function was called from (error messages)
2975 : )
2976 : {
2977 :
2978 : // SUBROUTINE INFORMATION:
2979 : // AUTHOR Mike Turner
2980 : // DATE WRITTEN 10 December 99
2981 : // MODIFIED Rick Strand (April 2000, May 2000)
2982 : // Simon Rees (May 2002); Kenneth Tang (Jan 2004)
2983 :
2984 : // PURPOSE OF THIS SUBROUTINE:
2985 : // This finds density for given temperature and a quality under the vapor dome.
2986 : // This function is only called with a valid refrigerant and quality between 0 and 1.
2987 :
2988 : // METHODOLOGY EMPLOYED:
2989 : // Calls GetInterpolatedSatProp to linearly interpolate between the saturated
2990 : // liquid and vapour densities according to the given quality.
2991 :
2992 : // Return value
2993 : Real64 ReturnValue;
2994 :
2995 : // FUNCTION PARAMETER DEFINITIONS:
2996 : static constexpr std::string_view routineName = "RefrigProps::getSatDensity";
2997 :
2998 2096308 : if ((Quality < 0.0) || (Quality > 1.0)) {
2999 0 : ShowSevereError(state, fmt::format("{}Refrigerant \"{}\", invalid quality, called from {}", routineName, this->Name, CalledFrom));
3000 0 : ShowContinueError(state, format("Saturated density quality must be between 0 and 1, entered value=[{:.4R}].", Quality));
3001 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
3002 : }
3003 :
3004 2096308 : bool ErrorFlag = false;
3005 2096308 : int LoTempIndex = FindArrayIndex(Temperature, this->RhoTemps, this->RhofLowTempIndex, this->RhofHighTempIndex);
3006 2096308 : int HiTempIndex = LoTempIndex + 1;
3007 :
3008 : // Error check to make sure the temperature is not out of bounds
3009 2096308 : if (LoTempIndex == 0) {
3010 : // Give the lowest density value if the temperature is below than the minimum
3011 : // temperature in the refrigerant table
3012 0 : ReturnValue = 1.0 / this->RhofValues(this->RhofLowTempIndex) +
3013 0 : Quality * (1.0 / this->RhofgValues(this->RhofLowTempIndex) - 1.0 / this->RhofValues(this->RhofLowTempIndex));
3014 0 : ReturnValue = 1.0 / ReturnValue;
3015 0 : ErrorFlag = true;
3016 2096308 : } else if (HiTempIndex > this->RhofHighTempIndex) {
3017 : // Give the highest density value if the temperature is higher than the maximum
3018 : // temperature in the refrigerant table
3019 0 : ReturnValue = 1.0 / this->RhofValues(this->RhofHighTempIndex) +
3020 0 : Quality * (1.0 / this->RhofgValues(this->RhofHighTempIndex) - 1.0 / this->RhofValues(this->RhofHighTempIndex));
3021 0 : ReturnValue = 1.0 / ReturnValue;
3022 0 : ErrorFlag = true;
3023 : } else { // Okay
3024 :
3025 : // Calculate the specific volume for the lower temperature index based on linear
3026 : // interpolation of the quality
3027 : Real64 LoSatProp =
3028 2096308 : 1.0 / this->RhofValues(LoTempIndex) + Quality * (1.0 / this->RhofgValues(LoTempIndex) - 1.0 / this->RhofValues(LoTempIndex));
3029 :
3030 : // Calculate the specific volume for the higher temperature index based on linear
3031 : // interpolation of the quality
3032 : Real64 HiSatProp =
3033 2096308 : 1.0 / this->RhofValues(HiTempIndex) + Quality * (1.0 / this->RhofgValues(HiTempIndex) - 1.0 / this->RhofValues(HiTempIndex));
3034 :
3035 : // Find interpolation ratio in temperature direction
3036 2096308 : Real64 TempInterpRatio = (Temperature - this->RhoTemps(LoTempIndex)) / (this->RhoTemps(HiTempIndex) - this->RhoTemps(LoTempIndex));
3037 :
3038 : // Apply final linear interpolation to find the specific volume
3039 2096308 : ReturnValue = LoSatProp + TempInterpRatio * (HiSatProp - LoSatProp);
3040 : // Convert the specific volume to density
3041 2096308 : ReturnValue = 1.0 / ReturnValue;
3042 : }
3043 :
3044 2096308 : if (!state.dataGlobal->WarmupFlag && ErrorFlag) {
3045 0 : ++this->errors[(int)RefrigError::SatTempDensity].count;
3046 0 : auto &df = state.dataFluidProps;
3047 :
3048 : // send warning
3049 0 : if (this->errors[(int)RefrigError::SatTempDensity].count <= df->RefrigErrorLimitTest) {
3050 0 : ShowSevereMessage(
3051 0 : state, format("{}: Saturation temperature is out of range for refrigerant [{}] supplied data: **", routineName, this->Name));
3052 0 : ShowContinueError(state,
3053 0 : format("...Called From:{}, supplied data range=[{:.2R},{:.2R}]",
3054 : CalledFrom,
3055 : this->RhoTemps(this->RhofLowTempIndex),
3056 : this->RhoTemps(this->RhofHighTempIndex)));
3057 0 : ShowContinueError(
3058 0 : state, format("...Supplied Refrigerant Temperature={:.2R} Returned saturated density value ={:.2R}", Temperature, ReturnValue));
3059 0 : ShowContinueErrorTimeStamp(state, "");
3060 : }
3061 0 : ShowRecurringSevereErrorAtEnd(
3062 : state,
3063 0 : format("{}: Saturation temperature is out of range for refrigerant [{}] supplied data: **", routineName, this->Name),
3064 0 : this->errors[(int)RefrigError::SatTempDensity].index,
3065 : Temperature,
3066 : "{C}");
3067 : }
3068 2096308 : return ReturnValue;
3069 : }
3070 :
3071 55535 : Real64 GetSatDensityRefrig(EnergyPlusData &state,
3072 : std::string_view const refrigName, // carries in substance name
3073 : Real64 const Temperature, // actual temperature given as input
3074 : Real64 const Quality, // actual quality given as input
3075 : int &RefrigIndex, // Index to Refrigerant Properties
3076 : std::string_view const CalledFrom // routine this function was called from (error messages)
3077 : )
3078 : {
3079 : // Wrapper for RefrigProps::getSatDensity()
3080 55535 : auto &df = state.dataFluidProps;
3081 :
3082 55535 : if (RefrigIndex == 0) {
3083 17 : if ((RefrigIndex = GetRefrigNum(state, refrigName)) == 0) {
3084 0 : ShowSevereError(state, format("Refrigerant \"{}\" not found, called from: {}", refrigName, CalledFrom));
3085 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
3086 0 : return 0.0;
3087 : }
3088 : }
3089 :
3090 55535 : return df->refrigs(RefrigIndex)->getSatDensity(state, Temperature, Quality, CalledFrom);
3091 : }
3092 :
3093 : //*****************************************************************************
3094 :
3095 75028915 : Real64 RefrigProps::getSatSpecificHeat(EnergyPlusData &state,
3096 : Real64 const Temperature, // actual temperature given as input
3097 : Real64 const Quality, // actual quality given as input
3098 : std::string_view const CalledFrom // routine this function was called from (error messages)
3099 : )
3100 : {
3101 :
3102 : // SUBROUTINE INFORMATION:
3103 : // AUTHOR Mike Turner
3104 : // DATE WRITTEN 10 December 99
3105 : // MODIFIED Rick Strand (April 2000, May 2000)
3106 : // Simon Rees (May 2002)
3107 :
3108 : // PURPOSE OF THIS SUBROUTINE:
3109 : // This finds specific heat for given temperature and a quality under the vapor dome.
3110 : // This fucntion is only called with a valid refrigerant and quality between 0 and 1.
3111 :
3112 : // METHODOLOGY EMPLOYED:
3113 : // Calls GetInterpolatedSatProp to linearly interpolate between the saturated
3114 : // liquid and vapour specific heats according to the given quality.
3115 :
3116 : // FUNCTION PARAMETER DEFINITIONS:
3117 : static constexpr std::string_view routineName = "RefrigProps::getSatSpecificHeat";
3118 :
3119 75028915 : if ((Quality < 0.0) || (Quality > 1.0)) {
3120 0 : ShowSevereError(state, fmt::format("{}: Refrigerant \"{}\", invalid quality, called from {}", routineName, this->Name, CalledFrom));
3121 0 : ShowContinueError(state, format("Saturated density quality must be between 0 and 1, entered value=[{:.4R}].", Quality));
3122 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
3123 : }
3124 :
3125 : // Apply linear interpolation function
3126 150057830 : return GetInterpolatedSatProp(
3127 75028915 : state, Temperature, this->CpTemps, this->CpfValues, this->CpfgValues, Quality, CalledFrom, this->CpfLowTempIndex, this->CpfHighTempIndex);
3128 : }
3129 :
3130 75028915 : Real64 GetSatSpecificHeatRefrig(EnergyPlusData &state,
3131 : std::string_view const refrigName, // carries in substance name
3132 : Real64 const Temperature, // actual temperature given as input
3133 : Real64 const Quality, // actual quality given as input
3134 : int &RefrigIndex, // Index to Refrigerant Properties
3135 : std::string_view const CalledFrom // routine this function was called from (error messages)
3136 : )
3137 : {
3138 :
3139 : // Wrapper for RefrigProps::getSpecificHeat()
3140 75028915 : auto &df = state.dataFluidProps;
3141 :
3142 75028915 : if (RefrigIndex == 0) {
3143 38 : if ((RefrigIndex = GetRefrigNum(state, refrigName)) == 0) {
3144 0 : ShowSevereError(state, format("Refrigerant \"{}\" not found, called from: {}", refrigName, CalledFrom));
3145 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
3146 0 : return 0.0;
3147 : }
3148 : }
3149 :
3150 75028915 : return df->refrigs(RefrigIndex)->getSatSpecificHeat(state, Temperature, Quality, CalledFrom);
3151 : }
3152 :
3153 : //*****************************************************************************
3154 :
3155 21023015 : Real64 RefrigProps::getSupHeatEnthalpy(EnergyPlusData &state,
3156 : Real64 const Temperature, // actual temperature given as input
3157 : Real64 const Pressure, // actual pressure given as input
3158 : std::string_view const CalledFrom // routine this function was called from (error messages)
3159 : )
3160 : {
3161 :
3162 : // SUBROUTINE INFORMATION:
3163 : // AUTHOR Mike Turner
3164 : // DATE WRITTEN 10 December 99
3165 : // MODIFIED Rick Strand (April 2000, May 2000)
3166 : // MODIFIED Simon Rees (May 2002)
3167 :
3168 : // PURPOSE OF THIS SUBROUTINE:
3169 : // Performs linear interpolation between pressures and temperatures and
3170 : // returns enthalpy values. Works only in superheated region.
3171 :
3172 : // METHODOLOGY EMPLOYED:
3173 : // Double linear interpolation is used with enthalpy values at four
3174 : // pressure/temperature input points surrounding the given temperature
3175 : // and pressure argument values.
3176 : // With enthalpy data it is assumed that zero values in the data are in
3177 : // the saturated region. Hence, values near the saturation line are
3178 : // approximated using the saturation value instead of the zero data value.
3179 : // points completely in the saturation region are given the saturation value
3180 : // at the given temperature. Points at the upper limits of pressure/temperature
3181 : // have the pressure/temperature capped. Warnings are given if the point
3182 : // is not clearly in the bounds of the superheated data.
3183 :
3184 : // Return value
3185 : Real64 ReturnValue;
3186 :
3187 : // FUNCTION PARAMETER DEFINITIONS:
3188 : static constexpr std::string_view routineName = "RefrigProps::getSupHeatEnthalpy";
3189 :
3190 21023015 : auto &df = state.dataFluidProps;
3191 :
3192 : Real64 TempInterpRatio;
3193 : Real64 PressInterpRatio;
3194 :
3195 : int HiTempIndex; // high temperature index value
3196 : int HiPressIndex; // high pressure index value
3197 :
3198 : // error counters and dummy string
3199 21023015 : int ErrCount = 0;
3200 21023015 : int CurTempRangeErrCount = 0;
3201 21023015 : int CurPresRangeErrCount = 0;
3202 :
3203 : // low index value of Temperature from table
3204 21023015 : int TempIndex = FindArrayIndex(Temperature, this->SupTemps, 1, this->NumSupTempPoints);
3205 : // low index value of Pressure from table
3206 21023015 : int LoPressIndex = FindArrayIndex(Pressure, this->SupPress, 1, this->NumSupPressPoints);
3207 :
3208 : // check temperature data range and attempt to cap if necessary
3209 21023015 : if ((TempIndex > 0) && (TempIndex < this->NumSupTempPoints)) { // in range
3210 21023015 : HiTempIndex = TempIndex + 1;
3211 21023015 : TempInterpRatio = (Temperature - this->SupTemps(TempIndex)) / (this->SupTemps(HiTempIndex) - this->SupTemps(TempIndex));
3212 0 : } else if (TempIndex < 1) {
3213 0 : ++CurTempRangeErrCount;
3214 0 : ++ErrCount;
3215 0 : TempIndex = 1;
3216 0 : HiTempIndex = TempIndex;
3217 0 : TempInterpRatio = 0.0;
3218 : } else { // out of range
3219 0 : ++CurTempRangeErrCount;
3220 0 : ++ErrCount;
3221 : // FindArrayIndex will return upper or lower bound so TempIndex gives upper/lower limit
3222 0 : HiTempIndex = TempIndex;
3223 0 : TempInterpRatio = 0.0;
3224 : }
3225 :
3226 : // check pressure data range and attempt to cap if necessary
3227 21023015 : if ((LoPressIndex > 0) && (LoPressIndex < this->NumSupPressPoints)) { // in range
3228 21023015 : HiPressIndex = LoPressIndex + 1;
3229 21023015 : PressInterpRatio = (Pressure - this->SupPress(LoPressIndex)) / (this->SupPress(HiPressIndex) - this->SupPress(LoPressIndex));
3230 0 : } else if (LoPressIndex < 1) {
3231 0 : ++CurPresRangeErrCount;
3232 0 : ++ErrCount;
3233 : // FindArrayIndex will return upper or lower bound so TempIndex gives upper/lower limit
3234 0 : LoPressIndex = 1;
3235 0 : HiPressIndex = LoPressIndex;
3236 0 : PressInterpRatio = 0.0;
3237 : } else { // out of range
3238 0 : ++CurPresRangeErrCount;
3239 0 : ++ErrCount;
3240 0 : HiPressIndex = LoPressIndex;
3241 0 : PressInterpRatio = 0.0;
3242 : }
3243 :
3244 : // get interpolation point values
3245 21023015 : Real64 LoTempLoEnthalpy = this->HshValues(LoPressIndex, TempIndex);
3246 21023015 : Real64 LoTempHiEnthalpy = this->HshValues(HiPressIndex, TempIndex);
3247 21023015 : Real64 HiTempLoEnthalpy = this->HshValues(LoPressIndex, HiTempIndex);
3248 21023015 : Real64 HiTempHiEnthalpy = this->HshValues(HiPressIndex, HiTempIndex);
3249 :
3250 : // to give reasonable interpolation near saturation reset any point with zero value
3251 : // in table to saturation value
3252 21023015 : if (LoTempLoEnthalpy <= 0.0) {
3253 421 : LoTempLoEnthalpy = this->getSatEnthalpy(state, Temperature, 1.0, routineName);
3254 : }
3255 21023015 : if (LoTempHiEnthalpy <= 0.0) {
3256 8157485 : LoTempHiEnthalpy = this->getSatEnthalpy(state, Temperature, 1.0, routineName);
3257 : }
3258 21023015 : if (HiTempLoEnthalpy <= 0.0) {
3259 0 : HiTempLoEnthalpy = this->getSatEnthalpy(state, Temperature, 1.0, routineName);
3260 : }
3261 21023015 : if (HiTempHiEnthalpy <= 0.0) {
3262 421 : HiTempHiEnthalpy = this->getSatEnthalpy(state, Temperature, 1.0, routineName);
3263 : }
3264 :
3265 : // interpolate w.r.t. pressure
3266 21023015 : Real64 EnthalpyLow = PressInterpRatio * LoTempHiEnthalpy + (1.0 - PressInterpRatio) * LoTempLoEnthalpy;
3267 :
3268 21023015 : Real64 EnthalpyHigh = PressInterpRatio * HiTempHiEnthalpy + (1.0 - PressInterpRatio) * HiTempLoEnthalpy;
3269 :
3270 : // interpolate w.r.t. temperature
3271 21023015 : ReturnValue = TempInterpRatio * EnthalpyHigh + (1.0 - TempInterpRatio) * EnthalpyLow;
3272 :
3273 : // Check to see if all data is at zero. In this case we are completely
3274 : // inside the saturation dome. Best thing we can do is return saturation value
3275 21023436 : if ((this->HshValues(LoPressIndex, TempIndex) <= 0.0) && (this->HshValues(HiPressIndex, TempIndex) <= 0.0) &&
3276 21023436 : (this->HshValues(LoPressIndex, HiTempIndex) <= 0.0) && (this->HshValues(HiPressIndex, HiTempIndex) <= 0.0)) {
3277 0 : ++df->SatErrCountGetSupHeatEnthalpyRefrig;
3278 : // set return value
3279 0 : ReturnValue = this->getSatEnthalpy(state, Temperature, 1.0, fmt::format("{}:{}", routineName, CalledFrom));
3280 : // send warning
3281 0 : if (!state.dataGlobal->WarmupFlag) {
3282 0 : this->errors[(int)RefrigError::SatSupEnthalpy].count += df->SatErrCountGetSupHeatEnthalpyRefrig;
3283 : // send warning
3284 0 : if (this->errors[(int)RefrigError::SatTempDensity].count <= df->RefrigErrorLimitTest) {
3285 0 : ShowWarningMessage(
3286 : state,
3287 0 : format("{}: Refrigerant [{}] is saturated at the given conditions, saturated enthalpy at given temperature returned. **",
3288 : routineName,
3289 0 : this->Name));
3290 0 : ShowContinueError(state, fmt::format("...Called From:{}", CalledFrom));
3291 0 : ShowContinueError(state, format("Refrigerant temperature = {:.2R}", Temperature));
3292 0 : ShowContinueError(state, format("Refrigerant pressure = {:.0R}", Pressure));
3293 0 : ShowContinueError(state, format("Returned Enthalpy value = {:.3R}", ReturnValue));
3294 0 : ShowContinueErrorTimeStamp(state, "");
3295 : }
3296 0 : ShowRecurringWarningErrorAtEnd(state,
3297 0 : format("{}: Refrigerant [{}] saturated at the given conditions **", routineName, this->Name),
3298 0 : this->errors[(int)RefrigError::SatSupEnthalpy].index,
3299 : Temperature,
3300 : "{C}");
3301 : }
3302 0 : return ReturnValue;
3303 : }
3304 :
3305 21023015 : if (ErrCount > 0 && !state.dataGlobal->WarmupFlag) {
3306 : // send temp range error if flagged
3307 0 : this->errors[(int)RefrigError::SatSupEnthalpy].count += CurTempRangeErrCount;
3308 0 : if (CurTempRangeErrCount > 0) {
3309 0 : if (this->errors[(int)RefrigError::SatSupEnthalpyTemp].count <= df->RefrigErrorLimitTest) {
3310 0 : ShowWarningMessage(state,
3311 0 : format("{}: Refrigerant [{}] Temperature is out of range for superheated enthalpy: values capped **",
3312 : routineName,
3313 0 : this->Name));
3314 0 : ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
3315 0 : ShowContinueErrorTimeStamp(state, "");
3316 : }
3317 0 : ShowRecurringWarningErrorAtEnd(
3318 : state,
3319 0 : format("{}: Refrigerant [{}] Temperature is out of range for superheated enthalpy: values capped **", routineName, this->Name),
3320 0 : this->errors[(int)RefrigError::SatSupEnthalpyTemp].index,
3321 : Temperature,
3322 : "{C}");
3323 : }
3324 :
3325 : // send pressure range error if flagged
3326 0 : this->errors[(int)RefrigError::SatSupEnthalpyPress].count += CurPresRangeErrCount;
3327 0 : if (CurPresRangeErrCount > 0) {
3328 0 : if (this->errors[(int)RefrigError::SatSupEnthalpyPress].count <= df->RefrigErrorLimitTest) {
3329 0 : ShowWarningMessage(
3330 : state,
3331 0 : format("{}: Refrigerant [{}] Pressure is out of range for superheated enthalpy: values capped **", routineName, this->Name));
3332 0 : ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
3333 0 : ShowContinueErrorTimeStamp(state, "");
3334 : }
3335 0 : ShowRecurringWarningErrorAtEnd(
3336 : state,
3337 0 : format("{}: Refrigerant [{}] Pressure is out of range for superheated enthalpy: values capped **", routineName, this->Name),
3338 0 : this->errors[(int)RefrigError::SatSupEnthalpyPress].index,
3339 : Pressure,
3340 : "{Pa}");
3341 : }
3342 : } // end error checking
3343 :
3344 21023015 : return ReturnValue;
3345 : }
3346 :
3347 17887442 : Real64 GetSupHeatEnthalpyRefrig(EnergyPlusData &state,
3348 : std::string_view const refrigName, // carries in substance name
3349 : Real64 const Temperature, // actual temperature given as input
3350 : Real64 const Pressure, // actual pressure given as input
3351 : int &RefrigIndex, // Index to Refrigerant Properties
3352 : std::string_view const CalledFrom // routine this function was called from (error messages)
3353 : )
3354 : {
3355 : // Wrapper for RefrigProps::getSupHeatEnthalpy()
3356 17887442 : auto &df = state.dataFluidProps;
3357 :
3358 17887442 : if (RefrigIndex == 0) {
3359 1 : if ((RefrigIndex = GetRefrigNum(state, refrigName)) == 0) {
3360 0 : ShowSevereError(state, format("Refrigerant \"{}\" not found, called from: {}", refrigName, CalledFrom));
3361 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
3362 0 : return 0.0;
3363 : }
3364 : }
3365 :
3366 17887442 : return df->refrigs(RefrigIndex)->getSupHeatEnthalpy(state, Temperature, Pressure, CalledFrom);
3367 : }
3368 :
3369 : //*****************************************************************************
3370 :
3371 0 : Real64 RefrigProps::getSupHeatPressure(EnergyPlusData &state,
3372 : Real64 const Temperature, // actual temperature given as input
3373 : Real64 const Enthalpy, // actual enthalpy given as input
3374 : std::string_view const CalledFrom // routine this function was called from (error messages)
3375 : )
3376 : {
3377 :
3378 : // SUBROUTINE INFORMATION:
3379 : // AUTHOR Rick Strand
3380 : // DATE WRITTEN May 2000
3381 : // MODIFIED Simon Rees (May 2002)
3382 :
3383 : // PURPOSE OF THIS SUBROUTINE:
3384 : // Performs linear interpolation between enthalpy and temperatures and
3385 : // returns pressure values. Works only in superheated region.
3386 :
3387 : // METHODOLOGY EMPLOYED:
3388 : // Double linear interpolation is used with pressure values at four
3389 : // enthalpy/temperature input points surrounding the given temperature
3390 : // and enthalpy argument values.
3391 : // All enthalpies have to be calculated at the given temperature before a
3392 : // search is made for the data adjacent to the given enthalpy. Linear interpolation
3393 : // using the enthalpy data is used to interpolate the correspondng pressures.
3394 : // Temperatures and enthalpies outside the bounds of the available data are capped
3395 : // and warnings given. For enthlpys lower than the saturated vapour value at the
3396 : // given temperature result in the saturation pressure being returned (calls to
3397 : // GetSatEnthalpy and GetSatPressure are made.)
3398 :
3399 : // Return value
3400 : Real64 ReturnValue;
3401 :
3402 : // FUNCTION PARAMETERS:
3403 : // the enthalpy calculated from the pressure found
3404 : static constexpr std::string_view routineName = "RefrigProps::getSupHeatPressure";
3405 :
3406 : // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
3407 : Real64 EnthalpyCheck; // recalculates enthalpy based on calculated pressure
3408 : Real64 EnthalpyHigh; // Enthalpy value at interpolated pressure and high temperature
3409 : Real64 EnthalpyLow; // Enthalpy value at interpolated pressure and low temperature
3410 : Real64 EnthalpyMax; // Enthalpy value at interpolated pressure and high temperature
3411 : Real64 EnthalpyMin; // Enthalpy value at interpolated pressure and low temperature
3412 : Real64 SatEnthalpy; // Saturated vapour enthalpy
3413 : Real64 EnthInterpRatio; // Interpolation ratio w.r.t enthalpy
3414 :
3415 : int middle; // mid-point for interval halving
3416 :
3417 : int HiTempIndex; // Index value of higher temperature from data
3418 : int LoEnthalpyIndex; // Index value of lower enthalpy from data
3419 : int HiEnthalpyIndex; // Index value of higher enthalpy from data
3420 :
3421 : // error counters and dummy string
3422 0 : int ErrCount = 0;
3423 0 : int CurTempRangeErrCount = 0;
3424 0 : int CurEnthalpyRangeErrCount = 0;
3425 0 : int CurSatErrCount = 0;
3426 :
3427 : // Index value of lower temperature from data
3428 0 : int LoTempIndex = FindArrayIndex(Temperature, this->SupTemps, 1, this->NumSupTempPoints);
3429 :
3430 : // check temperature data range and attempt to cap if necessary
3431 0 : if ((LoTempIndex > 0) && (LoTempIndex < this->NumSupTempPoints)) { // in range
3432 0 : HiTempIndex = LoTempIndex + 1;
3433 0 : } else if (LoTempIndex < 1) { // below lower bound
3434 0 : ++CurTempRangeErrCount;
3435 0 : LoTempIndex = 1;
3436 0 : HiTempIndex = LoTempIndex;
3437 : } else { // out of range
3438 0 : ++CurTempRangeErrCount;
3439 0 : HiTempIndex = LoTempIndex;
3440 : }
3441 :
3442 : // check for lowest non-zero value in lower temp data
3443 0 : int LoTempStart = this->NumSupPressPoints;
3444 0 : for (int Loop = 1; Loop <= this->NumSupPressPoints; ++Loop) {
3445 0 : if (this->HshValues(Loop, LoTempIndex) > 0.0) {
3446 0 : LoTempStart = Loop;
3447 0 : break;
3448 : }
3449 : }
3450 : // check for highest non-zero value in lower temp data
3451 0 : int LoTempFinish = 1;
3452 0 : for (int Loop = this->NumSupPressPoints; Loop >= 1; --Loop) {
3453 0 : if (this->HshValues(Loop, LoTempIndex) <= 0.0) {
3454 0 : LoTempFinish = Loop;
3455 : // EXIT
3456 : }
3457 : }
3458 : // check for lowest non-zero value in high temp data
3459 0 : int HiTempStart = this->NumSupPressPoints;
3460 0 : for (int Loop = 1; Loop <= this->NumSupPressPoints; ++Loop) {
3461 0 : if (this->HshValues(Loop, HiTempIndex) > 0.0) {
3462 0 : HiTempStart = Loop;
3463 0 : break;
3464 : }
3465 : }
3466 :
3467 : // check for highest non-zero value in high temp data
3468 0 : int HiTempFinish = 1;
3469 0 : for (int Loop = this->NumSupPressPoints; Loop >= 1; --Loop) {
3470 0 : if (this->HshValues(Loop, HiTempIndex) <= 0.0) {
3471 0 : HiTempFinish = Loop;
3472 : }
3473 : }
3474 :
3475 : // find bounds of both hi and lo temp data, corrected lower non-zero index of enthalpy values
3476 0 : int TempStart = max(LoTempStart, HiTempStart);
3477 : // corrected upper non-zero index of enthalpy values
3478 0 : int TempFinish = min(LoTempFinish, HiTempFinish);
3479 : // calculate interpolation ratio w.r.t temperature
3480 : // This ratio is used to find enthalpies at the given temperature
3481 0 : Real64 TempInterpRatio = (Temperature - this->SupTemps(LoTempIndex)) / (this->SupTemps(HiTempIndex) - this->SupTemps(LoTempIndex));
3482 :
3483 : // search for array index by bisection
3484 0 : int start = TempStart; // set the bounds
3485 0 : int finish = TempFinish;
3486 :
3487 : // find the bounds of the enthalpy data available
3488 0 : EnthalpyMax = max(this->HshValues(TempStart, LoTempIndex), this->HshValues(TempStart, HiTempIndex));
3489 0 : EnthalpyMin = min(this->HshValues(TempFinish, LoTempIndex), this->HshValues(TempFinish, HiTempIndex));
3490 : // get saturated enthalpy for checking
3491 0 : SatEnthalpy = this->getSatEnthalpy(state, Temperature, 1.0, fmt::format("{}:{}", routineName, CalledFrom));
3492 :
3493 : // make some checks on the data before interpolating
3494 0 : if (Enthalpy < SatEnthalpy) {
3495 : // flag error
3496 0 : ++CurSatErrCount;
3497 0 : ++ErrCount;
3498 : // return sat pressure at this temperature
3499 0 : ReturnValue = this->getSatPressure(state, Temperature, fmt::format("{}:{}", routineName, CalledFrom));
3500 :
3501 0 : } else if (EnthalpyMax < Enthalpy || EnthalpyMin > Enthalpy) {
3502 : // out of range error
3503 0 : ++CurEnthalpyRangeErrCount;
3504 0 : ++ErrCount;
3505 0 : if (Enthalpy > EnthalpyMax) {
3506 : // return min pressure
3507 0 : ReturnValue = this->SupPress(HiTempStart);
3508 : } else {
3509 : // return max pressure
3510 0 : ReturnValue = this->SupPress(LoTempFinish);
3511 : }
3512 : } else {
3513 : // go ahead and search
3514 0 : while ((finish - start) > 1) {
3515 0 : middle = (finish + start) / 2;
3516 :
3517 : // calc enthalpy at middle index for given temperature
3518 0 : EnthalpyCheck = this->HshValues(middle, LoTempIndex) +
3519 0 : TempInterpRatio * (this->HshValues(middle, HiTempIndex) - this->HshValues(middle, LoTempIndex));
3520 :
3521 0 : if (Enthalpy < EnthalpyCheck) {
3522 0 : start = middle;
3523 : } else {
3524 0 : finish = middle;
3525 : }
3526 : }
3527 0 : LoEnthalpyIndex = start;
3528 0 : HiEnthalpyIndex = start + 1;
3529 :
3530 : // calculate enthalpies adjacent specified enthalpy at given temperature
3531 0 : EnthalpyLow = this->HshValues(LoEnthalpyIndex, LoTempIndex) +
3532 0 : TempInterpRatio * (this->HshValues(LoEnthalpyIndex, HiTempIndex) - this->HshValues(LoEnthalpyIndex, LoTempIndex));
3533 :
3534 0 : EnthalpyHigh = this->HshValues(HiEnthalpyIndex, LoTempIndex) +
3535 0 : TempInterpRatio * (this->HshValues(HiEnthalpyIndex, HiTempIndex) - this->HshValues(HiEnthalpyIndex, LoTempIndex));
3536 : // calculate an interpolation ratio
3537 0 : EnthInterpRatio = (Enthalpy - EnthalpyLow) / (EnthalpyHigh - EnthalpyLow);
3538 : // apply this interpolation ratio to find the final pressure
3539 0 : ReturnValue = this->SupPress(LoEnthalpyIndex) + EnthInterpRatio * (this->SupPress(HiEnthalpyIndex) - this->SupPress(LoEnthalpyIndex));
3540 : }
3541 :
3542 0 : if (ErrCount > 0 && !state.dataGlobal->WarmupFlag) {
3543 0 : auto &df = state.dataFluidProps;
3544 :
3545 : // send near saturation warning if flagged
3546 0 : this->errors[(int)RefrigError::SatSupPress].count += CurSatErrCount;
3547 : // send warning
3548 0 : if (CurSatErrCount > 0) {
3549 0 : if (this->errors[(int)RefrigError::SatSupPress].count <= df->RefrigErrorLimitTest) {
3550 0 : ShowSevereMessage(state,
3551 0 : format("{}: Refrigerant [{}] is saturated at the given enthalpy and temperature, saturated enthalpy at given "
3552 : "temperature returned. **",
3553 : routineName,
3554 0 : this->Name));
3555 0 : ShowContinueError(state, fmt::format("...Called From:{}", CalledFrom));
3556 0 : ShowContinueError(state, format("Refrigerant temperature = {:.2R}", Temperature));
3557 0 : ShowContinueError(state, format("Refrigerant Enthalpy = {:.3R}", Enthalpy));
3558 0 : ShowContinueError(state, format("Returned Pressure value = {:.0R}", ReturnValue));
3559 0 : ShowContinueErrorTimeStamp(state, "");
3560 : }
3561 0 : ShowRecurringSevereErrorAtEnd(
3562 : state,
3563 0 : format("{}: Refrigerant [{}] saturated at the given enthalpy and temperature **", routineName, this->Name),
3564 0 : this->errors[(int)RefrigError::SatSupPress].index,
3565 : ReturnValue,
3566 : "{Pa}");
3567 : }
3568 :
3569 : // send temp range error if flagged
3570 0 : this->errors[(int)RefrigError::SatSupPressTemp].count += CurTempRangeErrCount;
3571 0 : if (CurTempRangeErrCount > 0) {
3572 0 : if (this->errors[(int)RefrigError::SatSupPressTemp].count <= df->RefrigErrorLimitTest) {
3573 0 : ShowWarningMessage(state,
3574 0 : format("{}: Refrigerant [{}] Temperature is out of range for superheated pressure: values capped **",
3575 : routineName,
3576 0 : this->Name));
3577 0 : ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
3578 0 : ShowContinueErrorTimeStamp(state, "");
3579 : }
3580 0 : ShowRecurringWarningErrorAtEnd(
3581 : state,
3582 0 : format("{}: Refrigerant [{}] Temperature is out of range for superheated pressure: values capped **", routineName, this->Name),
3583 0 : this->errors[(int)RefrigError::SatSupPressTemp].index,
3584 : Temperature,
3585 : "{C}");
3586 : }
3587 :
3588 : // send enthalpy range error if flagged
3589 0 : this->errors[(int)RefrigError::SatSupPressEnthalpy].count += CurEnthalpyRangeErrCount;
3590 0 : if (CurEnthalpyRangeErrCount > 0) {
3591 0 : if (this->errors[(int)RefrigError::SatSupPressEnthalpy].count <= df->RefrigErrorLimitTest) {
3592 0 : ShowWarningMessage(
3593 : state,
3594 0 : format("{}: Refrigerant [{}] Pressure is out of range for superheated enthalpy: values capped **", routineName, this->Name));
3595 0 : ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
3596 0 : ShowContinueErrorTimeStamp(state, "");
3597 : }
3598 0 : ShowRecurringWarningErrorAtEnd(
3599 : state,
3600 0 : format("{}: Refrigerant [{}] Pressure is out of range for superheated pressure: values capped **", routineName, this->Name),
3601 0 : this->errors[(int)RefrigError::SatSupPressEnthalpy].index,
3602 : Enthalpy,
3603 : "{J}");
3604 : }
3605 : } // end error checking
3606 :
3607 0 : return ReturnValue;
3608 : }
3609 :
3610 0 : Real64 GetSupHeatPressureRefrig(EnergyPlusData &state,
3611 : std::string const &refrigName, // carries in substance name
3612 : Real64 const Temperature, // actual temperature given as input
3613 : Real64 const Enthalpy, // actual enthalpy given as input
3614 : int &RefrigIndex, // Index to Refrigerant Properties
3615 : std::string_view const CalledFrom // routine this function was called from (error messages)
3616 : )
3617 : {
3618 : // Wrapper for RefrigProps::getSupHeatPressure()
3619 0 : auto &df = state.dataFluidProps;
3620 :
3621 0 : if (RefrigIndex == 0) {
3622 0 : if ((RefrigIndex = GetRefrigNum(state, refrigName)) == 0) {
3623 0 : ShowSevereError(state, format("Refrigerant \"{}\" not found, called from: {}", refrigName, CalledFrom));
3624 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
3625 0 : return 0.0;
3626 : }
3627 : }
3628 :
3629 0 : return df->refrigs(RefrigIndex)->getSupHeatPressure(state, Temperature, Enthalpy, CalledFrom);
3630 : }
3631 :
3632 : //*****************************************************************************
3633 :
3634 33710 : Real64 RefrigProps::getSupHeatTemp(EnergyPlusData &state,
3635 : Real64 const Pressure, // actual pressure given as input
3636 : Real64 const Enthalpy, // actual enthalpy given as input
3637 : Real64 TempLow, // lower bound of temperature in the iteration
3638 : Real64 TempUp, // upper bound of temperature in the iteration
3639 : std::string_view const CalledFrom // routine this function was called from (error messages)
3640 : )
3641 : {
3642 : // SUBROUTINE INFORMATION:
3643 : // AUTHOR Rongpeng Zhang
3644 : // DATE WRITTEN Jan 2016
3645 :
3646 : // PURPOSE OF THIS SUBROUTINE:
3647 : // Performs iterations to calculate the refrigerant temperature corresponding to the given
3648 : // enthalpy and pressure. Works only in superheated region.
3649 :
3650 : // METHODOLOGY EMPLOYED:
3651 : // Perform iterations to identify the temperature by calling GetSupHeatEnthalpyRefrig->
3652 :
3653 : // Return value
3654 : Real64 ReturnValue;
3655 :
3656 : // FUNCTION PARAMETERS:
3657 : // the enthalpy calculated from the pressure found
3658 : static constexpr std::string_view routineName = "RefrigProps::getSupHeatTemp";
3659 :
3660 : // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
3661 : Real64 EnthalpyHigh; // Enthalpy value at interpolated pressure and high temperature
3662 : Real64 EnthalpyLow; // Enthalpy value at interpolated pressure and low temperature
3663 : Real64 RefTHigh; // High Temperature Value for Ps (max in tables)
3664 : Real64 RefTSat; // Saturated temperature of the refrigerant. Used to check whether the refrigernat is in the superheat area
3665 : Real64 Temp; // Temperature of the superheated refrigerant at the given enthalpy and pressure
3666 :
3667 : // check temperature data range and attempt to cap if necessary
3668 33710 : RefTHigh = this->PsHighTempValue;
3669 33710 : RefTSat = this->getSatTemperature(state, Pressure, fmt::format("{}:{}", routineName, CalledFrom));
3670 :
3671 33710 : if (TempLow < RefTSat) {
3672 0 : ShowWarningMessage(state,
3673 0 : format("{}: Refrigerant [{}] temperature lower bound is out of range for superheated refrigerant: values capped **",
3674 : routineName,
3675 0 : this->Name));
3676 0 : ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
3677 0 : ShowContinueErrorTimeStamp(state, "");
3678 0 : TempLow = RefTSat;
3679 : }
3680 33710 : if (TempUp > RefTHigh) {
3681 0 : ShowWarningMessage(state,
3682 0 : format("{}: Refrigerant [{}] temperature lower bound is out of range for superheated refrigerant: values capped **",
3683 : routineName,
3684 0 : this->Name));
3685 0 : ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
3686 0 : ShowContinueErrorTimeStamp(state, "");
3687 0 : TempUp = RefTHigh;
3688 : }
3689 33710 : if (TempLow >= TempUp) {
3690 0 : ShowWarningMessage(state,
3691 0 : format("{}Refrigerant [{}] temperature lower bound is out of range for superheated refrigerant: values capped **",
3692 : routineName,
3693 0 : this->Name));
3694 0 : ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
3695 0 : ShowContinueErrorTimeStamp(state, "");
3696 0 : TempLow = RefTSat;
3697 0 : TempUp = RefTHigh;
3698 : }
3699 :
3700 : // check enthalpy data range and attempt to cap if necessary
3701 33710 : EnthalpyLow = this->getSupHeatEnthalpy(state, TempLow, Pressure, fmt::format("{}:{}", routineName, CalledFrom));
3702 33710 : EnthalpyHigh = this->getSupHeatEnthalpy(state, TempUp, Pressure, fmt::format("{}:{}", routineName, CalledFrom));
3703 33710 : if (Enthalpy <= EnthalpyLow) {
3704 7669 : ReturnValue = TempLow;
3705 7669 : return ReturnValue;
3706 : }
3707 26041 : if (Enthalpy >= EnthalpyHigh) {
3708 100 : ReturnValue = TempUp;
3709 100 : return ReturnValue;
3710 : }
3711 :
3712 : // Perform iterations to obtain the temperature level
3713 : {
3714 25941 : Real64 constexpr ErrorTol(0.001); // tolerance for RegulaFalsi iterations
3715 25941 : int constexpr MaxIte(500); // maximum number of iterations
3716 : int SolFla; // Flag of RegulaFalsi solver
3717 :
3718 182094 : auto f = [&state, this, Enthalpy, Pressure](Real64 Temp) {
3719 : static constexpr std::string_view routineName = "GetSupHeatTempRefrigResidual";
3720 91047 : Real64 Enthalpy_Req = Enthalpy;
3721 91047 : if (std::abs(Enthalpy_Req) < 100.0) Enthalpy_Req = sign(100.0, Enthalpy_Req);
3722 91047 : Real64 Enthalpy_Act = this->getSupHeatEnthalpy(state, Temp, Pressure, routineName);
3723 91047 : return (Enthalpy_Act - Enthalpy_Req) / Enthalpy_Req;
3724 25941 : };
3725 :
3726 25941 : General::SolveRoot(state, ErrorTol, MaxIte, SolFla, Temp, f, TempLow, TempUp);
3727 25941 : ReturnValue = Temp;
3728 : }
3729 :
3730 25941 : return ReturnValue;
3731 : }
3732 :
3733 0 : Real64 GetSupHeatTempRefrig(EnergyPlusData &state,
3734 : std::string_view const refrigName, // carries in substance name
3735 : Real64 const Pressure, // actual pressure given as input
3736 : Real64 const Enthalpy, // actual enthalpy given as input
3737 : Real64 TempLow, // lower bound of temperature in the iteration
3738 : Real64 TempUp, // upper bound of temperature in the iteration
3739 : int &RefrigIndex, // Index to Refrigerant Properties
3740 : std::string_view const CalledFrom // routine this function was called from (error messages)
3741 : )
3742 : {
3743 : // Wrapper for RefrigProps::getSupHeatTemp()
3744 0 : auto &df = state.dataFluidProps;
3745 :
3746 0 : if (RefrigIndex == 0) {
3747 0 : if ((RefrigIndex = GetRefrigNum(state, refrigName)) == 0) {
3748 0 : ShowSevereError(state, format("Refrigerant \"{}\" not found, called from: {}", refrigName, CalledFrom));
3749 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
3750 0 : return 0.0;
3751 : }
3752 : }
3753 :
3754 0 : return df->refrigs(RefrigIndex)->getSupHeatTemp(state, Pressure, Enthalpy, TempLow, TempUp, CalledFrom);
3755 : }
3756 :
3757 : //*****************************************************************************
3758 :
3759 95643927 : Real64 RefrigProps::getSupHeatDensity(EnergyPlusData &state,
3760 : Real64 const Temperature, // actual temperature given as input
3761 : Real64 const Pressure, // actual pressure given as input
3762 : std::string_view const CalledFrom // routine this function was called from (error messages)
3763 : )
3764 : {
3765 :
3766 : // SUBROUTINE INFORMATION:
3767 : // AUTHOR Mike Turner
3768 : // DATE WRITTEN 10 December 99
3769 : // MODIFIED Rick Strand (April 2000, May 2000)
3770 : // MODIFIED Simon Rees (May 2002)
3771 :
3772 : // PURPOSE OF THIS SUBROUTINE:
3773 : // Performs linear interpolation between pressures and temperatures and
3774 : // returns Density values. Works only in superheated region.
3775 :
3776 : // METHODOLOGY EMPLOYED:
3777 : // Double linear interpolation is used with Density values at four
3778 : // pressure/temperature input points surrounding the given temperature
3779 : // and pressure arguments.
3780 : // With Density data it is assumed that zero values in the data are in
3781 : // the saturated region. Hence, values near the saturation line are
3782 : // approximated using the saturation value instead of the zero data value.
3783 : // points completely in the saturation region are given the saturation value
3784 : // at the given temperature. Points at the upper limits of pressure/temperature
3785 : // have the pressure/temperature capped. Warnings are given if the point
3786 : // is not clearly in the bounds of the superheated data.
3787 :
3788 : // Return value
3789 : Real64 ReturnValue;
3790 :
3791 95643927 : auto &df = state.dataFluidProps;
3792 :
3793 : // FUNCTION PARAMETERS:
3794 : static constexpr std::string_view routineName = "RefrigProps::getSupHeatDensity";
3795 :
3796 : // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
3797 : Real64 TempInterpRatio; // Interpolation ratio w.r.t temperature
3798 : Real64 PressInterpRatio; // Interpolation ratio w.r.t pressures
3799 :
3800 : int HiTempIndex; // high temperature index value
3801 : int HiPressIndex; // high pressure index value
3802 :
3803 : // initialize for this call error counters and dummy string
3804 95643927 : int ErrCount = 0;
3805 95643927 : int CurTempRangeErrCount = 0;
3806 95643927 : int CurPresRangeErrCount = 0;
3807 :
3808 : // check temperature data range and attempt to cap if necessary
3809 : // low index value of Temperature from table
3810 95643927 : int TempIndex = FindArrayIndex(Temperature, this->SupTemps, 1, this->NumSupTempPoints);
3811 95643927 : if ((TempIndex > 0) && (TempIndex < this->NumSupTempPoints)) { // in range
3812 95643927 : HiTempIndex = TempIndex + 1;
3813 95643927 : TempInterpRatio = (Temperature - this->SupTemps(TempIndex)) / (this->SupTemps(HiTempIndex) - this->SupTemps(TempIndex));
3814 0 : } else if (TempIndex < 1) {
3815 0 : ++CurTempRangeErrCount;
3816 0 : ++ErrCount;
3817 : // FindArrayIndex will return upper or lower bound so TempIndex gives upper/lower limit
3818 0 : TempIndex = 1;
3819 0 : HiTempIndex = TempIndex;
3820 0 : TempInterpRatio = 0.0;
3821 : } else { // out of range
3822 0 : ++CurTempRangeErrCount;
3823 0 : ++ErrCount;
3824 : // FindArrayIndex will return upper or lower bound so TempIndex gives upper/lower limit
3825 0 : HiTempIndex = TempIndex;
3826 0 : TempInterpRatio = 0.0;
3827 : }
3828 :
3829 : // check pressure data range and attempt to cap if necessary
3830 95643927 : int LoPressIndex = FindArrayIndex(Pressure, this->SupPress, 1, this->NumSupPressPoints);
3831 95643927 : if ((LoPressIndex > 0) && (LoPressIndex < this->NumSupPressPoints)) { // in range
3832 95643927 : HiPressIndex = LoPressIndex + 1;
3833 95643927 : Real64 const SHPress_Lo = this->SupPress(LoPressIndex);
3834 95643927 : PressInterpRatio = (Pressure - SHPress_Lo) / (this->SupPress(HiPressIndex) - SHPress_Lo);
3835 95643927 : } else if (LoPressIndex < 1) {
3836 0 : ++CurPresRangeErrCount;
3837 0 : ++ErrCount;
3838 0 : LoPressIndex = 1;
3839 0 : HiPressIndex = LoPressIndex;
3840 0 : PressInterpRatio = 0.0;
3841 : } else { // out of range
3842 0 : ++CurPresRangeErrCount;
3843 0 : ++ErrCount;
3844 : // FindArrayIndex will return upper or lower bound so LoPressIndex gives upper/lower limit
3845 0 : HiPressIndex = LoPressIndex;
3846 0 : PressInterpRatio = 0.0;
3847 : }
3848 :
3849 : // get interpolation point values
3850 95643927 : Real64 LoTempLoDensity = this->RhoshValues(LoPressIndex, TempIndex);
3851 95643927 : Real64 LoTempHiDensity = this->RhoshValues(HiPressIndex, TempIndex);
3852 95643927 : Real64 HiTempLoDensity = this->RhoshValues(LoPressIndex, HiTempIndex);
3853 95643927 : Real64 HiTempHiDensity = this->RhoshValues(HiPressIndex, HiTempIndex);
3854 :
3855 : // to give reasonable interpolation near saturation reset any point with zero value
3856 : // in table to saturation value
3857 95643927 : int n_zero(0);
3858 95643927 : Real64 saturated_density(0.0);
3859 95643927 : if (min(LoTempLoDensity, LoTempHiDensity, HiTempLoDensity, HiTempHiDensity) <= 0.0) {
3860 2040773 : saturated_density = this->getSatDensity(state, Temperature, 1.0, routineName);
3861 2040773 : if (LoTempLoDensity <= 0.0) {
3862 0 : LoTempLoDensity = saturated_density;
3863 0 : ++n_zero;
3864 : }
3865 2040773 : if (LoTempHiDensity <= 0.0) {
3866 2040773 : LoTempHiDensity = saturated_density;
3867 2040773 : ++n_zero;
3868 : }
3869 2040773 : if (HiTempLoDensity <= 0.0) {
3870 0 : HiTempLoDensity = saturated_density;
3871 0 : ++n_zero;
3872 : }
3873 2040773 : if (HiTempHiDensity <= 0.0) {
3874 0 : HiTempHiDensity = saturated_density;
3875 0 : ++n_zero;
3876 : }
3877 : }
3878 :
3879 95643927 : if (n_zero < 4) {
3880 : // interpolate w.r.t. pressure
3881 95643927 : Real64 DensityLow = PressInterpRatio * LoTempHiDensity + (1.0 - PressInterpRatio) * LoTempLoDensity;
3882 95643927 : Real64 DensityHigh = PressInterpRatio * HiTempHiDensity + (1.0 - PressInterpRatio) * HiTempLoDensity;
3883 :
3884 : // interpolate w.r.t. temperature
3885 95643927 : ReturnValue = TempInterpRatio * DensityHigh + (1.0 - TempInterpRatio) * DensityLow;
3886 : } else { // All data is at zero: we are completely inside the saturation dome. Best thing we can do is return saturation value
3887 0 : ++df->SatErrCountGetSupHeatDensityRefrig;
3888 : // send warning
3889 0 : this->errors[(int)RefrigError::SatSupDensity].count += df->SatErrCountGetSupHeatDensityRefrig;
3890 : // send warning
3891 0 : if (this->errors[(int)RefrigError::SatSupDensity].count <= df->RefrigErrorLimitTest) {
3892 0 : ShowWarningMessage(
3893 : state,
3894 0 : format("{}: Refrigerant [{}] is saturated at the given conditions, saturated density at given temperature returned. **",
3895 : routineName,
3896 0 : this->Name));
3897 0 : ShowContinueError(state, fmt::format("...Called From:{}", CalledFrom));
3898 0 : ShowContinueError(state, format("Refrigerant temperature = {:.2R}", Temperature));
3899 0 : ShowContinueError(state, format("Refrigerant pressure = {:.0R}", Pressure));
3900 0 : ShowContinueError(state, format("Returned Density value = {:.3R}", saturated_density));
3901 0 : ShowContinueErrorTimeStamp(state, "");
3902 : }
3903 0 : if (df->SatErrCountGetSupHeatDensityRefrig > 0) {
3904 0 : ShowRecurringWarningErrorAtEnd(state,
3905 0 : format("{}: Refrigerant [{}] saturated at the given conditions **", routineName, this->Name),
3906 0 : this->errors[(int)RefrigError::SatSupEnthalpy].index,
3907 : Temperature,
3908 : "{C}");
3909 : }
3910 0 : return saturated_density;
3911 : }
3912 :
3913 95643927 : if (ErrCount > 0 && !state.dataGlobal->WarmupFlag) {
3914 : // send temp range error if flagged
3915 0 : this->errors[(int)RefrigError::SatSupDensityTemp].count += CurTempRangeErrCount;
3916 0 : if (CurTempRangeErrCount > 0) {
3917 0 : if (this->errors[(int)RefrigError::SatSupDensityTemp].count <= df->RefrigErrorLimitTest) {
3918 0 : ShowWarningMessage(state,
3919 0 : format("{}: Refrigerant [{}] Temperature is out of range for superheated density: values capped **",
3920 : routineName,
3921 0 : this->Name));
3922 0 : ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
3923 0 : ShowContinueErrorTimeStamp(state, "");
3924 : }
3925 0 : ShowRecurringWarningErrorAtEnd(
3926 : state,
3927 0 : format("{}: Refrigerant [{}] Temperature is out of range for superheated density: values capped **", routineName, this->Name),
3928 0 : this->errors[(int)RefrigError::SatSupDensityTemp].index,
3929 : Temperature,
3930 : "{C}");
3931 : }
3932 :
3933 : // send pressure range error if flagged
3934 0 : this->errors[(int)RefrigError::SatSupDensityPress].count += CurPresRangeErrCount;
3935 0 : if (CurPresRangeErrCount > 0) {
3936 0 : if (this->errors[(int)RefrigError::SatSupDensityPress].count <= df->RefrigErrorLimitTest) {
3937 0 : ShowWarningMessage(
3938 : state,
3939 0 : format("{}: Refrigerant [{}] Pressure is out of range for superheated density: values capped **", routineName, this->Name));
3940 0 : ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
3941 0 : ShowContinueErrorTimeStamp(state, "");
3942 : }
3943 0 : ShowRecurringWarningErrorAtEnd(
3944 : state,
3945 0 : format("{}: Refrigerant [{}] Pressure is out of range for superheated density: values capped **", routineName, this->Name),
3946 0 : this->errors[(int)RefrigError::SatSupDensityPress].index,
3947 : Pressure,
3948 : "{Pa}");
3949 : } // end error checking
3950 : }
3951 :
3952 95643927 : return ReturnValue;
3953 : }
3954 :
3955 93334971 : Real64 GetSupHeatDensityRefrig(EnergyPlusData &state,
3956 : std::string_view const refrigName, // carries in substance name
3957 : Real64 const Temperature, // actual temperature given as input
3958 : Real64 const Pressure, // actual pressure given as input
3959 : int &RefrigIndex, // Index to Refrigerant Properties
3960 : std::string_view const CalledFrom // routine this function was called from (error messages)
3961 : )
3962 : {
3963 : // Wrapper for RefrigProps::getSupHeatDensity()
3964 93334971 : auto &df = state.dataFluidProps;
3965 93334971 : if (RefrigIndex == 0) {
3966 0 : if ((RefrigIndex = GetRefrigNum(state, refrigName)) == 0) {
3967 0 : ShowSevereError(state, format("Refrigerant \"{}\" not found, called from: {}", refrigName, CalledFrom));
3968 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
3969 0 : return 0.0;
3970 : }
3971 : }
3972 :
3973 93334971 : return df->refrigs(RefrigIndex)->getSupHeatDensity(state, Temperature, Pressure, CalledFrom);
3974 : }
3975 :
3976 : //*****************************************************************************
3977 : #ifdef EP_cache_GlycolSpecificHeat
3978 548509755 : Real64 GlycolProps::getSpecificHeat(EnergyPlusData &state,
3979 : Real64 const Temperature, // actual temperature given as input
3980 : std::string_view const CalledFrom // routine this function was called from (error messages)
3981 : )
3982 : {
3983 548509755 : auto &df = state.dataFluidProps;
3984 548509755 : std::uint64_t constexpr Grid_Shift = 64 - 12 - t_sh_precision_bits;
3985 :
3986 548509755 : double const t(Temperature + 1000 * this->Num);
3987 :
3988 : DISABLE_WARNING_PUSH
3989 : DISABLE_WARNING_STRICT_ALIASING
3990 : DISABLE_WARNING_UNINITIALIZED
3991 : // cppcheck-suppress invalidPointerCast
3992 548509755 : std::uint64_t const T_tag(*reinterpret_cast<std::uint64_t const *>(&t) >> Grid_Shift);
3993 : DISABLE_WARNING_POP
3994 :
3995 548509755 : std::uint64_t const hash(T_tag & t_sh_cache_mask);
3996 548509755 : auto &cTsh(df->cached_t_sh[hash]);
3997 :
3998 548509755 : if (cTsh.iT != T_tag) {
3999 22369974 : cTsh.iT = T_tag;
4000 22369974 : cTsh.sh = this->getSpecificHeat_raw(state, Temperature, CalledFrom);
4001 : }
4002 :
4003 548509755 : return cTsh.sh; // saturation pressure {Pascals}
4004 : }
4005 :
4006 22369974 : Real64 GlycolProps::getSpecificHeat_raw(EnergyPlusData &state,
4007 : Real64 const Temp, // actual temperature given as input
4008 : std::string_view const CalledFrom // routine this function was called from (error messages)
4009 : )
4010 : #else
4011 : Real64 GlycolProps::getSpecificHeat(EnergyPlusData &state,
4012 : Real64 const Temp, // actual temperature given as input
4013 : std::string_view const CalledFrom // routine this function was called from (error messages)
4014 : )
4015 : #endif
4016 : {
4017 :
4018 : // FUNCTION INFORMATION:
4019 : // AUTHOR Rick Strand
4020 : // DATE WRITTEN June 2004
4021 :
4022 : // PURPOSE OF THIS FUNCTION:
4023 : // This subroutine finds specific heats for glycols at different
4024 : // temperatures.
4025 :
4026 : // METHODOLOGY EMPLOYED:
4027 : // Linear interpolation is used to find specific heat values for a
4028 : // particular glycol (water or some mixture of water and another fluid).
4029 : // Warnings are given if the point is not clearly in the bounds of the
4030 : // glycol data. The value returned is the appropriate limit value.
4031 :
4032 : // REFERENCES:
4033 : // GetFluidPropertiesData: subroutine enforces that temperatures in
4034 : // all temperature lists are entered in ascending order.
4035 :
4036 : // FUNCTION PARAMETERS:
4037 : static constexpr std::string_view routineName = "GlycolProps::getSpecificHeat";
4038 :
4039 22369974 : auto &df = state.dataFluidProps;
4040 :
4041 : // If user didn't input data (shouldn't get this far, but just in case...), we can't find a value
4042 22369974 : assert(this->CpDataPresent);
4043 :
4044 : // Now determine the value of specific heat using interpolation
4045 22369974 : if (Temp < this->CpLowTempValue) { // Temperature too low
4046 :
4047 42 : if (!state.dataGlobal->WarmupFlag) {
4048 22 : df->glycolErrorLimits[(int)GlycolError::SpecHeatLow] = ++this->errors[(int)GlycolError::SpecHeatLow].count;
4049 22 : if (df->glycolErrorLimits[(int)GlycolError::SpecHeatLow] <= df->GlycolErrorLimitTest) {
4050 8 : ShowWarningMessage(
4051 : state,
4052 8 : format("{}: Temperature is out of range (too low) for fluid [{}] specific heat supplied values **", routineName, this->Name));
4053 8 : ShowContinueError(state,
4054 8 : format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
4055 : CalledFrom,
4056 : Temp,
4057 4 : this->CpLowTempValue,
4058 4 : this->CpHighTempValue));
4059 4 : ShowContinueErrorTimeStamp(state, "");
4060 : }
4061 66 : ShowRecurringWarningErrorAtEnd(
4062 : state,
4063 44 : format("{}: Temperature out of range (too low) for fluid [{}] specific heat **", routineName, this->Name),
4064 22 : this->errors[(int)GlycolError::SpecHeatLow].index,
4065 : Temp,
4066 : "{C}");
4067 : }
4068 42 : return this->CpValues(this->CpLowTempIndex);
4069 :
4070 22369932 : } else if (Temp > this->CpHighTempValue) { // Temperature too high
4071 57 : if (!state.dataGlobal->WarmupFlag) {
4072 0 : df->glycolErrorLimits[(int)GlycolError::SpecHeatHigh] = ++this->errors[(int)GlycolError::SpecHeatHigh].count;
4073 0 : if (df->glycolErrorLimits[(int)GlycolError::SpecHeatHigh] <= df->GlycolErrorLimitTest) {
4074 0 : ShowWarningMessage(state,
4075 0 : format("{}: Temperature is out of range (too high) for fluid [{}] specific heat **", routineName, this->Name));
4076 0 : ShowContinueError(state,
4077 0 : format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
4078 : CalledFrom,
4079 : Temp,
4080 0 : this->CpLowTempValue,
4081 0 : this->CpHighTempValue));
4082 0 : ShowContinueErrorTimeStamp(state, "");
4083 : }
4084 0 : ShowRecurringWarningErrorAtEnd(
4085 : state,
4086 0 : format("{}: Temperature out of range (too high) for fluid [{}] specific heat **", routineName, this->Name),
4087 0 : this->errors[(int)GlycolError::SpecHeatHigh].index,
4088 : Temp,
4089 : "{C}");
4090 : }
4091 57 : return this->CpValues(this->CpHighTempIndex);
4092 :
4093 : } else { // Temperature somewhere between the lowest and highest value
4094 : #ifdef PERFORMANCE_OPT
4095 : if (Temp < this->CpTemps(this->LoCpTempIdxLast) || Temp > this->CpTemps(this->LoCpTempIdxLast + 1)) {
4096 : this->LoCpTempIdxLast = FindArrayIndex(Temp, this->CpTemps, 1, this->NumCpTempPoints);
4097 : }
4098 : return this->CpValues(this->LoCpTempIdxLast) + (Temp - this->CpTemps(this->LoCpTempIdxLast)) * this->CpTempRatios(this->LoCpTempIdxLast);
4099 : #else // !PERFORMANCE_OPT
4100 22369875 : assert(this->CpTemps.size() <= static_cast<std::size_t>(std::numeric_limits<int>::max()));
4101 22369875 : int beg(1), end(this->CpTemps.isize()); // 1-based indexing
4102 22369875 : assert(end > 0);
4103 134100018 : while (beg + 1 < end) {
4104 111730143 : int mid = ((beg + end) >> 1); // bit shifting is faster than /2
4105 111730143 : (Temp > this->CpTemps(mid) ? beg : end) = mid;
4106 : } // Invariant: glycol_CpTemps[beg] <= Temperature <= glycol_CpTemps[end]
4107 22369875 : return GetInterpValue(Temp, this->CpTemps(beg), this->CpTemps(end), this->CpValues(beg), this->CpValues(end));
4108 : #endif // PERFORMANCE_OPT
4109 : }
4110 : }
4111 :
4112 548509755 : Real64 GetSpecificHeatGlycol(EnergyPlusData &state,
4113 : std::string_view const glycolName, // carries in substance name
4114 : Real64 const Temperature, // actual temperature given as input
4115 : int &GlycolIndex, // Index to Glycol Properties
4116 : std::string_view const CalledFrom // routine this function was called from (error messages)
4117 : )
4118 : {
4119 : // Wrapper for GlycolProps::getSpecificHeat()
4120 548509755 : auto &df = state.dataFluidProps;
4121 :
4122 548509755 : if (GlycolIndex == 0) {
4123 2 : if ((GlycolIndex = GetGlycolNum(state, glycolName)) == 0) {
4124 0 : ShowSevereError(state, format("Glycol \"{}\" not found, called from: {}", glycolName, CalledFrom));
4125 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
4126 0 : return 0.0;
4127 : }
4128 : }
4129 :
4130 548509755 : return df->glycols(GlycolIndex)->getSpecificHeat(state, Temperature, CalledFrom);
4131 : }
4132 :
4133 : //*****************************************************************************
4134 :
4135 92355285 : Real64 GlycolProps::getDensity(EnergyPlusData &state,
4136 : Real64 const Temp, // actual temperature given as input
4137 : std::string_view const CalledFrom // routine this function was called from (error messages)
4138 : )
4139 : {
4140 :
4141 : // FUNCTION INFORMATION:
4142 : // AUTHOR Rick Strand
4143 : // DATE WRITTEN June 2004
4144 :
4145 : // PURPOSE OF THIS FUNCTION:
4146 : // This subroutine finds the density for glycols at different
4147 : // temperatures.
4148 :
4149 : // METHODOLOGY EMPLOYED:
4150 : // Linear interpolation is used to find density values for a
4151 : // particular glycol (water or some mixture of water and another fluid).
4152 : // Warnings are given if the point is not clearly in the bounds of the
4153 : // glycol data. The value returned is the appropriate limit value.
4154 :
4155 : // REFERENCES:
4156 : // GetFluidPropertiesData: subroutine enforces that temperatures in
4157 : // all temperature lists are entered in ascending order.
4158 :
4159 : // Return value
4160 : Real64 Rho;
4161 :
4162 : // FUNCTION PARAMETERS:
4163 : static constexpr std::string_view routineName = "GlycolProps::getDensity";
4164 :
4165 92355285 : auto &df = state.dataFluidProps;
4166 :
4167 : // FUNCTION LOCAL VARIABLE DECLARATIONS:
4168 92355285 : GlycolError error = GlycolError::Invalid;
4169 :
4170 : // If user didn't input data (shouldn't get this far, but just in case...), we can't find a value
4171 92355285 : assert(this->RhoDataPresent);
4172 :
4173 : // Now determine the value of specific heat using interpolation
4174 92355285 : if (Temp < this->RhoLowTempValue) { // Temperature too low
4175 775 : error = GlycolError::DensityLow;
4176 775 : Rho = this->RhoValues(this->RhoLowTempIndex);
4177 92354510 : } else if (Temp > this->RhoHighTempValue) { // Temperature too high
4178 15354 : error = GlycolError::DensityHigh;
4179 15354 : Rho = this->RhoValues(this->RhoHighTempIndex);
4180 : } else { // Temperature somewhere between the lowest and highest value
4181 : #ifdef PERFORMANCE_OPT
4182 : if (Temp < this->RhoTemps(this->LoRhoTempIdxLast) || Temp > this->RhoTemps(this->LoRhoTempIdxLast + 1)) {
4183 : this->LoRhoTempIdxLast = FindArrayIndex(Temp, this->RhoTemps, 1, this->NumRhoTempPoints);
4184 : }
4185 : Rho = this->RhoValues(this->LoRhoTempIdxLast) +
4186 : (Temp - this->RhoTemps(this->LoRhoTempIdxLast)) * this->RhoTempRatios(this->LoRhoTempIdxLast);
4187 : #else // !PERFORMANCE_OPT
4188 92339156 : int LoTempIndex = FindArrayIndex(Temp, this->RhoTemps, 1, this->NumRhoTempPoints);
4189 92339156 : Real64 TempInterpRatio = (Temp - this->RhoTemps(LoTempIndex)) / (this->RhoTemps(LoTempIndex + 1) - this->RhoTemps(LoTempIndex));
4190 92339156 : Rho = this->RhoValues(LoTempIndex) + TempInterpRatio * (this->RhoValues(LoTempIndex + 1) - this->RhoValues(LoTempIndex));
4191 : #endif // PERFORMANCE_OPT
4192 : }
4193 :
4194 : // Error handling
4195 92355285 : if (error != GlycolError::Invalid && !state.dataGlobal->WarmupFlag) {
4196 10032 : df->glycolErrorLimits[(int)error] = this->errors[(int)error].count;
4197 :
4198 10032 : if (error == GlycolError::DensityLow) {
4199 774 : if (df->glycolErrorLimits[(int)error] <= df->GlycolErrorLimitTest) {
4200 774 : ShowWarningMessage(state, format("{}: Temperature is out of range (too low) for fluid [{}] density **", routineName, this->Name));
4201 1548 : ShowContinueError(state,
4202 1548 : format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
4203 : CalledFrom,
4204 : Temp,
4205 774 : this->RhoLowTempValue,
4206 774 : this->RhoHighTempValue));
4207 774 : ShowContinueErrorTimeStamp(state, "");
4208 : }
4209 :
4210 2322 : ShowRecurringWarningErrorAtEnd(state,
4211 1548 : format("{}: Temperature out of range (too low) for fluid [{}] density **", routineName, this->Name),
4212 774 : this->errors[(int)GlycolError::DensityLow].index,
4213 : Temp,
4214 : "{C}");
4215 :
4216 : } else { // error == GlycolError::DensityHigh
4217 9258 : if (df->glycolErrorLimits[(int)error] <= df->GlycolErrorLimitTest) {
4218 18516 : ShowWarningMessage(state,
4219 18516 : format("{}: Temperature is out of range (too high) for fluid [{}] density **", routineName, this->Name));
4220 18516 : ShowContinueError(state,
4221 18516 : format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
4222 : CalledFrom,
4223 : Temp,
4224 9258 : this->RhoLowTempValue,
4225 9258 : this->RhoHighTempValue));
4226 9258 : ShowContinueErrorTimeStamp(state, "");
4227 : }
4228 27774 : ShowRecurringWarningErrorAtEnd(state,
4229 18516 : format("{}: Temperature out of range (too high) for fluid [{}] density **", routineName, this->Name),
4230 9258 : this->errors[(int)GlycolError::DensityHigh].index,
4231 : Temp,
4232 : "{C}");
4233 : }
4234 : }
4235 :
4236 92355285 : return Rho;
4237 : }
4238 :
4239 92355285 : Real64 GetDensityGlycol(EnergyPlusData &state,
4240 : std::string_view const glycolName, // carries in substance name
4241 : Real64 const Temperature, // actual temperature given as input
4242 : int &GlycolIndex, // Index to Glycol Properties
4243 : std::string_view const CalledFrom // routine this function was called from (error messages)
4244 : )
4245 : {
4246 : // Wrapper for GlycolProps::getDensity()
4247 92355285 : auto &df = state.dataFluidProps;
4248 :
4249 92355285 : if (GlycolIndex == 0) {
4250 3 : if ((GlycolIndex = GetGlycolNum(state, glycolName)) == 0) {
4251 0 : ShowSevereError(state, format("Glycol \"{}\" not found, called from: {}", glycolName, CalledFrom));
4252 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
4253 0 : return 0.0;
4254 : }
4255 : }
4256 :
4257 92355285 : return df->glycols(GlycolIndex)->getDensity(state, Temperature, CalledFrom);
4258 : }
4259 :
4260 : //*****************************************************************************
4261 :
4262 7020329 : Real64 GlycolProps::getConductivity(EnergyPlusData &state,
4263 : Real64 const Temp, // actual temperature given as input
4264 : std::string_view const CalledFrom // routine this function was called from (error messages)
4265 : )
4266 : {
4267 :
4268 : // FUNCTION INFORMATION:
4269 : // AUTHOR Rick Strand
4270 : // DATE WRITTEN June 2004
4271 :
4272 : // PURPOSE OF THIS FUNCTION:
4273 : // This subroutine finds the conductivity for glycols at different
4274 : // temperatures.
4275 :
4276 : // METHODOLOGY EMPLOYED:
4277 : // Linear interpolation is used to find conductivity values for a
4278 : // particular glycol (water or some mixture of water and another fluid).
4279 : // Warnings are given if the point is not clearly in the bounds of the
4280 : // glycol data. The value returned is the appropriate limit value.
4281 :
4282 : // REFERENCES:
4283 : // GetFluidPropertiesData: subroutine enforces that temperatures in
4284 : // all temperature lists are entered in ascending order.
4285 :
4286 : // Return value
4287 : Real64 Cond;
4288 :
4289 : // FUNCTION PARAMETERS:
4290 : static constexpr std::string_view routineName = "GlycolProps::getConductivity";
4291 :
4292 : // FUNCTION LOCAL VARIABLE DECLARATIONS:
4293 7020329 : GlycolError error = GlycolError::Invalid;
4294 :
4295 7020329 : auto &df = state.dataFluidProps;
4296 :
4297 : // If user didn't input data (shouldn't get this far, but just in case...), we can't find a value
4298 7020329 : if (!this->CondDataPresent) {
4299 0 : ShowSevereError(state, format("{}: conductivity data not found for glycol \"{}\", called from {}", routineName, this->Name, CalledFrom));
4300 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
4301 0 : return 0.0;
4302 : }
4303 :
4304 : // Now determine the value of specific heat using interpolation
4305 7020329 : if (Temp < this->CondLowTempValue) { // Temperature too low
4306 0 : error = GlycolError::ConductivityLow;
4307 0 : Cond = this->CondValues(this->CondLowTempIndex);
4308 7020329 : } else if (Temp > this->CondHighTempValue) { // Temperature too high
4309 0 : error = GlycolError::ConductivityHigh;
4310 0 : Cond = this->CondValues(this->CondHighTempIndex);
4311 : } else { // Temperature somewhere between the lowest and highest value
4312 : #ifdef PERFORMANCE_OPT
4313 : if (Temp < this->CondTemps(this->LoCondTempIdxLast) || Temp > this->CondTemps(this->LoCondTempIdxLast + 1)) {
4314 : this->LoCondTempIdxLast = FindArrayIndex(Temp, this->CondTemps, 1, this->NumCondTempPoints);
4315 : }
4316 : Cond = this->CondValues(this->LoCondTempIdxLast) +
4317 : (Temp - this->CondTemps(this->LoCondTempIdxLast)) * this->CondTempRatios(this->LoCondTempIdxLast);
4318 : #else // !PERFORMANCE_OPT
4319 7020329 : int LoTempIndex = FindArrayIndex(Temp, this->CondTemps, 1, this->NumCondTempPoints);
4320 7020329 : Real64 TempInterpRatio = (Temp - this->CondTemps(LoTempIndex)) / (this->CondTemps(LoTempIndex + 1) - this->CondTemps(LoTempIndex));
4321 7020329 : Cond = this->CondValues(LoTempIndex) + TempInterpRatio * (this->CondValues(LoTempIndex + 1) - this->CondValues(LoTempIndex));
4322 : #endif // PERFORMANCE_OPT
4323 : }
4324 :
4325 : // Error handling
4326 7020329 : if (!state.dataGlobal->WarmupFlag && error != GlycolError::Invalid) {
4327 0 : df->glycolErrorLimits[(int)error] = this->errors[(int)error].count;
4328 :
4329 0 : if (error == GlycolError::ConductivityLow) {
4330 0 : if (df->glycolErrorLimits[(int)error] <= df->GlycolErrorLimitTest) {
4331 0 : ShowWarningMessage(state,
4332 0 : format("{}: Temperature is out of range (too low) for fluid [{}] conductivity **", routineName, this->Name));
4333 0 : ShowContinueError(state,
4334 0 : format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
4335 : CalledFrom,
4336 : Temp,
4337 0 : this->CondLowTempValue,
4338 0 : this->CondHighTempValue));
4339 0 : ShowContinueErrorTimeStamp(state, "");
4340 : }
4341 :
4342 0 : ShowRecurringWarningErrorAtEnd(
4343 : state,
4344 0 : format("{}: Temperature out of range (too low) for fluid [{}] conductivity **", routineName, this->Name),
4345 0 : this->errors[(int)error].index,
4346 : Temp,
4347 : "{C}");
4348 : }
4349 :
4350 0 : else if (error == GlycolError::ConductivityHigh) {
4351 0 : if (df->glycolErrorLimits[(int)error] <= df->GlycolErrorLimitTest) {
4352 0 : ShowWarningMessage(state,
4353 0 : format("{}: Temperature is out of range (too high) for fluid [{}] conductivity **", routineName, this->Name));
4354 0 : ShowContinueError(state,
4355 0 : format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
4356 : CalledFrom,
4357 : Temp,
4358 0 : this->CondLowTempValue,
4359 0 : this->CondHighTempValue));
4360 0 : ShowContinueErrorTimeStamp(state, "");
4361 : }
4362 :
4363 0 : ShowRecurringWarningErrorAtEnd(
4364 : state,
4365 0 : format("{}: Temperature out of range (too high) for fluid [{}] conductivity **", routineName, this->Name),
4366 0 : this->errors[(int)error].index,
4367 : Temp,
4368 : "{C}");
4369 : }
4370 : }
4371 :
4372 7020329 : return Cond;
4373 : } // GlycolProps::getConductivity()
4374 :
4375 7020329 : Real64 GetConductivityGlycol(EnergyPlusData &state,
4376 : std::string_view const glycolName, // carries in substance name
4377 : Real64 const Temperature, // actual temperature given as input
4378 : int &GlycolIndex, // Index to Glycol Properties
4379 : std::string_view const CalledFrom // routine this function was called from (error messages)
4380 : )
4381 : {
4382 : // Wrapper for GlycolProps::getConductivity()
4383 7020329 : auto &df = state.dataFluidProps;
4384 :
4385 7020329 : if (GlycolIndex == 0) {
4386 0 : if ((GlycolIndex = GetGlycolNum(state, glycolName)) == 0) {
4387 0 : ShowSevereError(state, format("Glycol \"{}\" not found, called from: {}", glycolName, CalledFrom));
4388 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
4389 0 : return 0.0;
4390 : }
4391 : }
4392 :
4393 : // If user didn't input data (shouldn't get this far, but just in case...), we can't find a value
4394 7020329 : return df->glycols(GlycolIndex)->getConductivity(state, Temperature, CalledFrom);
4395 : }
4396 :
4397 : //*****************************************************************************
4398 :
4399 7035539 : Real64 GlycolProps::getViscosity(EnergyPlusData &state,
4400 : Real64 const Temp, // actual temperature given as input
4401 : std::string_view const CalledFrom // routine this function was called from (error messages)
4402 : )
4403 : {
4404 :
4405 : // FUNCTION INFORMATION:
4406 : // AUTHOR Rick Strand
4407 : // DATE WRITTEN June 2004
4408 :
4409 : // PURPOSE OF THIS FUNCTION:
4410 : // This subroutine finds the viscosity for glycols at different
4411 : // temperatures.
4412 :
4413 : // METHODOLOGY EMPLOYED:
4414 : // Linear interpolation is used to find viscosity values for a
4415 : // particular glycol (water or some mixture of water and another fluid).
4416 : // Warnings are given if the point is not clearly in the bounds of the
4417 : // glycol data. The value returned is the appropriate limit value.
4418 :
4419 : // REFERENCES:
4420 : // GetFluidPropertiesData: subroutine enforces that temperatures in
4421 : // all temperature lists are entered in ascending order.
4422 :
4423 : // Return value
4424 : Real64 Visc; // Value for function
4425 :
4426 : // FUNCTION PARAMETERS:
4427 : static constexpr std::string_view routineName = "GlycolProps::getViscosity";
4428 :
4429 : // FUNCTION LOCAL VARIABLE DECLARATIONS:
4430 7035539 : GlycolError error = GlycolError::Invalid;
4431 :
4432 7035539 : auto &df = state.dataFluidProps;
4433 :
4434 : // If user didn't input data (shouldn't get this far, but just in case...), we can't find a value
4435 7035539 : if (!this->ViscDataPresent) {
4436 0 : ShowSevereError(state, format("{}: viscosity data not found for glycol \"{}\", called from {}", routineName, this->Name, CalledFrom));
4437 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
4438 0 : return 0.0;
4439 : }
4440 :
4441 : // Now determine the value of specific heat using interpolation
4442 7035539 : if (Temp < this->ViscLowTempValue) { // Temperature too low
4443 0 : error = GlycolError::ViscosityLow;
4444 0 : Visc = this->ViscValues(this->ViscLowTempIndex);
4445 7035539 : } else if (Temp > this->ViscHighTempValue) { // Temperature too high
4446 0 : error = GlycolError::ViscosityHigh;
4447 0 : Visc = this->ViscValues(this->ViscHighTempIndex);
4448 : } else { // Temperature somewhere between the lowest and highest value
4449 : #ifdef PERFORMANCE_OPT
4450 : if (Temp < this->ViscTemps(this->LoViscTempIdxLast) || Temp > this->ViscTemps(this->LoViscTempIdxLast + 1)) {
4451 : this->LoViscTempIdxLast = FindArrayIndex(Temp, this->ViscTemps, 1, this->NumViscTempPoints);
4452 : }
4453 : Visc = this->ViscValues(this->LoViscTempIdxLast) +
4454 : (Temp - this->ViscTemps(this->LoViscTempIdxLast)) * this->ViscTempRatios(this->LoViscTempIdxLast);
4455 : #else // !PERFORMANCE_OPT
4456 7035539 : int LoTempIndex = FindArrayIndex(Temp, this->ViscTemps, 1, this->NumViscTempPoints);
4457 7035539 : Real64 TempInterpRatio = (Temp - this->ViscTemps(LoTempIndex)) / (this->ViscTemps(LoTempIndex + 1) - this->ViscTemps(LoTempIndex));
4458 7035539 : Visc = this->ViscValues(LoTempIndex) + TempInterpRatio * (this->ViscValues(LoTempIndex + 1) - this->ViscValues(LoTempIndex));
4459 : #endif // PERFORMANCE_OPT
4460 : }
4461 :
4462 : // Error handling
4463 7035539 : if (!state.dataGlobal->WarmupFlag && error != GlycolError::Invalid) {
4464 0 : df->glycolErrorLimits[(int)error] = ++this->errors[(int)error].count;
4465 :
4466 0 : if (error == GlycolError::ViscosityHigh) {
4467 0 : if (df->glycolErrorLimits[(int)error] <= df->GlycolErrorLimitTest) {
4468 0 : ShowWarningMessage(state,
4469 0 : format("{}: Temperature is out of range (too low) for fluid [{}] viscosity **", routineName, this->Name));
4470 0 : ShowContinueError(state,
4471 0 : format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
4472 : CalledFrom,
4473 : Temp,
4474 0 : this->ViscLowTempValue,
4475 0 : this->ViscHighTempValue));
4476 0 : ShowContinueErrorTimeStamp(state, "");
4477 : }
4478 :
4479 0 : ShowRecurringWarningErrorAtEnd(state,
4480 0 : format("{}: Temperature out of range (too low) for fluid [{}] viscosity **", routineName, this->Name),
4481 0 : this->errors[(int)GlycolError::ViscosityLow].index,
4482 : Temp,
4483 : "{C}");
4484 : }
4485 :
4486 0 : else if (error == GlycolError::ViscosityHigh) {
4487 0 : if (df->glycolErrorLimits[(int)error] <= df->GlycolErrorLimitTest) {
4488 0 : ShowWarningMessage(state,
4489 0 : format("{}: Temperature is out of range (too high) for fluid [{}] viscosity **", routineName, this->Name));
4490 0 : ShowContinueError(state,
4491 0 : format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
4492 : CalledFrom,
4493 : Temp,
4494 0 : this->ViscLowTempValue,
4495 0 : this->ViscHighTempValue));
4496 0 : ShowContinueErrorTimeStamp(state, "");
4497 : }
4498 :
4499 0 : ShowRecurringWarningErrorAtEnd(state,
4500 0 : format("{}: Temperature out of range (too high) for fluid [{}] viscosity **", routineName, this->Name),
4501 0 : this->errors[(int)GlycolError::ViscosityHigh].index,
4502 : Temp,
4503 : "{C}");
4504 : }
4505 : }
4506 :
4507 7035539 : return Visc;
4508 : } // GlycolProps::getViscosity()
4509 :
4510 7035539 : Real64 GetViscosityGlycol(EnergyPlusData &state,
4511 : std::string_view const glycolName, // carries in substance name
4512 : Real64 const Temperature, // actual temperature given as input
4513 : int &GlycolIndex, // Index to Glycol Properties
4514 : std::string_view const CalledFrom // routine this function was called from (error messages)
4515 : )
4516 : {
4517 : // Wrapper for GlycolProps::getViscosity()
4518 7035539 : auto &df = state.dataFluidProps;
4519 :
4520 7035539 : if (GlycolIndex == 0) {
4521 0 : if ((GlycolIndex = GetGlycolNum(state, glycolName)) == 0) {
4522 0 : ShowSevereError(state, format("Glycol \"{}\" not found, called from: {}", glycolName, CalledFrom));
4523 0 : ShowFatalError(state, "Program terminates due to preceding condition.");
4524 0 : return 0.0;
4525 : }
4526 : }
4527 :
4528 : // Now determine the value of specific heat using interpolation
4529 7035539 : return df->glycols(GlycolIndex)->getViscosity(state, Temperature, CalledFrom);
4530 : }
4531 :
4532 : //*****************************************************************************
4533 :
4534 7492 : int GetRefrigNum(EnergyPlusData &state, std::string_view const refrigName) // carries in substance name
4535 : {
4536 : // FUNCTION INFORMATION:
4537 : // AUTHOR Rick Strand
4538 : // DATE WRITTEN May 2000
4539 : // MODIFIED Simon Rees (June 2002)
4540 :
4541 : // PURPOSE OF THIS FUNCTION:
4542 : // This function simply determines the index of the refrigerant named
4543 : // in the input variable to this routine within the derived type.
4544 7492 : auto &df = state.dataFluidProps;
4545 :
4546 : auto found =
4547 22362 : std::find_if(df->refrigs.begin(), df->refrigs.end(), [refrigName](RefrigProps const *refrig) { return refrig->Name == refrigName; });
4548 :
4549 7492 : if (found == df->refrigs.end()) return 0;
4550 :
4551 7463 : int refrigNum = (found - df->refrigs.begin()) + 1;
4552 7463 : df->refrigs(refrigNum)->used = true;
4553 7463 : return refrigNum;
4554 : }
4555 :
4556 7307 : RefrigProps *GetRefrig(EnergyPlusData &state, std::string_view const refrigName)
4557 : {
4558 7307 : auto &df = state.dataFluidProps;
4559 7307 : int refrigNum = GetRefrigNum(state, refrigName);
4560 7307 : return (refrigNum > 0) ? df->refrigs(refrigNum) : nullptr;
4561 : }
4562 :
4563 : //*****************************************************************************
4564 :
4565 54420 : int GetGlycolNum(EnergyPlusData &state, std::string_view const glycolName) // carries in substance name
4566 : {
4567 : // FUNCTION INFORMATION:
4568 : // AUTHOR Rick Strand
4569 : // DATE WRITTEN May 2000
4570 : // MODIFIED Simon Rees (June 2002)
4571 :
4572 : // PURPOSE OF THIS FUNCTION:
4573 : // This function simply determines the index of the glycol named
4574 : // in the input variable to this routine within the derived type.
4575 54420 : auto &df = state.dataFluidProps;
4576 :
4577 : auto found =
4578 108071 : std::find_if(df->glycols.begin(), df->glycols.end(), [glycolName](GlycolProps const *glycol) { return glycol->Name == glycolName; });
4579 :
4580 54420 : if (found == df->glycols.end()) return 0;
4581 :
4582 53596 : int glycolNum = (found - df->glycols.begin()) + 1;
4583 53596 : df->glycols(glycolNum)->used = true;
4584 53596 : return glycolNum;
4585 : }
4586 :
4587 824 : GlycolProps *GetGlycol(EnergyPlusData &state, std::string_view const glycolName)
4588 : {
4589 824 : auto &df = state.dataFluidProps;
4590 824 : int glycolNum = GetGlycolNum(state, glycolName);
4591 824 : return (glycolNum > 0) ? df->glycols(glycolNum) : nullptr;
4592 : }
4593 :
4594 2627 : int GetGlycolRawNum(EnergyPlusData &state, std::string_view const glycolRawName) // carries in substance name
4595 : {
4596 2627 : auto const &df = state.dataFluidProps;
4597 :
4598 2627 : auto found = std::find_if(df->glycolsRaw.begin(), df->glycolsRaw.end(), [glycolRawName](GlycolRawProps const *glycolRaw) {
4599 2896 : return glycolRaw->Name == glycolRawName;
4600 : });
4601 :
4602 2627 : if (found == df->glycolsRaw.end()) return 0;
4603 :
4604 235 : int glycolRawNum = (found - df->glycolsRaw.begin()) + 1;
4605 235 : return glycolRawNum;
4606 : }
4607 :
4608 2616 : GlycolRawProps *GetGlycolRaw(EnergyPlusData &state, std::string_view const glycolRawName)
4609 : {
4610 2616 : auto &df = state.dataFluidProps;
4611 2616 : int glycolRawNum = GetGlycolRawNum(state, glycolRawName);
4612 2616 : return (glycolRawNum > 0) ? df->glycolsRaw(glycolRawNum) : nullptr;
4613 : }
4614 :
4615 : //*****************************************************************************
4616 :
4617 62152 : std::string GetGlycolNameByIndex(EnergyPlusData &state, int const Idx) // carries in substance index
4618 : {
4619 : // FUNCTION INFORMATION:
4620 : // AUTHOR Edwin Lee
4621 : // DATE WRITTEN May 2009
4622 :
4623 : // PURPOSE OF THIS FUNCTION:
4624 : // This function simply returns the glycol name by index from the
4625 : // GlycolData data structure. This is needed to expose the name
4626 : // as the data structure is private.
4627 : // This is used by plant equipment to pass in both the proper index
4628 : // and the proper name when calling glycol routines. Thus, the index
4629 : // is already known, and the input is assumed to be found.
4630 :
4631 : // METHODOLOGY EMPLOYED:
4632 : // Just checks to see whether or not the glycol index is valid
4633 : // and if so, the function returns the name. If not, it returns ' '
4634 :
4635 : // Check to see if this glycol shows up in the glycol data
4636 : // ArrayLength = SIZE(GlycolData)
4637 :
4638 62152 : auto &df = state.dataFluidProps;
4639 62152 : if (Idx > 0 && Idx <= df->glycols.isize()) {
4640 26955 : return df->glycols(Idx)->Name;
4641 : } else { // return blank - error checking in calling proceedure
4642 35197 : return "";
4643 : }
4644 : }
4645 :
4646 : //*****************************************************************************
4647 :
4648 576973611 : int FindArrayIndex(Real64 const Value, // Value to be placed/found within the array of values
4649 : Array1D<Real64> const &Array, // Array of values in ascending order
4650 : int const LowBound, // Valid values lower bound (set by calling program)
4651 : int const UpperBound // Valid values upper bound (set by calling program)
4652 : )
4653 : {
4654 : // FUNCTION INFORMATION:
4655 : // AUTHOR Rick Strand
4656 : // DATE WRITTEN May 2000
4657 : // MODIFIED Simon Rees (May 2002)
4658 : // RE-ENGINEERED Autodesk (Nov 2013) (performance tuned on C++)
4659 :
4660 : // PURPOSE OF THIS FUNCTION:
4661 : // This generic function simply finds the points in an array between
4662 : // which a single value is found. The returned value is the index of
4663 : // the low point.
4664 :
4665 : // METHODOLOGY EMPLOYED:
4666 : // Straight interval halving. It is assumed that the values in the array
4667 : // appear in ascending order. If the value is below that in the supplied
4668 : // data array a zero index is returned. If the value is above that in the
4669 : // supplied data array, the max index is returned. This allows some error
4670 : // checking in the calling routine.
4671 :
4672 : // Autodesk:Tuned Profiling hot spot: Slightly slower when inlined
4673 :
4674 : // Bit shifting is substantially faster than /2 at least on GCC even with high optimization
4675 : // Linear indexing used to assure we are bit shifting positive values where behavior is assured
4676 : // std::lower_bound was 4x slower for the small (~100) array sizes seen in EnergyPlus use
4677 : typedef Array1D<Real64>::size_type size_type;
4678 576973611 : int const l(Array.l());
4679 576973611 : assert(LowBound >= l);
4680 576973611 : assert(LowBound <= UpperBound);
4681 576973611 : assert(UpperBound <= Array.u());
4682 576973611 : assert(!Array.empty()); // Empty arrays are not currently supported
4683 576973611 : assert(l > 0); // Returning 0 for Value smaller than lowest doesn't make sense if l() <= 0
4684 576973611 : size_type beg(LowBound - l);
4685 576973611 : if (Value < Array[beg]) {
4686 0 : return 0;
4687 : } else {
4688 576973611 : size_type end(UpperBound - l);
4689 576973611 : if (Value > Array[end]) {
4690 0 : return UpperBound;
4691 : } else { // Binary search
4692 : size_type mid;
4693 4090904883 : while (beg + 1 < end) {
4694 3513931272 : mid = ((beg + end) >> 1);
4695 3513931272 : (Value > Array[mid] ? beg : end) = mid;
4696 : }
4697 576973611 : return l + beg;
4698 : }
4699 : }
4700 : }
4701 :
4702 989955 : int FindArrayIndex(Real64 const Value, // Value to be placed/found within the array of values
4703 : Array1D<Real64> const &Array // Array of values in ascending order
4704 : )
4705 : {
4706 : // FUNCTION INFORMATION:
4707 : // AUTHOR Rick Strand
4708 : // DATE WRITTEN May 2000
4709 : // MODIFIED Simon Rees (May 2002)
4710 : // RE-ENGINEERED Autodesk (Nov 2013) (performance tuned on C++)
4711 :
4712 : // PURPOSE OF THIS FUNCTION:
4713 : // This generic function simply finds the points in an array between
4714 : // which a single value is found. The returned value is the index of
4715 : // the low point.
4716 :
4717 : // METHODOLOGY EMPLOYED:
4718 : // Straight interval halving. It is assumed that the values in the array
4719 : // appear in ascending order. If the value is below that in the supplied
4720 : // data array a zero index is returned. If the value is above that in the
4721 : // supplied data array, the max index is returned. This allows some error
4722 : // checking in the calling routine.
4723 :
4724 : // Autodesk:Tuned Profiling hot spot: Slightly slower when inlined
4725 :
4726 : // Bit shifting is substantially faster than /2 at least on GCC even with high optimization
4727 : // Linear indexing used to assure we are bit shifting positive values where behavior is assured
4728 : // std::lower_bound was 4x slower for the small (~100) array sizes seen in EnergyPlus use
4729 : typedef Array1D<Real64>::size_type size_type;
4730 989955 : assert(!Array.empty()); // Empty arrays are not currently supported
4731 989955 : assert(Array.l() > 0); // Returning 0 for Value smaller than lowest doesn't make sense if l() <= 0
4732 989955 : if (Value < Array[0]) {
4733 5262 : return 0;
4734 : } else {
4735 984693 : size_type end(Array.size() - 1u);
4736 984693 : if (Value > Array[end]) {
4737 4842 : return Array.u();
4738 : } else { // Binary search
4739 979851 : size_type beg(0), mid;
4740 4919623 : while (beg + 1 < end) {
4741 3939772 : mid = ((beg + end) >> 1);
4742 3939772 : (Value > Array[mid] ? beg : end) = mid;
4743 : }
4744 979851 : return Array.l() + beg;
4745 : }
4746 : }
4747 : }
4748 :
4749 : //*****************************************************************************
4750 :
4751 193443628 : Real64 GetInterpolatedSatProp(EnergyPlusData &state,
4752 : Real64 const Temperature, // Saturation Temp.
4753 : Array1D<Real64> const &PropTemps, // Array of temperature at which props are available
4754 : Array1D<Real64> const &LiqProp, // Array of saturated liquid properties
4755 : Array1D<Real64> const &VapProp, // Array of saturatedvapour properties
4756 : Real64 const Quality, // Quality
4757 : std::string_view const CalledFrom, // routine this function was called from (error messages)
4758 : int const LowBound, // Valid values lower bound (set by calling program)
4759 : int const UpperBound // Valid values upper bound (set by calling program)
4760 : )
4761 : {
4762 :
4763 : // FUNCTION INFORMATION:
4764 : // AUTHOR Simon Rees
4765 : // DATE WRITTEN May 2002
4766 :
4767 : // PURPOSE OF THIS FUNCTION:
4768 : // This generic function performs an interpolation on the supplied saturated
4769 : // liquid and vapor data to find the saturated property value at a given
4770 : // temperature and quality. This function is used by all the functions that
4771 : // get saturated property values.
4772 :
4773 : // METHODOLOGY EMPLOYED:
4774 : // Index of arrays either side of given temperature is found using FindArrayIndex.
4775 : // Double linear interpolation is used to first find property values at the given
4776 : // quality bounding the required temperature. These values are interpolated in the
4777 : // temperature domain to find the final value.
4778 :
4779 : // Return value
4780 : Real64 ReturnValue;
4781 :
4782 : // error counters and dummy string
4783 193443628 : bool ErrorFlag(false); // error flag for current call
4784 :
4785 193443628 : int const LoTempIndex = FindArrayIndex(Temperature, PropTemps, LowBound, UpperBound); // array index for temp above input temp
4786 :
4787 193443628 : if (LoTempIndex == 0) {
4788 0 : ReturnValue = LiqProp(LowBound) + Quality * (VapProp(LowBound) - LiqProp(LowBound));
4789 0 : ErrorFlag = true;
4790 193443628 : } else if (LoTempIndex >= UpperBound) {
4791 0 : ReturnValue = LiqProp(UpperBound) + Quality * (VapProp(UpperBound) - LiqProp(UpperBound));
4792 0 : ErrorFlag = true;
4793 : } else {
4794 193443628 : int const HiTempIndex = LoTempIndex + 1; // array index for temp below input temp
4795 :
4796 : // find adjacent property values at the given quality
4797 193443628 : Real64 const LiqProp_Lo = LiqProp(LoTempIndex);
4798 193443628 : Real64 const LoSatProp = LiqProp_Lo + Quality * (VapProp(LoTempIndex) - LiqProp_Lo); // Sat. prop. at lower temp & given quality
4799 :
4800 193443628 : Real64 const LiqProp_Hi = LiqProp(HiTempIndex);
4801 193443628 : Real64 const HiSatProp = LiqProp_Hi + Quality * (VapProp(HiTempIndex) - LiqProp_Hi); // Sat. prop. at higher temp & given quality
4802 :
4803 : // find interpolation ratio in temperature direction
4804 193443628 : Real64 const PropTemps_Lo = PropTemps(LoTempIndex);
4805 193443628 : Real64 const TempInterpRatio = (Temperature - PropTemps_Lo) / (PropTemps(HiTempIndex) - PropTemps_Lo);
4806 :
4807 : // apply final linear interpolation
4808 193443628 : ReturnValue = LoSatProp + TempInterpRatio * (HiSatProp - LoSatProp);
4809 : }
4810 :
4811 193443628 : if (ErrorFlag && (CalledFrom != "ReportAndTestRefrigerants")) {
4812 0 : auto &df = state.dataFluidProps;
4813 :
4814 0 : ++df->TempRangeErrCountGetInterpolatedSatProp;
4815 : // send warning
4816 0 : if (df->TempRangeErrCountGetInterpolatedSatProp <= df->RefrigErrorLimitTest) {
4817 0 : ShowWarningError(state, "GetInterpolatedSatProp: Saturation temperature for interpolation is out of range of data supplied: **");
4818 0 : ShowContinueErrorTimeStamp(state, fmt::format(" Called from:{}", CalledFrom));
4819 0 : ShowContinueError(state, format("Refrigerant temperature = {:.2R}", Temperature));
4820 0 : ShowContinueError(state, format("Returned saturated property value = {:.3R}", ReturnValue));
4821 : } else {
4822 0 : ShowRecurringWarningErrorAtEnd(state,
4823 : "GetInterpolatedSatProp: Refrigerant temperature for interpolation out of range error",
4824 0 : df->TempRangeErrIndexGetInterpolatedSatProp,
4825 : Temperature,
4826 : "{C}");
4827 : }
4828 : }
4829 :
4830 193443628 : return ReturnValue;
4831 : }
4832 :
4833 : //*****************************************************************************
4834 :
4835 26 : bool CheckFluidPropertyName(EnergyPlusData const &state,
4836 : std::string const &name) // Name from input(?) to be checked against valid FluidPropertyNames
4837 : {
4838 :
4839 : // FUNCTION INFORMATION:
4840 : // AUTHOR Linda K. Lawrie
4841 : // DATE WRITTEN October 2002
4842 :
4843 : // PURPOSE OF THIS FUNCTION:
4844 : // This function checks on an input fluid property to make sure it is valid.
4845 26 : auto const &df = state.dataFluidProps;
4846 :
4847 54 : auto foundRefrig = std::find_if(df->refrigs.begin(), df->refrigs.end(), [name](RefrigProps const *refrig) { return refrig->Name == name; });
4848 26 : if (foundRefrig != df->refrigs.end()) return true;
4849 :
4850 78 : auto foundGlycol = std::find_if(df->glycols.begin(), df->glycols.end(), [name](GlycolProps const *glycol) { return glycol->Name == name; });
4851 26 : if (foundGlycol != df->glycols.end()) return true;
4852 :
4853 0 : return false;
4854 : }
4855 :
4856 794 : void ReportOrphanFluids(EnergyPlusData &state)
4857 : {
4858 :
4859 : // SUBROUTINE INFORMATION:
4860 : // AUTHOR Linda Lawrie
4861 : // DATE WRITTEN March 2010
4862 :
4863 : // PURPOSE OF THIS SUBROUTINE:
4864 : // In response to CR8008, report orphan (unused) fluid items.
4865 :
4866 : // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
4867 794 : bool NeedOrphanMessage = true;
4868 794 : int NumUnusedRefrig = 0;
4869 :
4870 794 : auto const &df = state.dataFluidProps;
4871 :
4872 1617 : for (auto const *refrig : df->refrigs) {
4873 823 : if (refrig->used) continue;
4874 761 : if (refrig->Name == "STEAM") continue;
4875 0 : if (NeedOrphanMessage && state.dataGlobal->DisplayUnusedObjects) {
4876 0 : ShowWarningError(state, "The following fluid names are \"Unused Fluids\". These fluids are in the idf");
4877 0 : ShowContinueError(state, " file but are never obtained by the simulation and therefore are NOT used.");
4878 0 : NeedOrphanMessage = false;
4879 : }
4880 0 : if (state.dataGlobal->DisplayUnusedObjects) {
4881 0 : ShowMessage(state, format("Refrigerant={}", refrig->Name));
4882 : } else {
4883 0 : ++NumUnusedRefrig;
4884 : }
4885 : }
4886 :
4887 794 : int NumUnusedGlycol = 0;
4888 :
4889 1616 : for (auto const *glycol : df->glycols) {
4890 822 : if (glycol->used) continue;
4891 1 : if (glycol->Name == "WATER") continue;
4892 1 : if (glycol->Name == "ETHYLENEGLYCOL") continue;
4893 1 : if (glycol->Name == "PROPYLENEGLYCOL") continue;
4894 1 : if (NeedOrphanMessage && state.dataGlobal->DisplayUnusedObjects) {
4895 0 : ShowWarningError(state, "The following fluid names are \"Unused Fluids\". These fluids are in the idf");
4896 0 : ShowContinueError(state, " file but are never obtained by the simulation and therefore are NOT used.");
4897 0 : NeedOrphanMessage = false;
4898 : }
4899 1 : if (state.dataGlobal->DisplayUnusedObjects) {
4900 0 : ShowMessage(state, format("Glycol={}", glycol->Name));
4901 : } else {
4902 1 : ++NumUnusedGlycol;
4903 : }
4904 : }
4905 :
4906 794 : if (NumUnusedRefrig > 0 || NumUnusedGlycol > 0) {
4907 1 : if (NumUnusedRefrig > 0) ShowMessage(state, format("There are {} unused refrigerants in input.", NumUnusedRefrig));
4908 1 : if (NumUnusedGlycol > 0) ShowMessage(state, format("There are {} unused glycols in input.", NumUnusedGlycol));
4909 1 : ShowMessage(state, "Use Output:Diagnostics,DisplayUnusedObjects; to see them.");
4910 : }
4911 794 : }
4912 :
4913 0 : void GetFluidDensityTemperatureLimits(EnergyPlusData &state, int const FluidIndex, Real64 &MinTempLimit, Real64 &MaxTempLimit)
4914 : {
4915 0 : if (FluidIndex > 0) {
4916 0 : auto const &df = state.dataFluidProps->glycols(FluidIndex);
4917 0 : MinTempLimit = df->RhoLowTempValue;
4918 0 : MaxTempLimit = df->RhoHighTempValue;
4919 : }
4920 0 : }
4921 :
4922 0 : void GetFluidSpecificHeatTemperatureLimits(EnergyPlusData &state, int const FluidIndex, Real64 &MinTempLimit, Real64 &MaxTempLimit)
4923 : {
4924 0 : if (FluidIndex > 0) {
4925 0 : auto const &df = state.dataFluidProps->glycols(FluidIndex);
4926 0 : MinTempLimit = df->CpLowTempValue;
4927 0 : MaxTempLimit = df->CpHighTempValue;
4928 : }
4929 0 : }
4930 :
4931 2 : GlycolAPI::GlycolAPI(EnergyPlusData &state, std::string const &glycolName)
4932 : {
4933 2 : this->glycolName = EnergyPlus::Util::makeUPPER(glycolName);
4934 2 : this->glycolIndex = 0;
4935 2 : this->cf = "GlycolAPI:Instance";
4936 2 : if (this->glycolName != "WATER") {
4937 0 : EnergyPlus::ShowFatalError(state, "Can only do water right now");
4938 : }
4939 2 : }
4940 42435 : Real64 GlycolAPI::specificHeat(EnergyPlusData &state, Real64 temperature)
4941 : {
4942 42435 : return FluidProperties::GetSpecificHeatGlycol(state, this->glycolName, temperature, this->glycolIndex, this->cf);
4943 : }
4944 195 : Real64 GlycolAPI::density(EnergyPlusData &state, Real64 temperature)
4945 : {
4946 195 : return FluidProperties::GetDensityGlycol(state, this->glycolName, temperature, this->glycolIndex, this->cf);
4947 : }
4948 0 : Real64 GlycolAPI::conductivity(EnergyPlusData &state, Real64 temperature)
4949 : {
4950 0 : return FluidProperties::GetConductivityGlycol(state, this->glycolName, temperature, this->glycolIndex, this->cf);
4951 : }
4952 0 : Real64 GlycolAPI::viscosity(EnergyPlusData &state, Real64 temperature)
4953 : {
4954 0 : return FluidProperties::GetViscosityGlycol(state, this->glycolName, temperature, this->glycolIndex, this->cf);
4955 : }
4956 :
4957 0 : RefrigerantAPI::RefrigerantAPI(EnergyPlusData &state, std::string const &refrigName)
4958 : {
4959 0 : this->rName = EnergyPlus::Util::makeUPPER(refrigName);
4960 0 : this->rIndex = 0;
4961 0 : this->cf = "RefrigerantAPI:Instance";
4962 0 : if (this->rName != "STEAM") {
4963 0 : EnergyPlus::ShowFatalError(state, "Can only do steam right now");
4964 : }
4965 0 : }
4966 0 : Real64 RefrigerantAPI::saturationPressure(EnergyPlusData &state, Real64 temperature)
4967 : {
4968 0 : return FluidProperties::GetSatPressureRefrig(state, this->rName, temperature, this->rIndex, this->cf);
4969 : }
4970 0 : Real64 RefrigerantAPI::saturationTemperature(EnergyPlusData &state, Real64 pressure)
4971 : {
4972 0 : return FluidProperties::GetSatTemperatureRefrig(state, this->rName, pressure, this->rIndex, this->cf);
4973 : }
4974 0 : Real64 RefrigerantAPI::saturatedEnthalpy(EnergyPlusData &state, Real64 temperature, Real64 quality)
4975 : {
4976 0 : return FluidProperties::GetSatEnthalpyRefrig(state, this->rName, temperature, quality, this->rIndex, this->cf);
4977 : }
4978 0 : Real64 RefrigerantAPI::saturatedDensity(EnergyPlusData &state, Real64 temperature, Real64 quality)
4979 : {
4980 0 : return FluidProperties::GetSatDensityRefrig(state, this->rName, temperature, quality, this->rIndex, this->cf);
4981 : }
4982 0 : Real64 RefrigerantAPI::saturatedSpecificHeat(EnergyPlusData &state, Real64 temperature, Real64 quality)
4983 : {
4984 0 : return FluidProperties::GetSatSpecificHeatRefrig(state, this->rName, temperature, quality, this->rIndex, this->cf);
4985 : }
4986 0 : Real64 RefrigerantAPI::superHeatedEnthalpy(EnergyPlusData &state, Real64 temperature, Real64 pressure)
4987 : {
4988 0 : return FluidProperties::GetSupHeatEnthalpyRefrig(state, this->rName, temperature, pressure, this->rIndex, this->cf);
4989 : }
4990 0 : Real64 RefrigerantAPI::superHeatedPressure(EnergyPlusData &state, Real64 temperature, Real64 enthalpy)
4991 : {
4992 0 : return FluidProperties::GetSupHeatPressureRefrig(state, this->rName, temperature, enthalpy, this->rIndex, this->cf);
4993 : }
4994 0 : Real64 RefrigerantAPI::superHeatedDensity(EnergyPlusData &state, Real64 temperature, Real64 pressure)
4995 : {
4996 0 : return FluidProperties::GetSupHeatDensityRefrig(state, this->rName, temperature, pressure, this->rIndex, this->cf);
4997 : }
4998 :
4999 : #ifdef UNUSED_FLUID_PROPS
5000 : static constexpr std::array<std::array<Real64, DefaultNumSteamSuperheatedTemps>, DefaultNumSteamSuperheatedPressure>
5001 : DefaultSteamSuperheatedEnthalpyDataTable = {
5002 : {{2501000.0, 2503000.0, 2510000.0, 2520000.0, 2529000.0, 2538000.0, 2548000.0, 2557000.0, 2566000.0, 2576000.0, 2585000.0, 2595000.0,
5003 : 2604000.0, 2613000.0, 2623000.0, 2632000.0, 2636000.0, 2640000.0, 2643000.0, 2647000.0, 2651000.0, 2655000.0, 2658000.0, 2662000.0,
5004 : 2666000.0, 2670000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2687000.0, 2689000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
5005 : 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
5006 : 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2742000.0,
5007 : 2744000.0, 2746000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
5008 : 2788000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
5009 : 2834000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
5010 : 2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5011 : 3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5012 : {0.0, 2503000.0, 2510000.0, 2520000.0, 2529000.0, 2538000.0, 2548000.0, 2557000.0, 2566000.0, 2576000.0, 2585000.0, 2595000.0,
5013 : 2604000.0, 2613000.0, 2623000.0, 2632000.0, 2636000.0, 2640000.0, 2643000.0, 2647000.0, 2651000.0, 2655000.0, 2658000.0, 2662000.0,
5014 : 2666000.0, 2670000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2687000.0, 2689000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
5015 : 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
5016 : 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2742000.0,
5017 : 2744000.0, 2746000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
5018 : 2788000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
5019 : 2834000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
5020 : 2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5021 : 3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5022 : {0.0, 0.0, 2510000.0, 2519000.0, 2529000.0, 2538000.0, 2548000.0, 2557000.0, 2566000.0, 2576000.0, 2585000.0, 2594000.0,
5023 : 2604000.0, 2613000.0, 2623000.0, 2632000.0, 2636000.0, 2640000.0, 2643000.0, 2647000.0, 2651000.0, 2655000.0, 2658000.0, 2662000.0,
5024 : 2666000.0, 2670000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2687000.0, 2689000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
5025 : 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
5026 : 2721000.0, 2723000.0, 2725000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2742000.0,
5027 : 2744000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
5028 : 2788000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
5029 : 2834000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
5030 : 2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5031 : 3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5032 : {0.0, 0.0, 0.0, 2519000.0, 2529000.0, 2538000.0, 2547000.0, 2557000.0, 2566000.0, 2576000.0, 2585000.0, 2594000.0,
5033 : 2604000.0, 2613000.0, 2623000.0, 2632000.0, 2636000.0, 2639000.0, 2643000.0, 2647000.0, 2651000.0, 2655000.0, 2658000.0, 2662000.0,
5034 : 2666000.0, 2670000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2687000.0, 2689000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
5035 : 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
5036 : 2721000.0, 2723000.0, 2725000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2742000.0,
5037 : 2744000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
5038 : 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
5039 : 2834000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
5040 : 2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5041 : 3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5042 : {0.0, 0.0, 0.0, 0.0, 2528000.0, 2538000.0, 2547000.0, 2557000.0, 2566000.0, 2575000.0, 2585000.0, 2594000.0,
5043 : 2604000.0, 2613000.0, 2622000.0, 2632000.0, 2636000.0, 2639000.0, 2643000.0, 2647000.0, 2651000.0, 2654000.0, 2658000.0, 2662000.0,
5044 : 2666000.0, 2670000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2687000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
5045 : 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
5046 : 2721000.0, 2723000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2742000.0,
5047 : 2744000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
5048 : 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
5049 : 2834000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
5050 : 2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5051 : 3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5052 : {0.0, 0.0, 0.0, 0.0, 0.0, 2537000.0, 2547000.0, 2556000.0, 2566000.0, 2575000.0, 2585000.0, 2594000.0,
5053 : 2603000.0, 2613000.0, 2622000.0, 2632000.0, 2635000.0, 2639000.0, 2643000.0, 2647000.0, 2651000.0, 2654000.0, 2658000.0, 2662000.0,
5054 : 2666000.0, 2669000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2687000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
5055 : 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
5056 : 2721000.0, 2723000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2742000.0,
5057 : 2743000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
5058 : 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
5059 : 2834000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
5060 : 2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5061 : 3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5062 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2547000.0, 2556000.0, 2566000.0, 2575000.0, 2584000.0, 2594000.0,
5063 : 2603000.0, 2613000.0, 2622000.0, 2632000.0, 2635000.0, 2639000.0, 2643000.0, 2647000.0, 2650000.0, 2654000.0, 2658000.0, 2662000.0,
5064 : 2666000.0, 2669000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
5065 : 2698000.0, 2700000.0, 2702000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
5066 : 2721000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2741000.0,
5067 : 2743000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
5068 : 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
5069 : 2833000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
5070 : 2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5071 : 3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5072 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2556000.0, 2565000.0, 2575000.0, 2584000.0, 2594000.0,
5073 : 2603000.0, 2612000.0, 2622000.0, 2631000.0, 2635000.0, 2639000.0, 2643000.0, 2646000.0, 2650000.0, 2654000.0, 2658000.0, 2662000.0,
5074 : 2665000.0, 2669000.0, 2673000.0, 2677000.0, 2681000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
5075 : 2698000.0, 2700000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
5076 : 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2739000.0, 2741000.0,
5077 : 2743000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2783000.0,
5078 : 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
5079 : 2833000.0, 2837000.0, 2841000.0, 2851000.0, 2860000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
5080 : 2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5081 : 3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5082 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2565000.0, 2574000.0, 2584000.0, 2593000.0,
5083 : 2603000.0, 2612000.0, 2622000.0, 2631000.0, 2635000.0, 2639000.0, 2642000.0, 2646000.0, 2650000.0, 2654000.0, 2658000.0, 2661000.0,
5084 : 2665000.0, 2669000.0, 2673000.0, 2677000.0, 2680000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
5085 : 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2718000.0,
5086 : 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2737000.0, 2739000.0, 2741000.0,
5087 : 2743000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2783000.0,
5088 : 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2829000.0,
5089 : 2833000.0, 2837000.0, 2841000.0, 2851000.0, 2860000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
5090 : 2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5091 : 3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5092 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2574000.0, 2583000.0, 2593000.0,
5093 : 2602000.0, 2612000.0, 2621000.0, 2631000.0, 2635000.0, 2638000.0, 2642000.0, 2646000.0, 2650000.0, 2654000.0, 2657000.0, 2661000.0,
5094 : 2665000.0, 2669000.0, 2673000.0, 2676000.0, 2680000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2693000.0, 2695000.0,
5095 : 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2714000.0, 2716000.0, 2718000.0,
5096 : 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2733000.0, 2735000.0, 2737000.0, 2739000.0, 2741000.0,
5097 : 2743000.0, 2745000.0, 2749000.0, 2753000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2779000.0, 2783000.0,
5098 : 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2829000.0,
5099 : 2833000.0, 2837000.0, 2841000.0, 2851000.0, 2860000.0, 2870000.0, 2880000.0, 2889000.0, 2899000.0, 2909000.0, 2919000.0, 2928000.0,
5100 : 2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5101 : 3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5102 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2582000.0, 2592000.0,
5103 : 2602000.0, 2611000.0, 2621000.0, 2630000.0, 2634000.0, 2638000.0, 2642000.0, 2646000.0, 2649000.0, 2653000.0, 2657000.0, 2661000.0,
5104 : 2665000.0, 2668000.0, 2672000.0, 2676000.0, 2680000.0, 2684000.0, 2686000.0, 2688000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0,
5105 : 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0,
5106 : 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0, 2739000.0, 2741000.0,
5107 : 2743000.0, 2745000.0, 2749000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2775000.0, 2779000.0, 2783000.0,
5108 : 2787000.0, 2791000.0, 2795000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2825000.0, 2829000.0,
5109 : 2833000.0, 2837000.0, 2841000.0, 2851000.0, 2860000.0, 2870000.0, 2880000.0, 2889000.0, 2899000.0, 2909000.0, 2919000.0, 2928000.0,
5110 : 2938000.0, 2958000.0, 2977000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5111 : 3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5112 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2591000.0,
5113 : 2601000.0, 2611000.0, 2620000.0, 2630000.0, 2634000.0, 2637000.0, 2641000.0, 2645000.0, 2649000.0, 2653000.0, 2657000.0, 2660000.0,
5114 : 2664000.0, 2668000.0, 2672000.0, 2676000.0, 2680000.0, 2683000.0, 2685000.0, 2687000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0,
5115 : 2697000.0, 2699000.0, 2701000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0,
5116 : 2720000.0, 2722000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0, 2739000.0, 2741000.0,
5117 : 2743000.0, 2745000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2771000.0, 2775000.0, 2779000.0, 2783000.0,
5118 : 2787000.0, 2791000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2821000.0, 2825000.0, 2829000.0,
5119 : 2833000.0, 2837000.0, 2841000.0, 2850000.0, 2860000.0, 2870000.0, 2879000.0, 2889000.0, 2899000.0, 2909000.0, 2918000.0, 2928000.0,
5120 : 2938000.0, 2958000.0, 2977000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5121 : 3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5122 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5123 : 2600000.0, 2610000.0, 2620000.0, 2629000.0, 2633000.0, 2637000.0, 2641000.0, 2645000.0, 2648000.0, 2652000.0, 2656000.0, 2660000.0,
5124 : 2664000.0, 2668000.0, 2671000.0, 2675000.0, 2679000.0, 2683000.0, 2685000.0, 2687000.0, 2689000.0, 2691000.0, 2692000.0, 2694000.0,
5125 : 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2715000.0, 2717000.0,
5126 : 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0, 2738000.0, 2740000.0,
5127 : 2742000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0, 2779000.0, 2783000.0,
5128 : 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2813000.0, 2817000.0, 2821000.0, 2825000.0, 2829000.0,
5129 : 2833000.0, 2837000.0, 2841000.0, 2850000.0, 2860000.0, 2870000.0, 2879000.0, 2889000.0, 2899000.0, 2909000.0, 2918000.0, 2928000.0,
5130 : 2938000.0, 2958000.0, 2977000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5131 : 3177000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5132 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5133 : 0.0, 2609000.0, 2619000.0, 2628000.0, 2632000.0, 2636000.0, 2640000.0, 2644000.0, 2648000.0, 2652000.0, 2655000.0, 2659000.0,
5134 : 2663000.0, 2667000.0, 2671000.0, 2675000.0, 2679000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0,
5135 : 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0,
5136 : 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0,
5137 : 2742000.0, 2744000.0, 2748000.0, 2752000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0, 2778000.0, 2782000.0,
5138 : 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0, 2825000.0, 2829000.0,
5139 : 2833000.0, 2836000.0, 2840000.0, 2850000.0, 2860000.0, 2869000.0, 2879000.0, 2889000.0, 2899000.0, 2908000.0, 2918000.0, 2928000.0,
5140 : 2938000.0, 2957000.0, 2977000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3076000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
5141 : 3177000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5142 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5143 : 0.0, 0.0, 2618000.0, 2627000.0, 2631000.0, 2635000.0, 2639000.0, 2643000.0, 2647000.0, 2651000.0, 2655000.0, 2659000.0,
5144 : 2662000.0, 2666000.0, 2670000.0, 2674000.0, 2678000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0, 2689000.0, 2691000.0, 2693000.0,
5145 : 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2716000.0,
5146 : 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0,
5147 : 2741000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2770000.0, 2774000.0, 2778000.0, 2782000.0,
5148 : 2786000.0, 2790000.0, 2794000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0, 2825000.0, 2828000.0,
5149 : 2832000.0, 2836000.0, 2840000.0, 2850000.0, 2859000.0, 2869000.0, 2879000.0, 2889000.0, 2898000.0, 2908000.0, 2918000.0, 2928000.0,
5150 : 2938000.0, 2957000.0, 2977000.0, 2997000.0, 3017000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3117000.0, 3137000.0, 3157000.0,
5151 : 3177000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
5152 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5153 : 0.0, 0.0, 0.0, 2626000.0, 2630000.0, 2634000.0, 2638000.0, 2642000.0, 2646000.0, 2650000.0, 2654000.0, 2658000.0,
5154 : 2661000.0, 2665000.0, 2669000.0, 2673000.0, 2677000.0, 2681000.0, 2683000.0, 2685000.0, 2687000.0, 2689000.0, 2691000.0, 2693000.0,
5155 : 2695000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0,
5156 : 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0, 2739000.0,
5157 : 2741000.0, 2743000.0, 2747000.0, 2751000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0, 2778000.0, 2782000.0,
5158 : 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2816000.0, 2820000.0, 2824000.0, 2828000.0,
5159 : 2832000.0, 2836000.0, 2840000.0, 2849000.0, 2859000.0, 2869000.0, 2879000.0, 2888000.0, 2898000.0, 2908000.0, 2918000.0, 2928000.0,
5160 : 2937000.0, 2957000.0, 2977000.0, 2997000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3137000.0, 3157000.0,
5161 : 3177000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3489000.0},
5162 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5163 : 0.0, 0.0, 0.0, 0.0, 2630000.0, 2633000.0, 2637000.0, 2641000.0, 2645000.0, 2649000.0, 2653000.0, 2657000.0,
5164 : 2661000.0, 2665000.0, 2669000.0, 2673000.0, 2677000.0, 2681000.0, 2683000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0,
5165 : 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0,
5166 : 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0, 2739000.0,
5167 : 2741000.0, 2743000.0, 2747000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0, 2777000.0, 2781000.0,
5168 : 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0, 2828000.0,
5169 : 2832000.0, 2836000.0, 2840000.0, 2849000.0, 2859000.0, 2869000.0, 2879000.0, 2888000.0, 2898000.0, 2908000.0, 2918000.0, 2927000.0,
5170 : 2937000.0, 2957000.0, 2977000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3137000.0, 3157000.0,
5171 : 3177000.0, 3197000.0, 3218000.0, 3280000.0, 3384000.0, 3489000.0},
5172 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5173 : 0.0, 0.0, 0.0, 0.0, 0.0, 2633000.0, 2637000.0, 2641000.0, 2645000.0, 2649000.0, 2653000.0, 2657000.0,
5174 : 2661000.0, 2665000.0, 2668000.0, 2672000.0, 2676000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0,
5175 : 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0,
5176 : 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0, 2738000.0,
5177 : 2740000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2773000.0, 2777000.0, 2781000.0,
5178 : 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0, 2828000.0,
5179 : 2832000.0, 2835000.0, 2839000.0, 2849000.0, 2859000.0, 2869000.0, 2878000.0, 2888000.0, 2898000.0, 2908000.0, 2918000.0, 2927000.0,
5180 : 2937000.0, 2957000.0, 2977000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3157000.0,
5181 : 3177000.0, 3197000.0, 3218000.0, 3280000.0, 3384000.0, 3489000.0},
5182 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5183 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2636000.0, 2640000.0, 2644000.0, 2648000.0, 2652000.0, 2656000.0,
5184 : 2660000.0, 2664000.0, 2668000.0, 2672000.0, 2676000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2691000.0,
5185 : 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0,
5186 : 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0,
5187 : 2740000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2765000.0, 2769000.0, 2773000.0, 2777000.0, 2781000.0,
5188 : 2785000.0, 2789000.0, 2793000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0, 2828000.0,
5189 : 2831000.0, 2835000.0, 2839000.0, 2849000.0, 2859000.0, 2868000.0, 2878000.0, 2888000.0, 2898000.0, 2908000.0, 2917000.0, 2927000.0,
5190 : 2937000.0, 2957000.0, 2976000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3157000.0,
5191 : 3177000.0, 3197000.0, 3218000.0, 3280000.0, 3384000.0, 3489000.0},
5192 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5193 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2640000.0, 2644000.0, 2648000.0, 2652000.0, 2656000.0,
5194 : 2660000.0, 2664000.0, 2667000.0, 2671000.0, 2675000.0, 2679000.0, 2681000.0, 2683000.0, 2685000.0, 2687000.0, 2689000.0, 2691000.0,
5195 : 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0,
5196 : 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0,
5197 : 2740000.0, 2742000.0, 2746000.0, 2750000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0, 2777000.0, 2781000.0,
5198 : 2785000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2823000.0, 2827000.0,
5199 : 2831000.0, 2835000.0, 2839000.0, 2849000.0, 2859000.0, 2868000.0, 2878000.0, 2888000.0, 2898000.0, 2907000.0, 2917000.0, 2927000.0,
5200 : 2937000.0, 2957000.0, 2976000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3157000.0,
5201 : 3177000.0, 3197000.0, 3218000.0, 3280000.0, 3384000.0, 3489000.0},
5202 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5203 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2643000.0, 2647000.0, 2651000.0, 2655000.0,
5204 : 2659000.0, 2663000.0, 2667000.0, 2671000.0, 2675000.0, 2679000.0, 2681000.0, 2683000.0, 2685000.0, 2687000.0, 2689000.0, 2691000.0,
5205 : 2693000.0, 2695000.0, 2697000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0,
5206 : 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0,
5207 : 2740000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0, 2777000.0, 2780000.0,
5208 : 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2815000.0, 2819000.0, 2823000.0, 2827000.0,
5209 : 2831000.0, 2835000.0, 2839000.0, 2849000.0, 2858000.0, 2868000.0, 2878000.0, 2888000.0, 2897000.0, 2907000.0, 2917000.0, 2927000.0,
5210 : 2937000.0, 2956000.0, 2976000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3157000.0,
5211 : 3177000.0, 3197000.0, 3218000.0, 3280000.0, 3384000.0, 3489000.0},
5212 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5213 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2646000.0, 2650000.0, 2654000.0,
5214 : 2658000.0, 2662000.0, 2666000.0, 2670000.0, 2674000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0,
5215 : 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0,
5216 : 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0,
5217 : 2739000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0,
5218 : 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2823000.0, 2827000.0,
5219 : 2831000.0, 2835000.0, 2839000.0, 2848000.0, 2858000.0, 2868000.0, 2878000.0, 2887000.0, 2897000.0, 2907000.0, 2917000.0, 2927000.0,
5220 : 2937000.0, 2956000.0, 2976000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3156000.0,
5221 : 3177000.0, 3197000.0, 3218000.0, 3280000.0, 3383000.0, 3489000.0},
5222 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5223 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2650000.0, 2654000.0,
5224 : 2658000.0, 2662000.0, 2666000.0, 2670000.0, 2674000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0,
5225 : 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0,
5226 : 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0,
5227 : 2739000.0, 2741000.0, 2745000.0, 2749000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0,
5228 : 2784000.0, 2788000.0, 2792000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2823000.0, 2827000.0,
5229 : 2831000.0, 2834000.0, 2838000.0, 2848000.0, 2858000.0, 2868000.0, 2878000.0, 2887000.0, 2897000.0, 2907000.0, 2917000.0, 2927000.0,
5230 : 2936000.0, 2956000.0, 2976000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3156000.0,
5231 : 3177000.0, 3197000.0, 3218000.0, 3280000.0, 3383000.0, 3489000.0},
5232 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5233 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2653000.0,
5234 : 2657000.0, 2661000.0, 2665000.0, 2669000.0, 2673000.0, 2677000.0, 2679000.0, 2681000.0, 2683000.0, 2685000.0, 2687000.0, 2689000.0,
5235 : 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0,
5236 : 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2732000.0, 2734000.0, 2736000.0,
5237 : 2738000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2779000.0,
5238 : 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2822000.0, 2826000.0,
5239 : 2830000.0, 2834000.0, 2838000.0, 2848000.0, 2858000.0, 2867000.0, 2877000.0, 2887000.0, 2897000.0, 2907000.0, 2917000.0, 2926000.0,
5240 : 2936000.0, 2956000.0, 2976000.0, 2996000.0, 3016000.0, 3035000.0, 3055000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3156000.0,
5241 : 3177000.0, 3197000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
5242 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5243 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5244 : 2656000.0, 2660000.0, 2664000.0, 2668000.0, 2672000.0, 2676000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0,
5245 : 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0,
5246 : 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0,
5247 : 2738000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0, 2779000.0,
5248 : 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0,
5249 : 2830000.0, 2834000.0, 2838000.0, 2848000.0, 2857000.0, 2867000.0, 2877000.0, 2887000.0, 2897000.0, 2907000.0, 2916000.0, 2926000.0,
5250 : 2936000.0, 2956000.0, 2976000.0, 2996000.0, 3015000.0, 3035000.0, 3055000.0, 3075000.0, 3095000.0, 3116000.0, 3136000.0, 3156000.0,
5251 : 3176000.0, 3197000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
5252 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5253 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5254 : 0.0, 2660000.0, 2664000.0, 2668000.0, 2672000.0, 2676000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0,
5255 : 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0,
5256 : 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2735000.0,
5257 : 2737000.0, 2739000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0, 2779000.0,
5258 : 2783000.0, 2787000.0, 2791000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0,
5259 : 2830000.0, 2834000.0, 2838000.0, 2847000.0, 2857000.0, 2867000.0, 2877000.0, 2887000.0, 2896000.0, 2906000.0, 2916000.0, 2926000.0,
5260 : 2936000.0, 2956000.0, 2975000.0, 2995000.0, 3015000.0, 3035000.0, 3055000.0, 3075000.0, 3095000.0, 3116000.0, 3136000.0, 3156000.0,
5261 : 3176000.0, 3197000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
5262 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5263 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5264 : 0.0, 0.0, 2663000.0, 2667000.0, 2671000.0, 2675000.0, 2677000.0, 2679000.0, 2681000.0, 2683000.0, 2685000.0, 2687000.0,
5265 : 2689000.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0,
5266 : 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0,
5267 : 2737000.0, 2739000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0, 2774000.0, 2778000.0,
5268 : 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0,
5269 : 2829000.0, 2833000.0, 2837000.0, 2847000.0, 2857000.0, 2867000.0, 2877000.0, 2886000.0, 2896000.0, 2906000.0, 2916000.0, 2926000.0,
5270 : 2936000.0, 2955000.0, 2975000.0, 2995000.0, 3015000.0, 3035000.0, 3055000.0, 3075000.0, 3095000.0, 3115000.0, 3136000.0, 3156000.0,
5271 : 3176000.0, 3197000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
5272 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5273 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5274 : 0.0, 0.0, 0.0, 2666000.0, 2670000.0, 2674000.0, 2676000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0,
5275 : 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0,
5276 : 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0,
5277 : 2736000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0, 2778000.0,
5278 : 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0, 2825000.0,
5279 : 2829000.0, 2833000.0, 2837000.0, 2847000.0, 2857000.0, 2866000.0, 2876000.0, 2886000.0, 2896000.0, 2906000.0, 2916000.0, 2926000.0,
5280 : 2935000.0, 2955000.0, 2975000.0, 2995000.0, 3015000.0, 3035000.0, 3055000.0, 3075000.0, 3095000.0, 3115000.0, 3136000.0, 3156000.0,
5281 : 3176000.0, 3197000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
5282 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5283 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5284 : 0.0, 0.0, 0.0, 0.0, 2669000.0, 2673000.0, 2675000.0, 2677000.0, 2679000.0, 2682000.0, 2684000.0, 2686000.0,
5285 : 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0,
5286 : 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0,
5287 : 2736000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0, 2777000.0,
5288 : 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0, 2825000.0,
5289 : 2829000.0, 2833000.0, 2837000.0, 2846000.0, 2856000.0, 2866000.0, 2876000.0, 2886000.0, 2896000.0, 2906000.0, 2915000.0, 2925000.0,
5290 : 2935000.0, 2955000.0, 2975000.0, 2995000.0, 3015000.0, 3035000.0, 3055000.0, 3075000.0, 3095000.0, 3115000.0, 3135000.0, 3156000.0,
5291 : 3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
5292 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5293 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5294 : 0.0, 0.0, 0.0, 0.0, 0.0, 2672000.0, 2674000.0, 2677000.0, 2679000.0, 2681000.0, 2683000.0, 2685000.0,
5295 : 2687000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0,
5296 : 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0,
5297 : 2735000.0, 2737000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0, 2777000.0,
5298 : 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2820000.0, 2824000.0,
5299 : 2828000.0, 2832000.0, 2836000.0, 2846000.0, 2856000.0, 2866000.0, 2876000.0, 2886000.0, 2895000.0, 2905000.0, 2915000.0, 2925000.0,
5300 : 2935000.0, 2955000.0, 2975000.0, 2995000.0, 3015000.0, 3035000.0, 3055000.0, 3075000.0, 3095000.0, 3115000.0, 3135000.0, 3156000.0,
5301 : 3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
5302 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5303 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5304 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2674000.0, 2676000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0,
5305 : 2686000.0, 2688000.0, 2690000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0,
5306 : 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0,
5307 : 2735000.0, 2737000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0, 2777000.0,
5308 : 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0,
5309 : 2828000.0, 2832000.0, 2836000.0, 2846000.0, 2856000.0, 2866000.0, 2876000.0, 2885000.0, 2895000.0, 2905000.0, 2915000.0, 2925000.0,
5310 : 2935000.0, 2955000.0, 2975000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3075000.0, 3095000.0, 3115000.0, 3135000.0, 3156000.0,
5311 : 3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
5312 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5313 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5314 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2676000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0,
5315 : 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0,
5316 : 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0,
5317 : 2735000.0, 2737000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0, 2776000.0,
5318 : 2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0,
5319 : 2828000.0, 2832000.0, 2836000.0, 2846000.0, 2856000.0, 2866000.0, 2875000.0, 2885000.0, 2895000.0, 2905000.0, 2915000.0, 2925000.0,
5320 : 2935000.0, 2955000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3095000.0, 3115000.0, 3135000.0, 3155000.0,
5321 : 3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
5322 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5323 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5324 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2677000.0, 2679000.0, 2681000.0, 2683000.0,
5325 : 2685000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0,
5326 : 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0,
5327 : 2734000.0, 2736000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0,
5328 : 2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0,
5329 : 2828000.0, 2832000.0, 2836000.0, 2846000.0, 2855000.0, 2865000.0, 2875000.0, 2885000.0, 2895000.0, 2905000.0, 2915000.0, 2925000.0,
5330 : 2935000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3095000.0, 3115000.0, 3135000.0, 3155000.0,
5331 : 3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
5332 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5333 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5334 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2679000.0, 2681000.0, 2683000.0,
5335 : 2685000.0, 2687000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2706000.0, 2708000.0,
5336 : 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0,
5337 : 2734000.0, 2736000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0,
5338 : 2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0,
5339 : 2828000.0, 2832000.0, 2835000.0, 2845000.0, 2855000.0, 2865000.0, 2875000.0, 2885000.0, 2895000.0, 2905000.0, 2915000.0, 2925000.0,
5340 : 2934000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3094000.0, 3115000.0, 3135000.0, 3155000.0,
5341 : 3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
5342 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5343 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5344 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2680000.0, 2682000.0,
5345 : 2684000.0, 2687000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0,
5346 : 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2730000.0, 2732000.0,
5347 : 2734000.0, 2736000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0,
5348 : 2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2823000.0,
5349 : 2827000.0, 2831000.0, 2835000.0, 2845000.0, 2855000.0, 2865000.0, 2875000.0, 2885000.0, 2895000.0, 2905000.0, 2914000.0, 2924000.0,
5350 : 2934000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3094000.0, 3115000.0, 3135000.0, 3155000.0,
5351 : 3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
5352 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5353 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5354 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2682000.0,
5355 : 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0,
5356 : 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0,
5357 : 2733000.0, 2735000.0, 2739000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0,
5358 : 2779000.0, 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2823000.0,
5359 : 2827000.0, 2831000.0, 2835000.0, 2845000.0, 2855000.0, 2865000.0, 2875000.0, 2885000.0, 2894000.0, 2904000.0, 2914000.0, 2924000.0,
5360 : 2934000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3094000.0, 3115000.0, 3135000.0, 3155000.0,
5361 : 3176000.0, 3196000.0, 3216000.0, 3280000.0, 3383000.0, 3489000.0},
5362 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5363 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5364 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5365 : 2683000.0, 2685000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0,
5366 : 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0,
5367 : 2733000.0, 2735000.0, 2739000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0,
5368 : 2779000.0, 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2823000.0,
5369 : 2827000.0, 2831000.0, 2835000.0, 2845000.0, 2855000.0, 2865000.0, 2874000.0, 2884000.0, 2894000.0, 2904000.0, 2914000.0, 2924000.0,
5370 : 2934000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3094000.0, 3114000.0, 3135000.0, 3155000.0,
5371 : 3175000.0, 3196000.0, 3216000.0, 3280000.0, 3383000.0, 3489000.0},
5372 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5373 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5374 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5375 : 0.0, 2685000.0, 2687000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0,
5376 : 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0,
5377 : 2732000.0, 2734000.0, 2738000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0,
5378 : 2779000.0, 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2823000.0,
5379 : 2827000.0, 2831000.0, 2835000.0, 2844000.0, 2854000.0, 2864000.0, 2874000.0, 2884000.0, 2894000.0, 2904000.0, 2914000.0, 2924000.0,
5380 : 2934000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3094000.0, 3114000.0, 3135000.0, 3155000.0,
5381 : 3175000.0, 3196000.0, 3216000.0, 3280000.0, 3383000.0, 3488000.0},
5382 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5383 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5384 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5385 : 0.0, 0.0, 2686000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0,
5386 : 2707000.0, 2709000.0, 2711000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0,
5387 : 2732000.0, 2734000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0,
5388 : 2778000.0, 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0,
5389 : 2826000.0, 2830000.0, 2834000.0, 2844000.0, 2854000.0, 2864000.0, 2874000.0, 2884000.0, 2894000.0, 2904000.0, 2914000.0, 2924000.0,
5390 : 2934000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3094000.0, 3114000.0, 3135000.0, 3155000.0,
5391 : 3175000.0, 3196000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
5392 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5393 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5394 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5395 : 0.0, 0.0, 0.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0,
5396 : 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2730000.0,
5397 : 2732000.0, 2734000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0,
5398 : 2778000.0, 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0,
5399 : 2826000.0, 2830000.0, 2834000.0, 2844000.0, 2854000.0, 2864000.0, 2874000.0, 2884000.0, 2894000.0, 2904000.0, 2914000.0, 2924000.0,
5400 : 2934000.0, 2953000.0, 2973000.0, 2993000.0, 3013000.0, 3033000.0, 3054000.0, 3074000.0, 3094000.0, 3114000.0, 3134000.0, 3155000.0,
5401 : 3175000.0, 3196000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
5402 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5403 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5404 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5405 : 0.0, 0.0, 0.0, 0.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0,
5406 : 2706000.0, 2708000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0,
5407 : 2731000.0, 2733000.0, 2737000.0, 2741000.0, 2745000.0, 2749000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0,
5408 : 2778000.0, 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0,
5409 : 2826000.0, 2830000.0, 2834000.0, 2844000.0, 2854000.0, 2864000.0, 2874000.0, 2884000.0, 2894000.0, 2903000.0, 2913000.0, 2923000.0,
5410 : 2933000.0, 2953000.0, 2973000.0, 2993000.0, 3013000.0, 3033000.0, 3053000.0, 3074000.0, 3094000.0, 3114000.0, 3134000.0, 3155000.0,
5411 : 3175000.0, 3196000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
5412 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5413 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5414 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5415 : 0.0, 0.0, 0.0, 0.0, 0.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2700000.0, 2702000.0, 2704000.0,
5416 : 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2727000.0, 2729000.0,
5417 : 2731000.0, 2733000.0, 2737000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0,
5418 : 2777000.0, 2781000.0, 2785000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0,
5419 : 2826000.0, 2830000.0, 2834000.0, 2844000.0, 2853000.0, 2863000.0, 2873000.0, 2883000.0, 2893000.0, 2903000.0, 2913000.0, 2923000.0,
5420 : 2933000.0, 2953000.0, 2973000.0, 2993000.0, 3013000.0, 3033000.0, 3053000.0, 3073000.0, 3094000.0, 3114000.0, 3134000.0, 3155000.0,
5421 : 3175000.0, 3195000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
5422 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5423 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5424 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5425 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0,
5426 : 2705000.0, 2707000.0, 2709000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0,
5427 : 2730000.0, 2732000.0, 2736000.0, 2740000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0,
5428 : 2777000.0, 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0,
5429 : 2825000.0, 2829000.0, 2833000.0, 2843000.0, 2853000.0, 2863000.0, 2873000.0, 2883000.0, 2893000.0, 2903000.0, 2913000.0, 2923000.0,
5430 : 2933000.0, 2953000.0, 2973000.0, 2993000.0, 3013000.0, 3033000.0, 3053000.0, 3073000.0, 3094000.0, 3114000.0, 3134000.0, 3154000.0,
5431 : 3175000.0, 3195000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
5432 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5433 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5434 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5435 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2703000.0,
5436 : 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2724000.0, 2726000.0, 2728000.0,
5437 : 2730000.0, 2732000.0, 2736000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2765000.0, 2769000.0, 2773000.0,
5438 : 2777000.0, 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0,
5439 : 2825000.0, 2829000.0, 2833000.0, 2843000.0, 2853000.0, 2863000.0, 2873000.0, 2883000.0, 2893000.0, 2903000.0, 2913000.0, 2923000.0,
5440 : 2933000.0, 2953000.0, 2973000.0, 2993000.0, 3013000.0, 3033000.0, 3053000.0, 3073000.0, 3093000.0, 3114000.0, 3134000.0, 3154000.0,
5441 : 3175000.0, 3195000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
5442 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5443 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5444 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5445 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0,
5446 : 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0,
5447 : 2729000.0, 2731000.0, 2735000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0,
5448 : 2776000.0, 2780000.0, 2784000.0, 2788000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0,
5449 : 2825000.0, 2829000.0, 2833000.0, 2843000.0, 2853000.0, 2863000.0, 2873000.0, 2883000.0, 2893000.0, 2903000.0, 2913000.0, 2923000.0,
5450 : 2933000.0, 2953000.0, 2973000.0, 2993000.0, 3013000.0, 3033000.0, 3053000.0, 3073000.0, 3093000.0, 3114000.0, 3134000.0, 3154000.0,
5451 : 3175000.0, 3195000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
5452 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5453 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5454 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5455 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2697000.0, 2699000.0, 2701000.0,
5456 : 2703000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2725000.0, 2727000.0,
5457 : 2729000.0, 2731000.0, 2735000.0, 2739000.0, 2743000.0, 2747000.0, 2751000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0,
5458 : 2776000.0, 2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0,
5459 : 2824000.0, 2828000.0, 2832000.0, 2842000.0, 2852000.0, 2862000.0, 2872000.0, 2882000.0, 2892000.0, 2902000.0, 2912000.0, 2922000.0,
5460 : 2932000.0, 2952000.0, 2972000.0, 2992000.0, 3013000.0, 3033000.0, 3053000.0, 3073000.0, 3093000.0, 3113000.0, 3134000.0, 3154000.0,
5461 : 3175000.0, 3195000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
5462 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5463 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5464 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5465 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2699000.0, 2701000.0,
5466 : 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0,
5467 : 2728000.0, 2730000.0, 2734000.0, 2739000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0,
5468 : 2776000.0, 2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0,
5469 : 2824000.0, 2828000.0, 2832000.0, 2842000.0, 2852000.0, 2862000.0, 2872000.0, 2882000.0, 2892000.0, 2902000.0, 2912000.0, 2922000.0,
5470 : 2932000.0, 2952000.0, 2972000.0, 2992000.0, 3012000.0, 3032000.0, 3053000.0, 3073000.0, 3093000.0, 3113000.0, 3134000.0, 3154000.0,
5471 : 3174000.0, 3195000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
5472 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5473 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5474 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5475 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2700000.0,
5476 : 2702000.0, 2704000.0, 2706000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2726000.0,
5477 : 2728000.0, 2730000.0, 2734000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0,
5478 : 2775000.0, 2779000.0, 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0,
5479 : 2824000.0, 2828000.0, 2832000.0, 2842000.0, 2852000.0, 2862000.0, 2872000.0, 2882000.0, 2892000.0, 2902000.0, 2912000.0, 2922000.0,
5480 : 2932000.0, 2952000.0, 2972000.0, 2992000.0, 3012000.0, 3032000.0, 3052000.0, 3073000.0, 3093000.0, 3113000.0, 3134000.0, 3154000.0,
5481 : 3174000.0, 3195000.0, 3215000.0, 3280000.0, 3382000.0, 3488000.0},
5482 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5483 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5484 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5485 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5486 : 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0,
5487 : 2727000.0, 2729000.0, 2733000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2771000.0,
5488 : 2775000.0, 2779000.0, 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0,
5489 : 2823000.0, 2827000.0, 2831000.0, 2842000.0, 2852000.0, 2862000.0, 2872000.0, 2882000.0, 2892000.0, 2902000.0, 2912000.0, 2922000.0,
5490 : 2932000.0, 2952000.0, 2972000.0, 2992000.0, 3012000.0, 3032000.0, 3052000.0, 3073000.0, 3093000.0, 3113000.0, 3133000.0, 3154000.0,
5491 : 3174000.0, 3195000.0, 3215000.0, 3280000.0, 3382000.0, 3488000.0},
5492 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5493 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5494 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5495 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5496 : 0.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0,
5497 : 2726000.0, 2729000.0, 2733000.0, 2737000.0, 2741000.0, 2745000.0, 2749000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0,
5498 : 2774000.0, 2778000.0, 2782000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0,
5499 : 2823000.0, 2827000.0, 2831000.0, 2841000.0, 2851000.0, 2861000.0, 2871000.0, 2881000.0, 2891000.0, 2901000.0, 2911000.0, 2922000.0,
5500 : 2932000.0, 2952000.0, 2972000.0, 2992000.0, 3012000.0, 3032000.0, 3052000.0, 3072000.0, 3093000.0, 3113000.0, 3133000.0, 3154000.0,
5501 : 3174000.0, 3195000.0, 3215000.0, 3280000.0, 3382000.0, 3488000.0},
5502 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5503 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5504 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5505 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5506 : 0.0, 0.0, 2704000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2720000.0, 2722000.0, 2724000.0,
5507 : 2726000.0, 2728000.0, 2732000.0, 2736000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2766000.0, 2770000.0,
5508 : 2774000.0, 2778000.0, 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2811000.0, 2815000.0, 2819000.0,
5509 : 2823000.0, 2827000.0, 2831000.0, 2841000.0, 2851000.0, 2861000.0, 2871000.0, 2881000.0, 2891000.0, 2901000.0, 2911000.0, 2921000.0,
5510 : 2931000.0, 2951000.0, 2971000.0, 2992000.0, 3012000.0, 3032000.0, 3052000.0, 3072000.0, 3093000.0, 3113000.0, 3133000.0, 3154000.0,
5511 : 3174000.0, 3195000.0, 3215000.0, 3280000.0, 3382000.0, 3488000.0},
5512 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5513 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5514 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5515 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5516 : 0.0, 0.0, 0.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0,
5517 : 2725000.0, 2727000.0, 2732000.0, 2736000.0, 2740000.0, 2744000.0, 2748000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0,
5518 : 2773000.0, 2777000.0, 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0,
5519 : 2822000.0, 2826000.0, 2830000.0, 2841000.0, 2851000.0, 2861000.0, 2871000.0, 2881000.0, 2891000.0, 2901000.0, 2911000.0, 2921000.0,
5520 : 2931000.0, 2951000.0, 2971000.0, 2991000.0, 3012000.0, 3032000.0, 3052000.0, 3072000.0, 3092000.0, 3113000.0, 3133000.0, 3153000.0,
5521 : 3174000.0, 3194000.0, 3215000.0, 3280000.0, 3382000.0, 3488000.0},
5522 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5523 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5524 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5525 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5526 : 0.0, 0.0, 0.0, 0.0, 2707000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0,
5527 : 2725000.0, 2727000.0, 2731000.0, 2735000.0, 2739000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2765000.0, 2769000.0,
5528 : 2773000.0, 2777000.0, 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0,
5529 : 2822000.0, 2826000.0, 2830000.0, 2840000.0, 2850000.0, 2860000.0, 2870000.0, 2881000.0, 2891000.0, 2901000.0, 2911000.0, 2921000.0,
5530 : 2931000.0, 2951000.0, 2971000.0, 2991000.0, 3011000.0, 3031000.0, 3052000.0, 3072000.0, 3092000.0, 3113000.0, 3133000.0, 3153000.0,
5531 : 3174000.0, 3194000.0, 3215000.0, 3280000.0, 3382000.0, 3488000.0},
5532 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5533 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5534 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5535 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5536 : 0.0, 0.0, 0.0, 0.0, 0.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2718000.0, 2720000.0, 2722000.0,
5537 : 2724000.0, 2726000.0, 2730000.0, 2735000.0, 2739000.0, 2743000.0, 2747000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0,
5538 : 2772000.0, 2776000.0, 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2818000.0,
5539 : 2822000.0, 2826000.0, 2830000.0, 2840000.0, 2850000.0, 2860000.0, 2870000.0, 2880000.0, 2890000.0, 2900000.0, 2910000.0, 2921000.0,
5540 : 2931000.0, 2951000.0, 2971000.0, 2991000.0, 3011000.0, 3031000.0, 3052000.0, 3072000.0, 3092000.0, 3112000.0, 3133000.0, 3153000.0,
5541 : 3174000.0, 3194000.0, 3215000.0, 3280000.0, 3381000.0, 3488000.0},
5542 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5543 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5544 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5545 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5546 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2710000.0, 2712000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0,
5547 : 2723000.0, 2725000.0, 2730000.0, 2734000.0, 2738000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2764000.0, 2768000.0,
5548 : 2772000.0, 2776000.0, 2780000.0, 2784000.0, 2788000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0,
5549 : 2821000.0, 2825000.0, 2829000.0, 2839000.0, 2850000.0, 2860000.0, 2870000.0, 2880000.0, 2890000.0, 2900000.0, 2910000.0, 2920000.0,
5550 : 2930000.0, 2950000.0, 2971000.0, 2991000.0, 3011000.0, 3031000.0, 3051000.0, 3072000.0, 3092000.0, 3112000.0, 3133000.0, 3153000.0,
5551 : 3174000.0, 3194000.0, 3215000.0, 3280000.0, 3381000.0, 3487000.0},
5552 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5553 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5554 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5555 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5556 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0,
5557 : 2723000.0, 2725000.0, 2729000.0, 2733000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0,
5558 : 2771000.0, 2775000.0, 2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2813000.0, 2817000.0,
5559 : 2821000.0, 2825000.0, 2829000.0, 2839000.0, 2849000.0, 2859000.0, 2870000.0, 2880000.0, 2890000.0, 2900000.0, 2910000.0, 2920000.0,
5560 : 2930000.0, 2950000.0, 2970000.0, 2991000.0, 3011000.0, 3031000.0, 3051000.0, 3071000.0, 3092000.0, 3112000.0, 3132000.0, 3153000.0,
5561 : 3173000.0, 3194000.0, 3215000.0, 3280000.0, 3381000.0, 3487000.0},
5562 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5563 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5564 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5565 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5566 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2713000.0, 2715000.0, 2717000.0, 2720000.0,
5567 : 2722000.0, 2724000.0, 2728000.0, 2733000.0, 2737000.0, 2741000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2767000.0,
5568 : 2771000.0, 2775000.0, 2779000.0, 2783000.0, 2787000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0,
5569 : 2820000.0, 2824000.0, 2829000.0, 2839000.0, 2849000.0, 2859000.0, 2869000.0, 2879000.0, 2889000.0, 2900000.0, 2910000.0, 2920000.0,
5570 : 2930000.0, 2950000.0, 2970000.0, 2990000.0, 3011000.0, 3031000.0, 3051000.0, 3071000.0, 3092000.0, 3112000.0, 3132000.0, 3153000.0,
5571 : 3173000.0, 3194000.0, 3214000.0, 3280000.0, 3381000.0, 3487000.0},
5572 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5573 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5574 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5575 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5576 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2715000.0, 2717000.0, 2719000.0,
5577 : 2721000.0, 2723000.0, 2728000.0, 2732000.0, 2736000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2758000.0, 2762000.0, 2766000.0,
5578 : 2770000.0, 2774000.0, 2779000.0, 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2808000.0, 2812000.0, 2816000.0,
5579 : 2820000.0, 2824000.0, 2828000.0, 2838000.0, 2849000.0, 2859000.0, 2869000.0, 2879000.0, 2889000.0, 2899000.0, 2909000.0, 2919000.0,
5580 : 2930000.0, 2950000.0, 2970000.0, 2990000.0, 3010000.0, 3031000.0, 3051000.0, 3071000.0, 3091000.0, 3112000.0, 3132000.0, 3153000.0,
5581 : 3173000.0, 3194000.0, 3214000.0, 3280000.0, 3381000.0, 3487000.0},
5582 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5583 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5584 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5585 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5586 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2716000.0, 2718000.0,
5587 : 2720000.0, 2723000.0, 2727000.0, 2731000.0, 2736000.0, 2740000.0, 2744000.0, 2748000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0,
5588 : 2770000.0, 2774000.0, 2778000.0, 2782000.0, 2786000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0,
5589 : 2819000.0, 2824000.0, 2828000.0, 2838000.0, 2848000.0, 2858000.0, 2868000.0, 2879000.0, 2889000.0, 2899000.0, 2909000.0, 2919000.0,
5590 : 2929000.0, 2949000.0, 2970000.0, 2990000.0, 3010000.0, 3030000.0, 3051000.0, 3071000.0, 3091000.0, 3112000.0, 3132000.0, 3152000.0,
5591 : 3173000.0, 3194000.0, 3214000.0, 3280000.0, 3381000.0, 3487000.0},
5592 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5593 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5594 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5595 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5596 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2717000.0,
5597 : 2720000.0, 2722000.0, 2726000.0, 2731000.0, 2735000.0, 2739000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2761000.0, 2765000.0,
5598 : 2769000.0, 2773000.0, 2777000.0, 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2807000.0, 2811000.0, 2815000.0,
5599 : 2819000.0, 2823000.0, 2827000.0, 2837000.0, 2848000.0, 2858000.0, 2868000.0, 2878000.0, 2888000.0, 2899000.0, 2909000.0, 2919000.0,
5600 : 2929000.0, 2949000.0, 2969000.0, 2990000.0, 3010000.0, 3030000.0, 3050000.0, 3071000.0, 3091000.0, 3111000.0, 3132000.0, 3152000.0,
5601 : 3173000.0, 3193000.0, 3214000.0, 3280000.0, 3381000.0, 3487000.0},
5602 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5603 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5604 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5605 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5606 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5607 : 2719000.0, 2721000.0, 2725000.0, 2730000.0, 2734000.0, 2738000.0, 2743000.0, 2747000.0, 2751000.0, 2756000.0, 2760000.0, 2764000.0,
5608 : 2768000.0, 2773000.0, 2777000.0, 2781000.0, 2785000.0, 2789000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0,
5609 : 2819000.0, 2823000.0, 2827000.0, 2837000.0, 2847000.0, 2858000.0, 2868000.0, 2878000.0, 2888000.0, 2898000.0, 2908000.0, 2919000.0,
5610 : 2929000.0, 2949000.0, 2969000.0, 2989000.0, 3010000.0, 3030000.0, 3050000.0, 3071000.0, 3091000.0, 3111000.0, 3132000.0, 3152000.0,
5611 : 3173000.0, 3193000.0, 3214000.0, 3280000.0, 3381000.0, 3487000.0},
5612 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5613 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5614 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5615 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5616 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5617 : 0.0, 2720000.0, 2725000.0, 2729000.0, 2733000.0, 2738000.0, 2742000.0, 2746000.0, 2751000.0, 2755000.0, 2759000.0, 2764000.0,
5618 : 2768000.0, 2772000.0, 2776000.0, 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2806000.0, 2810000.0, 2814000.0,
5619 : 2818000.0, 2822000.0, 2826000.0, 2837000.0, 2847000.0, 2857000.0, 2867000.0, 2878000.0, 2888000.0, 2898000.0, 2908000.0, 2918000.0,
5620 : 2928000.0, 2949000.0, 2969000.0, 2989000.0, 3009000.0, 3030000.0, 3050000.0, 3070000.0, 3091000.0, 3111000.0, 3132000.0, 3152000.0,
5621 : 3173000.0, 3193000.0, 3214000.0, 3280000.0, 3381000.0, 3487000.0},
5622 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5623 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5624 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5625 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5626 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5627 : 0.0, 0.0, 2723000.0, 2727000.0, 2732000.0, 2736000.0, 2741000.0, 2745000.0, 2749000.0, 2754000.0, 2758000.0, 2762000.0,
5628 : 2767000.0, 2771000.0, 2775000.0, 2779000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2805000.0, 2809000.0, 2813000.0,
5629 : 2817000.0, 2821000.0, 2825000.0, 2836000.0, 2846000.0, 2856000.0, 2867000.0, 2877000.0, 2887000.0, 2897000.0, 2907000.0, 2918000.0,
5630 : 2928000.0, 2948000.0, 2968000.0, 2989000.0, 3009000.0, 3029000.0, 3050000.0, 3070000.0, 3090000.0, 3111000.0, 3131000.0, 3152000.0,
5631 : 3172000.0, 3193000.0, 3213000.0, 3280000.0, 3380000.0, 3487000.0},
5632 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5633 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5634 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5635 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5636 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5637 : 0.0, 0.0, 0.0, 2726000.0, 2730000.0, 2735000.0, 2739000.0, 2743000.0, 2748000.0, 2752000.0, 2757000.0, 2761000.0,
5638 : 2765000.0, 2769000.0, 2774000.0, 2778000.0, 2782000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2808000.0, 2812000.0,
5639 : 2816000.0, 2820000.0, 2824000.0, 2835000.0, 2845000.0, 2855000.0, 2866000.0, 2876000.0, 2886000.0, 2896000.0, 2907000.0, 2917000.0,
5640 : 2927000.0, 2947000.0, 2968000.0, 2988000.0, 3008000.0, 3029000.0, 3049000.0, 3069000.0, 3090000.0, 3110000.0, 3131000.0, 3151000.0,
5641 : 3172000.0, 3192000.0, 3213000.0, 3280000.0, 3380000.0, 3487000.0},
5642 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5643 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5644 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5645 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5646 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5647 : 0.0, 0.0, 0.0, 0.0, 2728000.0, 2733000.0, 2737000.0, 2742000.0, 2746000.0, 2751000.0, 2755000.0, 2759000.0,
5648 : 2764000.0, 2768000.0, 2772000.0, 2777000.0, 2781000.0, 2785000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2811000.0,
5649 : 2815000.0, 2819000.0, 2823000.0, 2834000.0, 2844000.0, 2854000.0, 2865000.0, 2875000.0, 2885000.0, 2896000.0, 2906000.0, 2916000.0,
5650 : 2926000.0, 2947000.0, 2967000.0, 2987000.0, 3008000.0, 3028000.0, 3049000.0, 3069000.0, 3089000.0, 3110000.0, 3130000.0, 3151000.0,
5651 : 3172000.0, 3192000.0, 3213000.0, 3280000.0, 3380000.0, 3486000.0},
5652 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5653 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5654 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5655 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5656 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5657 : 0.0, 0.0, 0.0, 0.0, 0.0, 2731000.0, 2735000.0, 2740000.0, 2744000.0, 2749000.0, 2753000.0, 2758000.0,
5658 : 2762000.0, 2767000.0, 2771000.0, 2775000.0, 2780000.0, 2784000.0, 2788000.0, 2792000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0,
5659 : 2814000.0, 2818000.0, 2822000.0, 2833000.0, 2843000.0, 2853000.0, 2864000.0, 2874000.0, 2885000.0, 2895000.0, 2905000.0, 2915000.0,
5660 : 2926000.0, 2946000.0, 2966000.0, 2987000.0, 3007000.0, 3028000.0, 3048000.0, 3069000.0, 3089000.0, 3109000.0, 3130000.0, 3151000.0,
5661 : 3171000.0, 3192000.0, 3212000.0, 3280000.0, 3380000.0, 3486000.0},
5662 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5663 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5664 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5665 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5666 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5667 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2733000.0, 2738000.0, 2743000.0, 2747000.0, 2752000.0, 2756000.0,
5668 : 2761000.0, 2765000.0, 2769000.0, 2774000.0, 2778000.0, 2782000.0, 2787000.0, 2791000.0, 2795000.0, 2800000.0, 2804000.0, 2808000.0,
5669 : 2812000.0, 2817000.0, 2821000.0, 2831000.0, 2842000.0, 2852000.0, 2863000.0, 2873000.0, 2884000.0, 2894000.0, 2904000.0, 2915000.0,
5670 : 2925000.0, 2945000.0, 2966000.0, 2986000.0, 3007000.0, 3027000.0, 3048000.0, 3068000.0, 3089000.0, 3109000.0, 3130000.0, 3150000.0,
5671 : 3171000.0, 3191000.0, 3212000.0, 3280000.0, 3380000.0, 3486000.0},
5672 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5673 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5674 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5675 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5676 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5677 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2736000.0, 2741000.0, 2745000.0, 2750000.0, 2754000.0,
5678 : 2759000.0, 2763000.0, 2768000.0, 2772000.0, 2777000.0, 2781000.0, 2785000.0, 2790000.0, 2794000.0, 2798000.0, 2803000.0, 2807000.0,
5679 : 2811000.0, 2815000.0, 2820000.0, 2830000.0, 2841000.0, 2851000.0, 2862000.0, 2872000.0, 2883000.0, 2893000.0, 2903000.0, 2914000.0,
5680 : 2924000.0, 2945000.0, 2965000.0, 2986000.0, 3006000.0, 3027000.0, 3047000.0, 3068000.0, 3088000.0, 3109000.0, 3129000.0, 3150000.0,
5681 : 3170000.0, 3191000.0, 3212000.0, 3280000.0, 3379000.0, 3486000.0},
5682 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5683 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5684 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5685 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5686 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5687 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2739000.0, 2743000.0, 2748000.0, 2752000.0,
5688 : 2757000.0, 2761000.0, 2766000.0, 2770000.0, 2775000.0, 2779000.0, 2784000.0, 2788000.0, 2792000.0, 2797000.0, 2801000.0, 2805000.0,
5689 : 2810000.0, 2814000.0, 2818000.0, 2829000.0, 2840000.0, 2850000.0, 2861000.0, 2871000.0, 2882000.0, 2892000.0, 2902000.0, 2913000.0,
5690 : 2923000.0, 2944000.0, 2964000.0, 2985000.0, 3005000.0, 3026000.0, 3046000.0, 3067000.0, 3088000.0, 3108000.0, 3129000.0, 3149000.0,
5691 : 3170000.0, 3191000.0, 3211000.0, 3280000.0, 3379000.0, 3485000.0},
5692 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5693 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5694 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5695 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5696 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5697 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2741000.0, 2746000.0, 2750000.0,
5698 : 2755000.0, 2760000.0, 2764000.0, 2769000.0, 2773000.0, 2778000.0, 2782000.0, 2786000.0, 2791000.0, 2795000.0, 2800000.0, 2804000.0,
5699 : 2808000.0, 2813000.0, 2817000.0, 2828000.0, 2838000.0, 2849000.0, 2860000.0, 2870000.0, 2881000.0, 2891000.0, 2901000.0, 2912000.0,
5700 : 2922000.0, 2943000.0, 2964000.0, 2984000.0, 3005000.0, 3025000.0, 3046000.0, 3066000.0, 3087000.0, 3108000.0, 3128000.0, 3149000.0,
5701 : 3170000.0, 3190000.0, 3211000.0, 3280000.0, 3379000.0, 3485000.0},
5702 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5703 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5704 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5705 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5706 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5707 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2744000.0, 2748000.0,
5708 : 2753000.0, 2758000.0, 2762000.0, 2767000.0, 2771000.0, 2776000.0, 2780000.0, 2785000.0, 2789000.0, 2794000.0, 2798000.0, 2802000.0,
5709 : 2807000.0, 2811000.0, 2815000.0, 2826000.0, 2837000.0, 2848000.0, 2858000.0, 2869000.0, 2879000.0, 2890000.0, 2900000.0, 2911000.0,
5710 : 2921000.0, 2942000.0, 2963000.0, 2983000.0, 3004000.0, 3025000.0, 3045000.0, 3066000.0, 3086000.0, 3107000.0, 3128000.0, 3148000.0,
5711 : 3169000.0, 3190000.0, 3211000.0, 3280000.0, 3378000.0, 3485000.0},
5712 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5713 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5714 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5715 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5716 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5717 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2746000.0,
5718 : 2751000.0, 2755000.0, 2760000.0, 2765000.0, 2769000.0, 2774000.0, 2778000.0, 2783000.0, 2787000.0, 2792000.0, 2796000.0, 2801000.0,
5719 : 2805000.0, 2810000.0, 2814000.0, 2825000.0, 2836000.0, 2846000.0, 2857000.0, 2868000.0, 2878000.0, 2889000.0, 2899000.0, 2910000.0,
5720 : 2920000.0, 2941000.0, 2962000.0, 2983000.0, 3003000.0, 3024000.0, 3045000.0, 3065000.0, 3086000.0, 3106000.0, 3127000.0, 3148000.0,
5721 : 3169000.0, 3189000.0, 3210000.0, 3280000.0, 3378000.0, 3485000.0},
5722 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5723 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5724 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5725 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5726 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5727 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5728 : 2748000.0, 2753000.0, 2758000.0, 2763000.0, 2767000.0, 2772000.0, 2776000.0, 2781000.0, 2786000.0, 2790000.0, 2795000.0, 2799000.0,
5729 : 2803000.0, 2808000.0, 2812000.0, 2823000.0, 2834000.0, 2845000.0, 2856000.0, 2866000.0, 2877000.0, 2888000.0, 2898000.0, 2909000.0,
5730 : 2919000.0, 2940000.0, 2961000.0, 2982000.0, 3002000.0, 3023000.0, 3044000.0, 3064000.0, 3085000.0, 3106000.0, 3127000.0, 3147000.0,
5731 : 3168000.0, 3189000.0, 3210000.0, 3280000.0, 3378000.0, 3484000.0},
5732 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5733 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5734 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5735 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5736 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5737 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5738 : 0.0, 2751000.0, 2755000.0, 2760000.0, 2765000.0, 2770000.0, 2774000.0, 2779000.0, 2784000.0, 2788000.0, 2793000.0, 2797000.0,
5739 : 2802000.0, 2806000.0, 2811000.0, 2822000.0, 2833000.0, 2843000.0, 2854000.0, 2865000.0, 2876000.0, 2886000.0, 2897000.0, 2908000.0,
5740 : 2918000.0, 2939000.0, 2960000.0, 2981000.0, 3002000.0, 3022000.0, 3043000.0, 3064000.0, 3085000.0, 3105000.0, 3126000.0, 3147000.0,
5741 : 3168000.0, 3188000.0, 3209000.0, 3280000.0, 3377000.0, 3484000.0},
5742 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5743 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5744 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5745 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5746 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5747 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5748 : 0.0, 0.0, 2753000.0, 2758000.0, 2763000.0, 2767000.0, 2772000.0, 2777000.0, 2781000.0, 2786000.0, 2791000.0, 2795000.0,
5749 : 2800000.0, 2804000.0, 2809000.0, 2820000.0, 2831000.0, 2842000.0, 2853000.0, 2864000.0, 2874000.0, 2885000.0, 2896000.0, 2906000.0,
5750 : 2917000.0, 2938000.0, 2959000.0, 2980000.0, 3001000.0, 3022000.0, 3042000.0, 3063000.0, 3084000.0, 3105000.0, 3125000.0, 3146000.0,
5751 : 3167000.0, 3188000.0, 3209000.0, 3280000.0, 3377000.0, 3484000.0},
5752 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5753 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5754 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5755 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5756 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5757 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5758 : 0.0, 0.0, 0.0, 2755000.0, 2760000.0, 2765000.0, 2770000.0, 2775000.0, 2779000.0, 2784000.0, 2789000.0, 2793000.0,
5759 : 2798000.0, 2802000.0, 2807000.0, 2818000.0, 2829000.0, 2840000.0, 2851000.0, 2862000.0, 2873000.0, 2884000.0, 2894000.0, 2905000.0,
5760 : 2916000.0, 2937000.0, 2958000.0, 2979000.0, 3000000.0, 3021000.0, 3042000.0, 3062000.0, 3083000.0, 3104000.0, 3125000.0, 3146000.0,
5761 : 3166000.0, 3187000.0, 3208000.0, 3280000.0, 3377000.0, 3484000.0},
5762 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5763 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5764 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5765 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5766 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5767 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5768 : 0.0, 0.0, 0.0, 0.0, 2757000.0, 2762000.0, 2767000.0, 2772000.0, 2777000.0, 2782000.0, 2786000.0, 2791000.0,
5769 : 2796000.0, 2800000.0, 2805000.0, 2816000.0, 2827000.0, 2839000.0, 2850000.0, 2861000.0, 2872000.0, 2882000.0, 2893000.0, 2904000.0,
5770 : 2915000.0, 2936000.0, 2957000.0, 2978000.0, 2999000.0, 3020000.0, 3041000.0, 3062000.0, 3082000.0, 3103000.0, 3124000.0, 3145000.0,
5771 : 3166000.0, 3187000.0, 3208000.0, 3280000.0, 3376000.0, 3483000.0},
5772 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5773 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5774 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5775 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5776 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5777 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5778 : 0.0, 0.0, 0.0, 0.0, 0.0, 2760000.0, 2765000.0, 2770000.0, 2774000.0, 2779000.0, 2784000.0, 2789000.0,
5779 : 2793000.0, 2798000.0, 2803000.0, 2814000.0, 2826000.0, 2837000.0, 2848000.0, 2859000.0, 2870000.0, 2881000.0, 2892000.0, 2902000.0,
5780 : 2913000.0, 2935000.0, 2956000.0, 2977000.0, 2998000.0, 3019000.0, 3040000.0, 3061000.0, 3082000.0, 3102000.0, 3123000.0, 3144000.0,
5781 : 3165000.0, 3186000.0, 3207000.0, 3280000.0, 3376000.0, 3483000.0},
5782 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5783 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5784 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5785 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5786 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5787 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5788 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2762000.0, 2767000.0, 2772000.0, 2777000.0, 2781000.0, 2786000.0,
5789 : 2791000.0, 2796000.0, 2800000.0, 2812000.0, 2824000.0, 2835000.0, 2846000.0, 2857000.0, 2868000.0, 2879000.0, 2890000.0, 2901000.0,
5790 : 2912000.0, 2933000.0, 2955000.0, 2976000.0, 2997000.0, 3018000.0, 3039000.0, 3060000.0, 3081000.0, 3102000.0, 3123000.0, 3144000.0,
5791 : 3164000.0, 3185000.0, 3206000.0, 3280000.0, 3375000.0, 3483000.0},
5792 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5793 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5794 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5795 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5796 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5797 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5798 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2764000.0, 2769000.0, 2774000.0, 2779000.0, 2784000.0,
5799 : 2789000.0, 2793000.0, 2798000.0, 2810000.0, 2821000.0, 2833000.0, 2844000.0, 2855000.0, 2867000.0, 2878000.0, 2889000.0, 2900000.0,
5800 : 2910000.0, 2932000.0, 2953000.0, 2975000.0, 2996000.0, 3017000.0, 3038000.0, 3059000.0, 3080000.0, 3101000.0, 3122000.0, 3143000.0,
5801 : 3164000.0, 3185000.0, 3206000.0, 3280000.0, 3375000.0, 3482000.0},
5802 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5803 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5804 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5805 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5806 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5807 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5808 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2766000.0, 2771000.0, 2776000.0, 2781000.0,
5809 : 2786000.0, 2791000.0, 2796000.0, 2808000.0, 2819000.0, 2831000.0, 2842000.0, 2854000.0, 2865000.0, 2876000.0, 2887000.0, 2898000.0,
5810 : 2909000.0, 2931000.0, 2952000.0, 2973000.0, 2995000.0, 3016000.0, 3037000.0, 3058000.0, 3079000.0, 3100000.0, 3121000.0, 3142000.0,
5811 : 3163000.0, 3184000.0, 3205000.0, 3280000.0, 3374000.0, 3482000.0},
5812 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5813 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5814 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5815 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5816 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5817 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5818 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2768000.0, 2773000.0, 2778000.0,
5819 : 2783000.0, 2788000.0, 2793000.0, 2805000.0, 2817000.0, 2829000.0, 2840000.0, 2852000.0, 2863000.0, 2874000.0, 2885000.0, 2896000.0,
5820 : 2907000.0, 2929000.0, 2951000.0, 2972000.0, 2994000.0, 3015000.0, 3036000.0, 3057000.0, 3078000.0, 3099000.0, 3120000.0, 3141000.0,
5821 : 3162000.0, 3183000.0, 3204000.0, 3280000.0, 3374000.0, 3481000.0},
5822 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5823 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5824 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5825 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5826 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5827 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5828 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2770000.0, 2775000.0,
5829 : 2780000.0, 2785000.0, 2790000.0, 2802000.0, 2814000.0, 2826000.0, 2838000.0, 2850000.0, 2861000.0, 2872000.0, 2883000.0, 2895000.0,
5830 : 2906000.0, 2928000.0, 2949000.0, 2971000.0, 2992000.0, 3014000.0, 3035000.0, 3056000.0, 3077000.0, 3098000.0, 3119000.0, 3140000.0,
5831 : 3162000.0, 3183000.0, 3204000.0, 3280000.0, 3373000.0, 3481000.0},
5832 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5833 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5834 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5835 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5836 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5837 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5838 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2772000.0,
5839 : 2777000.0, 2782000.0, 2787000.0, 2800000.0, 2812000.0, 2824000.0, 2836000.0, 2847000.0, 2859000.0, 2870000.0, 2882000.0, 2893000.0,
5840 : 2904000.0, 2926000.0, 2948000.0, 2969000.0, 2991000.0, 3012000.0, 3034000.0, 3055000.0, 3076000.0, 3097000.0, 3118000.0, 3140000.0,
5841 : 3161000.0, 3182000.0, 3203000.0, 3280000.0, 3373000.0, 3480000.0},
5842 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5843 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5844 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5845 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5846 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5847 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5848 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5849 : 2774000.0, 2779000.0, 2784000.0, 2797000.0, 2809000.0, 2821000.0, 2833000.0, 2845000.0, 2857000.0, 2868000.0, 2880000.0, 2891000.0,
5850 : 2902000.0, 2924000.0, 2946000.0, 2968000.0, 2990000.0, 3011000.0, 3033000.0, 3054000.0, 3075000.0, 3096000.0, 3118000.0, 3139000.0,
5851 : 3160000.0, 3181000.0, 3202000.0, 3280000.0, 3372000.0, 3480000.0},
5852 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5853 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5854 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5855 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5856 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5857 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5858 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5859 : 0.0, 2775000.0, 2781000.0, 2794000.0, 2806000.0, 2819000.0, 2831000.0, 2843000.0, 2854000.0, 2866000.0, 2878000.0, 2889000.0,
5860 : 2900000.0, 2923000.0, 2945000.0, 2967000.0, 2988000.0, 3010000.0, 3031000.0, 3053000.0, 3074000.0, 3095000.0, 3117000.0, 3138000.0,
5861 : 3159000.0, 3180000.0, 3201000.0, 3280000.0, 3372000.0, 3480000.0},
5862 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5863 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5864 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5865 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5866 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5867 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5868 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5869 : 0.0, 0.0, 2777000.0, 2790000.0, 2803000.0, 2816000.0, 2828000.0, 2840000.0, 2852000.0, 2864000.0, 2875000.0, 2887000.0,
5870 : 2898000.0, 2921000.0, 2943000.0, 2965000.0, 2987000.0, 3009000.0, 3030000.0, 3052000.0, 3073000.0, 3094000.0, 3116000.0, 3137000.0,
5871 : 3158000.0, 3179000.0, 3201000.0, 3280000.0, 3371000.0, 3479000.0},
5872 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5873 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5874 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5875 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5876 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5877 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5878 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5879 : 0.0, 0.0, 0.0, 2781000.0, 2795000.0, 2808000.0, 2821000.0, 2833000.0, 2846000.0, 2858000.0, 2870000.0, 2881000.0,
5880 : 2893000.0, 2916000.0, 2939000.0, 2961000.0, 2983000.0, 3005000.0, 3027000.0, 3048000.0, 3070000.0, 3091000.0, 3113000.0, 3134000.0,
5881 : 3156000.0, 3177000.0, 3198000.0, 3280000.0, 3370000.0, 3478000.0},
5882 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5883 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5884 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5885 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5886 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5887 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5888 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5889 : 0.0, 0.0, 0.0, 0.0, 2785000.0, 2799000.0, 2813000.0, 2826000.0, 2838000.0, 2851000.0, 2863000.0, 2875000.0,
5890 : 2887000.0, 2910000.0, 2933000.0, 2956000.0, 2979000.0, 3001000.0, 3023000.0, 3045000.0, 3067000.0, 3088000.0, 3110000.0, 3132000.0,
5891 : 3153000.0, 3175000.0, 3196000.0, 3280000.0, 3368000.0, 3476000.0},
5892 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5893 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5894 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5895 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5896 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5897 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5898 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5899 : 0.0, 0.0, 0.0, 0.0, 0.0, 2789000.0, 2803000.0, 2817000.0, 2830000.0, 2843000.0, 2856000.0, 2868000.0,
5900 : 2880000.0, 2904000.0, 2928000.0, 2951000.0, 2974000.0, 2996000.0, 3019000.0, 3041000.0, 3063000.0, 3085000.0, 3107000.0, 3128000.0,
5901 : 3150000.0, 3172000.0, 3193000.0, 3280000.0, 3366000.0, 3475000.0},
5902 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5903 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5904 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5905 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5906 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5907 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5908 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5909 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2792000.0, 2807000.0, 2821000.0, 2834000.0, 2847000.0, 2860000.0,
5910 : 2873000.0, 2898000.0, 2922000.0, 2945000.0, 2969000.0, 2992000.0, 3014000.0, 3037000.0, 3059000.0, 3081000.0, 3103000.0, 3125000.0,
5911 : 3147000.0, 3169000.0, 3190000.0, 3280000.0, 3364000.0, 3473000.0},
5912 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5913 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5914 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5915 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5916 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5917 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5918 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5919 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2795000.0, 2810000.0, 2824000.0, 2838000.0, 2851000.0,
5920 : 2864000.0, 2890000.0, 2915000.0, 2939000.0, 2963000.0, 2986000.0, 3009000.0, 3032000.0, 3055000.0, 3077000.0, 3099000.0, 3121000.0,
5921 : 3143000.0, 3165000.0, 3187000.0, 3280000.0, 3362000.0, 3471000.0},
5922 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5923 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5924 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5925 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5926 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5927 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5928 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5929 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2797000.0, 2813000.0, 2827000.0, 2841000.0,
5930 : 2855000.0, 2882000.0, 2907000.0, 2932000.0, 2956000.0, 2980000.0, 3004000.0, 3027000.0, 3050000.0, 3072000.0, 3095000.0, 3117000.0,
5931 : 3140000.0, 3162000.0, 3184000.0, 3280000.0, 3359000.0, 3469000.0},
5932 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5933 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5934 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5935 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5936 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5937 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5938 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5939 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2799000.0, 2815000.0, 2830000.0,
5940 : 2844000.0, 2872000.0, 2899000.0, 2924000.0, 2949000.0, 2974000.0, 2998000.0, 3021000.0, 3044000.0, 3067000.0, 3090000.0, 3113000.0,
5941 : 3135000.0, 3158000.0, 3180000.0, 3280000.0, 3357000.0, 3467000.0},
5942 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5943 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5944 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5945 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5946 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5947 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5948 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5949 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2801000.0, 2817000.0,
5950 : 2832000.0, 2862000.0, 2889000.0, 2916000.0, 2941000.0, 2966000.0, 2991000.0, 3015000.0, 3039000.0, 3062000.0, 3085000.0, 3108000.0,
5951 : 3131000.0, 3154000.0, 3176000.0, 3280000.0, 3354000.0, 3465000.0},
5952 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5953 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5954 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5955 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5956 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5957 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5958 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5959 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2802000.0,
5960 : 2819000.0, 2850000.0, 2879000.0, 2906000.0, 2933000.0, 2958000.0, 2984000.0, 3008000.0, 3032000.0, 3056000.0, 3080000.0, 3103000.0,
5961 : 3126000.0, 3149000.0, 3172000.0, 3280000.0, 3351000.0, 3462000.0},
5962 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5963 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5964 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5965 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5966 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5967 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5968 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5969 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5970 : 2803000.0, 2836000.0, 2867000.0, 2895000.0, 2923000.0, 2950000.0, 2975000.0, 3001000.0, 3025000.0, 3050000.0, 3073000.0, 3097000.0,
5971 : 3121000.0, 3144000.0, 3167000.0, 3280000.0, 3348000.0, 3459000.0},
5972 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5973 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5974 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5975 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5976 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5977 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5978 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5979 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5980 : 0.0, 2803000.0, 2838000.0, 2870000.0, 2900000.0, 2929000.0, 2957000.0, 2983000.0, 3009000.0, 3035000.0, 3060000.0, 3084000.0,
5981 : 3108000.0, 3132000.0, 3156000.0, 3280000.0, 3340000.0, 3453000.0},
5982 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5983 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5984 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5985 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5986 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5987 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5988 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5989 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5990 : 0.0, 0.0, 2801000.0, 2838000.0, 2872000.0, 2904000.0, 2934000.0, 2963000.0, 2990000.0, 3017000.0, 3043000.0, 3069000.0,
5991 : 3094000.0, 3119000.0, 3143000.0, 3280000.0, 3332000.0, 3446000.0},
5992 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5993 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5994 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5995 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5996 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5997 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5998 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5999 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6000 : 0.0, 0.0, 0.0, 2797000.0, 2837000.0, 2873000.0, 2906000.0, 2937000.0, 2967000.0, 2996000.0, 3023000.0, 3050000.0,
6001 : 3077000.0, 3103000.0, 3128000.0, 3280000.0, 3322000.0, 3438000.0},
6002 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6003 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6004 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6005 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6006 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6007 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6008 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6009 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6010 : 0.0, 0.0, 0.0, 0.0, 2790000.0, 2833000.0, 2871000.0, 2906000.0, 2939000.0, 2970000.0, 3000000.0, 3029000.0,
6011 : 3057000.0, 3084000.0, 3110000.0, 3280000.0, 3310000.0, 3429000.0},
6012 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6013 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6014 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6015 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6016 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6017 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6018 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6019 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6020 : 0.0, 0.0, 0.0, 0.0, 0.0, 2780000.0, 2826000.0, 2867000.0, 2905000.0, 2939000.0, 2972000.0, 3003000.0,
6021 : 3033000.0, 3062000.0, 3090000.0, 3280000.0, 3297000.0, 3418000.0},
6022 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6023 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6024 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6025 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6026 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6027 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6028 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6029 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2767000.0, 2817000.0,
6030 : 2861000.0, 2901000.0, 2938000.0, 2972000.0, 3004000.0, 3036000.0, 3066000.0, 3280000.0, 3282000.0, 3406000.0},
6031 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6032 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6033 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6034 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6035 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6036 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6037 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6038 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2750000.0,
6039 : 2806000.0, 2853000.0, 2895000.0, 2934000.0, 2970000.0, 3004000.0, 3037000.0, 3280000.0, 3264000.0, 3392000.0},
6040 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6041 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6042 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6043 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6044 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6045 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6046 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2728000.0,
6047 : 2790000.0, 2842000.0, 2887000.0, 2929000.0, 2967000.0, 3003000.0, 3280000.0, 3244000.0, 3377000.0},
6048 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6049 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6050 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6051 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6052 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6053 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6054 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6055 : 2701000.0, 2771000.0, 2828000.0, 2877000.0, 2921000.0, 2961000.0, 3280000.0, 3222000.0, 3359000.0},
6056 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6057 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6058 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6059 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6060 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6061 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6062 : 0.0, 0.0, 0.0, 0.0, 2666000.0, 2747000.0, 2810000.0, 2864000.0, 2911000.0, 3280000.0, 3195000.0, 3339000.0},
6063 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6064 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6065 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6066 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6067 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6068 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6069 : 0.0, 0.0, 0.0, 0.0, 0.0, 2622000.0, 2718000.0, 2789000.0, 2847000.0, 3280000.0, 3165000.0, 3316000.0},
6070 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6071 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6072 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6073 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6074 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6075 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2564000.0, 2683000.0, 2763000.0, 3280000.0, 3130000.0, 3290000.0},
6076 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6077 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6078 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6079 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6080 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6081 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2481000.0, 2641000.0, 3280000.0, 3089000.0, 3260000.0},
6082 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6083 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6084 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6085 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6086 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6087 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2335000.0, 3280000.0, 3040000.0, 3226000.0},
6088 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6089 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6090 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6091 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6092 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3280000.0, 2821000.0, 3085000.0},
6093 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6094 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6095 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6096 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6097 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3280000.0, 2671000.0, 2998000.0},
6098 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6099 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6100 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6101 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6102 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3280000.0, 2512000.0, 2906000.0}}};
6103 :
6104 : static constexpr std::array<std::array<Real64, DefaultNumSteamSuperheatedTemps>, DefaultNumSteamSuperheatedPressure>
6105 : DefaultSteamSuperheatedDensityDataTable = {
6106 : {{4.855e-03, 4.837e-03, 4.767e-03, 4.683e-03, 4.601e-03, 4.522e-03, 4.446e-03, 4.373e-03, 4.302e-03, 4.233e-03, 4.167e-03, 4.102e-03,
6107 : 4.039e-03, 3.979e-03, 3.920e-03, 3.863e-03, 3.840e-03, 3.818e-03, 3.796e-03, 3.775e-03, 3.753e-03, 3.732e-03, 3.711e-03, 3.691e-03,
6108 : 3.670e-03, 3.650e-03, 3.630e-03, 3.610e-03, 3.591e-03, 3.571e-03, 3.562e-03, 3.552e-03, 3.543e-03, 3.533e-03, 3.524e-03, 3.514e-03,
6109 : 3.505e-03, 3.496e-03, 3.487e-03, 3.477e-03, 3.468e-03, 3.459e-03, 3.450e-03, 3.441e-03, 3.432e-03, 3.424e-03, 3.415e-03, 3.406e-03,
6110 : 3.397e-03, 3.388e-03, 3.380e-03, 3.371e-03, 3.363e-03, 3.354e-03, 3.346e-03, 3.337e-03, 3.329e-03, 3.321e-03, 3.312e-03, 3.304e-03,
6111 : 3.296e-03, 3.288e-03, 3.271e-03, 3.255e-03, 3.239e-03, 3.224e-03, 3.208e-03, 3.193e-03, 3.177e-03, 3.162e-03, 3.147e-03, 3.132e-03,
6112 : 3.117e-03, 3.103e-03, 3.088e-03, 3.074e-03, 3.060e-03, 3.046e-03, 3.032e-03, 3.018e-03, 3.004e-03, 2.991e-03, 2.977e-03, 2.964e-03,
6113 : 2.951e-03, 2.938e-03, 2.925e-03, 2.893e-03, 2.862e-03, 2.831e-03, 2.801e-03, 2.772e-03, 2.743e-03, 2.715e-03, 2.688e-03, 2.661e-03,
6114 : 2.634e-03, 2.583e-03, 2.533e-03, 2.486e-03, 2.440e-03, 2.396e-03, 2.353e-03, 2.312e-03, 2.273e-03, 2.234e-03, 2.197e-03, 2.162e-03,
6115 : 2.127e-03, 2.093e-03, 2.061e-03, 3.542e-05, 1.833e-03, 1.714e-03},
6116 : {0.0, 5.196e-03, 5.121e-03, 5.031e-03, 4.943e-03, 4.859e-03, 4.777e-03, 4.698e-03, 4.622e-03, 4.548e-03, 4.476e-03, 4.407e-03,
6117 : 4.340e-03, 4.274e-03, 4.211e-03, 4.150e-03, 4.126e-03, 4.102e-03, 4.078e-03, 4.055e-03, 4.032e-03, 4.009e-03, 3.987e-03, 3.965e-03,
6118 : 3.943e-03, 3.921e-03, 3.899e-03, 3.878e-03, 3.857e-03, 3.836e-03, 3.826e-03, 3.816e-03, 3.806e-03, 3.795e-03, 3.785e-03, 3.775e-03,
6119 : 3.765e-03, 3.755e-03, 3.746e-03, 3.736e-03, 3.726e-03, 3.716e-03, 3.707e-03, 3.697e-03, 3.687e-03, 3.678e-03, 3.668e-03, 3.659e-03,
6120 : 3.650e-03, 3.640e-03, 3.631e-03, 3.622e-03, 3.612e-03, 3.603e-03, 3.594e-03, 3.585e-03, 3.576e-03, 3.567e-03, 3.558e-03, 3.549e-03,
6121 : 3.541e-03, 3.532e-03, 3.514e-03, 3.497e-03, 3.480e-03, 3.463e-03, 3.446e-03, 3.430e-03, 3.413e-03, 3.397e-03, 3.381e-03, 3.365e-03,
6122 : 3.349e-03, 3.333e-03, 3.318e-03, 3.302e-03, 3.287e-03, 3.272e-03, 3.257e-03, 3.242e-03, 3.228e-03, 3.213e-03, 3.198e-03, 3.184e-03,
6123 : 3.170e-03, 3.156e-03, 3.142e-03, 3.108e-03, 3.074e-03, 3.041e-03, 3.009e-03, 2.978e-03, 2.947e-03, 2.917e-03, 2.887e-03, 2.858e-03,
6124 : 2.830e-03, 2.775e-03, 2.722e-03, 2.671e-03, 2.621e-03, 2.574e-03, 2.528e-03, 2.484e-03, 2.442e-03, 2.400e-03, 2.361e-03, 2.322e-03,
6125 : 2.285e-03, 2.249e-03, 2.214e-03, 3.542e-05, 1.969e-03, 1.841e-03},
6126 : {0.0, 0.0, 6.802e-03, 6.681e-03, 6.565e-03, 6.453e-03, 6.344e-03, 6.239e-03, 6.138e-03, 6.040e-03, 5.944e-03, 5.852e-03,
6127 : 5.763e-03, 5.676e-03, 5.592e-03, 5.511e-03, 5.479e-03, 5.447e-03, 5.416e-03, 5.385e-03, 5.355e-03, 5.324e-03, 5.295e-03, 5.265e-03,
6128 : 5.236e-03, 5.207e-03, 5.178e-03, 5.150e-03, 5.122e-03, 5.095e-03, 5.081e-03, 5.067e-03, 5.054e-03, 5.040e-03, 5.027e-03, 5.014e-03,
6129 : 5.000e-03, 4.987e-03, 4.974e-03, 4.961e-03, 4.948e-03, 4.935e-03, 4.922e-03, 4.909e-03, 4.897e-03, 4.884e-03, 4.871e-03, 4.859e-03,
6130 : 4.846e-03, 4.834e-03, 4.822e-03, 4.809e-03, 4.797e-03, 4.785e-03, 4.773e-03, 4.761e-03, 4.749e-03, 4.737e-03, 4.725e-03, 4.714e-03,
6131 : 4.702e-03, 4.690e-03, 4.667e-03, 4.644e-03, 4.621e-03, 4.599e-03, 4.577e-03, 4.555e-03, 4.533e-03, 4.511e-03, 4.490e-03, 4.468e-03,
6132 : 4.447e-03, 4.427e-03, 4.406e-03, 4.385e-03, 4.365e-03, 4.345e-03, 4.325e-03, 4.306e-03, 4.286e-03, 4.267e-03, 4.247e-03, 4.228e-03,
6133 : 4.210e-03, 4.191e-03, 4.172e-03, 4.127e-03, 4.082e-03, 4.039e-03, 3.996e-03, 3.954e-03, 3.913e-03, 3.873e-03, 3.834e-03, 3.796e-03,
6134 : 3.758e-03, 3.685e-03, 3.614e-03, 3.546e-03, 3.481e-03, 3.418e-03, 3.357e-03, 3.299e-03, 3.242e-03, 3.188e-03, 3.135e-03, 3.084e-03,
6135 : 3.034e-03, 2.986e-03, 2.940e-03, 3.542e-05, 2.615e-03, 2.445e-03},
6136 : {0.0, 0.0, 0.0, 9.407e-03, 9.243e-03, 9.084e-03, 8.931e-03, 8.783e-03, 8.640e-03, 8.502e-03, 8.368e-03, 8.238e-03,
6137 : 8.113e-03, 7.991e-03, 7.872e-03, 7.757e-03, 7.712e-03, 7.668e-03, 7.624e-03, 7.580e-03, 7.537e-03, 7.495e-03, 7.453e-03, 7.411e-03,
6138 : 7.370e-03, 7.330e-03, 7.289e-03, 7.250e-03, 7.210e-03, 7.172e-03, 7.152e-03, 7.133e-03, 7.114e-03, 7.095e-03, 7.076e-03, 7.057e-03,
6139 : 7.039e-03, 7.020e-03, 7.002e-03, 6.983e-03, 6.965e-03, 6.947e-03, 6.929e-03, 6.911e-03, 6.893e-03, 6.875e-03, 6.857e-03, 6.840e-03,
6140 : 6.822e-03, 6.805e-03, 6.787e-03, 6.770e-03, 6.753e-03, 6.736e-03, 6.719e-03, 6.702e-03, 6.685e-03, 6.668e-03, 6.651e-03, 6.635e-03,
6141 : 6.618e-03, 6.602e-03, 6.569e-03, 6.537e-03, 6.505e-03, 6.473e-03, 6.442e-03, 6.411e-03, 6.380e-03, 6.350e-03, 6.320e-03, 6.290e-03,
6142 : 6.260e-03, 6.231e-03, 6.202e-03, 6.173e-03, 6.144e-03, 6.116e-03, 6.088e-03, 6.060e-03, 6.033e-03, 6.006e-03, 5.979e-03, 5.952e-03,
6143 : 5.925e-03, 5.899e-03, 5.873e-03, 5.809e-03, 5.746e-03, 5.685e-03, 5.625e-03, 5.566e-03, 5.508e-03, 5.452e-03, 5.397e-03, 5.342e-03,
6144 : 5.289e-03, 5.186e-03, 5.087e-03, 4.992e-03, 4.900e-03, 4.811e-03, 4.726e-03, 4.643e-03, 4.564e-03, 4.487e-03, 4.412e-03, 4.340e-03,
6145 : 4.271e-03, 4.203e-03, 4.138e-03, 3.542e-05, 3.680e-03, 3.442e-03},
6146 : {0.0, 0.0, 0.0, 0.0, 1.284e-02, 1.262e-02, 1.241e-02, 1.220e-02, 1.200e-02, 1.181e-02, 1.162e-02, 1.144e-02,
6147 : 1.127e-02, 1.110e-02, 1.093e-02, 1.078e-02, 1.071e-02, 1.065e-02, 1.059e-02, 1.053e-02, 1.047e-02, 1.041e-02, 1.035e-02, 1.029e-02,
6148 : 1.024e-02, 1.018e-02, 1.012e-02, 1.007e-02, 1.001e-02, 9.961e-03, 9.934e-03, 9.907e-03, 9.881e-03, 9.855e-03, 9.828e-03, 9.802e-03,
6149 : 9.776e-03, 9.750e-03, 9.725e-03, 9.699e-03, 9.674e-03, 9.649e-03, 9.623e-03, 9.598e-03, 9.574e-03, 9.549e-03, 9.524e-03, 9.500e-03,
6150 : 9.475e-03, 9.451e-03, 9.427e-03, 9.403e-03, 9.379e-03, 9.355e-03, 9.332e-03, 9.308e-03, 9.285e-03, 9.261e-03, 9.238e-03, 9.215e-03,
6151 : 9.192e-03, 9.170e-03, 9.124e-03, 9.079e-03, 9.035e-03, 8.991e-03, 8.947e-03, 8.904e-03, 8.862e-03, 8.819e-03, 8.777e-03, 8.736e-03,
6152 : 8.695e-03, 8.654e-03, 8.614e-03, 8.574e-03, 8.534e-03, 8.495e-03, 8.456e-03, 8.417e-03, 8.379e-03, 8.341e-03, 8.304e-03, 8.267e-03,
6153 : 8.230e-03, 8.193e-03, 8.157e-03, 8.068e-03, 7.981e-03, 7.896e-03, 7.812e-03, 7.731e-03, 7.651e-03, 7.572e-03, 7.495e-03, 7.420e-03,
6154 : 7.346e-03, 7.203e-03, 7.065e-03, 6.933e-03, 6.805e-03, 6.682e-03, 6.563e-03, 6.449e-03, 6.338e-03, 6.231e-03, 6.128e-03, 6.028e-03,
6155 : 5.931e-03, 5.838e-03, 5.747e-03, 3.542e-05, 5.111e-03, 4.781e-03},
6156 : {0.0, 0.0, 0.0, 0.0, 0.0, 1.731e-02, 1.702e-02, 1.674e-02, 1.646e-02, 1.620e-02, 1.594e-02, 1.570e-02,
6157 : 1.546e-02, 1.522e-02, 1.500e-02, 1.478e-02, 1.469e-02, 1.461e-02, 1.452e-02, 1.444e-02, 1.436e-02, 1.428e-02, 1.420e-02, 1.412e-02,
6158 : 1.404e-02, 1.396e-02, 1.389e-02, 1.381e-02, 1.374e-02, 1.366e-02, 1.362e-02, 1.359e-02, 1.355e-02, 1.352e-02, 1.348e-02, 1.344e-02,
6159 : 1.341e-02, 1.337e-02, 1.334e-02, 1.330e-02, 1.327e-02, 1.323e-02, 1.320e-02, 1.316e-02, 1.313e-02, 1.310e-02, 1.306e-02, 1.303e-02,
6160 : 1.300e-02, 1.296e-02, 1.293e-02, 1.290e-02, 1.286e-02, 1.283e-02, 1.280e-02, 1.277e-02, 1.273e-02, 1.270e-02, 1.267e-02, 1.264e-02,
6161 : 1.261e-02, 1.258e-02, 1.251e-02, 1.245e-02, 1.239e-02, 1.233e-02, 1.227e-02, 1.221e-02, 1.215e-02, 1.210e-02, 1.204e-02, 1.198e-02,
6162 : 1.192e-02, 1.187e-02, 1.181e-02, 1.176e-02, 1.170e-02, 1.165e-02, 1.160e-02, 1.154e-02, 1.149e-02, 1.144e-02, 1.139e-02, 1.134e-02,
6163 : 1.129e-02, 1.124e-02, 1.119e-02, 1.107e-02, 1.095e-02, 1.083e-02, 1.071e-02, 1.060e-02, 1.049e-02, 1.038e-02, 1.028e-02, 1.018e-02,
6164 : 1.007e-02, 9.879e-03, 9.690e-03, 9.508e-03, 9.333e-03, 9.164e-03, 9.001e-03, 8.844e-03, 8.692e-03, 8.546e-03, 8.404e-03, 8.267e-03,
6165 : 8.134e-03, 8.006e-03, 7.881e-03, 3.542e-05, 7.009e-03, 6.556e-03},
6166 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.307e-02, 2.269e-02, 2.232e-02, 2.196e-02, 2.161e-02, 2.128e-02,
6167 : 2.095e-02, 2.063e-02, 2.033e-02, 2.003e-02, 1.991e-02, 1.980e-02, 1.968e-02, 1.957e-02, 1.946e-02, 1.935e-02, 1.924e-02, 1.913e-02,
6168 : 1.903e-02, 1.892e-02, 1.882e-02, 1.872e-02, 1.862e-02, 1.851e-02, 1.846e-02, 1.842e-02, 1.837e-02, 1.832e-02, 1.827e-02, 1.822e-02,
6169 : 1.817e-02, 1.812e-02, 1.808e-02, 1.803e-02, 1.798e-02, 1.793e-02, 1.789e-02, 1.784e-02, 1.779e-02, 1.775e-02, 1.770e-02, 1.766e-02,
6170 : 1.761e-02, 1.757e-02, 1.752e-02, 1.748e-02, 1.743e-02, 1.739e-02, 1.734e-02, 1.730e-02, 1.726e-02, 1.721e-02, 1.717e-02, 1.713e-02,
6171 : 1.708e-02, 1.704e-02, 1.696e-02, 1.687e-02, 1.679e-02, 1.671e-02, 1.663e-02, 1.655e-02, 1.647e-02, 1.639e-02, 1.631e-02, 1.624e-02,
6172 : 1.616e-02, 1.608e-02, 1.601e-02, 1.593e-02, 1.586e-02, 1.579e-02, 1.572e-02, 1.564e-02, 1.557e-02, 1.550e-02, 1.543e-02, 1.536e-02,
6173 : 1.530e-02, 1.523e-02, 1.516e-02, 1.499e-02, 1.483e-02, 1.467e-02, 1.452e-02, 1.437e-02, 1.422e-02, 1.407e-02, 1.393e-02, 1.379e-02,
6174 : 1.365e-02, 1.339e-02, 1.313e-02, 1.288e-02, 1.265e-02, 1.242e-02, 1.220e-02, 1.198e-02, 1.178e-02, 1.158e-02, 1.139e-02, 1.120e-02,
6175 : 1.102e-02, 1.085e-02, 1.068e-02, 3.542e-05, 9.498e-03, 8.884e-03},
6176 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.042e-02, 2.992e-02, 2.943e-02, 2.897e-02, 2.851e-02,
6177 : 2.808e-02, 2.765e-02, 2.724e-02, 2.684e-02, 2.669e-02, 2.653e-02, 2.638e-02, 2.623e-02, 2.608e-02, 2.593e-02, 2.579e-02, 2.564e-02,
6178 : 2.550e-02, 2.536e-02, 2.522e-02, 2.508e-02, 2.494e-02, 2.481e-02, 2.474e-02, 2.468e-02, 2.461e-02, 2.454e-02, 2.448e-02, 2.441e-02,
6179 : 2.435e-02, 2.428e-02, 2.422e-02, 2.416e-02, 2.409e-02, 2.403e-02, 2.397e-02, 2.391e-02, 2.384e-02, 2.378e-02, 2.372e-02, 2.366e-02,
6180 : 2.360e-02, 2.354e-02, 2.348e-02, 2.342e-02, 2.336e-02, 2.330e-02, 2.324e-02, 2.318e-02, 2.312e-02, 2.306e-02, 2.301e-02, 2.295e-02,
6181 : 2.289e-02, 2.284e-02, 2.272e-02, 2.261e-02, 2.250e-02, 2.239e-02, 2.228e-02, 2.217e-02, 2.207e-02, 2.196e-02, 2.186e-02, 2.175e-02,
6182 : 2.165e-02, 2.155e-02, 2.145e-02, 2.135e-02, 2.125e-02, 2.115e-02, 2.106e-02, 2.096e-02, 2.087e-02, 2.077e-02, 2.068e-02, 2.059e-02,
6183 : 2.049e-02, 2.040e-02, 2.031e-02, 2.009e-02, 1.987e-02, 1.966e-02, 1.945e-02, 1.925e-02, 1.905e-02, 1.885e-02, 1.866e-02, 1.848e-02,
6184 : 1.829e-02, 1.794e-02, 1.759e-02, 1.726e-02, 1.694e-02, 1.664e-02, 1.634e-02, 1.606e-02, 1.578e-02, 1.552e-02, 1.526e-02, 1.501e-02,
6185 : 1.477e-02, 1.453e-02, 1.431e-02, 3.542e-05, 1.273e-02, 1.190e-02},
6186 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.967e-02, 3.903e-02, 3.841e-02, 3.781e-02,
6187 : 3.723e-02, 3.666e-02, 3.612e-02, 3.559e-02, 3.538e-02, 3.518e-02, 3.497e-02, 3.477e-02, 3.457e-02, 3.438e-02, 3.419e-02, 3.399e-02,
6188 : 3.380e-02, 3.362e-02, 3.343e-02, 3.325e-02, 3.307e-02, 3.289e-02, 3.280e-02, 3.271e-02, 3.262e-02, 3.254e-02, 3.245e-02, 3.236e-02,
6189 : 3.228e-02, 3.219e-02, 3.211e-02, 3.202e-02, 3.194e-02, 3.186e-02, 3.177e-02, 3.169e-02, 3.161e-02, 3.153e-02, 3.144e-02, 3.136e-02,
6190 : 3.128e-02, 3.120e-02, 3.112e-02, 3.104e-02, 3.096e-02, 3.089e-02, 3.081e-02, 3.073e-02, 3.065e-02, 3.058e-02, 3.050e-02, 3.042e-02,
6191 : 3.035e-02, 3.027e-02, 3.012e-02, 2.997e-02, 2.983e-02, 2.968e-02, 2.954e-02, 2.939e-02, 2.925e-02, 2.911e-02, 2.897e-02, 2.884e-02,
6192 : 2.870e-02, 2.857e-02, 2.843e-02, 2.830e-02, 2.817e-02, 2.804e-02, 2.791e-02, 2.778e-02, 2.766e-02, 2.753e-02, 2.741e-02, 2.729e-02,
6193 : 2.716e-02, 2.704e-02, 2.692e-02, 2.663e-02, 2.634e-02, 2.606e-02, 2.579e-02, 2.552e-02, 2.525e-02, 2.499e-02, 2.474e-02, 2.449e-02,
6194 : 2.425e-02, 2.377e-02, 2.332e-02, 2.288e-02, 2.246e-02, 2.205e-02, 2.166e-02, 2.128e-02, 2.092e-02, 2.057e-02, 2.022e-02, 1.989e-02,
6195 : 1.957e-02, 1.927e-02, 1.897e-02, 3.542e-05, 1.687e-02, 1.578e-02},
6196 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.124e-02, 5.042e-02, 4.963e-02,
6197 : 4.887e-02, 4.812e-02, 4.741e-02, 4.671e-02, 4.644e-02, 4.617e-02, 4.590e-02, 4.564e-02, 4.537e-02, 4.512e-02, 4.486e-02, 4.461e-02,
6198 : 4.436e-02, 4.412e-02, 4.387e-02, 4.363e-02, 4.340e-02, 4.316e-02, 4.304e-02, 4.293e-02, 4.281e-02, 4.270e-02, 4.258e-02, 4.247e-02,
6199 : 4.236e-02, 4.225e-02, 4.213e-02, 4.202e-02, 4.191e-02, 4.180e-02, 4.169e-02, 4.158e-02, 4.148e-02, 4.137e-02, 4.126e-02, 4.116e-02,
6200 : 4.105e-02, 4.094e-02, 4.084e-02, 4.073e-02, 4.063e-02, 4.053e-02, 4.043e-02, 4.032e-02, 4.022e-02, 4.012e-02, 4.002e-02, 3.992e-02,
6201 : 3.982e-02, 3.972e-02, 3.952e-02, 3.933e-02, 3.914e-02, 3.895e-02, 3.876e-02, 3.857e-02, 3.838e-02, 3.820e-02, 3.802e-02, 3.784e-02,
6202 : 3.766e-02, 3.748e-02, 3.731e-02, 3.713e-02, 3.696e-02, 3.679e-02, 3.662e-02, 3.646e-02, 3.629e-02, 3.613e-02, 3.596e-02, 3.580e-02,
6203 : 3.564e-02, 3.548e-02, 3.533e-02, 3.494e-02, 3.456e-02, 3.419e-02, 3.383e-02, 3.348e-02, 3.313e-02, 3.279e-02, 3.246e-02, 3.213e-02,
6204 : 3.181e-02, 3.119e-02, 3.059e-02, 3.002e-02, 2.947e-02, 2.893e-02, 2.842e-02, 2.792e-02, 2.744e-02, 2.698e-02, 2.653e-02, 2.610e-02,
6205 : 2.568e-02, 2.528e-02, 2.488e-02, 3.542e-05, 2.213e-02, 2.070e-02},
6206 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.556e-02, 6.453e-02,
6207 : 6.353e-02, 6.256e-02, 6.163e-02, 6.072e-02, 6.036e-02, 6.001e-02, 5.966e-02, 5.932e-02, 5.898e-02, 5.864e-02, 5.831e-02, 5.799e-02,
6208 : 5.766e-02, 5.734e-02, 5.702e-02, 5.671e-02, 5.640e-02, 5.610e-02, 5.594e-02, 5.579e-02, 5.564e-02, 5.549e-02, 5.535e-02, 5.520e-02,
6209 : 5.505e-02, 5.490e-02, 5.476e-02, 5.461e-02, 5.447e-02, 5.433e-02, 5.419e-02, 5.404e-02, 5.390e-02, 5.376e-02, 5.362e-02, 5.349e-02,
6210 : 5.335e-02, 5.321e-02, 5.307e-02, 5.294e-02, 5.280e-02, 5.267e-02, 5.254e-02, 5.240e-02, 5.227e-02, 5.214e-02, 5.201e-02, 5.188e-02,
6211 : 5.175e-02, 5.162e-02, 5.136e-02, 5.111e-02, 5.086e-02, 5.061e-02, 5.036e-02, 5.012e-02, 4.988e-02, 4.964e-02, 4.940e-02, 4.917e-02,
6212 : 4.894e-02, 4.871e-02, 4.848e-02, 4.825e-02, 4.803e-02, 4.781e-02, 4.759e-02, 4.737e-02, 4.716e-02, 4.694e-02, 4.673e-02, 4.652e-02,
6213 : 4.632e-02, 4.611e-02, 4.591e-02, 4.540e-02, 4.491e-02, 4.443e-02, 4.396e-02, 4.350e-02, 4.305e-02, 4.261e-02, 4.218e-02, 4.175e-02,
6214 : 4.134e-02, 4.053e-02, 3.975e-02, 3.901e-02, 3.829e-02, 3.759e-02, 3.693e-02, 3.628e-02, 3.566e-02, 3.506e-02, 3.448e-02, 3.391e-02,
6215 : 3.337e-02, 3.284e-02, 3.233e-02, 3.542e-05, 2.875e-02, 2.689e-02},
6216 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.315e-02,
6217 : 8.185e-02, 8.060e-02, 7.939e-02, 7.821e-02, 7.775e-02, 7.730e-02, 7.685e-02, 7.641e-02, 7.597e-02, 7.553e-02, 7.511e-02, 7.468e-02,
6218 : 7.426e-02, 7.385e-02, 7.344e-02, 7.304e-02, 7.264e-02, 7.224e-02, 7.205e-02, 7.185e-02, 7.166e-02, 7.147e-02, 7.128e-02, 7.108e-02,
6219 : 7.090e-02, 7.071e-02, 7.052e-02, 7.033e-02, 7.015e-02, 6.996e-02, 6.978e-02, 6.960e-02, 6.942e-02, 6.923e-02, 6.906e-02, 6.888e-02,
6220 : 6.870e-02, 6.852e-02, 6.835e-02, 6.817e-02, 6.800e-02, 6.782e-02, 6.765e-02, 6.748e-02, 6.731e-02, 6.714e-02, 6.697e-02, 6.680e-02,
6221 : 6.664e-02, 6.647e-02, 6.614e-02, 6.581e-02, 6.549e-02, 6.517e-02, 6.485e-02, 6.454e-02, 6.423e-02, 6.392e-02, 6.361e-02, 6.331e-02,
6222 : 6.301e-02, 6.272e-02, 6.242e-02, 6.213e-02, 6.185e-02, 6.156e-02, 6.128e-02, 6.100e-02, 6.072e-02, 6.044e-02, 6.017e-02, 5.990e-02,
6223 : 5.963e-02, 5.937e-02, 5.911e-02, 5.846e-02, 5.783e-02, 5.721e-02, 5.660e-02, 5.601e-02, 5.543e-02, 5.486e-02, 5.430e-02, 5.375e-02,
6224 : 5.322e-02, 5.218e-02, 5.118e-02, 5.022e-02, 4.929e-02, 4.840e-02, 4.754e-02, 4.671e-02, 4.591e-02, 4.513e-02, 4.438e-02, 4.366e-02,
6225 : 4.296e-02, 4.228e-02, 4.162e-02, 3.542e-05, 3.701e-02, 3.462e-02},
6226 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6227 : 0.10460, 0.10290, 0.10140, 9.988e-02, 9.929e-02, 9.871e-02, 9.813e-02, 9.757e-02, 9.700e-02, 9.645e-02, 9.590e-02, 9.536e-02,
6228 : 9.482e-02, 9.430e-02, 9.377e-02, 9.325e-02, 9.274e-02, 9.224e-02, 9.199e-02, 9.174e-02, 9.149e-02, 9.124e-02, 9.100e-02, 9.075e-02,
6229 : 9.051e-02, 9.027e-02, 9.003e-02, 8.979e-02, 8.955e-02, 8.932e-02, 8.908e-02, 8.885e-02, 8.862e-02, 8.839e-02, 8.816e-02, 8.793e-02,
6230 : 8.770e-02, 8.747e-02, 8.725e-02, 8.703e-02, 8.680e-02, 8.658e-02, 8.636e-02, 8.614e-02, 8.592e-02, 8.571e-02, 8.549e-02, 8.528e-02,
6231 : 8.506e-02, 8.485e-02, 8.443e-02, 8.401e-02, 8.360e-02, 8.319e-02, 8.278e-02, 8.238e-02, 8.198e-02, 8.159e-02, 8.120e-02, 8.081e-02,
6232 : 8.043e-02, 8.005e-02, 7.968e-02, 7.931e-02, 7.894e-02, 7.857e-02, 7.821e-02, 7.786e-02, 7.750e-02, 7.715e-02, 7.680e-02, 7.646e-02,
6233 : 7.611e-02, 7.578e-02, 7.544e-02, 7.461e-02, 7.380e-02, 7.301e-02, 7.224e-02, 7.148e-02, 7.074e-02, 7.001e-02, 6.930e-02, 6.860e-02,
6234 : 6.792e-02, 6.659e-02, 6.532e-02, 6.409e-02, 6.291e-02, 6.177e-02, 6.067e-02, 5.961e-02, 5.859e-02, 5.760e-02, 5.664e-02, 5.572e-02,
6235 : 5.482e-02, 5.395e-02, 5.312e-02, 3.542e-05, 4.724e-02, 4.418e-02},
6236 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6237 : 0.0, 0.13040, 0.12840, 0.12650, 0.12580, 0.125, 0.12430, 0.12360, 0.12290, 0.12220, 0.12150, 0.12080,
6238 : 0.12010, 0.11940, 0.11870, 0.11810, 0.11740, 0.11680, 0.11650, 0.11620, 0.11580, 0.11550, 0.11520, 0.11490,
6239 : 0.11460, 0.11430, 0.114, 0.11370, 0.11340, 0.11310, 0.11280, 0.11250, 0.11220, 0.11190, 0.11160, 0.11130,
6240 : 0.111, 0.11080, 0.11050, 0.11020, 0.10990, 0.10960, 0.10930, 0.10910, 0.10880, 0.10850, 0.10820, 0.108,
6241 : 0.10770, 0.10740, 0.10690, 0.10640, 0.10580, 0.10530, 0.10480, 0.10430, 0.10380, 0.10330, 0.10280, 0.10230,
6242 : 0.10180, 0.10130, 0.10090, 0.10040, 9.993e-02, 9.946e-02, 9.901e-02, 9.855e-02, 9.810e-02, 9.766e-02, 9.722e-02, 9.678e-02,
6243 : 9.635e-02, 9.592e-02, 9.549e-02, 9.444e-02, 9.342e-02, 9.242e-02, 9.144e-02, 9.048e-02, 8.954e-02, 8.862e-02, 8.771e-02, 8.683e-02,
6244 : 8.597e-02, 8.429e-02, 8.267e-02, 8.112e-02, 7.962e-02, 7.818e-02, 7.678e-02, 7.544e-02, 7.415e-02, 7.289e-02, 7.168e-02, 7.051e-02,
6245 : 6.938e-02, 6.828e-02, 6.722e-02, 3.542e-05, 5.978e-02, 5.591e-02},
6246 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6247 : 0.0, 0.0, 0.16150, 0.159, 0.15810, 0.15710, 0.15620, 0.15530, 0.15440, 0.15350, 0.15260, 0.15180,
6248 : 0.15090, 0.15, 0.14920, 0.14840, 0.14760, 0.14670, 0.14630, 0.14590, 0.14550, 0.14520, 0.14480, 0.14440,
6249 : 0.144, 0.14360, 0.14320, 0.14280, 0.14250, 0.14210, 0.14170, 0.14130, 0.141, 0.14060, 0.14020, 0.13990,
6250 : 0.13950, 0.13910, 0.13880, 0.13840, 0.13810, 0.13770, 0.13730, 0.137, 0.13660, 0.13630, 0.136, 0.13560,
6251 : 0.13530, 0.13490, 0.13430, 0.13360, 0.13290, 0.13230, 0.13160, 0.131, 0.13040, 0.12970, 0.12910, 0.12850,
6252 : 0.12790, 0.12730, 0.12670, 0.12610, 0.12550, 0.12490, 0.12430, 0.12380, 0.12320, 0.12260, 0.12210, 0.12150,
6253 : 0.121, 0.12050, 0.11990, 0.11860, 0.11730, 0.11610, 0.11480, 0.11360, 0.11240, 0.11130, 0.11010, 0.109,
6254 : 0.10790, 0.10580, 0.10380, 0.10190, 9.997e-02, 9.816e-02, 9.641e-02, 9.473e-02, 9.310e-02, 9.152e-02, 9.000e-02, 8.853e-02,
6255 : 8.711e-02, 8.573e-02, 8.440e-02, 3.542e-05, 7.505e-02, 7.019e-02},
6256 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6257 : 0.0, 0.0, 0.19840, 0.19720, 0.19610, 0.19490, 0.19370, 0.19260, 0.19150, 0.19040, 0.18930, 0.18820, 0.18720,
6258 : 0.18610, 0.18510, 0.184, 0.183, 0.18250, 0.182, 0.18150, 0.181, 0.18050, 0.18, 0.17960, 0.17910, 0.17860,
6259 : 0.17810, 0.17760, 0.17720, 0.17670, 0.17620, 0.17580, 0.17530, 0.17480, 0.17440, 0.17390, 0.17350, 0.173, 0.17260,
6260 : 0.17210, 0.17170, 0.17120, 0.17080, 0.17040, 0.16990, 0.16950, 0.16910, 0.16870, 0.16820, 0.16740, 0.16660, 0.16570,
6261 : 0.16490, 0.16410, 0.16330, 0.16250, 0.16170, 0.16090, 0.16020, 0.15940, 0.15870, 0.15790, 0.15720, 0.15640, 0.15570,
6262 : 0.155, 0.15430, 0.15360, 0.15290, 0.15220, 0.15150, 0.15080, 0.15010, 0.14950, 0.14780, 0.14620, 0.14460, 0.14310,
6263 : 0.14160, 0.14010, 0.13870, 0.13730, 0.13590, 0.13450, 0.13190, 0.12940, 0.12690, 0.12460, 0.12230, 0.12010, 0.118,
6264 : 0.116, 0.11410, 0.11220, 0.11030, 0.10850, 0.10680, 0.10520, 3.542e-05, 9.352e-02, 8.746e-02},
6265 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6266 : 0.0, 0.0, 0.0, 0.21510, 0.21380, 0.21250, 0.21130, 0.21, 0.20880, 0.20760, 0.20640, 0.20520, 0.204,
6267 : 0.20290, 0.20180, 0.20060, 0.19950, 0.199, 0.19840, 0.19790, 0.19730, 0.19680, 0.19630, 0.19570, 0.19520, 0.19470,
6268 : 0.19420, 0.19360, 0.19310, 0.19260, 0.19210, 0.19160, 0.19110, 0.19060, 0.19010, 0.18960, 0.18910, 0.18860, 0.18810,
6269 : 0.18760, 0.18720, 0.18670, 0.18620, 0.18570, 0.18520, 0.18480, 0.18430, 0.18380, 0.18340, 0.18250, 0.18150, 0.18060,
6270 : 0.17980, 0.17890, 0.178, 0.17710, 0.17630, 0.17540, 0.17460, 0.17380, 0.17290, 0.17210, 0.17130, 0.17050, 0.16970,
6271 : 0.16890, 0.16820, 0.16740, 0.16660, 0.16590, 0.16510, 0.16440, 0.16360, 0.16290, 0.16110, 0.15940, 0.15770, 0.156,
6272 : 0.15430, 0.15270, 0.15110, 0.14960, 0.14810, 0.14660, 0.14370, 0.141, 0.13830, 0.13580, 0.13330, 0.13090, 0.12860,
6273 : 0.12640, 0.12430, 0.12220, 0.12020, 0.11830, 0.11640, 0.11460, 3.542e-05, 0.10190, 9.531e-02},
6274 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6275 : 0.0, 0.0, 0.23290, 0.23150, 0.23010, 0.22870, 0.22740, 0.22610, 0.22480, 0.22350, 0.22220, 0.221, 0.21970, 0.21850, 0.21730,
6276 : 0.21670, 0.21610, 0.21550, 0.21490, 0.21430, 0.21370, 0.21310, 0.21260, 0.212, 0.21140, 0.21090, 0.21030, 0.20970, 0.20920, 0.20860,
6277 : 0.20810, 0.20750, 0.207, 0.20640, 0.20590, 0.20540, 0.20480, 0.20430, 0.20380, 0.20330, 0.20270, 0.20220, 0.20170, 0.20120, 0.20070,
6278 : 0.20020, 0.19970, 0.19870, 0.19770, 0.19670, 0.19570, 0.19480, 0.19380, 0.19290, 0.19190, 0.191, 0.19010, 0.18920, 0.18830, 0.18740,
6279 : 0.18650, 0.18560, 0.18480, 0.18390, 0.18310, 0.18220, 0.18140, 0.18060, 0.17980, 0.179, 0.17820, 0.17740, 0.17540, 0.17350, 0.17160,
6280 : 0.16980, 0.168, 0.16630, 0.16450, 0.16290, 0.16120, 0.15960, 0.15650, 0.15350, 0.15060, 0.14780, 0.14510, 0.14250, 0.14, 0.13760,
6281 : 0.13530, 0.133, 0.13090, 0.12880, 0.12670, 0.12480, 3.542e-05, 0.11090, 0.1037},
6282 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6283 : 0.0, 0.0, 0.0, 0.25180, 0.25030, 0.24890, 0.24740, 0.246, 0.24450, 0.24310, 0.24170, 0.24040, 0.239, 0.23770, 0.23640,
6284 : 0.23570, 0.23510, 0.23440, 0.23380, 0.23310, 0.23250, 0.23190, 0.23120, 0.23060, 0.23, 0.22940, 0.22880, 0.22810, 0.22750, 0.22690,
6285 : 0.22630, 0.22570, 0.22510, 0.22460, 0.224, 0.22340, 0.22280, 0.22220, 0.22160, 0.22110, 0.22050, 0.21990, 0.21940, 0.21880, 0.21830,
6286 : 0.21770, 0.21720, 0.21610, 0.215, 0.21390, 0.21290, 0.21180, 0.21080, 0.20970, 0.20870, 0.20770, 0.20670, 0.20570, 0.20480, 0.20380,
6287 : 0.20280, 0.20190, 0.201, 0.2, 0.19910, 0.19820, 0.19730, 0.19640, 0.19550, 0.19460, 0.19370, 0.19290, 0.19080, 0.18870, 0.18660,
6288 : 0.18470, 0.18270, 0.18080, 0.17890, 0.17710, 0.17530, 0.17360, 0.17020, 0.16690, 0.16370, 0.16070, 0.15780, 0.155, 0.15230, 0.14960,
6289 : 0.14710, 0.14470, 0.14230, 0.14, 0.13780, 0.13560, 3.542e-05, 0.12060, 0.1128},
6290 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6291 : 0.0, 0.0, 0.0, 0.0, 0.27210, 0.27050, 0.26890, 0.26730, 0.26580, 0.26420, 0.26270, 0.26120, 0.25970, 0.25830, 0.25680,
6292 : 0.25610, 0.25540, 0.25470, 0.254, 0.25330, 0.25260, 0.25190, 0.25130, 0.25060, 0.24990, 0.24920, 0.24860, 0.24790, 0.24720, 0.24660,
6293 : 0.24590, 0.24530, 0.24460, 0.244, 0.24330, 0.24270, 0.24210, 0.24140, 0.24080, 0.24020, 0.23960, 0.239, 0.23840, 0.23770, 0.23710,
6294 : 0.23650, 0.23590, 0.23480, 0.23360, 0.23240, 0.23130, 0.23010, 0.229, 0.22790, 0.22680, 0.22570, 0.22460, 0.22350, 0.22250, 0.22140,
6295 : 0.22040, 0.21930, 0.21830, 0.21730, 0.21630, 0.21530, 0.21430, 0.21330, 0.21240, 0.21140, 0.21050, 0.20950, 0.20720, 0.205, 0.20270,
6296 : 0.20060, 0.19850, 0.19640, 0.19440, 0.19240, 0.19040, 0.18850, 0.18480, 0.18130, 0.17790, 0.17460, 0.17140, 0.16830, 0.16540, 0.16250,
6297 : 0.15980, 0.15710, 0.15460, 0.15210, 0.14970, 0.14730, 3.542e-05, 0.131, 0.1225},
6298 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6299 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.29370, 0.29190, 0.29020, 0.28850, 0.28690, 0.28520, 0.28360, 0.282, 0.28040, 0.27880,
6300 : 0.278, 0.27730, 0.27650, 0.27570, 0.275, 0.27420, 0.27350, 0.27270, 0.272, 0.27130, 0.27050, 0.26980, 0.26910, 0.26840, 0.26760,
6301 : 0.26690, 0.26620, 0.26550, 0.26480, 0.26410, 0.26340, 0.26280, 0.26210, 0.26140, 0.26070, 0.26, 0.25940, 0.25870, 0.258, 0.25740,
6302 : 0.25670, 0.25610, 0.25480, 0.25350, 0.25220, 0.251, 0.24980, 0.24850, 0.24730, 0.24610, 0.24490, 0.24370, 0.24260, 0.24140, 0.24030,
6303 : 0.23910, 0.238, 0.23690, 0.23580, 0.23470, 0.23360, 0.23260, 0.23150, 0.23050, 0.22940, 0.22840, 0.22740, 0.22490, 0.22240, 0.22,
6304 : 0.21770, 0.21540, 0.21310, 0.21090, 0.20880, 0.20660, 0.20460, 0.20060, 0.19670, 0.193, 0.18940, 0.186, 0.18270, 0.17950, 0.17640,
6305 : 0.17340, 0.17050, 0.16770, 0.165, 0.16240, 0.15990, 3.542e-05, 0.14210, 0.1329},
6306 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6307 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.31660, 0.31480, 0.31290, 0.31110, 0.30930, 0.30760, 0.30580, 0.30410, 0.30240,
6308 : 0.30150, 0.30070, 0.29990, 0.299, 0.29820, 0.29740, 0.29660, 0.29580, 0.295, 0.29420, 0.29340, 0.29260, 0.29180, 0.291, 0.29020,
6309 : 0.28940, 0.28870, 0.28790, 0.28720, 0.28640, 0.28560, 0.28490, 0.28420, 0.28340, 0.28270, 0.282, 0.28120, 0.28050, 0.27980, 0.27910,
6310 : 0.27840, 0.27760, 0.27620, 0.27490, 0.27350, 0.27210, 0.27080, 0.26940, 0.26810, 0.26680, 0.26550, 0.26430, 0.263, 0.26170, 0.26050,
6311 : 0.25930, 0.258, 0.25680, 0.25560, 0.25450, 0.25330, 0.25210, 0.251, 0.24980, 0.24870, 0.24760, 0.24650, 0.24380, 0.24110, 0.23850,
6312 : 0.23590, 0.23350, 0.231, 0.22860, 0.22630, 0.224, 0.22170, 0.21740, 0.21320, 0.20920, 0.20530, 0.20160, 0.198, 0.19450, 0.19120,
6313 : 0.18790, 0.18480, 0.18180, 0.17880, 0.176, 0.17330, 3.542e-05, 0.154, 0.1441},
6314 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6315 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.34110, 0.33910, 0.33710, 0.33520, 0.33320, 0.33130, 0.32940, 0.32760,
6316 : 0.32670, 0.32580, 0.32490, 0.324, 0.32310, 0.32220, 0.32130, 0.32040, 0.31950, 0.31870, 0.31780, 0.31690, 0.31610, 0.31520, 0.31440,
6317 : 0.31350, 0.31270, 0.31190, 0.31110, 0.31020, 0.30940, 0.30860, 0.30780, 0.307, 0.30620, 0.30540, 0.30460, 0.30380, 0.30310, 0.30230,
6318 : 0.30150, 0.30070, 0.29920, 0.29770, 0.29620, 0.29470, 0.29330, 0.29180, 0.29040, 0.289, 0.28760, 0.28620, 0.28480, 0.28350, 0.28210,
6319 : 0.28080, 0.27950, 0.27820, 0.27690, 0.27560, 0.27430, 0.27310, 0.27180, 0.27060, 0.26930, 0.26810, 0.26690, 0.264, 0.26110, 0.25830,
6320 : 0.25550, 0.25280, 0.25020, 0.24760, 0.245, 0.24260, 0.24010, 0.23540, 0.23090, 0.22650, 0.22230, 0.21830, 0.21440, 0.21060, 0.207,
6321 : 0.20350, 0.20010, 0.19680, 0.19360, 0.19060, 0.18760, 3.542e-05, 0.16680, 0.156},
6322 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6323 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.36710, 0.36490, 0.36280, 0.36070, 0.35860, 0.35660, 0.35460,
6324 : 0.35360, 0.35260, 0.35160, 0.35060, 0.34960, 0.34870, 0.34770, 0.34680, 0.34580, 0.34490, 0.34390, 0.343, 0.34210, 0.34110, 0.34020,
6325 : 0.33930, 0.33840, 0.33750, 0.33660, 0.33570, 0.33480, 0.334, 0.33310, 0.33220, 0.33130, 0.33050, 0.32960, 0.32880, 0.32790, 0.32710,
6326 : 0.32630, 0.32540, 0.32380, 0.32210, 0.32050, 0.31890, 0.31730, 0.31580, 0.31420, 0.31270, 0.31120, 0.30970, 0.30820, 0.30670, 0.30520,
6327 : 0.30380, 0.30240, 0.30090, 0.29950, 0.29820, 0.29680, 0.29540, 0.29410, 0.29270, 0.29140, 0.29010, 0.28880, 0.28560, 0.28250, 0.27940,
6328 : 0.27640, 0.27350, 0.27060, 0.26780, 0.26510, 0.26240, 0.25980, 0.25460, 0.24970, 0.245, 0.24050, 0.23610, 0.23190, 0.22780, 0.22390,
6329 : 0.22010, 0.21640, 0.21290, 0.20940, 0.20610, 0.20290, 3.542e-05, 0.18040, 0.1687},
6330 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6331 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.39460, 0.39230, 0.39010, 0.38780, 0.38560, 0.38340,
6332 : 0.38230, 0.38120, 0.38020, 0.37910, 0.37810, 0.377, 0.376, 0.37490, 0.37390, 0.37290, 0.37190, 0.37080, 0.36980, 0.36880, 0.36780,
6333 : 0.36690, 0.36590, 0.36490, 0.36390, 0.363, 0.362, 0.361, 0.36010, 0.35920, 0.35820, 0.35730, 0.35640, 0.35540, 0.35450, 0.35360,
6334 : 0.35270, 0.35180, 0.35, 0.34820, 0.34650, 0.34470, 0.343, 0.34130, 0.33970, 0.338, 0.33640, 0.33470, 0.33310, 0.33150, 0.32990,
6335 : 0.32840, 0.32680, 0.32530, 0.32380, 0.32230, 0.32080, 0.31930, 0.31780, 0.31640, 0.315, 0.31350, 0.31210, 0.30870, 0.30530, 0.302,
6336 : 0.29870, 0.29560, 0.29250, 0.28940, 0.28650, 0.28360, 0.28070, 0.27520, 0.26990, 0.26480, 0.25990, 0.25510, 0.25060, 0.24620, 0.24190,
6337 : 0.23780, 0.23390, 0.23, 0.22630, 0.22270, 0.21930, 3.542e-05, 0.19490, 0.1823},
6338 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6339 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.42390, 0.42140, 0.419, 0.41660, 0.41420,
6340 : 0.413, 0.41190, 0.41070, 0.40960, 0.40840, 0.40730, 0.40610, 0.405, 0.40390, 0.40280, 0.40170, 0.40060, 0.39950, 0.39840, 0.39730,
6341 : 0.39630, 0.39520, 0.39410, 0.39310, 0.392, 0.391, 0.39, 0.38890, 0.38790, 0.38690, 0.38590, 0.38490, 0.38390, 0.38290, 0.38190,
6342 : 0.38090, 0.37990, 0.378, 0.37610, 0.37420, 0.37230, 0.37050, 0.36860, 0.36680, 0.365, 0.36320, 0.36150, 0.35970, 0.358, 0.35630,
6343 : 0.35460, 0.35290, 0.35130, 0.34960, 0.348, 0.34640, 0.34480, 0.34320, 0.34160, 0.34010, 0.33860, 0.337, 0.33330, 0.32960, 0.32610,
6344 : 0.32260, 0.31910, 0.31580, 0.31250, 0.30930, 0.30620, 0.30310, 0.29710, 0.29140, 0.28590, 0.28060, 0.27540, 0.27050, 0.26580, 0.26120,
6345 : 0.25680, 0.25250, 0.24830, 0.24430, 0.24050, 0.23670, 3.542e-05, 0.21040, 0.1968},
6346 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6347 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.45490, 0.45230, 0.44970, 0.44710,
6348 : 0.44580, 0.44450, 0.44330, 0.442, 0.44080, 0.43960, 0.43830, 0.43710, 0.43590, 0.43470, 0.43350, 0.43230, 0.43110, 0.43, 0.42880,
6349 : 0.42760, 0.42650, 0.42530, 0.42420, 0.42310, 0.42190, 0.42080, 0.41970, 0.41860, 0.41750, 0.41640, 0.41530, 0.41420, 0.41320, 0.41210,
6350 : 0.411, 0.41, 0.40790, 0.40580, 0.40380, 0.40170, 0.39970, 0.39770, 0.39580, 0.39380, 0.39190, 0.39, 0.38810, 0.38620, 0.38440,
6351 : 0.38260, 0.38080, 0.379, 0.37720, 0.37540, 0.37370, 0.372, 0.37030, 0.36860, 0.36690, 0.36520, 0.36360, 0.35950, 0.35560, 0.35170,
6352 : 0.34790, 0.34420, 0.34060, 0.33710, 0.33360, 0.33020, 0.32690, 0.32050, 0.31430, 0.30830, 0.30260, 0.29710, 0.29180, 0.28660, 0.28170,
6353 : 0.27690, 0.27230, 0.26780, 0.26350, 0.25930, 0.25530, 3.542e-05, 0.22690, 0.2122},
6354 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6355 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.48780, 0.48490, 0.48210,
6356 : 0.48080, 0.47940, 0.478, 0.47670, 0.47530, 0.474, 0.47270, 0.47130, 0.47, 0.46870, 0.46740, 0.46620, 0.46490, 0.46360, 0.46230,
6357 : 0.46110, 0.45980, 0.45860, 0.45740, 0.45610, 0.45490, 0.45370, 0.45250, 0.45130, 0.45010, 0.44890, 0.44780, 0.44660, 0.44540, 0.44430,
6358 : 0.44310, 0.442, 0.43970, 0.43750, 0.43530, 0.43310, 0.43090, 0.42870, 0.42660, 0.42450, 0.42240, 0.42040, 0.41830, 0.41630, 0.41430,
6359 : 0.41240, 0.41040, 0.40850, 0.40650, 0.40460, 0.40280, 0.40090, 0.39910, 0.39720, 0.39540, 0.39360, 0.39190, 0.38750, 0.38320, 0.37910,
6360 : 0.375, 0.371, 0.36710, 0.36330, 0.35950, 0.35590, 0.35230, 0.34530, 0.33870, 0.33230, 0.32610, 0.32010, 0.31440, 0.30890, 0.30350,
6361 : 0.29840, 0.29340, 0.28860, 0.28390, 0.27940, 0.27510, 3.542e-05, 0.24450, 0.2287},
6362 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6363 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.52250, 0.51950,
6364 : 0.518, 0.51650, 0.51510, 0.51360, 0.51210, 0.51070, 0.50920, 0.50780, 0.50640, 0.505, 0.50360, 0.50220, 0.50080, 0.49940, 0.49810,
6365 : 0.49670, 0.49540, 0.494, 0.49270, 0.49140, 0.49010, 0.48870, 0.48740, 0.48610, 0.48490, 0.48360, 0.48230, 0.481, 0.47980, 0.47850,
6366 : 0.47730, 0.47610, 0.47360, 0.47120, 0.46880, 0.46640, 0.46410, 0.46180, 0.45950, 0.45720, 0.455, 0.45270, 0.45050, 0.44840, 0.44620,
6367 : 0.44410, 0.442, 0.43990, 0.43780, 0.43580, 0.43370, 0.43170, 0.42970, 0.42780, 0.42580, 0.42390, 0.422, 0.41730, 0.41270, 0.40820,
6368 : 0.40380, 0.39950, 0.39530, 0.39110, 0.38710, 0.38320, 0.37930, 0.37180, 0.36460, 0.35770, 0.35110, 0.34460, 0.33850, 0.33250, 0.32680,
6369 : 0.32120, 0.31590, 0.31070, 0.30570, 0.30080, 0.29610, 3.542e-05, 0.26320, 0.2461},
6370 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6371 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.55930,
6372 : 0.55770, 0.55610, 0.55450, 0.55290, 0.55130, 0.54980, 0.54820, 0.54670, 0.54510, 0.54360, 0.54210, 0.54060, 0.53910, 0.53760, 0.53610,
6373 : 0.53460, 0.53320, 0.53170, 0.53030, 0.52890, 0.52740, 0.526, 0.52460, 0.52320, 0.52180, 0.52050, 0.51910, 0.51770, 0.51640, 0.515,
6374 : 0.51370, 0.51230, 0.50970, 0.50710, 0.50450, 0.50190, 0.49940, 0.49690, 0.49440, 0.492, 0.48960, 0.48720, 0.48480, 0.48240, 0.48010,
6375 : 0.47780, 0.47550, 0.47330, 0.47110, 0.46880, 0.46670, 0.46450, 0.46230, 0.46020, 0.45810, 0.456, 0.454, 0.44890, 0.44390, 0.43910,
6376 : 0.43440, 0.42970, 0.42520, 0.42080, 0.41640, 0.41220, 0.408, 0.4, 0.39220, 0.38480, 0.37760, 0.37070, 0.36410, 0.35760, 0.35150,
6377 : 0.34550, 0.33970, 0.33410, 0.32870, 0.32350, 0.31850, 3.542e-05, 0.28310, 0.2647},
6378 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6379 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6380 : 0.57850, 0.57680, 0.57510, 0.57350, 0.57180, 0.57020, 0.56860, 0.567, 0.56540, 0.56380, 0.56220, 0.56070, 0.55910, 0.55760, 0.556,
6381 : 0.55450, 0.553, 0.55150, 0.55, 0.54850, 0.547, 0.54550, 0.54410, 0.54260, 0.54120, 0.53980, 0.53830, 0.53690, 0.53550, 0.53410,
6382 : 0.53270, 0.53130, 0.52860, 0.52590, 0.52320, 0.52050, 0.51790, 0.51530, 0.51270, 0.51020, 0.50770, 0.50520, 0.50270, 0.50030, 0.49790,
6383 : 0.49550, 0.49310, 0.49080, 0.48850, 0.48620, 0.48390, 0.48160, 0.47940, 0.47720, 0.475, 0.47290, 0.47070, 0.46550, 0.46030, 0.45530,
6384 : 0.45040, 0.44560, 0.44090, 0.43630, 0.43180, 0.42740, 0.423, 0.41470, 0.40660, 0.39890, 0.39150, 0.38430, 0.37740, 0.37080, 0.36440,
6385 : 0.35820, 0.35220, 0.34640, 0.34080, 0.33540, 0.33020, 3.542e-05, 0.29350, 0.2744},
6386 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6387 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6388 : 0.0, 0.59820, 0.59640, 0.59470, 0.593, 0.59130, 0.58960, 0.588, 0.58630, 0.58470, 0.583, 0.58140, 0.57980, 0.57820, 0.57660,
6389 : 0.575, 0.57340, 0.57180, 0.57030, 0.56870, 0.56720, 0.56570, 0.56420, 0.56270, 0.56120, 0.55970, 0.55820, 0.55670, 0.55520, 0.55380,
6390 : 0.55230, 0.55090, 0.548, 0.54520, 0.54240, 0.53970, 0.53690, 0.53420, 0.53160, 0.52890, 0.52630, 0.52370, 0.52120, 0.51870, 0.51620,
6391 : 0.51370, 0.51120, 0.50880, 0.50640, 0.504, 0.50170, 0.49930, 0.497, 0.49470, 0.49250, 0.49020, 0.488, 0.48250, 0.47720, 0.472,
6392 : 0.46690, 0.46190, 0.457, 0.45220, 0.44760, 0.443, 0.43850, 0.42980, 0.42150, 0.41350, 0.40580, 0.39840, 0.39120, 0.38430, 0.37770,
6393 : 0.37130, 0.36510, 0.35910, 0.35330, 0.34760, 0.34220, 3.542e-05, 0.30420, 0.2844},
6394 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6395 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6396 : 0.0, 0.0, 0.61840, 0.61660, 0.61480, 0.61310, 0.61130, 0.60960, 0.60790, 0.60620, 0.60450, 0.60280, 0.60110, 0.59940, 0.59780,
6397 : 0.59610, 0.59450, 0.59280, 0.59120, 0.58960, 0.588, 0.58640, 0.58490, 0.58330, 0.58170, 0.58020, 0.57860, 0.57710, 0.57560, 0.57410,
6398 : 0.57260, 0.57110, 0.56810, 0.56520, 0.56230, 0.55940, 0.55660, 0.55380, 0.551, 0.54830, 0.54560, 0.54290, 0.54020, 0.53760, 0.535,
6399 : 0.53240, 0.52990, 0.52740, 0.52490, 0.52240, 0.52, 0.51750, 0.51510, 0.51280, 0.51040, 0.50810, 0.50580, 0.50010, 0.49460, 0.48920,
6400 : 0.48390, 0.47870, 0.47360, 0.46870, 0.46390, 0.45910, 0.45450, 0.44550, 0.43680, 0.42850, 0.42050, 0.41290, 0.40540, 0.39830, 0.39140,
6401 : 0.38470, 0.37830, 0.37210, 0.36610, 0.36030, 0.35460, 3.542e-05, 0.31520, 0.2948},
6402 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6403 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6404 : 0.0, 0.0, 0.0, 0.63920, 0.63740, 0.63550, 0.63370, 0.63190, 0.63010, 0.62830, 0.62660, 0.62480, 0.623, 0.62130, 0.61960,
6405 : 0.61790, 0.61620, 0.61450, 0.61280, 0.61110, 0.60950, 0.60780, 0.60620, 0.60460, 0.60290, 0.60130, 0.59970, 0.59810, 0.59660, 0.595,
6406 : 0.59340, 0.59190, 0.58880, 0.58580, 0.58270, 0.57980, 0.57680, 0.57390, 0.571, 0.56820, 0.56540, 0.56260, 0.55990, 0.55710, 0.55440,
6407 : 0.55180, 0.54910, 0.54650, 0.54390, 0.54140, 0.53880, 0.53630, 0.53380, 0.53140, 0.52890, 0.52650, 0.52410, 0.51820, 0.51250, 0.50690,
6408 : 0.50140, 0.496, 0.49080, 0.48570, 0.48060, 0.47570, 0.47090, 0.46160, 0.45260, 0.444, 0.43570, 0.42780, 0.42010, 0.41270, 0.40550,
6409 : 0.39860, 0.392, 0.38550, 0.37930, 0.37330, 0.36740, 3.542e-05, 0.32660, 0.3054},
6410 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6411 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6412 : 0.0, 0.0, 0.0, 0.0, 0.66060, 0.65870, 0.65680, 0.65490, 0.653, 0.65120, 0.64930, 0.64750, 0.64570, 0.64390, 0.64210,
6413 : 0.64030, 0.63850, 0.63680, 0.635, 0.63330, 0.63160, 0.62990, 0.62820, 0.62650, 0.62480, 0.62310, 0.62150, 0.61980, 0.61820, 0.61650,
6414 : 0.61490, 0.61330, 0.61010, 0.607, 0.60380, 0.60070, 0.59770, 0.59470, 0.59170, 0.58870, 0.58580, 0.58290, 0.58010, 0.57720, 0.57440,
6415 : 0.57170, 0.56890, 0.56620, 0.56350, 0.56090, 0.55820, 0.55560, 0.55310, 0.55050, 0.548, 0.54550, 0.543, 0.53690, 0.53090, 0.52510,
6416 : 0.51940, 0.51390, 0.50840, 0.50310, 0.49790, 0.49280, 0.48780, 0.47820, 0.46890, 0.46, 0.45140, 0.44310, 0.43510, 0.42750, 0.42010,
6417 : 0.41290, 0.406, 0.39930, 0.39290, 0.38660, 0.38060, 3.542e-05, 0.33830, 0.3163},
6418 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6419 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6420 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.68250, 0.68050, 0.67860, 0.67660, 0.67470, 0.67280, 0.67090, 0.669, 0.66710, 0.66530,
6421 : 0.66340, 0.66160, 0.65980, 0.658, 0.65620, 0.65440, 0.65260, 0.65080, 0.64910, 0.64730, 0.64560, 0.64390, 0.64210, 0.64040, 0.63870,
6422 : 0.63710, 0.63540, 0.63210, 0.62880, 0.62550, 0.62230, 0.61920, 0.616, 0.61290, 0.60990, 0.60690, 0.60390, 0.60090, 0.598, 0.59510,
6423 : 0.59220, 0.58930, 0.58650, 0.58370, 0.581, 0.57830, 0.57560, 0.57290, 0.57020, 0.56760, 0.565, 0.56240, 0.55610, 0.54990, 0.54390,
6424 : 0.538, 0.53230, 0.52660, 0.52110, 0.51570, 0.51040, 0.50530, 0.49520, 0.48560, 0.47640, 0.46750, 0.45890, 0.45070, 0.44270, 0.435,
6425 : 0.42760, 0.42050, 0.41360, 0.40690, 0.40040, 0.39410, 3.542e-05, 0.35030, 0.3276},
6426 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6427 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6428 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.705, 0.703, 0.701, 0.699, 0.697, 0.695, 0.69310, 0.69110, 0.68920,
6429 : 0.68730, 0.68530, 0.68350, 0.68160, 0.67970, 0.67780, 0.676, 0.67420, 0.67230, 0.67050, 0.66870, 0.66690, 0.66510, 0.66340, 0.66160,
6430 : 0.65990, 0.65810, 0.65470, 0.65130, 0.64790, 0.64460, 0.64130, 0.63810, 0.63480, 0.63170, 0.62850, 0.62540, 0.62230, 0.61930, 0.61630,
6431 : 0.61330, 0.61040, 0.60740, 0.60460, 0.60170, 0.59890, 0.59610, 0.59330, 0.59050, 0.58780, 0.58510, 0.58250, 0.57590, 0.56950, 0.56330,
6432 : 0.55710, 0.55120, 0.54530, 0.53960, 0.534, 0.52860, 0.52320, 0.51280, 0.50280, 0.49330, 0.484, 0.47520, 0.46660, 0.45840, 0.45050,
6433 : 0.44280, 0.43540, 0.42820, 0.42130, 0.41460, 0.40810, 3.542e-05, 0.36270, 0.3391},
6434 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6435 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6436 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.72820, 0.72610, 0.724, 0.72190, 0.71990, 0.71780, 0.71580, 0.71380,
6437 : 0.71180, 0.70980, 0.70790, 0.70590, 0.704, 0.702, 0.70010, 0.69820, 0.69630, 0.69440, 0.69250, 0.69070, 0.68880, 0.687, 0.68520,
6438 : 0.68340, 0.68160, 0.678, 0.67450, 0.671, 0.66750, 0.66410, 0.66070, 0.65740, 0.65410, 0.65080, 0.64760, 0.64440, 0.64130, 0.63810,
6439 : 0.63510, 0.632, 0.629, 0.626, 0.623, 0.62010, 0.61720, 0.61430, 0.61150, 0.60860, 0.60580, 0.60310, 0.59630, 0.58960, 0.58320,
6440 : 0.57680, 0.57060, 0.56460, 0.55870, 0.55290, 0.54720, 0.54170, 0.53090, 0.52060, 0.51060, 0.50110, 0.49190, 0.48310, 0.47450, 0.46630,
6441 : 0.45840, 0.45070, 0.44330, 0.43610, 0.42920, 0.42240, 3.542e-05, 0.37540, 0.3511},
6442 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6443 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6444 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75190, 0.74970, 0.74760, 0.74550, 0.74330, 0.74120, 0.73920,
6445 : 0.73710, 0.735, 0.733, 0.73090, 0.72890, 0.72690, 0.72490, 0.723, 0.721, 0.719, 0.71710, 0.71520, 0.71320, 0.71130, 0.70940,
6446 : 0.70760, 0.70570, 0.702, 0.69830, 0.69470, 0.69110, 0.68760, 0.68410, 0.68060, 0.67720, 0.67380, 0.67050, 0.66720, 0.66390, 0.66060,
6447 : 0.65740, 0.65430, 0.65110, 0.648, 0.645, 0.64190, 0.63890, 0.63590, 0.633, 0.63010, 0.62720, 0.62430, 0.61730, 0.61040, 0.60370,
6448 : 0.59710, 0.59070, 0.58440, 0.57830, 0.57230, 0.56640, 0.56070, 0.54950, 0.53880, 0.52850, 0.51870, 0.50910, 0.5, 0.49120, 0.48260,
6449 : 0.47440, 0.46650, 0.45880, 0.45140, 0.44420, 0.43720, 3.542e-05, 0.38860, 0.3633},
6450 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6451 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6452 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77630, 0.774, 0.77180, 0.76960, 0.76740, 0.76530,
6453 : 0.76310, 0.761, 0.75890, 0.75670, 0.75470, 0.75260, 0.75050, 0.74840, 0.74640, 0.74440, 0.74240, 0.74040, 0.73840, 0.73640, 0.73440,
6454 : 0.73250, 0.73050, 0.72670, 0.72290, 0.71910, 0.71540, 0.71170, 0.70810, 0.70450, 0.701, 0.69750, 0.694, 0.69060, 0.68720, 0.68380,
6455 : 0.68050, 0.67720, 0.674, 0.67070, 0.66760, 0.66440, 0.66130, 0.65820, 0.65510, 0.65210, 0.64910, 0.64610, 0.63880, 0.63170, 0.62480,
6456 : 0.618, 0.61130, 0.60480, 0.59850, 0.59230, 0.58620, 0.58020, 0.56870, 0.55760, 0.547, 0.53670, 0.52690, 0.51740, 0.50820, 0.49940,
6457 : 0.49090, 0.48270, 0.47470, 0.46710, 0.45960, 0.45240, 3.542e-05, 0.40210, 0.3759},
6458 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6459 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6460 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.80130, 0.799, 0.79670, 0.79440, 0.79220,
6461 : 0.78990, 0.78770, 0.78550, 0.78330, 0.78110, 0.779, 0.77680, 0.77470, 0.77260, 0.77050, 0.76840, 0.76630, 0.76420, 0.76220, 0.76010,
6462 : 0.75810, 0.75610, 0.75210, 0.74820, 0.74430, 0.74040, 0.73660, 0.73280, 0.72910, 0.72540, 0.72180, 0.71820, 0.71470, 0.71110, 0.70770,
6463 : 0.70420, 0.70080, 0.69740, 0.69410, 0.69080, 0.68750, 0.68430, 0.68110, 0.67790, 0.67480, 0.67170, 0.66860, 0.661, 0.65370, 0.64650,
6464 : 0.63940, 0.63250, 0.62580, 0.61920, 0.61280, 0.60650, 0.60030, 0.58840, 0.57690, 0.56590, 0.55530, 0.54510, 0.53530, 0.52580, 0.51670,
6465 : 0.50790, 0.49940, 0.49110, 0.48320, 0.47550, 0.468, 3.542e-05, 0.41590, 0.3889},
6466 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6467 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6468 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.82690, 0.82460, 0.82220, 0.81990,
6469 : 0.81750, 0.81520, 0.81290, 0.81070, 0.80840, 0.80620, 0.80390, 0.80170, 0.79950, 0.79730, 0.79520, 0.793, 0.79090, 0.78870, 0.78660,
6470 : 0.78450, 0.78240, 0.77830, 0.77420, 0.77010, 0.76610, 0.76220, 0.75830, 0.75440, 0.75060, 0.74690, 0.74310, 0.73940, 0.73580, 0.73220,
6471 : 0.72860, 0.72510, 0.72160, 0.71810, 0.71470, 0.71130, 0.708, 0.70470, 0.70140, 0.69810, 0.69490, 0.69170, 0.68390, 0.67630, 0.66880,
6472 : 0.66150, 0.65440, 0.64740, 0.64060, 0.63390, 0.62740, 0.621, 0.60870, 0.59680, 0.58540, 0.57440, 0.56390, 0.55370, 0.54390, 0.53450,
6473 : 0.52530, 0.51650, 0.508, 0.49980, 0.49180, 0.48410, 3.542e-05, 0.43020, 0.4023},
6474 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6475 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6476 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.85320, 0.85080, 0.84840,
6477 : 0.846, 0.84360, 0.84120, 0.83880, 0.83650, 0.83410, 0.83180, 0.82950, 0.82730, 0.825, 0.82270, 0.82050, 0.81830, 0.81610, 0.81390,
6478 : 0.81170, 0.80950, 0.80520, 0.801, 0.79680, 0.79260, 0.78850, 0.78450, 0.78050, 0.77650, 0.77260, 0.76880, 0.76490, 0.76120, 0.75740,
6479 : 0.75370, 0.75010, 0.74650, 0.74290, 0.73930, 0.73580, 0.73240, 0.72890, 0.72550, 0.72210, 0.71880, 0.71550, 0.70740, 0.69950, 0.69180,
6480 : 0.68420, 0.67680, 0.66960, 0.66260, 0.65570, 0.64890, 0.64230, 0.62950, 0.61720, 0.60540, 0.59410, 0.58310, 0.57260, 0.56250, 0.55270,
6481 : 0.54330, 0.53420, 0.52540, 0.51690, 0.50860, 0.50060, 3.542e-05, 0.44490, 0.416},
6482 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6483 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6484 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.88020, 0.87770,
6485 : 0.87520, 0.87270, 0.87030, 0.86780, 0.86540, 0.86290, 0.86050, 0.85820, 0.85580, 0.85340, 0.85110, 0.84880, 0.84650, 0.84420, 0.84190,
6486 : 0.83960, 0.83740, 0.83290, 0.82850, 0.82420, 0.81990, 0.81560, 0.81140, 0.80730, 0.80320, 0.79920, 0.79510, 0.79120, 0.78730, 0.78340,
6487 : 0.77960, 0.77580, 0.772, 0.76830, 0.76460, 0.761, 0.75740, 0.75390, 0.75030, 0.74680, 0.74340, 0.74, 0.73160, 0.72340, 0.71540,
6488 : 0.70760, 0.69990, 0.69240, 0.68510, 0.678, 0.671, 0.66420, 0.65090, 0.63820, 0.626, 0.61430, 0.603, 0.59210, 0.58160, 0.57150,
6489 : 0.56170, 0.55230, 0.54320, 0.53440, 0.52590, 0.51760, 3.542e-05, 0.46, 0.4301},
6490 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6491 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6492 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.90790,
6493 : 0.90530, 0.90270, 0.90020, 0.89760, 0.89510, 0.89260, 0.89010, 0.88760, 0.88520, 0.88270, 0.88030, 0.87790, 0.87550, 0.87310, 0.87070,
6494 : 0.86840, 0.86610, 0.86140, 0.85690, 0.85240, 0.84790, 0.84350, 0.83920, 0.83490, 0.83060, 0.82640, 0.82230, 0.81820, 0.81410, 0.81010,
6495 : 0.80610, 0.80220, 0.79830, 0.79450, 0.79070, 0.78690, 0.78320, 0.77950, 0.77590, 0.77220, 0.76870, 0.76510, 0.75640, 0.74790, 0.73970,
6496 : 0.73160, 0.72370, 0.71590, 0.70840, 0.701, 0.69380, 0.68670, 0.673, 0.65980, 0.64720, 0.635, 0.62340, 0.61210, 0.60130, 0.59080,
6497 : 0.58070, 0.571, 0.56150, 0.55240, 0.54360, 0.53510, 3.542e-05, 0.47550, 0.4446},
6498 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6499 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6500 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6501 : 0.93630, 0.93360, 0.931, 0.92830, 0.92570, 0.92310, 0.92050, 0.91790, 0.91540, 0.91280, 0.91030, 0.90780, 0.90530, 0.90290, 0.90040,
6502 : 0.898, 0.89560, 0.89080, 0.886, 0.88140, 0.87680, 0.87220, 0.86770, 0.86320, 0.85880, 0.85450, 0.85020, 0.84590, 0.84170, 0.83760,
6503 : 0.83340, 0.82940, 0.82540, 0.82140, 0.81740, 0.81350, 0.80970, 0.80590, 0.80210, 0.79840, 0.79460, 0.791, 0.782, 0.77320, 0.76460,
6504 : 0.75620, 0.74810, 0.74010, 0.73220, 0.72460, 0.71710, 0.70980, 0.69560, 0.682, 0.66890, 0.65640, 0.64430, 0.63270, 0.62150, 0.61060,
6505 : 0.60020, 0.59010, 0.58040, 0.571, 0.56190, 0.553, 3.542e-05, 0.49140, 0.4594},
6506 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6507 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6508 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6509 : 0.0, 0.96540, 0.96260, 0.95990, 0.95720, 0.95450, 0.95180, 0.94910, 0.94650, 0.94380, 0.94120, 0.93860, 0.93610, 0.93350, 0.93090,
6510 : 0.92840, 0.92590, 0.92090, 0.916, 0.91120, 0.90640, 0.90170, 0.897, 0.89240, 0.88780, 0.88330, 0.87890, 0.87450, 0.87010, 0.86580,
6511 : 0.86150, 0.85730, 0.85320, 0.849, 0.845, 0.84090, 0.83690, 0.833, 0.82910, 0.82520, 0.82140, 0.81760, 0.80830, 0.79920, 0.79030,
6512 : 0.78160, 0.77310, 0.76490, 0.75680, 0.74890, 0.74110, 0.73360, 0.71890, 0.70480, 0.69130, 0.67830, 0.66580, 0.65380, 0.64220, 0.631,
6513 : 0.62020, 0.60980, 0.59970, 0.59, 0.58060, 0.57150, 3.542e-05, 0.50780, 0.4747},
6514 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6515 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6516 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6517 : 0.0, 0.0, 0.99520, 0.99240, 0.98950, 0.98670, 0.984, 0.98120, 0.97840, 0.97570, 0.973, 0.97030, 0.96760, 0.965, 0.96230,
6518 : 0.95970, 0.95710, 0.952, 0.94690, 0.94190, 0.93690, 0.932, 0.92720, 0.92240, 0.91770, 0.913, 0.90840, 0.90380, 0.89930, 0.89480,
6519 : 0.89040, 0.88610, 0.88170, 0.87750, 0.87320, 0.86910, 0.86490, 0.86080, 0.85680, 0.85280, 0.84880, 0.84490, 0.83520, 0.82580, 0.81670,
6520 : 0.80770, 0.79890, 0.79040, 0.782, 0.77380, 0.76580, 0.758, 0.74280, 0.72830, 0.71430, 0.70090, 0.68790, 0.67550, 0.66350, 0.652,
6521 : 0.64080, 0.63, 0.61960, 0.60960, 0.59980, 0.59040, 3.542e-05, 0.52460, 0.4905},
6522 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6523 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6524 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6525 : 0.0, 0.0, 0.0, 1.026, 1.023, 1.02, 1.017, 1.014, 1.011, 1.008, 1.006, 1.003, 1.0, 0.99740, 0.99460,
6526 : 0.99190, 0.98920, 0.98390, 0.97860, 0.97340, 0.96830, 0.96320, 0.95820, 0.95320, 0.94830, 0.94350, 0.93870, 0.934, 0.92930, 0.92470,
6527 : 0.92010, 0.91560, 0.91110, 0.90670, 0.90230, 0.898, 0.89370, 0.88950, 0.88530, 0.88110, 0.877, 0.873, 0.863, 0.85330, 0.84380,
6528 : 0.83450, 0.82540, 0.81660, 0.80790, 0.79940, 0.79120, 0.78310, 0.76740, 0.75230, 0.73790, 0.724, 0.71060, 0.69780, 0.68540, 0.67350,
6529 : 0.66190, 0.65080, 0.64010, 0.62970, 0.61960, 0.60990, 3.542e-05, 0.54180, 0.5066},
6530 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6531 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6532 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6533 : 0.0, 0.0, 0.0, 0.0, 1.057, 1.054, 1.051, 1.048, 1.045, 1.042, 1.039, 1.036, 1.034, 1.031, 1.028,
6534 : 1.025, 1.022, 1.017, 1.011, 1.006, 1.0, 0.99520, 0.99, 0.98490, 0.97980, 0.97480, 0.96990, 0.965, 0.96010, 0.95530,
6535 : 0.95060, 0.94590, 0.94130, 0.93670, 0.93220, 0.92770, 0.92330, 0.91890, 0.91460, 0.91030, 0.906, 0.90180, 0.89150, 0.88140, 0.87160,
6536 : 0.862, 0.85260, 0.84350, 0.83450, 0.82580, 0.81720, 0.80880, 0.79260, 0.77710, 0.76210, 0.74780, 0.734, 0.72070, 0.70790, 0.69550,
6537 : 0.68360, 0.67210, 0.661, 0.65030, 0.63990, 0.62980, 3.542e-05, 0.55960, 0.5232},
6538 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6539 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6540 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6541 : 0.0, 0.0, 0.0, 0.0, 0.0, 1.089, 1.086, 1.083, 1.08, 1.077, 1.074, 1.071, 1.068, 1.065, 1.062,
6542 : 1.059, 1.056, 1.05, 1.045, 1.039, 1.034, 1.028, 1.023, 1.017, 1.012, 1.007, 1.002, 0.99680, 0.99180, 0.98680,
6543 : 0.982, 0.97710, 0.97230, 0.96760, 0.96290, 0.95830, 0.95370, 0.94910, 0.94470, 0.94020, 0.93580, 0.93150, 0.92080, 0.91040, 0.90020,
6544 : 0.89030, 0.88060, 0.87110, 0.86190, 0.85280, 0.844, 0.83530, 0.81850, 0.80250, 0.787, 0.77220, 0.75790, 0.74420, 0.731, 0.71820,
6545 : 0.70590, 0.694, 0.68260, 0.67150, 0.66070, 0.65030, 3.542e-05, 0.57780, 0.5402},
6546 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6547 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6548 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6549 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.122, 1.119, 1.116, 1.113, 1.109, 1.106, 1.103, 1.1, 1.097,
6550 : 1.094, 1.091, 1.085, 1.079, 1.073, 1.068, 1.062, 1.056, 1.051, 1.045, 1.04, 1.035, 1.03, 1.024, 1.019,
6551 : 1.014, 1.009, 1.004, 0.99930, 0.99440, 0.98960, 0.98490, 0.98020, 0.97560, 0.971, 0.96640, 0.96190, 0.95090, 0.94010, 0.92960,
6552 : 0.91930, 0.90930, 0.89950, 0.88990, 0.88060, 0.87140, 0.86250, 0.84510, 0.82850, 0.81260, 0.79730, 0.78250, 0.76830, 0.75470, 0.74150,
6553 : 0.72880, 0.71650, 0.70470, 0.69320, 0.68210, 0.67140, 3.542e-05, 0.59640, 0.5576},
6554 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6555 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6556 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6557 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.156, 1.152, 1.149, 1.146, 1.143, 1.139, 1.136, 1.133,
6558 : 1.13, 1.127, 1.121, 1.115, 1.109, 1.103, 1.097, 1.091, 1.085, 1.08, 1.074, 1.069, 1.063, 1.058, 1.052,
6559 : 1.047, 1.042, 1.037, 1.032, 1.027, 1.022, 1.017, 1.012, 1.007, 1.003, 0.99790, 0.99320, 0.98180, 0.97060, 0.95970,
6560 : 0.94910, 0.93880, 0.92860, 0.91880, 0.90910, 0.89960, 0.89040, 0.87250, 0.85530, 0.83880, 0.823, 0.80780, 0.79310, 0.779, 0.76540,
6561 : 0.75230, 0.73960, 0.72740, 0.71550, 0.70410, 0.693, 3.542e-05, 0.61560, 0.5755},
6562 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6563 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6564 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6565 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19, 1.187, 1.183, 1.18, 1.177, 1.173, 1.17,
6566 : 1.167, 1.164, 1.157, 1.151, 1.145, 1.139, 1.133, 1.127, 1.121, 1.115, 1.109, 1.103, 1.098, 1.092, 1.087,
6567 : 1.081, 1.076, 1.071, 1.065, 1.06, 1.055, 1.05, 1.045, 1.04, 1.035, 1.03, 1.025, 1.013, 1.002, 0.99070,
6568 : 0.97970, 0.969, 0.95860, 0.94840, 0.93840, 0.92860, 0.919, 0.90050, 0.88280, 0.86580, 0.84940, 0.83370, 0.81860, 0.804, 0.78990,
6569 : 0.77640, 0.76330, 0.75070, 0.73840, 0.72660, 0.71520, 3.542e-05, 0.63530, 0.5939},
6570 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6571 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6572 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6573 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.226, 1.222, 1.219, 1.215, 1.212, 1.208,
6574 : 1.205, 1.202, 1.195, 1.188, 1.182, 1.176, 1.169, 1.163, 1.157, 1.151, 1.145, 1.139, 1.133, 1.127, 1.122,
6575 : 1.116, 1.111, 1.105, 1.1, 1.094, 1.089, 1.084, 1.079, 1.073, 1.068, 1.063, 1.058, 1.046, 1.034, 1.023,
6576 : 1.011, 1.0, 0.98930, 0.97870, 0.96840, 0.95830, 0.94840, 0.92930, 0.911, 0.89340, 0.87650, 0.86030, 0.84470, 0.82960, 0.81510,
6577 : 0.80110, 0.78760, 0.77460, 0.76190, 0.74970, 0.73790, 3.542e-05, 0.65550, 0.6128},
6578 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6579 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6580 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6581 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.262, 1.258, 1.254, 1.251, 1.247,
6582 : 1.244, 1.24, 1.234, 1.227, 1.22, 1.213, 1.207, 1.201, 1.194, 1.188, 1.182, 1.176, 1.17, 1.164, 1.158,
6583 : 1.152, 1.146, 1.141, 1.135, 1.129, 1.124, 1.118, 1.113, 1.108, 1.102, 1.097, 1.092, 1.08, 1.067, 1.055,
6584 : 1.043, 1.032, 1.021, 1.01, 0.99920, 0.98880, 0.97860, 0.95890, 0.93990, 0.92180, 0.90440, 0.88760, 0.87150, 0.85590, 0.84090,
6585 : 0.82650, 0.81260, 0.79910, 0.78610, 0.77350, 0.76130, 3.542e-05, 0.67620, 0.6321},
6586 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6587 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6588 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6589 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.299, 1.295, 1.291, 1.288,
6590 : 1.284, 1.28, 1.273, 1.266, 1.259, 1.252, 1.246, 1.239, 1.232, 1.226, 1.22, 1.213, 1.207, 1.201, 1.195,
6591 : 1.189, 1.183, 1.177, 1.171, 1.165, 1.16, 1.154, 1.149, 1.143, 1.138, 1.132, 1.127, 1.114, 1.101, 1.089,
6592 : 1.077, 1.065, 1.053, 1.042, 1.031, 1.02, 1.01, 0.98920, 0.96960, 0.95090, 0.93290, 0.91560, 0.89890, 0.88290, 0.86740,
6593 : 0.85250, 0.83810, 0.82420, 0.81080, 0.79780, 0.78520, 3.542e-05, 0.69740, 0.652},
6594 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6595 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6596 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6597 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.337, 1.333, 1.329,
6598 : 1.325, 1.321, 1.314, 1.307, 1.3, 1.292, 1.285, 1.279, 1.272, 1.265, 1.258, 1.252, 1.245, 1.239, 1.233,
6599 : 1.227, 1.22, 1.214, 1.208, 1.202, 1.196, 1.191, 1.185, 1.179, 1.174, 1.168, 1.163, 1.149, 1.136, 1.123,
6600 : 1.111, 1.098, 1.086, 1.075, 1.063, 1.052, 1.041, 1.02, 1.0, 0.98080, 0.96220, 0.94430, 0.92710, 0.91060, 0.89460,
6601 : 0.87920, 0.86440, 0.85, 0.83620, 0.82280, 0.80980, 3.542e-05, 0.7192, 0.6723},
6602 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6603 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6604 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6605 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.375, 1.371,
6606 : 1.367, 1.364, 1.356, 1.348, 1.341, 1.334, 1.326, 1.319, 1.312, 1.305, 1.298, 1.292, 1.285, 1.278, 1.272,
6607 : 1.265, 1.259, 1.253, 1.246, 1.24, 1.234, 1.228, 1.222, 1.216, 1.211, 1.205, 1.199, 1.185, 1.172, 1.158,
6608 : 1.145, 1.133, 1.12, 1.108, 1.097, 1.085, 1.074, 1.052, 1.031, 1.011, 0.99220, 0.97380, 0.956, 0.939, 0.92250,
6609 : 0.90660, 0.89130, 0.87650, 0.86220, 0.84840, 0.835, 3.542e-05, 0.7416, 0.6932},
6610 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6611 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6612 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6613 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.415,
6614 : 1.411, 1.407, 1.399, 1.391, 1.383, 1.376, 1.368, 1.361, 1.354, 1.346, 1.339, 1.332, 1.325, 1.319, 1.312,
6615 : 1.305, 1.299, 1.292, 1.286, 1.279, 1.273, 1.267, 1.261, 1.255, 1.249, 1.243, 1.237, 1.222, 1.208, 1.195,
6616 : 1.181, 1.168, 1.155, 1.143, 1.131, 1.119, 1.107, 1.085, 1.063, 1.043, 1.023, 1.004, 0.98570, 0.96810, 0.95110,
6617 : 0.93470, 0.91890, 0.90360, 0.88890, 0.87460, 0.86080, 3.542e-05, 0.7645, 0.7146},
6618 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6619 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6620 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6621 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6622 : 1.455, 1.451, 1.443, 1.435, 1.427, 1.419, 1.411, 1.404, 1.396, 1.389, 1.381, 1.374, 1.367, 1.36, 1.353,
6623 : 1.346, 1.339, 1.332, 1.326, 1.319, 1.313, 1.306, 1.3, 1.294, 1.287, 1.281, 1.275, 1.26, 1.246, 1.232,
6624 : 1.218, 1.204, 1.191, 1.178, 1.166, 1.154, 1.142, 1.118, 1.096, 1.075, 1.055, 1.035, 1.016, 0.99790, 0.98040,
6625 : 0.96350, 0.94720, 0.93140, 0.91620, 0.90150, 0.88730, 3.542e-05, 0.7879, 0.7365},
6626 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6627 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6628 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6629 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.497, 1.488, 1.48, 1.472, 1.464, 1.456, 1.448,
6630 : 1.44, 1.432, 1.425, 1.417, 1.41, 1.402, 1.395, 1.388, 1.381, 1.374, 1.367, 1.36, 1.354, 1.347, 1.34, 1.334, 1.327,
6631 : 1.321, 1.315, 1.299, 1.284, 1.27, 1.255, 1.242, 1.228, 1.215, 1.202, 1.189, 1.177, 1.153, 1.13, 1.108, 1.087, 1.067,
6632 : 1.047, 1.028, 1.01, 0.993, 0.97620, 0.95990, 0.94420, 0.92910, 0.91440, 3.542e-05, 0.812, 0.759},
6633 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6634 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6635 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6636 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.583, 1.574, 1.565, 1.556, 1.548, 1.539,
6637 : 1.531, 1.522, 1.514, 1.506, 1.498, 1.49, 1.483, 1.475, 1.468, 1.46, 1.453, 1.445, 1.438, 1.431, 1.424, 1.417, 1.41,
6638 : 1.404, 1.397, 1.38, 1.364, 1.349, 1.334, 1.319, 1.304, 1.29, 1.276, 1.263, 1.25, 1.224, 1.2, 1.177, 1.154, 1.133,
6639 : 1.112, 1.092, 1.073, 1.054, 1.036, 1.019, 1.002, 0.98630, 0.97070, 3.542e-05, 0.8619, 0.8056},
6640 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6641 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6642 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6643 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.673, 1.663, 1.654, 1.644, 1.635,
6644 : 1.626, 1.617, 1.609, 1.6, 1.592, 1.583, 1.575, 1.567, 1.559, 1.551, 1.543, 1.535, 1.527, 1.52, 1.512, 1.505, 1.498,
6645 : 1.49, 1.483, 1.466, 1.449, 1.432, 1.416, 1.4, 1.385, 1.37, 1.355, 1.341, 1.327, 1.299, 1.273, 1.249, 1.225, 1.202,
6646 : 1.18, 1.159, 1.138, 1.119, 1.1, 1.081, 1.063, 1.046, 1.03, 3.542e-05, 0.9143, 0.8546},
6647 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6648 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6649 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6650 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.766, 1.756, 1.746, 1.737,
6651 : 1.727, 1.717, 1.708, 1.699, 1.69, 1.681, 1.672, 1.663, 1.655, 1.646, 1.638, 1.629, 1.621, 1.613, 1.605, 1.597, 1.589,
6652 : 1.582, 1.574, 1.555, 1.537, 1.519, 1.502, 1.485, 1.469, 1.453, 1.437, 1.422, 1.407, 1.378, 1.351, 1.324, 1.299, 1.274,
6653 : 1.251, 1.229, 1.207, 1.186, 1.166, 1.146, 1.128, 1.109, 1.092, 3.542e-05, 0.9692, 0.9059},
6654 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6655 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6656 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6657 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.864, 1.854, 1.843,
6658 : 1.833, 1.823, 1.813, 1.803, 1.793, 1.784, 1.774, 1.765, 1.755, 1.746, 1.737, 1.729, 1.72, 1.711, 1.703, 1.694, 1.686,
6659 : 1.678, 1.669, 1.649, 1.63, 1.611, 1.593, 1.575, 1.557, 1.54, 1.524, 1.507, 1.492, 1.461, 1.432, 1.403, 1.377, 1.351,
6660 : 1.326, 1.302, 1.279, 1.257, 1.235, 1.215, 1.195, 1.175, 1.157, 3.542e-05, 1.027, 0.9597},
6661 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6662 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6663 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6664 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.967, 1.955,
6665 : 1.944, 1.933, 1.923, 1.912, 1.902, 1.891, 1.881, 1.871, 1.861, 1.852, 1.842, 1.833, 1.823, 1.814, 1.805, 1.796, 1.787,
6666 : 1.778, 1.77, 1.748, 1.728, 1.707, 1.688, 1.669, 1.65, 1.632, 1.614, 1.597, 1.58, 1.548, 1.516, 1.487, 1.458, 1.431,
6667 : 1.404, 1.379, 1.354, 1.331, 1.308, 1.286, 1.265, 1.245, 1.225, 3.542e-05, 1.087, 1.016},
6668 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6669 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6670 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6671 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.074,
6672 : 2.062, 2.05, 2.038, 2.027, 2.016, 2.005, 1.994, 1.983, 1.973, 1.962, 1.952, 1.942, 1.932, 1.922, 1.912, 1.903, 1.893,
6673 : 1.884, 1.875, 1.852, 1.83, 1.809, 1.788, 1.767, 1.748, 1.728, 1.709, 1.691, 1.673, 1.639, 1.605, 1.574, 1.543, 1.514,
6674 : 1.486, 1.459, 1.434, 1.409, 1.384, 1.361, 1.339, 1.317, 1.296, 3.542e-05, 1.15, 1.075},
6675 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6676 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6677 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6678 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.185, 2.172, 2.16, 2.148, 2.136, 2.124, 2.112, 2.101,
6679 : 2.09, 2.079, 2.068, 2.057, 2.046, 2.036, 2.025, 2.015, 2.005, 1.995, 1.985, 1.961, 1.937, 1.915, 1.892, 1.871, 1.85, 1.829, 1.809,
6680 : 1.79, 1.771, 1.734, 1.699, 1.665, 1.633, 1.602, 1.572, 1.544, 1.516, 1.49, 1.464, 1.44, 1.416, 1.393, 1.371, 3.542e-05, 1.216, 1.137},
6681 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6682 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6683 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6684 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6685 : 0.0, 2.301, 2.288, 2.275, 2.262, 2.249, 2.237, 2.225, 2.213, 2.201, 2.189, 2.177, 2.166, 2.155, 2.144, 2.133, 2.122,
6686 : 2.111, 2.101, 2.075, 2.05, 2.026, 2.002, 1.979, 1.957, 1.935, 1.914, 1.893, 1.873, 1.834, 1.796, 1.761, 1.727, 1.694,
6687 : 1.662, 1.632, 1.603, 1.575, 1.548, 1.522, 1.497, 1.473, 1.449, 3.542e-05, 1.286, 1.201},
6688 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6689 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6690 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6691 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6692 : 0.0, 0.0, 2.422, 2.408, 2.394, 2.381, 2.367, 2.354, 2.341, 2.329, 2.316, 2.304, 2.292, 2.28, 2.268, 2.256, 2.245,
6693 : 2.233, 2.222, 2.195, 2.168, 2.142, 2.117, 2.093, 2.069, 2.046, 2.023, 2.001, 1.98, 1.938, 1.899, 1.861, 1.825, 1.79,
6694 : 1.757, 1.725, 1.694, 1.664, 1.635, 1.608, 1.581, 1.556, 1.531, 3.542e-05, 1.358, 1.269},
6695 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6696 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6697 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6698 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6699 : 0.0, 0.0, 0.0, 2.548, 2.533, 2.519, 2.505, 2.491, 2.477, 2.463, 2.45, 2.437, 2.424, 2.411, 2.398, 2.386, 2.373,
6700 : 2.361, 2.349, 2.32, 2.292, 2.264, 2.238, 2.212, 2.186, 2.162, 2.138, 2.114, 2.091, 2.048, 2.006, 1.965, 1.927, 1.89,
6701 : 1.855, 1.821, 1.789, 1.757, 1.727, 1.698, 1.67, 1.642, 1.616, 3.542e-05, 1.433, 1.339},
6702 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6703 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6704 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6705 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6706 : 0.0, 0.0, 0.0, 0.0, 2.679, 2.664, 2.648, 2.633, 2.619, 2.604, 2.59, 2.576, 2.562, 2.548, 2.535, 2.522, 2.508,
6707 : 2.495, 2.483, 2.452, 2.421, 2.392, 2.364, 2.336, 2.309, 2.283, 2.258, 2.233, 2.209, 2.162, 2.117, 2.075, 2.034, 1.995,
6708 : 1.958, 1.922, 1.888, 1.854, 1.822, 1.792, 1.762, 1.733, 1.705, 3.542e-05, 1.512, 1.413},
6709 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6710 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6711 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6712 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6713 : 0.0, 0.0, 0.0, 0.0, 0.0, 2.816, 2.8, 2.783, 2.768, 2.752, 2.737, 2.722, 2.707, 2.692, 2.678, 2.664, 2.65,
6714 : 2.636, 2.622, 2.589, 2.557, 2.526, 2.496, 2.466, 2.438, 2.41, 2.383, 2.357, 2.331, 2.282, 2.234, 2.189, 2.146, 2.105,
6715 : 2.066, 2.028, 1.991, 1.956, 1.922, 1.89, 1.858, 1.828, 1.799, 3.542e-05, 1.595, 1.490},
6716 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6717 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6718 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6719 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6720 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.958, 2.941, 2.924, 2.907, 2.891, 2.875, 2.859, 2.843, 2.828, 2.813, 2.798,
6721 : 2.783, 2.769, 2.733, 2.699, 2.666, 2.634, 2.603, 2.572, 2.543, 2.514, 2.486, 2.459, 2.407, 2.357, 2.309, 2.263, 2.22,
6722 : 2.178, 2.138, 2.099, 2.062, 2.026, 1.992, 1.959, 1.927, 1.896, 3.542e-05, 1.681, 1.570},
6723 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6724 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6725 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6726 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6727 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.106, 3.088, 3.07, 3.052, 3.035, 3.018, 3.001, 2.985, 2.969, 2.953,
6728 : 2.937, 2.922, 2.884, 2.848, 2.812, 2.778, 2.745, 2.713, 2.682, 2.651, 2.622, 2.593, 2.537, 2.484, 2.434, 2.386, 2.34,
6729 : 2.295, 2.253, 2.212, 2.173, 2.135, 2.099, 2.064, 2.03, 1.997, 3.542e-05, 1.77, 1.654},
6730 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6731 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6732 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6733 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6734 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.26, 3.24, 3.222, 3.203, 3.185, 3.167, 3.15, 3.132, 3.115,
6735 : 3.099, 3.082, 3.042, 3.003, 2.966, 2.929, 2.894, 2.86, 2.827, 2.794, 2.763, 2.732, 2.674, 2.618, 2.564, 2.513, 2.465,
6736 : 2.418, 2.373, 2.33, 2.289, 2.249, 2.21, 2.173, 2.138, 2.103, 3.542e-05, 1.864, 1.741},
6737 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6738 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6739 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6740 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6741 : 0.0, 3.419, 3.399, 3.379, 3.36, 3.341, 3.322, 3.304, 3.286, 3.268, 3.25, 3.207, 3.166, 3.126, 3.087, 3.05, 3.014, 2.978, 2.944,
6742 : 2.911, 2.878, 2.816, 2.757, 2.7, 2.646, 2.595, 2.546, 2.498, 2.453, 2.409, 2.367, 2.326, 2.287, 2.25, 2.213, 3.542e-05, 1.961, 1.832},
6743 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6744 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6745 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6746 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6747 : 0.0, 0.0, 3.585, 3.564, 3.543, 3.523, 3.503, 3.483, 3.464, 3.445, 3.426, 3.38, 3.336, 3.294, 3.253, 3.213, 3.174, 3.137, 3.1,
6748 : 3.065, 3.031, 2.965, 2.902, 2.842, 2.785, 2.731, 2.679, 2.629, 2.581, 2.535, 2.49, 2.448, 2.406, 2.367, 2.328, 3.542e-05, 2.063, 1.926},
6749 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6750 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6751 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6752 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6753 : 0.0, 0.0, 0.0, 3.758, 3.735, 3.713, 3.692, 3.671, 3.65, 3.63, 3.61, 3.561, 3.514, 3.469, 3.425, 3.383, 3.342, 3.302, 3.264,
6754 : 3.226, 3.19, 3.12, 3.054, 2.99, 2.93, 2.873, 2.818, 2.765, 2.714, 2.665, 2.619, 2.574, 2.53, 2.488, 2.448, 3.542e-05, 2.168, 2.025},
6755 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6756 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6757 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6758 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6759 : 0.0, 0.0, 0.0, 0.0, 3.937, 3.913, 3.89, 3.867, 3.845, 3.823, 3.802, 3.75, 3.7, 3.652, 3.605, 3.561, 3.517, 3.475, 3.434,
6760 : 3.394, 3.356, 3.282, 3.212, 3.145, 3.081, 3.02, 2.962, 2.907, 2.853, 2.802, 2.752, 2.705, 2.659, 2.615, 2.573, 3.542e-05, 2.278, 2.127},
6761 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6762 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6763 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6764 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6765 : 0.0, 0.0, 0.0, 0.0, 0.0, 4.122, 4.097, 4.073, 4.049, 4.026, 4.003, 3.948, 3.895, 3.843, 3.794, 3.746, 3.7, 3.655, 3.612,
6766 : 3.57, 3.529, 3.451, 3.376, 3.306, 3.238, 3.174, 3.113, 3.054, 2.998, 2.944, 2.892, 2.842, 2.794, 2.747, 2.702, 3.542e-05, 2.392, 2.234},
6767 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6768 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6769 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6770 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6771 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.315, 4.289, 4.263,
6772 : 4.238, 4.214, 4.155, 4.098, 4.043, 3.991, 3.94, 3.891, 3.843, 3.797, 3.753, 3.709, 3.627, 3.548, 3.473, 3.402, 3.335,
6773 : 3.27, 3.208, 3.148, 3.091, 3.037, 2.984, 2.933, 2.884, 2.837, 3.542e-05, 2.511, 2.344},
6774 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6775 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6776 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6777 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6778 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.515, 4.487, 4.46, 4.434, 4.371, 4.31, 4.252, 4.196, 4.142, 4.09, 4.04, 3.991,
6779 : 3.944, 3.898, 3.81, 3.727, 3.648, 3.573, 3.501, 3.433, 3.368, 3.305, 3.245, 3.187, 3.132, 3.079, 3.027, 2.977, 3.542e-05, 2.635, 2.459},
6780 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6781 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6782 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6783 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6784 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.722, 4.693, 4.665, 4.597, 4.532, 4.47, 4.411, 4.353, 4.298, 4.244, 4.193,
6785 : 4.143, 4.094, 4.001, 3.913, 3.83, 3.751, 3.675, 3.603, 3.534, 3.468, 3.405, 3.344, 3.286, 3.23, 3.176, 3.123, 3.542e-05, 2.763, 2.579},
6786 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6787 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6788 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6789 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6790 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.936, 4.906, 4.833, 4.764, 4.698, 4.635, 4.574, 4.515, 4.458, 4.403,
6791 : 4.35, 4.298, 4.2, 4.107, 4.019, 3.935, 3.856, 3.78, 3.707, 3.638, 3.571, 3.507, 3.446, 3.387, 3.33, 3.275, 3.542e-05, 2.896, 2.703},
6792 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6793 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6794 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6795 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6796 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6797 : 0.0, 5.159, 5.081, 5.007, 4.936, 4.868, 4.803, 4.741, 4.681, 4.622, 4.566, 4.512, 4.407, 4.309, 4.216, 4.128, 4.044,
6798 : 3.964, 3.887, 3.814, 3.744, 3.677, 3.612, 3.55, 3.49, 3.432, 3.542e-05, 3.035, 2.832},
6799 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6800 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6801 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6802 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6803 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.75, 5.662, 5.579, 5.499, 5.423, 5.35, 5.28, 5.212,
6804 : 5.147, 5.084, 4.964, 4.851, 4.744, 4.643, 4.547, 4.456, 4.369, 4.286, 4.206, 4.13, 4.056, 3.986, 3.918, 3.853, 3.542e-05, 3.404, 3.176},
6805 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6806 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6807 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6808 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6809 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.395, 6.296, 6.202, 6.112, 6.027, 5.945, 5.866,
6810 : 5.79, 5.717, 5.579, 5.449, 5.327, 5.211, 5.102, 4.998, 4.898, 4.804, 4.714, 4.627, 4.544, 4.464, 4.388, 4.314, 3.542e-05, 3.808, 3.552},
6811 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6812 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6813 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6814 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6815 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.098, 6.985, 6.879, 6.779, 6.683, 6.591,
6816 : 6.503, 6.418, 6.258, 6.108, 5.968, 5.836, 5.711, 5.593, 5.48, 5.373, 5.27, 5.172, 5.078, 4.988, 4.902, 4.819, 3.542e-05, 4.25, 3.962},
6817 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6818 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6819 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6820 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6821 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.861, 7.734, 7.615, 7.502, 7.395,
6822 : 7.292, 7.193, 7.008, 6.835, 6.674, 6.523, 6.38, 6.245, 6.118, 5.996, 5.88, 5.769, 5.663, 5.561, 5.464, 5.37, 3.542e-05, 4.732, 4.410},
6823 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6824 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6825 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6826 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6827 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6828 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.69, 8.547, 8.413, 8.286, 8.166, 8.051, 7.835, 7.636, 7.451, 7.278, 7.115,
6829 : 6.961, 6.816, 6.678, 6.547, 6.421, 6.302, 6.187, 6.078, 5.972, 3.542e-05, 5.257, 4.897},
6830 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6831 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6832 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6833 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6834 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.588, 9.428, 9.277,
6835 : 9.135, 9.0, 8.749, 8.519, 8.305, 8.106, 7.92, 7.745, 7.58, 7.423, 7.275, 7.133, 6.998, 6.87, 6.746, 6.628, 3.542e-05, 5.827, 5.425},
6836 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6837 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6838 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6839 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6840 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.56, 10.38,
6841 : 10.21, 10.05, 9.759, 9.491, 9.244, 9.016, 8.803, 8.603, 8.415, 8.238, 8.069, 7.91, 7.758, 7.613, 7.474, 7.341, 3.542e-05, 6.445, 5.998},
6842 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6843 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6844 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6845 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6846 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6847 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.62, 11.41, 11.22, 10.88, 10.56, 10.28, 10.01, 9.769,
6848 : 9.541, 9.328, 9.126, 8.936, 8.756, 8.584, 8.421, 8.265, 8.116, 3.542e-05, 7.115, 6.618},
6849 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6850 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6851 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6852 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6853 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6854 : 12.75, 12.53, 12.11, 11.75, 11.41, 11.11, 10.83, 10.57, 10.32, 10.1, 9.88, 9.676, 9.483, 9.299, 9.124, 8.957, 3.542e-05, 7.84, 7.288},
6855 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6856 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6857 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6858 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6859 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6860 : 0.0, 13.99, 13.49, 13.05, 12.67, 12.31, 11.99, 11.69, 11.41, 11.15, 10.91, 10.68, 10.46, 10.25, 10.06, 9.869, 3.542e-05, 8.623, 8.011},
6861 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6862 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6863 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6864 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6865 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6866 : 0.0, 0.0, 16.75, 16.12, 15.58, 15.1, 14.66, 14.26, 13.9, 13.56, 13.25, 12.95, 12.67, 12.41, 12.16, 11.93, 3.542e-05, 10.38, 9.628},
6867 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6868 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6869 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6870 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6871 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6872 : 0.0, 0.0, 0.0, 19.97, 19.17, 18.49, 17.89, 17.36, 16.87, 16.43, 16.02, 15.64, 15.28, 14.95, 14.63, 14.34, 3.542e-05, 12.42, 11.5},
6873 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6874 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6875 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6876 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6877 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6878 : 0.0, 0.0, 0.0, 0.0, 23.71, 22.7, 21.85, 21.1, 20.45, 19.85, 19.31, 18.81, 18.35, 17.93, 17.53, 17.15, 3.542e-05, 14.77, 13.65},
6879 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6880 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6881 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6882 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6883 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6884 : 0.0, 0.0, 0.0, 0.0, 0.0, 28.07, 26.78, 25.71, 24.79, 23.97, 23.25, 22.59, 21.99, 21.44, 20.93, 20.45, 3.542e-05, 17.48, 16.12},
6885 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6886 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6887 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6888 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6889 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6890 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 33.16, 31.5, 30.15, 29.0, 28.0, 27.11, 26.31, 25.59, 24.92, 24.31, 3.542e-05, 20.6, 18.94},
6891 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6892 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6893 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6894 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6895 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6896 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 39.13, 36.97, 35.25, 33.82, 32.58, 31.5, 30.53, 29.65, 28.86, 3.542e-05, 24.19, 22.16},
6897 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6898 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6899 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6900 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6901 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6902 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 46.17, 43.33, 41.13, 39.33, 37.8, 36.47, 35.29, 34.24, 3.542e-05, 28.31, 25.84},
6903 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6904 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6905 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6906 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6907 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6908 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 54.54, 50.75, 47.92, 45.65, 43.75, 42.11, 40.68, 3.542e-05, 33.07, 30.03},
6909 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6910 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6911 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6912 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6913 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 64.64, 59.47, 55.78, 52.9, 50.53, 48.51, 3.542e-05, 38.55, 34.81},
6914 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6915 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6916 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6917 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6918 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 77.05, 69.8, 64.93, 61.24, 58.27, 3.542e-05, 44.92, 40.28},
6919 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6920 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6921 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6922 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6923 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 92.76, 82.18, 75.63, 70.87, 3.542e-05, 52.35, 46.54},
6924 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6925 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6926 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6927 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6928 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 113.6, 97.22, 88.27, 3.542e-05, 61.12, 53.76},
6929 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6930 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6931 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6932 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6933 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 143.9, 115.8, 3.542e-05, 71.6, 62.15},
6934 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6935 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6936 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6937 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6938 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 201.8, 3.542e-05, 84.38, 71.99},
6939 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6940 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6941 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6942 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6943 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.542e-05, 148.4, 115.1},
6944 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6945 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6946 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6947 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6948 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.542e-05, 201.7, 144.2},
6949 : {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6950 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6951 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6952 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
6953 : 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.542e-05, 270.9, 177.8}}};
6954 : #endif // UNUSED_FLUID_PROPS
6955 :
6956 : } // namespace FluidProperties
6957 :
6958 : } // namespace EnergyPlus
|