Report Typos and Errors    
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
sll_m_linear_operator_base.F90
Go to the documentation of this file.
2 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 #include "sll_assert.h"
4 
6 
7  implicit none
8 
9  public :: sll_c_linear_operator
10 
11  private
12 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
13 
14  type, abstract :: sll_c_linear_operator
15 
16  contains
17 
18  ! Deferred procedures
19  procedure(i_fun_get_shape), deferred :: get_shape
20  procedure(i_sub_dot), deferred :: dot
21  procedure(i_sub_free), deferred :: free
22 
23  end type sll_c_linear_operator
24 
25  ! Interfaces for deferred procedures
26  abstract interface
27 
28  function i_fun_get_shape(self) result(s)
30  class(sll_c_linear_operator), intent(in) :: self
31  integer :: s(2)
32  end function i_fun_get_shape
33 
34  subroutine i_sub_dot(self, x, y)
36  class(sll_c_linear_operator), intent(in) :: self
37  class(sll_c_vector_space), intent(in) :: x
38  class(sll_c_vector_space), intent(inout) :: y
39  end subroutine i_sub_dot
40 
41  subroutine i_sub_free(self)
43  class(sll_c_linear_operator), intent(inout) :: self
44  end subroutine i_sub_free
45 
46  end interface
47 
Abstract type implementing a generic vector space.
Abstract base class for all vector spaces.
    Report Typos and Errors