ETS  \$Id: Doxyfile 2162 2020-02-26 14:16:09Z g2dpc $
 All Classes Files Functions Variables Pages
analytical_functions.f90
Go to the documentation of this file.
1 ! + + + + + + + + + + + + + + + + + + + + + + + + + + + +
7 ! + + + + + + + + + + + + + + + + + + + + + + + + + + + +
9 
10  use itm_types
11  use itm_constants
12  IMPLICIT NONE
13 
14 CONTAINS
15 
16 
17 
18 !==============================================================
19 ! +++ MAGNETIC GEOMETRY
20  REAL(R8) FUNCTION arho(I,NRHO)
21  INTEGER , INTENT(IN) ::i,nrho
22  arho=1.0_r8/(nrho-1)*(i-1)
23  END FUNCTION arho
24 
25  REAL(R8) FUNCTION avpr(X,T)
26  REAL(R8) ,INTENT(IN) :: x,t
27  avpr=x
28  END FUNCTION avpr
29 
30  REAL(R8) FUNCTION dtavpr(X,T)
31  REAL(R8) ,INTENT(IN) :: x,t
32  dtavpr=0.0_r8
33  END FUNCTION dtavpr
34 
35  REAL(R8) FUNCTION davpr(X,T)
36  REAL(R8) ,INTENT(IN) :: x,t
37  davpr=1.0_r8
38  END FUNCTION davpr
39 
40  REAL(R8) FUNCTION ag1(X,T)
41  REAL(R8) ,INTENT(IN) :: x,t
42  ag1=1.
43  END FUNCTION ag1
44 
45  REAL(R8) FUNCTION dag1(X,T)
46  REAL(R8) ,INTENT(IN) :: x,t
47  dag1=0.0_r8
48  END FUNCTION dag1
49 
50  REAL(R8) FUNCTION dtag1(X,T)
51  REAL(R8) ,INTENT(IN) :: x,t
52  dtag1=0.0_r8
53  END FUNCTION dtag1
54 
55  REAL(R8) FUNCTION ag2(X,T)
56  REAL(R8) ,INTENT(IN) :: x,t
57  ag2=1.0_r8
58  END FUNCTION ag2
59 
60  REAL(R8) FUNCTION dag2(X,T)
61  REAL(R8) ,INTENT(IN) :: x,t
62  dag2=0.0_r8
63  END FUNCTION dag2
64 
65  REAL(R8) FUNCTION dtag2(X,T)
66  REAL(R8) ,INTENT(IN) :: x,t
67  dtag2=0.0_r8
68  END FUNCTION dtag2
69 
70  REAL(R8) FUNCTION ag3(X,T)
71  REAL(R8) ,INTENT(IN) :: x,t
72  ag3=1.0_r8
73  END FUNCTION ag3
74 
75  REAL(R8) FUNCTION dag3(X,T)
76  REAL(R8) ,INTENT(IN) :: x,t
77  dag3=0.0_r8
78  END FUNCTION dag3
79 
80  REAL(R8) FUNCTION afdia(X,T)
81  REAL(R8) ,INTENT(IN) :: x,t
82  afdia=1.0_r8+x
83  END FUNCTION afdia
84 
85  REAL(R8) FUNCTION dafdia(X,T)
86  REAL(R8) ,INTENT(IN) :: x,t
87  dafdia=1.0_r8
88  END FUNCTION dafdia
89 
90  REAL(R8) FUNCTION abt(T)
91  REAL(R8) ,INTENT(IN) :: t
92  abt=1.0_r8
93  END FUNCTION abt
94 
95  REAL(R8) FUNCTION dtabt(T)
96  REAL(R8) ,INTENT(IN) :: t
97  dtabt=0.0_r8
98  END FUNCTION dtabt
99 
100 
101 
102 
103 ! +++ ANALYTICAL PLASMA PROFILES:
104  REAL(R8) FUNCTION apsi(X,T)
105  REAL(R8) ,INTENT(IN) :: x,t
106  apsi=x**2*(1+.2_r8*sin(2*itm_pi*t))
107  END FUNCTION apsi
108 
109  REAL(R8) FUNCTION dtapsi(X,T)
110  REAL(R8) ,INTENT(IN) :: x,t
111  dtapsi=x**2*.2_r8*cos(2.0_r8*itm_pi*t)*2.0_r8*itm_pi
112  END FUNCTION dtapsi
113 
114  REAL(R8) FUNCTION dapsi(X,T)
115  REAL(R8) ,INTENT(IN) :: x,t
116  dapsi=2.0_r8*x*(1+.2_r8*sin(2*itm_pi*t))
117  END FUNCTION dapsi
118 
119  REAL(R8) FUNCTION ddapsi(X,T)
120  REAL(R8) ,INTENT(IN) :: x,t
121  ddapsi=2.0_r8*(1+.2_r8*sin(2*itm_pi*t))
122  END FUNCTION ddapsi
123 
124  REAL(R8) FUNCTION ani(IION,X,T)
125  REAL(R8) ,INTENT(IN) :: x,t
126  INTEGER, INTENT (IN) :: iion
127  ani=(1.e19_r8*(1.0_r8-x**2)+1.e18_r8)*(1+.2_r8*sin(2*itm_pi*t))
128  END FUNCTION ani
129 
130  REAL(R8) FUNCTION dani(IION,X,T)
131  REAL(R8) ,INTENT(IN) :: x,t
132  INTEGER, INTENT (IN) :: iion
133  dani=-x*1.e19_r8*2.0_r8*(1+.2_r8*sin(2*itm_pi*t))
134  END FUNCTION dani
135 
136  REAL(R8) FUNCTION ddani(IION,X,T)
137  REAL(R8) ,INTENT(IN) :: x,t
138  INTEGER, INTENT (IN) :: iion
139  ddani=-1.e19_r8*2.0_r8*(1+.2_r8*sin(2*itm_pi*t))
140  END FUNCTION ddani
141 
142  REAL(R8) FUNCTION dtani(IION,X,T)
143  REAL(R8) ,INTENT(IN) :: x,t
144  INTEGER, INTENT (IN) :: iion
145  dtani=(1.e19_r8*(1.0_r8-x**2)+1.e18_r8)*.2_r8*cos(2*itm_pi*t)*2.0_r8*itm_pi
146  END FUNCTION dtani
147 
148  REAL(R8) FUNCTION ati(IION,X,T)
149  REAL(R8) ,INTENT(IN) :: x,t
150  INTEGER, INTENT(IN ) :: iion
151  ati=(1.e6_r8*(1.0_r8-x**2)+1.e2_r8)*(1+.2_r8*sin(2*itm_pi*t))
152  END FUNCTION ati
153 
154  REAL(R8) FUNCTION dtati(IION,X,T)
155  REAL(R8) ,INTENT(IN) :: x,t
156  INTEGER, INTENT(IN ) :: iion
157  dtati=(1.e6_r8*(1.0_r8-x**2)+1.e2_r8)*.2_r8*cos(2*itm_pi*t)*2.0_r8*itm_pi
158  END FUNCTION dtati
159 
160  REAL(R8) FUNCTION dati(IION,X,T)
161  REAL(R8) ,INTENT(IN) :: x,t
162  INTEGER, INTENT(IN ) :: iion
163  dati=-2.0_r8*x*1.e6_r8*(1+.2_r8*sin(2*itm_pi*t))
164  END FUNCTION dati
165 
166  REAL(R8) FUNCTION ddati(IION,X,T)
167  REAL(R8) ,INTENT(IN) :: x,t
168  INTEGER, INTENT(IN ) :: iion
169  ddati=-2.0_r8*1.e6_r8*(1+.2_r8*sin(2*itm_pi*t))
170  END FUNCTION ddati
171 
172  REAL(R8) FUNCTION ate(X,T)
173  REAL(R8) ,INTENT(IN) :: x,t
174  ate=(1.2e6_r8*(1.0_r8-x**2)+1.e2_r8)*(1+.2_r8*sin(2*itm_pi*t))
175  END FUNCTION ate
176 
177  REAL(R8) FUNCTION date(X,T)
178  REAL(R8) ,INTENT(IN) :: x,t
179  date=-2.0_r8*x*1.2e6_r8*(1+.2_r8*sin(2*itm_pi*t))
180  END FUNCTION date
181 
182  REAL(R8) FUNCTION ddate(X,T)
183  REAL(R8) ,INTENT(IN) :: x,t
184  ddate=-2.0_r8*1.2e6_r8*(1+.2_r8*sin(2*itm_pi*t))
185  END FUNCTION ddate
186 
187  REAL(R8) FUNCTION dtate(X,T)
188  REAL(R8) ,INTENT(IN) :: x,t
189  dtate=(1.2e6_r8*(1.0_r8-x**2)+1.e2_r8)*.2_r8*cos(2*itm_pi*t)*2.0_r8*itm_pi
190  END FUNCTION dtate
191 
192  REAL(R8) FUNCTION avtor(IION,X,T)
193  REAL(R8) ,INTENT(IN) :: x,t
194  INTEGER, INTENT (IN) :: iion
195  avtor=1.e0_r8 +x**2*(1.0_r8+0.2_r8*sin(2.0_r8*itm_pi*t))
196  END FUNCTION avtor
197 
198  REAL(R8) FUNCTION davtor(IION,X,T)
199  REAL(R8) ,INTENT(IN) :: x,t
200  INTEGER, INTENT (IN) :: iion
201  davtor=2.0_r8*x*(1.0_r8+0.2_r8*sin(2.0_r8*itm_pi*t))
202  END FUNCTION davtor
203 
204  REAL(R8) FUNCTION ddavtor(IION,X,T)
205  REAL(R8) ,INTENT(IN) :: x,t
206  INTEGER, INTENT (IN) :: iion
207  ddavtor=2.0_r8*(1.0_r8+0.2_r8*sin(2.0_r8*itm_pi*t))
208  END FUNCTION ddavtor
209 
210  REAL(R8) FUNCTION dtavtor(IION,X,T)
211  REAL(R8) ,INTENT(IN) :: x,t
212  INTEGER, INTENT (IN) :: iion
213  dtavtor=x**2*0.2_r8*cos(2.0_r8*itm_pi*t)*2.0_r8*itm_pi
214  END FUNCTION dtavtor
215 
216 
217 
218 
219 ! +++ TRANSPORT:
220 
221  REAL(R8) FUNCTION aconvtor(IION,X,T)
222  REAL(R8) ,INTENT(IN) :: x,t
223  INTEGER, INTENT (IN) :: iion
224  aconvtor=0.05_r8*x
225  END FUNCTION aconvtor
226 
227  REAL(R8) FUNCTION daconvtor(IION,X,T)
228  REAL(R8) ,INTENT(IN) :: x,t
229  INTEGER, INTENT (IN) :: iion
230  daconvtor=0.05_r8
231  END FUNCTION daconvtor
232 
233  REAL(R8) FUNCTION advtor(IION,X,T)
234  REAL(R8) ,INTENT(IN) :: x,t
235  INTEGER, INTENT (IN) :: iion
236  advtor=0.1_r8*x
237  END FUNCTION advtor
238 
239  REAL(R8) FUNCTION dadvtor(IION,X,T)
240  REAL(R8) ,INTENT(IN) :: x,t
241  INTEGER, INTENT (IN) :: iion
242  dadvtor=0.1_r8
243  END FUNCTION dadvtor
244 
245  REAL(R8) FUNCTION avti(IION,X,T)
246  REAL(R8) ,INTENT(IN) :: x,t
247  INTEGER, INTENT (IN) :: iion
248  avti=0.05_r8*x
249  END FUNCTION avti
250 
251  REAL(R8) FUNCTION davti(IION,X,T)
252  REAL(R8) ,INTENT(IN) :: x,t
253  INTEGER, INTENT (IN) :: iion
254  davti=0.05_r8
255  END FUNCTION davti
256 
257  REAL(R8) FUNCTION akappae(IION,X,T)
258  REAL(R8) ,INTENT(IN) :: x,t
259  INTEGER, INTENT (IN) :: iion
260  akappae=0.2_r8
261  END FUNCTION akappae
262 
263  REAL(R8) FUNCTION dakappae(IION,X,T)
264  REAL(R8) ,INTENT(IN) :: x,t
265  INTEGER, INTENT (IN) :: iion
266  dakappae=0.0_r8
267  END FUNCTION dakappae
268 
269  REAL(R8) FUNCTION av(IION,X,T)
270  REAL(R8) ,INTENT(IN) :: x,t
271  INTEGER, INTENT (IN) :: iion
272  av=0.00_r8
273  END FUNCTION av
274 
275  REAL(R8) FUNCTION dav(IION,X,T)
276  REAL(R8) ,INTENT(IN) :: x,t
277  INTEGER, INTENT (IN) :: iion
278  dav=0.0_r8
279  END FUNCTION dav
280 
281  REAL(R8) FUNCTION ad(IION,X,T)
282  REAL(R8) ,INTENT(IN) :: x,t
283  INTEGER, INTENT (IN) :: iion
284  ad=0.04_r8
285  END FUNCTION ad
286 
287  REAL(R8) FUNCTION dad(IION,X,T)
288  REAL(R8) ,INTENT(IN) :: x,t
289  INTEGER, INTENT (IN) :: iion
290  dad=0.0_r8
291  END FUNCTION dad
292 
293  REAL(R8) FUNCTION akate(X,T)
294  REAL(R8) ,INTENT(IN) :: x,t
295  akate=0.2_r8
296  END FUNCTION akate
297 
298  REAL(R8) FUNCTION dakate(X,T)
299  REAL(R8) ,INTENT(IN) :: x,t
300  dakate=0.0_r8
301  END FUNCTION dakate
302 
303  REAL(R8) FUNCTION avte(X,T)
304  REAL(R8) ,INTENT(IN) :: x,t
305  avte=0.0_r8
306  END FUNCTION avte
307 
308  REAL(R8) FUNCTION davte(X,T)
309  REAL(R8) ,INTENT(IN) :: x,t
310  davte=0.0_r8
311  END FUNCTION davte
312 
313 
314  REAL(R8) FUNCTION asigma(X,T)
315  REAL(R8) ,INTENT(IN) :: x,t
316  asigma=1.0_r8
317  END FUNCTION asigma
318 
319 
320 
321 
322 ! +++ SOURCES:
323 
324  REAL(R8) FUNCTION acurr_imp(X,T)
325  REAL(R8) ,INTENT(IN) :: x,t
326  acurr_imp=0.0_r8
327  END FUNCTION acurr_imp
328 
329 
330  REAL(R8) FUNCTION aui_imp(IION,X,T)
331  REAL(R8) ,INTENT(IN) :: x,t
332  INTEGER, INTENT (IN) :: iion
333  aui_imp=0.0_r8
334  END FUNCTION aui_imp
335 
336  REAL(R8) FUNCTION aqi_imp(IION,X,T)
337  REAL(R8) ,INTENT(IN) :: x,t
338  INTEGER, INTENT (IN) :: iion
339  aqi_imp=0.0_r8
340  END FUNCTION aqi_imp
341 
342  REAL (R8) FUNCTION asi_imp(IION,X,T)
343  REAL (R8) ,INTENT(IN) ::x,t
344  INTEGER , INTENT(IN) :: iion
345  asi_imp=0.0_r8
346  END FUNCTION asi_imp
347 
348  REAL (R8) FUNCTION aqe_imp(X,T)
349  REAL (R8) ,INTENT(IN) :: x,t
350  aqe_imp=0.0_r8
351  END FUNCTION aqe_imp
352 
353 
354 
355 !==============================================================
356 !==============================================================
357 
358 
359 END MODULE analytical_functions
REAL(R8) function avpr(X, T)
REAL(R8) function dakate(X, T)
REAL(R8) function dadvtor(IION, X, T)
REAL(R8) function date(X, T)
REAL(R8) function dtati(IION, X, T)
REAL(R8) function ddati(IION, X, T)
REAL(R8) function davte(X, T)
REAL(R8) function aui_imp(IION, X, T)
REAL(R8) function ag3(X, T)
REAL(R8) function dtag2(X, T)
REAL(R8) function dakappae(IION, X, T)
REAL(R8) function dad(IION, X, T)
REAL(R8) function advtor(IION, X, T)
REAL(R8) function ag1(X, T)
REAL(R8) function abt(T)
REAL(R8) function apsi(X, T)
REAL(R8) function aconvtor(IION, X, T)
REAL(R8) function asigma(X, T)
REAL(R8) function av(IION, X, T)
REAL(R8) function davti(IION, X, T)
REAL(R8) function dtate(X, T)
REAL(R8) function ate(X, T)
REAL(R8) function dtag1(X, T)
REAL(R8) function arho(I, NRHO)
REAL(R8) function dav(IION, X, T)
REAL(R8) function dtapsi(X, T)
REAL(R8) function akate(X, T)
REAL(R8) function ddani(IION, X, T)
REAL(R8) function ad(IION, X, T)
REAL(R8) function dapsi(X, T)
REAL(R8) function daconvtor(IION, X, T)
REAL(R8) function ati(IION, X, T)
REAL(R8) function dtavtor(IION, X, T)
REAL(R8) function avtor(IION, X, T)
REAL(R8) function dtavpr(X, T)
REAL(R8) function dafdia(X, T)
REAL(R8) function dag3(X, T)
REAL(R8) function ddate(X, T)
REAL(R8) function avti(IION, X, T)
REAL(R8) function ag2(X, T)
REAL(R8) function davtor(IION, X, T)
REAL(R8) function akappae(IION, X, T)
REAL(R8) function ddavtor(IION, X, T)
REAL(R8) function acurr_imp(X, T)
REAL(R8) function avte(X, T)
REAL(R8) function afdia(X, T)
REAL(R8) function dag2(X, T)
REAL(R8) function asi_imp(IION, X, T)
subroutine dati(D, T)
Definition: ppplib.f:4383
REAL(R8) function dtabt(T)
Analytical functions for the calculation of the "analytic" solution.
REAL(R8) function ddapsi(X, T)
REAL(R8) function dag1(X, T)
REAL(R8) function davpr(X, T)
REAL(R8) function aqe_imp(X, T)
REAL(R8) function dani(IION, X, T)
REAL(R8) function dtani(IION, X, T)
REAL(R8) function aqi_imp(IION, X, T)
REAL(R8) function ani(IION, X, T)