a ballistic segment in the mission
t0
, tf', and
x0_rotating`.xf
, xf_rotating
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=:), | public, | allocatable | :: | name |
the segment name |
||
type(segment_data), | public | :: | data | ||||
type(segment_data), | public | :: | cached_data |
used when computing gradients |
|||
type(geopotential_model_pines), | public, | pointer | :: | grav | => | null() |
central body geopotential model [global] |
class(jpl_ephemeris), | public, | pointer | :: | eph | => | null() |
the ephemeris [global] |
logical, | public | :: | pointmass_central_body | = | .false. | ||
type(trajectory), | public | :: | traj_inertial |
in the inertial frame (j2000-moon) |
|||
type(trajectory), | public | :: | traj_rotating |
in the rotating frame (moon-earth, moon-centered) |
|||
type(trajectory), | public | :: | traj_se_rotating |
in the rotating frame (sun-earth, earth-centered) |
Sets all the info in a segment for it to be propagated.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(segment), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in) | :: | t0 |
[days] |
||
real(kind=wp), | intent(in) | :: | tf |
[days] |
||
real(kind=wp), | intent(in), | dimension(6) | :: | x0_rotating |
state in rotating frame |
Gets the initial states of a segment
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(segment), | intent(in) | :: | me | |||
real(kind=wp), | intent(out), | optional | :: | t0 | ||
real(kind=wp), | intent(out), | optional, | dimension(6) | :: | x0_rotating |
rotating frame |
After propagating a segment, this gets the outputs.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(segment), | intent(in) | :: | me | |||
real(kind=wp), | intent(out), | optional, | dimension(6) | :: | xf |
inertial frame |
real(kind=wp), | intent(out), | optional, | dimension(6) | :: | xf_rotating |
rotating frame |
real(kind=wp), | intent(out), | optional, | dimension(6) | :: | x0_rotating |
Set the outputs of a segment, assuming it has been propagated elsewhere
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(segment), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in), | dimension(6) | :: | xf |
inertial frame |
|
real(kind=wp), | intent(in), | dimension(6) | :: | xf_rotating |
inertial frame |
Propagate a segment (assumes the inputs have already been populated)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(segment), | intent(inout) | :: | me | |||
integer, | intent(in), | optional | :: | mode |
1 - don't report steps, 2 - report steps (for plotting) |
|
real(kind=wp), | intent(in), | optional | :: | tstep |
fixed time step for mode=2 |
Set all the data in a segment.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(segment), | intent(inout) | :: | me | |||
type(segment_data), | intent(in) | :: | d |
type,extends(ddeabm_class) :: segment !! a ballistic segment in the mission !! !! * central body is the Moon (8x8 gravity), !! with Earth and Sun as third-bodies. !! * Inputs are: `t0`, `tf', and `x0_rotating`. !! * Output are: `xf`, `xf_rotating` character(len=:),allocatable :: name !! the segment name type(segment_data) :: data type(segment_data) :: cached_data !! used when computing gradients ! These can be pointers that are pointing to the global ones in the mission, ! Or, when using OpenMP, they are allocated in each segment. type(geopotential_model_pines),pointer :: grav => null() !! central body geopotential model [global] class(jpl_ephemeris),pointer :: eph => null() !! the ephemeris [global] logical :: pointmass_central_body = .false. ! for saving the trajectory for plotting: type(trajectory) :: traj_inertial !! in the inertial frame (j2000-moon) type(trajectory) :: traj_rotating !! in the rotating frame (moon-earth, moon-centered) type(trajectory) :: traj_se_rotating !! in the rotating frame (sun-earth, earth-centered) contains procedure,public :: set_input => set_segment_inputs procedure,public :: get_inputs => get_segment_inputs procedure,public :: get_outputs => get_segment_outputs procedure,public :: set_outputs => set_segment_outputs procedure,public :: propagate => propagate_segment procedure :: cache procedure :: uncache procedure :: put_data_in_segment end type segment