make_flock_of_fieldlines Subroutine

public subroutine make_flock_of_fieldlines(flock, max_n_fieldlines, iota, field, M_pol, N_tor, nfp, split_maxima)

Uses

  • proc~~make_flock_of_fieldlines~~UsesGraph proc~make_flock_of_fieldlines make_flock_of_fieldlines module~fieldline_labels fieldline_labels proc~make_flock_of_fieldlines->module~fieldline_labels module~constants constants module~fieldline_labels->module~constants

Build a flock of field lines spanning the region between neighbouring maxima contours centered around the minima contours through the field origin.

The field lines are placed equidistant in the label xi, spaced so that the discrete set still displays stellarator symmetry. To achieve this symmetry respecting spacing with < max_n_fieldlines, iota needs to be approximated. Its approximation is then used as rotational transform of the field lines. M_pol and N_tor are integer-valued reals giving the dominant helicity. N_tor must equal nfp when nonzero; use N_tor=0, M_pol=1 for QA. If the violation is too strong, maxima of contours of the omnigenous field are not merely deformed, but also split. Results should be treated with caution.

Arguments

Type IntentOptional Attributes Name
type(flock_of_fieldlines_t), intent(inout) :: flock
integer, intent(in) :: max_n_fieldlines

upper bound on number of field lines

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

rotational transform of field lines

class(field_t), intent(in) :: field

magnetic field representation in Boozer coordinates

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

poloidal helicity mode number; may be negative

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

toroidal helicity mode number; must equal nfp when nonzero

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

number of field periods; must be positive integer

integer, intent(out), optional :: split_maxima

1 if a split of maxima contours was detected


Calls

proc~~make_flock_of_fieldlines~~CallsGraph proc~make_flock_of_fieldlines make_flock_of_fieldlines proc~get_labels get_labels proc~make_flock_of_fieldlines->proc~get_labels proc~make_flock_from_labels make_flock_from_labels proc~make_flock_of_fieldlines->proc~make_flock_from_labels proc~calc_iota_p calc_iota_p proc~get_labels->proc~calc_iota_p proc~linspace linspace proc~get_labels->proc~linspace proc~rational_approx rational_approx proc~get_labels->proc~rational_approx compute_B_mod compute_B_mod proc~make_flock_from_labels->compute_B_mod get_covariant_components get_covariant_components proc~make_flock_from_labels->get_covariant_components interface~not_same not_same proc~make_flock_from_labels->interface~not_same none~get_theta fieldline_t%get_theta proc~make_flock_from_labels->none~get_theta proc~calc_fieldline_integrals calc_fieldline_integrals proc~make_flock_from_labels->proc~calc_fieldline_integrals proc~make_flock_from_labels->proc~calc_iota_p proc~failed_sanity_check failed_sanity_check proc~make_flock_from_labels->proc~failed_sanity_check proc~find_maxima_along_fieldline find_maxima_along_fieldline proc~make_flock_from_labels->proc~find_maxima_along_fieldline proc~get_global_b_max get_global_B_max proc~make_flock_from_labels->proc~get_global_b_max proc~is_not_integer is_not_integer proc~make_flock_from_labels->proc~is_not_integer proc~make_flock_from_labels->proc~linspace proc~pick_maximum_on_each_side pick_maximum_on_each_side proc~make_flock_from_labels->proc~pick_maximum_on_each_side proc~suspect_omnigenous_origin_not_minimum suspect_omnigenous_origin_not_minimum proc~make_flock_from_labels->proc~suspect_omnigenous_origin_not_minimum rel_accuracy_B rel_accuracy_B proc~make_flock_from_labels->rel_accuracy_B proc~integrate_1d_substituted integrate_1d_substituted proc~calc_fieldline_integrals->proc~integrate_1d_substituted proc~b_mod_along_fieldline B_mod_along_fieldline proc~find_maxima_along_fieldline->proc~b_mod_along_fieldline proc~db_dphi_along_fieldline dB_dphi_along_fieldline proc~find_maxima_along_fieldline->proc~db_dphi_along_fieldline proc~find_local_maxima find_local_maxima proc~find_maxima_along_fieldline->proc~find_local_maxima proc~set_field_and_fieldline set_field_and_fieldline proc~find_maxima_along_fieldline->proc~set_field_and_fieldline proc~unset_field_and_fieldline unset_field_and_fieldline proc~find_maxima_along_fieldline->proc~unset_field_and_fieldline proc~suspect_omnigenous_origin_not_minimum->compute_B_mod proc~suspect_omnigenous_origin_not_minimum->proc~b_mod_along_fieldline proc~suspect_omnigenous_origin_not_minimum->proc~db_dphi_along_fieldline proc~find_global_extrema find_global_extrema proc~suspect_omnigenous_origin_not_minimum->proc~find_global_extrema proc~find_local_minima find_local_minima proc~suspect_omnigenous_origin_not_minimum->proc~find_local_minima proc~suspect_omnigenous_origin_not_minimum->proc~set_field_and_fieldline proc~suspect_omnigenous_origin_not_minimum->proc~unset_field_and_fieldline proc~b_mod_along_fieldline->compute_B_mod proc~b_mod_along_fieldline->none~get_theta proc~db_dphi_along_fieldline->none~get_theta compute_B_and_dB_dx compute_B_and_dB_dx proc~db_dphi_along_fieldline->compute_B_and_dB_dx proc~find_global_extrema->proc~linspace proc~find_local_maxima->interface~not_same proc~find_local_maxima->proc~linspace proc~find_local_minima->proc~find_local_maxima proc~integrate_1d integrate_1d proc~integrate_1d_substituted->proc~integrate_1d proc~set_field_and_fieldline->proc~unset_field_and_fieldline qag qag proc~integrate_1d->qag

Called by

proc~~make_flock_of_fieldlines~~CalledByGraph proc~make_flock_of_fieldlines make_flock_of_fieldlines program~main main program~main->proc~make_flock_of_fieldlines