31void __ascot5_icrh_routines_MOD_call_initev_excl_marker_stuff(
 
   32    const char* xml_filename, 
int **xml_filename_len, 
void** cptr_rfglobal,
 
   33    void** cptr_rfof_input_params);
 
   34void __ascot5_icrh_routines_MOD_call_initialise_res_mem(
void** cptr_mem,
 
   35    int* cptr_mem_shape_i, 
int* cptr_mem_shape_j, 
void** cptr_rfglobal,
 
   36    void** cptr_rfof_input_param);
 
   37void __ascot5_icrh_routines_MOD_call_initialise_diagnostics(
 
   38    void** cptr_RFglobal, 
void** cptr_diagno);
 
   40void __ascot5_icrh_routines_MOD_call_set_marker_pointers(
void** cptr_marker,
 
   44    real** vdriftRho, 
real** acc, 
int* isOrbitTimeAccelerated,
 
   45    int* is_already_allocated);
 
   47void __ascot5_icrh_routines_MOD_call_rf_kick(
double*time, 
double*dtin,
 
   48    int* mpi_rank, 
void** cptr_marker, 
void** cptr_mem, 
void** cptr_rfglobal,
 
   49    void** cptr_rfdiagno, 
void** cptr_rfof_input, 
int* mem_shape_i,
 
   52void __ascot5_icrh_routines_MOD_call_reset_res_mem(
void** rfof_mem_pointer,
 
   53    int* mem_shape_i, 
int* mem_shape_j);
 
   55void __ascot5_icrh_routines_MOD_call_deallocate_rfof_input_param(
 
   56    void** cptr_rfof_input_param);
 
   57void __ascot5_icrh_routines_MOD_call_deallocate_rfglobal(
void** cptr_rfglobal);
 
   58void __ascot5_icrh_routines_MOD_call_deallocate_res_mem(
void** cptr_res_mem,
 
   59    int* cptr_mem_shape_i, 
int* cptr_mem_shape_j);
 
   60void __ascot5_icrh_routines_MOD_call_deallocate_diagnostics(
void** cptr_diagno);
 
   61void __ascot5_icrh_routines_MOD_deallocate_marker(
void** cptr_rfof_marker);
 
   63void __ascot5_icrh_routines_MOD_get_rf_wave_local_v2(
real* 
R, 
real* z,
 
   64    real* rho_tor, 
real* theta, 
void** cptr_rfglobal, 
real* e_plus_real,
 
   65    real* e_minus_real, 
real* e_plus_imag, 
real* e_minus_imag);
 
   67void __ascot5_icrh_routines_MOD_eval_resonance_function(
void** cptr_marker,
 
   68    void** cptr_rfglobal, 
real* omega_res, 
int* nharm);
 
   70void __ascot5_icrh_routines_MOD_print_marker_stuff(
void** marker_pointer);
 
   72void __ascot5_icrh_routines_MOD_print_mem_stuff(
void** mem_pointer);
 
   86    int xml_filename_len = strlen(xml_filename);
 
   87    int*xml_filename_len_ptr = &xml_filename_len;
 
   88    __ascot5_icrh_routines_MOD_call_initev_excl_marker_stuff(xml_filename,
 
 
  102    __ascot5_icrh_routines_MOD_call_deallocate_rfof_input_param(
 
  104    __ascot5_icrh_routines_MOD_call_deallocate_rfglobal(&rfof->
rfglobal);
 
 
  118    for(
int i=0; i< 
NSIMD; i++) {
 
  120        real dummy = -999.0, *ptr = &dummy;   
 
  122        int dummyint = 0, *iptr = &dummyint;  
 
  126        int is_accelerated = 0;
 
  127        int is_already_allocated = 0;
 
  128        __ascot5_icrh_routines_MOD_call_set_marker_pointers(
 
  129            &(rfof_mrk->
p[i]), &iptr, &ptr, &ptr, &ptr, &ptr, &ptr, &ptr, &ptr,
 
  130            &ptr, &ptr, &ptr, &ptr, &ptr, &ptr, &ptr, &ptr, &ptr, &ptr,
 
  131            &is_accelerated, &is_already_allocated);
 
  134        __ascot5_icrh_routines_MOD_call_initialise_res_mem(
 
  140        __ascot5_icrh_routines_MOD_call_initialise_diagnostics(
 
 
  155    for(
int i=0; i< 
NSIMD; i++) {
 
  156        __ascot5_icrh_routines_MOD_call_deallocate_res_mem(
 
  159        __ascot5_icrh_routines_MOD_call_deallocate_diagnostics(
 
  161        __ascot5_icrh_routines_MOD_deallocate_marker(&rfof_mrk->
p[i]);
 
 
  179    __ascot5_icrh_routines_MOD_call_reset_res_mem(
 
 
  206void rfof_resonance_check_and_kick_gc(
 
  210    for(
int i=0; i<
NSIMD; i++) {
 
  211        if(p->id[i] > 0 && p->running[i]) {
 
  216            real psi, B, Ekin, vnorm, P_phi, v_par, v_perp, gyrof,
 
  221            B = 
math_normc(p->B_r[i], p->B_phi[i], p->B_z[i]);
 
  222            v_par = p->ppar[i]/p->mass[i];
 
  223            Ekin = p->ppar[i]*p->ppar[i]/(2*p->mass[i]) + p->mu[i]*B;
 
  224            vnorm = sqrt( (p->ppar[i]/p->mass[i])*(p->ppar[i]/p->mass[i]) + 2*p->mu[i]*B/p->mass[i] );
 
  225            v_perp = sqrt( 2 * p->mu[i]*B/p->mass[i] );
 
  234            tauB = 
CONST_2PI*q_safe*p->r[i]/fabs(v_par)*sqrt(2*majR/minR);
 
  236            real acceleration   = 1.0;
 
  237            int is_accelerated  = 0;
 
  238            int is_preallocated = 1;
 
  241            int* dummy_Id_ptr = &dummy_id;
 
  243            real* weight_ptr    = &(p->weight[i]);
 
  244            real* r_ptr         = &(p->r[i]);
 
  245            real* phi_ptr       = &(p->phi[i]);
 
  246            real* z_ptr         = &(p->z[i]);
 
  247            real* charge_ptr    = &(p->charge[i]);
 
  248            real* mass_ptr      = &(p->mass[i]);
 
  249            real* mu_ptr        = &(p->mu[i]);
 
  250            real* Ekin_ptr      = &Ekin;
 
  251            real* psi_ptr       = ψ
 
  252            real* speed_ptr     = &vnorm;
 
  253            real* P_phi_ptr     = &P_phi;
 
  254            real* v_par_ptr     = &v_par;
 
  255            real* v_perp_ptr    = &v_perp;
 
  256            real* gyrof_ptr     = &gyrof;
 
  257            real* tauB_ptr      = &tauB;
 
  258            real* vdriftRho_ptr = &vdriftRho;
 
  259            real* acc_ptr       = &acceleration;
 
  262            __ascot5_icrh_routines_MOD_call_set_marker_pointers(
 
  302            __ascot5_icrh_routines_MOD_call_rf_kick(
 
  303                &(p->time[i]), &(hin[i]), &mpi_rank,
 
  307                &(rfof_mrk->
ncol[i]), &err, &rfof_data_pack);
 
  311            p->ppar[i] = p->ppar[i] + p->mass[i]*(rfof_data_pack.
dvpar);
 
  317                hout[i] = -rfof_data_pack.
RFdt;
 
  321                hout[i] = rfof_data_pack.
RFdt;
 
 
  361    int* is_accelerated, 
int* is_already_allocated) {
 
  366    real* tauB = &tauB_target;
 
  367    __ascot5_icrh_routines_MOD_call_set_marker_pointers(
 
  368        &rfof_mrk->
p[0], &
id, &weight, &
R, &phi, &z, &psi, &charge, &mass,
 
  369        &Ekin, &vnorm, &mu, &Pphi, &vpar, &vperp, &gyrof, &tauB, &vdriftRho, &acc,
 
  370        is_accelerated, is_already_allocated);
 
 
  392void rfof_eval_rf_wave(
 
  393    real* e_plus_real, 
real* e_minus_real, 
real* e_plus_imag,
 
  401    real rho_tor = -999.0; 
 
  403    __ascot5_icrh_routines_MOD_get_rf_wave_local_v2(
 
  404        &
R, &z, &rho_tor, &theta, &rfof->
rfglobal, e_plus_real, e_minus_real,
 
  405        e_plus_imag, e_minus_imag);
 
 
  423void rfof_eval_resonance_function(
 
  426    __ascot5_icrh_routines_MOD_eval_resonance_function(
 
  427        &rfof_mrk->
p[0], &rfof->
rfglobal, omega_res, nharm);
 
 
a5err B_field_eval_psi(real *psi, real r, real phi, real z, real t, B_field_data *Bdata)
Evaluate poloidal flux psi.
 
#define NSIMD
Number of particles simulated simultaneously in a particle group operations.
 
#define RFOF_CODEPARAM_XML
Input filename where RFOF parameters are stored.
 
Header file containing physical and mathematical constants.
 
#define math_normc(a1, a2, a3)
Calculate norm of 3D vector from its components a1, a2, a3.
 
Header file for particle.c.
 
Methods to evaluate elementary physical quantities.
 
#define phys_ptoroid_gc(q, R, ppar, psi, B, Bphi)
Evaluate toroidal canonical momentum for particle.
 
#define phys_gyrofreq_ppar(m, q, mu, ppar, B)
Evaluate gyrofrequency [rad/s] from parallel momentum and magnetic moment.
 
Contains the functions to be called from the simulation loop when using ICRH.
 
Magnetic field simulation data.
 
Struct representing NSIMD guiding center markers.
 
RFOF simulation input data.
 
Reusable struct for storing marker specific data during the simulation loop.
 
void * history_array[NSIMD]