forked from magnific0/nrlmsise-00
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DOCUMENTATION
269 lines (183 loc) · 11.1 KB
/
DOCUMENTATION
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
--------------------------------------------------------------------
--------- N R L M S I S E - 0 0 M O D E L 2 0 0 1 ----------
--------------------------------------------------------------------
Table of Contents
-----------------
1. Legal Information
2. Brief Description
3. Source Code Availability
4. This C Release
4.1 Files
4.2 Differences between FORTRAN and C version
5. Interface
6. Release Notes
7. Testing Output
1. LEGAL INFORMATION
====================
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Please inform the
maintainer of the C release (Dominik Brodowski - [email protected]) of
any patches and bug-fixes you implement for NRLMSISE-00 so that this C
package can be updated with these improvements.
2. BRIEF DESCRIPTION
====================
The NRLMSIS-00 empirical atmosphere model was developed by Mike
Picone, Alan Hedin, and Doug Drob based on the MSISE90 model.
The MSISE90 model describes the neutral temperature and densities in
Earth's atmosphere from ground to thermospheric heights. Below 72.5 km
the model is primarily based on the MAP Handbook (Labitzke et al.,
1985) tabulation of zonal average temperature and pressure by Barnett
and Corney, which was also used for the CIRA-86. Below 20 km these
data were supplemented with averages from the National Meteorological
Center (NMC). In addition, pitot tube, falling sphere, and grenade
sounder rocket measurements from 1947 to 1972 were taken into
consideration. Above 72.5 km MSISE-90 is essentially a revised MSIS-86
model taking into account data derived from space shuttle flights and
newer incoherent scatter results. For someone interested only in the
thermosphere (above 120 km), the author recommends the MSIS-86
model. MSISE is also not the model of preference for specialized
tropospheric work. It is rather for studies that reach across several
atmospheric boundaries.
(quoted from http://nssdc.gsfc.nasa.gov/space/model/atmos/nrlmsise00.html)
3. SOURCE CODE AVAILABILITY
===========================
The authors of the NRLMSISE-00 model have released a FORTRAN version
which is available at
http://uap-www.nrl.navy.mil/models_web/msis/msis_home.htm
Based on the Official Beta Release 1.0 (NRLMSISE-00.DIST12.TXT)
Dominik Brodowski wrote an implementation in C which is available on
http://www.brodo.de/english/pub/nrlmsise/
This release is based on the Official Beta Release 2.0
(NRLMSISE-00.DIST17.TXT).
4. THIS C RELEASE
=================
When "INLINE" is not externally defined the source code should be
clean, plain ANSI which any C compiler should be able to work with. If
you find any problems, please report them to the maintainer Dominik
Brodowski at [email protected]. Thank you!
4.1 Files
---------
DOCUMENTATION - this Documentation
nrlmsise-00.h - header file for nrlmsise-00
nrlmsise-00.c - source code for nrlmsise-00
nrlmsise-00_data.c - block data for nrlmsise-00
nrlmsise-00_test.c - test-driver for nrlmsise-00
makefile - makefile for nrlmsise-test (gnu-make and gcc)
4.2 Differences between FORTRAN and C version
---------------------------------------------
The C package does not save the last results internally to speed up
program execution as the FORTRAN version does.
The "switches" have to be specified before _every_ call.
The "DL" array is not printed in the testing routine since it's not an
output value.
The C version probably contains some bugs and still has to be regarded
more unstable than the FORTRAN release. Please report any bugs or
incorrect values to the maintainer at [email protected]
5. INTERFACE
============
To access the NRLMSISE-00 functions you need to include the header
file nrlmsise-00.h. In this file you can find comments which explain
the in- and output, and the differences between the various functions.
6. RELEASE NOTES
================
20020302 - first release
20040322 - fix gtd7d output if sw->flags[0] is set
(noted by Dr. Vasiliy Yurasov)
20041227 - bugfix against memory corruption
(Donald F. Linton)
20070727 - bugfix concerning DFA being masked
(Stacey Gage)
20100516 - bugfix concerning Argon densities
(Dr. Choliy Vasyl)
20131225 - fix comment on switch 0, silence compiler warnings
(David F. Crouse)
20150329 - use fabs() instead of abs()
(David F. Crouse)
20151122 - fixes for gcc5, spelling fixes
(Jacco Geul)
7. TESTING OUTPUT
=================
nrlmsise-test should generate the following output:
6.665177E+05 1.138806E+08 1.998211E+07 4.022764E+05 3.557465E+03 4.074714E-15 3.475312E+04 4.095913E+06 2.667273E+04 1.250540E+03 1.241416E+03
3.407293E+06 1.586333E+08 1.391117E+07 3.262560E+05 1.559618E+03 5.001846E-15 4.854208E+04 4.380967E+06 6.956682E+03 1.166754E+03 1.161710E+03
1.123767E+05 6.934130E+04 4.247105E+01 1.322750E-01 2.618848E-05 2.756772E-18 2.016750E+04 5.741256E+03 2.374394E+04 1.239892E+03 1.239891E+03
5.411554E+07 1.918893E+11 6.115826E+12 1.225201E+12 6.023212E+10 3.584426E-10 1.059880E+07 2.615737E+05 2.819879E-42 1.027318E+03 2.068878E+02
1.851122E+06 1.476555E+08 1.579356E+07 2.633795E+05 1.588781E+03 4.809630E-15 5.816167E+04 5.478984E+06 1.264446E+03 1.212396E+03 1.208135E+03
8.673095E+05 1.278862E+08 1.822577E+07 2.922214E+05 2.402962E+03 4.355866E-15 3.686389E+04 3.897276E+06 2.667273E+04 1.220146E+03 1.212712E+03
5.776251E+05 6.979139E+07 1.236814E+07 2.492868E+05 1.405739E+03 2.470651E-15 5.291986E+04 1.069814E+06 2.667273E+04 1.116385E+03 1.112999E+03
3.740304E+05 4.782720E+07 5.240380E+06 1.759875E+05 5.501649E+02 1.571889E-15 8.896776E+04 1.979741E+06 9.121815E+03 1.031247E+03 1.024848E+03
6.748339E+05 1.245315E+08 2.369010E+07 4.911583E+05 4.578781E+03 4.564420E-15 3.244595E+04 5.370833E+06 2.667273E+04 1.306052E+03 1.293374E+03
5.528601E+05 1.198041E+08 3.495798E+07 9.339618E+05 1.096255E+04 4.974543E-15 2.686428E+04 4.889974E+06 2.805445E+04 1.361868E+03 1.347389E+03
1.375488E+14 0.000000E+00 2.049687E+19 5.498695E+18 2.451733E+17 1.261066E-03 0.000000E+00 0.000000E+00 0.000000E+00 1.027318E+03 2.814648E+02
4.427443E+13 0.000000E+00 6.597567E+18 1.769929E+18 7.891680E+16 4.059139E-04 0.000000E+00 0.000000E+00 0.000000E+00 1.027318E+03 2.274180E+02
2.127829E+12 0.000000E+00 3.170791E+17 8.506280E+16 3.792741E+15 1.950822E-05 0.000000E+00 0.000000E+00 0.000000E+00 1.027318E+03 2.374389E+02
1.412184E+11 0.000000E+00 2.104370E+16 5.645392E+15 2.517142E+14 1.294709E-06 0.000000E+00 0.000000E+00 0.000000E+00 1.027318E+03 2.795551E+02
1.254884E+10 0.000000E+00 1.874533E+15 4.923051E+14 2.239685E+13 1.147668E-07 0.000000E+00 0.000000E+00 0.000000E+00 1.027318E+03 2.190732E+02
5.196477E+05 1.274494E+08 4.850450E+07 1.720838E+06 2.354487E+04 5.881940E-15 2.500078E+04 6.279210E+06 2.667273E+04 1.426412E+03 1.408608E+03
4.260860E+07 1.241342E+11 4.929562E+12 1.048407E+12 4.993465E+10 2.914304E-10 8.831229E+06 2.252516E+05 2.415246E-42 1.027318E+03 1.934071E+02
DAY 172 81 172 172 172
UT 29000 29000 75000 29000 29000
ALT 400 400 1000 100 400
LAT 60 60 60 60 0
LONG -70 -70 -70 -70 -70
LST 16 16 16 16 16
F107A 150 150 150 150 150
F107 150 150 150 150 150
TINF 1250.54 1166.75 1239.89 1027.32 1212.40
TG 1241.42 1161.71 1239.89 206.89 1208.14
HE 6.665e+05 3.407e+06 1.124e+05 5.412e+07 1.851e+06
O 1.139e+08 1.586e+08 6.934e+04 1.919e+11 1.477e+08
N2 1.998e+07 1.391e+07 4.247e+01 6.116e+12 1.579e+07
O2 4.023e+05 3.263e+05 1.323e-01 1.225e+12 2.634e+05
AR 3.557e+03 1.560e+03 2.619e-05 6.023e+10 1.589e+03
H 3.475e+04 4.854e+04 2.017e+04 1.060e+07 5.816e+04
N 4.096e+06 4.381e+06 5.741e+03 2.616e+05 5.479e+06
ANM 0 2.667e+04 6.957e+03 2.374e+04 2.820e-42 1.264e+03
RHO 4.075e-15 5.002e-15 2.757e-18 3.584e-10 4.810e-15
DAY 172 172 172 172 172
UT 29000 29000 29000 29000 29000
ALT 400 400 400 400 400
LAT 60 60 60 60 60
LONG 0 -70 -70 -70 -70
LST 16 4 16 16 16
F107A 150 150 70 150 150
F107 150 150 150 180 150
TINF 1220.15 1116.39 1031.25 1306.05 1361.87
TG 1212.71 1113.00 1024.85 1293.37 1347.39
HE 8.673e+05 5.776e+05 3.740e+05 6.748e+05 5.529e+05
O 1.279e+08 6.979e+07 4.783e+07 1.245e+08 1.198e+08
N2 1.823e+07 1.237e+07 5.240e+06 2.369e+07 3.496e+07
O2 2.922e+05 2.493e+05 1.760e+05 4.912e+05 9.340e+05
AR 2.403e+03 1.406e+03 5.502e+02 4.579e+03 1.096e+04
H 3.686e+04 5.292e+04 8.897e+04 3.245e+04 2.686e+04
N 3.897e+06 1.070e+06 1.980e+06 5.371e+06 4.890e+06
ANM 0 2.667e+04 2.667e+04 9.122e+03 2.667e+04 2.805e+04
RHO 4.356e-15 2.471e-15 1.572e-15 4.564e-15 4.975e-15
DAY 172 172 172 172 172
UT 29000 29000 29000 29000 29000
ALT 0 10 30 50 70
LAT 60 60 60 60 60
LONG -70 -70 -70 -70 -70
LST 16 16 16 16 16
F107A 150 150 150 150 150
F107 150 150 150 150 150
TINF 1027.32 1027.32 1027.32 1027.32 1027.32
TG 281.46 227.42 237.44 279.56 219.07
HE 1.375e+14 4.427e+13 2.128e+12 1.412e+11 1.255e+10
O 0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00
N2 2.050e+19 6.598e+18 3.171e+17 2.104e+16 1.875e+15
O2 5.499e+18 1.770e+18 8.506e+16 5.645e+15 4.923e+14
AR 2.452e+17 7.892e+16 3.793e+15 2.517e+14 2.240e+13
H 0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00
N 0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00
ANM 0 0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00
RHO 1.261e-03 4.059e-04 1.951e-05 1.295e-06 1.148e-07
Note: These values equal those of the official FORTRAN package with
one notable exception: the FORTRAN version reports for "anomalous
oxygen" in test-run 4 exactly 0.000E-00, while my C compiler
generates code which calculates 2.820e-42. When only 16-bit wide
double variables are used, this value reduces to 0.000E-00 as well.
========================================================
Tuebingen, Germany, on July 27th, 2007
Dominik Brodowski