ORB5  4.00
Loading...
Searching...
No Matches
part.F90 File Reference
#include "precomp.h"
Include dependency graph for part.F90:

Data Types

type  pointer_markers
type  pointer_markers_r4
type  pointer_markers_logic
type  pointer_markers_i8
type  pointer_quadtree
type  moments_3d_class

Macros

#define HDF5_RESTART

Enumerations

enum  { p_parallel , v_parallel , mixed }

Functions/Subroutines

program __part_f90__
subroutine init_particles
subroutine construct_moments_3d (this, id, label, description)
subroutine initpic
 Allocate and initialize particle arrays.
subroutine check_allocation (istat, locatn, varname)
subroutine allocate_work_rev
subroutine deallocate_work_rev
subroutine load_particles
 Initialize markers.
subroutine load_phi (isp)
 Load markers in the toroidal direction and quasi-random numbers for other attributes.
subroutine load_coord (pic1_loc, work_rev_loc, npart_loc, isp)
subroutine load_umupvol (pic1_loc, pic2_loc, isp)
subroutine load_weights (pic1_loc, pic2_loc, pic3_loc, work_rev_loc, isp)
subroutine check_ffinit (pic2_loc, isp)
subroutine load_trap_particles (pic1_loc, pic2_loc, pic3_loc, npart_loc, isp)
subroutine load_alp (pic2_loc, work_rev_loc, isp)
subroutine load_diag (pic1_loc, pic2_loc, isp)
subroutine init_test_particles
subroutine load_test_particles
subroutine load_test (pic1_loc, pic2_loc, pic3_loc, npart_loc, isp)
real(kind=r8) function toroidal_momentum (isp, st, chit, tsubb, ut, mut, psi_correction)
 Function wrapper for toroidal momentum calculation.
subroutine get_toroidal_momentum (isp, st, chit, ut, mut, psi_correction, tsubb, psit_prof, psit_pot, fvpllb_out, dfvpllb_den_out, dfvpllb_dpsi_out)
real(kind=r8) function b_star (st, chit, b, ut, tprime, addpbst, isp)
 Calculate the parallel component of b_star.
subroutine get_dist_derivs (f0, ut, mut, b, epsilon_hat, ze, zvth2, nval, epsi, psit, ngrad, tgrad, vpval, vpgrad, isp, df0_dek, df0_du, df0_dpsi_prof, df0_dchi_prof, df0_dpsi_pot, df0_dchi, zecor, pot_equil, pot_equil0, chit)
subroutine bcpart_disp (run_on_device)
 Impose particle boundary conditions in phi and s (dispatcher).
subroutine bcpart (pic1_loc, npart_loc, isp, run_on_device)
 Boundary Conditions at s=sfmax (and s=sfmin if needed) and periodicity at phi=2pi.
subroutine print_test_particles (step)
subroutine printip (isp, step, ntest_loc, pion_1_loc)
subroutine pullback
subroutine weight_mixed2sympl (pic1_loc, pic2_loc, npart_loc, isp)
subroutine coords_mixed2sympl (pic1_loc, pic2_loc, npart_loc, isp)
subroutine parmove (iter, run_on_device, work1flag, work2flag, work3flag, work5flag, work6flag, work7flag, work8flag, work9flag)
subroutine parmove_sp (iter, isp, run_on_device, work1flag, work2flag, work3flag, work5flag, work6flag, work7flag, work8flag, work9flag)
subroutine get_larmor_indices_disp (initflag_in, adapt_only_in)
subroutine get_larmor_indices (isp, pic1_loc, pic2_loc, npart_loc, initflag)
 Compute the Larmor radius and number of gyropoints, and store then in work_temp.
subroutine compute_all_larmor_positions_disp (comp_dk)
subroutine compute_all_larmor_positions (isp, pic1_loc, pic2_loc, npart_loc)
subroutine compute_deposition_attributes_dk (u, w, uw, n)
 Compute drift-kinetic species marker attributes to be deposited.
subroutine compute_reduced_weights_disp (isp, nsel_att)
subroutine compute_reduced_weights (isp, pic1_loc, pic2_loc, pic3_loc, npart_loc, nsel_att)
subroutine sort_gc_2d_disp
 Sort guiding centers of all species in the s-chi plane (so-called "cache sort").
subroutine sort_gc_2d (isp)
 Sort guiding centers of one species in the s-chi plane.
subroutine sort_gc_3d_disp
 Sort drift-kinetic species in 3D.
subroutine unsort_gc_3d_disp
 Sort drift-kinetic species in 3D.
logical function convert_need_field_to_logical (need_field, istep, nl_main_substep)
 Convert integer convention for when field is needed to logical.
subroutine get_field_disp (field, istep, nl_main_substep, i_att)
 Evaluate field at marker positions for each species.
subroutine get_field_disp_lvl2 (field_bspl, markers, markers_field, np, x_att, y_att, z_att, field_att, grad_field_att, need_field, need_grad_field, istep, nl_main_substep, displs, atts_offset)
 Evaluate field at marker positions for a given species and a given set of markers (guiding centers or Larmor points, sorted or not).
subroutine change_grad_coord (np, dfield_dx, dfield_dy, gxx, gxy, gyx, gyy)
 Change coordinate of field gradient.
subroutine gyroaverage_field (pic1_loc, work_temp_loc, npart_loc, gyro_field_att, gyro_grad_field_att, larmor_loc, need_gyro_field, need_gyro_grad_field, istep, nl_main_substep, atts_offset)
 Gyro-average field.
subroutine push_disp (iter)
subroutine push (pic1_loc, pic2_loc, pic3_loc, work1_loc, npart_loc, isp, iter)
 Pushes the particles according to the fields.
subroutine diagnostics_after_loop (isp)
subroutine polarisation_fieldcalc (isp)
subroutine diagnostics_in_loop (ip, isp, sigmat, chit, chit_cos, chit_sin, phit, wt, dpsidt0, dpsidt1, zf0, psi0t, ze, pot_equil, tval, zvth2, rt, hh, vpt2, ut, ut2, w3t, pt, pvolgc, df0_dpsi_prof, df0_dchi_prof, dpsi_prof_dt, dchi_prof_dt, vpar, genelec, bstar_inv, bgrb, rhs, tempd, vgc, dvpadt1, dvpadt0, vgb, vpressure, veb_f, vexb, expt_back, eypt_back, b, exh, vecrossb_f2, dpotdpsi, vdr, pvol, ksieta, is_trapped, mut, umin_bin, du_flux_inv, dmu_flux_inv, gyroapar, nval, ithread)
subroutine test_particle_output (isp, ip, psi0t, ze, pot_equil, wt, zvth2, nval, pvol, zf0)
subroutine clear_diagnostics (isp)
 Clean diagnostics by re-initializing data array to zero.
subroutine update_ffinit_or_pvol
subroutine trap_detrap_disp
subroutine trap_detrap (pic1_loc, pic3_loc, npart_loc, isp)
 Determines whether trapped particles are now free and vice versa.
subroutine str_diagnostic_start
subroutine init_push_diagnostics
subroutine get_vdr (isp, sigmat, chit, b_inv, tprime, ut, bstar_inv, tob, dvpadt1, vgc, vgb, vexb, bgrb, genelec, vapar, rhs_type, vdr, dpsidt0, dpsidt1, vdchi)
subroutine get_rhs (ip, isp, pvol, vdr, vdchi, vgc, vin, vpval, genelec, dvpadt0, dvpadt1, gyroapar, ze, zecor, dh0_dt_correction, pot_equil, pot_equil0, distribution, ut, mut, b, zvth2, nval, epsi, psi0t, ngrad, tgrad, vpgrad, dfvpllb_dpsi, dfvpllb_den, rhs, dpotdpsi, omegasq_corr, df0_dpsi_prof, df0_dchi_prof, dpsi_prof_dt, dchi_prof_dt, rhs_type, mgradphi, vgb, vpressure, mgradapar, hh_sympl, chit, dchi_dt1, iter, ffinit, dpsidt0)
subroutine get_vexbn (sigmat, chit, zvth2, rt2, hy, hz, genelec, grsigma2, grchi2, grsigmagrchi, vexbn)
subroutine strong_diagnostic_output (isp, ip, psi0t, temp2, ze, vecrossb_f2, pot_equil, zf0, zvth2_inv, dpotdpsi, vdr, rhs)
subroutine sum_of_weights_and_energy_transfer (isp, wt, w3t, pt, pvolgc, ze, zf0, sigmat, q_vgc_dot_genelec, q_dvpadt0_dot_gyroapar, ithread)
subroutine add_to_0d (diag, i, to_add_list, ithread)
subroutine max_of_0d (diag, i, to_add_list, ithread)
subroutine add_to_1d (diag, diag_index, i, to_add_list, ithread)
subroutine add_to_2d (diag, diag_index, diag_index2, i, to_add_list, ithread)
subroutine add_to_3d (diag, diag_index, diag_index2, diag_index3, i, to_add_list, ithread)
subroutine omp_reduce_diag0d (diagnostic, nl_max_)
subroutine omp_reduce_diag1d (diagnostic, nl_max_)
subroutine omp_reduce_diag2d (diagnostic, nl_max_)
subroutine omp_reduce_diag3d (diagnostic, nl_max_)
subroutine strong_flow_terms (isp, sigmat, chit, bstar_inv, genelec, pztomobstar, bgrb, addp, expt_back, eypt_back, exh, ut, mut, hh, dvpadt1_str, dvpadt0_str, vgc)
subroutine diagnose_sampling (isp, s, en, pvol, w, zf0, ithread)
 Diagnose the velocity space sampling.
