Report Typos and Errors    
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
sll_m_spline_matrix_base.F90
Go to the documentation of this file.
1 
7 
9 
10 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11  use sll_m_working_precision, only: f64
12 
13  implicit none
14 
15  public :: sll_c_spline_matrix
16 
17  private
18 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
19 
21  integer, parameter :: wp = f64
22 
23  type, abstract :: sll_c_spline_matrix
24  contains
25  procedure(i_sub_set_element), deferred :: set_element
26  procedure(i_sub_factorize), deferred :: factorize
27  procedure(i_sub_solve_inplace), deferred :: solve_inplace
28  procedure(i_sub_write), deferred :: write
29  procedure(i_sub_free), deferred :: free
30  end type sll_c_spline_matrix
31 
32  abstract interface
33 
34  !-----------------------------------------------------------------------------
35  subroutine i_sub_set_element(self, i, j, a_ij)
36  import sll_c_spline_matrix, wp
37  class(sll_c_spline_matrix), intent(inout) :: self
38  integer, intent(in) :: i
39  integer, intent(in) :: j
40  real(wp), intent(in) :: a_ij
41  end subroutine i_sub_set_element
42 
43  !-----------------------------------------------------------------------------
44  subroutine i_sub_factorize(self)
45  import sll_c_spline_matrix, wp
46  class(sll_c_spline_matrix), intent(inout) :: self
47  end subroutine i_sub_factorize
48 
49  !-----------------------------------------------------------------------------
50  subroutine i_sub_solve_inplace(self, bx)
51  import sll_c_spline_matrix, wp
52  class(sll_c_spline_matrix), intent(in) :: self
53  real(wp), intent(inout) :: bx(:)
54  end subroutine i_sub_solve_inplace
55 
56  !-----------------------------------------------------------------------------
57  subroutine i_sub_write(self, unit, fmt)
58  import sll_c_spline_matrix, wp
59  class(sll_c_spline_matrix), intent(in) :: self
60  integer, optional, intent(in) :: unit
61  character(len=*), optional, intent(in) :: fmt
62  end subroutine i_sub_write
63 
64  !-----------------------------------------------------------------------------
65  subroutine i_sub_free(self)
66  import sll_c_spline_matrix
67  class(sll_c_spline_matrix), intent(inout) :: self
68  end subroutine i_sub_free
69 
70  end interface
71 
72 end module sll_m_spline_matrix_base
Abstract class for small matrix library with basic operations: set matrix element,...
integer, parameter wp
Working precision.
Module to select the kind parameter.
integer, parameter, public f64
f64 is the kind type for 64-bit reals (double precision)
    Report Typos and Errors