4 subroutine ezspline_init1_r8(spline_o, n1, BCS1, ier)
7 type(EZspline1_r8) spline_o
8 integer,
intent(in) :: n1
9 integer,
intent(in) :: BCS1(2)
16 integer,
intent(out) :: ier
33 spline_o%isHermite = 0
37 allocate(spline_o%x1(n1), stat=iok)
39 allocate(spline_o%fspl(2,n1), stat=iok)
41 allocate(spline_o%x1pkg(n1, 4), stat=iok)
46 spline_o%bcval1min = 0.0_ezspline_r8
47 spline_o%bcval1max = 0.0_ezspline_r8
50 spline_o%ibctype1(i) = -1
52 spline_o%ibctype1(i) = 0
54 spline_o%ibctype1(i) = 1
56 spline_o%ibctype1(i) = 2
59 spline_o%ibctype1(i) = 0
63 if(spline_o%ibctype1(1)==-1 .OR. spline_o%ibctype1(2)==-1)
then
64 spline_o%ibctype1(1)=-1
65 spline_o%ibctype1(2)=-1
70 spline_o%x1min = 0.0_ezspline_r8
71 spline_o%x1max = 1.0_ezspline_r8
72 if(bcs1(2)==-1) spline_o%x1max = ezspline_twopi_r8
74 spline_o%x1 = spline_o%x1min + (spline_o%x1max - spline_o%x1min)* &
75 & (/ (real(i-1,ezspline_r8)/real(spline_o%n1-1, ezspline_r8), i=1,spline_o%n1 ) /)
80 end subroutine ezspline_init1_r8
85 subroutine ezspline_init2_r8(spline_o, n1, n2, BCS1, BCS2, ier)
88 type(EZspline2_r8) spline_o
89 integer,
intent(in) :: n1, n2
90 integer,
intent(in) :: BCS1(2), BCS2(2)
97 integer,
intent(out) :: ier
113 spline_o%klookup1 = 3
114 spline_o%klookup2 = 3
116 spline_o%isHermite = 0
117 spline_o%isLinear = 0
118 spline_o%isHybrid = 0
122 allocate(spline_o%x1(n1), stat=iok)
124 allocate(spline_o%x2(n2), stat=iok)
126 allocate(spline_o%fspl(4,n1,n2), stat=iok)
128 allocate(spline_o%bcval1min(n2), stat=iok)
130 allocate(spline_o%bcval1max(n2), stat=iok)
132 allocate(spline_o%bcval2min(n1), stat=iok)
134 allocate(spline_o%bcval2max(n1), stat=iok)
136 allocate(spline_o%x1pkg(n1, 4), stat=iok)
138 allocate(spline_o%x2pkg(n2, 4), stat=iok)
143 spline_o%bcval1min(1:n2) = 0.0_ezspline_r8
144 spline_o%bcval1max(1:n2) = 0.0_ezspline_r8
147 spline_o%ibctype1(i) = -1
149 spline_o%ibctype1(i) = 0
151 spline_o%ibctype1(i) = 1
153 spline_o%ibctype1(i) = 2
156 spline_o%ibctype1(i) = 0
159 spline_o%bcval2min(1:n1) = 0.0_ezspline_r8
160 spline_o%bcval2max(1:n1) = 0.0_ezspline_r8
163 spline_o%ibctype2(i) = -1
165 spline_o%ibctype2(i) = 0
167 spline_o%ibctype2(i) = 1
169 spline_o%ibctype2(i) = 2
172 spline_o%ibctype2(i) = 0
176 if(spline_o%ibctype1(1)==-1 .OR. spline_o%ibctype1(2)==-1)
then
177 spline_o%ibctype1(1)=-1
178 spline_o%ibctype1(2)=-1
180 if(spline_o%ibctype2(1)==-1 .OR. spline_o%ibctype2(2)==-1)
then
181 spline_o%ibctype2(1)=-1
182 spline_o%ibctype2(2)=-1
187 spline_o%x1min = 0.0_ezspline_r8
188 spline_o%x1max = 1.0_ezspline_r8
189 if(bcs1(2)==-1) spline_o%x1max = ezspline_twopi_r8
191 spline_o%x1 = spline_o%x1min + (spline_o%x1max - spline_o%x1min)* &
192 & (/ (real(i-1,ezspline_r8)/real(spline_o%n1-1, ezspline_r8), i=1,spline_o%n1 ) /)
193 spline_o%x2min = 0.0_ezspline_r8
194 spline_o%x2max = 1.0_ezspline_r8
195 if(bcs2(2)==-1) spline_o%x2max = ezspline_twopi_r8
196 spline_o%x2 = spline_o%x2min + (spline_o%x2max - spline_o%x2min)* &
197 & (/ (real(i-1,ezspline_r8)/real(spline_o%n2-1, ezspline_r8), i=1,spline_o%n2 ) /)
202 end subroutine ezspline_init2_r8
207 subroutine ezspline_init3_r8(spline_o, n1, n2, n3, BCS1, BCS2, BCS3, ier)
210 type(EZspline3_r8) spline_o
211 integer,
intent(in) :: n1, n2, n3
212 integer,
intent(in) :: BCS1(2), BCS2(2), BCS3(2)
220 integer,
intent(out) :: ier
237 spline_o%klookup1 = 3
238 spline_o%klookup2 = 3
239 spline_o%klookup3 = 3
241 spline_o%isHermite = 0
242 spline_o%isLinear = 0
243 spline_o%isHybrid = 0
247 allocate(spline_o%x1(n1), stat=iok)
249 allocate(spline_o%x2(n2), stat=iok)
251 allocate(spline_o%x3(n3), stat=iok)
253 allocate(spline_o%fspl(8,n1,n2,n3), stat=iok)
255 allocate(spline_o%bcval1min(n2, n3), stat=iok)
257 allocate(spline_o%bcval1max(n2, n3), stat=iok)
259 allocate(spline_o%bcval2min(n1, n3), stat=iok)
261 allocate(spline_o%bcval2max(n1, n3), stat=iok)
263 allocate(spline_o%bcval3min(n1, n2), stat=iok)
265 allocate(spline_o%bcval3max(n1, n2), stat=iok)
267 allocate(spline_o%x1pkg(n1, 4), stat=iok)
269 allocate(spline_o%x2pkg(n2, 4), stat=iok)
271 allocate(spline_o%x3pkg(n3, 4), stat=iok)
276 spline_o%bcval1min(1:n2, 1:n3) = 0.0_ezspline_r8
277 spline_o%bcval1max(1:n2, 1:n3) = 0.0_ezspline_r8
280 spline_o%ibctype1(i) = -1
282 spline_o%ibctype1(i) = 0
284 spline_o%ibctype1(i) = 1
286 spline_o%ibctype1(i) = 2
289 spline_o%ibctype1(i) = 0
292 spline_o%bcval2min(1:n1, 1:n3) = 0.0_ezspline_r8
293 spline_o%bcval2max(1:n1, 1:n3) = 0.0_ezspline_r8
296 spline_o%ibctype2(i) = -1
298 spline_o%ibctype2(i) = 0
300 spline_o%ibctype2(i) = 1
302 spline_o%ibctype2(i) = 2
305 spline_o%ibctype2(i) = 0
308 spline_o%bcval3min(1:n1, 1:n2) = 0.0_ezspline_r8
309 spline_o%bcval3max(1:n1, 1:n2) = 0.0_ezspline_r8
312 spline_o%ibctype3(i) = -1
314 spline_o%ibctype3(i) = 0
316 spline_o%ibctype3(i) = 1
318 spline_o%ibctype3(i) = 2
321 spline_o%ibctype3(i) = 0
325 if(spline_o%ibctype1(1)==-1 .OR. spline_o%ibctype1(2)==-1)
then
326 spline_o%ibctype1(1)=-1
327 spline_o%ibctype1(2)=-1
329 if(spline_o%ibctype2(1)==-1 .OR. spline_o%ibctype2(2)==-1)
then
330 spline_o%ibctype2(1)=-1
331 spline_o%ibctype2(2)=-1
333 if(spline_o%ibctype3(1)==-1 .OR. spline_o%ibctype3(2)==-1)
then
334 spline_o%ibctype3(1)=-1
335 spline_o%ibctype3(2)=-1
341 spline_o%x1min = 0.0_ezspline_r8
342 spline_o%x1max = 1.0_ezspline_r8
343 if(bcs1(2)==-1) spline_o%x1max = ezspline_twopi_r8
345 spline_o%x1 = spline_o%x1min + (spline_o%x1max - spline_o%x1min)* &
346 & (/ (real(i-1,ezspline_r8)/real(spline_o%n1-1, ezspline_r8), i=1,spline_o%n1 ) /)
347 spline_o%x2min = 0.0_ezspline_r8
348 spline_o%x2max = 1.0_ezspline_r8
349 if(bcs2(2)==-1) spline_o%x2max = ezspline_twopi_r8
350 spline_o%x2 = spline_o%x2min + (spline_o%x2max - spline_o%x2min)* &
351 & (/ (real(i-1,ezspline_r8)/real(spline_o%n2-1, ezspline_r8), i=1,spline_o%n2 ) /)
353 spline_o%x3min = 0.0_ezspline_r8
354 spline_o%x3max = 1.0_ezspline_r8
355 if(bcs3(2)==-1) spline_o%x3max = ezspline_twopi_r8
356 spline_o%x3 = spline_o%x3min + (spline_o%x3max - spline_o%x3min)* &
357 & (/ (real(i-1,ezspline_r8)/real(spline_o%n3-1, ezspline_r8), i=1,spline_o%n3 ) /)
362 end subroutine ezspline_init3_r8
367 subroutine ezspline_init1_r4(spline_o, n1, BCS1, ier)
370 type(EZspline1_r4) spline_o
371 integer,
intent(in) :: n1
372 integer,
intent(in) :: BCS1(2)
379 integer,
intent(out) :: ier
394 spline_o%klookup1 = 3
396 spline_o%isHermite = 0
397 spline_o%isLinear = 0
400 allocate(spline_o%x1(n1), stat=iok)
402 allocate(spline_o%fspl(2,n1), stat=iok)
404 allocate(spline_o%x1pkg(n1, 4), stat=iok)
409 spline_o%bcval1min = 0.0_ezspline_r4
410 spline_o%bcval1max = 0.0_ezspline_r4
413 spline_o%ibctype1(i) = -1
415 spline_o%ibctype1(i) = 0
417 spline_o%ibctype1(i) = 1
419 spline_o%ibctype1(i) = 2
422 spline_o%ibctype1(i) = 0
426 if(spline_o%ibctype1(1)==-1 .OR. spline_o%ibctype1(2)==-1)
then
427 spline_o%ibctype1(1)=-1
428 spline_o%ibctype1(2)=-1
433 spline_o%x1min = 0.0_ezspline_r4
434 spline_o%x1max = 1.0_ezspline_r4
435 if(bcs1(2)==-1) spline_o%x1max = ezspline_twopi_r4
437 spline_o%x1 = spline_o%x1min + (spline_o%x1max - spline_o%x1min)* &
438 & (/ (real(i-1,ezspline_r4)/real(spline_o%n1-1, ezspline_r4), i=1,spline_o%n1 ) /)
443 end subroutine ezspline_init1_r4
448 subroutine ezspline_init2_r4(spline_o, n1, n2, BCS1, BCS2, ier)
451 type(EZspline2_r4) spline_o
452 integer,
intent(in) :: n1, n2
453 integer,
intent(in) :: BCS1(2), BCS2(2)
460 integer,
intent(out) :: ier
476 spline_o%klookup1 = 3
477 spline_o%klookup2 = 3
479 spline_o%isHermite = 0
480 spline_o%isLinear = 0
481 spline_o%isHybrid = 0
485 allocate(spline_o%x1(n1), stat=iok)
487 allocate(spline_o%x2(n2), stat=iok)
489 allocate(spline_o%fspl(4,n1,n2), stat=iok)
491 allocate(spline_o%bcval1min(n2), stat=iok)
493 allocate(spline_o%bcval1max(n2), stat=iok)
495 allocate(spline_o%bcval2min(n1), stat=iok)
497 allocate(spline_o%bcval2max(n1), stat=iok)
499 allocate(spline_o%x1pkg(n1, 4), stat=iok)
501 allocate(spline_o%x2pkg(n2, 4), stat=iok)
506 spline_o%bcval1min(1:n2) = 0.0_ezspline_r4
507 spline_o%bcval1max(1:n2) = 0.0_ezspline_r4
510 spline_o%ibctype1(i) = -1
512 spline_o%ibctype1(i) = 0
514 spline_o%ibctype1(i) = 1
516 spline_o%ibctype1(i) = 2
519 spline_o%ibctype1(i) = 0
522 spline_o%bcval2min(1:n1) = 0.0_ezspline_r4
523 spline_o%bcval2max(1:n1) = 0.0_ezspline_r4
526 spline_o%ibctype2(i) = -1
528 spline_o%ibctype2(i) = 0
530 spline_o%ibctype2(i) = 1
532 spline_o%ibctype2(i) = 2
535 spline_o%ibctype2(i) = 0
539 if(spline_o%ibctype1(1)==-1 .OR. spline_o%ibctype1(2)==-1)
then
540 spline_o%ibctype1(1)=-1
541 spline_o%ibctype1(2)=-1
543 if(spline_o%ibctype2(1)==-1 .OR. spline_o%ibctype2(2)==-1)
then
544 spline_o%ibctype2(1)=-1
545 spline_o%ibctype2(2)=-1
550 spline_o%x1min = 0.0_ezspline_r4
551 spline_o%x1max = 1.0_ezspline_r4
552 if(bcs1(2)==-1) spline_o%x1max = ezspline_twopi_r4
554 spline_o%x1 = spline_o%x1min + (spline_o%x1max - spline_o%x1min)* &
555 & (/ (real(i-1,ezspline_r4)/real(spline_o%n1-1, ezspline_r4), i=1,spline_o%n1 ) /)
556 spline_o%x2min = 0.0_ezspline_r4
557 spline_o%x2max = 1.0_ezspline_r4
558 if(bcs2(2)==-1) spline_o%x2max = ezspline_twopi_r4
559 spline_o%x2 = spline_o%x2min + (spline_o%x2max - spline_o%x2min)* &
560 & (/ (real(i-1,ezspline_r4)/real(spline_o%n2-1, ezspline_r4), i=1,spline_o%n2 ) /)
565 end subroutine ezspline_init2_r4
570 subroutine ezspline_init3_r4(spline_o, n1, n2, n3, BCS1, BCS2, BCS3, ier)
573 type(EZspline3_r4) spline_o
574 integer,
intent(in) :: n1, n2, n3
575 integer,
intent(in) :: BCS1(2), BCS2(2), BCS3(2)
583 integer,
intent(out) :: ier
600 spline_o%klookup1 = 3
601 spline_o%klookup2 = 3
602 spline_o%klookup3 = 3
604 spline_o%isHermite = 0
605 spline_o%isLinear = 0
606 spline_o%isHybrid = 0
610 allocate(spline_o%x1(n1), stat=iok)
612 allocate(spline_o%x2(n2), stat=iok)
614 allocate(spline_o%x3(n3), stat=iok)
616 allocate(spline_o%fspl(8,n1,n2,n3), stat=iok)
618 allocate(spline_o%bcval1min(n2, n3), stat=iok)
620 allocate(spline_o%bcval1max(n2, n3), stat=iok)
622 allocate(spline_o%bcval2min(n1, n3), stat=iok)
624 allocate(spline_o%bcval2max(n1, n3), stat=iok)
626 allocate(spline_o%bcval3min(n1, n2), stat=iok)
628 allocate(spline_o%bcval3max(n1, n2), stat=iok)
630 allocate(spline_o%x1pkg(n1, 4), stat=iok)
632 allocate(spline_o%x2pkg(n2, 4), stat=iok)
634 allocate(spline_o%x3pkg(n3, 4), stat=iok)
639 spline_o%bcval1min(1:n2, 1:n3) = 0.0_ezspline_r4
640 spline_o%bcval1max(1:n2, 1:n3) = 0.0_ezspline_r4
643 spline_o%ibctype1(i) = -1
645 spline_o%ibctype1(i) = 0
647 spline_o%ibctype1(i) = 1
649 spline_o%ibctype1(i) = 2
652 spline_o%ibctype1(i) = 0
655 spline_o%bcval2min(1:n1, 1:n3) = 0.0_ezspline_r4
656 spline_o%bcval2max(1:n1, 1:n3) = 0.0_ezspline_r4
659 spline_o%ibctype2(i) = -1
661 spline_o%ibctype2(i) = 0
663 spline_o%ibctype2(i) = 1
665 spline_o%ibctype2(i) = 2
668 spline_o%ibctype2(i) = 0
671 spline_o%bcval3min(1:n1, 1:n2) = 0.0_ezspline_r4
672 spline_o%bcval3max(1:n1, 1:n2) = 0.0_ezspline_r4
675 spline_o%ibctype3(i) = -1
677 spline_o%ibctype3(i) = 0
679 spline_o%ibctype3(i) = 1
681 spline_o%ibctype3(i) = 2
684 spline_o%ibctype3(i) = 0
688 if(spline_o%ibctype1(1)==-1 .OR. spline_o%ibctype1(2)==-1)
then
689 spline_o%ibctype1(1)=-1
690 spline_o%ibctype1(2)=-1
692 if(spline_o%ibctype2(1)==-1 .OR. spline_o%ibctype2(2)==-1)
then
693 spline_o%ibctype2(1)=-1
694 spline_o%ibctype2(2)=-1
696 if(spline_o%ibctype3(1)==-1 .OR. spline_o%ibctype3(2)==-1)
then
697 spline_o%ibctype3(1)=-1
698 spline_o%ibctype3(2)=-1
704 spline_o%x1min = 0.0_ezspline_r4
705 spline_o%x1max = 1.0_ezspline_r4
706 if(bcs1(2)==-1) spline_o%x1max = ezspline_twopi_r4
708 spline_o%x1 = spline_o%x1min + (spline_o%x1max - spline_o%x1min)* &
709 & (/ (real(i-1,ezspline_r4)/real(spline_o%n1-1, ezspline_r4), i=1,spline_o%n1 ) /)
710 spline_o%x2min = 0.0_ezspline_r4
711 spline_o%x2max = 1.0_ezspline_r4
712 if(bcs2(2)==-1) spline_o%x2max = ezspline_twopi_r4
713 spline_o%x2 = spline_o%x2min + (spline_o%x2max - spline_o%x2min)* &
714 & (/ (real(i-1,ezspline_r4)/real(spline_o%n2-1, ezspline_r4), i=1,spline_o%n2 ) /)
716 spline_o%x3min = 0.0_ezspline_r4
717 spline_o%x3max = 1.0_ezspline_r4
718 if(bcs3(2)==-1) spline_o%x3max = ezspline_twopi_r4
719 spline_o%x3 = spline_o%x3min + (spline_o%x3max - spline_o%x3min)* &
720 & (/ (real(i-1,ezspline_r4)/real(spline_o%n3-1, ezspline_r4), i=1,spline_o%n3 ) /)
725 end subroutine ezspline_init3_r4