XGC1

Functions  
void  neg_gradpar_single_plane (const View< bool *, CLayout, DeviceType > &is_inside, const Projection< DeviceType > &projection, const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > &input_left, const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > &input_center, const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > &input_right, const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > &output, double sgn, Order derivative_order) 
void  negative_gradparx2 (const GradParXTmp &gpxt, const Kokkos::View< double **, Kokkos::LayoutRight, DeviceType > &input, const Kokkos::View< double **, Kokkos::LayoutRight, DeviceType > &output, Order derivative_order) 
void neg_gradpar_single_plane  (  const View< bool *, CLayout, DeviceType > &  is_inside, 
const Projection< DeviceType > &  projection,  
const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > &  input_left,  
const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > &  input_center,  
const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > &  input_right,  
const Kokkos::View< double *, Kokkos::LayoutRight, DeviceType > &  output,  
double  sgn,  
Order  derivative_order  
) 
Calculates the gradient of the input array. Includes a precomputation to check which nodes are inside the boundary provided. This could be done once in grid setup and stored. This code is called from Fortran and is selfcontained. Thus, everything needed is passed from Fortran to C++ even though grid information is already in the C++ grid object. It will eventually be refactored accordingly.
[in]  nseg  is the number of boundary segments(?) 
[in]  sml_bt_sign  is the userinput direction of the toroidal magnetic field 
[in]  tr_fort  is an array of the triangles the corresponding to the fieldfollowing path through the vertex 
[in]  p_fort  is an array of the weights of the three triangle vertices for tr_fort triangles 
[in]  dx_fort  is an array of distances 
[in]  bd_fort  is an array of the boundary segments 
[in]  input  is the potential 
[out]  output  is the gradient of the potential 
[in]  derivative_order  is which derivative to take 
void negative_gradparx2  (  const GradParXTmp &  gpxt, 
const Kokkos::View< double **, Kokkos::LayoutRight, DeviceType > &  input,  
const Kokkos::View< double **, Kokkos::LayoutRight, DeviceType > &  output,  
Order  derivative_order  
) 
Calculates the gradient of the input array. Includes a precomputation to check which nodes are inside the boundary provided. This could be done once in grid setup and stored. This code is called from Fortran and is selfcontained. Thus, everything needed is passed from Fortran to C++ even though grid information is already in the C++ grid object. It will eventually be refactored accordingly.
[in]  nseg  is the number of boundary segments(?) 
[in]  sml_bt_sign  is the userinput direction of the toroidal magnetic field 
[in]  tr_fort  is an array of the triangles the corresponding to the fieldfollowing path through the vertex 
[in]  p_fort  is an array of the weights of the three triangle vertices for tr_fort triangles 
[in]  dx_fort  is an array of distances 
[in]  bd_fort  is an array of the boundary segments 
[in]  input  is the potential 
[out]  output  is the gradient of the potential 
[in]  derivative_order  is which derivative to take 