summaryrefslogtreecommitdiff
path: root/nrlmsise-00_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'nrlmsise-00_test.c')
-rw-r--r--nrlmsise-00_test.c168
1 files changed, 168 insertions, 0 deletions
diff --git a/nrlmsise-00_test.c b/nrlmsise-00_test.c
new file mode 100644
index 0000000..28f547f
--- /dev/null
+++ b/nrlmsise-00_test.c
@@ -0,0 +1,168 @@
+/* -------------------------------------------------------------------- */
+/* --------- N R L M S I S E - 0 0 M O D E L 2 0 0 1 ---------- */
+/* -------------------------------------------------------------------- */
+
+/* This file is part of the NRLMSISE-00 C source code package - release
+ * 20020305
+ *
+ * The NRLMSISE-00 model was developed by Mike Picone, Alan Hedin, and
+ * Doug Drob. They also wrote a NRLMSISE-00 distribution package in
+ * FORTRAN which is available at
+ * http://uap-www.nrl.navy.mil/models_web/msis/msis_home.htm
+ *
+ * Dominik Brodowski implemented and maintains this C version. You can
+ * reach him at devel@brodo.de. See the file "DOCUMENTATION" for details,
+ * and check http://www.brodo.de/english/pub/nrlmsise/index.html for
+ * updated releases of this package.
+ */
+
+
+
+/* ------------------------------------------------------------------- */
+/* ------------------------------ INCLUDES --------------------------- */
+/* ------------------------------------------------------------------- */
+
+#include <stdio.h>
+#include "nrlmsise-00.h"
+
+
+
+/* ------------------------------------------------------------------- */
+/* ----------------------------- TEST_GTD7 --------------------------- */
+/* ------------------------------------------------------------------- */
+
+void test_gtd7(void) {
+ struct nrlmsise_output output[17];
+ struct nrlmsise_input input[17];
+ struct nrlmsise_flags flags;
+ struct ap_array aph;
+ int i;
+ int j;
+ /* input values */
+ for (i=0;i<7;i++)
+ aph.a[i]=100;
+ flags.switches[0]=0;
+ for (i=1;i<24;i++)
+ flags.switches[i]=1;
+ for (i=0;i<17;i++) {
+ input[i].doy=172;
+ input[i].year=0; /* without effect */
+ input[i].sec=29000;
+ input[i].alt=400;
+ input[i].g_lat=60;
+ input[i].g_long=-70;
+ input[i].lst=16;
+ input[i].f107A=150;
+ input[i].f107=150;
+ input[i].ap=4;
+ }
+ input[1].doy=81;
+ input[2].sec=75000;
+ input[2].alt=1000;
+ input[3].alt=100;
+ input[10].alt=0;
+ input[11].alt=10;
+ input[12].alt=30;
+ input[13].alt=50;
+ input[14].alt=70;
+ input[16].alt=100;
+ input[4].g_lat=0;
+ input[5].g_long=0;
+ input[6].lst=4;
+ input[7].f107A=70;
+ input[8].f107=180;
+ input[9].ap=40;
+ input[15].ap_a=&aph;
+ input[16].ap_a=&aph;
+ /* evaluate 0 to 14 */
+ for (i=0;i<15;i++)
+ gtd7(&input[i], &flags, &output[i]);
+ /* evaluate 15 and 16 */
+ flags.switches[9]=-1;
+ for (i=15;i<17;i++)
+ gtd7(&input[i], &flags, &output[i]);
+ /* output type 1 */
+ for (i=0;i<17;i++) {
+ printf("\n");
+ for (j=0;j<9;j++)
+ printf("%E ",output[i].d[j]);
+ printf("%E ",output[i].t[0]);
+ printf("%E \n",output[i].t[1]);
+ /* DL omitted */
+ }
+
+ /* output type 2 */
+ for (i=0;i<3;i++) {
+ printf("\n");
+ printf("\nDAY ");
+ for (j=0;j<5;j++)
+ printf(" %3i",input[i*5+j].doy);
+ printf("\nUT ");
+ for (j=0;j<5;j++)
+ printf(" %5.0f",input[i*5+j].sec);
+ printf("\nALT ");
+ for (j=0;j<5;j++)
+ printf(" %4.0f",input[i*5+j].alt);
+ printf("\nLAT ");
+ for (j=0;j<5;j++)
+ printf(" %3.0f",input[i*5+j].g_lat);
+ printf("\nLONG ");
+ for (j=0;j<5;j++)
+ printf(" %3.0f",input[i*5+j].g_long);
+ printf("\nLST ");
+ for (j=0;j<5;j++)
+ printf(" %5.0f",input[i*5+j].lst);
+ printf("\nF107A ");
+ for (j=0;j<5;j++)
+ printf(" %3.0f",input[i*5+j].f107A);
+ printf("\nF107 ");
+ for (j=0;j<5;j++)
+ printf(" %3.0f",input[i*5+j].f107);
+ printf("\n\n");
+ printf("\nTINF ");
+ for (j=0;j<5;j++)
+ printf(" %7.2f",output[i*5+j].t[0]);
+ printf("\nTG ");
+ for (j=0;j<5;j++)
+ printf(" %7.2f",output[i*5+j].t[1]);
+ printf("\nHE ");
+ for (j=0;j<5;j++)
+ printf(" %1.3e",output[i*5+j].d[0]);
+ printf("\nO ");
+ for (j=0;j<5;j++)
+ printf(" %1.3e",output[i*5+j].d[1]);
+ printf("\nN2 ");
+ for (j=0;j<5;j++)
+ printf(" %1.3e",output[i*5+j].d[2]);
+ printf("\nO2 ");
+ for (j=0;j<5;j++)
+ printf(" %1.3e",output[i*5+j].d[3]);
+ printf("\nAR ");
+ for (j=0;j<5;j++)
+ printf(" %1.3e",output[i*5+j].d[4]);
+ printf("\nH ");
+ for (j=0;j<5;j++)
+ printf(" %1.3e",output[i*5+j].d[6]);
+ printf("\nN ");
+ for (j=0;j<5;j++)
+ printf(" %1.3e",output[i*5+j].d[7]);
+ printf("\nANM 0 ");
+ for (j=0;j<5;j++)
+ printf(" %1.3e",output[i*5+j].d[8]);
+ printf("\nRHO ");
+ for (j=0;j<5;j++)
+ printf(" %1.3e",output[i*5+j].d[5]);
+ printf("\n");
+ }
+ printf("\n");
+}
+
+
+/* ------------------------------------------------------------------- */
+/* -------------------------------- MAIN ----------------------------- */
+/* ------------------------------------------------------------------- */
+
+int main(void) {
+ test_gtd7();
+ return 0;
+}