35    GPU_DATA_IS_MAPPED(h[0:p->
n_mrk], rnd[0:3*p->
n_mrk])
 
   36    GPU_PARALLEL_LOOP_ALL_LEVELS
 
   37    for(
int i = 0; i < p->
n_mrk; i++) {
 
   54                    &vflow, p->
rho[i], p->
r[i], p->
phi[i], p->
z[i], p->
time[i],
 
   59            vin_xyz[0] = ( p->
p_r[i] / ( gamma * p->
mass[i] )
 
   60                - vflow * p->
B_r[i] / bnorm ) * cosphi
 
   62                   - vflow * p->
B_phi[i] / bnorm) * sinphi;
 
   63            vin_xyz[1] = ( p->
p_r[i] / ( gamma * p->
mass[i] )
 
   64                - vflow * p->
B_r[i] / bnorm ) * sinphi
 
   66                   - vflow * p->
B_phi[i] / bnorm) * cosphi;
 
   67            vin_xyz[2] = p->
p_z[i] / ( gamma * p->
mass[i] )
 
   68                - vflow * p->
B_z[i] / bnorm;
 
   75                                                  p->
r[i], p->
phi[i], p->
z[i],
 
   82                            n_species, mb, qb, nb, Tb);
 
   86            real F = 0, Dpara = 0, Dperp = 0;
 
   88            for(
int j = 0; j < n_species; j++) {
 
   89                real vb = sqrt( 2 * Tb[j] / mb[j] );
 
   95                                      nb[j], vb, clogab[j], mufun[0]);
 
   97                                          nb[j], vb, clogab[j], mufun[0]);
 
   99                                          nb[j], vb, clogab[j], mufun[1]);
 
  103            real sdt = sqrt(h[i]);
 
  105            dW[0] = sdt * rnd[0*p->
n_mrk + i];
 
  106            dW[1] = sdt * rnd[1*p->
n_mrk + i];
 
  107            dW[2] = sdt * rnd[2*p->
n_mrk + i];
 
  114            real k2 = sqrt(2*Dpara)*t1;
 
  115            real k3 = sqrt(2*Dperp);
 
  118            vout_xyz[0] = vin_xyz[0] + k1*vhat[0] + k2*vhat[0]
 
  119                        + k3*(dW[0]  - t1*vhat[0]);
 
  120            vout_xyz[1] = vin_xyz[1] + k1*vhat[1] + k2*vhat[1]
 
  121                        + k3*(dW[1]  - t1*vhat[1]);
 
  122            vout_xyz[2] = vin_xyz[2] + k1*vhat[2] + k2*vhat[2]
 
  123                        + k3*(dW[2]  - t1*vhat[2]);
 
  128            vout_rpz[0] += vflow * p->
B_r[i] / bnorm;
 
  129            vout_rpz[1] += vflow * p->
B_phi[i] / bnorm;
 
  130            vout_rpz[2] += vflow * p->
B_z[i] / bnorm;
 
  134                p->
p_r[i]   = vout_rpz[0] * gamma * p->
mass[i];
 
  135                p->
p_phi[i] = vout_rpz[1] * gamma * p->
mass[i];
 
  136                p->
p_z[i]   = vout_rpz[2] * gamma * p->
mass[i];
 
 
Main header file for ASCOT5.
#define MAX_SPECIES
Maximum number of plasma species.
Header file containing physical and mathematical constants.
unsigned long int a5err
Simulation error flag.
#define math_dot(a, b)
Calculate dot product a[3] dot b[3].
#define math_vec_xyz2rpz(vxyz, vrpz, phi)
Transform vector from cartesian to cylindrical basis: vxyz -> vrpz, phi is the toroidal angle in radi...
#define math_unit(a, b)
Calculate unit vector b from a 3D vector a.
#define math_normc(a1, a2, a3)
Calculate norm of 3D vector from its components a1, a2, a3.
#define math_norm(a)
Calculate norm of 3D vector a.
Header file for mccc package.
Routines to evaluate coefficients needed to evaluate collisions.
#define mccc_coefs_Dpara(ma, qa, va, qb, nb, vb, clogab, mu0)
Evaluate non-relativistic parallel diffusion coefficient [m^2/s^3].
static void mccc_coefs_mufun(real mufun[3], real x, mccc_data *mdata)
Evaluate special functions needed by collision coefficients.
#define mccc_coefs_Dperp(ma, qa, va, qb, nb, vb, clogab, mu1)
Evaluate non-relativistic perpendicular diffusion coefficient [m^2/s^3].
#define mccc_coefs_F(ma, qa, mb, qb, nb, vb, clogab, mu0)
Evaluate non-relativistic friction coefficient [m/s^2].
static DECLARE_TARGET_END void mccc_coefs_clog(real *clogab, real ma, real qa, real va, int nspec, const real *mb, const real *qb, const real *nb, const real *Tb)
Evaluate Coulomb logarithm.
void mccc_fo_euler(particle_simd_fo *p, real *h, plasma_data *pdata, mccc_data *mdata, real *rnd)
Integrate collisions for one time-step.
Header file for particle.c.
Methods to evaluate elementary physical quantities.
#define physlib_gamma_pnorm(m, p)
Evaluate Lorentz factor from momentum norm.
#define physlib_gamma_vnorm(v)
Evaluate Lorentz factor from velocity norm.
const real * plasma_get_species_mass(plasma_data *pls_data)
Get mass of all plasma species.
int plasma_get_n_species(plasma_data *pls_data)
Get the number of plasma species.
a5err plasma_eval_flow(real *vflow, real rho, real r, real phi, real z, real t, plasma_data *pls_data)
Evalate plasma flow along the field lines.
const real * plasma_get_species_charge(plasma_data *pls_data)
Get charge of all plasma species.
a5err plasma_eval_densandtemp(real *dens, real *temp, real rho, real r, real phi, real z, real t, plasma_data *pls_data)
Evaluate plasma density and temperature for all species.
Header file for plasma.c.
Header file for random.c.
Parameters and data required to evaluate Coulomb collisions.
Struct representing NSIMD particle markers.