jr_init Subroutine

private subroutine jr_init(me, cb_polar_radius, status, filename, f107_override, f107a_override, kp_override)

Initialize the Jacchia-Roberts module with central body parameters.

Can use a space weather file for dynamic space weather data or specify override values directly. [one or the other must be input]

Type Bound

jacchia_roberts_type

Arguments

Type IntentOptional Attributes Name
class(jacchia_roberts_type), intent(inout) :: me
real(kind=dp), intent(in) :: cb_polar_radius

Polar radius of central body (km)

integer(kind=ip), intent(out) :: status

Output status (0=success, non-zero=error)

character(len=*), intent(in), optional :: filename

Path to CSSI space weather file

real(kind=dp), intent(in), optional :: f107_override

Override value for F10.7 if not using space weather file

real(kind=dp), intent(in), optional :: f107a_override

Override value for F10.7a if not using space weather file

real(kind=dp), intent(in), optional :: kp_override

Override value for Kp index if not using space weather file


Calls

proc~~jr_init~~CallsGraph proc~jr_init jacchia_roberts_type%jr_init proc~sw_init sw_data_type%sw_init proc~jr_init->proc~sw_init proc~date_to_mjd date_to_mjd proc~sw_init->proc~date_to_mjd proc~sw_cleanup sw_data_type%sw_cleanup proc~sw_init->proc~sw_cleanup proc~julian_day julian_day proc~date_to_mjd->proc~julian_day

Source Code

   subroutine jr_init(me, cb_polar_radius, status, filename, &
                      f107_override, f107a_override, kp_override)
      class(jacchia_roberts_type), intent(inout) :: me
      real(dp), intent(in) :: cb_polar_radius !!  Polar radius of central body (km)
      integer(ip), intent(out) :: status  !! Output status (0=success, non-zero=error)
      character(len=*), intent(in), optional :: filename !! Path to CSSI space weather file
      real(dp), intent(in), optional :: f107_override  !! Override value for F10.7 if not using space weather file
      real(dp), intent(in), optional :: f107a_override !! Override value for F10.7a if not using space weather file
      real(dp), intent(in), optional :: kp_override    !! Override value for Kp index if not using space weather file

      me%cb_polar_radius = cb_polar_radius
      me%cb_polar_squared = cb_polar_radius * cb_polar_radius

      ! Initialize other state variables
      me%root1 = 0.0_dp
      me%root2 = 0.0_dp
      me%x_root = 0.0_dp
      me%y_root = 0.0_dp
      me%t_infinity = 0.0_dp
      me%tx = 0.0_dp
      me%sum = 0.0_dp

      me%use_sw_file = .false.
      if (present(filename) .and. .not. present(f107_override) .and. &
                                  .not. present(f107a_override) .and. &
                                  .not. present(kp_override)) then
         ! Use space weather file; override values not provided
         me%use_sw_file = .true.
         call me%sw_data%initialize(filename, status)
      else if (present(f107_override) .and. present(f107a_override) .and. present(kp_override)) then
         ! user specified values directly; do not use space weather file
         me%f107_override = f107_override
         me%f107a_override = f107a_override
         me%kp_override = kp_override
         status = 0
      else
         write(*,*) 'ERROR: No space weather file provided and override values not fully specified'
         status = 2
      end if

   end subroutine jr_init