![]() |
ORB5
4.00
|
Data Types | |
| interface | sc2xy |
| interface | get_gradients |
Functions/Subroutines | |
| subroutine | norm1 |
| subroutine, public | equil_backfields (s, chi, pot, es, echi) |
| subroutine, public | equil_backfields1d (psi, pot, epsi) |
| real(kind=r8) function, dimension(size(quant_list, 1)) | equil_quants (s, chi, quant_list) |
| pure real(kind=r8) function, public | equil_absb (s, chi) |
| Returns the norm of the equilibrium magnetic field. | |
| subroutine | equil_comps (s, chi, comp_no, out) |
| subroutine, public | bderivs (s, chi, dbds, dbdchi, absb) |
| real(kind=r8) function, public | equil_dmaxb (st) |
| real(kind=r8) function, public | equil_maxb (st) |
| real(kind=r8) function, public | equil_addpbst (s, chi) |
| real(kind=r8) function, public | equil_tprime (s, chi) |
| pure real(kind=r8) function, public | equil_tob (s, chi) |
| Returns R*B_tor/B. | |
| real(kind=r8) function, public | equil_s (px, py) |
| subroutine, public | sc2xy (s, theta, x, y) |
| subroutine | sc2xyn (s, theta, x, y, n) |
| subroutine, public | sc2xy_sincos (s, cost, sint, x, y) |
| subroutine, public | sc2xy_chease (s, theta, x, y) |
| subroutine, public | xy2sc (x, y, s, chi_out) |
| real(kind=r8) function, dimension(2), public | get_comp (s, chi) |
| real(kind=r8) function, dimension(2), public | get_gradpsi (px, py) |
| real(kind=r8) function, dimension(2), public | get_gradb (px, py) |
| pure subroutine | get_gradients1 (s, chi, grads, gradchi, gradphi) |
| pure subroutine | get_gradientsn (s, chi, n, grads, gradchi, gradphi) |
| real(kind=r8) function, dimension(2), public | get_grhphi (px, py) |
| real(kind=r8) function, public | equil_brotb (s, chi) |
| real(kind=r8) function, public | jacob (s, chi) |
| real(kind=r8) function, public | jacobderivative (s, chi) |
| real(kind=r8) function, public | jacob_tsp (s, chi) |
| subroutine | init_profiles |
| Define equilibrium profiles (density, temperature and parallel momentum). | |
| real(kind=r8) function | profile_i (st, kappa_x, width, peak, grad) |
| subroutine | normalize_profiles |
| subroutine | set_profiles_mks |
| subroutine | get_nbars (isp, cnorm, cnorm2) |
| Calculate average density value \bar{n} for normalization. | |
| subroutine | calculate_other_normalizations |
| subroutine | calculate_ubulk |
| Calculate the ubulk and ubulk_prime look up tables. | |
| subroutine | adjust_svol_min_max |
| Readjust svol_min and svol_max to grid points. | |
| subroutine | impose_quasineutrality |
| subroutine | impose_quasineutrality_mks |
| real(kind=r8) function | sech (x) |
| subroutine, public | profiles_sh (isp, psi, nishval) |
| subroutine, public | profiles (isp, psi, tval, tgrad, nval, ngrad, vpval, vpgrad) |
| Get equilibrium profiles and gradients. | |
| subroutine | read_equil_ah |
| subroutine | s2rad_mhd (ps, prad, pdrds) |
| Compute s->rho_vol by linear interpolation with CHEASE grids. | |
| subroutine | s2rad_adhoc (ps, prad, pdrds) |
| Compute s->rho_vol analytically according to q-profile. | |
| subroutine, public | s2rad (ps, prad, pdrds) |
| Convert \(s=\sqrt(\psi/\psi_{edge})\) in \(\rho/a_{mid}\) and gives \(d(\rho/a_{mid})/ds\). | |
| real(kind=r8) function, public | get_psi_of_r (zrho) |
| real(kind=r8) function, public | func_sigma (ss) |
| real(kind=r8) function, public | func_sigmab (ss) |
| real(kind=r8) function, public | func_sigmatprimeob (ss) |
| real(kind=r8) function, public | func_b_pszs (ss) |
| real(kind=r8) function, public | func_tprimeob_pszs (ss) |
| real(kind=r8) function, public | fitbound_v (zr) |
| real(kind=r8) function, public | equil_hchi (s, chi) |
| subroutine, public | equil_h (px, py, h) |
| real(kind=r8) function | get_rho (s, theta) |
| subroutine, public | qchi (radvar, qout, strsel) |
| Get q profile by linear interpolation. | |
| real(kind=r8) function, public | s_of_q (zq) |
| subroutine, public | get_qmin (sqmin, qmin) |
| real(kind=r8) function, public | get_vth_psi (zpsit, isp) |
| subroutine | int_jacob |
| subroutine | allocate_flux_bins |
| Allocate arrays for bin volumes, surfaces, etc. | |
| subroutine | calculate_vol_coord |
| subroutine | build_zpsi_grd |
| Build psi grid for the binning. | |
| subroutine | build_bin_vol |
| Compute volume and surface of a radial bin. | |
| subroutine | bin_vol_loop (i, zirqpts, zqp, zqw, zdtheta, ztheta_grd) |
| subroutine | build_zpsi_grd_island |
| subroutine | init_jacobian_island |
| real(kind=r8) function, public | gtgp_xy (px, py) |
| real(kind=r8) function, public | func_torpsi (ss) |
| Get toroidal flux. | |
| subroutine, public | init_dens_profile (worktype, isp, zf_av, z_den) |
| subroutine | dump_equil |
| Write equilibrium quantities in the hdf5 file format. | |
| real(kind=r8) function, public | func_alphab_fsa (ss) |
| subroutine, public | create_equil |
| subroutine, public | equil_aux |
| real(kind=r8) function, public | get_chi (s, theta) |
| subroutine | make_equil_sc_coeff |
| subroutine | make_equil_strong |
| Computes quantities needed during time evolution on a (s,chi) grid. | |
| subroutine | coeff_axis |
| subroutine, public | get_fdfds (s, f, dfds) |
| subroutine, public | get_rz (s, chi, r, z) |
| real(kind=r8) function, public | get_theta (s, chi) |
| subroutine, public | equil_coef_sc (s, chi, zr, zpsidr, zpsidz, zb, zhchi, zhphi, zgrb, addpchi, addpphi, brotb, divh, grads, gradchi) |
| pure subroutine, public | equil_move_sc (s, chi, zr, ztprime, zb, zgrb, zdivh, zh, addpbst, addp, exh, ztsubb, addvpa) |
| Compute quantities in curvilinear coordinates needed during time evolution by bilinear interpolation. | |
| subroutine, public | get_larm_coeff (s, chi, larmsc, larmchic, larmchis) |
| subroutine, public | get_larm_coeffn (s, chi, larmsc, larmchic, larmchis) |
| Compute coefficients for particle position by bilinear interpolation. | |
| real(kind=r8) function, public | calc_ftrap (s, theta, itrap) |
| Local fraction of trapped particles. | |
| subroutine | create_psi |
| subroutine | qbar (zrad, zq, zdqdrad) |
| Get pseudo-safety factor and its derivative. | |
| subroutine, public | read_equil_hdf5 |
| subroutine | make_equil_sc_coeff_chease |
| subroutine | set_back_pot |
| Set the background potential: various options depending on input flags. | |
| subroutine, public | make_toroidal_flow_potential (potential, write_exb_diagnostics, time) |
| Load a toroidal angular frequency profile given as an arbitrary set of points, and calculate the background potential to give this rotation. Toroidal rotation profile specified in prof_file (/data/omega), with npsi_profile points (in /data/NPSI). Omega should be in units of radians/cyclotron frequency. Designed for general coordinate system and doesn't make large-aspect ratio assumptions. Uses the following input parameters: nsel_pot_profile=NSEL_POT_PROF_FILE, flow_scale, prof_file. | |
| subroutine | load_omega () |
| real(kind=r8) function, public | equil_pp (s) |
| real(kind=r8) function, public | equil_ubulk (s_val, chi_val, isp) |
| real(kind=r8) function, public | equil_ubulk_prime (s_val, chi_val, isp) |
| real(kind=r8) function, public | equil_ubulk_dchi (s_val, chi_val, isp) |
| subroutine | load_profiles (isp) |
| subroutine | get_nref |
| subroutine, public | compute_bin_vol (stmin, zds, stbin, chitmin, zdchi, chitbin, zdphi) |
| pure integer function | find_chease_s_index (imap, s) |
| Given a value of s, and an initial guess, find the index of the closest value in S_CHEASE. | |
| pure integer function | find_index (dumarray, imap, s) |
| Given a value, and an initial guess, find the index of the closest value in a CHEASE array. | |
| pure integer function | find_chease_chi_index (imap, cchi) |
| Given a value of chi, and an initial guess, find the index of the closest value in CHI_CHEASE. | |
| subroutine, public | equil_move_strong (s, chi, due2dsigma, due2dchi, dbdsigma, dbdchi) |
| subroutine, public | equil_pot (sigmat, chi, es_back) |
| subroutine, public | back_vel_mod (sigmat, chi, vexb2) |
| subroutine | back_vel_diff (sigmat, chi, due2dsigma, due2dchi) |
| subroutine, public | equil_perp_vec (s, chi, hy, hz, grsigma2, grchi2, grsigmagrchi, j_s, r) |
| subroutine, public | curl_ue (sigmat, chi, x, y, z) |
| subroutine, public | back_vel_tor (sigmat, chi, ue_phi) |
| subroutine, public | equil_strong_vdr (sigmat, chi, duphidpsi, duphidchi) |
| subroutine | dump_equil_strong |
| subroutine | set_n_corr |
| subroutine | set_corr_axis |
| pure subroutine, public | getdn_corr (psit, dncorr) |
| real(kind=r8) function, public | getdens_corr (psit) |
| subroutine | read_equil_ntprofiles |
| subroutine, public | acc_update_device_equil_variables |
Variables | |
| integer, parameter | nequ_qtt =28 |
| integer, parameter | nequ_qtt_sc =51 |
| integer, parameter | nequ_qtt_sc_chease =18 |
| integer, parameter | nequ_isl =5 |
| integer, parameter | nequ_1d =4 |
| real(kind=r8), parameter | extent =0.1_r8 |
| real(kind=r8), parameter | equ_grid_offset = 1.5_r8 |
| integer, parameter | equ_grid_lw = 2 |
| integer, parameter | equ_grid_hi = 1 |
| integer, save | nrho |
| integer, save | nrho_q |
| integer, save | n1dprof_pt |
| integer, save, public | ngmax |
| integer, save | ngmaxtheta |
| integer, dimension(:), allocatable, save, public | jchiin |
| integer, dimension(:), allocatable, save, public | jchiin0 |
| integer, save, public | ichimin |
| integer, save, public | ichimax |
| integer, save, public | ichimin0 |
| integer, save, public | ichimax0 |
| real(kind=r8), save | drho |
| real(kind=r8), save | drho_inv |
| real(kind=r8), save | drho_q |
| real(kind=r8), save | drho_q_inv |
| real(kind=r8), save | gea_midn |
| real(kind=r8), save, public | xmag |
| real(kind=r8), save, public | ymag |
| real(kind=r8), save, public | rhfs |
| real(kind=r8), save, public | c_psi0corr |
| real(kind=r8), save, public | psi0 |
| real(kind=r8), save | e_mid =1.0_r8 |
| real(kind=r8), save | ds |
| real(kind=r8), save, public | ds_inv |
| real(kind=r8), save | dth |
| real(kind=r8), save | dth_inv |
| real(kind=r8), dimension(:), allocatable, save, public | volps |
| real(kind=r8), dimension(:), allocatable, save, public | voltor |
| real(kind=r8), dimension(:), allocatable, save, public | voltor_inv |
| real(kind=r8), dimension(:), allocatable, save, public | volanu |
| real(kind=r8), dimension(:), allocatable, save, public | voldiag |
| real(kind=r8), dimension(:), allocatable, save, public | pvol_norm |
| real(kind=r8), dimension(:), allocatable, save, public | ekinps |
| real(kind=r8), dimension(:), allocatable, save, public | volps_tr |
| real(kind=r8), dimension(:), allocatable, save, public | pvol_norm_tr |
| real(kind=r8), dimension(:), allocatable, save, public | ekinps_tr |
| real(kind=r8), save | rmajor |
| real(kind=r8), save | zmajor |
| real(kind=r8), save | edge_rmin |
| real(kind=r8), save | edge_rmax |
| real(kind=r8), save | edge_zmin |
| real(kind=r8), save | edge_zmax |
| real(kind=r8), save, public | b_norm |
| real(kind=r8), save, public | d_norm |
| real(kind=r8), save | t_norm |
| real(kind=r8), save, public | ger_min |
| real(kind=r8), save, public | ger_max |
| real(kind=r8), save, public | gez_min |
| real(kind=r8), save | gez_max |
| real(kind=r8), save, public | gedr |
| real(kind=r8), save, public | gedz |
| real(kind=r8), save, public | gedr_inv |
| real(kind=r8), save, public | gedz_inv |
| real(kind=r8), save | geds |
| real(kind=r8), save | gedc |
| real(kind=r8), save | geds_inv |
| real(kind=r8), save | gedc_inv |
| real(kind=r8), save, public | fpsin |
| real(kind=r8), save, public | a_midn |
| real(kind=r8), save | r0_midn |
| real(kind=r8), save, public | bmin_c |
| real(kind=r8), save, public | bmax_c |
| real(kind=r8), save, public | fonbmax_c |
| real(kind=r8), save, public | fonbmin_c |
| real(kind=r8), dimension(:,:,:), allocatable, save, public | a_equ |
| real(kind=r8), dimension(:,:,:), allocatable, save | c_equ |
| real(kind=r8), dimension(:,:,:), allocatable, save | d_equ |
| real(kind=r8), dimension(:,:,:), allocatable, save | e_equ |
| real(kind=r8), dimension(:,:), allocatable, target, save | a_1dprof |
| real(kind=r8), dimension(:), allocatable, save | psi_of_r |
| real(kind=r8), dimension(:), allocatable, save | qs |
| real(kind=r8), dimension(:), allocatable, save | dqsdr |
| real(kind=r8), dimension(:), allocatable, save, public | thgrid_eq |
| real(kind=r8), dimension(:), allocatable, save, public | sgrid_eq |
| real(kind=r8), dimension(:,:), allocatable, save | rhotab |
| real(kind=r8), dimension(:,:), allocatable, save | lambdatab |
| real(kind=r8), dimension(:,:), allocatable, save, public | sigmas |
| real(kind=r8), dimension(:), allocatable, save | alphab_fsa |
| real(kind=r8), dimension(:), allocatable, save, public | alphain |
| real(kind=r8), dimension(:), allocatable, save, public | alphain0 |
| real(kind=r8), save, public | chibmin |
| real(kind=r8), save, public | chibmax |
| real(kind=r8), save, public | chibmin0 |
| real(kind=r8), save, public | chibmax0 |
| real(kind=r8), save | q_fact1 |
| real(kind=r8), save | q_fact2 |
| real(kind=r8), save | corr_axis |
| real(kind=r8), dimension(:,:), allocatable, save | chigtab |
| real(kind=r8), save | dpsi_0 |
| real(kind=r8), save | dpsi_0inv |
| real(kind=r8), dimension(:), allocatable, save | psi_grd |
| real(kind=r8), dimension(:), allocatable, save | rho_tor_norm |
| real(kind=r8), dimension(:), allocatable, save | drho_tor_norm |
| real(kind=r8), dimension(:,:), allocatable, save | t_pic |
| real(kind=r8), dimension(:,:), allocatable, save | gradt_pic |
| real(kind=r8), dimension(:,:), allocatable, save | t_pic_mks |
| real(kind=r8), dimension(:,:), allocatable, save | n_pic |
| real(kind=r8), dimension(:,:), allocatable, save | gradn_pic |
| real(kind=r8), dimension(:,:), allocatable, save | n_pic_mks |
| real(kind=r8), dimension(:), allocatable, save | ni_shield |
| real(kind=r8), dimension(:), allocatable, save | lx_pic |
| real(kind=r8), dimension(:), allocatable, save | zeff_pic |
| real(kind=r8), dimension(:), allocatable, save | zefftmp_pic |
| real(kind=r8), dimension(:), allocatable, save | betae_pic |
| real(kind=r8), dimension(:,:), allocatable, save | beta_pic |
| real(kind=r8), dimension(:,:), allocatable, save | vp_pic |
| real(kind=r8), dimension(:,:), allocatable, save | gradvp_pic |
| real(kind=r8), dimension(:), allocatable, save | gradgradne |
| real(kind=r8), dimension(:), allocatable, save | n_corr |
| real(kind=r8), dimension(:), allocatable, save, public | bin_vol |
| real(kind=r8), dimension(:,:), allocatable, save, public | bin_vol_2d |
| real(kind=r8), dimension(:,:), allocatable, save, public | bin_vol_3d_inv |
| real(kind=r8), dimension(:,:), allocatable, save, public | bin_vol_3d |
| real(kind=r8), dimension(:), allocatable, save | bin_helical_ti |
| real(kind=r8), dimension(:), allocatable, save | bin_helical_ni |
| real(kind=r8), dimension(:), allocatable, save | psi_av |
| real(kind=r8), dimension(:,:), allocatable, save | psi_av_hel |
| real(kind=r8), dimension(:,:), allocatable, save | bin_vol_hel |
| real(kind=r8), dimension(:), allocatable, save, public | bin_surf |
| real(kind=r8), dimension(:), allocatable, save, public | nbar |
| real(kind=r8), dimension(:), allocatable, save | tbar |
| real(kind=r8), dimension(:), allocatable, save | nbar_anu |
| real(kind=r8), dimension(:), allocatable, save | torpsitab |
| real(kind=r8), dimension(:), allocatable, save, public | zpsi_grd |
| real(kind=r8), dimension(:), allocatable, save, public | psihe_grd |
| real(kind=r8), save, public | psires |
| real(kind=r8), save, public | psihes |
| real(kind=r8), save, public | width_is |
| integer, save, public | znin |
| integer, save, public | znisl |
| integer, save, public | znout |
| integer | hdf5_ioutgyro |
| real(kind=r8), dimension(:), allocatable, save | p_psi |
| real(kind=r8), dimension(:), allocatable, save | dpdpsi |
| real(kind=r8), dimension(:), allocatable, save | f_psi |
| real(kind=r8), dimension(:), allocatable, save | fdfdpsi |
| real(kind=r8), dimension(:), allocatable, save | q_psi |
| real(kind=r8), dimension(:), allocatable, save | dqdpsi |
| real(kind=r8), dimension(:), allocatable, save | psi_chease |
| real(kind=r8), dimension(:), allocatable, save | chi_chease |
| real(kind=r8), dimension(:), allocatable, save | s_chease |
| real(kind=r8), dimension(:), allocatable, save | rgeom |
| real(kind=r8), dimension(:), allocatable, save | ageom |
| real(kind=r8), dimension(:), allocatable, save | kappae |
| real(kind=r8), dimension(:), allocatable, save | bmax_s |
| real(kind=r8), dimension(:), allocatable, save | volume |
| real(kind=r8), dimension(:), allocatable, save | psinorm_chease |
| real(kind=r8), dimension(:), allocatable, save | rhovnorm_chease |
| real(kind=r8), dimension(:), allocatable, save | drhovnormds_chease |
| real(kind=r8), dimension(:), allocatable, save | mhdti |
| real(kind=r8), dimension(:), allocatable, save | mhdte |
| real(kind=r8), dimension(:), allocatable, save | mhdn |
| real(kind=r8), dimension(:,:,:), allocatable, save | ubulk_s |
| real(kind=r8), dimension(:,:,:), allocatable, save | ubulk_prime_s |
| real(kind=r8), dimension(:), allocatable, save | pot_back |
| real(kind=r8), dimension(:), allocatable, save | int1 |
| real(kind=r8), public | zdpsi_0 |
| integer, dimension(:), allocatable, save | profile_grid |
| integer, parameter | psi_g =0 |
| integer, parameter | sigma_g =1 |
| integer, parameter | rho_g =2 |
| subroutine, public equil_mod::acc_update_device_equil_variables |
|
private |
Readjust svol_min and svol_max to grid points.
|
private |
Allocate arrays for bin volumes, surfaces, etc.
|
private |
| [in] | sigmat | Calculate the derivatives of u_e^2 (background velocity) using quadratic interpolation and finite differencing |
| [in] | chi | Calculate the derivatives of u_e^2 (background velocity) using quadratic interpolation and finite differencing |
| subroutine, public equil_mod::back_vel_mod | ( | real(kind=r8), intent(in) | sigmat, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | vexb2 ) |
| subroutine, public equil_mod::back_vel_tor | ( | real(kind=r8), intent(in) | sigmat, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | ue_phi ) |
| subroutine, public equil_mod::bderivs | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | dbds, | ||
| real(kind=r8), intent(out) | dbdchi, | ||
| real(kind=r8), intent(out) | absb ) |
|
private |
| [in] | i | Radial bin number |
| [in] | zirqpts | Number of quadrature points in s |
| [in] | zdtheta | Interval length in theta |
| [in] | zqp | Quadrature point in s |
| [in] | zqw | Quadrature weights |
| [in] | ztheta_grd | Grid equidistant in theta* |
|
private |
Compute volume and surface of a radial bin.
|
private |
Build psi grid for the binning.
|
private |
| real(kind=r8) function, public equil_mod::calc_ftrap | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | theta, | ||
| integer, intent(in) | itrap ) |
Local fraction of trapped particles.
|
private |
|
private |
Calculate the ubulk and ubulk_prime look up tables.
|
private |
|
private |
| subroutine, public equil_mod::compute_bin_vol | ( | real(kind=r8), intent(in) | stmin, |
| real(kind=r8), intent(in) | zds, | ||
| integer, intent(in) | stbin, | ||
| real(kind=r8), intent(in) | chitmin, | ||
| real(kind=r8), intent(in) | zdchi, | ||
| integer, intent(in) | chitbin, | ||
| real(kind=r8), intent(in) | zdphi ) |
| subroutine, public equil_mod::create_equil |
|
private |
| subroutine, public equil_mod::curl_ue | ( | real(kind=r8), intent(in) | sigmat, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | x, | ||
| real(kind=r8), intent(out) | y, | ||
| real(kind=r8), intent(out) | z ) |
|
private |
Write equilibrium quantities in the hdf5 file format.
|
private |
| pure real(kind=r8) function, public equil_mod::equil_absb | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi ) |
Returns the norm of the equilibrium magnetic field.
Returns the norm of the equilibrium magnetic field at position (s,chi) using a bilinear interpolation
| [in] | s | Radial position |
| [in] | chi | Poloidal position |
| real(kind=r8) function, public equil_mod::equil_addpbst | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi ) |
| subroutine, public equil_mod::equil_aux |
| subroutine, public equil_mod::equil_backfields | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | pot, | ||
| real(kind=r8), intent(out) | es, | ||
| real(kind=r8), intent(out) | echi ) |
| subroutine, public equil_mod::equil_backfields1d | ( | real(kind=r8), intent(in) | psi, |
| real(kind=r8), intent(out) | pot, | ||
| real(kind=r8), intent(out) | epsi ) |
| real(kind=r8) function, public equil_mod::equil_brotb | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi ) |
| subroutine, public equil_mod::equil_coef_sc | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | zr, | ||
| real(kind=r8), intent(out) | zpsidr, | ||
| real(kind=r8), intent(out) | zpsidz, | ||
| real(kind=r8), intent(out) | zb, | ||
| real(kind=r8), intent(out) | zhchi, | ||
| real(kind=r8), intent(out) | zhphi, | ||
| real(kind=r8), dimension(3), intent(out) | zgrb, | ||
| real(kind=r8), intent(out) | addpchi, | ||
| real(kind=r8), intent(out) | addpphi, | ||
| real(kind=r8), intent(out) | brotb, | ||
| real(kind=r8), intent(out) | divh, | ||
| real(kind=r8), dimension(2), intent(out) | grads, | ||
| real(kind=r8), dimension(2), intent(out) | gradchi ) |
|
private |
| real(kind=r8) function, public equil_mod::equil_dmaxb | ( | real(kind=r8), intent(in) | st | ) |
| subroutine, public equil_mod::equil_h | ( | real(kind=r8), intent(in) | px, |
| real(kind=r8), intent(in) | py, | ||
| real(kind=r8), dimension(3), intent(out) | h ) |
| real(kind=r8) function, public equil_mod::equil_hchi | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi ) |
| real(kind=r8) function, public equil_mod::equil_maxb | ( | real(kind=r8), intent(in) | st | ) |
| pure subroutine, public equil_mod::equil_move_sc | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | zr, | ||
| real(kind=r8), intent(out) | ztprime, | ||
| real(kind=r8), intent(out) | zb, | ||
| real(kind=r8), dimension(3), intent(out) | zgrb, | ||
| real(kind=r8), intent(out) | zdivh, | ||
| real(kind=r8), dimension(3), intent(out) | zh, | ||
| real(kind=r8), intent(out) | addpbst, | ||
| real(kind=r8), dimension(3), intent(out) | addp, | ||
| real(kind=r8), dimension(3), intent(out) | exh, | ||
| real(kind=r8), intent(out) | ztsubb, | ||
| real(kind=r8), intent(out) | addvpa ) |
Compute quantities in curvilinear coordinates needed during time evolution by bilinear interpolation.
| [in] | s | Radial coordinate \(s\) |
| [in] | chi | Poloidal coordinate |
| [out] | zgrb | \((h\wedge\nabla b/b)\cdot \nabla s\), \( (h\wedge\nabla b/b)\cdot \nabla\chi\), and \( (h\wedge\nabla b/b)\cdot \nabla \phi\) |
| [out] | exh | \(T(\psi)/J\_sB \), \(\nabla s \cdot \nabla \psi /(Br^2) \), and \(\nabla \psi \cdot \nabla \chi /(Br^2)\) |
| [out] | zr | Radial coordinate \(r\) |
| [out] | ztprime | \(\frac{dT(\psi)}{d\psi}\) |
| [out] | zb | Magnetic field intensity |
| [out] | zdivh | Divergence of \(h\) |
| [out] | zh | 0.0, \(h\cdot \nabla\chi\), \(h\cdot \nabla\phi\) |
| [out] | addpbst | Additional term for \(B^\star\) |
| [out] | addp | 0.0, \( h \wedge h \wedge (\nabla\wedge B)/B \cdot \nabla \chi\), \( h \wedge h \wedge (\nabla\wedge B)/B \cdot \nabla \phi\) |
| [out] | ztsubb | \(T(\psi)/B\) |
| [out] | addvpa | \(p'(\psi) T(\psi) dB/d\chi /(J\_\psi B^4)\) |
| subroutine, public equil_mod::equil_move_strong | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | due2dsigma, | ||
| real(kind=r8), intent(out) | due2dchi, | ||
| real(kind=r8), intent(out) | dbdsigma, | ||
| real(kind=r8), intent(out) | dbdchi ) |
| [in] | s | Interpolate values from equilibrium grid that are used in strong flow eqn of motion |
| [in] | chi | Interpolate values from equilibrium grid that are used in strong flow eqn of motion |
| subroutine, public equil_mod::equil_perp_vec | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | hy, | ||
| real(kind=r8), intent(out) | hz, | ||
| real(kind=r8), intent(out) | grsigma2, | ||
| real(kind=r8), intent(out) | grchi2, | ||
| real(kind=r8), intent(out) | grsigmagrchi, | ||
| real(kind=r8), intent(out) | j_s, | ||
| real(kind=r8), intent(out) | r ) |
| [in] | s | Returns values required in calculated the components of (h x {h x A}) |
| [in] | chi | Returns values required in calculated the components of (h x {h x A}) |
| subroutine, public equil_mod::equil_pot | ( | real(kind=r8), intent(in) | sigmat, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | es_back ) |
| real(kind=r8) function, public equil_mod::equil_pp | ( | real(kind=r8), intent(in) | s | ) |
|
private |
| real(kind=r8) function, public equil_mod::equil_s | ( | real(kind=r8), intent(in) | px, |
| real(kind=r8), intent(in) | py ) |
| subroutine, public equil_mod::equil_strong_vdr | ( | real(kind=r8), intent(in) | sigmat, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | duphidpsi, | ||
| real(kind=r8), intent(out) | duphidchi ) |
| pure real(kind=r8) function, public equil_mod::equil_tob | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi ) |
Returns R*B_tor/B.
Returns the R*B_tor/B at position (s,chi) using a bilinear interpolation
| [in] | s | Radial position |
| [in] | chi | Poloidal position |
| real(kind=r8) function, public equil_mod::equil_tprime | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi ) |
| real(kind=r8) function, public equil_mod::equil_ubulk | ( | real(kind=r8), intent(in) | s_val, |
| real(kind=r8), intent(in) | chi_val, | ||
| integer, intent(in) | isp ) |
| [in] | s_val | s coordinate |
| [in] | chi_val | s coordinate |
| [in] | isp | species of the markers |
| real(kind=r8) function, public equil_mod::equil_ubulk_dchi | ( | real(kind=r8), intent(in) | s_val, |
| real(kind=r8), intent(in) | chi_val, | ||
| integer, intent(in) | isp ) |
| [in] | s_val | s and chi coordinates |
| [in] | chi_val | s and chi coordinates |
| [in] | isp | species of the markers |
| real(kind=r8) function, public equil_mod::equil_ubulk_prime | ( | real(kind=r8), intent(in) | s_val, |
| real(kind=r8), intent(in) | chi_val, | ||
| integer, intent(in) | isp ) |
| [in] | s_val | s coordinate |
| [in] | chi_val | s coordinate |
| [in] | isp | species of the markers |
|
private |
Given a value of chi, and an initial guess, find the index of the closest value in CHI_CHEASE.
| [in] | imap | Initial guess of index |
| [in] | cchi | Given chi |
|
private |
Given a value of s, and an initial guess, find the index of the closest value in S_CHEASE.
| [in] | imap | Initial guess of index |
| [in] | s | Given s $acc routine (find_index) seq |
|
private |
Given a value, and an initial guess, find the index of the closest value in a CHEASE array.
| [in] | imap | Initial guess of index |
| [in] | s | Given s |
| real(kind=r8) function, public equil_mod::fitbound_v | ( | real(kind=r8), intent(in) | zr | ) |
| real(kind=r8) function, public equil_mod::func_alphab_fsa | ( | real(kind=r8), intent(in) | ss | ) |
| real(kind=r8) function, public equil_mod::func_b_pszs | ( | real(kind=r8), intent(in) | ss | ) |
| real(kind=r8) function, public equil_mod::func_sigma | ( | real(kind=r8), intent(in) | ss | ) |
| real(kind=r8) function, public equil_mod::func_sigmab | ( | real(kind=r8), intent(in) | ss | ) |
| real(kind=r8) function, public equil_mod::func_sigmatprimeob | ( | real(kind=r8), intent(in) | ss | ) |
| real(kind=r8) function, public equil_mod::func_torpsi | ( | real(kind=r8), intent(in) | ss | ) |
Get toroidal flux.
| [in] | ss | Radial position |
| real(kind=r8) function, public equil_mod::func_tprimeob_pszs | ( | real(kind=r8), intent(in) | ss | ) |
| real(kind=r8) function, public equil_mod::get_chi | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | theta ) |
| real(kind=r8) function, dimension(2), public equil_mod::get_comp | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi ) |
| subroutine, public equil_mod::get_fdfds | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(out) | f, | ||
| real(kind=r8), intent(out) | dfds ) |
| real(kind=r8) function, dimension(2), public equil_mod::get_gradb | ( | real(kind=r8), intent(in) | px, |
| real(kind=r8), intent(in) | py ) |
|
private |
|
private |
| real(kind=r8) function, dimension(2), public equil_mod::get_gradpsi | ( | real(kind=r8), intent(in) | px, |
| real(kind=r8), intent(in) | py ) |
| real(kind=r8) function, dimension(2), public equil_mod::get_grhphi | ( | real(kind=r8), intent(in) | px, |
| real(kind=r8), intent(in) | py ) |
| subroutine, public equil_mod::get_larm_coeff | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | larmsc, | ||
| real(kind=r8), intent(out) | larmchic, | ||
| real(kind=r8), intent(out) | larmchis ) |
| subroutine, public equil_mod::get_larm_coeffn | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), dimension(:), intent(out) | larmsc, | ||
| real(kind=r8), dimension(:), intent(out) | larmchic, | ||
| real(kind=r8), dimension(:), intent(out) | larmchis ) |
Compute coefficients for particle position by bilinear interpolation.
| [in] | s | Radial position of the marker's GC |
| [in] | chi | Poloidal position of the marker's GC |
|
private |
Calculate average density value \bar{n} for normalization.
|
private |
| real(kind=r8) function, public equil_mod::get_psi_of_r | ( | real(kind=r8), intent(in) | zrho | ) |
| subroutine, public equil_mod::get_qmin | ( | real(kind=r8), intent(out) | sqmin, |
| real(kind=r8), intent(out) | qmin ) |
|
private |
| subroutine, public equil_mod::get_rz | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi, | ||
| real(kind=r8), intent(out) | r, | ||
| real(kind=r8), intent(out) | z ) |
| real(kind=r8) function, public equil_mod::get_theta | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi ) |
| real(kind=r8) function, public equil_mod::get_vth_psi | ( | real(kind=r8), intent(in) | zpsit, |
| integer, intent(in) | isp ) |
| real(kind=r8) function, public equil_mod::getdens_corr | ( | real(kind=r8), intent(in) | psit | ) |
| pure subroutine, public equil_mod::getdn_corr | ( | real(kind=r8), intent(in) | psit, |
| real(kind=r8), intent(out) | dncorr ) |
| real(kind=r8) function, public equil_mod::gtgp_xy | ( | real(kind=r8), intent(in) | px, |
| real(kind=r8), intent(in) | py ) |
|
private |
|
private |
| subroutine, public equil_mod::init_dens_profile | ( | integer, intent(in) | worktype, |
| integer, intent(in) | isp, | ||
| real(kind=r8), dimension(:), intent(inout), optional | zf_av, | ||
| real(kind=r8), dimension(:), intent(inout), optional | z_den ) |
|
private |
|
private |
Define equilibrium profiles (density, temperature and parallel momentum).
THIS works only for bulk ions and electrons. Other species better have nsel_species /= 6 SSAAR
|
private |
| real(kind=r8) function, public equil_mod::jacob | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi ) |
| real(kind=r8) function, public equil_mod::jacob_tsp | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi ) |
| real(kind=r8) function, public equil_mod::jacobderivative | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | chi ) |
|
private |
read hdf5 file, get omega
Interpolate \Omega onto equilibrium grid
|
private |
|
private |
|
private |
|
private |
Computes quantities needed during time evolution on a (s,chi) grid.
| subroutine, public equil_mod::make_toroidal_flow_potential | ( | real(kind=r8), dimension(0:ngmax), intent(out) | potential, |
| logical, intent(in) | write_exb_diagnostics, | ||
| real(kind=r8), intent(in) | time ) |
Load a toroidal angular frequency profile given as an arbitrary set of points, and calculate the background potential to give this rotation. Toroidal rotation profile specified in prof_file (/data/omega), with npsi_profile points (in /data/NPSI). Omega should be in units of radians/cyclotron frequency. Designed for general coordinate system and doesn't make large-aspect ratio assumptions. Uses the following input parameters: nsel_pot_profile=NSEL_POT_PROF_FILE, flow_scale, prof_file.
Given a toroidal angular frequency profile, we want to calculate the electrostatic potential associated with the perpendicular part (the parallel part is handled by the equilibrium distribution function).
A toroidal flow, \(v_\Omega = \Omega R\), has vector components: \( v_\Omega = (v\cdot\nabla\varphi)\mathrm{e}_\varphi = \Omega \mathrm{e}_\varphi \)
Decompose into parallel and perpendicular components with: \( v_\Omega = (v_\Omega \cdot \hat{b}) \hat{b} - \hat{b}\times(\hat{b}\times v_\Omega) \)
The perpendicular part is: \( -\Omega b^{\theta_*} b^\varphi g_{\varphi \varphi}\mathrm{e}_{\theta_*} + \Omega(b^{\theta_*})^2 g_{{\theta_*} {\theta_*}}\mathrm{e}_\varphi \)
where \(g_{x y}\) is the \(x,y\) component of the covariant metric tensor.
We can then equate components of this term to the components of the \(E \times B\) velocity to find the electric field, and then integrate that to find the potential
read hdf5 file, get omega
Loop over s at one poloidal angle - potential is a flux function
Get \Omega on higher-resolution grid
(theta_*, theta_*) component of metric tensor
Get magnetic equilibrium quantities
Calculate ExB and parallel velocity components
Electric field from theta_* or phi component of ExB
Get physical values of different components
Reconstruct toroidal angular velocity, sanity check
Normalise the electric field before computing the potential
Integrate the electric field to find the potential
Write out various quantities, creating the datasets first if need be
|
private |
|
private |
|
private |
| subroutine, public equil_mod::profiles | ( | integer, intent(in) | isp, |
| real(kind=r8), intent(in) | psi, | ||
| real(kind=r8), intent(out) | tval, | ||
| real(kind=r8), intent(out) | tgrad, | ||
| real(kind=r8), intent(out) | nval, | ||
| real(kind=r8), intent(out) | ngrad, | ||
| real(kind=r8), intent(out) | vpval, | ||
| real(kind=r8), intent(out) | vpgrad ) |
Get equilibrium profiles and gradients.
| [in] | isp | Species under consideration |
| [in] | psi | Radial position |
| [out] | tval | Temperature |
| [out] | tgrad | Temperature gradient |
| [out] | nval | Density |
| [out] | ngrad | Density gradient |
| [out] | vpval | Parallel velocity |
| [out] | vpgrad | Parallel velocity gradient |
| subroutine, public equil_mod::profiles_sh | ( | integer, intent(in) | isp, |
| real(kind=r8), intent(in) | psi, | ||
| real(kind=r8), intent(out) | nishval ) |
|
private |
Get pseudo-safety factor and its derivative.
| subroutine, public equil_mod::qchi | ( | real(kind=r8), intent(in) | radvar, |
| real(kind=r8), intent(out) | qout, | ||
| character(len=*), intent(in), optional | strsel ) |
Get q profile by linear interpolation.
| [in] | radvar | Radial position |
| [out] | qout | Ouptut safety factor at radial position |
| [in] | strsel | Optional value to switch from \(\rho_{vol}\) to \(s\) |
|
private |
| subroutine, public equil_mod::read_equil_hdf5 |
PSI in equilbrium is 2pi * poloidal magnetic flux in some versions of CHEASE
|
private |
| subroutine, public equil_mod::s2rad | ( | real(kind=r8), intent(in) | ps, |
| real(kind=r8), intent(out) | prad, | ||
| real(kind=r8), intent(out) | pdrds ) |
Convert \(s=\sqrt(\psi/\psi_{edge})\) in \(\rho/a_{mid}\) and gives \(d(\rho/a_{mid})/ds\).
| [in] | ps | Radial \(s\) coordinate |
| [out] | pdrds | Derivative of \(\rho/a_{mid}\) with repsect to \(s\) |
| [out] | prad | Converted radial coordinate |
|
private |
Compute s->rho_vol analytically according to q-profile.
| [in] | ps | Radial coordinate in s |
| [out] | prad | Radial coordinate in rho_vol |
| [out] | pdrds | Derivative of rho_vol with respect to s |
|
private |
Compute s->rho_vol by linear interpolation with CHEASE grids.
| [in] | ps | Radial coordinate in s |
| [out] | prad | Radial coordinate in rho_vol |
| [out] | pdrds | Derivative of rho_vol with respect to s |
| real(kind=r8) function, public equil_mod::s_of_q | ( | real(kind=r8), intent(in) | zq | ) |
| subroutine, public equil_mod::sc2xy | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | theta, | ||
| real(kind=r8), intent(out) | x, | ||
| real(kind=r8), intent(out) | y ) |
| subroutine, public equil_mod::sc2xy_chease | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | theta, | ||
| real(kind=r8), intent(out) | x, | ||
| real(kind=r8), intent(out) | y ) |
| subroutine, public equil_mod::sc2xy_sincos | ( | real(kind=r8), intent(in) | s, |
| real(kind=r8), intent(in) | cost, | ||
| real(kind=r8), intent(in) | sint, | ||
| real(kind=r8), intent(out) | x, | ||
| real(kind=r8), intent(out) | y ) |
|
private |
|
private |
|
private |
Set the background potential: various options depending on input flags.
|
private |
|
private |
|
private |
| subroutine, public equil_mod::xy2sc | ( | real(kind=r8), intent(in) | x, |
| real(kind=r8), intent(in) | y, | ||
| real(kind=r8), intent(out) | s, | ||
| real(kind=r8), intent(out) | chi_out ) |
|
private |
| real(kind=r8), dimension(:,:,:), allocatable, save, public equil_mod::a_equ |
| real(kind=r8), save, public equil_mod::a_midn |
|
private |
|
private |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::alphain |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::alphain0 |
| real(kind=r8), save, public equil_mod::b_norm |
|
private |
|
private |
|
private |
|
private |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::bin_surf |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::bin_vol |
| real(kind=r8), dimension(:,:), allocatable, save, public equil_mod::bin_vol_2d |
| real(kind=r8), dimension(:,:), allocatable, save, public equil_mod::bin_vol_3d |
| real(kind=r8), dimension(:,:), allocatable, save, public equil_mod::bin_vol_3d_inv |
|
private |
| real(kind=r8), save, public equil_mod::bmax_c |
|
private |
| real(kind=r8), save, public equil_mod::bmin_c |
|
private |
| real(kind=r8), save, public equil_mod::c_psi0corr |
|
private |
| real(kind=r8), save, public equil_mod::chibmax |
| real(kind=r8), save, public equil_mod::chibmax0 |
| real(kind=r8), save, public equil_mod::chibmin |
| real(kind=r8), save, public equil_mod::chibmin0 |
|
private |
|
private |
|
private |
| real(kind=r8), save, public equil_mod::d_norm |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| real(kind=r8), save, public equil_mod::ds_inv |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::ekinps |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::ekinps_tr |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| real(kind=r8), save, public equil_mod::fonbmax_c |
| real(kind=r8), save, public equil_mod::fonbmin_c |
| real(kind=r8), save, public equil_mod::fpsin |
|
private |
|
private |
|
private |
| real(kind=r8), save, public equil_mod::gedr |
| real(kind=r8), save, public equil_mod::gedr_inv |
|
private |
|
private |
| real(kind=r8), save, public equil_mod::gedz |
| real(kind=r8), save, public equil_mod::gedz_inv |
| real(kind=r8), save, public equil_mod::ger_max |
| real(kind=r8), save, public equil_mod::ger_min |
|
private |
| real(kind=r8), save, public equil_mod::gez_min |
|
private |
|
private |
|
private |
|
private |
|
private |
| integer, save, public equil_mod::ichimax |
| integer, save, public equil_mod::ichimax0 |
| integer, save, public equil_mod::ichimin |
| integer, save, public equil_mod::ichimin0 |
|
private |
| integer, dimension(:), allocatable, save, public equil_mod::jchiin |
| integer, dimension(:), allocatable, save, public equil_mod::jchiin0 |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::nbar |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| integer, save, public equil_mod::ngmax |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| real(kind=r8), save, public equil_mod::psi0 |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::psihe_grd |
| real(kind=r8), save, public equil_mod::psihes |
|
private |
| real(kind=r8), save, public equil_mod::psires |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::pvol_norm |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::pvol_norm_tr |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| real(kind=r8), save, public equil_mod::rhfs |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::sgrid_eq |
|
private |
| real(kind=r8), dimension(:,:), allocatable, save, public equil_mod::sigmas |
|
private |
|
private |
|
private |
|
private |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::thgrid_eq |
|
private |
|
private |
|
private |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::volanu |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::voldiag |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::volps |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::volps_tr |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::voltor |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::voltor_inv |
|
private |
|
private |
| real(kind=r8), save, public equil_mod::width_is |
| real(kind=r8), save, public equil_mod::xmag |
| real(kind=r8), save, public equil_mod::ymag |
| real(kind=r8), public equil_mod::zdpsi_0 |
|
private |
|
private |
|
private |
| integer, save, public equil_mod::znin |
| integer, save, public equil_mod::znisl |
| integer, save, public equil_mod::znout |
| real(kind=r8), dimension(:), allocatable, save, public equil_mod::zpsi_grd |