module analytic_divertor_equilibrium_m use divertor_equilibrium_m, only: divertor_equilibrium_t, max_polygon_N_pts use precision_m, only : FP implicit none type, abstract, extends(divertor_equilibrium_t) :: & analytic_divertor_equilibrium_t real(FP) :: R0 !! Non-normalised magentic axis radius real(FP) :: Z0 !! Non-normalised magentic axis vertical position real(FP) :: RX !! Normalised primary x-point radius real(FP) :: ZX !! Normalised primary x-point vertical position real(FP) :: rhomin_privflux contains procedure, public :: check_privflux_regions end type analytic_divertor_equilibrium_t contains subroutine check_privflux_regions(self, x, y, phi, local_rhomin, & local_rhomin_exists, local_rhomax, local_rhomax_exists) !! For simple X-point geometries, can set any points below the X-point !! as private flux if not in the SOL class(analytic_divertor_equilibrium_t), intent(in) :: self real(FP), intent(in) :: x, y, phi real(FP), intent(inout) :: local_rhomax, local_rhomin logical, intent(out) :: local_rhomin_exists, local_rhomax_exists local_rhomin_exists = .false. local_rhomax_exists = .false. if ((y <= self%ZX) .neqv. self%flip_Z) then local_rhomin = max(self%rhomin_privflux, local_rhomin) local_rhomin_exists = .true. endif end subroutine check_privflux_regions end module analytic_divertor_equilibrium_m