public class PoissonSeriesParser extends Object
Poisson系列
文件。
Poisson系列由时间多项式部分和由总和级数组成的非多项式部分组成。 系列项
是多项式参数的谐波函数(正弦和余弦的组合)。 多项式参数是地月或行星的元素
的组合。
来自IERS的Poisson系列文件具有各种格式,有时有多项式部分,有时没有行星分量,有时没有周期列,有时度数递增的项要么在专用列中,要么在文件的连续部分中... 该类尝试读取所有常见格式,通过指定感兴趣的列。
递增度数项(即sin,cos,t sin,t cos,t^2 sin,t^2 cos ...)的处理如下。
来自旧约定的文件,例如IERS约定1996年的表5.1,为度0和度1使用单独的列,并且仅对于经度章动使用正弦,对于倾角章动使用余弦。 它的读取如下:
∆ψ = Σ (Ai+A'it) sin(ARGUMENT), ∆ε = Σ (Bi+B'it) cos(ARGUMENT) MULTIPLIERS OF PERIOD LONGITUDE OBLIQUITY l l' F D Om days Ai A'i Bi B'i 0 0 0 0 1 -6798.4 -171996 -174.2 92025 8.9 0 0 2 -2 2 182.6 -13187 -1.6 5736 -3.1 0 0 2 0 2 13.7 -2274 -0.2 977 -0.5 0 0 0 0 2 -3399.2 2062 0.2 -895 0.5
为了解析上表中的经度章动,应使用以下设置:
PoissonSeriesParser(int)
)withFirstDelaunay(int)
)withFirstPlanetary(int)
,因为此表中没有行星列withSinCos(int, int, double, int, double)
)withSinCos(int, int, double, int, double)
)为了解析上表中的倾角章动,应使用以下设置:
PoissonSeriesParser(int)
)withFirstDelaunay(int)
)withFirstPlanetary(int)
,因为此表中没有行星列withSinCos(int, int, double, int, double)
)withSinCos(int, int, double, int, double)
)来自最新约定的文件,例如IERS约定2010年的表5.3a,仅使用sin和cos两列,并在连续部分中使用单独的标题分隔度数。 它的读取如下:
--------------------------------------------------------------------------------------------------- (单位微角秒;截止:0.1微角秒) (ARG代表章动理论基本参数的各种组合) Sum_i[A_i * sin(ARG) + A"_i * cos(ARG)] + Sum_i[A'_i * sin(ARG) + A"'_i * cos(ARG)] * t (参见第5章,方程(35)) 下表提供了A_i和A"_i(j=0)的值,然后是A'_i和A"'_i(j=1) 出现在列4到8(地月部分)和列9到17(行星部分)的基本参数的表达式是IERS约定2003的表达式 ---------------------------------------------------------------------------------------------------------- j = 0 项数 = 1320 ---------------------------------------------------------------------------------------------------------- i A_i A"_i l l' F D Om L_Me L_Ve L_E L_Ma L_J L_Sa L_U L_Ne p_A ---------------------------------------------------------------------------------------------------------- 1 -17206424.18 3338.60 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 -1317091.22 -1369.60 0 0 2 -2 2 0 0 0 0 0 0 0 0 0 3 -227641.81 279.60 0 0 2 0 2 0 0 0 0 0 0 0 0 0 4 207455.40 -69.80 0 0 0 0 2 0 0 0 0 0 0 0 0 0 5 147587.70 1181.70 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ... 1319 -0.10 0.00 0 0 0 0 0 1 0 -3 0 0 0 0 0 -2 1320 -0.10 0.00 0 0 0 0 0 0 0 1 0 1 -2 0 0 0 -------------------------------------------------------------------------------------------------------------- j = 1 项数 = 38 -------------------------------------------------------------------------------------------------------------- i A'_i A"'_i l l' F D Om L_Me L_Ve L_E L_Ma L_J L_Sa L_U L_Ne p_A -------------------------------------------------------------------------------------------------------------- 1321 -17418.82 2.89 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1322 -363.71 -1.50 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1323 -163.84 1.20 0 0 2 -2 2 0 0 0 0 0 0 0 0 0 1324 122.74 0.20 0 1 2 -2 2 0 0 0我们的解析算法涉及将“j = 0, 1, 2 ...”标题中的部分度数添加到列度数中。这种算法的一个副作用是,在理论上可能会混合两种格式,例如,度数为2的项可能会在j=0部分中显示为度数为2的列,在j=1部分中显示为度数为1的列,在j=2部分中显示为度数为0的列。在实践中不太可能遇到这种情况。真实文件要么使用多个列,要么使用多个部分,但不会同时出现两者。
SeriesTerm
, PolynomialNutation
Constructor and Description |
---|
PoissonSeriesParser(int totalColumns)
构建一个从IERS表文件中解析Poisson级数的解析器。
|
Modifier and Type | Method and Description |
---|---|
PoissonSeries |
parse(InputStream stream, String name)
解析一个流。
|
PoissonSeriesParser |
withDoodson(int firstMultiplierColumn, int numberColumn)
设置Doodson乘数和Doodson数的列。
|
PoissonSeriesParser |
withFirstDelaunay(int firstColumn)
设置Delanay乘数的第一列。
|
PoissonSeriesParser |
withFirstPlanetary(int firstColumn)
设置行星乘数的第一列。
|
PoissonSeriesParser |
withGamma(int column)
设置GMST潮汐乘数的列。
|
PoissonSeriesParser |
withOptionalColumn(int column)
设置可选列。
|
PoissonSeriesParser |
withPolynomialPart(char freeVariable, PolynomialParser.Unit unit)
设置多项式部分解析。
|
PoissonSeriesParser |
withSinCos(int degree, int sinColumn, double sinFactor, int cosColumn, double cosFactor)
设置正弦和余弦系数的列。
|
public PoissonSeriesParser(int totalColumns)
totalColumns
- 非多项式部分中的总列数
public PoissonSeriesParser withPolynomialPart(char freeVariable, PolynomialParser.Unit unit)
freeVariable
- 多项式部分中自由变量的名称
unit
- 多项式的默认单位,如果文件中没有明确指定
public PoissonSeriesParser withOptionalColumn(int column)
可选列通常出现在与潮汐相关的文件中,因为一些波有特定的名称(χ₁,M₂,...),而其他波没有名称,因此在相应的文件行中用空格替换。
最多可以有一列是可选的。
column
- 可选列(从1开始计数)
public PoissonSeriesParser withGamma(int column)
column
- GMST潮汐乘数的列(从1开始计数)
withDoodson(int, int)
public PoissonSeriesParser withDoodson(int firstMultiplierColumn, int numberColumn)
firstMultiplierColumn
- 第一个Doodson乘数的列,对应于τ(从1开始计数)
numberColumn
- Doodson数的列(从1开始计数)
withGamma(int)
, withFirstDelaunay(int)
public PoissonSeriesParser withFirstDelaunay(int firstColumn)
firstColumn
- 第一个Delaunay乘数的列(从1开始计数)
public PoissonSeriesParser withFirstPlanetary(int firstColumn)
firstColumn
- 第一个行星乘数的列(从1开始计数)
public PoissonSeriesParser withSinCos(int degree, int sinColumn, double sinFactor, int cosColumn, double cosFactor)
degree
- 要设置的度数
sinColumn
- tdegree的正弦系数的列(从1开始计数,如果没有正弦系数则为-1)
sinFactor
- 正弦系数的乘法因子
cosColumn
- tdegree的余弦系数的列(从1开始计数,如果没有余弦系数则为-1)
cosFactor
- 余弦系数的乘法因子
public PoissonSeries parse(InputStream stream, String name)
stream
- 包含IERS表的流
name
- 资源文件的名称(仅用于错误消息)
Copyright © 2002-2023 CS GROUP. All rights reserved.