| Option | Discrption + * |
|---|---|
| CMAKE_BUILD_TYPE | Switch between + * * Release + * * Debug + * * MinSizeRel + * * RelWithDebInfo + * |
| USE_VERBOSE | Show verbose information about compute kernels. + * |
| BUILD_C_BINDING | Generate the @ref graph_c_binding.h "C langauge interface". + * |
| BUILD_Fortran_BINDING | Generate the @ref graph_fortran "Fortran language interface". + * |
| USE_METAL | Enable the Metal backend (macOS only). + * |
| USE_CUDA | Enable the Cuda backend (Linux only). + * |
| USE_HIP | Enable the Hip backend (Linux only, Hip branch). + * |
| USE_SSH | Use ssh for git instead of html. + * |
| Option | Discription + * |
|---|---|
| USE_PCH | Use precompiled headers during computation. Most users should keep this on. + * |
| SAVE_KERNEL_SOURCE | Option to dump the generated compute kernel source code to disk. + * |
| USE_INPUT_CACHE | Option to cache registers for the kernel arguments. + * |
| USE_CONSTANT_CACHE | Option to use registers to cache constant values otherwise constants are inlined. + * |
| SHOW_USE_COUNT | Generates information on the number of times a register is used. + * |
| USE_INDEX_CACHE | Option to use registers to cache array indicies. + * |
| Sanitizer Flags + * | |
| SANITIZE_ADDRESS | Use address sanitizer debugging option. + * |
| SANITIZE_LEAK | Use leak sanitizer debugging option. + * |
| SANITIZE_MEMORY | Use memory sanitizer debugging option. + * |
| SANITIZE_THREAD | Use thread sanitizer debugging option. + * |
| SANITIZE_UNDEFINED | Use undefined sanitizer debugging option. + * |
| SANITIZE_FLOAT-DIVIDE-BY-ZERO | Use float-divide-by-zero sanitizer debugging option. + * |
| Concept | Definition + * |
|---|---|
| node | A leaf or branch on the graph tree. + * |
| graph | A data stucture connecting nodes. + * |
| reduce | A transformation of the graph to remove leaf_nodes. + * |
| auto differentiation | A transformation of the graph build derivatives. + * |
| compiler | A tool for translating from one language to another. + * |
| JIT | Just-in-time compile. + * |
| kernel | A code function that runs on a batch of data. + * |
| pre_item | A kernel to run before running the main kernels. + * |
| work_iten | A instance of kernel. + * |
| converge_item | A kernel that is run until a convergence test is met. + * |
| workflow | A series of work items. + * |
| backend | The device the kernel is run on. + * |
| recursion | See definition of recursion. + * |
| safe math | Run time checks to avoid off normal conditions. + * |
| API | Application programming interface. + * |
| Host | The place where kernels are launched from. + * |
| Device | The side where kernels are run. + * |
| Command | Values | Discription +/// |
|---|---|---|
| General Options +/// | ||
| @code --help @endcode | Display help text +/// | |
| @code --verbose @endcode | Show verbose output about kernel information. +/// | |
| @code --print_expressions @endcode | Render ray equations as @f$\LaTeX@f$ expressions. +/// | |
| @code --print @endcode | Display a sample of ray progress to the screen. +/// | |
| @code --seed @endcode | Use a fixed random seed. +/// | |
| Control Options +/// | ||
| @code --num_times @endcode | Positive Integer | Total number of time steps to run. +/// |
| @code --sub_steps @endcode | Positive Integer | Number of steps to run between outputs. +/// |
| @code --num_rays @endcode | Positive Integer | Total number rays to run. +/// |
| @code --endtime @endcode | Positive Number | Total time to trace the ray to. +/// |
| Ray Initialization Options +/// | ||
| @code --init_w_dist @endcode | +/// * uniform +/// * normal | Distribution function for wave frequency. +/// |
| @code --init_w_mean @endcode | Positive Number | Mean value for the wave frequency distribution function. +/// |
| @code --init_w_sigma @endcode | Positive Number | Standard deviation of for the wave frequency distribution function. +/// |
| @code --init_kx_dist @endcode | +/// * uniform +/// * normal | Distribution function for wave number in the x direction. +/// |
| @code --init_kx @endcode | Solve for initial wave number in the x direction position. +/// | |
| @code --init_kx_mean @endcode | Positive Number | Mean value for the wave number in the x direction distribution function. +/// |
| @code --init_kx_sigma @endcode | Positive Number | Standard deviation of for the wave number in the y direction distribution function. +/// |
| @code --init_ky_dist @endcode | +/// * uniform +/// * normal | Distribution function for wave number in the y direction. +/// |
| @code --init_ky @endcode | Solve for initial wave number in the y direction position. +/// | |
| @code --init_ky_mean @endcode | Positive Number | Mean value for the wave number in the y direction distribution function. +/// |
| @code --init_ky_sigma @endcode | Positive Number | Standard deviation of for the wave number in the y direction distribution function. +/// |
| @code --init_kz_dist @endcode | +/// * uniform +/// * normal | Distribution function for wave number in the z direction. +/// |
| @code --init_kz @endcode | Solve for initial wave number in the z direction position. +/// | |
| @code --init_kz_mean @endcode | Positive Number | Mean value for the wave number in the z direction distribution function. +/// |
| @code --init_kz_sigma @endcode | Positive Number | Standard deviation of for the wave number in the z direction distribution function. +/// |
| @code --init_x_dist @endcode | +/// * uniform +/// * normal | Distribution function for ray x position. +/// |
| @code --init_x_mean @endcode | Positive Number | Mean value for the ray x position distribution function. +/// |
| @code --init_x_sigma @endcode | Positive Number | Standard deviation of for the ray x position distribution function. +/// |
| @code --init_y_dist @endcode | +/// * uniform +/// * normal | Distribution function for ray y position. +/// |
| @code --init_y_mean @endcode | Positive Number | Mean value for the ray y position distribution function. +/// |
| @code --init_y_sigma @endcode | Positive Number | Standard deviation of for the ray y position distribution function. +/// |
| @code --init_z_dist @endcode | +/// * uniform +/// * normal | Distribution function for ray z position. +/// |
| @code --init_z_mean @endcode | Positive Number | Mean value for the ray z position distribution function. +/// |
| @code --init_z_sigma @endcode | Positive Number | Standard deviation of for the ray z position distribution function. +/// |
| @code --use_cyl_xy @endcode | Use cylindical coordinates for x and y. +/// | |
| Ray Tracing Physics Options +/// | ||
| @code --equilibrium @endcode | +/// * @ref equilibrum_efit "efit" +/// * @ref equilibrum_vmec "vmec" | Equilibrium to use. +/// |
| @code --equilibrium_file @endcode | Path to @ref equilibrum_models "equilibrium file" | Equilibrium file path. +/// |
| @code --dispersion @endcode | +/// * @ref dispersion_function_simple "simple" +/// * @ref dispersion_function_bohm_gross "bohm_gross" +/// * @ref dispersion_function_o_wave "ordinary_wave" +/// * @ref dispersion_function_x_wave "extra_ordinary_wave" +/// * @ref dispersion_function_cold_plasma "code_plasma" | Wave disperion function to trace rays from. +/// |
| @code --absorption_model @endcode | +/// * @ref absorption_model_root "root_find" +/// * @ref absorption_model_root "weak_damping" | Power absoption model to use. +/// |
| @code --solver @endcode | +/// * @ref solvers_split_simplextic "split_simplextic" +/// * @ref solvers_rk2 "rk2" +/// * @ref solvers_rk4 "rk4" +/// * @ref solvers_adaptive_rk4 "adaptive_rk4" | Method used to solve the equation. +/// |
| Value | Input Value | Real Unit +/// |
|---|---|---|
| @f$\omega @f$ | 700 | @f$\frac{700}{c}@f$ @f$\frac{rad}{s}@f$ +/// |
| @f$t @f$ | 2.0 | @f$2.0c @f$ @f$s @f$ +/// |
| Dimensions +/// | ||
|---|---|---|
| Name | Discription +/// | |
| time | Size of time dimension. +/// | |
| num_rays | Local number of rays for the device. +/// | |
| ray_dim | Size of the dimension for quanties. (1 Real, 2 Complex) +/// | |
| ray_dim_cplx | Size of the dimension for complex quantities (Real, Imagine). +/// | |
| 2D Qantities +/// | ||
| Name | Dimensions | Discription +/// |
| d_power | (time,num_rays,ray_dim) | Change in power. +/// |
| kamp | (time,num_rays,ray_dim_cplx) | @f$\sqrt{\vec{k}\cdot\vec{k}}@f$ +/// |
| kx | (time,num_rays,ray_dim) | Wave number in @f$\hat{x}@f$ direction. +/// |
| ky | (time,num_rays,ray_dim) | Wave number in @f$\hat{y}@f$ direction. +/// |
| kz | (time,num_rays,ray_dim) | Wave number in @f$\hat{z}@f$ direction. +/// |
| power | (time,num_rays,ray_dim) | Wave power. +/// |
| residule | (time,num_rays,ray_dim) | Dispersion function residule. +/// |
| time | (time,num_rays,ray_dim) | Time +/// |
| w | (time,num_rays,ray_dim) | Wave frequency. +/// |
| x | (time,num_rays,ray_dim) | Position in @f$\hat{x}@f$ direction. +/// |
| y | (time,num_rays,ray_dim) | Position in @f$\hat{y}@f$ direction. +/// |
| z | (time,num_rays,ray_dim) | Position in @f$\hat{z}@f$ direction. +/// |
| Symbol | Unit | Description +/// |
|---|---|---|
| @f$c @f$ | @f$\frac{m}{s}@f$ | Speed of light. +/// |
| @f$m_{e}@f$ | @f$kg @f$ | Electron mass +/// |
| @f$t_{e}@f$ | @f$K @f$ | Electron temperature +/// |
| @f$n_{e}@f$ | @f$m^{-3}@f$ | Electron Denisty +/// |
| @f$q @f$ | @f$C @f$ | Fundamental Charge +/// |
| @f$\vec{B}@f$ | @f$T @f$ | Magnetic field +/// |
| @f$\epsilon_{0}@f$ | @f$\frac{F}{m}@f$ | Vacuum permittivity +/// |
| @f$k_{B}@f$ | @f$\frac{J}{K}@f$ | Boltzmann constant +/// |
| @f$\omega_{pe}@f$ | @f$s^{-1}@f$ | Electron Plasma Frequency @f$\omega_{pe}=\frac{n_{e}q^{2}}{\epsilon_{0}m_{e}c}@f$ +/// |
| @f$\omega_{ce}@f$ | @f$s^{-1}@f$ | Electron Cyclotron Frequency @f$\omega_{ce}=\frac{q\left|\vec{B}\right|}{m_{e}}@f$ +/// |
| @f$\omega_{h}@f$ | @f$s^{-1}@f$ | Upper Hybrid Frequency @f$\omega_{h}^{s}=\omega_{pe}^{2}+\omega_{ce}^{2}@f$ +/// |
| @f$\omega_{r}@f$ | @f$s^{-1}@f$ | Right cutoff Frequency @f$\omega_{r}=\frac{1}{2}\left(\omega_{ce}+\sqrt{\omega^{2}_{ce}+4\omega_{pe}^{2}}\right)@f$ +/// |
| @f$\omega_{l}@f$ | @f$s^{-1}@f$ | Left cutoff Frequency @f$\omega_{r}=\frac{1}{2}\left(-\omega_{ce}+\sqrt{\omega^{2}_{ce}+4\omega_{pe}^{2}}\right)@f$ +/// |
| @f$v_{th}@f$ | @f$\frac{m}{s}@f$ | Thermal velocity @f$v_{th}=\sqrt{\frac{k_{B}t_{e}}{m_{e}}}@f$ +/// |
| @f$\vec{n}@f$ | @f$1 @f$ | @f$n=\frac{\vec{k}c}{\omega}@f$ +/// |
| Symbol | Real Unit | Modified | Modified Unit | Description +/// |
|---|---|---|---|---|
| @f$\omega @f$ | @f$s^{-1}@f$ | @f$\omega'=\frac{\omega}{c}@f$ | @f$m^{-1}@f$ | Wave frequency +/// |
| @f$\vec{k}@f$ | @f$m^{-1}@f$ | @f$\vec{k}@f$ | @f$m^{-1}@f$ | Wave number +/// |
| @f$t @f$ | @f$s @f$ | @f$t'=tc @f$ | @f$m @f$ | Time +/// |
| @f$\vec{x}@f$ | @f$m @f$ | @f$\vec{x}@f$ | @f$m @f$ | Postion +/// |
| @f$v_{p}=\frac{\omega}{k}@f$ | @f$\frac{m}{s}@f$ | @f$v'_{p}=\frac{\omega'}{k}@f$ | @f$1 @f$ | Phase velocity +/// |
| @f$v_{g}=\frac{\partial\omega}{\partial k}@f$ | @f$\frac{m}{s}@f$ | @f$v'_{g}=\frac{\partial\omega'}{\partial k}@f$ | @f$1 @f$ | Group velocity +/// |
| Dimensions +/// | ||
|---|---|---|
| Name | Discription +/// | |
| numr | Size of radial grid. +/// | |
| numz | Size of vertical grid. +/// | |
| numpsi | Size of arrays for @f$\psi@f$ mapped quantities. +/// | |
| Scalar Qantities +/// | ||
| dpsi | Step size of the @f$\psi@f$ grid. +/// | |
| dr | Step size of the radial grid. +/// | |
| dz | Step size of the vertial grid. +/// | |
| ne_scale | Scale of the @f$n_{e}@f$ profile. +/// | |
| pres_scale | Scale of the pressure profile. +/// | |
| psibry | Value of @f$\psi@f$ at the boundary. +/// | |
| psimin | Minimum @f$\psi@f$ value. +/// | |
| rmin | Minimum radial value. +/// | |
| te_scale | Scale of the electron temperature profile. +/// | |
| zmin | Minimum vertial value. +/// | |
| 1D Qantities +/// | ||
| Name | Size | Discription +/// |
| fpol_ci | numpsi | Flux function profile coefficents +/// |
| ne_ci | numpsi | @f$n_{e}@f$ profile coefficents. +/// |
| pressure_ci | numpsi | Pressure profile coefficents. +/// |
| te_ci | numpsi | @f$t_{e}@f$ profile coefficents. +/// |
| 2D Qantities +/// | ||
| Name | Size | Discription +/// |
| psi_cij | (numr,numz) | @f$\psi\left(r,z\right)@f$ coefficents. +/// |
| Dimensions +/// | ||
|---|---|---|
| Name | Discription +/// | |
| numsf | Size of full radial grid. +/// | |
| numsh | Size of half radial grid. +/// | |
| nummn | Number of Fourier modes. +/// | |
| Scalar Qantities +/// | ||
| dphi | Step size of toroidal flux. +/// | |
| ds | Step size of normalized toroidal flux. +/// | |
| signj | Sign of the Jacobian. +/// | |
| sminf | Minimum @f$s @f$ on the full grid. +/// | |
| sminh | Minimum @f$s @f$ on the half grid. +/// | |
| 1D Qantities +/// | ||
| Name | Size | Discription +/// |
| chi_ci | numsf | Poloidal flux profile. +/// |
| xm | nummn | Poloidal modes. +/// |
| xn | nummn | Toroidal modes. +/// |
| 2D Qantities +/// | ||
| Name | Size | Discription +/// |
| lmns_ci | (numsh,nummn) | @f$\lambda @f$ fourier coefficents. +/// |
| rmnc_ci | (numsf,nummn) | @f$r @f$ fourier coefficents. +/// |
| zmns_ci | (numsf,nummn) | @f$z @f$ fourier coefficents. +/// |