The ADM modules and programs

Module mag_adm_vol

Module : mag_adm

Purpose : (arbitrary) analytic dynamical magnetosphere data

class adm_vol_t

ADM field volume

type, extends (field_vol_t)

Parameters
  • rho_w(:,:,:) – Density in wind regions – real(WP), allocatable

  • rho_h(:,:,:) – Density in hot regions – real(WP), allocatable

  • rho_c(:,:,:) – Density in cooled regions – real(WP), allocatable

  • v_w(:,:,;) – Velocity in wind regions – real(WP), allocatable

  • v_h(:,:,:) – Velocity in hot regions – real(WP), allocatable

  • v_c(:,:,:) – Velocity in cooled regions – real(WP), allocatable

  • T_h(:,:,:) – Temperature in hot regions – real(WP), allocatable

  • M_star – Stellar mass – real(WP)

  • R_star – Stellar radius – real(WP)

  • T_eff – Stellar effective temperature – real(WP)

  • X – Hydrogen abundance – real(WP)

  • Z – Metal abundance – real(WP)

  • M_dot – Wind mass-loss rate – real(WP)

  • beta – Wind velocity law exponent – real(WP)

  • v_inf – Wind terminal speed – real(WP)

  • Lambda – Coooling rate – real(WP)

  • R_c – Closure radius (R_star) – real(WP)

  • delta – Smoothing length (R_star) – real(WP)

  • process_node – process a particular node – procedure

  • bcast_nodes – broadcast the class if MPI – procedure

class shock_func_t

shock properties

type, extends (func_t)

Parameters
  • r_m – radius of the loop apex (point farthest from the star) – real(WP)

  • B_m – magnetic field at the loop apex – real(WP)

  • g_m – g function (path inegral result) at the loop apex – real(WP)

  • B_star – magnetic field value of star – real(WP)

  • mu_B – dot product of r and B – real(WP)

  • beta – wind acceleration exponent – real(WP)

  • r_beta – radius where wind speed is sound speed when following a beta velocity law – real(WP)

  • chi_inf – cooling parameter; >>1 is adiabatic, <<1 is radiative – real(WP)

  • sp_r – radial spline – spline_t

  • sp_B – magnetic field spline – spline_t

  • sp_g – path-integral-function spline – spline_t

  • verbose – – logical

  • eval_c – evaluate the shock discriminant – procedure

adm_vol_t_(fv) result (av)

Construct the adm_vol_t

function

Parameters
locate_shock_ (s, r_m, B_m, g_m, B_star, mu_B, &

locate the shock

function

Parameters
  • s(:) – position along loop – real(WP), intent(in)

  • r_m – radius at shock apex – real(WP), intent(in)

  • B_m – magnetic field at shock apex – real(WP), intent(in)

  • g_m – g function (path inegral result) at the loop apex – real(WP), intent(in)

  • B_star – star magnetic field - real(WP), intent(in)

  • mu_B – dot product of r and B – real(WP), intent(in)

  • beta – wind acceleration exponent – real(WP), intent(in)

  • r_beta – radius where wind speed is sound speed when following a beta velocity law – real(WP), intent(in)

  • chi_inf – cooling parameter; >>1 is adiabatic, <<1 is radiative – real(WP), intent(in)

  • sp_r – radial spline – real(WP), intent(in)

  • sp_B – magnetic field spline – real(WP), intent(in)

  • sp_g – path-tinegral-function spline – real(WP), intent(in)

Rtype s_s

s position (along loop) of shock – real(WP)

eval_c_(this, z) result (f_z)

Evaluate the shock discriminant function, defined by XADM (B15)

function

Parameters
  • this – shock in question – shock_func_t, intent(inout)

  • z – real part is position along path length – complex(WP), intent(in)

Rtype f_z

shock discriminant – complex(WP)

read_(hg, av)

Read the adm_vol_t

only if hdf5

subroutine

Parameters

hg – ihdf5 data set – hgroup_t, intent(inout)

Rtype av

ADM volume – adm_vol_t, intent(out)

write_(hg, av)

Write the adm_vol_t

only if hdf5

subroutine

Parameters
  • hg – ihdf5 data set – hgroup_t, intent(inout)

  • av – ADM volume – adm_vol_t, intent(in)

process_node(this, vi, fl)

Process the node

subroutine

Parameters
  • this – ADM volume – adm_vol_t, intent(inout)

  • vi(:) – position for evaluation – integer, intent(in)

  • fl – field line – field_line_t, intent(in)

bcast_(av, root_rank)

Broadcast the adm_vol_t

only if MPI

subroutine

Parameters
  • av – ADM volume to broadcast – adm_vol_t, intent(inout)

  • root_rank – rank of the root processor node – integer, intent(in)

bcast_nodes(this, vi_a, vi_b, root_rank)

Broadcast the nodes with indices between i_a and i_b

only if MPI

subroutine

Parameters
  • this – ADM volume to broadcast – adm_vol_t, intent(inout)

  • vi_a(:) – lower indices of broadcasting – integer, intent(in)

  • vi_b(:) – upper indices of broadcasting – integer, intent(in)

  • root_rank – rank of the root processor node – integer, intent(in)

Module build_adm_vol

Program : build_arrm

Purpose : build adm_vol