Report Typos and Errors    
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
Derived types and interfaces | Functions/Subroutines
sll_m_coordinate_transformations_2d Module Reference

Description

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)
 

Function/Subroutine Documentation

◆ delete_transformation_2d_analytic()

subroutine sll_m_coordinate_transformations_2d::delete_transformation_2d_analytic ( class(sll_t_coordinate_transformation_2d_analytic), intent(inout)  transf)
private

Definition at line 354 of file sll_m_coordinate_transformations_2d.F90.

◆ delete_transformation_2d_discrete()

subroutine sll_m_coordinate_transformations_2d::delete_transformation_2d_discrete ( class(sll_t_coordinate_transformation_2d_discrete), intent(inout)  transf)
private

Definition at line 1224 of file sll_m_coordinate_transformations_2d.F90.

◆ get_cartesian_mesh_analytic()

class(sll_t_cartesian_mesh_2d) function, pointer sll_m_coordinate_transformations_2d::get_cartesian_mesh_analytic ( class(sll_t_coordinate_transformation_2d_analytic), intent(in)  transf)
private

Definition at line 363 of file sll_m_coordinate_transformations_2d.F90.

◆ get_cartesian_mesh_discrete()

class(sll_t_cartesian_mesh_2d) function, pointer sll_m_coordinate_transformations_2d::get_cartesian_mesh_discrete ( class(sll_t_coordinate_transformation_2d_discrete), intent(in)  transf)
private

Definition at line 671 of file sll_m_coordinate_transformations_2d.F90.

◆ inverse_jacobian_matrix_2d_analytic()

real(kind=f64) function, dimension(1:2, 1:2) sll_m_coordinate_transformations_2d::inverse_jacobian_matrix_2d_analytic ( class(sll_t_coordinate_transformation_2d_analytic), intent(inout)  transf,
real(kind=f64), intent(in)  eta1,
real(kind=f64), intent(in)  eta2 
)
private

Definition at line 415 of file sll_m_coordinate_transformations_2d.F90.

◆ inverse_jacobian_matrix_2d_discrete()

real(kind=f64) function, dimension(1:2, 1:2) sll_m_coordinate_transformations_2d::inverse_jacobian_matrix_2d_discrete ( class(sll_t_coordinate_transformation_2d_discrete), intent(inout)  transf,
real(kind=f64), intent(in)  eta1,
real(kind=f64), intent(in)  eta2 
)
private

Definition at line 776 of file sll_m_coordinate_transformations_2d.F90.

◆ jacobian_2d_analytic()

