├── .gitignore ├── README ├── LICENSE ├── nrlmsise_00_test.py ├── nrlmsise_00_header.py ├── nrlmsise_00_data.py └── nrlmsise_00.py /.gitignore: -------------------------------------------------------------------------------- 1 | /lookat.txt 2 | /__pycache__ 3 | /test.py 4 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | This is a port of the NRLMSISE-00 atmospheric model to python 2 | based of the c version from Dominik Brodowski http://www.brodo.de/english/pub/nrlmsise/ 3 | 4 | It is used the same way as the c version is 5 | 6 | C program runtime 7 | 0.031-0.033 seconds 8 | 9 | Python runtime 10 | 0.038-0.041 seconds 11 | 12 | It runs at almost comparable speeds after running a few times 13 | 14 | To use, make an input class, and output class, and a flag class. 15 | Set the input and flags with the appropriate settings, 16 | then call gtd7(input, flags, output) 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Joshua Milas 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /nrlmsise_00_test.py: -------------------------------------------------------------------------------- 1 | """ 2 | 12/19/2013 3 | Author: Joshua Milas 4 | Python Version: 3.3.2 5 | 6 | The NRLMSISE-00 model 2001 ported to python 7 | Based off of Dominik Brodowski 20100516 version available here 8 | http://www.brodo.de/english/pub/nrlmsise/ 9 | 10 | This is the test program, and the output should be compaired to 11 | /* -------------------------------------------------------------------- */ 12 | /* --------- N R L M S I S E - 0 0 M O D E L 2 0 0 1 ---------- */ 13 | /* -------------------------------------------------------------------- */ 14 | 15 | /* This file is part of the NRLMSISE-00 C source code package - release 16 | * 20041227 17 | * 18 | * The NRLMSISE-00 model was developed by Mike Picone, Alan Hedin, and 19 | * Doug Drob. They also wrote a NRLMSISE-00 distribution package in 20 | * FORTRAN which is available at 21 | * http://uap-www.nrl.navy.mil/models_web/msis/msis_home.htm 22 | * 23 | * Dominik Brodowski implemented and maintains this C version. You can 24 | * reach him at mail@brodo.de. See the file "DOCUMENTATION" for details, 25 | * and check http://www.brodo.de/english/pub/nrlmsise/index.html for 26 | * updated releases of this package. 27 | */ 28 | """ 29 | 30 | import time 31 | from nrlmsise_00_header import * 32 | from nrlmsise_00 import * 33 | 34 | def test_gtd7(): 35 | output = [nrlmsise_output() for _ in range(17)] 36 | Input = [nrlmsise_input() for _ in range(17)] 37 | flags = nrlmsise_flags() 38 | aph = ap_array() 39 | 40 | for i in range(7): 41 | aph.a[i]=100 42 | flags.switches[0] = 0 43 | for i in range(1, 24): 44 | flags.switches[i]=1 45 | 46 | for i in range(17): 47 | Input[i].doy=172; 48 | Input[i].year=0; #/* without effect */ 49 | Input[i].sec=29000; 50 | Input[i].alt=400; 51 | Input[i].g_lat=60; 52 | Input[i].g_long=-70; 53 | Input[i].lst=16; 54 | Input[i].f107A=150; 55 | Input[i].f107=150; 56 | Input[i].ap=4; 57 | 58 | Input[1].doy=81; 59 | Input[2].sec=75000; 60 | Input[2].alt=1000; 61 | Input[3].alt=100; 62 | Input[10].alt=0; 63 | Input[11].alt=10; 64 | Input[12].alt=30; 65 | Input[13].alt=50; 66 | Input[14].alt=70; 67 | Input[16].alt=100; 68 | Input[4].g_lat=0; 69 | Input[5].g_long=0; 70 | Input[6].lst=4; 71 | Input[7].f107A=70; 72 | Input[8].f107=180; 73 | Input[9].ap=40; 74 | 75 | Input[15].ap_a = aph 76 | Input[16].ap_a = aph 77 | 78 | #evaluate 0 to 14 79 | for i in range(15): 80 | gtd7(Input[i], flags, output[i]) 81 | 82 | #/* evaluate 15 and 16 */ 83 | flags.switches[9] = -1 84 | for i in range(15, 17): 85 | gtd7(Input[i], flags, output[i]) 86 | 87 | #/* output type 1 */ 88 | for i in range(17): 89 | print('\n', end='') 90 | for j in range(9): 91 | print('%E ' % output[i].d[j], end='') 92 | print('%E ' % output[i].t[0], end='') 93 | print('%E ' % output[i].t[1]) 94 | #/* DL omitted */ 95 | 96 | #/* output type 2 */ 97 | for i in range(3): 98 | print('\n', end='') 99 | print("\nDAY ", end='') 100 | for j in range(5): 101 | print(" %3i" % Input[i*5+j].doy, end='') 102 | print("\nUT ", end='') 103 | for j in range(5): 104 | print(" %5.0f" % Input[i*5+j].sec, end='') 105 | print("\nALT ", end='') 106 | for j in range(5): 107 | print(" %4.0f" % Input[i*5+j].alt, end='') 108 | print("\nLAT ", end='') 109 | for j in range(5): 110 | print(" %3.0f" % Input[i*5+j].g_lat, end='') 111 | print("\nLONG ", end='') 112 | for j in range(5): 113 | print(" %3.0f" % Input[i*5+j].g_long, end='') 114 | print("\nLST ", end='') 115 | for j in range(5): 116 | print(" %5.0f" % Input[i*5+j].lst, end='') 117 | print("\nF107A ", end='') 118 | for j in range(5): 119 | print(" %3.0f" % Input[i*5+j].f107A, end='') 120 | print("\nF107 ", end='') 121 | for j in range(5): 122 | print(" %3.0f" % Input[i*5+j].f107, end='') 123 | 124 | print('\n\n', end='') 125 | 126 | print("\nTINF ", end='') 127 | for j in range(5): 128 | print(" %7.2f" % output[i*5+j].t[0], end='') 129 | print("\nTG ", end='') 130 | for j in range(5): 131 | print(" %7.2f" % output[i*5+j].t[1], end='') 132 | print("\nHE ", end='') 133 | for j in range(5): 134 | print(" %1.3e" % output[i*5+j].d[0], end='') 135 | print("\nO ", end='') 136 | for j in range(5): 137 | print(" %1.3e" % output[i*5+j].d[1], end='') 138 | print("\nN2 ", end='') 139 | for j in range(5): 140 | print(" %1.3e" % output[i*5+j].d[2], end='') 141 | print("\nO2 ", end='') 142 | for j in range(5): 143 | print(" %1.3e" % output[i*5+j].d[3], end='') 144 | print("\nAR ", end='') 145 | for j in range(5): 146 | print(" %1.3e" % output[i*5+j].d[4], end='') 147 | print("\nH ", end='') 148 | for j in range(5): 149 | print(" %1.3e" % output[i*5+j].d[6], end='') 150 | print("\nN ", end='') 151 | for j in range(5): 152 | print(" %1.3e" % output[i*5+j].d[7], end='') 153 | print("\nANM ", end='') 154 | for j in range(5): 155 | print(" %1.3e" % output[i*5+j].d[8], end='') 156 | print("\nRHO ", end='') 157 | for j in range(5): 158 | print(" %1.3e" % output[i*5+j].d[5], end='') 159 | print('\n') 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | if __name__ == '__main__': 168 | #start = time.clock() 169 | test_gtd7() 170 | #print(time.clock() - start) 171 | -------------------------------------------------------------------------------- /nrlmsise_00_header.py: -------------------------------------------------------------------------------- 1 | """ 2 | 12/19/2013 3 | Author: Joshua Milas 4 | Python Version: 3.3.2 5 | 6 | The NRLMSISE-00 model 2001 ported to python 7 | Based off of Dominik Brodowski 20100516 version available here 8 | http://www.brodo.de/english/pub/nrlmsise/ 9 | 10 | This is the header of the program that contains all the classes 11 | /* -------------------------------------------------------------------- */ 12 | /* --------- N R L M S I S E - 0 0 M O D E L 2 0 0 1 ---------- */ 13 | /* -------------------------------------------------------------------- */ 14 | 15 | /* This file is part of the NRLMSISE-00 C source code package - release 16 | * 20041227 17 | * 18 | * The NRLMSISE-00 model was developed by Mike Picone, Alan Hedin, and 19 | * Doug Drob. They also wrote a NRLMSISE-00 distribution package in 20 | * FORTRAN which is available at 21 | * http://uap-www.nrl.navy.mil/models_web/msis/msis_home.htm 22 | * 23 | * Dominik Brodowski implemented and maintains this C version. You can 24 | * reach him at mail@brodo.de. See the file "DOCUMENTATION" for details, 25 | * and check http://www.brodo.de/english/pub/nrlmsise/index.html for 26 | * updated releases of this package. 27 | */ 28 | """ 29 | 30 | 31 | #/* ------------------------------------------------------------------- */ 32 | #/* ------------------------------- INPUT ----------------------------- */ 33 | #/* ------------------------------------------------------------------- */ 34 | 35 | 36 | class nrlmsise_flags(object): 37 | """ 38 | * Switches: to turn on and off particular variations use these switches. 39 | * 0 is off, 1 is on, and 2 is main effects off but cross terms on. 40 | * 41 | * Standard values are 0 for switch 0 and 1 for switches 1 to 23. The 42 | * array "switches" needs to be set accordingly by the calling program. 43 | * The arrays sw and swc are set internally. 44 | * 45 | * switches[i]: 46 | * i - explanation 47 | * ----------------- 48 | * 0 - output in centimeters instead of meters 49 | * 1 - F10.7 effect on mean 50 | * 2 - time independent 51 | * 3 - symmetrical annual 52 | * 4 - symmetrical semiannual 53 | * 5 - asymmetrical annual 54 | * 6 - asymmetrical semiannual 55 | * 7 - diurnal 56 | * 8 - semidiurnal 57 | * 9 - daily ap [when this is set to -1 (!) the pointer 58 | * ap_a in struct nrlmsise_input must 59 | * point to a struct ap_array] 60 | * 10 - all UT/long effects 61 | * 11 - longitudinal 62 | * 12 - UT and mixed UT/long 63 | * 13 - mixed AP/UT/LONG 64 | * 14 - terdiurnal 65 | * 15 - departures from diffusive equilibrium 66 | * 16 - all TINF var 67 | * 17 - all TLB var 68 | * 18 - all TN1 var 69 | * 19 - all S var 70 | * 20 - all TN2 var 71 | * 21 - all NLB var 72 | * 22 - all TN3 var 73 | * 23 - turbo scale height var 74 | """ 75 | def __init__(self): 76 | self.switches = [0 for _ in range(24)] 77 | self.sw = [0.0 for _ in range(24)] 78 | self.swc = [0.0 for _ in range(24)] 79 | 80 | 81 | class ap_array: 82 | """ 83 | * Array containing the following magnetic values: 84 | * 0 : daily AP 85 | * 1 : 3 hr AP index for current time 86 | * 2 : 3 hr AP index for 3 hrs before current time 87 | * 3 : 3 hr AP index for 6 hrs before current time 88 | * 4 : 3 hr AP index for 9 hrs before current time 89 | * 5 : Average of eight 3 hr AP indicies from 12 to 33 hrs 90 | * prior to current time 91 | * 6 : Average of eight 3 hr AP indicies from 36 to 57 hrs 92 | * prior to current time 93 | """ 94 | def __init__(self): 95 | self.a = [0.0 for _ in range(7)] 96 | 97 | 98 | class nrlmsise_input: 99 | """ 100 | /* 101 | * NOTES ON INPUT VARIABLES: 102 | * UT, Local Time, and Longitude are used independently in the 103 | * model and are not of equal importance for every situation. 104 | * For the most physically realistic calculation these three 105 | * variables should be consistent (lst=sec/3600 + g_long/15). 106 | * The Equation of Time departures from the above formula 107 | * for apparent local time can be included if available but 108 | * are of minor importance. 109 | * 110 | * f107 and f107A values used to generate the model correspond 111 | * to the 10.7 cm radio flux at the actual distance of the Earth 112 | * from the Sun rather than the radio flux at 1 AU. The following 113 | * site provides both classes of values: 114 | * ftp://ftp.ngdc.noaa.govS/STP/SOLAR_DATA/SOLAR_RADIO/FLUX/ 115 | * 116 | * f107, f107A, and ap effects are neither large nor well 117 | * established below 80 km and these parameters should be set to 118 | * 150., 150., and 4. respectively. 119 | */ 120 | """ 121 | def __init__(self, year=0, doy=0, sec=0.0, alt=0.0, g_lat=0.0, g_long=0.0, 122 | lst=0.0, f107A=0.0, f107=0.0, ap=0.0, ap_a=None): 123 | self.year = year #/* year, currently ignored */ 124 | self.doy = doy #/* day of year */ 125 | self.sec = sec #/* seconds in day (UT) */ 126 | self.alt = alt #/* altitude in kilometes */ 127 | self.g_lat = g_lat #/* geodetic latitude */ 128 | self.g_long = g_long #/* geodetic longitude */ 129 | self.lst = lst #/* local apparent solar time (hours), see note above */ 130 | self.f107A = f107A #/* 81 day average of F10.7 flux (centered on doy) */ 131 | self.f107 = f107 #/* daily F10.7 flux for previous day */ 132 | self.ap = ap #/* magnetic index(daily) */ 133 | self.ap_a = ap_a #/* see above */ Set as none for an idiot check 134 | #set flags.switches[9] = -1 to use this 135 | 136 | 137 | def lstCalc(Input): 138 | """This function will calculate and set the lst value based on the above 139 | note""" 140 | Input.lst = (Input.sec/3600) + (Input.g_long/15) 141 | return 142 | #/* ------------------------------------------------------------------- */ 143 | #/* ------------------------------ OUTPUT ----------------------------- */ 144 | #/* ------------------------------------------------------------------- */ 145 | 146 | class nrlmsise_output: 147 | """ 148 | /* 149 | * OUTPUT VARIABLES: 150 | * d[0] - HE NUMBER DENSITY(CM-3) 151 | * d[1] - O NUMBER DENSITY(CM-3) 152 | * d[2] - N2 NUMBER DENSITY(CM-3) 153 | * d[3] - O2 NUMBER DENSITY(CM-3) 154 | * d[4] - AR NUMBER DENSITY(CM-3) 155 | * d[5] - TOTAL MASS DENSITY(GM/CM3) [includes d[8] in td7d] 156 | * d[6] - H NUMBER DENSITY(CM-3) 157 | * d[7] - N NUMBER DENSITY(CM-3) 158 | * d[8] - Anomalous oxygen NUMBER DENSITY(CM-3) 159 | * t[0] - EXOSPHERIC TEMPERATURE 160 | * t[1] - TEMPERATURE AT ALT 161 | * 162 | * 163 | * O, H, and N are set to zero below 72.5 km 164 | * 165 | * t[0], Exospheric temperature, is set to global average for 166 | * altitudes below 120 km. The 120 km gradient is left at global 167 | * average value for altitudes below 72 km. 168 | * 169 | * d[5], TOTAL MASS DENSITY, is NOT the same for subroutines GTD7 170 | * and GTD7D 171 | * 172 | * SUBROUTINE GTD7 -- d[5] is the sum of the mass densities of the 173 | * species labeled by indices 0-4 and 6-7 in output variable d. 174 | * This includes He, O, N2, O2, Ar, H, and N but does NOT include 175 | * anomalous oxygen (species index 8). 176 | * 177 | * SUBROUTINE GTD7D -- d[5] is the "effective total mass density 178 | * for drag" and is the sum of the mass densities of all species 179 | * in this model, INCLUDING anomalous oxygen. 180 | */ 181 | """ 182 | def __init__(self): 183 | self.d = [0.0 for _ in range(9)] #/* densities */ 184 | self.t = [0.0 for _ in range(2)] #/* temperatures */ 185 | 186 | 187 | #/* ------------------------------------------------------------------- */ 188 | #/* --------------------------- PROTOTYPES ---------------------------- */ 189 | #/* ------------------------------------------------------------------- */ 190 | # No prototypes are used here, these are here for refernce 191 | ''' 192 | /* GTD7 */ 193 | /* Neutral Atmosphere Empircial Model from the surface to lower 194 | * exosphere. 195 | */ 196 | 197 | /* GTD7D */ 198 | /* This subroutine provides Effective Total Mass Density for output 199 | * d[5] which includes contributions from "anomalous oxygen" which can 200 | * affect satellite drag above 500 km. See the section "output" for 201 | * additional details. 202 | */ 203 | 204 | /* GTS7 */ 205 | /* Thermospheric portion of NRLMSISE-00 206 | */ 207 | 208 | /* GHP7 */ 209 | /* To specify outputs at a pressure level (press) rather than at 210 | * an altitude. 211 | */ 212 | ''' 213 | -------------------------------------------------------------------------------- /nrlmsise_00_data.py: -------------------------------------------------------------------------------- 1 | """ 2 | 12/19/2013 3 | Author: Joshua Milas 4 | Python Version: 3.3.2 5 | 6 | The NRLMSISE-00 model 2001 ported to python 7 | Based off of Dominik Brodowski 20100516 version available here 8 | http://www.brodo.de/english/pub/nrlmsise/ 9 | 10 | This is the external data file used by the main program 11 | /* -------------------------------------------------------------------- */ 12 | /* --------- N R L M S I S E - 0 0 M O D E L 2 0 0 1 ---------- */ 13 | /* -------------------------------------------------------------------- */ 14 | 15 | /* This file is part of the NRLMSISE-00 C source code package - release 16 | * 20041227 17 | * 18 | * The NRLMSISE-00 model was developed by Mike Picone, Alan Hedin, and 19 | * Doug Drob. They also wrote a NRLMSISE-00 distribution package in 20 | * FORTRAN which is available at 21 | * http://uap-www.nrl.navy.mil/models_web/msis/msis_home.htm 22 | * 23 | * Dominik Brodowski implemented and maintains this C version. You can 24 | * reach him at mail@brodo.de. See the file "DOCUMENTATION" for details, 25 | * and check http://www.brodo.de/english/pub/nrlmsise/index.html for 26 | * updated releases of this package. 27 | */ 28 | """ 29 | 30 | #TEMPERATURE 31 | pt = [9.86573E-01, 1.62228E-02, 1.55270E-02,-1.04323E-01,-3.75801E-03, 32 | -1.18538E-03,-1.24043E-01, 4.56820E-03, 8.76018E-03,-1.36235E-01, 33 | -3.52427E-02, 8.84181E-03,-5.92127E-03,-8.61650E+00, 0.00000E+00, 34 | 1.28492E-02, 0.00000E+00, 1.30096E+02, 1.04567E-02, 1.65686E-03, 35 | -5.53887E-06, 2.97810E-03, 0.00000E+00, 5.13122E-03, 8.66784E-02, 36 | 1.58727E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00,-7.27026E-06, 37 | 0.00000E+00, 6.74494E+00, 4.93933E-03, 2.21656E-03, 2.50802E-03, 38 | 0.00000E+00, 0.00000E+00,-2.08841E-02,-1.79873E+00, 1.45103E-03, 39 | 2.81769E-04,-1.44703E-03,-5.16394E-05, 8.47001E-02, 1.70147E-01, 40 | 5.72562E-03, 5.07493E-05, 4.36148E-03, 1.17863E-04, 4.74364E-03, 41 | 6.61278E-03, 4.34292E-05, 1.44373E-03, 2.41470E-05, 2.84426E-03, 42 | 8.56560E-04, 2.04028E-03, 0.00000E+00,-3.15994E+03,-2.46423E-03, 43 | 1.13843E-03, 4.20512E-04, 0.00000E+00,-9.77214E+01, 6.77794E-03, 44 | 5.27499E-03, 1.14936E-03, 0.00000E+00,-6.61311E-03,-1.84255E-02, 45 | -1.96259E-02, 2.98618E+04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 46 | 6.44574E+02, 8.84668E-04, 5.05066E-04, 0.00000E+00, 4.02881E+03, 47 | -1.89503E-03, 0.00000E+00, 0.00000E+00, 8.21407E-04, 2.06780E-03, 48 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 49 | -1.20410E-02,-3.63963E-03, 9.92070E-05,-1.15284E-04,-6.33059E-05, 50 | -6.05545E-01, 8.34218E-03,-9.13036E+01, 3.71042E-04, 0.00000E+00, 51 | 4.19000E-04, 2.70928E-03, 3.31507E-03,-4.44508E-03,-4.96334E-03, 52 | -1.60449E-03, 3.95119E-03, 2.48924E-03, 5.09815E-04, 4.05302E-03, 53 | 2.24076E-03, 0.00000E+00, 6.84256E-03, 4.66354E-04, 0.00000E+00, 54 | -3.68328E-04, 0.00000E+00, 0.00000E+00,-1.46870E+02, 0.00000E+00, 55 | 0.00000E+00, 1.09501E-03, 4.65156E-04, 5.62583E-04, 3.21596E+00, 56 | 6.43168E-04, 3.14860E-03, 3.40738E-03, 1.78481E-03, 9.62532E-04, 57 | 5.58171E-04, 3.43731E+00,-2.33195E-01, 5.10289E-04, 0.00000E+00, 58 | 0.00000E+00,-9.25347E+04, 0.00000E+00,-1.99639E-03, 0.00000E+00, 59 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 60 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00] 61 | 62 | pd = [ 63 | #/* HE DENSITY */ 64 | [ 65 | 1.09979E+00,-4.88060E-02,-1.97501E-01,-9.10280E-02,-6.96558E-03, 66 | 2.42136E-02, 3.91333E-01,-7.20068E-03,-3.22718E-02, 1.41508E+00, 67 | 1.68194E-01, 1.85282E-02, 1.09384E-01,-7.24282E+00, 0.00000E+00, 68 | 2.96377E-01,-4.97210E-02, 1.04114E+02,-8.61108E-02,-7.29177E-04, 69 | 1.48998E-06, 1.08629E-03, 0.00000E+00, 0.00000E+00, 8.31090E-02, 70 | 1.12818E-01,-5.75005E-02,-1.29919E-02,-1.78849E-02,-2.86343E-06, 71 | 0.00000E+00,-1.51187E+02,-6.65902E-03, 0.00000E+00,-2.02069E-03, 72 | 0.00000E+00, 0.00000E+00, 4.32264E-02,-2.80444E+01,-3.26789E-03, 73 | 2.47461E-03, 0.00000E+00, 0.00000E+00, 9.82100E-02, 1.22714E-01, 74 | -3.96450E-02, 0.00000E+00,-2.76489E-03, 0.00000E+00, 1.87723E-03, 75 | -8.09813E-03, 4.34428E-05,-7.70932E-03, 0.00000E+00,-2.28894E-03, 76 | -5.69070E-03,-5.22193E-03, 6.00692E-03,-7.80434E+03,-3.48336E-03, 77 | -6.38362E-03,-1.82190E-03, 0.00000E+00,-7.58976E+01,-2.17875E-02, 78 | -1.72524E-02,-9.06287E-03, 0.00000E+00, 2.44725E-02, 8.66040E-02, 79 | 1.05712E-01, 3.02543E+04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 80 | -6.01364E+03,-5.64668E-03,-2.54157E-03, 0.00000E+00, 3.15611E+02, 81 | -5.69158E-03, 0.00000E+00, 0.00000E+00,-4.47216E-03,-4.49523E-03, 82 | 4.64428E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 83 | 4.51236E-02, 2.46520E-02, 6.17794E-03, 0.00000E+00, 0.00000E+00, 84 | -3.62944E-01,-4.80022E-02,-7.57230E+01,-1.99656E-03, 0.00000E+00, 85 | -5.18780E-03,-1.73990E-02,-9.03485E-03, 7.48465E-03, 1.53267E-02, 86 | 1.06296E-02, 1.18655E-02, 2.55569E-03, 1.69020E-03, 3.51936E-02, 87 | -1.81242E-02, 0.00000E+00,-1.00529E-01,-5.10574E-03, 0.00000E+00, 88 | 2.10228E-03, 0.00000E+00, 0.00000E+00,-1.73255E+02, 5.07833E-01, 89 | -2.41408E-01, 8.75414E-03, 2.77527E-03,-8.90353E-05,-5.25148E+00, 90 | -5.83899E-03,-2.09122E-02,-9.63530E-03, 9.77164E-03, 4.07051E-03, 91 | 2.53555E-04,-5.52875E+00,-3.55993E-01,-2.49231E-03, 0.00000E+00, 92 | 0.00000E+00, 2.86026E+01, 0.00000E+00, 3.42722E-04, 0.00000E+00, 93 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 94 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00 95 | ], 96 | #/* O DENSITY */ 97 | [ 98 | 1.02315E+00,-1.59710E-01,-1.06630E-01,-1.77074E-02,-4.42726E-03, 99 | 3.44803E-02, 4.45613E-02,-3.33751E-02,-5.73598E-02, 3.50360E-01, 100 | 6.33053E-02, 2.16221E-02, 5.42577E-02,-5.74193E+00, 0.00000E+00, 101 | 1.90891E-01,-1.39194E-02, 1.01102E+02, 8.16363E-02, 1.33717E-04, 102 | 6.54403E-06, 3.10295E-03, 0.00000E+00, 0.00000E+00, 5.38205E-02, 103 | 1.23910E-01,-1.39831E-02, 0.00000E+00, 0.00000E+00,-3.95915E-06, 104 | 0.00000E+00,-7.14651E-01,-5.01027E-03, 0.00000E+00,-3.24756E-03, 105 | 0.00000E+00, 0.00000E+00, 4.42173E-02,-1.31598E+01,-3.15626E-03, 106 | 1.24574E-03,-1.47626E-03,-1.55461E-03, 6.40682E-02, 1.34898E-01, 107 | -2.42415E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 6.13666E-04, 108 | -5.40373E-03, 2.61635E-05,-3.33012E-03, 0.00000E+00,-3.08101E-03, 109 | -2.42679E-03,-3.36086E-03, 0.00000E+00,-1.18979E+03,-5.04738E-02, 110 | -2.61547E-03,-1.03132E-03, 1.91583E-04,-8.38132E+01,-1.40517E-02, 111 | -1.14167E-02,-4.08012E-03, 1.73522E-04,-1.39644E-02,-6.64128E-02, 112 | -6.85152E-02,-1.34414E+04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 113 | 6.07916E+02,-4.12220E-03,-2.20996E-03, 0.00000E+00, 1.70277E+03, 114 | -4.63015E-03, 0.00000E+00, 0.00000E+00,-2.25360E-03,-2.96204E-03, 115 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 116 | 3.92786E-02, 1.31186E-02,-1.78086E-03, 0.00000E+00, 0.00000E+00, 117 | -3.90083E-01,-2.84741E-02,-7.78400E+01,-1.02601E-03, 0.00000E+00, 118 | -7.26485E-04,-5.42181E-03,-5.59305E-03, 1.22825E-02, 1.23868E-02, 119 | 6.68835E-03,-1.03303E-02,-9.51903E-03, 2.70021E-04,-2.57084E-02, 120 | -1.32430E-02, 0.00000E+00,-3.81000E-02,-3.16810E-03, 0.00000E+00, 121 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 122 | 0.00000E+00,-9.05762E-04,-2.14590E-03,-1.17824E-03, 3.66732E+00, 123 | -3.79729E-04,-6.13966E-03,-5.09082E-03,-1.96332E-03,-3.08280E-03, 124 | -9.75222E-04, 4.03315E+00,-2.52710E-01, 0.00000E+00, 0.00000E+00, 125 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 126 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 127 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00 128 | ], 129 | #/* N2 DENSITY */ 130 | [ 131 | 1.16112E+00, 0.00000E+00, 0.00000E+00, 3.33725E-02, 0.00000E+00, 132 | 3.48637E-02,-5.44368E-03, 0.00000E+00,-6.73940E-02, 1.74754E-01, 133 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.74712E+02, 0.00000E+00, 134 | 1.26733E-01, 0.00000E+00, 1.03154E+02, 5.52075E-02, 0.00000E+00, 135 | 0.00000E+00, 8.13525E-04, 0.00000E+00, 0.00000E+00, 8.66784E-02, 136 | 1.58727E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 137 | 0.00000E+00,-2.50482E+01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 138 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-2.48894E-03, 139 | 6.16053E-04,-5.79716E-04, 2.95482E-03, 8.47001E-02, 1.70147E-01, 140 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 141 | 0.00000E+00, 2.47425E-05, 0.00000E+00, 0.00000E+00, 0.00000E+00, 142 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 143 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 144 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 145 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 146 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 147 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 148 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 149 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 150 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 151 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 152 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 153 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 154 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 155 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 156 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 157 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 158 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 159 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 160 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00 161 | ], 162 | #/* TLB */ 163 | [ 164 | 9.44846E-01, 0.00000E+00, 0.00000E+00,-3.08617E-02, 0.00000E+00, 165 | -2.44019E-02, 6.48607E-03, 0.00000E+00, 3.08181E-02, 4.59392E-02, 166 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.74712E+02, 0.00000E+00, 167 | 2.13260E-02, 0.00000E+00,-3.56958E+02, 0.00000E+00, 1.82278E-04, 168 | 0.00000E+00, 3.07472E-04, 0.00000E+00, 0.00000E+00, 8.66784E-02, 169 | 1.58727E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 170 | 0.00000E+00, 0.00000E+00, 3.83054E-03, 0.00000E+00, 0.00000E+00, 171 | -1.93065E-03,-1.45090E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 172 | 0.00000E+00,-1.23493E-03, 1.36736E-03, 8.47001E-02, 1.70147E-01, 173 | 3.71469E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 174 | 5.10250E-03, 2.47425E-05, 0.00000E+00, 0.00000E+00, 0.00000E+00, 175 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 176 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 177 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 178 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 179 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 180 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 181 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 182 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 183 | 0.00000E+00, 3.68756E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 184 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 185 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 186 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 187 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 188 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 189 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 190 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 191 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 192 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 193 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00 194 | ], #/* O2 DENSITY */ 195 | [ 196 | 1.35580E+00, 1.44816E-01, 0.00000E+00, 6.07767E-02, 0.00000E+00, 197 | 2.94777E-02, 7.46900E-02, 0.00000E+00,-9.23822E-02, 8.57342E-02, 198 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.38636E+01, 0.00000E+00, 199 | 7.71653E-02, 0.00000E+00, 8.18751E+01, 1.87736E-02, 0.00000E+00, 200 | 0.00000E+00, 1.49667E-02, 0.00000E+00, 0.00000E+00, 8.66784E-02, 201 | 1.58727E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 202 | 0.00000E+00,-3.67874E+02, 5.48158E-03, 0.00000E+00, 0.00000E+00, 203 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 204 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 8.47001E-02, 1.70147E-01, 205 | 1.22631E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 206 | 8.17187E-03, 3.71617E-05, 0.00000E+00, 0.00000E+00, 0.00000E+00, 207 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 208 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-2.10826E-03, 209 | -3.13640E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 210 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 211 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 212 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 213 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 214 | -7.35742E-02,-5.00266E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 215 | 0.00000E+00, 1.94965E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 216 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 217 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 218 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 219 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 220 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 221 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 222 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 223 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 224 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 225 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00 226 | ], #/* AR DENSITY */ 227 | [ 228 | 1.04761E+00, 2.00165E-01, 2.37697E-01, 3.68552E-02, 0.00000E+00, 229 | 3.57202E-02,-2.14075E-01, 0.00000E+00,-1.08018E-01,-3.73981E-01, 230 | 0.00000E+00, 3.10022E-02,-1.16305E-03,-2.07596E+01, 0.00000E+00, 231 | 8.64502E-02, 0.00000E+00, 9.74908E+01, 5.16707E-02, 0.00000E+00, 232 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 8.66784E-02, 233 | 1.58727E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 234 | 0.00000E+00, 3.46193E+02, 1.34297E-02, 0.00000E+00, 0.00000E+00, 235 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-3.48509E-03, 236 | -1.54689E-04, 0.00000E+00, 0.00000E+00, 8.47001E-02, 1.70147E-01, 237 | 1.47753E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 238 | 1.89320E-02, 3.68181E-05, 1.32570E-02, 0.00000E+00, 0.00000E+00, 239 | 3.59719E-03, 7.44328E-03,-1.00023E-03,-6.50528E+03, 0.00000E+00, 240 | 1.03485E-02,-1.00983E-03,-4.06916E-03,-6.60864E+01,-1.71533E-02, 241 | 1.10605E-02, 1.20300E-02,-5.20034E-03, 0.00000E+00, 0.00000E+00, 242 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 243 | -2.62769E+03, 7.13755E-03, 4.17999E-03, 0.00000E+00, 1.25910E+04, 244 | 0.00000E+00, 0.00000E+00, 0.00000E+00,-2.23595E-03, 4.60217E-03, 245 | 5.71794E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 246 | -3.18353E-02,-2.35526E-02,-1.36189E-02, 0.00000E+00, 0.00000E+00, 247 | 0.00000E+00, 2.03522E-02,-6.67837E+01,-1.09724E-03, 0.00000E+00, 248 | -1.38821E-02, 1.60468E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 249 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.51574E-02, 250 | -5.44470E-04, 0.00000E+00, 7.28224E-02, 6.59413E-02, 0.00000E+00, 251 | -5.15692E-03, 0.00000E+00, 0.00000E+00,-3.70367E+03, 0.00000E+00, 252 | 0.00000E+00, 1.36131E-02, 5.38153E-03, 0.00000E+00, 4.76285E+00, 253 | -1.75677E-02, 2.26301E-02, 0.00000E+00, 1.76631E-02, 4.77162E-03, 254 | 0.00000E+00, 5.39354E+00, 0.00000E+00,-7.51710E-03, 0.00000E+00, 255 | 0.00000E+00,-8.82736E+01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 256 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 257 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00 258 | ], #/* H DENSITY */ 259 | [ 260 | 1.26376E+00,-2.14304E-01,-1.49984E-01, 2.30404E-01, 2.98237E-02, 261 | 2.68673E-02, 2.96228E-01, 2.21900E-02,-2.07655E-02, 4.52506E-01, 262 | 1.20105E-01, 3.24420E-02, 4.24816E-02,-9.14313E+00, 0.00000E+00, 263 | 2.47178E-02,-2.88229E-02, 8.12805E+01, 5.10380E-02,-5.80611E-03, 264 | 2.51236E-05,-1.24083E-02, 0.00000E+00, 0.00000E+00, 8.66784E-02, 265 | 1.58727E-01,-3.48190E-02, 0.00000E+00, 0.00000E+00, 2.89885E-05, 266 | 0.00000E+00, 1.53595E+02,-1.68604E-02, 0.00000E+00, 1.01015E-02, 267 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.84552E-04, 268 | -1.22181E-03, 0.00000E+00, 0.00000E+00, 8.47001E-02, 1.70147E-01, 269 | -1.04927E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00,-5.91313E-03, 270 | -2.30501E-02, 3.14758E-05, 0.00000E+00, 0.00000E+00, 1.26956E-02, 271 | 8.35489E-03, 3.10513E-04, 0.00000E+00, 3.42119E+03,-2.45017E-03, 272 | -4.27154E-04, 5.45152E-04, 1.89896E-03, 2.89121E+01,-6.49973E-03, 273 | -1.93855E-02,-1.48492E-02, 0.00000E+00,-5.10576E-02, 7.87306E-02, 274 | 9.51981E-02,-1.49422E+04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 275 | 2.65503E+02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 276 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 6.37110E-03, 3.24789E-04, 277 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 278 | 6.14274E-02, 1.00376E-02,-8.41083E-04, 0.00000E+00, 0.00000E+00, 279 | 0.00000E+00,-1.27099E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 280 | -3.94077E-03,-1.28601E-02,-7.97616E-03, 0.00000E+00, 0.00000E+00, 281 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 282 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 283 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 284 | 0.00000E+00,-6.71465E-03,-1.69799E-03, 1.93772E-03, 3.81140E+00, 285 | -7.79290E-03,-1.82589E-02,-1.25860E-02,-1.04311E-02,-3.02465E-03, 286 | 2.43063E-03, 3.63237E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 287 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 288 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 289 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00 290 | ], #/* N DENSITY */ 291 | [ 292 | 7.09557E+01,-3.26740E-01, 0.00000E+00,-5.16829E-01,-1.71664E-03, 293 | 9.09310E-02,-6.71500E-01,-1.47771E-01,-9.27471E-02,-2.30862E-01, 294 | -1.56410E-01, 1.34455E-02,-1.19717E-01, 2.52151E+00, 0.00000E+00, 295 | -2.41582E-01, 5.92939E-02, 4.39756E+00, 9.15280E-02, 4.41292E-03, 296 | 0.00000E+00, 8.66807E-03, 0.00000E+00, 0.00000E+00, 8.66784E-02, 297 | 1.58727E-01, 9.74701E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 298 | 0.00000E+00, 6.70217E+01,-1.31660E-03, 0.00000E+00,-1.65317E-02, 299 | 0.00000E+00, 0.00000E+00, 8.50247E-02, 2.77428E+01, 4.98658E-03, 300 | 6.15115E-03, 9.50156E-03,-2.12723E-02, 8.47001E-02, 1.70147E-01, 301 | -2.38645E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.37380E-03, 302 | -8.41918E-03, 2.80145E-05, 7.12383E-03, 0.00000E+00,-1.66209E-02, 303 | 1.03533E-04,-1.68898E-02, 0.00000E+00, 3.64526E+03, 0.00000E+00, 304 | 6.54077E-03, 3.69130E-04, 9.94419E-04, 8.42803E+01,-1.16124E-02, 305 | -7.74414E-03,-1.68844E-03, 1.42809E-03,-1.92955E-03, 1.17225E-01, 306 | -2.41512E-02, 1.50521E+04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 307 | 1.60261E+03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 308 | 0.00000E+00, 0.00000E+00, 0.00000E+00,-3.54403E-04,-1.87270E-02, 309 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 310 | 2.76439E-02, 6.43207E-03,-3.54300E-02, 0.00000E+00, 0.00000E+00, 311 | 0.00000E+00,-2.80221E-02, 8.11228E+01,-6.75255E-04, 0.00000E+00, 312 | -1.05162E-02,-3.48292E-03,-6.97321E-03, 0.00000E+00, 0.00000E+00, 313 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 314 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 315 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 316 | 0.00000E+00,-1.45546E-03,-1.31970E-02,-3.57751E-03,-1.09021E+00, 317 | -1.50181E-02,-7.12841E-03,-6.64590E-03,-3.52610E-03,-1.87773E-02, 318 | -2.22432E-03,-3.93895E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 319 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 320 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 321 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00 322 | ], #/* HOT O DENSITY */ 323 | [ 324 | 6.04050E-02, 1.57034E+00, 2.99387E-02, 0.00000E+00, 0.00000E+00, 325 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-1.51018E+00, 326 | 0.00000E+00, 0.00000E+00, 0.00000E+00,-8.61650E+00, 1.26454E-02, 327 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 328 | 0.00000E+00, 5.50878E-03, 0.00000E+00, 0.00000E+00, 8.66784E-02, 329 | 1.58727E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 330 | 0.00000E+00, 0.00000E+00, 6.23881E-02, 0.00000E+00, 0.00000E+00, 331 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 332 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 8.47001E-02, 1.70147E-01, 333 | -9.45934E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 334 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 335 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 336 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 337 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 338 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 339 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 340 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 341 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 342 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 343 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 344 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 345 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 346 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 347 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 348 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 349 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 350 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 351 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 352 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 353 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00 354 | ] 355 | ] 356 | 357 | 358 | #/* S PARAM */ 359 | ps = [9.56827E-01, 6.20637E-02, 3.18433E-02, 0.00000E+00, 0.00000E+00, 360 | 3.94900E-02, 0.00000E+00, 0.00000E+00,-9.24882E-03,-7.94023E-03, 361 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.74712E+02, 0.00000E+00, 362 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 363 | 0.00000E+00, 2.74677E-03, 0.00000E+00, 1.54951E-02, 8.66784E-02, 364 | 1.58727E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 365 | 0.00000E+00, 0.00000E+00, 0.00000E+00,-6.99007E-04, 0.00000E+00, 366 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 367 | 0.00000E+00, 1.24362E-02,-5.28756E-03, 8.47001E-02, 1.70147E-01, 368 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 369 | 0.00000E+00, 2.47425E-05, 0.00000E+00, 0.00000E+00, 0.00000E+00, 370 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 371 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 372 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 373 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 374 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 375 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 376 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 377 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 378 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 379 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 380 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 381 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 382 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 383 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 384 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 385 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 386 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 387 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 388 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00] 389 | 390 | #/* TURBO */ 391 | pdl = [ 392 | [ 1.09930E+00, 3.90631E+00, 3.07165E+00, 9.86161E-01, 1.63536E+01, 393 | 4.63830E+00, 1.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 394 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 395 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 396 | 0.00000E+00, 0.00000E+00, 1.28840E+00, 3.10302E-02, 1.18339E-01 ], 397 | [ 1.00000E+00, 7.00000E-01, 1.15020E+00, 3.44689E+00, 1.28840E+00, 398 | 1.00000E+00, 1.08738E+00, 1.22947E+00, 1.10016E+00, 7.34129E-01, 399 | 1.15241E+00, 2.22784E+00, 7.95046E-01, 4.01612E+00, 4.47749E+00, 400 | 1.23435E+02,-7.60535E-02, 1.68986E-06, 7.44294E-01, 1.03604E+00, 401 | 1.72783E+02, 1.15020E+00, 3.44689E+00,-7.46230E-01, 9.49154E-01 ] 402 | ] 403 | 404 | #/* LOWER BOUNDARY */ 405 | ptm = [1.04130E+03, 3.86000E+02, 1.95000E+02, 1.66728E+01, 2.13000E+02, 406 | 1.20000E+02, 2.40000E+02, 1.87000E+02,-2.00000E+00, 0.00000E+00] 407 | 408 | pdm = [ 409 | [2.45600E+07, 6.71072E-06, 1.00000E+02, 0.00000E+00, 1.10000E+02, 410 | 1.00000E+01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00 ], 411 | [ 8.59400E+10, 1.00000E+00, 1.05000E+02,-8.00000E+00, 1.10000E+02, 412 | 1.00000E+01, 9.00000E+01, 2.00000E+00, 0.00000E+00, 0.00000E+00 ], 413 | [ 2.81000E+11, 0.00000E+00, 1.05000E+02, 2.80000E+01, 2.89500E+01, 414 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00 ], 415 | [ 3.30000E+10, 2.68270E-01, 1.05000E+02, 1.00000E+00, 1.10000E+02, 416 | 1.00000E+01, 1.10000E+02,-1.00000E+01, 0.00000E+00, 0.00000E+00 ], 417 | [ 1.33000E+09, 1.19615E-02, 1.05000E+02, 0.00000E+00, 1.10000E+02, 418 | 1.00000E+01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00 ], 419 | [ 1.76100E+05, 1.00000E+00, 9.50000E+01,-8.00000E+00, 1.10000E+02, 420 | 1.00000E+01, 9.00000E+01, 2.00000E+00, 0.00000E+00, 0.00000E+00, ], 421 | [ 1.00000E+07, 1.00000E+00, 1.05000E+02,-8.00000E+00, 1.10000E+02, 422 | 1.00000E+01, 9.00000E+01, 2.00000E+00, 0.00000E+00, 0.00000E+00 ], 423 | [ 1.00000E+06, 1.00000E+00, 1.05000E+02,-8.00000E+00, 5.50000E+02, 424 | 7.60000E+01, 9.00000E+01, 2.00000E+00, 0.00000E+00, 4.00000E+03 ]] 425 | 426 | ptl = [ 427 | #/* TN1(2) */ 428 | [ 429 | 1.00858E+00, 4.56011E-02,-2.22972E-02,-5.44388E-02, 5.23136E-04, 430 | -1.88849E-02, 5.23707E-02,-9.43646E-03, 6.31707E-03,-7.80460E-02, 431 | -4.88430E-02, 0.00000E+00, 0.00000E+00,-7.60250E+00, 0.00000E+00, 432 | -1.44635E-02,-1.76843E-02,-1.21517E+02, 2.85647E-02, 0.00000E+00, 433 | 0.00000E+00, 6.31792E-04, 0.00000E+00, 5.77197E-03, 8.66784E-02, 434 | 1.58727E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 435 | 0.00000E+00,-8.90272E+03, 3.30611E-03, 3.02172E-03, 0.00000E+00, 436 | -2.13673E-03,-3.20910E-04, 0.00000E+00, 0.00000E+00, 2.76034E-03, 437 | 2.82487E-03,-2.97592E-04,-4.21534E-03, 8.47001E-02, 1.70147E-01, 438 | 8.96456E-03, 0.00000E+00,-1.08596E-02, 0.00000E+00, 0.00000E+00, 439 | 5.57917E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 440 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 441 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 442 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 443 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 444 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 445 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 446 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 447 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 448 | 0.00000E+00, 9.65405E-03, 0.00000E+00, 0.00000E+00, 2.00000E+00 449 | ], 450 | #/* TN1(3) */ 451 | [ 452 | 9.39664E-01, 8.56514E-02,-6.79989E-03, 2.65929E-02,-4.74283E-03, 453 | 1.21855E-02,-2.14905E-02, 6.49651E-03,-2.05477E-02,-4.24952E-02, 454 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.19148E+01, 0.00000E+00, 455 | 1.18777E-02,-7.28230E-02,-8.15965E+01, 1.73887E-02, 0.00000E+00, 456 | 0.00000E+00, 0.00000E+00,-1.44691E-02, 2.80259E-04, 8.66784E-02, 457 | 1.58727E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 458 | 0.00000E+00, 2.16584E+02, 3.18713E-03, 7.37479E-03, 0.00000E+00, 459 | -2.55018E-03,-3.92806E-03, 0.00000E+00, 0.00000E+00,-2.89757E-03, 460 | -1.33549E-03, 1.02661E-03, 3.53775E-04, 8.47001E-02, 1.70147E-01, 461 | -9.17497E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 462 | 3.56082E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 463 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 464 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 465 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 466 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 467 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 468 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 469 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 470 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 471 | 0.00000E+00,-1.00902E-02, 0.00000E+00, 0.00000E+00, 2.00000E+00 472 | ], 473 | #/* TN1(4) */ 474 | [ 475 | 9.85982E-01,-4.55435E-02, 1.21106E-02, 2.04127E-02,-2.40836E-03, 476 | 1.11383E-02,-4.51926E-02, 1.35074E-02,-6.54139E-03, 1.15275E-01, 477 | 1.28247E-01, 0.00000E+00, 0.00000E+00,-5.30705E+00, 0.00000E+00, 478 | -3.79332E-02,-6.24741E-02, 7.71062E-01, 2.96315E-02, 0.00000E+00, 479 | 0.00000E+00, 0.00000E+00, 6.81051E-03,-4.34767E-03, 8.66784E-02, 480 | 1.58727E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 481 | 0.00000E+00, 1.07003E+01,-2.76907E-03, 4.32474E-04, 0.00000E+00, 482 | 1.31497E-03,-6.47517E-04, 0.00000E+00,-2.20621E+01,-1.10804E-03, 483 | -8.09338E-04, 4.18184E-04, 4.29650E-03, 8.47001E-02, 1.70147E-01, 484 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 485 | -4.04337E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 486 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 487 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-9.52550E-04, 488 | 8.56253E-04, 4.33114E-04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 489 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.21223E-03, 490 | 2.38694E-04, 9.15245E-04, 1.28385E-03, 8.67668E-04,-5.61425E-06, 491 | 1.04445E+00, 3.41112E+01, 0.00000E+00,-8.40704E-01,-2.39639E+02, 492 | 7.06668E-01,-2.05873E+01,-3.63696E-01, 2.39245E+01, 0.00000E+00, 493 | -1.06657E-03,-7.67292E-04, 1.54534E-04, 0.00000E+00, 0.00000E+00, 494 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.00000E+00 495 | ], 496 | #/* TN1(5) TN2(1) */ 497 | [ 498 | 1.00320E+00, 3.83501E-02,-2.38983E-03, 2.83950E-03, 4.20956E-03, 499 | 5.86619E-04, 2.19054E-02,-1.00946E-02,-3.50259E-03, 4.17392E-02, 500 | -8.44404E-03, 0.00000E+00, 0.00000E+00, 4.96949E+00, 0.00000E+00, 501 | -7.06478E-03,-1.46494E-02, 3.13258E+01,-1.86493E-03, 0.00000E+00, 502 | -1.67499E-02, 0.00000E+00, 0.00000E+00, 5.12686E-04, 8.66784E-02, 503 | 1.58727E-01,-4.64167E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 504 | 4.37353E-03,-1.99069E+02, 0.00000E+00,-5.34884E-03, 0.00000E+00, 505 | 1.62458E-03, 2.93016E-03, 2.67926E-03, 5.90449E+02, 0.00000E+00, 506 | 0.00000E+00,-1.17266E-03,-3.58890E-04, 8.47001E-02, 1.70147E-01, 507 | 0.00000E+00, 0.00000E+00, 1.38673E-02, 0.00000E+00, 0.00000E+00, 508 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 509 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 510 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.60571E-03, 511 | 6.28078E-04, 5.05469E-05, 0.00000E+00, 0.00000E+00, 0.00000E+00, 512 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-1.57829E-03, 513 | -4.00855E-04, 5.04077E-05,-1.39001E-03,-2.33406E-03,-4.81197E-04, 514 | 1.46758E+00, 6.20332E+00, 0.00000E+00, 3.66476E-01,-6.19760E+01, 515 | 3.09198E-01,-1.98999E+01, 0.00000E+00,-3.29933E+02, 0.00000E+00, 516 | -1.10080E-03,-9.39310E-05, 1.39638E-04, 0.00000E+00, 0.00000E+00, 517 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.00000E+00 518 | ] ]; 519 | 520 | 521 | pma = [ 522 | #/* TN2(2) */ 523 | [ 524 | 9.81637E-01,-1.41317E-03, 3.87323E-02, 0.00000E+00, 0.00000E+00, 525 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-3.58707E-02, 526 | -8.63658E-03, 0.00000E+00, 0.00000E+00,-2.02226E+00, 0.00000E+00, 527 | -8.69424E-03,-1.91397E-02, 8.76779E+01, 4.52188E-03, 0.00000E+00, 528 | 2.23760E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 529 | 0.00000E+00,-7.07572E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 530 | -4.11210E-03, 3.50060E+01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 531 | 0.00000E+00, 0.00000E+00,-8.36657E-03, 1.61347E+01, 0.00000E+00, 532 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 533 | 0.00000E+00, 0.00000E+00,-1.45130E-02, 0.00000E+00, 0.00000E+00, 534 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 535 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 536 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.24152E-03, 537 | 6.43365E-04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 538 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.33255E-03, 539 | 2.42657E-03, 1.60666E-03,-1.85728E-03,-1.46874E-03,-4.79163E-06, 540 | 1.22464E+00, 3.53510E+01, 0.00000E+00, 4.49223E-01,-4.77466E+01, 541 | 4.70681E-01, 8.41861E+00,-2.88198E-01, 1.67854E+02, 0.00000E+00, 542 | 7.11493E-04, 6.05601E-04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 543 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.00000E+00 544 | ], 545 | #/* TN2(3) */ 546 | [ 547 | 1.00422E+00,-7.11212E-03, 5.24480E-03, 0.00000E+00, 0.00000E+00, 548 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-5.28914E-02, 549 | -2.41301E-02, 0.00000E+00, 0.00000E+00,-2.12219E+01,-1.03830E-02, 550 | -3.28077E-03, 1.65727E-02, 1.68564E+00,-6.68154E-03, 0.00000E+00, 551 | 1.45155E-02, 0.00000E+00, 8.42365E-03, 0.00000E+00, 0.00000E+00, 552 | 0.00000E+00,-4.34645E-03, 0.00000E+00, 0.00000E+00, 2.16780E-02, 553 | 0.00000E+00,-1.38459E+02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 554 | 0.00000E+00, 0.00000E+00, 7.04573E-03,-4.73204E+01, 0.00000E+00, 555 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 556 | 0.00000E+00, 0.00000E+00, 1.08767E-02, 0.00000E+00, 0.00000E+00, 557 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 558 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-8.08279E-03, 559 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 5.21769E-04, 560 | -2.27387E-04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 561 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 3.26769E-03, 562 | 3.16901E-03, 4.60316E-04,-1.01431E-04, 1.02131E-03, 9.96601E-04, 563 | 1.25707E+00, 2.50114E+01, 0.00000E+00, 4.24472E-01,-2.77655E+01, 564 | 3.44625E-01, 2.75412E+01, 0.00000E+00, 7.94251E+02, 0.00000E+00, 565 | 2.45835E-03, 1.38871E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 566 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.00000E+00 567 | ], 568 | #/* TN2(4) TN3(1) */ 569 | [ 570 | 1.01890E+00,-2.46603E-02, 1.00078E-02, 0.00000E+00, 0.00000E+00, 571 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-6.70977E-02, 572 | -4.02286E-02, 0.00000E+00, 0.00000E+00,-2.29466E+01,-7.47019E-03, 573 | 2.26580E-03, 2.63931E-02, 3.72625E+01,-6.39041E-03, 0.00000E+00, 574 | 9.58383E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 575 | 0.00000E+00,-1.85291E-03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 576 | 0.00000E+00, 1.39717E+02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 577 | 0.00000E+00, 0.00000E+00, 9.19771E-03,-3.69121E+02, 0.00000E+00, 578 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 579 | 0.00000E+00, 0.00000E+00,-1.57067E-02, 0.00000E+00, 0.00000E+00, 580 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 581 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-7.07265E-03, 582 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-2.92953E-03, 583 | -2.77739E-03,-4.40092E-04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 584 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.47280E-03, 585 | 2.95035E-04,-1.81246E-03, 2.81945E-03, 4.27296E-03, 9.78863E-04, 586 | 1.40545E+00,-6.19173E+00, 0.00000E+00, 0.00000E+00,-7.93632E+01, 587 | 4.44643E-01,-4.03085E+02, 0.00000E+00, 1.15603E+01, 0.00000E+00, 588 | 2.25068E-03, 8.48557E-04,-2.98493E-04, 0.00000E+00, 0.00000E+00, 589 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.00000E+00 590 | ], #/* TN3(2) */ 591 | [ 592 | 9.75801E-01, 3.80680E-02,-3.05198E-02, 0.00000E+00, 0.00000E+00, 593 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 3.85575E-02, 594 | 5.04057E-02, 0.00000E+00, 0.00000E+00,-1.76046E+02, 1.44594E-02, 595 | -1.48297E-03,-3.68560E-03, 3.02185E+01,-3.23338E-03, 0.00000E+00, 596 | 1.53569E-02, 0.00000E+00,-1.15558E-02, 0.00000E+00, 0.00000E+00, 597 | 0.00000E+00, 4.89620E-03, 0.00000E+00, 0.00000E+00,-1.00616E-02, 598 | -8.21324E-03,-1.57757E+02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 599 | 0.00000E+00, 0.00000E+00, 6.63564E-03, 4.58410E+01, 0.00000E+00, 600 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 601 | 0.00000E+00, 0.00000E+00,-2.51280E-02, 0.00000E+00, 0.00000E+00, 602 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 603 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 9.91215E-03, 604 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-8.73148E-04, 605 | -1.29648E-03,-7.32026E-05, 0.00000E+00, 0.00000E+00, 0.00000E+00, 606 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-4.68110E-03, 607 | -4.66003E-03,-1.31567E-03,-7.39390E-04, 6.32499E-04,-4.65588E-04, 608 | -1.29785E+00,-1.57139E+02, 0.00000E+00, 2.58350E-01,-3.69453E+01, 609 | 4.10672E-01, 9.78196E+00,-1.52064E-01,-3.85084E+03, 0.00000E+00, 610 | -8.52706E-04,-1.40945E-03,-7.26786E-04, 0.00000E+00, 0.00000E+00, 611 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.00000E+00 612 | ], #/* TN3(3) */ 613 | [ 614 | 9.60722E-01, 7.03757E-02,-3.00266E-02, 0.00000E+00, 0.00000E+00, 615 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.22671E-02, 616 | 4.10423E-02, 0.00000E+00, 0.00000E+00,-1.63070E+02, 1.06073E-02, 617 | 5.40747E-04, 7.79481E-03, 1.44908E+02, 1.51484E-04, 0.00000E+00, 618 | 1.97547E-02, 0.00000E+00,-1.41844E-02, 0.00000E+00, 0.00000E+00, 619 | 0.00000E+00, 5.77884E-03, 0.00000E+00, 0.00000E+00, 9.74319E-03, 620 | 0.00000E+00,-2.88015E+03, 0.00000E+00, 0.00000E+00, 0.00000E+00, 621 | 0.00000E+00, 0.00000E+00,-4.44902E-03,-2.92760E+01, 0.00000E+00, 622 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 623 | 0.00000E+00, 0.00000E+00, 2.34419E-02, 0.00000E+00, 0.00000E+00, 624 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 625 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 5.36685E-03, 626 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-4.65325E-04, 627 | -5.50628E-04, 3.31465E-04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 628 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-2.06179E-03, 629 | -3.08575E-03,-7.93589E-04,-1.08629E-04, 5.95511E-04,-9.05050E-04, 630 | 1.18997E+00, 4.15924E+01, 0.00000E+00,-4.72064E-01,-9.47150E+02, 631 | 3.98723E-01, 1.98304E+01, 0.00000E+00, 3.73219E+03, 0.00000E+00, 632 | -1.50040E-03,-1.14933E-03,-1.56769E-04, 0.00000E+00, 0.00000E+00, 633 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.00000E+00 634 | ], 635 | #/* TN3(4) */ 636 | [ 637 | 1.03123E+00,-7.05124E-02, 8.71615E-03, 0.00000E+00, 0.00000E+00, 638 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-3.82621E-02, 639 | -9.80975E-03, 0.00000E+00, 0.00000E+00, 2.89286E+01, 9.57341E-03, 640 | 0.00000E+00, 0.00000E+00, 8.66153E+01, 7.91938E-04, 0.00000E+00, 641 | 0.00000E+00, 0.00000E+00, 4.68917E-03, 0.00000E+00, 0.00000E+00, 642 | 0.00000E+00, 7.86638E-03, 0.00000E+00, 0.00000E+00, 9.90827E-03, 643 | 0.00000E+00, 6.55573E+01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 644 | 0.00000E+00, 0.00000E+00, 0.00000E+00,-4.00200E+01, 0.00000E+00, 645 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 646 | 0.00000E+00, 0.00000E+00, 7.07457E-03, 0.00000E+00, 0.00000E+00, 647 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 648 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 5.72268E-03, 649 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-2.04970E-04, 650 | 1.21560E-03,-8.05579E-06, 0.00000E+00, 0.00000E+00, 0.00000E+00, 651 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-2.49941E-03, 652 | -4.57256E-04,-1.59311E-04, 2.96481E-04,-1.77318E-03,-6.37918E-04, 653 | 1.02395E+00, 1.28172E+01, 0.00000E+00, 1.49903E-01,-2.63818E+01, 654 | 0.00000E+00, 4.70628E+01,-2.22139E-01, 4.82292E-02, 0.00000E+00, 655 | -8.67075E-04,-5.86479E-04, 5.32462E-04, 0.00000E+00, 0.00000E+00, 656 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.00000E+00 657 | ], 658 | #/* TN3(5) SURFACE TEMP TSL */ 659 | [ 660 | 1.00828E+00,-9.10404E-02,-2.26549E-02, 0.00000E+00, 0.00000E+00, 661 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-2.32420E-02, 662 | -9.08925E-03, 0.00000E+00, 0.00000E+00, 3.36105E+01, 0.00000E+00, 663 | 0.00000E+00, 0.00000E+00,-1.24957E+01,-5.87939E-03, 0.00000E+00, 664 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 665 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 666 | 0.00000E+00, 2.79765E+01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 667 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.01237E+03, 0.00000E+00, 668 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 669 | 0.00000E+00, 0.00000E+00,-1.75553E-02, 0.00000E+00, 0.00000E+00, 670 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 671 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 672 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 3.29699E-03, 673 | 1.26659E-03, 2.68402E-04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 674 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.17894E-03, 675 | 1.48746E-03, 1.06478E-04, 1.34743E-04,-2.20939E-03,-6.23523E-04, 676 | 6.36539E-01, 1.13621E+01, 0.00000E+00,-3.93777E-01, 2.38687E+03, 677 | 0.00000E+00, 6.61865E+02,-1.21434E-01, 9.27608E+00, 0.00000E+00, 678 | 1.68478E-04, 1.24892E-03, 1.71345E-03, 0.00000E+00, 0.00000E+00, 679 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.00000E+00 680 | ], 681 | #/* TGN3(2) SURFACE GRAD TSLG */ 682 | [ 683 | 1.57293E+00,-6.78400E-01, 6.47500E-01, 0.00000E+00, 0.00000E+00, 684 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-7.62974E-02, 685 | -3.60423E-01, 0.00000E+00, 0.00000E+00, 1.28358E+02, 0.00000E+00, 686 | 0.00000E+00, 0.00000E+00, 4.68038E+01, 0.00000E+00, 0.00000E+00, 687 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 688 | 0.00000E+00,-1.67898E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 689 | 0.00000E+00, 2.90994E+04, 0.00000E+00, 0.00000E+00, 0.00000E+00, 690 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 3.15706E+01, 0.00000E+00, 691 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 692 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 693 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 694 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 695 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 696 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 697 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 698 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 699 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 700 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 701 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 702 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.00000E+00 703 | ], 704 | #/* TGN2(1) TGN1(2) */ 705 | [ 706 | 8.60028E-01, 3.77052E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 707 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-1.17570E+00, 708 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 7.77757E-03, 0.00000E+00, 709 | 0.00000E+00, 0.00000E+00, 1.01024E+02, 0.00000E+00, 0.00000E+00, 710 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 711 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 712 | 0.00000E+00, 6.54251E+02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 713 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 714 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 715 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 716 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 717 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 718 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 719 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 720 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,-1.56959E-02, 721 | 1.91001E-02, 3.15971E-02, 1.00982E-02,-6.71565E-03, 2.57693E-03, 722 | 1.38692E+00, 2.82132E-01, 0.00000E+00, 0.00000E+00, 3.81511E+02, 723 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 724 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 725 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.00000E+00 726 | ], 727 | #/* TGN3(1) TGN2(2) */ 728 | [ 729 | 1.06029E+00,-5.25231E-02, 3.73034E-01, 0.00000E+00, 0.00000E+00, 730 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 3.31072E-02, 731 | -3.88409E-01, 0.00000E+00, 0.00000E+00,-1.65295E+02,-2.13801E-01, 732 | -4.38916E-02,-3.22716E-01,-8.82393E+01, 1.18458E-01, 0.00000E+00, 733 | -4.35863E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 734 | 0.00000E+00,-1.19782E-01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 735 | 0.00000E+00, 2.62229E+01, 0.00000E+00, 0.00000E+00, 0.00000E+00, 736 | 0.00000E+00, 0.00000E+00, 0.00000E+00,-5.37443E+01, 0.00000E+00, 737 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 738 | 0.00000E+00, 0.00000E+00,-4.55788E-01, 0.00000E+00, 0.00000E+00, 739 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 740 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 741 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 3.84009E-02, 742 | 3.96733E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 743 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 5.05494E-02, 744 | 7.39617E-02, 1.92200E-02,-8.46151E-03,-1.34244E-02, 1.96338E-02, 745 | 1.50421E+00, 1.88368E+01, 0.00000E+00, 0.00000E+00,-5.13114E+01, 746 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 747 | 5.11923E-02, 3.61225E-02, 0.00000E+00, 0.00000E+00, 0.00000E+00, 748 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 2.00000E+00 749 | ] ]; 750 | 751 | 752 | #/* SEMIANNUAL MULT SAM */ 753 | sam = [1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 754 | 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 755 | 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 756 | 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 757 | 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 758 | 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 759 | 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 760 | 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 761 | 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 762 | 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 1.00000E+00, 763 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 764 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 765 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 766 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 767 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 768 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 769 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 770 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 771 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 772 | 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00] 773 | 774 | #/* MIDDLE ATMOSPHERE AVERAGES */ 775 | pavgm = [ 2.61000E+02, 2.64000E+02, 2.29000E+02, 2.17000E+02, 2.17000E+02, 776 | 2.23000E+02, 2.86760E+02,-2.93940E+00, 2.50000E+00, 0.00000E+00 ] 777 | -------------------------------------------------------------------------------- /nrlmsise_00.py: -------------------------------------------------------------------------------- 1 | """ 2 | 12/19/2013 3 | Author: Joshua Milas 4 | Python Version: 3.3.2 5 | 6 | The NRLMSISE-00 model 2001 ported to python 7 | Based off of Dominik Brodowski 20100516 version available here 8 | http://www.brodo.de/english/pub/nrlmsise/ 9 | 10 | This is the main program that contains all the functions 11 | /* -------------------------------------------------------------------- */ 12 | /* --------- N R L M S I S E - 0 0 M O D E L 2 0 0 1 ---------- */ 13 | /* -------------------------------------------------------------------- */ 14 | 15 | /* This file is part of the NRLMSISE-00 C source code package - release 16 | * 20041227 17 | * 18 | * The NRLMSISE-00 model was developed by Mike Picone, Alan Hedin, and 19 | * Doug Drob. They also wrote a NRLMSISE-00 distribution package in 20 | * FORTRAN which is available at 21 | * http://uap-www.nrl.navy.mil/models_web/msis/msis_home.htm 22 | * 23 | * Dominik Brodowski implemented and maintains this C version. You can 24 | * reach him at mail@brodo.de. See the file "DOCUMENTATION" for details, 25 | * and check http://www.brodo.de/english/pub/nrlmsise/index.html for 26 | * updated releases of this package. 27 | */ 28 | """ 29 | 30 | 31 | from nrlmsise_00_header import * 32 | from math import * 33 | 34 | """ 35 | /* ------------------------------------------------------------------- */ 36 | /* ------------------------- SHARED VARIABLES ------------------------ */ 37 | /* ------------------------------------------------------------------- */ 38 | """ 39 | 40 | #/* PARMB */ 41 | gsurf = [0.0]; 42 | re = [0.0]; 43 | 44 | #/* GTS3C */ 45 | dd = 0.0; 46 | 47 | #/* DMIX */ 48 | dm04 = 0.0 49 | dm16 = 0.0 50 | dm28 = 0.0 51 | dm32 = 0.0 52 | dm40 = 0.0 53 | dm01 = 0.0 54 | dm14 = 0.0 55 | 56 | #/* MESO7 */ 57 | meso_tn1 = [0.0 for _ in range(5)]; 58 | meso_tn2 = [0.0 for _ in range(4)]; 59 | meso_tn3 = [0.0 for _ in range(5)]; 60 | meso_tgn1 = [0.0 for _ in range(2)]; 61 | meso_tgn2 = [0.0 for _ in range(2)]; 62 | meso_tgn3 = [0.0 for _ in range(2)]; 63 | 64 | #/* POWER7 */ 65 | #/* LOWER7 */ 66 | #Dont to need to do anyt of the externs, they are all here 67 | from nrlmsise_00_data import * 68 | 69 | 70 | #/* LPOLY */ 71 | dfa = 0.0 72 | plg = [[0.0 for _ in range(9)] for _ in range(4)]; 73 | ctloc = 0.0 74 | stloc = 0.0 75 | c2tloc = 0.0 76 | s2tloc = 0.0 77 | s3tloc = 0.0 78 | c3tloc = 0.0 79 | apdf = 0.0 80 | apt = [0.0 for _ in range(4)] 81 | 82 | 83 | #since rgas is used eerywehre usignthe same variable, ill make it glboal 84 | #rgas = 831.44621 85 | #rgas = 831.4 86 | """ 87 | /* ------------------------------------------------------------------- */ 88 | /* ------------------------------ TSELEC ----------------------------- */ 89 | /* ------------------------------------------------------------------- */ 90 | """ 91 | def tselec(flags): 92 | 93 | for i in range(24): 94 | if(i != 9): 95 | if(flags.switches[i]==1): 96 | flags.sw[i]=1 97 | else: 98 | flags.sw[i]=0 99 | 100 | if(flags.switches[i]>0): 101 | flags.swc[i]=1 102 | else: 103 | flags.swc[i]=0 104 | else: 105 | flags.sw[i]=flags.switches[i] 106 | flags.swc[i]=flags.switches[i] 107 | return 108 | 109 | 110 | """ 111 | /* ------------------------------------------------------------------- */ 112 | /* ------------------------------ GLATF ------------------------------ */ 113 | /* ------------------------------------------------------------------- */ 114 | """ 115 | def glatf(lat, gv, reff): 116 | dgtr = 1.74533E-2 117 | c2 = cos(2.0*dgtr*lat) 118 | 119 | #Need to return these since the c program wants pointers to these 120 | gv[0] = 980.616 * (1.0 - 0.0026373 * c2) 121 | reff[0] = 2.0 * (gv[0]) / (3.085462E-6 + 2.27E-9 * c2) * 1.0E-5 #The may-be troubled line 122 | return #gv, rref 123 | 124 | """ 125 | /* ------------------------------------------------------------------- */ 126 | /* ------------------------------ CCOR ------------------------------- */ 127 | /* ------------------------------------------------------------------- */ 128 | """ 129 | def ccor(alt, r, h1, zh): 130 | """ 131 | /* CHEMISTRY/DISSOCIATION CORRECTION FOR MSIS MODELS 132 | * ALT - altitude 133 | * R - target ratio 134 | * H1 - transition scale length 135 | * ZH - altitude of 1/2 R 136 | */ 137 | """ 138 | e = (alt - zh) / h1 139 | if(e>70): 140 | return exp(0) 141 | if (e<-70): 142 | return exp(r) 143 | ex = exp(e) 144 | e = r / (1.0 + ex) 145 | return exp(e) 146 | 147 | ''' 148 | /* ------------------------------------------------------------------- */ 149 | /* ------------------------------ CCOR ------------------------------- */ 150 | /* ------------------------------------------------------------------- */ 151 | ''' 152 | def ccor2(alt, r, h1, zh, h2): 153 | ''' 154 | /* CHEMISTRY/DISSOCIATION CORRECTION FOR MSIS MODELS 155 | * ALT - altitude 156 | * R - target ratio 157 | * H1 - transition scale length 158 | * ZH - altitude of 1/2 R 159 | * H2 - transition scale length #2 ? 160 | */ 161 | ''' 162 | e1 = (alt - zh) / h1; 163 | e2 = (alt - zh) / h2; 164 | if ((e1 > 70) or (e2 > 70)): 165 | return exp(0) 166 | if ((e1 < -70) and (e2 < -70)): 167 | return exp(r) 168 | ex1 = exp(e1); 169 | ex2 = exp(e2); 170 | ccor2v = r / (1.0 + 0.5 * (ex1 + ex2)); 171 | return exp(ccor2v); 172 | 173 | 174 | 175 | """ 176 | /* ------------------------------------------------------------------- */ 177 | /* ------------------------------- SCALH ----------------------------- */ 178 | /* ------------------------------------------------------------------- */ 179 | """ 180 | def scalh(alt, xm, temp): 181 | #rgas = 831.44621 #maybe make this a global constant? 182 | rgas = 831.4 183 | g = gsurf[0] / (pow((1.0 + alt/re[0]),2.0)) 184 | g = rgas * temp / (g * xm) 185 | return g 186 | 187 | 188 | ''' 189 | /* ------------------------------------------------------------------- */ 190 | /* -------------------------------- DNET ----------------------------- */ 191 | /* ------------------------------------------------------------------- */ 192 | ''' 193 | def dnet(dd, dm, zhm, xmm, xm): 194 | ''' 195 | /* TURBOPAUSE CORRECTION FOR MSIS MODELS 196 | * Root mean density 197 | * DD - diffusive density 198 | * DM - full mixed density 199 | * ZHM - transition scale length 200 | * XMM - full mixed molecular weight 201 | * XM - species molecular weight 202 | * DNET - combined density 203 | */ 204 | ''' 205 | a = zhm / (xmm-xm) 206 | if( not((dm>0) and (dd>0))): 207 | print("dnet log error %e %e %e" % (dm, dd, xm)) 208 | if((dd==0) and (dm==0)): 209 | dd=1 210 | if(dm==0): 211 | return dd 212 | if(dd==0): 213 | return dm 214 | 215 | ylog = a * log(dm/dd) 216 | if(ylog < -10): 217 | return dd 218 | if(ylog>10): 219 | return dm 220 | a = dd*pow((1.0 + exp(ylog)),(1.0/a)) 221 | return a 222 | 223 | 224 | ''' 225 | /* ------------------------------------------------------------------- */ 226 | /* ------------------------------- SPLINI ---------------------------- */ 227 | /* ------------------------------------------------------------------- */ 228 | ''' 229 | def splini(xa, ya, y2a, n, x, y): 230 | ''' 231 | /* INTEGRATE CUBIC SPLINE FUNCTION FROM XA(1) TO X 232 | * XA,YA: ARRAYS OF TABULATED FUNCTION IN ASCENDING ORDER BY X 233 | * Y2A: ARRAY OF SECOND DERIVATIVES 234 | * N: SIZE OF ARRAYS XA,YA,Y2A 235 | * X: ABSCISSA ENDPOINT FOR INTEGRATION 236 | * Y: OUTPUT VALUE 237 | */ 238 | ''' 239 | yi = 0 240 | klo = 0 241 | khi = 1 242 | while((x>xa[klo]) and (khi1): 281 | k=int((khi+klo)/2); 282 | if (xa[k]>x): 283 | khi = k 284 | else: 285 | klo = k 286 | h = xa[khi] - xa[klo]; 287 | if (h==0.0): 288 | print("bad XA input to splint") 289 | a = (xa[khi] - x)/h; 290 | b = (x - xa[klo])/h; 291 | yi = a * ya[klo] + b * ya[khi] + ((a*a*a - a) * y2a[klo] + (b*b*b - b) * y2a[khi]) * h * h/6.0; 292 | y[0] = yi #may not need this 293 | return #yi #or this 294 | 295 | 296 | ''' 297 | /* ------------------------------------------------------------------- */ 298 | /* ------------------------------- SPLINE ---------------------------- */ 299 | /* ------------------------------------------------------------------- */ 300 | ''' 301 | def spline(x, y, n, yp1, ypn, y2): 302 | ''' 303 | /* CALCULATE 2ND DERIVATIVES OF CUBIC SPLINE INTERP FUNCTION 304 | * ADAPTED FROM NUMERICAL RECIPES BY PRESS ET AL 305 | * X,Y: ARRAYS OF TABULATED FUNCTION IN ASCENDING ORDER BY X 306 | * N: SIZE OF ARRAYS X,Y 307 | * YP1,YPN: SPECIFIED DERIVATIVES AT X[0] AND X[N-1]; VALUES 308 | * >= 1E30 SIGNAL SIGNAL SECOND DERIVATIVE ZERO 309 | * Y2: OUTPUT ARRAY OF SECOND DERIVATIVES 310 | */ 311 | ''' 312 | u = [0.0 for _ in range(n)] #I think this is the same as malloc 313 | 314 | #no need for the out of memory 315 | 316 | if (yp1 > 0.99E30): 317 | y2[0] = 0 318 | u[0] = 0 319 | else: 320 | y2[0]=-0.5 321 | u[0]=(3.0/(x[1]-x[0]))*((y[1]-y[0])/(x[1]-x[0])-yp1) 322 | 323 | for i in range(1, n-1): 324 | sig = (x[i]-x[i-1])/(x[i+1] - x[i-1]) 325 | p = sig * y2[i-1] + 2.0 326 | y2[i] = (sig - 1.0) / p 327 | u[i] = (6.0 * ((y[i+1] - y[i])/(x[i+1] - x[i]) -(y[i] - y[i-1]) / (x[i] - x[i-1]))/(x[i+1] - x[i-1]) - sig * u[i-1])/p; 328 | 329 | if (ypn>0.99E30): 330 | qn = 0; 331 | un = 0 332 | else: 333 | qn = 0.5 334 | un = (3.0 / (x[n-1] - x[n-2])) * (ypn - (y[n-1] - y[n-2])/(x[n-1] - x[n-2])); 335 | 336 | y2[n-1] = (un - qn * u[n-2]) / (qn * y2[n-2] + 1.0); 337 | 338 | #it uses a for loop here, but its not something python can do (I dont think) 339 | k = n-2 340 | while(k >= 0): 341 | y2[k] = y2[k] * y2[k+1] + u[k] 342 | k -= 1 343 | #This for loop might work 344 | #for k in range(n-2, -1, -1): 345 | # y2[k] = y2[k] * y2[k+1] + u[k] 346 | #no need to free u here 347 | return 348 | 349 | 350 | ''' 351 | /* ------------------------------------------------------------------- */ 352 | /* ------------------------------- DENSM ----------------------------- */ 353 | /* ------------------------------------------------------------------- */ 354 | ''' 355 | def zeta(zz, zl): 356 | return ((zz-zl)*(re[0]+zl)/(re[0]+zz)) #re is the global variable 357 | 358 | def densm(alt, d0, xm, tz, mn3, zn3, tn3, tgn3, mn2, zn2, tn2, tgn2): 359 | ''' 360 | /* Calculate Temperature and Density Profiles for lower atmos. */ 361 | ''' 362 | xs = [0.0 for _ in range(10)] 363 | ys = [0.0 for _ in range(10)] 364 | y2out = [0.0 for _ in range(10)] 365 | rgas = 831.4 366 | #rgas = 831.44621 #maybe make this a global constant? 367 | densm_tmp=d0 368 | if (alt>zn2[0]): 369 | if(xm==0.0): 370 | return tz[0] 371 | else: 372 | return d0 373 | 374 | #/* STRATOSPHERE/MESOSPHERE TEMPERATURE */ 375 | if (alt>zn2[mn2-1]): 376 | z=alt 377 | else: 378 | z=zn2[mn2-1]; 379 | mn=mn2; 380 | z1=zn2[0]; 381 | z2=zn2[mn-1]; 382 | t1=tn2[0]; 383 | t2=tn2[mn-1]; 384 | zg = zeta(z, z1); 385 | zgdif = zeta(z2, z1); 386 | 387 | #/* set up spline nodes */ 388 | for k in range(mn): 389 | xs[k]=zeta(zn2[k],z1)/zgdif; 390 | ys[k]=1.0 / tn2[k]; 391 | yd1=-tgn2[0] / (t1*t1) * zgdif; 392 | yd2=-tgn2[1] / (t2*t2) * zgdif * (pow(((re[0]+z2)/(re[0]+z1)),2.0)); 393 | 394 | #/* calculate spline coefficients */ 395 | spline (xs, ys, mn, yd1, yd2, y2out); #No need to change this 396 | x = zg/zgdif; 397 | y = [0.0] 398 | splint (xs, ys, y2out, mn, x, y); 399 | 400 | #/* temperature at altitude */ 401 | tz[0] = 1.0 / y[0]; 402 | if (xm!=0.0): 403 | #/* calaculate stratosphere / mesospehere density */ 404 | glb = gsurf[0] / (pow((1.0 + z1/re[0]),2.0)); 405 | gamm = xm * glb * zgdif / rgas; 406 | 407 | #/* Integrate temperature profile */ 408 | yi = [0.0] 409 | splini(xs, ys, y2out, mn, x, yi); 410 | expl=gamm*yi[0]; 411 | if (expl>50.0): 412 | expl=50.0 413 | 414 | #/* Density at altitude */ 415 | densm_tmp = densm_tmp * (t1 / tz[0]) * exp(-expl); 416 | 417 | if (alt>zn3[0]): 418 | if (xm==0.0): 419 | return tz[0] 420 | else: 421 | return densm_tmp 422 | 423 | #/* troposhere / stratosphere temperature */ 424 | z = alt; 425 | mn = mn3; 426 | z1=zn3[0]; 427 | z2=zn3[mn-1]; 428 | t1=tn3[0]; 429 | t2=tn3[mn-1]; 430 | zg=zeta(z,z1); 431 | zgdif=zeta(z2,z1); 432 | 433 | 434 | 435 | #/* set up spline nodes */ 436 | for k in range(mn): 437 | xs[k] = zeta(zn3[k],z1) / zgdif; 438 | ys[k] = 1.0 / tn3[k]; 439 | 440 | yd1=-tgn3[0] / (t1*t1) * zgdif; 441 | yd2=-tgn3[1] / (t2*t2) * zgdif * (pow(((re[0]+z2)/(re[0]+z1)),2.0)); 442 | 443 | #/* calculate spline coefficients */ 444 | spline (xs, ys, mn, yd1, yd2, y2out); 445 | x = zg/zgdif; 446 | y = [0.0] 447 | splint (xs, ys, y2out, mn, x, y); 448 | 449 | #/* temperature at altitude */ 450 | tz[0] = 1.0 / y[0]; 451 | if (xm!=0.0): 452 | #/* calaculate tropospheric / stratosphere density */ 453 | glb = gsurf[0] / (pow((1.0 + z1/re[0]),2.0)); 454 | gamm = xm * glb * zgdif / rgas; 455 | 456 | #/* Integrate temperature profile */ 457 | yi = [0.0] 458 | splini(xs, ys, y2out, mn, x, yi); 459 | expl=gamm*yi[0]; 460 | if (expl>50.0): 461 | expl=50.0; 462 | 463 | #/* Density at altitude */ 464 | densm_tmp = densm_tmp * (t1 / tz[0]) * exp(-expl); 465 | 466 | if (xm==0.0): 467 | return tz[0]; 468 | else: 469 | return densm_tmp; 470 | return 471 | 472 | 473 | ''' 474 | /* ------------------------------------------------------------------- */ 475 | /* ------------------------------- DENSU ----------------------------- */ 476 | /* ------------------------------------------------------------------- */ 477 | ''' 478 | def densu(alt, dlb, tinf, tlb, xm, alpha, tz, zlb, s2, mn1, zn1, tn1, tgn1): 479 | ''' 480 | /* Calculate Temperature and Density Profiles for MSIS models 481 | * New lower thermo polynomial 482 | */ 483 | tz, zn1, tn1, and tgn1 are simulated pointers 484 | ''' 485 | rgas = 831.4 486 | #rgas = 831.44621 #maybe make this a global constant? 487 | densu_temp = 1.0 488 | 489 | xs = [0.0 for _ in range(5)] 490 | ys = [0.0 for _ in range(5)] 491 | y2out = [0.0 for _ in range(5)] 492 | 493 | #/* joining altitudes of Bates and spline */ 494 | za=zn1[0]; 495 | if (alt>za): 496 | z=alt; 497 | else: 498 | z=za; 499 | 500 | #/* geopotential altitude difference from ZLB */ 501 | zg2 = zeta(z, zlb); 502 | 503 | #/* Bates temperature */ 504 | tt = tinf - (tinf - tlb) * exp(-s2*zg2); 505 | ta = tt; 506 | tz[0] = tt 507 | densu_temp = tz[0] 508 | 509 | if (altzn1[mn1-1]): 516 | z=alt; 517 | else: 518 | z=zn1[mn1-1]; 519 | mn=mn1; 520 | z1=zn1[0]; 521 | z2=zn1[mn-1]; 522 | t1=tn1[0]; 523 | t2=tn1[mn-1]; 524 | #/* geopotental difference from z1 */ 525 | zg = zeta (z, z1); 526 | zgdif = zeta(z2, z1); 527 | #/* set up spline nodes */ 528 | for k in range(mn): 529 | xs[k] = zeta(zn1[k], z1) / zgdif; 530 | ys[k] = 1.0 / tn1[k]; 531 | 532 | #/* end node derivatives */ 533 | yd1 = -tgn1[0] / (t1*t1) * zgdif; 534 | yd2 = -tgn1[1] / (t2*t2) * zgdif * pow(((re[0]+z2)/(re[0]+z1)),2.0); 535 | #/* calculate spline coefficients */ 536 | spline (xs, ys, mn, yd1, yd2, y2out); 537 | x = zg / zgdif; 538 | y = [0.0] 539 | splint (xs, ys, y2out, mn, x, y); 540 | #/* temperature at altitude */ 541 | tz[0] = 1.0 / y[0]; 542 | densu_temp = tz[0]; 543 | 544 | if (xm==0): 545 | return densu_temp; 546 | 547 | #/* calculate density above za */ 548 | glb = gsurf[0] / pow((1.0 + zlb/re[0]),2.0); 549 | gamma = xm * glb / (s2 * rgas * tinf); 550 | expl = exp(-s2 * gamma * zg2); 551 | if (expl>50.0): 552 | expl=50.0; 553 | if (tt<=0): 554 | expl=50.0; 555 | 556 | #/* density at altitude */ 557 | densa = dlb * pow((tlb/tt),((1.0+alpha+gamma))) * expl; 558 | densu_temp=densa; 559 | if (alt>=za): 560 | return densu_temp; 561 | 562 | #/* calculate density below za */ 563 | glb = gsurf[0] / pow((1.0 + z1/re[0]),2.0); 564 | gamm = xm * glb * zgdif / rgas; 565 | 566 | #/* integrate spline temperatures */ 567 | yi = [0] 568 | splini (xs, ys, y2out, mn, x, yi); 569 | expl = gamm * yi[0]; 570 | if (expl>50.0): 571 | expl=50.0; 572 | if (tz[0]<=0): 573 | expl=50.0; 574 | 575 | #/* density at altitude */ 576 | densu_temp = densu_temp * pow ((t1 / tz[0]),(1.0 + alpha)) * exp(-expl); 577 | return densu_temp; 578 | 579 | 580 | ''' 581 | /* ------------------------------------------------------------------- */ 582 | /* ------------------------------- GLOBE7 ---------------------------- */ 583 | /* ------------------------------------------------------------------- */ 584 | ''' 585 | 586 | #/* 3hr Magnetic activity functions */ 587 | #/* Eq. A24d */ 588 | def g0(a, p): 589 | return (a - 4.0 + (p[25] - 1.0) * (a - 4.0 + (exp(-sqrt(p[24]*p[24]) * (a - 4.0)) - 1.0) / sqrt(p[24]*p[24]))); 590 | 591 | 592 | #/* Eq. A24c */ 593 | def sumex(ex): 594 | return (1.0 + (1.0 - pow(ex,19.0)) / (1.0 - ex) * pow(ex,0.5)); 595 | 596 | 597 | #/* Eq. A24a */ 598 | def sg0(ex, p, ap): 599 | return (g0(ap[1],p) + (g0(ap[2],p)*ex + g0(ap[3],p)*ex*ex + \ 600 | g0(ap[4],p)*pow(ex,3.0) + (g0(ap[5],p)*pow(ex,4.0) + \ 601 | g0(ap[6],p)*pow(ex,12.0))*(1.0-pow(ex,8.0))/(1.0-ex)))/sumex(ex); 602 | 603 | 604 | def globe7(p, Input, flags): 605 | ''' 606 | /* CALCULATE G(L) FUNCTION 607 | * Upper Thermosphere Parameters */ 608 | ''' 609 | t = [0 for _ in range(15)] #modified this, there was a for loop that did this 610 | sw9 = 1 611 | sr = 7.2722E-5; 612 | dgtr = 1.74533E-2; 613 | dr = 1.72142E-2; 614 | hr = 0.2618; 615 | 616 | tloc = Input.lst 617 | #for j in range(14): 618 | # t[j] = 0 619 | if(flags.sw[9] > 0): 620 | sw9 = 1 621 | elif(flags.sw[9] < 0): 622 | sw9 = -1 623 | xlong = Input.g_long 624 | 625 | #/* calculate legendre polynomials */ 626 | c = sin(Input.g_lat * dgtr); 627 | s = cos(Input.g_lat * dgtr); 628 | c2 = c*c; 629 | c4 = c2*c2; 630 | s2 = s*s; 631 | 632 | plg[0][1] = c; 633 | plg[0][2] = 0.5*(3.0*c2 -1.0); 634 | plg[0][3] = 0.5*(5.0*c*c2-3.0*c); 635 | plg[0][4] = (35.0*c4 - 30.0*c2 + 3.0)/8.0; 636 | plg[0][5] = (63.0*c2*c2*c - 70.0*c2*c + 15.0*c)/8.0; 637 | plg[0][6] = (11.0*c*plg[0][5] - 5.0*plg[0][4])/6.0; 638 | #/* plg[0][7] = (13.0*c*plg[0][6] - 6.0*plg[0][5])/7.0; */ 639 | plg[1][1] = s; 640 | plg[1][2] = 3.0*c*s; 641 | plg[1][3] = 1.5*(5.0*c2-1.0)*s; 642 | plg[1][4] = 2.5*(7.0*c2*c-3.0*c)*s; 643 | plg[1][5] = 1.875*(21.0*c4 - 14.0*c2 +1.0)*s; 644 | plg[1][6] = (11.0*c*plg[1][5]-6.0*plg[1][4])/5.0; 645 | #/* plg[1][7] = (13.0*c*plg[1][6]-7.0*plg[1][5])/6.0; */ 646 | #/* plg[1][8] = (15.0*c*plg[1][7]-8.0*plg[1][6])/7.0; */ 647 | plg[2][2] = 3.0*s2; 648 | plg[2][3] = 15.0*s2*c; 649 | plg[2][4] = 7.5*(7.0*c2 -1.0)*s2; 650 | plg[2][5] = 3.0*c*plg[2][4]-2.0*plg[2][3]; 651 | plg[2][6] =(11.0*c*plg[2][5]-7.0*plg[2][4])/4.0; 652 | plg[2][7] =(13.0*c*plg[2][6]-8.0*plg[2][5])/5.0; 653 | plg[3][3] = 15.0*s2*s; 654 | plg[3][4] = 105.0*s2*s*c; 655 | plg[3][5] =(9.0*c*plg[3][4]-7.*plg[3][3])/2.0; 656 | plg[3][6] =(11.0*c*plg[3][5]-8.*plg[3][4])/3.0; 657 | 658 | if( not (((flags.sw[7]==0) and (flags.sw[8]==0)) and (flags.sw[14] == 0))): 659 | global stloc 660 | stloc = sin(hr*tloc); 661 | global ctloc 662 | ctloc = cos(hr*tloc); 663 | global s2tloc 664 | s2tloc = sin(2.0*hr*tloc); 665 | global c2tloc 666 | c2tloc = cos(2.0*hr*tloc); 667 | global s3tloc 668 | s3tloc = sin(3.0*hr*tloc); 669 | global c3tloc 670 | c3tloc = cos(3.0*hr*tloc); 671 | 672 | cd32 = cos(dr*(Input.doy-p[31])); 673 | cd18 = cos(2.0*dr*(Input.doy-p[17])); 674 | cd14 = cos(dr*(Input.doy-p[13])); 675 | cd39 = cos(2.0*dr*(Input.doy-p[38])); 676 | p32=p[31]; 677 | p18=p[17]; 678 | p14=p[13]; 679 | p39=p[38]; 680 | 681 | #/* F10.7 EFFECT */ 682 | df = Input.f107 - Input.f107A; 683 | global dfa 684 | dfa = Input.f107A - 150.0; 685 | t[0] = p[19]*df*(1.0+p[59]*dfa) + p[20]*df*df + p[21]*dfa + p[29]*pow(dfa,2.0); 686 | f1 = 1.0 + (p[47]*dfa +p[19]*df+p[20]*df*df)*flags.swc[1]; 687 | f2 = 1.0 + (p[49]*dfa+p[19]*df+p[20]*df*df)*flags.swc[1]; 688 | 689 | #/* TIME INDEPENDENT */ 690 | t[1] = (p[1]*plg[0][2]+ p[2]*plg[0][4]+p[22]*plg[0][6]) + \ 691 | (p[14]*plg[0][2])*dfa*flags.swc[1] +p[26]*plg[0][1]; 692 | 693 | #/* SYMMETRICAL ANNUAL */ 694 | t[2] = p[18]*cd32; 695 | 696 | #/* SYMMETRICAL SEMIANNUAL */ 697 | t[3] = (p[15]+p[16]*plg[0][2])*cd18; 698 | 699 | #/* ASYMMETRICAL ANNUAL */ 700 | t[4] = f1*(p[9]*plg[0][1]+p[10]*plg[0][3])*cd14; 701 | 702 | #/* ASYMMETRICAL SEMIANNUAL */ 703 | t[5] = p[37]*plg[0][1]*cd39; 704 | 705 | #/* DIURNAL */ 706 | if (flags.sw[7]): 707 | t71 = (p[11]*plg[1][2])*cd14*flags.swc[5]; 708 | t72 = (p[12]*plg[1][2])*cd14*flags.swc[5]; 709 | t[6] = f2*((p[3]*plg[1][1] + p[4]*plg[1][3] + p[27]*plg[1][5] + t71) * \ 710 | ctloc + (p[6]*plg[1][1] + p[7]*plg[1][3] + p[28]*plg[1][5] \ 711 | + t72)*stloc); 712 | 713 | 714 | #/* SEMIDIURNAL */ 715 | if (flags.sw[8]): 716 | t81 = (p[23]*plg[2][3]+p[35]*plg[2][5])*cd14*flags.swc[5]; 717 | t82 = (p[33]*plg[2][3]+p[36]*plg[2][5])*cd14*flags.swc[5]; 718 | t[7] = f2*((p[5]*plg[2][2]+ p[41]*plg[2][4] + t81)*c2tloc +(p[8]*plg[2][2] + p[42]*plg[2][4] + t82)*s2tloc); 719 | 720 | 721 | #/* TERDIURNAL */ 722 | if (flags.sw[14]): 723 | t[13] = f2 * ((p[39]*plg[3][3]+(p[93]*plg[3][4]+p[46]*plg[3][6])*cd14*flags.swc[5])* s3tloc +(p[40]*plg[3][3]+(p[94]*plg[3][4]+p[48]*plg[3][6])*cd14*flags.swc[5])* c3tloc); 724 | 725 | 726 | #/* magnetic activity based on daily ap */ 727 | if (flags.sw[9]==-1): 728 | ap = Input.ap_a; 729 | if (p[51]!=0): 730 | exp1 = exp(-10800.0*sqrt(p[51]*p[51])/(1.0+p[138]*(45.0-sqrt(Input.g_lat*Input.g_lat)))); 731 | if (exp1>0.99999): 732 | exp1=0.99999; 733 | if (p[24]<1.0E-4): 734 | p[24]=1.0E-4; 735 | apt[0]=sg0(exp1,p,ap.a); 736 | #/* apt[1]=sg2(exp1,p,ap->a); 737 | # apt[2]=sg0(exp2,p,ap->a); 738 | # apt[3]=sg2(exp2,p,ap->a); 739 | #*/ 740 | if (flags.sw[9]): 741 | t[8] = apt[0]*(p[50]+p[96]*plg[0][2]+p[54]*plg[0][4]+ \ 742 | (p[125]*plg[0][1]+p[126]*plg[0][3]+p[127]*plg[0][5])*cd14*flags.swc[5]+ \ 743 | (p[128]*plg[1][1]+p[129]*plg[1][3]+p[130]*plg[1][5])*flags.swc[7]* \ 744 | cos(hr*(tloc-p[131]))); 745 | 746 | 747 | else: 748 | apd=Input.ap-4.0; 749 | p44=p[43]; 750 | p45=p[44]; 751 | if (p44<0): 752 | p44 = 1.0E-5; 753 | global apdf 754 | apdf = apd + (p45-1.0)*(apd + (exp(-p44 * apd) - 1.0)/p44); 755 | if (flags.sw[9]): 756 | t[8]=apdf*(p[32]+p[45]*plg[0][2]+p[34]*plg[0][4]+ \ 757 | (p[100]*plg[0][1]+p[101]*plg[0][3]+p[102]*plg[0][5])*cd14*flags.swc[5]+ 758 | (p[121]*plg[1][1]+p[122]*plg[1][3]+p[123]*plg[1][5])*flags.swc[7]* 759 | cos(hr*(tloc-p[124]))); 760 | 761 | 762 | 763 | if ((flags.sw[10]) and (Input.g_long>-1000.0)): 764 | 765 | #/* longitudinal */ 766 | if (flags.sw[11]): 767 | t[10] = (1.0 + p[80]*dfa*flags.swc[1])* \ 768 | ((p[64]*plg[1][2]+p[65]*plg[1][4]+p[66]*plg[1][6]\ 769 | +p[103]*plg[1][1]+p[104]*plg[1][3]+p[105]*plg[1][5]\ 770 | +flags.swc[5]*(p[109]*plg[1][1]+p[110]*plg[1][3]+p[111]*plg[1][5])*cd14)* \ 771 | cos(dgtr*Input.g_long) \ 772 | +(p[90]*plg[1][2]+p[91]*plg[1][4]+p[92]*plg[1][6]\ 773 | +p[106]*plg[1][1]+p[107]*plg[1][3]+p[108]*plg[1][5]\ 774 | +flags.swc[5]*(p[112]*plg[1][1]+p[113]*plg[1][3]+p[114]*plg[1][5])*cd14)* \ 775 | sin(dgtr*Input.g_long)); 776 | 777 | 778 | #/* ut and mixed ut, longitude */ 779 | if (flags.sw[12]): 780 | t[11]=(1.0+p[95]*plg[0][1])*(1.0+p[81]*dfa*flags.swc[1])*\ 781 | (1.0+p[119]*plg[0][1]*flags.swc[5]*cd14)*\ 782 | ((p[68]*plg[0][1]+p[69]*plg[0][3]+p[70]*plg[0][5])*\ 783 | cos(sr*(Input.sec-p[71]))); 784 | t[11]+=flags.swc[11]*\ 785 | (p[76]*plg[2][3]+p[77]*plg[2][5]+p[78]*plg[2][7])*\ 786 | cos(sr*(Input.sec-p[79])+2.0*dgtr*Input.g_long)*(1.0+p[137]*dfa*flags.swc[1]); 787 | 788 | 789 | #/* ut, longitude magnetic activity */ 790 | if (flags.sw[13]): 791 | if (flags.sw[9]==-1): 792 | if (p[51]): 793 | t[12]=apt[0]*flags.swc[11]*(1.+p[132]*plg[0][1])*\ 794 | ((p[52]*plg[1][2]+p[98]*plg[1][4]+p[67]*plg[1][6])*\ 795 | cos(dgtr*(Input.g_long-p[97])))\ 796 | +apt[0]*flags.swc[11]*flags.swc[5]*\ 797 | (p[133]*plg[1][1]+p[134]*plg[1][3]+p[135]*plg[1][5])*\ 798 | cd14*cos(dgtr*(Input.g_long-p[136])) \ 799 | +apt[0]*flags.swc[12]* \ 800 | (p[55]*plg[0][1]+p[56]*plg[0][3]+p[57]*plg[0][5])*\ 801 | cos(sr*(Input.sec-p[58])); 802 | 803 | else: 804 | t[12] = apdf*flags.swc[11]*(1.0+p[120]*plg[0][1])*\ 805 | ((p[60]*plg[1][2]+p[61]*plg[1][4]+p[62]*plg[1][6])*\ 806 | cos(dgtr*(Input.g_long-p[63])))\ 807 | +apdf*flags.swc[11]*flags.swc[5]* \ 808 | (p[115]*plg[1][1]+p[116]*plg[1][3]+p[117]*plg[1][5])* \ 809 | cd14*cos(dgtr*(Input.g_long-p[118])) \ 810 | + apdf*flags.swc[12]* \ 811 | (p[83]*plg[0][1]+p[84]*plg[0][3]+p[85]*plg[0][5])* \ 812 | cos(sr*(Input.sec-p[75])); 813 | 814 | 815 | 816 | 817 | #/* parms not used: 82, 89, 99, 139-149 */ 818 | tinf = p[30]; 819 | for i in range(14): 820 | tinf = tinf + abs(flags.sw[i+1])*t[i]; 821 | return tinf; 822 | 823 | 824 | ''' 825 | /* ------------------------------------------------------------------- */ 826 | /* ------------------------------- GLOB7S ---------------------------- */ 827 | /* ------------------------------------------------------------------- */ 828 | ''' 829 | def glob7s(p, Input, flags): 830 | ''' 831 | /* VERSION OF GLOBE FOR LOWER ATMOSPHERE 10/26/99 832 | */ 833 | ''' 834 | pset = 2.0 835 | t = [0.0 for _ in range(14)] 836 | dr=1.72142E-2; 837 | dgtr=1.74533E-2; 838 | 839 | #/* confirm parameter set */ 840 | if (p[99]==0): 841 | p[99]=pset; 842 | if (p[99]!=pset): 843 | printf("Wrong parameter set for glob7s\n"); 844 | return -1; 845 | 846 | #for j in range(14): #Already taken care of 847 | # t[j]=0.0; 848 | cd32 = cos(dr*(Input.doy-p[31])); 849 | cd18 = cos(2.0*dr*(Input.doy-p[17])); 850 | cd14 = cos(dr*(Input.doy-p[13])); 851 | cd39 = cos(2.0*dr*(Input.doy-p[38])); 852 | p32=p[31]; 853 | p18=p[17]; 854 | p14=p[13]; 855 | p39=p[38]; 856 | 857 | #/* F10.7 */ 858 | t[0] = p[21]*dfa; 859 | 860 | #/* time independent */ 861 | t[1]=p[1]*plg[0][2] + p[2]*plg[0][4] + p[22]*plg[0][6] + p[26]*plg[0][1] + p[14]*plg[0][3] + p[59]*plg[0][5]; 862 | 863 | #/* SYMMETRICAL ANNUAL */ 864 | t[2]=(p[18]+p[47]*plg[0][2]+p[29]*plg[0][4])*cd32; 865 | 866 | #/* SYMMETRICAL SEMIANNUAL */ 867 | t[3]=(p[15]+p[16]*plg[0][2]+p[30]*plg[0][4])*cd18; 868 | 869 | #/* ASYMMETRICAL ANNUAL */ 870 | t[4]=(p[9]*plg[0][1]+p[10]*plg[0][3]+p[20]*plg[0][5])*cd14; 871 | 872 | #/* ASYMMETRICAL SEMIANNUAL */ 873 | t[5]=(p[37]*plg[0][1])*cd39; 874 | 875 | #/* DIURNAL */ 876 | if (flags.sw[7]): 877 | t71 = p[11]*plg[1][2]*cd14*flags.swc[5]; 878 | t72 = p[12]*plg[1][2]*cd14*flags.swc[5]; 879 | t[6] = ((p[3]*plg[1][1] + p[4]*plg[1][3] + t71) * ctloc + (p[6]*plg[1][1] + p[7]*plg[1][3] + t72) * stloc) ; 880 | 881 | 882 | #/* SEMIDIURNAL */ 883 | if (flags.sw[8]): 884 | t81 = (p[23]*plg[2][3]+p[35]*plg[2][5])*cd14*flags.swc[5]; 885 | t82 = (p[33]*plg[2][3]+p[36]*plg[2][5])*cd14*flags.swc[5]; 886 | t[7] = ((p[5]*plg[2][2] + p[41]*plg[2][4] + t81) * c2tloc + (p[8]*plg[2][2] + p[42]*plg[2][4] + t82) * s2tloc); 887 | 888 | 889 | #/* TERDIURNAL */ 890 | if (flags.sw[14]): 891 | t[13] = p[39] * plg[3][3] * s3tloc + p[40] * plg[3][3] * c3tloc; 892 | 893 | 894 | #/* MAGNETIC ACTIVITY */ 895 | if (flags.sw[9]): 896 | if (flags.sw[9]==1): 897 | t[8] = apdf * (p[32] + p[45] * plg[0][2] * flags.swc[2]); 898 | if (flags.sw[9]==-1): 899 | t[8]=(p[50]*apt[0] + p[96]*plg[0][2] * apt[0]*flags.swc[2]); 900 | 901 | 902 | #/* LONGITUDINAL */ 903 | if ( not((flags.sw[10]==0) or (flags.sw[11]==0) or (Input.g_long<=-1000.0))): 904 | t[10] = (1.0 + plg[0][1]*(p[80]*flags.swc[5]*cos(dr*(Input.doy-p[81]))\ 905 | +p[85]*flags.swc[6]*cos(2.0*dr*(Input.doy-p[86])))\ 906 | +p[83]*flags.swc[3]*cos(dr*(Input.doy-p[84]))\ 907 | +p[87]*flags.swc[4]*cos(2.0*dr*(Input.doy-p[88])))\ 908 | *((p[64]*plg[1][2]+p[65]*plg[1][4]+p[66]*plg[1][6]\ 909 | +p[74]*plg[1][1]+p[75]*plg[1][3]+p[76]*plg[1][5]\ 910 | )*cos(dgtr*Input.g_long)\ 911 | +(p[90]*plg[1][2]+p[91]*plg[1][4]+p[92]*plg[1][6]\ 912 | +p[77]*plg[1][1]+p[78]*plg[1][3]+p[79]*plg[1][5]\ 913 | )*sin(dgtr*Input.g_long)); 914 | 915 | tt=0; 916 | for i in range(14): 917 | tt+=abs(flags.sw[i+1])*t[i]; 918 | return tt; 919 | 920 | 921 | ''' 922 | /* ------------------------------------------------------------------- */ 923 | /* ------------------------------- GTD7 ------------------------------ */ 924 | /* ------------------------------------------------------------------- */ 925 | ''' 926 | def gtd7(Input, flags, output): 927 | mn3 = 5 928 | zn3 = [32.5,20.0,15.0,10.0,0.0] 929 | mn2 = 4 930 | zn2 = [72.5,55.0,45.0,32.5] 931 | zmix = 62.5 932 | soutput = nrlmsise_output() 933 | 934 | tselec(flags); 935 | 936 | #/* Latitude variation of gravity (none for sw[2]=0) */ 937 | xlat=Input.g_lat; 938 | if (flags.sw[2]==0): 939 | xlat=45.0; 940 | glatf(xlat, gsurf, re); 941 | 942 | xmm = pdm[2][4]; 943 | 944 | #/* THERMOSPHERE / MESOSPHERE (above zn2[0]) */ 945 | if (Input.alt>zn2[0]): 946 | altt=Input.alt; 947 | else: 948 | altt=zn2[0]; 949 | 950 | tmp=Input.alt; 951 | Input.alt=altt; 952 | 953 | gts7(Input, flags, soutput); 954 | altt=Input.alt; 955 | Input.alt=tmp; 956 | if (flags.sw[0]): #/* metric adjustment */ 957 | dm28m= dm28*1.0E6; 958 | else: 959 | dm28m = dm28; 960 | output.t[0]=soutput.t[0]; 961 | output.t[1]=soutput.t[1]; 962 | if (Input.alt>=zn2[0]): 963 | for i in range(9): 964 | output.d[i]=soutput.d[i]; 965 | return 966 | 967 | 968 | #/* LOWER MESOSPHERE/UPPER STRATOSPHERE (between zn3[0] and zn2[0]) 969 | #* Temperature at nodes and gradients at end nodes 970 | #* Inverse temperature a linear function of spherical harmonics 971 | #*/ 972 | meso_tgn2[0]=meso_tgn1[1]; 973 | meso_tn2[0]=meso_tn1[4]; 974 | meso_tn2[1]=pma[0][0]*pavgm[0]/(1.0-flags.sw[20]*glob7s(pma[0], Input, flags)); 975 | meso_tn2[2]=pma[1][0]*pavgm[1]/(1.0-flags.sw[20]*glob7s(pma[1], Input, flags)); 976 | meso_tn2[3]=pma[2][0]*pavgm[2]/(1.0-flags.sw[20]*flags.sw[22]*glob7s(pma[2], Input, flags)); 977 | meso_tgn2[1]=pavgm[8]*pma[9][0]*(1.0+flags.sw[20]*flags.sw[22]*glob7s(pma[9], Input, flags))*meso_tn2[3]*meso_tn2[3]/(pow((pma[2][0]*pavgm[2]),2.0)); 978 | meso_tn3[0]=meso_tn2[3]; 979 | 980 | if (Input.altzmix): 997 | dmc = 1.0 - (zn2[0]-Input.alt)/(zn2[0] - zmix); 998 | dz28=soutput.d[2]; 999 | 1000 | #/**** N2 density ****/ 1001 | dmr=soutput.d[2] / dm28m - 1.0; 1002 | tz = [0.0] 1003 | output.d[2]=densm(Input.alt,dm28m,xmm, tz, mn3, zn3, meso_tn3, meso_tgn3, mn2, zn2, meso_tn2, meso_tgn2); 1004 | output.d[2]=output.d[2] * (1.0 + dmr*dmc); 1005 | 1006 | #/**** HE density ****/ 1007 | dmr = soutput.d[0] / (dz28 * pdm[0][1]) - 1.0; 1008 | output.d[0] = output.d[2] * pdm[0][1] * (1.0 + dmr*dmc); 1009 | 1010 | #/**** O density ****/ 1011 | output.d[1] = 0; 1012 | output.d[8] = 0; 1013 | 1014 | #/**** O2 density ****/ 1015 | dmr = soutput.d[3] / (dz28 * pdm[3][1]) - 1.0; 1016 | output.d[3] = output.d[2] * pdm[3][1] * (1.0 + dmr*dmc); 1017 | 1018 | #/**** AR density ***/ 1019 | dmr = soutput.d[4] / (dz28 * pdm[4][1]) - 1.0; 1020 | output.d[4] = output.d[2] * pdm[4][1] * (1.0 + dmr*dmc); 1021 | 1022 | #/**** Hydrogen density ****/ 1023 | output.d[6] = 0; 1024 | 1025 | #/**** Atomic nitrogen density ****/ 1026 | output.d[7] = 0; 1027 | 1028 | #/**** Total mass density */ 1029 | output.d[5] = 1.66E-24 * (4.0 * output.d[0] + 16.0 * output.d[1] + 28.0 * output.d[2] + 32.0 * output.d[3] + 40.0 * output.d[4] + output.d[6] + 14.0 * output.d[7]); 1030 | 1031 | if (flags.sw[0]): 1032 | output.d[5]=output.d[5]/1000; 1033 | 1034 | #/**** temperature at altitude ****/ 1035 | global dd 1036 | dd = densm(Input.alt, 1.0, 0, tz, mn3, zn3, meso_tn3, meso_tgn3, mn2, zn2, meso_tn2, meso_tgn2); 1037 | output.t[1]=tz[0]; 1038 | return 1039 | 1040 | 1041 | ''' 1042 | /* ------------------------------------------------------------------- */ 1043 | /* ------------------------------- GTD7D ----------------------------- */ 1044 | /* ------------------------------------------------------------------- */ 1045 | ''' 1046 | def gtd7d(Input, flags, output): 1047 | gtd7(Input, flags, output) 1048 | output.d[5] = 1.66E-24 * (4.0 * output.d[0] + 16.0 * output.d[1] + 28.0 * output.d[2] + 32.0 * output.d[3] + 40.0 * output.d[4] + output.d[6] + 14.0 * output.d[7] + 16.0 * output.d[8]); 1049 | if (flags.sw[0]): 1050 | output.d[5]=output.d[5]/1000; 1051 | return 1052 | 1053 | 1054 | ''' 1055 | /* ------------------------------------------------------------------- */ 1056 | /* -------------------------------- GHP7 ----------------------------- */ 1057 | /* ------------------------------------------------------------------- */ 1058 | ''' 1059 | def ghp7(Input, flags, output, press): 1060 | bm = 1.3806E-19; 1061 | rgas = 831.4; 1062 | #rgas = 831.44621 #maybe make this a global constant? 1063 | test = 0.00043; 1064 | ltest = 12; 1065 | 1066 | pl = log10(press) 1067 | 1068 | if (pl >= -5.0): 1069 | if (pl>2.5): 1070 | zi = 18.06 * (3.00 - pl); 1071 | elif ((pl>0.075) and (pl<=2.5)): 1072 | zi = 14.98 * (3.08 - pl); 1073 | elif ((pl>-1) and (pl<=0.075)): 1074 | zi = 17.80 * (2.72 - pl); 1075 | elif ((pl>-2) and (pl<=-1)): 1076 | zi = 14.28 * (3.64 - pl); 1077 | elif ((pl>-4) and (pl<=-2)): 1078 | zi = 12.72 * (4.32 -pl); 1079 | elif (pl<=-4): 1080 | zi = 25.3 * (0.11 - pl); 1081 | cl = Input.g_lat/90.0; 1082 | cl2 = cl*cl; 1083 | if (Input.doy<182): 1084 | cd = (1.0 - float(Input.doy)) / 91.25; 1085 | else: 1086 | cd = (float(Input.doy)) / 91.25 - 3.0; 1087 | ca = 0; 1088 | if ((pl > -1.11) and (pl<=-0.23)): 1089 | ca = 1.0; 1090 | if (pl > -0.23): 1091 | ca = (2.79 - pl) / (2.79 + 0.23); 1092 | if ((pl <= -1.11) and (pl>-3)): 1093 | ca = (-2.93 - pl)/(-2.93 + 1.11); 1094 | z = zi - 4.87 * cl * cd * ca - 1.64 * cl2 * ca + 0.31 * ca * cl; 1095 | else: 1096 | z = 22.0 * pow((pl + 4.0),2.0) + 110.0; 1097 | 1098 | #/* iteration loop */ 1099 | l = 0; 1100 | while(True): 1101 | l += 1; 1102 | Input.alt = z; 1103 | gtd7(Input, flags, output); 1104 | z = Input.alt; 1105 | xn = output.d[0] + output.d[1] + output.d[2] + output.d[3] + output.d[4] + output.d[6] + output.d[7]; 1106 | p = bm * xn * output.t[1]; 1107 | if (flags.sw[0]): 1108 | p = p*1.0E-6; 1109 | diff = pl - log10(p); 1110 | if (sqrt(diff*diff) 72.5 km! 1140 | */ 1141 | ''' 1142 | zn1 = [120.0, 110.0, 100.0, 90.0, 72.5] 1143 | mn1 = 5 1144 | dgtr=1.74533E-2; 1145 | dr=1.72142E-2; 1146 | alpha = [-0.38, 0.0, 0.0, 0.0, 0.17, 0.0, -0.38, 0.0, 0.0] 1147 | altl = [200.0, 300.0, 160.0, 250.0, 240.0, 450.0, 320.0, 450.0] 1148 | za = pdl[1][15]; 1149 | zn1[0] = za; 1150 | 1151 | for j in range(9): 1152 | output.d[j]=0; 1153 | 1154 | #/* TINF VARIATIONS NOT IMPORTANT BELOW ZA OR ZN1(1) */ 1155 | if (Input.alt>zn1[0]): 1156 | tinf = ptm[0]*pt[0] * \ 1157 | (1.0+flags.sw[16]*globe7(pt,Input,flags)); 1158 | else: 1159 | tinf = ptm[0]*pt[0]; 1160 | output.t[0]=tinf; 1161 | 1162 | #/* GRADIENT VARIATIONS NOT IMPORTANT BELOW ZN1(5) */ 1163 | if (Input.alt>zn1[4]): 1164 | g0 = ptm[3]*ps[0] * \ 1165 | (1.0+flags.sw[19]*globe7(ps,Input,flags)); 1166 | else: 1167 | g0 = ptm[3]*ps[0]; 1168 | tlb = ptm[1] * (1.0 + flags.sw[17]*globe7(pd[3],Input,flags))*pd[3][0]; 1169 | s = g0 / (tinf - tlb); 1170 | 1171 | #/* Lower thermosphere temp variations not significant for 1172 | # * density above 300 km */ 1173 | if (Input.alt<300.0): 1174 | meso_tn1[1]=ptm[6]*ptl[0][0]/(1.0-flags.sw[18]*glob7s(ptl[0], Input, flags)); 1175 | meso_tn1[2]=ptm[2]*ptl[1][0]/(1.0-flags.sw[18]*glob7s(ptl[1], Input, flags)); 1176 | meso_tn1[3]=ptm[7]*ptl[2][0]/(1.0-flags.sw[18]*glob7s(ptl[2], Input, flags)); 1177 | meso_tn1[4]=ptm[4]*ptl[3][0]/(1.0-flags.sw[18]*flags.sw[20]*glob7s(ptl[3], Input, flags)); 1178 | meso_tgn1[1]=ptm[8]*pma[8][0]*(1.0+flags.sw[18]*flags.sw[20]*glob7s(pma[8], Input, flags))*meso_tn1[4]*meso_tn1[4]/(pow((ptm[4]*ptl[3][0]),2.0)); 1179 | else: 1180 | meso_tn1[1]=ptm[6]*ptl[0][0]; 1181 | meso_tn1[2]=ptm[2]*ptl[1][0]; 1182 | meso_tn1[3]=ptm[7]*ptl[2][0]; 1183 | meso_tn1[4]=ptm[4]*ptl[3][0]; 1184 | meso_tgn1[1]=ptm[8]*pma[8][0]*meso_tn1[4]*meso_tn1[4]/(pow((ptm[4]*ptl[3][0]),2.0)); 1185 | 1186 | 1187 | z0 = zn1[3]; 1188 | t0 = meso_tn1[3]; 1189 | tr12 = 1.0; 1190 | 1191 | #/* N2 variation factor at Zlb */ 1192 | g28=flags.sw[21]*globe7(pd[2], Input, flags); 1193 | 1194 | #/* VARIATION OF TURBOPAUSE HEIGHT */ 1195 | zhf=pdl[1][24]*(1.0+flags.sw[5]*pdl[0][24]*sin(dgtr*Input.g_lat)*cos(dr*(Input.doy-pt[13]))); 1196 | output.t[0]=tinf; 1197 | xmm = pdm[2][4]; 1198 | z = Input.alt; 1199 | 1200 | 1201 | #/**** N2 DENSITY ****/ 1202 | 1203 | #/* Diffusive density at Zlb */ 1204 | db28 = pdm[2][0]*exp(g28)*pd[2][0]; 1205 | #/* Diffusive density at Alt */ 1206 | RandomVariable = [output.t[1]] 1207 | output.d[2]=densu(z,db28,tinf,tlb,28.0,alpha[2],RandomVariable,ptm[5],s,mn1,zn1,meso_tn1,meso_tgn1); 1208 | output.t[1] = RandomVariable[0] 1209 | dd=output.d[2]; 1210 | #/* Turbopause */ 1211 | zh28=pdm[2][2]*zhf; 1212 | zhm28=pdm[2][3]*pdl[1][5]; 1213 | xmd=28.0-xmm; 1214 | #/* Mixed density at Zlb */ 1215 | tz = [0] 1216 | b28=densu(zh28,db28,tinf,tlb,xmd,(alpha[2]-1.0),tz,ptm[5],s,mn1, zn1,meso_tn1,meso_tgn1); 1217 | if ((flags.sw[15]) and (z<=altl[2])): 1218 | #/* Mixed density at Alt */ 1219 | global dm28 1220 | dm28=densu(z,b28,tinf,tlb,xmm,alpha[2],tz,ptm[5],s,mn1,zn1,meso_tn1,meso_tgn1); 1221 | #/* Net density at Alt */ 1222 | output.d[2]=dnet(output.d[2],dm28,zhm28,xmm,28.0); 1223 | 1224 | 1225 | 1226 | #/**** HE DENSITY ****/ 1227 | 1228 | #/* Density variation factor at Zlb */ 1229 | g4 = flags.sw[21]*globe7(pd[0], Input, flags); 1230 | #/* Diffusive density at Zlb */ 1231 | db04 = pdm[0][0]*exp(g4)*pd[0][0]; 1232 | #/* Diffusive density at Alt */ 1233 | RandomVariable = [output.t[1]] 1234 | output.d[0]=densu(z,db04,tinf,tlb, 4.,alpha[0],RandomVariable,ptm[5],s,mn1,zn1,meso_tn1,meso_tgn1); 1235 | output.t[1] = RandomVariable[0] 1236 | dd=output.d[0]; 1237 | if ((flags.sw[15]) and (z