17 #include "sll_working_precision.h"
18 #include "sll_errors.h"
35 sll_real64,
parameter ::
inv_6 = 1._f64/6._f64
36 sll_real64,
parameter ::
inv_12 = 1._f64/12._f64
37 sll_real64,
parameter ::
inv_24 = 1._f64/24._f64
38 sll_real64,
parameter ::
inv_36 = 1._f64/36._f64
39 sll_real64,
parameter ::
inv_48 = 1._f64/48._f64
40 sll_real64,
parameter ::
inv_120 = 1._f64/120._f64
41 sll_real64,
parameter ::
inv_144 = 1._f64/144._f64
42 sll_real64,
parameter ::
inv_240 = 1._f64/240._f64
43 sll_real64,
parameter ::
inv_576 = 1._f64/576._f64
44 sll_real64,
parameter ::
inv_720 = 1._f64/720._f64
45 sll_real64,
parameter ::
inv_1440 = 1._f64/1440._f64
46 sll_real64,
parameter ::
inv_5040 = 1._f64/5040._f64
47 sll_real64,
parameter ::
inv_14400 = 1._f64/14400._f64
48 sll_real64,
parameter ::
inv_17280 = 1._f64/17280._f64
49 sll_real64,
parameter ::
inv_30240 = 1._f64/30240._f64
50 sll_real64,
parameter ::
inv_40320 = 1._f64/40320._f64
51 sll_real64,
parameter ::
inv_80640 = 1._f64/80640._f64
60 sll_real64,
intent(out) :: pp(4)
61 sll_real64,
intent(in) :: p
63 pp(1) = -p*(p - 1._f64)*(p - 2._f64)*
inv_6
64 pp(2) = (p*p - 1._f64)*(p - 2._f64)*0.5_f64
65 pp(3) = -p*(p + 1._f64)*(p - 2._f64)*0.5_f64
66 pp(4) = p*(p*p - 1.0_f64)*
inv_6
73 sll_real64,
intent(in) :: fm1
74 sll_real64,
intent(in) :: f0
75 sll_real64,
intent(in) :: f1
76 sll_real64,
intent(in) :: f2
77 sll_real64,
intent(in) :: p
91 sll_real64,
intent(in) :: fi(:)
92 sll_real64,
intent(out) :: fp(:)
93 sll_real64,
intent(in) :: p
94 sll_int32,
intent(in) :: index_shift
101 do i = max(2 - index_shift, 1), min(n - 2 - index_shift, n)
102 fp(i) = pp(1)*fi(i - 1 + index_shift) &
103 + pp(2)*fi(i + index_shift) &
104 + pp(3)*fi(i + 1 + index_shift) &
105 + pp(4)*fi(i + 2 + index_shift)
111 sll_real64,
intent(out) :: pp(6)
112 sll_real64,
intent(in) :: p
114 pp(1) = -p*(p*p - 1._f64)*(p - 2._f64)*(p - 3._f64)*
inv_120
115 pp(2) = p*(p - 1._f64)*(p*p - 4._f64)*(p - 3._f64)*
inv_24
116 pp(3) = -(p*p - 1._f64)*(p*p - 4._f64)*(p - 3._f64)*
inv_12
117 pp(4) = p*(p + 1._f64)*(p*p - 4._f64)*(p - 3._f64)*
inv_12
118 pp(5) = -p*(p*p - 1._f64)*(p + 2._f64)*(p - 3.0_f64)*
inv_24
119 pp(6) = p*(p*p - 1._f64)*(p*p - 4._f64)*
inv_120
127 sll_real64,
intent(in) :: fm2
128 sll_real64,
intent(in) :: fm1
129 sll_real64,
intent(in) :: f0
130 sll_real64,
intent(in) :: f1
131 sll_real64,
intent(in) :: f2
132 sll_real64,
intent(in) :: f3
133 sll_real64,
intent(in) :: p
149 sll_real64,
intent(in) :: fi(:)
150 sll_real64,
intent(out) :: fp(:)
151 sll_real64,
intent(in) :: p
152 sll_int32,
intent(in) :: index_shift
159 do i = max(3 - index_shift, 1), min(n - 3 - index_shift, n)
160 fp(i) = pp(1)*fi(i - 2 + index_shift) &
161 + pp(2)*fi(i - 1 + index_shift) &
162 + pp(3)*fi(i + index_shift) &
163 + pp(4)*fi(i + 1 + index_shift) &
164 + pp(5)*fi(i + 2 + index_shift) &
165 + pp(6)*fi(i + 3 + index_shift)
171 sll_real64,
intent(out) :: pp(8)
172 sll_real64,
intent(in) :: p
174 pp(1) = -p*(p - 3)*(p - 4)*(p**2 - 4)*(p**2 - 1)*
inv_5040
175 pp(2) = p*(p - 2)*(p - 4)*(p**2 - 9)*(p**2 - 1)*
inv_720
176 pp(3) = -p*(p - 1)*(p - 4)*(p**2 - 9)*(p**2 - 4)*
inv_240
177 pp(4) = (p - 4)*(p**2 - 9)*(p**2 - 4)*(p**2 - 1)*
inv_144
178 pp(5) = -(p + 1)*p*(p - 4)*(p**2 - 9)*(p**2 - 4)*
inv_144
179 pp(6) = (p + 2)*p*(p - 4)*(p**2 - 9)*(p**2 - 1)*
inv_240
180 pp(7) = -(p + 3)*p*(p - 4)*(p**2 - 4)*(p**2 - 1)*
inv_720
181 pp(8) = p*(p**2 - 9)*(p**2 - 4)*(p**2 - 1)*
inv_5040
185 function lagr_8pt(fm3, fm2, fm1, f0, f1, f2, f3, f4, p)
187 sll_real64,
intent(in) :: fm3
188 sll_real64,
intent(in) :: fm2
189 sll_real64,
intent(in) :: fm1
190 sll_real64,
intent(in) :: f0
191 sll_real64,
intent(in) :: f1
192 sll_real64,
intent(in) :: f2
193 sll_real64,
intent(in) :: f3
194 sll_real64,
intent(in) :: f4
195 sll_real64,
intent(in) :: p
213 sll_real64,
intent(in) :: fi(:)
214 sll_real64,
intent(out) :: fp(:)
215 sll_real64,
intent(in) :: p
216 sll_int32,
intent(in) :: index_shift
223 do i = max(4 - index_shift, 1), min(n - 4 - index_shift, n)
224 fp(i) = pp(1)*fi(i - 3 + index_shift) &
225 + pp(2)*fi(i - 2 + index_shift) &
226 + pp(3)*fi(i - 1 + index_shift) &
227 + pp(4)*fi(i + index_shift) &
228 + pp(5)*fi(i + 1 + index_shift) &
229 + pp(6)*fi(i + 2 + index_shift) &
230 + pp(7)*fi(i + 3 + index_shift) &
231 + pp(8)*fi(i + 4 + index_shift)
240 sll_real64,
intent(out) :: pp(3)
241 sll_real64,
intent(in) :: p
243 pp(1) = p*(p - 1._f64)*0.5_f64
245 pp(3) = p*(p + 1._f64)*0.5_f64
252 sll_real64,
intent(in) :: fm1
253 sll_real64,
intent(in) :: f0
254 sll_real64,
intent(in) :: f1
255 sll_real64,
intent(in) :: p
268 sll_real64,
intent(in) :: fi(:)
269 sll_real64,
intent(out) :: fp(:)
270 sll_real64,
intent(in) :: p
278 fp(i) = pp(1)*fi(i - 1) &
287 sll_real64,
intent(out) :: pp(5)
288 sll_real64,
intent(in) :: p
290 pp(1) = (p*p - 1._f64)*p*(p - 2._f64)*
inv_24
291 pp(2) = -(p - 1._f64)*p*(p*p - 4._f64)*
inv_6
292 pp(3) = (p*p - 1._f64)*(p*p - 4._f64)*0.25_f64
293 pp(4) = -(p + 1._f64)*p*(p*p - 4._f64)*
inv_6
294 pp(5) = (p*p - 1._f64)*p*(p + 2._f64)*
inv_24
301 sll_real64,
intent(in) :: fm2
302 sll_real64,
intent(in) :: fm1
303 sll_real64,
intent(in) :: f0
304 sll_real64,
intent(in) :: f1
305 sll_real64,
intent(in) :: f2
306 sll_real64,
intent(in) :: p
321 sll_real64,
intent(in) :: fi(:)
322 sll_real64,
intent(out) :: fp(:)
323 sll_real64,
intent(in) :: p
331 fp(i) = pp(1)*fi(i - 2) &
342 sll_real64,
intent(out) :: pp(7)
343 sll_real64,
intent(in) :: p
345 pp(1) = p*(p - 3._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_720
346 pp(2) = -p*(p - 2._f64)*(p**2 - 9._f64)*(p**2 - 1._f64)*
inv_120
347 pp(3) = p*(p - 1._f64)*(p**2 - 9._f64)*(p**2 - 4._f64)*
inv_48
348 pp(4) = -(p**2 - 9._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_36
349 pp(5) = (p + 1._f64)*p*(p**2 - 9._f64)*(p**2 - 4._f64)*
inv_48
350 pp(6) = -(p + 2._f64)*p*(p**2 - 9._f64)*(p**2 - 1._f64)*
inv_120
351 pp(7) = (p + 3._f64)*p*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_720
356 function lagr_7pt(fm3, fm2, fm1, f0, f1, f2, f3, p)
359 sll_real64,
intent(in) :: fm3
360 sll_real64,
intent(in) :: fm2
361 sll_real64,
intent(in) :: fm1
362 sll_real64,
intent(in) :: f0
363 sll_real64,
intent(in) :: f1
364 sll_real64,
intent(in) :: f2
365 sll_real64,
intent(in) :: f3
366 sll_real64,
intent(in) :: p
383 sll_real64,
intent(in) :: fi(:)
384 sll_real64,
intent(out) :: fp(:)
385 sll_real64,
intent(in) :: p
393 fp(i) = pp(1)*fi(i - 3) &
407 sll_real64,
intent(out) :: pp(9)
408 sll_real64,
intent(in) :: p
410 pp(1) = p*(p - 4._f64)*(p**2 - 9._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_40320
411 pp(2) = -p*(p - 3._f64)*(p**2 - 16._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_5040
412 pp(3) = p*(p - 2._f64)*(p**2 - 16._f64)*(p**2 - 9._f64)*(p**2 - 1._f64)*
inv_1440
413 pp(4) = -p*(p - 1._f64)*(p**2 - 16._f64)*(p**2 - 9._f64)*(p**2 - 4._f64)*
inv_720
414 pp(5) = (p**2 - 16._f64)*(p**2 - 9._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_576
415 pp(6) = -(p + 1._f64)*p*(p**2 - 16._f64)*(p**2 - 9._f64)*(p**2 - 4._f64)*
inv_720
416 pp(7) = (p + 2._f64)*p*(p**2 - 16._f64)*(p**2 - 9._f64)*(p**2 - 1._f64)*
inv_1440
417 pp(8) = -(p + 3._f64)*p*(p**2 - 16._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_5040
418 pp(9) = (p + 4._f64)*p*(p**2 - 9._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_40320
423 function lagr_9pt(fm4, fm3, fm2, fm1, f0, f1, f2, f3, f4, p)
426 sll_real64,
intent(in) :: fm4
427 sll_real64,
intent(in) :: fm3
428 sll_real64,
intent(in) :: fm2
429 sll_real64,
intent(in) :: fm1
430 sll_real64,
intent(in) :: f0
431 sll_real64,
intent(in) :: f1
432 sll_real64,
intent(in) :: f2
433 sll_real64,
intent(in) :: f3
434 sll_real64,
intent(in) :: f4
435 sll_real64,
intent(in) :: p
454 sll_real64,
intent(in) :: fi(:)
455 sll_real64,
intent(out) :: fp(:)
456 sll_real64,
intent(in) :: p
464 fp(i) = pp(1)*fi(i - 4) &
479 sll_real64,
intent(out) :: pp(11)
480 sll_real64,
intent(in) :: p
483 pp(1) = p*(p - 5._f64)*(p**2 - 16._f64)*(p**2 - 9._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_3628800
484 pp(2) = -p*(p - 4._f64)*(p**2 - 25._f64)*(p**2 - 9._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_362880
485 pp(3) = p*(p - 3._f64)*(p**2 - 25._f64)*(p**2 - 16._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_80640
486 pp(4) = -p*(p - 2._f64)*(p**2 - 25._f64)*(p**2 - 16._f64)*(p**2 - 9._f64)*(p**2 - 1._f64)*
inv_30240
487 pp(5) = p*(p - 1._f64)*(p**2 - 25._f64)*(p**2 - 16._f64)*(p**2 - 9._f64)*(p**2 - 4._f64)*
inv_17280
488 pp(6) = -(p**2 - 25._f64)*(p**2 - 16._f64)*(p**2 - 9._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_14400
489 pp(7) = (p + 1._f64)*p*(p**2 - 25._f64)*(p**2 - 16._f64)*(p**2 - 9._f64)*(p**2 - 4._f64)*
inv_17280
490 pp(8) = -(p + 2._f64)*p*(p**2 - 25._f64)*(p**2 - 16._f64)*(p**2 - 9._f64)*(p**2 - 1._f64)*
inv_30240
491 pp(9) = (p + 3._f64)*p*(p**2 - 25._f64)*(p**2 - 16._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_80640
492 pp(10) = -(p + 4._f64)*p*(p**2 - 25._f64)*(p**2 - 9._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_362880
493 pp(11) = (p + 5._f64)*p*(p**2 - 16._f64)*(p**2 - 9._f64)*(p**2 - 4._f64)*(p**2 - 1._f64)*
inv_3628800
498 function lagr_11pt(fm5, fm4, fm3, fm2, fm1, f0, f1, f2, f3, f4, f5, p)
501 sll_real64,
intent(in) :: fm5
502 sll_real64,
intent(in) :: fm4
503 sll_real64,
intent(in) :: fm3
504 sll_real64,
intent(in) :: fm2
505 sll_real64,
intent(in) :: fm1
506 sll_real64,
intent(in) :: f0
507 sll_real64,
intent(in) :: f1
508 sll_real64,
intent(in) :: f2
509 sll_real64,
intent(in) :: f3
510 sll_real64,
intent(in) :: f4
511 sll_real64,
intent(in) :: f5
512 sll_real64,
intent(in) :: p
533 sll_real64,
intent(in) :: fi(:)
534 sll_real64,
intent(out) :: fp(:)
535 sll_real64,
intent(in) :: p
543 fp(i) = pp(1)*fi(i - 5) &
565 sll_real64,
intent(in) :: fi(:)
566 sll_real64,
intent(out) :: fp(:)
567 sll_real64,
intent(in) :: p
568 sll_int32,
intent(in) :: stencil
572 select case (stencil)
576 fp(i) =
lagr_5pt(fi(i), fi(i + 1), fi(i + 2), fi(i + 3), fi(i + 4), p - 2.0_f64)
579 fp(i) =
lagr_5pt(fi(i - 1), fi(i), fi(i + 1), fi(i + 2), fi(i + 3), p - 1.0_f64)
584 fp(i) =
lagr_5pt(fi(i - 3), fi(i - 2), fi(i - 1), fi(i), fi(i + 1), p + 1.0_f64)
587 fp(i) =
lagr_5pt(fi(i - 4), fi(i - 3), fi(i - 2), fi(i - 1), fi(i), p + 2.0_f64)
591 fp(i) =
lagr_3pt(fi(i), fi(i + 1), fi(i + 2), p - 1.0_f64)
596 fp(i) =
lagr_3pt(fi(i - 2), fi(i - 1), fi(i), p + 1.0_f64)
598 sll_error(
'sll_s_lagrange_interpolation_1d_fast_disp_fixed_no_bc.',
'Lagrange stencil not implemented.')
610 sll_real64,
intent(in) :: fi(:)
611 sll_real64,
intent(out) :: fp(:)
612 sll_real64,
intent(in) :: p
613 sll_int32,
intent(in) :: stencil
617 select case (stencil)
620 fp(1) =
lagr_7pt(fi(n - 2), fi(n - 1), fi(n), fi(1), fi(2), fi(3), fi(4), p)
622 fp(2) =
lagr_7pt(fi(n - 1), fi(n), fi(1), fi(2), fi(3), fi(4), fi(5), p)
624 fp(3) =
lagr_7pt(fi(n), fi(1), fi(2), fi(3), fi(4), fi(5), fi(6), p)
628 fp(n - 2) =
lagr_7pt(fi(n - 5), fi(n - 4), fi(n - 3), fi(n - 2), fi(n - 1), fi(n), fi(1), p)
630 fp(n - 1) =
lagr_7pt(fi(n - 4), fi(n - 3), fi(n - 2), fi(n - 1), fi(n), fi(1), fi(2), p)
632 fp(n) =
lagr_7pt(fi(n - 3), fi(n - 2), fi(n - 1), fi(n), fi(1), fi(2), fi(3), p)
635 fp(1) =
lagr_5pt(fi(n - 1), fi(n), fi(1), fi(2), fi(3), p)
637 fp(2) =
lagr_5pt(fi(n), fi(1), fi(2), fi(3), fi(4), p)
641 fp(n - 1) =
lagr_5pt(fi(n - 3), fi(n - 2), fi(n - 1), fi(n), fi(1), p)
643 fp(n) =
lagr_5pt(fi(n - 2), fi(n - 1), fi(n), fi(1), fi(2), p)
646 fp(1) =
lagr_3pt(fi(n), fi(1), fi(2), p)
650 fp(n) =
lagr_3pt(fi(n - 1), fi(n), fi(1), p)
652 sll_error(
'sll_s_lagrange_interpolation_1d_fast_disp_fixed_periodic.',
'Lagrange stencil not implemented.')
664 sll_real64,
intent(in) :: fi(:)
665 sll_real64,
intent(out) :: fp(:)
666 sll_real64,
intent(in) :: p
667 sll_int32,
intent(in) :: stencil
671 select case (stencil)
674 fp(1) =
lagr_7pt(fi(n - 2), fi(n - 1), fi(n), fi(1), fi(2), fi(3), fi(4), p)
676 fp(2) =
lagr_7pt(fi(n - 1), fi(n), fi(1), fi(2), fi(3), fi(4), fi(5), p)
678 fp(3) =
lagr_7pt(fi(n), fi(1), fi(2), fi(3), fi(4), fi(5), fi(6), p)
682 fp(n - 1) =
lagr_7pt(fi(n - 4), fi(n - 3), fi(n - 2), fi(n - 1), fi(n), fi(1), fi(2), p)
684 fp(n) =
lagr_7pt(fi(n - 3), fi(n - 2), fi(n - 1), fi(n), fi(1), fi(2), fi(3), p)
688 fp(1) =
lagr_5pt(fi(n - 1), fi(n), fi(1), fi(2), fi(3), p)
690 fp(2) =
lagr_5pt(fi(n), fi(1), fi(2), fi(3), fi(4), p)
694 fp(n) =
lagr_5pt(fi(n - 2), fi(n - 1), fi(n), fi(1), fi(2), p)
698 fp(1) =
lagr_3pt(fi(n), fi(1), fi(2), p)
703 sll_error(
'sll_s_lagrange_interpolation_1d_fast_disp_fixed_periodicl.',
'Lagrange stencil not implemented.')
712 sll_real64,
intent(in) :: fi(:)
713 sll_real64,
intent(out) :: fp(:)
714 sll_real64,
intent(in) :: p
715 sll_int32,
intent(in) :: stencil
723 pq = p - real(pi, f64)
725 select case (stencil)
729 do i = 1, max(0, 2 - pi)
730 fp(i) =
lagr_6pt(fi(modulo(i - 3 + pi, n) + 1), &
731 fi(modulo(i - 2 + pi, n) + 1), &
732 fi(modulo(i + pi - 1, n) + 1), &
733 fi(modulo(i + pi, n) + 1), &
734 fi(modulo(i + 1 + pi, n) + 1), &
735 fi(modulo(i + 2 + pi, n) + 1), &
738 do i = min(n, n - 2 - pi), n
739 fp(i) =
lagr_6pt(fi(modulo(i - 3 + pi, n) + 1), &
740 fi(modulo(i - 2 + pi, n) + 1), &
741 fi(modulo(i + pi - 1, n) + 1), &
742 fi(modulo(i + pi, n) + 1), &
743 fi(modulo(i + 1 + pi, n) + 1), &
744 fi(modulo(i + 2 + pi, n) + 1), &
751 do i = 1, max(0, 1 - pi)
752 fp(i) =
lagr_4pt(fi(modulo(i - 2 + pi, n) + 1), &
753 fi(modulo(i + pi - 1, n) + 1), &
754 fi(modulo(i + pi, n) + 1), &
755 fi(modulo(i + 1 + pi, n) + 1), &
758 do i = min(n, n - 1 - pi), n
759 fp(i) =
lagr_4pt(fi(modulo(i - 2 + pi, n) + 1), &
760 fi(modulo(i + pi - 1, n) + 1), &
761 fi(modulo(i + pi, n) + 1), &
762 fi(modulo(i + 1 + pi, n) + 1), &
767 sll_error(
'sll_s_lagrange_interpolation_1d_fast_disp_centered_periodicl.',
'Lagrange stencil not implemented.')
784 sll_real64,
intent(in) :: fi(:)
785 sll_real64,
intent(out) :: fp(:)
786 sll_real64,
intent(in) :: p
787 sll_int32,
intent(in) :: stencil
789 select case (stencil)
806 sll_error(
'sll_s_lagrange_interpolation_1d_fast_disp_fixed_haloc_cells.',
'Lagrange stencil not implemented.')
813 sll_real64,
intent(in) :: fi(:)
814 sll_real64,
intent(out) :: fp(:)
815 sll_real64,
intent(in) :: p
816 sll_int32,
intent(in) :: stencil
822 pq = p - real(pi, f64)
824 select case (stencil)
835 sll_error(
'sll_s_lagrange_interpolation_1d_fast_disp_centered_halo_cells.',
'Lagrange stencil not implemented.')
843 sll_real64,
intent(in) :: fi(:)
844 sll_real64,
intent(out) :: fp(:)
845 sll_real64,
intent(in) :: p
846 sll_int32,
intent(in) :: stencil
848 select case (stencil)
859 sll_error(
'sll_s_lagrange_interpolation_1d_fast_disp_even_halo_cells.',
'Lagrange stencil not implemented.')
877 sll_real64,
intent(in) :: fi(:)
878 sll_real64,
intent(out) :: fp(:)
879 sll_real64,
intent(in) :: p(:)
880 sll_int32,
intent(in) :: stencil
881 sll_int32,
intent(in) :: index_shift
890 select case (stencil)
893 fp(i) =
lagr_7pt(fi(i), fi(i + 1), fi(i + 2), fi(i + 3), fi(i + 4), fi(i + 5), fi(i + 6), p(i))
897 fp(i) =
lagr_5pt(fi(i), fi(i + 1), fi(i + 2), fi(i + 3), fi(i + 4), p(i))
901 fp(i) =
lagr_9pt(fi(i), fi(i + 1), fi(i + 2), fi(i + 3), fi(i + 4), fi(i + 5), fi(i + 6), fi(i + 7), fi(i + 8), p(i))
905 fp(i) =
lagr_11pt( fi(i), fi(i+1), fi(i+2), fi(i+3), fi(i+4), fi(i+5), fi(i+6), fi(i+7), fi(i+8), fi(i+9), fi(i+10), p(i) )
909 fp(i) =
lagr_3pt(fi(i), fi(i + 1), fi(i + 2), p(i))
912 sll_error(
'sll_s_lagrange_interpolation_1d_fast_haloc_cells.',
'Lagrange stencil not implemented.')
Module for 1D Lagrange interpolation on a uniform grid (only odd order)
real(kind=f64), parameter inv_12
real(kind=f64), parameter inv_6
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_fixed_no_bc(fi, fp, p, stencil)
Lagrange interpolation, without boundary conditions. One sided a the outermost points.
real(kind=f64) function lagr_11pt(fm5, fm4, fm3, fm2, fm1, f0, f1, f2, f3, f4, f5, p)
single point 11-pt-lagrange interpolation
real(kind=f64), parameter inv_40320
subroutine lagr_11pt_coeff(pp, p)
Compute coefficients for Lagrange interpolation for normalized displacement p.
subroutine lagr_4pt_coeff(pp, p)
Compute coefficients for Lagrange interpolation for normalized displacement p.
real(kind=f64) function lagr_8pt(fm3, fm2, fm1, f0, f1, f2, f3, f4, p)
single point 8-pt-lagrange interpolation
real(kind=f64), parameter inv_720
real(kind=f64), parameter inv_576
real(kind=f64) function lagr_3pt(fm1, f0, f1, p)
single point 3-pt-lagrange interpolation
subroutine lagr_7pt_vec(fi, fp, p)
vectorizable 7-pt-lagrange interpolation
real(kind=f64), parameter inv_24
real(kind=f64) function lagr_6pt(fm2, fm1, f0, f1, f2, f3, p)
single point 6-pt-lagrange interpolation
subroutine lagr_5pt_coeff(pp, p)
Compute coefficients for Lagrange interpolation for normalized displacement p.
subroutine lagr_11pt_vec(fi, fp, p)
vectorizable 11-pt-lagrange interpolation
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_fixed_periodicl(fi, fp, p, stencil)
Lagrange interpolation, periodic boundary conditions, first value repeated at the end.
real(kind=f64), parameter inv_120
real(kind=f64), parameter inv_80640
subroutine lagr_5pt_vec(fi, fp, p)
vectorizable 5-pt-lagrange interpolation
real(kind=f64), parameter inv_48
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_even_halo_cells(fi, fp, p, stencil)
Even Lagrange interpolation with halo cells and no interval shift, i.e. p must be between zero and on...
subroutine lagr_9pt_vec(fi, fp, p)
vectorizable 9-pt-lagrange interpolation
subroutine lagr_9pt_coeff(pp, p)
Compute coefficients for Lagrange interpolation for normalized displacement p.
real(kind=f64), parameter inv_144
real(kind=f64), parameter inv_1440
subroutine lagr_6pt_vec(fi, fp, p, index_shift)
vectorizable 6-pt-lagrange interpolation
real(kind=f64), parameter inv_30240
real(kind=f64), parameter inv_5040
subroutine lagr_8pt_vec(fi, fp, p, index_shift)
vectorizable 6-pt-lagrange interpolation
real(kind=f64) function lagr_5pt(fm2, fm1, f0, f1, f2, p)
single point 5-pt-lagrange interpolation
real(kind=f64), parameter inv_17280
real(kind=f64), parameter inv_36
subroutine lagr_8pt_coeff(pp, p)
Compute coefficients for Lagrange interpolation for normalized displacement p.
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_centered_periodicl(fi, fp, p, stencil)
Lagrange interpolation centered around the interval of displacement, periodic boundary condtions,...
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_fixed_periodic(fi, fp, p, stencil)
Lagrange interpolation, periodic boundary conditions.
real(kind=f64), parameter inv_3628800
real(kind=f64) function lagr_9pt(fm4, fm3, fm2, fm1, f0, f1, f2, f3, f4, p)
single point 9-pt-lagrange interpolation
real(kind=f64), parameter inv_14400
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_fixed_haloc_cells(fi, fp, p, stencil)
Lagrange interpolation with halo cell boundaries, where the input array already contains halo cells....
subroutine lagr_4pt_vec(fi, fp, p, index_shift)
vectorizable 4-pt-lagrange interpolation
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_centered_halo_cells(fi, fp, p, stencil)
real(kind=f64) function lagr_7pt(fm3, fm2, fm1, f0, f1, f2, f3, p)
single point 7-pt-lagrange interpolation
subroutine lagr_3pt_coeff(pp, p)
Compute coefficients for Lagrange interpolation for normalized displacement p.
subroutine lagr_6pt_coeff(pp, p)
Compute coefficients for Lagrange interpolation for normalized displacement p.
subroutine, public sll_s_lagrange_interpolation_1d_fast_haloc_cells(fi, fp, p, stencil, index_shift)
Lagrange interpolation with halo cell boundaries, where the input array already contains halo cells....
real(kind=f64), parameter inv_362880
subroutine lagr_7pt_coeff(pp, p)
Compute coefficients for Lagrange interpolation for normalized displacement p.
subroutine lagr_3pt_vec(fi, fp, p)
vectorizable 3-pt-lagrange interpolation
real(kind=f64), parameter inv_240
real(kind=f64) function lagr_4pt(fm1, f0, f1, f2, p)
single point 4-pt-lagrange interpolation