File: oblitest.cpp

package info (click to toggle)
pluto-lunar 0.0~git20180825.e34c1d1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster, forky, sid, trixie
  • size: 1,584 kB
  • sloc: cpp: 18,100; makefile: 653; ansic: 368
file content (69 lines) | stat: -rw-r--r-- 2,702 bytes parent folder | download
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
/* oblitest.cpp: tests various obliquity formulae

Copyright (C) 2011, Project Pluto

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program 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.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.    */

#include <stdio.h>
#include <stdlib.h>
#include "watdefs.h"
#include "lunar.h"

#define PI 3.1415926535897932384626433832795028841971693993751058209749445923

/* By default,  this program shows the obliquity from years 0 to 4000 at
200-year steps,  using a variety of obliquity formulae.  Command-line
arguments can change the range/step.      */

double iau_obliquity( const double t_cen);
double file_obliquity( const double t_cen);
double spline_obliquity( const double t_cen);

int main( const int argc, const char **argv)
{
   double t0 = (argc > 1 ? atof( argv[1]) : 0.);
   const double dt = (argc > 2 ? atof( argv[2]) : 200.);
   unsigned n_steps = (argc > 3 ? (unsigned)atoi( argv[3]) : 21);
   const char *header_trailer =
   "    year  :    Laskar      cubic         file      spline  dSpline   dCubic\n";

   printf( "%s", header_trailer);
   while( n_steps--)
      {
      const double t_cen = (t0 - 2000.) / 100.;
      const double laskar_obliquity = mean_obliquity( t_cen);
      const double iau_value        = iau_obliquity( t_cen);
      const double file_value       = file_obliquity( t_cen);
      const double spline_value     = spline_obliquity( t_cen);

      printf( "%10.2f: %.8f %.8f %.8f %.8f %.3f %.3f\n", t0,
               laskar_obliquity * 180. / PI,
               iau_value        * 180. / PI,
               file_value       * 180. / PI,
               spline_value     * 180. / PI,
               (laskar_obliquity - spline_value) * 3600. * 180. / PI,
               (laskar_obliquity - iau_value) * 3600. * 180. / PI);
      t0 += dt;
      }
   printf( "%s", header_trailer);
   if( file_obliquity( 1.) == 0.)
      {
      printf( "'File' obliquity is interpolated from values found in files at\n\n");
      printf( "http://cdsarc.u-strasbg.fr/viz-bin/Cat?VI/63\n\n");
      printf( "Get those files,  and the 'file' obliquities will be computed and shown.\n");
      }
   return( 0);
}