equilibrium_arguments Subroutine

public pure subroutine equilibrium_arguments(dnum, v_arg)

Equilibrium argument V_c (radians) for every catalog constituent at day number dnum. s,h,p,N are taken in radians (deg-mod-360 -> rad); the result is left un-modded (cos/sin are periodic). The ±pi/2 diurnal signs are load-bearing.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: dnum
real(kind=wp), intent(out) :: v_arg(TIDES_CATALOG_SIZE)

Calls

proc~~equilibrium_arguments~~CallsGraph proc~equilibrium_arguments equilibrium_arguments proc~mean_longitudes mean_longitudes proc~equilibrium_arguments->proc~mean_longitudes proc~wrap360 wrap360 proc~mean_longitudes->proc~wrap360

Called by

proc~~equilibrium_arguments~~CalledByGraph proc~equilibrium_arguments equilibrium_arguments proc~configure_ocean_bc configure_ocean_bc proc~configure_ocean_bc->proc~equilibrium_arguments proc~tides_configure_astronomy tides_configure_astronomy proc~tides_configure_astronomy->proc~equilibrium_arguments proc~configure_ocean_tides configure_ocean_tides proc~configure_ocean_tides->proc~tides_configure_astronomy proc~engine_setup engine_setup proc~engine_setup->proc~configure_ocean_bc proc~engine_setup->proc~configure_ocean_tides proc~complete_ocean_create complete_ocean_create proc~complete_ocean_create->proc~engine_setup proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_setup proc~driver_validate driver_validate proc~driver_validate->proc~engine_setup proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean proc~rdb_ocean_create_finalize rdb_ocean_create_finalize proc~rdb_ocean_create_finalize->proc~complete_ocean_create proc~rdb_ocean_create_from_string rdb_ocean_create_from_string proc~rdb_ocean_create_from_string->proc~complete_ocean_create

Variables

Type Visibility Attributes Name Initial
real(kind=wp), private :: h
real(kind=wp), private :: h_deg
real(kind=wp), private :: half_pi
real(kind=wp), private :: n_deg
real(kind=wp), private :: p
real(kind=wp), private :: p_deg
real(kind=wp), private :: s
real(kind=wp), private :: s_deg

Source Code

   pure subroutine equilibrium_arguments(dnum, v_arg)
      !! Equilibrium argument `V_c` (radians) for every catalog
      !! constituent at day number `dnum`.  s,h,p,N are taken in radians
      !! (deg-mod-360 -> rad); the result is left un-modded (cos/sin are
      !! periodic).  The ±pi/2 diurnal signs are load-bearing.
      real(wp), intent(in) :: dnum
      real(wp), intent(out) :: v_arg(TIDES_CATALOG_SIZE)
      real(wp) :: s_deg, h_deg, p_deg, n_deg
      real(wp) :: s, h, p
      real(wp) :: half_pi
      call mean_longitudes(dnum, s_deg, h_deg, p_deg, n_deg)
      s = s_deg*TIDE_DEG2RAD
      h = h_deg*TIDE_DEG2RAD
      p = p_deg*TIDE_DEG2RAD
      half_pi = 0.5_wp*TIDE_PI
      v_arg(1) = 2.0_wp*(h - s)                    ! M2
      v_arg(2) = 0.0_wp                            ! S2
      v_arg(3) = -3.0_wp*s + 2.0_wp*h + p          ! N2
      v_arg(4) = 2.0_wp*h                          ! K2
      v_arg(5) = h + half_pi                       ! K1  (+pi/2)
      v_arg(6) = -2.0_wp*s + h - half_pi           ! O1  (-pi/2)
      v_arg(7) = -h - half_pi                      ! P1  (-pi/2)
      v_arg(8) = -3.0_wp*s + h + p - half_pi       ! Q1  (-pi/2)
      v_arg(9) = 2.0_wp*s                          ! MF
      v_arg(10) = s - p                            ! MM
   end subroutine equilibrium_arguments