9 subroutine ezspline_interp1_r8(spline_o, p1, f, ier)
12 type(EZspline1_r8) spline_o
15 integer,
intent(out) :: ier
18 integer,
parameter :: ict(3)=(/1, 0, 0/)
19 real(ezspline_r8) ansr(1)
28 if (spline_o%isLinear == 1)
then
31 & spline_o%x1(1), spline_o%n1, &
33 & spline_o%fspl(1,1), &
36 else if (spline_o%isHermite == 0)
then
39 & spline_o%x1(1), spline_o%n1, &
41 & spline_o%fspl(1,1), &
47 & spline_o%x1(1), spline_o%n1, &
49 & spline_o%fspl(1,1), &
56 if(ifail /= 0) ier = 97
58 end subroutine ezspline_interp1_r8
61 subroutine ezspline_interp1_array_r8(spline_o, k, p1, f, ier)
64 type(EZspline1_r8) spline_o
65 integer,
intent(in) :: k
66 real(ezspline_r8),
intent(in) :: p1(k)
67 real(ezspline_r8),
intent(out):: f(k)
68 integer,
intent(out) :: ier
71 integer,
parameter :: ict(3)=(/1,0,0/)
81 if (spline_o%isLinear == 1)
then
83 call r8vecpc1(ict, k, p1, k, f, &
84 & spline_o%n1,spline_o%x1pkg(1,1), &
85 & spline_o%fspl(1,1), &
88 else if (spline_o%isHermite == 0)
then
90 call r8vecspline(ict, k, p1, k, f, &
91 & spline_o%n1,spline_o%x1pkg(1,1), &
92 & spline_o%fspl(1,1), &
97 call r8vecherm1(ict, k, p1, k, f, &
98 & spline_o%n1, spline_o%x1pkg(1,1), &
99 & spline_o%fspl(1,1), &
104 if(ifail /= 0) ier = 97
106 end subroutine ezspline_interp1_array_r8
112 subroutine ezspline_interp2_r8(spline_o, p1, p2, f, ier)
115 type(EZspline2_r8) spline_o
116 real(ezspline_r8) p1, p2
118 integer,
intent(out) :: ier
120 integer,
parameter :: ict(6)=(/1, 0, 0, 0, 0, 0 /)
121 real(ezspline_r8) ansr(1)
130 if (spline_o%isHybrid == 1)
then
132 call r8evintrp2d(p1, p2, &
133 & spline_o%x1(1), spline_o%n1, &
134 & spline_o%x2(1), spline_o%n2, &
135 & spline_o%hspline, spline_o%fspl(1,1,1), &
136 &
size(spline_o%fspl,1),
size(spline_o%fspl,2), &
137 &
size(spline_o%fspl,3), &
140 else if (spline_o%isLinear == 1)
then
142 call r8pc2ev(p1, p2, &
143 & spline_o%x1(1), spline_o%n1, &
144 & spline_o%x2(1), spline_o%n2, &
145 & spline_o%ilin1, spline_o%ilin2, &
146 & spline_o%fspl(1,1,1), spline_o%n1, &
149 else if (spline_o%isHermite == 0)
then
151 call r8evbicub(p1, p2, &
152 & spline_o%x1(1), spline_o%n1, &
153 & spline_o%x2(1), spline_o%n2, &
154 & spline_o%ilin1, spline_o%ilin2, &
155 & spline_o%fspl(1,1,1), spline_o%n1, &
160 call r8herm2ev(p1, p2, &
161 & spline_o%x1(1), spline_o%n1, &
162 & spline_o%x2(1), spline_o%n2, &
163 & spline_o%ilin1, spline_o%ilin2, &
164 & spline_o%fspl(1,1,1), spline_o%n1, &
171 if(ifail /= 0) ier = 97
173 end subroutine ezspline_interp2_r8
175 subroutine ezspline_interp2_array_r8(spline_o, k1, k2, p1, p2, f, ier)
178 type(EZspline2_r8) spline_o
179 integer,
intent(in) :: k1, k2
180 real(ezspline_r8) :: p1(k1), p2(k2)
181 real(ezspline_r8) :: f(k1,k2)
182 integer,
intent(out) :: ier
194 if (spline_o%isHybrid == 1)
then
196 call r8gridintrp2d( &
200 & spline_o%n1, spline_o%x1pkg(1,1), &
201 & spline_o%n2, spline_o%x2pkg(1,1), &
202 & spline_o%hspline, spline_o%fspl(1,1,1), &
203 &
size(spline_o%fspl,1),
size(spline_o%fspl,2), &
204 &
size(spline_o%fspl,3), &
207 else if (spline_o%isLinear == 1)
then
213 & spline_o%n1, spline_o%x1pkg(1,1), &
214 & spline_o%n2, spline_o%x2pkg(1,1), &
215 & spline_o%fspl(1,1,1), spline_o%n1, &
218 else if (spline_o%isHermite == 0)
then
224 & spline_o%n1, spline_o%x1pkg(1,1), &
225 & spline_o%n2, spline_o%x2pkg(1,1), &
226 & spline_o%fspl(1,1,1), spline_o%n1, &
235 & spline_o%n1, spline_o%x1pkg(1,1), &
236 & spline_o%n2, spline_o%x2pkg(1,1), &
237 & spline_o%fspl(1,1,1), spline_o%n1, &
242 if(ifail /= 0) ier = 97
244 end subroutine ezspline_interp2_array_r8
246 subroutine ezspline_interp2_cloud_r8(spline_o, k, p1, p2, f, ier)
250 type(EZspline2_r8) spline_o
251 integer,
intent(in) :: k
252 real(ezspline_r8),
intent(in) :: p1(k), p2(k)
253 real(ezspline_r8),
intent(out):: f(k)
254 integer,
intent(out) :: ier
256 integer,
parameter :: ict(6) = (/1,0,0,0,0,0/)
268 if (spline_o%isHybrid == 1)
then
270 call r8vecintrp2d(ict, k, p1, p2, k, f, &
271 & spline_o%n1, spline_o%x1pkg(1,1), &
272 & spline_o%n2, spline_o%x2pkg(1,1), &
273 & spline_o%hspline, spline_o%fspl(1,1,1), &
274 &
size(spline_o%fspl,1),
size(spline_o%fspl,2), &
275 &
size(spline_o%fspl,3), &
278 else if (spline_o%isLinear == 1)
then
280 call r8vecpc2(ict, k, p1, p2, k, f, &
281 & spline_o%n1, spline_o%x1pkg(1,1), &
282 & spline_o%n2, spline_o%x2pkg(1,1), &
283 & spline_o%fspl(1,1,1), spline_o%n1, &
286 else if (spline_o%isHermite == 0)
then
288 call r8vecbicub(ict, k, p1, p2, k, f, &
289 & spline_o%n1, spline_o%x1pkg(1,1), &
290 & spline_o%n2, spline_o%x2pkg(1,1), &
291 & spline_o%fspl(1,1,1), spline_o%n1, &
296 call r8vecherm2(ict, k, p1, p2, k, f, &
297 & spline_o%n1, spline_o%x1pkg(1,1), &
298 & spline_o%n2, spline_o%x2pkg(1,1), &
299 & spline_o%fspl(1,1,1), spline_o%n1, &
304 if(ifail /= 0) ier = 97
306 end subroutine ezspline_interp2_cloud_r8
313 subroutine ezspline_interp3_r8(spline_o, p1, p2, p3, f, ier)
316 type(EZspline3_r8) spline_o
317 real(ezspline_r8) p1, p2, p3
320 integer,
intent(out) :: ier
322 integer,
parameter :: ict(10)=(/1,0,0,0,0,0,0,0,0,0/)
323 real(ezspline_r8) ansr(1)
332 if (spline_o%isHybrid == 1)
then
334 call r8evintrp3d(p1, p2, p3, &
335 & spline_o%x1(1), spline_o%n1, &
336 & spline_o%x2(1), spline_o%n2, &
337 & spline_o%x3(1), spline_o%n3, &
338 & spline_o%hspline, spline_o%fspl(1,1,1,1), &
339 &
size(spline_o%fspl,1),
size(spline_o%fspl,2), &
340 &
size(spline_o%fspl,3),
size(spline_o%fspl,4), &
343 else if (spline_o%isLinear == 1)
then
345 call r8pc3ev(p1, p2, p3, &
346 & spline_o%x1(1), spline_o%n1, &
347 & spline_o%x2(1), spline_o%n2, &
348 & spline_o%x3(1), spline_o%n3, &
349 & spline_o%ilin1, spline_o%ilin2, spline_o%ilin3, &
350 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
353 else if (spline_o%isHermite == 0)
then
355 call r8evtricub(p1, p2, p3, &
356 & spline_o%x1(1), spline_o%n1, &
357 & spline_o%x2(1), spline_o%n2, &
358 & spline_o%x3(1), spline_o%n3, &
359 & spline_o%ilin1, spline_o%ilin2, spline_o%ilin3, &
360 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
365 call r8herm3ev(p1, p2, p3, &
366 & spline_o%x1(1), spline_o%n1, &
367 & spline_o%x2(1), spline_o%n2, &
368 & spline_o%x3(1), spline_o%n3, &
369 & spline_o%ilin1, spline_o%ilin2, spline_o%ilin3, &
370 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
377 if(ifail /= 0) ier = 97
379 end subroutine ezspline_interp3_r8
381 subroutine ezspline_interp3_array_r8(spline_o, k1, k2, k3, p1, p2, p3, f, ier)
384 type(EZspline3_r8) spline_o
385 integer :: k1, k2, k3
386 real(ezspline_r8) :: p1(k1), p2(k2), p3(k3)
387 real(ezspline_r8) :: f(k1,k2,k3)
388 integer,
intent(out) :: ier
400 if (spline_o%isHybrid == 1)
then
402 call r8gridintrp3d( &
407 & spline_o%n1, spline_o%x1pkg(1,1), &
408 & spline_o%n2, spline_o%x2pkg(1,1), &
409 & spline_o%n3, spline_o%x3pkg(1,1), &
410 & spline_o%hspline, spline_o%fspl(1,1,1,1), &
411 &
size(spline_o%fspl,1),
size(spline_o%fspl,2), &
412 &
size(spline_o%fspl,3),
size(spline_o%fspl,4), &
415 else if (spline_o%isLinear == 1)
then
422 & spline_o%n1, spline_o%x1pkg(1,1), &
423 & spline_o%n2, spline_o%x2pkg(1,1), &
424 & spline_o%n3, spline_o%x3pkg(1,1), &
425 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
428 else if (spline_o%isHermite == 0)
then
435 & spline_o%n1, spline_o%x1pkg(1,1), &
436 & spline_o%n2, spline_o%x2pkg(1,1), &
437 & spline_o%n3, spline_o%x3pkg(1,1), &
438 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
448 & spline_o%n1, spline_o%x1pkg(1,1), &
449 & spline_o%n2, spline_o%x2pkg(1,1), &
450 & spline_o%n3, spline_o%x3pkg(1,1), &
451 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
456 if(ifail /= 0) ier = 97
458 end subroutine ezspline_interp3_array_r8
460 subroutine ezspline_interp3_cloud_r8(spline_o, k, p1, p2, p3, f, ier)
464 type(EZspline3_r8) spline_o
465 integer,
intent(in) :: k
466 real(ezspline_r8),
intent(in) :: p1(k), p2(k), p3(k)
467 real(ezspline_r8),
intent(out):: f(k)
468 integer,
intent(out) :: ier
471 integer,
parameter :: ict(10)=(/1,0,0,0,0,0,0,0,0,0/)
481 if (spline_o%isHybrid == 1)
then
483 call r8vecintrp3d(ict, k, p1, p2, p3, k, f, &
484 & spline_o%n1, spline_o%x1pkg(1,1), &
485 & spline_o%n2, spline_o%x2pkg(1,1), &
486 & spline_o%n3, spline_o%x3pkg(1,1), &
487 & spline_o%hspline, spline_o%fspl(1,1,1,1), &
488 &
size(spline_o%fspl,1),
size(spline_o%fspl,2), &
489 &
size(spline_o%fspl,3),
size(spline_o%fspl,4), &
492 else if (spline_o%isLinear == 1)
then
494 call r8vecpc3(ict, k, p1, p2, p3, k, f, &
495 & spline_o%n1, spline_o%x1pkg(1,1), &
496 & spline_o%n2, spline_o%x2pkg(1,1), &
497 & spline_o%n3, spline_o%x3pkg(1,1), &
498 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
501 else if (spline_o%isHermite == 0)
then
503 call r8vectricub(ict, k, p1, p2, p3, k, f, &
504 & spline_o%n1,spline_o%x1pkg(1,1), &
505 & spline_o%n2,spline_o%x2pkg(1,1), &
506 & spline_o%n3,spline_o%x3pkg(1,1), &
507 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
512 call r8vecherm3(ict, k, p1, p2, p3, k, f, &
513 & spline_o%n1, spline_o%x1pkg(1,1), &
514 & spline_o%n2, spline_o%x2pkg(1,1), &
515 & spline_o%n3, spline_o%x3pkg(1,1), &
516 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
521 if(ifail /= 0) ier = 97
523 end subroutine ezspline_interp3_cloud_r8
532 subroutine ezspline_interp1_r4(spline_o, p1, f, ier)
535 type(EZspline1_r4) spline_o
538 integer,
intent(out) :: ier
541 integer,
parameter :: ict(3)=(/1, 0, 0/)
542 real(ezspline_r4) ansr(1)
551 if (spline_o%isLinear == 1)
then
554 & spline_o%x1(1), spline_o%n1, &
556 & spline_o%fspl(1,1), &
559 else if (spline_o%isHermite == 0)
then
562 & spline_o%x1(1), spline_o%n1, &
564 & spline_o%fspl(1,1), &
570 & spline_o%x1(1), spline_o%n1, &
572 & spline_o%fspl(1,1), &
579 if(ifail /= 0) ier = 97
581 end subroutine ezspline_interp1_r4
584 subroutine ezspline_interp1_array_r4(spline_o, k, p1, f, ier)
587 type(EZspline1_r4) spline_o
588 integer,
intent(in) :: k
589 real(ezspline_r4),
intent(in) :: p1(k)
590 real(ezspline_r4),
intent(out):: f(k)
591 integer,
intent(out) :: ier
594 integer,
parameter :: ict(3)=(/1,0,0/)
604 if (spline_o%isLinear == 1)
then
606 call vecpc1(ict, k, p1, k, f, &
607 & spline_o%n1, spline_o%x1pkg(1,1), &
608 & spline_o%fspl(1,1), &
611 else if (spline_o%isHermite == 0)
then
613 call vecspline(ict, k, p1, k, f, &
614 & spline_o%n1,spline_o%x1pkg(1,1), &
615 & spline_o%fspl(1,1), &
620 call vecherm1(ict, k, p1, k, f, &
621 & spline_o%n1, spline_o%x1pkg(1,1), &
622 & spline_o%fspl(1,1), &
627 if(ifail /= 0) ier = 97
629 end subroutine ezspline_interp1_array_r4
635 subroutine ezspline_interp2_r4(spline_o, p1, p2, f, ier)
638 type(EZspline2_r4) spline_o
639 real(ezspline_r4) p1, p2
641 integer,
intent(out) :: ier
643 integer,
parameter :: ict(6)=(/1, 0, 0, 0, 0, 0 /)
644 real(ezspline_r4) ansr(1)
653 if (spline_o%isHybrid == 1)
then
655 call evintrp2d(p1, p2, &
656 & spline_o%x1(1), spline_o%n1, &
657 & spline_o%x2(1), spline_o%n2, &
658 & spline_o%hspline, spline_o%fspl(1,1,1), &
659 &
size(spline_o%fspl,1),
size(spline_o%fspl,2), &
660 &
size(spline_o%fspl,3), &
663 else if (spline_o%isLinear == 1)
then
666 & spline_o%x1(1), spline_o%n1, &
667 & spline_o%x2(1), spline_o%n2, &
668 & spline_o%ilin1, spline_o%ilin2, &
669 & spline_o%fspl(1,1,1), spline_o%n1, &
672 else if (spline_o%isHermite == 0)
then
673 call evbicub(p1, p2, &
674 & spline_o%x1(1), spline_o%n1, &
675 & spline_o%x2(1), spline_o%n2, &
676 & spline_o%ilin1, spline_o%ilin2, &
677 & spline_o%fspl(1,1,1), spline_o%n1, &
682 call herm2ev(p1, p2, &
683 & spline_o%x1(1), spline_o%n1, &
684 & spline_o%x2(1), spline_o%n2, &
685 & spline_o%ilin1, spline_o%ilin2, &
686 & spline_o%fspl(1,1,1), spline_o%n1, &
693 if(ifail /= 0) ier = 97
695 end subroutine ezspline_interp2_r4
697 subroutine ezspline_interp2_array_r4(spline_o, k1, k2, p1, p2, f, ier)
700 type(EZspline2_r4) spline_o
701 integer,
intent(in) :: k1, k2
702 real(ezspline_r4) :: p1(k1), p2(k2)
703 real(ezspline_r4) :: f(k1,k2)
704 integer,
intent(out) :: ier
716 if (spline_o%isHybrid == 1)
then
722 & spline_o%n1, spline_o%x1pkg(1,1), &
723 & spline_o%n2, spline_o%x2pkg(1,1), &
724 & spline_o%hspline, spline_o%fspl(1,1,1), &
725 &
size(spline_o%fspl,1),
size(spline_o%fspl,2), &
726 &
size(spline_o%fspl,3), &
729 else if (spline_o%isLinear == 1)
then
735 & spline_o%n1, spline_o%x1pkg(1,1), &
736 & spline_o%n2, spline_o%x2pkg(1,1), &
737 & spline_o%fspl(1,1,1), spline_o%n1, &
740 else if (spline_o%isHermite == 0)
then
746 & spline_o%n1, spline_o%x1pkg(1,1), &
747 & spline_o%n2, spline_o%x2pkg(1,1), &
748 & spline_o%fspl(1,1,1), spline_o%n1, &
757 & spline_o%n1, spline_o%x1pkg(1,1), &
758 & spline_o%n2, spline_o%x2pkg(1,1), &
759 & spline_o%fspl(1,1,1), spline_o%n1, &
764 if(ifail /= 0) ier = 97
767 end subroutine ezspline_interp2_array_r4
769 subroutine ezspline_interp2_cloud_r4(spline_o, k, p1, p2, f, ier)
773 type(EZspline2_r4) spline_o
774 integer,
intent(in) :: k
775 real(ezspline_r4),
intent(in) :: p1(k), p2(k)
776 real(ezspline_r4),
intent(out):: f(k)
777 integer,
intent(out) :: ier
779 integer,
parameter :: ict(6) = (/1,0,0,0,0,0/)
791 if (spline_o%isHybrid == 1)
then
793 call vecintrp2d(ict, k, p1, p2, k, f, &
794 & spline_o%n1, spline_o%x1pkg(1,1), &
795 & spline_o%n2, spline_o%x2pkg(1,1), &
796 & spline_o%hspline, spline_o%fspl(1,1,1), &
797 &
size(spline_o%fspl,1),
size(spline_o%fspl,2), &
798 &
size(spline_o%fspl,3), &
801 else if (spline_o%isLinear == 1)
then
803 call vecpc2(ict, k, p1, p2, k, f, &
804 & spline_o%n1, spline_o%x1pkg(1,1), &
805 & spline_o%n2, spline_o%x2pkg(1,1), &
806 & spline_o%fspl(1,1,1), spline_o%n1, &
809 else if (spline_o%isHermite == 0)
then
811 call vecbicub(ict, k, p1, p2, k, f, &
812 & spline_o%n1, spline_o%x1pkg(1,1), &
813 & spline_o%n2, spline_o%x2pkg(1,1), &
814 & spline_o%fspl(1,1,1), spline_o%n1, &
819 call vecherm2(ict, k, p1, p2, k, f, &
820 & spline_o%n1, spline_o%x1pkg(1,1), &
821 & spline_o%n2, spline_o%x2pkg(1,1), &
822 & spline_o%fspl(1,1,1), spline_o%n1, &
827 if(ifail /= 0) ier = 97
829 end subroutine ezspline_interp2_cloud_r4
836 subroutine ezspline_interp3_r4(spline_o, p1, p2, p3, f, ier)
839 type(EZspline3_r4) spline_o
840 real(ezspline_r4) p1, p2, p3
843 integer,
intent(out) :: ier
845 integer,
parameter :: ict(10)=(/1,0,0,0,0,0,0,0,0,0/)
846 real(ezspline_r4) ansr(1)
855 if (spline_o%isHybrid == 1)
then
857 call evintrp3d(p1, p2, p3, &
858 & spline_o%x1(1), spline_o%n1, &
859 & spline_o%x2(1), spline_o%n2, &
860 & spline_o%x3(1), spline_o%n3, &
861 & spline_o%hspline, spline_o%fspl(1,1,1,1), &
862 &
size(spline_o%fspl,1),
size(spline_o%fspl,2), &
863 &
size(spline_o%fspl,3),
size(spline_o%fspl,4), &
866 else if (spline_o%isLinear == 1)
then
868 call pc3ev(p1, p2, p3, &
869 & spline_o%x1(1), spline_o%n1, &
870 & spline_o%x2(1), spline_o%n2, &
871 & spline_o%x3(1), spline_o%n3, &
872 & spline_o%ilin1, spline_o%ilin2, spline_o%ilin3, &
873 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
876 else if (spline_o%isHermite == 0)
then
878 call evtricub(p1, p2, p3, &
879 & spline_o%x1(1), spline_o%n1, &
880 & spline_o%x2(1), spline_o%n2, &
881 & spline_o%x3(1), spline_o%n3, &
882 & spline_o%ilin1, spline_o%ilin2, spline_o%ilin3, &
883 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
888 call herm3ev(p1, p2, p3, &
889 & spline_o%x1(1), spline_o%n1, &
890 & spline_o%x2(1), spline_o%n2, &
891 & spline_o%x3(1), spline_o%n3, &
892 & spline_o%ilin1, spline_o%ilin2, spline_o%ilin3, &
893 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
900 if(ifail /= 0) ier = 97
902 end subroutine ezspline_interp3_r4
904 subroutine ezspline_interp3_array_r4(spline_o, k1, k2, k3, p1, p2, p3, f, ier)
907 type(EZspline3_r4) spline_o
908 integer :: k1, k2, k3
909 real(ezspline_r4) :: p1(k1), p2(k2), p3(k3)
910 real(ezspline_r4) :: f(k1,k2,k3)
911 integer,
intent(out) :: ier
923 if (spline_o%isHybrid == 1)
then
930 & spline_o%n1, spline_o%x1pkg(1,1), &
931 & spline_o%n2, spline_o%x2pkg(1,1), &
932 & spline_o%n3, spline_o%x3pkg(1,1), &
933 & spline_o%hspline, spline_o%fspl(1,1,1,1), &
934 &
size(spline_o%fspl,1),
size(spline_o%fspl,2), &
935 &
size(spline_o%fspl,3),
size(spline_o%fspl,4), &
938 else if (spline_o%isLinear == 1)
then
945 & spline_o%n1, spline_o%x1pkg(1,1), &
946 & spline_o%n2, spline_o%x2pkg(1,1), &
947 & spline_o%n3, spline_o%x3pkg(1,1), &
948 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
951 else if (spline_o%isHermite == 0)
then
958 & spline_o%n1, spline_o%x1pkg(1,1), &
959 & spline_o%n2, spline_o%x2pkg(1,1), &
960 & spline_o%n3, spline_o%x3pkg(1,1), &
961 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
971 & spline_o%n1, spline_o%x1pkg(1,1), &
972 & spline_o%n2, spline_o%x2pkg(1,1), &
973 & spline_o%n3, spline_o%x3pkg(1,1), &
974 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
979 if(ifail /= 0) ier = 97
981 end subroutine ezspline_interp3_array_r4
983 subroutine ezspline_interp3_cloud_r4(spline_o, k, p1, p2, p3, f, ier)
987 type(EZspline3_r4) spline_o
988 integer,
intent(in) :: k
989 real(ezspline_r4),
intent(in) :: p1(k), p2(k), p3(k)
990 real(ezspline_r4),
intent(out):: f(k)
991 integer,
intent(out) :: ier
994 integer,
parameter :: ict(10)=(/1,0,0,0,0,0,0,0,0,0/)
1004 if (spline_o%isHybrid == 1)
then
1006 call vecintrp3d(ict, k, p1, p2, p3, k, f, &
1007 & spline_o%n1, spline_o%x1pkg(1,1), &
1008 & spline_o%n2, spline_o%x2pkg(1,1), &
1009 & spline_o%n3, spline_o%x3pkg(1,1), &
1010 & spline_o%hspline, spline_o%fspl(1,1,1,1), &
1011 &
size(spline_o%fspl,1),
size(spline_o%fspl,2), &
1012 &
size(spline_o%fspl,3),
size(spline_o%fspl,4), &
1015 else if (spline_o%isLinear == 1)
then
1017 call vecpc3(ict, k, p1, p2, p3, k, f, &
1018 & spline_o%n1, spline_o%x1pkg(1,1), &
1019 & spline_o%n2, spline_o%x2pkg(1,1), &
1020 & spline_o%n3, spline_o%x3pkg(1,1), &
1021 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
1024 else if (spline_o%isHermite == 0)
then
1026 call vectricub(ict, k, p1, p2, p3, k, f, &
1027 & spline_o%n1,spline_o%x1pkg(1,1), &
1028 & spline_o%n2,spline_o%x2pkg(1,1), &
1029 & spline_o%n3,spline_o%x3pkg(1,1), &
1030 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
1035 call vecherm3(ict, k, p1, p2, p3, k, f, &
1036 & spline_o%n1, spline_o%x1pkg(1,1), &
1037 & spline_o%n2, spline_o%x2pkg(1,1), &
1038 & spline_o%n3, spline_o%x3pkg(1,1), &
1039 & spline_o%fspl(1,1,1,1), spline_o%n1, spline_o%n2, &
1044 if(ifail /= 0) ier = 97
1046 end subroutine ezspline_interp3_cloud_r4