Report Typos and Errors    
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
sll_m_advection_1d_base.F90
Go to the documentation of this file.
1 !**************************************************************
2 ! Copyright INRIA
3 ! Authors :
4 ! CALVI project team
5 !
6 ! This code SeLaLib (for Semi-Lagrangian-Library)
7 ! is a parallel library for simulating the plasma turbulence
8 ! in a tokamak.
9 !
10 ! This software is governed by the CeCILL-B license
11 ! under French law and abiding by the rules of distribution
12 ! of free software. You can use, modify and redistribute
13 ! the software under the terms of the CeCILL-B license as
14 ! circulated by CEA, CNRS and INRIA at the following URL
15 ! "http://www.cecill.info".
16 !**************************************************************
17 
24 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
25 #include "sll_working_precision.h"
26 
27  implicit none
28 
29  public :: &
32 
33  private
34 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
35 
36  type, abstract :: sll_c_advector_1d
37 
38  contains
39 
40  procedure(signature_advect_1d_constant), deferred, pass(adv) :: advect_1d_constant
41  procedure(signature_advect_1d), deferred, pass(adv) :: advect_1d
42  procedure(signature_advect_1d_delete), deferred, pass(adv) :: delete
43 
44  end type sll_c_advector_1d
45 
47  class(sll_c_advector_1d), pointer :: ptr
49 
50 #ifndef DOXYGEN_SHOULD_SKIP_THIS
51  abstract interface
52 
53  subroutine signature_advect_1d_constant(adv, &
54  a, &
55  dt, &
56  input, &
57  output)
58 
60  import sll_c_advector_1d
61 
62  class(sll_c_advector_1d) :: adv
63  sll_real64, intent(in) :: a
64  sll_real64, intent(in) :: dt
65  sll_real64, dimension(:), intent(in) :: input
66  sll_real64, dimension(:), intent(out) :: output
67 
68  end subroutine signature_advect_1d_constant
69 
70  end interface
71 
72  abstract interface
73 
74  subroutine signature_advect_1d(adv, &
75  A, &
76  dt, &
77  input, &
78  output)
79 
81  import sll_c_advector_1d
82 
83  class(sll_c_advector_1d) :: adv
84  sll_real64, dimension(:), intent(in) :: a
85  sll_real64, intent(in) :: dt
86  sll_real64, dimension(:), intent(in) :: input
87  sll_real64, dimension(:), intent(out) :: output
88 
89  end subroutine signature_advect_1d
90 
91  end interface
92 
93  abstract interface
94 
95  subroutine signature_advect_1d_delete(adv)
96 
97  import sll_c_advector_1d
98  class(sll_c_advector_1d), intent(inout) :: adv
99 
100  end subroutine signature_advect_1d_delete
101 
102  end interface
103 
104 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
105 
106 end module sll_m_advection_1d_base
Abstract class for advection.
Module to select the kind parameter.
    Report Typos and Errors