subroutine diagnose_phasespace (isp, s, vpar, mu, b, pvol, w, zf0, ithread)
 Diagnose phase space properties.
subroutine helical_flux_label (sigmat, xiang, irloc, dr_flux_inv, ipol)
subroutine jdote (isp, ut2, vpt2, vpar, genelec, elec_par, wt, bstar_inv, bgrb, vgb, vpressure, veb_f, vexb, expt_back, eypt_back, dvpadt0, gyroapar, jdote_tot, ithread)
subroutine mpr_es_calc (isp, ithread, iuloc, imuloc, sigmat, thetat, wt, ut2, vpt2, bstar_inv, vpar, genelec, bgrb, vgb, vpressure, veb_f)
subroutine sum_moment2d (isp, irloc, ithetaloc, wt, ffinit_tmp1, ffinit_tmp2, ffinit_tmp3, ffinit_tmp4, ithread)
subroutine sum_particles_in_poloidal_bins (isp, ithetaloc, wt, ffinit_tmp1, ffinit_tmp2, ffinit_tmp3, ffinit_tmp4, wt_tmp1, wt_tmp2, wt_tmp3, ithread)
subroutine sum_particles_in_radial_bins (isp, ip, irloc, zf0, dpsidt1, dpsidt0, ze, wt, ut, rt2, vpar, zf0_tmp1, zf0_tmp2, zf0_tmp3, sigmat, zf0_local, grsigma2, grsigmagrchi, b, exh, wt_tmp1, wt_tmp2, wt_tmp3, vexb, ffinit_tmp1, ffinit_tmp2, ffinit_tmp3, ffinit_tmp4, ffinit_tmp5, jdote_tot, ithread)
subroutine sum_in_radial_bins_island (isp, irloc, ipol, ut, gradpsi0, htildex, htildey, ze, zf0, wt, dpsidt1, ffinit_tmp1, ffinit_tmp2, ffinit_tmp3, ffinit_tmp4, ithread)
subroutine push_displacements (isp, ksieta, vexb, chit_cos, chit_sin, sigmat, tempd, vgc, dvpadt1, dvpadt0, rhs, ithread)
subroutine electron_fluxes_moments (isp, irloc, zf0, dpsidt1, dpsidt0, ze, wt, ffinit_tmp1, ffinit_tmp2, ffinit_tmp3, ffinit_tmp4, is_trapped, ithread)
subroutine sum_fluid_moments (isp, sigmat, chit, phit, wt, ut, ut2, vpt2, ithread)
subroutine sum_entropy_fluctuation (isp, wt, zf0, q_vgc_dot_genelec, zvth2_inv, df0_dpsi_prof, df0_dchi_prof, dpsi_prof_dt, ithread)
subroutine sum_velocities (isp, iuloc, imuloc, wt, zf0, pvol, ithread)
subroutine get_pos (isp, nsel_gyr_local, alp, rhog, sigma, chi, lnaveg, chit, sigmat, chi_sigma_gradients)
subroutine get_n_larmor_pts (isp, nsel_gyr_local, rhog, lnaveg)
 Choice of the gyro-average algorithm.
subroutine calc_dist (isp, sigmat, chit, ut, mu, psi0_corr, distribution, bst, dist_coeff, diff_t_vpll)
real(kind=r8) function ze_correction (ut, vpval)
real(kind=r8) function, dimension(3) cross_product (a, b)
subroutine read_write_particle_data (flag, datn)
real(kind=r8) function get_fvpllb (psi, mu, en, v_pll, isp)
real(kind=r8) function vpaob_ba (psi, mu_scaled, vpll_sign)
real(kind=r8) function get_vpaob_ba (psi, mu, en, v_pll, isp)
subroutine build_vpaob
subroutine init_vpa_quants
subroutine vpa_quants (psi, mu, en_star, v_pll, fvpllb, dfvpllb_den, dfvpllb_dpsi, isp)
subroutine get_properties (ip, isp, sigmat, chit, en, b, psi0can, f0, zf0, f0_max, t, en_hamilt)
 Get species properties.
real(kind=r8) function q_of_s (zs)
subroutine quadtree_smoothing_disp ()
subroutine quadtree_smoothing_interface (pic1_loc, pic2_loc, indx, ipos, p_start, p_end, work, quadtree_array_all, npart_loc, isp, diagnose_)
 Dispatcher for the quadtree_smoothing algorithm.
subroutine postpush_fullf (pic1_loc, pic2_loc, npart_loc, isp)
subroutine postpush_disp
subroutine set_weights_to_zero_at_t0
subroutine compute_psi0_corr_disp (run_on_device)
subroutine compute_psi0_corr (pic1_loc, pic2_loc, npart_loc, isp, run_on_device)
real(kind=r8) function compute_psi0_corr_one_particle (isp, st, chit, mut, ut)
 Compute the the correction term for the corrected canonical Maxwellian.
real(kind=r8) function bmaxi (psit)
 Approximate B(psi0,pi) by B(abs(psi0),0) if psi0 is negative.
subroutine perp_curl_ue (s, chi, smodstar, chimodstar, phimodstar)
subroutine diagnose_particles
subroutine grid_pic (isp, nsel_att, reduce_flag, lb, ub, assign1, i_att)
 Charge or current deposition on grid.
subroutine charge_deposition_passing_electrons_disp (isp, lb, ub, rho_passing)
 Deposit the charge of passing electrons in a separate array for new hybrid electron model.
subroutine charge_deposition_passing_electrons (x, y, w, nl_trapped, np, lb, ub, rho_passing)
 Charge deposition routine for passing electrons.
pure subroutine get_weights (xksi, wx)
 The bspline weight functions.
subroutine l5_auto_init (isp, l5_s_array)
subroutine gauss_list_init (isp, pert_table, nperts)
subroutine grid_pic_diagnostic (isp, nsel_att, lb, ub, assign1)
 Charge or current deposition on grid.
subroutine pszs_setboundaries (pic1_loc, pic2_loc, npart_loc, isp, lb, ub)
subroutine pszs_calc
subroutine deposit_bsplines (pszs_, isp, npart_loc, pic1_loc, pic2_loc)
subroutine part_grid (isp, nsel_att, reduce_flag, i_att, lb, ub, assign1, assign1_passing)
 Depositions on grids.
subroutine ppnd16 (p, normal_dev, ifault)

Macro Definition Documentation

◆ HDF5_RESTART

#define HDF5_RESTART

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
p_parallel 
v_parallel 
mixed 

Function/Subroutine Documentation

◆ __part_f90__()

program __part_f90__
Here is the call graph for this function:

◆ add_to_0d()

subroutine __part_f90__::add_to_0d ( type(diag0d), intent(inout) diag,
integer, intent(in) i,
real(kind=r8), intent(in) to_add_list,
integer, intent(in) ithread )
private
Here is the caller graph for this function:

◆ add_to_1d()

subroutine __part_f90__::add_to_1d ( type(diag1d), intent(inout) diag,
integer, intent(in) diag_index,
integer, intent(in) i,
real(kind=r8), intent(in) to_add_list,
integer, intent(in) ithread )
private
Here is the caller graph for this function:

◆ add_to_2d()

subroutine __part_f90__::add_to_2d ( type(diag2d), intent(inout) diag,
integer, intent(in) diag_index,
integer, intent(in) diag_index2,
integer, intent(in) i,
real(kind=r8), intent(in) to_add_list,
integer, intent(in) ithread )
private
Here is the caller graph for this function:

◆ add_to_3d()

subroutine __part_f90__::add_to_3d ( type(diag3d), intent(inout) diag,
integer, intent(in) diag_index,
integer, intent(in) diag_index2,
integer, intent(in) diag_index3,
integer, intent(in) i,
real(kind=r8), intent(in) to_add_list,
integer, intent(in) ithread )
private
Here is the caller graph for this function:

◆ allocate_work_rev()

subroutine __part_f90__::allocate_work_rev
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ b_star()

real(kind=r8) function __part_f90__::b_star ( real(kind=r8), intent(in) st,
real(kind=r8), intent(in) chit,
real(kind=r8), intent(in) b,
real(kind=r8), intent(in) ut,
real(kind=r8), intent(in) tprime,
real(kind=r8), intent(in) addpbst,
integer, intent(in) isp )
private

Calculate the parallel component of b_star.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ bcpart()

subroutine __part_f90__::bcpart ( real(kind=r8), dimension(:,:), intent(inout) pic1_loc,
integer, intent(in) npart_loc,
integer, intent(in) isp,
logical, intent(in) run_on_device )
private

Boundary Conditions at s=sfmax (and s=sfmin if needed) and periodicity at phi=2pi.

Parameters
[in]run_on_deviceRun kernel on the accelerator
Here is the call graph for this function:
Here is the caller graph for this function:

◆ bcpart_disp()

subroutine __part_f90__::bcpart_disp ( logical, intent(in) run_on_device)
private

Impose particle boundary conditions in phi and s (dispatcher).

Parameters
[in]run_on_deviceRun kernel on the accelerator
Here is the call graph for this function:
Here is the caller graph for this function:

