SSH_DP Function

private function SSH_DP(L, K, THETA, PHI) result(SSH)

Scalar spherical harmonic , fully normalized with the Condon-Shortley phase:

Warning

Built on the unnormalized ASSOC_LEGENDRE -- inherits its stability limit (safe for at any ), not SSH_ALL's (that routine uses the normalized recurrence instead). See STABILITY_FINDINGS.md at the repo root, Part 2.

Returns: , complex.

Arguments

Type IntentOptional Attributes Name
integer(kind=i4), intent(in) :: L

Degree, .

integer(kind=i4), intent(in) :: K

Order, .

real(kind=dp), intent(in) :: THETA

Colatitude in radians, .

real(kind=dp), intent(in) :: PHI

Longitude in radians, .

Return Value complex(kind=dp)


Calls

proc~~ssh_dp~~CallsGraph proc~ssh_dp SSH_DP dcos dcos proc~ssh_dp->dcos interface~assoc_legendre ASSOC_LEGENDRE proc~ssh_dp->interface~assoc_legendre interface~log_fact LOG_FACT proc~ssh_dp->interface~log_fact proc~assoc_legendre_dp ASSOC_LEGENDRE_DP interface~assoc_legendre->proc~assoc_legendre_dp proc~log_fact_dp LOG_FACT_DP interface~log_fact->proc~log_fact_dp proc~assoc_legendre_dp->interface~log_fact

Called by

proc~~ssh_dp~~CalledByGraph proc~ssh_dp SSH_DP interface~ssh SSH interface~ssh->proc~ssh_dp proc~batch_ssh_cons BATCH_SSH_CONS proc~batch_ssh_cons->interface~ssh proc~bench_ssh BENCH_SSH proc~bench_ssh->interface~ssh proc~pvsh_rad_dp PVSH_RAD_DP proc~pvsh_rad_dp->interface~ssh proc~run_gwi_sweep RUN_GWI_SWEEP proc~run_gwi_sweep->interface~ssh proc~run_gwj_sweep RUN_GWJ_SWEEP proc~run_gwj_sweep->interface~ssh proc~test1_gw TEST1_GW proc~test1_gw->interface~ssh proc~test2_gw TEST2_GW proc~test2_gw->interface~ssh program~convergence_main CONVERGENCE_MAIN program~convergence_main->interface~ssh program~convergence_main->proc~batch_ssh_cons program~dipole_synthesis DIPOLE_SYNTHESIS program~dipole_synthesis->interface~ssh interface~pvsh_rad PVSH_RAD program~dipole_synthesis->interface~pvsh_rad interface~pvsh_rad->proc~pvsh_rad_dp program~bench_main BENCH_MAIN program~bench_main->proc~bench_ssh program~gwi_gwj_sweep GWI_GWJ_SWEEP program~gwi_gwj_sweep->proc~run_gwi_sweep program~gwi_gwj_sweep->proc~run_gwj_sweep program~main MAIN program~main->proc~batch_ssh_cons program~main->proc~test1_gw program~main->proc~test2_gw proc~batch_pvsh_rad_cons BATCH_PVSH_RAD_CONS program~main->proc~batch_pvsh_rad_cons proc~test2_vsh TEST2_VSH program~main->proc~test2_vsh proc~batch_pvsh_rad_cons->interface~pvsh_rad proc~field_known FIELD_KNOWN proc~field_known->interface~pvsh_rad proc~test2_vsh->interface~pvsh_rad program~dipole_flux_expulsion DIPOLE_FLUX_EXPULSION program~dipole_flux_expulsion->interface~pvsh_rad program~dipole_uniform_sphere DIPOLE_UNIFORM_SPHERE program~dipole_uniform_sphere->interface~pvsh_rad

Source Code

  FUNCTION SSH_DP(L,K,THETA,PHI) RESULT(SSH)
  IMPLICIT NONE
  INTEGER(KIND=i4), INTENT(IN) :: L
  INTEGER(KIND=i4), INTENT(IN) :: K
  REAL(KIND=dp), INTENT(IN) :: THETA
  REAL(KIND=dp), INTENT(IN) :: PHI
  REAL(KIND=dp) :: NORM
  COMPLEX(KIND=dp) :: SSH
  NORM = DSQRT((2.d0*L+1.d0)/(4.d0*pi))* &
      EXP(0.5_dp*(LOG_FACT(L-K)-LOG_FACT(L+K)))
  SSH = NORM*ASSOC_LEGENDRE(L,K,DCOS(THETA))*EXP(j*K*PHI)
  RETURN
  END FUNCTION SSH_DP