Chi-Tech
|
Functions | |
void | chi_lua::chiLocallyRefineSLDFESQAngularQuadrature (in handle, vec3 reference_direction, double cone_size, bool invert_logic) |
void | chi_lua::chiCreateSLDFESQAngularQuadrature (int initial_refinement_level) |
void | chi_lua::chiPrintToPythonSLDFESQAngularQuadrature (int handle, string file_name_prefix) |
This quadrature is a simplified implementation of the quadrature defined in the paper by Cheuk Lau and Marvin Adams: "Discrete Ordinates Quadratures Based on Linear and Quadratic Discontinuous Finite Elements over Spherical Quadrilaterals", Nuclear Science and Engineering, 185:1, pages 36-52, 2017.
The orthogonal grid in the xy-tilde reference frame is dependent on a a diagonal spacing of grid points. The paper by Lau and Adams did not specify exactly how to generate this spacing but only stated that their spacing minimizes the max/avg and max/min ratio of projected SQ to 1.1 and 1.3 respectively. We found that the application of a weighting function, produces the optimal spacing. See the code for additional clarification.
Instead of using a multi-variate secant method to place the quadrature points we found that placing the points on the 4 Gauss-Legendre points for a quadrilateral ( )still produced 4th order convergence and added a lot of speed to the algorithm.
The determinant of the Jacobian can be hard to derive. It can be done in the two ways: using a cross-product or in angle-space.
The data structures employed allows the SQs to easily be refined in certain regions.
void chi_lua::chiCreateSLDFESQAngularQuadrature | ( | int | initial_refinement_level | ) |
Creates a Simplified Linear Discontinuous Finite Element (SLDFE) quadrature based on Spherical Quadrilaterals (SQ). Hence SLDFE-SQ.
initial_refinement_level | int Initial refinement level, to be used. The total number of angles will be . |
Example with refinement level 2.
With direction points:
Definition at line 2531 of file lua_functions.c.
void chi_lua::chiLocallyRefineSLDFESQAngularQuadrature | ( | in | handle, |
vec3 | reference_direction, | ||
double | cone_size, | ||
bool | invert_logic | ||
) |
Applies a local refinement of angles.
handle | int. Handle to the reference quadrature. |
reference_direction | vec3 Reference vector. |
cone_size | double Cone size in radians. |
invert_logic | bool Optional[Default:false]. If supplied, interprets SQ-splitting as when . Otherwise, SQs will be split if |
Example with refinement level 2 and a triple directional refinement:
Example with refinement level 2 and a triple planar refinement:
Definition at line 2510 of file lua_functions.c.
void chi_lua::chiPrintToPythonSLDFESQAngularQuadrature | ( | int | handle, |
string | file_name_prefix | ||
) |
Outputs the quadrature information to python format.
handle | int Handle to the reference quadrature. |
file_name_prefix | string Prefix to be used in front of file. |
Example of printing a quadrature: Example with refinement level 2 and a triple directional refinement:
Definition at line 2554 of file lua_functions.c.