real(kind=f64) function sll_m_coordinate_transformations_2d::jacobian_2d_analytic ( class(sll_t_coordinate_transformation_2d_analytic transf,
real(kind=f64), intent(in)  eta1,
real(kind=f64), intent(in)  eta2 
)
private

Definition at line 369 of file sll_m_coordinate_transformations_2d.F90.

Here is the caller graph for this function:

◆ jacobian_2d_cell_analytic()

real(kind=f64) function sll_m_coordinate_transformations_2d::jacobian_2d_cell_analytic ( class(sll_t_coordinate_transformation_2d_analytic transf,
integer(kind=i32), intent(in)  i,
integer(kind=i32), intent(in)  j 
)
private

Definition at line 509 of file sll_m_coordinate_transformations_2d.F90.

◆ jacobian_2d_cell_discrete()

real(kind=f64) function sll_m_coordinate_transformations_2d::jacobian_2d_cell_discrete ( class(sll_t_coordinate_transformation_2d_discrete transf,
integer(kind=i32), intent(in)  i,
integer(kind=i32), intent(in)  j 
)
private

Definition at line 745 of file sll_m_coordinate_transformations_2d.F90.

◆ jacobian_2d_discrete()

real(kind=f64) function sll_m_coordinate_transformations_2d::jacobian_2d_discrete ( class(sll_t_coordinate_transformation_2d_discrete transf,
real(kind=f64), intent(in)  eta1,
real(kind=f64), intent(in)  eta2 
)
private

Definition at line 725 of file sll_m_coordinate_transformations_2d.F90.

◆ jacobian_matrix_2d_analytic()

real(kind=f64) function, dimension(1:2, 1:2) sll_m_coordinate_transformations_2d::jacobian_matrix_2d_analytic ( class(sll_t_coordinate_transformation_2d_analytic), intent(inout)  transf,
real(kind=f64), intent(in)  eta1,
real(kind=f64), intent(in)  eta2 
)
private

Definition at line 392 of file sll_m_coordinate_transformations_2d.F90.

◆ jacobian_matrix_2d_discrete()

real(kind=f64) function, dimension(1:2, 1:2) sll_m_coordinate_transformations_2d::jacobian_matrix_2d_discrete ( class(sll_t_coordinate_transformation_2d_discrete), intent(inout)  transf,
real(kind=f64), intent(in)  eta1,
real(kind=f64), intent(in)  eta2 
)
private

Definition at line 753 of file sll_m_coordinate_transformations_2d.F90.

◆ jacobian_node_analytic()

real(kind=f64) function sll_m_coordinate_transformations_2d::jacobian_node_analytic ( class(sll_t_coordinate_transformation_2d_analytic transf,
integer(kind=i32), intent(in)  i,
integer(kind=i32), intent(in)  j 
)
private

Definition at line 534 of file sll_m_coordinate_transformations_2d.F90.

◆ read_from_file_2d_analytic()

subroutine sll_m_coordinate_transformations_2d::read_from_file_2d_analytic ( class(sll_t_coordinate_transformation_2d_analytic), intent(inout)  transf,
character(len=*), intent(in)  filename 
)
private

Definition at line 654 of file sll_m_coordinate_transformations_2d.F90.

◆ read_from_file_2d_discrete()

subroutine sll_m_coordinate_transformations_2d::read_from_file_2d_discrete ( class(sll_t_coordinate_transformation_2d_discrete), intent(inout)  transf,
character(len=*), intent(in)  filename 
)
private

Definition at line 1269 of file sll_m_coordinate_transformations_2d.F90.

Here is the call graph for this function:

◆ sll_f_new_coordinate_transformation_2d_analytic()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_f_new_coordinate_transformation_2d_discrete()

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.

Here is the call graph for this function:

◆ sll_s_coordinate_transformation_2d_analytic_init()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_coordinate_transformation_2d_discrete_init()

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.

Here is the caller graph for this function:

◆ transf_2d_jacobian_node_discrete()

real(kind=f64) function sll_m_coordinate_transformations_2d::transf_2d_jacobian_node_discrete ( class(sll_t_coordinate_transformation_2d_discrete transf,
integer(kind=i32), intent(in)  i,
integer(kind=i32), intent(in)  j 
)
private

Definition at line 1112 of file sll_m_coordinate_transformations_2d.F90.

◆ write_to_file_2d_analytic()

subroutine sll_m_coordinate_transformations_2d::write_to_file_2d_analytic ( class(sll_t_coordinate_transformation_2d_analytic), intent(inout)  transf,
integer(kind=i32), intent(in), optional  output_format 
)
private

Definition at line 566 of file sll_m_coordinate_transformations_2d.F90.

Here is the call graph for this function:

◆ write_to_file_2d_discrete()

subroutine sll_m_coordinate_transformations_2d::write_to_file_2d_discrete ( class(sll_t_coordinate_transformation_2d_discrete), intent(inout)  transf,
integer(kind=i32), intent(in), optional  output_format 
)
private

Definition at line 1127 of file sll_m_coordinate_transformations_2d.F90.

Here is the call graph for this function:

◆ x1_analytic()

real(kind=f64) function sll_m_coordinate_transformations_2d::x1_analytic ( class(sll_t_coordinate_transformation_2d_analytic transf,
real(kind=f64), intent(in)  eta1,
real(kind=f64), intent(in)  eta2 
)
private

Definition at line 441 of file sll_m_coordinate_transformations_2d.F90.

◆ x1_cell_analytic()

real(kind=f64) function sll_m_coordinate_transformations_2d::x1_cell_analytic ( class(sll_t_coordinate_transformation_2d_analytic transf,
integer(kind=i32), intent(in)  i,
integer(kind=i32), intent(in)  j 
)
private

Definition at line 483 of file sll_m_coordinate_transformations_2d.F90.

◆ x1_cell_discrete()

real(kind=f64) function sll_m_coordinate_transformations_2d::x1_cell_discrete ( class(sll_t_coordinate_transformation_2d_discrete transf,
integer(kind=i32), intent(in)  i,
integer(kind=i32), intent(in)  j 
)
private

Definition at line 693 of file sll_m_coordinate_transformations_2d.F90.

◆ x1_discrete()

real(kind=f64) function sll_m_coordinate_transformations_2d::x1_discrete ( class(sll_t_coordinate_transformation_2d_discrete transf,
real(kind=f64), intent(in)  eta1,
real(kind=f64), intent(in)  eta2 
)
private

Definition at line 709 of file sll_m_coordinate_transformations_2d.F90.

◆ x1_node_analytic()

real(kind=f64) function sll_m_coordinate_transformations_2d::x1_node_analytic ( class(sll_t_coordinate_transformation_2d_analytic transf,
integer(kind=i32), intent(in)  i,
integer(kind=i32), intent(in)  j 
)
private

Definition at line 457 of file sll_m_coordinate_transformations_2d.F90.

Here is the caller graph for this function:

◆ x1_node_discrete()

real(kind=f64) function sll_m_coordinate_transformations_2d::x1_node_discrete ( class(sll_t_coordinate_transformation_2d_discrete transf,
integer(kind=i32), intent(in)  i,
integer(kind=i32), intent(in)  j 
)
private

Definition at line 677 of file sll_m_coordinate_transformations_2d.F90.

Here is the caller graph for this function:

◆ x2_analytic()

real(kind=f64) function sll_m_coordinate_transformations_2d::x2_analytic ( class(sll_t_coordinate_transformation_2d_analytic transf,
real(kind=f64), intent(in)  eta1,
real(kind=f64), intent(in)  eta2 
)
private

Definition at line 449 of file sll_m_coordinate_transformations_2d.F90.

◆ x2_cell_analytic()

real(kind=f64) function sll_m_coordinate_transformations_2d::x2_cell_analytic ( class(sll_t_coordinate_transformation_2d_analytic transf,
integer(kind=i32), intent(in)  i,
integer(kind=i32), intent(in)  j 
)
private

Definition at line 496 of file sll_m_coordinate_transformations_2d.F90.

◆ x2_cell_discrete()

real(kind=f64) function sll_m_coordinate_transformations_2d::x2_cell_discrete ( class(sll_t_coordinate_transformation_2d_discrete transf,
integer(kind=i32), intent(in)  i,
integer(kind=i32), intent(in)  j 
)
private

Definition at line 701 of file sll_m_coordinate_transformations_2d.F90.

◆ x2_discrete()

real(kind=f64) function sll_m_coordinate_transformations_2d::x2_discrete ( class(sll_t_coordinate_transformation_2d_discrete transf,
real(kind=f64), intent(in)  eta1,
real(kind=f64), intent(in)  eta2 
)
private

Definition at line 717 of file sll_m_coordinate_transformations_2d.F90.

◆ x2_node_analytic()

real(kind=f64) function sll_m_coordinate_transformations_2d::x2_node_analytic ( class(sll_t_coordinate_transformation_2d_analytic transf,
integer(kind=i32), intent(in)  i,
integer(kind=i32), intent(in)  j 
)
private

Definition at line 470 of file sll_m_coordinate_transformations_2d.F90.

Here is the caller graph for this function:

◆ x2_node_discrete()

real(kind=f64) function sll_m_coordinate_transformations_2d::x2_node_discrete ( class(sll_t_coordinate_transformation_2d_discrete transf,
integer(kind=i32), intent(in)  i,
integer(kind=i32), intent(in)  j 
)
private

Definition at line 685 of file sll_m_coordinate_transformations_2d.F90.

Here is the caller graph for this function:
    Report Typos and Errors