Module for interpolation of body-fixed Moon frames.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private, | parameter | :: | wp | = | real64 |
Real working precision if not specified [8 bytes] |
| integer, | public, | parameter | :: | moon_frame_wp | = | wp |
working precision for moon frame |
Main class to read a pre-computed CSV file with roll, pitch, and yaw angles and interpolate the angles to get the rotation matrix for a given ephemeris time.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(bspline_1d), | private | :: | roll_spline | ||||
| type(bspline_1d), | private | :: | pitch_spline | ||||
| type(bspline_1d), | private | :: | yaw_x_spline |
x-component of yaw angle unit vector: x=cos(yaw) |
|||
| type(bspline_1d), | private | :: | yaw_y_spline |
y-component of yaw angle unit vector: y=sin(yaw) |
| procedure, public :: initialize => initialize_moon_frame_interpolater | |
| procedure, public :: destroy => destroy_moon_frame_interpolater | |
| procedure, public :: j2000_to_frame | |
| procedure, public :: frame_to_j2000 |
rotation matrix from J2000 to the frame
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(moon_frame_interpolater), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | et |
rotation matrix from the frame to j2000
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(moon_frame_interpolater), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | et |
initialize the moon frame interpolater with the given csv file.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(moon_frame_interpolater), | intent(inout) | :: | me | |||
| character(len=*), | intent(in) | :: | filename |
csv file with roll, pitch, and yaw angles vs ephemeris time. (see |
||
| integer, | intent(in), | optional | :: | k |
spline order ( |
|
| logical, | intent(in), | optional | :: | extrapolate |
if true, extrapolate the spline outside the range of the data. Default is false. |
|
| real(kind=wp), | intent(in), | optional | :: | et0 |
start ephemeris time [if not present, the initial time in the file is used] |
|
| real(kind=wp), | intent(in), | optional | :: | etf |
end ephemeris time [if not present, the final time in the file is used] |
roll, patch, yaw to rotation matrix
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | roll |
rad |
||
| real(kind=wp), | intent(in) | :: | pitch |
rad |
||
| real(kind=wp), | intent(in) | :: | yaw |
rad |
||
| real(kind=wp), | intent(out) | :: | r(3,3) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(moon_frame_interpolater), | intent(inout) | :: | me |