Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
|
Analytic coordinate transformation.
There are two main types of coordinate transformations: analytic and discrete. In the first case the transformation can be specified analytically, through the two functions:
\[ \begin{matrix} x_1 = x_1(\eta_1,\eta_2) \\\\ x_2 = x_2(\eta_1,\eta_2) \end{matrix} \]
Where both, eta1 and eta2 should be defined on the intervals that define the extent of the logical mesh (default values in logical mesh are [0,1]. The same transformation can be specified by the set of transformed points \(x_1(i,j), x_2(i,j),\) as two 2D arrays or 1D arrays that describe the transformation on each direction.
The transformation is also represented by the Jacobian matrix:
\[ J(\eta_1,\eta_2) = \begin{bmatrix} \partial x_1(\eta_1,\eta_2) / \partial \eta_1 & \partial x_1(\eta_1,\eta_2) / \partial \eta_2 \\\\ \partial x_2(\eta_1,\eta_2) / \partial \eta_1 & \partial x_2(\eta_1,\eta_2) / \partial \eta_2 \end{bmatrix} \]
Derived types and interfaces | |
interface | j_matrix_f_nopass |
type | jacobian_matrix_element |
Functions array. More... | |
type | sll_t_coordinate_transformation_2d_analytic |
Analytic transformation. More... | |
type | sll_t_coordinate_transformation_2d_discrete |
interface | sll_o_delete |
Deallocate. More... | |
Functions/Subroutines | |
type(sll_t_coordinate_transformation_2d_analytic) function, pointer, public | sll_f_new_coordinate_transformation_2d_analytic (label, mesh_2d, x1_func, x2_func, j11_func, j12_func, j21_func, j22_func, params) |
Create the analytic coordinate transformation. More... | |
subroutine, public | sll_s_coordinate_transformation_2d_analytic_init (transf, label, mesh_2d, x1_func, x2_func, j11_func, j12_func, j21_func, j22_func, params) |
subroutine | delete_transformation_2d_analytic (transf) |
class(sll_t_cartesian_mesh_2d) function, pointer | get_cartesian_mesh_analytic (transf) |
real(kind=f64) function | jacobian_2d_analytic (transf, eta1, eta2) |
real(kind=f64) function, dimension(1:2, 1:2) | jacobian_matrix_2d_analytic (transf, eta1, eta2) |
real(kind=f64) function, dimension(1:2, 1:2) | inverse_jacobian_matrix_2d_analytic (transf, eta1, eta2) |
real(kind=f64) function | x1_analytic (transf, eta1, eta2) |
real(kind=f64) function | x2_analytic (transf, eta1, eta2) |
real(kind=f64) function | x1_node_analytic (transf, i, j) |
real(kind=f64) function | x2_node_analytic (transf, i, j) |
real(kind=f64) function | x1_cell_analytic (transf, i, j) |
real(kind=f64) function | x2_cell_analytic (transf, i, j) |
real(kind=f64) function | jacobian_2d_cell_analytic (transf, i, j) |
real(kind=f64) function | jacobian_node_analytic (transf, i, j) |
subroutine | write_to_file_2d_analytic (transf, output_format) |
subroutine | read_from_file_2d_analytic (transf, filename) |
class(sll_t_cartesian_mesh_2d) function, pointer | get_cartesian_mesh_discrete (transf) |
real(kind=f64) function | x1_node_discrete (transf, i, j) |
real(kind=f64) function | x2_node_discrete (transf, i, j) |
real(kind=f64) function | x1_cell_discrete (transf, i, j) |
real(kind=f64) function | x2_cell_discrete (transf, i, j) |
real(kind=f64) function | x1_discrete (transf, eta1, eta2) |
real(kind=f64) function | x2_discrete (transf, eta1, eta2) |
real(kind=f64) function | jacobian_2d_discrete (transf, eta1, eta2) |
real(kind=f64) function | jacobian_2d_cell_discrete (transf, i, j) |
real(kind=f64) function, dimension(1:2, 1:2) | jacobian_matrix_2d_discrete (transf, eta1, eta2) |
real(kind=f64) function, dimension(1:2, 1:2) | inverse_jacobian_matrix_2d_discrete (transf, eta1, eta2) |
type(sll_t_coordinate_transformation_2d_discrete) function, pointer, public | sll_f_new_coordinate_transformation_2d_discrete (mesh_2d, label, x1_interpolator, x2_interpolator, jacobians_n_interpolator, x1_node, x2_node, jacobians_node, x1_cell, x2_cell, jacobians_cell) |
Create a new coordinate transformation object. More... | |
subroutine, public | sll_s_coordinate_transformation_2d_discrete_init (transf, mesh_2d, label, x1_interpolator, x2_interpolator, jacobians_n_interpolator, x1_node, x2_node, jacobians_node, x1_cell, x2_cell, jacobians_cell) |
real(kind=f64) function | transf_2d_jacobian_node_discrete (transf, i, j) |
subroutine | write_to_file_2d_discrete (transf, output_format) |
subroutine | delete_transformation_2d_discrete (transf) |
subroutine | read_from_file_2d_discrete (transf, filename) |
|
private |
Definition at line 354 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 1224 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 363 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 671 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 415 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 776 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 369 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 509 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 745 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 725 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 392 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 753 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 534 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 654 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 1269 of file sll_m_coordinate_transformations_2d.F90.
type(sll_t_coordinate_transformation_2d_analytic) function, pointer, public sll_m_coordinate_transformations_2d::sll_f_new_coordinate_transformation_2d_analytic | ( | character(len=*), intent(in) | label, |
type(sll_t_cartesian_mesh_2d), target | mesh_2d, | ||
procedure(sll_i_transformation_func_nopass) | x1_func, | ||
procedure(sll_i_transformation_func_nopass) | x2_func, | ||
procedure(sll_i_transformation_func_nopass) | j11_func, | ||
procedure(sll_i_transformation_func_nopass) | j12_func, | ||
procedure(sll_i_transformation_func_nopass) | j21_func, | ||
procedure(sll_i_transformation_func_nopass) | j22_func, | ||
real(kind=f64), dimension(:), intent(in) | params | ||
) |
Create the analytic coordinate transformation.
Definition at line 267 of file sll_m_coordinate_transformations_2d.F90.
type(sll_t_coordinate_transformation_2d_discrete) function, pointer, public sll_m_coordinate_transformations_2d::sll_f_new_coordinate_transformation_2d_discrete | ( | type(sll_t_cartesian_mesh_2d), pointer | mesh_2d, |
character(len=*), intent(in) | label, | ||
class(sll_c_interpolator_2d), target | x1_interpolator, | ||
class(sll_c_interpolator_2d), target | x2_interpolator, | ||
class(sll_c_interpolator_2d), target | jacobians_n_interpolator, | ||
real(kind=f64), dimension(:, :), intent(in), optional | x1_node, | ||
real(kind=f64), dimension(:, :), intent(in), optional | x2_node, | ||
real(kind=f64), dimension(:, :), intent(in), optional | jacobians_node, | ||
real(kind=f64), dimension(:, :), intent(in), optional | x1_cell, | ||
real(kind=f64), dimension(:, :), intent(in), optional | x2_cell, | ||
real(kind=f64), dimension(:, :), intent(in), optional | jacobians_cell | ||
) |
Create a new coordinate transformation object.
Definition at line 802 of file sll_m_coordinate_transformations_2d.F90.
subroutine, public sll_m_coordinate_transformations_2d::sll_s_coordinate_transformation_2d_analytic_init | ( | class(sll_t_coordinate_transformation_2d_analytic), intent(inout) | transf, |
character(len=*), intent(in) | label, | ||
type(sll_t_cartesian_mesh_2d), target | mesh_2d, | ||
procedure(sll_i_transformation_func_nopass) | x1_func, | ||
procedure(sll_i_transformation_func_nopass) | x2_func, | ||
procedure(sll_i_transformation_func_nopass) | j11_func, | ||
procedure(sll_i_transformation_func_nopass) | j12_func, | ||
procedure(sll_i_transformation_func_nopass) | j21_func, | ||
procedure(sll_i_transformation_func_nopass) | j22_func, | ||
real(kind=f64), dimension(:), intent(in) | params | ||
) |
Definition at line 307 of file sll_m_coordinate_transformations_2d.F90.
subroutine, public sll_m_coordinate_transformations_2d::sll_s_coordinate_transformation_2d_discrete_init | ( | class(sll_t_coordinate_transformation_2d_discrete) | transf, |
type(sll_t_cartesian_mesh_2d), target | mesh_2d, | ||
character(len=*), intent(in) | label, | ||
class(sll_c_interpolator_2d), target | x1_interpolator, | ||
class(sll_c_interpolator_2d), target | x2_interpolator, | ||
class(sll_c_interpolator_2d), target | jacobians_n_interpolator, | ||
real(kind=f64), dimension(:, :), intent(in), optional | x1_node, | ||
real(kind=f64), dimension(:, :), intent(in), optional | x2_node, | ||
real(kind=f64), dimension(:, :), intent(in), optional | jacobians_node, | ||
real(kind=f64), dimension(:, :), intent(in), optional | x1_cell, | ||
real(kind=f64), dimension(:, :), intent(in), optional | x2_cell, | ||
real(kind=f64), dimension(:, :), intent(in), optional | jacobians_cell | ||
) |
Definition at line 850 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 1112 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 566 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 1127 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 441 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 483 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 693 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 709 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 457 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 677 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 449 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 496 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 701 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 717 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 470 of file sll_m_coordinate_transformations_2d.F90.
|
private |
Definition at line 685 of file sll_m_coordinate_transformations_2d.F90.