◆ bmaxi()

real(kind=r8) function __part_f90__::bmaxi ( real(kind=r8), intent(in) psit)
private

Approximate B(psi0,pi) by B(abs(psi0),0) if psi0 is negative.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ build_vpaob()

subroutine __part_f90__::build_vpaob
private
Bug
ALS Should psi_max, psi_min, really depend on the last species in the loop?
Here is the call graph for this function:
Here is the caller graph for this function:

◆ calc_dist()

subroutine __part_f90__::calc_dist ( integer, intent(in) isp,
real(kind=r8), intent(in) sigmat,
real(kind=r8), intent(in) chit,
real(kind=r8), intent(in) ut,
real(kind=r8), intent(in) mu,
real(kind=r8), intent(in) psi0_corr,
real(kind=r8), intent(out) distribution,
real(kind=r8), intent(out), optional bst,
real(kind=r8), intent(out), optional dist_coeff,
real(kind=r8), intent(out), optional diff_t_vpll )
private
Note
BFM: Would be better to include the potential energy here so this relates more clearly to the Hamiltonian formalism.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ change_grad_coord()

subroutine __part_f90__::change_grad_coord ( integer, intent(in) np,
real(kind=r8), dimension(np), intent(inout) dfield_dx,
real(kind=r8), dimension(np), intent(inout) dfield_dy,
real(kind=r8), dimension(np), intent(in) gxx,
real(kind=r8), dimension(np), intent(in) gxy,
real(kind=r8), dimension(np), intent(in) gyx,
real(kind=r8), dimension(np), intent(in) gyy )
private

Change coordinate of field gradient.

Author
N. Ohana
Date
08.2018
Parameters
[in]npNumber of markers
[in,out]dfield_dxRadial derivative of field
[in,out]dfield_dyPoloidal derivative of field
[in]gxxMarkers' |grad x|^2
[in]gxyMarkers' (grad x \cdot \nabla y)
[in]gyxMarkers' (grad y \cdot \nabla x)
[in]gyyMarkers' |grad y|^2
Here is the caller graph for this function:

◆ charge_deposition_passing_electrons()

subroutine __part_f90__::charge_deposition_passing_electrons ( real(kind=r8), dimension(np), intent(in) x,
real(kind=r8), dimension(np), intent(in) y,
real(kind=r8), dimension(np), intent(in) w,
logical, dimension(np), intent(in) nl_trapped,
integer, intent(in) np,
integer, dimension(4), intent(in) lb,
integer, dimension(4), intent(in) ub,
real(kind=r8), dimension(lb(1):ub(1),lb(2):ub(2)), intent(out) rho_passing )
private

Charge deposition routine for passing electrons.

Date
05/2017
Parameters
[in]xMarker radial positions
[in]yMarker poloidal positions
[in]wMarker weights
[in]nl_trappedAre markers trapped?
[in]npNumber of markers
[in]lbLower indices of the deposition arrays
[in]ubUpper indices of the deposition arrays
[out]rho_passingArray containing the deposited charge
Here is the call graph for this function:
Here is the caller graph for this function:

◆ charge_deposition_passing_electrons_disp()

subroutine __part_f90__::charge_deposition_passing_electrons_disp ( integer, intent(in) isp,
integer, dimension(4), intent(in) lb,
integer, dimension(4), intent(in) ub,
real(kind=r8), dimension(lb(1):ub(1),lb(2):ub(2)), intent(out) rho_passing )
private

Deposit the charge of passing electrons in a separate array for new hybrid electron model.

Date
05/2017
Parameters
[in]ispSpecies under consideration
[in]lbLower indices of the deposition arrays
[in]ubUpper indices of the deposition arrays
[out]rho_passingReturned array with the passing charge
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_allocation()

subroutine __part_f90__::check_allocation ( integer, intent(in) istat,
character(len=*), intent(in) locatn,
character(len=*), intent(in) varname )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_ffinit()

subroutine load_particles::check_ffinit ( real(kind=r8), dimension(:,:), intent(inout) pic2_loc,
integer, intent(in) isp )
private

◆ clear_diagnostics()

subroutine __part_f90__::clear_diagnostics ( integer, intent(in) isp)
private

Clean diagnostics by re-initializing data array to zero.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_all_larmor_positions()

subroutine __part_f90__::compute_all_larmor_positions ( integer, intent(in) isp,
real(kind=r8), dimension(:,:), intent(in) pic1_loc,
real(kind=r8), dimension(:,:), intent(in) pic2_loc,
integer, intent(in) npart_loc )
private
Parameters
[in]ispSpecies under consideration
[in]npart_locLocal number of particles
[in]pic1_locMarker attributes (non constant in time)
[in]pic2_locMarker attributes (constant in time)
Todo
Port this to GPU using CUDA prefix scan wrapper - NOA
Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_all_larmor_positions_disp()

subroutine __part_f90__::compute_all_larmor_positions_disp ( logical, intent(in) comp_dk)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_deposition_attributes_dk()

subroutine __part_f90__::compute_deposition_attributes_dk ( real(kind=r8), dimension(n), intent(in) u,
real(kind=r8), dimension(n), intent(in) w,
real(kind=r8), dimension(n), intent(out) uw,
integer, intent(in) n )
private

Compute drift-kinetic species marker attributes to be deposited.

Author
N. Ohana
Date
08.2018
Parameters
[in]uMarker parallel momenta
[in]wMarker weights
[out]uwProduct of u and w
[in]nNumber of markers
Here is the caller graph for this function:

◆ compute_psi0_corr()

subroutine __part_f90__::compute_psi0_corr ( real(kind=r8), dimension(:,:), intent(in) pic1_loc,
real(kind=r8), dimension(:,:), intent(inout) pic2_loc,
integer, intent(in) npart_loc,
integer, intent(in) isp,
logical, intent(in) run_on_device )
private
Parameters
[in]run_on_deviceRun kernel on the accelerator
Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_psi0_corr_disp()

subroutine __part_f90__::compute_psi0_corr_disp ( logical, intent(in) run_on_device)
private
Parameters
[in]run_on_deviceRun kernel on the accelerator
Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_psi0_corr_one_particle()

real(kind=r8) function __part_f90__::compute_psi0_corr_one_particle ( integer, intent(in) isp,
real(kind=r8), intent(in) st,
real(kind=r8), intent(in) chit,
real(kind=r8), intent(in) mut,
real(kind=r8), intent(in) ut )
private

Compute the the correction term for the corrected canonical Maxwellian.

Corresponds to Eq. (7) from Angelino, PoP 13, 2006.

Note
The minus sign is not included here.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_reduced_weights()

subroutine __part_f90__::compute_reduced_weights ( integer, intent(in) isp,
real(kind=r8), dimension(:,:), intent(in) pic1_loc,
real(kind=r8), dimension(:,:), intent(in) pic2_loc,
logical, dimension(:,:), intent(in) pic3_loc,
integer, intent(in) npart_loc,
integer, intent(in) nsel_att )
private
Parameters
[in]npart_locLocal number of particles
[in]pic1_locMarker attributes (non constant in time)
[in]pic2_locMarker attributes (constant in time)
[in]nsel_attWhich attribute to be deposited
Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_reduced_weights_disp()

subroutine __part_f90__::compute_reduced_weights_disp ( integer, intent(in) isp,
integer, intent(in) nsel_att )
private
Parameters
[in]ispSpecies under consideration
[in]nsel_attWhich attribute to be deposited
Here is the call graph for this function:
Here is the caller graph for this function:

◆ construct_moments_3d()

subroutine __part_f90__::construct_moments_3d ( class(moments_3d_class), intent(inout) this,
integer, intent(in) id,
character(len=*), intent(in) label,
character(len=*), intent(in) description )
private

◆ convert_need_field_to_logical()

logical function __part_f90__::convert_need_field_to_logical ( integer, intent(in) need_field,
integer, intent(in) istep,
logical, intent(in) nl_main_substep )
private

Convert integer convention for when field is needed to logical.

Author
N. Ohana
Date
11.2018
Parameters
[in]need_field-1: field never needed, 0: field needed every substep, n>0: field needed every n time step
[in]istepTime loop iteration number
[in]nl_main_substepIs it the main time integrator substep?
Returns
Is the field needed now?
Here is the caller graph for this function:

◆ coords_mixed2sympl()

subroutine __part_f90__::coords_mixed2sympl ( real(kind=r8), dimension(:,:), intent(inout) pic1_loc,
real(kind=r8), dimension(:,:), intent(in) pic2_loc,
integer, intent(in) npart_loc,
integer, intent(in) isp )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ cross_product()

real(kind=r8) function, dimension(3) __part_f90__::cross_product ( real(kind=r8), dimension(3), intent(in) a,
real(kind=r8), dimension(3), intent(in) b )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ deallocate_work_rev()

subroutine __part_f90__::deallocate_work_rev
private
Here is the caller graph for this function:

◆ deposit_bsplines()

subroutine __part_f90__::deposit_bsplines ( type(pszs_variables), intent(inout) pszs_,
integer, intent(in) isp,
integer, intent(in) npart_loc,
real(kind=r8), dimension(:,:), intent(in) pic1_loc,
real(kind=r8), dimension(:,:), intent(in) pic2_loc )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ diagnose_particles()

