52 double soh = (
hour-hr)*3600;
53 int min = trunc(soh/60.0);
54 double sec = fmod(soh,60.0);
69 {
return std::make_shared<TestClass>(*
this); }
105 double cf,
double tf)
113 tAz = (((
tAz *
tAz) - 167273)/1123.6) + 63.7;
164 double edF1,
double phF1,
double ptF1,
double edE,
165 double phE,
double ptE,
double eA1,
double eA2,
206 int month,
double expect)
234 double pttf2,
double ptbf2,
double pttf1,
double ptbf1,
235 double ptte,
double ptbe)
263 double stalon,
double stalat,
double stah,
264 double satlon,
double satlat,
double sath,
446 297.438315, 82.481346,
451 139.790965, 26.595660,
456 298.035128, 82.566581,
461 260.236348, 35.803032,
466 114.989502, -50.092818,
479 297.438315, 82.481346,
485 40.173216, -3.023059,
491 137.301902, -82.090099,
499 {236.831641, -0.39362878, 0.00402826613};
502 {121.129893, 0.351254133, 0.0134635348};
505 {2.580271, 0.127628236, 0.0252748384};
510 { highSolarCoeff, 76.284073, 230.245562 },
511 { mediumSolarCoeff, 76.284073, 226.272795 },
512 { lowSolarCoeff, 76.284073, 159.397123 },
513 { highSolarCoeff, 19.528774, 230.680826 },
514 { mediumSolarCoeff, 19.528774, 133.124084 },
515 { lowSolarCoeff, 19.528774, 14.711835 },
516 { highSolarCoeff, 47.857688, 227.219650 },
517 { mediumSolarCoeff, 47.857688, 168.776422 },
518 { lowSolarCoeff, 47.857688, 66.576699 },
519 { highSolarCoeff, -23.316310, 248.199580 },
520 { mediumSolarCoeff, -23.316310, 120.259398 },
521 { lowSolarCoeff, -23.316310, 13.345125 },
522 { highSolarCoeff, -71.811295, 285.871846 },
523 { mediumSolarCoeff, -71.811295, 165.335471 },
524 { lowSolarCoeff, -71.811295, 123.753978 },
525 { highSolarCoeff, 46.487417, 227.238261 },
526 { mediumSolarCoeff, 46.487417, 166.554565 },
527 { lowSolarCoeff, 46.487417, 63.134324 },
528 { highSolarCoeff, 33.054571, 228.221713 },
529 { mediumSolarCoeff, 33.054571, 147.450769 },
530 { lowSolarCoeff, 33.054571, 34.414374 },
531 { highSolarCoeff, -51.379818, 267.690378 },
532 { mediumSolarCoeff, -51.379818, 138.624713 },
533 { lowSolarCoeff, -51.379818, 62.745440 }
546 43.882788163, 73.137980271,
547 73.137980271, 5.000000000,
556 {highSolarCoeff,4,0,297.66,82.49,78.11,8.23,54.29,20281546.18,20.40},
557 {highSolarCoeff,4,0,297.66,82.49,78.11,-158.03,24.05,20275295.43,53.45},
558 {highSolarCoeff,4,0,297.66,82.49,78.11,-30.86,41.04,19953770.93,25.91},
559 {highSolarCoeff,4,4,297.66,82.49,78.11,-85.72,53.69,20544786.65,18.78},
560 {highSolarCoeff,4,4,297.66,82.49,78.11,-130.77,54.40,20121312.46,20.00},
561 {highSolarCoeff,4,4,297.66,82.49,78.11,140.68,35.85,19953735.00,37.81},
562 {highSolarCoeff,4,8,297.66,82.49,78.11,-126.28,51.26,20513440.10,21.31},
563 {highSolarCoeff,4,8,297.66,82.49,78.11,84.26,54.68,20305726.79,27.72},
564 {highSolarCoeff,4,8,297.66,82.49,78.11,-96.21,37.33,19956072.48,24.13},
565 {highSolarCoeff,4,12,297.66,82.49,78.11,81.09,35.20,20278071.03,49.30},
566 {highSolarCoeff,4,12,297.66,82.49,78.11,175.57,51.89,19995445.72,26.61},
567 {highSolarCoeff,4,12,297.66,82.49,78.11,4.25,53.43,20107681.66,29.21},
568 {highSolarCoeff,4,16,297.66,82.49,78.11,14.89,32.88,20636367.33,37.95},
569 {highSolarCoeff,4,16,297.66,82.49,78.11,-70.26,50.63,20043030.82,23.93},
570 {highSolarCoeff,4,16,297.66,82.49,78.11,-130.60,49.21,20288021.34,26.97},
571 {highSolarCoeff,4,20,297.66,82.49,78.11,-52.46,24.28,19831557.96,48.45},
572 {highSolarCoeff,4,20,297.66,82.49,78.11,-165.78,35.06,20196268.24,41.71},
573 {highSolarCoeff,4,20,297.66,82.49,78.11,168.73,52.58,20288372.95,27.79},
574 {highSolarCoeff,4,0,307.19,5.25,-25.76,-89.48,-29.05,20081457.33,240.59},
575 {highSolarCoeff,4,0,307.19,5.25,-25.76,-46.73,-24.08,19975517.42,152.19},
576 {highSolarCoeff,4,0,307.19,5.25,-25.76,-99.26,34.47,20275286.46,204.92},
577 {highSolarCoeff,4,4,307.19,5.25,-25.76,-46.61,54.84,20258938.89,124.39},
578 {highSolarCoeff,4,4,307.19,5.25,-25.76,-85.72,53.68,20544786.61,140.16},
579 {highSolarCoeff,4,4,307.19,5.25,-25.76,-18.13,14.17,20267783.18,95.52},
580 {highSolarCoeff,4,8,307.19,5.25,-25.76,7.14,-19.55,20226657.45,26.47},
581 {highSolarCoeff,4,8,307.19,5.25,-25.76,-48.38,-31.04,20069586.93,21.34},
582 {highSolarCoeff,4,8,307.19,5.25,-25.76,-58.59,21.93,20008556.82,21.68},
583 {highSolarCoeff,4,12,307.19,5.25,-25.76,-102.83,-40.74,20153844.84,169.86},
584 {highSolarCoeff,4,12,307.19,5.25,-25.76,-0.60,10.75,20272829.17,178.43},
585 {highSolarCoeff,4,12,307.19,5.25,-25.76,-120.35,11.00,20283503.35,146.95},
586 {highSolarCoeff,4,16,307.19,5.25,-25.76,-70.26,50.63,20043030.72,198.43},
587 {highSolarCoeff,4,16,307.19,5.25,-25.76,-72.73,-9.78,19936049.27,149.02},
588 {highSolarCoeff,4,16,307.19,5.25,-25.76,-66.77,2.37,19986966.89,133.16},
589 {highSolarCoeff,4,20,307.19,5.25,-25.76,-1.57,-7.90,20373709.74,255.31},
590 {highSolarCoeff,4,20,307.19,5.25,-25.76,0.44,50.83,19975412.45,292.41},
591 {highSolarCoeff,4,20,307.19,5.25,-25.76,10.94,44.72,20450566.19,336.74},
592 {mediumSolarCoeff,4,0,40.19,-3.00,-23.32,76.65,-41.43,20157673.93,18.26},
593 {mediumSolarCoeff,4,0,40.19,-3.00,-23.32,-13.11,-4.67,20194168.22,35.84},
594 {mediumSolarCoeff,4,0,40.19,-3.00,-23.32,26.31,-39.04,20671871.64,17.18},
595 {mediumSolarCoeff,4,4,40.19,-3.00,-23.32,79.33,-55.34,20679595.44,36.00},
596 {mediumSolarCoeff,4,4,40.19,-3.00,-23.32,107.19,-10.65,19943686.06,76.77},
597 {mediumSolarCoeff,4,4,40.19,-3.00,-23.32,56.35,47.54,20322471.38,38.01},
598 {mediumSolarCoeff,4,8,40.19,-3.00,-23.32,7.14,-19.55,20226657.34,69.17},
599 {mediumSolarCoeff,4,8,40.19,-3.00,-23.32,51.96,-1.90,20218595.37,59.53},
600 {mediumSolarCoeff,4,8,40.19,-3.00,-23.32,89.22,-40.56,20055109.63,101.26},
601 {mediumSolarCoeff,4,12,40.19,-3.00,-23.32,90.78,-28.26,20081398.25,127.83},
602 {mediumSolarCoeff,4,12,40.19,-3.00,-23.32,35.75,-14.88,20010521.91,81.34},
603 {mediumSolarCoeff,4,12,40.19,-3.00,-23.32,81.09,35.20,20278071.09,113.92},
604 {mediumSolarCoeff,4,16,40.19,-3.00,-23.32,14.89,32.88,20636367.52,91.07},
605 {mediumSolarCoeff,4,16,40.19,-3.00,-23.32,2.04,11.23,20394926.95,96.70},
606 {mediumSolarCoeff,4,16,40.19,-3.00,-23.32,22.79,-35.87,20125991.19,71.45},
607 {mediumSolarCoeff,4,20,40.19,-3.00,-23.32,54.11,3.15,20251696.28,48.06},
608 {mediumSolarCoeff,4,20,40.19,-3.00,-23.32,95.06,17.94,20246498.07,77.64},
609 {mediumSolarCoeff,4,20,40.19,-3.00,-23.32,-1.81,-52.00,20332764.38,50.10},
610 {mediumSolarCoeff,4,0,115.89,-31.80,12.78,119.90,-8.76,19941513.27,24.84},
611 {mediumSolarCoeff,4,0,115.89,-31.80,12.78,165.14,-13.93,20181976.57,43.94},
612 {mediumSolarCoeff,4,0,115.89,-31.80,12.78,76.65,-41.43,20157673.77,19.90},
613 {mediumSolarCoeff,4,4,115.89,-31.80,12.78,107.19,-10.65,19943685.24,46.25},
614 {mediumSolarCoeff,4,4,115.89,-31.80,12.78,79.33,-55.34,20679595.29,46.10},
615 {mediumSolarCoeff,4,4,115.89,-31.80,12.78,64.90,-17.58,20177185.06,64.59},
616 {mediumSolarCoeff,4,8,115.89,-31.80,12.78,127.35,23.46,19837695.71,88.58},
617 {mediumSolarCoeff,4,8,115.89,-31.80,12.78,89.22,-40.56,20055109.56,40.62},
618 {mediumSolarCoeff,4,8,115.89,-31.80,12.78,148.31,-29.93,20109263.99,40.82},
619 {mediumSolarCoeff,4,12,115.89,-31.80,12.78,90.78,-28.26,20081398.25,14.48},
620 {mediumSolarCoeff,4,12,115.89,-31.80,12.78,133.47,-24.87,19975574.41,13.63},
621 {mediumSolarCoeff,4,12,115.89,-31.80,12.78,166.97,-3.87,20196778.56,27.69},
622 {mediumSolarCoeff,4,16,115.89,-31.80,12.78,124.09,-14.31,20100697.90,6.96},
623 {mediumSolarCoeff,4,16,115.89,-31.80,12.78,154.31,-45.19,20116286.17,7.48},
624 {mediumSolarCoeff,4,16,115.89,-31.80,12.78,-167.50,-43.24,20095343.13,13.87},
625 {mediumSolarCoeff,4,20,115.89,-31.80,12.78,131.65,-31.56,20066111.12,4.36},
626 {mediumSolarCoeff,4,20,115.89,-31.80,12.78,115.68,-52.78,20231909.06,4.35},
627 {mediumSolarCoeff,4,20,115.89,-31.80,12.78,50.87,-50.69,20186511.77,6.97},
628 {lowSolarCoeff,4,0,141.13,39.14,117.00,165.14,-13.93,20181976.50,36.44},
629 {lowSolarCoeff,4,0,141.13,39.14,117.00,85.59,36.64,20015444.79,14.24},
630 {lowSolarCoeff,4,0,141.13,39.14,117.00,119.90,-8.76,19941513.27,23.54},
631 {lowSolarCoeff,4,4,141.13,39.14,117.00,107.19,-10.65,19943685.88,77.49},
632 {lowSolarCoeff,4,4,141.13,39.14,117.00,38.39,51.98,20457198.52,29.28},
633 {lowSolarCoeff,4,4,141.13,39.14,117.00,-130.77,54.40,20121312.41,23.02},
634 {lowSolarCoeff,4,8,141.13,39.14,117.00,179.50,51.35,19967933.94,13.62},
635 {lowSolarCoeff,4,8,141.13,39.14,117.00,97.28,21.46,19941941.52,24.28},
636 {lowSolarCoeff,4,8,141.13,39.14,117.00,84.26,54.68,20305726.98,15.90},
637 {lowSolarCoeff,4,12,141.13,39.14,117.00,62.65,54.77,20370905.24,16.33},
638 {lowSolarCoeff,4,12,141.13,39.14,117.00,115.63,-1.28,20165065.92,11.05},
639 {lowSolarCoeff,4,12,141.13,39.14,117.00,81.09,35.20,20278071.22,14.25},
640 {lowSolarCoeff,4,16,141.13,39.14,117.00,124.09,-14.31,20100698.19,8.12},
641 {lowSolarCoeff,4,16,141.13,39.14,117.00,-130.60,49.21,20288020.98,6.45},
642 {lowSolarCoeff,4,16,141.13,39.14,117.00,161.97,13.35,20265041.53,4.69},
643 {lowSolarCoeff,4,20,141.13,39.14,117.00,84.18,36.59,19953853.27,6.06},
644 {lowSolarCoeff,4,20,141.13,39.14,117.00,54.67,51.65,20511861.27,8.28},
645 {lowSolarCoeff,4,20,141.13,39.14,117.00,-136.92,46.53,20309713.36,10.78},
646 {lowSolarCoeff,4,0,204.54,19.80,3754.69,165.14,-13.93,20181976.58,94.98},
647 {lowSolarCoeff,4,0,204.54,19.80,3754.69,179.32,9.92,20274303.54,60.87},
648 {lowSolarCoeff,4,0,204.54,19.80,3754.69,-144.16,-15.44,20007317.84,72.83},
649 {lowSolarCoeff,4,4,204.54,19.80,3754.69,-130.77,54.40,20121312.45,30.77},
650 {lowSolarCoeff,4,4,204.54,19.80,3754.69,-99.26,37.44,20066769.88,36.18},
651 {lowSolarCoeff,4,4,204.54,19.80,3754.69,-85.72,53.69,20544786.60,37.25},
652 {lowSolarCoeff,4,8,204.54,19.80,3754.69,178.35,-7.05,20372509.81,1.62},
653 {lowSolarCoeff,4,8,204.54,19.80,3754.69,-125.97,2.30,20251559.90,0.12},
654 {lowSolarCoeff,4,8,204.54,19.80,3754.69,179.50,51.35,19967934.29,0.56},
655 {lowSolarCoeff,4,12,204.54,19.80,3754.69,158.88,-12.61,20145417.20,1.77},
656 {lowSolarCoeff,4,12,204.54,19.80,3754.69,-146.53,22.03,20069033.97,0.64},
657 {lowSolarCoeff,4,12,204.54,19.80,3754.69,-153.30,-39.75,20672066.87,2.99},
658 {lowSolarCoeff,4,16,204.54,19.80,3754.69,-140.58,51.70,20455387.61,2.16},
659 {lowSolarCoeff,4,16,204.54,19.80,3754.69,-167.50,-43.24,20095343.11,3.11},
660 {lowSolarCoeff,4,16,204.54,19.80,3754.69,-164.50,27.08,20494802.61,1.22},
661 {lowSolarCoeff,4,20,204.54,19.80,3754.69,-172.71,-20.37,20225145.06,24.53},
662 {lowSolarCoeff,4,20,204.54,19.80,3754.69,-136.92,46.53,20309713.37,13.14},
663 {lowSolarCoeff,4,20,204.54,19.80,3754.69,-82.52,20.64,19937791.48,38.20},
665 {highSolarCoeff,4,12,257.17,-40.74,-25.76,257.17,-40.74,20153844.84,14.08},
678 TUDEF(
"NeQuickIonoNavData",
"NeQuickIonoNavData()");
695 TUDEF(
"NeQuickIonoNavData",
"getEffIonoLevel");
698 for (
unsigned testNum = 0; testNum < numTests; testNum++)
712 TUDEF(
"NeQuickIonoNavData::ModelParameters",
"constructor");
714 for (
unsigned testNum = 0; testNum < numTests; testNum++)
728 TUDEF(
"NeQuickIonoNavData::ModelParameters",
"legendre");
730 for (
unsigned testNum = 0; testNum < numTests; testNum++)
748 TUDEF(
"NeQuickIonoNavData::ModelParameters",
"height");
750 for (
unsigned testNum = 0; testNum < numTests; testNum++)
767 TUDEF(
"NeQuickIonoNavData::ModelParameters",
"exosphereAdjust");
769 for (
unsigned testNum = 0; testNum < numTests; testNum++)
787 TUDEF(
"NeQuickIonoNavData::ModelParameters",
"peakAmplitudes");
789 for (
unsigned testNum = 0; testNum < numTests; testNum++)
814 TUDEF(
"NeQuickIonoNavData::ModelParameters",
"effSolarZenithAngle");
816 for (
unsigned testNum = 0; testNum < numTests; testNum++)
830 TUDEF(
"NeQuickIonoNavData::ModelParameters",
"thickness");
833 constexpr
double hmE = 120.0;
834 for (
unsigned testNum = 0; testNum < numTests; testNum++)
858 TUDEF(
"NeQuickIonoNavData::ModelParameters",
"getTEC");
862 constexpr
double hmE = 120.0;
863 for (
unsigned testNum = 0; testNum < numTests; testNum++)
892 return 40.3 / (freq*freq);
899 TUDEF(
"NeQuickIonoNavData::ModelParameters",
"getIonoCorr");
903 constexpr
double hmE = 120.0;
910 for (
unsigned testNum = 0; testNum < numTests; testNum++)
918 expCorr = td.
expTEC * factorL1 * 1e16;
924 expCorr = td.
expTEC * factorL5 * 1e16;
933 int main(
int argc,
char *argv[])
936 unsigned errorTotal = 0;
950 std::cout <<
"Total Failures for " << __FILE__ <<
": " << errorTotal