Initialize the segment for integration.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(segment), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | alt0 | |||
| real(kind=wp), | intent(in) | :: | deadband_alt | |||
| integer, | intent(in) | :: | grav_n | |||
| integer, | intent(in) | :: | grav_m | |||
| character(len=*), | intent(in) | :: | ephemeris_file | |||
| character(len=*), | intent(in) | :: | gravfile |
subroutine initialize_segment(me,alt0,deadband_alt,grav_n,grav_m,&
ephemeris_file,gravfile)
implicit none
class(segment),intent(inout) :: me
real(wp),intent(in) :: alt0
real(wp),intent(in) :: deadband_alt
integer,intent(in) :: grav_n
integer,intent(in) :: grav_m
character(len=*),intent(in) :: ephemeris_file
character(len=*),intent(in) :: gravfile
logical :: status_ok
! set up the integrator:
call me%initialize_event(me%n_eoms,me%maxsteps,ballistic_derivs,&
[me%integrator_tol],[me%integrator_tol],&
event_func,me%root_tol)
if (me%include_third_bodies) then
! set up the ephemeris:
write(output_unit,'(A)') 'loading ephemeris file: '//trim(ephemeris_file)
call me%eph%initialize(filename=ephemeris_file,status_ok=status_ok)
if (.not. status_ok) error stop 'error initializing ephemeris'
end if
! set class variables for event function:
me%nominal_altitude = alt0
me%deadband = deadband_alt
me%grav_n = grav_n
me%grav_m = grav_m
! set up the force model [main body is moon]:
write(output_unit,'(A)') 'loading gravity file: '//trim(gravfile)
call me%grav%initialize(gravfile,me%grav_n,me%grav_m,status_ok)
if (.not. status_ok) error stop 'error initializing gravity model'
end subroutine initialize_segment