subroutine __part_f90__::diagnose_particles
private
Bug
Ions are suposed to be the first species which is not always the case.
Bug
Electrons are suposed to be the second species which is not always the case.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ diagnose_phasespace()

subroutine __part_f90__::diagnose_phasespace ( integer, intent(in) isp,
real(kind=r8), intent(in) s,
real(kind=r8), intent(in) vpar,
real(kind=r8), intent(in) mu,
real(kind=r8), intent(in) b,
real(kind=r8), intent(in) pvol,
real(kind=r8), intent(in) w,
real(kind=r8), intent(in) zf0,
integer, intent(in) ithread )
private

Diagnose phase space properties.

Parameters
[in]ispCurrent species
[in]sRadial position in s coordinate
[in]vparMarker parallel velocity
[in]muMarker magnetic moment
[in]bMagnetic field intensity at marker position
[in]pvolMarker phase space volume
[in]wMarker weight
[in]zf0Marker p weight
[in]ithreadCurrent OpenMP thread
Here is the call graph for this function:
Here is the caller graph for this function:

◆ diagnose_sampling()

subroutine __part_f90__::diagnose_sampling ( integer, intent(in) isp,
real(kind=r8), intent(in) s,
real(kind=r8), intent(in) en,
real(kind=r8), intent(in) pvol,
real(kind=r8), intent(in) w,
real(kind=r8), intent(in) zf0,
integer, intent(in) ithread )
private

Diagnose the velocity space sampling.

Parameters
[in]ispCurrent species
[in]sRadial position in s coordinate
[in]enMarker kinetic energy
[in]pvolMarker phase space volume
[in]wMarker weight
[in]zf0Marker p weight
[in]ithreadCurrent OpenMP thread
Here is the call graph for this function:
Here is the caller graph for this function:

◆ diagnostics_after_loop()

subroutine __part_f90__::diagnostics_after_loop ( integer, intent(in) isp)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ diagnostics_in_loop()

subroutine __part_f90__::diagnostics_in_loop ( integer, intent(in) ip,
integer, intent(in) isp,
real(kind=r8), intent(in) sigmat,
real(kind=r8), intent(in) chit,
real(kind=r8), intent(in) chit_cos,
real(kind=r8), intent(in) chit_sin,
real(kind=r8), intent(in) phit,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) dpsidt0,
real(kind=r8), intent(in) dpsidt1,
real(kind=r8), intent(in) zf0,
real(kind=r8), intent(in) psi0t,
real(kind=r8), intent(in) ze,
real(kind=r8), intent(in) pot_equil,
real(kind=r8), intent(in) tval,
real(kind=r8), intent(in) zvth2,
real(kind=r8), intent(in) rt,
real(kind=r8), dimension(3), intent(in) hh,
real(kind=r8), intent(in) vpt2,
real(kind=r8), intent(in) ut,
real(kind=r8), intent(in) ut2,
real(kind=r8), intent(in) w3t,
real(kind=r8), intent(in) pt,
real(kind=r8), intent(in) pvolgc,
real(kind=r8), intent(in) df0_dpsi_prof,
real(kind=r8), intent(in) df0_dchi_prof,
real(kind=r8), intent(in) dpsi_prof_dt,
real(kind=r8), intent(in) dchi_prof_dt,
real(kind=r8), dimension(3), intent(in) vpar,
real(kind=r8), dimension(3), intent(in) genelec,
real(kind=r8), intent(in) bstar_inv,
real(kind=r8), dimension(3), intent(in) bgrb,
real(kind=r8), intent(in) rhs,
real(kind=r8), dimension(3), intent(in) tempd,
real(kind=r8), dimension(3), intent(in) vgc,
real(kind=r8), intent(in) dvpadt1,
real(kind=r8), intent(in) dvpadt0,
real(kind=r8), dimension(3), intent(in) vgb,
real(kind=r8), dimension(3), intent(in) vpressure,
real(kind=r8), dimension(3), intent(in) veb_f,
real(kind=r8), dimension(3), intent(in) vexb,
real(kind=r8), intent(in) expt_back,
real(kind=r8), intent(in) eypt_back,
real(kind=r8), intent(in) b,
real(kind=r8), dimension(3), intent(in) exh,
real(kind=r8), intent(in) vecrossb_f2,
real(kind=r8), intent(in) dpotdpsi,
real(kind=r8), intent(in) vdr,
real(kind=r8), intent(in) pvol,
logical, intent(in) ksieta,
logical, intent(in) is_trapped,
real(kind=r8), intent(in) mut,
real(kind=r8), intent(in) umin_bin,
real(kind=r8), intent(in) du_flux_inv,
real(kind=r8), intent(in) dmu_flux_inv,
real(kind=r8), intent(in) gyroapar,
real(kind=r8), intent(in) nval,
integer, intent(in) ithread )
private
Todo
temp2 is not defined prior to its use here, so this diagnostic is not working. It is the source of a fair amount of clutter though. Remove? ALS
Todo
This lone diagnostic uses pvolgc, rather than pvol. The difference is that pvolgc is PVOL_PIC before it is reassigned if nl_2weights. This is probably not intentional and changing it would clean things up a little bit. ALS
Here is the call graph for this function:
Here is the caller graph for this function:

◆ electron_fluxes_moments()

subroutine __part_f90__::electron_fluxes_moments ( integer, intent(in) isp,
integer, intent(in) irloc,
real(kind=r8), intent(in) zf0,
real(kind=r8), intent(in) dpsidt1,
real(kind=r8), intent(in) dpsidt0,
real(kind=r8), intent(in) ze,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) ffinit_tmp1,
real(kind=r8), intent(in) ffinit_tmp2,
real(kind=r8), intent(in) ffinit_tmp3,
real(kind=r8), intent(in) ffinit_tmp4,
logical, intent(in) is_trapped,
integer, intent(in) ithread )
private
Todo
change names HEAT_P_DIA in HEAT_P_DIA_TURB, PARTICLE_P_DIA in PARTICLE_P_DIA_TURB ...
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gauss_list_init()

subroutine __part_f90__::gauss_list_init ( integer, intent(in) isp,
real(kind=r8), dimension(:,:), intent(inout), allocatable pert_table,
integer, intent(out) nperts )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_dist_derivs()

subroutine __part_f90__::get_dist_derivs ( real(kind=r8), intent(in) f0,
real(kind=r8), intent(in) ut,
real(kind=r8), intent(in) mut,
real(kind=r8), intent(in) b,
real(kind=r8), intent(in) epsilon_hat,
real(kind=r8), intent(in) ze,
real(kind=r8), intent(in) zvth2,
real(kind=r8), intent(in) nval,
real(kind=r8), intent(in) epsi,
real(kind=r8), intent(in) psit,
real(kind=r8), intent(in) ngrad,
real(kind=r8), intent(in) tgrad,
real(kind=r8), intent(in) vpval,
real(kind=r8), intent(in) vpgrad,
integer, intent(in) isp,
real(kind=r8), intent(out) df0_dek,
real(kind=r8), intent(out) df0_du,
real(kind=r8), intent(out) df0_dpsi_prof,
real(kind=r8), intent(out) df0_dchi_prof,
real(kind=r8), intent(out) df0_dpsi_pot,
real(kind=r8), intent(out) df0_dchi,
real(kind=r8), intent(in) zecor,
real(kind=r8), intent(in) pot_equil,
real(kind=r8), intent(in) pot_equil0,
real(kind=r8), intent(in) chit )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_field_disp()

subroutine __part_f90__::get_field_disp ( type(field_type), intent(in) field,
integer, intent(in) istep,
logical, intent(in) nl_main_substep,
integer, intent(in) i_att )
private

Evaluate field at marker positions for each species.

Author
N. Ohana
Date
08.2018
Parameters
[in]fieldField to be evaluated
[in]istepTime loop iteration number
[in]nl_main_substepIs it the main time integrator substep?
[in]i_attiteration over natt buffers
  • Loop over species
  1. Get field at guiding center positions
  1. Get field at Larmor positions
  1. Unsort Larmor markers
  1. Gyro-average field
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_field_disp_lvl2()

subroutine __part_f90__::get_field_disp_lvl2 ( real(kind=r8), dimension(:,:,:), intent(in) field_bspl,
real(kind=r8), dimension(:,:), intent(in) markers,
real(kind=r8), dimension(:,:), intent(out) markers_field,
integer, intent(in) np,
integer, intent(in) x_att,
integer, intent(in) y_att,
integer, intent(in) z_att,
integer, intent(in) field_att,
integer, intent(in) grad_field_att,
integer, intent(in) need_field,
integer, intent(in) need_grad_field,
integer, intent(in) istep,
logical, intent(in) nl_main_substep,
integer, dimension(:), intent(in), optional displs,
integer, intent(in), optional atts_offset )
private

Evaluate field at marker positions for a given species and a given set of markers (guiding centers or Larmor points, sorted or not).

Author
N. Ohana
Date
08.2018
Parameters
[in]field_bsplField B-spline coefficients
[in]markersMarkers with position attributes
[out]markers_fieldMarkers with field attributes
[in]npNumber of markers
[in]x_attRadial attribute index in markers
[in]y_attPoloidal attribute index in markers
[in]z_attToroidal attribute index in markers
[in]field_attField attribute index in markers_field
[in]grad_field_attField gradient attribute index in markers_field
[in]need_fieldEvaluate field at marker positions
[in]need_grad_fieldEvaluate field gradient at marker positions
[in]istepTime loop iteration number
[in]nl_main_substepIs it the main time integrator substep?
[in]atts_offsetParticle offset for atts buffers
[in]displsDisplacements to access markers in specific bin
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_fvpllb()

