3 #include "sll_assert.h"
4 #include "sll_errors.h"
5 #include "sll_working_precision.h"
83 sll_real64,
intent(in) :: x1
84 sll_real64,
dimension(:),
intent(in) :: params
92 sll_real64,
intent(in) :: x1
93 sll_real64,
intent(in) :: x2
94 sll_real64,
dimension(:),
intent(in) :: params
102 sll_real64,
intent(in) :: x1
103 sll_real64,
intent(in) :: x2
104 sll_real64,
intent(in) :: x3
105 sll_real64,
intent(in) :: x4
106 sll_real64,
dimension(:),
intent(in) :: params
116 sll_real64,
intent(in) :: x_1
117 sll_real64,
intent(in) :: x_2
118 sll_real64,
dimension(:),
intent(in) :: params
121 sll_real64 :: sigma_1
122 sll_real64 :: sigma_2
134 sll_assert(
size(params) >= 4)
140 exp(-0.5_f64*(x_1 - xc_1)**2/sigma_1**2 &
141 - 0.5_f64*(x_2 - xc_2)**2/sigma_2**2)
146 sll_real64,
intent(in) :: x_1
147 sll_real64,
intent(in) :: x_2
148 sll_real64,
dimension(:),
intent(in) :: params
159 sll_assert(
size(params) >= 2)
163 r = sqrt((x_1 - xc_1)**2 + (x_2 - xc_2)**2)
176 sll_real64,
intent(in) :: x_1
177 sll_real64,
intent(in) :: x_2
178 sll_real64,
dimension(:),
intent(in) :: params
188 sll_assert(
size(params) >= 2)
191 res = (sin(x_1) - a1)*(cos(x_2) - a2)
197 sll_real64,
intent(in) :: x_1
198 sll_real64,
intent(in) :: x_2
199 sll_real64,
dimension(:),
intent(in) :: params
202 sll_real64 :: cutx_value
203 sll_real64 :: cutf_value
212 sll_assert(
size(params) >= 2)
215 if (
size(params) >= 3)
then
216 cutx_value = params(3)
218 cutx_value = 0.25_f64
220 if (
size(params) >= 4)
then
221 cutf_value = params(4)
225 r = sqrt((x_1 - xc_1)**2 + (x_2 - xc_2)**2)
237 sll_real64,
intent(in) :: x_1
238 sll_real64,
intent(in) :: x_2
239 sll_real64,
dimension(:),
intent(in) :: params
245 if (
size(params) >= 1)
then
256 sll_real64,
intent(in) :: x_1
257 sll_real64,
intent(in) :: x_2
258 sll_real64,
dimension(:),
intent(in) :: params
260 res = -0.5_f64*(x_1**2 + x_2**2)
265 sll_real64,
intent(in) :: x_1
266 sll_real64,
intent(in) :: x_2
267 sll_real64,
dimension(:),
intent(in) :: params
278 sll_real64,
intent(in) :: x_1
279 sll_real64,
intent(in) :: x_2
280 sll_real64,
dimension(:),
intent(in) :: params
291 sll_real64,
intent(in) :: t
292 sll_real64,
intent(in) :: t0
293 sll_real64,
intent(in) :: x0_1
294 sll_real64,
intent(in) :: x0_2
295 sll_real64,
dimension(:),
intent(in) :: params
297 res = x0_1*cos(t - t0) - x0_2*sin(t - t0)
302 sll_real64,
intent(in) :: t
303 sll_real64,
intent(in) :: t0
304 sll_real64,
intent(in) :: x0_1
305 sll_real64,
intent(in) :: x0_2
306 sll_real64,
dimension(:),
intent(in) :: params
308 res = x0_1*sin(t - t0) + x0_2*cos(t - t0)
313 sll_real64,
intent(in) :: x_1
314 sll_real64,
intent(in) :: x_2
315 sll_real64,
dimension(:),
intent(in) :: params
319 if (
size(params) < 2)
then
320 sll_error(
"sll_f_translation_phi_initializer_2d",
"params should be of size >=2")
321 print *,
'size(params)',
size(params)
326 res = -a2*x_1 + a1*x_2
331 sll_real64,
intent(in) :: x_1
332 sll_real64,
intent(in) :: x_2
333 sll_real64,
dimension(:),
intent(in) :: params
340 if (
size(params) < 2)
then
341 sll_error(
"sll_f_translation_a1_initializer_2d",
"params should be of size >=2")
342 print *,
'size(params)',
size(params)
351 sll_real64,
intent(in) :: x_1
352 sll_real64,
intent(in) :: x_2
353 sll_real64,
dimension(:),
intent(in) :: params
360 if (
size(params) < 2)
then
361 sll_error(
"sll_f_translation_a2_initializer_2d",
"params should be of size >=2")
362 print *,
'size(params)',
size(params)
371 sll_real64,
intent(in) :: t
372 sll_real64,
intent(in) :: t0
373 sll_real64,
intent(in) :: x0_1
374 sll_real64,
intent(in) :: x0_2
375 sll_real64,
dimension(:),
intent(in) :: params
382 if (
size(params) < 2)
then
383 sll_error(
"sll_f_translation_a1_exact_charac_2d",
"params should be of size >=2")
384 print *,
'size(params)',
size(params)
388 res = x0_1 + (t - t0)*a1
393 sll_real64,
intent(in) :: t
394 sll_real64,
intent(in) :: t0
395 sll_real64,
intent(in) :: x0_1
396 sll_real64,
intent(in) :: x0_2
397 sll_real64,
dimension(:),
intent(in) :: params
404 if (
size(params) < 2)
then
405 sll_error(
"sll_f_translation_a2_exact_charac_2d",
"params should be of size >=2")
406 print *,
'size(params)',
size(params)
410 res = x0_2 + (t - t0)*a2
415 sll_real64,
intent(in) :: t
416 sll_real64,
dimension(:),
intent(in) :: params
425 sll_real64,
intent(in) :: x_1
426 sll_real64,
intent(in) :: x_2
427 sll_real64,
dimension(:),
intent(in) :: params
429 res = 2._f64*cos(0.5_f64*x_1)**2*cos(0.5_f64*x_2)**2
434 sll_real64,
intent(in) :: x_1
435 sll_real64,
intent(in) :: x_2
436 sll_real64,
dimension(:),
intent(in) :: params
438 res = -cos(0.5_f64*x_1)**2*sin(x_2)
443 sll_real64,
intent(in) :: x_1
444 sll_real64,
intent(in) :: x_2
445 sll_real64,
dimension(:),
intent(in) :: params
447 res = cos(0.5_f64*x_2)**2*sin(x_1)
452 sll_real64,
intent(in) :: t
453 sll_real64,
intent(in) :: t0
454 sll_real64,
intent(in) :: x0_1
455 sll_real64,
intent(in) :: x0_2
456 sll_real64,
dimension(:),
intent(in) :: params
459 dummy = x0_1 + x0_2 + t + t0
467 sll_real64,
intent(in) :: t
468 sll_real64,
intent(in) :: t0
469 sll_real64,
intent(in) :: x0_1
470 sll_real64,
intent(in) :: x0_2
471 sll_real64,
dimension(:),
intent(in) :: params
474 dummy = x0_1 + x0_2 + t + t0
482 sll_real64,
intent(in) :: t
483 sll_real64,
dimension(:),
intent(in) :: params
484 sll_real64 :: time_period
492 sll_assert(
size(params) >= 1)
493 time_period = params(1)
509 sll_real64,
intent(in) :: x
510 sll_real64,
intent(in) :: vx
512 sll_real64,
dimension(:),
intent(in) :: params
515 sll_real64 :: factor1
524 sll_assert(
size(params) >= 2)
528 if (
size(params) >= 3)
then
532 if (
size(params) >= 4)
then
537 factor1 = 1.0_f64/(sigma*sqrt(2.0_f64*
sll_p_pi))
539 (1.0_f64 + eps*cos(kx*x))*exp(-0.5_f64*(vx - v0)**2/sigma**2)
544 sll_real64,
intent(in) :: x
545 sll_real64,
intent(in) :: vx
547 sll_real64,
dimension(:),
intent(in) :: params
550 sll_real64 :: factor1
557 sll_assert(
size(params) >= 2)
560 factor1 = 1.0_f64/sqrt(2.0_f64*
sll_p_pi)
561 res = factor1*(1._f64 + eps*cos(kx*x)) &
562 *(0.9_f64*exp(-0.5_f64*vx**2) + 0.2_f64*exp(-0.5_f64*(vx - 4.5_f64)**2/0.5**2))
568 sll_real64,
intent(in) :: x
569 sll_real64,
intent(in) :: vx
571 sll_real64,
dimension(:),
intent(in) :: params
574 sll_real64 :: factor1
582 sll_assert(
size(params) >= 2)
585 factor1 = 1.0_f64/sqrt(2.0_f64*
sll_p_pi)
587 if (
size(params) >= 3)
then
590 if (
size(params) >= 4)
then
594 res = factor1*(1._f64 + eps*cos(kx*x))*vx**2*exp(-0.5_f64*vx**2/sigma**2)
599 sll_real64,
intent(in) :: r
600 sll_real64,
intent(in) :: theta
602 sll_real64,
dimension(:),
intent(in) :: params
605 sll_real64 :: r_minus
614 sll_assert(
size(params) >= 4)
620 if ((r >= r_minus) .and. (r <= r_plus))
then
621 res = (1.0_f64 + eps*cos(k_mode*theta))
630 sll_real64,
intent(in) :: x
631 sll_real64,
intent(in) :: y
633 sll_real64,
dimension(:),
intent(in) :: params
636 sll_real64 :: r_minus
647 sll_assert(
size(params) >= 4)
653 r = sqrt(x**2 + y**2)
660 if ((r >= r_minus) .and. (r <= r_plus))
then
661 res = (1.0_f64 + eps*cos(k_mode*theta))
670 sll_real64,
intent(in) :: x
671 sll_real64,
intent(in) :: vx
673 sll_real64,
dimension(:),
intent(in) :: params
676 sll_real64 :: x_minus
683 sll_assert(
size(params) >= 1)
686 x_plus = (x + 1.2_f64)/0.3_f64
687 x_minus = (x - 1.2_f64)/0.3_f64
688 res = 4._f64/sqrt(2._f64*
sll_p_pi*alpha)
689 res = res*(0.5_f64*erf(x_plus) - 0.5_f64*erf(x_minus))
690 res = res*exp(-vx**2/(2*alpha))
705 sll_real64,
intent(in) :: x
706 sll_real64,
intent(in) :: vx
708 sll_real64,
dimension(:),
intent(in) :: params
709 sll_real64 :: alpha, beta
717 sll_assert(
size(params) == 4)
724 res = res*exp(-beta*((vx*vx)*0.5_f64 - m*cos(x)))
725 res = res*(1.0_f64 + eps*cos(x))
731 sll_real64,
intent(in) :: x
732 sll_real64,
intent(in) :: y
734 sll_real64,
dimension(:),
intent(in) :: params
736 sll_real64 :: k_mode_x
737 sll_real64 :: k_mode_y
745 sll_assert(
size(params) >= 3)
750 res = sin(k_mode_y*y) + eps*cos(k_mode_x*x)
756 sll_real64,
intent(in) :: eta1
757 sll_real64,
intent(in) :: eta2
758 sll_real64,
dimension(:),
intent(in) :: params
762 sll_real64 :: eta1_min
763 sll_real64 :: eta2_min
764 sll_real64 :: eta1_max
765 sll_real64 :: eta2_max
772 sll_assert(
size(params) >= 4)
777 eta1n = (eta1 - eta1_min)/(eta1_max - eta1_min)
778 eta2n = (eta2 - eta2_min)/(eta2_max - eta2_min)
779 res = 4._f64*eta1n*(1._f64 - eta1n)*(1._f64 + 0.1_f64*sin(8.*
sll_p_pi*eta2n))
806 sll_real64,
intent(in) :: x
807 sll_real64,
intent(in) :: y
808 sll_real64,
intent(in) :: vx
809 sll_real64,
intent(in) :: vy
811 sll_real64,
dimension(:),
intent(in) :: params
835 beta*exp(-0.5_f64*((vx - vxc)**2 + (vy - vyc)**2))
851 sll_real64,
intent(in) :: x
852 sll_real64,
intent(in) :: y
853 sll_real64,
intent(in) :: vx
854 sll_real64,
intent(in) :: vy
856 sll_real64,
dimension(:),
intent(in) :: params
857 sll_real64 :: eta1_min
858 sll_real64 :: eta1_max
859 sll_real64 :: eta2_min
860 sll_real64 :: eta2_max
864 sll_real64 :: factor1
874 sll_assert(
size(params) >= 5)
881 kx = 2.*
sll_p_pi/(eta1_max - eta1_min)
894 factor1 = 1.0_f64/(2.0_f64*
sll_p_pi)
898 (1.0_f64 + eps*cos(kx*x))*exp(-0.5_f64*(vx**2 + vy**2))
903 sll_real64,
intent(in) :: x
904 sll_real64,
intent(in) :: y
905 sll_real64,
intent(in) :: vx
906 sll_real64,
intent(in) :: vy
907 sll_real64,
dimension(:),
intent(in) :: params
913 sll_real64 :: eps_ell
914 sll_real64 :: factor1
923 sll_assert(
size(params) >= 3)
930 factor1 = eps*cos(kx*x + ky*y)
931 if (
size(params) >= 6)
then
936 factor1 = factor1 + eps_ell*cos(ellx*x + elly*y)
938 factor1 = 1._f64 + factor1
939 res = (1.0_f64/(2.0*
sll_p_pi))*factor1*exp(-0.5_f64*(vx**2 + vy**2))
950 sll_real64,
intent(in) :: x
951 sll_real64,
intent(in) :: y
952 sll_real64,
intent(in) :: vx
953 sll_real64,
intent(in) :: vy
954 sll_real64,
dimension(:),
intent(in) :: params
960 sll_real64 :: eps_ell
961 sll_real64 :: factor1
970 sll_assert(
size(params) >= 3)
976 factor1 = eps*cos(kx*x)*cos(ky*y)
978 if (
size(params) >= 6)
then
982 factor1 = factor1 + eps_ell*cos(ellx*x)*cos(elly*y)
985 factor1 = 1.0_f64 + factor1
986 res = (1.0_f64/(2.0_f64*
sll_p_pi))*factor1*exp(-0.5_f64*(vx**2 + vy**2))
1005 sll_real64,
intent(in) :: x
1006 sll_real64,
intent(in) :: y
1007 sll_real64,
intent(in) :: vx
1008 sll_real64,
intent(in) :: vy
1009 sll_real64,
dimension(:),
intent(in) :: params
1014 sll_real64 :: sigmax1
1015 sll_real64 :: sigmax2
1016 sll_real64 :: sigmay
1019 sll_real64 :: factor
1021 sll_assert(
size(params) >= 8)
1032 factor = 1.0_f64/(2.0_f64*
sll_p_pi*sigmay)
1035 (1.0_f64 + eps*(cos(kx*x) + cos(ky*y)))*exp(-0.5_f64*(vy/sigmay)**2)* &
1036 ((1 - delta)/sigmax1*exp(-0.5_f64*(vx/sigmax1)**2) + &
1037 delta/sigmax2*exp(-0.5_f64*((vx - vx2)/sigmax2)**2))
1043 sll_real64,
intent(in) :: x
1044 sll_real64,
intent(in) :: y
1045 sll_real64,
intent(in) :: vx
1046 sll_real64,
intent(in) :: vy
1049 sll_real64,
dimension(:),
intent(in) :: params
1050 sll_real64 :: eta1_min
1051 sll_real64 :: eta1_max
1061 eta1_min = params(1)
1062 eta1_max = params(2)
1064 kx = 2.0_f64*
sll_p_pi/(eta1_max - eta1_min)
1074 sll_real64,
intent(in) :: x
1075 sll_real64,
intent(in) :: y
1076 sll_real64,
intent(in) :: vx
1077 sll_real64,
intent(in) :: vy
1080 sll_real64,
dimension(:),
intent(in) :: params
1081 sll_real64 :: eta2_min
1082 sll_real64 :: eta2_max
1085 eta2_min = params(3)
1086 eta2_max = params(4)
1088 kx = 2.0_f64*
sll_p_pi/(eta2_max - eta2_min)
1104 sll_real64,
intent(in) :: x
1105 sll_real64,
intent(in) :: y
1106 sll_real64,
intent(in) :: vx
1107 sll_real64,
intent(in) :: vy
1110 sll_real64,
dimension(:),
intent(in) :: params
1111 sll_real64 :: eta1_min
1112 sll_real64 :: eta1_max
1113 sll_real64 :: kx, v, hh
1121 eta1_min = params(1)
1122 eta1_max = params(2)
1124 kx = 2.*
sll_p_pi/(eta1_max - eta1_min)
1129 if ((v .gt. 1) .or. (v .lt. -1)) hh = 0.0_f64
1139 sll_real64,
intent(in) :: x
1140 sll_real64,
intent(in) :: y
1141 sll_real64,
intent(in) :: vx
1142 sll_real64,
intent(in) :: vy
1145 sll_real64,
dimension(:),
intent(in) :: params
1165 if ((v .gt. 1) .or. (v .lt. -1)) hh = 0.0_f64
1174 sll_real64,
intent(in) :: x
1175 sll_real64,
intent(in) :: y
1176 sll_real64,
intent(in) :: vx
1177 sll_real64,
intent(in) :: vy
1180 sll_real64,
dimension(:),
intent(in) :: params
1181 sll_real64 :: eta1_min
1182 sll_real64 :: eta1_max
1183 sll_real64 :: kx, v, hh, xx
1191 eta1_min = params(1)
1192 eta1_max = params(2)
1194 kx = 2.*
sll_p_pi/(eta1_max - eta1_min)
1198 xx = x - t*vx + t*t/2
1200 if ((v .gt. 1) .or. (v .lt. -1)) hh = 0.0_f64
1207 sll_real64,
intent(in) :: x
1208 sll_real64,
intent(in) :: y
1209 sll_real64,
intent(in) :: vx
1210 sll_real64,
intent(in) :: vy
1213 sll_real64,
dimension(:),
intent(in) :: params
1214 sll_real64 :: eta2_min
1215 sll_real64 :: eta2_max
1216 sll_real64 :: ky, v, hh, yy
1224 eta2_min = params(3)
1225 eta2_max = params(4)
1227 ky = 2.*
sll_p_pi/(eta2_max - eta2_min)
1231 yy = y - t*vy + t*t/2
1233 if ((v .gt. 1) .or. (v .lt. -1)) hh = 0.0_f64
1277 sll_real64,
intent(in) :: x
1278 sll_real64,
intent(in) :: y
1279 sll_real64,
intent(in) :: vx
1280 sll_real64,
intent(in) :: vy
1283 sll_real64,
dimension(:),
intent(in) :: params
1284 sll_real64 :: eta1_min
1285 sll_real64 :: eta1_max
1286 sll_real64 :: eta2_min
1287 sll_real64 :: eta2_max
1291 sll_real64 :: factor1
1300 eta1_min = params(1)
1301 eta1_max = params(2)
1302 eta2_min = params(3)
1303 eta2_max = params(4)
1308 factor1 = 1.0_f64/sqrt((2.0_f64*
sll_p_pi))
1311 (1.0_f64 + eps*cos(kx*x))*exp(-0.5_f64*(vx**2))
1316 sll_real64,
intent(in) :: x
1317 sll_real64,
intent(in) :: y
1318 sll_real64,
intent(in) :: vx
1319 sll_real64,
intent(in) :: vy
1322 sll_real64,
dimension(:),
intent(in) :: params
1323 sll_real64 :: eta1_min
1324 sll_real64 :: eta1_max
1325 sll_real64 :: eta2_min
1326 sll_real64 :: eta2_max
1330 sll_real64 :: factor1
1333 dummy = x + y + vx + vy
1342 eta1_min = params(1)
1343 eta1_max = params(2)
1344 eta2_min = params(3)
1345 eta2_max = params(4)
1351 factor1 = 1.0_f64/sqrt((2.0*
sll_p_pi))
1354 (1.0_f64 + eps*cos(kx*x))*(exp(-0.5_f64*((vx - v0)**2)) + &
1355 exp(-0.5_f64*((vx + v0)**2)))
1360 sll_real64,
intent(in) :: x
1361 sll_real64,
intent(in) :: y
1362 sll_real64,
intent(in) :: vx
1363 sll_real64,
intent(in) :: vy
1366 sll_real64,
dimension(:),
intent(in) :: params
1367 sll_real64 :: eta1_min
1368 sll_real64 :: eta1_max
1369 sll_real64 :: eta2_min
1370 sll_real64 :: eta2_max
1374 sll_real64 :: factor1
1383 eta1_min = params(1)
1384 eta1_max = params(2)
1385 eta2_min = params(3)
1386 eta2_max = params(4)
1391 factor1 = 1.0_f64/sqrt((2.0*
sll_p_pi))
1393 if ((x .lt. 1.0_f64) .and. (x .gt. -1.0_f64))
then
1400 sll_real64,
intent(in) :: x
1401 sll_real64,
intent(in) :: y
1402 sll_real64,
intent(in) :: vx
1403 sll_real64,
intent(in) :: vy
1408 sll_real64,
dimension(:),
intent(in) :: params
1409 sll_real64 :: eta1_min
1410 sll_real64 :: eta1_max
1411 sll_real64 :: eta2_min
1412 sll_real64 :: eta2_max
1413 sll_real64 :: a1_xmin, a1_xmax, a1_ymin, a1_ymax, x1mil
1414 sll_real64 :: a2_xmin, a2_xmax, a2_ymin, a2_ymax, x2mil
1417 sll_real64 :: factor1
1426 eta1_min = params(1)
1427 eta1_max = params(2)
1428 eta2_min = params(3)
1429 eta2_max = params(4)
1446 factor1 = 1.0_f64/sqrt((2.0*
sll_p_pi))**2
1454 if ((x .le. a1_xmax) .and. (x .ge. a1_xmin) .and. (y .le. a1_ymax) .and. (y .ge. a1_ymin))
then
1460 if ((x .le. a2_xmax) .and. (x .ge. a2_xmin) .and. (y .le. a2_ymax) .and. (y .ge. a2_ymin))
then
1508 sll_real64,
intent(in) :: x
1509 sll_real64,
intent(in) :: y
1510 sll_real64,
intent(in) :: vx
1511 sll_real64,
intent(in) :: vy
1514 sll_real64,
dimension(:),
intent(in) :: params
1515 sll_real64 :: eta1_min
1516 sll_real64 :: eta1_max
1517 sll_real64 :: eta2_min
1518 sll_real64 :: eta2_max
1522 sll_real64 :: factor1
1531 eta1_min = params(1)
1532 eta1_max = params(2)
1533 eta2_min = params(3)
1534 eta2_max = params(4)
1537 ky = 2.*
sll_p_pi/(eta2_max - eta2_min)
1538 factor1 = 1.0_f64/sqrt((2.0*
sll_p_pi))
1541 (1.0_f64 + eps*cos(ky*y))*exp(-0.5_f64*(vy**2))
1546 sll_real64,
intent(in) :: x
1547 sll_real64,
intent(in) :: y
1548 sll_real64,
intent(in) :: vx
1549 sll_real64,
intent(in) :: vy
1551 sll_real64,
dimension(:),
intent(in) :: params
1552 sll_real64 :: eta1_min
1553 sll_real64 :: eta1_max
1554 sll_real64 :: eta2_min
1555 sll_real64 :: eta2_max
1560 sll_real64 :: factor1
1568 eta1_min = params(1)
1569 eta1_max = params(2)
1570 eta2_min = params(3)
1571 eta2_max = params(4)
1574 kx = 2.*
sll_p_pi/(eta1_max - eta1_min)
1578 (1.0_f64 + eps*cos(kx*x)*cos(ky*y))*exp(-0.5_f64*(vx**2 + vy**2))
1588 sll_real64,
intent(in) :: x1
1589 sll_real64,
intent(in) :: x2
1590 sll_real64,
intent(in) :: x3
1591 sll_real64,
intent(in) :: v1
1592 sll_real64,
dimension(:),
intent(in) :: params
1594 sll_real64 :: epsilon
1596 sll_real64 :: factor1
1612 (1.0_f64 + epsilon*cos(kx*x1))*exp(-0.5_f64*(v1**2))
1644 sll_real64,
intent(in) :: x
1645 sll_real64,
intent(in) :: y
1646 sll_real64,
intent(in) :: vx
1647 sll_real64,
intent(in) :: vy
1649 sll_real64,
dimension(:),
intent(in) :: params
1672 val = alpha*exp(-0.5_f64*((x - xc)**2 + (y - yc)**2)) + &
1673 beta*exp(-0.5_f64*((vx - vxc)**2 + (vy - vyc)**2))
1710 sll_real64,
intent(in) :: x
1711 sll_real64,
intent(in) :: y
1712 sll_real64,
intent(in) :: vx
1713 sll_real64,
intent(in) :: vy
1715 sll_real64,
dimension(:),
intent(in) :: params
1716 sll_real64 :: eta1_min, eta1_max
1717 sll_real64 :: eta2_min, eta2_max
1722 sll_real64 :: kx, ky
1732 eta1_min = params(1)
1733 eta1_max = params(2)
1734 eta2_min = params(3)
1735 eta2_max = params(4)
1740 kx = 2.*
sll_p_pi/(eta1_max - eta1_min)
1741 ky = 2.*
sll_p_pi/(eta2_max - eta2_min)
1743 val = beta*(1.0_f64 + alpha*cos(kx*x)*cos(ky*y)) &
1744 *exp(-0.5*((vx - vxc)**2 + (vy - vyc)**2)) &
1783 sll_real64,
intent(in) :: x
1784 sll_real64,
intent(in) :: y
1785 sll_real64,
intent(in) :: vx
1786 sll_real64,
intent(in) :: vy
1788 sll_real64,
dimension(:),
intent(in) :: params
1789 sll_real64 :: eta1_min, eta1_max
1790 sll_real64 :: eta2_min, eta2_max
1795 sll_real64 :: kx, ky
1805 eta1_min = params(1)
1806 eta1_max = params(2)
1807 eta2_min = params(3)
1808 eta2_max = params(4)
1813 kx = 2.*
sll_p_pi/(eta1_max - eta1_min)
1814 ky = 2.*
sll_p_pi/(eta2_max - eta2_min)
1816 val = beta*(1.0_f64 + alpha*(cos(kx*x) + cos(ky*y))) &
1817 *exp(-0.5*((vx - vxc)**2 + (vy - vyc)**2)) &
1841 sll_real64,
intent(in) :: x
1842 sll_real64,
intent(in) :: y
1843 sll_real64,
intent(in) :: vx
1844 sll_real64,
intent(in) :: vy
1846 sll_real64,
dimension(:),
intent(in) :: params
1849 sll_real64 :: xc, yc, radius
1850 sll_real64 :: vt, xt, n0
1869 val = n0*exp(-0.5*(radius**2*(x - xc)**2 + radius**2*(y - yc)**2)/(xt*xt)) &
1871 *exp(-0.5*((vx - vxc)**2 + (vy - vyc)**2)/(vt*vt))/(2*
sll_p_pi*vt**2)
1878 sll_real64,
intent(in) :: x
1879 sll_real64,
intent(in) :: vx
1881 sll_real64,
dimension(:),
intent(in) :: params
1884 sll_real64 :: factor1
1905 sll_assert(
size(params) >= 9)
1908 ns = int(params(3), i32)
1918 dvb = (vb2 - vb1)/(ns - 1)
1920 sum = sum + exp(-(vx - vj)**2/(2.0_f64*vtb**2*sigma**2))
1923 factor1 = 1.0_f64/(sigma*sqrt(2.0_f64*
sll_p_pi))
1926 *((1.0_f64 - db)*exp(-(vx - ve)**2/(2.0_f64*sigma**2)) + db*sum/(ns*vtb))
1933 sll_real64,
intent(in) :: x
1934 sll_real64,
intent(in) :: vx
1936 sll_real64,
dimension(:),
intent(in) :: params
1939 sll_real64 :: factor1
1960 sll_assert(
size(params) >= 9)
1963 ns = int(params(3), i32)
1973 dvb = (vb2 - vb1)/(ns - 1)
1975 sum = sum + exp(-(vx - vj)**2/(2.0_f64*vtb**2*sigma**2))
1978 factor1 = 1.0_f64/(sigma*sqrt(2.0_f64*
sll_p_pi))
1982 *((1.0_f64 - db)*exp(-(vx - ve)**2/(2.0_f64*sigma**2)) + db*sum/(ns*vtb))
1989 sll_real64,
intent(in) :: x
1990 sll_real64,
intent(in) :: vx
1992 sll_real64,
dimension(:),
intent(in) :: params
1995 sll_real64 :: factor1
2017 sll_assert(
size(params) >= 10)
2020 ns = int(params(3), i32)
2031 dvb = (vb2 - vb1)/(ns - 1)
2033 sum = sum + exp(-(vx - vj)**2/(2.0_f64*vtb**2*sigma**2))
2036 factor1 = 1.0_f64/(sigma*sqrt(2.0_f64*
sll_p_pi))
2040 *((1.0_f64 - db)*exp(-(vx - ve)**2/(2.0_f64*sigma**2)) + db*sum/(ns*vtb))
real(kind=f64) function, public sll_f_sdf_a1_exact_charac_2d(t, t0, x0_1, x0_2, params)
real(kind=f64) function, public sll_f_test_y_transport_initializer_v1v2x1x2(vx, vy, x, y, params)
real(kind=f64) function, public sll_f_landau_mode_initializer_cos_sum_4d(x, y, vx, vy, params)
real(kind=f64) function, public sll_f_test_vy_transport_initializer_v1v2x1x2(vx, vy, x, y, params)
real(kind=f64) function, public sll_f_sdf_phi_initializer_2d(x_1, x_2, params)
real(kind=f64) function, public sll_f_gaussian_beam_initializer_4d(x, y, vx, vy, params)
real(kind=f64) function, public sll_f_diocotron_initializer_2d(r, theta, params)
real(kind=f64) function, public sll_f_twostream_1d_xvx_initializer_v1v2x1x2(vx, vy, x, y, params)
real(kind=f64) function, public sll_f_gaussian_initializer_2d(x_1, x_2, params)
real(kind=f64) function, public sll_f_dsg_2d(eta1, eta2, params)
real(kind=f64) function, public sll_f_landau_initializer_2d(x, vx, params)
real(kind=f64) function sll_landau_initializer_dk_test_4d(v1, x1, x2, x3, params)
real(kind=f64) function, public sll_f_cos_bell_initializer_2d(x_1, x_2, params)
real(kind=f64) function, public sll_f_langmuir_parameter_pert_initializer_2d(x, vx, params)
Initializer for Langmuir function with perturbation given as parameter.
real(kind=f64) function, public sll_f_galaxy_1d_xvx_initializer_v1v2x1x2(vx, vy, x, y, params)
real(kind=f64) function, public sll_f_hmf_initializer_2d(x, vx, params)
Function to intialize distribution function for the Vlasov-HMF model.
real(kind=f64) function sll_periodic_periodic_gaussian2002_initializer_4d(x, y, vx, vy, params)
real(kind=f64) function, public sll_f_landau_2d_initializer_v1v2x1x2(vx, vy, x, y, params)
real(kind=f64) function, public sll_f_cos_sin_initializer_2d(x_1, x_2, params)
real(kind=f64) function, public sll_f_langmuir_gaussxv_initializer_2d(x, vx, params)
Initializer for Langmuir function with Gaussian deviate perturbation.
real(kind=f64) function, public sll_f_rotation_a1_initializer_2d(x_1, x_2, params)
real(kind=f64) function, public sll_f_two_stream_instability_initializer_2d(x, vx, params)
real(kind=f64) function, public sll_f_cos_bell0_initializer_2d(x_1, x_2, params)
real(kind=f64) function, public sll_f_bump_on_tail_initializer_2d(x, vx, params)
real(kind=f64) function, public sll_f_translation_a2_exact_charac_2d(t, t0, x0_1, x0_2, params)
real(kind=f64) function, public sll_f_test_vx_transport_initializer_v1v2x1x2(vx, vy, x, y, params)
real(kind=f64) function, public sll_f_periodic_gaussian_initializer_4d(x, y, vx, vy, params)
real(kind=f64) function, public sll_f_rotation_a2_exact_charac_2d(t, t0, x0_1, x0_2, params)
real(kind=f64) function, public sll_f_galaxy_2d_initializer_v1v2x1x2(vx, vy, x, y, params)
real(kind=f64) function, public sll_f_sdf_a2_exact_charac_2d(t, t0, x0_1, x0_2, params)
real(kind=f64) function, public sll_f_translation_a1_exact_charac_2d(t, t0, x0_1, x0_2, params)
real(kind=f64) function, public sll_f_landau_1d_xvx_initializer_v1v2x1x2(vx, vy, x, y, params)
real(kind=f64) function, public sll_f_sdf_a1_initializer_2d(x_1, x_2, params)
real(kind=f64) function, public sll_f_diocotron_initializer_2d2(x, y, params)
real(kind=f64) function, public sll_f_test_yvy_transport_initializer_v1v2x1x2(vx, vy, x, y, params)
real(kind=f64) function, public sll_f_constant_time_initializer_1d(t, params)
real(kind=f64) function, public sll_f_sdf_a2_initializer_2d(x_1, x_2, params)
real(kind=f64) function, public sll_f_test_xvx_transport_initializer_v1v2x1x2(vx, vy, x, y, params)
real(kind=f64) function, public sll_f_beam_initializer_2d(x, vx, params)
real(kind=f64) function, public sll_f_one_initializer_2d(x_1, x_2, params)
real(kind=f64) function, public sll_f_landau_1d_yvy_initializer_v1v2x1x2(vx, vy, x, y, params)
real(kind=f64) function, public sll_f_landau_mode_initializer_4d(x, y, vx, vy, params)
real(kind=f64) function, public sll_f_khp1_2d(x, y, params)
real(kind=f64) function, public sll_f_rotation_a2_initializer_2d(x_1, x_2, params)
real(kind=f64) function, public sll_f_landau_initializer_4d(x, y, vx, vy, params)
real(kind=f64) function, public sll_f_rotation_phi_initializer_2d(x_1, x_2, params)
real(kind=f64) function, public sll_f_test_x_transport_initializer_v1v2x1x2(vx, vy, x, y, params)
real(kind=f64) function, public sll_f_langmuir_cos_initializer_2d(x, vx, params)
Initializer for Langmuir function with cosine perturbation.
real(kind=f64) function, public sll_f_bump_on_tail_initializer_4d(x, y, vx, vy, params)
real(kind=f64) function, public sll_f_translation_phi_initializer_2d(x_1, x_2, params)
real(kind=f64) function, public sll_f_sdf_time_initializer_1d(t, params)
real(kind=f64) function sll_periodic_periodic_gaussian2009_initializer_4d(x, y, vx, vy, params)
real(kind=f64) function, public sll_f_rotation_a1_exact_charac_2d(t, t0, x0_1, x0_2, params)
real(kind=f64) function, public sll_f_translation_a2_initializer_2d(x_1, x_2, params)
real(kind=f64) function sll_gaussian_initializer_4d(x, y, vx, vy, params)
real(kind=f64) function, public sll_f_translation_a1_initializer_2d(x_1, x_2, params)
Fortran module where set some physical and mathematical constants.
real(kind=f64), parameter, public sll_p_pi
sll_m_gaussian random generator
real(kind=f64) function, public sll_f_gaussian_deviate()
Returns a value of a random variable in ONE dimension following the Gaussian probability density with...
Module to select the kind parameter.