diff options
| -rw-r--r-- | org/madore/ephem/Test2.java | 33 | ||||
| -rw-r--r-- | org/madore/ephem/ZonalTides.java | 57 | ||||
| -rw-r--r-- | org/madore/ephem/zonal-tides.dat | 186 | 
3 files changed, 276 insertions, 0 deletions
| diff --git a/org/madore/ephem/Test2.java b/org/madore/ephem/Test2.java new file mode 100644 index 0000000..e578719 --- /dev/null +++ b/org/madore/ephem/Test2.java @@ -0,0 +1,33 @@ +package org.madore.ephem; + +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.io.BufferedReader; + +public final class Test2 { + +    public static void main(String[] args) { +	Comput.SumPoisson2Terms corr = ZonalTides.getFunc(ZonalTides.Variable.DUT1); +	try { +	    // http://data.iers.org/products/214/14443/orig/eopc04_08_IAU2000.62-now +	    FileInputStream str = new FileInputStream("/tmp/eopc04_08_IAU2000.62-now"); +	    BufferedReader in = new BufferedReader(new InputStreamReader(str, "utf-8")); +	    String s; +	    while ( ( s = in.readLine() ) != null ) { +		String[] fields = s.split("\\s+"); +		if ( fields.length<1 || ! fields[0].matches("\\d{4}") ) +		    continue; +		int mjd = Integer.parseInt(fields[3]); +		double utcOffset = Time.utcOffset(mjd, 0); +		double t = Ephem.fromJd((utcOffset+32.184)/86400. + mjd + 2400000.5); +		double v = corr.v(t) * 1.e-4; +		double ut1Offset = Double.parseDouble(fields[6]); +		double off = ut1Offset - utcOffset; +		System.out.format("%d\t%.7f\t%.7f\t%.7f\n", mjd, off, v, off-v); +	    } +	} catch ( Exception e ) { +	    throw new RuntimeException(e); +	} +    } + +} diff --git a/org/madore/ephem/ZonalTides.java b/org/madore/ephem/ZonalTides.java new file mode 100644 index 0000000..166abcc --- /dev/null +++ b/org/madore/ephem/ZonalTides.java @@ -0,0 +1,57 @@ +package org.madore.ephem; + +import java.util.List; +import java.util.ArrayList; +import java.util.EnumMap; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.BufferedReader; + +public final class ZonalTides { + +    public static enum Variable { +	DUT1("dut1"), DLOD("dlod"), DOMEGA("domega"); +	final String name; +	Variable(String name) { this.name = name; } +    } + +    // The argument is in Julian centuries (value is in radians). +    public static Comput.Polynomial[] lambdas = new Comput.Polynomial[] { +	new Comput.Polynomial(134.96340251*Comput.degree, 1717915923.2178*Comput.arcsecond, 31.8792*Comput.arcsecond +0.051635*Comput.arcsecond, -0.00024470*Comput.arcsecond), // Delaunay l +	new Comput.Polynomial(357.52910918*Comput.degree, 129596581.0481*Comput.arcsecond, -0.5532*Comput.arcsecond +0.000136*Comput.arcsecond, -0.00001149*Comput.arcsecond), // Delaunay l′ +	new Comput.Polynomial(93.27209062*Comput.degree, 1739527262.8478*Comput.arcsecond, -12.7512*Comput.arcsecond -0.001037*Comput.arcsecond, 0.00000417*Comput.arcsecond), // Delaunay F +	new Comput.Polynomial(297.85019547*Comput.degree, 1602961601.2090*Comput.arcsecond, -6.3706*Comput.arcsecond +0.006593*Comput.arcsecond, -0.00003169*Comput.arcsecond), // Delaunay D +	new Comput.Polynomial(125.04455501*Comput.degree, -6962890.5431*Comput.arcsecond, 7.4722*Comput.arcsecond +0.007702*Comput.arcsecond, -0.00005939*Comput.arcsecond) // Delaunay Ω +    }; + +    private static EnumMap<Variable, Comput.SumPoisson2Terms> data = new EnumMap<Variable, Comput.SumPoisson2Terms>(Variable.class); + +    public static Comput.SumPoisson2Terms getFunc(Variable v) { +	if ( ! data.containsKey(v) ) { +	    List<Comput.Poisson2Term> series = new ArrayList<Comput.Poisson2Term>(); +	    try { +		InputStream str = ZonalTides.class.getResourceAsStream("zonal-tides.dat"); +		BufferedReader in = new BufferedReader(new InputStreamReader(str, "utf-8")); +		String s; +		while ( ( s = in.readLine() ) != null ) { +		    String[] fields = s.split("\t"); +		    if ( ! fields[1].equals(v.name) ) +			continue; +		    int deg = Integer.parseInt(fields[2]); +		    String[] subfields = fields[3].split(","); +		    double[] om = new double[5]; +		    for ( int j=0 ; j<5 ; j++ ) +			om[j] = Double.parseDouble(subfields[j]); +		    double b = Double.parseDouble(fields[4]); +		    double a = Double.parseDouble(fields[5]); +		    series.add(Comput.Poisson2Term.ab(deg, a, b, om, lambdas)); +		} +	    } catch ( Exception e ) { +		throw new RuntimeException(e); +	    } +	    data.put(v, new Comput.SumPoisson2Terms(series)); +	} +	return data.get(v); +    } + +} diff --git a/org/madore/ephem/zonal-tides.dat b/org/madore/ephem/zonal-tides.dat new file mode 100644 index 0000000..0f88093 --- /dev/null +++ b/org/madore/ephem/zonal-tides.dat @@ -0,0 +1,186 @@ +zonal-tides	dut1	0	1,0,2,2,2	-0.0235	0.0000 +zonal-tides	dut1	0	2,0,2,0,1	-0.0404	0.0000 +zonal-tides	dut1	0	2,0,2,0,2	-0.0987	0.0000 +zonal-tides	dut1	0	0,0,2,2,1	-0.0508	0.0000 +zonal-tides	dut1	0	0,0,2,2,2	-0.1231	0.0000 +zonal-tides	dut1	0	1,0,2,0,0	-0.0385	0.0000 +zonal-tides	dut1	0	1,0,2,0,1	-0.4108	0.0000 +zonal-tides	dut1	0	1,0,2,0,2	-0.9926	0.0000 +zonal-tides	dut1	0	3,0,0,0,0	-0.0179	0.0000 +zonal-tides	dut1	0	-1,0,2,2,1	-0.0818	0.0000 +zonal-tides	dut1	0	-1,0,2,2,2	-0.1974	0.0000 +zonal-tides	dut1	0	1,0,0,2,0	-0.0761	0.0000 +zonal-tides	dut1	0	2,0,2,-2,2	0.0216	0.0000 +zonal-tides	dut1	0	0,1,2,0,2	0.0254	0.0000 +zonal-tides	dut1	0	0,0,2,0,0	-0.2989	0.0000 +zonal-tides	dut1	0	0,0,2,0,1	-3.1873	0.2010 +zonal-tides	dut1	0	0,0,2,0,2	-7.8468	0.5320 +zonal-tides	dut1	0	2,0,0,0,-1	0.0216	0.0000 +zonal-tides	dut1	0	2,0,0,0,0	-0.3384	0.0000 +zonal-tides	dut1	0	2,0,0,0,1	0.0179	0.0000 +zonal-tides	dut1	0	0,-1,2,0,2	-0.0244	0.0000 +zonal-tides	dut1	0	0,0,0,2,-1	0.0470	0.0000 +zonal-tides	dut1	0	0,0,0,2,0	-0.7341	0.0000 +zonal-tides	dut1	0	0,0,0,2,1	-0.0526	0.0000 +zonal-tides	dut1	0	0,-1,0,2,0	-0.0508	0.0000 +zonal-tides	dut1	0	1,0,2,-2,1	0.0498	0.0000 +zonal-tides	dut1	0	1,0,2,-2,2	0.1006	0.0000 +zonal-tides	dut1	0	1,1,0,0,0	0.0395	0.0000 +zonal-tides	dut1	0	-1,0,2,0,0	0.0470	0.0000 +zonal-tides	dut1	0	-1,0,2,0,1	0.1767	0.0000 +zonal-tides	dut1	0	-1,0,2,0,2	0.4352	0.0000 +zonal-tides	dut1	0	1,0,0,0,-1	0.5339	0.0000 +zonal-tides	dut1	0	1,0,0,0,0	-8.4046	0.2500 +zonal-tides	dut1	0	1,0,0,0,1	0.5443	0.0000 +zonal-tides	dut1	0	0,0,0,1,0	0.0470	0.0000 +zonal-tides	dut1	0	1,-1,0,0,0	-0.0555	0.0000 +zonal-tides	dut1	0	-1,0,0,2,-1	0.1175	0.0000 +zonal-tides	dut1	0	-1,0,0,2,0	-1.8236	0.0000 +zonal-tides	dut1	0	-1,0,0,2,1	0.1316	0.0000 +zonal-tides	dut1	0	1,0,-2,2,-1	0.0179	0.0000 +zonal-tides	dut1	0	-1,-1,0,2,0	-0.0855	0.0000 +zonal-tides	dut1	0	0,2,2,-2,2	-0.0573	0.0000 +zonal-tides	dut1	0	0,1,2,-2,1	0.0329	0.0000 +zonal-tides	dut1	0	0,1,2,-2,2	-1.8847	0.0000 +zonal-tides	dut1	0	0,0,2,-2,0	0.2510	0.0000 +zonal-tides	dut1	0	0,0,2,-2,1	1.1703	0.0000 +zonal-tides	dut1	0	0,0,2,-2,2	-49.7174	0.4330 +zonal-tides	dut1	0	0,2,0,0,0	-0.1936	0.0000 +zonal-tides	dut1	0	2,0,0,-2,-1	0.0489	0.0000 +zonal-tides	dut1	0	2,0,0,-2,0	-0.5471	0.0000 +zonal-tides	dut1	0	2,0,0,-2,1	0.0367	0.0000 +zonal-tides	dut1	0	0,-1,2,-2,1	-0.0451	0.0000 +zonal-tides	dut1	0	0,1,0,0,-1	0.0921	0.0000 +zonal-tides	dut1	0	0,-1,2,-2,2	0.8281	0.0000 +zonal-tides	dut1	0	0,1,0,0,0	-15.8887	0.1530 +zonal-tides	dut1	0	0,1,0,0,1	-0.1382	0.0000 +zonal-tides	dut1	0	1,0,0,-1,0	0.0348	0.0000 +zonal-tides	dut1	0	2,0,-2,0,0	-0.1372	0.0000 +zonal-tides	dut1	0	-2,0,2,0,1	0.4211	0.0000 +zonal-tides	dut1	0	-1,1,0,1,0	-0.0404	0.0000 +zonal-tides	dut1	0	0,0,0,0,2	7.8998	0.0000 +zonal-tides	dut1	0	0,0,0,0,1	-1617.2681	0.0000 +zonal-tides	dlod	0	1,0,2,2,2	0.0000	0.2617 +zonal-tides	dlod	0	2,0,2,0,1	0.0000	0.3706 +zonal-tides	dlod	0	2,0,2,0,2	0.0000	0.9041 +zonal-tides	dlod	0	0,0,2,2,1	0.0000	0.4499 +zonal-tides	dlod	0	0,0,2,2,2	0.0000	1.0904 +zonal-tides	dlod	0	1,0,2,0,0	0.0000	0.2659 +zonal-tides	dlod	0	1,0,2,0,1	0.0000	2.8298 +zonal-tides	dlod	0	1,0,2,0,2	0.0000	6.8291 +zonal-tides	dlod	0	3,0,0,0,0	0.0000	0.1222 +zonal-tides	dlod	0	-1,0,2,2,1	0.0000	0.5384 +zonal-tides	dlod	0	-1,0,2,2,2	0.0000	1.2978 +zonal-tides	dlod	0	1,0,0,2,0	0.0000	0.4976 +zonal-tides	dlod	0	2,0,2,-2,2	0.0000	-0.1060 +zonal-tides	dlod	0	0,1,2,0,2	0.0000	-0.1211 +zonal-tides	dlod	0	0,0,2,0,0	0.0000	1.3804 +zonal-tides	dlod	0	0,0,2,0,1	0.9266	14.6890 +zonal-tides	dlod	0	0,0,2,0,2	2.4469	36.0910 +zonal-tides	dlod	0	2,0,0,0,-1	0.0000	-0.0988 +zonal-tides	dlod	0	2,0,0,0,0	0.0000	1.5433 +zonal-tides	dlod	0	2,0,0,0,1	0.0000	-0.0813 +zonal-tides	dlod	0	0,-1,2,0,2	0.0000	0.1082 +zonal-tides	dlod	0	0,0,0,2,-1	0.0000	-0.2004 +zonal-tides	dlod	0	0,0,0,2,0	0.0000	3.1240 +zonal-tides	dlod	0	0,0,0,2,1	0.0000	0.2235 +zonal-tides	dlod	0	0,-1,0,2,0	0.0000	0.2073 +zonal-tides	dlod	0	1,0,2,-2,1	0.0000	-0.1312 +zonal-tides	dlod	0	1,0,2,-2,2	0.0000	-0.2640 +zonal-tides	dlod	0	1,1,0,0,0	0.0000	-0.0968 +zonal-tides	dlod	0	-1,0,2,0,0	0.0000	-0.1099 +zonal-tides	dlod	0	-1,0,2,0,1	0.0000	-0.4115 +zonal-tides	dlod	0	-1,0,2,0,2	0.0000	-1.0093 +zonal-tides	dlod	0	1,0,0,0,-1	0.0000	-1.2224 +zonal-tides	dlod	0	1,0,0,0,0	0.5701	19.1647 +zonal-tides	dlod	0	1,0,0,0,1	0.0000	-1.2360 +zonal-tides	dlod	0	0,0,0,1,0	0.0000	-0.1000 +zonal-tides	dlod	0	1,-1,0,0,0	0.0000	0.1169 +zonal-tides	dlod	0	-1,0,0,2,-1	0.0000	-0.2332 +zonal-tides	dlod	0	-1,0,0,2,0	0.0000	3.6018 +zonal-tides	dlod	0	-1,0,0,2,1	0.0000	-0.2587 +zonal-tides	dlod	0	1,0,-2,2,-1	0.0000	-0.0344 +zonal-tides	dlod	0	-1,-1,0,2,0	0.0000	0.1542 +zonal-tides	dlod	0	0,2,2,-2,2	0.0000	0.0395 +zonal-tides	dlod	0	0,1,2,-2,1	0.0000	-0.0173 +zonal-tides	dlod	0	0,1,2,-2,2	0.0000	0.9726 +zonal-tides	dlod	0	0,0,2,-2,0	0.0000	-0.0910 +zonal-tides	dlod	0	0,0,2,-2,1	0.0000	-0.4135 +zonal-tides	dlod	0	0,0,2,-2,2	0.1490	17.1056 +zonal-tides	dlod	0	0,2,0,0,0	0.0000	0.0666 +zonal-tides	dlod	0	2,0,0,-2,-1	0.0000	-0.0154 +zonal-tides	dlod	0	2,0,0,-2,0	0.0000	0.1670 +zonal-tides	dlod	0	2,0,0,-2,1	0.0000	-0.0108 +zonal-tides	dlod	0	0,-1,2,-2,1	0.0000	0.0082 +zonal-tides	dlod	0	0,1,0,0,-1	0.0000	-0.0167 +zonal-tides	dlod	0	0,-1,2,-2,2	0.0000	-0.1425 +zonal-tides	dlod	0	0,1,0,0,0	0.0267	2.7332 +zonal-tides	dlod	0	0,1,0,0,1	0.0000	0.0225 +zonal-tides	dlod	0	1,0,0,-1,0	0.0000	-0.0053 +zonal-tides	dlod	0	2,0,-2,0,0	0.0000	-0.0079 +zonal-tides	dlod	0	-2,0,2,0,1	0.0000	-0.0203 +zonal-tides	dlod	0	-1,1,0,1,0	0.0000	0.0008 +zonal-tides	dlod	0	0,0,0,0,2	0.0000	0.1460 +zonal-tides	dlod	0	0,0,0,0,1	0.0000	-14.9471 +zonal-tides	domega	0	1,0,2,2,2	0.0000	-0.2209 +zonal-tides	domega	0	2,0,2,0,1	0.0000	-0.3128 +zonal-tides	domega	0	2,0,2,0,2	0.0000	-0.7630 +zonal-tides	domega	0	0,0,2,2,1	0.0000	-0.3797 +zonal-tides	domega	0	0,0,2,2,2	0.0000	-0.9203 +zonal-tides	domega	0	1,0,2,0,0	0.0000	-0.2244 +zonal-tides	domega	0	1,0,2,0,1	0.0000	-2.3884 +zonal-tides	domega	0	1,0,2,0,2	0.0000	-5.7637 +zonal-tides	domega	0	3,0,0,0,0	0.0000	-0.1031 +zonal-tides	domega	0	-1,0,2,2,1	0.0000	-0.4544 +zonal-tides	domega	0	-1,0,2,2,2	0.0000	-1.0953 +zonal-tides	domega	0	1,0,0,2,0	0.0000	-0.4200 +zonal-tides	domega	0	2,0,2,-2,2	0.0000	0.0895 +zonal-tides	domega	0	0,1,2,0,2	0.0000	0.1022 +zonal-tides	domega	0	0,0,2,0,0	0.0000	-1.1650 +zonal-tides	domega	0	0,0,2,0,1	-0.7820	-12.3974 +zonal-tides	domega	0	0,0,2,0,2	-2.0652	-30.4606 +zonal-tides	domega	0	2,0,0,0,-1	0.0000	0.0834 +zonal-tides	domega	0	2,0,0,0,0	0.0000	-1.3025 +zonal-tides	domega	0	2,0,0,0,1	0.0000	0.0686 +zonal-tides	domega	0	0,-1,2,0,2	0.0000	-0.0913 +zonal-tides	domega	0	0,0,0,2,-1	0.0000	0.1692 +zonal-tides	domega	0	0,0,0,2,0	0.0000	-2.6367 +zonal-tides	domega	0	0,0,0,2,1	0.0000	-0.1886 +zonal-tides	domega	0	0,-1,0,2,0	0.0000	-0.1749 +zonal-tides	domega	0	1,0,2,-2,1	0.0000	0.1107 +zonal-tides	domega	0	1,0,2,-2,2	0.0000	0.2228 +zonal-tides	domega	0	1,1,0,0,0	0.0000	0.0817 +zonal-tides	domega	0	-1,0,2,0,0	0.0000	0.0927 +zonal-tides	domega	0	-1,0,2,0,1	0.0000	0.3473 +zonal-tides	domega	0	-1,0,2,0,2	0.0000	0.8519 +zonal-tides	domega	0	1,0,0,0,-1	0.0000	1.0317 +zonal-tides	domega	0	1,0,0,0,0	-0.4811	-16.1749 +zonal-tides	domega	0	1,0,0,0,1	0.0000	1.0432 +zonal-tides	domega	0	0,0,0,1,0	0.0000	0.0844 +zonal-tides	domega	0	1,-1,0,0,0	0.0000	-0.0987 +zonal-tides	domega	0	-1,0,0,2,-1	0.0000	0.1968 +zonal-tides	domega	0	-1,0,0,2,0	0.0000	-3.0399 +zonal-tides	domega	0	-1,0,0,2,1	0.0000	0.2183 +zonal-tides	domega	0	1,0,-2,2,-1	0.0000	0.0290 +zonal-tides	domega	0	-1,-1,0,2,0	0.0000	-0.1302 +zonal-tides	domega	0	0,2,2,-2,2	0.0000	-0.0333 +zonal-tides	domega	0	0,1,2,-2,1	0.0000	0.0146 +zonal-tides	domega	0	0,1,2,-2,2	0.0000	-0.8209 +zonal-tides	domega	0	0,0,2,-2,0	0.0000	0.0768 +zonal-tides	domega	0	0,0,2,-2,1	0.0000	0.3490 +zonal-tides	domega	0	0,0,2,-2,2	-0.1257	-14.4370 +zonal-tides	domega	0	0,2,0,0,0	0.0000	-0.0562 +zonal-tides	domega	0	2,0,0,-2,-1	0.0000	0.0130 +zonal-tides	domega	0	2,0,0,-2,0	0.0000	-0.1409 +zonal-tides	domega	0	2,0,0,-2,1	0.0000	0.0092 +zonal-tides	domega	0	0,-1,2,-2,1	0.0000	-0.0069 +zonal-tides	domega	0	0,1,0,0,-1	0.0000	0.0141 +zonal-tides	domega	0	0,-1,2,-2,2	0.0000	0.1202 +zonal-tides	domega	0	0,1,0,0,0	-0.0222	-2.3068 +zonal-tides	domega	0	0,1,0,0,1	0.0000	-0.0190 +zonal-tides	domega	0	1,0,0,-1,0	0.0000	0.0045 +zonal-tides	domega	0	2,0,-2,0,0	0.0000	0.0066 +zonal-tides	domega	0	-2,0,2,0,1	0.0000	0.0171 +zonal-tides	domega	0	-1,1,0,1,0	0.0000	-0.0007 +zonal-tides	domega	0	0,0,0,0,2	0.0000	-0.1232 +zonal-tides	domega	0	0,0,0,0,1	0.0000	12.6153 | 