real(kind=r8) function __part_f90__::get_fvpllb ( real(kind=r8), intent(in) psi,
real(kind=r8), intent(in) mu,
real(kind=r8), intent(in) en,
real(kind=r8), intent(in) v_pll,
integer, intent(in) isp )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_larmor_indices()

subroutine __part_f90__::get_larmor_indices ( integer, intent(in) isp,
real(kind=r8), dimension(:,:), intent(in) pic1_loc,
real(kind=r8), dimension(:,:), intent(inout) pic2_loc,
integer, intent(in) npart_loc,
logical, intent(in) initflag )
private

Compute the Larmor radius and number of gyropoints, and store then in work_temp.

Parameters
[in]ispSpecies under consideration
[in]npart_locLocal number of particles
[in]pic1_locMarker attributes (non constant in time)
[in,out]pic2_locMarker attributes (constant in time)
[in]initflagUsed in initialization to set larmor_max
Todo
Port this to GPU using CUDA prefix scan wrapper - NOA
Todo
Todo
Can optimize this loop - ALS
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_larmor_indices_disp()

subroutine __part_f90__::get_larmor_indices_disp ( logical, intent(in), optional initflag_in,
logical, intent(in), optional adapt_only_in )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_n_larmor_pts()

subroutine __part_f90__::get_n_larmor_pts ( integer, intent(in) isp,
integer, intent(in) nsel_gyr_local,
real(kind=r8), intent(in) rhog,
integer, intent(out) lnaveg )
private

Choice of the gyro-average algorithm.

Selects the number of gyro-points based on the input parameter nsel_gyr.

Parameters
[in]ispSpecies under consideration
[in]nsel_gyr_localFlag for the method to use to compute the gyropoints
[in]rhogLarmor radius
[out]lnavegNumber of gyro-points
Here is the caller graph for this function:

◆ get_pos()

subroutine __part_f90__::get_pos ( integer, intent(in) isp,
integer, intent(in) nsel_gyr_local,
real(kind=r8), intent(in) alp,
real(kind=r8), intent(in) rhog,
real(kind=r8), intent(in) sigma,
real(kind=r8), intent(in) chi,
integer, intent(out) lnaveg,
real(kind=r8), dimension(basic%navg_max), intent(out) chit,
real(kind=r8), dimension(basic%navg_max), intent(out) sigmat,
real(kind=r8), dimension(4,basic%navg_max), intent(out), optional chi_sigma_gradients )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_properties()

subroutine __part_f90__::get_properties ( integer, intent(in) ip,
integer, intent(in) isp,
real(kind=r8), intent(out) sigmat,
real(kind=r8), intent(out) chit,
real(kind=r8), intent(out), optional en,
real(kind=r8), intent(out), optional b,
real(kind=r8), intent(out), optional psi0can,
real(kind=r8), intent(out), optional f0,
real(kind=r8), intent(out), optional zf0,
real(kind=r8), intent(out), optional f0_max,
real(kind=r8), intent(out), optional t,
real(kind=r8), intent(out), optional en_hamilt )
private

Get species properties.

Parameters
[in]ispSpecies under consideration
[in]ipParticle under consideration
[out]sigmatRadial position of the marker
[out]chitPoloidal position of the marker [0,2*PI]
[out]enKinetic energy of the particle
[out]bEquilibrium magnetic field at particle position
[out]zf0f0 weights of pic
Note
BFM: Would be better to include the potential energy here so this relates more clearly to the Hamiltonian formalism.
Bug
Is it correct to add zecor to ze since it will be also added in vf0 for example ?
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_rhs()

subroutine __part_f90__::get_rhs ( integer, intent(in) ip,
integer, intent(in) isp,
real(kind=r8), intent(in) pvol,
real(kind=r8), intent(in) vdr,
real(kind=r8), intent(in) vdchi,
real(kind=r8), dimension(3), intent(in) vgc,
real(kind=r8), dimension(3), intent(in) vin,
real(kind=r8), intent(in) vpval,
real(kind=r8), dimension(3), intent(in) genelec,
real(kind=r8), intent(in) dvpadt0,
real(kind=r8), intent(in) dvpadt1,
real(kind=r8), intent(in) gyroapar,
real(kind=r8), intent(in) ze,
real(kind=r8), intent(in) zecor,
real(kind=r8), intent(in) dh0_dt_correction,
real(kind=r8), intent(in) pot_equil,
real(kind=r8), intent(in) pot_equil0,
real(kind=r8), intent(in) distribution,
real(kind=r8), intent(in) ut,
real(kind=r8), intent(in) mut,
real(kind=r8), intent(in) b,
real(kind=r8), intent(in) zvth2,
real(kind=r8), intent(in) nval,
real(kind=r8), intent(in) epsi,
real(kind=r8), intent(in) psi0t,
real(kind=r8), intent(in) ngrad,
real(kind=r8), intent(in) tgrad,
real(kind=r8), intent(in) vpgrad,
real(kind=r8), intent(in) dfvpllb_dpsi,
real(kind=r8), intent(in) dfvpllb_den,
real(kind=r8), intent(out) rhs,
real(kind=r8), intent(out) dpotdpsi,
real(kind=r8), intent(out) omegasq_corr,
real(kind=r8), intent(out) df0_dpsi_prof,
real(kind=r8), intent(out) df0_dchi_prof,
real(kind=r8), intent(out) dpsi_prof_dt,
real(kind=r8), intent(out) dchi_prof_dt,
integer, intent(in) rhs_type,
real(kind=r8), dimension(3), intent(in) mgradphi,
real(kind=r8), dimension(3), intent(in) vgb,
real(kind=r8), dimension(3), intent(in) vpressure,
real(kind=r8), dimension(3), intent(in) mgradapar,
real(kind=r8), dimension(3), intent(in) hh_sympl,
real(kind=r8), intent(in) chit,
real(kind=r8), intent(in) dchi_dt1,
integer, intent(in) iter,
real(kind=r8), intent(in) ffinit,
real(kind=r8), intent(in) dpsidt0 )
private
Bug
epsilon_hat is set to 0.0 here to avoid uninitialized value for case 1 and 3. For those latter cases it should be checked whether epsilon_hat should be computed or not. Note that until now, we relied on the compiler to initialize epsilon_hat to 0.0.
Note
ALS: dfvpllb_dpsi and dfvpllb_den were both never assigned in the loop and instead were 0.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_toroidal_momentum()

