Report Typos and Errors
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
data_structures
fields
sll_m_scalar_field_1d_base.F90
Go to the documentation of this file.
1
module
sll_m_scalar_field_1d_base
2
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3
#include "sll_working_precision.h"
4
5
implicit none
6
7
public
:: &
8
sll_c_scalar_field_1d_base
9
10
private
11
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12
13
! Fundamental field type
14
type
,
abstract
::
sll_c_scalar_field_1d_base
15
contains
16
! procedure(function_get_mesh_1d), deferred, pass :: get_cartesian_mesh
17
procedure
(
function_evaluation_real_1d
),
deferred
, pass :: value_at_point
18
! procedure(function_evaluation_integer_1d), deferred, pass :: value_at_indices
19
procedure
(
function_evaluation_real_1d
),
deferred
, pass :: derivative_value_at_point
20
! procedure(derivative_evaluation_integer), deferred, pass :: &
21
! derivative_value_at_indices
22
procedure
(
set_field_data_subroutine_1d
),
deferred
, pass :: set_field_data
23
procedure
(
field_1d_message_pass
),
deferred
, pass :: update_interpolation_coefficients
24
! procedure(field_1d_file_output), deferred, pass :: write_to_file
25
procedure
(
field_1d_subroutine
),
deferred
, pass :: delete
26
! ! here we can continue with derivatives or whatever else that might
27
! be desired.
28
end type
sll_c_scalar_field_1d_base
29
30
! type sll_scalar_field_1d_base_ptr
31
! type(sll_c_scalar_field_1d_base), pointer :: base
32
! end type sll_scalar_field_1d_base_ptr
33
34
abstract
interface
35
subroutine
set_field_data_subroutine_1d
(field, values)
36
use
sll_m_working_precision
37
import
sll_c_scalar_field_1d_base
38
class
(
sll_c_scalar_field_1d_base
),
intent(inout)
:: field
39
sll_real64,
dimension(:)
,
intent(in)
:: values
40
end subroutine
set_field_data_subroutine_1d
41
end interface
42
43
!
44
! abstract interface
45
! function function_get_mesh_1d(field) result(res)
46
! use sll_m_cartesian_meshes
47
! import sll_c_scalar_field_1d_base
48
! class(sll_c_scalar_field_1d_base), intent(in) :: field
49
! type(sll_t_cartesian_mesh_1d), pointer :: res ! a implementer
50
! end function function_get_mesh_1d
51
! end interface
52
!
53
!
54
abstract
interface
55
subroutine
field_1d_message_pass
(field)
56
import
sll_c_scalar_field_1d_base
57
class
(
sll_c_scalar_field_1d_base
),
intent(inout)
:: field
58
end subroutine
field_1d_message_pass
59
end interface
60
61
abstract
interface
62
function
function_evaluation_real_1d
(field, eta)
result
(res)
63
use
sll_m_working_precision
64
import
sll_c_scalar_field_1d_base
65
class
(
sll_c_scalar_field_1d_base
),
intent(inout)
:: field
66
sll_real64,
intent(in)
:: eta
67
sll_real64 :: res
68
end function
function_evaluation_real_1d
69
end interface
70
!
71
! abstract interface
72
! function function_evaluation_integer_1d( field, i ) result(res)
73
! use sll_m_working_precision
74
! import sll_c_scalar_field_1d_base
75
! class(sll_c_scalar_field_1d_base), intent(inout) :: field
76
! sll_int32, intent(in) :: i
77
! sll_real64 :: res
78
! end function function_evaluation_integer_1d
79
! end interface
80
!
81
! abstract interface
82
! function derivative_evaluation_real( field, eta ) result(res)
83
! use sll_m_working_precision
84
! import sll_c_scalar_field_1d_base
85
! class(sll_c_scalar_field_1d_base), intent(inout) :: field
86
! sll_real64, intent(in) :: eta
87
! sll_real64 :: res
88
! end function derivative_evaluation_real
89
! end interface
90
91
! abstract interface
92
! function derivative_evaluation_integer( field, i) result(res)
93
! use sll_m_working_precision
94
! import sll_c_scalar_field_1d_base
95
! class(sll_c_scalar_field_1d_base), intent(inout) :: field
96
! sll_int32, intent(in) :: i
97
! sll_real64 :: res
98
! end function derivative_evaluation_integer
99
! end interface
100
!
101
!
102
!
103
!! abstract interface
104
!! function return_integer( field ) result(res)
105
!! use sll_m_working_precision
106
!! import sll_c_scalar_field_1d_base
107
!! class(sll_c_scalar_field_1d_base), intent(in) :: field
108
!! sll_int32 :: res
109
!! end function return_integer
110
!! end interface
111
!
112
! abstract interface
113
! subroutine field_1d_file_output( field, tag )
114
! use sll_m_working_precision
115
! import sll_c_scalar_field_1d_base
116
! class(sll_c_scalar_field_1d_base), intent(inout) :: field
117
! sll_int32, intent(in) :: tag
118
! end subroutine field_1d_file_output
119
! end interface
120
!
121
abstract
interface
122
subroutine
field_1d_subroutine
(field)
123
import
sll_c_scalar_field_1d_base
124
class
(
sll_c_scalar_field_1d_base
),
intent(inout)
:: field
125
end subroutine
field_1d_subroutine
126
end interface
127
!
128
end module
sll_m_scalar_field_1d_base
sll_m_scalar_field_1d_base::field_1d_message_pass
Definition:
sll_m_scalar_field_1d_base.F90:55
sll_m_scalar_field_1d_base::field_1d_subroutine
Definition:
sll_m_scalar_field_1d_base.F90:122
sll_m_scalar_field_1d_base::function_evaluation_real_1d
Definition:
sll_m_scalar_field_1d_base.F90:62
sll_m_scalar_field_1d_base::set_field_data_subroutine_1d
Definition:
sll_m_scalar_field_1d_base.F90:35
sll_m_scalar_field_1d_base
Definition:
sll_m_scalar_field_1d_base.F90:1
sll_m_working_precision
Module to select the kind parameter.
Definition:
sll_m_working_precision.F90:29
sll_m_scalar_field_1d_base::sll_c_scalar_field_1d_base
Definition:
sll_m_scalar_field_1d_base.F90:14
Report Typos and Errors
Generated on Mon Oct 23 2023 19:15:39 for Semi-Lagrangian Library by
1.9.1