Octopus
operate_f.F90
Go to the documentation of this file.
1!! Copyright (C) 2012 D. Strubbe
2!!
3!! This program is free software; you can redistribute it and/or modify
4!! it under the terms of the GNU General Public License as published by
5!! the Free Software Foundation; either version 2, or (at your option)
6!! any later version.
7!!
8!! This program is distributed in the hope that it will be useful,
9!! but WITHOUT ANY WARRANTY; without even the implied warranty of
10!! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11!! GNU General Public License for more details.
12!!
13!! You should have received a copy of the GNU General Public License
14!! along with this program; if not, write to the Free Software
15!! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
16!! 02110-1301, USA.
17!!
18
19#include "global.h"
20
21! -----------------------------------------------------------------------
23! -----------------------------------------------------------------------
24module operate_f_oct_m
25
26 use, intrinsic :: iso_fortran_env
27
28 implicit none
29
30 public ! only interfaces in this module
31
32 interface
33 subroutine doperate_ri_vec(opn, w, opnri, opri, rimap_inv, rimap_inv_max, fi, ldfp, fo)
34 import :: real64
35 implicit none
36 integer, intent(in) :: opn
37 real(real64), intent(in) :: w
38 integer, intent(in) :: opnri
39 integer, intent(in) :: opri
40 integer, intent(in) :: rimap_inv
41 integer, intent(in) :: rimap_inv_max
42 real(real64), intent(in) :: fi
43 integer, intent(in) :: ldfp
44 real(real64), intent(inout) :: fo
45 end subroutine doperate_ri_vec
46 end interface
47
48 interface
49 subroutine zoperate_ri_vec(opn, w, opnri, opri, rimap_inv, rimap_inv_max, fi, ldfp, fo)
50 import :: real64
51 implicit none
52 integer, intent(in) :: opn
53 real(real64), intent(in) :: w
54 integer, intent(in) :: opnri
55 integer, intent(in) :: opri
56 integer, intent(in) :: rimap_inv
57 integer, intent(in) :: rimap_inv_max
58 complex(real64), intent(in) :: fi
59 integer, intent(in) :: ldfp
60 complex(real64), intent(inout) :: fo
61 end subroutine zoperate_ri_vec
62 end interface
63
64 interface
65 subroutine doperate_ri_sym_vec(opn, w, wcenter, opnri, opri_pos, opri_neg, rimap_inv, rimap_inv_max, fi, ldfp, fo)
66 import :: real64
67 implicit none
68 integer, intent(in) :: opn
69 real(real64), intent(in) :: w
70 real(real64), intent(in) :: wcenter
71 integer, intent(in) :: opnri
72 integer, intent(in) :: opri_pos
73 integer, intent(in) :: opri_neg
74 integer, intent(in) :: rimap_inv
75 integer, intent(in) :: rimap_inv_max
76 real(real64), intent(in) :: fi
77 integer, intent(in) :: ldfp
78 real(real64), intent(inout) :: fo
79 end subroutine doperate_ri_sym_vec
80 end interface
81
82 interface
83 subroutine zoperate_ri_sym_vec(opn, w, wcenter, opnri, opri_pos, opri_neg, rimap_inv, rimap_inv_max, fi, ldfp, fo)
84 import :: real64
85 implicit none
86 integer, intent(in) :: opn
87 real(real64), intent(in) :: w
88 real(real64), intent(in) :: wcenter
89 integer, intent(in) :: opnri
90 integer, intent(in) :: opri_pos
91 integer, intent(in) :: opri_neg
92 integer, intent(in) :: rimap_inv
93 integer, intent(in) :: rimap_inv_max
94 complex(real64), intent(in) :: fi
95 integer, intent(in) :: ldfp
96 complex(real64), intent(inout) :: fo
97 end subroutine zoperate_ri_sym_vec
98 end interface
99
100 interface
101 subroutine doperate_ri_antisym_vec(opn, w, opnri, opri_pos, opri_neg, rimap_inv, rimap_inv_max, fi, ldfp, fo)
102 import :: real64
103 implicit none
104 integer, intent(in) :: opn
105 real(real64), intent(in) :: w
106 integer, intent(in) :: opnri
107 integer, intent(in) :: opri_pos
108 integer, intent(in) :: opri_neg
109 integer, intent(in) :: rimap_inv
110 integer, intent(in) :: rimap_inv_max
111 real(real64), intent(in) :: fi
112 integer, intent(in) :: ldfp
113 real(real64), intent(inout) :: fo
114 end subroutine doperate_ri_antisym_vec
115 end interface
116
117 interface
118 subroutine zoperate_ri_antisym_vec(opn, w, opnri, opri_pos, opri_neg, rimap_inv, rimap_inv_max, fi, ldfp, fo)
119 import :: real64
120 implicit none
121 integer, intent(in) :: opn
122 real(real64), intent(in) :: w
123 integer, intent(in) :: opnri
124 integer, intent(in) :: opri_pos
125 integer, intent(in) :: opri_neg
126 integer, intent(in) :: rimap_inv
127 integer, intent(in) :: rimap_inv_max
128 complex(real64), intent(in) :: fi
129 integer, intent(in) :: ldfp
130 complex(real64), intent(inout) :: fo
131 end subroutine zoperate_ri_antisym_vec
132 end interface
133
134
135 interface
136 subroutine dgauss_seidel(opn, w, opnri, opri, rimap_inv, rimap_inv_max, factor, pot, rho)
137 import :: real64
138 implicit none
139 integer, intent(in) :: opn
140 real(real64), intent(in) :: w
141 integer, intent(in) :: opnri
142 integer, intent(in) :: opri
143 integer, intent(in) :: rimap_inv
144 integer, intent(in) :: rimap_inv_max
145 real(real64), intent(in) :: factor
146 real(real64), intent(inout) :: pot
147 real(real64), intent(in) :: rho
148 end subroutine dgauss_seidel
149 end interface
150
151
152 !--- C interface to the routine in your C library/executable
153 interface
154 subroutine get_vectorization_level(level) bind(C, name="get_vectorization_level")
155 use iso_c_binding
156 character(kind=c_char), intent(inout) :: level(*)
157 end subroutine
158 end interface
159
161
162!! Local Variables:
163!! mode: f90
164!! coding: utf-8
165!! End:
This module contains interfaces for routines in operate.c.
Definition: operate_f.F90:119