subroutine __part_f90__::get_toroidal_momentum ( integer, intent(in) isp,
real(kind=r8), intent(in) st,
real(kind=r8), intent(in) chit,
real(kind=r8), intent(in) ut,
real(kind=r8), intent(in) mut,
real(kind=r8), intent(in) psi_correction,
real(kind=r8), intent(in) tsubb,
real(kind=r8), intent(out) psit_prof,
real(kind=r8), intent(out) psit_pot,
real(kind=r8), intent(inout), optional fvpllb_out,
real(kind=r8), intent(inout), optional dfvpllb_den_out,
real(kind=r8), intent(inout), optional dfvpllb_dpsi_out )
private
Todo
I added these lines since it appears they should be here (with the commented version of the right hand side I'm waiting for someone who knows/uses nl_bgpot to address it; for now, this code hasn't changed anything - ALS
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_vdr()

subroutine __part_f90__::get_vdr ( integer, intent(in) isp,
real(kind=r8), intent(in) sigmat,
real(kind=r8), intent(in) chit,
real(kind=r8), intent(in) b_inv,
real(kind=r8), intent(in) tprime,
real(kind=r8), intent(in) ut,
real(kind=r8), intent(in) bstar_inv,
real(kind=r8), intent(in) tob,
real(kind=r8), intent(in) dvpadt1,
real(kind=r8), dimension(3), intent(in) vgc,
real(kind=r8), dimension(3), intent(in) vgb,
real(kind=r8), dimension(3), intent(in) vexb,
real(kind=r8), dimension(3), intent(in) bgrb,
real(kind=r8), dimension(3), intent(in) genelec,
real(kind=r8), dimension(3), intent(in) vapar,
integer, intent(in) rhs_type,
real(kind=r8), intent(out) vdr,
real(kind=r8), intent(out) dpsidt0,
real(kind=r8), intent(out) dpsidt1,
real(kind=r8), intent(out) vdchi )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_vexbn()

subroutine __part_f90__::get_vexbn ( real(kind=r8), intent(in) sigmat,
real(kind=r8), intent(in) chit,
real(kind=r8), intent(in) zvth2,
real(kind=r8), intent(in) rt2,
real(kind=r8), intent(in) hy,
real(kind=r8), intent(in) hz,
real(kind=r8), dimension(3), intent(in) genelec,
real(kind=r8), intent(out) grsigma2,
real(kind=r8), intent(out) grchi2,
real(kind=r8), intent(out) grsigmagrchi,
real(kind=r8), intent(out) vexbn )
private
Here is the caller graph for this function:

◆ get_vpaob_ba()

real(kind=r8) function __part_f90__::get_vpaob_ba ( real(kind=r8), intent(in) psi,
real(kind=r8), intent(in) mu,
real(kind=r8), intent(in) en,
real(kind=r8), intent(in) v_pll,
integer, intent(in) isp )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_weights()

pure subroutine charge_deposition_passing_electrons::get_weights ( real(kind=r8), dimension(3), intent(in) xksi,
real(kind=r8), dimension(1:3, -1:2,0:1), intent(out) wx )
private

The bspline weight functions.

Parameters
[in]xksiRelative position of a marker to a grid cell (s, theta_star, phi)
[out]wxBspline weights
Here is the caller graph for this function:

◆ grid_pic()

subroutine __part_f90__::grid_pic ( integer, intent(in) isp,
integer, intent(in) nsel_att,
logical, intent(in) reduce_flag,
integer, dimension(4), intent(in) lb,
integer, dimension(4), intent(in) ub,
real(kind=r8), dimension(lb(1):ub(1),lb(2):ub(2),lb(3):ub(3)), intent(out) assign1,
integer, intent(in) i_att )
private

Charge or current deposition on grid.

Parameters
[in]ispSpecies under consideration
[in]nsel_attWhich attribute to be deposited
[in]reduce_flagReduce the weights by the adiabatic density/current
[in]i_attIteration over atts arrays
[in]lbLower indices of the deposition arrays
[in]ubUpper indices of the deposition arrays
Here is the caller graph for this function:

◆ grid_pic_diagnostic()

subroutine __part_f90__::grid_pic_diagnostic ( integer, intent(in) isp,
integer, intent(in) nsel_att,
integer, dimension(4), intent(in) lb,
integer, dimension(4), intent(in) ub,
real(kind=r8), dimension(lb(1):ub(1),lb(2):ub(2),lb(3):ub(3)), intent(out) assign1 )
private

Charge or current deposition on grid.

Parameters
[in]ispSpecies under consideration
[in]nsel_attWhich attribute to be deposited
[in]lbLower indices of the deposition arrays
[in]ubUpper indices of the deposition arrays
Here is the caller graph for this function:

◆ gyroaverage_field()

subroutine __part_f90__::gyroaverage_field ( real(kind=r8), dimension(:,:), intent(in) pic1_loc,
real(kind=r8), dimension(:,:), intent(inout) work_temp_loc,
integer, intent(in) npart_loc,
integer, intent(in) gyro_field_att,
integer, intent(in) gyro_grad_field_att,
real(kind=r8), dimension(:,:), intent(in) larmor_loc,
integer, intent(in) need_gyro_field,
integer, intent(in) need_gyro_grad_field,
integer, intent(in) istep,
logical, intent(in) nl_main_substep,
integer, intent(in), optional atts_offset )
private

Gyro-average field.

Author
N. Ohana
Date
08.2018
Parameters
[in]pic1_locGuiding center attributes
[in,out]work_temp_locGuiding center attributes
[in]npart_locNumber of guiding centers
[in]gyro_field_attField attribute index
[in]gyro_grad_field_attField gradient attribute index
[in]larmor_locLarmor attributes
[in]need_gyro_fieldGyro-average field
[in]need_gyro_grad_fieldGyro-average field gradient
[in]istepTime loop iteration number
[in]nl_main_substepIs it the main time integrator substep?
[in]atts_offsetParticle offset for reusing atts buffers
Here is the call graph for this function:
Here is the caller graph for this function:

◆ helical_flux_label()

subroutine __part_f90__::helical_flux_label ( real(kind=r8), intent(in) sigmat,
real(kind=r8), intent(in) xiang,
integer, intent(out) irloc,
real(kind=r8), intent(out) dr_flux_inv,
integer, intent(out) ipol )
private
Bug
func_torpsi takes psi as argument but it is defined for s (see def. in equil.F90).
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_particles()

subroutine __part_f90__::init_particles
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_push_diagnostics()

subroutine __part_f90__::init_push_diagnostics
private
Here is the caller graph for this function:

◆ init_test_particles()

subroutine __part_f90__::init_test_particles
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_vpa_quants()

subroutine __part_f90__::init_vpa_quants
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ initpic()

subroutine __part_f90__::initpic
private

Allocate and initialize particle arrays.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ jdote()

subroutine __part_f90__::jdote ( integer, intent(in) isp,
real(kind=r8), intent(in) ut2,
real(kind=r8), intent(in) vpt2,
real(kind=r8), dimension(3), intent(in) vpar,
real(kind=r8), dimension(3), intent(in) genelec,
real(kind=r8), dimension(3), intent(in) elec_par,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) bstar_inv,
real(kind=r8), dimension(3), intent(in) bgrb,
real(kind=r8), dimension(3), intent(in) vgb,
real(kind=r8), dimension(3), intent(in) vpressure,
real(kind=r8), dimension(3), intent(in) veb_f,
real(kind=r8), dimension(3), intent(in) vexb,
real(kind=r8), intent(in) expt_back,
real(kind=r8), intent(in) eypt_back,
real(kind=r8), intent(in) dvpadt0,
real(kind=r8), intent(in) gyroapar,
real(kind=r8), intent(out) jdote_tot,
integer, intent(in) ithread )
private
Author
Julien Dominski
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l5_auto_init()

subroutine __part_f90__::l5_auto_init ( integer, intent(in) isp,
real(kind=r8), dimension(:,:), intent(inout), allocatable l5_s_array )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ load_alp()

subroutine load_particles::load_alp ( real(kind=r8), dimension(:,:), intent(inout) pic2_loc,
real(kind=r8), dimension(:,:), intent(in) work_rev_loc,
integer, intent(in) isp )
private
Bug
It appears "alp" is never loaded!! ALS
Here is the caller graph for this function:

◆ load_coord()

subroutine load_particles::load_coord ( real(kind=r8), dimension(:,:), intent(inout) pic1_loc,
real(kind=r8), dimension(:,:), intent(in) work_rev_loc,
integer, intent(in) npart_loc,
integer, intent(in) isp )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ load_diag()

subroutine load_particles::load_diag ( real(kind=r8), dimension(:,:), intent(in) pic1_loc,
real(kind=r8), dimension(:,:), intent(in) pic2_loc,
integer, intent(in) isp )
private
Here is the caller graph for this function:

◆ load_particles()

subroutine __part_f90__::load_particles
private

Initialize markers.

Todo
clean up - ALS
Here is the call graph for this function:
Here is the caller graph for this function:

◆ load_phi()

subroutine load_particles::load_phi ( integer, intent(in) isp)

Load markers in the toroidal direction and quasi-random numbers for other attributes.

Use only prime numbers for Hammersley bases to avoid correlation between attributes

Warning
With nsel_loadphi=NSEL_UNIFORM, some clones initially have markers at the subdomain boundary, while others have markers in the middle of the subdomains, potentially leading to load imbalance in parmove for the first few time steps:
Example of imbalance with uniform loading. Simulation with 32 subdomains and 12 clones. Colored zones indicate minimum and maximum across all tasks.

Compute Hammersley sequences, permuting bases for each species attributes

Here is the caller graph for this function:

◆ load_test()

subroutine load_test_particles::load_test ( real(kind=r8), dimension(:,:), intent(inout) pic1_loc,
real(kind=r8), dimension(:,:), intent(inout) pic2_loc,
logical, dimension(:,:), intent(inout) pic3_loc,
integer, intent(in) npart_loc,
integer, intent(in) isp )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ load_test_particles()

subroutine __part_f90__::load_test_particles
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ load_trap_particles()

subroutine load_particles::load_trap_particles ( real(kind=r8), dimension(:,:), intent(in) pic1_loc,
real(kind=r8), dimension(:,:), intent(in) pic2_loc,
logical, dimension(:,:), intent(inout) pic3_loc,
integer, intent(in) npart_loc,
integer, intent(in) isp )
private
Here is the caller graph for this function:

◆ load_umupvol()

subroutine load_particles::load_umupvol ( real(kind=r8), dimension(:,:), intent(inout) pic1_loc,
real(kind=r8), dimension(:,:), intent(inout) pic2_loc,
integer, intent(in) isp )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ load_weights()

subroutine load_particles::load_weights ( real(kind=r8), dimension(:,:), intent(inout) pic1_loc,
real(kind=r8), dimension(:,:), intent(inout) pic2_loc,
logical, dimension(:,:), intent(inout) pic3_loc,
real(kind=r8), dimension(:,:), intent(in) work_rev_loc,
integer, intent(in) isp )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ max_of_0d()

subroutine __part_f90__::max_of_0d ( type(diag0d), intent(inout) diag,
integer, intent(in) i,
real(kind=r8), intent(in) to_add_list,
integer, intent(in) ithread )
private
Here is the caller graph for this function:

◆ mpr_es_calc()

subroutine __part_f90__::mpr_es_calc ( integer, intent(in) isp,
integer, intent(in) ithread,
integer, intent(in) iuloc,
integer, intent(in) imuloc,
real(kind=r8), intent(in) sigmat,
real(kind=r8), intent(in) thetat,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) ut2,
real(kind=r8), intent(in) vpt2,
real(kind=r8), intent(in) bstar_inv,
real(kind=r8), dimension(3), intent(in) vpar,
real(kind=r8), dimension(3), intent(in) genelec,
real(kind=r8), dimension(3), intent(in) bgrb,
real(kind=r8), dimension(3), intent(in) vgb,
real(kind=r8), dimension(3), intent(in) vpressure,
real(kind=r8), dimension(3), intent(in) veb_f )
private
Author
Ivan Novikau
Here is the call graph for this function:
Here is the caller graph for this function:

