suntest.frink

View or download suntest.frink in plain text format

// Some samples to test the workings of the sun.frink astronomical library.

use sun.frink

// This is a test function. 
sunpos[date] :=
{
   T = meeusT[date]

   println["T: $T"]
   
   // L0 is geometric mean longitude of the sun, referred to the mean equinox
   // of the date.
   L0 = sunGeometricMeanLongitude[date]
   println["L0: " + (L0 mod (360 degree) -> "degrees")];

   M = sunMeanAnomaly[date]
   println["M: " + (M mod (360 degree) -> "degrees")];

   eccentricity = earthEccentricity[date]
   println["Eccentricity: $eccentricity"]

   trueSunLong = sunTrueLongitude[date]
   println["trueSunLong: " + (trueSunLong mod (360 degree) -> "degrees")];

   trueAnomaly = sunTrueAnomaly[date]
   println["trueAnomaly: " + (trueAnomaly mod (360 degree) -> "degrees")];

   R = sunDistance[date]
   println["R: " + (R -> "au")]

   apparentLongitude = sunApparentLongitude[date]

   return apparentLongitude mod (360 degree)
}

// Test dates from Meeus' book example 25.a
d = #1992 October 13 00:00 TD#
//d = #JDE 2448908.5#

println["Date is   " + (d -> JDE)]
println["Should be JDE 2448908.5"]

println["Apparent longitude: " + (sunpos[d] -> "degrees")]

epsilon0 = meanObliquityOfEcliptic[d]
println["epsilon0: " + (epsilon0 mod (360 degree) -> "degrees")];

epsilon = trueObliquityOfEcliptic[d]
println["epsilon: " + (epsilon mod (360 degree) -> "degrees")];

[sunRA, sunDec] = sunApparentRADecl[d]
println["sunRA: " + (sunRA mod (360 degree) -> "degrees")];

println["sunDeclination: " + (sunDec mod (360 degree) -> "degrees")];

meanSiderealAngle = meanGreenwichSiderealAngle[d]
println["Mean Sidereal Time: " + (meanSiderealAngle mod (360 degree) -> "degrees")];

println[]

// Meeus Example 22a
println["Meeus Example 22.a"]
d22a = #1987 April 10 00:00 TD#
//d22a = #JDE 2446895.5#

println["Date is   " + (d22a -> JDE)]
println["Should be JDE 2446895.5"]


[deltapsi, deltaepsilon] = lowAccuracyNutation[d22a]
println["Delta psi: " + (deltapsi -> "arcsec")]
println["Delta epsilon: " + (deltaepsilon -> "arcsec")]

[deltapsi, deltaepsilon] = highAccuracyNutation[d22a]
println["Delta psi: " + (deltapsi -> "arcsec")]
println["Delta epsilon: " + (deltaepsilon -> "arcsec")]

epsilon0 = meanObliquityOfEcliptic[d22a]
println["epsilon0: " + (epsilon0 mod (360 degree) -> ["degrees", "arcmin", "arcsec"])];
epsilon = trueObliquityOfEcliptic[d22a]
println["epsilon:  " + (epsilon mod (360 degree) -> ["degrees", "arcmin", "arcsec"])];

// Moon position test, meeus Example 47.a
println[]
println["Moon Position test"]
println["Meeus example 47.a"]
d = # 1992 April 12 00:00 TD #
println["Date is   " + (d -> JDE)]
println["Should be JDE 2448724.5"]

println["Moon mean longitude L':  " + (moonMeanLongitude[d] -> "degrees")]
println["Moon mean elongation D:  " + (moonMeanElongation[d] -> "degrees")]
println["Mean anomaly of sun M:   " + (moonCalcSunMeanAnomaly[d] -> "degrees")]
println["Mean anomaly of moon M': " + (moonMeanAnomaly[d] -> "degrees")]
println["Arg. of latitude F:      " + (moonArgumentOfLatitude[d] -> "degrees")]
println["Correction term A1:      " + (moonA1[d] -> "degrees")]
println["Correction term A2:      " + (moonA2[d] -> "degrees")]
println["Correction term A3:      " + (moonA3[d] -> "degrees")]
println["Earth eccentricity E:    " + moonCalcEarthEccentricity[d]]
println["Moon corrected sigmaL:   " + moonSumL[d]]
println["Moon Longitude lambda:   " + (moonLongitude[d] -> "degrees")]
println["                         " + (moonLongitude[d] -> [deg, arcmin, arcsec])]
println["Moon Latitude beta:      " + (moonLatitude[d] -> "degrees")]
println["                         " + (-moonLatitude[d] -> [deg, arcmin, arcsec])]
println["Moon distance delta:     " + (moonDistance[d] -> "km")]
println["DeltaPsi:                " + (highAccuracyNutation[d]@0 -> "degrees")]
println["Moon apparent longitude: " + (moonApparentLongitude[d] -> "degrees")]
println["                         " + (moonApparentLongitude[d] -> [deg, arcmin, arcsec])]
[ra, decl] = moonApparentRADecl[d]
println["True obliquity epsilon:  " + (trueObliquityOfEcliptic[d] -> "degrees")]
println["Moon apparent RA alpha:  " + (ra -> "degrees")]
println["                         " + (ra day/circle -> [hour, min, sec])]

println["Moon app. decl. delta:   " + (decl -> "degrees")]
println["                         " + (decl -> [deg, arcmin, arcsec])]


View or download suntest.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 17592 days, 15 hours, 28 minutes ago.