LCOV - code coverage report
Current view: top level - EnergyPlus - FluidProperties.cc (source / functions) Hit Total Coverage
Test: lcov.output.filtered Lines: 1427 3005 47.5 %
Date: 2023-01-17 19:17:23 Functions: 39 61 63.9 %

          Line data    Source code
       1             : // EnergyPlus, Copyright (c) 1996-2023, 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             :     // Data
     106             :     // MODULE PARAMETER DEFINITIONS
     107             : 
     108             :     // DERIVED TYPE DEFINITIONS
     109             : 
     110             :     // INTERFACE BLOCK SPECIFICATIONS
     111             :     // na
     112             : 
     113             :     // MODULE VARIABLE DECLARATIONS
     114             : 
     115             :     // ACCESSIBLE SPECIFICATIONS OF MODULE SUBROUTINES OR FUNCTONS:
     116             : 
     117             :     // Object Data
     118             : 
     119             : #ifdef EP_cache_GlycolSpecificHeat
     120         771 :     std::array<cached_tsh, t_sh_cache_size> cached_t_sh;
     121             : #endif
     122             :     // Data Initializer Forward Declarations
     123             :     // See GetFluidPropertiesData "SUBROUTINE LOCAL DATA" for actual data.
     124             : 
     125             :     // MODULE SUBROUTINES:
     126             : 
     127             :     // Functions
     128             : 
     129         469 :     void InitializeGlycRoutines()
     130             :     {
     131             : #ifdef EP_cache_GlycolSpecificHeat
     132         469 :         cached_t_sh.fill({});
     133             : #endif
     134         469 :     }
     135             : 
     136         469 :     void GetFluidPropertiesData(EnergyPlusData &state)
     137             :     {
     138             : 
     139             :         // SUBROUTINE INFORMATION:
     140             :         //       AUTHOR         Rick Strand
     141             :         //       DATE WRITTEN   April 2000
     142             :         //       MODIFIED       May 2002 Simon Rees (Added saturated pressure data retreaval)
     143             :         //                      June 2004 Rick Strand (Added glycol defaults and modified glycol data structure)
     144             :         //                      August 2011 Linda Lawrie (Added steam as default refrigerant)
     145             :         //                      August 2012 Linda Lawrie (more error checks on data input)
     146             :         //       RE-ENGINEERED  na
     147             : 
     148             :         // PURPOSE OF THIS SUBROUTINE:
     149             :         // The purpose of this subroutine is to read in all of the fluid
     150             :         // property data contained in the user input file.
     151             : 
     152             :         // METHODOLOGY EMPLOYED:
     153             :         // Standard EnergyPlus methodology.  Derived type portions are
     154             :         // allocated as necessary as the data is read into the program.
     155             : 
     156             :         // REFERENCES:
     157             :         // na
     158             : 
     159             :         // Using/Aliasing
     160             :         using namespace std::placeholders; // For use with 'std::bind' in Array initializers
     161             : 
     162             :         // Locals
     163             :         // SUBROUTINE ARGUMENT DEFINITIONS:
     164             :         // na
     165             : 
     166             :         // SUBROUTINE PARAMETER DEFINITIONS:
     167         469 :         Real64 constexpr PressToler(1.0); // Some reasonable value for comparisons
     168             :         static constexpr std::string_view RoutineName("GetFluidPropertiesData: ");
     169             : 
     170             :         // INTERFACE BLOCK SPECIFICATIONS
     171             :         // na
     172             : 
     173             :         // DERIVED TYPE DEFINITIONS
     174             : 
     175             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
     176         938 :         Array1D_string Alphas;             // Reads string value from input file
     177         938 :         Array1D_string cAlphaFieldNames;   // field names for alpha fields
     178         938 :         Array1D_string cNumericFieldNames; // field names for numeric fields
     179             :         int Loop;                          // DO loop counter (various uses)
     180             :         int NumAlphas;                     // States which alpha value to read from a "Number" line
     181         938 :         Array1D<Real64> Numbers;           // brings in data from IP
     182         938 :         Array1D_bool lAlphaFieldBlanks;    // logical for blank alpha fields
     183         938 :         Array1D_bool lNumericFieldBlanks;  // logical for blank numeric fields
     184             :         int NumNumbers;                    // States which number value to read from a "Numbers" line
     185             :         int MaxAlphas;                     // maximum number of alphas
     186             :         int MaxNumbers;                    // maximum number of numbers
     187             :         int Status;                        // Either 1 "object found" or -1 "not found" (also used as temp)
     188             :         int InData;
     189             :         int TempLoop;
     190             :         int NumOfFluidTempArrays;
     191             :         int NumOfSatFluidPropArrays;
     192             :         int NumOfSHFluidPropArrays;
     193             :         int NumOfGlyFluidPropArrays;
     194         938 :         std::string TempsName;
     195             :         bool FirstSHMatch;
     196             :         int NumOfPressPts;
     197             :         int NumOfConcPts;
     198         469 :         bool ErrorsFound(false);
     199             :         int Index;
     200             :         int NumOfGlyConcs;
     201             :         bool GlycolFound;
     202             :         int NumOfOptionalInput;
     203         938 :         std::string CurrentModuleObject; // for ease in renaming.
     204             :         Real64 pTemp;
     205             :         int iTemp;
     206             :         int j;
     207             :         int FluidNum;
     208             : 
     209             :         // SUBROUTINE LOCAL DATA:
     210             : 
     211             :         // Note two methods of Array initialization in use:
     212             :         // - Fixed list of values.  The second parameter is an initializer list (brace
     213             :         //   delimited list of numbers).
     214             :         // - Initializer function.  The second parameter is the function name.
     215             :         //   In several cases we need to pass water data to the initializer, but an
     216             :         //   Array initializer only takes one argument.  std::bind is used to convert the
     217             :         //   actual initializer into a function of one argument.
     218             : 
     219             :         // For default "glycol" fluids of Water, Ethylene Glycol, and Propylene Glycol
     220             : 
     221             :         static constexpr std::array<Real64, DefaultNumGlyTemps> DefaultGlycolTemps = {
     222             :             -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,
     223             :             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
     224             :         // points
     225             : 
     226             :         static constexpr std::array<Real64, DefaultNumGlyConcs> DefaultGlycolConcs = {
     227             :             0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}; // 10 total concentration points
     228             : 
     229             :         static constexpr std::array<Real64, DefaultNumGlyTemps> DefaultWaterCpData = {0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
     230             :                                                                                       4217.0, 4198.0, 4191.0, 4185.0, 4181.0, 4179.0, 4180.0,
     231             :                                                                                       4180.0, 4180.0, 4180.0, 4181.0, 4183.0, 4185.0, 4188.0,
     232             :                                                                                       4192.0, 4196.0, 4200.0, 4203.0, 4208.0, 4213.0, 4218.0,
     233             :                                                                                       4223.0, 4228.0, 4233.0, 4238.0, 4243.0}; // in J/kg-K
     234             : 
     235             :         static constexpr std::array<Real64, DefaultNumGlyTemps> DefaultWaterViscData = {
     236             :             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,
     237             :             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,
     238             :             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
     239             : 
     240             :         static constexpr std::array<Real64, DefaultNumGlyTemps> DefaultWaterRhoData = {
     241             :             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,
     242             :             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
     243             : 
     244             :         static constexpr std::array<Real64, DefaultNumGlyTemps> DefaultWaterCondData = {
     245             :             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,
     246             :             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
     247             : 
     248             :         // Ethylene Glycol Data: Specific Heat in J/(kg-k)
     249             : 
     250             :         static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs> DefaultEthGlyCpData = {
     251             :             {
     252             :                 {0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    4217.0, 4198.0, 4191.0, 4185.0,
     253             :                  4181.0, 4179.0, 4180.0, 4180.0, 4180.0, 4180.0, 4181.0, 4183.0, 4185.0, 4188.0, 4192.0,
     254             :                  4196.0, 4200.0, 4203.0, 4208.0, 4213.0, 4218.0, 4223.0, 4228.0, 4233.0, 4238.0, 4243.0}, // DefaultWaterCpData
     255             :                 {0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    3937.0, 3946.0, 3954.0, 3963.0,
     256             :                  3972.0, 3981.0, 3989.0, 3998.0, 4007.0, 4015.0, 4024.0, 4033.0, 4042.0, 4050.0, 4059.0,
     257             :                  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
     258             :                 {0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    3757.0, 3769.0, 3780.0, 3792.0, 3803.0,
     259             :                  3815.0, 3826.0, 3838.0, 3849.0, 3861.0, 3872.0, 3884.0, 3895.0, 3907.0, 3918.0, 3930.0,
     260             :                  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
     261             :                 {0.0,    0.0,    0.0,    0.0,    0.0,    3560.0, 3574.0, 3589.0, 3603.0, 3617.0, 3631.0,
     262             :                  3645.0, 3660.0, 3674.0, 3688.0, 3702.0, 3716.0, 3730.0, 3745.0, 3759.0, 3773.0, 3787.0,
     263             :                  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
     264             :                 {0.0,    0.0,    0.0,    3334.0, 3351.0, 3367.0, 3384.0, 3401.0, 3418.0, 3435.0, 3451.0,
     265             :                  3468.0, 3485.0, 3502.0, 3518.0, 3535.0, 3552.0, 3569.0, 3585.0, 3602.0, 3619.0, 3636.0,
     266             :                  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
     267             :                 {3068.0, 3088.0, 3107.0, 3126.0, 3145.0, 3165.0, 3184.0, 3203.0, 3223.0, 3242.0, 3261.0,
     268             :                  3281.0, 3300.0, 3319.0, 3339.0, 3358.0, 3377.0, 3396.0, 3416.0, 3435.0, 3454.0, 3474.0,
     269             :                  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
     270             :                 {2844.0, 2866.0, 2888.0, 2909.0, 2931.0, 2953.0, 2975.0, 2997.0, 3018.0, 3040.0, 3062.0,
     271             :                  3084.0, 3106.0, 3127.0, 3149.0, 3171.0, 3193.0, 3215.0, 3236.0, 3258.0, 3280.0, 3302.0,
     272             :                  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
     273             :                 {2612.0, 2636.0, 2660.0, 2685.0, 2709.0, 2733.0, 2757.0, 2782.0, 2806.0, 2830.0, 2854.0,
     274             :                  2878.0, 2903.0, 2927.0, 2951.0, 2975.0, 3000.0, 3024.0, 3048.0, 3072.0, 3097.0, 3121.0,
     275             :                  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
     276             :                 {2370.0, 2397.0, 2423.0, 2450.0, 2477.0, 2503.0, 2530.0, 2556.0, 2583.0, 2610.0, 2636.0,
     277             :                  2663.0, 2690.0, 2716.0, 2743.0, 2770.0, 2796.0, 2823.0, 2850.0, 2876.0, 2903.0, 2929.0,
     278             :                  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
     279             :                 {0.0,    0.0,    2177.0, 2206.0, 2235.0, 2264.0, 2293.0, 2322.0, 2351.0, 2380.0, 2409.0,
     280             :                  2438.0, 2467.0, 2496.0, 2525.0, 2554.0, 2583.0, 2612.0, 2641.0, 2670.0, 2699.0, 2728.0,
     281             :                  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
     282             :             }};
     283             : 
     284             :         // Ethylene Glycol Data: Viscosity in mPa-s
     285             :         static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs> DefaultEthGlyViscData = {{
     286             :             {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,
     287             :              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,
     288             :              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},
     289             :             {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,
     290             :              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,
     291             :              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
     292             :             {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,
     293             :              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,
     294             :              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
     295             :             {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,
     296             :              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,
     297             :              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
     298             :             {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,
     299             :              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,
     300             :              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
     301             :             {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,
     302             :              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,
     303             :              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
     304             :             {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,
     305             :              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,
     306             :              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
     307             :             {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,
     308             :              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,
     309             :              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
     310             :             {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,
     311             :              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,
     312             :              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
     313             :             {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,
     314             :              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,
     315             :              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
     316             :         }};
     317             : 
     318             :         // Ethylene Glycol Data: Density in kg/m3
     319             :         static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs> DefaultEthGlyRhoData = {{
     320             :             {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,
     321             :              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
     322             :             {0.00,    0.00,    0.00,    0.00,    0.00,    0.00,    0.00,    1018.73, 1017.57, 1016.28, 1014.87,
     323             :              1013.34, 1011.69, 1009.92, 1008.02, 1006.01, 1003.87, 1001.61, 999.23,  996.72,  994.10,  991.35,
     324             :              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
     325             :             {0.00,    0.00,    0.00,    0.00,    0.00,    0.00,    1036.85, 1035.67, 1034.36, 1032.94, 1031.39,
     326             :              1029.72, 1027.93, 1026.02, 1023.99, 1021.83, 1019.55, 1017.16, 1014.64, 1011.99, 1009.23, 1006.35,
     327             :              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
     328             :             {0.00,    0.00,    0.00,    0.00,    0.00,    1054.31, 1053.11, 1051.78, 1050.33, 1048.76, 1047.07,
     329             :              1045.25, 1043.32, 1041.26, 1039.08, 1036.78, 1034.36, 1031.36, 1029.15, 1026.36, 1023.45, 1020.42,
     330             :              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
     331             :             {0.00,    0.00,    0.00,    1071.98, 1070.87, 1069.63, 1068.28, 1066.80, 1065.21, 1063.49, 1061.65,
     332             :              1059.68, 1057.60, 1055.39, 1053.07, 1050.62, 1048.05, 1045.35, 1042.54, 1039.61, 1036.55, 1033.37,
     333             :              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
     334             :             {1089.94, 1089.04, 1088.01, 1086.87, 1085.61, 1084.22, 1082.71, 1081.08, 1079.33, 1077.46, 1075.46,
     335             :              1073.35, 1071.11, 1068.75, 1066.27, 1063.66, 1060.94, 1058.09, 1055.13, 1052.04, 1048.83, 1045.49,
     336             :              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
     337             :             {1104.60, 1103.54, 1102.36, 1101.06, 1099.64, 1098.09, 1096.43, 1094.64, 1092.73, 1090.70, 1088.54,
     338             :              1086.27, 1083.87, 1081.35, 1078.71, 1075.95, 1073.07, 1070.06, 1066.94, 1063.69, 1060.32, 1056.83,
     339             :              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
     340             :             {1118.61, 1117.38, 1116.04, 1114.58, 1112.99, 1111.28, 1109.45, 1107.50, 1105.43, 1103.23, 1100.92,
     341             :              1098.48, 1095.92, 1093.24, 1090.43, 1087.51, 1084.46, 1081.30, 1078.01, 1074.60, 1071.06, 1067.41,
     342             :              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
     343             :             {1132.11, 1130.72, 1129.21, 1127.57, 1125.82, 1123.94, 1121.94, 1119.82, 1117.58, 1115.22, 1112.73,
     344             :              1110.13, 1107.40, 1104.55, 1101.58, 1098.48, 1095.27, 1091.93, 1088.48, 1084.90, 1081.20, 1077.37,
     345             :              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
     346             :             {0.00,    0.00,    1141.87, 1140.07, 1138.14, 1136.09, 1133.91, 1131.62, 1129.20, 1126.67, 1124.01,
     347             :              1121.23, 1118.32, 1115.30, 1112.15, 1108.89, 1105.50, 1101.99, 1098.36, 1094.60, 1090.73, 1086.73,
     348             :              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
     349             :         }};
     350             : 
     351             :         // Ethylene Glycol Data: Conductivity in W/(m-K)
     352             :         static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs> DefaultEthGlyCondData =
     353             :             {
     354             :                 {
     355             :                     {0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.561,  0.5705, 0.58,  0.5893,
     356             :                      0.5984, 0.6072, 0.6155, 0.6233, 0.6306, 0.6373, 0.6436, 0.6492, 0.6543, 0.659, 0.6631,
     357             :                      0.6668, 0.67,   0.6728, 0.6753, 0.6773, 0.6791, 0.0,    0.0,    0.0,    0.0,   0.0}, // DefaultWaterCondData
     358             :                     {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,
     359             :                      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
     360             :                     {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,
     361             :                      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
     362             :                     {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,
     363             :                      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
     364             :                     {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,
     365             :                      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
     366             :                     {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,
     367             :                      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
     368             :                     {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,
     369             :                      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
     370             :                     {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,
     371             :                      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
     372             :                     {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,
     373             :                      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
     374             :                     {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,
     375             :                      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
     376             :                 }};
     377             : 
     378             :         // Propylene Glycol Data: Specific Heat in J/(kg-k)
     379             :         static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs> DefaultPropGlyCpData = {
     380             :             {
     381             :                 {0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    4217.0, 4198.0, 4191.0, 4185.0,
     382             :                  4181.0, 4179.0, 4180.0, 4180.0, 4180.0, 4180.0, 4181.0, 4183.0, 4185.0, 4188.0, 4192.0,
     383             :                  4196.0, 4200.0, 4203.0, 4208.0, 4213.0, 4218.0, 4223.0, 4228.0, 4233.0, 4238.0, 4243.0}, // DefaultWaterCpData in J/kg-K
     384             :                 {0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    4042.0, 4050.0, 4058.0, 4067.0,
     385             :                  4075.0, 4083.0, 4091.0, 4099.0, 4107.0, 4115.0, 4123.0, 4131.0, 4139.0, 4147.0, 4155.0,
     386             :                  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
     387             :                 {0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    3918.0, 3929.0, 3940.0, 3951.0, 3962.0,
     388             :                  3973.0, 3983.0, 3994.0, 4005.0, 4016.0, 4027.0, 4038.0, 4049.0, 4060.0, 4071.0, 4082.0,
     389             :                  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
     390             :                 {0.0,    0.0,    0.0,    0.0,    0.0,    3765.0, 3779.0, 3793.0, 3807.0, 3820.0, 3834.0,
     391             :                  3848.0, 3862.0, 3875.0, 3889.0, 3903.0, 3917.0, 3930.0, 3944.0, 3958.0, 3972.0, 3985.0,
     392             :                  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
     393             :                 {0.0,    0.0,    0.0,    0.0,    3586.0, 3603.0, 3619.0, 3636.0, 3652.0, 3669.0, 3685.0,
     394             :                  3702.0, 3718.0, 3735.0, 3751.0, 3768.0, 3784.0, 3801.0, 3817.0, 3834.0, 3850.0, 3867.0,
     395             :                  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
     396             :                 {0.0,    0.0,    3358.0, 3378.0, 3397.0, 3416.0, 3435.0, 3455.0, 3474.0, 3493.0, 3513.0,
     397             :                  3532.0, 3551.0, 3570.0, 3590.0, 3609.0, 3628.0, 3648.0, 3667.0, 3686.0, 3706.0, 3725.0,
     398             :                  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
     399             :                 {3096.0, 3118.0, 3140.0, 3162.0, 3184.0, 3206.0, 3228.0, 3250.0, 3272.0, 3295.0, 3317.0,
     400             :                  3339.0, 3361.0, 3383.0, 3405.0, 3427.0, 3449.0, 3471.0, 3493.0, 3515.0, 3537.0, 3559.0,
     401             :                  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
     402             :                 {2843.0, 2868.0, 2893.0, 2918.0, 2943.0, 2968.0, 2993.0, 3018.0, 3042.0, 3067.0, 3092.0,
     403             :                  3117.0, 3142.0, 3167.0, 3192.0, 3217.0, 3242.0, 3266.0, 3291.0, 3316.0, 3341.0, 3366.0,
     404             :                  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
     405             :                 {2572.0, 2600.0, 2627.0, 2655.0, 2683.0, 2710.0, 2738.0, 2766.0, 2793.0, 2821.0, 2849.0,
     406             :                  2876.0, 2904.0, 2931.0, 2959.0, 2987.0, 3014.0, 3042.0, 3070.0, 3097.0, 3125.0, 3153.0,
     407             :                  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
     408             :                 {2264.0, 2295.0, 2326.0, 2356.0, 2387.0, 2417.0, 2448.0, 2478.0, 2509.0, 2539.0, 2570.0,
     409             :                  2600.0, 2631.0, 2661.0, 2692.0, 2723.0, 2753.0, 2784.0, 2814.0, 2845.0, 2875.0, 2906.0,
     410             :                  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
     411             :             }};
     412             : 
     413             :         // Propylene Glycol Data: Viscosity in mPa-s
     414             :         static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs> DefaultPropGlyViscData = {{
     415             :             {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,
     416             :              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,
     417             :              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
     418             :             {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,
     419             :              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,
     420             :              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
     421             :             {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,
     422             :              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,
     423             :              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
     424             :             {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,
     425             :              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,
     426             :              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
     427             :             {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,
     428             :              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,
     429             :              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
     430             :             {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,
     431             :              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,
     432             :              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
     433             :             {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,
     434             :              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,
     435             :              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
     436             :             {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,
     437             :              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,
     438             :              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
     439             :             {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,
     440             :              3.799e-02,   2.800e-02,  2.104e-02,  1.610e-02,  1.255e-02,  9.94e-03,   7.99e-03,   6.52e-03,  5.39e-03,
     441             :              4.51e-03,    3.82e-03,   3.28e-03,   2.83e-03,   2.47e-03,   2.18e-03,   1.94e-03,   1.73e-03,  1.56e-03,
     442             :              1.42e-03,    1.29e-03,   1.19e-03,   1.09e-03,   1.02e-03,   9.5e-04}, // Conc=0.8
     443             :             {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,
     444             :              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,
     445             :              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,
     446             :              2.00e-03,    1.80e-03,    1.63e-03,    1.48e-03,   1.35e-03,   1.24e-03}, // Conc=0.9
     447             :         }};
     448             : 
     449             :         // Propylene Glycol Data: Density in kg/m3
     450             :         static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs> DefaultPropGlyRhoData = {{
     451             :             {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,
     452             :              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
     453             :                                                                                                                             // kg/m3
     454             :             {0.00,    0.00,    0.00,    0.00,    0.00,    0.00,   0.00,   1013.85, 1012.61, 1011.24, 1009.75,
     455             :              1008.13, 1006.40, 1004.54, 1002.56, 1000.46, 998.23, 995.88, 993.41,  990.82,  988.11,  985.27,
     456             :              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
     457             :             {0.00,    0.00,    0.00,    0.00,    0.00,    0.00,    1027.24, 1025.84, 1024.32, 1022.68, 1020.91,
     458             :              1019.01, 1016.99, 1014.84, 1012.56, 1010.16, 1007.64, 1004.99, 1002.21, 999.31,  996.28,  993.12,
     459             :              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
     460             :             {0.00,    0.00,    0.00,    0.00,    0.00,    1039.42, 1037.89, 1036.24, 1034.46, 1032.55, 1030.51,
     461             :              1028.35, 1026.06, 1023.64, 1021.09, 1018.42, 1015.62, 1012.69, 1009.63, 1006.44, 1003.13, 999.69,
     462             :              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
     463             :             {0.00,    0.00,    0.00,    0.00,    1050.43, 1048.79, 1047.02, 1045.12, 1043.09, 1040.94, 1038.65,
     464             :              1036.24, 1033.70, 1031.03, 1028.23, 1025.30, 1022.24, 1019.06, 1015.75, 1012.30, 1008.73, 1005.03,
     465             :              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
     466             :             {0.00,    0.00,    1062.11, 1060.49, 1058.73, 1056.85, 1054.84, 1052.71, 1050.44, 1048.04, 1045.52,
     467             :              1042.87, 1040.09, 1037.18, 1034.15, 1030.98, 1027.69, 1024.27, 1020.72, 1017.04, 1013.23, 1009.30,
     468             :              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
     469             :             {1072.92, 1071.31, 1069.58, 1067.72, 1065.73, 1063.61, 1061.37, 1059.00, 1056.50, 1053.88, 1051.13,
     470             :              1048.25, 1045.24, 1042.11, 1038.85, 1035.47, 1031.95, 1028.32, 1024.55, 1020.66, 1016.63, 1012.49,
     471             :              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
     472             :             {1079.67, 1077.82, 1075.84, 1073.74, 1071.51, 1069.16, 1066.69, 1064.09, 1061.36, 1058.51, 1055.54,
     473             :              1052.44, 1049.22, 1045.87, 1042.40, 1038.81, 1035.09, 1031.25, 1027.28, 1023.19, 1018.97, 1014.63,
     474             :              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
     475             :             {1094.50, 1090.85, 1087.18, 1083.49, 1079.77, 1076.04, 1072.27, 1068.49, 1064.68, 1060.85, 1057.00,
     476             :              1053.12, 1049.22, 1045.30, 1041.35, 1037.38, 1033.39, 1029.37, 1025.33, 1021.27, 1017.19, 1013.08,
     477             :              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
     478             :             {1092.46, 1088.82, 1085.15, 1081.46, 1077.74, 1074.00, 1070.24, 1066.46, 1062.65, 1058.82, 1054.96,
     479             :              1051.09, 1047.19, 1043.26, 1039.32, 1035.35, 1031.35, 1027.34, 1023.30, 1019.24, 1015.15, 1011.04,
     480             :              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
     481             :         }};
     482             : 
     483             :         // Propylene Glycol Data: Conductivity in W/(m-K)
     484             :         static constexpr std::array<std::array<Real64, DefaultNumGlyTemps>, DefaultNumGlyConcs> DefaultPropGlyCondData =
     485             :             {
     486             :                 {
     487             :                     {0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.561,  0.5705, 0.58,  0.5893,
     488             :                      0.5984, 0.6072, 0.6155, 0.6233, 0.6306, 0.6373, 0.6436, 0.6492, 0.6543, 0.659, 0.6631,
     489             :                      0.6668, 0.67,   0.6728, 0.6753, 0.6773, 0.6791, 0.0,    0.0,    0.0,    0.0,   0.0}, // DefaultWaterCondData
     490             :                                                                                                           // in W/mK
     491             :                     {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,
     492             :                      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
     493             :                     {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,
     494             :                      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
     495             :                     {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,
     496             :                      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
     497             :                     {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,
     498             :                      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
     499             :                     {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,
     500             :                      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
     501             :                     {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,
     502             :                      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
     503             :                     {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,
     504             :                      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
     505             :                     {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,
     506             :                      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
     507             :                     {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,
     508             :                      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
     509             :                 }};
     510             : 
     511             :         // Steam Refrigerant Data
     512             :         static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamTemps{
     513             :             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,
     514             :             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,
     515             :             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,
     516             :             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,
     517             :             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,
     518             :             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};
     519             : 
     520             :         static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamPressData{
     521             :             611.7,      657.1,      872.6,     1228.0,    1706.0,    2339.0,    3170.0,    4247.0,    5629.0,    7385.0,     9595.0,     12350.0,
     522             :             15760.0,    19950.0,    25040.0,   31200.0,   34000.0,   37010.0,   40240.0,   43700.0,   47410.0,   51390.0,    55640.0,    60170.0,
     523             :             65020.0,    70180.0,    75680.0,   81540.0,   87770.0,   94390.0,   97850.0,   101400.0,  105100.0,  108900.0,   112800.0,   116800.0,
     524             :             120900.0,   125100.0,   129500.0,  134000.0,  138600.0,  143400.0,  148300.0,  153300.0,  158400.0,  163700.0,   169200.0,   174800.0,
     525             :             180500.0,   186400.0,   192500.0,  198700.0,  205000.0,  211600.0,  218300.0,  225200.0,  232200.0,  239500.0,   246900.0,   254500.0,
     526             :             262300.0,   270300.0,   286800.0,  304200.0,  322400.0,  341500.0,  361500.0,  382500.0,  404400.0,  427300.0,   451200.0,   476200.0,
     527             :             502200.0,   529500.0,   557800.0,  587400.0,  618200.0,  650300.0,  683700.0,  718500.0,  754600.0,  792200.0,   831200.0,   871800.0,
     528             :             913800.0,   957500.0,   1003000.0, 1123000.0, 1255000.0, 1399000.0, 1555000.0, 1724000.0, 1908000.0, 2106000.0,  2320000.0,  2550000.0,
     529             :             2797000.0,  3347000.0,  3976000.0, 4692000.0, 5503000.0, 6417000.0, 7442000.0, 8588000.0, 9865000.0, 11280000.0, 12860000.0, 14600000.0,
     530             :             16530000.0, 18670000.0, 21040000.0};
     531             : 
     532             :         static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamEnthalpyFluidData{
     533             :             0.59,      4177.0,    21020.0,   42020.0,   62980.0,   83910.0,   104800.0,  125700.0,  146600.0,  167500.0,  188400.0,  209300.0,
     534             :             230300.0,  251200.0,  272100.0,  293100.0,  301400.0,  309800.0,  318200.0,  326600.0,  335000.0,  343400.0,  351800.0,  360200.0,
     535             :             368600.0,  377000.0,  385500.0,  393900.0,  402300.0,  410700.0,  414900.0,  419200.0,  423400.0,  427600.0,  431800.0,  436000.0,
     536             :             440300.0,  444500.0,  448700.0,  453000.0,  457200.0,  461400.0,  465600.0,  469900.0,  474100.0,  478400.0,  482600.0,  486800.0,
     537             :             491100.0,  495300.0,  499600.0,  503800.0,  508100.0,  512300.0,  516600.0,  520800.0,  525100.0,  529300.0,  533600.0,  537900.0,
     538             :             542100.0,  546400.0,  554900.0,  563500.0,  572000.0,  580600.0,  589200.0,  597700.0,  606300.0,  614900.0,  623600.0,  632200.0,
     539             :             640800.0,  649500.0,  658100.0,  666800.0,  675500.0,  684200.0,  692900.0,  701600.0,  710300.0,  719100.0,  727800.0,  736600.0,
     540             :             745400.0,  754200.0,  763100.0,  785200.0,  807400.0,  829800.0,  852300.0,  874900.0,  897600.0,  920500.0,  943600.0,  966800.0,
     541             :             990200.0,  1038000.0, 1086000.0, 1135000.0, 1185000.0, 1237000.0, 1290000.0, 1345000.0, 1402000.0, 1462000.0, 1526000.0, 1595000.0,
     542             :             1671000.0, 1762000.0, 1891000.0};
     543             : 
     544             :         static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamEnthalpyGasFluidData{
     545             :             2501000.0, 2503000.0, 2510000.0, 2519000.0, 2528000.0, 2537000.0, 2547000.0, 2556000.0, 2565000.0, 2574000.0, 2582000.0, 2591000.0,
     546             :             2600000.0, 2609000.0, 2618000.0, 2626000.0, 2630000.0, 2633000.0, 2636000.0, 2640000.0, 2643000.0, 2646000.0, 2650000.0, 2653000.0,
     547             :             2656000.0, 2660000.0, 2663000.0, 2666000.0, 2669000.0, 2672000.0, 2674000.0, 2676000.0, 2677000.0, 2679000.0, 2680000.0, 2682000.0,
     548             :             2683000.0, 2685000.0, 2686000.0, 2688000.0, 2690000.0, 2691000.0, 2693000.0, 2694000.0, 2696000.0, 2697000.0, 2699000.0, 2700000.0,
     549             :             2702000.0, 2703000.0, 2704000.0, 2706000.0, 2707000.0, 2709000.0, 2710000.0, 2712000.0, 2713000.0, 2715000.0, 2716000.0, 2717000.0,
     550             :             2719000.0, 2720000.0, 2723000.0, 2726000.0, 2728000.0, 2731000.0, 2733000.0, 2736000.0, 2739000.0, 2741000.0, 2744000.0, 2746000.0,
     551             :             2748000.0, 2751000.0, 2753000.0, 2755000.0, 2757000.0, 2760000.0, 2762000.0, 2764000.0, 2766000.0, 2768000.0, 2770000.0, 2772000.0,
     552             :             2774000.0, 2775000.0, 2777000.0, 2781000.0, 2785000.0, 2789000.0, 2792000.0, 2795000.0, 2797000.0, 2799000.0, 2801000.0, 2802000.0,
     553             :             2803000.0, 2803000.0, 2801000.0, 2797000.0, 2790000.0, 2780000.0, 2767000.0, 2750000.0, 2728000.0, 2701000.0, 2666000.0, 2622000.0,
     554             :             2564000.0, 2481000.0, 2335000.0};
     555             : 
     556             :         static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamCpFluidData{
     557             :             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,
     558             :             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,
     559             :             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,
     560             :             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,
     561             :             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,
     562             :             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,
     563             :             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};
     564             : 
     565             :         static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamCpGasFluidData{
     566             :             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,
     567             :             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,
     568             :             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,
     569             :             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,
     570             :             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,
     571             :             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,
     572             :             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};
     573             : 
     574             :         static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamDensityFluidData{
     575             :             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,
     576             :             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,
     577             :             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,
     578             :             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,
     579             :             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,
     580             :             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};
     581             : 
     582             :         static constexpr std::array<Real64, DefaultNumSteamTemps> DefaultSteamDensityGasFluidData{
     583             :             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,
     584             :             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,
     585             :             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,
     586             :             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,
     587             :             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,
     588             :             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,
     589             :             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,
     590             :             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,
     591             :             54.54,     64.64,     77.05,     92.76,     113.60,    143.90,    201.80};
     592             : 
     593             :         static constexpr std::array<Real64, DefaultNumSteamSuperheatedTemps> DefaultSteamSuperheatedTemps{
     594             :             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,
     595             :             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,
     596             :             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,
     597             :             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,
     598             :             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,
     599             :             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};
     600             : 
     601             :         static constexpr std::array<Real64, DefaultNumSteamSuperheatedTemps> DefaultSteamSuperheatedPressData{
     602             :             611.70,     657.10,     872.60,     1228.0,    1706.0,    2339.0,    3170.0,     4247.0,     5629.0,     7385.0,     9595.0,
     603             :             12350.0,    15760.0,    19950.0,    25040.0,   31200.0,   34000.0,   37010.0,    40240.0,    43700.0,    47410.0,    51390.0,
     604             :             55640.0,    60170.0,    65020.0,    70180.0,   75680.0,   81540.0,   87770.0,    94390.0,    97850.0,    101400.0,   105100.0,
     605             :             108900.0,   112800.0,   116800.0,   120900.0,  125100.0,  129500.0,  134000.0,   138600.0,   143400.0,   148300.0,   153300.0,
     606             :             158400.0,   163700.0,   169200.0,   174800.0,  180500.0,  186400.0,  192500.0,   198700.0,   205000.0,   211600.0,   218300.0,
     607             :             225200.0,   232200.0,   239500.0,   246900.0,  254500.0,  262300.0,  270300.0,   286800.0,   304200.0,   322400.0,   341500.0,
     608             :             361500.0,   382500.0,   404400.0,   427300.0,  451200.0,  476200.0,  502200.0,   529500.0,   557800.0,   587400.0,   618200.0,
     609             :             650300.0,   683700.0,   718500.0,   754600.0,  792200.0,  831200.0,  871800.0,   913800.0,   957500.0,   1003000.0,  1123000.0,
     610             :             1255000.0,  1399000.0,  1555000.0,  1724000.0, 1908000.0, 2106000.0, 2320000.0,  2550000.0,  2797000.0,  3347000.0,  3976000.0,
     611             :             4692000.0,  5503000.0,  6417000.0,  7442000.0, 8588000.0, 9865000.0, 11280000.0, 12860000.0, 14600000.0, 16530000.0, 18670000.0,
     612             :             21040000.0, 30000000.0, 35000000.0, 40000000.0};
     613             : 
     614         938 :         Array2D<Real64> DefaultSteamSuperheatedEnthalpyData(DefaultNumSteamSuperheatedPressure, DefaultNumSteamSuperheatedTemps);
     615             : 
     616         938 :         Array2D<Real64> DefaultSteamSuperheatedDensityData(DefaultNumSteamSuperheatedPressure, DefaultNumSteamSuperheatedTemps);
     617             : 
     618         589 :         struct FluidTempData
     619             :         {
     620             :             // Members
     621             :             std::string Name;      // Name of the temperature list
     622             :             int NumOfTemps;        // Number of temperatures in a particular arry
     623             :             Array1D<Real64> Temps; // Temperature values (degrees C)
     624             : 
     625             :             // Default Constructor
     626         469 :             FluidTempData() : NumOfTemps(0)
     627             :             {
     628         469 :             }
     629             :         };
     630             : 
     631             :         struct PressureSequence
     632             :         {
     633             :             // Members
     634             :             Real64 Pressure;
     635             :             int InPtr;
     636             : 
     637             :             // Default Constructor
     638          56 :             PressureSequence() : Pressure(0.0), InPtr(0)
     639             :             {
     640          56 :             }
     641             :         };
     642             : 
     643         547 :         struct FluidData
     644             :         {
     645             :             // Members
     646             :             std::string Name;
     647             :             bool IsGlycol;
     648             : 
     649             :             // Default Constructor
     650         469 :             FluidData() : IsGlycol(false)
     651             :             {
     652         469 :             }
     653             :         };
     654             : 
     655             :         // Object Data
     656         938 :         Array1D<FluidTempData> FluidTemps;
     657         938 :         Array1D<PressureSequence> PressurePtr;
     658         938 :         Array1D<FluidData> FluidNames;
     659             : 
     660         469 :         MaxAlphas = 0;
     661         469 :         MaxNumbers = 0;
     662         469 :         if (state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, "FluidProperties:Name") > 0) {
     663          36 :             state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(state, "FluidProperties:Name", Status, NumAlphas, NumNumbers);
     664          36 :             MaxAlphas = max(MaxAlphas, NumAlphas);
     665          36 :             MaxNumbers = max(MaxNumbers, NumNumbers);
     666             :         }
     667         469 :         if (state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, "FluidProperties:GlycolConcentration") > 0) {
     668          56 :             state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(
     669          28 :                 state, "FluidProperties:GlycolConcentration", Status, NumAlphas, NumNumbers);
     670          28 :             MaxAlphas = max(MaxAlphas, NumAlphas);
     671          28 :             MaxNumbers = max(MaxNumbers, NumNumbers);
     672             :         }
     673         469 :         NumOfFluidTempArrays = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, "FluidProperties:Temperatures");
     674         469 :         if (NumOfFluidTempArrays > 0) {
     675          29 :             state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(state, "FluidProperties:Temperatures", Status, NumAlphas, NumNumbers);
     676          29 :             MaxAlphas = max(MaxAlphas, NumAlphas);
     677          29 :             MaxNumbers = max(MaxNumbers, NumNumbers);
     678             :         }
     679         469 :         NumOfSatFluidPropArrays = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, "FluidProperties:Saturated");
     680         469 :         if (NumOfSatFluidPropArrays > 0) {
     681          27 :             state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(state, "FluidProperties:Saturated", Status, NumAlphas, NumNumbers);
     682          27 :             MaxAlphas = max(MaxAlphas, NumAlphas);
     683          27 :             MaxNumbers = max(MaxNumbers, NumNumbers);
     684             :         }
     685         469 :         NumOfSHFluidPropArrays = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, "FluidProperties:Superheated");
     686         469 :         if (NumOfSHFluidPropArrays > 0) {
     687          27 :             state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(state, "FluidProperties:Superheated", Status, NumAlphas, NumNumbers);
     688          27 :             MaxAlphas = max(MaxAlphas, NumAlphas);
     689          27 :             MaxNumbers = max(MaxNumbers, NumNumbers);
     690             :         }
     691         469 :         NumOfGlyFluidPropArrays = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, "FluidProperties:Concentration");
     692         469 :         if (NumOfGlyFluidPropArrays > 0) {
     693           4 :             state.dataInputProcessing->inputProcessor->getObjectDefMaxArgs(state, "FluidProperties:Concentration", Status, NumAlphas, NumNumbers);
     694           4 :             MaxAlphas = max(MaxAlphas, NumAlphas);
     695           4 :             MaxNumbers = max(MaxNumbers, NumNumbers);
     696             :         }
     697             : 
     698         469 :         Alphas.allocate(MaxAlphas);
     699         469 :         cAlphaFieldNames.allocate(MaxAlphas);
     700         469 :         lAlphaFieldBlanks.allocate(MaxAlphas);
     701             : 
     702         469 :         Alphas = "";
     703         469 :         cAlphaFieldNames = "";
     704         469 :         lAlphaFieldBlanks = false;
     705             : 
     706         469 :         Numbers.allocate(MaxNumbers);
     707         469 :         cNumericFieldNames.allocate(MaxNumbers);
     708         469 :         lNumericFieldBlanks.allocate(MaxNumbers);
     709             : 
     710         469 :         Numbers = 0.0;
     711         469 :         cNumericFieldNames = "";
     712         469 :         lNumericFieldBlanks = false;
     713             : 
     714         469 :         InitializeGlycRoutines();
     715             : 
     716             :         // Check to see if there is any FluidName input.  If not, this is okay as
     717             :         // long as the user only desires to simulate loops with water.  More than
     718             :         // one FluidName input is not allowed.
     719         469 :         CurrentModuleObject = "FluidProperties:Name";
     720         469 :         NumOfOptionalInput = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, CurrentModuleObject);
     721             : 
     722         469 :         FluidNames.allocate(NumOfOptionalInput);
     723             : 
     724             :         // Get a count on the number of refrigerants and the number of glycols entered
     725             :         // so that the main derived types can be allocated
     726         469 :         FluidNum = 0;
     727         508 :         for (Loop = 1; Loop <= NumOfOptionalInput; ++Loop) {
     728          39 :             state.dataInputProcessing->inputProcessor->getObjectItem(state,
     729             :                                                                      CurrentModuleObject,
     730             :                                                                      Loop,
     731             :                                                                      Alphas,
     732             :                                                                      NumAlphas,
     733             :                                                                      Numbers,
     734             :                                                                      NumNumbers,
     735             :                                                                      Status,
     736             :                                                                      lNumericFieldBlanks,
     737             :                                                                      lAlphaFieldBlanks,
     738             :                                                                      cAlphaFieldNames,
     739             :                                                                      cNumericFieldNames);
     740          39 :             if (UtilityRoutines::IsNameEmpty(state, Alphas(1), CurrentModuleObject, ErrorsFound)) continue;
     741          39 :             ++FluidNum;
     742          39 :             FluidNames(FluidNum).Name = Alphas(1);
     743          39 :             if (UtilityRoutines::SameString(Alphas(2), Refrig)) {
     744          28 :                 ++state.dataFluidProps->NumOfRefrigerants;
     745          28 :                 FluidNames(FluidNum).IsGlycol = false;
     746          11 :             } else if (UtilityRoutines::SameString(Alphas(2), Glycol)) {
     747          11 :                 ++state.dataFluidProps->NumOfGlycols;
     748          11 :                 FluidNames(FluidNum).IsGlycol = true;
     749             :             } else {
     750           0 :                 ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + "=\"" + Alphas(1) + "\", invalid type");
     751           0 :                 ShowContinueError(state, "...entered value=\"" + Alphas(2) + ", Only REFRIGERANT or GLYCOL allowed as " + cAlphaFieldNames(2));
     752           0 :                 ErrorsFound = true;
     753             :             }
     754             :         }
     755             : 
     756         469 :         if (ErrorsFound) {
     757           0 :             ShowFatalError(state, std::string{RoutineName} + " Previous errors in input cause program termination.");
     758             :         }
     759             : 
     760         469 :         if (state.dataFluidProps->NumOfRefrigerants + 1 > 0) {
     761         469 :             state.dataFluidProps->RefrigData.allocate(state.dataFluidProps->NumOfRefrigerants + 1);
     762         469 :             state.dataFluidProps->RefrigUsed.allocate(state.dataFluidProps->NumOfRefrigerants + 1);
     763         469 :             state.dataFluidProps->RefrigUsed = false;
     764         469 :             state.dataFluidProps->RefrigErrorTracking.allocate(state.dataFluidProps->NumOfRefrigerants + 1);
     765             :         }
     766         469 :         if (state.dataFluidProps->NumOfGlycols > 0) {
     767          11 :             state.dataFluidProps->GlyRawData.allocate(state.dataFluidProps->NumOfGlycols);
     768             :         }
     769             : 
     770             :         // Take the fluid names and assign them to the appropriate derived type
     771         469 :         state.dataFluidProps->NumOfRefrigerants = 1;
     772         469 :         state.dataFluidProps->NumOfGlycols = 0;
     773         469 :         state.dataFluidProps->RefrigData(1).Name = "STEAM";
     774         469 :         state.dataFluidProps->RefrigUsed(1) = true;
     775         469 :         state.dataFluidProps->RefrigErrorTracking(1).Name = "STEAM";
     776         508 :         for (Loop = 1; Loop <= FluidNum; ++Loop) {
     777          39 :             if (!FluidNames(Loop).IsGlycol) {
     778          28 :                 ++state.dataFluidProps->NumOfRefrigerants;
     779          28 :                 state.dataFluidProps->RefrigData(state.dataFluidProps->NumOfRefrigerants).Name = FluidNames(Loop).Name;
     780          28 :                 state.dataFluidProps->RefrigErrorTracking(state.dataFluidProps->NumOfRefrigerants).Name = FluidNames(Loop).Name;
     781          11 :             } else if (FluidNames(Loop).IsGlycol) {
     782          11 :                 ++state.dataFluidProps->NumOfGlycols;
     783          11 :                 state.dataFluidProps->GlyRawData(state.dataFluidProps->NumOfGlycols).Name = FluidNames(Loop).Name;
     784             :             }
     785             :         }
     786             : 
     787         469 :         FluidNames.deallocate();
     788             : 
     789         469 :         state.dataFluidProps->RefrigData(1).NumPsPoints = DefaultNumSteamTemps;
     790         469 :         state.dataFluidProps->RefrigData(1).PsTemps.allocate(DefaultNumSteamTemps);
     791         469 :         state.dataFluidProps->RefrigData(1).PsValues.allocate(DefaultNumSteamTemps);
     792         469 :         state.dataFluidProps->RefrigData(1).NumHPoints = DefaultNumSteamTemps;
     793         469 :         state.dataFluidProps->RefrigData(1).HTemps.allocate(DefaultNumSteamTemps);
     794         469 :         state.dataFluidProps->RefrigData(1).HfValues.allocate(DefaultNumSteamTemps);
     795         469 :         state.dataFluidProps->RefrigData(1).HfgValues.allocate(DefaultNumSteamTemps);
     796         469 :         state.dataFluidProps->RefrigData(1).NumCpPoints = DefaultNumSteamTemps;
     797         469 :         state.dataFluidProps->RefrigData(1).CpTemps.allocate(DefaultNumSteamTemps);
     798         469 :         state.dataFluidProps->RefrigData(1).CpfValues.allocate(DefaultNumSteamTemps);
     799         469 :         state.dataFluidProps->RefrigData(1).CpfgValues.allocate(DefaultNumSteamTemps);
     800         469 :         state.dataFluidProps->RefrigData(1).NumRhoPoints = DefaultNumSteamTemps;
     801         469 :         state.dataFluidProps->RefrigData(1).RhoTemps.allocate(DefaultNumSteamTemps);
     802         469 :         state.dataFluidProps->RefrigData(1).RhofValues.allocate(DefaultNumSteamTemps);
     803         469 :         state.dataFluidProps->RefrigData(1).RhofgValues.allocate(DefaultNumSteamTemps);
     804             : 
     805         469 :         state.dataFluidProps->RefrigData(1).PsTemps = DefaultSteamTemps;
     806         469 :         state.dataFluidProps->RefrigData(1).PsValues = DefaultSteamPressData;
     807         469 :         state.dataFluidProps->RefrigData(1).HTemps = DefaultSteamTemps;
     808         469 :         state.dataFluidProps->RefrigData(1).HfValues = DefaultSteamEnthalpyFluidData;
     809         469 :         state.dataFluidProps->RefrigData(1).HfgValues = DefaultSteamEnthalpyGasFluidData;
     810         469 :         state.dataFluidProps->RefrigData(1).CpTemps = DefaultSteamTemps;
     811         469 :         state.dataFluidProps->RefrigData(1).CpfValues = DefaultSteamCpFluidData;
     812         469 :         state.dataFluidProps->RefrigData(1).CpfgValues = DefaultSteamCpGasFluidData;
     813         469 :         state.dataFluidProps->RefrigData(1).RhoTemps = DefaultSteamTemps;
     814         469 :         state.dataFluidProps->RefrigData(1).RhofValues = DefaultSteamDensityFluidData;
     815         469 :         state.dataFluidProps->RefrigData(1).RhofgValues = DefaultSteamDensityGasFluidData;
     816             : 
     817         469 :         state.dataFluidProps->RefrigData(1).NumSuperTempPts = DefaultNumSteamSuperheatedTemps;
     818         469 :         state.dataFluidProps->RefrigData(1).NumSuperPressPts = DefaultNumSteamSuperheatedPressure;
     819         469 :         state.dataFluidProps->RefrigData(1).SHTemps.allocate(state.dataFluidProps->RefrigData(1).NumSuperTempPts);
     820         469 :         state.dataFluidProps->RefrigData(1).SHPress.allocate(state.dataFluidProps->RefrigData(1).NumSuperPressPts);
     821        1407 :         state.dataFluidProps->RefrigData(1).HshValues.allocate(state.dataFluidProps->RefrigData(1).NumSuperPressPts,
     822        1407 :                                                                state.dataFluidProps->RefrigData(1).NumSuperTempPts);
     823        1407 :         state.dataFluidProps->RefrigData(1).RhoshValues.allocate(state.dataFluidProps->RefrigData(1).NumSuperPressPts,
     824        1407 :                                                                  state.dataFluidProps->RefrigData(1).NumSuperTempPts);
     825         469 :         state.dataFluidProps->RefrigData(1).SHTemps = DefaultSteamSuperheatedTemps;
     826         469 :         state.dataFluidProps->RefrigData(1).SHPress = DefaultSteamSuperheatedPressData;
     827         469 :         state.dataFluidProps->RefrigData(1).HshValues = DefaultSteamSuperheatedEnthalpyData;
     828         469 :         state.dataFluidProps->RefrigData(1).RhoshValues = DefaultSteamSuperheatedDensityData;
     829             : 
     830             :         // Read in all of the temperature arrays in the input file
     831         469 :         FluidTemps.allocate(NumOfFluidTempArrays);
     832             : 
     833         469 :         CurrentModuleObject = "FluidProperties:Temperatures";
     834             : 
     835         529 :         for (Loop = 1; Loop <= NumOfFluidTempArrays; ++Loop) {
     836             : 
     837          60 :             state.dataInputProcessing->inputProcessor->getObjectItem(state,
     838             :                                                                      CurrentModuleObject,
     839             :                                                                      Loop,
     840             :                                                                      Alphas,
     841             :                                                                      NumAlphas,
     842             :                                                                      Numbers,
     843             :                                                                      NumNumbers,
     844             :                                                                      Status,
     845             :                                                                      lNumericFieldBlanks,
     846             :                                                                      lAlphaFieldBlanks,
     847             :                                                                      cAlphaFieldNames,
     848             :                                                                      cNumericFieldNames);
     849             : 
     850          60 :             FluidTemps(Loop).Name = Alphas(1);
     851          60 :             FluidTemps(Loop).NumOfTemps = NumNumbers;
     852             : 
     853          60 :             FluidTemps(Loop).Temps.allocate(FluidTemps(Loop).NumOfTemps);
     854          60 :             FluidTemps(Loop).Temps = Numbers({1, NumNumbers});
     855             : 
     856        4785 :             for (TempLoop = 2; TempLoop <= FluidTemps(Loop).NumOfTemps; ++TempLoop) {
     857        4725 :                 if (FluidTemps(Loop).Temps(TempLoop) <= FluidTemps(Loop).Temps(TempLoop - 1)) {
     858           0 :                     ShowSevereError(state,
     859           0 :                                     std::string{RoutineName} + CurrentModuleObject + " name=" + FluidTemps(Loop).Name +
     860             :                                         ", lists must have data in ascending order");
     861           0 :                     ShowContinueError(state,
     862           0 :                                       format("First out of order occurrence at Temperature #({}) {{{:.R3}}} >= Temp({}) {{{:.R3}}}",
     863           0 :                                              TempLoop - 1,
     864           0 :                                              FluidTemps(Loop).Temps(TempLoop - 1),
     865             :                                              TempLoop,
     866           0 :                                              FluidTemps(Loop).Temps(TempLoop)));
     867           0 :                     ErrorsFound = true;
     868           0 :                     break;
     869             :                 }
     870             :             }
     871             :         }
     872             : 
     873             :         // *************** REFRIGERANTS ***************
     874             :         // Go through each refrigerant found in the fluid names statement and read in the data
     875             :         // Note that every valid fluid must have ALL of the necessary data or a fatal error will
     876             :         // be produced.
     877         497 :         for (Loop = 2; Loop <= state.dataFluidProps->NumOfRefrigerants; ++Loop) {
     878             : 
     879             :             // For each property, cycle through all the valid input until the proper match is found.
     880             : 
     881             :             // **********    SATURATED DATA SECTION    **********
     882             : 
     883             :             // Get: ***** Saturation Pressure temperatures and data (fluidgas only) *****
     884             :             // This section added by S.J.Rees May 2002.
     885          28 :             CurrentModuleObject = "FluidProperties:Saturated";
     886          28 :             TempsName = "";
     887          35 :             for (InData = 1; InData <= NumOfSatFluidPropArrays; ++InData) {
     888             : 
     889          35 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
     890             :                                                                          CurrentModuleObject,
     891             :                                                                          InData,
     892             :                                                                          Alphas,
     893             :                                                                          NumAlphas,
     894             :                                                                          Numbers,
     895             :                                                                          NumNumbers,
     896             :                                                                          Status,
     897             :                                                                          lNumericFieldBlanks,
     898             :                                                                          lAlphaFieldBlanks,
     899             :                                                                          cAlphaFieldNames,
     900             :                                                                          cNumericFieldNames);
     901             : 
     902          98 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->RefrigData(Loop).Name)) &&
     903          63 :                     (UtilityRoutines::SameString(Alphas(2), Pressure)) && (UtilityRoutines::SameString(Alphas(3), GasFluid))) {
     904             : 
     905          31 :                     for (TempLoop = 1; TempLoop <= NumOfFluidTempArrays; ++TempLoop) {
     906             : 
     907          31 :                         if (UtilityRoutines::SameString(Alphas(4), FluidTemps(TempLoop).Name)) {
     908          28 :                             TempsName = FluidTemps(TempLoop).Name;
     909             :                             // At this point, we have found the correct input line and found a match
     910             :                             // for the temperature array.  It's time to load up the local derived type.
     911          28 :                             state.dataFluidProps->RefrigData(Loop).NumPsPoints = FluidTemps(TempLoop).NumOfTemps;
     912          28 :                             state.dataFluidProps->RefrigData(Loop).PsTemps.allocate(state.dataFluidProps->RefrigData(Loop).NumPsPoints);
     913          28 :                             state.dataFluidProps->RefrigData(Loop).PsValues.allocate(state.dataFluidProps->RefrigData(Loop).NumPsPoints);
     914             : 
     915             :                             // Make sure the number of points in the two arrays (temps and values) are the same
     916          28 :                             if (NumNumbers != state.dataFluidProps->RefrigData(Loop).NumPsPoints) {
     917           0 :                                 ShowSevereError(
     918           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
     919           0 :                                 ShowContinueError(state,
     920           0 :                                                   "Temperature Name=" + TempsName +
     921             :                                                       ", Temperature array and fluid saturation pressure array must have the same number of points");
     922           0 :                                 ShowContinueError(state,
     923           0 :                                                   format("Temperature # points={} whereas {} # pressure points={}",
     924             :                                                          NumNumbers,
     925           0 :                                                          state.dataFluidProps->RefrigData(Loop).Name,
     926           0 :                                                          state.dataFluidProps->RefrigData(Loop).NumPsPoints));
     927           0 :                                 ErrorsFound = true;
     928           0 :                                 break; // the TempLoop DO Loop
     929             :                             }
     930             : 
     931             :                             // Same number of points so assign the values
     932          28 :                             state.dataFluidProps->RefrigData(Loop).PsTemps = FluidTemps(TempLoop).Temps;
     933          28 :                             state.dataFluidProps->RefrigData(Loop).PsValues = Numbers({1, NumNumbers});
     934             : 
     935          28 :                             break; // the TempLoop DO loop
     936             :                         }
     937             : 
     938             :                         // If it made it all the way to the last temperature array and didn't find a match, then no match was found
     939           3 :                         if (TempLoop == NumOfFluidTempArrays) {
     940           0 :                             ShowSevereError(state,
     941           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
     942           0 :                             ShowContinueError(state, "Found saturated fluid gas/fluid pressure input but no matching temperature array");
     943           0 :                             ShowContinueError(state, "Entered Temperature Name=" + TempsName);
     944           0 :                             ErrorsFound = true;
     945             :                         }
     946             : 
     947             :                     } // ...end of FluidTemps DO loop
     948             : 
     949          28 :                     break; // the InData DO loop
     950             :                 }
     951             : 
     952             :                 // If it made it all the way to the last input occurrence and didn't find a match,
     953             :                 // then no sat press data found
     954           7 :                 if (InData == NumOfSatFluidPropArrays) {
     955           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
     956           0 :                     ShowContinueError(state,
     957           0 :                                       "No Gas/Fluid Saturation Pressure found. Need properties with " + cAlphaFieldNames(2) + "=\"Pressure\" and " +
     958           0 :                                           cAlphaFieldNames(3) + "=\"FluidGas\".");
     959           0 :                     ErrorsFound = true;
     960             :                 }
     961             : 
     962             :             } // ...end of DO loop through all of the input syntax trying to find saturation pressure for this refrigerant
     963             : 
     964             :             // Get: ***** ENTHALPY of SATURATED LIQUID *****
     965          28 :             CurrentModuleObject = "FluidProperties:Saturated";
     966          28 :             TempsName = "";
     967          63 :             for (InData = 1; InData <= NumOfSatFluidPropArrays; ++InData) {
     968             : 
     969          63 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
     970             :                                                                          CurrentModuleObject,
     971             :                                                                          InData,
     972             :                                                                          Alphas,
     973             :                                                                          NumAlphas,
     974             :                                                                          Numbers,
     975             :                                                                          NumNumbers,
     976             :                                                                          Status,
     977             :                                                                          lNumericFieldBlanks,
     978             :                                                                          lAlphaFieldBlanks,
     979             :                                                                          cAlphaFieldNames,
     980             :                                                                          cNumericFieldNames);
     981             : 
     982         182 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->RefrigData(Loop).Name)) &&
     983          91 :                     (UtilityRoutines::SameString(Alphas(2), Enthalpy)) && (UtilityRoutines::SameString(Alphas(3), Fluid))) {
     984             : 
     985          31 :                     for (TempLoop = 1; TempLoop <= NumOfFluidTempArrays; ++TempLoop) {
     986             : 
     987          31 :                         if (UtilityRoutines::SameString(Alphas(4), FluidTemps(TempLoop).Name)) {
     988          28 :                             TempsName = FluidTemps(TempLoop).Name;
     989             :                             // At this point, we have found the correct input line and found a match
     990             :                             // for the temperature array.  It's time to load up the local derived type.
     991          28 :                             state.dataFluidProps->RefrigData(Loop).NumHPoints = FluidTemps(TempLoop).NumOfTemps;
     992          28 :                             state.dataFluidProps->RefrigData(Loop).HTemps.allocate(state.dataFluidProps->RefrigData(Loop).NumHPoints);
     993          28 :                             state.dataFluidProps->RefrigData(Loop).HfValues.allocate(state.dataFluidProps->RefrigData(Loop).NumHPoints);
     994             : 
     995             :                             // Make sure the number of points in the two arrays (temps and values) are the same
     996          28 :                             if (NumNumbers != state.dataFluidProps->RefrigData(Loop).NumHPoints) {
     997           0 :                                 ShowSevereError(
     998           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
     999           0 :                                 ShowSevereError(state,
    1000           0 :                                                 "Temperature Name=" + TempsName +
    1001             :                                                     ", Temperature array and saturated fluid enthalpy array must have the same number of points");
    1002           0 :                                 ShowContinueError(state,
    1003           0 :                                                   format("Temperature # points={} whereas {} # points={}",
    1004             :                                                          NumNumbers,
    1005           0 :                                                          state.dataFluidProps->RefrigData(Loop).Name,
    1006           0 :                                                          state.dataFluidProps->RefrigData(Loop).NumHPoints));
    1007           0 :                                 ErrorsFound = true;
    1008           0 :                                 break; // the TempLoop DO Loop
    1009             :                             }
    1010             : 
    1011             :                             // Same number of points so assign the values
    1012          28 :                             state.dataFluidProps->RefrigData(Loop).HTemps = FluidTemps(TempLoop).Temps;
    1013          28 :                             state.dataFluidProps->RefrigData(Loop).HfValues = Numbers({1, NumNumbers});
    1014             : 
    1015          28 :                             break; // the TempLoop DO loop
    1016             :                         }
    1017             : 
    1018             :                         // If it made it all the way to the last temperature array and didn't find a match, then no match was found
    1019           3 :                         if (TempLoop == NumOfFluidTempArrays) {
    1020           0 :                             ShowSevereError(state,
    1021           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1022           0 :                             ShowContinueError(state, "Found saturated fluid enthalpy input but no matching temperature array");
    1023           0 :                             ShowContinueError(state, "Entered Temperature Name=" + TempsName);
    1024           0 :                             ErrorsFound = true;
    1025             :                         }
    1026             : 
    1027             :                     } // ...end of FluidTemps DO loop
    1028             : 
    1029          28 :                     break; // the InData DO loop
    1030             :                 }
    1031             : 
    1032             :                 // If it made it all the way to the last input occurrence and didn't find a match, then no sat fluid enthalpy data found
    1033          35 :                 if (InData == NumOfSatFluidPropArrays) {
    1034           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1035           0 :                     ShowContinueError(state,
    1036           0 :                                       "No Saturated Fluid Enthalpy found. Need properties to be entered with " + cAlphaFieldNames(2) +
    1037           0 :                                           "=\"Enthalpy\" and " + cAlphaFieldNames(3) + "=\"Fluid\".");
    1038           0 :                     ErrorsFound = true;
    1039             :                 }
    1040             : 
    1041             :             } // ...end of DO loop through all of the input syntax trying to find saturated fluid enthalpy for this refrigerant
    1042             : 
    1043             :             // Get: ***** ENTHALPY of SATURATED LIQUID/VAPOR ***** (difference between Hf and Hg, i.e. Hfg)
    1044          28 :             CurrentModuleObject = "FluidProperties:Saturated";
    1045          91 :             for (InData = 1; InData <= NumOfSatFluidPropArrays; ++InData) {
    1046             : 
    1047          91 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1048             :                                                                          CurrentModuleObject,
    1049             :                                                                          InData,
    1050             :                                                                          Alphas,
    1051             :                                                                          NumAlphas,
    1052             :                                                                          Numbers,
    1053             :                                                                          NumNumbers,
    1054             :                                                                          Status,
    1055             :                                                                          lNumericFieldBlanks,
    1056             :                                                                          lAlphaFieldBlanks,
    1057             :                                                                          cAlphaFieldNames,
    1058             :                                                                          cNumericFieldNames);
    1059             : 
    1060         266 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->RefrigData(Loop).Name)) &&
    1061         147 :                     (UtilityRoutines::SameString(Alphas(2), Enthalpy)) && (UtilityRoutines::SameString(Alphas(3), GasFluid))) {
    1062             : 
    1063          31 :                     for (TempLoop = 1; TempLoop <= NumOfFluidTempArrays; ++TempLoop) {
    1064             : 
    1065          31 :                         if (UtilityRoutines::SameString(Alphas(4), FluidTemps(TempLoop).Name)) {
    1066          28 :                             if (!UtilityRoutines::SameString(FluidTemps(TempLoop).Name, TempsName)) {
    1067           0 :                                 ShowSevereError(
    1068           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1069           0 :                                 ShowContinueError(state, "Temperatures for enthalpy fluid and gas/fluid points are not the same");
    1070           0 :                                 ShowContinueError(state, "Name=" + Alphas(4) + " => " + FluidTemps(TempLoop).Name + " /= " + TempsName);
    1071           0 :                                 ErrorsFound = true;
    1072           0 :                                 break;
    1073             :                             }
    1074             :                             // At this point, we have found the correct input line and found a match
    1075             :                             // for the temperature array.  It's time to load up the local derived type.
    1076          28 :                             state.dataFluidProps->RefrigData(Loop).HfgValues.allocate(state.dataFluidProps->RefrigData(Loop).NumHPoints);
    1077             : 
    1078             :                             // Make sure the number of points in the two arrays (temps and values) are the same
    1079          28 :                             if (NumNumbers != state.dataFluidProps->RefrigData(Loop).NumHPoints) {
    1080           0 :                                 ShowSevereError(
    1081           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1082           0 :                                 ShowContinueError(
    1083             :                                     state,
    1084           0 :                                     "Temperature Name=" + TempsName +
    1085             :                                         ", Temperature array and saturated gas/fluid enthalpy array must have the same number of points");
    1086           0 :                                 ShowContinueError(state,
    1087           0 :                                                   format("Temperature # points={} whereas {} # points={}",
    1088             :                                                          NumNumbers,
    1089           0 :                                                          state.dataFluidProps->RefrigData(Loop).Name,
    1090           0 :                                                          state.dataFluidProps->RefrigData(Loop).NumHPoints));
    1091           0 :                                 ErrorsFound = true;
    1092           0 :                                 break; // the TempLoop DO Loop
    1093             :                             }
    1094             : 
    1095             :                             // Same number of points so assign the values
    1096          28 :                             state.dataFluidProps->RefrigData(Loop).HfgValues = Numbers({1, NumNumbers});
    1097             : 
    1098          28 :                             break; // the TempLoop DO loop
    1099             :                         }
    1100             : 
    1101             :                         // If it made it all the way to the last temperature array and didn't find a match, then no match was found
    1102           3 :                         if (TempLoop == NumOfFluidTempArrays) {
    1103           0 :                             ShowSevereError(state,
    1104           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1105           0 :                             ShowContinueError(state, "Found saturated gas/fluid enthalpy input but no matching temperature array");
    1106           0 :                             ShowContinueError(state, "Entered Temperature Name=" + TempsName);
    1107           0 :                             ErrorsFound = true;
    1108             :                         }
    1109             : 
    1110             :                     } // ...end of FluidTemps DO loop
    1111             : 
    1112          28 :                     break; // the InData DO loop
    1113             :                 }
    1114             : 
    1115             :                 // If it made it all the way to the last input occurrence and didn't find a match, then no sat f/g enthalpy data found
    1116          63 :                 if (InData == NumOfSatFluidPropArrays) {
    1117           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1118           0 :                     ShowContinueError(state,
    1119           0 :                                       "No Saturated Gas/Fluid Enthalpy found. Need properties to be entered with " + cAlphaFieldNames(2) +
    1120           0 :                                           "=\"Enthalpy\" and " + cAlphaFieldNames(3) + "=\"FluidGas\".");
    1121           0 :                     ErrorsFound = true;
    1122             :                 }
    1123             : 
    1124             :             } // ...end of DO loop through all of the input syntax trying to find saturated gas/fluid enthalpy for this refrigerant
    1125             : 
    1126             :             // Get: ***** SPECIFIC HEAT of SATURATED LIQUID *****
    1127          28 :             CurrentModuleObject = "FluidProperties:Saturated";
    1128          28 :             TempsName = "";
    1129         175 :             for (InData = 1; InData <= NumOfSatFluidPropArrays; ++InData) {
    1130             : 
    1131         175 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1132             :                                                                          CurrentModuleObject,
    1133             :                                                                          InData,
    1134             :                                                                          Alphas,
    1135             :                                                                          NumAlphas,
    1136             :                                                                          Numbers,
    1137             :                                                                          NumNumbers,
    1138             :                                                                          Status,
    1139             :                                                                          lNumericFieldBlanks,
    1140             :                                                                          lAlphaFieldBlanks,
    1141             :                                                                          cAlphaFieldNames,
    1142             :                                                                          cNumericFieldNames);
    1143             : 
    1144         518 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->RefrigData(Loop).Name)) &&
    1145         203 :                     (UtilityRoutines::SameString(Alphas(2), SpecificHeat)) && (UtilityRoutines::SameString(Alphas(3), Fluid))) {
    1146             : 
    1147          31 :                     for (TempLoop = 1; TempLoop <= NumOfFluidTempArrays; ++TempLoop) {
    1148             : 
    1149          31 :                         if (UtilityRoutines::SameString(Alphas(4), FluidTemps(TempLoop).Name)) {
    1150          28 :                             TempsName = FluidTemps(TempLoop).Name;
    1151             :                             // At this point, we have found the correct input line and found a match
    1152             :                             // for the temperature array.  It's time to load up the local derived type.
    1153          28 :                             state.dataFluidProps->RefrigData(Loop).NumCpPoints = FluidTemps(TempLoop).NumOfTemps;
    1154          28 :                             state.dataFluidProps->RefrigData(Loop).CpTemps.allocate(state.dataFluidProps->RefrigData(Loop).NumCpPoints);
    1155          28 :                             state.dataFluidProps->RefrigData(Loop).CpfValues.allocate(state.dataFluidProps->RefrigData(Loop).NumCpPoints);
    1156             : 
    1157             :                             // Make sure the number of points in the two arrays (temps and values) are the same
    1158          28 :                             if (NumNumbers != state.dataFluidProps->RefrigData(Loop).NumCpPoints) {
    1159           0 :                                 ShowSevereError(
    1160           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1161           0 :                                 ShowSevereError(state,
    1162           0 :                                                 "Temperature Name=" + TempsName +
    1163             :                                                     ", Temperature array and saturated fluid Cp array must have the same number of points");
    1164           0 :                                 ShowContinueError(state,
    1165           0 :                                                   format("Temperature # points={} whereas {} # Cp points={}",
    1166             :                                                          NumNumbers,
    1167           0 :                                                          state.dataFluidProps->RefrigData(Loop).Name,
    1168           0 :                                                          state.dataFluidProps->RefrigData(Loop).NumCpPoints));
    1169           0 :                                 ErrorsFound = true;
    1170           0 :                                 break; // the TempLoop DO Loop
    1171             :                             }
    1172             : 
    1173             :                             // Same number of points so assign the values
    1174          28 :                             state.dataFluidProps->RefrigData(Loop).CpTemps = FluidTemps(TempLoop).Temps;
    1175          28 :                             state.dataFluidProps->RefrigData(Loop).CpfValues = Numbers({1, NumNumbers});
    1176             : 
    1177          28 :                             break; // the TempLoop DO loop
    1178             :                         }
    1179             : 
    1180             :                         // If it made it all the way to the last temperature array and didn't find a match, then no match was found
    1181           3 :                         if (TempLoop == NumOfFluidTempArrays) {
    1182           0 :                             ShowSevereError(state,
    1183           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1184           0 :                             ShowContinueError(state, "Found saturated fluid specific heat (Cp) input but no matching temperature array");
    1185           0 :                             ShowContinueError(state, "Entered Temperature Name=" + TempsName);
    1186           0 :                             ErrorsFound = true;
    1187             :                         }
    1188             : 
    1189             :                     } // ...end of FluidTemps DO loop
    1190             : 
    1191          28 :                     break; // the InData DO loop
    1192             :                 }
    1193             : 
    1194             :                 // If it made it all the way to the last input occurrence and didn't find a match, then no sat fluid Cp data found
    1195         147 :                 if (InData == NumOfSatFluidPropArrays) {
    1196           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1197           0 :                     ShowContinueError(state,
    1198           0 :                                       "No Saturated Fluid Specific Heat found. Need properties to be entered with " + cAlphaFieldNames(2) +
    1199           0 :                                           "=\"SpecificHeat\" and " + cAlphaFieldNames(3) + "=\"Fluid\".");
    1200           0 :                     ErrorsFound = true;
    1201             :                 }
    1202             : 
    1203             :             } // ...end of DO loop through all of the input syntax trying to find saturated fluid Cp for this refrigerant
    1204             : 
    1205             :             // Get: ***** SPECIFIC HEAT of SATURATED LIQUID/VAPOR ***** (difference between Cpf and Cpg, i.e. Cpfg)
    1206          28 :             CurrentModuleObject = "FluidProperties:Saturated";
    1207         203 :             for (InData = 1; InData <= NumOfSatFluidPropArrays; ++InData) {
    1208             : 
    1209         203 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1210             :                                                                          CurrentModuleObject,
    1211             :                                                                          InData,
    1212             :                                                                          Alphas,
    1213             :                                                                          NumAlphas,
    1214             :                                                                          Numbers,
    1215             :                                                                          NumNumbers,
    1216             :                                                                          Status,
    1217             :                                                                          lNumericFieldBlanks,
    1218             :                                                                          lAlphaFieldBlanks,
    1219             :                                                                          cAlphaFieldNames,
    1220             :                                                                          cNumericFieldNames);
    1221             : 
    1222         602 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->RefrigData(Loop).Name)) &&
    1223         259 :                     (UtilityRoutines::SameString(Alphas(2), SpecificHeat)) && (UtilityRoutines::SameString(Alphas(3), GasFluid))) {
    1224             : 
    1225          31 :                     for (TempLoop = 1; TempLoop <= NumOfFluidTempArrays; ++TempLoop) {
    1226             : 
    1227          31 :                         if (UtilityRoutines::SameString(Alphas(4), FluidTemps(TempLoop).Name)) {
    1228          28 :                             if (!UtilityRoutines::SameString(FluidTemps(TempLoop).Name, TempsName)) {
    1229           0 :                                 ShowSevereError(
    1230           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1231           0 :                                 ShowContinueError(state, "Temperatures for specific heat fluid and gas/fluid points are not the same");
    1232           0 :                                 ShowContinueError(state, "Name=" + Alphas(4) + " => " + FluidTemps(TempLoop).Name + " /= " + TempsName);
    1233           0 :                                 ErrorsFound = true;
    1234           0 :                                 break;
    1235             :                             }
    1236             :                             // At this point, we have found the correct input line and found a match
    1237             :                             // for the temperature array.  It's time to load up the local derived type.
    1238          28 :                             state.dataFluidProps->RefrigData(Loop).CpfgValues.allocate(state.dataFluidProps->RefrigData(Loop).NumCpPoints);
    1239             : 
    1240             :                             // Make sure the number of points in the two arrays (temps and values) are the same
    1241          28 :                             if (NumNumbers != state.dataFluidProps->RefrigData(Loop).NumCpPoints) {
    1242           0 :                                 ShowSevereError(
    1243           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1244           0 :                                 ShowContinueError(state,
    1245           0 :                                                   "Temperature Name=" + TempsName +
    1246             :                                                       ", Temperature array and saturated gas/fluid Cp array must have the same number of points");
    1247           0 :                                 ShowContinueError(state,
    1248           0 :                                                   format("Temperature # points={} whereas {} # Cp points={}",
    1249             :                                                          NumNumbers,
    1250           0 :                                                          state.dataFluidProps->RefrigData(Loop).Name,
    1251           0 :                                                          state.dataFluidProps->RefrigData(Loop).NumCpPoints));
    1252           0 :                                 ErrorsFound = true;
    1253           0 :                                 break; // the TempLoop DO Loop
    1254             :                             }
    1255             : 
    1256             :                             // Same number of points so assign the values
    1257          28 :                             state.dataFluidProps->RefrigData(Loop).CpfgValues = Numbers({1, NumNumbers});
    1258             : 
    1259          28 :                             break; // the TempLoop DO loop
    1260             :                         }
    1261             : 
    1262             :                         // If it made it all the way to the last temperature array and didn't find a match, then no match was found
    1263           3 :                         if (TempLoop == NumOfFluidTempArrays) {
    1264           0 :                             ShowSevereError(state,
    1265           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1266           0 :                             ShowContinueError(state, "Found saturated gas/fluid specific heat (Cp) input but no matching temperature array");
    1267           0 :                             ShowContinueError(state, "Entered Temperature Name=" + TempsName);
    1268           0 :                             ErrorsFound = true;
    1269             :                         }
    1270             : 
    1271             :                     } // ...end of FluidTemps DO loop
    1272             : 
    1273          28 :                     break; // the InData DO loop
    1274             :                 }
    1275             : 
    1276             :                 // If it made it all the way to the last input occurrence and didn't find a match, then no sat f/g Cp data found
    1277         175 :                 if (InData == NumOfSatFluidPropArrays) {
    1278           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1279           0 :                     ShowContinueError(state,
    1280           0 :                                       "No Saturated Gas/Fluid Specific Heat found. Need properties to be entered with " + cAlphaFieldNames(2) +
    1281           0 :                                           "=\"SpecificHeat\" and " + cAlphaFieldNames(3) + "=\"FluidGas\".");
    1282           0 :                     ErrorsFound = true;
    1283             :                 }
    1284             : 
    1285             :             } // ...end of DO loop through all of the input syntax trying to find saturated gas/fluid Cp for this refrigerant
    1286             : 
    1287             :             // Get: ***** DENSITY of SATURATED LIQUID *****
    1288          28 :             CurrentModuleObject = "FluidProperties:Saturated";
    1289          28 :             TempsName = "";
    1290         119 :             for (InData = 1; InData <= NumOfSatFluidPropArrays; ++InData) {
    1291             : 
    1292         119 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1293             :                                                                          CurrentModuleObject,
    1294             :                                                                          InData,
    1295             :                                                                          Alphas,
    1296             :                                                                          NumAlphas,
    1297             :                                                                          Numbers,
    1298             :                                                                          NumNumbers,
    1299             :                                                                          Status,
    1300             :                                                                          lNumericFieldBlanks,
    1301             :                                                                          lAlphaFieldBlanks,
    1302             :                                                                          cAlphaFieldNames,
    1303             :                                                                          cNumericFieldNames);
    1304             : 
    1305         350 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->RefrigData(Loop).Name)) &&
    1306         147 :                     (UtilityRoutines::SameString(Alphas(2), Density)) && (UtilityRoutines::SameString(Alphas(3), Fluid))) {
    1307             : 
    1308          31 :                     for (TempLoop = 1; TempLoop <= NumOfFluidTempArrays; ++TempLoop) {
    1309             : 
    1310          31 :                         if (UtilityRoutines::SameString(Alphas(4), FluidTemps(TempLoop).Name)) {
    1311          28 :                             TempsName = FluidTemps(TempLoop).Name;
    1312             :                             // At this point, we have found the correct input line and found a match
    1313             :                             // for the temperature array.  It's time to load up the local derived type.
    1314          28 :                             state.dataFluidProps->RefrigData(Loop).NumRhoPoints = FluidTemps(TempLoop).NumOfTemps;
    1315          28 :                             state.dataFluidProps->RefrigData(Loop).RhoTemps.allocate(state.dataFluidProps->RefrigData(Loop).NumRhoPoints);
    1316          28 :                             state.dataFluidProps->RefrigData(Loop).RhofValues.allocate(state.dataFluidProps->RefrigData(Loop).NumRhoPoints);
    1317             : 
    1318             :                             // Make sure the number of points in the two arrays (temps and values) are the same
    1319          28 :                             if (NumNumbers != state.dataFluidProps->RefrigData(Loop).NumRhoPoints) {
    1320           0 :                                 ShowSevereError(
    1321           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1322           0 :                                 ShowContinueError(state,
    1323           0 :                                                   "Temperature Name=" + TempsName +
    1324             :                                                       ", Temperature array and saturated fluid density array must have the same number of points");
    1325           0 :                                 ShowContinueError(state,
    1326           0 :                                                   format("Temperature # points={} whereas {} # Density points={}",
    1327             :                                                          NumNumbers,
    1328           0 :                                                          state.dataFluidProps->RefrigData(Loop).Name,
    1329           0 :                                                          state.dataFluidProps->RefrigData(Loop).NumRhoPoints));
    1330           0 :                                 ErrorsFound = true;
    1331           0 :                                 break; // the TempLoop DO Loop
    1332             :                             }
    1333             : 
    1334             :                             // Same number of points so assign the values
    1335          28 :                             state.dataFluidProps->RefrigData(Loop).RhoTemps = FluidTemps(TempLoop).Temps;
    1336          28 :                             state.dataFluidProps->RefrigData(Loop).RhofValues = Numbers({1, NumNumbers});
    1337             : 
    1338          28 :                             break; // the TempLoop DO loop
    1339             :                         }
    1340             : 
    1341             :                         // If it made it all the way to the last temperature array and didn't find a match, then no match was found
    1342           3 :                         if (TempLoop == NumOfFluidTempArrays) {
    1343           0 :                             ShowSevereError(state,
    1344           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1345           0 :                             ShowContinueError(state, "Found saturated fluid density input but no matching temperature array");
    1346           0 :                             ShowContinueError(state, "Entered Temperature Name=" + TempsName);
    1347           0 :                             ErrorsFound = true;
    1348             :                         }
    1349             : 
    1350             :                     } // ...end of FluidTemps DO loop
    1351             : 
    1352          28 :                     break; // the InData DO loop
    1353             :                 }
    1354             : 
    1355             :                 // If it made it all the way to the last input occurrence and didn't find a match, then no sat fluid density data found
    1356          91 :                 if (InData == NumOfSatFluidPropArrays) {
    1357           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1358           0 :                     ShowContinueError(state,
    1359           0 :                                       "No Saturated Fluid Density found. Need properties to be entered with " + cAlphaFieldNames(2) +
    1360           0 :                                           "=\"Density\" and " + cAlphaFieldNames(3) + "=\"Fluid\".");
    1361           0 :                     ErrorsFound = true;
    1362             :                 }
    1363             : 
    1364             :             } // ...end of DO loop through all of the input syntax trying to find saturated fluid enthalpy for this refrigerant
    1365             : 
    1366             :             // Get: ***** DENSITY of SATURATED LIQUID/VAPOR ***** (difference between Rhof and Rhog, i.e. Rhofg)
    1367          28 :             CurrentModuleObject = "FluidProperties:Saturated";
    1368         147 :             for (InData = 1; InData <= NumOfSatFluidPropArrays; ++InData) {
    1369             : 
    1370         147 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1371             :                                                                          CurrentModuleObject,
    1372             :                                                                          InData,
    1373             :                                                                          Alphas,
    1374             :                                                                          NumAlphas,
    1375             :                                                                          Numbers,
    1376             :                                                                          NumNumbers,
    1377             :                                                                          Status,
    1378             :                                                                          lNumericFieldBlanks,
    1379             :                                                                          lAlphaFieldBlanks,
    1380             :                                                                          cAlphaFieldNames,
    1381             :                                                                          cNumericFieldNames);
    1382             : 
    1383         434 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->RefrigData(Loop).Name)) &&
    1384         203 :                     (UtilityRoutines::SameString(Alphas(2), Density)) && (UtilityRoutines::SameString(Alphas(3), GasFluid))) {
    1385             : 
    1386          31 :                     for (TempLoop = 1; TempLoop <= NumOfFluidTempArrays; ++TempLoop) {
    1387             : 
    1388          31 :                         if (UtilityRoutines::SameString(Alphas(4), FluidTemps(TempLoop).Name)) {
    1389          28 :                             if (!UtilityRoutines::SameString(FluidTemps(TempLoop).Name, TempsName)) {
    1390           0 :                                 ShowSevereError(
    1391           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1392           0 :                                 ShowContinueError(state, "Temperatures for density fluid and gas/fluid points are not the same");
    1393           0 :                                 ShowContinueError(state, "Name=" + Alphas(4) + " => " + FluidTemps(TempLoop).Name + " /= " + TempsName);
    1394           0 :                                 ErrorsFound = true;
    1395           0 :                                 break;
    1396             :                             }
    1397             :                             // At this point, we have found the correct input line and found a match
    1398             :                             // for the temperature array.  It's time to load up the local derived type.
    1399          28 :                             state.dataFluidProps->RefrigData(Loop).RhofgValues.allocate(state.dataFluidProps->RefrigData(Loop).NumRhoPoints);
    1400             : 
    1401             :                             // Make sure the number of points in the two arrays (temps and values) are the same
    1402          28 :                             if (NumNumbers != state.dataFluidProps->RefrigData(Loop).NumRhoPoints) {
    1403           0 :                                 ShowSevereError(
    1404           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1405           0 :                                 ShowContinueError(
    1406             :                                     state,
    1407           0 :                                     "Temperature Name=" + TempsName +
    1408             :                                         ", Temperature array and saturated gas/fluid density array must have the same number of points");
    1409           0 :                                 ShowContinueError(state,
    1410           0 :                                                   format("Temperature # points={} whereas {} # density points={}",
    1411             :                                                          NumNumbers,
    1412           0 :                                                          state.dataFluidProps->RefrigData(Loop).Name,
    1413           0 :                                                          state.dataFluidProps->RefrigData(Loop).NumRhoPoints));
    1414           0 :                                 ErrorsFound = true;
    1415           0 :                                 break; // the TempLoop DO Loop
    1416             :                             }
    1417             : 
    1418             :                             // Same number of points so assign the values
    1419          28 :                             state.dataFluidProps->RefrigData(Loop).RhofgValues = Numbers({1, NumNumbers});
    1420             : 
    1421          28 :                             break; // the TempLoop DO loop
    1422             :                         }
    1423             : 
    1424             :                         // If it made it all the way to the last temperature array and didn't find a match, then no match was found
    1425           3 :                         if (TempLoop == NumOfFluidTempArrays) {
    1426           0 :                             ShowSevereError(state,
    1427           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1428           0 :                             ShowContinueError(state, "Found saturated gas/fluid density input but no matching temperature array");
    1429           0 :                             ShowContinueError(state, "Entered Temperature Name=" + TempsName);
    1430           0 :                             ErrorsFound = true;
    1431             :                         }
    1432             : 
    1433             :                     } // ...end of FluidTemps DO loop
    1434             : 
    1435          28 :                     break; // the InData DO loop
    1436             :                 }
    1437             : 
    1438             :                 // If it made it all the way to the last input occurrence and didn't find a match, then no sat f/g density data found
    1439         119 :                 if (InData == NumOfSatFluidPropArrays) {
    1440           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1441           0 :                     ShowSevereError(state,
    1442           0 :                                     "No Saturated Gas/Fluid Density found. Need properties to be entered with " + cAlphaFieldNames(2) +
    1443           0 :                                         "=\"Density\" and " + cAlphaFieldNames(3) + "=\"FluidGas\".");
    1444           0 :                     ErrorsFound = true;
    1445             :                 }
    1446             : 
    1447             :             } // ...end of DO loop through all of the input syntax trying to find saturated gas/fluid density for this refrigerant
    1448             : 
    1449             :             // Check: TEMPERATURES for saturated density (must all be the same)
    1450             :             //    IF (RefrigData(Loop)%NumCpPoints /= RefrigData(Loop)%NumCpPoints) THEN
    1451             :             //!!!  Error -- can never happen, does this mean NumCp vs. NumRho?
    1452             :             //      CALL ShowFatalError(state, 'GetFluidPropertiesData: Number of specific heat fluid and gas/fluid points are not the same')
    1453             :             //    ELSE
    1454             :             //      DO TempLoop = 1, RefrigData(Loop)%NumCpPoints
    1455             :             //!!! Error -- something else that can never happen
    1456             :             //        IF (ABS(RefrigData(Loop)%CpTemps(TempLoop)-RefrigData(Loop)%CpTemps(TempLoop)) > TempToler) THEN
    1457             :             //          CALL ShowSevereError(state, 'GetFluidPropertiesData: Temperatures for specific heat fluid and '// &
    1458             :             //                               'gas/fluid points are not the same')
    1459             :             //          CALL ShowContinueError(state, 'Error occurs in Refrigerant Data Name='//TRIM(RefrigData(Loop)%Name))
    1460             :             //          WRITE(String1,*) TempLoop
    1461             :             //          String1=ADJUSTL(String1)
    1462             :             //          String2=TrimSigDigits(RefrigData(Loop)%CpTemps(TempLoop),3)
    1463             :             //          String2=ADJUSTL(String2)
    1464             :             //          String4=TrimSigDigits(RefrigData(Loop)%CpTemps(TempLoop),3)
    1465             :             //          String4=ADJUSTL(String4)
    1466             :             //          CALL ShowContinueError(state, 'First Occurrence at CpTemp('//TRIM(String1)//') {'//TRIM(String2)//'} /=
    1467             :             //          {'//TRIM(String4)//'}') ErrorsFound=.TRUE. EXIT
    1468             :             //        ENDIF
    1469             :             //      END DO
    1470             :             //    END IF
    1471             : 
    1472             :             //   Error check on entering saturated data
    1473          28 :             iTemp = 0;
    1474          28 :             CurrentModuleObject = "FluidProperties:Saturated";
    1475         238 :             for (InData = 1; InData <= NumOfSatFluidPropArrays; ++InData) {
    1476             : 
    1477         210 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1478             :                                                                          CurrentModuleObject,
    1479             :                                                                          InData,
    1480             :                                                                          Alphas,
    1481             :                                                                          NumAlphas,
    1482             :                                                                          Numbers,
    1483             :                                                                          NumNumbers,
    1484             :                                                                          Status,
    1485             :                                                                          lNumericFieldBlanks,
    1486             :                                                                          lAlphaFieldBlanks,
    1487             :                                                                          cAlphaFieldNames,
    1488             :                                                                          cNumericFieldNames);
    1489         210 :                 if (UtilityRoutines::SameString(Alphas(3), Fluid)) {
    1490         120 :                     if (!UtilityRoutines::SameString(Alphas(2), Enthalpy) && !UtilityRoutines::SameString(Alphas(2), SpecificHeat) &&
    1491          30 :                         !UtilityRoutines::SameString(Alphas(2), Density)) {
    1492           0 :                         if (iTemp == 0) {
    1493           0 :                             ShowWarningError(state,
    1494           0 :                                              std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1495           0 :                             ShowContinueError(state,
    1496           0 :                                               cAlphaFieldNames(3) + "=\"" + std::string{Fluid} + "\", but " + cAlphaFieldNames(2) + "=\"" +
    1497           0 :                                                   Alphas(2) + "\" is not valid.");
    1498           0 :                             ShowContinueError(state,
    1499           0 :                                               "Valid choices are \"" + std::string{Enthalpy} + "\", \"" + std::string{SpecificHeat} + "\", \"" +
    1500           0 :                                                   std::string{Density} + "\".");
    1501           0 :                             ShowContinueError(state, "This fluid property will not be processed mor available for the simulation.");
    1502             :                         }
    1503           0 :                         ++iTemp;
    1504             :                     }
    1505         120 :                 } else if (UtilityRoutines::SameString(Alphas(3), GasFluid)) {
    1506         390 :                     if (!UtilityRoutines::SameString(Alphas(2), Pressure) && !UtilityRoutines::SameString(Alphas(2), Enthalpy) &&
    1507         210 :                         !UtilityRoutines::SameString(Alphas(2), SpecificHeat) && !UtilityRoutines::SameString(Alphas(2), Density)) {
    1508           0 :                         if (iTemp == 0) {
    1509           0 :                             ShowWarningError(state,
    1510           0 :                                              std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1511           0 :                             ShowContinueError(state,
    1512           0 :                                               cAlphaFieldNames(3) + "=\"" + std::string{Fluid} + "\", but " + cAlphaFieldNames(2) + "=\"" +
    1513           0 :                                                   Alphas(2) + "\" is not valid.");
    1514           0 :                             ShowContinueError(state,
    1515           0 :                                               "Valid choices are \"" + std::string{Pressure} + "\", \"" + std::string{Enthalpy} + "\", \"" +
    1516           0 :                                                   std::string{SpecificHeat} + "\", \"" + std::string{Density} + "\".");
    1517           0 :                             ShowContinueError(state, "This fluid property will not be processed nor available for the simulation.");
    1518             :                         }
    1519           0 :                         ++iTemp;
    1520             :                     }
    1521             :                 } else {
    1522           0 :                     if (iTemp == 0) {
    1523           0 :                         ShowWarningError(state,
    1524           0 :                                          std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1525           0 :                         ShowContinueError(state, cAlphaFieldNames(3) + "=\"" + Alphas(3) + "\" is not valid.");
    1526           0 :                         ShowContinueError(state, "Valid choices are \"" + std::string{Fluid} + "\", \"" + std::string{GasFluid} + "\".");
    1527           0 :                         ShowContinueError(state, "This fluid property will not be processed nor available for the simulation.");
    1528             :                     }
    1529           0 :                     ++iTemp;
    1530             :                 }
    1531             :             }
    1532             : 
    1533          28 :             if (iTemp > 1) {
    1534           0 :                 ShowWarningError(state, format("{}{} has {} similar errors to the previous.", RoutineName, CurrentModuleObject, iTemp - 1));
    1535             :             }
    1536             : 
    1537             :             // **********   SUPERHEATED DATA SECTION   **********
    1538             :             // Get: ***** ENTHALPY of SUPERHEATED GAS  *****
    1539             :             // First find the number of pressure value syntax lines have been entered and
    1540             :             // make sure that all of the pressure input is linked to the same temperature list
    1541          28 :             CurrentModuleObject = "FluidProperties:Superheated";
    1542          28 :             TempsName = "";
    1543          28 :             FirstSHMatch = true;
    1544          28 :             NumOfPressPts = 0;
    1545        3630 :             for (InData = 1; InData <= NumOfSHFluidPropArrays; ++InData) {
    1546        3602 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1547             :                                                                          CurrentModuleObject,
    1548             :                                                                          InData,
    1549             :                                                                          Alphas,
    1550             :                                                                          NumAlphas,
    1551             :                                                                          Numbers,
    1552             :                                                                          NumNumbers,
    1553             :                                                                          Status,
    1554             :                                                                          lNumericFieldBlanks,
    1555             :                                                                          lAlphaFieldBlanks,
    1556             :                                                                          cAlphaFieldNames,
    1557             :                                                                          cNumericFieldNames);
    1558             : 
    1559        7064 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->RefrigData(Loop).Name)) &&
    1560        3462 :                     (UtilityRoutines::SameString(Alphas(2), Enthalpy))) {
    1561        1731 :                     ++NumOfPressPts;
    1562        1731 :                     if (FirstSHMatch) {
    1563          28 :                         TempsName = Alphas(3);
    1564          28 :                         FirstSHMatch = false;
    1565             :                     } else {
    1566        1703 :                         if (!UtilityRoutines::SameString(TempsName, Alphas(3))) {
    1567           0 :                             ShowSevereError(state,
    1568           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1569           0 :                             ShowContinueError(state, "All superheated data for the same property must use the same temperature list");
    1570           0 :                             ShowContinueError(state, "Expected name=" + TempsName + ", Entered name=" + Alphas(3));
    1571           0 :                             ErrorsFound = true;
    1572             :                         }
    1573             :                     }
    1574             :                 }
    1575             :             }
    1576          28 :             if (NumOfPressPts == 0) {
    1577           0 :                 ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1578           0 :                 ShowContinueError(state, "No pressure data found for superheated enthalpy");
    1579           0 :                 ErrorsFound = true;
    1580             :             }
    1581             : 
    1582             :             // Now allocate the arrays and read the data into the proper place
    1583             :             // First, allocate the temperature array and transfer the data from the FluidTemp array
    1584          59 :             for (TempLoop = 1; TempLoop <= NumOfFluidTempArrays; ++TempLoop) {
    1585          59 :                 if (UtilityRoutines::SameString(TempsName, FluidTemps(TempLoop).Name)) {
    1586          28 :                     state.dataFluidProps->RefrigData(Loop).NumSuperTempPts = FluidTemps(TempLoop).NumOfTemps;
    1587          28 :                     state.dataFluidProps->RefrigData(Loop).SHTemps.allocate(state.dataFluidProps->RefrigData(Loop).NumSuperTempPts);
    1588          28 :                     state.dataFluidProps->RefrigData(Loop).SHTemps = FluidTemps(TempLoop).Temps;
    1589          28 :                     break; // the TempLoop DO loop
    1590             :                 }
    1591          31 :                 if (TempLoop == NumOfFluidTempArrays) {
    1592           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1593           0 :                     ShowContinueError(state, "No match for temperature array name found with superheated enthalpy data");
    1594           0 :                     ShowContinueError(state, "Entered Temperature Name=" + TempsName);
    1595           0 :                     ErrorsFound = true;
    1596             :                 }
    1597             :             }
    1598             : 
    1599             :             // Next, allocate the pressure related arrays
    1600          28 :             state.dataFluidProps->RefrigData(Loop).NumSuperPressPts = NumOfPressPts;
    1601          28 :             state.dataFluidProps->RefrigData(Loop).SHPress.allocate(state.dataFluidProps->RefrigData(Loop).NumSuperPressPts);
    1602          84 :             state.dataFluidProps->RefrigData(Loop).HshValues.allocate(state.dataFluidProps->RefrigData(Loop).NumSuperPressPts,
    1603          84 :                                                                       state.dataFluidProps->RefrigData(Loop).NumSuperTempPts);
    1604             : 
    1605             :             // Finally, get the pressure and enthalpy values from the user input
    1606          28 :             CurrentModuleObject = "FluidProperties:Superheated";
    1607          28 :             NumOfPressPts = 0;
    1608          28 :             PressurePtr.allocate(NumOfSHFluidPropArrays);
    1609        3630 :             for (InData = 1; InData <= NumOfSHFluidPropArrays; ++InData) {
    1610        3602 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1611             :                                                                          CurrentModuleObject,
    1612             :                                                                          InData,
    1613             :                                                                          Alphas,
    1614             :                                                                          NumAlphas,
    1615             :                                                                          Numbers,
    1616             :                                                                          NumNumbers,
    1617             :                                                                          Status,
    1618             :                                                                          lNumericFieldBlanks,
    1619             :                                                                          lAlphaFieldBlanks,
    1620             :                                                                          cAlphaFieldNames,
    1621             :                                                                          cNumericFieldNames);
    1622             : 
    1623        7064 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->RefrigData(Loop).Name)) &&
    1624        3462 :                     (UtilityRoutines::SameString(Alphas(2), Enthalpy))) {
    1625        1731 :                     ++NumOfPressPts;
    1626        1731 :                     if (Numbers(1) <= 0.0) {
    1627           0 :                         ShowSevereError(state,
    1628           0 :                                         std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1629           0 :                         ShowContinueError(state, format("Negative pressures not allowed in fluid property input data, Value =[{:.3R}].", Numbers(1)));
    1630           0 :                         ErrorsFound = true;
    1631             :                     }
    1632        1731 :                     PressurePtr(NumOfPressPts).Pressure = Numbers(1);
    1633        1731 :                     PressurePtr(NumOfPressPts).InPtr = InData;
    1634             :                 }
    1635             :             }
    1636             : 
    1637             :             // Sort Pressure list
    1638             :             // insertionSort
    1639        1731 :             for (InData = 2; InData <= NumOfPressPts; ++InData) {
    1640        1703 :                 pTemp = PressurePtr(InData).Pressure;
    1641        1703 :                 iTemp = PressurePtr(InData).InPtr;
    1642        1703 :                 j = InData - 1;
    1643        1703 :                 while (j >= 1 && PressurePtr(j).Pressure > pTemp) {
    1644           0 :                     PressurePtr(j + 1).Pressure = PressurePtr(j).Pressure;
    1645           0 :                     PressurePtr(j + 1).InPtr = PressurePtr(j).InPtr;
    1646           0 :                     --j;
    1647           0 :                     if (j == 0) break;
    1648             :                 }
    1649        1703 :                 PressurePtr(j + 1).Pressure = pTemp;
    1650        1703 :                 PressurePtr(j + 1).InPtr = iTemp;
    1651             :             }
    1652             : 
    1653        1759 :             for (InData = 1; InData <= NumOfPressPts; ++InData) {
    1654        3462 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1655             :                                                                          CurrentModuleObject,
    1656        1731 :                                                                          PressurePtr(InData).InPtr,
    1657             :                                                                          Alphas,
    1658             :                                                                          NumAlphas,
    1659             :                                                                          Numbers,
    1660             :                                                                          NumNumbers,
    1661             :                                                                          Status,
    1662             :                                                                          lNumericFieldBlanks,
    1663             :                                                                          lAlphaFieldBlanks,
    1664             :                                                                          cAlphaFieldNames,
    1665             :                                                                          cNumericFieldNames);
    1666        1731 :                 state.dataFluidProps->RefrigData(Loop).SHPress(InData) = Numbers(1);
    1667             :                 // a little error trapping
    1668        1731 :                 if (InData > 1) {
    1669        1703 :                     if (state.dataFluidProps->RefrigData(Loop).SHPress(InData) <= state.dataFluidProps->RefrigData(Loop).SHPress(InData - 1)) {
    1670           0 :                         ShowSevereError(state,
    1671           0 :                                         std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1672           0 :                         ShowContinueError(state, "Pressures must be entered in ascending order for fluid property data");
    1673           0 :                         ShowContinueError(state,
    1674           0 :                                           format("First Occurrence at Pressure({}) {{{:.3R}}} >= Pressure({}) {{{:.3R}}}",
    1675           0 :                                                  InData - 1,
    1676           0 :                                                  state.dataFluidProps->RefrigData(Loop).SHPress(InData - 1),
    1677             :                                                  InData,
    1678           0 :                                                  state.dataFluidProps->RefrigData(Loop).SHPress(InData)));
    1679           0 :                         ErrorsFound = true;
    1680           0 :                         break;
    1681             :                     }
    1682             :                 }
    1683        1731 :                 if ((NumNumbers - 1) == state.dataFluidProps->RefrigData(Loop).NumSuperTempPts) {
    1684        1731 :                     state.dataFluidProps->RefrigData(Loop).HshValues(InData, {1, state.dataFluidProps->RefrigData(Loop).NumSuperTempPts}) =
    1685        3462 :                         Numbers({2, NumNumbers});
    1686             :                 } else {
    1687           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1688           0 :                     ShowContinueError(state, "Number of superheated enthalpy data points not equal to number of temperature points");
    1689           0 :                     ErrorsFound = true;
    1690             :                 }
    1691             :             }
    1692             : 
    1693          28 :             PressurePtr.deallocate();
    1694             : 
    1695             :             // Get: ***** DENSITY of SUPERHEATED GAS  *****
    1696             :             // First find the number of pressure value syntax lines have been entered and
    1697             :             // make sure that all of the pressure input is linked to the same temperature list
    1698             :             // Then allocate the arrays and read the data into the proper place
    1699          84 :             state.dataFluidProps->RefrigData(Loop).RhoshValues.allocate(state.dataFluidProps->RefrigData(Loop).NumSuperPressPts,
    1700          84 :                                                                         state.dataFluidProps->RefrigData(Loop).NumSuperTempPts);
    1701          28 :             CurrentModuleObject = "FluidProperties:Superheated";
    1702          28 :             NumOfPressPts = 0;
    1703          28 :             PressurePtr.allocate(NumOfSHFluidPropArrays);
    1704        3630 :             for (InData = 1; InData <= NumOfSHFluidPropArrays; ++InData) {
    1705        3602 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1706             :                                                                          CurrentModuleObject,
    1707             :                                                                          InData,
    1708             :                                                                          Alphas,
    1709             :                                                                          NumAlphas,
    1710             :                                                                          Numbers,
    1711             :                                                                          NumNumbers,
    1712             :                                                                          Status,
    1713             :                                                                          lNumericFieldBlanks,
    1714             :                                                                          lAlphaFieldBlanks,
    1715             :                                                                          cAlphaFieldNames,
    1716             :                                                                          cNumericFieldNames);
    1717        7064 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->RefrigData(Loop).Name)) &&
    1718        3462 :                     (UtilityRoutines::SameString(Alphas(2), Density))) {
    1719        1731 :                     ++NumOfPressPts;
    1720        1731 :                     if (Numbers(1) <= 0.0) {
    1721           0 :                         ShowSevereError(state,
    1722           0 :                                         std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1723           0 :                         ShowContinueError(state, format("Negative pressures not allowed in fluid property input data, Value =[{:.3R}].", Numbers(1)));
    1724           0 :                         ErrorsFound = true;
    1725             :                     }
    1726        1731 :                     PressurePtr(NumOfPressPts).Pressure = Numbers(1);
    1727        1731 :                     PressurePtr(NumOfPressPts).InPtr = InData;
    1728             :                 }
    1729             :             }
    1730             : 
    1731             :             // Sort Pressure list
    1732             :             // insertionSort
    1733        1731 :             for (InData = 2; InData <= NumOfPressPts; ++InData) {
    1734        1703 :                 pTemp = PressurePtr(InData).Pressure;
    1735        1703 :                 iTemp = PressurePtr(InData).InPtr;
    1736        1703 :                 j = InData - 1;
    1737        1703 :                 while (j >= 1 && PressurePtr(j).Pressure > pTemp) {
    1738           0 :                     PressurePtr(j + 1).Pressure = PressurePtr(j).Pressure;
    1739           0 :                     PressurePtr(j + 1).InPtr = PressurePtr(j).InPtr;
    1740           0 :                     --j;
    1741           0 :                     if (j == 0) break;
    1742             :                 }
    1743        1703 :                 PressurePtr(j + 1).Pressure = pTemp;
    1744        1703 :                 PressurePtr(j + 1).InPtr = iTemp;
    1745             :             }
    1746             : 
    1747        1759 :             for (InData = 1; InData <= NumOfPressPts; ++InData) {
    1748        3462 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1749             :                                                                          CurrentModuleObject,
    1750        1731 :                                                                          PressurePtr(InData).InPtr,
    1751             :                                                                          Alphas,
    1752             :                                                                          NumAlphas,
    1753             :                                                                          Numbers,
    1754             :                                                                          NumNumbers,
    1755             :                                                                          Status,
    1756             :                                                                          lNumericFieldBlanks,
    1757             :                                                                          lAlphaFieldBlanks,
    1758             :                                                                          cAlphaFieldNames,
    1759             :                                                                          cNumericFieldNames);
    1760        1731 :                 if (std::abs(Numbers(1) - state.dataFluidProps->RefrigData(Loop).SHPress(InData)) > PressToler) {
    1761           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1762           0 :                     ShowContinueError(state, "All superheated data for the same refrigerant must use the same pressure data");
    1763           0 :                     ErrorsFound = true;
    1764             :                 }
    1765        1731 :                 if (!UtilityRoutines::SameString(TempsName, Alphas(3))) {
    1766           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1767           0 :                     ShowContinueError(state, "All superheated data for the same property must use the same temperature list");
    1768           0 :                     ErrorsFound = true;
    1769             :                 }
    1770        1731 :                 if ((NumNumbers - 1) == state.dataFluidProps->RefrigData(Loop).NumSuperTempPts) {
    1771        1731 :                     state.dataFluidProps->RefrigData(Loop).RhoshValues(InData, {1, state.dataFluidProps->RefrigData(Loop).NumSuperTempPts}) =
    1772        3462 :                         Numbers({2, NumNumbers});
    1773             :                 } else {
    1774           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1775           0 :                     ShowContinueError(state, "Number of superheated density data points not equal to number of temperature points");
    1776           0 :                     ErrorsFound = true;
    1777             :                 }
    1778             :             }
    1779             : 
    1780          28 :             PressurePtr.deallocate();
    1781             : 
    1782             :             //   Error check on entering superheated data
    1783          28 :             iTemp = 0;
    1784          28 :             CurrentModuleObject = "FluidProperties:Superheated";
    1785        3630 :             for (InData = 1; InData <= NumOfSHFluidPropArrays; ++InData) {
    1786             : 
    1787        3602 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1788             :                                                                          CurrentModuleObject,
    1789             :                                                                          InData,
    1790             :                                                                          Alphas,
    1791             :                                                                          NumAlphas,
    1792             :                                                                          Numbers,
    1793             :                                                                          NumNumbers,
    1794             :                                                                          Status,
    1795             :                                                                          lNumericFieldBlanks,
    1796             :                                                                          lAlphaFieldBlanks,
    1797             :                                                                          cAlphaFieldNames,
    1798             :                                                                          cNumericFieldNames);
    1799        3602 :                 if (!UtilityRoutines::SameString(Alphas(2), Enthalpy) && !UtilityRoutines::SameString(Alphas(2), Density)) {
    1800           0 :                     if (iTemp == 0) {
    1801           0 :                         ShowWarningError(state,
    1802           0 :                                          std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1803           0 :                         ShowContinueError(state, cAlphaFieldNames(2) + "=\"" + Alphas(2) + "\" is not valid.");
    1804           0 :                         ShowContinueError(state, "Valid choices are \"" + std::string{Enthalpy} + "\", \"" + std::string{Density} + "\".");
    1805           0 :                         ShowContinueError(state, format("Pressure value of this item=[{:.2R}].", Numbers(1)));
    1806           0 :                         ShowContinueError(state, "This fluid property will not be processed nor available for the simulation.");
    1807             :                     }
    1808           0 :                     ++iTemp;
    1809             :                 }
    1810             :             }
    1811             : 
    1812          28 :             if (iTemp > 1) {
    1813           0 :                 ShowWarningError(state, format("{}{} has {} similar errors to the previous.", RoutineName, CurrentModuleObject, iTemp - 1));
    1814             :             }
    1815             : 
    1816          28 :             if (NumOfPressPts == 0) {
    1817           0 :                 ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1818           0 :                 ShowSevereError(state, "No pressure data found for superheated density");
    1819           0 :                 ErrorsFound = true;
    1820             :             }
    1821          28 :             if (NumOfPressPts != state.dataFluidProps->RefrigData(Loop).NumSuperPressPts) {
    1822           0 :                 ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->RefrigData(Loop).Name);
    1823           0 :                 ShowSevereError(state, "Number of pressure points for superheated data different for enthalpy and density");
    1824           0 :                 ErrorsFound = true;
    1825             :             }
    1826             : 
    1827             :         } // ...end of DO loop through all of the refrigerants
    1828             : 
    1829             :         // *************** GLYCOLS ***************
    1830             :         // Go through each glycol found in the fluid names statement and read in the data
    1831             :         // Note that every valid fluid must have ALL of the necessary data or a fatal error will
    1832             :         // be produced.
    1833         469 :         CurrentModuleObject = "FluidProperties:Concentration";
    1834         480 :         for (Loop = 1; Loop <= state.dataFluidProps->NumOfGlycols; ++Loop) {
    1835             : 
    1836             :             // Get: ***** SPECIFIC HEAT of GLYCOLS  *****
    1837             :             // First find the number of concentration value syntax lines have been entered and
    1838             :             // make sure that all of the concentration input is linked to the same temperature list
    1839          11 :             TempsName = "";
    1840          11 :             FirstSHMatch = true;
    1841          11 :             NumOfConcPts = 0;
    1842          11 :             state.dataFluidProps->GlyRawData(Loop).CpDataPresent = false;
    1843         111 :             for (InData = 1; InData <= NumOfGlyFluidPropArrays; ++InData) { // check temperatures given for specific heat are consistant
    1844         100 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1845             :                                                                          CurrentModuleObject,
    1846             :                                                                          InData,
    1847             :                                                                          Alphas,
    1848             :                                                                          NumAlphas,
    1849             :                                                                          Numbers,
    1850             :                                                                          NumNumbers,
    1851             :                                                                          Status,
    1852             :                                                                          lNumericFieldBlanks,
    1853             :                                                                          lAlphaFieldBlanks,
    1854             :                                                                          cAlphaFieldNames,
    1855             :                                                                          cNumericFieldNames);
    1856         160 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->GlyRawData(Loop).Name)) &&
    1857          60 :                     (UtilityRoutines::SameString(Alphas(2), SpecificHeat))) {
    1858          15 :                     ++NumOfConcPts;
    1859          15 :                     if (FirstSHMatch) {
    1860           3 :                         TempsName = Alphas(3);
    1861           3 :                         FirstSHMatch = false;
    1862             :                     } else {
    1863          12 :                         if (!UtilityRoutines::SameString(TempsName, Alphas(3))) {
    1864           0 :                             ShowSevereError(state,
    1865           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    1866           0 :                             ShowContinueError(state, "All glycol specific heat data for the same glycol must use the same temperature list");
    1867           0 :                             ShowContinueError(state, "Expected name=" + TempsName + ", Entered name=" + Alphas(3));
    1868           0 :                             ErrorsFound = true;
    1869             :                         }
    1870             :                     }
    1871             :                 }
    1872             :             }
    1873          11 :             if (NumOfConcPts > 0) {
    1874             :                 // Now allocate the arrays and read the data into the proper place
    1875             :                 // First, allocate the temperature array and transfer the data from the FluidTemp array
    1876           3 :                 state.dataFluidProps->GlyRawData(Loop).CpDataPresent = true;
    1877           5 :                 for (TempLoop = 1; TempLoop <= NumOfFluidTempArrays; ++TempLoop) {
    1878           5 :                     if (UtilityRoutines::SameString(TempsName, FluidTemps(TempLoop).Name)) {
    1879           3 :                         state.dataFluidProps->GlyRawData(Loop).NumCpTempPts = FluidTemps(TempLoop).NumOfTemps;
    1880           3 :                         state.dataFluidProps->GlyRawData(Loop).CpTemps.allocate(state.dataFluidProps->GlyRawData(Loop).NumCpTempPts);
    1881           3 :                         state.dataFluidProps->GlyRawData(Loop).CpTemps = FluidTemps(TempLoop).Temps;
    1882           3 :                         break; // the TempLoop DO loop
    1883             :                     }
    1884           2 :                     if (TempLoop == NumOfFluidTempArrays) {
    1885           0 :                         ShowSevereError(state,
    1886           0 :                                         std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    1887           0 :                         ShowContinueError(state, "No match for temperature array name found with glycol data");
    1888           0 :                         ErrorsFound = true;
    1889             :                     }
    1890             :                 }
    1891             : 
    1892             :                 // Next, allocate the specific heat related arrays
    1893           3 :                 state.dataFluidProps->GlyRawData(Loop).NumCpConcPts = NumOfConcPts;
    1894           3 :                 state.dataFluidProps->GlyRawData(Loop).CpConcs.allocate(state.dataFluidProps->GlyRawData(Loop).NumCpConcPts);
    1895           9 :                 state.dataFluidProps->GlyRawData(Loop).CpValues.allocate(state.dataFluidProps->GlyRawData(Loop).NumCpConcPts,
    1896           9 :                                                                          state.dataFluidProps->GlyRawData(Loop).NumCpTempPts);
    1897             : 
    1898             :                 // Finally, get the specific heat and concentration values from the user input
    1899           3 :                 CurrentModuleObject = "FluidProperties:Concentration";
    1900           3 :                 NumOfConcPts = 0;
    1901          63 :                 for (InData = 1; InData <= NumOfGlyFluidPropArrays; ++InData) {
    1902          60 :                     state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1903             :                                                                              CurrentModuleObject,
    1904             :                                                                              InData,
    1905             :                                                                              Alphas,
    1906             :                                                                              NumAlphas,
    1907             :                                                                              Numbers,
    1908             :                                                                              NumNumbers,
    1909             :                                                                              Status,
    1910             :                                                                              lNumericFieldBlanks,
    1911             :                                                                              lAlphaFieldBlanks,
    1912             :                                                                              cAlphaFieldNames,
    1913             :                                                                              cNumericFieldNames);
    1914         120 :                     if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->GlyRawData(Loop).Name)) &&
    1915          60 :                         (UtilityRoutines::SameString(Alphas(2), SpecificHeat))) {
    1916          15 :                         ++NumOfConcPts;
    1917          15 :                         state.dataFluidProps->GlyRawData(Loop).CpConcs(NumOfConcPts) = Numbers(1);
    1918             :                         // a little error trapping
    1919          15 :                         if (NumOfConcPts == 1) {
    1920           3 :                             if (state.dataFluidProps->GlyRawData(Loop).CpConcs(NumOfConcPts) < 0.0) {
    1921           0 :                                 ShowSevereError(
    1922           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    1923           0 :                                 ShowContinueError(state, "Negative concentrations not allowed in fluid property input data");
    1924           0 :                                 ErrorsFound = true;
    1925             :                             }
    1926             :                         } else {
    1927          24 :                             if (state.dataFluidProps->GlyRawData(Loop).CpConcs(NumOfConcPts) <=
    1928          12 :                                 state.dataFluidProps->GlyRawData(Loop).CpConcs(NumOfConcPts - 1)) {
    1929           0 :                                 ShowSevereError(
    1930           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    1931           0 :                                 ShowContinueError(state, "Concentrations must be entered in ascending order for fluid property data");
    1932           0 :                                 ErrorsFound = true;
    1933             :                             }
    1934             :                         }
    1935          15 :                         if ((NumNumbers - 1) == state.dataFluidProps->GlyRawData(Loop).NumCpTempPts) {
    1936          15 :                             state.dataFluidProps->GlyRawData(Loop).CpValues(NumOfConcPts, {1, state.dataFluidProps->GlyRawData(Loop).NumCpTempPts}) =
    1937          30 :                                 Numbers({2, NumNumbers});
    1938             :                         } else {
    1939           0 :                             ShowSevereError(state,
    1940           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    1941           0 :                             ShowContinueError(state, "Number of specific heat data points not equal to number of temperature points");
    1942           0 :                             ErrorsFound = true;
    1943             :                         }
    1944             :                     }
    1945             :                 }
    1946             :             }
    1947             :             // Get: ***** DENSITY of GLYCOLS  *****
    1948             :             // First find the number of concentration value syntax lines have been entered and
    1949             :             // make sure that all of the concentration input is linked to the same temperature list
    1950          11 :             TempsName = "";
    1951          11 :             FirstSHMatch = true;
    1952          11 :             NumOfConcPts = 0;
    1953          11 :             state.dataFluidProps->GlyRawData(Loop).RhoDataPresent = false;
    1954          11 :             CurrentModuleObject = "FluidProperties:Concentration";
    1955         111 :             for (InData = 1; InData <= NumOfGlyFluidPropArrays; ++InData) { // check temperatures given for density are consistant
    1956         100 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    1957             :                                                                          CurrentModuleObject,
    1958             :                                                                          InData,
    1959             :                                                                          Alphas,
    1960             :                                                                          NumAlphas,
    1961             :                                                                          Numbers,
    1962             :                                                                          NumNumbers,
    1963             :                                                                          Status,
    1964             :                                                                          lNumericFieldBlanks,
    1965             :                                                                          lAlphaFieldBlanks,
    1966             :                                                                          cAlphaFieldNames,
    1967             :                                                                          cNumericFieldNames);
    1968         160 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->GlyRawData(Loop).Name)) &&
    1969          60 :                     (UtilityRoutines::SameString(Alphas(2), Density))) {
    1970          15 :                     ++NumOfConcPts;
    1971          15 :                     if (FirstSHMatch) {
    1972           3 :                         TempsName = Alphas(3);
    1973           3 :                         FirstSHMatch = false;
    1974             :                     } else {
    1975          12 :                         if (!UtilityRoutines::SameString(TempsName, Alphas(3))) {
    1976           0 :                             ShowSevereError(state,
    1977           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    1978           0 :                             ShowContinueError(state, "All glycol density data for the same glycol must use the same temperature list");
    1979           0 :                             ShowContinueError(state, "Expected name=" + TempsName + ", Entered name=" + Alphas(3));
    1980           0 :                             ErrorsFound = true;
    1981             :                         }
    1982             :                     }
    1983             :                 }
    1984             :             }
    1985          11 :             if (NumOfConcPts > 0) {
    1986             :                 // Now allocate the arrays and read the data into the proper place
    1987             :                 // First, allocate the temperature array and transfer the data from the FluidTemp array
    1988           3 :                 state.dataFluidProps->GlyRawData(Loop).RhoDataPresent = true;
    1989           5 :                 for (TempLoop = 1; TempLoop <= NumOfFluidTempArrays; ++TempLoop) {
    1990           5 :                     if (UtilityRoutines::SameString(TempsName, FluidTemps(TempLoop).Name)) {
    1991           3 :                         state.dataFluidProps->GlyRawData(Loop).NumRhoTempPts = FluidTemps(TempLoop).NumOfTemps;
    1992           3 :                         state.dataFluidProps->GlyRawData(Loop).RhoTemps.allocate(state.dataFluidProps->GlyRawData(Loop).NumRhoTempPts);
    1993           3 :                         state.dataFluidProps->GlyRawData(Loop).RhoTemps = FluidTemps(TempLoop).Temps;
    1994           3 :                         break; // the TempLoop DO loop
    1995             :                     }
    1996           2 :                     if (TempLoop == NumOfFluidTempArrays) {
    1997           0 :                         ShowSevereError(state,
    1998           0 :                                         std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    1999           0 :                         ShowContinueError(state, "No match for temperature array name found with glycol data");
    2000           0 :                         ErrorsFound = true;
    2001             :                     }
    2002             :                 }
    2003             : 
    2004             :                 // Next, allocate the density related arrays
    2005           3 :                 state.dataFluidProps->GlyRawData(Loop).NumRhoConcPts = NumOfConcPts;
    2006           3 :                 state.dataFluidProps->GlyRawData(Loop).RhoConcs.allocate(state.dataFluidProps->GlyRawData(Loop).NumRhoConcPts);
    2007           9 :                 state.dataFluidProps->GlyRawData(Loop).RhoValues.allocate(state.dataFluidProps->GlyRawData(Loop).NumRhoConcPts,
    2008           9 :                                                                           state.dataFluidProps->GlyRawData(Loop).NumRhoTempPts);
    2009             : 
    2010             :                 // Finally, get the density and concentration values from the user input
    2011           3 :                 NumOfConcPts = 0;
    2012           3 :                 CurrentModuleObject = "FluidProperties:Concentration";
    2013          63 :                 for (InData = 1; InData <= NumOfGlyFluidPropArrays; ++InData) {
    2014          60 :                     state.dataInputProcessing->inputProcessor->getObjectItem(state,
    2015             :                                                                              CurrentModuleObject,
    2016             :                                                                              InData,
    2017             :                                                                              Alphas,
    2018             :                                                                              NumAlphas,
    2019             :                                                                              Numbers,
    2020             :                                                                              NumNumbers,
    2021             :                                                                              Status,
    2022             :                                                                              lNumericFieldBlanks,
    2023             :                                                                              lAlphaFieldBlanks,
    2024             :                                                                              cAlphaFieldNames,
    2025             :                                                                              cNumericFieldNames);
    2026         120 :                     if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->GlyRawData(Loop).Name)) &&
    2027          60 :                         (UtilityRoutines::SameString(Alphas(2), Density))) {
    2028          15 :                         ++NumOfConcPts;
    2029          15 :                         state.dataFluidProps->GlyRawData(Loop).RhoConcs(NumOfConcPts) = Numbers(1);
    2030             :                         // a little error trapping
    2031          15 :                         if (NumOfConcPts == 1) {
    2032           3 :                             if (state.dataFluidProps->GlyRawData(Loop).RhoConcs(NumOfConcPts) < 0.0) {
    2033           0 :                                 ShowSevereError(
    2034           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2035           0 :                                 ShowContinueError(state, "Negative concentrations not allowed in fluid property input data");
    2036           0 :                                 ErrorsFound = true;
    2037             :                             }
    2038             :                         } else {
    2039          24 :                             if (state.dataFluidProps->GlyRawData(Loop).RhoConcs(NumOfConcPts) <=
    2040          12 :                                 state.dataFluidProps->GlyRawData(Loop).RhoConcs(NumOfConcPts - 1)) {
    2041           0 :                                 ShowSevereError(
    2042           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2043           0 :                                 ShowContinueError(state, "Concentrations must be entered in ascending order for fluid property data");
    2044           0 :                                 ErrorsFound = true;
    2045             :                             }
    2046             :                         }
    2047          15 :                         if ((NumNumbers - 1) == state.dataFluidProps->GlyRawData(Loop).NumRhoTempPts) {
    2048          45 :                             state.dataFluidProps->GlyRawData(Loop).RhoValues(
    2049          60 :                                 NumOfConcPts, {1, state.dataFluidProps->GlyRawData(Loop).NumRhoTempPts}) = Numbers({2, NumNumbers});
    2050             :                         } else {
    2051           0 :                             ShowSevereError(state,
    2052           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2053           0 :                             ShowContinueError(state, "Number of density data points not equal to number of temperature points");
    2054           0 :                             ErrorsFound = true;
    2055             :                         }
    2056             :                     }
    2057             :                 }
    2058             :             }
    2059             :             // Get: ***** CONDUCTIVITY of GLYCOLS  *****
    2060             :             // First find the number of concentration value syntax lines have been entered and
    2061             :             // make sure that all of the concentration input is linked to the same temperature list
    2062          11 :             TempsName = "";
    2063          11 :             FirstSHMatch = true;
    2064          11 :             NumOfConcPts = 0;
    2065          11 :             state.dataFluidProps->GlyRawData(Loop).CondDataPresent = false;
    2066          11 :             CurrentModuleObject = "FluidProperties:Concentration";
    2067         111 :             for (InData = 1; InData <= NumOfGlyFluidPropArrays; ++InData) { // check temperatures given for conductivity are consistant
    2068         100 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    2069             :                                                                          CurrentModuleObject,
    2070             :                                                                          InData,
    2071             :                                                                          Alphas,
    2072             :                                                                          NumAlphas,
    2073             :                                                                          Numbers,
    2074             :                                                                          NumNumbers,
    2075             :                                                                          Status,
    2076             :                                                                          lNumericFieldBlanks,
    2077             :                                                                          lAlphaFieldBlanks,
    2078             :                                                                          cAlphaFieldNames,
    2079             :                                                                          cNumericFieldNames);
    2080         160 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->GlyRawData(Loop).Name)) &&
    2081          60 :                     (UtilityRoutines::SameString(Alphas(2), Conductivity))) {
    2082          15 :                     ++NumOfConcPts;
    2083          15 :                     if (FirstSHMatch) {
    2084           3 :                         TempsName = Alphas(3);
    2085           3 :                         FirstSHMatch = false;
    2086             :                     } else {
    2087          12 :                         if (!UtilityRoutines::SameString(TempsName, Alphas(3))) {
    2088           0 :                             ShowSevereError(state,
    2089           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2090           0 :                             ShowContinueError(state, "All glycol conductivity data for the same glycol must use the same temperature list");
    2091           0 :                             ShowContinueError(state, "Expected name=" + TempsName + ", Entered name=" + Alphas(3));
    2092           0 :                             ErrorsFound = true;
    2093             :                         }
    2094             :                     }
    2095             :                 }
    2096             :             }
    2097          11 :             if (NumOfConcPts > 0) {
    2098             :                 // Now allocate the arrays and read the data into the proper place
    2099             :                 // First, allocate the temperature array and transfer the data from the FluidTemp array
    2100           3 :                 state.dataFluidProps->GlyRawData(Loop).CondDataPresent = true;
    2101           5 :                 for (TempLoop = 1; TempLoop <= NumOfFluidTempArrays; ++TempLoop) {
    2102           5 :                     if (UtilityRoutines::SameString(TempsName, FluidTemps(TempLoop).Name)) {
    2103           3 :                         state.dataFluidProps->GlyRawData(Loop).NumCondTempPts = FluidTemps(TempLoop).NumOfTemps;
    2104           3 :                         state.dataFluidProps->GlyRawData(Loop).CondTemps.allocate(state.dataFluidProps->GlyRawData(Loop).NumCondTempPts);
    2105           3 :                         state.dataFluidProps->GlyRawData(Loop).CondTemps = FluidTemps(TempLoop).Temps;
    2106           3 :                         break; // the TempLoop DO loop
    2107             :                     }
    2108           2 :                     if (TempLoop == NumOfFluidTempArrays) {
    2109           0 :                         ShowSevereError(state,
    2110           0 :                                         std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2111           0 :                         ShowContinueError(state, "No match for temperature array name found with glycol data");
    2112           0 :                         ErrorsFound = true;
    2113             :                     }
    2114             :                 }
    2115             : 
    2116             :                 // Next, allocate the conductivity related arrays
    2117           3 :                 state.dataFluidProps->GlyRawData(Loop).NumCondConcPts = NumOfConcPts;
    2118           3 :                 state.dataFluidProps->GlyRawData(Loop).CondConcs.allocate(state.dataFluidProps->GlyRawData(Loop).NumCondConcPts);
    2119           9 :                 state.dataFluidProps->GlyRawData(Loop).CondValues.allocate(state.dataFluidProps->GlyRawData(Loop).NumCondConcPts,
    2120           9 :                                                                            state.dataFluidProps->GlyRawData(Loop).NumCondTempPts);
    2121             : 
    2122             :                 // Finally, get the conductivity and concentration values from the user input
    2123           3 :                 NumOfConcPts = 0;
    2124           3 :                 CurrentModuleObject = "FluidProperties:Concentration";
    2125          63 :                 for (InData = 1; InData <= NumOfGlyFluidPropArrays; ++InData) {
    2126          60 :                     state.dataInputProcessing->inputProcessor->getObjectItem(state,
    2127             :                                                                              CurrentModuleObject,
    2128             :                                                                              InData,
    2129             :                                                                              Alphas,
    2130             :                                                                              NumAlphas,
    2131             :                                                                              Numbers,
    2132             :                                                                              NumNumbers,
    2133             :                                                                              Status,
    2134             :                                                                              lNumericFieldBlanks,
    2135             :                                                                              lAlphaFieldBlanks,
    2136             :                                                                              cAlphaFieldNames,
    2137             :                                                                              cNumericFieldNames);
    2138         120 :                     if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->GlyRawData(Loop).Name)) &&
    2139          60 :                         (UtilityRoutines::SameString(Alphas(2), Conductivity))) {
    2140          15 :                         ++NumOfConcPts;
    2141          15 :                         state.dataFluidProps->GlyRawData(Loop).CondConcs(NumOfConcPts) = Numbers(1);
    2142             :                         // a little error trapping
    2143          15 :                         if (NumOfConcPts == 1) {
    2144           3 :                             if (state.dataFluidProps->GlyRawData(Loop).CondConcs(NumOfConcPts) < 0.0) {
    2145           0 :                                 ShowSevereError(
    2146           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2147           0 :                                 ShowContinueError(state, "Negative concentrations not allowed in fluid property input data");
    2148           0 :                                 ErrorsFound = true;
    2149             :                             }
    2150             :                         } else {
    2151          24 :                             if (state.dataFluidProps->GlyRawData(Loop).CondConcs(NumOfConcPts) <=
    2152          12 :                                 state.dataFluidProps->GlyRawData(Loop).CondConcs(NumOfConcPts - 1)) {
    2153           0 :                                 ShowSevereError(
    2154           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2155           0 :                                 ShowContinueError(state, "Concentrations must be entered in ascending order for fluid property data");
    2156           0 :                                 ErrorsFound = true;
    2157             :                             }
    2158             :                         }
    2159          15 :                         if ((NumNumbers - 1) == state.dataFluidProps->GlyRawData(Loop).NumCondTempPts) {
    2160          45 :                             state.dataFluidProps->GlyRawData(Loop).CondValues(
    2161          60 :                                 NumOfConcPts, {1, state.dataFluidProps->GlyRawData(Loop).NumCondTempPts}) = Numbers({2, NumNumbers});
    2162             :                         } else {
    2163           0 :                             ShowSevereError(state,
    2164           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2165           0 :                             ShowContinueError(state, "Number of conductivity data points not equal to number of temperature points");
    2166           0 :                             ErrorsFound = true;
    2167             :                         }
    2168             :                     }
    2169             :                 }
    2170             :             }
    2171             :             // Get: ***** VISCOSITY of GLYCOLS  *****
    2172             :             // First find the number of concentration value syntax lines have been entered and
    2173             :             // make sure that all of the concentration input is linked to the same temperature list
    2174          11 :             TempsName = "";
    2175          11 :             FirstSHMatch = true;
    2176          11 :             NumOfConcPts = 0;
    2177          11 :             state.dataFluidProps->GlyRawData(Loop).ViscDataPresent = false;
    2178          11 :             CurrentModuleObject = "FluidProperties:Concentration";
    2179         111 :             for (InData = 1; InData <= NumOfGlyFluidPropArrays; ++InData) { // check temperatures given for viscosity are consistant
    2180         100 :                 state.dataInputProcessing->inputProcessor->getObjectItem(state,
    2181             :                                                                          CurrentModuleObject,
    2182             :                                                                          InData,
    2183             :                                                                          Alphas,
    2184             :                                                                          NumAlphas,
    2185             :                                                                          Numbers,
    2186             :                                                                          NumNumbers,
    2187             :                                                                          Status,
    2188             :                                                                          lNumericFieldBlanks,
    2189             :                                                                          lAlphaFieldBlanks,
    2190             :                                                                          cAlphaFieldNames,
    2191             :                                                                          cNumericFieldNames);
    2192         160 :                 if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->GlyRawData(Loop).Name)) &&
    2193          60 :                     (UtilityRoutines::SameString(Alphas(2), Viscosity))) {
    2194          15 :                     ++NumOfConcPts;
    2195          15 :                     if (FirstSHMatch) {
    2196           3 :                         TempsName = Alphas(3);
    2197           3 :                         FirstSHMatch = false;
    2198             :                     } else {
    2199          12 :                         if (!UtilityRoutines::SameString(TempsName, Alphas(3))) {
    2200           0 :                             ShowSevereError(state,
    2201           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2202           0 :                             ShowContinueError(state, "All glycol viscosity data for the same glycol must use the same temperature list");
    2203           0 :                             ShowContinueError(state, "Expected name=" + TempsName + ", Entered name=" + Alphas(3));
    2204           0 :                             ErrorsFound = true;
    2205             :                         }
    2206             :                     }
    2207             :                 }
    2208             :             }
    2209          11 :             if (NumOfConcPts > 0) {
    2210           3 :                 state.dataFluidProps->GlyRawData(Loop).ViscDataPresent = true;
    2211             :                 // Now allocate the arrays and read the data into the proper place
    2212             :                 // First, allocate the temperature array and transfer the data from the FluidTemp array
    2213           5 :                 for (TempLoop = 1; TempLoop <= NumOfFluidTempArrays; ++TempLoop) {
    2214           5 :                     if (UtilityRoutines::SameString(TempsName, FluidTemps(TempLoop).Name)) {
    2215           3 :                         state.dataFluidProps->GlyRawData(Loop).NumViscTempPts = FluidTemps(TempLoop).NumOfTemps;
    2216           3 :                         state.dataFluidProps->GlyRawData(Loop).ViscTemps.allocate(state.dataFluidProps->GlyRawData(Loop).NumViscTempPts);
    2217           3 :                         state.dataFluidProps->GlyRawData(Loop).ViscTemps = FluidTemps(TempLoop).Temps;
    2218           3 :                         break; // the TempLoop DO loop
    2219             :                     }
    2220           2 :                     if (TempLoop == NumOfFluidTempArrays) {
    2221           0 :                         ShowSevereError(state,
    2222           0 :                                         std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2223           0 :                         ShowContinueError(state, "No match for temperature array name found with glycol data");
    2224           0 :                         ErrorsFound = true;
    2225             :                     }
    2226             :                 }
    2227             : 
    2228             :                 // Next, allocate the viscosity related arrays
    2229           3 :                 state.dataFluidProps->GlyRawData(Loop).NumViscConcPts = NumOfConcPts;
    2230           3 :                 state.dataFluidProps->GlyRawData(Loop).ViscConcs.allocate(state.dataFluidProps->GlyRawData(Loop).NumViscConcPts);
    2231           9 :                 state.dataFluidProps->GlyRawData(Loop).ViscValues.allocate(state.dataFluidProps->GlyRawData(Loop).NumViscConcPts,
    2232           9 :                                                                            state.dataFluidProps->GlyRawData(Loop).NumViscTempPts);
    2233             : 
    2234             :                 // Finally, get the viscosity and concentration values from the user input
    2235           3 :                 NumOfConcPts = 0;
    2236           3 :                 CurrentModuleObject = "FluidProperties:Concentration";
    2237          63 :                 for (InData = 1; InData <= NumOfGlyFluidPropArrays; ++InData) {
    2238          60 :                     state.dataInputProcessing->inputProcessor->getObjectItem(state,
    2239             :                                                                              CurrentModuleObject,
    2240             :                                                                              InData,
    2241             :                                                                              Alphas,
    2242             :                                                                              NumAlphas,
    2243             :                                                                              Numbers,
    2244             :                                                                              NumNumbers,
    2245             :                                                                              Status,
    2246             :                                                                              lNumericFieldBlanks,
    2247             :                                                                              lAlphaFieldBlanks,
    2248             :                                                                              cAlphaFieldNames,
    2249             :                                                                              cNumericFieldNames);
    2250         120 :                     if ((UtilityRoutines::SameString(Alphas(1), state.dataFluidProps->GlyRawData(Loop).Name)) &&
    2251          60 :                         (UtilityRoutines::SameString(Alphas(2), Viscosity))) {
    2252          15 :                         ++NumOfConcPts;
    2253          15 :                         state.dataFluidProps->GlyRawData(Loop).ViscConcs(NumOfConcPts) = Numbers(1);
    2254             :                         // a little error trapping
    2255          15 :                         if (NumOfConcPts == 1) {
    2256           3 :                             if (state.dataFluidProps->GlyRawData(Loop).ViscConcs(NumOfConcPts) < 0.0) {
    2257           0 :                                 ShowSevereError(
    2258           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2259           0 :                                 ShowContinueError(state, "Negative concentrations not allowed in fluid property input data");
    2260           0 :                                 ErrorsFound = true;
    2261             :                             }
    2262             :                         } else {
    2263          24 :                             if (state.dataFluidProps->GlyRawData(Loop).ViscConcs(NumOfConcPts) <=
    2264          12 :                                 state.dataFluidProps->GlyRawData(Loop).ViscConcs(NumOfConcPts - 1)) {
    2265           0 :                                 ShowSevereError(
    2266           0 :                                     state, std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2267           0 :                                 ShowContinueError(state, "Concentrations must be entered in ascending order for fluid property data");
    2268           0 :                                 ErrorsFound = true;
    2269             :                             }
    2270             :                         }
    2271          15 :                         if ((NumNumbers - 1) == state.dataFluidProps->GlyRawData(Loop).NumViscTempPts) {
    2272          45 :                             state.dataFluidProps->GlyRawData(Loop).ViscValues(
    2273          60 :                                 NumOfConcPts, {1, state.dataFluidProps->GlyRawData(Loop).NumViscTempPts}) = Numbers({2, NumNumbers});
    2274             :                         } else {
    2275           0 :                             ShowSevereError(state,
    2276           0 :                                             std::string{RoutineName} + CurrentModuleObject + " Name=" + state.dataFluidProps->GlyRawData(Loop).Name);
    2277           0 :                             ShowContinueError(state, "Number of viscosity data points not equal to number of temperature points");
    2278           0 :                             ErrorsFound = true;
    2279             :                         }
    2280             :                     }
    2281             :                 }
    2282             :             }
    2283             :         } // glycol loop
    2284             : 
    2285             :         // Get: ***** GLYCOL CONCENTRATIONS *****
    2286             :         // Read in the GlycolConcentrations input and then set the property data accordingly
    2287             :         // Input Syntax:
    2288             :         // FluidProperties:GlycolConcentration,
    2289             :         //       \memo glycol and what concentration it is
    2290             :         //  A1,  \field Name
    2291             :         //       \type alpha
    2292             :         //       \required-field
    2293             :         //       \reference GlycolConcentrations
    2294             :         //  A2,  \field Glycol Type
    2295             :         //       \required-field
    2296             :         //       \type choice
    2297             :         //       \key EthyleneGlycol
    2298             :         //       \key PropyleneGlycol
    2299             :         //       \key UserDefinedGlycolType
    2300             :         //       \note or UserDefined Fluid (must show up as a glycol in FluidProperties:Name object)
    2301             :         //  A3,  \field User Defined Glycol Name
    2302             :         //       \type object-list
    2303             :         //       \object-list FluidAndGlycolNames
    2304             :         //  N1;  \field Glycol Concentration
    2305             :         //       \type real
    2306             :         //       \minimum 0.0
    2307             :         //       \maximum 1.0
    2308             : 
    2309             :         // Check to see if there is any GlycolConcentrations input.  If not, this
    2310             :         // is okay as long as the user only desires to simulate loops with water.
    2311             :         // More than one GlycolConcentrations input is not allowed.
    2312             : 
    2313         469 :         CurrentModuleObject = "FluidProperties:GlycolConcentration";
    2314         469 :         NumOfOptionalInput = state.dataInputProcessing->inputProcessor->getNumObjectsFound(state, CurrentModuleObject);
    2315             : 
    2316         469 :         NumOfGlyConcs = NumOfOptionalInput + 1;
    2317         469 :         state.dataFluidProps->GlycolData.allocate(NumOfGlyConcs);
    2318         469 :         state.dataFluidProps->GlycolUsed.dimension(NumOfGlyConcs, false);
    2319             : 
    2320         469 :         state.dataFluidProps->GlycolUsed(1) = true; // mark Water as always used
    2321             : 
    2322             :         // First "glycol" is always pure water.  Load data from default arrays
    2323         469 :         state.dataFluidProps->GlycolData(1).Name = "WATER";
    2324         469 :         state.dataFluidProps->GlycolData(1).GlycolName = "WATER";
    2325         469 :         state.dataFluidProps->GlycolData(1).GlycolIndex = 0;
    2326         469 :         state.dataFluidProps->GlycolData(1).Concentration = 1.0;
    2327         469 :         state.dataFluidProps->GlycolData(1).CpDataPresent = true;
    2328         469 :         state.dataFluidProps->GlycolData(1).NumCpTempPts = DefaultNumGlyTemps;
    2329         469 :         state.dataFluidProps->GlycolData(1).RhoDataPresent = true;
    2330         469 :         state.dataFluidProps->GlycolData(1).NumRhoTempPts = DefaultNumGlyTemps;
    2331         469 :         state.dataFluidProps->GlycolData(1).CondDataPresent = true;
    2332         469 :         state.dataFluidProps->GlycolData(1).NumCondTempPts = DefaultNumGlyTemps;
    2333         469 :         state.dataFluidProps->GlycolData(1).ViscDataPresent = true;
    2334         469 :         state.dataFluidProps->GlycolData(1).NumViscTempPts = DefaultNumGlyTemps;
    2335         469 :         state.dataFluidProps->GlycolData(1).CpTemps.allocate(state.dataFluidProps->GlycolData(1).NumCpTempPts);
    2336         469 :         state.dataFluidProps->GlycolData(1).CpValues.allocate(state.dataFluidProps->GlycolData(1).NumCpTempPts);
    2337         469 :         state.dataFluidProps->GlycolData(1).RhoTemps.allocate(state.dataFluidProps->GlycolData(1).NumRhoTempPts);
    2338         469 :         state.dataFluidProps->GlycolData(1).RhoValues.allocate(state.dataFluidProps->GlycolData(1).NumRhoTempPts);
    2339         469 :         state.dataFluidProps->GlycolData(1).CondTemps.allocate(state.dataFluidProps->GlycolData(1).NumCondTempPts);
    2340         469 :         state.dataFluidProps->GlycolData(1).CondValues.allocate(state.dataFluidProps->GlycolData(1).NumCondTempPts);
    2341         469 :         state.dataFluidProps->GlycolData(1).ViscTemps.allocate(state.dataFluidProps->GlycolData(1).NumViscTempPts);
    2342         469 :         state.dataFluidProps->GlycolData(1).ViscValues.allocate(state.dataFluidProps->GlycolData(1).NumViscTempPts);
    2343         469 :         state.dataFluidProps->GlycolData(1).CpTemps = DefaultGlycolTemps;
    2344         469 :         state.dataFluidProps->GlycolData(1).CpValues = DefaultWaterCpData;
    2345         469 :         state.dataFluidProps->GlycolData(1).RhoTemps = DefaultGlycolTemps;
    2346         469 :         state.dataFluidProps->GlycolData(1).RhoValues = DefaultWaterRhoData;
    2347         469 :         state.dataFluidProps->GlycolData(1).CondTemps = DefaultGlycolTemps;
    2348         469 :         state.dataFluidProps->GlycolData(1).CondValues = DefaultWaterCondData;
    2349         469 :         state.dataFluidProps->GlycolData(1).ViscTemps = DefaultGlycolTemps;
    2350         469 :         state.dataFluidProps->GlycolData(1).ViscValues = DefaultWaterViscData;
    2351             : 
    2352         469 :         NumOfGlyConcs = 1; // Water is always available, everything else must be specified
    2353             : 
    2354         497 :         for (Loop = 1; Loop <= NumOfOptionalInput; ++Loop) {
    2355          28 :             state.dataInputProcessing->inputProcessor->getObjectItem(state,
    2356             :                                                                      CurrentModuleObject,
    2357             :                                                                      Loop,
    2358             :                                                                      Alphas,
    2359             :                                                                      NumAlphas,
    2360             :                                                                      Numbers,
    2361             :                                                                      NumNumbers,
    2362             :                                                                      Status,
    2363             :                                                                      lNumericFieldBlanks,
    2364             :                                                                      lAlphaFieldBlanks,
    2365             :                                                                      cAlphaFieldNames,
    2366             :                                                                      cNumericFieldNames);
    2367          28 :             if (UtilityRoutines::IsNameEmpty(state, Alphas(1), CurrentModuleObject, ErrorsFound)) {
    2368           0 :                 continue;
    2369             :             }
    2370          28 :             GlycolFound = false;
    2371          28 :             if (UtilityRoutines::SameString(Alphas(2), EthyleneGlycol)) {
    2372          16 :                 GlycolFound = true;
    2373          16 :                 ++NumOfGlyConcs;
    2374          16 :                 state.dataFluidProps->GlycolData(NumOfGlyConcs).Name = Alphas(1);
    2375          16 :                 state.dataFluidProps->GlycolData(NumOfGlyConcs).GlycolName = Alphas(2);
    2376          12 :             } else if (UtilityRoutines::SameString(Alphas(2), PropyleneGlycol)) {
    2377           9 :                 GlycolFound = true;
    2378           9 :                 ++NumOfGlyConcs;
    2379           9 :                 state.dataFluidProps->GlycolData(NumOfGlyConcs).Name = Alphas(1);
    2380           9 :                 state.dataFluidProps->GlycolData(NumOfGlyConcs).GlycolName = Alphas(2);
    2381           3 :             } else if (UtilityRoutines::SameString(Alphas(2), "UserDefinedGlycolType")) {
    2382           3 :                 for (InData = 1; InData <= state.dataFluidProps->NumOfGlycols; ++InData) {
    2383           3 :                     if (UtilityRoutines::SameString(Alphas(3), state.dataFluidProps->GlyRawData(InData).Name)) {
    2384           3 :                         GlycolFound = true;
    2385           3 :                         break; // DO LOOP through user defined glycols
    2386             :                     }
    2387             :                 }
    2388           3 :                 if (GlycolFound) {
    2389           3 :                     ++NumOfGlyConcs;
    2390           3 :                     state.dataFluidProps->GlycolData(NumOfGlyConcs).Name = Alphas(1);
    2391           3 :                     state.dataFluidProps->GlycolData(NumOfGlyConcs).GlycolName = Alphas(3);
    2392             :                 } else {
    2393           0 :                     ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + "=\"" + Alphas(1) + "\", invalid reference");
    2394           0 :                     ShowContinueError(state, "... not found in the FluidProperties:Name list: \"" + Alphas(3) + "\".");
    2395           0 :                     ErrorsFound = true;
    2396             :                 }
    2397             :             } else {
    2398           0 :                 ShowSevereError(state, std::string{RoutineName} + CurrentModuleObject + "=\"" + Alphas(1) + "\", invalid field");
    2399           0 :                 ShowContinueError(state, "..." + cAlphaFieldNames(2) + "=\"" + Alphas(2) + "\".");
    2400           0 :                 ShowContinueError(state, "... Legal values are PropyleneGlycol, EthyleneGlycol or UserDefinedGlycolType.");
    2401           0 :                 ErrorsFound = true;
    2402             :             }
    2403          28 :             if (!GlycolFound) continue;
    2404          28 :             state.dataFluidProps->GlycolData(NumOfGlyConcs).Concentration = Numbers(1);
    2405             :         }
    2406             : 
    2407             :         // Now initialize the rest of the data for the glycols
    2408         497 :         for (Loop = 2; Loop <= NumOfGlyConcs; ++Loop) {
    2409             :             // Check to see if glycol name is one of the defaults or is listed in the Fluid Name list
    2410          28 :             if (UtilityRoutines::SameString(state.dataFluidProps->GlycolData(Loop).GlycolName, EthyleneGlycol)) {
    2411          16 :                 state.dataFluidProps->GlycolData(Loop).GlycolIndex = EthyleneGlycolIndex;
    2412          12 :             } else if (UtilityRoutines::SameString(state.dataFluidProps->GlycolData(Loop).GlycolName, PropyleneGlycol)) {
    2413           9 :                 state.dataFluidProps->GlycolData(Loop).GlycolIndex = PropyleneGlycolIndex;
    2414             :             } else {
    2415           3 :                 for (InData = 1; InData <= state.dataFluidProps->NumOfGlycols; ++InData) {
    2416           3 :                     if (UtilityRoutines::SameString(state.dataFluidProps->GlycolData(Loop).GlycolName,
    2417           3 :                                                     state.dataFluidProps->GlyRawData(InData).Name)) {
    2418           3 :                         state.dataFluidProps->GlycolData(Loop).GlycolIndex = InData;
    2419           3 :                         break; // DO LOOP through user defined glycols
    2420             :                     }
    2421             :                 }
    2422             :             }
    2423             : 
    2424             :             // Set the rest of the parameters...
    2425          40 :             if ((state.dataFluidProps->GlycolData(Loop).GlycolIndex == EthyleneGlycolIndex) ||
    2426          12 :                 (state.dataFluidProps->GlycolData(Loop).GlycolIndex == PropyleneGlycolIndex)) {
    2427             : 
    2428          25 :                 state.dataFluidProps->GlycolData(Loop).CpDataPresent = true;
    2429          25 :                 state.dataFluidProps->GlycolData(Loop).NumCpTempPts = DefaultNumGlyTemps;
    2430          25 :                 state.dataFluidProps->GlycolData(Loop).RhoDataPresent = true;
    2431          25 :                 state.dataFluidProps->GlycolData(Loop).NumRhoTempPts = DefaultNumGlyTemps;
    2432          25 :                 state.dataFluidProps->GlycolData(Loop).CondDataPresent = true;
    2433          25 :                 state.dataFluidProps->GlycolData(Loop).NumCondTempPts = DefaultNumGlyTemps;
    2434          25 :                 state.dataFluidProps->GlycolData(Loop).ViscDataPresent = true;
    2435          25 :                 state.dataFluidProps->GlycolData(Loop).NumViscTempPts = DefaultNumGlyTemps;
    2436          25 :                 state.dataFluidProps->GlycolData(Loop).CpTemps.allocate(state.dataFluidProps->GlycolData(Loop).NumCpTempPts);
    2437          25 :                 state.dataFluidProps->GlycolData(Loop).CpValues.allocate(state.dataFluidProps->GlycolData(Loop).NumCpTempPts);
    2438          25 :                 state.dataFluidProps->GlycolData(Loop).RhoTemps.allocate(state.dataFluidProps->GlycolData(Loop).NumRhoTempPts);
    2439          25 :                 state.dataFluidProps->GlycolData(Loop).RhoValues.allocate(state.dataFluidProps->GlycolData(Loop).NumRhoTempPts);
    2440          25 :                 state.dataFluidProps->GlycolData(Loop).CondTemps.allocate(state.dataFluidProps->GlycolData(Loop).NumCondTempPts);
    2441          25 :                 state.dataFluidProps->GlycolData(Loop).CondValues.allocate(state.dataFluidProps->GlycolData(Loop).NumCondTempPts);
    2442          25 :                 state.dataFluidProps->GlycolData(Loop).ViscTemps.allocate(state.dataFluidProps->GlycolData(Loop).NumViscTempPts);
    2443          25 :                 state.dataFluidProps->GlycolData(Loop).ViscValues.allocate(state.dataFluidProps->GlycolData(Loop).NumViscTempPts);
    2444          25 :                 state.dataFluidProps->GlycolData(Loop).CpTemps = DefaultGlycolTemps;
    2445          25 :                 state.dataFluidProps->GlycolData(Loop).RhoTemps = DefaultGlycolTemps;
    2446          25 :                 state.dataFluidProps->GlycolData(Loop).CondTemps = DefaultGlycolTemps;
    2447          25 :                 state.dataFluidProps->GlycolData(Loop).ViscTemps = DefaultGlycolTemps;
    2448             : 
    2449          25 :                 if (state.dataFluidProps->GlycolData(Loop).GlycolIndex == EthyleneGlycolIndex) {
    2450          32 :                     InterpDefValuesForGlycolConc(state,
    2451             :                                                  DefaultGlycolConcs,
    2452             :                                                  DefaultEthGlyCpData,
    2453          16 :                                                  state.dataFluidProps->GlycolData(Loop).Concentration,
    2454          16 :                                                  state.dataFluidProps->GlycolData(Loop).CpValues);
    2455          32 :                     InterpDefValuesForGlycolConc(state,
    2456             :                                                  DefaultGlycolConcs,
    2457             :                                                  DefaultEthGlyRhoData,
    2458          16 :                                                  state.dataFluidProps->GlycolData(Loop).Concentration,
    2459          16 :                                                  state.dataFluidProps->GlycolData(Loop).RhoValues);
    2460          32 :                     InterpDefValuesForGlycolConc(state,
    2461             :                                                  DefaultGlycolConcs,
    2462             :                                                  DefaultEthGlyCondData,
    2463          16 :                                                  state.dataFluidProps->GlycolData(Loop).Concentration,
    2464          16 :                                                  state.dataFluidProps->GlycolData(Loop).CondValues);
    2465          32 :                     InterpDefValuesForGlycolConc(state,
    2466             :                                                  DefaultGlycolConcs,
    2467             :                                                  DefaultEthGlyViscData,
    2468          16 :                                                  state.dataFluidProps->GlycolData(Loop).Concentration,
    2469          16 :                                                  state.dataFluidProps->GlycolData(Loop).ViscValues);
    2470             :                 } else { // == PropyleneGlycolIndex
    2471          18 :                     InterpDefValuesForGlycolConc(state,
    2472             :                                                  DefaultGlycolConcs,
    2473             :                                                  DefaultPropGlyCpData,
    2474           9 :                                                  state.dataFluidProps->GlycolData(Loop).Concentration,
    2475           9 :                                                  state.dataFluidProps->GlycolData(Loop).CpValues);
    2476          18 :                     InterpDefValuesForGlycolConc(state,
    2477             :                                                  DefaultGlycolConcs,
    2478             :                                                  DefaultPropGlyRhoData,
    2479           9 :                                                  state.dataFluidProps->GlycolData(Loop).Concentration,
    2480           9 :                                                  state.dataFluidProps->GlycolData(Loop).RhoValues);
    2481          18 :                     InterpDefValuesForGlycolConc(state,
    2482             :                                                  DefaultGlycolConcs,
    2483             :                                                  DefaultPropGlyCondData,
    2484           9 :                                                  state.dataFluidProps->GlycolData(Loop).Concentration,
    2485           9 :                                                  state.dataFluidProps->GlycolData(Loop).CondValues);
    2486          18 :                     InterpDefValuesForGlycolConc(state,
    2487             :                                                  DefaultGlycolConcs,
    2488             :                                                  DefaultPropGlyViscData,
    2489           9 :                                                  state.dataFluidProps->GlycolData(Loop).Concentration,
    2490           9 :                                                  state.dataFluidProps->GlycolData(Loop).ViscValues);
    2491             :                 }
    2492             : 
    2493             :             } else { // User-defined fluid
    2494             : 
    2495           3 :                 Index = state.dataFluidProps->GlycolData(Loop).GlycolIndex;
    2496             : 
    2497             :                 // Specific heat data:
    2498           3 :                 if (state.dataFluidProps->GlyRawData(Index).CpDataPresent) {
    2499           3 :                     state.dataFluidProps->GlycolData(Loop).CpDataPresent = true;
    2500           3 :                     state.dataFluidProps->GlycolData(Loop).NumCpTempPts = state.dataFluidProps->GlyRawData(Index).NumCpTempPts;
    2501           3 :                     state.dataFluidProps->GlycolData(Loop).CpTemps.allocate(state.dataFluidProps->GlycolData(Loop).NumCpTempPts);
    2502           3 :                     state.dataFluidProps->GlycolData(Loop).CpValues.allocate(state.dataFluidProps->GlycolData(Loop).NumCpTempPts);
    2503           3 :                     state.dataFluidProps->GlycolData(Loop).CpTemps = state.dataFluidProps->GlyRawData(Index).CpTemps;
    2504          18 :                     InterpValuesForGlycolConc(state,
    2505           3 :                                               state.dataFluidProps->GlyRawData(Index).NumCpConcPts,
    2506           3 :                                               state.dataFluidProps->GlyRawData(Index).NumCpTempPts,
    2507           3 :                                               state.dataFluidProps->GlyRawData(Index).CpConcs,
    2508           3 :                                               state.dataFluidProps->GlyRawData(Index).CpValues,
    2509           3 :                                               state.dataFluidProps->GlycolData(Loop).Concentration,
    2510           3 :                                               state.dataFluidProps->GlycolData(Loop).CpValues);
    2511             :                 } else {
    2512           0 :                     ShowSevereError(state, std::string{RoutineName} + "Specific heat data not entered for a " + CurrentModuleObject);
    2513           0 :                     ShowContinueError(state, "ALL data must be entered for user-defined glycols");
    2514           0 :                     ShowContinueError(state, "Glycol mixture name = " + state.dataFluidProps->GlycolData(Loop).Name);
    2515           0 :                     ShowContinueError(state, "Glycol fluid name = " + state.dataFluidProps->GlycolData(Loop).GlycolName);
    2516           0 :                     ErrorsFound = true;
    2517             :                 }
    2518             : 
    2519             :                 // Density data:
    2520           3 :                 if (state.dataFluidProps->GlyRawData(Index).CpDataPresent) {
    2521           3 :                     state.dataFluidProps->GlycolData(Loop).RhoDataPresent = true;
    2522           3 :                     state.dataFluidProps->GlycolData(Loop).NumRhoTempPts = state.dataFluidProps->GlyRawData(Index).NumRhoTempPts;
    2523           3 :                     state.dataFluidProps->GlycolData(Loop).RhoTemps.allocate(state.dataFluidProps->GlycolData(Loop).NumRhoTempPts);
    2524           3 :                     state.dataFluidProps->GlycolData(Loop).RhoValues.allocate(state.dataFluidProps->GlycolData(Loop).NumRhoTempPts);
    2525           3 :                     state.dataFluidProps->GlycolData(Loop).RhoTemps = state.dataFluidProps->GlyRawData(Index).RhoTemps;
    2526          18 :                     InterpValuesForGlycolConc(state,
    2527           3 :                                               state.dataFluidProps->GlyRawData(Index).NumRhoConcPts,
    2528           3 :                                               state.dataFluidProps->GlyRawData(Index).NumRhoTempPts,
    2529           3 :                                               state.dataFluidProps->GlyRawData(Index).RhoConcs,
    2530           3 :                                               state.dataFluidProps->GlyRawData(Index).RhoValues,
    2531           3 :                                               state.dataFluidProps->GlycolData(Loop).Concentration,
    2532           3 :                                               state.dataFluidProps->GlycolData(Loop).RhoValues);
    2533             :                 } else {
    2534           0 :                     ShowSevereError(state, std::string{RoutineName} + "Density data not entered for a " + CurrentModuleObject);
    2535           0 :                     ShowContinueError(state, "ALL data must be entered for user-defined glycols");
    2536           0 :                     ShowContinueError(state, "Glycol mixture name = " + state.dataFluidProps->GlycolData(Loop).Name);
    2537           0 :                     ShowContinueError(state, "Glycol fluid name = " + state.dataFluidProps->GlycolData(Loop).GlycolName);
    2538           0 :                     ErrorsFound = true;
    2539             :                 }
    2540             : 
    2541             :                 // Conductivity data:
    2542           3 :                 if (state.dataFluidProps->GlyRawData(Index).CondDataPresent) {
    2543           3 :                     state.dataFluidProps->GlycolData(Loop).CondDataPresent = true;
    2544           3 :                     state.dataFluidProps->GlycolData(Loop).NumCondTempPts = state.dataFluidProps->GlyRawData(Index).NumCondTempPts;
    2545           3 :                     state.dataFluidProps->GlycolData(Loop).CondTemps.allocate(state.dataFluidProps->GlycolData(Loop).NumCondTempPts);
    2546           3 :                     state.dataFluidProps->GlycolData(Loop).CondValues.allocate(state.dataFluidProps->GlycolData(Loop).NumCondTempPts);
    2547           3 :                     state.dataFluidProps->GlycolData(Loop).CondTemps = state.dataFluidProps->GlyRawData(Index).CondTemps;
    2548          18 :                     InterpValuesForGlycolConc(state,
    2549           3 :                                               state.dataFluidProps->GlyRawData(Index).NumCondConcPts,
    2550           3 :                                               state.dataFluidProps->GlyRawData(Index).NumCondTempPts,
    2551           3 :                                               state.dataFluidProps->GlyRawData(Index).CondConcs,
    2552           3 :                                               state.dataFluidProps->GlyRawData(Index).CondValues,
    2553           3 :                                               state.dataFluidProps->GlycolData(Loop).Concentration,
    2554           3 :                                               state.dataFluidProps->GlycolData(Loop).CondValues);
    2555             :                 } else {
    2556           0 :                     ShowSevereError(state, std::string{RoutineName} + "Conductivity data not entered for a " + CurrentModuleObject);
    2557           0 :                     ShowContinueError(state, "ALL data must be entered for user-defined glycols");
    2558           0 :                     ShowContinueError(state, "Glycol mixture name = " + state.dataFluidProps->GlycolData(Loop).Name);
    2559           0 :                     ShowContinueError(state, "Glycol fluid name = " + state.dataFluidProps->GlycolData(Loop).GlycolName);
    2560           0 :                     ErrorsFound = true;
    2561             :                 }
    2562             : 
    2563             :                 // Viscosity data:
    2564           3 :                 if (state.dataFluidProps->GlyRawData(Index).ViscDataPresent) {
    2565           3 :                     state.dataFluidProps->GlycolData(Loop).ViscDataPresent = true;
    2566           3 :                     state.dataFluidProps->GlycolData(Loop).NumViscTempPts = state.dataFluidProps->GlyRawData(Index).NumViscTempPts;
    2567           3 :                     state.dataFluidProps->GlycolData(Loop).ViscTemps.allocate(state.dataFluidProps->GlycolData(Loop).NumViscTempPts);
    2568           3 :                     state.dataFluidProps->GlycolData(Loop).ViscValues.allocate(state.dataFluidProps->GlycolData(Loop).NumViscTempPts);
    2569           3 :                     state.dataFluidProps->GlycolData(Loop).ViscTemps = state.dataFluidProps->GlyRawData(Index).ViscTemps;
    2570          18 :                     InterpValuesForGlycolConc(state,
    2571           3 :                                               state.dataFluidProps->GlyRawData(Index).NumViscConcPts,
    2572           3 :                                               state.dataFluidProps->GlyRawData(Index).NumViscTempPts,
    2573           3 :                                               state.dataFluidProps->GlyRawData(Index).ViscConcs,
    2574           3 :                                               state.dataFluidProps->GlyRawData(Index).ViscValues,
    2575           3 :                                               state.dataFluidProps->GlycolData(Loop).Concentration,
    2576           3 :                                               state.dataFluidProps->GlycolData(Loop).ViscValues);
    2577             :                 } else {
    2578           0 :                     ShowSevereError(state, std::string{RoutineName} + "Viscosity data not entered for a " + CurrentModuleObject);
    2579           0 :                     ShowContinueError(state, "ALL data must be entered for user-defined glycols");
    2580           0 :                     ShowContinueError(state, "Glycol mixture name = " + state.dataFluidProps->GlycolData(Loop).Name);
    2581           0 :                     ShowContinueError(state, "Glycol fluid name = " + state.dataFluidProps->GlycolData(Loop).GlycolName);
    2582           0 :                     ErrorsFound = true;
    2583             :                 }
    2584             :             }
    2585             :         }
    2586             : 
    2587         469 :         state.dataFluidProps->NumOfGlycols = NumOfGlyConcs; // Reset number of glycols to actual number
    2588         469 :         state.dataFluidProps->GlycolErrorTracking.allocate(state.dataFluidProps->NumOfGlycols);
    2589         966 :         for (std::size_t i = 0; i < state.dataFluidProps->GlycolErrorTracking.size(); ++i)
    2590         497 :             state.dataFluidProps->GlycolErrorTracking[i].Name = state.dataFluidProps->GlycolData[i].Name;
    2591             : 
    2592         469 :         if (!ErrorsFound) InitializeGlycolTempLimits(state, ErrorsFound); // Initialize the Temp limits for the glycols
    2593             : 
    2594         469 :         if (!ErrorsFound) InitializeRefrigerantLimits(state, ErrorsFound); // Initialize the limits for the refrigerants
    2595             : 
    2596         469 :         FluidTemps.deallocate();
    2597             : 
    2598         469 :         Alphas.deallocate();
    2599         469 :         cAlphaFieldNames.deallocate();
    2600         469 :         lAlphaFieldBlanks.deallocate();
    2601         469 :         Numbers.deallocate();
    2602         469 :         cNumericFieldNames.deallocate();
    2603         469 :         lNumericFieldBlanks.deallocate();
    2604             : 
    2605         469 :         if (ErrorsFound) {
    2606           0 :             ShowFatalError(state, std::string{RoutineName} + "Previous errors in input cause program termination.");
    2607             :         }
    2608             : 
    2609         469 :         if (state.dataInputProcessing->inputProcessor->getNumSectionsFound("REPORTGLYCOLS") > 0) state.dataFluidProps->DebugReportGlycols = true;
    2610         469 :         if (state.dataInputProcessing->inputProcessor->getNumSectionsFound("REPORTREFRIGERANTS") > 0)
    2611           0 :             state.dataFluidProps->DebugReportRefrigerants = true;
    2612         469 :         if (state.dataInputProcessing->inputProcessor->getNumSectionsFound("INCREASEGLYCOLERRORLIMIT") > 0)
    2613           0 :             state.dataFluidProps->GlycolErrorLimitTest += 10;
    2614         469 :         if (state.dataInputProcessing->inputProcessor->getNumSectionsFound("INCREASEREFRIGERANTERRORLIMIT") > 0)
    2615           0 :             state.dataFluidProps->RefrigerantErrorLimitTest += 10;
    2616             : 
    2617         469 :         if (state.dataFluidProps->DebugReportGlycols) ReportAndTestGlycols(state);
    2618         469 :         if (state.dataFluidProps->DebugReportRefrigerants) ReportAndTestRefrigerants(state);
    2619         469 :     }
    2620             : 
    2621             :     [[maybe_unused]] static constexpr std::array<std::array<Real64, DefaultNumSteamSuperheatedTemps>, DefaultNumSteamSuperheatedPressure>
    2622             :         DefaultSteamSuperheatedEnthalpyDataTable = {{
    2623             :             {2501000.0, 2503000.0, 2510000.0, 2520000.0, 2529000.0, 2538000.0, 2548000.0, 2557000.0, 2566000.0, 2576000.0, 2585000.0, 2595000.0,
    2624             :              2604000.0, 2613000.0, 2623000.0, 2632000.0, 2636000.0, 2640000.0, 2643000.0, 2647000.0, 2651000.0, 2655000.0, 2658000.0, 2662000.0,
    2625             :              2666000.0, 2670000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2687000.0, 2689000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
    2626             :              2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
    2627             :              2721000.0, 2723000.0, 2725000.0, 2727000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2742000.0,
    2628             :              2744000.0, 2746000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
    2629             :              2788000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
    2630             :              2834000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
    2631             :              2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2632             :              3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2633             :             {0.0,       2503000.0, 2510000.0, 2520000.0, 2529000.0, 2538000.0, 2548000.0, 2557000.0, 2566000.0, 2576000.0, 2585000.0, 2595000.0,
    2634             :              2604000.0, 2613000.0, 2623000.0, 2632000.0, 2636000.0, 2640000.0, 2643000.0, 2647000.0, 2651000.0, 2655000.0, 2658000.0, 2662000.0,
    2635             :              2666000.0, 2670000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2687000.0, 2689000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
    2636             :              2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
    2637             :              2721000.0, 2723000.0, 2725000.0, 2727000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2742000.0,
    2638             :              2744000.0, 2746000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
    2639             :              2788000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
    2640             :              2834000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
    2641             :              2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2642             :              3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2643             :             {0.0,       0.0,       2510000.0, 2519000.0, 2529000.0, 2538000.0, 2548000.0, 2557000.0, 2566000.0, 2576000.0, 2585000.0, 2594000.0,
    2644             :              2604000.0, 2613000.0, 2623000.0, 2632000.0, 2636000.0, 2640000.0, 2643000.0, 2647000.0, 2651000.0, 2655000.0, 2658000.0, 2662000.0,
    2645             :              2666000.0, 2670000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2687000.0, 2689000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
    2646             :              2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
    2647             :              2721000.0, 2723000.0, 2725000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2742000.0,
    2648             :              2744000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
    2649             :              2788000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
    2650             :              2834000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
    2651             :              2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2652             :              3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2653             :             {0.0,       0.0,       0.0,       2519000.0, 2529000.0, 2538000.0, 2547000.0, 2557000.0, 2566000.0, 2576000.0, 2585000.0, 2594000.0,
    2654             :              2604000.0, 2613000.0, 2623000.0, 2632000.0, 2636000.0, 2639000.0, 2643000.0, 2647000.0, 2651000.0, 2655000.0, 2658000.0, 2662000.0,
    2655             :              2666000.0, 2670000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2687000.0, 2689000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
    2656             :              2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
    2657             :              2721000.0, 2723000.0, 2725000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2742000.0,
    2658             :              2744000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
    2659             :              2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
    2660             :              2834000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
    2661             :              2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2662             :              3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2663             :             {0.0,       0.0,       0.0,       0.0,       2528000.0, 2538000.0, 2547000.0, 2557000.0, 2566000.0, 2575000.0, 2585000.0, 2594000.0,
    2664             :              2604000.0, 2613000.0, 2622000.0, 2632000.0, 2636000.0, 2639000.0, 2643000.0, 2647000.0, 2651000.0, 2654000.0, 2658000.0, 2662000.0,
    2665             :              2666000.0, 2670000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2687000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
    2666             :              2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
    2667             :              2721000.0, 2723000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2742000.0,
    2668             :              2744000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
    2669             :              2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
    2670             :              2834000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
    2671             :              2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2672             :              3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2673             :             {0.0,       0.0,       0.0,       0.0,       0.0,       2537000.0, 2547000.0, 2556000.0, 2566000.0, 2575000.0, 2585000.0, 2594000.0,
    2674             :              2603000.0, 2613000.0, 2622000.0, 2632000.0, 2635000.0, 2639000.0, 2643000.0, 2647000.0, 2651000.0, 2654000.0, 2658000.0, 2662000.0,
    2675             :              2666000.0, 2669000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2687000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
    2676             :              2698000.0, 2700000.0, 2702000.0, 2704000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
    2677             :              2721000.0, 2723000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2742000.0,
    2678             :              2743000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
    2679             :              2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
    2680             :              2834000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
    2681             :              2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2682             :              3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2683             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2547000.0, 2556000.0, 2566000.0, 2575000.0, 2584000.0, 2594000.0,
    2684             :              2603000.0, 2613000.0, 2622000.0, 2632000.0, 2635000.0, 2639000.0, 2643000.0, 2647000.0, 2650000.0, 2654000.0, 2658000.0, 2662000.0,
    2685             :              2666000.0, 2669000.0, 2673000.0, 2677000.0, 2681000.0, 2685000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
    2686             :              2698000.0, 2700000.0, 2702000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
    2687             :              2721000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0, 2741000.0,
    2688             :              2743000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2784000.0,
    2689             :              2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
    2690             :              2833000.0, 2837000.0, 2841000.0, 2851000.0, 2861000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
    2691             :              2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2692             :              3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2693             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2556000.0, 2565000.0, 2575000.0, 2584000.0, 2594000.0,
    2694             :              2603000.0, 2612000.0, 2622000.0, 2631000.0, 2635000.0, 2639000.0, 2643000.0, 2646000.0, 2650000.0, 2654000.0, 2658000.0, 2662000.0,
    2695             :              2665000.0, 2669000.0, 2673000.0, 2677000.0, 2681000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
    2696             :              2698000.0, 2700000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0,
    2697             :              2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2739000.0, 2741000.0,
    2698             :              2743000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2783000.0,
    2699             :              2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2830000.0,
    2700             :              2833000.0, 2837000.0, 2841000.0, 2851000.0, 2860000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
    2701             :              2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2702             :              3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2703             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2565000.0, 2574000.0, 2584000.0, 2593000.0,
    2704             :              2603000.0, 2612000.0, 2622000.0, 2631000.0, 2635000.0, 2639000.0, 2642000.0, 2646000.0, 2650000.0, 2654000.0, 2658000.0, 2661000.0,
    2705             :              2665000.0, 2669000.0, 2673000.0, 2677000.0, 2680000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0,
    2706             :              2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2718000.0,
    2707             :              2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2737000.0, 2739000.0, 2741000.0,
    2708             :              2743000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0, 2783000.0,
    2709             :              2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2829000.0,
    2710             :              2833000.0, 2837000.0, 2841000.0, 2851000.0, 2860000.0, 2870000.0, 2880000.0, 2890000.0, 2899000.0, 2909000.0, 2919000.0, 2929000.0,
    2711             :              2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2712             :              3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2713             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2574000.0, 2583000.0, 2593000.0,
    2714             :              2602000.0, 2612000.0, 2621000.0, 2631000.0, 2635000.0, 2638000.0, 2642000.0, 2646000.0, 2650000.0, 2654000.0, 2657000.0, 2661000.0,
    2715             :              2665000.0, 2669000.0, 2673000.0, 2676000.0, 2680000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2693000.0, 2695000.0,
    2716             :              2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2714000.0, 2716000.0, 2718000.0,
    2717             :              2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2733000.0, 2735000.0, 2737000.0, 2739000.0, 2741000.0,
    2718             :              2743000.0, 2745000.0, 2749000.0, 2753000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2779000.0, 2783000.0,
    2719             :              2787000.0, 2791000.0, 2795000.0, 2799000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0, 2829000.0,
    2720             :              2833000.0, 2837000.0, 2841000.0, 2851000.0, 2860000.0, 2870000.0, 2880000.0, 2889000.0, 2899000.0, 2909000.0, 2919000.0, 2928000.0,
    2721             :              2938000.0, 2958000.0, 2978000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2722             :              3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2723             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2582000.0, 2592000.0,
    2724             :              2602000.0, 2611000.0, 2621000.0, 2630000.0, 2634000.0, 2638000.0, 2642000.0, 2646000.0, 2649000.0, 2653000.0, 2657000.0, 2661000.0,
    2725             :              2665000.0, 2668000.0, 2672000.0, 2676000.0, 2680000.0, 2684000.0, 2686000.0, 2688000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0,
    2726             :              2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0,
    2727             :              2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0, 2739000.0, 2741000.0,
    2728             :              2743000.0, 2745000.0, 2749000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2775000.0, 2779000.0, 2783000.0,
    2729             :              2787000.0, 2791000.0, 2795000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2825000.0, 2829000.0,
    2730             :              2833000.0, 2837000.0, 2841000.0, 2851000.0, 2860000.0, 2870000.0, 2880000.0, 2889000.0, 2899000.0, 2909000.0, 2919000.0, 2928000.0,
    2731             :              2938000.0, 2958000.0, 2977000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2732             :              3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2733             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2591000.0,
    2734             :              2601000.0, 2611000.0, 2620000.0, 2630000.0, 2634000.0, 2637000.0, 2641000.0, 2645000.0, 2649000.0, 2653000.0, 2657000.0, 2660000.0,
    2735             :              2664000.0, 2668000.0, 2672000.0, 2676000.0, 2680000.0, 2683000.0, 2685000.0, 2687000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0,
    2736             :              2697000.0, 2699000.0, 2701000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0,
    2737             :              2720000.0, 2722000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0, 2739000.0, 2741000.0,
    2738             :              2743000.0, 2745000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2771000.0, 2775000.0, 2779000.0, 2783000.0,
    2739             :              2787000.0, 2791000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2821000.0, 2825000.0, 2829000.0,
    2740             :              2833000.0, 2837000.0, 2841000.0, 2850000.0, 2860000.0, 2870000.0, 2879000.0, 2889000.0, 2899000.0, 2909000.0, 2918000.0, 2928000.0,
    2741             :              2938000.0, 2958000.0, 2977000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2742             :              3178000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2743             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2744             :              2600000.0, 2610000.0, 2620000.0, 2629000.0, 2633000.0, 2637000.0, 2641000.0, 2645000.0, 2648000.0, 2652000.0, 2656000.0, 2660000.0,
    2745             :              2664000.0, 2668000.0, 2671000.0, 2675000.0, 2679000.0, 2683000.0, 2685000.0, 2687000.0, 2689000.0, 2691000.0, 2692000.0, 2694000.0,
    2746             :              2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2715000.0, 2717000.0,
    2747             :              2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0, 2738000.0, 2740000.0,
    2748             :              2742000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0, 2779000.0, 2783000.0,
    2749             :              2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2813000.0, 2817000.0, 2821000.0, 2825000.0, 2829000.0,
    2750             :              2833000.0, 2837000.0, 2841000.0, 2850000.0, 2860000.0, 2870000.0, 2879000.0, 2889000.0, 2899000.0, 2909000.0, 2918000.0, 2928000.0,
    2751             :              2938000.0, 2958000.0, 2977000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3077000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2752             :              3177000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2753             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2754             :              0.0,       2609000.0, 2619000.0, 2628000.0, 2632000.0, 2636000.0, 2640000.0, 2644000.0, 2648000.0, 2652000.0, 2655000.0, 2659000.0,
    2755             :              2663000.0, 2667000.0, 2671000.0, 2675000.0, 2679000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0,
    2756             :              2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0,
    2757             :              2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0,
    2758             :              2742000.0, 2744000.0, 2748000.0, 2752000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0, 2778000.0, 2782000.0,
    2759             :              2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0, 2825000.0, 2829000.0,
    2760             :              2833000.0, 2836000.0, 2840000.0, 2850000.0, 2860000.0, 2869000.0, 2879000.0, 2889000.0, 2899000.0, 2908000.0, 2918000.0, 2928000.0,
    2761             :              2938000.0, 2957000.0, 2977000.0, 2997000.0, 3017000.0, 3037000.0, 3057000.0, 3076000.0, 3097000.0, 3117000.0, 3137000.0, 3157000.0,
    2762             :              3177000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2763             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2764             :              0.0,       0.0,       2618000.0, 2627000.0, 2631000.0, 2635000.0, 2639000.0, 2643000.0, 2647000.0, 2651000.0, 2655000.0, 2659000.0,
    2765             :              2662000.0, 2666000.0, 2670000.0, 2674000.0, 2678000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0, 2689000.0, 2691000.0, 2693000.0,
    2766             :              2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2716000.0,
    2767             :              2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0, 2740000.0,
    2768             :              2741000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2770000.0, 2774000.0, 2778000.0, 2782000.0,
    2769             :              2786000.0, 2790000.0, 2794000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0, 2825000.0, 2828000.0,
    2770             :              2832000.0, 2836000.0, 2840000.0, 2850000.0, 2859000.0, 2869000.0, 2879000.0, 2889000.0, 2898000.0, 2908000.0, 2918000.0, 2928000.0,
    2771             :              2938000.0, 2957000.0, 2977000.0, 2997000.0, 3017000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3117000.0, 3137000.0, 3157000.0,
    2772             :              3177000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3490000.0},
    2773             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2774             :              0.0,       0.0,       0.0,       2626000.0, 2630000.0, 2634000.0, 2638000.0, 2642000.0, 2646000.0, 2650000.0, 2654000.0, 2658000.0,
    2775             :              2661000.0, 2665000.0, 2669000.0, 2673000.0, 2677000.0, 2681000.0, 2683000.0, 2685000.0, 2687000.0, 2689000.0, 2691000.0, 2693000.0,
    2776             :              2695000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0,
    2777             :              2718000.0, 2720000.0, 2722000.0, 2724000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0, 2739000.0,
    2778             :              2741000.0, 2743000.0, 2747000.0, 2751000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0, 2778000.0, 2782000.0,
    2779             :              2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2816000.0, 2820000.0, 2824000.0, 2828000.0,
    2780             :              2832000.0, 2836000.0, 2840000.0, 2849000.0, 2859000.0, 2869000.0, 2879000.0, 2888000.0, 2898000.0, 2908000.0, 2918000.0, 2928000.0,
    2781             :              2937000.0, 2957000.0, 2977000.0, 2997000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3137000.0, 3157000.0,
    2782             :              3177000.0, 3198000.0, 3218000.0, 3280000.0, 3384000.0, 3489000.0},
    2783             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2784             :              0.0,       0.0,       0.0,       0.0,       2630000.0, 2633000.0, 2637000.0, 2641000.0, 2645000.0, 2649000.0, 2653000.0, 2657000.0,
    2785             :              2661000.0, 2665000.0, 2669000.0, 2673000.0, 2677000.0, 2681000.0, 2683000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0,
    2786             :              2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0,
    2787             :              2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0, 2739000.0,
    2788             :              2741000.0, 2743000.0, 2747000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0, 2777000.0, 2781000.0,
    2789             :              2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0, 2828000.0,
    2790             :              2832000.0, 2836000.0, 2840000.0, 2849000.0, 2859000.0, 2869000.0, 2879000.0, 2888000.0, 2898000.0, 2908000.0, 2918000.0, 2927000.0,
    2791             :              2937000.0, 2957000.0, 2977000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3137000.0, 3157000.0,
    2792             :              3177000.0, 3197000.0, 3218000.0, 3280000.0, 3384000.0, 3489000.0},
    2793             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2794             :              0.0,       0.0,       0.0,       0.0,       0.0,       2633000.0, 2637000.0, 2641000.0, 2645000.0, 2649000.0, 2653000.0, 2657000.0,
    2795             :              2661000.0, 2665000.0, 2668000.0, 2672000.0, 2676000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0,
    2796             :              2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0,
    2797             :              2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0, 2738000.0,
    2798             :              2740000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2773000.0, 2777000.0, 2781000.0,
    2799             :              2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0, 2828000.0,
    2800             :              2832000.0, 2835000.0, 2839000.0, 2849000.0, 2859000.0, 2869000.0, 2878000.0, 2888000.0, 2898000.0, 2908000.0, 2918000.0, 2927000.0,
    2801             :              2937000.0, 2957000.0, 2977000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3157000.0,
    2802             :              3177000.0, 3197000.0, 3218000.0, 3280000.0, 3384000.0, 3489000.0},
    2803             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2804             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2636000.0, 2640000.0, 2644000.0, 2648000.0, 2652000.0, 2656000.0,
    2805             :              2660000.0, 2664000.0, 2668000.0, 2672000.0, 2676000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0, 2691000.0,
    2806             :              2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0,
    2807             :              2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0,
    2808             :              2740000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2765000.0, 2769000.0, 2773000.0, 2777000.0, 2781000.0,
    2809             :              2785000.0, 2789000.0, 2793000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0, 2828000.0,
    2810             :              2831000.0, 2835000.0, 2839000.0, 2849000.0, 2859000.0, 2868000.0, 2878000.0, 2888000.0, 2898000.0, 2908000.0, 2917000.0, 2927000.0,
    2811             :              2937000.0, 2957000.0, 2976000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3157000.0,
    2812             :              3177000.0, 3197000.0, 3218000.0, 3280000.0, 3384000.0, 3489000.0},
    2813             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2814             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2640000.0, 2644000.0, 2648000.0, 2652000.0, 2656000.0,
    2815             :              2660000.0, 2664000.0, 2667000.0, 2671000.0, 2675000.0, 2679000.0, 2681000.0, 2683000.0, 2685000.0, 2687000.0, 2689000.0, 2691000.0,
    2816             :              2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0,
    2817             :              2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0,
    2818             :              2740000.0, 2742000.0, 2746000.0, 2750000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0, 2777000.0, 2781000.0,
    2819             :              2785000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2823000.0, 2827000.0,
    2820             :              2831000.0, 2835000.0, 2839000.0, 2849000.0, 2859000.0, 2868000.0, 2878000.0, 2888000.0, 2898000.0, 2907000.0, 2917000.0, 2927000.0,
    2821             :              2937000.0, 2957000.0, 2976000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3157000.0,
    2822             :              3177000.0, 3197000.0, 3218000.0, 3280000.0, 3384000.0, 3489000.0},
    2823             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2824             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2643000.0, 2647000.0, 2651000.0, 2655000.0,
    2825             :              2659000.0, 2663000.0, 2667000.0, 2671000.0, 2675000.0, 2679000.0, 2681000.0, 2683000.0, 2685000.0, 2687000.0, 2689000.0, 2691000.0,
    2826             :              2693000.0, 2695000.0, 2697000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0,
    2827             :              2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0, 2738000.0,
    2828             :              2740000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0, 2777000.0, 2780000.0,
    2829             :              2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2815000.0, 2819000.0, 2823000.0, 2827000.0,
    2830             :              2831000.0, 2835000.0, 2839000.0, 2849000.0, 2858000.0, 2868000.0, 2878000.0, 2888000.0, 2897000.0, 2907000.0, 2917000.0, 2927000.0,
    2831             :              2937000.0, 2956000.0, 2976000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3157000.0,
    2832             :              3177000.0, 3197000.0, 3218000.0, 3280000.0, 3384000.0, 3489000.0},
    2833             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2834             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2646000.0, 2650000.0, 2654000.0,
    2835             :              2658000.0, 2662000.0, 2666000.0, 2670000.0, 2674000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0,
    2836             :              2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0,
    2837             :              2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0,
    2838             :              2739000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0,
    2839             :              2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2823000.0, 2827000.0,
    2840             :              2831000.0, 2835000.0, 2839000.0, 2848000.0, 2858000.0, 2868000.0, 2878000.0, 2887000.0, 2897000.0, 2907000.0, 2917000.0, 2927000.0,
    2841             :              2937000.0, 2956000.0, 2976000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3156000.0,
    2842             :              3177000.0, 3197000.0, 3218000.0, 3280000.0, 3383000.0, 3489000.0},
    2843             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2844             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2650000.0, 2654000.0,
    2845             :              2658000.0, 2662000.0, 2666000.0, 2670000.0, 2674000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0, 2690000.0,
    2846             :              2692000.0, 2694000.0, 2696000.0, 2698000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0,
    2847             :              2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0, 2737000.0,
    2848             :              2739000.0, 2741000.0, 2745000.0, 2749000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2780000.0,
    2849             :              2784000.0, 2788000.0, 2792000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2823000.0, 2827000.0,
    2850             :              2831000.0, 2834000.0, 2838000.0, 2848000.0, 2858000.0, 2868000.0, 2878000.0, 2887000.0, 2897000.0, 2907000.0, 2917000.0, 2927000.0,
    2851             :              2936000.0, 2956000.0, 2976000.0, 2996000.0, 3016000.0, 3036000.0, 3056000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3156000.0,
    2852             :              3177000.0, 3197000.0, 3218000.0, 3280000.0, 3383000.0, 3489000.0},
    2853             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2854             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2653000.0,
    2855             :              2657000.0, 2661000.0, 2665000.0, 2669000.0, 2673000.0, 2677000.0, 2679000.0, 2681000.0, 2683000.0, 2685000.0, 2687000.0, 2689000.0,
    2856             :              2691000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0,
    2857             :              2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2732000.0, 2734000.0, 2736000.0,
    2858             :              2738000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0, 2779000.0,
    2859             :              2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2822000.0, 2826000.0,
    2860             :              2830000.0, 2834000.0, 2838000.0, 2848000.0, 2858000.0, 2867000.0, 2877000.0, 2887000.0, 2897000.0, 2907000.0, 2917000.0, 2926000.0,
    2861             :              2936000.0, 2956000.0, 2976000.0, 2996000.0, 3016000.0, 3035000.0, 3055000.0, 3076000.0, 3096000.0, 3116000.0, 3136000.0, 3156000.0,
    2862             :              3177000.0, 3197000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
    2863             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2864             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2865             :              2656000.0, 2660000.0, 2664000.0, 2668000.0, 2672000.0, 2676000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0,
    2866             :              2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0,
    2867             :              2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2736000.0,
    2868             :              2738000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0, 2779000.0,
    2869             :              2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0,
    2870             :              2830000.0, 2834000.0, 2838000.0, 2848000.0, 2857000.0, 2867000.0, 2877000.0, 2887000.0, 2897000.0, 2907000.0, 2916000.0, 2926000.0,
    2871             :              2936000.0, 2956000.0, 2976000.0, 2996000.0, 3015000.0, 3035000.0, 3055000.0, 3075000.0, 3095000.0, 3116000.0, 3136000.0, 3156000.0,
    2872             :              3176000.0, 3197000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
    2873             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2874             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2875             :              0.0,       2660000.0, 2664000.0, 2668000.0, 2672000.0, 2676000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0, 2688000.0,
    2876             :              2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0,
    2877             :              2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0, 2735000.0,
    2878             :              2737000.0, 2739000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0, 2779000.0,
    2879             :              2783000.0, 2787000.0, 2791000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0,
    2880             :              2830000.0, 2834000.0, 2838000.0, 2847000.0, 2857000.0, 2867000.0, 2877000.0, 2887000.0, 2896000.0, 2906000.0, 2916000.0, 2926000.0,
    2881             :              2936000.0, 2956000.0, 2975000.0, 2995000.0, 3015000.0, 3035000.0, 3055000.0, 3075000.0, 3095000.0, 3116000.0, 3136000.0, 3156000.0,
    2882             :              3176000.0, 3197000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
    2883             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2884             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2885             :              0.0,       0.0,       2663000.0, 2667000.0, 2671000.0, 2675000.0, 2677000.0, 2679000.0, 2681000.0, 2683000.0, 2685000.0, 2687000.0,
    2886             :              2689000.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0,
    2887             :              2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0, 2735000.0,
    2888             :              2737000.0, 2739000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0, 2774000.0, 2778000.0,
    2889             :              2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0, 2826000.0,
    2890             :              2829000.0, 2833000.0, 2837000.0, 2847000.0, 2857000.0, 2867000.0, 2877000.0, 2886000.0, 2896000.0, 2906000.0, 2916000.0, 2926000.0,
    2891             :              2936000.0, 2955000.0, 2975000.0, 2995000.0, 3015000.0, 3035000.0, 3055000.0, 3075000.0, 3095000.0, 3115000.0, 3136000.0, 3156000.0,
    2892             :              3176000.0, 3197000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
    2893             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2894             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2895             :              0.0,       0.0,       0.0,       2666000.0, 2670000.0, 2674000.0, 2676000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0, 2686000.0,
    2896             :              2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0,
    2897             :              2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0,
    2898             :              2736000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0, 2778000.0,
    2899             :              2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0, 2825000.0,
    2900             :              2829000.0, 2833000.0, 2837000.0, 2847000.0, 2857000.0, 2866000.0, 2876000.0, 2886000.0, 2896000.0, 2906000.0, 2916000.0, 2926000.0,
    2901             :              2935000.0, 2955000.0, 2975000.0, 2995000.0, 3015000.0, 3035000.0, 3055000.0, 3075000.0, 3095000.0, 3115000.0, 3136000.0, 3156000.0,
    2902             :              3176000.0, 3197000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
    2903             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2904             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2905             :              0.0,       0.0,       0.0,       0.0,       2669000.0, 2673000.0, 2675000.0, 2677000.0, 2679000.0, 2682000.0, 2684000.0, 2686000.0,
    2906             :              2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0,
    2907             :              2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0, 2734000.0,
    2908             :              2736000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0, 2777000.0,
    2909             :              2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0, 2825000.0,
    2910             :              2829000.0, 2833000.0, 2837000.0, 2846000.0, 2856000.0, 2866000.0, 2876000.0, 2886000.0, 2896000.0, 2906000.0, 2915000.0, 2925000.0,
    2911             :              2935000.0, 2955000.0, 2975000.0, 2995000.0, 3015000.0, 3035000.0, 3055000.0, 3075000.0, 3095000.0, 3115000.0, 3135000.0, 3156000.0,
    2912             :              3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
    2913             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2914             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2915             :              0.0,       0.0,       0.0,       0.0,       0.0,       2672000.0, 2674000.0, 2677000.0, 2679000.0, 2681000.0, 2683000.0, 2685000.0,
    2916             :              2687000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0,
    2917             :              2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0,
    2918             :              2735000.0, 2737000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0, 2777000.0,
    2919             :              2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2820000.0, 2824000.0,
    2920             :              2828000.0, 2832000.0, 2836000.0, 2846000.0, 2856000.0, 2866000.0, 2876000.0, 2886000.0, 2895000.0, 2905000.0, 2915000.0, 2925000.0,
    2921             :              2935000.0, 2955000.0, 2975000.0, 2995000.0, 3015000.0, 3035000.0, 3055000.0, 3075000.0, 3095000.0, 3115000.0, 3135000.0, 3156000.0,
    2922             :              3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
    2923             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2924             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2925             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2674000.0, 2676000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0,
    2926             :              2686000.0, 2688000.0, 2690000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0, 2709000.0,
    2927             :              2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0,
    2928             :              2735000.0, 2737000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0, 2777000.0,
    2929             :              2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0,
    2930             :              2828000.0, 2832000.0, 2836000.0, 2846000.0, 2856000.0, 2866000.0, 2876000.0, 2885000.0, 2895000.0, 2905000.0, 2915000.0, 2925000.0,
    2931             :              2935000.0, 2955000.0, 2975000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3075000.0, 3095000.0, 3115000.0, 3135000.0, 3156000.0,
    2932             :              3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
    2933             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2934             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2935             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2676000.0, 2678000.0, 2680000.0, 2682000.0, 2684000.0,
    2936             :              2686000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0,
    2937             :              2710000.0, 2712000.0, 2714000.0, 2716000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0, 2733000.0,
    2938             :              2735000.0, 2737000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0, 2776000.0,
    2939             :              2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0,
    2940             :              2828000.0, 2832000.0, 2836000.0, 2846000.0, 2856000.0, 2866000.0, 2875000.0, 2885000.0, 2895000.0, 2905000.0, 2915000.0, 2925000.0,
    2941             :              2935000.0, 2955000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3095000.0, 3115000.0, 3135000.0, 3155000.0,
    2942             :              3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
    2943             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2944             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2945             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2677000.0, 2679000.0, 2681000.0, 2683000.0,
    2946             :              2685000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0, 2708000.0,
    2947             :              2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0,
    2948             :              2734000.0, 2736000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0,
    2949             :              2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0,
    2950             :              2828000.0, 2832000.0, 2836000.0, 2846000.0, 2855000.0, 2865000.0, 2875000.0, 2885000.0, 2895000.0, 2905000.0, 2915000.0, 2925000.0,
    2951             :              2935000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3095000.0, 3115000.0, 3135000.0, 3155000.0,
    2952             :              3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
    2953             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2954             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2955             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2679000.0, 2681000.0, 2683000.0,
    2956             :              2685000.0, 2687000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2706000.0, 2708000.0,
    2957             :              2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0, 2732000.0,
    2958             :              2734000.0, 2736000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0,
    2959             :              2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0, 2824000.0,
    2960             :              2828000.0, 2832000.0, 2835000.0, 2845000.0, 2855000.0, 2865000.0, 2875000.0, 2885000.0, 2895000.0, 2905000.0, 2915000.0, 2925000.0,
    2961             :              2934000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3094000.0, 3115000.0, 3135000.0, 3155000.0,
    2962             :              3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
    2963             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2964             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2965             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2680000.0, 2682000.0,
    2966             :              2684000.0, 2687000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0,
    2967             :              2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2730000.0, 2732000.0,
    2968             :              2734000.0, 2736000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0, 2776000.0,
    2969             :              2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2823000.0,
    2970             :              2827000.0, 2831000.0, 2835000.0, 2845000.0, 2855000.0, 2865000.0, 2875000.0, 2885000.0, 2895000.0, 2905000.0, 2914000.0, 2924000.0,
    2971             :              2934000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3094000.0, 3115000.0, 3135000.0, 3155000.0,
    2972             :              3176000.0, 3196000.0, 3217000.0, 3280000.0, 3383000.0, 3489000.0},
    2973             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2974             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2975             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2682000.0,
    2976             :              2684000.0, 2686000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2701000.0, 2703000.0, 2705000.0, 2707000.0,
    2977             :              2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0,
    2978             :              2733000.0, 2735000.0, 2739000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0,
    2979             :              2779000.0, 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2823000.0,
    2980             :              2827000.0, 2831000.0, 2835000.0, 2845000.0, 2855000.0, 2865000.0, 2875000.0, 2885000.0, 2894000.0, 2904000.0, 2914000.0, 2924000.0,
    2981             :              2934000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3094000.0, 3115000.0, 3135000.0, 3155000.0,
    2982             :              3176000.0, 3196000.0, 3216000.0, 3280000.0, 3383000.0, 3489000.0},
    2983             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2984             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2985             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2986             :              2683000.0, 2685000.0, 2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0,
    2987             :              2708000.0, 2710000.0, 2712000.0, 2714000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0, 2731000.0,
    2988             :              2733000.0, 2735000.0, 2739000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0,
    2989             :              2779000.0, 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2823000.0,
    2990             :              2827000.0, 2831000.0, 2835000.0, 2845000.0, 2855000.0, 2865000.0, 2874000.0, 2884000.0, 2894000.0, 2904000.0, 2914000.0, 2924000.0,
    2991             :              2934000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3094000.0, 3114000.0, 3135000.0, 3155000.0,
    2992             :              3175000.0, 3196000.0, 3216000.0, 3280000.0, 3383000.0, 3489000.0},
    2993             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2994             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2995             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    2996             :              0.0,       2685000.0, 2687000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2700000.0, 2702000.0, 2704000.0, 2706000.0,
    2997             :              2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0,
    2998             :              2732000.0, 2734000.0, 2738000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0, 2775000.0,
    2999             :              2779000.0, 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0, 2823000.0,
    3000             :              2827000.0, 2831000.0, 2835000.0, 2844000.0, 2854000.0, 2864000.0, 2874000.0, 2884000.0, 2894000.0, 2904000.0, 2914000.0, 2924000.0,
    3001             :              2934000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3094000.0, 3114000.0, 3135000.0, 3155000.0,
    3002             :              3175000.0, 3196000.0, 3216000.0, 3280000.0, 3383000.0, 3488000.0},
    3003             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3004             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3005             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3006             :              0.0,       0.0,       2686000.0, 2689000.0, 2691000.0, 2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0,
    3007             :              2707000.0, 2709000.0, 2711000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0, 2730000.0,
    3008             :              2732000.0, 2734000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0,
    3009             :              2778000.0, 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0,
    3010             :              2826000.0, 2830000.0, 2834000.0, 2844000.0, 2854000.0, 2864000.0, 2874000.0, 2884000.0, 2894000.0, 2904000.0, 2914000.0, 2924000.0,
    3011             :              2934000.0, 2954000.0, 2974000.0, 2994000.0, 3014000.0, 3034000.0, 3054000.0, 3074000.0, 3094000.0, 3114000.0, 3135000.0, 3155000.0,
    3012             :              3175000.0, 3196000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
    3013             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3014             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3015             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3016             :              0.0,       0.0,       0.0,       2688000.0, 2690000.0, 2692000.0, 2694000.0, 2696000.0, 2699000.0, 2701000.0, 2703000.0, 2705000.0,
    3017             :              2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2730000.0,
    3018             :              2732000.0, 2734000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0,
    3019             :              2778000.0, 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0,
    3020             :              2826000.0, 2830000.0, 2834000.0, 2844000.0, 2854000.0, 2864000.0, 2874000.0, 2884000.0, 2894000.0, 2904000.0, 2914000.0, 2924000.0,
    3021             :              2934000.0, 2953000.0, 2973000.0, 2993000.0, 3013000.0, 3033000.0, 3054000.0, 3074000.0, 3094000.0, 3114000.0, 3134000.0, 3155000.0,
    3022             :              3175000.0, 3196000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
    3023             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3024             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3025             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3026             :              0.0,       0.0,       0.0,       0.0,       2690000.0, 2692000.0, 2694000.0, 2696000.0, 2698000.0, 2700000.0, 2702000.0, 2704000.0,
    3027             :              2706000.0, 2708000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0, 2729000.0,
    3028             :              2731000.0, 2733000.0, 2737000.0, 2741000.0, 2745000.0, 2749000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0, 2774000.0,
    3029             :              2778000.0, 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0,
    3030             :              2826000.0, 2830000.0, 2834000.0, 2844000.0, 2854000.0, 2864000.0, 2874000.0, 2884000.0, 2894000.0, 2903000.0, 2913000.0, 2923000.0,
    3031             :              2933000.0, 2953000.0, 2973000.0, 2993000.0, 3013000.0, 3033000.0, 3053000.0, 3074000.0, 3094000.0, 3114000.0, 3134000.0, 3155000.0,
    3032             :              3175000.0, 3196000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
    3033             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3034             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3035             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3036             :              0.0,       0.0,       0.0,       0.0,       0.0,       2691000.0, 2693000.0, 2695000.0, 2697000.0, 2700000.0, 2702000.0, 2704000.0,
    3037             :              2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2727000.0, 2729000.0,
    3038             :              2731000.0, 2733000.0, 2737000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0,
    3039             :              2777000.0, 2781000.0, 2785000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0, 2822000.0,
    3040             :              2826000.0, 2830000.0, 2834000.0, 2844000.0, 2853000.0, 2863000.0, 2873000.0, 2883000.0, 2893000.0, 2903000.0, 2913000.0, 2923000.0,
    3041             :              2933000.0, 2953000.0, 2973000.0, 2993000.0, 3013000.0, 3033000.0, 3053000.0, 3073000.0, 3094000.0, 3114000.0, 3134000.0, 3155000.0,
    3042             :              3175000.0, 3195000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
    3043             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3044             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3045             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3046             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2693000.0, 2695000.0, 2697000.0, 2699000.0, 2701000.0, 2703000.0,
    3047             :              2705000.0, 2707000.0, 2709000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0, 2728000.0,
    3048             :              2730000.0, 2732000.0, 2736000.0, 2740000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0, 2773000.0,
    3049             :              2777000.0, 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0,
    3050             :              2825000.0, 2829000.0, 2833000.0, 2843000.0, 2853000.0, 2863000.0, 2873000.0, 2883000.0, 2893000.0, 2903000.0, 2913000.0, 2923000.0,
    3051             :              2933000.0, 2953000.0, 2973000.0, 2993000.0, 3013000.0, 3033000.0, 3053000.0, 3073000.0, 3094000.0, 3114000.0, 3134000.0, 3154000.0,
    3052             :              3175000.0, 3195000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
    3053             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3054             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3055             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3056             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2694000.0, 2696000.0, 2698000.0, 2700000.0, 2703000.0,
    3057             :              2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2724000.0, 2726000.0, 2728000.0,
    3058             :              2730000.0, 2732000.0, 2736000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2765000.0, 2769000.0, 2773000.0,
    3059             :              2777000.0, 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0,
    3060             :              2825000.0, 2829000.0, 2833000.0, 2843000.0, 2853000.0, 2863000.0, 2873000.0, 2883000.0, 2893000.0, 2903000.0, 2913000.0, 2923000.0,
    3061             :              2933000.0, 2953000.0, 2973000.0, 2993000.0, 3013000.0, 3033000.0, 3053000.0, 3073000.0, 3093000.0, 3114000.0, 3134000.0, 3154000.0,
    3062             :              3175000.0, 3195000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
    3063             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3064             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3065             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3066             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2696000.0, 2698000.0, 2700000.0, 2702000.0,
    3067             :              2704000.0, 2706000.0, 2708000.0, 2710000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0, 2727000.0,
    3068             :              2729000.0, 2731000.0, 2735000.0, 2740000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0,
    3069             :              2776000.0, 2780000.0, 2784000.0, 2788000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0, 2821000.0,
    3070             :              2825000.0, 2829000.0, 2833000.0, 2843000.0, 2853000.0, 2863000.0, 2873000.0, 2883000.0, 2893000.0, 2903000.0, 2913000.0, 2923000.0,
    3071             :              2933000.0, 2953000.0, 2973000.0, 2993000.0, 3013000.0, 3033000.0, 3053000.0, 3073000.0, 3093000.0, 3114000.0, 3134000.0, 3154000.0,
    3072             :              3175000.0, 3195000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
    3073             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3074             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3075             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3076             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2697000.0, 2699000.0, 2701000.0,
    3077             :              2703000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2725000.0, 2727000.0,
    3078             :              2729000.0, 2731000.0, 2735000.0, 2739000.0, 2743000.0, 2747000.0, 2751000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0, 2772000.0,
    3079             :              2776000.0, 2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0,
    3080             :              2824000.0, 2828000.0, 2832000.0, 2842000.0, 2852000.0, 2862000.0, 2872000.0, 2882000.0, 2892000.0, 2902000.0, 2912000.0, 2922000.0,
    3081             :              2932000.0, 2952000.0, 2972000.0, 2992000.0, 3013000.0, 3033000.0, 3053000.0, 3073000.0, 3093000.0, 3113000.0, 3134000.0, 3154000.0,
    3082             :              3175000.0, 3195000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
    3083             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3084             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3085             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3086             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2699000.0, 2701000.0,
    3087             :              2703000.0, 2705000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0, 2726000.0,
    3088             :              2728000.0, 2730000.0, 2734000.0, 2739000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0,
    3089             :              2776000.0, 2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0,
    3090             :              2824000.0, 2828000.0, 2832000.0, 2842000.0, 2852000.0, 2862000.0, 2872000.0, 2882000.0, 2892000.0, 2902000.0, 2912000.0, 2922000.0,
    3091             :              2932000.0, 2952000.0, 2972000.0, 2992000.0, 3012000.0, 3032000.0, 3053000.0, 3073000.0, 3093000.0, 3113000.0, 3134000.0, 3154000.0,
    3092             :              3174000.0, 3195000.0, 3216000.0, 3280000.0, 3382000.0, 3488000.0},
    3093             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3094             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3095             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3096             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2700000.0,
    3097             :              2702000.0, 2704000.0, 2706000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2726000.0,
    3098             :              2728000.0, 2730000.0, 2734000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0, 2771000.0,
    3099             :              2775000.0, 2779000.0, 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0, 2820000.0,
    3100             :              2824000.0, 2828000.0, 2832000.0, 2842000.0, 2852000.0, 2862000.0, 2872000.0, 2882000.0, 2892000.0, 2902000.0, 2912000.0, 2922000.0,
    3101             :              2932000.0, 2952000.0, 2972000.0, 2992000.0, 3012000.0, 3032000.0, 3052000.0, 3073000.0, 3093000.0, 3113000.0, 3134000.0, 3154000.0,
    3102             :              3174000.0, 3195000.0, 3215000.0, 3280000.0, 3382000.0, 3488000.0},
    3103             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3104             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3105             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3106             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3107             :              2702000.0, 2704000.0, 2706000.0, 2708000.0, 2710000.0, 2712000.0, 2714000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0, 2725000.0,
    3108             :              2727000.0, 2729000.0, 2733000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2771000.0,
    3109             :              2775000.0, 2779000.0, 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0,
    3110             :              2823000.0, 2827000.0, 2831000.0, 2842000.0, 2852000.0, 2862000.0, 2872000.0, 2882000.0, 2892000.0, 2902000.0, 2912000.0, 2922000.0,
    3111             :              2932000.0, 2952000.0, 2972000.0, 2992000.0, 3012000.0, 3032000.0, 3052000.0, 3073000.0, 3093000.0, 3113000.0, 3133000.0, 3154000.0,
    3112             :              3174000.0, 3195000.0, 3215000.0, 3280000.0, 3382000.0, 3488000.0},
    3113             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3114             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3115             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3116             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3117             :              0.0,       2703000.0, 2705000.0, 2707000.0, 2709000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0, 2724000.0,
    3118             :              2726000.0, 2729000.0, 2733000.0, 2737000.0, 2741000.0, 2745000.0, 2749000.0, 2754000.0, 2758000.0, 2762000.0, 2766000.0, 2770000.0,
    3119             :              2774000.0, 2778000.0, 2782000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0, 2819000.0,
    3120             :              2823000.0, 2827000.0, 2831000.0, 2841000.0, 2851000.0, 2861000.0, 2871000.0, 2881000.0, 2891000.0, 2901000.0, 2911000.0, 2922000.0,
    3121             :              2932000.0, 2952000.0, 2972000.0, 2992000.0, 3012000.0, 3032000.0, 3052000.0, 3072000.0, 3093000.0, 3113000.0, 3133000.0, 3154000.0,
    3122             :              3174000.0, 3195000.0, 3215000.0, 3280000.0, 3382000.0, 3488000.0},
    3123             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3124             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3125             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3126             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3127             :              0.0,       0.0,       2704000.0, 2707000.0, 2709000.0, 2711000.0, 2713000.0, 2715000.0, 2717000.0, 2720000.0, 2722000.0, 2724000.0,
    3128             :              2726000.0, 2728000.0, 2732000.0, 2736000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2757000.0, 2761000.0, 2766000.0, 2770000.0,
    3129             :              2774000.0, 2778000.0, 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2811000.0, 2815000.0, 2819000.0,
    3130             :              2823000.0, 2827000.0, 2831000.0, 2841000.0, 2851000.0, 2861000.0, 2871000.0, 2881000.0, 2891000.0, 2901000.0, 2911000.0, 2921000.0,
    3131             :              2931000.0, 2951000.0, 2971000.0, 2992000.0, 3012000.0, 3032000.0, 3052000.0, 3072000.0, 3093000.0, 3113000.0, 3133000.0, 3154000.0,
    3132             :              3174000.0, 3195000.0, 3215000.0, 3280000.0, 3382000.0, 3488000.0},
    3133             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3134             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3135             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3136             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3137             :              0.0,       0.0,       0.0,       2706000.0, 2708000.0, 2710000.0, 2712000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0, 2723000.0,
    3138             :              2725000.0, 2727000.0, 2732000.0, 2736000.0, 2740000.0, 2744000.0, 2748000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0, 2769000.0,
    3139             :              2773000.0, 2777000.0, 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0,
    3140             :              2822000.0, 2826000.0, 2830000.0, 2841000.0, 2851000.0, 2861000.0, 2871000.0, 2881000.0, 2891000.0, 2901000.0, 2911000.0, 2921000.0,
    3141             :              2931000.0, 2951000.0, 2971000.0, 2991000.0, 3012000.0, 3032000.0, 3052000.0, 3072000.0, 3092000.0, 3113000.0, 3133000.0, 3153000.0,
    3142             :              3174000.0, 3194000.0, 3215000.0, 3280000.0, 3382000.0, 3488000.0},
    3143             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3144             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3145             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3146             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3147             :              0.0,       0.0,       0.0,       0.0,       2707000.0, 2710000.0, 2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0, 2722000.0,
    3148             :              2725000.0, 2727000.0, 2731000.0, 2735000.0, 2739000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2760000.0, 2765000.0, 2769000.0,
    3149             :              2773000.0, 2777000.0, 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0, 2818000.0,
    3150             :              2822000.0, 2826000.0, 2830000.0, 2840000.0, 2850000.0, 2860000.0, 2870000.0, 2881000.0, 2891000.0, 2901000.0, 2911000.0, 2921000.0,
    3151             :              2931000.0, 2951000.0, 2971000.0, 2991000.0, 3011000.0, 3031000.0, 3052000.0, 3072000.0, 3092000.0, 3113000.0, 3133000.0, 3153000.0,
    3152             :              3174000.0, 3194000.0, 3215000.0, 3280000.0, 3382000.0, 3488000.0},
    3153             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3154             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3155             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3156             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3157             :              0.0,       0.0,       0.0,       0.0,       0.0,       2709000.0, 2711000.0, 2713000.0, 2715000.0, 2718000.0, 2720000.0, 2722000.0,
    3158             :              2724000.0, 2726000.0, 2730000.0, 2735000.0, 2739000.0, 2743000.0, 2747000.0, 2752000.0, 2756000.0, 2760000.0, 2764000.0, 2768000.0,
    3159             :              2772000.0, 2776000.0, 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2818000.0,
    3160             :              2822000.0, 2826000.0, 2830000.0, 2840000.0, 2850000.0, 2860000.0, 2870000.0, 2880000.0, 2890000.0, 2900000.0, 2910000.0, 2921000.0,
    3161             :              2931000.0, 2951000.0, 2971000.0, 2991000.0, 3011000.0, 3031000.0, 3052000.0, 3072000.0, 3092000.0, 3112000.0, 3133000.0, 3153000.0,
    3162             :              3174000.0, 3194000.0, 3215000.0, 3280000.0, 3381000.0, 3488000.0},
    3163             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3164             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3165             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3166             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3167             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2710000.0, 2712000.0, 2715000.0, 2717000.0, 2719000.0, 2721000.0,
    3168             :              2723000.0, 2725000.0, 2730000.0, 2734000.0, 2738000.0, 2743000.0, 2747000.0, 2751000.0, 2755000.0, 2759000.0, 2764000.0, 2768000.0,
    3169             :              2772000.0, 2776000.0, 2780000.0, 2784000.0, 2788000.0, 2793000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0, 2813000.0, 2817000.0,
    3170             :              2821000.0, 2825000.0, 2829000.0, 2839000.0, 2850000.0, 2860000.0, 2870000.0, 2880000.0, 2890000.0, 2900000.0, 2910000.0, 2920000.0,
    3171             :              2930000.0, 2950000.0, 2971000.0, 2991000.0, 3011000.0, 3031000.0, 3051000.0, 3072000.0, 3092000.0, 3112000.0, 3133000.0, 3153000.0,
    3172             :              3174000.0, 3194000.0, 3215000.0, 3280000.0, 3381000.0, 3487000.0},
    3173             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3174             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3175             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3176             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3177             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2712000.0, 2714000.0, 2716000.0, 2718000.0, 2720000.0,
    3178             :              2723000.0, 2725000.0, 2729000.0, 2733000.0, 2738000.0, 2742000.0, 2746000.0, 2750000.0, 2755000.0, 2759000.0, 2763000.0, 2767000.0,
    3179             :              2771000.0, 2775000.0, 2780000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2813000.0, 2817000.0,
    3180             :              2821000.0, 2825000.0, 2829000.0, 2839000.0, 2849000.0, 2859000.0, 2870000.0, 2880000.0, 2890000.0, 2900000.0, 2910000.0, 2920000.0,
    3181             :              2930000.0, 2950000.0, 2970000.0, 2991000.0, 3011000.0, 3031000.0, 3051000.0, 3071000.0, 3092000.0, 3112000.0, 3132000.0, 3153000.0,
    3182             :              3173000.0, 3194000.0, 3215000.0, 3280000.0, 3381000.0, 3487000.0},
    3183             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3184             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3185             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3186             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3187             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2713000.0, 2715000.0, 2717000.0, 2720000.0,
    3188             :              2722000.0, 2724000.0, 2728000.0, 2733000.0, 2737000.0, 2741000.0, 2746000.0, 2750000.0, 2754000.0, 2758000.0, 2762000.0, 2767000.0,
    3189             :              2771000.0, 2775000.0, 2779000.0, 2783000.0, 2787000.0, 2792000.0, 2796000.0, 2800000.0, 2804000.0, 2808000.0, 2812000.0, 2816000.0,
    3190             :              2820000.0, 2824000.0, 2829000.0, 2839000.0, 2849000.0, 2859000.0, 2869000.0, 2879000.0, 2889000.0, 2900000.0, 2910000.0, 2920000.0,
    3191             :              2930000.0, 2950000.0, 2970000.0, 2990000.0, 3011000.0, 3031000.0, 3051000.0, 3071000.0, 3092000.0, 3112000.0, 3132000.0, 3153000.0,
    3192             :              3173000.0, 3194000.0, 3214000.0, 3280000.0, 3381000.0, 3487000.0},
    3193             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3194             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3195             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3196             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3197             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2715000.0, 2717000.0, 2719000.0,
    3198             :              2721000.0, 2723000.0, 2728000.0, 2732000.0, 2736000.0, 2741000.0, 2745000.0, 2749000.0, 2753000.0, 2758000.0, 2762000.0, 2766000.0,
    3199             :              2770000.0, 2774000.0, 2779000.0, 2783000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2808000.0, 2812000.0, 2816000.0,
    3200             :              2820000.0, 2824000.0, 2828000.0, 2838000.0, 2849000.0, 2859000.0, 2869000.0, 2879000.0, 2889000.0, 2899000.0, 2909000.0, 2919000.0,
    3201             :              2930000.0, 2950000.0, 2970000.0, 2990000.0, 3010000.0, 3031000.0, 3051000.0, 3071000.0, 3091000.0, 3112000.0, 3132000.0, 3153000.0,
    3202             :              3173000.0, 3194000.0, 3214000.0, 3280000.0, 3381000.0, 3487000.0},
    3203             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3204             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3205             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3206             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3207             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2716000.0, 2718000.0,
    3208             :              2720000.0, 2723000.0, 2727000.0, 2731000.0, 2736000.0, 2740000.0, 2744000.0, 2748000.0, 2753000.0, 2757000.0, 2761000.0, 2765000.0,
    3209             :              2770000.0, 2774000.0, 2778000.0, 2782000.0, 2786000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2807000.0, 2811000.0, 2815000.0,
    3210             :              2819000.0, 2824000.0, 2828000.0, 2838000.0, 2848000.0, 2858000.0, 2868000.0, 2879000.0, 2889000.0, 2899000.0, 2909000.0, 2919000.0,
    3211             :              2929000.0, 2949000.0, 2970000.0, 2990000.0, 3010000.0, 3030000.0, 3051000.0, 3071000.0, 3091000.0, 3112000.0, 3132000.0, 3152000.0,
    3212             :              3173000.0, 3194000.0, 3214000.0, 3280000.0, 3381000.0, 3487000.0},
    3213             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3214             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3215             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3216             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3217             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2717000.0,
    3218             :              2720000.0, 2722000.0, 2726000.0, 2731000.0, 2735000.0, 2739000.0, 2744000.0, 2748000.0, 2752000.0, 2756000.0, 2761000.0, 2765000.0,
    3219             :              2769000.0, 2773000.0, 2777000.0, 2782000.0, 2786000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2807000.0, 2811000.0, 2815000.0,
    3220             :              2819000.0, 2823000.0, 2827000.0, 2837000.0, 2848000.0, 2858000.0, 2868000.0, 2878000.0, 2888000.0, 2899000.0, 2909000.0, 2919000.0,
    3221             :              2929000.0, 2949000.0, 2969000.0, 2990000.0, 3010000.0, 3030000.0, 3050000.0, 3071000.0, 3091000.0, 3111000.0, 3132000.0, 3152000.0,
    3222             :              3173000.0, 3193000.0, 3214000.0, 3280000.0, 3381000.0, 3487000.0},
    3223             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3224             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3225             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3226             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3227             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3228             :              2719000.0, 2721000.0, 2725000.0, 2730000.0, 2734000.0, 2738000.0, 2743000.0, 2747000.0, 2751000.0, 2756000.0, 2760000.0, 2764000.0,
    3229             :              2768000.0, 2773000.0, 2777000.0, 2781000.0, 2785000.0, 2789000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2810000.0, 2814000.0,
    3230             :              2819000.0, 2823000.0, 2827000.0, 2837000.0, 2847000.0, 2858000.0, 2868000.0, 2878000.0, 2888000.0, 2898000.0, 2908000.0, 2919000.0,
    3231             :              2929000.0, 2949000.0, 2969000.0, 2989000.0, 3010000.0, 3030000.0, 3050000.0, 3071000.0, 3091000.0, 3111000.0, 3132000.0, 3152000.0,
    3232             :              3173000.0, 3193000.0, 3214000.0, 3280000.0, 3381000.0, 3487000.0},
    3233             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3234             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3235             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3236             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3237             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3238             :              0.0,       2720000.0, 2725000.0, 2729000.0, 2733000.0, 2738000.0, 2742000.0, 2746000.0, 2751000.0, 2755000.0, 2759000.0, 2764000.0,
    3239             :              2768000.0, 2772000.0, 2776000.0, 2781000.0, 2785000.0, 2789000.0, 2793000.0, 2797000.0, 2801000.0, 2806000.0, 2810000.0, 2814000.0,
    3240             :              2818000.0, 2822000.0, 2826000.0, 2837000.0, 2847000.0, 2857000.0, 2867000.0, 2878000.0, 2888000.0, 2898000.0, 2908000.0, 2918000.0,
    3241             :              2928000.0, 2949000.0, 2969000.0, 2989000.0, 3009000.0, 3030000.0, 3050000.0, 3070000.0, 3091000.0, 3111000.0, 3132000.0, 3152000.0,
    3242             :              3173000.0, 3193000.0, 3214000.0, 3280000.0, 3381000.0, 3487000.0},
    3243             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3244             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3245             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3246             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3247             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3248             :              0.0,       0.0,       2723000.0, 2727000.0, 2732000.0, 2736000.0, 2741000.0, 2745000.0, 2749000.0, 2754000.0, 2758000.0, 2762000.0,
    3249             :              2767000.0, 2771000.0, 2775000.0, 2779000.0, 2784000.0, 2788000.0, 2792000.0, 2796000.0, 2800000.0, 2805000.0, 2809000.0, 2813000.0,
    3250             :              2817000.0, 2821000.0, 2825000.0, 2836000.0, 2846000.0, 2856000.0, 2867000.0, 2877000.0, 2887000.0, 2897000.0, 2907000.0, 2918000.0,
    3251             :              2928000.0, 2948000.0, 2968000.0, 2989000.0, 3009000.0, 3029000.0, 3050000.0, 3070000.0, 3090000.0, 3111000.0, 3131000.0, 3152000.0,
    3252             :              3172000.0, 3193000.0, 3213000.0, 3280000.0, 3380000.0, 3487000.0},
    3253             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3254             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3255             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3256             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3257             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3258             :              0.0,       0.0,       0.0,       2726000.0, 2730000.0, 2735000.0, 2739000.0, 2743000.0, 2748000.0, 2752000.0, 2757000.0, 2761000.0,
    3259             :              2765000.0, 2769000.0, 2774000.0, 2778000.0, 2782000.0, 2787000.0, 2791000.0, 2795000.0, 2799000.0, 2803000.0, 2808000.0, 2812000.0,
    3260             :              2816000.0, 2820000.0, 2824000.0, 2835000.0, 2845000.0, 2855000.0, 2866000.0, 2876000.0, 2886000.0, 2896000.0, 2907000.0, 2917000.0,
    3261             :              2927000.0, 2947000.0, 2968000.0, 2988000.0, 3008000.0, 3029000.0, 3049000.0, 3069000.0, 3090000.0, 3110000.0, 3131000.0, 3151000.0,
    3262             :              3172000.0, 3192000.0, 3213000.0, 3280000.0, 3380000.0, 3487000.0},
    3263             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3264             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3265             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3266             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3267             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3268             :              0.0,       0.0,       0.0,       0.0,       2728000.0, 2733000.0, 2737000.0, 2742000.0, 2746000.0, 2751000.0, 2755000.0, 2759000.0,
    3269             :              2764000.0, 2768000.0, 2772000.0, 2777000.0, 2781000.0, 2785000.0, 2790000.0, 2794000.0, 2798000.0, 2802000.0, 2806000.0, 2811000.0,
    3270             :              2815000.0, 2819000.0, 2823000.0, 2834000.0, 2844000.0, 2854000.0, 2865000.0, 2875000.0, 2885000.0, 2896000.0, 2906000.0, 2916000.0,
    3271             :              2926000.0, 2947000.0, 2967000.0, 2987000.0, 3008000.0, 3028000.0, 3049000.0, 3069000.0, 3089000.0, 3110000.0, 3130000.0, 3151000.0,
    3272             :              3172000.0, 3192000.0, 3213000.0, 3280000.0, 3380000.0, 3486000.0},
    3273             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3274             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3275             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3276             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3277             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3278             :              0.0,       0.0,       0.0,       0.0,       0.0,       2731000.0, 2735000.0, 2740000.0, 2744000.0, 2749000.0, 2753000.0, 2758000.0,
    3279             :              2762000.0, 2767000.0, 2771000.0, 2775000.0, 2780000.0, 2784000.0, 2788000.0, 2792000.0, 2797000.0, 2801000.0, 2805000.0, 2809000.0,
    3280             :              2814000.0, 2818000.0, 2822000.0, 2833000.0, 2843000.0, 2853000.0, 2864000.0, 2874000.0, 2885000.0, 2895000.0, 2905000.0, 2915000.0,
    3281             :              2926000.0, 2946000.0, 2966000.0, 2987000.0, 3007000.0, 3028000.0, 3048000.0, 3069000.0, 3089000.0, 3109000.0, 3130000.0, 3151000.0,
    3282             :              3171000.0, 3192000.0, 3212000.0, 3280000.0, 3380000.0, 3486000.0},
    3283             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3284             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3285             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3286             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3287             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3288             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2733000.0, 2738000.0, 2743000.0, 2747000.0, 2752000.0, 2756000.0,
    3289             :              2761000.0, 2765000.0, 2769000.0, 2774000.0, 2778000.0, 2782000.0, 2787000.0, 2791000.0, 2795000.0, 2800000.0, 2804000.0, 2808000.0,
    3290             :              2812000.0, 2817000.0, 2821000.0, 2831000.0, 2842000.0, 2852000.0, 2863000.0, 2873000.0, 2884000.0, 2894000.0, 2904000.0, 2915000.0,
    3291             :              2925000.0, 2945000.0, 2966000.0, 2986000.0, 3007000.0, 3027000.0, 3048000.0, 3068000.0, 3089000.0, 3109000.0, 3130000.0, 3150000.0,
    3292             :              3171000.0, 3191000.0, 3212000.0, 3280000.0, 3380000.0, 3486000.0},
    3293             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3294             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3295             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3296             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3297             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3298             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2736000.0, 2741000.0, 2745000.0, 2750000.0, 2754000.0,
    3299             :              2759000.0, 2763000.0, 2768000.0, 2772000.0, 2777000.0, 2781000.0, 2785000.0, 2790000.0, 2794000.0, 2798000.0, 2803000.0, 2807000.0,
    3300             :              2811000.0, 2815000.0, 2820000.0, 2830000.0, 2841000.0, 2851000.0, 2862000.0, 2872000.0, 2883000.0, 2893000.0, 2903000.0, 2914000.0,
    3301             :              2924000.0, 2945000.0, 2965000.0, 2986000.0, 3006000.0, 3027000.0, 3047000.0, 3068000.0, 3088000.0, 3109000.0, 3129000.0, 3150000.0,
    3302             :              3170000.0, 3191000.0, 3212000.0, 3280000.0, 3379000.0, 3486000.0},
    3303             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3304             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3305             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3306             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3307             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3308             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2739000.0, 2743000.0, 2748000.0, 2752000.0,
    3309             :              2757000.0, 2761000.0, 2766000.0, 2770000.0, 2775000.0, 2779000.0, 2784000.0, 2788000.0, 2792000.0, 2797000.0, 2801000.0, 2805000.0,
    3310             :              2810000.0, 2814000.0, 2818000.0, 2829000.0, 2840000.0, 2850000.0, 2861000.0, 2871000.0, 2882000.0, 2892000.0, 2902000.0, 2913000.0,
    3311             :              2923000.0, 2944000.0, 2964000.0, 2985000.0, 3005000.0, 3026000.0, 3046000.0, 3067000.0, 3088000.0, 3108000.0, 3129000.0, 3149000.0,
    3312             :              3170000.0, 3191000.0, 3211000.0, 3280000.0, 3379000.0, 3485000.0},
    3313             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3314             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3315             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3316             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3317             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3318             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2741000.0, 2746000.0, 2750000.0,
    3319             :              2755000.0, 2760000.0, 2764000.0, 2769000.0, 2773000.0, 2778000.0, 2782000.0, 2786000.0, 2791000.0, 2795000.0, 2800000.0, 2804000.0,
    3320             :              2808000.0, 2813000.0, 2817000.0, 2828000.0, 2838000.0, 2849000.0, 2860000.0, 2870000.0, 2881000.0, 2891000.0, 2901000.0, 2912000.0,
    3321             :              2922000.0, 2943000.0, 2964000.0, 2984000.0, 3005000.0, 3025000.0, 3046000.0, 3066000.0, 3087000.0, 3108000.0, 3128000.0, 3149000.0,
    3322             :              3170000.0, 3190000.0, 3211000.0, 3280000.0, 3379000.0, 3485000.0},
    3323             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3324             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3325             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3326             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3327             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3328             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2744000.0, 2748000.0,
    3329             :              2753000.0, 2758000.0, 2762000.0, 2767000.0, 2771000.0, 2776000.0, 2780000.0, 2785000.0, 2789000.0, 2794000.0, 2798000.0, 2802000.0,
    3330             :              2807000.0, 2811000.0, 2815000.0, 2826000.0, 2837000.0, 2848000.0, 2858000.0, 2869000.0, 2879000.0, 2890000.0, 2900000.0, 2911000.0,
    3331             :              2921000.0, 2942000.0, 2963000.0, 2983000.0, 3004000.0, 3025000.0, 3045000.0, 3066000.0, 3086000.0, 3107000.0, 3128000.0, 3148000.0,
    3332             :              3169000.0, 3190000.0, 3211000.0, 3280000.0, 3378000.0, 3485000.0},
    3333             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3334             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3335             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3336             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3337             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3338             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2746000.0,
    3339             :              2751000.0, 2755000.0, 2760000.0, 2765000.0, 2769000.0, 2774000.0, 2778000.0, 2783000.0, 2787000.0, 2792000.0, 2796000.0, 2801000.0,
    3340             :              2805000.0, 2810000.0, 2814000.0, 2825000.0, 2836000.0, 2846000.0, 2857000.0, 2868000.0, 2878000.0, 2889000.0, 2899000.0, 2910000.0,
    3341             :              2920000.0, 2941000.0, 2962000.0, 2983000.0, 3003000.0, 3024000.0, 3045000.0, 3065000.0, 3086000.0, 3106000.0, 3127000.0, 3148000.0,
    3342             :              3169000.0, 3189000.0, 3210000.0, 3280000.0, 3378000.0, 3485000.0},
    3343             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3344             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3345             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3346             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3347             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3348             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3349             :              2748000.0, 2753000.0, 2758000.0, 2763000.0, 2767000.0, 2772000.0, 2776000.0, 2781000.0, 2786000.0, 2790000.0, 2795000.0, 2799000.0,
    3350             :              2803000.0, 2808000.0, 2812000.0, 2823000.0, 2834000.0, 2845000.0, 2856000.0, 2866000.0, 2877000.0, 2888000.0, 2898000.0, 2909000.0,
    3351             :              2919000.0, 2940000.0, 2961000.0, 2982000.0, 3002000.0, 3023000.0, 3044000.0, 3064000.0, 3085000.0, 3106000.0, 3127000.0, 3147000.0,
    3352             :              3168000.0, 3189000.0, 3210000.0, 3280000.0, 3378000.0, 3484000.0},
    3353             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3354             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3355             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3356             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3357             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3358             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3359             :              0.0,       2751000.0, 2755000.0, 2760000.0, 2765000.0, 2770000.0, 2774000.0, 2779000.0, 2784000.0, 2788000.0, 2793000.0, 2797000.0,
    3360             :              2802000.0, 2806000.0, 2811000.0, 2822000.0, 2833000.0, 2843000.0, 2854000.0, 2865000.0, 2876000.0, 2886000.0, 2897000.0, 2908000.0,
    3361             :              2918000.0, 2939000.0, 2960000.0, 2981000.0, 3002000.0, 3022000.0, 3043000.0, 3064000.0, 3085000.0, 3105000.0, 3126000.0, 3147000.0,
    3362             :              3168000.0, 3188000.0, 3209000.0, 3280000.0, 3377000.0, 3484000.0},
    3363             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3364             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3365             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3366             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3367             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3368             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3369             :              0.0,       0.0,       2753000.0, 2758000.0, 2763000.0, 2767000.0, 2772000.0, 2777000.0, 2781000.0, 2786000.0, 2791000.0, 2795000.0,
    3370             :              2800000.0, 2804000.0, 2809000.0, 2820000.0, 2831000.0, 2842000.0, 2853000.0, 2864000.0, 2874000.0, 2885000.0, 2896000.0, 2906000.0,
    3371             :              2917000.0, 2938000.0, 2959000.0, 2980000.0, 3001000.0, 3022000.0, 3042000.0, 3063000.0, 3084000.0, 3105000.0, 3125000.0, 3146000.0,
    3372             :              3167000.0, 3188000.0, 3209000.0, 3280000.0, 3377000.0, 3484000.0},
    3373             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3374             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3375             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3376             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3377             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3378             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3379             :              0.0,       0.0,       0.0,       2755000.0, 2760000.0, 2765000.0, 2770000.0, 2775000.0, 2779000.0, 2784000.0, 2789000.0, 2793000.0,
    3380             :              2798000.0, 2802000.0, 2807000.0, 2818000.0, 2829000.0, 2840000.0, 2851000.0, 2862000.0, 2873000.0, 2884000.0, 2894000.0, 2905000.0,
    3381             :              2916000.0, 2937000.0, 2958000.0, 2979000.0, 3000000.0, 3021000.0, 3042000.0, 3062000.0, 3083000.0, 3104000.0, 3125000.0, 3146000.0,
    3382             :              3166000.0, 3187000.0, 3208000.0, 3280000.0, 3377000.0, 3484000.0},
    3383             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3384             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3385             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3386             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3387             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3388             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3389             :              0.0,       0.0,       0.0,       0.0,       2757000.0, 2762000.0, 2767000.0, 2772000.0, 2777000.0, 2782000.0, 2786000.0, 2791000.0,
    3390             :              2796000.0, 2800000.0, 2805000.0, 2816000.0, 2827000.0, 2839000.0, 2850000.0, 2861000.0, 2872000.0, 2882000.0, 2893000.0, 2904000.0,
    3391             :              2915000.0, 2936000.0, 2957000.0, 2978000.0, 2999000.0, 3020000.0, 3041000.0, 3062000.0, 3082000.0, 3103000.0, 3124000.0, 3145000.0,
    3392             :              3166000.0, 3187000.0, 3208000.0, 3280000.0, 3376000.0, 3483000.0},
    3393             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3394             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3395             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3396             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3397             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3398             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3399             :              0.0,       0.0,       0.0,       0.0,       0.0,       2760000.0, 2765000.0, 2770000.0, 2774000.0, 2779000.0, 2784000.0, 2789000.0,
    3400             :              2793000.0, 2798000.0, 2803000.0, 2814000.0, 2826000.0, 2837000.0, 2848000.0, 2859000.0, 2870000.0, 2881000.0, 2892000.0, 2902000.0,
    3401             :              2913000.0, 2935000.0, 2956000.0, 2977000.0, 2998000.0, 3019000.0, 3040000.0, 3061000.0, 3082000.0, 3102000.0, 3123000.0, 3144000.0,
    3402             :              3165000.0, 3186000.0, 3207000.0, 3280000.0, 3376000.0, 3483000.0},
    3403             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3404             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3405             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3406             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3407             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3408             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3409             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2762000.0, 2767000.0, 2772000.0, 2777000.0, 2781000.0, 2786000.0,
    3410             :              2791000.0, 2796000.0, 2800000.0, 2812000.0, 2824000.0, 2835000.0, 2846000.0, 2857000.0, 2868000.0, 2879000.0, 2890000.0, 2901000.0,
    3411             :              2912000.0, 2933000.0, 2955000.0, 2976000.0, 2997000.0, 3018000.0, 3039000.0, 3060000.0, 3081000.0, 3102000.0, 3123000.0, 3144000.0,
    3412             :              3164000.0, 3185000.0, 3206000.0, 3280000.0, 3375000.0, 3483000.0},
    3413             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3414             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3415             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3416             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3417             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3418             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3419             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2764000.0, 2769000.0, 2774000.0, 2779000.0, 2784000.0,
    3420             :              2789000.0, 2793000.0, 2798000.0, 2810000.0, 2821000.0, 2833000.0, 2844000.0, 2855000.0, 2867000.0, 2878000.0, 2889000.0, 2900000.0,
    3421             :              2910000.0, 2932000.0, 2953000.0, 2975000.0, 2996000.0, 3017000.0, 3038000.0, 3059000.0, 3080000.0, 3101000.0, 3122000.0, 3143000.0,
    3422             :              3164000.0, 3185000.0, 3206000.0, 3280000.0, 3375000.0, 3482000.0},
    3423             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3424             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3425             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3426             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3427             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3428             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3429             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2766000.0, 2771000.0, 2776000.0, 2781000.0,
    3430             :              2786000.0, 2791000.0, 2796000.0, 2808000.0, 2819000.0, 2831000.0, 2842000.0, 2854000.0, 2865000.0, 2876000.0, 2887000.0, 2898000.0,
    3431             :              2909000.0, 2931000.0, 2952000.0, 2973000.0, 2995000.0, 3016000.0, 3037000.0, 3058000.0, 3079000.0, 3100000.0, 3121000.0, 3142000.0,
    3432             :              3163000.0, 3184000.0, 3205000.0, 3280000.0, 3374000.0, 3482000.0},
    3433             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3434             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3435             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3436             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3437             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3438             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3439             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2768000.0, 2773000.0, 2778000.0,
    3440             :              2783000.0, 2788000.0, 2793000.0, 2805000.0, 2817000.0, 2829000.0, 2840000.0, 2852000.0, 2863000.0, 2874000.0, 2885000.0, 2896000.0,
    3441             :              2907000.0, 2929000.0, 2951000.0, 2972000.0, 2994000.0, 3015000.0, 3036000.0, 3057000.0, 3078000.0, 3099000.0, 3120000.0, 3141000.0,
    3442             :              3162000.0, 3183000.0, 3204000.0, 3280000.0, 3374000.0, 3481000.0},
    3443             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3444             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3445             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3446             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3447             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3448             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3449             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2770000.0, 2775000.0,
    3450             :              2780000.0, 2785000.0, 2790000.0, 2802000.0, 2814000.0, 2826000.0, 2838000.0, 2850000.0, 2861000.0, 2872000.0, 2883000.0, 2895000.0,
    3451             :              2906000.0, 2928000.0, 2949000.0, 2971000.0, 2992000.0, 3014000.0, 3035000.0, 3056000.0, 3077000.0, 3098000.0, 3119000.0, 3140000.0,
    3452             :              3162000.0, 3183000.0, 3204000.0, 3280000.0, 3373000.0, 3481000.0},
    3453             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3454             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3455             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3456             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3457             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3458             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3459             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2772000.0,
    3460             :              2777000.0, 2782000.0, 2787000.0, 2800000.0, 2812000.0, 2824000.0, 2836000.0, 2847000.0, 2859000.0, 2870000.0, 2882000.0, 2893000.0,
    3461             :              2904000.0, 2926000.0, 2948000.0, 2969000.0, 2991000.0, 3012000.0, 3034000.0, 3055000.0, 3076000.0, 3097000.0, 3118000.0, 3140000.0,
    3462             :              3161000.0, 3182000.0, 3203000.0, 3280000.0, 3373000.0, 3480000.0},
    3463             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3464             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3465             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3466             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3467             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3468             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3469             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3470             :              2774000.0, 2779000.0, 2784000.0, 2797000.0, 2809000.0, 2821000.0, 2833000.0, 2845000.0, 2857000.0, 2868000.0, 2880000.0, 2891000.0,
    3471             :              2902000.0, 2924000.0, 2946000.0, 2968000.0, 2990000.0, 3011000.0, 3033000.0, 3054000.0, 3075000.0, 3096000.0, 3118000.0, 3139000.0,
    3472             :              3160000.0, 3181000.0, 3202000.0, 3280000.0, 3372000.0, 3480000.0},
    3473             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3474             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3475             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3476             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3477             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3478             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3479             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3480             :              0.0,       2775000.0, 2781000.0, 2794000.0, 2806000.0, 2819000.0, 2831000.0, 2843000.0, 2854000.0, 2866000.0, 2878000.0, 2889000.0,
    3481             :              2900000.0, 2923000.0, 2945000.0, 2967000.0, 2988000.0, 3010000.0, 3031000.0, 3053000.0, 3074000.0, 3095000.0, 3117000.0, 3138000.0,
    3482             :              3159000.0, 3180000.0, 3201000.0, 3280000.0, 3372000.0, 3480000.0},
    3483             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3484             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3485             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3486             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3487             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3488             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3489             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3490             :              0.0,       0.0,       2777000.0, 2790000.0, 2803000.0, 2816000.0, 2828000.0, 2840000.0, 2852000.0, 2864000.0, 2875000.0, 2887000.0,
    3491             :              2898000.0, 2921000.0, 2943000.0, 2965000.0, 2987000.0, 3009000.0, 3030000.0, 3052000.0, 3073000.0, 3094000.0, 3116000.0, 3137000.0,
    3492             :              3158000.0, 3179000.0, 3201000.0, 3280000.0, 3371000.0, 3479000.0},
    3493             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3494             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3495             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3496             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3497             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3498             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3499             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3500             :              0.0,       0.0,       0.0,       2781000.0, 2795000.0, 2808000.0, 2821000.0, 2833000.0, 2846000.0, 2858000.0, 2870000.0, 2881000.0,
    3501             :              2893000.0, 2916000.0, 2939000.0, 2961000.0, 2983000.0, 3005000.0, 3027000.0, 3048000.0, 3070000.0, 3091000.0, 3113000.0, 3134000.0,
    3502             :              3156000.0, 3177000.0, 3198000.0, 3280000.0, 3370000.0, 3478000.0},
    3503             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3504             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3505             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3506             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3507             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3508             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3509             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3510             :              0.0,       0.0,       0.0,       0.0,       2785000.0, 2799000.0, 2813000.0, 2826000.0, 2838000.0, 2851000.0, 2863000.0, 2875000.0,
    3511             :              2887000.0, 2910000.0, 2933000.0, 2956000.0, 2979000.0, 3001000.0, 3023000.0, 3045000.0, 3067000.0, 3088000.0, 3110000.0, 3132000.0,
    3512             :              3153000.0, 3175000.0, 3196000.0, 3280000.0, 3368000.0, 3476000.0},
    3513             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3514             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3515             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3516             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3517             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3518             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3519             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3520             :              0.0,       0.0,       0.0,       0.0,       0.0,       2789000.0, 2803000.0, 2817000.0, 2830000.0, 2843000.0, 2856000.0, 2868000.0,
    3521             :              2880000.0, 2904000.0, 2928000.0, 2951000.0, 2974000.0, 2996000.0, 3019000.0, 3041000.0, 3063000.0, 3085000.0, 3107000.0, 3128000.0,
    3522             :              3150000.0, 3172000.0, 3193000.0, 3280000.0, 3366000.0, 3475000.0},
    3523             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3524             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3525             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3526             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3527             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3528             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3529             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3530             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2792000.0, 2807000.0, 2821000.0, 2834000.0, 2847000.0, 2860000.0,
    3531             :              2873000.0, 2898000.0, 2922000.0, 2945000.0, 2969000.0, 2992000.0, 3014000.0, 3037000.0, 3059000.0, 3081000.0, 3103000.0, 3125000.0,
    3532             :              3147000.0, 3169000.0, 3190000.0, 3280000.0, 3364000.0, 3473000.0},
    3533             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3534             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3535             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3536             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3537             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3538             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3539             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3540             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2795000.0, 2810000.0, 2824000.0, 2838000.0, 2851000.0,
    3541             :              2864000.0, 2890000.0, 2915000.0, 2939000.0, 2963000.0, 2986000.0, 3009000.0, 3032000.0, 3055000.0, 3077000.0, 3099000.0, 3121000.0,
    3542             :              3143000.0, 3165000.0, 3187000.0, 3280000.0, 3362000.0, 3471000.0},
    3543             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3544             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3545             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3546             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3547             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3548             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3549             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3550             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2797000.0, 2813000.0, 2827000.0, 2841000.0,
    3551             :              2855000.0, 2882000.0, 2907000.0, 2932000.0, 2956000.0, 2980000.0, 3004000.0, 3027000.0, 3050000.0, 3072000.0, 3095000.0, 3117000.0,
    3552             :              3140000.0, 3162000.0, 3184000.0, 3280000.0, 3359000.0, 3469000.0},
    3553             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3554             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3555             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3556             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3557             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3558             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3559             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3560             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2799000.0, 2815000.0, 2830000.0,
    3561             :              2844000.0, 2872000.0, 2899000.0, 2924000.0, 2949000.0, 2974000.0, 2998000.0, 3021000.0, 3044000.0, 3067000.0, 3090000.0, 3113000.0,
    3562             :              3135000.0, 3158000.0, 3180000.0, 3280000.0, 3357000.0, 3467000.0},
    3563             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3564             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3565             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3566             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3567             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3568             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3569             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3570             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2801000.0, 2817000.0,
    3571             :              2832000.0, 2862000.0, 2889000.0, 2916000.0, 2941000.0, 2966000.0, 2991000.0, 3015000.0, 3039000.0, 3062000.0, 3085000.0, 3108000.0,
    3572             :              3131000.0, 3154000.0, 3176000.0, 3280000.0, 3354000.0, 3465000.0},
    3573             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3574             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3575             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3576             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3577             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3578             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3579             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3580             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       2802000.0,
    3581             :              2819000.0, 2850000.0, 2879000.0, 2906000.0, 2933000.0, 2958000.0, 2984000.0, 3008000.0, 3032000.0, 3056000.0, 3080000.0, 3103000.0,
    3582             :              3126000.0, 3149000.0, 3172000.0, 3280000.0, 3351000.0, 3462000.0},
    3583             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3584             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3585             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3586             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3587             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3588             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3589             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3590             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3591             :              2803000.0, 2836000.0, 2867000.0, 2895000.0, 2923000.0, 2950000.0, 2975000.0, 3001000.0, 3025000.0, 3050000.0, 3073000.0, 3097000.0,
    3592             :              3121000.0, 3144000.0, 3167000.0, 3280000.0, 3348000.0, 3459000.0},
    3593             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3594             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3595             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3596             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3597             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3598             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3599             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3600             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3601             :              0.0,       2803000.0, 2838000.0, 2870000.0, 2900000.0, 2929000.0, 2957000.0, 2983000.0, 3009000.0, 3035000.0, 3060000.0, 3084000.0,
    3602             :              3108000.0, 3132000.0, 3156000.0, 3280000.0, 3340000.0, 3453000.0},
    3603             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3604             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3605             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3606             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3607             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3608             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3609             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3610             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3611             :              0.0,       0.0,       2801000.0, 2838000.0, 2872000.0, 2904000.0, 2934000.0, 2963000.0, 2990000.0, 3017000.0, 3043000.0, 3069000.0,
    3612             :              3094000.0, 3119000.0, 3143000.0, 3280000.0, 3332000.0, 3446000.0},
    3613             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3614             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3615             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3616             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3617             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3618             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3619             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3620             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3621             :              0.0,       0.0,       0.0,       2797000.0, 2837000.0, 2873000.0, 2906000.0, 2937000.0, 2967000.0, 2996000.0, 3023000.0, 3050000.0,
    3622             :              3077000.0, 3103000.0, 3128000.0, 3280000.0, 3322000.0, 3438000.0},
    3623             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3624             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3625             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3626             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3627             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3628             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3629             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3630             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3631             :              0.0,       0.0,       0.0,       0.0,       2790000.0, 2833000.0, 2871000.0, 2906000.0, 2939000.0, 2970000.0, 3000000.0, 3029000.0,
    3632             :              3057000.0, 3084000.0, 3110000.0, 3280000.0, 3310000.0, 3429000.0},
    3633             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3634             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3635             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3636             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3637             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3638             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3639             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3640             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3641             :              0.0,       0.0,       0.0,       0.0,       0.0,       2780000.0, 2826000.0, 2867000.0, 2905000.0, 2939000.0, 2972000.0, 3003000.0,
    3642             :              3033000.0, 3062000.0, 3090000.0, 3280000.0, 3297000.0, 3418000.0},
    3643             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0,       0.0,
    3644             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0,       0.0,
    3645             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0,       0.0,
    3646             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0,       0.0,
    3647             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0,       0.0,
    3648             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0,       0.0,
    3649             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0,       0.0,
    3650             :              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,
    3651             :              2861000.0, 2901000.0, 2938000.0, 2972000.0, 3004000.0, 3036000.0, 3066000.0, 3280000.0, 3282000.0, 3406000.0},
    3652             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0,
    3653             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0,
    3654             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0,
    3655             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0,
    3656             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0,
    3657             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0,
    3658             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0,
    3659             :              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,
    3660             :              2806000.0, 2853000.0, 2895000.0, 2934000.0, 2970000.0, 3004000.0, 3037000.0, 3280000.0, 3264000.0, 3392000.0},
    3661             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    3662             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    3663             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    3664             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    3665             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    3666             :              0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
    3667             :              0.0,       0.0,       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,
    3668             :              2790000.0, 2842000.0, 2887000.0, 2929000.0, 2967000.0, 3003000.0, 3280000.0, 3244000.0, 3377000.0},
    3669             :             {0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0,
    3670             :              0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0,
    3671             :              0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0,
    3672             :              0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0,
    3673             :              0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0,
    3674             :              0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0,
    3675             :              0.0, 0.0, 0.0, 2701000.0, 2771000.0, 2828000.0, 2877000.0, 2921000.0, 2961000.0, 3280000.0, 3222000.0, 3359000.0},
    3676             :             {0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0,
    3677             :              0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0,
    3678             :              0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0,
    3679             :              0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0,
    3680             :              0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0,
    3681             :              0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,      0.0, 0.0, 0.0, 0.0, 0.0,
    3682             :              0.0, 0.0, 0.0, 0.0, 2666000.0, 2747000.0, 2810000.0, 2864000.0, 2911000.0, 3280000.0, 3195000.0, 3339000.0},
    3683             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3684             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3685             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3686             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3687             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3688             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2622000.0, 2718000.0, 2789000.0, 2847000.0, 3280000.0, 3165000.0, 3316000.0},
    3689             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3690             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3691             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3692             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3693             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3694             :              0.0, 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},
    3695             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,
    3696             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,
    3697             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,
    3698             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,
    3699             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,       0.0,
    3700             :              0.0, 0.0, 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},
    3701             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,      0.0,
    3702             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,      0.0,
    3703             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,      0.0,
    3704             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,       0.0,      0.0,
    3705             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 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},
    3706             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,      0.0,
    3707             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,      0.0,
    3708             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,      0.0,
    3709             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,      0.0,
    3710             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 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},
    3711             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,      0.0,
    3712             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,      0.0,
    3713             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,      0.0,
    3714             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,      0.0,
    3715             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 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},
    3716             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,      0.0,
    3717             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,      0.0,
    3718             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,      0.0,
    3719             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,       0.0,      0.0,
    3720             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 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},
    3721             :         }};
    3722             : 
    3723             :     [[maybe_unused]] static constexpr std::array<std::array<Real64, DefaultNumSteamSuperheatedTemps>, DefaultNumSteamSuperheatedPressure>
    3724             :         DefaultSteamSuperheatedDensityDataTable = {{
    3725             :             {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,
    3726             :              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,
    3727             :              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,
    3728             :              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,
    3729             :              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,
    3730             :              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,
    3731             :              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,
    3732             :              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,
    3733             :              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,
    3734             :              2.127e-03, 2.093e-03, 2.061e-03, 3.542e-05, 1.833e-03, 1.714e-03},
    3735             :             {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,
    3736             :              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,
    3737             :              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,
    3738             :              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,
    3739             :              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,
    3740             :              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,
    3741             :              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,
    3742             :              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,
    3743             :              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,
    3744             :              2.285e-03, 2.249e-03, 2.214e-03, 3.542e-05, 1.969e-03, 1.841e-03},
    3745             :             {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,
    3746             :              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,
    3747             :              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,
    3748             :              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,
    3749             :              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,
    3750             :              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,
    3751             :              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,
    3752             :              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,
    3753             :              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,
    3754             :              3.034e-03, 2.986e-03, 2.940e-03, 3.542e-05, 2.615e-03, 2.445e-03},
    3755             :             {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,
    3756             :              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,
    3757             :              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,
    3758             :              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,
    3759             :              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,
    3760             :              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,
    3761             :              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,
    3762             :              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,
    3763             :              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,
    3764             :              4.271e-03, 4.203e-03, 4.138e-03, 3.542e-05, 3.680e-03, 3.442e-03},
    3765             :             {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,
    3766             :              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,
    3767             :              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,
    3768             :              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,
    3769             :              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,
    3770             :              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,
    3771             :              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,
    3772             :              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,
    3773             :              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,
    3774             :              5.931e-03, 5.838e-03, 5.747e-03, 3.542e-05, 5.111e-03, 4.781e-03},
    3775             :             {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,
    3776             :              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,
    3777             :              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,
    3778             :              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,
    3779             :              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,
    3780             :              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,
    3781             :              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,
    3782             :              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,
    3783             :              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,
    3784             :              8.134e-03, 8.006e-03, 7.881e-03, 3.542e-05, 7.009e-03, 6.556e-03},
    3785             :             {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,
    3786             :              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,
    3787             :              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,
    3788             :              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,
    3789             :              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,
    3790             :              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,
    3791             :              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,
    3792             :              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,
    3793             :              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,
    3794             :              1.102e-02, 1.085e-02, 1.068e-02, 3.542e-05, 9.498e-03, 8.884e-03},
    3795             :             {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,
    3796             :              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,
    3797             :              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,
    3798             :              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,
    3799             :              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,
    3800             :              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,
    3801             :              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,
    3802             :              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,
    3803             :              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,
    3804             :              1.477e-02, 1.453e-02, 1.431e-02, 3.542e-05, 1.273e-02, 1.190e-02},
    3805             :             {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,
    3806             :              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,
    3807             :              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,
    3808             :              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,
    3809             :              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,
    3810             :              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,
    3811             :              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,
    3812             :              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,
    3813             :              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,
    3814             :              1.957e-02, 1.927e-02, 1.897e-02, 3.542e-05, 1.687e-02, 1.578e-02},
    3815             :             {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,
    3816             :              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,
    3817             :              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,
    3818             :              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,
    3819             :              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,
    3820             :              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,
    3821             :              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,
    3822             :              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,
    3823             :              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,
    3824             :              2.568e-02, 2.528e-02, 2.488e-02, 3.542e-05, 2.213e-02, 2.070e-02},
    3825             :             {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,
    3826             :              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,
    3827             :              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,
    3828             :              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,
    3829             :              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,
    3830             :              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,
    3831             :              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,
    3832             :              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,
    3833             :              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,
    3834             :              3.337e-02, 3.284e-02, 3.233e-02, 3.542e-05, 2.875e-02, 2.689e-02},
    3835             :             {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,
    3836             :              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,
    3837             :              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,
    3838             :              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,
    3839             :              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,
    3840             :              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,
    3841             :              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,
    3842             :              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,
    3843             :              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,
    3844             :              4.296e-02, 4.228e-02, 4.162e-02, 3.542e-05, 3.701e-02, 3.462e-02},
    3845             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3846             :              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,
    3847             :              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,
    3848             :              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,
    3849             :              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,
    3850             :              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,
    3851             :              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,
    3852             :              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,
    3853             :              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,
    3854             :              5.482e-02, 5.395e-02, 5.312e-02, 3.542e-05, 4.724e-02, 4.418e-02},
    3855             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3856             :              0.0,       0.13040,   0.12840,   0.12650,   0.12580,   0.125,     0.12430,   0.12360,   0.12290,   0.12220,   0.12150,   0.12080,
    3857             :              0.12010,   0.11940,   0.11870,   0.11810,   0.11740,   0.11680,   0.11650,   0.11620,   0.11580,   0.11550,   0.11520,   0.11490,
    3858             :              0.11460,   0.11430,   0.114,     0.11370,   0.11340,   0.11310,   0.11280,   0.11250,   0.11220,   0.11190,   0.11160,   0.11130,
    3859             :              0.111,     0.11080,   0.11050,   0.11020,   0.10990,   0.10960,   0.10930,   0.10910,   0.10880,   0.10850,   0.10820,   0.108,
    3860             :              0.10770,   0.10740,   0.10690,   0.10640,   0.10580,   0.10530,   0.10480,   0.10430,   0.10380,   0.10330,   0.10280,   0.10230,
    3861             :              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,
    3862             :              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,
    3863             :              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,
    3864             :              6.938e-02, 6.828e-02, 6.722e-02, 3.542e-05, 5.978e-02, 5.591e-02},
    3865             :             {0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,       0.0,
    3866             :              0.0,       0.0,       0.16150,   0.159,     0.15810,   0.15710,   0.15620,   0.15530,   0.15440,   0.15350,   0.15260,   0.15180,
    3867             :              0.15090,   0.15,      0.14920,   0.14840,   0.14760,   0.14670,   0.14630,   0.14590,   0.14550,   0.14520,   0.14480,   0.14440,
    3868             :              0.144,     0.14360,   0.14320,   0.14280,   0.14250,   0.14210,   0.14170,   0.14130,   0.141,     0.14060,   0.14020,   0.13990,
    3869             :              0.13950,   0.13910,   0.13880,   0.13840,   0.13810,   0.13770,   0.13730,   0.137,     0.13660,   0.13630,   0.136,     0.13560,
    3870             :              0.13530,   0.13490,   0.13430,   0.13360,   0.13290,   0.13230,   0.13160,   0.131,     0.13040,   0.12970,   0.12910,   0.12850,
    3871             :              0.12790,   0.12730,   0.12670,   0.12610,   0.12550,   0.12490,   0.12430,   0.12380,   0.12320,   0.12260,   0.12210,   0.12150,
    3872             :              0.121,     0.12050,   0.11990,   0.11860,   0.11730,   0.11610,   0.11480,   0.11360,   0.11240,   0.11130,   0.11010,   0.109,
    3873             :              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,
    3874             :              8.711e-02, 8.573e-02, 8.440e-02, 3.542e-05, 7.505e-02, 7.019e-02},
    3875             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,       0.0,      0.0,     0.0,     0.0,
    3876             :              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,
    3877             :              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,
    3878             :              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,
    3879             :              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,
    3880             :              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,
    3881             :              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,
    3882             :              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,
    3883             :              0.116,   0.11410, 0.11220, 0.11030, 0.10850, 0.10680, 0.10520, 3.542e-05, 9.352e-02, 8.746e-02},
    3884             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,      0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3885             :              0.0,     0.21510, 0.21380, 0.21250, 0.21130, 0.21,    0.20880,   0.20760, 0.20640,  0.20520, 0.204,   0.20290, 0.20180, 0.20060, 0.19950,
    3886             :              0.199,   0.19840, 0.19790, 0.19730, 0.19680, 0.19630, 0.19570,   0.19520, 0.19470,  0.19420, 0.19360, 0.19310, 0.19260, 0.19210, 0.19160,
    3887             :              0.19110, 0.19060, 0.19010, 0.18960, 0.18910, 0.18860, 0.18810,   0.18760, 0.18720,  0.18670, 0.18620, 0.18570, 0.18520, 0.18480, 0.18430,
    3888             :              0.18380, 0.18340, 0.18250, 0.18150, 0.18060, 0.17980, 0.17890,   0.178,   0.17710,  0.17630, 0.17540, 0.17460, 0.17380, 0.17290, 0.17210,
    3889             :              0.17130, 0.17050, 0.16970, 0.16890, 0.16820, 0.16740, 0.16660,   0.16590, 0.16510,  0.16440, 0.16360, 0.16290, 0.16110, 0.15940, 0.15770,
    3890             :              0.156,   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, 0.12640,
    3891             :              0.12430, 0.12220, 0.12020, 0.11830, 0.11640, 0.11460, 3.542e-05, 0.10190, 9.531e-02},
    3892             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3893             :              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,
    3894             :              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,
    3895             :              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,
    3896             :              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,
    3897             :              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,
    3898             :              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,
    3899             :              0.13530, 0.133,   0.13090, 0.12880, 0.12670, 0.12480, 3.542e-05, 0.11090, 0.1037},
    3900             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3901             :              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,
    3902             :              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,
    3903             :              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,
    3904             :              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,
    3905             :              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,
    3906             :              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,
    3907             :              0.14710, 0.14470, 0.14230, 0.14,    0.13780, 0.13560, 3.542e-05, 0.12060, 0.1128},
    3908             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3909             :              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,
    3910             :              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,
    3911             :              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,
    3912             :              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,
    3913             :              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,
    3914             :              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,
    3915             :              0.15980, 0.15710, 0.15460, 0.15210, 0.14970, 0.14730, 3.542e-05, 0.131,   0.1225},
    3916             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3917             :              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,
    3918             :              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,
    3919             :              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,
    3920             :              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,
    3921             :              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,
    3922             :              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,
    3923             :              0.17340, 0.17050, 0.16770, 0.165,   0.16240, 0.15990, 3.542e-05, 0.14210, 0.1329},
    3924             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3925             :              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,
    3926             :              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,
    3927             :              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,
    3928             :              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,
    3929             :              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,
    3930             :              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,
    3931             :              0.18790, 0.18480, 0.18180, 0.17880, 0.176,   0.17330, 3.542e-05, 0.154,   0.1441},
    3932             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3933             :              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,
    3934             :              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,
    3935             :              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,
    3936             :              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,
    3937             :              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,
    3938             :              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,
    3939             :              0.20350, 0.20010, 0.19680, 0.19360, 0.19060, 0.18760, 3.542e-05, 0.16680, 0.156},
    3940             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3941             :              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,
    3942             :              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,
    3943             :              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,
    3944             :              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,
    3945             :              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,
    3946             :              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,
    3947             :              0.22010, 0.21640, 0.21290, 0.20940, 0.20610, 0.20290, 3.542e-05, 0.18040, 0.1687},
    3948             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3949             :              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,
    3950             :              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,
    3951             :              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,
    3952             :              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,
    3953             :              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,
    3954             :              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,
    3955             :              0.23780, 0.23390, 0.23,    0.22630, 0.22270, 0.21930, 3.542e-05, 0.19490, 0.1823},
    3956             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3957             :              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,
    3958             :              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,
    3959             :              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,
    3960             :              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,
    3961             :              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,
    3962             :              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,
    3963             :              0.25680, 0.25250, 0.24830, 0.24430, 0.24050, 0.23670, 3.542e-05, 0.21040, 0.1968},
    3964             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3965             :              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,
    3966             :              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,
    3967             :              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,
    3968             :              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,
    3969             :              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,
    3970             :              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,
    3971             :              0.27690, 0.27230, 0.26780, 0.26350, 0.25930, 0.25530, 3.542e-05, 0.22690, 0.2122},
    3972             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3973             :              0.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,
    3974             :              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,
    3975             :              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,
    3976             :              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,
    3977             :              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,
    3978             :              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,
    3979             :              0.29840, 0.29340, 0.28860, 0.28390, 0.27940, 0.27510, 3.542e-05, 0.24450, 0.2287},
    3980             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3981             :              0.0,     0.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,
    3982             :              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,
    3983             :              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,
    3984             :              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,
    3985             :              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,
    3986             :              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,
    3987             :              0.32120, 0.31590, 0.31070, 0.30570, 0.30080, 0.29610, 3.542e-05, 0.26320, 0.2461},
    3988             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3989             :              0.0,     0.0,     0.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,
    3990             :              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,
    3991             :              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,
    3992             :              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,
    3993             :              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,
    3994             :              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,
    3995             :              0.34550, 0.33970, 0.33410, 0.32870, 0.32350, 0.31850, 3.542e-05, 0.28310, 0.2647},
    3996             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3997             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    3998             :              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,
    3999             :              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,
    4000             :              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,
    4001             :              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,
    4002             :              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,
    4003             :              0.35820, 0.35220, 0.34640, 0.34080, 0.33540, 0.33020, 3.542e-05, 0.29350, 0.2744},
    4004             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4005             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4006             :              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,
    4007             :              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,
    4008             :              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,
    4009             :              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,
    4010             :              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,
    4011             :              0.37130, 0.36510, 0.35910, 0.35330, 0.34760, 0.34220, 3.542e-05, 0.30420, 0.2844},
    4012             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4013             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4014             :              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,
    4015             :              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,
    4016             :              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,
    4017             :              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,
    4018             :              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,
    4019             :              0.38470, 0.37830, 0.37210, 0.36610, 0.36030, 0.35460, 3.542e-05, 0.31520, 0.2948},
    4020             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4021             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4022             :              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,
    4023             :              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,
    4024             :              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,
    4025             :              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,
    4026             :              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,
    4027             :              0.39860, 0.392,   0.38550, 0.37930, 0.37330, 0.36740, 3.542e-05, 0.32660, 0.3054},
    4028             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4029             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4030             :              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,
    4031             :              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,
    4032             :              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,
    4033             :              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,
    4034             :              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,
    4035             :              0.41290, 0.406,   0.39930, 0.39290, 0.38660, 0.38060, 3.542e-05, 0.33830, 0.3163},
    4036             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4037             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4038             :              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,
    4039             :              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,
    4040             :              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,
    4041             :              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,
    4042             :              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,
    4043             :              0.42760, 0.42050, 0.41360, 0.40690, 0.40040, 0.39410, 3.542e-05, 0.35030, 0.3276},
    4044             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4045             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4046             :              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,
    4047             :              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,
    4048             :              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,
    4049             :              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,
    4050             :              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,
    4051             :              0.44280, 0.43540, 0.42820, 0.42130, 0.41460, 0.40810, 3.542e-05, 0.36270, 0.3391},
    4052             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4053             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4054             :              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,
    4055             :              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,
    4056             :              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,
    4057             :              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,
    4058             :              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,
    4059             :              0.45840, 0.45070, 0.44330, 0.43610, 0.42920, 0.42240, 3.542e-05, 0.37540, 0.3511},
    4060             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4061             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4062             :              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,
    4063             :              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,
    4064             :              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,
    4065             :              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,
    4066             :              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,
    4067             :              0.47440, 0.46650, 0.45880, 0.45140, 0.44420, 0.43720, 3.542e-05, 0.38860, 0.3633},
    4068             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4069             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4070             :              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,
    4071             :              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,
    4072             :              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,
    4073             :              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,
    4074             :              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,
    4075             :              0.49090, 0.48270, 0.47470, 0.46710, 0.45960, 0.45240, 3.542e-05, 0.40210, 0.3759},
    4076             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4077             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4078             :              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,
    4079             :              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,
    4080             :              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,
    4081             :              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,
    4082             :              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,
    4083             :              0.50790, 0.49940, 0.49110, 0.48320, 0.47550, 0.468,   3.542e-05, 0.41590, 0.3889},
    4084             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4085             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4086             :              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,
    4087             :              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,
    4088             :              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,
    4089             :              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,
    4090             :              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,
    4091             :              0.52530, 0.51650, 0.508,   0.49980, 0.49180, 0.48410, 3.542e-05, 0.43020, 0.4023},
    4092             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4093             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4094             :              0.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,
    4095             :              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,
    4096             :              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,
    4097             :              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,
    4098             :              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,
    4099             :              0.54330, 0.53420, 0.52540, 0.51690, 0.50860, 0.50060, 3.542e-05, 0.44490, 0.416},
    4100             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4101             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4102             :              0.0,     0.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,
    4103             :              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,
    4104             :              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,
    4105             :              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,
    4106             :              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,
    4107             :              0.56170, 0.55230, 0.54320, 0.53440, 0.52590, 0.51760, 3.542e-05, 0.46,    0.4301},
    4108             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4109             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4110             :              0.0,     0.0,     0.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,
    4111             :              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,
    4112             :              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,
    4113             :              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,
    4114             :              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,
    4115             :              0.58070, 0.571,   0.56150, 0.55240, 0.54360, 0.53510, 3.542e-05, 0.47550, 0.4446},
    4116             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4117             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4118             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4119             :              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,
    4120             :              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,
    4121             :              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,
    4122             :              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,
    4123             :              0.60020, 0.59010, 0.58040, 0.571,   0.56190, 0.553,   3.542e-05, 0.49140, 0.4594},
    4124             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4125             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4126             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4127             :              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,
    4128             :              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,
    4129             :              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,
    4130             :              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,
    4131             :              0.62020, 0.60980, 0.59970, 0.59,    0.58060, 0.57150, 3.542e-05, 0.50780, 0.4747},
    4132             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4133             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4134             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4135             :              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,
    4136             :              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,
    4137             :              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,
    4138             :              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,
    4139             :              0.64080, 0.63,    0.61960, 0.60960, 0.59980, 0.59040, 3.542e-05, 0.52460, 0.4905},
    4140             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4141             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4142             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4143             :              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,
    4144             :              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,
    4145             :              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,
    4146             :              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,
    4147             :              0.66190, 0.65080, 0.64010, 0.62970, 0.61960, 0.60990, 3.542e-05, 0.54180, 0.5066},
    4148             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4149             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4150             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4151             :              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,
    4152             :              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,
    4153             :              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,
    4154             :              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,
    4155             :              0.68360, 0.67210, 0.661,   0.65030, 0.63990, 0.62980, 3.542e-05, 0.55960, 0.5232},
    4156             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4157             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4158             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4159             :              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,
    4160             :              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,
    4161             :              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,
    4162             :              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,
    4163             :              0.70590, 0.694,   0.68260, 0.67150, 0.66070, 0.65030, 3.542e-05, 0.57780, 0.5402},
    4164             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4165             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4166             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4167             :              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,
    4168             :              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,
    4169             :              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,
    4170             :              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,
    4171             :              0.72880, 0.71650, 0.70470, 0.69320, 0.68210, 0.67140, 3.542e-05, 0.59640, 0.5576},
    4172             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4173             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4174             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4175             :              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,
    4176             :              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,
    4177             :              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,
    4178             :              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,
    4179             :              0.75230, 0.73960, 0.72740, 0.71550, 0.70410, 0.693,   3.542e-05, 0.61560, 0.5755},
    4180             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,   0.0,
    4181             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,   0.0,
    4182             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,   0.0,
    4183             :              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,
    4184             :              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,
    4185             :              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,
    4186             :              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,
    4187             :              0.77640, 0.76330, 0.75070, 0.73840, 0.72660, 0.71520, 3.542e-05, 0.63530, 0.5939},
    4188             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,   0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4189             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,   0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4190             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,   0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4191             :              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,
    4192             :              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,
    4193             :              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,
    4194             :              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,
    4195             :              0.80110, 0.78760, 0.77460, 0.76190, 0.74970, 0.73790, 3.542e-05, 0.65550, 0.6128},
    4196             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4197             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4198             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4199             :              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,
    4200             :              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,
    4201             :              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,
    4202             :              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,
    4203             :              0.82650, 0.81260, 0.79910, 0.78610, 0.77350, 0.76130, 3.542e-05, 0.67620, 0.6321},
    4204             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4205             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4206             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4207             :              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,
    4208             :              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,
    4209             :              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,
    4210             :              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,
    4211             :              0.85250, 0.83810, 0.82420, 0.81080, 0.79780, 0.78520, 3.542e-05, 0.69740, 0.652},
    4212             :             {0.0,     0.0,     0.0,   0.0,     0.0,     0.0,     0.0,       0.0,    0.0,   0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4213             :              0.0,     0.0,     0.0,   0.0,     0.0,     0.0,     0.0,       0.0,    0.0,   0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4214             :              0.0,     0.0,     0.0,   0.0,     0.0,     0.0,     0.0,       0.0,    0.0,   0.0,     0.0,     0.0,     0.0,     0.0,     0.0,
    4215             :              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,
    4216             :              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,
    4217             :              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,
    4218             :              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,
    4219             :              0.87920, 0.86440, 0.85,  0.83620, 0.82280, 0.80980, 3.542e-05, 0.7192, 0.6723},
    4220             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,   0.0,       0.0,    0.0,   0.0,   0.0,     0.0,     0.0,   0.0,   0.0,
    4221             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,   0.0,       0.0,    0.0,   0.0,   0.0,     0.0,     0.0,   0.0,   0.0,
    4222             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,   0.0,       0.0,    0.0,   0.0,   0.0,     0.0,     0.0,   0.0,   0.0,
    4223             :              0.0,     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,
    4224             :              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,
    4225             :              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,
    4226             :              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,
    4227             :              0.90660, 0.89130, 0.87650, 0.86220, 0.84840, 0.835, 3.542e-05, 0.7416, 0.6932},
    4228             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,     0.0,     0.0,
    4229             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,     0.0,     0.0,
    4230             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,     0.0,     0.0,
    4231             :              0.0,     0.0,     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,
    4232             :              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,
    4233             :              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,
    4234             :              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,
    4235             :              0.93470, 0.91890, 0.90360, 0.88890, 0.87460, 0.86080, 3.542e-05, 0.7645, 0.7146},
    4236             :             {0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,     0.0,
    4237             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,     0.0,
    4238             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,     0.0,
    4239             :              0.0,     0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,     0.0,
    4240             :              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,
    4241             :              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,
    4242             :              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,
    4243             :              0.96350, 0.94720, 0.93140, 0.91620, 0.90150, 0.88730, 3.542e-05, 0.7879, 0.7365},
    4244             :             {0.0,   0.0,   0.0,   0.0,   0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4245             :              0.0,   0.0,   0.0,   0.0,   0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4246             :              0.0,   0.0,   0.0,   0.0,   0.0,     0.0,     0.0,     0.0,     0.0,     0.0,       0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4247             :              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,
    4248             :              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,
    4249             :              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,
    4250             :              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},
    4251             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,     0.0,     0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4252             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,     0.0,     0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4253             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,     0.0,     0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4254             :              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,
    4255             :              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,
    4256             :              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,
    4257             :              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},
    4258             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4259             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4260             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4261             :              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,
    4262             :              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,
    4263             :              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,
    4264             :              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},
    4265             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4266             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4267             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,    0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4268             :              0.0,   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,
    4269             :              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,
    4270             :              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,
    4271             :              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},
    4272             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4273             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4274             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
    4275             :              0.0,   0.0,   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,
    4276             :              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,
    4277             :              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,
    4278             :              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},
    4279             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4280             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4281             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4282             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   1.967, 1.955, 1.944, 1.933, 1.923, 1.912, 1.902, 1.891,     1.881, 1.871,
    4283             :              1.861, 1.852, 1.842, 1.833, 1.823, 1.814, 1.805, 1.796, 1.787, 1.778, 1.77,  1.748, 1.728, 1.707, 1.688, 1.669, 1.65,      1.632, 1.614,
    4284             :              1.597, 1.58,  1.548, 1.516, 1.487, 1.458, 1.431, 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},
    4285             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4286             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4287             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4288             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   2.074, 2.062, 2.05,  2.038, 2.027, 2.016, 2.005,     1.994, 1.983,
    4289             :              1.973, 1.962, 1.952, 1.942, 1.932, 1.922, 1.912, 1.903, 1.893, 1.884, 1.875, 1.852, 1.83,  1.809, 1.788, 1.767, 1.748,     1.728, 1.709,
    4290             :              1.691, 1.673, 1.639, 1.605, 1.574, 1.543, 1.514, 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},
    4291             :             {0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4292             :              0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4293             :              0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4294             :              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,
    4295             :              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,
    4296             :              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},
    4297             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4298             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4299             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4300             :              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.301, 2.288, 2.275, 2.262, 2.249,     2.237, 2.225,
    4301             :              2.213, 2.201, 2.189, 2.177, 2.166, 2.155, 2.144, 2.133, 2.122, 2.111, 2.101, 2.075, 2.05,  2.026, 2.002, 1.979, 1.957,     1.935, 1.914,
    4302             :              1.893, 1.873, 1.834, 1.796, 1.761, 1.727, 1.694, 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},
    4303             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4304             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4305             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4306             :              0.0,   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.422, 2.408, 2.394, 2.381,     2.367, 2.354,
    4307             :              2.341, 2.329, 2.316, 2.304, 2.292, 2.28,  2.268, 2.256, 2.245, 2.233, 2.222, 2.195, 2.168, 2.142, 2.117, 2.093, 2.069,     2.046, 2.023,
    4308             :              2.001, 1.98,  1.938, 1.899, 1.861, 1.825, 1.79,  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},
    4309             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4310             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4311             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4312             :              0.0,   0.0,   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.548, 2.533, 2.519,     2.505, 2.491,
    4313             :              2.477, 2.463, 2.45,  2.437, 2.424, 2.411, 2.398, 2.386, 2.373, 2.361, 2.349, 2.32,  2.292, 2.264, 2.238, 2.212, 2.186,     2.162, 2.138,
    4314             :              2.114, 2.091, 2.048, 2.006, 1.965, 1.927, 1.89,  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},
    4315             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4316             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4317             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4318             :              0.0,   0.0,   0.0,   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.679, 2.664,     2.648, 2.633,
    4319             :              2.619, 2.604, 2.59,  2.576, 2.562, 2.548, 2.535, 2.522, 2.508, 2.495, 2.483, 2.452, 2.421, 2.392, 2.364, 2.336, 2.309,     2.283, 2.258,
    4320             :              2.233, 2.209, 2.162, 2.117, 2.075, 2.034, 1.995, 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},
    4321             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4322             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4323             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4324             :              0.0,   0.0,   0.0,   0.0,   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.816,     2.8,   2.783,
    4325             :              2.768, 2.752, 2.737, 2.722, 2.707, 2.692, 2.678, 2.664, 2.65,  2.636, 2.622, 2.589, 2.557, 2.526, 2.496, 2.466, 2.438,     2.41,  2.383,
    4326             :              2.357, 2.331, 2.282, 2.234, 2.189, 2.146, 2.105, 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},
    4327             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4328             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4329             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4330             :              0.0,   0.0,   0.0,   0.0,   0.0,   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.958, 2.941,
    4331             :              2.924, 2.907, 2.891, 2.875, 2.859, 2.843, 2.828, 2.813, 2.798, 2.783, 2.769, 2.733, 2.699, 2.666, 2.634, 2.603, 2.572,     2.543, 2.514,
    4332             :              2.486, 2.459, 2.407, 2.357, 2.309, 2.263, 2.22,  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},
    4333             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4334             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4335             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4336             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   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.106,
    4337             :              3.088, 3.07,  3.052, 3.035, 3.018, 3.001, 2.985, 2.969, 2.953, 2.937, 2.922, 2.884, 2.848, 2.812, 2.778, 2.745, 2.713,     2.682, 2.651,
    4338             :              2.622, 2.593, 2.537, 2.484, 2.434, 2.386, 2.34,  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},
    4339             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4340             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4341             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4342             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4343             :              3.26,  3.24,  3.222, 3.203, 3.185, 3.167, 3.15,  3.132, 3.115, 3.099, 3.082, 3.042, 3.003, 2.966, 2.929, 2.894, 2.86,      2.827, 2.794,
    4344             :              2.763, 2.732, 2.674, 2.618, 2.564, 2.513, 2.465, 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},
    4345             :             {0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4346             :              0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4347             :              0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4348             :              0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4349             :              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,
    4350             :              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},
    4351             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4352             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4353             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4354             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4355             :              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,
    4356             :              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},
    4357             :             {0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4358             :              0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4359             :              0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4360             :              0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4361             :              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,
    4362             :              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},
    4363             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4364             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4365             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4366             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4367             :              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,
    4368             :              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},
    4369             :             {0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4370             :              0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4371             :              0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4372             :              0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4373             :              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,
    4374             :              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},
    4375             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4376             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4377             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4378             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4379             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   4.315, 4.289, 4.263, 4.238, 4.214, 4.155, 4.098, 4.043, 3.991, 3.94,  3.891,     3.843, 3.797,
    4380             :              3.753, 3.709, 3.627, 3.548, 3.473, 3.402, 3.335, 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},
    4381             :             {0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4382             :              0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4383             :              0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4384             :              0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4385             :              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,
    4386             :              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},
    4387             :             {0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,       0.0,   0.0,
    4388             :              0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,       0.0,   0.0,
    4389             :              0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,       0.0,   0.0,
    4390             :              0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,       0.0,   0.0,
    4391             :              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,
    4392             :              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},
    4393             :             {0.0,  0.0,   0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4394             :              0.0,  0.0,   0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4395             :              0.0,  0.0,   0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4396             :              0.0,  0.0,   0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4397             :              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,
    4398             :              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},
    4399             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4400             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4401             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4402             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4403             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   5.159, 5.081, 5.007, 4.936, 4.868, 4.803, 4.741,     4.681, 4.622,
    4404             :              4.566, 4.512, 4.407, 4.309, 4.216, 4.128, 4.044, 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},
    4405             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4406             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4407             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4408             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4409             :              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,
    4410             :              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},
    4411             :             {0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4412             :              0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4413             :              0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4414             :              0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4415             :              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,
    4416             :              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},
    4417             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4418             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4419             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4420             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4421             :              0.0,   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,
    4422             :              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},
    4423             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4424             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4425             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4426             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4427             :              0.0,   0.0,   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,
    4428             :              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},
    4429             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4430             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4431             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4432             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4433             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   8.69,  8.547,     8.413, 8.286,
    4434             :              8.166, 8.051, 7.835, 7.636, 7.451, 7.278, 7.115, 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},
    4435             :             {0.0,   0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,       0.0,   0.0,
    4436             :              0.0,   0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,       0.0,   0.0,
    4437             :              0.0,   0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,       0.0,   0.0,
    4438             :              0.0,   0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,       0.0,   0.0,
    4439             :              0.0,   0.0, 0.0,   0.0,   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,
    4440             :              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},
    4441             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4442             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4443             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4444             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4445             :              0.0,   0.0,   0.0,   0.0,   0.0,   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,
    4446             :              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},
    4447             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4448             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4449             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4450             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4451             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   11.62,
    4452             :              11.41, 11.22, 10.88, 10.56, 10.28, 10.01, 9.769, 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},
    4453             :             {0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,  0.0,
    4454             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,  0.0,
    4455             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,  0.0,
    4456             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,  0.0,
    4457             :              0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,  0.0,
    4458             :              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},
    4459             :             {0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4460             :              0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4461             :              0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4462             :              0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4463             :              0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4464             :              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},
    4465             :             {0.0, 0.0, 0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4466             :              0.0, 0.0, 0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4467             :              0.0, 0.0, 0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4468             :              0.0, 0.0, 0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4469             :              0.0, 0.0, 0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4470             :              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},
    4471             :             {0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4472             :              0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4473             :              0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4474             :              0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4475             :              0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4476             :              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},
    4477             :             {0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4478             :              0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4479             :              0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4480             :              0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4481             :              0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4482             :              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},
    4483             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4484             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4485             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4486             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4487             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4488             :              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},
    4489             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,  0.0,
    4490             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,  0.0,
    4491             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,  0.0,
    4492             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,  0.0,
    4493             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,  0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,  0.0,
    4494             :              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},
    4495             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4496             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4497             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4498             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4499             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4500             :              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},
    4501             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4502             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4503             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4504             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4505             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,
    4506             :              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},
    4507             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4508             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4509             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4510             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4511             :              0.0, 0.0, 0.0, 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},
    4512             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4513             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4514             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4515             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4516             :              0.0, 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},
    4517             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4518             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4519             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4520             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,  0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4521             :              0.0, 0.0, 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},
    4522             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4523             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4524             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4525             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4526             :              0.0, 0.0, 0.0, 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},
    4527             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4528             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4529             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4530             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,   0.0,       0.0,   0.0,  0.0,
    4531             :              0.0, 0.0, 0.0, 0.0, 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},
    4532             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,       0.0,  0.0,  0.0,
    4533             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,       0.0,  0.0,  0.0,
    4534             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,       0.0,  0.0,  0.0,
    4535             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,   0.0,       0.0,  0.0,  0.0,
    4536             :              0.0, 0.0, 0.0, 0.0, 0.0, 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},
    4537             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,       0.0,   0.0,  0.0,
    4538             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,       0.0,   0.0,  0.0,
    4539             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,       0.0,   0.0,  0.0,
    4540             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0,       0.0,   0.0,  0.0,
    4541             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 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},
    4542             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,   0.0,  0.0,
    4543             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,   0.0,  0.0,
    4544             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,   0.0,  0.0,
    4545             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,   0.0,  0.0,
    4546             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 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},
    4547             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,   0.0,  0.0,
    4548             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,   0.0,  0.0,
    4549             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,   0.0,  0.0,
    4550             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,   0.0,  0.0,
    4551             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 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},
    4552             :             {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,   0.0,  0.0,
    4553             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,   0.0,  0.0,
    4554             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,   0.0,  0.0,
    4555             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,       0.0,   0.0,  0.0,
    4556             :              0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 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},
    4557             :         }};
    4558             : 
    4559             :     //*****************************************************************************
    4560             : 
    4561             :     template <size_t NumOfTemps, size_t NumOfConcs>
    4562         100 :     void InterpDefValuesForGlycolConc(
    4563             :         EnergyPlusData &state,
    4564             :         const std::array<Real64, NumOfConcs> &RawConcData,                         // concentrations for raw data
    4565             :         const std::array<std::array<Real64, NumOfTemps>, NumOfConcs> &RawPropData, // raw property data (concentration, temperature)
    4566             :         Real64 Concentration,                                                      // concentration of actual fluid mix
    4567             :         Array1D<Real64> &InterpData                                                // interpolated output data at proper concentration
    4568             :     )
    4569             :     {
    4570             : 
    4571             :         // SUBROUTINE INFORMATION:
    4572             :         //       AUTHOR         Rick Strand
    4573             :         //       DATE WRITTEN   June 2004
    4574             :         //       MODIFIED       na
    4575             :         //       RE-ENGINEERED  na
    4576             : 
    4577             :         // PURPOSE OF THIS SUBROUTINE:
    4578             :         // The purpose of this subroutine is to find the values for the property
    4579             :         // data at a particular concentration from default data that is at "generic"
    4580             :         // concentrations.  This is then returned to the main get routine and
    4581             :         // then used later in the program to find values at various temperatures.
    4582             :         // The ultimate purpose of this is to avoid double interpolation during
    4583             :         // the simulation.  Since concentration does not change during the simulation,
    4584             :         // there is no reason to do a double interpolation every time a property
    4585             :         // value is needed.
    4586             : 
    4587             :         // METHODOLOGY EMPLOYED:
    4588             :         // Fairly straight forward--find the two concentrations between which
    4589             :         // the actual concentration falls and then interpolate the property
    4590             :         // data using standard linear interpolation.  Note that data is stored
    4591             :         // in the format: std::array[Concentration][Temperature]
    4592             : 
    4593             :         // REFERENCES:
    4594             :         // na
    4595             : 
    4596             :         // USE STATEMENTS:
    4597             :         // na
    4598             : 
    4599             :         // Argument array dimensioning
    4600             : 
    4601             :         // Locals
    4602             :         // FUNCTION ARGUMENT DEFINITIONS:
    4603             : 
    4604             :         // INTERFACE BLOCK SPECIFICATIONS:
    4605             :         // na
    4606             : 
    4607             :         // DERIVED TYPE DEFINITIONS:
    4608             :         // na
    4609             : 
    4610             :         // SUBROUTINE PARAMETER DEFINITIONS:
    4611         100 :         constexpr Real64 ConcToler(0.0001); // Some reasonable value for comparisons
    4612             :         static constexpr std::string_view RoutineName("InterpDefValuesForGlycolConc: ");
    4613             : 
    4614             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    4615             :         size_t HiIndex;    // index on the high side of the concentration
    4616             :         Real64 InterpFrac; // intermediate value for interpolations
    4617             :         size_t LoopC;      // loop counter for concentration
    4618             :         size_t LoopT;      // loop counter for temperature
    4619             : 
    4620             :         // First, find where the actual concentration falls between the concentration data.
    4621             :         // Then, interpolate if necessary.
    4622         100 :         if (Concentration < RawConcData[0]) { // Concentration too low
    4623           0 :             ShowWarningError(state,
    4624           0 :                              format("{}Glycol concentration out of range for data (too low), concentration = {:.3R}", RoutineName, Concentration));
    4625           0 :             ShowContinueError(state, "Check your data or the definition of your glycols in the GlycolConcentrations input");
    4626           0 :             ShowContinueError(state, "Property data set to data for lowest concentration entered");
    4627           0 :             InterpData = RawPropData[0][0];
    4628         100 :         } else if (Concentration > RawConcData[NumOfConcs - 1]) { // Concentration too high
    4629           0 :             ShowWarningError(state,
    4630           0 :                              format("{}Glycol concentration out of range for data (too high), concentration = {:.3R}", RoutineName, Concentration));
    4631           0 :             ShowContinueError(state, "Check your data or the definition of your glycols in the GlycolConcentrations input");
    4632           0 :             ShowContinueError(state, "Property data set to data for highest concentration entered");
    4633           0 :             InterpData = RawPropData[NumOfConcs - 1][0];
    4634             :         } else {                      // Concentration somewhere between lowest and highest point--interpolate
    4635         100 :             HiIndex = NumOfConcs - 1; // Default to highest concentration - 1, since std::arrays start at 0
    4636         480 :             for (LoopC = 1; LoopC < NumOfConcs - 1; ++LoopC) {
    4637         480 :                 if (Concentration <= RawConcData[LoopC]) {
    4638         100 :                     HiIndex = LoopC;
    4639         100 :                     break; // LoopC DO loop
    4640             :                 }
    4641             :             }
    4642         100 :             if (std::abs(RawConcData[HiIndex] - RawConcData[HiIndex - 1]) >= ConcToler) {
    4643         100 :                 InterpFrac = (RawConcData[HiIndex] - Concentration) / (RawConcData[HiIndex] - RawConcData[HiIndex - 1]);
    4644        3400 :                 for (LoopT = 0; LoopT < NumOfTemps; ++LoopT) {
    4645        3300 :                     if ((RawPropData[HiIndex][LoopT] < ConcToler) || (RawPropData[HiIndex - 1][LoopT] < ConcToler)) {
    4646             :                         // One of the two values is zero--so we cannot interpolate for this point (assign to zero)
    4647         352 :                         InterpData(LoopT + 1) = 0.0;
    4648             :                     } else {
    4649        2948 :                         InterpData(LoopT + 1) =
    4650        2948 :                             RawPropData[HiIndex][LoopT] - (InterpFrac * (RawPropData[HiIndex][LoopT] - RawPropData[HiIndex - 1][LoopT]));
    4651             :                     }
    4652             :                 }
    4653             :             } else { // user has input data for concentrations that are too close or repeated, this must be fixed
    4654           0 :                 ShowFatalError(state,
    4655             :                                std::string{RoutineName} + "concentration values too close or data repeated, check your fluid property input data");
    4656             :             }
    4657             :         }
    4658         100 :     }
    4659             : 
    4660             :     //*****************************************************************************
    4661             : 
    4662          12 :     void InterpValuesForGlycolConc(EnergyPlusData &state,
    4663             :                                    int const NumOfConcs,               // number of concentrations (dimension of raw data)
    4664             :                                    int const NumOfTemps,               // number of temperatures (dimension of raw data)
    4665             :                                    const Array1D<Real64> &RawConcData, // concentrations for raw data
    4666             :                                    Array2S<Real64> const RawPropData,  // raw property data (temperature,concentration)
    4667             :                                    Real64 const Concentration,         // concentration of actual fluid mix
    4668             :                                    Array1D<Real64> &InterpData         // interpolated output data at proper concentration
    4669             :     )
    4670             :     {
    4671             : 
    4672             :         // SUBROUTINE INFORMATION:
    4673             :         //       AUTHOR         Rick Strand
    4674             :         //       DATE WRITTEN   June 2004
    4675             :         //       MODIFIED       na
    4676             :         //       RE-ENGINEERED  na
    4677             : 
    4678             :         // PURPOSE OF THIS SUBROUTINE:
    4679             :         // The purpose of this subroutine is to find the values for the property
    4680             :         // data at a particular concentration from default data that is at "generic"
    4681             :         // concentrations.  This is then returned to the main get routine and
    4682             :         // then used later in the program to find values at various temperatures.
    4683             :         // The ultimate purpose of this is to avoid double interpolation during
    4684             :         // the simulation.  Since concentration does not change during the simulation,
    4685             :         // there is no reason to do a double interpolation every time a property
    4686             :         // value is needed.
    4687             : 
    4688             :         // METHODOLOGY EMPLOYED:
    4689             :         // Fairly straight forward--find the two concentrations between which
    4690             :         // the actual concentration falls and then interpolate the property
    4691             :         // data using standard linear interpolation.  Note that data is stored
    4692             :         // in the format: 2dArray(Temperature,Concentration).  Temperature
    4693             :         // data is not needed here since we are only interpolating to eliminate
    4694             :         // the concentration as a variable (it really isn't one during the
    4695             :         // simulation).
    4696             : 
    4697             :         // REFERENCES:
    4698             :         // GetFluidPropertiesData--subroutine forces user to input data in
    4699             :         // order of increasing concentration.  This is assumed in this subroutine.
    4700             : 
    4701             :         // USE STATEMENTS:
    4702             :         // na
    4703             : 
    4704             :         // Argument array dimensioning
    4705             : 
    4706             :         // Locals
    4707             :         // FUNCTION ARGUMENT DEFINITIONS:
    4708             : 
    4709             :         // INTERFACE BLOCK SPECIFICATIONS:
    4710             :         // na
    4711             : 
    4712             :         // DERIVED TYPE DEFINITIONS:
    4713             :         // na
    4714             : 
    4715             :         // SUBROUTINE PARAMETER DEFINITIONS:
    4716          12 :         constexpr Real64 ConcToler(0.0001); // Some reasonable value for comparisons
    4717             :         static constexpr std::string_view RoutineName("InterpValuesForGlycolConc: ");
    4718             : 
    4719             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    4720             :         int HiIndex;       // index on the high side of the concentration
    4721             :         Real64 InterpFrac; // intermediate value for interpolations
    4722             :         int LoopC;         // loop counter for concentration
    4723             :         int LoopT;         // loop counter for temperature
    4724             : 
    4725             :         // First, find where the actual concentration falls between the concentration data.
    4726             :         // Then, interpolate if necessary.
    4727          12 :         if (Concentration < RawConcData(1)) { // Concentration too low
    4728           0 :             ShowWarningError(state,
    4729           0 :                              format("{}Glycol concentration out of range for data (too low), concentration = {:.3R}", RoutineName, Concentration));
    4730           0 :             ShowContinueError(state, "Check your data or the definition of your glycols in the GlycolConcentrations input");
    4731           0 :             ShowContinueError(state, "Property data set to data for lowest concentration entered");
    4732           0 :             InterpData = RawPropData(1, _);
    4733          12 :         } else if (Concentration > RawConcData(NumOfConcs)) { // Concentration too high
    4734           0 :             ShowWarningError(state,
    4735           0 :                              format("{}Glycol concentration out of range for data (too high), concentration = {:.3R}", RoutineName, Concentration));
    4736           0 :             ShowContinueError(state, "Check your data or the definition of your glycols in the GlycolConcentrations input");
    4737           0 :             ShowContinueError(state, "Property data set to data for highest concentration entered");
    4738           0 :             InterpData = RawPropData(NumOfConcs, _);
    4739             :         } else {                  // Concentration somewhere between lowest and highest point--interpolate
    4740          12 :             HiIndex = NumOfConcs; // Default to highest concentration
    4741          20 :             for (LoopC = 2; LoopC <= NumOfConcs - 1; ++LoopC) {
    4742          20 :                 if (Concentration <= RawConcData(LoopC)) {
    4743          12 :                     HiIndex = LoopC;
    4744          12 :                     break; // LoopC DO loop
    4745             :                 }
    4746             :             }
    4747             : 
    4748          12 :             if (HiIndex == 1) {
    4749           0 :                 for (LoopT = 1; LoopT <= NumOfTemps; ++LoopT) {
    4750           0 :                     InterpData(LoopT) = RawPropData(HiIndex, LoopT);
    4751             :                 }
    4752          12 :             } else if (std::abs(RawConcData(HiIndex) - RawConcData(HiIndex - 1)) >= ConcToler) {
    4753          12 :                 InterpFrac = (RawConcData(HiIndex) - Concentration) / (RawConcData(HiIndex) - RawConcData(HiIndex - 1));
    4754          84 :                 for (LoopT = 1; LoopT <= NumOfTemps; ++LoopT) {
    4755          72 :                     if ((RawPropData(HiIndex, LoopT) < ConcToler) || (RawPropData(HiIndex - 1, LoopT) < ConcToler)) {
    4756          28 :                         InterpData(LoopT) = 0.0;
    4757             :                     } else {
    4758          44 :                         InterpData(LoopT) =
    4759          44 :                             RawPropData(HiIndex, LoopT) - (InterpFrac * (RawPropData(HiIndex, LoopT) - RawPropData(HiIndex - 1, LoopT)));
    4760             :                     }
    4761             :                 }
    4762             :             } else { // user has input data for concentrations that are too close or repeated, this must be fixed
    4763           0 :                 ShowFatalError(state,
    4764           0 :                                std::string{RoutineName} + "concentration values too close or data repeated, check your fluid property input data");
    4765             :             }
    4766             :         }
    4767          12 :     }
    4768             : 
    4769             :     //*****************************************************************************
    4770             : 
    4771         469 :     void InitializeGlycolTempLimits(EnergyPlusData &state, bool &ErrorsFound) // set to true if errors found here
    4772             :     {
    4773             : 
    4774             :         // SUBROUTINE INFORMATION:
    4775             :         //       AUTHOR         Linda Lawrie
    4776             :         //       DATE WRITTEN   March 2008
    4777             :         //       MODIFIED       na
    4778             :         //       RE-ENGINEERED  na
    4779             : 
    4780             :         // PURPOSE OF THIS SUBROUTINE:
    4781             :         // This routine sets up the min/max temperature limits for the glycol properties.
    4782             :         // Most properties requested (e.g., Specific Heat) must be > 0 but the tables may
    4783             :         // be set up for symmetry and not be limited to just valid values.
    4784             : 
    4785             :         // METHODOLOGY EMPLOYED:
    4786             :         // na
    4787             : 
    4788             :         // REFERENCES:
    4789             :         // na
    4790             : 
    4791             :         // USE STATEMENTS:
    4792             :         // na
    4793             : 
    4794             :         // Locals
    4795             :         // SUBROUTINE ARGUMENT DEFINITIONS:
    4796             : 
    4797             :         // SUBROUTINE PARAMETER DEFINITIONS:
    4798             :         // na
    4799             : 
    4800             :         // INTERFACE BLOCK SPECIFICATIONS:
    4801             :         // na
    4802             : 
    4803             :         // DERIVED TYPE DEFINITIONS:
    4804             :         // na
    4805             : 
    4806             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    4807             :         int GlycolNum;
    4808             :         int IndexNum;
    4809             :         bool Failure;
    4810             : 
    4811         966 :         for (GlycolNum = 1; GlycolNum <= state.dataFluidProps->NumOfGlycols; ++GlycolNum) {
    4812         497 :             if (state.dataFluidProps->GlycolData(GlycolNum).CpDataPresent) {
    4813             :                 // check for lowest non-zero value by referencing temp data
    4814        3875 :                 for (IndexNum = 1; IndexNum <= state.dataFluidProps->GlycolData(GlycolNum).NumCpTempPts; ++IndexNum) {
    4815        3875 :                     if (state.dataFluidProps->GlycolData(GlycolNum).CpValues(IndexNum) <= 0.0) continue;
    4816         497 :                     state.dataFluidProps->GlycolData(GlycolNum).CpLowTempIndex = IndexNum;
    4817         497 :                     state.dataFluidProps->GlycolData(GlycolNum).CpLowTempValue = state.dataFluidProps->GlycolData(GlycolNum).CpTemps(IndexNum);
    4818         497 :                     break;
    4819             :                 }
    4820             :                 // check for highest non-zero value by referencing temp data
    4821         497 :                 for (IndexNum = state.dataFluidProps->GlycolData(GlycolNum).NumCpTempPts; IndexNum >= 1; --IndexNum) {
    4822         497 :                     if (state.dataFluidProps->GlycolData(GlycolNum).CpValues(IndexNum) <= 0.0) continue;
    4823         497 :                     state.dataFluidProps->GlycolData(GlycolNum).CpHighTempIndex = IndexNum;
    4824         497 :                     state.dataFluidProps->GlycolData(GlycolNum).CpHighTempValue = state.dataFluidProps->GlycolData(GlycolNum).CpTemps(IndexNum);
    4825         497 :                     break;
    4826             :                 }
    4827             :             }
    4828         497 :             if (state.dataFluidProps->GlycolData(GlycolNum).RhoDataPresent) {
    4829             :                 // check for lowest non-zero value by referencing temp data
    4830        3875 :                 for (IndexNum = 1; IndexNum <= state.dataFluidProps->GlycolData(GlycolNum).NumRhoTempPts; ++IndexNum) {
    4831        3875 :                     if (state.dataFluidProps->GlycolData(GlycolNum).RhoValues(IndexNum) <= 0.0) continue;
    4832         497 :                     state.dataFluidProps->GlycolData(GlycolNum).RhoLowTempIndex = IndexNum;
    4833         497 :                     state.dataFluidProps->GlycolData(GlycolNum).RhoLowTempValue = state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(IndexNum);
    4834         497 :                     break;
    4835             :                 }
    4836             :                 // check for highest non-zero value  by referencing temp data
    4837        2842 :                 for (IndexNum = state.dataFluidProps->GlycolData(GlycolNum).NumRhoTempPts; IndexNum >= 1; --IndexNum) {
    4838        2842 :                     if (state.dataFluidProps->GlycolData(GlycolNum).RhoValues(IndexNum) <= 0.0) continue;
    4839         497 :                     state.dataFluidProps->GlycolData(GlycolNum).RhoHighTempIndex = IndexNum;
    4840         497 :                     state.dataFluidProps->GlycolData(GlycolNum).RhoHighTempValue = state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(IndexNum);
    4841         497 :                     break;
    4842             :                 }
    4843             :             }
    4844         497 :             if (state.dataFluidProps->GlycolData(GlycolNum).CondDataPresent) {
    4845             :                 // check for lowest non-zero value by referencing temp data
    4846        3875 :                 for (IndexNum = 1; IndexNum <= state.dataFluidProps->GlycolData(GlycolNum).NumCondTempPts; ++IndexNum) {
    4847        3875 :                     if (state.dataFluidProps->GlycolData(GlycolNum).CondValues(IndexNum) <= 0.0) continue;
    4848         497 :                     state.dataFluidProps->GlycolData(GlycolNum).CondLowTempIndex = IndexNum;
    4849         497 :                     state.dataFluidProps->GlycolData(GlycolNum).CondLowTempValue = state.dataFluidProps->GlycolData(GlycolNum).CondTemps(IndexNum);
    4850         497 :                     break;
    4851             :                 }
    4852             :                 // check for highest non-zero value  by referencing temp data
    4853        2842 :                 for (IndexNum = state.dataFluidProps->GlycolData(GlycolNum).NumCondTempPts; IndexNum >= 1; --IndexNum) {
    4854        2842 :                     if (state.dataFluidProps->GlycolData(GlycolNum).CondValues(IndexNum) <= 0.0) continue;
    4855         497 :                     state.dataFluidProps->GlycolData(GlycolNum).CondHighTempIndex = IndexNum;
    4856         497 :                     state.dataFluidProps->GlycolData(GlycolNum).CondHighTempValue = state.dataFluidProps->GlycolData(GlycolNum).CondTemps(IndexNum);
    4857         497 :                     break;
    4858             :                 }
    4859             :             }
    4860         497 :             if (state.dataFluidProps->GlycolData(GlycolNum).ViscDataPresent) {
    4861             :                 // check for lowest non-zero value by referencing temp data
    4862        3875 :                 for (IndexNum = 1; IndexNum <= state.dataFluidProps->GlycolData(GlycolNum).NumViscTempPts; ++IndexNum) {
    4863        3875 :                     if (state.dataFluidProps->GlycolData(GlycolNum).ViscValues(IndexNum) <= 0.0) continue;
    4864         497 :                     state.dataFluidProps->GlycolData(GlycolNum).ViscLowTempIndex = IndexNum;
    4865         497 :                     state.dataFluidProps->GlycolData(GlycolNum).ViscLowTempValue = state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(IndexNum);
    4866         497 :                     break;
    4867             :                 }
    4868             :                 // check for highest non-zero value  by referencing temp data
    4869        2842 :                 for (IndexNum = state.dataFluidProps->GlycolData(GlycolNum).NumViscTempPts; IndexNum >= 1; --IndexNum) {
    4870        2842 :                     if (state.dataFluidProps->GlycolData(GlycolNum).ViscValues(IndexNum) <= 0.0) continue;
    4871         497 :                     state.dataFluidProps->GlycolData(GlycolNum).ViscHighTempIndex = IndexNum;
    4872         497 :                     state.dataFluidProps->GlycolData(GlycolNum).ViscHighTempValue = state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(IndexNum);
    4873         497 :                     break;
    4874             :                 }
    4875             :             }
    4876         497 :             Failure = false;
    4877             :             // Check to see that all are set to non-zero
    4878         497 :             if (state.dataFluidProps->GlycolData(GlycolNum).CpDataPresent) {
    4879         497 :                 if (state.dataFluidProps->GlycolData(GlycolNum).CpLowTempIndex == 0) Failure = true;
    4880         497 :                 if (state.dataFluidProps->GlycolData(GlycolNum).CpHighTempIndex == 0) Failure = true;
    4881             :             }
    4882         497 :             if (state.dataFluidProps->GlycolData(GlycolNum).RhoDataPresent) {
    4883         497 :                 if (state.dataFluidProps->GlycolData(GlycolNum).RhoLowTempIndex == 0) Failure = true;
    4884         497 :                 if (state.dataFluidProps->GlycolData(GlycolNum).RhoHighTempIndex == 0) Failure = true;
    4885             :             }
    4886         497 :             if (state.dataFluidProps->GlycolData(GlycolNum).CondDataPresent) {
    4887         497 :                 if (state.dataFluidProps->GlycolData(GlycolNum).CondLowTempIndex == 0) Failure = true;
    4888         497 :                 if (state.dataFluidProps->GlycolData(GlycolNum).CondHighTempIndex == 0) Failure = true;
    4889             :             }
    4890         497 :             if (state.dataFluidProps->GlycolData(GlycolNum).ViscDataPresent) {
    4891         497 :                 if (state.dataFluidProps->GlycolData(GlycolNum).ViscLowTempIndex == 0) Failure = true;
    4892         497 :                 if (state.dataFluidProps->GlycolData(GlycolNum).ViscHighTempIndex == 0) Failure = true;
    4893             :             }
    4894         497 :             if (Failure) {
    4895           0 :                 ShowSevereError(state,
    4896           0 :                                 "InitializeGlycolTempLimits: Required values for Glycol=" + state.dataFluidProps->GlycolData(GlycolNum).Name +
    4897             :                                     " are all zeroes for some data types.");
    4898           0 :                 ErrorsFound = true;
    4899             :             }
    4900             :         }
    4901         469 :     }
    4902             : 
    4903             :     //*****************************************************************************
    4904             : 
    4905         469 :     void InitializeRefrigerantLimits(EnergyPlusData &state, bool &ErrorsFound) // set to true if errors found here
    4906             :     {
    4907             : 
    4908             :         // SUBROUTINE INFORMATION:
    4909             :         //       AUTHOR         Linda Lawrie
    4910             :         //       DATE WRITTEN   March 2008
    4911             :         //       MODIFIED       na
    4912             :         //       RE-ENGINEERED  na
    4913             : 
    4914             :         // PURPOSE OF THIS SUBROUTINE:
    4915             :         // This routine sets up the min/max limits (usually temperature and/or pressure)
    4916             :         // for the refrigerant properties.
    4917             :         // Most properties requested (e.g., Specific Heat) must be > 0 but the tables may
    4918             :         // be set up for symmetry and not be limited to just valid values.
    4919             : 
    4920             :         // METHODOLOGY EMPLOYED:
    4921             :         // na
    4922             : 
    4923             :         // REFERENCES:
    4924             :         // na
    4925             : 
    4926             :         // USE STATEMENTS:
    4927             :         // na
    4928             : 
    4929             :         // Locals
    4930             :         // SUBROUTINE ARGUMENT DEFINITIONS:
    4931             : 
    4932             :         // SUBROUTINE PARAMETER DEFINITIONS:
    4933             :         // na
    4934             : 
    4935             :         // INTERFACE BLOCK SPECIFICATIONS:
    4936             :         // na
    4937             : 
    4938             :         // DERIVED TYPE DEFINITIONS:
    4939             :         // na
    4940             : 
    4941             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    4942             :         int RefrigNum;
    4943             :         int IndexNum;
    4944             :         bool Failure;
    4945             : 
    4946         966 :         for (RefrigNum = 1; RefrigNum <= state.dataFluidProps->NumOfRefrigerants; ++RefrigNum) {
    4947         497 :             for (IndexNum = 1; IndexNum <= state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints; ++IndexNum) {
    4948         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).PsValues(IndexNum) <= 0.0) continue;
    4949         497 :                 state.dataFluidProps->RefrigData(RefrigNum).PsLowPresIndex = IndexNum;
    4950         497 :                 state.dataFluidProps->RefrigData(RefrigNum).PsLowPresValue = state.dataFluidProps->RefrigData(RefrigNum).PsValues(IndexNum);
    4951         497 :                 state.dataFluidProps->RefrigData(RefrigNum).PsLowTempValue = state.dataFluidProps->RefrigData(RefrigNum).PsTemps(IndexNum);
    4952         497 :                 state.dataFluidProps->RefrigData(RefrigNum).PsLowTempIndex = IndexNum;
    4953         497 :                 break;
    4954             :             }
    4955         497 :             for (IndexNum = state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints; IndexNum >= 1; --IndexNum) {
    4956         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).PsValues(IndexNum) <= 0.0) continue;
    4957         497 :                 state.dataFluidProps->RefrigData(RefrigNum).PsHighPresIndex = IndexNum;
    4958         497 :                 state.dataFluidProps->RefrigData(RefrigNum).PsHighPresValue = state.dataFluidProps->RefrigData(RefrigNum).PsValues(IndexNum);
    4959         497 :                 state.dataFluidProps->RefrigData(RefrigNum).PsHighTempValue = state.dataFluidProps->RefrigData(RefrigNum).PsTemps(IndexNum);
    4960         497 :                 state.dataFluidProps->RefrigData(RefrigNum).PsHighTempIndex = IndexNum;
    4961         497 :                 break;
    4962             :             }
    4963         514 :             for (IndexNum = 1; IndexNum <= state.dataFluidProps->RefrigData(RefrigNum).NumHPoints; ++IndexNum) {
    4964         514 :                 if (state.dataFluidProps->RefrigData(RefrigNum).HfValues(IndexNum) <= 0.0) continue;
    4965         497 :                 state.dataFluidProps->RefrigData(RefrigNum).HfLowTempValue = state.dataFluidProps->RefrigData(RefrigNum).HfValues(IndexNum);
    4966         497 :                 state.dataFluidProps->RefrigData(RefrigNum).HfLowTempIndex = IndexNum;
    4967         497 :                 break;
    4968             :             }
    4969         497 :             for (IndexNum = state.dataFluidProps->RefrigData(RefrigNum).NumHPoints; IndexNum >= 1; --IndexNum) {
    4970         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).HfValues(IndexNum) <= 0.0) continue;
    4971         497 :                 state.dataFluidProps->RefrigData(RefrigNum).HfHighTempValue = state.dataFluidProps->RefrigData(RefrigNum).HfValues(IndexNum);
    4972         497 :                 state.dataFluidProps->RefrigData(RefrigNum).HfHighTempIndex = IndexNum;
    4973         497 :                 break;
    4974             :             }
    4975         497 :             for (IndexNum = 1; IndexNum <= state.dataFluidProps->RefrigData(RefrigNum).NumHPoints; ++IndexNum) {
    4976         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).HfgValues(IndexNum) <= 0.0) continue;
    4977         497 :                 state.dataFluidProps->RefrigData(RefrigNum).HfgLowTempValue = state.dataFluidProps->RefrigData(RefrigNum).HfgValues(IndexNum);
    4978         497 :                 state.dataFluidProps->RefrigData(RefrigNum).HfgLowTempIndex = IndexNum;
    4979         497 :                 break;
    4980             :             }
    4981         497 :             for (IndexNum = state.dataFluidProps->RefrigData(RefrigNum).NumHPoints; IndexNum >= 1; --IndexNum) {
    4982         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).HfgValues(IndexNum) <= 0.0) continue;
    4983         497 :                 state.dataFluidProps->RefrigData(RefrigNum).HfgHighTempValue = state.dataFluidProps->RefrigData(RefrigNum).HfgValues(IndexNum);
    4984         497 :                 state.dataFluidProps->RefrigData(RefrigNum).HfgHighTempIndex = IndexNum;
    4985         497 :                 break;
    4986             :             }
    4987         497 :             for (IndexNum = 1; IndexNum <= state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints; ++IndexNum) {
    4988         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).CpfValues(IndexNum) <= 0.0) continue;
    4989         497 :                 state.dataFluidProps->RefrigData(RefrigNum).CpfLowTempValue = state.dataFluidProps->RefrigData(RefrigNum).CpfValues(IndexNum);
    4990         497 :                 state.dataFluidProps->RefrigData(RefrigNum).CpfLowTempIndex = IndexNum;
    4991         497 :                 break;
    4992             :             }
    4993         518 :             for (IndexNum = state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints; IndexNum >= 1; --IndexNum) {
    4994         518 :                 if (state.dataFluidProps->RefrigData(RefrigNum).CpfValues(IndexNum) <= 0.0) continue;
    4995         497 :                 state.dataFluidProps->RefrigData(RefrigNum).CpfHighTempValue = state.dataFluidProps->RefrigData(RefrigNum).CpfValues(IndexNum);
    4996         497 :                 state.dataFluidProps->RefrigData(RefrigNum).CpfHighTempIndex = IndexNum;
    4997         497 :                 break;
    4998             :             }
    4999         497 :             for (IndexNum = 1; IndexNum <= state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints; ++IndexNum) {
    5000         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).CpfgValues(IndexNum) <= 0.0) continue;
    5001         497 :                 state.dataFluidProps->RefrigData(RefrigNum).CpfgLowTempValue = state.dataFluidProps->RefrigData(RefrigNum).CpfgValues(IndexNum);
    5002         497 :                 state.dataFluidProps->RefrigData(RefrigNum).CpfgLowTempIndex = IndexNum;
    5003         497 :                 break;
    5004             :             }
    5005         518 :             for (IndexNum = state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints; IndexNum >= 1; --IndexNum) {
    5006         518 :                 if (state.dataFluidProps->RefrigData(RefrigNum).CpfgValues(IndexNum) <= 0.0) continue;
    5007         497 :                 state.dataFluidProps->RefrigData(RefrigNum).CpfgHighTempValue = state.dataFluidProps->RefrigData(RefrigNum).CpfgValues(IndexNum);
    5008         497 :                 state.dataFluidProps->RefrigData(RefrigNum).CpfgHighTempIndex = IndexNum;
    5009         497 :                 break;
    5010             :             }
    5011         497 :             for (IndexNum = 1; IndexNum <= state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints; ++IndexNum) {
    5012         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).RhofValues(IndexNum) <= 0.0) continue;
    5013         497 :                 state.dataFluidProps->RefrigData(RefrigNum).RhofLowTempValue = state.dataFluidProps->RefrigData(RefrigNum).RhofValues(IndexNum);
    5014         497 :                 state.dataFluidProps->RefrigData(RefrigNum).RhofLowTempIndex = IndexNum;
    5015         497 :                 break;
    5016             :             }
    5017         497 :             for (IndexNum = state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints; IndexNum >= 1; --IndexNum) {
    5018         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).RhofValues(IndexNum) <= 0.0) continue;
    5019         497 :                 state.dataFluidProps->RefrigData(RefrigNum).RhofHighTempValue = state.dataFluidProps->RefrigData(RefrigNum).RhofValues(IndexNum);
    5020         497 :                 state.dataFluidProps->RefrigData(RefrigNum).RhofHighTempIndex = IndexNum;
    5021         497 :                 break;
    5022             :             }
    5023         497 :             for (IndexNum = 1; IndexNum <= state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints; ++IndexNum) {
    5024         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).RhofgValues(IndexNum) <= 0.0) continue;
    5025         497 :                 state.dataFluidProps->RefrigData(RefrigNum).RhofgLowTempValue = state.dataFluidProps->RefrigData(RefrigNum).RhofgValues(IndexNum);
    5026         497 :                 state.dataFluidProps->RefrigData(RefrigNum).RhofgLowTempIndex = IndexNum;
    5027         497 :                 break;
    5028             :             }
    5029         497 :             for (IndexNum = state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints; IndexNum >= 1; --IndexNum) {
    5030         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).RhofgValues(IndexNum) <= 0.0) continue;
    5031         497 :                 state.dataFluidProps->RefrigData(RefrigNum).RhofgHighTempValue = state.dataFluidProps->RefrigData(RefrigNum).RhofgValues(IndexNum);
    5032         497 :                 state.dataFluidProps->RefrigData(RefrigNum).RhofgHighTempIndex = IndexNum;
    5033         497 :                 break;
    5034             :             }
    5035         497 :             Failure = false;
    5036             :             // Check to see that all are set to non-zero
    5037         497 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints > 0) {
    5038         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).PsLowPresIndex == 0) Failure = true;
    5039         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).PsLowTempIndex == 0) Failure = true;
    5040         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).PsHighPresIndex == 0) Failure = true;
    5041         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).PsHighTempIndex == 0) Failure = true;
    5042             :             }
    5043         497 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumHPoints > 0) {
    5044         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).HfLowTempIndex == 0) Failure = true;
    5045         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).HfgLowTempIndex == 0) Failure = true;
    5046         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).HfHighTempIndex == 0) Failure = true;
    5047         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).HfgHighTempIndex == 0) Failure = true;
    5048             :             }
    5049         497 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints > 0) {
    5050         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).CpfLowTempIndex == 0) Failure = true;
    5051         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).CpfgLowTempIndex == 0) Failure = true;
    5052         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).CpfHighTempIndex == 0) Failure = true;
    5053         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).CpfgHighTempIndex == 0) Failure = true;
    5054             :             }
    5055         497 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints > 0) {
    5056         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).RhofLowTempIndex == 0) Failure = true;
    5057         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).RhofgLowTempIndex == 0) Failure = true;
    5058         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).RhofHighTempIndex == 0) Failure = true;
    5059         497 :                 if (state.dataFluidProps->RefrigData(RefrigNum).RhofgHighTempIndex == 0) Failure = true;
    5060             :             }
    5061         497 :             if (Failure) {
    5062           0 :                 ShowSevereError(state,
    5063           0 :                                 "InitializeRefrigerantLimits: Required values for Refrigerant=" + state.dataFluidProps->RefrigData(RefrigNum).Name +
    5064             :                                     " are all zeroes for some data types.");
    5065           0 :                 ErrorsFound = true;
    5066             :             }
    5067             :         }
    5068         469 :     }
    5069             : 
    5070             :     //*****************************************************************************
    5071             : 
    5072           0 :     void ReportAndTestGlycols(EnergyPlusData &state)
    5073             :     {
    5074             : 
    5075             :         // SUBROUTINE INFORMATION:
    5076             :         //       AUTHOR         Linda Lawrie
    5077             :         //       DATE WRITTEN   March 2008
    5078             :         //       MODIFIED       na
    5079             :         //       RE-ENGINEERED  na
    5080             : 
    5081             :         // PURPOSE OF THIS SUBROUTINE:
    5082             :         // This subroutine is written to report and test glycols through their range
    5083             :         // of temperatures and make sure that proper values will be returned.
    5084             : 
    5085             :         // METHODOLOGY EMPLOYED:
    5086             :         // Use internal structure as the temperature limits. Write output to the
    5087             :         // debug output file.
    5088             : 
    5089             :         // REFERENCES:
    5090             :         // na
    5091             : 
    5092             :         // USE STATEMENTS:
    5093             :         // na
    5094             : 
    5095             :         // Locals
    5096             :         // SUBROUTINE ARGUMENT DEFINITIONS:
    5097             :         // na
    5098             : 
    5099             :         // SUBROUTINE PARAMETER DEFINITIONS:
    5100           0 :         constexpr Real64 incr(10.0);
    5101             :         static constexpr std::string_view RoutineName("ReportAndTestGlycols");
    5102             : 
    5103             :         // INTERFACE BLOCK SPECIFICATIONS:
    5104             :         // na
    5105             : 
    5106             :         // DERIVED TYPE DEFINITIONS:
    5107             :         // na
    5108             : 
    5109             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    5110             :         int GlycolNum;      // Loop Counter
    5111             :         Real64 Temperature; // Temperature to drive values
    5112             :         Real64 ReturnValue; // Values returned from glycol functions
    5113             :         int Loop;           // Loop Counter
    5114             :         int GlycolIndex;    // index used in routine / function calls, value is returned on first use (when index=0)
    5115             : 
    5116           0 :         state.dataFluidProps->GetInput = false; // input has already been gotten
    5117             : 
    5118           0 :         for (GlycolNum = 1; GlycolNum <= state.dataFluidProps->NumOfGlycols; ++GlycolNum) {
    5119           0 :             GlycolIndex = 0; // used in routine calls -- value is returned when first 0
    5120             :             // Lay out the basic values:
    5121           0 :             if (state.dataFluidProps->GlycolData(GlycolNum).GlycolName != "") {
    5122           0 :                 print(state.files.debug,
    5123             :                       "Glycol={}, Mixture fluid={}\n",
    5124           0 :                       state.dataFluidProps->GlycolData(GlycolNum).Name,
    5125           0 :                       state.dataFluidProps->GlycolData(GlycolNum).GlycolName);
    5126             :             } else {
    5127           0 :                 print(state.files.debug, "Glycol={}\n", state.dataFluidProps->GlycolData(GlycolNum).Name);
    5128             :             }
    5129           0 :             print(state.files.debug, "Concentration:,{:.2R}\n", state.dataFluidProps->GlycolData(GlycolNum).Concentration);
    5130           0 :             if (state.dataFluidProps->GlycolData(GlycolNum).CpDataPresent) {
    5131           0 :                 print(state.files.debug,
    5132             :                       "Specific Heat Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
    5133           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CpLowTempValue,
    5134           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CpLowTempIndex,
    5135           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CpHighTempValue,
    5136           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CpHighTempIndex);
    5137           0 :                 print(state.files.debug, "{}", "Temperatures:");
    5138           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumCpTempPts - 1; ++Loop) {
    5139           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).CpTemps(Loop));
    5140             :                 }
    5141           0 :                 print(state.files.debug,
    5142             :                       ",{}\n",
    5143           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CpTemps(state.dataFluidProps->GlycolData(GlycolNum).NumCpTempPts));
    5144           0 :                 print(state.files.debug, "{}", "Specific Heat:");
    5145           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumCpTempPts - 1; ++Loop) {
    5146           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).CpValues(Loop));
    5147             :                 }
    5148           0 :                 print(state.files.debug,
    5149             :                       ",{}\n",
    5150           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CpValues(state.dataFluidProps->GlycolData(GlycolNum).NumCpTempPts));
    5151             :             }
    5152           0 :             if (state.dataFluidProps->GlycolData(GlycolNum).RhoDataPresent) {
    5153           0 :                 print(state.files.debug,
    5154             :                       "Density Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
    5155           0 :                       state.dataFluidProps->GlycolData(GlycolNum).RhoLowTempValue,
    5156           0 :                       state.dataFluidProps->GlycolData(GlycolNum).RhoLowTempIndex,
    5157           0 :                       state.dataFluidProps->GlycolData(GlycolNum).RhoHighTempValue,
    5158           0 :                       state.dataFluidProps->GlycolData(GlycolNum).RhoHighTempIndex);
    5159           0 :                 print(state.files.debug, "{}", "Temperatures:");
    5160           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumRhoTempPts - 1; ++Loop) {
    5161           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(Loop));
    5162             :                 }
    5163           0 :                 print(state.files.debug,
    5164             :                       ",{}\n",
    5165           0 :                       state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(state.dataFluidProps->GlycolData(GlycolNum).NumRhoTempPts));
    5166           0 :                 print(state.files.debug, "{}", "Density:");
    5167           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumRhoTempPts - 1; ++Loop) {
    5168           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).RhoValues(Loop));
    5169             :                 }
    5170           0 :                 print(state.files.debug,
    5171             :                       ",{}\n",
    5172           0 :                       state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(state.dataFluidProps->GlycolData(GlycolNum).NumRhoTempPts));
    5173             :             }
    5174           0 :             if (state.dataFluidProps->GlycolData(GlycolNum).CondDataPresent) {
    5175           0 :                 print(state.files.debug,
    5176             :                       "Conductivity Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
    5177           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CondLowTempValue,
    5178           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CondLowTempIndex,
    5179           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CondHighTempValue,
    5180           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CondHighTempIndex);
    5181           0 :                 print(state.files.debug, "{}", "Temperatures:");
    5182           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumCondTempPts - 1; ++Loop) {
    5183           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).CondTemps(Loop));
    5184             :                 }
    5185           0 :                 print(state.files.debug,
    5186             :                       ",{}\n",
    5187           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CondTemps(state.dataFluidProps->GlycolData(GlycolNum).NumCondTempPts));
    5188           0 :                 print(state.files.debug, "{}", "Conductivity:");
    5189           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumCondTempPts - 1; ++Loop) {
    5190           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).CondValues(Loop));
    5191             :                 }
    5192           0 :                 print(state.files.debug,
    5193             :                       ",{}\n",
    5194           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CondValues(state.dataFluidProps->GlycolData(GlycolNum).NumCondTempPts));
    5195             :             }
    5196           0 :             if (state.dataFluidProps->GlycolData(GlycolNum).ViscDataPresent) {
    5197           0 :                 print(state.files.debug,
    5198             :                       "Viscosity Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
    5199           0 :                       state.dataFluidProps->GlycolData(GlycolNum).ViscLowTempValue,
    5200           0 :                       state.dataFluidProps->GlycolData(GlycolNum).ViscLowTempIndex,
    5201           0 :                       state.dataFluidProps->GlycolData(GlycolNum).ViscHighTempValue,
    5202           0 :                       state.dataFluidProps->GlycolData(GlycolNum).ViscHighTempIndex);
    5203           0 :                 print(state.files.debug, "{}", "Temperatures:");
    5204           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumViscTempPts - 1; ++Loop) {
    5205           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(Loop));
    5206             :                 }
    5207           0 :                 print(state.files.debug,
    5208             :                       ",{}\n",
    5209           0 :                       state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(state.dataFluidProps->GlycolData(GlycolNum).NumViscTempPts));
    5210           0 :                 print(state.files.debug, "{}", "Viscosity:");
    5211           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumViscTempPts - 1; ++Loop) {
    5212           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).ViscValues(Loop));
    5213             :                 }
    5214           0 :                 print(state.files.debug,
    5215             :                       ",{}\n",
    5216           0 :                       state.dataFluidProps->GlycolData(GlycolNum).ViscValues(state.dataFluidProps->GlycolData(GlycolNum).NumViscTempPts));
    5217             :             }
    5218             :             // ============================================
    5219             :             // Glycol Results, using out of bounds to out of bounds values in calling
    5220             :             // ============================================
    5221             : 
    5222             :             // ========= Specific Heat from Temperatures
    5223           0 :             print(state.files.debug, "Glycol={} **** Results ****\n", state.dataFluidProps->GlycolData(GlycolNum).Name);
    5224           0 :             if (state.dataFluidProps->GlycolData(GlycolNum).CpDataPresent) {
    5225           0 :                 print(state.files.debug, "Specific Heat Results at Temperatures:");
    5226           0 :                 print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).CpTemps(1) - incr);
    5227             : 
    5228           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumCpTempPts - 1; ++Loop) {
    5229           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).CpTemps(Loop));
    5230           0 :                     Temperature =
    5231           0 :                         state.dataFluidProps->GlycolData(GlycolNum).CpTemps(Loop) +
    5232           0 :                         (state.dataFluidProps->GlycolData(GlycolNum).CpTemps(Loop + 1) - state.dataFluidProps->GlycolData(GlycolNum).CpTemps(Loop)) /
    5233             :                             2.0;
    5234           0 :                     print(state.files.debug, ",{:.2R}", Temperature);
    5235             :                 }
    5236           0 :                 print(state.files.debug,
    5237             :                       ",{:.2R}",
    5238           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CpTemps(state.dataFluidProps->GlycolData(GlycolNum).NumCpTempPts));
    5239           0 :                 print(state.files.debug,
    5240             :                       ",{:.2R}\n",
    5241           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CpTemps(state.dataFluidProps->GlycolData(GlycolNum).NumCpTempPts) + incr);
    5242           0 :                 print(state.files.debug, "Specific Heat:");
    5243           0 :                 Temperature = state.dataFluidProps->GlycolData(GlycolNum).CpTemps(1) - incr;
    5244           0 :                 ReturnValue = GetSpecificHeatGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5245           0 :                 print(state.files.debug, ",{:.2R}", ReturnValue);
    5246           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumCpTempPts - 1; ++Loop) {
    5247           0 :                     Temperature = state.dataFluidProps->GlycolData(GlycolNum).CpTemps(Loop);
    5248           0 :                     ReturnValue =
    5249           0 :                         GetSpecificHeatGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5250           0 :                     print(state.files.debug, ",{:.2R}", ReturnValue);
    5251           0 :                     Temperature =
    5252           0 :                         state.dataFluidProps->GlycolData(GlycolNum).CpTemps(Loop) +
    5253           0 :                         (state.dataFluidProps->GlycolData(GlycolNum).CpTemps(Loop + 1) - state.dataFluidProps->GlycolData(GlycolNum).CpTemps(Loop)) /
    5254             :                             2.0;
    5255           0 :                     ReturnValue =
    5256           0 :                         GetSpecificHeatGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5257           0 :                     print(state.files.debug, ",{:.2R}", ReturnValue);
    5258             :                 }
    5259           0 :                 Temperature = state.dataFluidProps->GlycolData(GlycolNum).CpTemps(state.dataFluidProps->GlycolData(GlycolNum).NumCpTempPts);
    5260           0 :                 ReturnValue = GetSpecificHeatGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5261           0 :                 print(state.files.debug, ",{:.2R}", ReturnValue);
    5262           0 :                 Temperature = state.dataFluidProps->GlycolData(GlycolNum).CpTemps(state.dataFluidProps->GlycolData(GlycolNum).NumCpTempPts) + incr;
    5263           0 :                 ReturnValue = GetSpecificHeatGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5264           0 :                 print(state.files.debug, ",{:.2R}\n", ReturnValue);
    5265             :             }
    5266             : 
    5267             :             // ========= Density from Temperatures
    5268           0 :             if (state.dataFluidProps->GlycolData(GlycolNum).RhoDataPresent) {
    5269           0 :                 print(state.files.debug, "Density Results at Temperatures:");
    5270           0 :                 print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(1) - incr);
    5271           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumRhoTempPts - 1; ++Loop) {
    5272           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(Loop));
    5273           0 :                     Temperature =
    5274           0 :                         state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(Loop) + (state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(Loop + 1) -
    5275           0 :                                                                                       state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(Loop)) /
    5276             :                                                                                          2.0;
    5277           0 :                     print(state.files.debug, ",{:.2R}", Temperature);
    5278             :                 }
    5279           0 :                 print(state.files.debug,
    5280             :                       ",{}",
    5281           0 :                       state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(state.dataFluidProps->GlycolData(GlycolNum).NumRhoTempPts));
    5282           0 :                 print(state.files.debug,
    5283             :                       ",{:.2R}\n",
    5284           0 :                       state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(state.dataFluidProps->GlycolData(GlycolNum).NumRhoTempPts) + incr);
    5285           0 :                 print(state.files.debug, "Density:");
    5286           0 :                 Temperature = state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(1) - incr;
    5287           0 :                 ReturnValue = GetDensityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5288           0 :                 print(state.files.debug, ",{:.3R}", ReturnValue);
    5289           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumRhoTempPts - 1; ++Loop) {
    5290           0 :                     Temperature = state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(Loop);
    5291           0 :                     ReturnValue = GetDensityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5292           0 :                     print(state.files.debug, ",{:.3R}", ReturnValue);
    5293           0 :                     Temperature =
    5294           0 :                         state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(Loop) + (state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(Loop + 1) -
    5295           0 :                                                                                       state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(Loop)) /
    5296             :                                                                                          2.0;
    5297           0 :                     ReturnValue = GetDensityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5298           0 :                     print(state.files.debug, ",{:.3R}", ReturnValue);
    5299             :                 }
    5300           0 :                 Temperature = state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(state.dataFluidProps->GlycolData(GlycolNum).NumRhoTempPts);
    5301           0 :                 ReturnValue = GetDensityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5302           0 :                 print(state.files.debug, ",{:.3R}", ReturnValue);
    5303           0 :                 Temperature = state.dataFluidProps->GlycolData(GlycolNum).RhoTemps(state.dataFluidProps->GlycolData(GlycolNum).NumRhoTempPts) + incr;
    5304           0 :                 ReturnValue = GetDensityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5305           0 :                 print(state.files.debug, ",{:.3R}\n", ReturnValue);
    5306             :             }
    5307             : 
    5308             :             // ========= Conductivity from Temperatures
    5309           0 :             if (state.dataFluidProps->GlycolData(GlycolNum).CondDataPresent) {
    5310           0 :                 print(state.files.debug, "Conductivity Results at Temperatures:");
    5311           0 :                 print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).CondTemps(1) - incr);
    5312           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumCondTempPts - 1; ++Loop) {
    5313           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).CondTemps(Loop));
    5314           0 :                     Temperature = state.dataFluidProps->GlycolData(GlycolNum).CondTemps(Loop) +
    5315           0 :                                   (state.dataFluidProps->GlycolData(GlycolNum).CondTemps(Loop + 1) -
    5316           0 :                                    state.dataFluidProps->GlycolData(GlycolNum).CondTemps(Loop)) /
    5317             :                                       2.0;
    5318           0 :                     print(state.files.debug, ",{:.2R}", Temperature);
    5319             :                 }
    5320           0 :                 print(state.files.debug,
    5321             :                       ",{:.2R}",
    5322           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CondTemps(state.dataFluidProps->GlycolData(GlycolNum).NumCondTempPts));
    5323           0 :                 print(state.files.debug,
    5324             :                       ",{:.2R}\n",
    5325           0 :                       state.dataFluidProps->GlycolData(GlycolNum).CondTemps(state.dataFluidProps->GlycolData(GlycolNum).NumCondTempPts) + incr);
    5326           0 :                 print(state.files.debug, "Conductivity:");
    5327           0 :                 Temperature = state.dataFluidProps->GlycolData(GlycolNum).CondTemps(1) - incr;
    5328           0 :                 ReturnValue = GetConductivityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5329           0 :                 print(state.files.debug, ",{:.3R}", ReturnValue);
    5330           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumCondTempPts - 1; ++Loop) {
    5331           0 :                     Temperature = state.dataFluidProps->GlycolData(GlycolNum).CondTemps(Loop);
    5332           0 :                     ReturnValue =
    5333           0 :                         GetConductivityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5334           0 :                     print(state.files.debug, ",{:.3R}", ReturnValue);
    5335           0 :                     Temperature = state.dataFluidProps->GlycolData(GlycolNum).CondTemps(Loop) +
    5336           0 :                                   (state.dataFluidProps->GlycolData(GlycolNum).CondTemps(Loop + 1) -
    5337           0 :                                    state.dataFluidProps->GlycolData(GlycolNum).CondTemps(Loop)) /
    5338             :                                       2.0;
    5339           0 :                     ReturnValue =
    5340           0 :                         GetConductivityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5341           0 :                     print(state.files.debug, ",{:.3R}", ReturnValue);
    5342             :                 }
    5343           0 :                 Temperature = state.dataFluidProps->GlycolData(GlycolNum).CondTemps(state.dataFluidProps->GlycolData(GlycolNum).NumCondTempPts);
    5344           0 :                 ReturnValue = GetConductivityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5345           0 :                 print(state.files.debug, ",{:.3R}", ReturnValue);
    5346           0 :                 Temperature =
    5347           0 :                     state.dataFluidProps->GlycolData(GlycolNum).CondTemps(state.dataFluidProps->GlycolData(GlycolNum).NumCondTempPts) + incr;
    5348           0 :                 ReturnValue = GetConductivityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5349           0 :                 print(state.files.debug, ",{:.3R}\n", ReturnValue);
    5350             :             }
    5351             : 
    5352             :             // ========= Viscosity from Temperatures
    5353           0 :             if (state.dataFluidProps->GlycolData(GlycolNum).ViscDataPresent) {
    5354           0 :                 print(state.files.debug, "Viscosity Results at Temperatures:");
    5355           0 :                 print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(1) - incr);
    5356           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumViscTempPts - 1; ++Loop) {
    5357           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(Loop));
    5358           0 :                     Temperature = state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(Loop) +
    5359           0 :                                   (state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(Loop + 1) -
    5360           0 :                                    state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(Loop)) /
    5361             :                                       2.0;
    5362           0 :                     print(state.files.debug, ",{:.2R}", Temperature);
    5363             :                 }
    5364           0 :                 print(state.files.debug,
    5365             :                       ",{:.2R}",
    5366           0 :                       state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(state.dataFluidProps->GlycolData(GlycolNum).NumViscTempPts));
    5367           0 :                 print(state.files.debug,
    5368             :                       ",{:.2R}\n",
    5369           0 :                       state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(state.dataFluidProps->GlycolData(GlycolNum).NumViscTempPts) + incr);
    5370           0 :                 print(state.files.debug, "Viscosity:");
    5371           0 :                 Temperature = state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(1) - incr;
    5372           0 :                 ReturnValue = GetViscosityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5373           0 :                 print(state.files.debug, ",{:.4R}", ReturnValue);
    5374           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->GlycolData(GlycolNum).NumViscTempPts - 1; ++Loop) {
    5375           0 :                     Temperature = state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(Loop);
    5376           0 :                     ReturnValue = GetViscosityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5377           0 :                     print(state.files.debug, ",{:.4R}", ReturnValue);
    5378           0 :                     Temperature = state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(Loop) +
    5379           0 :                                   (state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(Loop + 1) -
    5380           0 :                                    state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(Loop)) /
    5381             :                                       2.0;
    5382           0 :                     ReturnValue = GetViscosityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5383           0 :                     print(state.files.debug, ",{:.4R}", ReturnValue);
    5384             :                 }
    5385           0 :                 Temperature = state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(state.dataFluidProps->GlycolData(GlycolNum).NumViscTempPts);
    5386           0 :                 ReturnValue = GetViscosityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5387           0 :                 print(state.files.debug, ",{:.4R}", ReturnValue);
    5388           0 :                 Temperature =
    5389           0 :                     state.dataFluidProps->GlycolData(GlycolNum).ViscTemps(state.dataFluidProps->GlycolData(GlycolNum).NumViscTempPts) + incr;
    5390           0 :                 ReturnValue = GetViscosityGlycol(state, state.dataFluidProps->GlycolData(GlycolNum).Name, Temperature, GlycolIndex, RoutineName);
    5391           0 :                 print(state.files.debug, ",{:.4R}\n", ReturnValue);
    5392             :             }
    5393             :         }
    5394           0 :     }
    5395             : 
    5396             :     //*****************************************************************************
    5397             : 
    5398           0 :     void ReportAndTestRefrigerants(EnergyPlusData &state)
    5399             :     {
    5400             : 
    5401             :         // SUBROUTINE INFORMATION:
    5402             :         //       AUTHOR         Linda Lawrie
    5403             :         //       DATE WRITTEN   March 2008; only stub provided to satisfy calling programs.
    5404             :         //       MODIFIED       na
    5405             :         //       RE-ENGINEERED  na
    5406             : 
    5407             :         // PURPOSE OF THIS SUBROUTINE:
    5408             :         // This subroutine is written to report and test refrigerants through their range
    5409             :         // of inputs (temperatures?) and make sure that proper values will be returned.
    5410             : 
    5411             :         // METHODOLOGY EMPLOYED:
    5412             :         // Use internal structure as the range limits. Write output to the
    5413             :         // debug output file.
    5414             : 
    5415             :         // REFERENCES:
    5416             :         // na
    5417             : 
    5418             :         // USE STATEMENTS:
    5419             :         // na
    5420             : 
    5421             :         // Locals
    5422             :         // SUBROUTINE ARGUMENT DEFINITIONS:
    5423             :         // na
    5424             : 
    5425             :         // SUBROUTINE PARAMETER DEFINITIONS:
    5426           0 :         constexpr Real64 incr(10.0);
    5427           0 :         constexpr Real64 Quality(1.0);
    5428             :         static constexpr std::string_view RoutineName("ReportAndTestRefrigerants");
    5429             : 
    5430             :         // INTERFACE BLOCK SPECIFICATIONS:
    5431             :         // na
    5432             : 
    5433             :         // DERIVED TYPE DEFINITIONS:
    5434             :         // na
    5435             : 
    5436             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    5437             :         int RefrigNum;      // Loop Counter
    5438             :         Real64 Temperature; // Temperature to drive values
    5439             :         Real64 ReturnValue; // Values returned from refrigerant functions
    5440             :         int Loop;           // Loop Counter
    5441             :         int Loop1;          // Loop Counter
    5442             :         int RefrigIndex;
    5443             : 
    5444           0 :         state.dataFluidProps->GetInput = false; // input has already been gotten
    5445             : 
    5446           0 :         for (RefrigNum = 1; RefrigNum <= state.dataFluidProps->NumOfRefrigerants; ++RefrigNum) {
    5447           0 :             RefrigIndex = 0; // used in routine calls -- value is returned when first 0
    5448             :             // Lay out the basic values:
    5449           0 :             if (!state.dataFluidProps->RefrigData(RefrigNum).Name.empty()) {
    5450           0 :                 print(state.files.debug, "Refrigerant={}", state.dataFluidProps->RefrigData(RefrigNum).Name);
    5451             :             }
    5452           0 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints > 0) {
    5453           0 :                 print(state.files.debug,
    5454             :                       "Saturation Pressures Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
    5455           0 :                       state.dataFluidProps->RefrigData(RefrigNum).PsLowTempValue,
    5456           0 :                       state.dataFluidProps->RefrigData(RefrigNum).PsLowTempIndex,
    5457           0 :                       state.dataFluidProps->RefrigData(RefrigNum).PsHighTempValue,
    5458           0 :                       state.dataFluidProps->RefrigData(RefrigNum).PsHighTempIndex);
    5459           0 :                 print(state.files.debug, "Temperatures:");
    5460           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints - 1; ++Loop) {
    5461           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).PsTemps(Loop));
    5462             :                 }
    5463           0 :                 print(state.files.debug,
    5464             :                       ",{:.2R}\n",
    5465           0 :                       state.dataFluidProps->RefrigData(RefrigNum).PsTemps(state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints));
    5466           0 :                 print(state.files.debug, "Saturation Pressure:");
    5467           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints - 1; ++Loop) {
    5468           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).PsValues(Loop));
    5469             :                 }
    5470           0 :                 print(state.files.debug,
    5471             :                       ",{:.2R}\n",
    5472           0 :                       state.dataFluidProps->RefrigData(RefrigNum).PsValues(state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints));
    5473             :             }
    5474           0 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumHPoints > 0) {
    5475           0 :                 print(state.files.debug,
    5476             :                       "Enthalpy Saturated Fluid Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
    5477           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HfLowTempValue,
    5478           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HfLowTempIndex,
    5479           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HfHighTempValue,
    5480           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HfHighTempIndex);
    5481           0 :                 print(state.files.debug, "Temperatures:");
    5482           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumHPoints - 1; ++Loop) {
    5483           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).HTemps(Loop));
    5484             :                 }
    5485           0 :                 print(state.files.debug,
    5486             :                       ",{:.2R}\n",
    5487           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HTemps(state.dataFluidProps->RefrigData(RefrigNum).NumHPoints));
    5488           0 :                 print(state.files.debug, "Enthalpy Saturated Fluid:");
    5489           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumHPoints - 1; ++Loop) {
    5490           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).HfValues(Loop));
    5491             :                 }
    5492           0 :                 print(state.files.debug,
    5493             :                       ",{:.2R}\n",
    5494           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HfValues(state.dataFluidProps->RefrigData(RefrigNum).NumHPoints));
    5495           0 :                 print(state.files.debug,
    5496             :                       "Enthalpy Saturated Fluid/Gas Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
    5497           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HfgLowTempValue,
    5498           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HfgLowTempIndex,
    5499           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HfgHighTempValue,
    5500           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HfgHighTempIndex);
    5501             : 
    5502           0 :                 print(state.files.debug, "Temperatures:");
    5503           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumHPoints - 1; ++Loop) {
    5504           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).HTemps(Loop));
    5505             :                 }
    5506           0 :                 print(state.files.debug,
    5507             :                       ",{:.2R}\n",
    5508           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HTemps(state.dataFluidProps->RefrigData(RefrigNum).NumHPoints));
    5509           0 :                 print(state.files.debug, "Enthalpy Saturated Fluid/Gas:");
    5510           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumHPoints - 1; ++Loop) {
    5511           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).HfgValues(Loop));
    5512             :                 }
    5513           0 :                 print(state.files.debug,
    5514             :                       ",{:.2R}\n",
    5515           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HfgValues(state.dataFluidProps->RefrigData(RefrigNum).NumHPoints));
    5516             :             }
    5517           0 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints > 0) {
    5518           0 :                 print(state.files.debug,
    5519             :                       "Specific Heat Saturated Fluid Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
    5520           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpfLowTempValue,
    5521           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpfLowTempIndex,
    5522           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpfHighTempValue,
    5523           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpfHighTempIndex);
    5524           0 :                 print(state.files.debug, "Temperatures:");
    5525           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints - 1; ++Loop) {
    5526           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).CpTemps(Loop));
    5527             :                 }
    5528           0 :                 print(state.files.debug,
    5529             :                       ",{:.2R}\n",
    5530           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpTemps(state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints));
    5531           0 :                 print(state.files.debug, "Specific Heat Saturated Fluid:");
    5532           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints - 1; ++Loop) {
    5533           0 :                     print(state.files.debug, ",{:.2R}\n", state.dataFluidProps->RefrigData(RefrigNum).CpfValues(Loop));
    5534             :                 }
    5535           0 :                 print(state.files.debug,
    5536             :                       ",{:.2R}",
    5537           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpfValues(state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints));
    5538           0 :                 print(state.files.debug,
    5539             :                       "Specific Heat Saturated Fluid/Gas Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
    5540           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpfgLowTempValue,
    5541           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpfgLowTempIndex,
    5542           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpfgHighTempValue,
    5543           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpfgHighTempIndex);
    5544           0 :                 print(state.files.debug, "Temperatures:");
    5545           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints - 1; ++Loop) {
    5546           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).CpTemps(Loop));
    5547             :                 }
    5548           0 :                 print(state.files.debug,
    5549             :                       ",{:.2R}\n",
    5550           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpTemps(state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints));
    5551           0 :                 print(state.files.debug, "Specific Heat Saturated Fluid/Gas:");
    5552           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints - 1; ++Loop) {
    5553           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).CpfgValues(Loop));
    5554             :                 }
    5555           0 :                 print(state.files.debug,
    5556             :                       ",{:.2R}\n",
    5557           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpfgValues(state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints));
    5558             :             }
    5559           0 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints > 0) {
    5560           0 :                 print(state.files.debug,
    5561             :                       "Density Saturated Fluid Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
    5562           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhofLowTempValue,
    5563           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhofLowTempIndex,
    5564           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhofHighTempValue,
    5565           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhofHighTempIndex);
    5566           0 :                 print(state.files.debug, "Temperatures:");
    5567           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints - 1; ++Loop) {
    5568           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(Loop));
    5569             :                 }
    5570           0 :                 print(state.files.debug,
    5571             :                       ",{:.2R}",
    5572           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints));
    5573           0 :                 print(state.files.debug, "Density Saturated Fluid:");
    5574           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints - 1; ++Loop) {
    5575           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).RhofValues(Loop));
    5576             :                 }
    5577           0 :                 print(state.files.debug,
    5578             :                       ",{:.2R}",
    5579           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhofValues(state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints));
    5580           0 :                 print(state.files.debug,
    5581             :                       "Density Saturated Fluid/Gas Data points:,Low Temperature=,{:.2R},Index=,{},High Temperature=,{:.2R},Index=,{}\n",
    5582           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhofgLowTempValue,
    5583           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhofgLowTempIndex,
    5584           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhofgHighTempValue,
    5585           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhofgHighTempIndex);
    5586           0 :                 print(state.files.debug, "Temperatures:");
    5587           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints - 1; ++Loop) {
    5588           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(Loop));
    5589             :                 }
    5590           0 :                 print(state.files.debug,
    5591             :                       ",{:.2R}\n",
    5592           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints));
    5593           0 :                 print(state.files.debug, "Density Saturated Fluid/Gas:");
    5594           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints - 1; ++Loop) {
    5595           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).RhofgValues(Loop));
    5596             :                 }
    5597           0 :                 print(state.files.debug,
    5598             :                       ",{:.2R}\n",
    5599           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhofgValues(state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints));
    5600             :             }
    5601             : 
    5602           0 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumSuperTempPts > 0 && state.dataFluidProps->RefrigData(RefrigNum).NumSuperPressPts > 0) {
    5603           0 :                 print(state.files.debug,
    5604             :                       "Superheated Gas Fluid Data points:,NumTemperaturePoints=,{},NumPressurePoints=,{}\n",
    5605           0 :                       state.dataFluidProps->RefrigData(RefrigNum).NumSuperTempPts,
    5606           0 :                       state.dataFluidProps->RefrigData(RefrigNum).NumSuperPressPts);
    5607           0 :                 print(state.files.debug, "Superheated Temperatures:");
    5608           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumSuperTempPts - 1; ++Loop) {
    5609           0 :                     print(state.files.debug, ",{:.3R}", state.dataFluidProps->RefrigData(RefrigNum).SHTemps(Loop));
    5610             :                 }
    5611           0 :                 print(state.files.debug,
    5612             :                       ",{:.3R}\n",
    5613           0 :                       state.dataFluidProps->RefrigData(RefrigNum).SHTemps(state.dataFluidProps->RefrigData(RefrigNum).NumSuperTempPts));
    5614           0 :                 print(state.files.debug, "Superheated Pressures:");
    5615           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumSuperPressPts - 1; ++Loop) {
    5616           0 :                     print(state.files.debug, ",{:.3R}", state.dataFluidProps->RefrigData(RefrigNum).SHPress(Loop));
    5617             :                 }
    5618           0 :                 print(state.files.debug,
    5619             :                       ",{:.3R}\n",
    5620           0 :                       state.dataFluidProps->RefrigData(RefrigNum).SHPress(state.dataFluidProps->RefrigData(RefrigNum).NumSuperPressPts));
    5621           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumSuperPressPts; ++Loop) {
    5622           0 :                     print(state.files.debug, "Superheated Pressure:#{}={:.2R}\n", Loop, state.dataFluidProps->RefrigData(RefrigNum).SHPress(Loop));
    5623           0 :                     print(state.files.debug, "Enthalpy Superheated Gas:");
    5624           0 :                     for (Loop1 = 1; Loop1 <= state.dataFluidProps->RefrigData(RefrigNum).NumSuperTempPts - 1; ++Loop1) {
    5625           0 :                         print(state.files.debug, ",{:.3R}", state.dataFluidProps->RefrigData(RefrigNum).HshValues(Loop, Loop1));
    5626             :                     }
    5627           0 :                     print(state.files.debug,
    5628             :                           ",{:.3R}\n",
    5629           0 :                           state.dataFluidProps->RefrigData(RefrigNum).HshValues(Loop, state.dataFluidProps->RefrigData(RefrigNum).NumSuperTempPts));
    5630             :                 }
    5631           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumSuperPressPts; ++Loop) {
    5632           0 :                     print(state.files.debug, "Superheated Pressure:#{}={:.2R}\n", Loop, state.dataFluidProps->RefrigData(RefrigNum).SHPress(Loop));
    5633           0 :                     print(state.files.debug, "Density Superheated Gas:");
    5634           0 :                     for (Loop1 = 1; Loop1 <= state.dataFluidProps->RefrigData(RefrigNum).NumSuperTempPts - 1; ++Loop1) {
    5635           0 :                         print(state.files.debug, ",{:.3R}", state.dataFluidProps->RefrigData(RefrigNum).RhoshValues(Loop, Loop1));
    5636             :                     }
    5637           0 :                     print(state.files.debug,
    5638             :                           ",{:.3R}\n",
    5639           0 :                           state.dataFluidProps->RefrigData(RefrigNum).RhoshValues(Loop, state.dataFluidProps->RefrigData(RefrigNum).NumSuperTempPts));
    5640             :                 }
    5641           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumSuperTempPts; ++Loop) {
    5642           0 :                     print(state.files.debug, "Superheated Temperature:#{}={:.2R}\n", Loop, state.dataFluidProps->RefrigData(RefrigNum).SHTemps(Loop));
    5643           0 :                     print(state.files.debug, "Enthalpy Superheated Gas:");
    5644           0 :                     for (Loop1 = 1; Loop1 <= state.dataFluidProps->RefrigData(RefrigNum).NumSuperPressPts - 1; ++Loop1) {
    5645           0 :                         print(state.files.debug, ",{:.3R}", state.dataFluidProps->RefrigData(RefrigNum).HshValues(Loop1, Loop));
    5646             :                     }
    5647           0 :                     print(state.files.debug,
    5648             :                           ",{:.3R}\n",
    5649           0 :                           state.dataFluidProps->RefrigData(RefrigNum).HshValues(state.dataFluidProps->RefrigData(RefrigNum).NumSuperPressPts, Loop));
    5650             :                 }
    5651           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumSuperTempPts; ++Loop) {
    5652           0 :                     print(state.files.debug, "Superheated Temperature:#{}={:.2R}\n", Loop, state.dataFluidProps->RefrigData(RefrigNum).SHTemps(Loop));
    5653           0 :                     print(state.files.debug, "Density Superheated Gas:");
    5654           0 :                     for (Loop1 = 1; Loop1 <= state.dataFluidProps->RefrigData(RefrigNum).NumSuperPressPts - 1; ++Loop1) {
    5655           0 :                         print(state.files.debug, ",{:.3R}", state.dataFluidProps->RefrigData(RefrigNum).RhoshValues(Loop1, Loop));
    5656             :                     }
    5657           0 :                     print(
    5658             :                         state.files.debug,
    5659             :                         ",{:.3R}\n",
    5660           0 :                         state.dataFluidProps->RefrigData(RefrigNum).RhoshValues(state.dataFluidProps->RefrigData(RefrigNum).NumSuperPressPts, Loop));
    5661             :                 }
    5662             :             }
    5663             : 
    5664             :             // ============================================
    5665             :             // Refrigeration Results, using out of bounds to out of bounds values in calling
    5666             :             // ============================================
    5667             : 
    5668             :             // ========= Pressure from Temperatures
    5669           0 :             print(state.files.debug, "Refrigerant={} **** Results ****\n", state.dataFluidProps->RefrigData(RefrigNum).Name);
    5670           0 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints > 0) {
    5671           0 :                 print(state.files.debug, "Pressure Results at Temperatures:");
    5672           0 :                 print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).PsTemps(1) - incr);
    5673           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints - 1; ++Loop) {
    5674           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).PsTemps(Loop));
    5675           0 :                     Temperature =
    5676           0 :                         state.dataFluidProps->RefrigData(RefrigNum).PsTemps(Loop) +
    5677           0 :                         (state.dataFluidProps->RefrigData(RefrigNum).PsTemps(Loop + 1) - state.dataFluidProps->RefrigData(RefrigNum).PsTemps(Loop)) /
    5678             :                             2.0;
    5679           0 :                     print(state.files.debug, ",{:.2R}", Temperature);
    5680             :                 }
    5681           0 :                 print(state.files.debug,
    5682             :                       ",{:.2R}",
    5683           0 :                       state.dataFluidProps->RefrigData(RefrigNum).PsTemps(state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints));
    5684           0 :                 print(state.files.debug,
    5685             :                       ",{:.2R}\n",
    5686           0 :                       state.dataFluidProps->RefrigData(RefrigNum).PsTemps(state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints) + incr);
    5687           0 :                 print(state.files.debug, "Saturated Pressures:");
    5688           0 :                 Temperature = state.dataFluidProps->RefrigData(RefrigNum).PsTemps(1) - incr;
    5689           0 :                 ReturnValue = GetSatPressureRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, RefrigIndex, RoutineName);
    5690           0 :                 print(state.files.debug, ",{:.2R}", ReturnValue);
    5691           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints - 1; ++Loop) {
    5692           0 :                     Temperature = state.dataFluidProps->RefrigData(RefrigNum).PsTemps(Loop);
    5693           0 :                     ReturnValue =
    5694           0 :                         GetSatPressureRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, RefrigIndex, RoutineName);
    5695           0 :                     print(state.files.debug, ",{:.2R}", ReturnValue);
    5696           0 :                     Temperature =
    5697           0 :                         state.dataFluidProps->RefrigData(RefrigNum).PsTemps(Loop) +
    5698           0 :                         (state.dataFluidProps->RefrigData(RefrigNum).PsTemps(Loop + 1) - state.dataFluidProps->RefrigData(RefrigNum).PsTemps(Loop)) /
    5699             :                             2.0;
    5700           0 :                     ReturnValue =
    5701           0 :                         GetSatPressureRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, RefrigIndex, RoutineName);
    5702           0 :                     print(state.files.debug, ",{:.2R}", ReturnValue);
    5703             :                 }
    5704           0 :                 Temperature = state.dataFluidProps->RefrigData(RefrigNum).PsTemps(state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints);
    5705           0 :                 ReturnValue = GetSatPressureRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, RefrigIndex, RoutineName);
    5706           0 :                 print(state.files.debug, ",{:.2R}", ReturnValue);
    5707           0 :                 Temperature = state.dataFluidProps->RefrigData(RefrigNum).PsTemps(state.dataFluidProps->RefrigData(RefrigNum).NumPsPoints) + incr;
    5708           0 :                 ReturnValue = GetSatPressureRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, RefrigIndex, RoutineName);
    5709           0 :                 print(state.files.debug, ",{:.2R}\n", ReturnValue);
    5710             :             }
    5711             : 
    5712             :             // ========= Enthalpy from Temperatures
    5713           0 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumHPoints > 0) {
    5714           0 :                 print(state.files.debug, "Enthalpy Results at Temperatures:");
    5715           0 :                 print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).HTemps(1) - incr);
    5716           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumHPoints - 1; ++Loop) {
    5717           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).HTemps(Loop));
    5718           0 :                     Temperature =
    5719           0 :                         state.dataFluidProps->RefrigData(RefrigNum).HTemps(Loop) +
    5720           0 :                         (state.dataFluidProps->RefrigData(RefrigNum).HTemps(Loop + 1) - state.dataFluidProps->RefrigData(RefrigNum).HTemps(Loop)) /
    5721             :                             2.0;
    5722           0 :                     print(state.files.debug, ",{:.2R}", Temperature);
    5723             :                 }
    5724           0 :                 print(state.files.debug,
    5725             :                       ",{:.2R}",
    5726           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HTemps(state.dataFluidProps->RefrigData(RefrigNum).NumHPoints));
    5727           0 :                 print(state.files.debug,
    5728             :                       ",{:.2R}\n",
    5729           0 :                       state.dataFluidProps->RefrigData(RefrigNum).HTemps(state.dataFluidProps->RefrigData(RefrigNum).NumHPoints) + incr);
    5730           0 :                 print(state.files.debug, "Saturated Enthalpy:");
    5731           0 :                 Temperature = state.dataFluidProps->RefrigData(RefrigNum).HTemps(1) - incr;
    5732           0 :                 ReturnValue =
    5733           0 :                     GetSatEnthalpyRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5734           0 :                 print(state.files.debug, ",{:.2R}", ReturnValue);
    5735           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumHPoints - 1; ++Loop) {
    5736           0 :                     Temperature = state.dataFluidProps->RefrigData(RefrigNum).HTemps(Loop);
    5737           0 :                     ReturnValue =
    5738           0 :                         GetSatEnthalpyRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5739           0 :                     print(state.files.debug, ",{:.2R}", ReturnValue);
    5740           0 :                     Temperature =
    5741           0 :                         state.dataFluidProps->RefrigData(RefrigNum).HTemps(Loop) +
    5742           0 :                         (state.dataFluidProps->RefrigData(RefrigNum).HTemps(Loop + 1) - state.dataFluidProps->RefrigData(RefrigNum).HTemps(Loop)) /
    5743             :                             2.0;
    5744           0 :                     ReturnValue =
    5745           0 :                         GetSatEnthalpyRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5746           0 :                     print(state.files.debug, ",{:.2R}", ReturnValue);
    5747             :                 }
    5748           0 :                 Temperature = state.dataFluidProps->RefrigData(RefrigNum).HTemps(state.dataFluidProps->RefrigData(RefrigNum).NumHPoints);
    5749           0 :                 ReturnValue =
    5750           0 :                     GetSatEnthalpyRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5751           0 :                 print(state.files.debug, ",{:.2R}", ReturnValue);
    5752           0 :                 Temperature = state.dataFluidProps->RefrigData(RefrigNum).HTemps(state.dataFluidProps->RefrigData(RefrigNum).NumHPoints) + incr;
    5753           0 :                 ReturnValue =
    5754           0 :                     GetSatEnthalpyRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5755           0 :                 print(state.files.debug, ",{:.2R}\n", ReturnValue);
    5756             :             }
    5757             : 
    5758             :             // ========= Specific Heat from Temperatures
    5759           0 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints > 0) {
    5760           0 :                 print(state.files.debug, "Specific Heat Results at Temperatures:");
    5761           0 :                 print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).CpTemps(1) - incr);
    5762           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints - 1; ++Loop) {
    5763           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).CpTemps(Loop));
    5764           0 :                     Temperature =
    5765           0 :                         state.dataFluidProps->RefrigData(RefrigNum).CpTemps(Loop) +
    5766           0 :                         (state.dataFluidProps->RefrigData(RefrigNum).CpTemps(Loop + 1) - state.dataFluidProps->RefrigData(RefrigNum).CpTemps(Loop)) /
    5767             :                             2.0;
    5768           0 :                     print(state.files.debug, ",{:.2R}", Temperature);
    5769             :                 }
    5770           0 :                 print(state.files.debug,
    5771             :                       ",{:.2R}",
    5772           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpTemps(state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints));
    5773           0 :                 print(state.files.debug,
    5774             :                       ",{:.2R}\n",
    5775           0 :                       state.dataFluidProps->RefrigData(RefrigNum).CpTemps(state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints) + incr);
    5776           0 :                 print(state.files.debug, "Saturated Specific Heat:");
    5777           0 :                 Temperature = state.dataFluidProps->RefrigData(RefrigNum).CpTemps(1) - incr;
    5778           0 :                 ReturnValue =
    5779           0 :                     GetSatSpecificHeatRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5780           0 :                 print(state.files.debug, ",{:.2R}", ReturnValue);
    5781           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints - 1; ++Loop) {
    5782           0 :                     Temperature = state.dataFluidProps->RefrigData(RefrigNum).CpTemps(Loop);
    5783           0 :                     ReturnValue = GetSatSpecificHeatRefrig(
    5784           0 :                         state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5785           0 :                     print(state.files.debug, ",{:.2R}", ReturnValue);
    5786           0 :                     Temperature =
    5787           0 :                         state.dataFluidProps->RefrigData(RefrigNum).CpTemps(Loop) +
    5788           0 :                         (state.dataFluidProps->RefrigData(RefrigNum).CpTemps(Loop + 1) - state.dataFluidProps->RefrigData(RefrigNum).CpTemps(Loop)) /
    5789             :                             2.0;
    5790           0 :                     ReturnValue = GetSatSpecificHeatRefrig(
    5791           0 :                         state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5792           0 :                     print(state.files.debug, ",{:.2R}", ReturnValue);
    5793             :                 }
    5794           0 :                 Temperature = state.dataFluidProps->RefrigData(RefrigNum).CpTemps(state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints);
    5795           0 :                 ReturnValue =
    5796           0 :                     GetSatSpecificHeatRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5797           0 :                 print(state.files.debug, ",{:.2R}", ReturnValue);
    5798           0 :                 Temperature = state.dataFluidProps->RefrigData(RefrigNum).CpTemps(state.dataFluidProps->RefrigData(RefrigNum).NumCpPoints) + incr;
    5799           0 :                 ReturnValue =
    5800           0 :                     GetSatSpecificHeatRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5801           0 :                 print(state.files.debug, ",{:.2R}\n", ReturnValue);
    5802             :             }
    5803             : 
    5804             :             // ========= Density from Temperatures
    5805           0 :             if (state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints > 0) {
    5806           0 :                 print(state.files.debug, "Density Results at Temperatures:");
    5807           0 :                 print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(1) - incr);
    5808           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints - 1; ++Loop) {
    5809           0 :                     print(state.files.debug, ",{:.2R}", state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(Loop));
    5810           0 :                     Temperature =
    5811           0 :                         state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(Loop) + (state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(Loop + 1) -
    5812           0 :                                                                                       state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(Loop)) /
    5813             :                                                                                          2.0;
    5814           0 :                     print(state.files.debug, ",{:.2R}", Temperature);
    5815             :                 }
    5816           0 :                 print(state.files.debug,
    5817             :                       ",{:.2R}",
    5818           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints));
    5819           0 :                 print(state.files.debug,
    5820             :                       ",{:.2R}\n",
    5821           0 :                       state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints) + incr);
    5822           0 :                 print(state.files.debug, "Saturated Density:");
    5823           0 :                 Temperature = state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(1) - incr;
    5824           0 :                 ReturnValue =
    5825           0 :                     GetSatDensityRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5826           0 :                 print(state.files.debug, ",{:.2R}", ReturnValue);
    5827           0 :                 for (Loop = 1; Loop <= state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints - 1; ++Loop) {
    5828           0 :                     Temperature = state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(Loop);
    5829           0 :                     ReturnValue =
    5830           0 :                         GetSatDensityRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5831           0 :                     print(state.files.debug, ",{:.2R}", ReturnValue);
    5832           0 :                     Temperature =
    5833           0 :                         state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(Loop) + (state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(Loop + 1) -
    5834           0 :                                                                                       state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(Loop)) /
    5835             :                                                                                          2.0;
    5836           0 :                     ReturnValue =
    5837           0 :                         GetSatDensityRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5838           0 :                     print(state.files.debug, ",{:.2R}", ReturnValue);
    5839             :                 }
    5840           0 :                 Temperature = state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints);
    5841           0 :                 ReturnValue =
    5842           0 :                     GetSatDensityRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5843           0 :                 print(state.files.debug, ",{:.2R}", ReturnValue);
    5844           0 :                 Temperature = state.dataFluidProps->RefrigData(RefrigNum).RhoTemps(state.dataFluidProps->RefrigData(RefrigNum).NumRhoPoints) + incr;
    5845           0 :                 ReturnValue =
    5846           0 :                     GetSatDensityRefrig(state, state.dataFluidProps->RefrigData(RefrigNum).Name, Temperature, Quality, RefrigIndex, RoutineName);
    5847           0 :                 print(state.files.debug, ",{:.2R}\n", ReturnValue);
    5848             :             }
    5849             :         }
    5850           0 :     }
    5851             : 
    5852             :     //*****************************************************************************
    5853             : 
    5854    35664855 :     Real64 GetSatPressureRefrig(EnergyPlusData &state,
    5855             :                                 std::string_view const Refrigerant, // carries in substance name
    5856             :                                 Real64 const Temperature,           // actual temperature given as input
    5857             :                                 int &RefrigIndex,                   // Index to Refrigerant Properties
    5858             :                                 std::string_view const CalledFrom   // routine this function was called from (error messages)
    5859             :     )
    5860             :     {
    5861             : 
    5862             :         // SUBROUTINE INFORMATION:
    5863             :         //       AUTHOR         Simon Rees
    5864             :         //       DATE WRITTEN   24 May 2002
    5865             :         //       MODIFIED       na
    5866             :         //       RE-ENGINEERED  na
    5867             : 
    5868             :         // PURPOSE OF THIS FUNCTION:
    5869             :         // This finds the saturation pressure for given temperature.
    5870             : 
    5871             :         // METHODOLOGY EMPLOYED:
    5872             :         // Calls FindArrayIndex to find indices either side of requested temperature
    5873             :         // and linearly interpolates the corresponding saturation pressure values.
    5874             : 
    5875             :         // REFERENCES:
    5876             :         // na
    5877             : 
    5878             :         // USE STATEMENTS:
    5879             :         // na
    5880             : 
    5881             :         // Return value
    5882             :         Real64 ReturnValue;
    5883             : 
    5884             :         // Locals
    5885             :         // FUNCTION ARGUMENT DEFINITIONS:
    5886             : 
    5887             :         // FUNCTION PARAMETER DEFINITIONS:
    5888             :         static constexpr std::string_view RoutineName("GetSatPressureRefrig: ");
    5889             : 
    5890             :         // INTERFACE BLOCK SPECIFICATIONS:
    5891             :         // na
    5892             : 
    5893             :         // DERIVED TYPE DEFINITIONS:
    5894             :         // na
    5895             : 
    5896             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    5897             :         int HiTempIndex;        // index value of next highest Temperature from table
    5898             :         int LoTempIndex;        // index value of next lowest Temperature from table
    5899             :         int RefrigNum;          // index for refrigerant under consideration
    5900             :         Real64 TempInterpRatio; // ratio to interpolate in temperature domain
    5901             :         // error counters and dummy string
    5902             :         bool ErrorFlag; // error flag for current call
    5903             : 
    5904    35664855 :         if (state.dataFluidProps->GetInput) {
    5905           2 :             GetFluidPropertiesData(state);
    5906           2 :             state.dataFluidProps->GetInput = false;
    5907             :         }
    5908             : 
    5909    35664855 :         RefrigNum = 0;
    5910    35664855 :         if (state.dataFluidProps->NumOfRefrigerants == 0) {
    5911           0 :             ReportFatalRefrigerantErrors(
    5912           0 :                 state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, "GetSatPressureRefrig", "properties", CalledFrom);
    5913             :         }
    5914             : 
    5915    35664855 :         ErrorFlag = false;
    5916             : 
    5917    35664855 :         if (RefrigIndex > 0) {
    5918    35664847 :             RefrigNum = RefrigIndex;
    5919             :         } else {
    5920             :             // Find which refrigerant (index) is being requested
    5921           8 :             RefrigNum = FindRefrigerant(state, Refrigerant);
    5922           8 :             if (RefrigNum == 0) {
    5923           0 :                 ReportFatalRefrigerantErrors(
    5924           0 :                     state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, "GetSatPressureRefrig", "properties", CalledFrom);
    5925             :             }
    5926           8 :             RefrigIndex = RefrigNum;
    5927             :         }
    5928    35664855 :         auto const &refrig(state.dataFluidProps->RefrigData(RefrigNum));
    5929             : 
    5930             :         // determine array indices for
    5931    35664855 :         LoTempIndex = FindArrayIndex(Temperature, refrig.PsTemps, refrig.PsLowTempIndex, refrig.PsHighTempIndex);
    5932    35664855 :         HiTempIndex = LoTempIndex + 1;
    5933             : 
    5934             :         // check for out of data bounds problems
    5935    35664855 :         if (LoTempIndex == 0) {
    5936           0 :             ReturnValue = refrig.PsValues(refrig.PsLowTempIndex);
    5937           0 :             ErrorFlag = true;
    5938    35664855 :         } else if (HiTempIndex > refrig.PsHighTempIndex) {
    5939           0 :             ReturnValue = refrig.PsValues(refrig.PsHighTempIndex);
    5940           0 :             ErrorFlag = true;
    5941             :         } else {
    5942             :             // find interpolation ratio w.r.t temperature
    5943    35664855 :             TempInterpRatio = (Temperature - refrig.PsTemps(LoTempIndex)) / (refrig.PsTemps(HiTempIndex) - refrig.PsTemps(LoTempIndex));
    5944             : 
    5945             :             // apply final linear interpolation
    5946    35664855 :             ReturnValue = refrig.PsValues(LoTempIndex) + TempInterpRatio * (refrig.PsValues(HiTempIndex) - refrig.PsValues(LoTempIndex));
    5947             :         }
    5948             : 
    5949    35664855 :         if (!state.dataGlobal->WarmupFlag && ErrorFlag) {
    5950           0 :             ++state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatTempErrCount;
    5951             :             // send warning
    5952           0 :             if (state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatTempErrCount <= state.dataFluidProps->RefrigerantErrorLimitTest) {
    5953           0 :                 ShowSevereMessage(state,
    5954           0 :                                   std::string{RoutineName} + "Saturation temperature is out of range for refrigerant [" +
    5955           0 :                                       state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name + "] supplied data: **");
    5956           0 :                 ShowContinueError(state,
    5957           0 :                                   format("...Called From:{}, supplied data range=[{:.2R},{:.2R}]",
    5958             :                                          CalledFrom,
    5959           0 :                                          refrig.PsTemps(refrig.PsLowTempIndex),
    5960           0 :                                          refrig.PsTemps(refrig.PsHighTempIndex)));
    5961           0 :                 ShowContinueError(
    5962           0 :                     state, format("...Supplied Refrigerant Temperature={:.2R} Returned saturated pressure value = {:.0R}", Temperature, ReturnValue));
    5963           0 :                 ShowContinueErrorTimeStamp(state, "");
    5964             :             }
    5965           0 :             ShowRecurringSevereErrorAtEnd(state,
    5966           0 :                                           std::string{RoutineName} + "Saturation temperature is out of range for refrigerant [" +
    5967           0 :                                               state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name + "] supplied data: **",
    5968           0 :                                           state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatTempErrIndex,
    5969             :                                           Temperature,
    5970             :                                           Temperature,
    5971             :                                           _,
    5972             :                                           "{C}",
    5973             :                                           "{C}");
    5974             :         }
    5975             : 
    5976    35664855 :         return ReturnValue;
    5977             :     }
    5978             : 
    5979             :     //*****************************************************************************
    5980             : 
    5981     6411007 :     Real64 GetSatTemperatureRefrig(EnergyPlusData &state,
    5982             :                                    std::string_view const Refrigerant, // carries in substance name
    5983             :                                    Real64 const Pressure,              // actual temperature given as input
    5984             :                                    int &RefrigIndex,                   // Index to Refrigerant Properties
    5985             :                                    std::string_view const CalledFrom   // routine this function was called from (error messages)
    5986             :     )
    5987             :     {
    5988             : 
    5989             :         // SUBROUTINE INFORMATION:
    5990             :         //       AUTHOR         Simon Rees
    5991             :         //       DATE WRITTEN   24 May 2002
    5992             :         //       MODIFIED       na
    5993             :         //       RE-ENGINEERED  na
    5994             : 
    5995             :         // PURPOSE OF THIS FUNCTION:
    5996             :         // This finds the saturation temperature for given pressure.
    5997             : 
    5998             :         // METHODOLOGY EMPLOYED:
    5999             :         // Calls FindArrayIndex to find indices either side of requested pressure
    6000             :         // and linearly interpolates the corresponding saturation temperature values.
    6001             : 
    6002             :         // REFERENCES:
    6003             :         // na
    6004             : 
    6005             :         // USE STATEMENTS:
    6006             :         // na
    6007             : 
    6008             :         // Return value
    6009             :         Real64 ReturnValue;
    6010             : 
    6011             :         // Locals
    6012             :         // FUNCTION ARGUMENT DEFINITIONS:
    6013             : 
    6014             :         // FUNCTION PARAMETER DEFINITIONS:
    6015             :         static constexpr std::string_view RoutineName("GetSatTemperatureRefrig: ");
    6016             : 
    6017             :         // INTERFACE BLOCK SPECIFICATIONS:
    6018             :         // na
    6019             : 
    6020             :         // DERIVED TYPE DEFINITIONS:
    6021             :         // na
    6022             : 
    6023             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    6024             :         int HiPresIndex;        // index value of next highest Temperature from table
    6025             :         int LoPresIndex;        // index value of next lowest Temperature from table
    6026             :         int RefrigNum;          // index for refrigerant under consideration
    6027             :         Real64 PresInterpRatio; // ratio to interpolate in temperature domain
    6028             :         // error counters and dummy string
    6029             :         bool ErrorFlag; // error flag for current call
    6030             : 
    6031     6411007 :         if (state.dataFluidProps->GetInput) {
    6032           0 :             GetFluidPropertiesData(state);
    6033           0 :             state.dataFluidProps->GetInput = false;
    6034             :         }
    6035             : 
    6036     6411007 :         RefrigNum = 0;
    6037     6411007 :         if (state.dataFluidProps->NumOfRefrigerants == 0) {
    6038           0 :             ReportFatalRefrigerantErrors(
    6039           0 :                 state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, "GetSatTemperatureRefrig", "properties", CalledFrom);
    6040             :         }
    6041             : 
    6042     6411007 :         ErrorFlag = false;
    6043             : 
    6044     6411007 :         if (RefrigIndex > 0) {
    6045     6411007 :             RefrigNum = RefrigIndex;
    6046             :         } else {
    6047             :             // Find which refrigerant (index) is being requested
    6048           0 :             RefrigNum = FindRefrigerant(state, Refrigerant);
    6049           0 :             if (RefrigNum == 0) {
    6050           0 :                 ReportFatalRefrigerantErrors(state,
    6051           0 :                                              state.dataFluidProps->NumOfRefrigerants,
    6052             :                                              RefrigNum,
    6053             :                                              true,
    6054             :                                              Refrigerant,
    6055             :                                              "GetSatTemperatureRefrig",
    6056             :                                              "properties",
    6057           0 :                                              CalledFrom);
    6058             :             }
    6059           0 :             RefrigIndex = RefrigNum;
    6060             :         }
    6061     6411007 :         auto const &refrig(state.dataFluidProps->RefrigData(RefrigNum));
    6062             : 
    6063             :         // get the array indices
    6064     6411007 :         LoPresIndex = FindArrayIndex(Pressure, refrig.PsValues, refrig.PsLowPresIndex, refrig.PsHighPresIndex);
    6065     6411007 :         HiPresIndex = LoPresIndex + 1;
    6066             : 
    6067             :         // check for out of data bounds problems
    6068     6411007 :         if (LoPresIndex == 0) {
    6069           0 :             ReturnValue = refrig.PsTemps(refrig.PsLowPresIndex);
    6070           0 :             ErrorFlag = true;
    6071     6411007 :         } else if (HiPresIndex > refrig.PsHighPresIndex) {
    6072           0 :             ReturnValue = refrig.PsTemps(refrig.PsHighPresIndex);
    6073           0 :             ErrorFlag = true;
    6074             :         } else {
    6075             :             // find interpolation ratio w.r.t temperature
    6076     6411007 :             PresInterpRatio = (Pressure - refrig.PsValues(LoPresIndex)) / (refrig.PsValues(HiPresIndex) - refrig.PsValues(LoPresIndex));
    6077             : 
    6078             :             // apply final linear interpolation
    6079     6411007 :             ReturnValue = refrig.PsTemps(LoPresIndex) + PresInterpRatio * (refrig.PsTemps(HiPresIndex) - refrig.PsTemps(LoPresIndex));
    6080             :         }
    6081             : 
    6082     6411007 :         if (!state.dataGlobal->WarmupFlag && ErrorFlag) {
    6083           0 :             ++state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatPressErrCount;
    6084             :             // send warning
    6085           0 :             if (state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatPressErrCount <= state.dataFluidProps->RefrigerantErrorLimitTest) {
    6086           0 :                 ShowSevereMessage(state,
    6087           0 :                                   std::string{RoutineName} + "Saturation pressure is out of range for refrigerant [" +
    6088           0 :                                       state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name + "] supplied data: **");
    6089           0 :                 ShowContinueError(state,
    6090           0 :                                   format("...Called From:{}, supplied data range=[{:.0R},{:.0R}]",
    6091             :                                          CalledFrom,
    6092           0 :                                          refrig.PsValues(refrig.PsLowPresIndex),
    6093           0 :                                          refrig.PsValues(refrig.PsHighPresIndex)));
    6094           0 :                 ShowContinueError(
    6095           0 :                     state, format("...Supplied Refrigerant Pressure={:.0R} Returned saturated temperature value ={:.2R}", Pressure, ReturnValue));
    6096           0 :                 ShowContinueErrorTimeStamp(state, "");
    6097             :             }
    6098           0 :             ShowRecurringSevereErrorAtEnd(state,
    6099           0 :                                           std::string{RoutineName} + "Saturation pressure is out of range for refrigerant [" +
    6100           0 :                                               state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name + "] supplied data: **",
    6101           0 :                                           state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatPressErrIndex,
    6102             :                                           Pressure,
    6103             :                                           Pressure,
    6104             :                                           _,
    6105             :                                           "{Pa}",
    6106             :                                           "{Pa}");
    6107             :         }
    6108     6411007 :         return ReturnValue;
    6109             :     }
    6110             : 
    6111             :     //*****************************************************************************
    6112             : 
    6113   119091582 :     Real64 GetSatEnthalpyRefrig(EnergyPlusData &state,
    6114             :                                 std::string_view const Refrigerant, // carries in substance name
    6115             :                                 Real64 const Temperature,           // actual temperature given as input
    6116             :                                 Real64 const Quality,               // actual quality given as input
    6117             :                                 int &RefrigIndex,                   // Index to Refrigerant Properties
    6118             :                                 std::string_view const CalledFrom   // routine this function was called from (error messages)
    6119             :     )
    6120             :     {
    6121             : 
    6122             :         // SUBROUTINE INFORMATION:
    6123             :         //       AUTHOR         Mike Turner
    6124             :         //       DATE WRITTEN   10 December 99
    6125             :         //       MODIFIED       Rick Strand (April 2000, May 2000)
    6126             :         //                      Simon Rees (May 2002)
    6127             :         //       RE-ENGINEERED  na
    6128             : 
    6129             :         // PURPOSE OF THIS FUNCTION:
    6130             :         // This finds enthalpy for given temperature and a quality under the vapor dome.
    6131             :         // This fucntion is only called with a valid refrigerant and quality between 0 and 1.
    6132             : 
    6133             :         // METHODOLOGY EMPLOYED:
    6134             :         // Calls GetInterpolatedSatProp to linearly interpolate between the saturated
    6135             :         // liquid  and vapour enthalpies according to the given quality.
    6136             : 
    6137             :         // REFERENCES:
    6138             :         // na
    6139             : 
    6140             :         // USE STATEMENTS:
    6141             :         // na
    6142             : 
    6143             :         // Return value
    6144             : 
    6145             :         // Locals
    6146             :         // FUNCTION ARGUMENT DEFINITIONS:
    6147             : 
    6148             :         // FUNCTION PARAMETER DEFINITIONS:
    6149             :         static constexpr std::string_view RoutineName("GetSatEnthalpyRefrig");
    6150             : 
    6151             :         // INTERFACE BLOCK SPECIFICATIONS:
    6152             :         // na
    6153             : 
    6154             :         // DERIVED TYPE DEFINITIONS:
    6155             :         // na
    6156             : 
    6157             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    6158             :         int RefrigNum; // index for refrigerant under consideration
    6159             : 
    6160   119091582 :         if (state.dataFluidProps->GetInput) {
    6161           0 :             GetFluidPropertiesData(state);
    6162           0 :             state.dataFluidProps->GetInput = false;
    6163             :         }
    6164             : 
    6165   119091582 :         RefrigNum = 0;
    6166   119091582 :         if (state.dataFluidProps->NumOfRefrigerants == 0) {
    6167           0 :             ReportFatalRefrigerantErrors(
    6168           0 :                 state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, RoutineName, "properties", CalledFrom);
    6169             :         }
    6170             : 
    6171   119091582 :         if ((Quality < 0.0) || (Quality > 1.0)) {
    6172           0 :             ShowSevereError(state, fmt::format("{}: Refrigerant \"{}\", invalid quality, called from {}", RoutineName, Refrigerant, CalledFrom));
    6173           0 :             ShowContinueError(state, format("Saturated refrigerant quality must be between 0 and 1, entered value=[{:.4R}].", Quality));
    6174           0 :             ShowFatalError(state, "Program terminates due to preceding condition.");
    6175             :         }
    6176             : 
    6177   119091582 :         if (RefrigIndex > 0) {
    6178   119091560 :             RefrigNum = RefrigIndex;
    6179             :         } else {
    6180             :             // Find which refrigerant (index) is being requested
    6181          22 :             RefrigNum = FindRefrigerant(state, Refrigerant);
    6182          22 :             if (RefrigNum == 0) {
    6183           0 :                 ReportFatalRefrigerantErrors(
    6184           0 :                     state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, RoutineName, "properties", CalledFrom);
    6185             :             }
    6186          22 :             RefrigIndex = RefrigNum;
    6187             :         }
    6188   119091582 :         auto const &refrig(state.dataFluidProps->RefrigData(RefrigNum));
    6189             : 
    6190             :         // Apply linear interpolation function
    6191   119091582 :         return GetInterpolatedSatProp(
    6192   238183164 :             state, Temperature, refrig.HTemps, refrig.HfValues, refrig.HfgValues, Quality, CalledFrom, refrig.HfLowTempIndex, refrig.HfHighTempIndex);
    6193             :     }
    6194             : 
    6195             :     //*****************************************************************************
    6196             : 
    6197     2308980 :     Real64 GetSatDensityRefrig(EnergyPlusData &state,
    6198             :                                std::string_view const Refrigerant, // carries in substance name
    6199             :                                Real64 const Temperature,           // actual temperature given as input
    6200             :                                Real64 const Quality,               // actual quality given as input
    6201             :                                int &RefrigIndex,                   // Index to Refrigerant Properties
    6202             :                                std::string_view const CalledFrom   // routine this function was called from (error messages)
    6203             :     )
    6204             :     {
    6205             : 
    6206             :         // SUBROUTINE INFORMATION:
    6207             :         //       AUTHOR         Mike Turner
    6208             :         //       DATE WRITTEN   10 December 99
    6209             :         //       MODIFIED       Rick Strand (April 2000, May 2000)
    6210             :         //                      Simon Rees (May 2002); Kenneth Tang (Jan 2004)
    6211             :         //       RE-ENGINEERED  na
    6212             : 
    6213             :         // PURPOSE OF THIS SUBROUTINE:
    6214             :         // This finds density for given temperature and a quality under the vapor dome.
    6215             :         // This function is only called with a valid refrigerant and quality between 0 and 1.
    6216             : 
    6217             :         // METHODOLOGY EMPLOYED:
    6218             :         // Calls GetInterpolatedSatProp to linearly interpolate between the saturated
    6219             :         // liquid  and vapour densities according to the given quality.
    6220             : 
    6221             :         // REFERENCES:
    6222             :         // na
    6223             : 
    6224             :         // USE STATEMENTS:
    6225             :         // na
    6226             : 
    6227             :         // Return value
    6228             :         Real64 ReturnValue;
    6229             : 
    6230             :         // Locals
    6231             :         // FUNCTION ARGUMENT DEFINITIONS:
    6232             : 
    6233             :         // FUNCTION PARAMETER DEFINITIONS:
    6234             :         static constexpr std::string_view RoutineName("GetSatDensityRefrig: ");
    6235             : 
    6236             :         // INTERFACE BLOCK SPECIFICATIONS:
    6237             :         // na
    6238             : 
    6239             :         // DERIVED TYPE DEFINITIONS:
    6240             :         // na
    6241             : 
    6242             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    6243             : 
    6244             :         int RefrigNum;          // index for refrigerant under consideration
    6245             :         int HiTempIndex;        // array index for temp above input temp
    6246             :         int LoTempIndex;        // array index for temp below input temp
    6247             :         Real64 LoSatProp;       // Sat. prop. at lower temp & given quality
    6248             :         Real64 HiSatProp;       // Sat. prop. at higher temp & given quality
    6249             :         Real64 TempInterpRatio; // ratio to interpolate in temperature domain
    6250             :         bool ErrorFlag;         // error flag for current call
    6251             : 
    6252             :         // error counters and dummy string
    6253             : 
    6254     2308980 :         if (state.dataFluidProps->GetInput) {
    6255           0 :             GetFluidPropertiesData(state);
    6256           0 :             state.dataFluidProps->GetInput = false;
    6257             :         }
    6258             : 
    6259     2308980 :         RefrigNum = 0;
    6260     2308980 :         if (state.dataFluidProps->NumOfRefrigerants == 0) {
    6261           0 :             ReportFatalRefrigerantErrors(
    6262           0 :                 state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, "GetSatDensityRefrig", "properties", CalledFrom);
    6263             :         }
    6264             : 
    6265     2308980 :         if ((Quality < 0.0) || (Quality > 1.0)) {
    6266           0 :             ShowSevereError(state, fmt::format("{}Refrigerant \"{}\", invalid quality, called from {}", RoutineName, Refrigerant, CalledFrom));
    6267           0 :             ShowContinueError(state, format("Saturated density quality must be between 0 and 1, entered value=[{:.4R}].", Quality));
    6268           0 :             ShowFatalError(state, "Program terminates due to preceding condition.");
    6269             :         }
    6270             : 
    6271             :         // Find which refrigerant (index) is being requested and then determine
    6272             :         // where the temperature is within the temperature array
    6273     2308980 :         if (RefrigIndex > 0) {
    6274     2308965 :             RefrigNum = RefrigIndex;
    6275             :         } else {
    6276             :             // Find which refrigerant (index) is being requested
    6277          15 :             RefrigNum = FindRefrigerant(state, Refrigerant);
    6278          15 :             if (RefrigNum == 0) {
    6279           0 :                 ReportFatalRefrigerantErrors(
    6280           0 :                     state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, "GetSatDensityRefrig", "properties", CalledFrom);
    6281             :             }
    6282          15 :             RefrigIndex = RefrigNum;
    6283             :         }
    6284     2308980 :         auto const &refrig(state.dataFluidProps->RefrigData(RefrigNum));
    6285             : 
    6286     2308980 :         ErrorFlag = false;
    6287             : 
    6288     2308980 :         LoTempIndex = FindArrayIndex(Temperature, refrig.RhoTemps, refrig.RhofLowTempIndex, refrig.RhofHighTempIndex);
    6289     2308980 :         HiTempIndex = LoTempIndex + 1;
    6290             : 
    6291             :         // Error check to make sure the temperature is not out of bounds
    6292     2308980 :         if (LoTempIndex == 0) {
    6293             :             // Give the lowest density value if the temperature is below than the minimum
    6294             :             // temperature in the refrigerant table
    6295           0 :             ReturnValue = 1.0 / refrig.RhofValues(refrig.RhofLowTempIndex) +
    6296           0 :                           Quality * (1.0 / refrig.RhofgValues(refrig.RhofLowTempIndex) - 1.0 / refrig.RhofValues(refrig.RhofLowTempIndex));
    6297           0 :             ReturnValue = 1.0 / ReturnValue;
    6298           0 :             ErrorFlag = true;
    6299     2308980 :         } else if (HiTempIndex > refrig.RhofHighTempIndex) {
    6300             :             // Give the highest density value if the temperature is higher than the maximum
    6301             :             // temperature in the refrigerant table
    6302           0 :             ReturnValue = 1.0 / refrig.RhofValues(refrig.RhofHighTempIndex) +
    6303           0 :                           Quality * (1.0 / refrig.RhofgValues(refrig.RhofHighTempIndex) - 1.0 / refrig.RhofValues(refrig.RhofHighTempIndex));
    6304           0 :             ReturnValue = 1.0 / ReturnValue;
    6305           0 :             ErrorFlag = true;
    6306             :         } else { // Okay
    6307             : 
    6308             :             // Calculate the specific volume for the lower temperature index based on linear
    6309             :             // interpolation of the quality
    6310     2308980 :             LoSatProp =
    6311     2308980 :                 1.0 / refrig.RhofValues(LoTempIndex) + Quality * (1.0 / refrig.RhofgValues(LoTempIndex) - 1.0 / refrig.RhofValues(LoTempIndex));
    6312             : 
    6313             :             // Calculate the specific volume for the higher temperature index based on linear
    6314             :             // interpolation of the quality
    6315     2308980 :             HiSatProp =
    6316     2308980 :                 1.0 / refrig.RhofValues(HiTempIndex) + Quality * (1.0 / refrig.RhofgValues(HiTempIndex) - 1.0 / refrig.RhofValues(HiTempIndex));
    6317             : 
    6318             :             // Find interpolation ratio in temperature direction
    6319     2308980 :             TempInterpRatio = (Temperature - refrig.RhoTemps(LoTempIndex)) / (refrig.RhoTemps(HiTempIndex) - refrig.RhoTemps(LoTempIndex));
    6320             : 
    6321             :             // Apply final linear interpolation to find the specific volume
    6322     2308980 :             ReturnValue = LoSatProp + TempInterpRatio * (HiSatProp - LoSatProp);
    6323             :             // Convert the specific volume to density
    6324     2308980 :             ReturnValue = 1.0 / ReturnValue;
    6325             :         }
    6326             : 
    6327     2308980 :         if (!state.dataGlobal->WarmupFlag && ErrorFlag) {
    6328           0 :             ++state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatTempDensityErrCount;
    6329             :             // send warning
    6330           0 :             if (state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatTempDensityErrCount <= state.dataFluidProps->RefrigerantErrorLimitTest) {
    6331           0 :                 ShowSevereMessage(state,
    6332           0 :                                   std::string{RoutineName} + "Saturation temperature is out of range for refrigerant [" +
    6333           0 :                                       state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name + "] supplied data: **");
    6334           0 :                 ShowContinueError(state,
    6335           0 :                                   format("...Called From:{}, supplied data range=[{:.2R},{:.2R}]",
    6336             :                                          CalledFrom,
    6337           0 :                                          refrig.RhoTemps(refrig.RhofLowTempIndex),
    6338           0 :                                          refrig.RhoTemps(refrig.RhofHighTempIndex)));
    6339           0 :                 ShowContinueError(
    6340           0 :                     state, format("...Supplied Refrigerant Temperature={:.2R} Returned saturated density value ={:.2R}", Temperature, ReturnValue));
    6341           0 :                 ShowContinueErrorTimeStamp(state, "");
    6342             :             }
    6343           0 :             ShowRecurringSevereErrorAtEnd(state,
    6344           0 :                                           std::string{RoutineName} + "Saturation temperature is out of range for refrigerant [" +
    6345           0 :                                               state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name + "] supplied data: **",
    6346           0 :                                           state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatTempDensityErrIndex,
    6347             :                                           Temperature,
    6348             :                                           Temperature,
    6349             :                                           _,
    6350             :                                           "{C}",
    6351             :                                           "{C}");
    6352             :         }
    6353     2308980 :         return ReturnValue;
    6354             :     }
    6355             : 
    6356             :     //*****************************************************************************
    6357             : 
    6358    74365304 :     Real64 GetSatSpecificHeatRefrig(EnergyPlusData &state,
    6359             :                                     std::string_view const Refrigerant, // carries in substance name
    6360             :                                     Real64 const Temperature,           // actual temperature given as input
    6361             :                                     Real64 const Quality,               // actual quality given as input
    6362             :                                     int &RefrigIndex,                   // Index to Refrigerant Properties
    6363             :                                     std::string_view const CalledFrom   // routine this function was called from (error messages)
    6364             :     )
    6365             :     {
    6366             : 
    6367             :         // SUBROUTINE INFORMATION:
    6368             :         //       AUTHOR         Mike Turner
    6369             :         //       DATE WRITTEN   10 December 99
    6370             :         //       MODIFIED       Rick Strand (April 2000, May 2000)
    6371             :         //                      Simon Rees (May 2002)
    6372             :         //       RE-ENGINEERED  na
    6373             : 
    6374             :         // PURPOSE OF THIS SUBROUTINE:
    6375             :         // This finds specific heat for given temperature and a quality under the vapor dome.
    6376             :         // This fucntion is only called with a valid refrigerant and quality between 0 and 1.
    6377             : 
    6378             :         // METHODOLOGY EMPLOYED:
    6379             :         // Calls GetInterpolatedSatProp to linearly interpolate between the saturated
    6380             :         // liquid  and vapour specific heats according to the given quality.
    6381             : 
    6382             :         // REFERENCES:
    6383             :         // na
    6384             : 
    6385             :         // USE STATEMENTS:
    6386             :         // na
    6387             : 
    6388             :         // Return value
    6389             :         Real64 ReturnValue;
    6390             : 
    6391             :         // Locals
    6392             :         // FUNCTION ARGUMENT DEFINITIONS:
    6393             : 
    6394             :         // FUNCTION PARAMETER DEFINITIONS:
    6395             :         static constexpr std::string_view RoutineName("GetSatSpecificHeatRefrig: ");
    6396             : 
    6397             :         // INTERFACE BLOCK SPECIFICATIONS:
    6398             :         // na
    6399             : 
    6400             :         // DERIVED TYPE DEFINITIONS:
    6401             :         // na
    6402             : 
    6403             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    6404             :         int RefrigNum; // index for refrigerant under consideration
    6405             : 
    6406    74365304 :         if (state.dataFluidProps->GetInput) {
    6407           7 :             GetFluidPropertiesData(state);
    6408           7 :             state.dataFluidProps->GetInput = false;
    6409             :         }
    6410             : 
    6411    74365304 :         RefrigNum = 0;
    6412    74365304 :         if (state.dataFluidProps->NumOfRefrigerants == 0) {
    6413           0 :             ReportFatalRefrigerantErrors(
    6414           0 :                 state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, "GetSatSpecificHeatRefrig", "properties", CalledFrom);
    6415             :         }
    6416             : 
    6417    74365304 :         if ((Quality < 0.0) || (Quality > 1.0)) {
    6418           0 :             ShowSevereError(state, fmt::format("{}Refrigerant \"{}\", invalid quality, called from {}", RoutineName, Refrigerant, CalledFrom));
    6419           0 :             ShowContinueError(state, format("Saturated density quality must be between 0 and 1, entered value=[{:.4R}].", Quality));
    6420           0 :             ShowFatalError(state, "Program terminates due to preceding condition.");
    6421             :         }
    6422             : 
    6423             :         // Find which refrigerant (index) is being requested and then determine
    6424             :         // where the temperature is within the temperature array
    6425    74365304 :         if (RefrigIndex > 0) {
    6426    74365266 :             RefrigNum = RefrigIndex;
    6427             :         } else {
    6428             :             // Find which refrigerant (index) is being requested
    6429          38 :             RefrigNum = FindRefrigerant(state, Refrigerant);
    6430          38 :             if (RefrigNum == 0) {
    6431           0 :                 ReportFatalRefrigerantErrors(state,
    6432           0 :                                              state.dataFluidProps->NumOfRefrigerants,
    6433             :                                              RefrigNum,
    6434             :                                              true,
    6435             :                                              Refrigerant,
    6436             :                                              "GetSatSpecificHeatRefrig",
    6437             :                                              "properties",
    6438           0 :                                              CalledFrom);
    6439             :             }
    6440          38 :             RefrigIndex = RefrigNum;
    6441             :         }
    6442    74365304 :         auto const &refrig(state.dataFluidProps->RefrigData(RefrigNum));
    6443             : 
    6444             :         // Apply linear interpolation function
    6445    74365304 :         ReturnValue = GetInterpolatedSatProp(state,
    6446             :                                              Temperature,
    6447             :                                              refrig.CpTemps,
    6448             :                                              refrig.CpfValues,
    6449             :                                              refrig.CpfgValues,
    6450             :                                              Quality,
    6451             :                                              CalledFrom,
    6452    74365304 :                                              refrig.CpfLowTempIndex,
    6453    74365304 :                                              refrig.CpfHighTempIndex);
    6454             : 
    6455    74365304 :         return ReturnValue;
    6456             :     }
    6457             : 
    6458             :     //*****************************************************************************
    6459             : 
    6460    22655929 :     Real64 GetSupHeatEnthalpyRefrig(EnergyPlusData &state,
    6461             :                                     std::string_view const Refrigerant, // carries in substance name
    6462             :                                     Real64 const Temperature,           // actual temperature given as input
    6463             :                                     Real64 const Pressure,              // actual pressure given as input
    6464             :                                     int &RefrigIndex,                   // Index to Refrigerant Properties
    6465             :                                     std::string_view const CalledFrom   // routine this function was called from (error messages)
    6466             :     )
    6467             :     {
    6468             : 
    6469             :         // SUBROUTINE INFORMATION:
    6470             :         //       AUTHOR         Mike Turner
    6471             :         //       DATE WRITTEN   10 December 99
    6472             :         //       MODIFIED       Rick Strand (April 2000, May 2000)
    6473             :         //       MODIFIED       Simon Rees (May 2002)
    6474             :         //       RE-ENGINEERED  N/A
    6475             : 
    6476             :         // PURPOSE OF THIS SUBROUTINE:
    6477             :         // Performs linear interpolation between pressures and temperatures and
    6478             :         // returns enthalpy values.  Works only in superheated region.
    6479             : 
    6480             :         // METHODOLOGY EMPLOYED:
    6481             :         // Double linear interpolation is used with enthalpy values at four
    6482             :         // pressure/temperature input points surrounding the given temperature
    6483             :         // and pressure argument values.
    6484             :         // With enthalpy data it is assumed that zero values in the data are in
    6485             :         // the saturated region. Hence, values near the saturation line are
    6486             :         // approximated using the saturation value instead of the zero data value.
    6487             :         // points completely in the saturation region are given the saturation value
    6488             :         // at the given temperature. Points at the upper limits of pressure/temperature
    6489             :         // have the pressure/temperature capped. Warnings are given if the point
    6490             :         // is not clearly in the bounds of the superheated data.
    6491             : 
    6492             :         // REFERENCES:
    6493             :         // na
    6494             : 
    6495             :         // USE STATEMENTS:
    6496             :         // na
    6497             : 
    6498             :         // Return value
    6499             :         Real64 ReturnValue;
    6500             : 
    6501             :         // Locals
    6502             :         // FUNCTION ARGUMENT DEFINITIONS:
    6503             : 
    6504             :         // FUNCTION PARAMETER DEFINITIONS:
    6505             :         static constexpr std::string_view RoutineName("GetSupHeatEnthalpyRefrig: ");
    6506             :         static constexpr std::string_view RoutineNameNoSpace("GetSupHeatEnthalpyRefrig:");
    6507             :         static constexpr std::string_view RoutineNameNoColon("GetSupHeatEnthalpyRefrig");
    6508             : 
    6509             :         // INTERFACE BLOCK SPECIFICATIONS:
    6510             :         // na
    6511             : 
    6512             :         // DERIVED TYPE DEFINITIONS:
    6513             :         // na
    6514             : 
    6515             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    6516             :         Real64 PressInterpRatio; // Interpolation factor w.r.t pressure
    6517             :         Real64 TempInterpRatio;  // Interpolation factor w.r.t temperature
    6518             :         Real64 EnthalpyHigh;     // Enthalpy value at interpolated pressure and high temperature
    6519             :         Real64 EnthalpyLow;      // Enthalpy value at interpolated pressure and low temperature
    6520             :         Real64 LoTempLoEnthalpy; // Enthalpy value at low pressure and low temperature
    6521             :         Real64 LoTempHiEnthalpy; // Enthalpy value at high pressure and low temperature
    6522             :         Real64 HiTempLoEnthalpy; // Enthalpy value at low pressure and high temperature
    6523             :         Real64 HiTempHiEnthalpy; // Enthalpy value at high pressure and high temperature
    6524             : 
    6525             :         int HiTempIndex;  // high temperature index value
    6526             :         int HiPressIndex; // high pressure index value
    6527             :         int LoPressIndex; // low index value of Pressure from table
    6528             :         int RefrigNum;    // index for refrigerant under consideration
    6529             :         int TempIndex;    // low index value of Temperature from table
    6530             : 
    6531             :         // error counters and dummy string
    6532             :         int ErrCount;             // error counter for current call
    6533             :         int CurTempRangeErrCount; // error counter for current call
    6534             :         int CurPresRangeErrCount; // error counter for current call
    6535             : 
    6536             :         // see if data is there
    6537    22655929 :         if (state.dataFluidProps->GetInput) {
    6538           1 :             GetFluidPropertiesData(state);
    6539           1 :             state.dataFluidProps->GetInput = false;
    6540             :         }
    6541             : 
    6542    22655929 :         RefrigNum = 0;
    6543    22655929 :         if (state.dataFluidProps->NumOfRefrigerants == 0) {
    6544           0 :             ReportFatalRefrigerantErrors(
    6545           0 :                 state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, RoutineNameNoColon, "properties", CalledFrom);
    6546             :         }
    6547             : 
    6548    22655929 :         ErrCount = 0;
    6549    22655929 :         CurTempRangeErrCount = 0;
    6550    22655929 :         CurPresRangeErrCount = 0;
    6551             : 
    6552             :         // Find which refrigerant (index) is being requested and then determine
    6553             :         // where the temperature and pressure are within the temperature and
    6554             :         // pressure arrays, respectively
    6555    22655929 :         if (RefrigIndex > 0) {
    6556    22655928 :             RefrigNum = RefrigIndex;
    6557             :         } else {
    6558             :             // Find which refrigerant (index) is being requested
    6559           1 :             RefrigNum = FindRefrigerant(state, Refrigerant);
    6560           1 :             if (RefrigNum == 0) {
    6561           0 :                 ReportFatalRefrigerantErrors(
    6562           0 :                     state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, RoutineNameNoColon, "properties", CalledFrom);
    6563             :             }
    6564           1 :             RefrigIndex = RefrigNum;
    6565             :         }
    6566    22655929 :         auto const &refrig(state.dataFluidProps->RefrigData(RefrigNum));
    6567             : 
    6568    22655929 :         TempIndex = FindArrayIndex(Temperature, refrig.SHTemps, 1, refrig.NumSuperTempPts);
    6569    22655929 :         LoPressIndex = FindArrayIndex(Pressure, refrig.SHPress, 1, refrig.NumSuperPressPts);
    6570             : 
    6571             :         // check temperature data range and attempt to cap if necessary
    6572    22655929 :         if ((TempIndex > 0) && (TempIndex < refrig.NumSuperTempPts)) { // in range
    6573    22655929 :             HiTempIndex = TempIndex + 1;
    6574    22655929 :             TempInterpRatio = (Temperature - refrig.SHTemps(TempIndex)) / (refrig.SHTemps(HiTempIndex) - refrig.SHTemps(TempIndex));
    6575           0 :         } else if (TempIndex < 1) {
    6576           0 :             ++CurTempRangeErrCount;
    6577           0 :             ++ErrCount;
    6578           0 :             TempIndex = 1;
    6579           0 :             HiTempIndex = TempIndex;
    6580           0 :             TempInterpRatio = 0.0;
    6581             :         } else { // out of range
    6582           0 :             ++CurTempRangeErrCount;
    6583           0 :             ++ErrCount;
    6584             :             // FindArrayIndex will return upper or lower bound so TempIndex gives upper/lower limit
    6585           0 :             HiTempIndex = TempIndex;
    6586           0 :             TempInterpRatio = 0.0;
    6587             :         }
    6588             : 
    6589             :         // check pressure data range and attempt to cap if necessary
    6590    22655929 :         if ((LoPressIndex > 0) && (LoPressIndex < refrig.NumSuperPressPts)) { // in range
    6591    22655929 :             HiPressIndex = LoPressIndex + 1;
    6592    22655929 :             PressInterpRatio = (Pressure - refrig.SHPress(LoPressIndex)) / (refrig.SHPress(HiPressIndex) - refrig.SHPress(LoPressIndex));
    6593           0 :         } else if (LoPressIndex < 1) {
    6594           0 :             ++CurPresRangeErrCount;
    6595           0 :             ++ErrCount;
    6596             :             // FindArrayIndex will return upper or lower bound so TempIndex gives upper/lower limit
    6597           0 :             LoPressIndex = 1;
    6598           0 :             HiPressIndex = LoPressIndex;
    6599           0 :             PressInterpRatio = 0.0;
    6600             :         } else { // out of range
    6601           0 :             ++CurPresRangeErrCount;
    6602           0 :             ++ErrCount;
    6603           0 :             HiPressIndex = LoPressIndex;
    6604           0 :             PressInterpRatio = 0.0;
    6605             :         }
    6606             : 
    6607             :         // get interpolation point values
    6608    22655929 :         LoTempLoEnthalpy = refrig.HshValues(LoPressIndex, TempIndex);
    6609    22655929 :         LoTempHiEnthalpy = refrig.HshValues(HiPressIndex, TempIndex);
    6610    22655929 :         HiTempLoEnthalpy = refrig.HshValues(LoPressIndex, HiTempIndex);
    6611    22655929 :         HiTempHiEnthalpy = refrig.HshValues(HiPressIndex, HiTempIndex);
    6612             : 
    6613             :         // to give reasonable interpolation near saturation reset any point with zero value
    6614             :         // in table to saturation value
    6615    22655929 :         if (LoTempLoEnthalpy <= 0.0) {
    6616         486 :             LoTempLoEnthalpy = GetSatEnthalpyRefrig(state, Refrigerant, Temperature, 1.0, RefrigNum, RoutineNameNoColon);
    6617             :         }
    6618    22655929 :         if (LoTempHiEnthalpy <= 0.0) {
    6619     9110306 :             LoTempHiEnthalpy = GetSatEnthalpyRefrig(state, Refrigerant, Temperature, 1.0, RefrigNum, RoutineNameNoColon);
    6620             :         }
    6621    22655929 :         if (HiTempLoEnthalpy <= 0.0) {
    6622           0 :             HiTempLoEnthalpy = GetSatEnthalpyRefrig(state, Refrigerant, Temperature, 1.0, RefrigNum, RoutineNameNoColon);
    6623             :         }
    6624    22655929 :         if (HiTempHiEnthalpy <= 0.0) {
    6625         486 :             HiTempHiEnthalpy = GetSatEnthalpyRefrig(state, Refrigerant, Temperature, 1.0, RefrigNum, RoutineNameNoColon);
    6626             :         }
    6627             : 
    6628             :         // interpolate w.r.t. pressure
    6629    22655929 :         EnthalpyLow = PressInterpRatio * LoTempHiEnthalpy + (1.0 - PressInterpRatio) * LoTempLoEnthalpy;
    6630             : 
    6631    22655929 :         EnthalpyHigh = PressInterpRatio * HiTempHiEnthalpy + (1.0 - PressInterpRatio) * HiTempLoEnthalpy;
    6632             : 
    6633             :         // interpolate w.r.t. temperature
    6634    22655929 :         ReturnValue = TempInterpRatio * EnthalpyHigh + (1.0 - TempInterpRatio) * EnthalpyLow;
    6635             : 
    6636             :         // Check to see if all data is at zero. In this case we are completely
    6637             :         // inside the saturation dome. Best thing we can do is return saturation value
    6638    45312830 :         if ((refrig.HshValues(LoPressIndex, TempIndex) <= 0.0) && (refrig.HshValues(HiPressIndex, TempIndex) <= 0.0) &&
    6639    22656415 :             (refrig.HshValues(LoPressIndex, HiTempIndex) <= 0.0) && (refrig.HshValues(HiPressIndex, HiTempIndex) <= 0.0)) {
    6640           0 :             ++state.dataFluidProps->SatErrCountGetSupHeatEnthalpyRefrig;
    6641             :             // set return value
    6642           0 :             ReturnValue = GetSatEnthalpyRefrig(state, Refrigerant, Temperature, 1.0, RefrigNum, fmt::format("{}{}", RoutineNameNoSpace, CalledFrom));
    6643             :             // send warning
    6644           0 :             if (!state.dataGlobal->WarmupFlag) {
    6645           0 :                 state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupEnthalpyErrCount +=
    6646           0 :                     state.dataFluidProps->SatErrCountGetSupHeatEnthalpyRefrig;
    6647             :                 // send warning
    6648           0 :                 if (state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatTempDensityErrCount <= state.dataFluidProps->RefrigerantErrorLimitTest) {
    6649           0 :                     ShowWarningMessage(state,
    6650           0 :                                        std::string{RoutineName} + "Refrigerant [" + state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    6651             :                                            "] is saturated at the given conditions, saturated enthalpy at given temperature returned. **");
    6652           0 :                     ShowContinueError(state, fmt::format("...Called From:{}", CalledFrom));
    6653           0 :                     ShowContinueError(state, format("Refrigerant temperature = {:.2R}", Temperature));
    6654           0 :                     ShowContinueError(state, format("Refrigerant pressure = {:.0R}", Pressure));
    6655           0 :                     ShowContinueError(state, format("Returned Enthalpy value = {:.3R}", ReturnValue));
    6656           0 :                     ShowContinueErrorTimeStamp(state, "");
    6657             :                 }
    6658           0 :                 ShowRecurringWarningErrorAtEnd(state,
    6659           0 :                                                std::string{RoutineName} + "Refrigerant [" +
    6660           0 :                                                    state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    6661             :                                                    "] saturated at the given conditions **",
    6662           0 :                                                state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupEnthalpyErrIndex,
    6663             :                                                Temperature,
    6664             :                                                Temperature,
    6665             :                                                _,
    6666             :                                                "{C}",
    6667             :                                                "{C}");
    6668             :             }
    6669           0 :             return ReturnValue;
    6670             :         }
    6671             : 
    6672    22655929 :         if (!state.dataGlobal->WarmupFlag) {
    6673             :             // some checks...
    6674     3183456 :             if (ErrCount > 0) {
    6675             :                 // send temp range error if flagged
    6676           0 :                 state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupEnthalpyTempErrCount += CurTempRangeErrCount;
    6677           0 :                 if (CurTempRangeErrCount > 0 && state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupEnthalpyTempErrCount <=
    6678           0 :                                                     state.dataFluidProps->RefrigerantErrorLimitTest) {
    6679           0 :                     ShowWarningMessage(state,
    6680           0 :                                        std::string{RoutineName} + "Refrigerant [" + state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    6681             :                                            "] Temperature is out of range for superheated refrigerant enthalpy: values capped **");
    6682           0 :                     ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
    6683           0 :                     ShowContinueErrorTimeStamp(state, "");
    6684             :                 }
    6685           0 :                 if (CurTempRangeErrCount > 0) {
    6686           0 :                     ShowRecurringWarningErrorAtEnd(state,
    6687           0 :                                                    std::string{RoutineName} + "Refrigerant [" +
    6688           0 :                                                        state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    6689             :                                                        "] Temperature is out of range for superheated refrigerant enthalpy: values capped **",
    6690           0 :                                                    state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupEnthalpyTempErrIndex,
    6691             :                                                    Temperature,
    6692             :                                                    Temperature,
    6693             :                                                    _,
    6694             :                                                    "{C}",
    6695             :                                                    "{C}");
    6696             :                 }
    6697             : 
    6698             :                 // send pressure range error if flagged
    6699           0 :                 state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupEnthalpyPresErrCount += CurPresRangeErrCount;
    6700           0 :                 if (CurPresRangeErrCount > 0 && state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupEnthalpyPresErrCount <=
    6701           0 :                                                     state.dataFluidProps->RefrigerantErrorLimitTest) {
    6702           0 :                     ShowWarningMessage(state,
    6703           0 :                                        std::string{RoutineName} + "Refrigerant [" + state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    6704             :                                            "] Pressure is out of range for superheated refrigerant enthalpy: values capped **");
    6705           0 :                     ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
    6706           0 :                     ShowContinueErrorTimeStamp(state, "");
    6707             :                 }
    6708           0 :                 if (CurPresRangeErrCount > 0) {
    6709           0 :                     ShowRecurringWarningErrorAtEnd(state,
    6710           0 :                                                    std::string{RoutineName} + "Refrigerant [" +
    6711           0 :                                                        state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    6712             :                                                        "] Pressure is out of range for superheated refrigerant enthalpy: values capped **",
    6713           0 :                                                    state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupEnthalpyPresErrIndex,
    6714             :                                                    Pressure,
    6715             :                                                    Pressure,
    6716             :                                                    _,
    6717             :                                                    "{Pa}",
    6718             :                                                    "{Pa}");
    6719             :                 }
    6720             :             } // end error checking
    6721             :         }
    6722             : 
    6723    22655929 :         return ReturnValue;
    6724             :     }
    6725             : 
    6726             :     //*****************************************************************************
    6727             : 
    6728           0 :     Real64 GetSupHeatPressureRefrig(EnergyPlusData &state,
    6729             :                                     std::string const &Refrigerant,   // carries in substance name
    6730             :                                     Real64 const Temperature,         // actual temperature given as input
    6731             :                                     Real64 const Enthalpy,            // actual enthalpy given as input
    6732             :                                     int &RefrigIndex,                 // Index to Refrigerant Properties
    6733             :                                     std::string_view const CalledFrom // routine this function was called from (error messages)
    6734             :     )
    6735             :     {
    6736             : 
    6737             :         // SUBROUTINE INFORMATION:
    6738             :         //       AUTHOR         Rick Strand
    6739             :         //       DATE WRITTEN   May 2000
    6740             :         //       MODIFIED       Simon Rees (May 2002)
    6741             :         //       RE-ENGINEERED  na
    6742             : 
    6743             :         // PURPOSE OF THIS SUBROUTINE:
    6744             :         // Performs linear interpolation between enthalpy and temperatures and
    6745             :         // returns pressure values.  Works only in superheated region.
    6746             : 
    6747             :         // METHODOLOGY EMPLOYED:
    6748             :         // Double linear interpolation is used with pressure values at four
    6749             :         // enthalpy/temperature input points surrounding the given temperature
    6750             :         // and enthalpy argument values.
    6751             :         // All enthalpies have to be calculated at the given temperature before a
    6752             :         // search is made for the data adjacent to the given enthalpy. Linear interpolation
    6753             :         // using the enthalpy data is used to interpolate the correspondng pressures.
    6754             :         // Temperatures and enthalpies outside the bounds of the available data are capped
    6755             :         // and warnings given. For enthlpys lower than the saturated vapour value at the
    6756             :         // given temperature result in the saturation pressure being returned (calls to
    6757             :         // GetSatEnthalpy and GetSatPressure are made.)
    6758             : 
    6759             :         // REFERENCES:
    6760             :         // na
    6761             : 
    6762             :         // USE STATEMENTS:
    6763             :         // na
    6764             : 
    6765             :         // Return value
    6766             :         Real64 ReturnValue;
    6767             : 
    6768             :         // Locals
    6769             :         // FUNCTION ARGUMENT DEFINITIONS:
    6770             : 
    6771             :         // FUNCTION PARAMETERS:
    6772             :         // the enthalpy calculated from the pressure found
    6773             :         static constexpr std::string_view RoutineName("GetSupHeatPressureRefrig: ");
    6774             :         static constexpr std::string_view RoutineNameNoSpace("GetSupHeatPressureRefrig:");
    6775             : 
    6776             :         // INTERFACE BLOCK SPECIFICATIONS:
    6777             :         // na
    6778             : 
    6779             :         // DERIVED TYPE DEFINITIONS:
    6780             :         // na
    6781             : 
    6782             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    6783             :         Real64 EnthalpyCheck;   // recalculates enthalpy based on calculated pressure
    6784             :         Real64 EnthalpyHigh;    // Enthalpy value at interpolated pressure and high temperature
    6785             :         Real64 EnthalpyLow;     // Enthalpy value at interpolated pressure and low temperature
    6786             :         Real64 EnthalpyMax;     // Enthalpy value at interpolated pressure and high temperature
    6787             :         Real64 EnthalpyMin;     // Enthalpy value at interpolated pressure and low temperature
    6788             :         Real64 SatEnthalpy;     // Saturated vapour enthalpy
    6789             :         Real64 TempInterpRatio; // Interpolation ratio w.r.t temperature
    6790             :         Real64 EnthInterpRatio; // Interpolation ratio w.r.t enthalpy
    6791             : 
    6792             :         int finish; // index of high end of enthalpy values
    6793             :         int start;  // index of high end of enthalpy values
    6794             :         int Loop;   // DO loop counter
    6795             :         int middle; // mid-point for interval halving
    6796             : 
    6797             :         int RefrigNum;    // index for refrigerant under consideration
    6798             :         int LoTempStart;  // lower non-zero index of enthalpy values at lower temp.
    6799             :         int LoTempFinish; // upper non-zero index of enthalpy values at lower temp.
    6800             :         int HiTempStart;  // lower non-zero index of enthalpy values at higher temp.
    6801             :         int HiTempFinish; // upper non-zero index of enthalpy values at higher temp.
    6802             :         int TempStart;    // corrected lower non-zero index of enthalpy values
    6803             :         int TempFinish;   // corrected upper non-zero index of enthalpy values
    6804             : 
    6805             :         int LoTempIndex;     // Index value of lower temperature from data
    6806             :         int HiTempIndex;     // Index value of higher temperature from data
    6807             :         int LoEnthalpyIndex; // Index value of lower enthalpy from data
    6808             :         int HiEnthalpyIndex; // Index value of higher enthalpy from data
    6809             : 
    6810             :         // error counters and dummy string
    6811             :         int ErrCount;                 // error counter for current call
    6812             :         int CurTempRangeErrCount;     // error counter for current call
    6813             :         int CurEnthalpyRangeErrCount; // error counter for current call
    6814             :         int CurSatErrCount;           // error counter for current call
    6815             : 
    6816           0 :         if (state.dataFluidProps->GetInput) {
    6817           0 :             GetFluidPropertiesData(state);
    6818           0 :             state.dataFluidProps->GetInput = false;
    6819             :         }
    6820             : 
    6821           0 :         RefrigNum = 0;
    6822           0 :         if (state.dataFluidProps->NumOfRefrigerants == 0) {
    6823           0 :             ReportFatalRefrigerantErrors(
    6824           0 :                 state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, "GetSupHeatPressureRefrig", "properties", CalledFrom);
    6825             :         }
    6826             : 
    6827           0 :         ErrCount = 0;
    6828           0 :         CurTempRangeErrCount = 0;
    6829           0 :         CurEnthalpyRangeErrCount = 0;
    6830           0 :         CurSatErrCount = 0;
    6831             : 
    6832             :         // Find which refrigerant (index) is being requested and then determine
    6833             :         // where the temperature is within the temperature array
    6834           0 :         if (RefrigIndex > 0) {
    6835           0 :             RefrigNum = RefrigIndex;
    6836             :         } else {
    6837             :             // Find which refrigerant (index) is being requested
    6838           0 :             RefrigNum = FindRefrigerant(state, Refrigerant);
    6839           0 :             if (RefrigNum == 0) {
    6840           0 :                 ReportFatalRefrigerantErrors(state,
    6841           0 :                                              state.dataFluidProps->NumOfRefrigerants,
    6842             :                                              RefrigNum,
    6843             :                                              true,
    6844             :                                              Refrigerant,
    6845             :                                              "GetSupHeatPressureRefrig",
    6846             :                                              "properties",
    6847           0 :                                              CalledFrom);
    6848             :             }
    6849           0 :             RefrigIndex = RefrigNum;
    6850             :         }
    6851           0 :         auto const &refrig(state.dataFluidProps->RefrigData(RefrigNum));
    6852             : 
    6853           0 :         LoTempIndex = FindArrayIndex(Temperature, refrig.SHTemps, 1, refrig.NumSuperTempPts);
    6854           0 :         HiTempIndex = LoTempIndex + 1;
    6855             : 
    6856             :         // check temperature data range and attempt to cap if necessary
    6857           0 :         if ((LoTempIndex > 0) && (LoTempIndex < refrig.NumSuperTempPts)) { // in range
    6858           0 :             HiTempIndex = LoTempIndex + 1;
    6859           0 :         } else if (LoTempIndex < 1) { // below lower bound
    6860           0 :             ++CurTempRangeErrCount;
    6861           0 :             LoTempIndex = 1;
    6862           0 :             HiTempIndex = LoTempIndex;
    6863             :         } else { // out of range
    6864           0 :             ++CurTempRangeErrCount;
    6865           0 :             HiTempIndex = LoTempIndex;
    6866             :         }
    6867             : 
    6868             :         // check for lowest non-zero value in lower temp data
    6869           0 :         LoTempStart = refrig.NumSuperPressPts;
    6870           0 :         for (Loop = 1; Loop <= refrig.NumSuperPressPts; ++Loop) {
    6871           0 :             if (refrig.HshValues(Loop, LoTempIndex) > 0.0) {
    6872           0 :                 LoTempStart = Loop;
    6873           0 :                 break;
    6874             :             }
    6875             :         }
    6876             :         // check for highest non-zero value in lower temp data
    6877           0 :         LoTempFinish = 1;
    6878           0 :         for (Loop = refrig.NumSuperPressPts; Loop >= 1; --Loop) {
    6879           0 :             if (refrig.HshValues(Loop, LoTempIndex) <= 0.0) {
    6880           0 :                 LoTempFinish = Loop;
    6881             :                 // EXIT
    6882             :             }
    6883             :         }
    6884             :         // check for lowest non-zero value in high temp data
    6885           0 :         HiTempStart = refrig.NumSuperPressPts;
    6886           0 :         for (Loop = 1; Loop <= refrig.NumSuperPressPts; ++Loop) {
    6887           0 :             if (refrig.HshValues(Loop, HiTempIndex) > 0.0) {
    6888           0 :                 HiTempStart = Loop;
    6889           0 :                 break;
    6890             :             }
    6891             :         }
    6892             : 
    6893             :         // check for highest non-zero value in high temp data
    6894           0 :         HiTempFinish = 1;
    6895           0 :         for (Loop = refrig.NumSuperPressPts; Loop >= 1; --Loop) {
    6896           0 :             if (refrig.HshValues(Loop, HiTempIndex) <= 0.0) {
    6897           0 :                 HiTempFinish = Loop;
    6898             :             }
    6899             :         }
    6900             : 
    6901             :         // find bounds of both hi and lo temp data
    6902           0 :         TempStart = max(LoTempStart, HiTempStart);
    6903           0 :         TempFinish = min(LoTempFinish, HiTempFinish);
    6904             :         // calculate interpolation ratio w.r.t temperature
    6905             :         // This ratio is used to find enthalpies at the given temperature
    6906           0 :         TempInterpRatio = (Temperature - refrig.SHTemps(LoTempIndex)) / (refrig.SHTemps(HiTempIndex) - refrig.SHTemps(LoTempIndex));
    6907             : 
    6908             :         // search for array index by bisection
    6909           0 :         start = TempStart; // set the bounds
    6910           0 :         finish = TempFinish;
    6911             : 
    6912             :         // find the bounds of the enthalpy data available
    6913           0 :         EnthalpyMax = max(refrig.HshValues(TempStart, LoTempIndex), refrig.HshValues(TempStart, HiTempIndex));
    6914           0 :         EnthalpyMin = min(refrig.HshValues(TempFinish, LoTempIndex), refrig.HshValues(TempFinish, HiTempIndex));
    6915             :         // get saturated enthalpy for checking
    6916           0 :         SatEnthalpy = GetSatEnthalpyRefrig(state, Refrigerant, Temperature, 1.0, RefrigNum, fmt::format("{}{}", RoutineNameNoSpace, CalledFrom));
    6917             : 
    6918             :         // make some checks on the data before interpolating
    6919           0 :         if (Enthalpy < SatEnthalpy) {
    6920             :             // flag error
    6921           0 :             ++CurSatErrCount;
    6922           0 :             ++ErrCount;
    6923             :             // return sat pressure at this temperature
    6924           0 :             ReturnValue = GetSatPressureRefrig(state, Refrigerant, Temperature, RefrigNum, fmt::format("{}{}", RoutineNameNoSpace, CalledFrom));
    6925             : 
    6926           0 :         } else if (EnthalpyMax < Enthalpy || EnthalpyMin > Enthalpy) {
    6927             :             // out of range error
    6928           0 :             ++CurEnthalpyRangeErrCount;
    6929           0 :             ++ErrCount;
    6930           0 :             if (Enthalpy > EnthalpyMax) {
    6931             :                 // return min pressure
    6932           0 :                 ReturnValue = refrig.SHPress(HiTempStart);
    6933             :             } else {
    6934             :                 // return max pressure
    6935           0 :                 ReturnValue = refrig.SHPress(LoTempFinish);
    6936             :             }
    6937             :         } else {
    6938             :             // go ahead and search
    6939           0 :             while ((finish - start) > 1) {
    6940           0 :                 middle = (finish + start) / 2;
    6941             : 
    6942             :                 // calc enthalpy at middle index for given temperature
    6943           0 :                 EnthalpyCheck = refrig.HshValues(middle, LoTempIndex) +
    6944           0 :                                 TempInterpRatio * (refrig.HshValues(middle, HiTempIndex) - refrig.HshValues(middle, LoTempIndex));
    6945             : 
    6946           0 :                 if (Enthalpy < EnthalpyCheck) {
    6947           0 :                     start = middle;
    6948             :                 } else {
    6949           0 :                     finish = middle;
    6950             :                 }
    6951             :             }
    6952           0 :             LoEnthalpyIndex = start;
    6953           0 :             HiEnthalpyIndex = start + 1;
    6954             : 
    6955             :             // calculate enthalpies adjacent specified enthalpy at given temperature
    6956           0 :             EnthalpyLow = refrig.HshValues(LoEnthalpyIndex, LoTempIndex) +
    6957           0 :                           TempInterpRatio * (refrig.HshValues(LoEnthalpyIndex, HiTempIndex) - refrig.HshValues(LoEnthalpyIndex, LoTempIndex));
    6958             : 
    6959           0 :             EnthalpyHigh = refrig.HshValues(HiEnthalpyIndex, LoTempIndex) +
    6960           0 :                            TempInterpRatio * (refrig.HshValues(HiEnthalpyIndex, HiTempIndex) - refrig.HshValues(HiEnthalpyIndex, LoTempIndex));
    6961             :             // calculate an interpolation ratio
    6962           0 :             EnthInterpRatio = (Enthalpy - EnthalpyLow) / (EnthalpyHigh - EnthalpyLow);
    6963             :             // apply this interpolation ratio to find the final pressure
    6964           0 :             ReturnValue = refrig.SHPress(LoEnthalpyIndex) + EnthInterpRatio * (refrig.SHPress(HiEnthalpyIndex) - refrig.SHPress(LoEnthalpyIndex));
    6965             :         }
    6966             : 
    6967           0 :         if (!state.dataGlobal->WarmupFlag) {
    6968             :             // ** make error checks **
    6969           0 :             if (ErrCount > 0) {
    6970             :                 // send near saturation warning if flagged
    6971           0 :                 state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupPressureErrCount += CurSatErrCount;
    6972             :                 // send warning
    6973           0 :                 if (state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupPressureErrCount <= state.dataFluidProps->RefrigerantErrorLimitTest) {
    6974           0 :                     ShowSevereMessage(
    6975             :                         state,
    6976           0 :                         std::string{RoutineName} + "Refrigerant [" + state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    6977             :                             "] is saturated at the given enthalpy and temperature, saturated enthalpy at given temperature returned. **");
    6978           0 :                     ShowContinueError(state, fmt::format("...Called From:{}", CalledFrom));
    6979           0 :                     ShowContinueError(state, format("Refrigerant temperature = {:.2R}", Temperature));
    6980           0 :                     ShowContinueError(state, format("Refrigerant Enthalpy = {:.3R}", Enthalpy));
    6981           0 :                     ShowContinueError(state, format("Returned Pressure value = {:.0R}", ReturnValue));
    6982           0 :                     ShowContinueErrorTimeStamp(state, "");
    6983             :                 }
    6984           0 :                 if (CurSatErrCount > 0) {
    6985           0 :                     ShowRecurringSevereErrorAtEnd(state,
    6986           0 :                                                   std::string{RoutineName} + "Refrigerant [" +
    6987           0 :                                                       state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    6988             :                                                       "] saturated at the given enthalpy and temperature **",
    6989           0 :                                                   state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupPressureErrIndex,
    6990             :                                                   ReturnValue,
    6991             :                                                   ReturnValue,
    6992             :                                                   _,
    6993             :                                                   "{Pa}",
    6994             :                                                   "{Pa}");
    6995             :                 }
    6996             : 
    6997             :                 // send temp range error if flagged
    6998           0 :                 state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupPressureTempErrCount += CurTempRangeErrCount;
    6999           0 :                 if (CurTempRangeErrCount > 0 && state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupPressureTempErrCount <=
    7000           0 :                                                     state.dataFluidProps->RefrigerantErrorLimitTest) {
    7001           0 :                     ShowWarningMessage(state,
    7002           0 :                                        std::string{RoutineName} + "Refrigerant [" + state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7003             :                                            "] Temperature is out of range for superheated refrigerant pressure: values capped **");
    7004           0 :                     ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
    7005           0 :                     ShowContinueErrorTimeStamp(state, "");
    7006             :                 }
    7007           0 :                 if (CurTempRangeErrCount > 0) {
    7008           0 :                     ShowRecurringWarningErrorAtEnd(state,
    7009           0 :                                                    std::string{RoutineName} + "Refrigerant [" +
    7010           0 :                                                        state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7011             :                                                        "] Temperature is out of range for superheated refrigerant pressure: values capped **",
    7012           0 :                                                    state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupPressureTempErrIndex,
    7013             :                                                    Temperature,
    7014             :                                                    Temperature,
    7015             :                                                    _,
    7016             :                                                    "{C}",
    7017             :                                                    "{C}");
    7018             :                 }
    7019             : 
    7020             :                 // send enthalpy range error if flagged
    7021           0 :                 state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupPressureEnthErrCount += CurEnthalpyRangeErrCount;
    7022           0 :                 if (CurEnthalpyRangeErrCount > 0 && state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupPressureEnthErrCount <=
    7023           0 :                                                         state.dataFluidProps->RefrigerantErrorLimitTest) {
    7024           0 :                     ShowWarningMessage(state,
    7025           0 :                                        std::string{RoutineName} + "Refrigerant [" + state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7026             :                                            "] Pressure is out of range for superheated refrigerant enthalpy: values capped **");
    7027           0 :                     ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
    7028           0 :                     ShowContinueErrorTimeStamp(state, "");
    7029             :                 }
    7030           0 :                 if (CurEnthalpyRangeErrCount > 0) {
    7031           0 :                     ShowRecurringWarningErrorAtEnd(state,
    7032           0 :                                                    std::string{RoutineName} + "Refrigerant [" +
    7033           0 :                                                        state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7034             :                                                        "] Pressure is out of range for superheated refrigerant pressure: values capped **",
    7035           0 :                                                    state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupPressureEnthErrIndex,
    7036             :                                                    Enthalpy,
    7037             :                                                    Enthalpy,
    7038             :                                                    _,
    7039             :                                                    "{J}",
    7040             :                                                    "{J}");
    7041             :                 }
    7042             :             } // end error checking
    7043             :         }
    7044             : 
    7045           0 :         return ReturnValue;
    7046             :     }
    7047             : 
    7048             :     //*****************************************************************************
    7049             : 
    7050       32356 :     Real64 GetSupHeatTempRefrig(EnergyPlusData &state,
    7051             :                                 std::string_view const Refrigerant, // carries in substance name
    7052             :                                 Real64 const Pressure,              // actual pressure given as input
    7053             :                                 Real64 const Enthalpy,              // actual enthalpy given as input
    7054             :                                 Real64 TempLow,                     // lower bound of temperature in the iteration
    7055             :                                 Real64 TempUp,                      // upper bound of temperature in the iteration
    7056             :                                 int &RefrigIndex,                   // Index to Refrigerant Properties
    7057             :                                 std::string_view const CalledFrom   // routine this function was called from (error messages)
    7058             :     )
    7059             :     {
    7060             :         // SUBROUTINE INFORMATION:
    7061             :         //       AUTHOR         Rongpeng Zhang
    7062             :         //       DATE WRITTEN   Jan 2016
    7063             :         //       RE-ENGINEERED  na
    7064             : 
    7065             :         // PURPOSE OF THIS SUBROUTINE:
    7066             :         // Performs iterations to calculate the refrigerant temperature corresponding to the given
    7067             :         // enthalpy and pressure.  Works only in superheated region.
    7068             : 
    7069             :         // METHODOLOGY EMPLOYED:
    7070             :         // Perform iterations to identify the temperature by calling GetSupHeatEnthalpyRefrig.
    7071             : 
    7072             :         // USE STATEMENTS:
    7073             :         using General::SolveRoot;
    7074             : 
    7075             :         // Return value
    7076             :         Real64 ReturnValue;
    7077             : 
    7078             :         // FUNCTION PARAMETERS:
    7079             :         // the enthalpy calculated from the pressure found
    7080             :         static constexpr std::string_view RoutineName("GetSupHeatTempRefrig: ");
    7081             :         static constexpr std::string_view RoutineNameNoSpace("GetSupHeatTempRefrig:");
    7082             : 
    7083             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    7084             :         int RefrigNum;       // index for refrigerant under consideration
    7085             :         Real64 EnthalpyHigh; // Enthalpy value at interpolated pressure and high temperature
    7086             :         Real64 EnthalpyLow;  // Enthalpy value at interpolated pressure and low temperature
    7087             :         Real64 RefTHigh;     // High Temperature Value for Ps (max in tables)
    7088             :         Real64 RefTSat;      // Saturated temperature of the refrigerant. Used to check whether the refrigernat is in the superheat area
    7089             :         Real64 Temp;         // Temperature of the superheated refrigerant at the given enthalpy and pressure
    7090             : 
    7091       32356 :         if (state.dataFluidProps->GetInput) {
    7092           0 :             GetFluidPropertiesData(state);
    7093           0 :             state.dataFluidProps->GetInput = false;
    7094             :         }
    7095             : 
    7096       32356 :         RefrigNum = 0;
    7097       32356 :         if (state.dataFluidProps->NumOfRefrigerants == 0) {
    7098           0 :             ReportFatalRefrigerantErrors(
    7099           0 :                 state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, "GetSupHeatPressureRefrig", "properties", CalledFrom);
    7100             :         }
    7101             : 
    7102             :         // Find which refrigerant (index) is being requested and then determine
    7103             :         // where the temperature is within the temperature array
    7104       32356 :         if (RefrigIndex > 0) {
    7105       32356 :             RefrigNum = RefrigIndex;
    7106             :         } else {
    7107             :             // Find which refrigerant (index) is being requested
    7108           0 :             RefrigNum = FindRefrigerant(state, Refrigerant);
    7109           0 :             if (RefrigNum == 0) {
    7110           0 :                 ReportFatalRefrigerantErrors(state,
    7111           0 :                                              state.dataFluidProps->NumOfRefrigerants,
    7112             :                                              RefrigNum,
    7113             :                                              true,
    7114             :                                              Refrigerant,
    7115             :                                              "GetSupHeatPressureRefrig",
    7116             :                                              "properties",
    7117           0 :                                              CalledFrom);
    7118             :             }
    7119           0 :             RefrigIndex = RefrigNum;
    7120             :         }
    7121       32356 :         auto const &refrig(state.dataFluidProps->RefrigData(RefrigNum));
    7122             : 
    7123             :         // check temperature data range and attempt to cap if necessary
    7124       32356 :         RefTHigh = refrig.PsHighTempValue;
    7125       32356 :         RefTSat = GetSatTemperatureRefrig(state, Refrigerant, Pressure, RefrigNum, fmt::format("{}{}", RoutineNameNoSpace, CalledFrom));
    7126             : 
    7127       32356 :         if (TempLow < RefTSat) {
    7128           0 :             ShowWarningMessage(state,
    7129           0 :                                std::string{RoutineName} + "Refrigerant [" + state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7130             :                                    "] temperature lower bound is out of range for superheated refrigerant: values capped **");
    7131           0 :             ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
    7132           0 :             ShowContinueErrorTimeStamp(state, "");
    7133           0 :             TempLow = RefTSat;
    7134             :         }
    7135       32356 :         if (TempUp > RefTHigh) {
    7136           0 :             ShowWarningMessage(state,
    7137           0 :                                std::string{RoutineName} + "Refrigerant [" + state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7138             :                                    "] temperature lower bound is out of range for superheated refrigerant: values capped **");
    7139           0 :             ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
    7140           0 :             ShowContinueErrorTimeStamp(state, "");
    7141           0 :             TempUp = RefTHigh;
    7142             :         }
    7143       32356 :         if (TempLow >= TempUp) {
    7144           0 :             ShowWarningMessage(state,
    7145           0 :                                std::string{RoutineName} + "Refrigerant [" + state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7146             :                                    "] temperature lower bound is out of range for superheated refrigerant: values capped **");
    7147           0 :             ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
    7148           0 :             ShowContinueErrorTimeStamp(state, "");
    7149           0 :             TempLow = RefTSat;
    7150           0 :             TempUp = RefTHigh;
    7151             :         }
    7152             : 
    7153             :         // check enthalpy data range and attempt to cap if necessary
    7154       32356 :         EnthalpyLow = GetSupHeatEnthalpyRefrig(state, Refrigerant, TempLow, Pressure, RefrigNum, fmt::format("{}{}", RoutineNameNoSpace, CalledFrom));
    7155       32356 :         EnthalpyHigh = GetSupHeatEnthalpyRefrig(state, Refrigerant, TempUp, Pressure, RefrigNum, fmt::format("{}{}", RoutineNameNoSpace, CalledFrom));
    7156       32356 :         if (Enthalpy <= EnthalpyLow) {
    7157        6984 :             ReturnValue = TempLow;
    7158        6984 :             return ReturnValue;
    7159             :         }
    7160       25372 :         if (Enthalpy >= EnthalpyHigh) {
    7161          70 :             ReturnValue = TempUp;
    7162          70 :             return ReturnValue;
    7163             :         }
    7164             : 
    7165             :         // Perform iterations to obtain the temperature level
    7166             :         {
    7167       25302 :             Real64 constexpr ErrorTol(0.001); // tolerance for RegulaFalsi iterations
    7168       25302 :             int constexpr MaxIte(500);        // maximum number of iterations
    7169             :             int SolFla;                       // Flag of RegulaFalsi solver
    7170             : 
    7171      534438 :             auto f = [&state, RefrigNum, Enthalpy, Pressure](Real64 Temp) {
    7172             :                 static constexpr std::string_view RoutineNameNoSpace("GetSupHeatTempRefrigResidual");
    7173       89073 :                 Real64 Enthalpy_Req = Enthalpy;
    7174      178146 :                 std::string const &Refrigerant = state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name;
    7175       89073 :                 if (std::abs(Enthalpy_Req) < 100.0) Enthalpy_Req = sign(100.0, Enthalpy_Req);
    7176       89073 :                 int nonConstRefrigNum = RefrigNum;
    7177      178146 :                 Real64 Enthalpy_Act = GetSupHeatEnthalpyRefrig(state, Refrigerant, Temp, Pressure, nonConstRefrigNum, RoutineNameNoSpace);
    7178       89073 :                 return (Enthalpy_Act - Enthalpy_Req) / Enthalpy_Req;
    7179       25302 :             };
    7180             : 
    7181       25302 :             General::SolveRoot(state, ErrorTol, MaxIte, SolFla, Temp, f, TempLow, TempUp);
    7182       25302 :             ReturnValue = Temp;
    7183             :         }
    7184             : 
    7185       25302 :         return ReturnValue;
    7186             :     }
    7187             : 
    7188             :     //*****************************************************************************
    7189             : 
    7190    95073908 :     Real64 GetSupHeatDensityRefrig(EnergyPlusData &state,
    7191             :                                    std::string_view const Refrigerant, // carries in substance name
    7192             :                                    Real64 const Temperature,           // actual temperature given as input
    7193             :                                    Real64 const Pressure,              // actual pressure given as input
    7194             :                                    int &RefrigIndex,                   // Index to Refrigerant Properties
    7195             :                                    std::string_view const CalledFrom   // routine this function was called from (error messages)
    7196             :     )
    7197             :     {
    7198             : 
    7199             :         // SUBROUTINE INFORMATION:
    7200             :         //       AUTHOR         Mike Turner
    7201             :         //       DATE WRITTEN   10 December 99
    7202             :         //       MODIFIED       Rick Strand (April 2000, May 2000)
    7203             :         //       MODIFIED       Simon Rees (May 2002)
    7204             :         //       RE-ENGINEERED  N/A
    7205             : 
    7206             :         // PURPOSE OF THIS SUBROUTINE:
    7207             :         // Performs linear interpolation between pressures and temperatures and
    7208             :         // returns Density values.  Works only in superheated region.
    7209             : 
    7210             :         // METHODOLOGY EMPLOYED:
    7211             :         // Double linear interpolation is used with Density values at four
    7212             :         // pressure/temperature input points surrounding the given temperature
    7213             :         // and pressure arguments.
    7214             :         // With Density data it is assumed that zero values in the data are in
    7215             :         // the saturated region. Hence, values near the saturation line are
    7216             :         // approximated using the saturation value instead of the zero data value.
    7217             :         // points completely in the saturation region are given the saturation value
    7218             :         // at the given temperature. Points at the upper limits of pressure/temperature
    7219             :         // have the pressure/temperature capped. Warnings are given if the point
    7220             :         // is not clearly in the bounds of the superheated data.
    7221             : 
    7222             :         // REFERENCES:
    7223             :         // na
    7224             : 
    7225             :         // USE STATEMENTS:
    7226             :         // na
    7227             : 
    7228             :         // Return value
    7229             :         Real64 ReturnValue;
    7230             : 
    7231             :         // Locals
    7232             :         // FUNCTION ARGUMENT DEFINITIONS:
    7233             : 
    7234             :         // FUNCTION PARAMETERS:
    7235             :         static constexpr std::string_view RoutineName("GetSupHeatDensityRefrig");
    7236             : 
    7237             :         // INTERFACE BLOCK SPECIFICATIONS:
    7238             :         // na
    7239             : 
    7240             :         // DERIVED TYPE DEFINITIONS:
    7241             :         // na
    7242             : 
    7243             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    7244             :         Real64 TempInterpRatio;  // Interpolation ratio w.r.t temperature
    7245             :         Real64 PressInterpRatio; // Interpolation ratio w.r.t pressures
    7246             :         Real64 DensityHigh;      // Density value at interpolated pressure and high temperature
    7247             :         Real64 DensityLow;       // Density value at interpolated pressure and low temperature
    7248             :         Real64 LoTempLoDensity;  // Density value at low pressure and low temperature
    7249             :         Real64 LoTempHiDensity;  // Density value at high pressure and low temperature
    7250             :         Real64 HiTempLoDensity;  // Density value at low pressure and high temperature
    7251             :         Real64 HiTempHiDensity;  // Density value at high pressure and high temperature
    7252             : 
    7253             :         int HiTempIndex;  // high temperature index value
    7254             :         int HiPressIndex; // high pressure index value
    7255             :         int LoPressIndex; // low index value of Pressure from table
    7256             :         int RefrigNum;    // index for refrigerant under consideration
    7257             :         int TempIndex;    // low index value of Temperature from table
    7258             :         // error counters and dummy string
    7259             :         int ErrCount;             // error counter for current call
    7260             :         int CurTempRangeErrCount; // error counter for current call
    7261             :         int CurPresRangeErrCount; // error counter for current call
    7262             : 
    7263             :         // see if data is there
    7264    95073908 :         if (state.dataFluidProps->GetInput) {
    7265           0 :             GetFluidPropertiesData(state);
    7266           0 :             state.dataFluidProps->GetInput = false;
    7267             :         }
    7268             : 
    7269    95073908 :         RefrigNum = 0;
    7270    95073908 :         if (state.dataFluidProps->NumOfRefrigerants == 0) {
    7271           0 :             ReportFatalRefrigerantErrors(
    7272           0 :                 state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, RoutineName, "properties", CalledFrom);
    7273             :         }
    7274             : 
    7275    95073908 :         ErrCount = 0; // initialize for this call
    7276    95073908 :         CurTempRangeErrCount = 0;
    7277    95073908 :         CurPresRangeErrCount = 0;
    7278             : 
    7279             :         // Find which refrigerant (index) is being requested and then determine
    7280             :         // where the temperature and pressure are within the temperature and
    7281             :         // pressure arrays, respectively
    7282    95073908 :         if (RefrigIndex > 0) {
    7283    95073908 :             RefrigNum = RefrigIndex;
    7284             :         } else {
    7285             :             // Find which refrigerant (index) is being requested
    7286           0 :             RefrigNum = FindRefrigerant(state, Refrigerant);
    7287           0 :             if (RefrigNum == 0) {
    7288           0 :                 ReportFatalRefrigerantErrors(
    7289           0 :                     state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, RoutineName, "properties", CalledFrom);
    7290             :             }
    7291           0 :             RefrigIndex = RefrigNum;
    7292             :         }
    7293    95073908 :         auto const &refrig(state.dataFluidProps->RefrigData(RefrigNum));
    7294             : 
    7295             :         // check temperature data range and attempt to cap if necessary
    7296    95073908 :         TempIndex = FindArrayIndex(Temperature, refrig.SHTemps, 1, refrig.NumSuperTempPts);
    7297    95073908 :         if ((TempIndex > 0) && (TempIndex < refrig.NumSuperTempPts)) { // in range
    7298    95073908 :             HiTempIndex = TempIndex + 1;
    7299    95073908 :             TempInterpRatio = (Temperature - refrig.SHTemps(TempIndex)) / (refrig.SHTemps(HiTempIndex) - refrig.SHTemps(TempIndex));
    7300           0 :         } else if (TempIndex < 1) {
    7301           0 :             ++CurTempRangeErrCount;
    7302           0 :             ++ErrCount;
    7303             :             // FindArrayIndex will return upper or lower bound so TempIndex gives upper/lower limit
    7304           0 :             TempIndex = 1;
    7305           0 :             HiTempIndex = TempIndex;
    7306           0 :             TempInterpRatio = 0.0;
    7307             :         } else { // out of range
    7308           0 :             ++CurTempRangeErrCount;
    7309           0 :             ++ErrCount;
    7310             :             // FindArrayIndex will return upper or lower bound so TempIndex gives upper/lower limit
    7311           0 :             HiTempIndex = TempIndex;
    7312           0 :             TempInterpRatio = 0.0;
    7313             :         }
    7314             : 
    7315             :         // check pressure data range and attempt to cap if necessary
    7316    95073908 :         LoPressIndex = FindArrayIndex(Pressure, refrig.SHPress, 1, refrig.NumSuperPressPts);
    7317    95073908 :         if ((LoPressIndex > 0) && (LoPressIndex < refrig.NumSuperPressPts)) { // in range
    7318    95073908 :             HiPressIndex = LoPressIndex + 1;
    7319    95073908 :             Real64 const SHPress_Lo(refrig.SHPress(LoPressIndex));
    7320    95073908 :             PressInterpRatio = (Pressure - SHPress_Lo) / (refrig.SHPress(HiPressIndex) - SHPress_Lo);
    7321           0 :         } else if (LoPressIndex < 1) {
    7322           0 :             ++CurPresRangeErrCount;
    7323           0 :             ++ErrCount;
    7324           0 :             LoPressIndex = 1;
    7325           0 :             HiPressIndex = LoPressIndex;
    7326           0 :             PressInterpRatio = 0.0;
    7327             :         } else { // out of range
    7328           0 :             ++CurPresRangeErrCount;
    7329           0 :             ++ErrCount;
    7330             :             // FindArrayIndex will return upper or lower bound so LoPressIndex gives upper/lower limit
    7331           0 :             HiPressIndex = LoPressIndex;
    7332           0 :             PressInterpRatio = 0.0;
    7333             :         }
    7334             : 
    7335             :         // get interpolation point values
    7336    95073908 :         auto const &Rhosh(refrig.RhoshValues);
    7337    95073908 :         LoTempLoDensity = Rhosh(LoPressIndex, TempIndex);
    7338    95073908 :         LoTempHiDensity = Rhosh(HiPressIndex, TempIndex);
    7339    95073908 :         HiTempLoDensity = Rhosh(LoPressIndex, HiTempIndex);
    7340    95073908 :         HiTempHiDensity = Rhosh(HiPressIndex, HiTempIndex);
    7341             : 
    7342             :         // to give reasonable interpolation near saturation reset any point with zero value
    7343             :         // in table to saturation value
    7344    95073908 :         int n_zero(0);
    7345    95073908 :         Real64 saturated_density(0.0);
    7346    95073908 :         if (min(LoTempLoDensity, LoTempHiDensity, HiTempLoDensity, HiTempHiDensity) <= 0.0) {
    7347     2268956 :             saturated_density = GetSatDensityRefrig(state, Refrigerant, Temperature, 1.0, RefrigNum, RoutineName);
    7348     2268956 :             if (LoTempLoDensity <= 0.0) {
    7349           0 :                 LoTempLoDensity = saturated_density;
    7350           0 :                 ++n_zero;
    7351             :             }
    7352     2268956 :             if (LoTempHiDensity <= 0.0) {
    7353     2268956 :                 LoTempHiDensity = saturated_density;
    7354     2268956 :                 ++n_zero;
    7355             :             }
    7356     2268956 :             if (HiTempLoDensity <= 0.0) {
    7357           0 :                 HiTempLoDensity = saturated_density;
    7358           0 :                 ++n_zero;
    7359             :             }
    7360     2268956 :             if (HiTempHiDensity <= 0.0) {
    7361           0 :                 HiTempHiDensity = saturated_density;
    7362           0 :                 ++n_zero;
    7363             :             }
    7364             :         }
    7365             : 
    7366    95073908 :         if (n_zero < 4) {
    7367             :             // interpolate w.r.t. pressure
    7368    95073908 :             DensityLow = PressInterpRatio * LoTempHiDensity + (1.0 - PressInterpRatio) * LoTempLoDensity;
    7369    95073908 :             DensityHigh = PressInterpRatio * HiTempHiDensity + (1.0 - PressInterpRatio) * HiTempLoDensity;
    7370             : 
    7371             :             // interpolate w.r.t. temperature
    7372    95073908 :             ReturnValue = TempInterpRatio * DensityHigh + (1.0 - TempInterpRatio) * DensityLow;
    7373             :         } else { // All data is at zero: we are completely inside the saturation dome. Best thing we can do is return saturation value
    7374           0 :             ++state.dataFluidProps->SatErrCountGetSupHeatDensityRefrig;
    7375             :             // send warning
    7376           0 :             state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupDensityErrCount += state.dataFluidProps->SatErrCountGetSupHeatDensityRefrig;
    7377             :             // send warning
    7378           0 :             if (state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupDensityErrCount <= state.dataFluidProps->RefrigerantErrorLimitTest) {
    7379           0 :                 ShowWarningMessage(state,
    7380           0 :                                    std::string{RoutineName} + ": Refrigerant [" + state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7381             :                                        "] is saturated at the given conditions, saturated density at given temperature returned. **");
    7382           0 :                 ShowContinueError(state, fmt::format("...Called From:{}", CalledFrom));
    7383           0 :                 ShowContinueError(state, format("Refrigerant temperature = {:.2R}", Temperature));
    7384           0 :                 ShowContinueError(state, format("Refrigerant pressure = {:.0R}", Pressure));
    7385           0 :                 ShowContinueError(state, format("Returned Density value = {:.3R}", saturated_density));
    7386           0 :                 ShowContinueErrorTimeStamp(state, "");
    7387             :             }
    7388           0 :             if (state.dataFluidProps->SatErrCountGetSupHeatDensityRefrig > 0) {
    7389           0 :                 ShowRecurringWarningErrorAtEnd(state,
    7390           0 :                                                std::string{RoutineName} + ": Refrigerant [" +
    7391           0 :                                                    state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7392             :                                                    "] saturated at the given conditions **",
    7393           0 :                                                state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupEnthalpyErrIndex,
    7394             :                                                Temperature,
    7395             :                                                Temperature,
    7396             :                                                _,
    7397             :                                                "{C}",
    7398             :                                                "{C}");
    7399             :             }
    7400           0 :             return saturated_density;
    7401             :         }
    7402             : 
    7403    95073908 :         if (!state.dataGlobal->WarmupFlag) {
    7404             :             // some checks...
    7405     5442971 :             if (ErrCount > 0) {
    7406             :                 // send temp range error if flagged
    7407           0 :                 state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupDensityTempErrCount += CurTempRangeErrCount;
    7408           0 :                 if (CurTempRangeErrCount > 0 && state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupDensityTempErrCount <=
    7409           0 :                                                     state.dataFluidProps->RefrigerantErrorLimitTest) {
    7410           0 :                     ShowWarningMessage(state,
    7411           0 :                                        std::string{RoutineName} + ": Refrigerant [" + state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7412             :                                            "] Temperature is out of range for superheated refrigerant density: values capped **");
    7413           0 :                     ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
    7414           0 :                     ShowContinueErrorTimeStamp(state, "");
    7415             :                 }
    7416           0 :                 if (CurTempRangeErrCount > 0) {
    7417           0 :                     ShowRecurringWarningErrorAtEnd(state,
    7418           0 :                                                    std::string{RoutineName} + ": Refrigerant [" +
    7419           0 :                                                        state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7420             :                                                        "] Temperature is out of range for superheated refrigerant density: values capped **",
    7421           0 :                                                    state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupDensityTempErrIndex,
    7422             :                                                    Temperature,
    7423             :                                                    Temperature,
    7424             :                                                    _,
    7425             :                                                    "{C}",
    7426             :                                                    "{C}");
    7427             :                 }
    7428             : 
    7429             :                 // send pressure range error if flagged
    7430           0 :                 state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupDensityPresErrCount += CurPresRangeErrCount;
    7431           0 :                 if (CurPresRangeErrCount > 0 && state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupDensityPresErrCount <=
    7432           0 :                                                     state.dataFluidProps->RefrigerantErrorLimitTest) {
    7433           0 :                     ShowWarningMessage(state,
    7434           0 :                                        std::string{RoutineName} + ": Refrigerant [" + state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7435             :                                            "] Pressure is out of range for superheated refrigerant density: values capped **");
    7436           0 :                     ShowContinueError(state, fmt::format(" Called From:{}", CalledFrom));
    7437           0 :                     ShowContinueErrorTimeStamp(state, "");
    7438             :                 }
    7439           0 :                 if (CurPresRangeErrCount > 0) {
    7440           0 :                     ShowRecurringWarningErrorAtEnd(state,
    7441           0 :                                                    std::string{RoutineName} + ": Refrigerant [" +
    7442           0 :                                                        state.dataFluidProps->RefrigErrorTracking(RefrigNum).Name +
    7443             :                                                        "] Pressure is out of range for superheated refrigerant density: values capped **",
    7444           0 :                                                    state.dataFluidProps->RefrigErrorTracking(RefrigNum).SatSupDensityPresErrIndex,
    7445             :                                                    Pressure,
    7446             :                                                    Pressure,
    7447             :                                                    _,
    7448             :                                                    "{Pa}",
    7449             :                                                    "{Pa}");
    7450             :                 }
    7451             :             } // end error checking
    7452             :         }
    7453             : 
    7454    95073908 :         return ReturnValue;
    7455             :     }
    7456             : 
    7457             :     //*****************************************************************************
    7458             : #ifdef EP_cache_GlycolSpecificHeat
    7459    21209813 :     Real64 GetSpecificHeatGlycol_raw(EnergyPlusData &state,
    7460             :                                      std::string_view const Glycol,    // carries in substance name
    7461             :                                      Real64 const Temperature,         // actual temperature given as input
    7462             :                                      int &GlycolIndex,                 // Index to Glycol Properties
    7463             :                                      std::string_view const CalledFrom // routine this function was called from (error messages)
    7464             :     )
    7465             : #else
    7466             :     Real64 GetSpecificHeatGlycol(EnergyPlusData &state,
    7467             :                                  std::string_view const Glycol,    // carries in substance name
    7468             :                                  Real64 const Temperature,         // actual temperature given as input
    7469             :                                  int &GlycolIndex,                 // Index to Glycol Properties
    7470             :                                  std::string_view const CalledFrom // routine this function was called from (error messages)
    7471             :     )
    7472             : #endif
    7473             :     {
    7474             : 
    7475             :         // FUNCTION INFORMATION:
    7476             :         //       AUTHOR         Rick Strand
    7477             :         //       DATE WRITTEN   June 2004
    7478             :         //       MODIFIED       N/A
    7479             :         //       RE-ENGINEERED  N/A
    7480             : 
    7481             :         // PURPOSE OF THIS FUNCTION:
    7482             :         // This subroutine finds specific heats for glycols at different
    7483             :         // temperatures.
    7484             : 
    7485             :         // METHODOLOGY EMPLOYED:
    7486             :         // Linear interpolation is used to find specific heat values for a
    7487             :         // particular glycol (water or some mixture of water and another fluid).
    7488             :         // Warnings are given if the point is not clearly in the bounds of the
    7489             :         // glycol data.  The value returned is the appropriate limit value.
    7490             : 
    7491             :         // REFERENCES:
    7492             :         // GetFluidPropertiesData: subroutine enforces that temperatures in
    7493             :         // all temperature lists are entered in ascending order.
    7494             : 
    7495             :         // USE STATEMENTS:
    7496             :         // na
    7497             : 
    7498             :         // Return value
    7499             : 
    7500             :         // Locals
    7501             :         // FUNCTION ARGUMENT DEFINITIONS:
    7502             : 
    7503             :         // FUNCTION PARAMETERS:
    7504             :         static constexpr std::string_view RoutineName("GetSpecificHeatGlycol: ");
    7505             : 
    7506             :         // Get the input if we haven't already
    7507    21209813 :         if (state.dataFluidProps->GetInput) {
    7508           0 :             GetFluidPropertiesData(state);
    7509           0 :             state.dataFluidProps->GetInput = false;
    7510             :         }
    7511             : 
    7512             :         // If no glycols, no fluid properties can be evaluated
    7513    21209813 :         int GlycolNum(0);
    7514    21209813 :         if (state.dataFluidProps->NumOfGlycols == 0)
    7515           0 :             ReportFatalGlycolErrors(
    7516           0 :                 state, state.dataFluidProps->NumOfGlycols, GlycolNum, true, Glycol, "GetSpecificHeatGlycol", "specific heat", CalledFrom);
    7517             : 
    7518             :         // If glycol index has not yet been found for this fluid, find its value now
    7519    21209813 :         if (GlycolIndex > 0) {
    7520    21209810 :             GlycolNum = GlycolIndex;
    7521             :         } else { // Find which glycol (index) is being requested
    7522           3 :             GlycolNum = FindGlycol(state, Glycol);
    7523           3 :             if (GlycolNum == 0) {
    7524           0 :                 ReportFatalGlycolErrors(
    7525           0 :                     state, state.dataFluidProps->NumOfGlycols, GlycolNum, true, Glycol, "GetSpecificHeatGlycol", "specific heat", CalledFrom);
    7526             :             }
    7527           3 :             GlycolIndex = GlycolNum;
    7528             :         }
    7529    21209813 :         auto const &glycol_data(state.dataFluidProps->GlycolData(GlycolIndex));
    7530             : 
    7531             :         // If user didn't input data (shouldn't get this far, but just in case...), we can't find a value
    7532    21209813 :         if (!glycol_data.CpDataPresent) {
    7533           0 :             ReportFatalGlycolErrors(state,
    7534           0 :                                     state.dataFluidProps->NumOfGlycols,
    7535             :                                     GlycolNum,
    7536           0 :                                     glycol_data.CpDataPresent,
    7537             :                                     Glycol,
    7538             :                                     "GetSpecificHeatGlycol",
    7539             :                                     "specific heat",
    7540           0 :                                     CalledFrom);
    7541             :         }
    7542             : 
    7543             :         // Now determine the value of specific heat using interpolation
    7544    21209813 :         if (Temperature < glycol_data.CpLowTempValue) { // Temperature too low
    7545          42 :             if (!state.dataGlobal->WarmupFlag) {
    7546          44 :                 state.dataFluidProps->LowTempLimitErrGetSpecificHeatGlycol_raw =
    7547          44 :                     ++state.dataFluidProps->GlycolErrorTracking(GlycolIndex).SpecHeatLowErrCount;
    7548          22 :                 if (state.dataFluidProps->LowTempLimitErrGetSpecificHeatGlycol_raw <= state.dataFluidProps->GlycolErrorLimitTest) {
    7549          12 :                     ShowWarningMessage(state,
    7550           8 :                                        std::string{RoutineName} + "Temperature is out of range (too low) for fluid [" + glycol_data.Name +
    7551             :                                            "] specific heat supplied values **");
    7552          12 :                     ShowContinueError(state,
    7553          12 :                                       format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
    7554             :                                              CalledFrom,
    7555             :                                              Temperature,
    7556             :                                              glycol_data.CpLowTempValue,
    7557           4 :                                              glycol_data.CpHighTempValue));
    7558           4 :                     ShowContinueErrorTimeStamp(state, "");
    7559             :                 }
    7560          88 :                 ShowRecurringWarningErrorAtEnd(state,
    7561          44 :                                                std::string{RoutineName} + "Temperature out of range (too low) for fluid [" + glycol_data.Name +
    7562             :                                                    "] specific heat **",
    7563          22 :                                                state.dataFluidProps->GlycolErrorTracking(GlycolIndex).SpecHeatLowErrIndex,
    7564             :                                                Temperature,
    7565             :                                                Temperature,
    7566             :                                                _,
    7567             :                                                "{C}",
    7568             :                                                "{C}");
    7569             :             }
    7570          42 :             return glycol_data.CpValues(glycol_data.CpLowTempIndex);
    7571    21209771 :         } else if (Temperature > glycol_data.CpHighTempValue) { // Temperature too high
    7572          69 :             if (!state.dataGlobal->WarmupFlag) {
    7573           4 :                 state.dataFluidProps->HighTempLimitErrGetSpecificHeatGlycol_raw =
    7574           4 :                     ++state.dataFluidProps->GlycolErrorTracking(GlycolIndex).SpecHeatHighErrCount;
    7575           2 :                 if (state.dataFluidProps->HighTempLimitErrGetSpecificHeatGlycol_raw <= state.dataFluidProps->GlycolErrorLimitTest) {
    7576           3 :                     ShowWarningMessage(state,
    7577           2 :                                        std::string{RoutineName} + "Temperature is out of range (too high) for fluid [" + glycol_data.Name +
    7578             :                                            "] specific heat **");
    7579           3 :                     ShowContinueError(state,
    7580           3 :                                       format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
    7581             :                                              CalledFrom,
    7582             :                                              Temperature,
    7583             :                                              glycol_data.CpLowTempValue,
    7584           1 :                                              glycol_data.CpHighTempValue));
    7585           1 :                     ShowContinueErrorTimeStamp(state, "");
    7586             :                 }
    7587           8 :                 ShowRecurringWarningErrorAtEnd(state,
    7588           4 :                                                std::string{RoutineName} + "Temperature out of range (too high) for fluid [" + glycol_data.Name +
    7589             :                                                    "] specific heat **",
    7590           2 :                                                state.dataFluidProps->GlycolErrorTracking(GlycolIndex).SpecHeatHighErrIndex,
    7591             :                                                Temperature,
    7592             :                                                Temperature,
    7593             :                                                _,
    7594             :                                                "{C}",
    7595             :                                                "{C}");
    7596             :             }
    7597          69 :             return glycol_data.CpValues(glycol_data.CpHighTempIndex);
    7598             :         } else { // Temperature somewhere between the lowest and highest value
    7599    21209702 :             auto const &glycol_CpTemps(glycol_data.CpTemps);
    7600    21209702 :             auto const &glycol_CpValues(glycol_data.CpValues);
    7601             :             // bracket is temp > low, <= high (for interpolation
    7602             :             // for ( int Loop = glycol_data.CpLowTempIndex + 1; Loop <= glycol_data.CpHighTempIndex; ++Loop ) { //Tuned Replaced by binary search
    7603             :             // below     if ( Temperature > glycol_data.CpTemps( Loop ) ) continue;     return GetInterpValue( Temperature, glycol_CpTemps( Loop - 1
    7604             :             //), glycol_CpTemps( Loop ), glycol_CpValues( Loop - 1 ), glycol_CpValues( Loop ) );     break; // DO loop
    7605             :             //}
    7606             :             // assert( std::is_sorted( glycol_CpTemps.begin(), glycol_CpTemps.end() ) ); // Sorted temperature array is assumed: Enable if/when arrays
    7607             :             // have begin()/end()
    7608    21209702 :             assert(glycol_CpTemps.size() <=
    7609             :                    static_cast<std::size_t>(std::numeric_limits<int>::max())); // Array indexes are int now so this is future protection
    7610    21209702 :             int beg(1), mid, end(glycol_CpTemps.isize());                      // 1-based indexing
    7611    21209702 :             assert(end > 0);
    7612   233064250 :             while (beg + 1 < end) {
    7613   105927274 :                 mid = ((beg + end) >> 1); // bit shifting is faster than /2
    7614   105927274 :                 (Temperature > glycol_CpTemps(mid) ? beg : end) = mid;
    7615             :             } // Invariant: glycol_CpTemps[beg] <= Temperature <= glycol_CpTemps[end]
    7616    21209702 :             return GetInterpValue_fast(Temperature, glycol_CpTemps(beg), glycol_CpTemps(end), glycol_CpValues(beg), glycol_CpValues(end));
    7617             :         }
    7618             :     }
    7619             : 
    7620             :     //*****************************************************************************
    7621             : 
    7622    90160649 :     Real64 GetDensityGlycol(EnergyPlusData &state,
    7623             :                             std::string_view const Glycol,    // carries in substance name
    7624             :                             Real64 const Temperature,         // actual temperature given as input
    7625             :                             int &GlycolIndex,                 // Index to Glycol Properties
    7626             :                             std::string_view const CalledFrom // routine this function was called from (error messages)
    7627             :     )
    7628             :     {
    7629             : 
    7630             :         // FUNCTION INFORMATION:
    7631             :         //       AUTHOR         Rick Strand
    7632             :         //       DATE WRITTEN   June 2004
    7633             :         //       MODIFIED       N/A
    7634             :         //       RE-ENGINEERED  N/A
    7635             : 
    7636             :         // PURPOSE OF THIS FUNCTION:
    7637             :         // This subroutine finds the density for glycols at different
    7638             :         // temperatures.
    7639             : 
    7640             :         // METHODOLOGY EMPLOYED:
    7641             :         // Linear interpolation is used to find density values for a
    7642             :         // particular glycol (water or some mixture of water and another fluid).
    7643             :         // Warnings are given if the point is not clearly in the bounds of the
    7644             :         // glycol data.  The value returned is the appropriate limit value.
    7645             : 
    7646             :         // REFERENCES:
    7647             :         // GetFluidPropertiesData: subroutine enforces that temperatures in
    7648             :         // all temperature lists are entered in ascending order.
    7649             : 
    7650             :         // USE STATEMENTS:
    7651             :         // na
    7652             : 
    7653             :         // Return value
    7654             :         Real64 ReturnValue;
    7655             : 
    7656             :         // Locals
    7657             :         // FUNCTION ARGUMENT DEFINITIONS:
    7658             : 
    7659             :         // FUNCTION PARAMETERS:
    7660             :         static constexpr std::string_view RoutineName("GetDensityGlycol: ");
    7661             : 
    7662             :         // INTERFACE BLOCK SPECIFICATIONS:
    7663             :         // na
    7664             : 
    7665             :         // DERIVED TYPE DEFINITIONS:
    7666             :         // na
    7667             : 
    7668             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    7669             :         int Loop; // DO loop counter
    7670             :         int GlycolNum;
    7671             :         bool LowErrorThisTime;
    7672             :         bool HighErrorThisTime;
    7673             : 
    7674    90160649 :         LowErrorThisTime = false;
    7675    90160649 :         HighErrorThisTime = false;
    7676             : 
    7677             :         // Get the input if we haven't already
    7678    90160649 :         if (state.dataFluidProps->GetInput) {
    7679         115 :             GetFluidPropertiesData(state);
    7680         115 :             state.dataFluidProps->GetInput = false;
    7681             :         }
    7682             : 
    7683             :         // If no glycols, no fluid properties can be evaluated
    7684    90160649 :         GlycolNum = 0;
    7685    90160649 :         if (state.dataFluidProps->NumOfGlycols == 0)
    7686           0 :             ReportFatalGlycolErrors(state, state.dataFluidProps->NumOfGlycols, GlycolNum, true, Glycol, "GetDensityGlycol", "density", CalledFrom);
    7687             : 
    7688             :         // If glycol index has not yet been found for this fluid, find its value now
    7689    90160649 :         if (GlycolIndex > 0) {
    7690    90160648 :             GlycolNum = GlycolIndex;
    7691             :         } else { // Find which refrigerant (index) is being requested
    7692           1 :             GlycolNum = FindGlycol(state, Glycol);
    7693           1 :             if (GlycolNum == 0) {
    7694           0 :                 ReportFatalGlycolErrors(
    7695           0 :                     state, state.dataFluidProps->NumOfGlycols, GlycolNum, true, Glycol, "GetDensityGlycol", "density", CalledFrom);
    7696             :             }
    7697           1 :             GlycolIndex = GlycolNum;
    7698             :         }
    7699             : 
    7700             :         // If user didn't input data (shouldn't get this far, but just in case...), we can't find a value
    7701    90160649 :         if (!state.dataFluidProps->GlycolData(GlycolIndex).RhoDataPresent) {
    7702           0 :             ReportFatalGlycolErrors(state,
    7703           0 :                                     state.dataFluidProps->NumOfGlycols,
    7704             :                                     GlycolNum,
    7705           0 :                                     state.dataFluidProps->GlycolData(GlycolIndex).RhoDataPresent,
    7706             :                                     Glycol,
    7707             :                                     "GetDensityGlycol",
    7708             :                                     "density",
    7709           0 :                                     CalledFrom);
    7710             :         }
    7711             : 
    7712             :         // Now determine the value of specific heat using interpolation
    7713    90160649 :         if (Temperature < state.dataFluidProps->GlycolData(GlycolIndex).RhoLowTempValue) { // Temperature too low
    7714         775 :             LowErrorThisTime = true;
    7715         775 :             ReturnValue = state.dataFluidProps->GlycolData(GlycolIndex).RhoValues(state.dataFluidProps->GlycolData(GlycolIndex).RhoLowTempIndex);
    7716    90159874 :         } else if (Temperature > state.dataFluidProps->GlycolData(GlycolIndex).RhoHighTempValue) { // Temperature too high
    7717       16272 :             HighErrorThisTime = true;
    7718       16272 :             ReturnValue = state.dataFluidProps->GlycolData(GlycolIndex).RhoValues(state.dataFluidProps->GlycolData(GlycolIndex).RhoHighTempIndex);
    7719             :         } else { // Temperature somewhere between the lowest and highest value
    7720    90143602 :             ReturnValue = state.dataFluidProps->GlycolData(GlycolIndex).RhoValues(state.dataFluidProps->GlycolData(GlycolIndex).RhoLowTempIndex);
    7721             :             // bracket is temp > low, <= high (for interpolation
    7722   538138906 :             for (Loop = state.dataFluidProps->GlycolData(GlycolIndex).RhoLowTempIndex + 1;
    7723   538138906 :                  Loop <= state.dataFluidProps->GlycolData(GlycolIndex).RhoHighTempIndex;
    7724             :                  ++Loop) {
    7725   538138906 :                 if (Temperature > state.dataFluidProps->GlycolData(GlycolIndex).RhoTemps(Loop)) continue;
    7726   360574408 :                 ReturnValue = GetInterpValue(state,
    7727             :                                              Temperature,
    7728    90143602 :                                              state.dataFluidProps->GlycolData(GlycolIndex).RhoTemps(Loop - 1),
    7729    90143602 :                                              state.dataFluidProps->GlycolData(GlycolIndex).RhoTemps(Loop),
    7730    90143602 :                                              state.dataFluidProps->GlycolData(GlycolIndex).RhoValues(Loop - 1),
    7731    90143602 :                                              state.dataFluidProps->GlycolData(GlycolIndex).RhoValues(Loop));
    7732    90143602 :                 break; // DO loop
    7733             :             }
    7734             :         }
    7735             : 
    7736             :         // Error handling
    7737    90160649 :         if (!state.dataGlobal->WarmupFlag) {
    7738             : 
    7739    57449491 :             if (LowErrorThisTime) {
    7740         774 :                 ++state.dataFluidProps->GlycolErrorTracking(GlycolIndex).DensityLowErrCount;
    7741         774 :                 state.dataFluidProps->LowTempLimitErrGetDensityGlycol = state.dataFluidProps->GlycolErrorTracking(GlycolIndex).DensityLowErrCount;
    7742             :             }
    7743    57449491 :             if (HighErrorThisTime) {
    7744        9812 :                 ++state.dataFluidProps->GlycolErrorTracking(GlycolIndex).DensityHighErrCount;
    7745        9812 :                 state.dataFluidProps->HighTempLimitErrGetDensityGlycol = state.dataFluidProps->GlycolErrorTracking(GlycolIndex).DensityHighErrCount;
    7746             :             }
    7747             : 
    7748    57449491 :             if ((LowErrorThisTime) && (state.dataFluidProps->LowTempLimitErrGetDensityGlycol <= state.dataFluidProps->GlycolErrorLimitTest)) {
    7749          12 :                 ShowWarningMessage(state,
    7750           8 :                                    std::string{RoutineName} + "Temperature is out of range (too low) for fluid [" +
    7751          12 :                                        state.dataFluidProps->GlycolData(GlycolIndex).Name + "] density **");
    7752          12 :                 ShowContinueError(state,
    7753          16 :                                   format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
    7754             :                                          CalledFrom,
    7755             :                                          Temperature,
    7756           4 :                                          state.dataFluidProps->GlycolData(GlycolIndex).RhoLowTempValue,
    7757           8 :                                          state.dataFluidProps->GlycolData(GlycolIndex).RhoHighTempValue));
    7758           4 :                 ShowContinueErrorTimeStamp(state, "");
    7759             :             }
    7760    57449491 :             if (LowErrorThisTime) {
    7761        3096 :                 ShowRecurringWarningErrorAtEnd(state,
    7762        1548 :                                                std::string{RoutineName} + "Temperature out of range (too low) for fluid [" +
    7763        2322 :                                                    state.dataFluidProps->GlycolData(GlycolIndex).Name + "] density **",
    7764         774 :                                                state.dataFluidProps->GlycolErrorTracking(GlycolIndex).DensityLowErrIndex,
    7765             :                                                Temperature,
    7766             :                                                Temperature,
    7767             :                                                _,
    7768             :                                                "{C}",
    7769             :                                                "{C}");
    7770             :             }
    7771             : 
    7772    57449491 :             if ((HighErrorThisTime) && (state.dataFluidProps->HighTempLimitErrGetDensityGlycol <= state.dataFluidProps->GlycolErrorLimitTest)) {
    7773          12 :                 ShowWarningMessage(state,
    7774           8 :                                    std::string{RoutineName} + "Temperature is out of range (too high) for fluid [" +
    7775          12 :                                        state.dataFluidProps->GlycolData(GlycolIndex).Name + "] density **");
    7776          12 :                 ShowContinueError(state,
    7777          16 :                                   format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
    7778             :                                          CalledFrom,
    7779             :                                          Temperature,
    7780           4 :                                          state.dataFluidProps->GlycolData(GlycolIndex).RhoLowTempValue,
    7781           8 :                                          state.dataFluidProps->GlycolData(GlycolIndex).RhoHighTempValue));
    7782           4 :                 ShowContinueErrorTimeStamp(state, "");
    7783             :             }
    7784    57449491 :             if (HighErrorThisTime) {
    7785       39248 :                 ShowRecurringWarningErrorAtEnd(state,
    7786       19624 :                                                std::string{RoutineName} + "Temperature out of range (too high) for fluid [" +
    7787       29436 :                                                    state.dataFluidProps->GlycolData(GlycolIndex).Name + "] density **",
    7788        9812 :                                                state.dataFluidProps->GlycolErrorTracking(GlycolIndex).DensityHighErrIndex,
    7789             :                                                Temperature,
    7790             :                                                Temperature,
    7791             :                                                _,
    7792             :                                                "{C}",
    7793             :                                                "{C}");
    7794             :             }
    7795             :         }
    7796             : 
    7797    90160649 :         return ReturnValue;
    7798             :     }
    7799             : 
    7800             :     //*****************************************************************************
    7801             : 
    7802     7103101 :     Real64 GetConductivityGlycol(EnergyPlusData &state,
    7803             :                                  std::string_view const Glycol,    // carries in substance name
    7804             :                                  Real64 const Temperature,         // actual temperature given as input
    7805             :                                  int &GlycolIndex,                 // Index to Glycol Properties
    7806             :                                  std::string_view const CalledFrom // routine this function was called from (error messages)
    7807             :     )
    7808             :     {
    7809             : 
    7810             :         // FUNCTION INFORMATION:
    7811             :         //       AUTHOR         Rick Strand
    7812             :         //       DATE WRITTEN   June 2004
    7813             :         //       MODIFIED       N/A
    7814             :         //       RE-ENGINEERED  N/A
    7815             : 
    7816             :         // PURPOSE OF THIS FUNCTION:
    7817             :         // This subroutine finds the conductivity for glycols at different
    7818             :         // temperatures.
    7819             : 
    7820             :         // METHODOLOGY EMPLOYED:
    7821             :         // Linear interpolation is used to find conductivity values for a
    7822             :         // particular glycol (water or some mixture of water and another fluid).
    7823             :         // Warnings are given if the point is not clearly in the bounds of the
    7824             :         // glycol data.  The value returned is the appropriate limit value.
    7825             : 
    7826             :         // REFERENCES:
    7827             :         // GetFluidPropertiesData: subroutine enforces that temperatures in
    7828             :         // all temperature lists are entered in ascending order.
    7829             : 
    7830             :         // USE STATEMENTS:
    7831             :         // na
    7832             : 
    7833             :         // Return value
    7834             :         Real64 ReturnValue;
    7835             : 
    7836             :         // Locals
    7837             :         // FUNCTION ARGUMENT DEFINITIONS:
    7838             : 
    7839             :         // FUNCTION PARAMETERS:
    7840             :         static constexpr std::string_view RoutineName("GetConductivityGlycol: ");
    7841             : 
    7842             :         // INTERFACE BLOCK SPECIFICATIONS:
    7843             :         // na
    7844             : 
    7845             :         // DERIVED TYPE DEFINITIONS:
    7846             :         // na
    7847             : 
    7848             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    7849             :         int Loop; // DO loop counter
    7850             :         int GlycolNum;
    7851             :         bool LowErrorThisTime;
    7852             :         bool HighErrorThisTime;
    7853             : 
    7854     7103101 :         LowErrorThisTime = false;
    7855     7103101 :         HighErrorThisTime = false;
    7856             : 
    7857             :         // Get the input if we haven't already
    7858     7103101 :         if (state.dataFluidProps->GetInput) {
    7859           0 :             GetFluidPropertiesData(state);
    7860           0 :             state.dataFluidProps->GetInput = false;
    7861             :         }
    7862             : 
    7863             :         // If no glycols, no fluid properties can be evaluated
    7864     7103101 :         GlycolNum = 0;
    7865     7103101 :         if (state.dataFluidProps->NumOfGlycols == 0)
    7866           0 :             ReportFatalGlycolErrors(
    7867           0 :                 state, state.dataFluidProps->NumOfGlycols, GlycolNum, true, Glycol, "GetConductivityGlycol", "conductivity", CalledFrom);
    7868             : 
    7869             :         // If glycol index has not yet been found for this fluid, find its value now
    7870     7103101 :         if (GlycolIndex > 0) {
    7871     7103101 :             GlycolNum = GlycolIndex;
    7872             :         } else { // Find which refrigerant (index) is being requested
    7873           0 :             GlycolNum = FindGlycol(state, Glycol);
    7874           0 :             if (GlycolNum == 0) {
    7875           0 :                 ReportFatalGlycolErrors(
    7876           0 :                     state, state.dataFluidProps->NumOfGlycols, GlycolNum, true, Glycol, "GetConductivityGlycol", "conductivity", CalledFrom);
    7877             :             }
    7878           0 :             GlycolIndex = GlycolNum;
    7879             :         }
    7880             : 
    7881             :         // If user didn't input data (shouldn't get this far, but just in case...), we can't find a value
    7882     7103101 :         if (!state.dataFluidProps->GlycolData(GlycolIndex).CondDataPresent) {
    7883           0 :             ReportFatalGlycolErrors(state,
    7884           0 :                                     state.dataFluidProps->NumOfGlycols,
    7885             :                                     GlycolNum,
    7886           0 :                                     state.dataFluidProps->GlycolData(GlycolIndex).CondDataPresent,
    7887             :                                     Glycol,
    7888             :                                     "GetConductivityGlycol",
    7889             :                                     "conductivity",
    7890           0 :                                     CalledFrom);
    7891             :         }
    7892             : 
    7893             :         // Now determine the value of specific heat using interpolation
    7894     7103101 :         if (Temperature < state.dataFluidProps->GlycolData(GlycolIndex).CondLowTempValue) { // Temperature too low
    7895           0 :             LowErrorThisTime = true;
    7896           0 :             ReturnValue = state.dataFluidProps->GlycolData(GlycolIndex).CondValues(state.dataFluidProps->GlycolData(GlycolIndex).CondLowTempIndex);
    7897     7103101 :         } else if (Temperature > state.dataFluidProps->GlycolData(GlycolIndex).CondHighTempValue) { // Temperature too high
    7898           0 :             HighErrorThisTime = true;
    7899           0 :             ReturnValue = state.dataFluidProps->GlycolData(GlycolIndex).CondValues(state.dataFluidProps->GlycolData(GlycolIndex).CondHighTempIndex);
    7900             :         } else { // Temperature somewhere between the lowest and highest value
    7901     7103101 :             ReturnValue = state.dataFluidProps->GlycolData(GlycolIndex).CondValues(state.dataFluidProps->GlycolData(GlycolIndex).CondLowTempIndex);
    7902             :             // bracket is temp > low, <= high (for interpolation
    7903    26359242 :             for (Loop = state.dataFluidProps->GlycolData(GlycolIndex).CondLowTempIndex + 1;
    7904    26359242 :                  Loop <= state.dataFluidProps->GlycolData(GlycolIndex).CondHighTempIndex;
    7905             :                  ++Loop) {
    7906    26359242 :                 if (Temperature > state.dataFluidProps->GlycolData(GlycolIndex).CondTemps(Loop)) continue;
    7907    28412404 :                 ReturnValue = GetInterpValue(state,
    7908             :                                              Temperature,
    7909     7103101 :                                              state.dataFluidProps->GlycolData(GlycolIndex).CondTemps(Loop - 1),
    7910     7103101 :                                              state.dataFluidProps->GlycolData(GlycolIndex).CondTemps(Loop),
    7911     7103101 :                                              state.dataFluidProps->GlycolData(GlycolIndex).CondValues(Loop - 1),
    7912     7103101 :                                              state.dataFluidProps->GlycolData(GlycolIndex).CondValues(Loop));
    7913     7103101 :                 break; // DO loop
    7914             :             }
    7915             :         }
    7916             : 
    7917             :         // Error handling
    7918     7103101 :         if (!state.dataGlobal->WarmupFlag) {
    7919             : 
    7920      997998 :             if (LowErrorThisTime) {
    7921           0 :                 ++state.dataFluidProps->GlycolErrorTracking(GlycolIndex).ConductivityLowErrCount;
    7922           0 :                 state.dataFluidProps->LowTempLimitErrGetConductivityGlycol =
    7923           0 :                     state.dataFluidProps->GlycolErrorTracking(GlycolIndex).ConductivityLowErrCount;
    7924             :             }
    7925      997998 :             if (HighErrorThisTime) {
    7926           0 :                 ++state.dataFluidProps->GlycolErrorTracking(GlycolIndex).ConductivityHighErrCount;
    7927           0 :                 state.dataFluidProps->HighTempLimitErrGetConductivityGlycol =
    7928           0 :                     state.dataFluidProps->GlycolErrorTracking(GlycolIndex).ConductivityHighErrCount;
    7929             :             }
    7930             : 
    7931      997998 :             if ((LowErrorThisTime) && (state.dataFluidProps->LowTempLimitErrGetConductivityGlycol <= state.dataFluidProps->GlycolErrorLimitTest)) {
    7932           0 :                 ShowWarningMessage(state,
    7933           0 :                                    std::string{RoutineName} + "Temperature is out of range (too low) for fluid [" +
    7934           0 :                                        state.dataFluidProps->GlycolData(GlycolIndex).Name + "] conductivity **");
    7935           0 :                 ShowContinueError(state,
    7936           0 :                                   format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
    7937             :                                          CalledFrom,
    7938             :                                          Temperature,
    7939           0 :                                          state.dataFluidProps->GlycolData(GlycolIndex).CondLowTempValue,
    7940           0 :                                          state.dataFluidProps->GlycolData(GlycolIndex).CondHighTempValue));
    7941           0 :                 ShowContinueErrorTimeStamp(state, "");
    7942             :             }
    7943      997998 :             if (LowErrorThisTime) {
    7944           0 :                 ShowRecurringWarningErrorAtEnd(state,
    7945           0 :                                                std::string{RoutineName} + "Temperature out of range (too low) for fluid [" +
    7946           0 :                                                    state.dataFluidProps->GlycolData(GlycolIndex).Name + "] conductivity **",
    7947           0 :                                                state.dataFluidProps->GlycolErrorTracking(GlycolIndex).ConductivityLowErrIndex,
    7948             :                                                Temperature,
    7949             :                                                Temperature,
    7950             :                                                _,
    7951             :                                                "{C}",
    7952             :                                                "{C}");
    7953             :             }
    7954             : 
    7955      997998 :             if ((HighErrorThisTime) && (state.dataFluidProps->HighTempLimitErrGetConductivityGlycol <= state.dataFluidProps->GlycolErrorLimitTest)) {
    7956           0 :                 ShowWarningMessage(state,
    7957           0 :                                    std::string{RoutineName} + "Temperature is out of range (too high) for fluid [" +
    7958           0 :                                        state.dataFluidProps->GlycolData(GlycolIndex).Name + "] conductivity **");
    7959           0 :                 ShowContinueError(state,
    7960           0 :                                   format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
    7961             :                                          CalledFrom,
    7962             :                                          Temperature,
    7963           0 :                                          state.dataFluidProps->GlycolData(GlycolIndex).CondLowTempValue,
    7964           0 :                                          state.dataFluidProps->GlycolData(GlycolIndex).CondHighTempValue));
    7965           0 :                 ShowContinueErrorTimeStamp(state, "");
    7966             :             }
    7967      997998 :             if (HighErrorThisTime) {
    7968           0 :                 ShowRecurringWarningErrorAtEnd(state,
    7969           0 :                                                std::string{RoutineName} + "Temperature out of range (too high) for fluid [" +
    7970           0 :                                                    state.dataFluidProps->GlycolData(GlycolIndex).Name + "] conductivity **",
    7971           0 :                                                state.dataFluidProps->GlycolErrorTracking(GlycolIndex).ConductivityHighErrIndex,
    7972             :                                                Temperature,
    7973             :                                                Temperature,
    7974             :                                                _,
    7975             :                                                "{C}",
    7976             :                                                "{C}");
    7977             :             }
    7978             :         }
    7979             : 
    7980     7103101 :         return ReturnValue;
    7981             :     }
    7982             : 
    7983             :     //*****************************************************************************
    7984             : 
    7985     7118311 :     Real64 GetViscosityGlycol(EnergyPlusData &state,
    7986             :                               std::string_view const Glycol,    // carries in substance name
    7987             :                               Real64 const Temperature,         // actual temperature given as input
    7988             :                               int &GlycolIndex,                 // Index to Glycol Properties
    7989             :                               std::string_view const CalledFrom // routine this function was called from (error messages)
    7990             :     )
    7991             :     {
    7992             : 
    7993             :         // FUNCTION INFORMATION:
    7994             :         //       AUTHOR         Rick Strand
    7995             :         //       DATE WRITTEN   June 2004
    7996             :         //       MODIFIED       N/A
    7997             :         //       RE-ENGINEERED  N/A
    7998             : 
    7999             :         // PURPOSE OF THIS FUNCTION:
    8000             :         // This subroutine finds the viscosity for glycols at different
    8001             :         // temperatures.
    8002             : 
    8003             :         // METHODOLOGY EMPLOYED:
    8004             :         // Linear interpolation is used to find viscosity values for a
    8005             :         // particular glycol (water or some mixture of water and another fluid).
    8006             :         // Warnings are given if the point is not clearly in the bounds of the
    8007             :         // glycol data.  The value returned is the appropriate limit value.
    8008             : 
    8009             :         // REFERENCES:
    8010             :         // GetFluidPropertiesData: subroutine enforces that temperatures in
    8011             :         // all temperature lists are entered in ascending order.
    8012             : 
    8013             :         // USE STATEMENTS:
    8014             :         // na
    8015             : 
    8016             :         // Return value
    8017             :         Real64 ReturnValue; // Value for function
    8018             : 
    8019             :         // Locals
    8020             :         // FUNCTION ARGUMENT DEFINITIONS:
    8021             : 
    8022             :         // FUNCTION PARAMETERS:
    8023             :         static constexpr std::string_view RoutineName("GetViscosityGlycol: ");
    8024             : 
    8025             :         // INTERFACE BLOCK SPECIFICATIONS:
    8026             :         // na
    8027             : 
    8028             :         // DERIVED TYPE DEFINITIONS:
    8029             :         // na
    8030             : 
    8031             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    8032             :         int Loop; // DO loop counter
    8033             :         int GlycolNum;
    8034             :         bool LowErrorThisTime;
    8035             :         bool HighErrorThisTime;
    8036             : 
    8037     7118311 :         LowErrorThisTime = false;
    8038     7118311 :         HighErrorThisTime = false;
    8039             : 
    8040             :         // Get the input if we haven't already
    8041     7118311 :         if (state.dataFluidProps->GetInput) {
    8042           0 :             GetFluidPropertiesData(state);
    8043           0 :             state.dataFluidProps->GetInput = false;
    8044             :         }
    8045             : 
    8046             :         // If no glycols, no fluid properties can be evaluated
    8047     7118311 :         GlycolNum = 0;
    8048     7118311 :         if (state.dataFluidProps->NumOfGlycols == 0)
    8049           0 :             ReportFatalGlycolErrors(
    8050           0 :                 state, state.dataFluidProps->NumOfGlycols, GlycolNum, true, Glycol, "GetViscosityGlycol", "viscosity", CalledFrom);
    8051             : 
    8052             :         // If glycol index has not yet been found for this fluid, find its value now
    8053     7118311 :         if (GlycolIndex > 0) {
    8054     7118311 :             GlycolNum = GlycolIndex;
    8055             :         } else { // Find which refrigerant (index) is being requested
    8056           0 :             GlycolNum = FindGlycol(state, Glycol);
    8057           0 :             if (GlycolNum == 0) {
    8058           0 :                 ReportFatalGlycolErrors(
    8059           0 :                     state, state.dataFluidProps->NumOfGlycols, GlycolNum, true, Glycol, "GetViscosityGlycol", "viscosity", CalledFrom);
    8060             :             }
    8061           0 :             GlycolIndex = GlycolNum;
    8062             :         }
    8063             : 
    8064             :         // If user didn't input data (shouldn't get this far, but just in case...), we can't find a value
    8065     7118311 :         if (!state.dataFluidProps->GlycolData(GlycolIndex).ViscDataPresent) {
    8066           0 :             ReportFatalGlycolErrors(state,
    8067           0 :                                     state.dataFluidProps->NumOfGlycols,
    8068             :                                     GlycolNum,
    8069           0 :                                     state.dataFluidProps->GlycolData(GlycolIndex).ViscDataPresent,
    8070             :                                     Glycol,
    8071             :                                     "GetViscosityGlycol",
    8072             :                                     "viscosity",
    8073           0 :                                     CalledFrom);
    8074             :         }
    8075             : 
    8076             :         // Now determine the value of specific heat using interpolation
    8077     7118311 :         if (Temperature < state.dataFluidProps->GlycolData(GlycolIndex).ViscLowTempValue) { // Temperature too low
    8078           0 :             LowErrorThisTime = true;
    8079           0 :             ReturnValue = state.dataFluidProps->GlycolData(GlycolIndex).ViscValues(state.dataFluidProps->GlycolData(GlycolIndex).ViscLowTempIndex);
    8080     7118311 :         } else if (Temperature > state.dataFluidProps->GlycolData(GlycolIndex).ViscHighTempValue) { // Temperature too high
    8081           0 :             HighErrorThisTime = true;
    8082           0 :             ReturnValue = state.dataFluidProps->GlycolData(GlycolIndex).ViscValues(state.dataFluidProps->GlycolData(GlycolIndex).ViscHighTempIndex);
    8083             :         } else { // Temperature somewhere between the lowest and highest value
    8084     7118311 :             ReturnValue = state.dataFluidProps->GlycolData(GlycolIndex).ViscValues(state.dataFluidProps->GlycolData(GlycolIndex).ViscLowTempIndex);
    8085             :             // bracket is temp > low, <= high (for interpolation
    8086    26497814 :             for (Loop = state.dataFluidProps->GlycolData(GlycolIndex).ViscLowTempIndex + 1;
    8087    26497814 :                  Loop <= state.dataFluidProps->GlycolData(GlycolIndex).ViscHighTempIndex;
    8088             :                  ++Loop) {
    8089    26497814 :                 if (Temperature > state.dataFluidProps->GlycolData(GlycolIndex).ViscTemps(Loop)) continue;
    8090    28473244 :                 ReturnValue = GetInterpValue(state,
    8091             :                                              Temperature,
    8092     7118311 :                                              state.dataFluidProps->GlycolData(GlycolIndex).ViscTemps(Loop - 1),
    8093     7118311 :                                              state.dataFluidProps->GlycolData(GlycolIndex).ViscTemps(Loop),
    8094     7118311 :                                              state.dataFluidProps->GlycolData(GlycolIndex).ViscValues(Loop - 1),
    8095     7118311 :                                              state.dataFluidProps->GlycolData(GlycolIndex).ViscValues(Loop));
    8096     7118311 :                 break; // DO loop
    8097             :             }
    8098             :         }
    8099             : 
    8100             :         // Error handling
    8101     7118311 :         if (!state.dataGlobal->WarmupFlag) {
    8102             : 
    8103     1005486 :             if (LowErrorThisTime) {
    8104           0 :                 ++state.dataFluidProps->GlycolErrorTracking(GlycolIndex).ViscosityLowErrCount;
    8105           0 :                 state.dataFluidProps->LowTempLimitErrGetViscosityGlycol = state.dataFluidProps->GlycolErrorTracking(GlycolIndex).ViscosityLowErrCount;
    8106             :             }
    8107     1005486 :             if (HighErrorThisTime) {
    8108           0 :                 ++state.dataFluidProps->GlycolErrorTracking(GlycolIndex).ViscosityHighErrCount;
    8109           0 :                 state.dataFluidProps->HighTempLimitErrGetViscosityGlycol =
    8110           0 :                     state.dataFluidProps->GlycolErrorTracking(GlycolIndex).ViscosityHighErrCount;
    8111             :             }
    8112             : 
    8113     1005486 :             if ((LowErrorThisTime) && (state.dataFluidProps->LowTempLimitErrGetViscosityGlycol <= state.dataFluidProps->GlycolErrorLimitTest)) {
    8114           0 :                 ShowWarningMessage(state,
    8115           0 :                                    std::string{RoutineName} + "Temperature is out of range (too low) for fluid [" +
    8116           0 :                                        state.dataFluidProps->GlycolData(GlycolIndex).Name + "] viscosity **");
    8117           0 :                 ShowContinueError(state,
    8118           0 :                                   format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
    8119             :                                          CalledFrom,
    8120             :                                          Temperature,
    8121           0 :                                          state.dataFluidProps->GlycolData(GlycolIndex).ViscLowTempValue,
    8122           0 :                                          state.dataFluidProps->GlycolData(GlycolIndex).ViscHighTempValue));
    8123           0 :                 ShowContinueErrorTimeStamp(state, "");
    8124             :             }
    8125     1005486 :             if (LowErrorThisTime) {
    8126           0 :                 ShowRecurringWarningErrorAtEnd(state,
    8127           0 :                                                std::string{RoutineName} + "Temperature out of range (too low) for fluid [" +
    8128           0 :                                                    state.dataFluidProps->GlycolData(GlycolIndex).Name + "] viscosity **",
    8129           0 :                                                state.dataFluidProps->GlycolErrorTracking(GlycolIndex).ViscosityLowErrIndex,
    8130             :                                                Temperature,
    8131             :                                                Temperature,
    8132             :                                                _,
    8133             :                                                "{C}",
    8134             :                                                "{C}");
    8135             :             }
    8136             : 
    8137     1005486 :             if ((HighErrorThisTime) && (state.dataFluidProps->HighTempLimitErrGetViscosityGlycol <= state.dataFluidProps->GlycolErrorLimitTest)) {
    8138           0 :                 ShowWarningMessage(state,
    8139           0 :                                    std::string{RoutineName} + "Temperature is out of range (too high) for fluid [" +
    8140           0 :                                        state.dataFluidProps->GlycolData(GlycolIndex).Name + "] viscosity **");
    8141           0 :                 ShowContinueError(state,
    8142           0 :                                   format("..Called From:{},Temperature=[{:.2R}], supplied data range=[{:.2R},{:.2R}]",
    8143             :                                          CalledFrom,
    8144             :                                          Temperature,
    8145           0 :                                          state.dataFluidProps->GlycolData(GlycolIndex).ViscLowTempValue,
    8146           0 :                                          state.dataFluidProps->GlycolData(GlycolIndex).ViscHighTempValue));
    8147           0 :                 ShowContinueErrorTimeStamp(state, "");
    8148             :             }
    8149     1005486 :             if (HighErrorThisTime) {
    8150           0 :                 ShowRecurringWarningErrorAtEnd(state,
    8151           0 :                                                std::string{RoutineName} + "Temperature out of range (too high) for fluid [" +
    8152           0 :                                                    state.dataFluidProps->GlycolData(GlycolIndex).Name + "] viscosity **",
    8153           0 :                                                state.dataFluidProps->GlycolErrorTracking(GlycolIndex).ViscosityHighErrIndex,
    8154             :                                                Temperature,
    8155             :                                                Temperature,
    8156             :                                                _,
    8157             :                                                "{C}",
    8158             :                                                "{C}");
    8159             :             }
    8160             :         }
    8161             : 
    8162     7118311 :         return ReturnValue;
    8163             :     }
    8164             : 
    8165             :     //*****************************************************************************
    8166             : 
    8167           0 :     void GetInterpValue_error(EnergyPlusData &state)
    8168             :     {
    8169           0 :         ShowFatalError(state, "GetInterpValue: Temperatures for fluid property data too close together, division by zero");
    8170           0 :     }
    8171             : 
    8172             :     //*****************************************************************************
    8173             : 
    8174           0 :     Real64 GetQualityRefrig(EnergyPlusData &state,
    8175             :                             std::string const &Refrigerant,   // carries in substance name
    8176             :                             Real64 const Temperature,         // actual temperature given as input
    8177             :                             Real64 const Enthalpy,            // actual enthalpy given as input
    8178             :                             int &RefrigIndex,                 // Index to Refrigerant Properties
    8179             :                             std::string_view const CalledFrom // routine this function was called from (error messages)
    8180             :     )
    8181             :     {
    8182             : 
    8183             :         // FUNCTION INFORMATION:
    8184             :         //       AUTHOR         Rick Strand
    8185             :         //       DATE WRITTEN   May 2000
    8186             :         //       MODIFIED       Simon Rees (May 2002)
    8187             :         //       RE-ENGINEERED  na
    8188             : 
    8189             :         // PURPOSE OF THIS FUNCTION:
    8190             :         // This function determines the quality of a refrigerant in the saturate
    8191             :         // region based on its temperature and enthalpy
    8192             : 
    8193             :         // METHODOLOGY EMPLOYED:
    8194             :         // Just checks to see whether or not the refrigerant name coming in can
    8195             :         // be found in the refrigerant derived type.  If so, the "reverse" of the
    8196             :         // GetSatEnthalpyRefrig function is performed.
    8197             : 
    8198             :         // REFERENCES:
    8199             :         // na
    8200             : 
    8201             :         // USE STATEMENTS:
    8202             :         // na
    8203             : 
    8204             :         // Return value
    8205             :         Real64 ReturnValue;
    8206             : 
    8207             :         // Locals
    8208             :         // FUNCTION ARGUMENT DEFINITIONS:
    8209             : 
    8210             :         // INTERFACE BLOCK SPECIFICATIONS:
    8211             :         // na
    8212             : 
    8213             :         // DERIVED TYPE DEFINITIONS:
    8214             :         // na
    8215             : 
    8216             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    8217             :         Real64 SatVapEnthalpy;  // value of enthalpy at hi index value for given Quality
    8218             :         Real64 SatLiqEnthalpy;  // value of enthalpy at TempIndex index value for given Quality
    8219             :         int RefrigNum;          // index for refrigerant under consideration
    8220             :         int HiTempIndex;        // array index for temp above input temp
    8221             :         int LoTempIndex;        // array index for temp below input temp
    8222             :         Real64 TempInterpRatio; // ratio to interpolate in temperature domain
    8223             : 
    8224           0 :         if (state.dataFluidProps->GetInput) {
    8225           0 :             GetFluidPropertiesData(state);
    8226           0 :             state.dataFluidProps->GetInput = false;
    8227             :         }
    8228             : 
    8229           0 :         RefrigNum = 0;
    8230           0 :         if (state.dataFluidProps->NumOfRefrigerants == 0) {
    8231           0 :             ReportFatalRefrigerantErrors(
    8232           0 :                 state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, "GetQualityRefrig", "enthalpy", CalledFrom);
    8233             :         }
    8234             : 
    8235             :         // Find which refrigerant (index) is being requested and then determine
    8236             :         // where the temperature is within the temperature array
    8237           0 :         if (RefrigIndex > 0) {
    8238           0 :             RefrigNum = RefrigIndex;
    8239             :         } else {
    8240             :             // Find which refrigerant (index) is being requested
    8241           0 :             RefrigNum = FindRefrigerant(state, Refrigerant);
    8242           0 :             if (RefrigNum == 0) {
    8243           0 :                 ReportFatalRefrigerantErrors(
    8244           0 :                     state, state.dataFluidProps->NumOfRefrigerants, RefrigNum, true, Refrigerant, "GetQualityRefrig", "enthalpy", CalledFrom);
    8245             :             }
    8246           0 :             RefrigIndex = RefrigNum;
    8247             :         }
    8248           0 :         auto const &refrig(state.dataFluidProps->RefrigData(RefrigNum));
    8249             : 
    8250           0 :         LoTempIndex = FindArrayIndex(Temperature, refrig.HTemps, refrig.HfLowTempIndex, refrig.HfHighTempIndex);
    8251           0 :         HiTempIndex = LoTempIndex + 1;
    8252             : 
    8253             :         // check on the data bounds and adjust indices to give clamped return value
    8254           0 :         if (LoTempIndex == 0) {
    8255           0 :             SatLiqEnthalpy = refrig.HfValues(refrig.HfLowTempIndex);
    8256           0 :             SatVapEnthalpy = refrig.HfgValues(refrig.HfLowTempIndex);
    8257             :             // Temperature supplied is out of bounds--produce an error message...
    8258           0 :             if (!state.dataGlobal->WarmupFlag)
    8259           0 :                 ShowRecurringWarningErrorAtEnd(state,
    8260             :                                                "GetQualityRefrig: ** Temperature for requested quality is below the range of data supplied **",
    8261           0 :                                                state.dataFluidProps->TempLoRangeErrIndexGetQualityRefrig,
    8262             :                                                Temperature,
    8263             :                                                Temperature,
    8264             :                                                _,
    8265             :                                                "{C}",
    8266             :                                                "{C}");
    8267             : 
    8268           0 :         } else if (HiTempIndex > refrig.NumHPoints) {
    8269           0 :             SatLiqEnthalpy = refrig.HfValues(refrig.HfHighTempIndex);
    8270           0 :             SatVapEnthalpy = refrig.HfgValues(refrig.HfHighTempIndex);
    8271             :             // Temperature supplied is out of bounds--produce an error message...
    8272           0 :             if (!state.dataGlobal->WarmupFlag)
    8273           0 :                 ShowRecurringWarningErrorAtEnd(state,
    8274             :                                                "GetQualityRefrig: ** Temperature requested quality is above the range of data supplied **",
    8275           0 :                                                state.dataFluidProps->TempHiRangeErrIndexGetQualityRefrig,
    8276             :                                                Temperature,
    8277             :                                                Temperature,
    8278             :                                                _,
    8279             :                                                "{C}",
    8280             :                                                "{C}");
    8281             : 
    8282             :         } else { // in normal range work out interpolated liq and gas enthalpies
    8283           0 :             TempInterpRatio = (Temperature - refrig.HTemps(LoTempIndex)) / (refrig.HTemps(HiTempIndex) - refrig.HTemps(LoTempIndex));
    8284           0 :             SatLiqEnthalpy = TempInterpRatio * refrig.HfValues(HiTempIndex) + (1.0 - TempInterpRatio) * refrig.HfValues(LoTempIndex);
    8285           0 :             SatVapEnthalpy = TempInterpRatio * refrig.HfgValues(HiTempIndex) + (1.0 - TempInterpRatio) * refrig.HfgValues(LoTempIndex);
    8286             :         }
    8287             : 
    8288             :         // calculate final quality value from enthalpy ratio
    8289           0 :         ReturnValue = (Enthalpy - SatLiqEnthalpy) / (SatVapEnthalpy - SatLiqEnthalpy);
    8290             : 
    8291             :         // final check to bound returned quality value
    8292           0 :         if (ReturnValue < 0.0) {
    8293             :             //    CALL ShowRecurringWarningErrorAtEnd(state, 'GetQualityRefrig: ** '//  &
    8294             :             //                   'Quality is less than zero in GetQualityRefrig; Quality reset to 0.0 **')
    8295           0 :             ReturnValue = 0.0;
    8296           0 :         } else if (ReturnValue > 1.0) {
    8297             :             //    CALL ShowRecurringWarningErrorAtEnd(state, 'GetQualityRefrig: ** '//  &
    8298             :             //                   'Quality is greater than one in GetQualityRefrig; refrigerant is superheated **')
    8299           0 :             ReturnValue = 2.0;
    8300             :         }
    8301             : 
    8302           0 :         return ReturnValue;
    8303             :     }
    8304             : 
    8305             :     //*****************************************************************************
    8306             : 
    8307      716510 :     int FindRefrigerant(EnergyPlusData &state, std::string_view const Refrigerant) // carries in substance name
    8308             :     {
    8309             : 
    8310             :         // FUNCTION INFORMATION:
    8311             :         //       AUTHOR         Rick Strand
    8312             :         //       DATE WRITTEN   May 2000
    8313             :         //       MODIFIED       Simon Rees (June 2002)
    8314             :         //       RE-ENGINEERED  na
    8315             : 
    8316             :         // PURPOSE OF THIS FUNCTION:
    8317             :         // This function simply determines the index of the refrigerant named
    8318             :         // in the input variable to this routine within the derived type.
    8319             : 
    8320             :         // METHODOLOGY EMPLOYED:
    8321             :         // Just checks to see whether or not the refrigerant name coming in can
    8322             :         // be found in the refrigerant derived type.  If so, the function is set
    8323             :         // to the index within the derived type.  If the input has not been read
    8324             :         // yet for some reason, that must be done.
    8325             : 
    8326             :         // Return value
    8327             :         int FindRefrigerant;
    8328             : 
    8329             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    8330             :         int Found; // Indicator for found item
    8331             : 
    8332             :         // Make sure we have already read in the input
    8333      716510 :         if (state.dataFluidProps->GetInput) {
    8334           2 :             GetFluidPropertiesData(state);
    8335           2 :             state.dataFluidProps->GetInput = false;
    8336             :         }
    8337             : 
    8338             :         // Check to see if this glycol shows up in the glycol data
    8339      716510 :         Found = UtilityRoutines::FindItemInList(UtilityRoutines::MakeUPPERCase(Refrigerant), state.dataFluidProps->RefrigData);
    8340             : 
    8341      716510 :         if (Found > 0) {
    8342      716510 :             FindRefrigerant = Found;
    8343      716510 :             state.dataFluidProps->RefrigUsed(Found) = true;
    8344             :         } else { // not found - errors handled in calling proceedure
    8345           0 :             FindRefrigerant = 0;
    8346             :         }
    8347             : 
    8348      716510 :         return FindRefrigerant;
    8349             :     }
    8350             : 
    8351             :     //*****************************************************************************
    8352             : 
    8353       55156 :     int FindGlycol(EnergyPlusData &state, std::string_view const Glycol) // carries in substance name
    8354             :     {
    8355             : 
    8356             :         // FUNCTION INFORMATION:
    8357             :         //       AUTHOR         Rick Strand
    8358             :         //       DATE WRITTEN   May 2000
    8359             :         //       MODIFIED       Simon Rees (June 2002)
    8360             :         //       RE-ENGINEERED  na
    8361             : 
    8362             :         // PURPOSE OF THIS FUNCTION:
    8363             :         // This function simply determines the index of the glycol named
    8364             :         // in the input variable to this routine within the derived type.
    8365             : 
    8366             :         // METHODOLOGY EMPLOYED:
    8367             :         // Just checks to see whether or not the glycol name coming in can
    8368             :         // be found in the glycol derived type.  If so, the function is set
    8369             :         // to the index within the derived type.  If the input has not been read
    8370             :         // yet for some reason, that must be done.
    8371             : 
    8372             :         // Return value
    8373             :         int FindGlycol;
    8374             : 
    8375             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    8376             :         int Found; // Indicator for found item
    8377             : 
    8378             :         // Make sure we have already read in the input
    8379       55156 :         if (state.dataFluidProps->GetInput) {
    8380         331 :             GetFluidPropertiesData(state);
    8381         331 :             state.dataFluidProps->GetInput = false;
    8382             :         }
    8383             : 
    8384             :         // Check to see if this glycol shows up in the glycol data
    8385      110312 :         Found = UtilityRoutines::FindItemInList(UtilityRoutines::MakeUPPERCase(Glycol),
    8386       55156 :                                                 state.dataFluidProps->GlycolData,
    8387       55156 :                                                 state.dataFluidProps->NumOfGlycols); // GlycolData is allocated to NumOfGlyConcs
    8388             : 
    8389       55156 :         if (Found > 0) {
    8390       55156 :             FindGlycol = Found;
    8391       55156 :             state.dataFluidProps->GlycolUsed(Found) = true;
    8392             :         } else { // return zero - error checking in calling proceedure
    8393           0 :             FindGlycol = 0;
    8394             :         }
    8395             : 
    8396       55156 :         return FindGlycol;
    8397             :     }
    8398             : 
    8399             :     //*****************************************************************************
    8400             : 
    8401       59428 :     std::string GetGlycolNameByIndex(EnergyPlusData &state, int const Idx) // carries in substance index
    8402             :     {
    8403             :         // FUNCTION INFORMATION:
    8404             :         //       AUTHOR         Edwin Lee
    8405             :         //       DATE WRITTEN   May 2009
    8406             :         //       MODIFIED       na
    8407             :         //       RE-ENGINEERED  na
    8408             : 
    8409             :         // PURPOSE OF THIS FUNCTION:
    8410             :         // This function simply returns the glycol name by index from the
    8411             :         // GlycolData data structure.  This is needed to expose the name
    8412             :         // as the data structure is private.
    8413             :         // This is used by plant equipment to pass in both the proper index
    8414             :         // and the proper name when calling glycol routines.  Thus, the index
    8415             :         // is already known, and the input is assumed to be found.
    8416             : 
    8417             :         // METHODOLOGY EMPLOYED:
    8418             :         // Just checks to see whether or not the glycol index is valid
    8419             :         // and if so, the function returns the name.  If not, it returns ' '
    8420             : 
    8421             :         // REFERENCES:
    8422             :         // na
    8423             : 
    8424             :         // USE STATEMENTS:
    8425             :         // na
    8426             : 
    8427             :         // Return value
    8428             :         // na
    8429             : 
    8430             :         // Locals
    8431             :         // FUNCTION ARGUMENT DEFINITIONS:
    8432             : 
    8433             :         // FUNCTION PARAMETER DEFINITIONS:
    8434             :         // na
    8435             : 
    8436             :         // INTERFACE BLOCK SPECIFICATIONS
    8437             :         // na
    8438             : 
    8439             :         // DERIVED TYPE DEFINITIONS
    8440             :         // na
    8441             : 
    8442             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    8443             :         // na
    8444             : 
    8445             :         // Check to see if this glycol shows up in the glycol data
    8446             :         //  ArrayLength = SIZE(GlycolData)
    8447             : 
    8448       59428 :         if (Idx > 0 && Idx <= state.dataFluidProps->NumOfGlycols) {
    8449       25800 :             return state.dataFluidProps->GlycolData(Idx).Name;
    8450             :         } else { // return blank - error checking in calling proceedure
    8451       33628 :             return "";
    8452             :         }
    8453             :     }
    8454             : 
    8455             :     //*****************************************************************************
    8456             : 
    8457   473301402 :     int FindArrayIndex(Real64 const Value,           // Value to be placed/found within the array of values
    8458             :                        Array1D<Real64> const &Array, // Array of values in ascending order
    8459             :                        int const LowBound,           // Valid values lower bound (set by calling program)
    8460             :                        int const UpperBound          // Valid values upper bound (set by calling program)
    8461             :     )
    8462             :     {
    8463             :         // FUNCTION INFORMATION:
    8464             :         //       AUTHOR         Rick Strand
    8465             :         //       DATE WRITTEN   May 2000
    8466             :         //       MODIFIED       Simon Rees (May 2002)
    8467             :         //       RE-ENGINEERED  Autodesk (Nov 2013) (performance tuned on C++)
    8468             : 
    8469             :         // PURPOSE OF THIS FUNCTION:
    8470             :         // This generic function simply finds the points in an array between
    8471             :         // which a single value is found.  The returned value is the index of
    8472             :         // the low point.
    8473             : 
    8474             :         // METHODOLOGY EMPLOYED:
    8475             :         // Straight interval halving. It is assumed that the values in the array
    8476             :         // appear in ascending order. If the value is below that in the supplied
    8477             :         // data array a zero index is returned. If the value is above that in the
    8478             :         // supplied data array, the max index is returned. This allows some error
    8479             :         // checking in the calling routine.
    8480             : 
    8481             :         // Autodesk:Tuned Profiling hot spot: Slightly slower when inlined
    8482             : 
    8483             :         // Bit shifting is substantially faster than /2 at least on GCC even with high optimization
    8484             :         // Linear indexing used to assure we are bit shifting positive values where behavior is assured
    8485             :         // std::lower_bound was 4x slower for the small (~100) array sizes seen in EnergyPlus use
    8486             :         typedef Array1D<Real64>::size_type size_type;
    8487   473301402 :         int const l(Array.l());
    8488   473301402 :         assert(LowBound >= l);
    8489   473301402 :         assert(LowBound <= UpperBound);
    8490   473301402 :         assert(UpperBound <= Array.u());
    8491   473301402 :         assert(Array.size() > 0u); // Empty arrays are not currently supported
    8492   473301402 :         assert(l > 0);             // Returning 0 for Value smaller than lowest doesn't make sense if l() <= 0
    8493   473301402 :         size_type beg(LowBound - l);
    8494   473301402 :         if (Value < Array[beg]) {
    8495           0 :             return 0;
    8496             :         } else {
    8497   473301402 :             size_type end(UpperBound - l);
    8498   473301402 :             if (Value > Array[end]) {
    8499           0 :                 return UpperBound;
    8500             :             } else { // Binary search
    8501             :                 size_type mid;
    8502  6477466780 :                 while (beg + 1 < end) {
    8503  3002082689 :                     mid = ((beg + end) >> 1);
    8504  3002082689 :                     (Value > Array[mid] ? beg : end) = mid;
    8505             :                 }
    8506   473301402 :                 return l + beg;
    8507             :             }
    8508             :         }
    8509             :     }
    8510             : 
    8511      990964 :     int FindArrayIndex(Real64 const Value,          // Value to be placed/found within the array of values
    8512             :                        Array1D<Real64> const &Array // Array of values in ascending order
    8513             :     )
    8514             :     {
    8515             :         // FUNCTION INFORMATION:
    8516             :         //       AUTHOR         Rick Strand
    8517             :         //       DATE WRITTEN   May 2000
    8518             :         //       MODIFIED       Simon Rees (May 2002)
    8519             :         //       RE-ENGINEERED  Autodesk (Nov 2013) (performance tuned on C++)
    8520             : 
    8521             :         // PURPOSE OF THIS FUNCTION:
    8522             :         // This generic function simply finds the points in an array between
    8523             :         // which a single value is found.  The returned value is the index of
    8524             :         // the low point.
    8525             : 
    8526             :         // METHODOLOGY EMPLOYED:
    8527             :         // Straight interval halving. It is assumed that the values in the array
    8528             :         // appear in ascending order. If the value is below that in the supplied
    8529             :         // data array a zero index is returned. If the value is above that in the
    8530             :         // supplied data array, the max index is returned. This allows some error
    8531             :         // checking in the calling routine.
    8532             : 
    8533             :         // Autodesk:Tuned Profiling hot spot: Slightly slower when inlined
    8534             : 
    8535             :         // Bit shifting is substantially faster than /2 at least on GCC even with high optimization
    8536             :         // Linear indexing used to assure we are bit shifting positive values where behavior is assured
    8537             :         // std::lower_bound was 4x slower for the small (~100) array sizes seen in EnergyPlus use
    8538             :         typedef Array1D<Real64>::size_type size_type;
    8539      990964 :         assert(Array.size() > 0u); // Empty arrays are not currently supported
    8540      990964 :         assert(Array.l() > 0);     // Returning 0 for Value smaller than lowest doesn't make sense if l() <= 0
    8541      990964 :         if (Value < Array[0]) {
    8542        5288 :             return 0;
    8543             :         } else {
    8544      985676 :             size_type end(Array.size() - 1u);
    8545      985676 :             if (Value > Array[end]) {
    8546        4868 :                 return Array.u();
    8547             :             } else { // Binary search
    8548      980808 :                 size_type beg(0), mid;
    8549     8866872 :                 while (beg + 1 < end) {
    8550     3943032 :                     mid = ((beg + end) >> 1);
    8551     3943032 :                     (Value > Array[mid] ? beg : end) = mid;
    8552             :                 }
    8553      980808 :                 return Array.l() + beg;
    8554             :             }
    8555             :         }
    8556             :     }
    8557             : 
    8558             :     //*****************************************************************************
    8559             : 
    8560   193456886 :     Real64 GetInterpolatedSatProp(EnergyPlusData &state,
    8561             :                                   Real64 const Temperature,          // Saturation Temp.
    8562             :                                   Array1D<Real64> const &PropTemps,  // Array of temperature at which props are available
    8563             :                                   Array1D<Real64> const &LiqProp,    // Array of saturated liquid properties
    8564             :                                   Array1D<Real64> const &VapProp,    // Array of saturatedvapour properties
    8565             :                                   Real64 const Quality,              // Quality
    8566             :                                   std::string_view const CalledFrom, // routine this function was called from (error messages)
    8567             :                                   int const LowBound,                // Valid values lower bound (set by calling program)
    8568             :                                   int const UpperBound               // Valid values upper bound (set by calling program)
    8569             :     )
    8570             :     {
    8571             : 
    8572             :         // FUNCTION INFORMATION:
    8573             :         //       AUTHOR         Simon Rees
    8574             :         //       DATE WRITTEN   May 2002
    8575             :         //       MODIFIED       na
    8576             :         //       RE-ENGINEERED  na
    8577             : 
    8578             :         // PURPOSE OF THIS FUNCTION:
    8579             :         // This generic function performs an interpolation on the supplied saturated
    8580             :         // liquid and vapor data to find the saturated property value at a given
    8581             :         // temperature and quality. This function is used by all the functions that
    8582             :         // get saturated property values.
    8583             : 
    8584             :         // METHODOLOGY EMPLOYED:
    8585             :         // Index of arrays either side of given temperature is found using FindArrayIndex.
    8586             :         // Double linear interpolation is used to first find property values at the given
    8587             :         // quality bounding the required temperature. These values are interpolated in the
    8588             :         // temperature domain to find the final value.
    8589             : 
    8590             :         // REFERENCES:
    8591             :         // na
    8592             : 
    8593             :         // USE STATEMENTS:
    8594             :         // na
    8595             : 
    8596             :         // Return value
    8597             :         Real64 ReturnValue;
    8598             : 
    8599             :         // Argument array dimensioning
    8600             : 
    8601             :         // Locals
    8602             :         // FUNCTION ARGUMENT DEFINITIONS:
    8603             : 
    8604             :         // FUNCTION PARAMETER DEFINITIONS:
    8605             :         // na
    8606             : 
    8607             :         // INTERFACE BLOCK SPECIFICATIONS
    8608             :         // na
    8609             : 
    8610             :         // DERIVED TYPE DEFINITIONS
    8611             :         // na
    8612             : 
    8613             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    8614             : 
    8615             :         // error counters and dummy string
    8616   193456886 :         bool ErrorFlag(false); // error flag for current call
    8617             : 
    8618   193456886 :         int const LoTempIndex = FindArrayIndex(Temperature, PropTemps, LowBound, UpperBound); // array index for temp above input temp
    8619             : 
    8620   193456886 :         if (LoTempIndex == 0) {
    8621           0 :             ReturnValue = LiqProp(LowBound) + Quality * (VapProp(LowBound) - LiqProp(LowBound));
    8622           0 :             ErrorFlag = true;
    8623   193456886 :         } else if (LoTempIndex >= UpperBound) {
    8624           0 :             ReturnValue = LiqProp(UpperBound) + Quality * (VapProp(UpperBound) - LiqProp(UpperBound));
    8625           0 :             ErrorFlag = true;
    8626             :         } else {
    8627   193456886 :             int const HiTempIndex = LoTempIndex + 1; // array index for temp below input temp
    8628             : 
    8629             :             // find adjacent property values at the given quality
    8630   193456886 :             Real64 const LiqProp_Lo = LiqProp(LoTempIndex);
    8631   193456886 :             Real64 const LoSatProp = LiqProp_Lo + Quality * (VapProp(LoTempIndex) - LiqProp_Lo); // Sat. prop. at lower temp & given quality
    8632             : 
    8633   193456886 :             Real64 const LiqProp_Hi = LiqProp(HiTempIndex);
    8634   193456886 :             Real64 const HiSatProp = LiqProp_Hi + Quality * (VapProp(HiTempIndex) - LiqProp_Hi); // Sat. prop. at higher temp & given quality
    8635             : 
    8636             :             // find interpolation ratio in temperature direction
    8637   193456886 :             Real64 const PropTemps_Lo = PropTemps(LoTempIndex);
    8638   193456886 :             Real64 const TempInterpRatio = (Temperature - PropTemps_Lo) / (PropTemps(HiTempIndex) - PropTemps_Lo);
    8639             : 
    8640             :             // apply final linear interpolation
    8641   193456886 :             ReturnValue = LoSatProp + TempInterpRatio * (HiSatProp - LoSatProp);
    8642             :         }
    8643             : 
    8644   193456886 :         if (ErrorFlag && (CalledFrom != "ReportAndTestRefrigerants")) {
    8645           0 :             ++state.dataFluidProps->TempRangeErrCountGetInterpolatedSatProp;
    8646             :             // send warning
    8647           0 :             if (state.dataFluidProps->TempRangeErrCountGetInterpolatedSatProp <= state.dataFluidProps->RefrigerantErrorLimitTest) {
    8648           0 :                 ShowWarningError(state, "GetInterpolatedSatProp: Saturation temperature for interpolation is out of range of data supplied: **");
    8649           0 :                 ShowContinueErrorTimeStamp(state, fmt::format(" Called from:{}", CalledFrom));
    8650           0 :                 ShowContinueError(state, format("Refrigerant temperature = {:.2R}", Temperature));
    8651           0 :                 ShowContinueError(state, format("Returned saturated property value = {:.3R}", ReturnValue));
    8652             :             } else {
    8653           0 :                 ShowRecurringWarningErrorAtEnd(state,
    8654             :                                                "GetInterpolatedSatProp: Refrigerant temperature for interpolation out of range error",
    8655           0 :                                                state.dataFluidProps->TempRangeErrIndexGetInterpolatedSatProp,
    8656             :                                                Temperature,
    8657             :                                                Temperature,
    8658             :                                                _,
    8659             :                                                "{C}",
    8660             :                                                "{C}");
    8661             :             }
    8662             :         }
    8663             : 
    8664   193456886 :         return ReturnValue;
    8665             :     }
    8666             : 
    8667             :     //*****************************************************************************
    8668             : 
    8669          26 :     int CheckFluidPropertyName(EnergyPlusData &state,
    8670             :                                std::string const &NameToCheck) // Name from input(?) to be checked against valid FluidPropertyNames
    8671             :     {
    8672             : 
    8673             :         // FUNCTION INFORMATION:
    8674             :         //       AUTHOR         Linda K. Lawrie
    8675             :         //       DATE WRITTEN   October 2002
    8676             :         //       MODIFIED       na
    8677             :         //       RE-ENGINEERED  na
    8678             : 
    8679             :         // PURPOSE OF THIS FUNCTION:
    8680             :         // This function checks on an input fluid property to make sure it is valid.
    8681             : 
    8682             :         // Return value
    8683             :         int CheckFluidPropertyName;
    8684             : 
    8685             :         // FUNCTION LOCAL VARIABLE DECLARATIONS:
    8686             :         int Found;
    8687             : 
    8688          26 :         if (state.dataFluidProps->GetInput) {
    8689           9 :             GetFluidPropertiesData(state);
    8690           9 :             state.dataFluidProps->GetInput = false;
    8691             :         }
    8692             : 
    8693             :         // Item must be either in Refrigerant or Glycol list
    8694          26 :         Found = 0;
    8695          26 :         if (state.dataFluidProps->NumOfRefrigerants > 0) {
    8696          26 :             Found = UtilityRoutines::FindItemInList(NameToCheck, state.dataFluidProps->RefrigData);
    8697             :         }
    8698          26 :         if (Found == 0) {
    8699          26 :             if (state.dataFluidProps->NumOfGlycols > 0) {
    8700          52 :                 Found = UtilityRoutines::FindItemInList(
    8701          52 :                     NameToCheck, state.dataFluidProps->GlycolData, state.dataFluidProps->NumOfGlycols); // GlycolData is allocated to NumOfGlyConcs
    8702             :             }
    8703             :         }
    8704             : 
    8705          26 :         CheckFluidPropertyName = Found;
    8706             : 
    8707          26 :         return CheckFluidPropertyName;
    8708             :     }
    8709             : 
    8710         769 :     void ReportOrphanFluids(EnergyPlusData &state)
    8711             :     {
    8712             : 
    8713             :         // SUBROUTINE INFORMATION:
    8714             :         //       AUTHOR         Linda Lawrie
    8715             :         //       DATE WRITTEN   March 2010
    8716             :         //       MODIFIED       na
    8717             :         //       RE-ENGINEERED  na
    8718             : 
    8719             :         // PURPOSE OF THIS SUBROUTINE:
    8720             :         // In response to CR8008, report orphan (unused) fluid items.
    8721             : 
    8722             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    8723             :         bool NeedOrphanMessage;
    8724             :         int Item;
    8725             :         int NumUnusedRefrig;
    8726             :         int NumUnusedGlycol;
    8727             : 
    8728         769 :         NeedOrphanMessage = true;
    8729         769 :         NumUnusedRefrig = 0;
    8730             : 
    8731        1264 :         for (Item = 1; Item <= state.dataFluidProps->NumOfRefrigerants; ++Item) {
    8732         495 :             if (state.dataFluidProps->RefrigUsed(Item)) continue;
    8733           0 :             if (UtilityRoutines::SameString(state.dataFluidProps->RefrigData(Item).Name, Steam)) continue;
    8734           0 :             if (NeedOrphanMessage && state.dataGlobal->DisplayUnusedObjects) {
    8735           0 :                 ShowWarningError(state, "The following fluid names are \"Unused Fluids\".  These fluids are in the idf");
    8736           0 :                 ShowContinueError(state, " file but are never obtained by the simulation and therefore are NOT used.");
    8737           0 :                 NeedOrphanMessage = false;
    8738             :             }
    8739           0 :             if (state.dataGlobal->DisplayUnusedObjects) {
    8740           0 :                 ShowMessage(state, "Refrigerant=" + state.dataFluidProps->RefrigData(Item).Name);
    8741             :             } else {
    8742           0 :                 ++NumUnusedRefrig;
    8743             :             }
    8744             :         }
    8745             : 
    8746         769 :         NumUnusedGlycol = 0;
    8747             : 
    8748        1264 :         for (Item = 1; Item <= state.dataFluidProps->NumOfGlycols; ++Item) {
    8749         495 :             if (state.dataFluidProps->GlycolUsed(Item)) continue;
    8750           1 :             if (UtilityRoutines::SameString(state.dataFluidProps->GlycolData(Item).Name, Water)) continue;
    8751           1 :             if (UtilityRoutines::SameString(state.dataFluidProps->GlycolData(Item).Name, EthyleneGlycol)) continue;
    8752           1 :             if (UtilityRoutines::SameString(state.dataFluidProps->GlycolData(Item).Name, PropyleneGlycol)) continue;
    8753           1 :             if (NeedOrphanMessage && state.dataGlobal->DisplayUnusedObjects) {
    8754           0 :                 ShowWarningError(state, "The following fluid names are \"Unused Fluids\".  These fluids are in the idf");
    8755           0 :                 ShowContinueError(state, " file but are never obtained by the simulation and therefore are NOT used.");
    8756           0 :                 NeedOrphanMessage = false;
    8757             :             }
    8758           1 :             if (state.dataGlobal->DisplayUnusedObjects) {
    8759           0 :                 ShowMessage(state, "Glycol=" + state.dataFluidProps->GlycolData(Item).Name);
    8760             :             } else {
    8761           1 :                 ++NumUnusedGlycol;
    8762             :             }
    8763             :         }
    8764             : 
    8765         769 :         if (NumUnusedRefrig > 0 || NumUnusedGlycol > 0) {
    8766           1 :             if (NumUnusedRefrig > 0) ShowMessage(state, format("There are {} unused refrigerants in input.", NumUnusedRefrig));
    8767           1 :             if (NumUnusedGlycol > 0) ShowMessage(state, format("There are {} unused glycols in input.", NumUnusedGlycol));
    8768           1 :             ShowMessage(state, "Use Output:Diagnostics,DisplayUnusedObjects; to see them.");
    8769             :         }
    8770         769 :     }
    8771             : 
    8772           0 :     void ReportFatalGlycolErrors(EnergyPlusData &state,
    8773             :                                  int const NumGlycols,               // Number of Glycols in input/data
    8774             :                                  int const GlycolNum,                // Glycol Index
    8775             :                                  bool const DataPresent,             // data is present for this fluid.
    8776             :                                  std::string_view const GlycolName,  // Name being reported
    8777             :                                  std::string_view const RoutineName, // Routine name to show
    8778             :                                  std::string_view const Property,    // Property being requested
    8779             :                                  std::string_view const CalledFrom   // original called from (external to fluid properties)
    8780             :     )
    8781             :     {
    8782             : 
    8783             :         // SUBROUTINE INFORMATION:
    8784             :         //       AUTHOR         Linda Lawrie
    8785             :         //       DATE WRITTEN   July 2011
    8786             :         //       MODIFIED       na
    8787             :         //       RE-ENGINEERED  na
    8788             : 
    8789             :         // PURPOSE OF THIS SUBROUTINE:
    8790             :         // Consolidate fatal error reporting for glycols.
    8791             : 
    8792             :         // METHODOLOGY EMPLOYED:
    8793             :         // na
    8794             : 
    8795             :         // REFERENCES:
    8796             :         // na
    8797             : 
    8798             :         // USE STATEMENTS:
    8799             :         // na
    8800             : 
    8801             :         // Locals
    8802             :         // SUBROUTINE ARGUMENT DEFINITIONS:
    8803             : 
    8804             :         // SUBROUTINE PARAMETER DEFINITIONS:
    8805             :         // na
    8806             : 
    8807             :         // INTERFACE BLOCK SPECIFICATIONS:
    8808             :         // na
    8809             : 
    8810             :         // DERIVED TYPE DEFINITIONS:
    8811             :         // na
    8812             : 
    8813             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    8814             :         int RefrigNo;
    8815             : 
    8816             :         // check and see if it might be a refrigerant
    8817           0 :         RefrigNo = FindRefrigerant(state, GlycolName);
    8818             : 
    8819           0 :         if (NumGlycols == 0) {
    8820           0 :             ShowSevereError(
    8821             :                 state,
    8822           0 :                 fmt::format(
    8823             :                     "{}: no glycols found -- cannot evaluate fluid {} for \"{}\", called from: {}", RoutineName, Property, GlycolName, CalledFrom));
    8824           0 :         } else if (GlycolNum == 0) {
    8825           0 :             ShowSevereError(
    8826           0 :                 state, fmt::format("{}: data not found in input for requested glycol \"{}\", called from: {}", RoutineName, GlycolName, CalledFrom));
    8827           0 :         } else if (!DataPresent) {
    8828           0 :             ShowSevereError(state,
    8829           0 :                             std::string{RoutineName} + ": " + std::string{Property} + " data not found in input for requested glycol \"" +
    8830           0 :                                 std::string{GlycolName} + fmt::format("\", called from: {}", CalledFrom));
    8831             :         }
    8832           0 :         if (RefrigNo > 0) ShowContinueError(state, "Note: that fluid is listed as a Refrigerant from input.");
    8833             : 
    8834           0 :         ShowFatalError(state, "Program terminates due to preceding condition.");
    8835           0 :     }
    8836             : 
    8837           0 :     void ReportFatalRefrigerantErrors(EnergyPlusData &state,
    8838             :                                       int const NumRefrigerants,              // Number of Refrigerants in input/data
    8839             :                                       int const RefrigerantNum,               // Refrigerant Index
    8840             :                                       bool const DataPresent,                 // data is present for this fluid.
    8841             :                                       std::string_view const RefrigerantName, // Name being reported
    8842             :                                       std::string_view const RoutineName,     // Routine name to show
    8843             :                                       std::string_view const Property,        // Property being requested
    8844             :                                       std::string_view const CalledFrom       // original called from (external to fluid properties)
    8845             :     )
    8846             :     {
    8847             : 
    8848             :         // SUBROUTINE INFORMATION:
    8849             :         //       AUTHOR         Linda Lawrie
    8850             :         //       DATE WRITTEN   July 2011
    8851             :         //       MODIFIED       na
    8852             :         //       RE-ENGINEERED  na
    8853             : 
    8854             :         // PURPOSE OF THIS SUBROUTINE:
    8855             :         // Consolidate fatal error reporting for refrigerants.
    8856             : 
    8857             :         // METHODOLOGY EMPLOYED:
    8858             :         // na
    8859             : 
    8860             :         // REFERENCES:
    8861             :         // na
    8862             : 
    8863             :         // USE STATEMENTS:
    8864             :         // na
    8865             : 
    8866             :         // Locals
    8867             :         // SUBROUTINE ARGUMENT DEFINITIONS:
    8868             : 
    8869             :         // SUBROUTINE PARAMETER DEFINITIONS:
    8870             :         // na
    8871             : 
    8872             :         // INTERFACE BLOCK SPECIFICATIONS:
    8873             :         // na
    8874             : 
    8875             :         // DERIVED TYPE DEFINITIONS:
    8876             :         // na
    8877             : 
    8878             :         // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
    8879             :         int GlycolNo;
    8880             : 
    8881             :         // check and see if it might be a refrigerant
    8882           0 :         GlycolNo = FindGlycol(state, RefrigerantName);
    8883             : 
    8884           0 :         if (NumRefrigerants == 0) {
    8885           0 :             ShowSevereError(state,
    8886           0 :                             fmt::format("{}: no refrigerants found -- cannot evaluate fluid {} for \"{}\", called from: {}",
    8887             :                                         RoutineName,
    8888             :                                         Property,
    8889             :                                         RefrigerantName,
    8890             :                                         CalledFrom));
    8891           0 :         } else if (RefrigerantNum == 0) {
    8892           0 :             ShowSevereError(
    8893             :                 state,
    8894           0 :                 fmt::format(
    8895             :                     "{}: data not found in input for requested refrigerant \"{}\", called from: {}", RoutineName, RefrigerantName, CalledFrom));
    8896           0 :         } else if (!DataPresent) {
    8897           0 :             ShowSevereError(state,
    8898           0 :                             fmt::format("{}: {} data not found in input for requested refrigerant \"{}\", called from: {}",
    8899             :                                         RoutineName,
    8900             :                                         Property,
    8901             :                                         RefrigerantName,
    8902             :                                         CalledFrom));
    8903             :         }
    8904           0 :         if (GlycolNo > 0) ShowContinueError(state, "Note: that fluid is listed as a Glycol from input.");
    8905             : 
    8906           0 :         ShowFatalError(state, "Program terminates due to preceding condition.");
    8907           0 :     }
    8908             : 
    8909           0 :     void GetFluidDensityTemperatureLimits(EnergyPlusData &state, int const FluidIndex, Real64 &MinTempLimit, Real64 &MaxTempLimit)
    8910             :     {
    8911             : 
    8912             :         // Get the input if we haven't already
    8913           0 :         if (state.dataFluidProps->GetInput) {
    8914           0 :             GetFluidPropertiesData(state);
    8915           0 :             state.dataFluidProps->GetInput = false;
    8916             :         }
    8917             : 
    8918           0 :         if (FluidIndex > 0) {
    8919           0 :             MinTempLimit = state.dataFluidProps->GlycolData(FluidIndex).RhoLowTempValue;
    8920           0 :             MaxTempLimit = state.dataFluidProps->GlycolData(FluidIndex).RhoHighTempValue;
    8921             :         }
    8922           0 :     }
    8923             : 
    8924           0 :     void GetFluidSpecificHeatTemperatureLimits(EnergyPlusData &state, int const FluidIndex, Real64 &MinTempLimit, Real64 &MaxTempLimit)
    8925             :     {
    8926             :         // Get the input if we haven't already
    8927           0 :         if (state.dataFluidProps->GetInput) {
    8928           0 :             GetFluidPropertiesData(state);
    8929           0 :             state.dataFluidProps->GetInput = false;
    8930             :         }
    8931             : 
    8932           0 :         if (FluidIndex > 0) {
    8933           0 :             MinTempLimit = state.dataFluidProps->GlycolData(FluidIndex).CpLowTempValue;
    8934           0 :             MaxTempLimit = state.dataFluidProps->GlycolData(FluidIndex).CpHighTempValue;
    8935             :         }
    8936           0 :     }
    8937             : 
    8938           2 :     GlycolAPI::GlycolAPI(EnergyPlusData &state, std::string const &glycolName)
    8939             :     {
    8940           2 :         this->glycolName = EnergyPlus::UtilityRoutines::MakeUPPERCase(glycolName);
    8941           2 :         this->glycolIndex = 0;
    8942           2 :         this->cf = "GlycolAPI:Instance";
    8943           2 :         if (this->glycolName != "WATER") {
    8944           0 :             EnergyPlus::ShowFatalError(state, "Can only do water right now");
    8945             :         }
    8946           2 :     }
    8947       42547 :     Real64 GlycolAPI::specificHeat(EnergyPlusData &state, Real64 temperature)
    8948             :     {
    8949       42547 :         return FluidProperties::GetSpecificHeatGlycol(state, this->glycolName, temperature, this->glycolIndex, this->cf);
    8950             :     }
    8951         195 :     Real64 GlycolAPI::density(EnergyPlusData &state, Real64 temperature)
    8952             :     {
    8953         195 :         return FluidProperties::GetDensityGlycol(state, this->glycolName, temperature, this->glycolIndex, this->cf);
    8954             :     }
    8955           0 :     Real64 GlycolAPI::conductivity(EnergyPlusData &state, Real64 temperature)
    8956             :     {
    8957           0 :         return FluidProperties::GetConductivityGlycol(state, this->glycolName, temperature, this->glycolIndex, this->cf);
    8958             :     }
    8959           0 :     Real64 GlycolAPI::viscosity(EnergyPlusData &state, Real64 temperature)
    8960             :     {
    8961           0 :         return FluidProperties::GetViscosityGlycol(state, this->glycolName, temperature, this->glycolIndex, this->cf);
    8962             :     }
    8963             : 
    8964           0 :     RefrigerantAPI::RefrigerantAPI(EnergyPlusData &state, std::string const &refrigName)
    8965             :     {
    8966           0 :         this->rName = EnergyPlus::UtilityRoutines::MakeUPPERCase(refrigName);
    8967           0 :         this->rIndex = 0;
    8968           0 :         this->cf = "RefrigerantAPI:Instance";
    8969           0 :         if (this->rName != "STEAM") {
    8970           0 :             EnergyPlus::ShowFatalError(state, "Can only do steam right now");
    8971             :         }
    8972           0 :     }
    8973           0 :     Real64 RefrigerantAPI::saturationPressure(EnergyPlusData &state, Real64 temperature)
    8974             :     {
    8975           0 :         return FluidProperties::GetSatPressureRefrig(state, this->rName, temperature, this->rIndex, this->cf);
    8976             :     }
    8977           0 :     Real64 RefrigerantAPI::saturationTemperature(EnergyPlusData &state, Real64 pressure)
    8978             :     {
    8979           0 :         return FluidProperties::GetSatTemperatureRefrig(state, this->rName, pressure, this->rIndex, this->cf);
    8980             :     }
    8981           0 :     Real64 RefrigerantAPI::saturatedEnthalpy(EnergyPlusData &state, Real64 temperature, Real64 quality)
    8982             :     {
    8983           0 :         return FluidProperties::GetSatEnthalpyRefrig(state, this->rName, temperature, quality, this->rIndex, this->cf);
    8984             :     }
    8985           0 :     Real64 RefrigerantAPI::saturatedDensity(EnergyPlusData &state, Real64 temperature, Real64 quality)
    8986             :     {
    8987           0 :         return FluidProperties::GetSatDensityRefrig(state, this->rName, temperature, quality, this->rIndex, this->cf);
    8988             :     }
    8989           0 :     Real64 RefrigerantAPI::saturatedSpecificHeat(EnergyPlusData &state, Real64 temperature, Real64 quality)
    8990             :     {
    8991           0 :         return FluidProperties::GetSatSpecificHeatRefrig(state, this->rName, temperature, quality, this->rIndex, this->cf);
    8992             :     }
    8993           0 :     Real64 RefrigerantAPI::superHeatedEnthalpy(EnergyPlusData &state, Real64 temperature, Real64 pressure)
    8994             :     {
    8995           0 :         return FluidProperties::GetSupHeatEnthalpyRefrig(state, this->rName, temperature, pressure, this->rIndex, this->cf);
    8996             :     }
    8997           0 :     Real64 RefrigerantAPI::superHeatedPressure(EnergyPlusData &state, Real64 temperature, Real64 enthalpy)
    8998             :     {
    8999           0 :         return FluidProperties::GetSupHeatPressureRefrig(state, this->rName, temperature, enthalpy, this->rIndex, this->cf);
    9000             :     }
    9001           0 :     Real64 RefrigerantAPI::superHeatedDensity(EnergyPlusData &state, Real64 temperature, Real64 pressure)
    9002             :     {
    9003           0 :         return FluidProperties::GetSupHeatDensityRefrig(state, this->rName, temperature, pressure, this->rIndex, this->cf);
    9004             :     }
    9005             : 
    9006             : } // namespace FluidProperties
    9007             : 
    9008        2313 : } // namespace EnergyPlus

Generated by: LCOV version 1.13