◆ omp_reduce_diag0d()

subroutine __part_f90__::omp_reduce_diag0d ( type(diag0d), intent(inout) diagnostic,
logical, intent(in), optional nl_max_ )
private
Here is the caller graph for this function:

◆ omp_reduce_diag1d()

subroutine __part_f90__::omp_reduce_diag1d ( type(diag1d), intent(inout) diagnostic,
logical, intent(in), optional nl_max_ )
private
Here is the caller graph for this function:

◆ omp_reduce_diag2d()

subroutine __part_f90__::omp_reduce_diag2d ( type(diag2d), intent(inout) diagnostic,
logical, intent(in), optional nl_max_ )
private
Here is the caller graph for this function:

◆ omp_reduce_diag3d()

subroutine __part_f90__::omp_reduce_diag3d ( type(diag3d), intent(inout) diagnostic,
logical, intent(in), optional nl_max_ )
private
Here is the caller graph for this function:

◆ parmove()

subroutine __part_f90__::parmove ( integer, intent(in) iter,
logical, intent(in) run_on_device,
logical, intent(in) work1flag,
logical, intent(in) work2flag,
logical, intent(in), optional work3flag,
logical, intent(in), optional work5flag,
logical, intent(in), optional work6flag,
logical, intent(in), optional work7flag,
logical, intent(in), optional work8flag,
logical, intent(in), optional work9flag )
private
Parameters
[in]iterTime integrator iteration
[in]run_on_deviceRun kernels on the accelerator
Here is the call graph for this function:
Here is the caller graph for this function:

◆ parmove_sp()

subroutine __part_f90__::parmove_sp ( integer, intent(in) iter,
integer, intent(in) isp,
logical, intent(in) run_on_device,
logical, intent(in) work1flag,
logical, intent(in) work2flag,
logical, intent(in), optional work3flag,
logical, intent(in), optional work5flag,
logical, intent(in), optional work6flag,
logical, intent(in), optional work7flag,
logical, intent(in), optional work8flag,
logical, intent(in), optional work9flag )
private
Parameters
[in]iterTime integrator iteration
[in]ispSpecies index
[in]run_on_deviceRun kernels on the accelerator
Here is the call graph for this function:
Here is the caller graph for this function:

◆ part_grid()

subroutine part_grid ( integer, intent(in) isp,
integer, intent(in) nsel_att,
logical, intent(in) reduce_flag,
integer, intent(in) i_att,
integer, dimension(4), intent(in) lb,
integer, dimension(4), intent(in) ub,
real(kind=r8), dimension(lb(1):ub(1),lb(2):ub(2),lb(3):ub(3)), intent(out) assign1,
real(kind=r8), dimension(lb(1):ub(1),lb(2):ub(2)), intent(out), optional assign1_passing )
private

Depositions on grids.

Parameters
[in]ispSpecies under consideration
[in]nsel_attWhich attribute to be deposited
[in]reduce_flagFlag to compute reduced weights
[in]i_attIteration over atts arrays
[in]lbLowerbounds of the charge arrays
[in]ubUpperbounds of the charge arrays
[out]assign1Array containing the deposited quantity
[out]assign1_passingArray for passing charge
Here is the call graph for this function:

◆ perp_curl_ue()

subroutine __part_f90__::perp_curl_ue ( real(kind=r8), intent(in) s,
real(kind=r8), intent(in) chi,
real(kind=r8), intent(out) smodstar,
real(kind=r8), intent(out) chimodstar,
real(kind=r8), intent(out) phimodstar )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ polarisation_fieldcalc()

subroutine __part_f90__::polarisation_fieldcalc ( integer, intent(in) isp)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ postpush_disp()

subroutine __part_f90__::postpush_disp
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ postpush_fullf()

subroutine __part_f90__::postpush_fullf ( real(kind=r8), dimension(:,:), intent(inout) pic1_loc,
real(kind=r8), dimension(:,:), intent(inout) pic2_loc,
integer, intent(in) npart_loc,
integer, intent(in) isp )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ppnd16()

subroutine ppnd16 ( real(kind=r8), intent(in) p,
real(kind=r8), intent(out) normal_dev,
integer, intent(out) ifault )
Here is the caller graph for this function:

◆ print_test_particles()

subroutine __part_f90__::print_test_particles ( integer, intent(in) step)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ printip()

subroutine __part_f90__::printip ( integer, intent(in) isp,
integer, intent(in) step,
integer, intent(in) ntest_loc,
real(kind=r8), dimension(tpnprop, ntest_loc), intent(inout) pion_1_loc )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ pszs_calc()

subroutine __part_f90__::pszs_calc
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ pszs_setboundaries()

subroutine __part_f90__::pszs_setboundaries ( real(kind=r8), dimension(:,:), intent(in) pic1_loc,
real(kind=r8), dimension(:,:), intent(in) pic2_loc,
integer, intent(in) npart_loc,
integer, intent(in) isp,
real(kind=r8), dimension(3), intent(inout) lb,
real(kind=r8), dimension(3), intent(inout) ub )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ pullback()

subroutine __part_f90__::pullback
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ push()

subroutine __part_f90__::push ( real(kind=r8), dimension(:,:), intent(in) pic1_loc,
real(kind=r8), dimension(:,:), intent(in) pic2_loc,
logical, dimension(:,:), intent(in) pic3_loc,
real(kind=r8), dimension(:,:), intent(inout) work1_loc,
integer, intent(in) npart_loc,
integer, intent(in) isp,
integer, intent(in) iter )
private

Pushes the particles according to the fields.

Parameters
[in]npart_locnumber of markers
[in]pic1_locArray for non constant particle attributes
[in]pic2_locArray for constant particle attributes
[in]pic3_locArray for constant particle attributes
[in,out]work1_locWorkspace array
[in]ispSpecies under consideration
[in]iterRK sub-step
Bug
Why is this different in the merged verion? IPP/McMillan merge 16/12/2014
Here is the call graph for this function:
Here is the caller graph for this function:

◆ push_disp()

subroutine __part_f90__::push_disp ( integer, intent(in) iter)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ push_displacements()

subroutine __part_f90__::push_displacements ( integer, intent(in) isp,
logical, intent(in) ksieta,
real(kind=r8), dimension(3), intent(in) vexb,
real(kind=r8), intent(in) chit_cos,
real(kind=r8), intent(in) chit_sin,
real(kind=r8), intent(in) sigmat,
real(kind=r8), dimension(3), intent(in) tempd,
real(kind=r8), dimension(3), intent(in) vgc,
real(kind=r8), intent(in) dvpadt1,
real(kind=r8), intent(in) dvpadt0,
real(kind=r8), intent(in) rhs,
integer, intent(in) ithread )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ q_of_s()

real(kind=r8) function __part_f90__::q_of_s ( real(kind=r8), intent(in) zs)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ quadtree_smoothing_disp()

subroutine __part_f90__::quadtree_smoothing_disp
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ quadtree_smoothing_interface()

subroutine __part_f90__::quadtree_smoothing_interface ( real(kind=r8), dimension(:,:), intent(inout) pic1_loc,
real(kind=r8), dimension(:,:), intent(inout) pic2_loc,
integer, dimension(:), intent(inout) indx,
integer, dimension(:), intent(inout) ipos,
integer, dimension(0:), intent(inout) p_start,
integer, dimension(0:), intent(inout) p_end,
real(kind=r8), dimension(:,:), intent(inout) work,
real(kind=r8), dimension(:,:), intent(inout) quadtree_array_all,
integer, intent(in) npart_loc,
integer, intent(in) isp,
logical, intent(in) diagnose_ )
private

Dispatcher for the quadtree_smoothing algorithm.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_write_particle_data()

subroutine __part_f90__::read_write_particle_data ( integer, intent(in) flag,
integer, intent(in) datn )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_weights_to_zero_at_t0()

subroutine __part_f90__::set_weights_to_zero_at_t0
private
Here is the caller graph for this function:

◆ sort_gc_2d()

subroutine __part_f90__::sort_gc_2d ( integer isp)
private

Sort guiding centers of one species in the s-chi plane.

Here is the caller graph for this function:

◆ sort_gc_2d_disp()

subroutine __part_f90__::sort_gc_2d_disp
private

Sort guiding centers of all species in the s-chi plane (so-called "cache sort").

Note
Drift-kinetic species are already 3D-sorted if nl_gc_sort==true
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sort_gc_3d_disp()

subroutine __part_f90__::sort_gc_3d_disp
private

Sort drift-kinetic species in 3D.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ str_diagnostic_start()

subroutine __part_f90__::str_diagnostic_start
private
Here is the caller graph for this function:

◆ strong_diagnostic_output()

subroutine __part_f90__::strong_diagnostic_output ( integer, intent(in) isp,
integer, intent(in) ip,
real(kind=r8), intent(in) psi0t,
real(kind=r8), intent(in) temp2,
real(kind=r8), intent(in) ze,
real(kind=r8), intent(in) vecrossb_f2,
real(kind=r8), intent(in) pot_equil,
real(kind=r8), intent(in) zf0,
real(kind=r8), intent(in) zvth2_inv,
real(kind=r8), intent(in) dpotdpsi,
real(kind=r8), intent(in) vdr,
real(kind=r8), intent(in) rhs )
private
Here is the caller graph for this function:

