HarrisPriesterDrag.cpp

Go to the documentation of this file.
00001 #pragma ident "$Id: HarrisPriesterDrag.cpp 2457 2010-08-18 14:20:12Z coandrei $"
00002 
00008 //============================================================================
00009 //
00010 //  This file is part of GPSTk, the GPS Toolkit.
00011 //
00012 //  The GPSTk is free software; you can redistribute it and/or modify
00013 //  it under the terms of the GNU Lesser General Public License as published
00014 //  by the Free Software Foundation; either version 2.1 of the License, or
00015 //  any later version.
00016 //
00017 //  The GPSTk is distributed in the hope that it will be useful,
00018 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00019 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020 //  GNU Lesser General Public License for more details.
00021 //
00022 //  You should have received a copy of the GNU Lesser General Public
00023 //  License along with GPSTk; if not, write to the Free Software Foundation,
00024 //  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00025 //
00026 //  Wei Yan - Chinese Academy of Sciences . 2009, 2010
00027 //
00028 //============================================================================
00029 
00030 
00031 #include "HarrisPriesterDrag.hpp"
00032 #include "IERS.hpp"
00033 #include "ReferenceFrames.hpp"
00034 #include "StringUtils.hpp"
00035 #include <map>
00036 
00037 namespace gpstk
00038 {
00039    using namespace std;
00040 
00041 
00042       // Upper height limit [km]
00043    const double HarrisPriesterDrag::upper_limit = 2000.0;         
00044       
00045       // Lower height limit [km]
00046    const double HarrisPriesterDrag::lower_limit = 100.0;  
00047 
00048       // Right ascension lag [rad]
00049    const double HarrisPriesterDrag::ra_lag      = 0.523599;          
00050 
00051       // Harris-Priester atmospheric density coefficients
00052       // it's modified from JAT by Richard C.
00053    const double HarrisPriesterDrag::hpcoef[10][177] = {
00054    
00055    // ALTITUDE              MINIMUM DENSITY       MAXIMUM DENSITY
00056 
00057    {   // F107 = +65.000000
00058       +1.1000000e+002,      +7.8000000e+001,      +7.8000000e+001,
00059       +1.2000000e+002,      +2.4900000e+001,      +2.4900000e+001,
00060       +1.3000000e+002,      +8.9780000e+000,      +9.3310000e+000,
00061       +1.4000000e+002,      +4.0690000e+000,      +4.2120000e+000,
00062       +1.5000000e+002,      +2.0860000e+000,      +2.1680000e+000,
00063       +1.6000000e+002,      +1.1460000e+000,      +1.2360000e+000,
00064       +1.7000000e+002,      +6.6160000e-001,      +7.5580000e-001,
00065       +1.8000000e+002,      +4.0160000e-001,      +4.8850000e-001,
00066       +1.9000000e+002,      +2.5300000e-001,      +3.2740000e-001,
00067       +2.0000000e+002,      +1.6280000e-001,      +2.2840000e-001,
00068       +2.1000000e+002,      +1.0760000e-001,      +1.6340000e-001,
00069       +2.2000000e+002,      +7.2870000e-002,      +1.1920000e-001,
00070       +2.3000000e+002,      +5.0380000e-002,      +8.8510000e-002,
00071       +2.4000000e+002,      +3.5490000e-002,      +6.6660000e-002,
00072       +2.5000000e+002,      +2.5410000e-002,      +5.0830000e-002,
00073       +2.6000000e+002,      +1.8460000e-002,      +3.9190000e-002,
00074       +2.7000000e+002,      +1.3580000e-002,      +3.0500000e-002,
00075       +2.8000000e+002,      +1.0100000e-002,      +2.3940000e-002,
00076       +2.9000000e+002,      +7.5880000e-003,      +1.8940000e-002,
00077       +3.0000000e+002,      +5.7190000e-003,      +1.5100000e-002,
00078       +3.2000000e+002,      +3.3050000e-003,      +9.8860000e-003,
00079       +3.4000000e+002,      +1.9530000e-003,      +6.6080000e-003,
00080       +3.6000000e+002,      +1.1750000e-003,      +4.4940000e-003,
00081       +3.8000000e+002,      +7.1670000e-004,      +3.1000000e-003,
00082       +4.0000000e+002,      +4.4280000e-004,      +2.1630000e-003,
00083       +4.2000000e+002,      +2.7790000e-004,      +1.5260000e-003,
00084       +4.4000000e+002,      +1.7600000e-004,      +1.0850000e-003,
00085       +4.6000000e+002,      +1.1280000e-004,      +7.7670000e-004,
00086       +4.8000000e+002,      +7.3460000e-005,      +5.5990000e-004,
00087       +5.0000000e+002,      +4.8660000e-005,      +4.0610000e-004,
00088       +5.2000000e+002,      +3.2910000e-005,      +2.9630000e-004,
00089       +5.4000000e+002,      +2.2790000e-005,      +2.1740000e-004,
00090       +5.6000000e+002,      +1.6220000e-005,      +1.6050000e-004,
00091       +5.8000000e+002,      +1.1880000e-005,      +1.1920000e-004,
00092       +6.0000000e+002,      +8.9780000e-006,      +8.9100000e-005,
00093       +6.2000000e+002,      +6.9870000e-006,      +6.7080000e-005,
00094       +6.4000000e+002,      +5.5930000e-006,      +5.0900000e-005,
00095       +6.6000000e+002,      +4.5890000e-006,      +3.8960000e-005,
00096       +6.8000000e+002,      +3.8460000e-006,      +3.0110000e-005,
00097       +7.0000000e+002,      +3.2810000e-006,      +2.3510000e-005,
00098       +7.2000000e+002,      +2.8380000e-006,      +1.8570000e-005,
00099       +7.4000000e+002,      +2.4820000e-006,      +1.4840000e-005,
00100       +7.6000000e+002,      +2.1900000e-006,      +1.2020000e-005,
00101       +7.8000000e+002,      +1.9440000e-006,      +9.8570000e-006,
00102       +8.0000000e+002,      +1.7360000e-006,      +8.1930000e-006,
00103       +8.5000000e+002,      +1.1800000e-006,      +6.2000000e-006,
00104       +9.0000000e+002,      +8.7000000e-007,      +4.4000000e-006,
00105       +9.5000000e+002,      +6.6000000e-007,      +3.3000000e-006,
00106       +1.0000000e+003,      +4.8000000e-007,      +2.7000000e-006,
00107       +1.1000000e+003,      +3.0000000e-007,      +1.7500000e-006,
00108       +1.2000000e+003,      +1.8500000e-007,      +1.2000000e-006,
00109       +1.3000000e+003,      +1.1300000e-007,      +8.5000000e-007,
00110       +1.4000000e+003,      +7.3000000e-008,      +6.2000000e-007,
00111       +1.5000000e+003,      +5.2000000e-008,      +4.7500000e-007,
00112       +1.6000000e+003,      +3.7000000e-008,      +3.6500000e-007,
00113       +1.7000000e+003,      +2.5500000e-008,      +3.0000000e-007,
00114       +1.8000000e+003,      +1.8200000e-008,      +2.2000000e-007,
00115       +1.9000000e+003,      +1.3000000e-008,      +1.8000000e-007,
00116       +2.0000000e+003,      +1.0000000e-008,      +1.4500000e-007,
00117    },
00118    {   // F107 = +75.0000000
00119       +1.1000000e+002,      +7.8000000e+001,      +7.8000000e+001,
00120       +1.2000000e+002,      +2.4900000e+001,      +2.4900000e+001,
00121       +1.3000000e+002,      +8.9130000e+000,      +9.2630000e+000,
00122       +1.4000000e+002,      +4.0510000e+000,      +4.1970000e+000,
00123       +1.5000000e+002,      +2.0920000e+000,      +2.1760000e+000,
00124       +1.6000000e+002,      +1.1600000e+000,      +1.2490000e+000,
00125       +1.7000000e+002,      +6.7810000e-001,      +7.6970000e-001,
00126       +1.8000000e+002,      +4.1570000e-001,      +5.0160000e-001,
00127       +1.9000000e+002,      +2.6530000e-001,      +3.3910000e-001,
00128       +2.0000000e+002,      +1.7250000e-001,      +2.3810000e-001,
00129       +2.1000000e+002,      +1.1510000e-001,      +1.7160000e-001,
00130       +2.2000000e+002,      +7.8660000e-002,      +1.2620000e-001,
00131       +2.3000000e+002,      +5.4850000e-002,      +9.4350000e-002,
00132       +2.4000000e+002,      +3.8940000e-002,      +7.1550000e-002,
00133       +2.5000000e+002,      +2.8100000e-002,      +5.4920000e-002,
00134       +2.6000000e+002,      +2.0560000e-002,      +4.2610000e-002,
00135       +2.7000000e+002,      +1.5230000e-002,      +3.3370000e-002,
00136       +2.8000000e+002,      +1.1410000e-002,      +2.6350000e-002,
00137       +2.9000000e+002,      +8.6310000e-003,      +2.0960000e-002,
00138       +3.0000000e+002,      +6.5540000e-003,      +1.6820000e-002,
00139       +3.2000000e+002,      +3.8400000e-003,      +1.1130000e-002,
00140       +3.4000000e+002,      +2.3010000e-003,      +7.5140000e-003,
00141       +3.6000000e+002,      +1.4030000e-003,      +5.1600000e-003,
00142       +3.8000000e+002,      +8.6840000e-004,      +3.5950000e-003,
00143       +4.0000000e+002,      +5.4400000e-004,      +2.5340000e-003,
00144       +4.2000000e+002,      +3.4190000e-004,      +1.7980000e-003,
00145       +4.4000000e+002,      +2.1890000e-004,      +1.2910000e-003,
00146       +4.6000000e+002,      +1.4180000e-004,      +9.3340000e-004,
00147       +4.8000000e+002,      +9.3040000e-005,      +6.7950000e-004,
00148       +5.0000000e+002,      +6.1940000e-005,      +4.9760000e-004,
00149       +5.2000000e+002,      +4.1950000e-005,      +3.6640000e-004,
00150       +5.4000000e+002,      +2.8990000e-005,      +2.7130000e-004,
00151       +5.6000000e+002,      +2.0500000e-005,      +2.0190000e-004,
00152       +5.8000000e+002,      +1.4870000e-005,      +1.5110000e-004,
00153       +6.0000000e+002,      +1.1090000e-005,      +1.1370000e-004,
00154       +6.2000000e+002,      +8.5000000e-006,      +8.6140000e-005,
00155       +6.4000000e+002,      +6.6990000e-006,      +6.5670000e-005,
00156       +6.6000000e+002,      +5.4160000e-006,      +5.0430000e-005,
00157       +6.8000000e+002,      +4.4790000e-006,      +3.9030000e-005,
00158       +7.0000000e+002,      +3.7770000e-006,      +3.0470000e-005,
00159       +7.2000000e+002,      +3.2380000e-006,      +2.4020000e-005,
00160       +7.4000000e+002,      +2.8120000e-006,      +1.9130000e-005,
00161       +7.6000000e+002,      +2.4680000e-006,      +1.5400000e-005,
00162       +7.8000000e+002,      +2.1840000e-006,      +1.2540000e-005,
00163       +8.0000000e+002,      +1.9450000e-006,      +1.0330000e-005,
00164       +8.5000000e+002,      +1.4000000e-006,      +7.3000000e-006,
00165       +9.0000000e+002,      +1.0000000e-006,      +5.2000000e-006,
00166       +9.5000000e+002,      +7.8000000e-007,      +3.8000000e-006,
00167       +1.0000000e+003,      +5.8000000e-007,      +3.1000000e-006,
00168       +1.1000000e+003,      +3.5500000e-007,      +2.0500000e-006,
00169       +1.2000000e+003,      +2.3000000e-007,      +1.4000000e-006,
00170       +1.3000000e+003,      +1.4500000e-007,      +1.0000000e-006,
00171       +1.4000000e+003,      +9.1000000e-008,      +7.2000000e-007,
00172       +1.5000000e+003,      +6.7000000e-008,      +5.4500000e-007,
00173       +1.6000000e+003,      +4.5000000e-008,      +4.1500000e-007,
00174       +1.7000000e+003,      +3.3000000e-008,      +3.4000000e-007,
00175       +1.8000000e+003,      +2.2500000e-008,      +2.6500000e-007,
00176       +1.9000000e+003,      +1.6000000e-008,      +2.1000000e-007,
00177       +2.0000000e+003,      +1.2800000e-008,      +1.7000000e-007,
00178    },
00179    {   // F107 = +100.0000000
00180       +1.1000000e+002,      +7.8000000e+001,      +7.8000000e+001,
00181       +1.2000000e+002,      +2.4900000e+001,      +2.4900000e+001,
00182       +1.3000000e+002,      +8.7400000e+000,      +9.0910000e+000,
00183       +1.4000000e+002,      +4.0020000e+000,      +4.1570000e+000,
00184       +1.5000000e+002,      +2.1030000e+000,      +2.1910000e+000,
00185       +1.6000000e+002,      +1.1950000e+000,      +1.2830000e+000,
00186       +1.7000000e+002,      +7.1860000e-001,      +8.0690000e-001,
00187       +1.8000000e+002,      +4.5150000e-001,      +5.3530000e-001,
00188       +1.9000000e+002,      +2.9570000e-001,      +3.6950000e-001,
00189       +2.0000000e+002,      +1.9800000e-001,      +2.6380000e-001,
00190       +2.1000000e+002,      +1.3540000e-001,      +1.9380000e-001,
00191       +2.2000000e+002,      +9.4590000e-002,      +1.4520000e-001,
00192       +2.3000000e+002,      +6.7370000e-002,      +1.1050000e-001,
00193       +2.4000000e+002,      +4.8800000e-002,      +8.5270000e-002,
00194       +2.5000000e+002,      +3.5890000e-002,      +6.6570000e-002,
00195       +2.6000000e+002,      +2.6750000e-002,      +5.2500000e-002,
00196       +2.7000000e+002,      +2.0170000e-002,      +4.1770000e-002,
00197       +2.8000000e+002,      +1.5380000e-002,      +3.3490000e-002,
00198       +2.9000000e+002,      +1.1830000e-002,      +2.7050000e-002,
00199       +3.0000000e+002,      +9.1170000e-003,      +2.2020000e-002,
00200       +3.2000000e+002,      +5.5220000e-003,      +1.4960000e-002,
00201       +3.4000000e+002,      +3.4210000e-003,      +1.0360000e-002,
00202       +3.6000000e+002,      +2.1580000e-003,      +7.2980000e-003,
00203       +3.8000000e+002,      +1.3820000e-003,      +5.2100000e-003,
00204       +4.0000000e+002,      +8.9520000e-004,      +3.7630000e-003,
00205       +4.2000000e+002,      +5.8630000e-004,      +2.7440000e-003,
00206       +4.4000000e+002,      +3.8750000e-004,      +2.0190000e-003,
00207       +4.6000000e+002,      +2.5840000e-004,      +1.4970000e-003,
00208       +4.8000000e+002,      +1.7390000e-004,      +1.1170000e-003,
00209       +5.0000000e+002,      +1.1820000e-004,      +8.3820000e-004,
00210       +5.2000000e+002,      +8.1230000e-005,      +6.3240000e-004,
00211       +5.4000000e+002,      +5.6500000e-005,      +4.7940000e-004,
00212       +5.6000000e+002,      +3.9870000e-005,      +3.6510000e-004,
00213       +5.8000000e+002,      +2.8590000e-005,      +2.7930000e-004,
00214       +6.0000000e+002,      +2.0880000e-005,      +2.1460000e-004,
00215       +6.2000000e+002,      +1.5560000e-005,      +1.6560000e-004,
00216       +6.4000000e+002,      +1.1850000e-005,      +1.2840000e-004,
00217       +6.6000000e+002,      +9.2300000e-006,      +1.0000000e-004,
00218       +6.8000000e+002,      +7.3510000e-006,      +7.8300000e-005,
00219       +7.0000000e+002,      +5.9820000e-006,      +6.1620000e-005,
00220       +7.2000000e+002,      +4.9650000e-006,      +4.8790000e-005,
00221       +7.4000000e+002,      +4.1950000e-006,      +3.8860000e-005,
00222       +7.6000000e+002,      +3.6000000e-006,      +3.1170000e-005,
00223       +7.8000000e+002,      +3.1300000e-006,      +2.5180000e-005,
00224       +8.0000000e+002,      +2.7510000e-006,      +2.0500000e-005,
00225       +8.5000000e+002,      +2.0000000e-006,      +1.3000000e-005,
00226       +9.0000000e+002,      +1.5000000e-006,      +9.0000000e-006,
00227       +9.5000000e+002,      +1.2000000e-006,      +6.2000000e-006,
00228       +1.0000000e+003,      +9.4000000e-007,      +5.0000000e-006,
00229       +1.1000000e+003,      +5.8000000e-007,      +3.1000000e-006,
00230       +1.2000000e+003,      +3.7500000e-007,      +2.1000000e-006,
00231       +1.3000000e+003,      +2.5000000e-007,      +1.5000000e-006,
00232       +1.4000000e+003,      +1.7000000e-007,      +1.1000000e-006,
00233       +1.5000000e+003,      +1.1800000e-007,      +7.7000000e-007,
00234       +1.6000000e+003,      +8.2000000e-008,      +6.0000000e-007,
00235       +1.7000000e+003,      +6.0000000e-008,      +5.0000000e-007,
00236       +1.8000000e+003,      +4.3000000e-008,      +3.9000000e-007,
00237       +1.9000000e+003,      +3.2000000e-008,      +3.1000000e-007,
00238       +2.0000000e+003,      +2.4000000e-008,      +2.5000000e-007,
00239    },
00240    {   // F107 = +125.0000000
00241       +1.1000000e+002,      +7.8000000e+001,      +7.8000000e+001,
00242       +1.2000000e+002,      +2.4900000e+001,      +2.4900000e+001,
00243       +1.3000000e+002,      +8.5670000e+000,      +8.9200000e+000,
00244       +1.4000000e+002,      +3.9520000e+000,      +4.1130000e+000,
00245       +1.5000000e+002,      +2.1110000e+000,      +2.2020000e+000,
00246       +1.6000000e+002,      +1.2260000e+000,      +1.3140000e+000,
00247       +1.7000000e+002,      +7.5720000e-001,      +8.4110000e-001,
00248       +1.8000000e+002,      +4.8640000e-001,      +5.6720000e-001,
00249       +1.9000000e+002,      +3.2550000e-001,      +3.9890000e-001,
00250       +2.0000000e+002,      +2.2430000e-001,      +2.8890000e-001,
00251       +2.1000000e+002,      +1.5670000e-001,      +2.1590000e-001,
00252       +2.2000000e+002,      +1.1180000e-001,      +1.6440000e-001,
00253       +2.3000000e+002,      +8.1150000e-002,      +1.2720000e-001,
00254       +2.4000000e+002,      +5.9870000e-002,      +9.9780000e-002,
00255       +2.5000000e+002,      +4.4790000e-002,      +7.9130000e-002,
00256       +2.6000000e+002,      +3.3940000e-002,      +6.3360000e-002,
00257       +2.7000000e+002,      +2.6000000e-002,      +5.1160000e-002,
00258       +2.8000000e+002,      +2.0110000e-002,      +4.1630000e-002,
00259       +2.9000000e+002,      +1.5700000e-002,      +3.4090000e-002,
00260       +3.0000000e+002,      +1.2310000e-002,      +2.8090000e-002,
00261       +3.2000000e+002,      +7.6750000e-003,      +1.9530000e-002,
00262       +3.4000000e+002,      +4.8940000e-003,      +1.3850000e-002,
00263       +3.6000000e+002,      +3.1780000e-003,      +9.9760000e-003,
00264       +3.8000000e+002,      +2.0940000e-003,      +7.2820000e-003,
00265       +4.0000000e+002,      +1.3970000e-003,      +5.3760000e-003,
00266       +4.2000000e+002,      +9.6250000e-004,      +4.0330000e-003,
00267       +4.4000000e+002,      +6.5520000e-004,      +3.0340000e-003,
00268       +4.6000000e+002,      +4.4970000e-004,      +2.2990000e-003,
00269       +4.8000000e+002,      +3.1090000e-004,      +1.7540000e-003,
00270       +5.0000000e+002,      +2.1660000e-004,      +1.3460000e-003,
00271       +5.2000000e+002,      +1.5200000e-004,      +1.0380000e-003,
00272       +5.4000000e+002,      +1.0760000e-004,      +8.0430000e-004,
00273       +5.6000000e+002,      +7.6850000e-005,      +6.2600000e-004,
00274       +5.8000000e+002,      +5.5450000e-005,      +4.8920000e-004,
00275       +6.0000000e+002,      +4.0470000e-005,      +3.8380000e-004,
00276       +6.2000000e+002,      +2.9920000e-005,      +3.0220000e-004,
00277       +6.4000000e+002,      +2.2440000e-005,      +2.3880000e-004,
00278       +6.6000000e+002,      +1.7100000e-005,      +1.8940000e-004,
00279       +6.8000000e+002,      +1.3250000e-005,      +1.5070000e-004,
00280       +7.0000000e+002,      +1.0450000e-005,      +1.2040000e-004,
00281       +7.2000000e+002,      +8.3970000e-006,      +9.6580000e-005,
00282       +7.4000000e+002,      +6.8670000e-006,      +7.7770000e-005,
00283       +7.6000000e+002,      +5.7130000e-006,      +6.2890000e-005,
00284       +7.8000000e+002,      +4.8300000e-006,      +5.1090000e-005,
00285       +8.0000000e+002,      +4.1430000e-006,      +4.1700000e-005,
00286       +8.5000000e+002,      +3.1500000e-006,      +2.7000000e-005,
00287       +9.0000000e+002,      +2.2500000e-006,      +1.8000000e-005,
00288       +9.5000000e+002,      +1.7200000e-006,      +1.2000000e-005,
00289       +1.0000000e+003,      +1.4000000e-006,      +8.8000000e-006,
00290       +1.1000000e+003,      +8.5000000e-007,      +5.3000000e-006,
00291       +1.2000000e+003,      +5.4000000e-007,      +3.2000000e-006,
00292       +1.3000000e+003,      +3.8000000e-007,      +2.2500000e-006,
00293       +1.4000000e+003,      +2.8000000e-007,      +1.5000000e-006,
00294       +1.5000000e+003,      +1.9500000e-007,      +1.0300000e-006,
00295       +1.6000000e+003,      +1.3500000e-007,      +8.0000000e-007,
00296       +1.7000000e+003,      +1.0200000e-007,      +6.5000000e-007,
00297       +1.8000000e+003,      +7.4000000e-008,      +5.2000000e-007,
00298       +1.9000000e+003,      +5.6000000e-008,      +4.2500000e-007,
00299       +2.0000000e+003,      +4.4000000e-008,      +3.4000000e-007,
00300    },
00301    {   // F107 = +150.0000000
00302       +1.1000000e+002,      +7.8000000e+001,      +7.8000000e+001,
00303       +1.2000000e+002,      +2.4900000e+001,      +2.4900000e+001,
00304       +1.3000000e+002,      +8.3770000e+000,      +8.7100000e+000,
00305       +1.4000000e+002,      +3.8990000e+000,      +4.0590000e+000,
00306       +1.5000000e+002,      +2.1220000e+000,      +2.2150000e+000,
00307       +1.6000000e+002,      +1.2630000e+000,      +1.3440000e+000,
00308       +1.7000000e+002,      +8.0080000e-001,      +8.7580000e-001,
00309       +1.8000000e+002,      +5.2830000e-001,      +6.0100000e-001,
00310       +1.9000000e+002,      +3.6170000e-001,      +4.2970000e-001,
00311       +2.0000000e+002,      +2.5570000e-001,      +3.1620000e-001,
00312       +2.1000000e+002,      +1.8390000e-001,      +2.3960000e-001,
00313       +2.2000000e+002,      +1.3410000e-001,      +1.8530000e-001,
00314       +2.3000000e+002,      +9.9490000e-002,      +1.4550000e-001,
00315       +2.4000000e+002,      +7.4880000e-002,      +1.1570000e-001,
00316       +2.5000000e+002,      +5.7090000e-002,      +9.3080000e-002,
00317       +2.6000000e+002,      +4.4030000e-002,      +7.5550000e-002,
00318       +2.7000000e+002,      +3.4300000e-002,      +6.1820000e-002,
00319       +2.8000000e+002,      +2.6970000e-002,      +5.0950000e-002,
00320       +2.9000000e+002,      +2.1390000e-002,      +4.2260000e-002,
00321       +3.0000000e+002,      +1.7080000e-002,      +3.5260000e-002,
00322       +3.2000000e+002,      +1.0990000e-002,      +2.5110000e-002,
00323       +3.4000000e+002,      +7.2140000e-003,      +1.8190000e-002,
00324       +3.6000000e+002,      +4.8240000e-003,      +1.3370000e-002,
00325       +3.8000000e+002,      +3.2740000e-003,      +9.9550000e-003,
00326       +4.0000000e+002,      +2.2490000e-003,      +7.4920000e-003,
00327       +4.2000000e+002,      +1.5580000e-003,      +5.6840000e-003,
00328       +4.4000000e+002,      +1.0910000e-003,      +4.3550000e-003,
00329       +4.6000000e+002,      +7.7010000e-004,      +3.3620000e-003,
00330       +4.8000000e+002,      +5.4740000e-004,      +2.6120000e-003,
00331       +5.0000000e+002,      +3.9160000e-004,      +2.0420000e-003,
00332       +5.2000000e+002,      +2.8190000e-004,      +1.6050000e-003,
00333       +5.4000000e+002,      +2.0420000e-004,      +1.2670000e-003,
00334       +5.6000000e+002,      +1.4880000e-004,      +1.0050000e-003,
00335       +5.8000000e+002,      +1.0920000e-004,      +7.9970000e-004,
00336       +6.0000000e+002,      +8.0700000e-005,      +6.3900000e-004,
00337       +6.2000000e+002,      +6.0120000e-005,      +5.1230000e-004,
00338       +6.4000000e+002,      +4.5190000e-005,      +4.1210000e-004,
00339       +6.6000000e+002,      +3.4300000e-005,      +3.3250000e-004,
00340       +6.8000000e+002,      +2.6320000e-005,      +2.6910000e-004,
00341       +7.0000000e+002,      +2.0430000e-005,      +2.1850000e-004,
00342       +7.2000000e+002,      +1.6070000e-005,      +1.7790000e-004,
00343       +7.4000000e+002,      +1.2810000e-005,      +1.4520000e-004,
00344       +7.6000000e+002,      +1.0360000e-005,      +1.1900000e-004,
00345       +7.8000000e+002,      +8.4960000e-006,      +9.7760000e-005,
00346       +8.0000000e+002,      +7.0690000e-006,      +8.0590000e-005,
00347       +8.5000000e+002,      +4.8000000e-006,      +5.5000000e-005,
00348       +9.0000000e+002,      +3.3000000e-006,      +3.7000000e-005,
00349       +9.5000000e+002,      +2.4500000e-006,      +2.4000000e-005,
00350       +1.0000000e+003,      +1.9000000e-006,      +1.7000000e-005,
00351       +1.1000000e+003,      +1.1800000e-006,      +8.7000000e-006,
00352       +1.2000000e+003,      +7.5000000e-007,      +4.8000000e-006,
00353       +1.3000000e+003,      +5.3000000e-007,      +3.2000000e-006,
00354       +1.4000000e+003,      +4.1000000e-007,      +2.0000000e-006,
00355       +1.5000000e+003,      +2.9000000e-007,      +1.3500000e-006,
00356       +1.6000000e+003,      +2.0000000e-007,      +9.5000000e-007,
00357       +1.7000000e+003,      +1.6000000e-007,      +7.7000000e-007,
00358       +1.8000000e+003,      +1.2000000e-007,      +6.3000000e-007,
00359       +1.9000000e+003,      +9.6000000e-008,      +5.2000000e-007,
00360       +2.0000000e+003,      +7.3000000e-008,      +4.4000000e-007,
00361    },
00362    {   // F107 = +175.0000000
00363       +1.1000000e+002,      +7.8000000e+001,      +7.8000000e+001,
00364       +1.2000000e+002,      +2.4900000e+001,      +2.4900000e+001,
00365       +1.3000000e+002,      +8.2390000e+000,      +8.5770000e+000,
00366       +1.4000000e+002,      +3.8580000e+000,      +4.0210000e+000,
00367       +1.5000000e+002,      +2.1230000e+000,      +2.2180000e+000,
00368       +1.6000000e+002,      +1.2830000e+000,      +1.3630000e+000,
00369       +1.7000000e+002,      +8.2460000e-001,      +8.9970000e-001,
00370       +1.8000000e+002,      +5.5380000e-001,      +6.2510000e-001,
00371       +1.9000000e+002,      +3.8480000e-001,      +4.5140000e-001,
00372       +2.0000000e+002,      +2.7600000e-001,      +3.3620000e-001,
00373       +2.1000000e+002,      +2.0190000e-001,      +2.5690000e-001,
00374       +2.2000000e+002,      +1.4950000e-001,      +2.0080000e-001,
00375       +2.3000000e+002,      +1.1240000e-001,      +1.5930000e-001,
00376       +2.4000000e+002,      +8.5790000e-002,      +1.2800000e-001,
00377       +2.5000000e+002,      +6.6260000e-002,      +1.0400000e-001,
00378       +2.6000000e+002,      +5.1740000e-002,      +8.5220000e-002,
00379       +2.7000000e+002,      +4.0790000e-002,      +7.0410000e-002,
00380       +2.8000000e+002,      +3.2440000e-002,      +5.8580000e-002,
00381       +2.9000000e+002,      +2.6000000e-002,      +4.9040000e-002,
00382       +3.0000000e+002,      +2.0870000e-002,      +4.1310000e-002,
00383       +3.2000000e+002,      +1.3680000e-002,      +2.9910000e-002,
00384       +3.4000000e+002,      +9.1570000e-003,      +2.2010000e-002,
00385       +3.6000000e+002,      +6.2380000e-003,      +1.6430000e-002,
00386       +3.8000000e+002,      +4.3130000e-003,      +1.2410000e-002,
00387       +4.0000000e+002,      +3.0190000e-003,      +9.4750000e-003,
00388       +4.2000000e+002,      +2.1340000e-003,      +7.2930000e-003,
00389       +4.4000000e+002,      +1.5230000e-003,      +5.6650000e-003,
00390       +4.6000000e+002,      +1.0960000e-003,      +4.4330000e-003,
00391       +4.8000000e+002,      +7.9340000e-004,      +3.4910000e-003,
00392       +5.0000000e+002,      +5.7820000e-004,      +2.7660000e-003,
00393       +5.2000000e+002,      +4.2370000e-004,      +2.2030000e-003,
00394       +5.4000000e+002,      +3.1220000e-004,      +1.7630000e-003,
00395       +5.6000000e+002,      +2.3130000e-004,      +1.4170000e-003,
00396       +5.8000000e+002,      +1.7230000e-004,      +1.1430000e-003,
00397       +6.0000000e+002,      +1.2900000e-004,      +9.2580000e-004,
00398       +6.2000000e+002,      +9.7240000e-005,      +7.5230000e-004,
00399       +6.4000000e+002,      +7.3740000e-005,      +6.1330000e-004,
00400       +6.6000000e+002,      +5.6310000e-005,      +5.0140000e-004,
00401       +6.8000000e+002,      +4.3340000e-005,      +4.1110000e-004,
00402       +7.0000000e+002,      +3.3630000e-005,      +3.3800000e-004,
00403       +7.2000000e+002,      +2.6340000e-005,      +2.7870000e-004,
00404       +7.4000000e+002,      +2.0840000e-005,      +2.3030000e-004,
00405       +7.6000000e+002,      +1.6660000e-005,      +1.9080000e-004,
00406       +7.8000000e+002,      +1.3470000e-005,      +1.5850000e-004,
00407       +8.0000000e+002,      +1.1030000e-005,      +1.3200000e-004,
00408       +8.5000000e+002,      +7.8000000e-006,      +9.2000000e-005,
00409       +9.0000000e+002,      +5.1000000e-006,      +6.3000000e-005,
00410       +9.5000000e+002,      +3.4500000e-006,      +4.1000000e-005,
00411       +1.0000000e+003,      +2.6000000e-006,      +2.8500000e-005,
00412       +1.1000000e+003,      +1.6000000e-006,      +1.4000000e-005,
00413       +1.2000000e+003,      +1.0000000e-006,      +7.4000000e-006,
00414       +1.3000000e+003,      +7.0000000e-007,      +4.3000000e-006,
00415       +1.4000000e+003,      +5.4300000e-007,      +2.6000000e-006,
00416       +1.5000000e+003,      +4.0000000e-007,      +1.7000000e-006,
00417       +1.6000000e+003,      +2.9000000e-007,      +1.2000000e-006,
00418       +1.7000000e+003,      +2.3000000e-007,      +9.4000000e-007,
00419       +1.8000000e+003,      +1.7500000e-007,      +7.4000000e-007,
00420       +1.9000000e+003,      +1.4000000e-007,      +6.0000000e-007,
00421       +2.0000000e+003,      +1.0900000e-007,      +5.2000000e-007,
00422    },
00423    {   // F107 = +200.0000000
00424       +1.1000000e+002,      +7.8000000e+001,      +7.8000000e+001,
00425       +1.2000000e+002,      +2.4900000e+001,      +2.4900000e+001,
00426       +1.3000000e+002,      +8.0680000e+000,      +8.3810000e+000,
00427       +1.4000000e+002,      +3.8110000e+000,      +3.9640000e+000,
00428       +1.5000000e+002,      +2.1300000e+000,      +2.2220000e+000,
00429       +1.6000000e+002,      +1.3130000e+000,      +1.3860000e+000,
00430       +1.7000000e+002,      +8.5680000e-001,      +9.2780000e-001,
00431       +1.8000000e+002,      +5.9370000e-001,      +6.5310000e-001,
00432       +1.9000000e+002,      +4.2380000e-001,      +4.7720000e-001,
00433       +2.0000000e+002,      +3.1000000e-001,      +3.5990000e-001,
00434       +2.1000000e+002,      +2.2970000e-001,      +2.7780000e-001,
00435       +2.2000000e+002,      +1.7320000e-001,      +2.1940000e-001,
00436       +2.3000000e+002,      +1.3260000e-001,      +1.7590000e-001,
00437       +2.4000000e+002,      +1.0290000e-001,      +1.4280000e-001,
00438       +2.5000000e+002,      +8.0730000e-002,      +1.1710000e-001,
00439       +2.6000000e+002,      +6.3980000e-002,      +9.6890000e-002,
00440       +2.7000000e+002,      +5.1170000e-002,      +8.0800000e-002,
00441       +2.8000000e+002,      +4.1240000e-002,      +6.7840000e-002,
00442       +2.9000000e+002,      +3.3490000e-002,      +5.7350000e-002,
00443       +3.0000000e+002,      +2.7350000e-002,      +4.8850000e-002,
00444       +3.2000000e+002,      +1.8380000e-002,      +3.5950000e-002,
00445       +3.4000000e+002,      +1.2600000e-002,      +2.6870000e-002,
00446       +3.6000000e+002,      +8.7780000e-003,      +2.0350000e-002,
00447       +3.8000000e+002,      +6.2050000e-003,      +1.5600000e-002,
00448       +4.0000000e+002,      +4.4410000e-003,      +1.2070000e-002,
00449       +4.2000000e+002,      +3.2100000e-003,      +9.4170000e-003,
00450       +4.4000000e+002,      +2.3430000e-003,      +7.4110000e-003,
00451       +4.6000000e+002,      +1.7230000e-003,      +5.8740000e-003,
00452       +4.8000000e+002,      +1.2760000e-003,      +4.6860000e-003,
00453       +5.0000000e+002,      +9.5060000e-004,      +3.7600000e-003,
00454       +5.2000000e+002,      +7.1220000e-004,      +3.0330000e-003,
00455       +5.4000000e+002,      +5.3620000e-004,      +2.4580000e-003,
00456       +5.6000000e+002,      +4.0570000e-004,      +2.0010000e-003,
00457       +5.8000000e+002,      +3.0830000e-004,      +1.6350000e-003,
00458       +6.0000000e+002,      +2.3540000e-004,      +1.3410000e-003,
00459       +6.2000000e+002,      +1.8050000e-004,      +1.1040000e-003,
00460       +6.4000000e+002,      +1.3900000e-004,      +9.1140000e-004,
00461       +6.6000000e+002,      +1.0760000e-004,      +7.5470000e-004,
00462       +6.8000000e+002,      +8.3720000e-005,      +6.2670000e-004,
00463       +7.0000000e+002,      +6.5490000e-005,      +5.2180000e-004,
00464       +7.2000000e+002,      +5.1530000e-005,      +4.3550000e-004,
00465       +7.4000000e+002,      +4.0800000e-005,      +3.6430000e-004,
00466       +7.6000000e+002,      +3.2530000e-005,      +3.0550000e-004,
00467       +7.8000000e+002,      +2.6130000e-005,      +2.5670000e-004,
00468       +8.0000000e+002,      +2.1160000e-005,      +2.1620000e-004,
00469       +8.5000000e+002,      +1.3000000e-005,      +1.4000000e-004,
00470       +9.0000000e+002,      +7.9000000e-006,      +9.4000000e-005,
00471       +9.5000000e+002,      +5.0000000e-006,      +6.4000000e-005,
00472       +1.0000000e+003,      +3.5000000e-006,      +4.4000000e-005,
00473       +1.1000000e+003,      +2.1000000e-006,      +2.2000000e-005,
00474       +1.2000000e+003,      +1.3000000e-006,      +1.1000000e-005,
00475       +1.3000000e+003,      +9.0000000e-007,      +6.2000000e-006,
00476       +1.4000000e+003,      +6.8000000e-007,      +3.6000000e-006,
00477       +1.5000000e+003,      +5.0000000e-007,      +2.2500000e-006,
00478       +1.6000000e+003,      +3.7000000e-007,      +1.5500000e-006,
00479       +1.7000000e+003,      +3.0000000e-007,      +1.2000000e-006,
00480       +1.8000000e+003,      +2.3200000e-007,      +9.0000000e-007,
00481       +1.9000000e+003,      +1.8200000e-007,      +7.3000000e-007,
00482       +2.0000000e+003,      +1.4500000e-007,      +6.0000000e-007,
00483    },
00484    {   // F107 = +225.0000000
00485       +1.1000000e+002,      +7.8000000e+001,      +7.8000000e+001,
00486       +1.2000000e+002,      +2.4900000e+001,      +2.4900000e+001,
00487       +1.3000000e+002,      +7.9560000e+000,      +8.2620000e+000,
00488       +1.4000000e+002,      +3.7770000e+000,      +3.9290000e+000,
00489       +1.5000000e+002,      +2.1280000e+000,      +2.2210000e+000,
00490       +1.6000000e+002,      +1.3240000e+000,      +1.3970000e+000,
00491       +1.7000000e+002,      +8.7820000e-001,      +9.4480000e-001,
00492       +1.8000000e+002,      +6.1190000e-001,      +6.7050000e-001,
00493       +1.9000000e+002,      +4.3800000e-001,      +4.9380000e-001,
00494       +2.0000000e+002,      +3.2300000e-001,      +3.7510000e-001,
00495       +2.1000000e+002,      +2.4410000e-001,      +2.9130000e-001,
00496       +2.2000000e+002,      +1.8680000e-001,      +2.3170000e-001,
00497       +2.3000000e+002,      +1.4450000e-001,      +1.8700000e-001,
00498       +2.4000000e+002,      +1.1330000e-001,      +1.5280000e-001,
00499       +2.5000000e+002,      +8.9760000e-002,      +1.2620000e-001,
00500       +2.6000000e+002,      +7.1820000e-002,      +1.0510000e-001,
00501       +2.7000000e+002,      +5.7950000e-002,      +8.8200000e-002,
00502       +2.8000000e+002,      +4.7130000e-002,      +7.4520000e-002,
00503       +2.9000000e+002,      +3.8500000e-002,      +6.3470000e-002,
00504       +3.0000000e+002,      +3.1540000e-002,      +5.4390000e-002,
00505       +3.2000000e+002,      +2.1520000e-002,      +4.0480000e-002,
00506       +3.4000000e+002,      +1.4960000e-002,      +3.0590000e-002,
00507       +3.6000000e+002,      +1.0570000e-002,      +2.3420000e-002,
00508       +3.8000000e+002,      +7.5690000e-003,      +1.8130000e-002,
00509       +4.0000000e+002,      +5.4870000e-003,      +1.4170000e-002,
00510       +4.2000000e+002,      +4.0140000e-003,      +1.1160000e-002,
00511       +4.4000000e+002,      +2.9670000e-003,      +8.8630000e-003,
00512       +4.6000000e+002,      +2.2100000e-003,      +7.0900000e-003,
00513       +4.8000000e+002,      +1.6570000e-003,      +5.7070000e-003,
00514       +5.0000000e+002,      +1.2510000e-003,      +4.6200000e-003,
00515       +5.2000000e+002,      +9.4890000e-004,      +3.7590000e-003,
00516       +5.4000000e+002,      +7.2360000e-004,      +3.0740000e-003,
00517       +5.6000000e+002,      +5.5430000e-004,      +2.5240000e-003,
00518       +5.8000000e+002,      +4.2640000e-004,      +2.0810000e-003,
00519       +6.0000000e+002,      +3.2940000e-004,      +1.7220000e-003,
00520       +6.2000000e+002,      +2.5550000e-004,      +1.4300000e-003,
00521       +6.4000000e+002,      +1.9890000e-004,      +1.1910000e-003,
00522       +6.6000000e+002,      +1.5550000e-004,      +9.9500000e-004,
00523       +6.8000000e+002,      +1.2210000e-004,      +8.3350000e-004,
00524       +7.0000000e+002,      +9.6310000e-005,      +7.0000000e-004,
00525       +7.2000000e+002,      +7.6300000e-005,      +5.8930000e-004,
00526       +7.4000000e+002,      +6.0740000e-005,      +4.9730000e-004,
00527       +7.6000000e+002,      +4.8620000e-005,      +4.2060000e-004,
00528       +7.8000000e+002,      +3.9130000e-005,      +3.5640000e-004,
00529       +8.0000000e+002,      +3.1690000e-005,      +3.0270000e-004,
00530       +8.5000000e+002,      +2.0000000e-005,      +2.0000000e-004,
00531       +9.0000000e+002,      +1.2000000e-005,      +1.3500000e-004,
00532       +9.5000000e+002,      +7.7000000e-006,      +9.3000000e-005,
00533       +1.0000000e+003,      +5.1000000e-006,      +6.8000000e-005,
00534       +1.1000000e+003,      +2.8000000e-006,      +3.4000000e-005,
00535       +1.2000000e+003,      +1.6800000e-006,      +1.7000000e-005,
00536       +1.3000000e+003,      +1.1000000e-006,      +9.4000000e-006,
00537       +1.4000000e+003,      +8.1000000e-007,      +5.2000000e-006,
00538       +1.5000000e+003,      +6.0000000e-007,      +3.2000000e-006,
00539       +1.6000000e+003,      +4.5000000e-007,      +2.2000000e-006,
00540       +1.7000000e+003,      +3.6000000e-007,      +1.6000000e-006,
00541       +1.8000000e+003,      +2.8000000e-007,      +1.2000000e-006,
00542       +1.9000000e+003,      +2.2500000e-007,      +9.1000000e-007,
00543       +2.0000000e+003,      +1.7800000e-007,      +7.2000000e-007,
00544    },
00545    {   // F107 = +250.0000000
00546       +1.1000000e+002,      +7.8000000e+001,      +7.8000000e+001,
00547       +1.2000000e+002,      +2.4900000e+001,      +2.4900000e+001,
00548       +1.3000000e+002,      +7.8320000e+000,      +8.1210000e+000,
00549       +1.4000000e+002,      +3.7420000e+000,      +3.8850000e+000,
00550       +1.5000000e+002,      +2.1300000e+000,      +2.2200000e+000,
00551       +1.6000000e+002,      +1.3400000e+000,      +1.4100000e+000,
00552       +1.7000000e+002,      +9.0040000e-001,      +9.6240000e-001,
00553       +1.8000000e+002,      +6.3500000e-001,      +6.8890000e-001,
00554       +1.9000000e+002,      +4.6120000e-001,      +5.1190000e-001,
00555       +2.0000000e+002,      +3.4400000e-001,      +3.9040000e-001,
00556       +2.1000000e+002,      +2.6270000e-001,      +3.0640000e-001,
00557       +2.2000000e+002,      +2.0400000e-001,      +2.4510000e-001,
00558       +2.3000000e+002,      +1.5970000e-001,      +1.9910000e-001,
00559       +2.4000000e+002,      +1.2660000e-001,      +1.6380000e-001,
00560       +2.5000000e+002,      +1.0140000e-001,      +1.3600000e-001,
00561       +2.6000000e+002,      +8.1960000e-002,      +1.1400000e-001,
00562       +2.7000000e+002,      +6.6790000e-002,      +9.6270000e-002,
00563       +2.8000000e+002,      +5.4820000e-002,      +8.1950000e-002,
00564       +2.9000000e+002,      +4.5080000e-002,      +7.0250000e-002,
00565       +3.0000000e+002,      +3.7270000e-002,      +6.0530000e-002,
00566       +3.2000000e+002,      +2.5860000e-002,      +4.5540000e-002,
00567       +3.4000000e+002,      +1.8270000e-002,      +3.4770000e-002,
00568       +3.6000000e+002,      +1.3100000e-002,      +2.6890000e-002,
00569       +3.8000000e+002,      +9.5190000e-003,      +2.1010000e-002,
00570       +4.0000000e+002,      +6.9970000e-003,      +1.6580000e-002,
00571       +4.2000000e+002,      +5.1910000e-003,      +1.3170000e-002,
00572       +4.4000000e+002,      +3.8890000e-003,      +1.0560000e-002,
00573       +4.6000000e+002,      +2.9360000e-003,      +8.5180000e-003,
00574       +4.8000000e+002,      +2.2320000e-003,      +6.9150000e-003,
00575       +5.0000000e+002,      +1.7080000e-003,      +5.6450000e-003,
00576       +5.2000000e+002,      +1.3140000e-003,      +4.6310000e-003,
00577       +5.4000000e+002,      +1.0150000e-003,      +3.8180000e-003,
00578       +5.6000000e+002,      +7.8850000e-004,      +3.1610000e-003,
00579       +5.8000000e+002,      +6.1490000e-004,      +2.6270000e-003,
00580       +6.0000000e+002,      +4.8130000e-004,      +2.1920000e-003,
00581       +6.2000000e+002,      +3.7820000e-004,      +1.8350000e-003,
00582       +6.4000000e+002,      +2.9820000e-004,      +1.5410000e-003,
00583       +6.6000000e+002,      +2.3600000e-004,      +1.2980000e-003,
00584       +6.8000000e+002,      +1.8740000e-004,      +1.0960000e-003,
00585       +7.0000000e+002,      +1.4940000e-004,      +9.2810000e-004,
00586       +7.2000000e+002,      +1.1950000e-004,      +7.8780000e-004,
00587       +7.4000000e+002,      +9.5950000e-005,      +6.7020000e-004,
00588       +7.6000000e+002,      +7.7350000e-005,      +5.7140000e-004,
00589       +7.8000000e+002,      +6.2620000e-005,      +4.8810000e-004,
00590       +8.0000000e+002,      +5.0920000e-005,      +4.1790000e-004,
00591       +8.5000000e+002,      +3.1000000e-005,      +2.7000000e-004,
00592       +9.0000000e+002,      +1.8000000e-005,      +1.8000000e-004,
00593       +9.5000000e+002,      +1.1500000e-005,      +1.3000000e-004,
00594       +1.0000000e+003,      +7.6000000e-006,      +9.6000000e-005,
00595       +1.1000000e+003,      +3.8000000e-006,      +5.1000000e-005,
00596       +1.2000000e+003,      +2.1000000e-006,      +2.5000000e-005,
00597       +1.3000000e+003,      +1.3200000e-006,      +1.4000000e-005,
00598       +1.4000000e+003,      +9.4000000e-007,      +8.1000000e-006,
00599       +1.5000000e+003,      +7.0000000e-007,      +5.0000000e-006,
00600       +1.6000000e+003,      +5.2000000e-007,      +3.4500000e-006,
00601       +1.7000000e+003,      +4.1000000e-007,      +2.4000000e-006,
00602       +1.8000000e+003,      +3.3000000e-007,      +1.6200000e-006,
00603       +1.9000000e+003,      +2.6000000e-007,      +1.2000000e-006,
00604       +2.0000000e+003,      +2.1000000e-007,      +9.4000000e-007,
00605    },
00606    {   // F107 = +275.0000000
00607       +1.1000000e+002,      +7.8000000e+001,      +7.8000000e+001,
00608       +1.2000000e+002,      +2.4900000e+001,      +2.4900000e+001,
00609       +1.3000000e+002,      +7.7170000e+000,      +7.9840000e+000,
00610       +1.4000000e+002,      +3.7100000e+000,      +3.8410000e+000,
00611       +1.5000000e+002,      +2.1320000e+000,      +2.2150000e+000,
00612       +1.6000000e+002,      +1.3550000e+000,      +1.4200000e+000,
00613       +1.7000000e+002,      +9.2070000e-001,      +9.7750000e-001,
00614       +1.8000000e+002,      +6.5630000e-001,      +7.0520000e-001,
00615       +1.9000000e+002,      +4.8310000e-001,      +5.2800000e-001,
00616       +2.0000000e+002,      +3.6440000e-001,      +4.0640000e-001,
00617       +2.1000000e+002,      +2.8130000e-001,      +3.2010000e-001,
00618       +2.2000000e+002,      +2.2100000e-001,      +2.5740000e-001,
00619       +2.3000000e+002,      +1.7500000e-001,      +2.1020000e-001,
00620       +2.4000000e+002,      +1.4020000e-001,      +1.7370000e-001,
00621       +2.5000000e+002,      +1.1350000e-001,      +1.4510000e-001,
00622       +2.6000000e+002,      +9.2740000e-002,      +1.2220000e-001,
00623       +2.7000000e+002,      +7.6130000e-002,      +1.0380000e-001,
00624       +2.8000000e+002,      +6.2790000e-002,      +8.8910000e-002,
00625       +2.9000000e+002,      +5.2100000e-002,      +7.6560000e-002,
00626       +3.0000000e+002,      +4.3460000e-002,      +6.6250000e-002,
00627       +3.2000000e+002,      +3.0670000e-002,      +5.0260000e-002,
00628       +3.4000000e+002,      +2.2010000e-002,      +3.8690000e-002,
00629       +3.6000000e+002,      +1.6020000e-002,      +3.0150000e-002,
00630       +3.8000000e+002,      +1.1810000e-002,      +2.3750000e-002,
00631       +4.0000000e+002,      +8.8040000e-003,      +1.8870000e-002,
00632       +4.2000000e+002,      +6.6200000e-003,      +1.5110000e-002,
00633       +4.4000000e+002,      +5.0250000e-003,      +1.2190000e-002,
00634       +4.6000000e+002,      +3.8440000e-003,      +9.9060000e-003,
00635       +4.8000000e+002,      +2.9610000e-003,      +8.0910000e-003,
00636       +5.0000000e+002,      +2.2950000e-003,      +6.6540000e-003,
00637       +5.2000000e+002,      +1.7880000e-003,      +5.4970000e-003,
00638       +5.4000000e+002,      +1.4000000e-003,      +4.5610000e-003,
00639       +5.6000000e+002,      +1.1020000e-003,      +3.8010000e-003,
00640       +5.8000000e+002,      +8.7020000e-004,      +3.1800000e-003,
00641       +6.0000000e+002,      +6.9000000e-004,      +2.6710000e-003,
00642       +6.2000000e+002,      +5.4910000e-004,      +2.2510000e-003,
00643       +6.4000000e+002,      +4.3840000e-004,      +1.9020000e-003,
00644       +6.6000000e+002,      +3.5120000e-004,      +1.6130000e-003,
00645       +6.8000000e+002,      +2.8220000e-004,      +1.3710000e-003,
00646       +7.0000000e+002,      +2.2750000e-004,      +1.1690000e-003,
00647       +7.2000000e+002,      +1.8400000e-004,      +9.9840000e-004,
00648       +7.4000000e+002,      +1.4920000e-004,      +8.5500000e-004,
00649       +7.6000000e+002,      +1.2140000e-004,      +7.3380000e-004,
00650       +7.8000000e+002,      +9.9120000e-005,      +6.3100000e-004,
00651       +8.0000000e+002,      +8.1190000e-005,      +5.4370000e-004,
00652       +8.5000000e+002,      +4.4000000e-005,      +3.6500000e-004,
00653       +9.0000000e+002,      +2.7000000e-005,      +2.4000000e-004,
00654       +9.5000000e+002,      +1.7000000e-005,      +1.7500000e-004,
00655       +1.0000000e+003,      +1.1500000e-005,      +1.3000000e-004,
00656       +1.1000000e+003,      +5.3000000e-006,      +7.3000000e-005,
00657       +1.2000000e+003,      +2.6500000e-006,      +3.8000000e-005,
00658       +1.3000000e+003,      +1.5500000e-006,      +2.2000000e-005,
00659       +1.4000000e+003,      +1.0800000e-006,      +1.3500000e-005,
00660       +1.5000000e+003,      +8.0000000e-007,      +8.4000000e-006,
00661       +1.6000000e+003,      +5.8000000e-007,      +5.8000000e-006,
00662       +1.7000000e+003,      +4.6500000e-007,      +3.8000000e-006,
00663       +1.8000000e+003,      +3.6500000e-007,      +2.4000000e-006,
00664       +1.9000000e+003,      +2.9000000e-007,      +1.7000000e-006,
00665       +2.0000000e+003,      +2.3000000e-007,      +1.2500000e-006,
00666    } };
00667 
00668       // Constructor
00669    HarrisPriesterDrag::HarrisPriesterDrag()
00670       : workingF107(157.0)
00671    {
00672       init();
00673    }
00674 
00675    
00676    void HarrisPriesterDrag::init()
00677    {
00678 
00679       // load coefficient to easy accessing
00680       const int arrayF107[10] = {65, 75, 100, 125, 150, 175, 200, 225, 250, 275};
00681       for(int i = 0; i< 10; i++)
00682       {
00683          int f107 = arrayF107[i];
00684 
00685          Matrix<double> hpc(59,3,0.0);
00686          hpc= &hpcoef[i][0];
00687 
00688          hpCoeficient[f107] = hpc;
00689       }
00690       
00691    }  // End of method 'HarrisPriesterDrag::init()'
00692 
00693 
00694    Matrix<double> HarrisPriesterDrag::getDensityCoeficentsByF107(double f107)
00695    {
00696       map<int, Matrix<double> >::iterator itL,itH;
00697       
00698       itL = hpCoeficient.begin();
00699 
00700       map<int, Matrix<double> >::iterator it;
00701       for( it = hpCoeficient.begin(); it != hpCoeficient.end(); it++)
00702       {
00703          if( f107 >= it->first ) itL = it;
00704       }
00705       
00706       itH = itL;
00707       itH++;
00708 
00709       if( itH == hpCoeficient.end() )
00710       {
00711          itH = itL;
00712          itL--;
00713       }
00714 
00715       Matrix<double> out(59,3,0.0);
00716       for(int i=0; i<59; i++)
00717       {
00718          // H
00719          out[i][0] = itL->second[i][0];
00720 
00721          // m
00722          out[i][1] = itL->second[i][1] 
00723                    + (itH->second[i][1]-itL->second[i][1])
00724                       *(f107-itL->first)/(itH->first-itL->first);
00725 
00726          // M
00727          out[i][2] = itL->second[i][2] 
00728                    + (itH->second[i][2]-itL->second[i][2])
00729                       *(f107-itL->first)/(itH->first-itL->first);
00730       }
00731 
00732       return out;
00733 
00734    }  // End of method 'HarrisPriesterDrag::getDensityCoeficentsByF107()'
00735 
00736 
00737       // do some test here
00738    void HarrisPriesterDrag::test()
00739    {
00740       cout<<"testing HarrisPriesterDrag"<<endl;
00741       
00742       IERS::loadSTKFile("InputData\\EOP-v1.1.txt");
00743       ReferenceFrames::setJPLEphFile("InputData\\DE405\\jplde405");
00744 
00745       Vector<double> r(3),v(3);
00746       r(0)=-4453783.586;
00747       r(1)=-5038203.756;
00748       r(2)=-426384.456;
00749 
00750       v(0) =  3831.888;
00751       v(1) = -2887.221;
00752       v(2) = -6.018232;
00753       
00754       EarthBody body;
00755       UTCTime t;
00756       t.setMJD(53157.5);
00757 
00758       Spacecraft sc;
00759       sc.setDragArea(20.0);
00760       sc.setDragCoeff(2.2);
00761       sc.setDryMass(1000.0);
00762 
00763       Vector<double> rv(6,0.0);
00764       Vector<double> p(0,0);
00765       for(int i=0;i<3;i++)
00766       {
00767          rv(i) = r(i);
00768          rv(i+3) = v(i);
00769       }
00770       sc.initStateVector(rv);
00771 
00772       double den = computeDensity(t,body,r,v);
00773       doCompute(t,body,sc);
00774       
00775       Vector<double> accl = getAccel();
00776       
00777       double ax = accl(0);
00778       double ay = accl(1);
00779       double az = accl(2);
00780 
00781       int a = 0;
00782    }
00783    
00784    void HarrisPriesterDrag::updateF107(double f107)
00785    {
00786       workingF107 = f107;
00787       workingDens = getDensityCoeficentsByF107(workingF107);
00788    }
00789 
00790       /* Abstract class requires the subclass to compute the atmospheric density.
00791        * @param utc epoch in UTC
00792        * @param rb  EarthRef object.
00793        * @param r   Position vector.
00794        * @param v   Velocity vector
00795        * @return Atmospheric density in kg/m^3
00796        */
00797    double HarrisPriesterDrag::computeDensity( UTCTime utc, 
00798                                               EarthBody& rb, 
00799                                               Vector<double> r, 
00800                                               Vector<double> v)
00801    {
00802       double density = 0.0;
00803       
00804       // Get the J2000 to TOD transformation
00805       Matrix<double> N = ReferenceFrames::J2kToTODMatrix(utc);
00806 
00807       // Debuging
00808       /*
00809       double nn[3][3]={ {0.9999994803, -0.0009350126, -0.0004063480},
00810       {0.0009349995, 0.9999995624, -0.0000322758},
00811       {0.0004063780, 0.0000318958, 0.9999999169}};
00812       
00813       N = &nn[0][0];
00814 
00815       
00816       cout<<fixed<<setprecision(6);
00817       //cout<<workingDens<<endl;
00818       */
00819 
00820       // Transform r from J2000 to TOD
00821       Vector<double> r_tod = N * r;
00822 
00823       double rmag = norm(r_tod);
00824       
00825       //* Satellite true altitude
00826       Position pos(r_tod(0), r_tod(1), r_tod(2), Position::Cartesian);
00827       double alt = pos.getAltitude()/1000.0;      // km
00828       
00829       if ( alt >= upper_limit || alt <= lower_limit ) 
00830       { 
00831          //return 0.0;
00832 
00833          string msg = "HarrisPriesterDrag is good for 100.0 km t0 2000.0 km"
00834             + string("the altitude you try is ")
00835             + StringUtils::asString(alt) + " km!";
00836          
00837          Exception e(msg);
00838          
00839          //GPSTK_THROW(e);
00840       }
00841 
00842       Vector<double> r_Sun = ReferenceFrames::getJ2kPosition( utc.asTDB(),
00843                                                               SolarSystem::Sun);
00844 
00845       // get coefficients for this F107
00846       //updateF107(std::pow(149597870.0/norm(r_Sun),2)*dailyF107);
00847       updateF107(averageF107);
00848 
00849       // Debuging
00850       /*
00851       alt = 360.01323431364915;
00852       cout<<r_Sun<<endl;
00853       double rr[3] = {4.87202078904524E7,       1.318213179104784E8,    5.71498291483194E7};
00854       r_Sun = &rr[0];
00855       */
00856 
00857       double ra_Sun  = std::atan2( r_Sun(1), r_Sun(0));
00858       double dec_Sun = std::atan2( r_Sun(2), 
00859                                    std::sqrt( 
00860                                      std::pow(r_Sun(0),2) + std::pow(r_Sun(1),2)
00861                                      ) );
00862 
00863         //* Unit vector u towards the apex of the diurnal bulge
00864         //* in inertial geocentric coordinates
00865       double c_dec = std::cos(dec_Sun);
00866       
00867 
00868       Vector<double> u(3,0.0);      // Apex of diurnal bulge
00869       u(0) = c_dec * std::cos(ra_Sun + ra_lag);
00870       u(1) = c_dec * std::sin(ra_Sun + ra_lag);
00871       u(2) = std::sin(dec_Sun);
00872 
00873       //* Cosine of half angle between satellite position vector and
00874       //* apex of diurnal bulge
00875       double c_psi2 = (0.5 + 0.5 * dot(r,u)/norm(r));
00876       
00877       int ih = 0;
00878 
00879       // index search
00880       for(int i = 0; i < 59-1; i++)
00881       {
00882          if(alt >= workingDens[i][0] && alt < workingDens[i+1][0])
00883          {
00884             ih = i;
00885             break;
00886          }
00887       }
00888       
00889       // exponential density interpolation
00890       double h_min = (workingDens[ih][0] - workingDens[ih+1][0]) 
00891                    / std::log(workingDens[ih+1][1] / workingDens[ih][1]);
00892 
00893       double h_max = (workingDens[ih][0] - workingDens[ih+1][0]) 
00894                    / std::log(workingDens[ih+1][2] 
00895                    / workingDens[ih][2]);
00896       
00897       double d_min = workingDens[ih][1]*std::exp((workingDens[ih][0]-alt)/h_min);
00898       double d_max = workingDens[ih][2]*std::exp((workingDens[ih][0]-alt)/h_max);
00899       
00900       // Density computation
00901       //Use 2 for low inclination orbits and 6 for polar orbits
00902       // Reference Montenbruck P90
00903       double n_prm = 2.0;
00904       Vector<double> h = cross(r,v);
00905       double inc = std::acos(h(2) / norm(h));
00906       n_prm = 2.0 + inc * 8.0 / ASConstant::PI;
00907 
00908 
00909       density = d_min + (d_max - d_min) * std::pow(c_psi2,n_prm / 2.0);
00910 
00911       return density * 1.0e-9;   //[kg/m^3]
00912 
00913    }  // End of method 'HarrisPriesterDrag::computeDensity()'
00914 
00915 
00916 }  // End of namespace 'gpstk'
00917 
00918 
00919 

Generated on Tue May 22 03:30:58 2012 for GPS ToolKit Software Library by  doxygen 1.3.9.1