◆ strong_flow_terms()

subroutine __part_f90__::strong_flow_terms ( integer, intent(in) isp,
real(kind=r8), intent(in) sigmat,
real(kind=r8), intent(in) chit,
real(kind=r8), intent(in) bstar_inv,
real(kind=r8), dimension(3), intent(in) genelec,
real(kind=r8), intent(in) pztomobstar,
real(kind=r8), dimension(3), intent(in) bgrb,
real(kind=r8), dimension(3), intent(in) addp,
real(kind=r8), intent(in) expt_back,
real(kind=r8), intent(in) eypt_back,
real(kind=r8), dimension(3), intent(in) exh,
real(kind=r8), intent(in) ut,
real(kind=r8), intent(in) mut,
real(kind=r8), dimension(3), intent(in) hh,
real(kind=r8), intent(out) dvpadt1_str,
real(kind=r8), intent(out) dvpadt0_str,
real(kind=r8), dimension(3), intent(inout) vgc )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sum_entropy_fluctuation()

subroutine __part_f90__::sum_entropy_fluctuation ( integer, intent(in) isp,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) zf0,
real(kind=r8), intent(in) q_vgc_dot_genelec,
real(kind=r8), intent(in) zvth2_inv,
real(kind=r8), intent(in) df0_dpsi_prof,
real(kind=r8), intent(in) df0_dchi_prof,
real(kind=r8), intent(in) dpsi_prof_dt,
integer, intent(in) ithread )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sum_fluid_moments()

subroutine __part_f90__::sum_fluid_moments ( integer, intent(in) isp,
real(kind=r8), intent(in) sigmat,
real(kind=r8), intent(in) chit,
real(kind=r8), intent(in) phit,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) ut,
real(kind=r8), intent(in) ut2,
real(kind=r8), intent(in) vpt2,
integer, intent(in) ithread )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sum_in_radial_bins_island()

subroutine __part_f90__::sum_in_radial_bins_island ( integer, intent(in) isp,
integer, intent(in) irloc,
integer, intent(in) ipol,
real(kind=r8), intent(in) ut,
real(kind=r8), dimension(2), intent(in) gradpsi0,
real(kind=r8), intent(in) htildex,
real(kind=r8), intent(in) htildey,
real(kind=r8), intent(in) ze,
real(kind=r8), intent(in) zf0,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) dpsidt1,
real(kind=r8), intent(in) ffinit_tmp1,
real(kind=r8), intent(in) ffinit_tmp2,
real(kind=r8), intent(in) ffinit_tmp3,
real(kind=r8), intent(in) ffinit_tmp4,
integer, intent(in) ithread )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sum_moment2d()

subroutine __part_f90__::sum_moment2d ( integer, intent(in) isp,
integer, intent(in) irloc,
integer, intent(in) ithetaloc,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) ffinit_tmp1,
real(kind=r8), intent(in) ffinit_tmp2,
real(kind=r8), intent(in) ffinit_tmp3,
real(kind=r8), intent(in) ffinit_tmp4,
integer, intent(in) ithread )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sum_of_weights_and_energy_transfer()

subroutine __part_f90__::sum_of_weights_and_energy_transfer ( integer, intent(in) isp,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) w3t,
real(kind=r8), intent(in) pt,
real(kind=r8), intent(in) pvolgc,
real(kind=r8), intent(in) ze,
real(kind=r8), intent(in) zf0,
real(kind=r8), intent(in) sigmat,
real(kind=r8), intent(in) q_vgc_dot_genelec,
real(kind=r8), intent(in) q_dvpadt0_dot_gyroapar,
integer, intent(in) ithread )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sum_particles_in_poloidal_bins()

subroutine __part_f90__::sum_particles_in_poloidal_bins ( integer, intent(in) isp,
integer, intent(in) ithetaloc,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) ffinit_tmp1,
real(kind=r8), intent(in) ffinit_tmp2,
real(kind=r8), intent(in) ffinit_tmp3,
real(kind=r8), intent(in) ffinit_tmp4,
real(kind=r8), intent(in) wt_tmp1,
real(kind=r8), intent(in) wt_tmp2,
real(kind=r8), intent(in) wt_tmp3,
integer, intent(in) ithread )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sum_particles_in_radial_bins()

subroutine __part_f90__::sum_particles_in_radial_bins ( integer, intent(in) isp,
integer, intent(in) ip,
integer, intent(in) irloc,
real(kind=r8), intent(in) zf0,
real(kind=r8), intent(in) dpsidt1,
real(kind=r8), intent(in) dpsidt0,
real(kind=r8), intent(in) ze,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) ut,
real(kind=r8), intent(in) rt2,
real(kind=r8), dimension(3), intent(in) vpar,
real(kind=r8), intent(in) zf0_tmp1,
real(kind=r8), intent(in) zf0_tmp2,
real(kind=r8), intent(in) zf0_tmp3,
real(kind=r8), intent(in) sigmat,
real(kind=r8), intent(in) zf0_local,
real(kind=r8), intent(in) grsigma2,
real(kind=r8), intent(in) grsigmagrchi,
real(kind=r8), intent(in) b,
real(kind=r8), dimension(3), intent(in) exh,
real(kind=r8), intent(in) wt_tmp1,
real(kind=r8), intent(in) wt_tmp2,
real(kind=r8), intent(in) wt_tmp3,
real(kind=r8), dimension(3), intent(in) vexb,
real(kind=r8), intent(in) ffinit_tmp1,
real(kind=r8), intent(in) ffinit_tmp2,
real(kind=r8), intent(in) ffinit_tmp3,
real(kind=r8), intent(in) ffinit_tmp4,
real(kind=r8), intent(in) ffinit_tmp5,
real(kind=r8), intent(in) jdote_tot,
integer, intent(in) ithread )
private
Todo
change name of HEAT_DIA in HEAT_DIA_TURB, PARTICLE_DIA in PARTICLE_DIA_TURB......
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sum_velocities()

subroutine __part_f90__::sum_velocities ( integer, intent(in) isp,
integer, intent(in) iuloc,
integer, intent(in) imuloc,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) zf0,
real(kind=r8), intent(in) pvol,
integer, intent(in) ithread )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ test_particle_output()

subroutine __part_f90__::test_particle_output ( integer, intent(in) isp,
integer, intent(in) ip,
real(kind=r8), intent(in) psi0t,
real(kind=r8), intent(in) ze,
real(kind=r8), intent(in) pot_equil,
real(kind=r8), intent(in) wt,
real(kind=r8), intent(in) zvth2,
real(kind=r8), intent(in) nval,
real(kind=r8), intent(in) pvol,
real(kind=r8), intent(in) zf0 )
private
Todo
I noticed a few issues with this diagnostic. (Use of st0, and alpt0, for example. Should be rewritten or deleted. - ALS
Here is the caller graph for this function:

◆ toroidal_momentum()

real(kind=r8) function __part_f90__::toroidal_momentum ( integer, intent(in) isp,
real(kind=r8), intent(in) st,
real(kind=r8), intent(in) chit,
real(kind=r8), intent(in) tsubb,
real(kind=r8), intent(in) ut,
real(kind=r8), intent(in) mut,
real(kind=r8), intent(in) psi_correction )
private

Function wrapper for toroidal momentum calculation.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ trap_detrap()

subroutine __part_f90__::trap_detrap ( real(kind=r8), dimension(:,:), intent(inout) pic1_loc,
logical, dimension(:,:), intent(inout) pic3_loc,
integer, intent(in) npart_loc,
integer, intent(in) isp )
private

Determines whether trapped particles are now free and vice versa.

Parameters
[in]npart_locnumber of markers
[in]ispScpecies under consideration
Here is the call graph for this function:
Here is the caller graph for this function:

◆ trap_detrap_disp()

subroutine __part_f90__::trap_detrap_disp
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ unsort_gc_3d_disp()

subroutine __part_f90__::unsort_gc_3d_disp
private

Sort drift-kinetic species in 3D.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_ffinit_or_pvol()

subroutine __part_f90__::update_ffinit_or_pvol
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ vpa_quants()

subroutine __part_f90__::vpa_quants ( real(kind=r8), intent(in) psi,
real(kind=r8), intent(in) mu,
real(kind=r8), intent(in) en_star,
real(kind=r8), intent(in) v_pll,
real(kind=r8), intent(out) fvpllb,
real(kind=r8), intent(out) dfvpllb_den,
real(kind=r8), intent(out) dfvpllb_dpsi,
integer, intent(in) isp )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ vpaob_ba()

real(kind=r8) function __part_f90__::vpaob_ba ( real(kind=r8), intent(in) psi,
real(kind=r8), intent(in) mu_scaled,
integer, intent(in) vpll_sign )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ weight_mixed2sympl()

subroutine __part_f90__::weight_mixed2sympl ( real(kind=r8), dimension(:,:), intent(inout) pic1_loc,
real(kind=r8), dimension(:,:), intent(in) pic2_loc,
integer, intent(in) npart_loc,
integer, intent(in) isp )
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ze_correction()

real(kind=r8) function __part_f90__::ze_correction ( real(kind=r8), intent(in) ut,
real(kind=r8), intent(in) vpval )
private
Here is the call graph for this function:
Here is the caller graph for this function: