16#include "scaleFElib.h"
51 integer,
intent(out) :: im
52 integer,
intent(out) :: jm
53 integer,
intent(in) :: nnode_h1d
55 select case(nnode_h1d)
95 integer,
intent(in) :: nnode_v
96 integer,
intent(in) :: im, jm
97 integer,
intent(in) :: ne2d
98 real(rp),
intent(in) :: d(im,nnode_v,nnode_v,jm,ne2d)
99 real(rp),
intent(inout) :: b(im,nnode_v,2,jm,ne2d)
100 real(rp),
intent(inout) :: g(im,nnode_v,jm,ne2d)
101 logical,
intent(in) :: is_top
106 call solve_nnode2_uv( d, b, g, nnode_v, jm, ne2d, is_top )
108 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
112 call solve_nnode3_uv( d, b, g, nnode_v, jm, ne2d, is_top )
114 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
118 call solve_nnode4_uv( d, b, g, nnode_v, jm, ne2d, is_top )
120 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
124 call solve_nnode5_uv( d, b, g, nnode_v, jm, ne2d, is_top )
126 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
130 call solve_nnode6_uv( d, b, g, nnode_v, jm, ne2d, is_top )
132 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
136 call solve_nnode7_uv( d, b, g, nnode_v, jm, ne2d, is_top )
138 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
142 call solve_nnode8_uv( d, b, g, nnode_v, jm, ne2d, is_top )
144 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
148 call solve_nnode9_uv( d, b, g, nnode_v, jm, ne2d, is_top )
150 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
154 call solve_nnode10_uv( d, b, g, nnode_v, jm, ne2d, is_top )
156 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
160 call solve_nnode11_uv( d, b, g, nnode_v, jm, ne2d, is_top )
162 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
166 call solve_nnode12_uv( d, b, g, nnode_v, jm, ne2d, is_top )
168 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
172 call solve_nnode13_uv( d, b, g, nnode_v, jm, ne2d, is_top )
174 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
178 call solve_nnode14_uv( d, b, g, nnode_v, jm, ne2d, is_top )
180 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
184 call solve_nnode15_uv( d, b, g, nnode_v, jm, ne2d, is_top )
186 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
190 call solve_nnode16_uv( d, b, g, nnode_v, jm, ne2d, is_top )
192 call solve_uv_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
195 log_info(
'atm_dyn_dgm_hevi_common_linalgebra_solve_uv',*)
"im > 16 is not supported. Check!"
204 integer,
intent(in) :: nnode_v
205 integer,
intent(in) :: im, jm
206 integer,
intent(in) :: ne2d
207 real(rp),
intent(in) :: d(im,3*nnode_v,3*nnode_v,jm,ne2d)
208 real(rp),
intent(inout) :: b(im,3*nnode_v,jm,ne2d)
209 real(rp),
intent(inout) :: g(im,3*nnode_v,3,jm,ne2d)
210 logical,
intent(in) :: is_top
215 call solve_nnode2_var3( d, b, g, nnode_v, jm, ne2d, is_top )
217 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
221 call solve_nnode3_var3( d, b, g, nnode_v, jm, ne2d, is_top )
223 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
227 call solve_nnode4_var3( d, b, g, nnode_v, jm, ne2d, is_top )
229 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
233 call solve_nnode5_var3( d, b, g, nnode_v, jm, ne2d, is_top )
235 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
239 call solve_nnode6_var3( d, b, g, nnode_v, jm, ne2d, is_top )
241 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
245 call solve_nnode7_var3( d, b, g, nnode_v, jm, ne2d, is_top )
247 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
251 call solve_nnode8_var3( d, b, g, nnode_v, jm, ne2d, is_top )
253 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
257 call solve_nnode9_var3( d, b, g, nnode_v, jm, ne2d, is_top )
259 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
263 call solve_nnode10_var3( d, b, g, nnode_v, jm, ne2d, is_top )
265 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
269 call solve_nnode11_var3( d, b, g, nnode_v, jm, ne2d, is_top )
271 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
275 call solve_nnode12_var3( d, b, g, nnode_v, jm, ne2d, is_top )
277 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
281 call solve_nnode13_var3( d, b, g, nnode_v, jm, ne2d, is_top )
283 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
287 call solve_nnode14_var3( d, b, g, nnode_v, jm, ne2d, is_top )
289 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
293 call solve_nnode15_var3( d, b, g, nnode_v, jm, ne2d, is_top )
295 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
299 call solve_nnode16_var3( d, b, g, nnode_v, jm, ne2d, is_top )
301 call solve_var3_im( d, b, g, nnode_v, im, jm, ne2d, is_top )
304 log_info(
'atm_dyn_dgm_hevi_common_linalgebra_solve',*)
"im > 16 is not supported. Check!"
312 subroutine solve_nnode2_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
314 integer,
intent(in) :: nnode_v
315 integer,
intent(in) :: jm
316 integer,
intent(in) :: ne2d
317 real(rp),
intent(in) :: d(4,2,2,jm,ne2d)
318 real(rp),
intent(inout) :: b(4,2,2,jm,ne2d)
319 real(rp),
intent(inout) :: g(4,2,jm,ne2d)
320 logical,
intent(in) :: is_top
324 integer :: k, i, j, v, r
330 real(rp) :: bb(4,3,2)
331 real(rp) :: tmpb(4,3)
338 a(:,:,:) = d(:,:,:,v2,ke_xy)
340 tmpv(:) = abs(a(:,k,k))
345 if ( tmp > tmpv(v) )
then
362 tmpv(:) = 1.0_rp / a(:,k,k)
365 a(:,i,k) = a(:,i,k) * tmpv(:)
370 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
381 tmp = b(v,i,1,v2,ke_xy)
382 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
383 b(v,ip,1,v2,ke_xy) = tmp
384 tmp = b(v,i,2,v2,ke_xy)
385 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
386 b(v,ip,2,v2,ke_xy) = tmp
391 tmpv(:) = b(:,i,1,v2,ke_xy)
392 tmpv2(:) = b(:,i,2,v2,ke_xy)
394 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
395 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
397 b(:,i,1,v2,ke_xy) = tmpv(:)
398 b(:,i,2,v2,ke_xy) = tmpv2(:)
401 tmpv(:) = b(:,i,1,v2,ke_xy)
402 tmpv2(:) = b(:,i,2,v2,ke_xy)
404 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
405 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
407 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
408 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
415 tmp = b(v,i,1,v2,ke_xy)
416 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
417 b(v,ip,1,v2,ke_xy) = tmp
418 tmp = b(v,i,2,v2,ke_xy)
419 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
420 b(v,ip,2,v2,ke_xy) = tmp
422 tmp = g(v,i,v2,ke_xy)
423 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
424 g(v,ip,v2,ke_xy) = tmp
430 bb(v,1,i) = b(v,i,1,v2,ke_xy)
431 bb(v,2,i) = b(v,i,2,v2,ke_xy)
432 bb(v,3,i) = g(v,i,v2,ke_xy)
436 tmpb(:,:) = bb(:,:,i)
439 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
442 bb(:,:,i) = tmpb(:,:)
445 tmpb(:,:) = bb(:,:,i)
448 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
452 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
456 b(:,i,1,v2,ke_xy) = bb(:,1,i)
457 b(:,i,2,v2,ke_xy) = bb(:,2,i)
458 g(:,i,v2,ke_xy) = bb(:,3,i)
464 end subroutine solve_nnode2_uv
466 subroutine solve_nnode2_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
468 integer,
intent(in) :: nnode_v
469 integer,
intent(in) :: jm
470 integer,
intent(in) :: ne2d
471 real(rp),
intent(in) :: d(4,6,6,jm,ne2d)
472 real(rp),
intent(inout) :: b(4,6,jm,ne2d)
473 real(rp),
intent(inout) :: g(4,6,3,jm,ne2d)
474 logical,
intent(in) :: is_top
478 integer :: k, i, j, v, r
483 real(rp) :: bb(4,4,6)
484 real(rp) :: tmpb(4,4)
491 a(:,:,:) = d(:,:,:,v2,ke_xy)
493 tmpv(:) = abs(a(:,k,k))
498 if ( tmp > tmpv(v) )
then
515 tmpv(:) = 1.0_rp / a(:,k,k)
519 a(v,i,k) = a(v,i,k) * tmpv(v)
525 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
536 tmp = b(v,i,v2,ke_xy)
537 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
538 b(v,ip,v2,ke_xy) = tmp
543 tmpv(:) = b(:,i,v2,ke_xy)
545 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
547 b(:,i,v2,ke_xy) = tmpv(:)
550 tmpv(:) = b(:,i,v2,ke_xy)
552 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
554 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
561 tmp = b(v,i,v2,ke_xy)
562 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
563 b(v,ip,v2,ke_xy) = tmp
565 tmp = g(v,i,1,v2,ke_xy)
566 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
567 g(v,ip,1,v2,ke_xy) = tmp
568 tmp = g(v,i,2,v2,ke_xy)
569 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
570 g(v,ip,2,v2,ke_xy) = tmp
571 tmp = g(v,i,3,v2,ke_xy)
572 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
573 g(v,ip,3,v2,ke_xy) = tmp
579 bb(v,1,i) = b(v,i,v2,ke_xy)
580 bb(v,2,i) = g(v,i,1,v2,ke_xy)
581 bb(v,3,i) = g(v,i,2,v2,ke_xy)
582 bb(v,4,i) = g(v,i,3,v2,ke_xy)
586 tmpb(:,:) = bb(:,:,i)
589 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
592 bb(:,:,i) = tmpb(:,:)
595 tmpb(:,:) = bb(:,:,i)
598 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
602 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
606 b(:,i,v2,ke_xy) = bb(:,1,i)
607 g(:,i,1,v2,ke_xy) = bb(:,2,i)
608 g(:,i,2,v2,ke_xy) = bb(:,3,i)
609 g(:,i,3,v2,ke_xy) = bb(:,4,i)
615 end subroutine solve_nnode2_var3
617 subroutine solve_nnode3_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
619 integer,
intent(in) :: nnode_v
620 integer,
intent(in) :: jm
621 integer,
intent(in) :: ne2d
622 real(rp),
intent(in) :: d(9,3,3,jm,ne2d)
623 real(rp),
intent(inout) :: b(9,3,2,jm,ne2d)
624 real(rp),
intent(inout) :: g(9,3,jm,ne2d)
625 logical,
intent(in) :: is_top
629 integer :: k, i, j, v, r
635 real(rp) :: bb(9,3,3)
636 real(rp) :: tmpb(9,3)
643 a(:,:,:) = d(:,:,:,v2,ke_xy)
645 tmpv(:) = abs(a(:,k,k))
650 if ( tmp > tmpv(v) )
then
667 tmpv(:) = 1.0_rp / a(:,k,k)
670 a(:,i,k) = a(:,i,k) * tmpv(:)
675 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
686 tmp = b(v,i,1,v2,ke_xy)
687 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
688 b(v,ip,1,v2,ke_xy) = tmp
689 tmp = b(v,i,2,v2,ke_xy)
690 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
691 b(v,ip,2,v2,ke_xy) = tmp
696 tmpv(:) = b(:,i,1,v2,ke_xy)
697 tmpv2(:) = b(:,i,2,v2,ke_xy)
699 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
700 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
702 b(:,i,1,v2,ke_xy) = tmpv(:)
703 b(:,i,2,v2,ke_xy) = tmpv2(:)
706 tmpv(:) = b(:,i,1,v2,ke_xy)
707 tmpv2(:) = b(:,i,2,v2,ke_xy)
709 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
710 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
712 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
713 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
720 tmp = b(v,i,1,v2,ke_xy)
721 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
722 b(v,ip,1,v2,ke_xy) = tmp
723 tmp = b(v,i,2,v2,ke_xy)
724 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
725 b(v,ip,2,v2,ke_xy) = tmp
727 tmp = g(v,i,v2,ke_xy)
728 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
729 g(v,ip,v2,ke_xy) = tmp
735 bb(v,1,i) = b(v,i,1,v2,ke_xy)
736 bb(v,2,i) = b(v,i,2,v2,ke_xy)
737 bb(v,3,i) = g(v,i,v2,ke_xy)
741 tmpb(:,:) = bb(:,:,i)
744 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
747 bb(:,:,i) = tmpb(:,:)
750 tmpb(:,:) = bb(:,:,i)
753 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
757 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
761 b(:,i,1,v2,ke_xy) = bb(:,1,i)
762 b(:,i,2,v2,ke_xy) = bb(:,2,i)
763 g(:,i,v2,ke_xy) = bb(:,3,i)
769 end subroutine solve_nnode3_uv
771 subroutine solve_nnode3_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
773 integer,
intent(in) :: nnode_v
774 integer,
intent(in) :: jm
775 integer,
intent(in) :: ne2d
776 real(rp),
intent(in) :: d(9,9,9,jm,ne2d)
777 real(rp),
intent(inout) :: b(9,9,jm,ne2d)
778 real(rp),
intent(inout) :: g(9,9,3,jm,ne2d)
779 logical,
intent(in) :: is_top
783 integer :: k, i, j, v, r
788 real(rp) :: bb(9,4,9)
789 real(rp) :: tmpb(9,4)
796 a(:,:,:) = d(:,:,:,v2,ke_xy)
798 tmpv(:) = abs(a(:,k,k))
803 if ( tmp > tmpv(v) )
then
820 tmpv(:) = 1.0_rp / a(:,k,k)
824 a(v,i,k) = a(v,i,k) * tmpv(v)
830 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
841 tmp = b(v,i,v2,ke_xy)
842 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
843 b(v,ip,v2,ke_xy) = tmp
848 tmpv(:) = b(:,i,v2,ke_xy)
850 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
852 b(:,i,v2,ke_xy) = tmpv(:)
855 tmpv(:) = b(:,i,v2,ke_xy)
857 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
859 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
866 tmp = b(v,i,v2,ke_xy)
867 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
868 b(v,ip,v2,ke_xy) = tmp
870 tmp = g(v,i,1,v2,ke_xy)
871 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
872 g(v,ip,1,v2,ke_xy) = tmp
873 tmp = g(v,i,2,v2,ke_xy)
874 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
875 g(v,ip,2,v2,ke_xy) = tmp
876 tmp = g(v,i,3,v2,ke_xy)
877 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
878 g(v,ip,3,v2,ke_xy) = tmp
884 bb(v,1,i) = b(v,i,v2,ke_xy)
885 bb(v,2,i) = g(v,i,1,v2,ke_xy)
886 bb(v,3,i) = g(v,i,2,v2,ke_xy)
887 bb(v,4,i) = g(v,i,3,v2,ke_xy)
891 tmpb(:,:) = bb(:,:,i)
894 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
897 bb(:,:,i) = tmpb(:,:)
900 tmpb(:,:) = bb(:,:,i)
903 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
907 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
911 b(:,i,v2,ke_xy) = bb(:,1,i)
912 g(:,i,1,v2,ke_xy) = bb(:,2,i)
913 g(:,i,2,v2,ke_xy) = bb(:,3,i)
914 g(:,i,3,v2,ke_xy) = bb(:,4,i)
920 end subroutine solve_nnode3_var3
922 subroutine solve_nnode4_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
924 integer,
intent(in) :: nnode_v
925 integer,
intent(in) :: jm
926 integer,
intent(in) :: ne2d
927 real(rp),
intent(in) :: d(16,4,4,jm,ne2d)
928 real(rp),
intent(inout) :: b(16,4,2,jm,ne2d)
929 real(rp),
intent(inout) :: g(16,4,jm,ne2d)
930 logical,
intent(in) :: is_top
934 integer :: k, i, j, v, r
936 integer :: ipiv(16,4)
938 real(rp) :: tmpv2(16)
939 real(rp) :: a(16,4,4)
940 real(rp) :: bb(16,3,4)
941 real(rp) :: tmpb(16,3)
948 a(:,:,:) = d(:,:,:,v2,ke_xy)
950 tmpv(:) = abs(a(:,k,k))
955 if ( tmp > tmpv(v) )
then
972 tmpv(:) = 1.0_rp / a(:,k,k)
975 a(:,i,k) = a(:,i,k) * tmpv(:)
980 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
991 tmp = b(v,i,1,v2,ke_xy)
992 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
993 b(v,ip,1,v2,ke_xy) = tmp
994 tmp = b(v,i,2,v2,ke_xy)
995 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
996 b(v,ip,2,v2,ke_xy) = tmp
1001 tmpv(:) = b(:,i,1,v2,ke_xy)
1002 tmpv2(:) = b(:,i,2,v2,ke_xy)
1004 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
1005 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
1007 b(:,i,1,v2,ke_xy) = tmpv(:)
1008 b(:,i,2,v2,ke_xy) = tmpv2(:)
1011 tmpv(:) = b(:,i,1,v2,ke_xy)
1012 tmpv2(:) = b(:,i,2,v2,ke_xy)
1014 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
1015 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
1017 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
1018 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
1025 tmp = b(v,i,1,v2,ke_xy)
1026 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
1027 b(v,ip,1,v2,ke_xy) = tmp
1028 tmp = b(v,i,2,v2,ke_xy)
1029 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
1030 b(v,ip,2,v2,ke_xy) = tmp
1032 tmp = g(v,i,v2,ke_xy)
1033 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
1034 g(v,ip,v2,ke_xy) = tmp
1040 bb(v,1,i) = b(v,i,1,v2,ke_xy)
1041 bb(v,2,i) = b(v,i,2,v2,ke_xy)
1042 bb(v,3,i) = g(v,i,v2,ke_xy)
1046 tmpb(:,:) = bb(:,:,i)
1049 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
1052 bb(:,:,i) = tmpb(:,:)
1055 tmpb(:,:) = bb(:,:,i)
1058 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
1062 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
1066 b(:,i,1,v2,ke_xy) = bb(:,1,i)
1067 b(:,i,2,v2,ke_xy) = bb(:,2,i)
1068 g(:,i,v2,ke_xy) = bb(:,3,i)
1074 end subroutine solve_nnode4_uv
1076 subroutine solve_nnode4_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
1078 integer,
intent(in) :: nnode_v
1079 integer,
intent(in) :: jm
1080 integer,
intent(in) :: ne2d
1081 real(rp),
intent(in) :: d(16,12,12,jm,ne2d)
1082 real(rp),
intent(inout) :: b(16,12,jm,ne2d)
1083 real(rp),
intent(inout) :: g(16,12,3,jm,ne2d)
1084 logical,
intent(in) :: is_top
1088 integer :: k, i, j, v, r
1090 integer :: ipiv(16,12)
1091 real(rp) :: tmpv(16)
1092 real(rp) :: a(16,12,12)
1093 real(rp) :: bb(16,4,12)
1094 real(rp) :: tmpb(16,4)
1101 a(:,:,:) = d(:,:,:,v2,ke_xy)
1103 tmpv(:) = abs(a(:,k,k))
1108 if ( tmp > tmpv(v) )
then
1119 a(v,k,j) = a(v,ip,j)
1125 tmpv(:) = 1.0_rp / a(:,k,k)
1129 a(v,i,k) = a(v,i,k) * tmpv(v)
1135 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
1146 tmp = b(v,i,v2,ke_xy)
1147 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
1148 b(v,ip,v2,ke_xy) = tmp
1153 tmpv(:) = b(:,i,v2,ke_xy)
1155 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
1157 b(:,i,v2,ke_xy) = tmpv(:)
1160 tmpv(:) = b(:,i,v2,ke_xy)
1162 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
1164 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
1171 tmp = b(v,i,v2,ke_xy)
1172 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
1173 b(v,ip,v2,ke_xy) = tmp
1175 tmp = g(v,i,1,v2,ke_xy)
1176 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
1177 g(v,ip,1,v2,ke_xy) = tmp
1178 tmp = g(v,i,2,v2,ke_xy)
1179 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
1180 g(v,ip,2,v2,ke_xy) = tmp
1181 tmp = g(v,i,3,v2,ke_xy)
1182 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
1183 g(v,ip,3,v2,ke_xy) = tmp
1189 bb(v,1,i) = b(v,i,v2,ke_xy)
1190 bb(v,2,i) = g(v,i,1,v2,ke_xy)
1191 bb(v,3,i) = g(v,i,2,v2,ke_xy)
1192 bb(v,4,i) = g(v,i,3,v2,ke_xy)
1196 tmpb(:,:) = bb(:,:,i)
1199 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
1202 bb(:,:,i) = tmpb(:,:)
1205 tmpb(:,:) = bb(:,:,i)
1208 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
1212 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
1216 b(:,i,v2,ke_xy) = bb(:,1,i)
1217 g(:,i,1,v2,ke_xy) = bb(:,2,i)
1218 g(:,i,2,v2,ke_xy) = bb(:,3,i)
1219 g(:,i,3,v2,ke_xy) = bb(:,4,i)
1225 end subroutine solve_nnode4_var3
1227 subroutine solve_nnode5_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
1229 integer,
intent(in) :: nnode_v
1230 integer,
intent(in) :: jm
1231 integer,
intent(in) :: ne2d
1232 real(rp),
intent(in) :: d(5,5,5,jm,ne2d)
1233 real(rp),
intent(inout) :: b(5,5,2,jm,ne2d)
1234 real(rp),
intent(inout) :: g(5,5,jm,ne2d)
1235 logical,
intent(in) :: is_top
1239 integer :: k, i, j, v, r
1241 integer :: ipiv(5,5)
1243 real(rp) :: tmpv2(5)
1244 real(rp) :: a(5,5,5)
1245 real(rp) :: bb(5,3,5)
1246 real(rp) :: tmpb(5,3)
1253 a(:,:,:) = d(:,:,:,v2,ke_xy)
1255 tmpv(:) = abs(a(:,k,k))
1260 if ( tmp > tmpv(v) )
then
1271 a(v,k,j) = a(v,ip,j)
1277 tmpv(:) = 1.0_rp / a(:,k,k)
1280 a(:,i,k) = a(:,i,k) * tmpv(:)
1285 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
1296 tmp = b(v,i,1,v2,ke_xy)
1297 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
1298 b(v,ip,1,v2,ke_xy) = tmp
1299 tmp = b(v,i,2,v2,ke_xy)
1300 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
1301 b(v,ip,2,v2,ke_xy) = tmp
1306 tmpv(:) = b(:,i,1,v2,ke_xy)
1307 tmpv2(:) = b(:,i,2,v2,ke_xy)
1309 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
1310 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
1312 b(:,i,1,v2,ke_xy) = tmpv(:)
1313 b(:,i,2,v2,ke_xy) = tmpv2(:)
1316 tmpv(:) = b(:,i,1,v2,ke_xy)
1317 tmpv2(:) = b(:,i,2,v2,ke_xy)
1319 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
1320 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
1322 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
1323 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
1330 tmp = b(v,i,1,v2,ke_xy)
1331 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
1332 b(v,ip,1,v2,ke_xy) = tmp
1333 tmp = b(v,i,2,v2,ke_xy)
1334 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
1335 b(v,ip,2,v2,ke_xy) = tmp
1337 tmp = g(v,i,v2,ke_xy)
1338 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
1339 g(v,ip,v2,ke_xy) = tmp
1345 bb(v,1,i) = b(v,i,1,v2,ke_xy)
1346 bb(v,2,i) = b(v,i,2,v2,ke_xy)
1347 bb(v,3,i) = g(v,i,v2,ke_xy)
1351 tmpb(:,:) = bb(:,:,i)
1354 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
1357 bb(:,:,i) = tmpb(:,:)
1360 tmpb(:,:) = bb(:,:,i)
1363 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
1367 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
1371 b(:,i,1,v2,ke_xy) = bb(:,1,i)
1372 b(:,i,2,v2,ke_xy) = bb(:,2,i)
1373 g(:,i,v2,ke_xy) = bb(:,3,i)
1379 end subroutine solve_nnode5_uv
1381 subroutine solve_nnode5_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
1383 integer,
intent(in) :: nnode_v
1384 integer,
intent(in) :: jm
1385 integer,
intent(in) :: ne2d
1386 real(rp),
intent(in) :: d(5,15,15,jm,ne2d)
1387 real(rp),
intent(inout) :: b(5,15,jm,ne2d)
1388 real(rp),
intent(inout) :: g(5,15,3,jm,ne2d)
1389 logical,
intent(in) :: is_top
1393 integer :: k, i, j, v, r
1395 integer :: ipiv(5,15)
1397 real(rp) :: a(5,15,15)
1398 real(rp) :: bb(5,4,15)
1399 real(rp) :: tmpb(5,4)
1406 a(:,:,:) = d(:,:,:,v2,ke_xy)
1408 tmpv(:) = abs(a(:,k,k))
1413 if ( tmp > tmpv(v) )
then
1424 a(v,k,j) = a(v,ip,j)
1430 tmpv(:) = 1.0_rp / a(:,k,k)
1434 a(v,i,k) = a(v,i,k) * tmpv(v)
1440 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
1451 tmp = b(v,i,v2,ke_xy)
1452 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
1453 b(v,ip,v2,ke_xy) = tmp
1458 tmpv(:) = b(:,i,v2,ke_xy)
1460 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
1462 b(:,i,v2,ke_xy) = tmpv(:)
1465 tmpv(:) = b(:,i,v2,ke_xy)
1467 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
1469 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
1476 tmp = b(v,i,v2,ke_xy)
1477 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
1478 b(v,ip,v2,ke_xy) = tmp
1480 tmp = g(v,i,1,v2,ke_xy)
1481 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
1482 g(v,ip,1,v2,ke_xy) = tmp
1483 tmp = g(v,i,2,v2,ke_xy)
1484 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
1485 g(v,ip,2,v2,ke_xy) = tmp
1486 tmp = g(v,i,3,v2,ke_xy)
1487 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
1488 g(v,ip,3,v2,ke_xy) = tmp
1494 bb(v,1,i) = b(v,i,v2,ke_xy)
1495 bb(v,2,i) = g(v,i,1,v2,ke_xy)
1496 bb(v,3,i) = g(v,i,2,v2,ke_xy)
1497 bb(v,4,i) = g(v,i,3,v2,ke_xy)
1501 tmpb(:,:) = bb(:,:,i)
1504 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
1507 bb(:,:,i) = tmpb(:,:)
1510 tmpb(:,:) = bb(:,:,i)
1513 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
1517 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
1521 b(:,i,v2,ke_xy) = bb(:,1,i)
1522 g(:,i,1,v2,ke_xy) = bb(:,2,i)
1523 g(:,i,2,v2,ke_xy) = bb(:,3,i)
1524 g(:,i,3,v2,ke_xy) = bb(:,4,i)
1530 end subroutine solve_nnode5_var3
1532 subroutine solve_nnode6_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
1534 integer,
intent(in) :: nnode_v
1535 integer,
intent(in) :: jm
1536 integer,
intent(in) :: ne2d
1537 real(rp),
intent(in) :: d(6,6,6,jm,ne2d)
1538 real(rp),
intent(inout) :: b(6,6,2,jm,ne2d)
1539 real(rp),
intent(inout) :: g(6,6,jm,ne2d)
1540 logical,
intent(in) :: is_top
1544 integer :: k, i, j, v, r
1546 integer :: ipiv(6,6)
1548 real(rp) :: tmpv2(6)
1549 real(rp) :: a(6,6,6)
1550 real(rp) :: bb(6,3,6)
1551 real(rp) :: tmpb(6,3)
1558 a(:,:,:) = d(:,:,:,v2,ke_xy)
1560 tmpv(:) = abs(a(:,k,k))
1565 if ( tmp > tmpv(v) )
then
1576 a(v,k,j) = a(v,ip,j)
1582 tmpv(:) = 1.0_rp / a(:,k,k)
1585 a(:,i,k) = a(:,i,k) * tmpv(:)
1590 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
1601 tmp = b(v,i,1,v2,ke_xy)
1602 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
1603 b(v,ip,1,v2,ke_xy) = tmp
1604 tmp = b(v,i,2,v2,ke_xy)
1605 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
1606 b(v,ip,2,v2,ke_xy) = tmp
1611 tmpv(:) = b(:,i,1,v2,ke_xy)
1612 tmpv2(:) = b(:,i,2,v2,ke_xy)
1614 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
1615 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
1617 b(:,i,1,v2,ke_xy) = tmpv(:)
1618 b(:,i,2,v2,ke_xy) = tmpv2(:)
1621 tmpv(:) = b(:,i,1,v2,ke_xy)
1622 tmpv2(:) = b(:,i,2,v2,ke_xy)
1624 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
1625 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
1627 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
1628 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
1635 tmp = b(v,i,1,v2,ke_xy)
1636 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
1637 b(v,ip,1,v2,ke_xy) = tmp
1638 tmp = b(v,i,2,v2,ke_xy)
1639 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
1640 b(v,ip,2,v2,ke_xy) = tmp
1642 tmp = g(v,i,v2,ke_xy)
1643 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
1644 g(v,ip,v2,ke_xy) = tmp
1650 bb(v,1,i) = b(v,i,1,v2,ke_xy)
1651 bb(v,2,i) = b(v,i,2,v2,ke_xy)
1652 bb(v,3,i) = g(v,i,v2,ke_xy)
1656 tmpb(:,:) = bb(:,:,i)
1659 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
1662 bb(:,:,i) = tmpb(:,:)
1665 tmpb(:,:) = bb(:,:,i)
1668 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
1672 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
1676 b(:,i,1,v2,ke_xy) = bb(:,1,i)
1677 b(:,i,2,v2,ke_xy) = bb(:,2,i)
1678 g(:,i,v2,ke_xy) = bb(:,3,i)
1684 end subroutine solve_nnode6_uv
1686 subroutine solve_nnode6_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
1688 integer,
intent(in) :: nnode_v
1689 integer,
intent(in) :: jm
1690 integer,
intent(in) :: ne2d
1691 real(rp),
intent(in) :: d(6,18,18,jm,ne2d)
1692 real(rp),
intent(inout) :: b(6,18,jm,ne2d)
1693 real(rp),
intent(inout) :: g(6,18,3,jm,ne2d)
1694 logical,
intent(in) :: is_top
1698 integer :: k, i, j, v, r
1700 integer :: ipiv(6,18)
1702 real(rp) :: a(6,18,18)
1703 real(rp) :: bb(6,4,18)
1704 real(rp) :: tmpb(6,4)
1711 a(:,:,:) = d(:,:,:,v2,ke_xy)
1713 tmpv(:) = abs(a(:,k,k))
1718 if ( tmp > tmpv(v) )
then
1729 a(v,k,j) = a(v,ip,j)
1735 tmpv(:) = 1.0_rp / a(:,k,k)
1739 a(v,i,k) = a(v,i,k) * tmpv(v)
1745 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
1756 tmp = b(v,i,v2,ke_xy)
1757 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
1758 b(v,ip,v2,ke_xy) = tmp
1763 tmpv(:) = b(:,i,v2,ke_xy)
1765 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
1767 b(:,i,v2,ke_xy) = tmpv(:)
1770 tmpv(:) = b(:,i,v2,ke_xy)
1772 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
1774 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
1781 tmp = b(v,i,v2,ke_xy)
1782 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
1783 b(v,ip,v2,ke_xy) = tmp
1785 tmp = g(v,i,1,v2,ke_xy)
1786 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
1787 g(v,ip,1,v2,ke_xy) = tmp
1788 tmp = g(v,i,2,v2,ke_xy)
1789 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
1790 g(v,ip,2,v2,ke_xy) = tmp
1791 tmp = g(v,i,3,v2,ke_xy)
1792 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
1793 g(v,ip,3,v2,ke_xy) = tmp
1799 bb(v,1,i) = b(v,i,v2,ke_xy)
1800 bb(v,2,i) = g(v,i,1,v2,ke_xy)
1801 bb(v,3,i) = g(v,i,2,v2,ke_xy)
1802 bb(v,4,i) = g(v,i,3,v2,ke_xy)
1806 tmpb(:,:) = bb(:,:,i)
1809 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
1812 bb(:,:,i) = tmpb(:,:)
1815 tmpb(:,:) = bb(:,:,i)
1818 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
1822 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
1826 b(:,i,v2,ke_xy) = bb(:,1,i)
1827 g(:,i,1,v2,ke_xy) = bb(:,2,i)
1828 g(:,i,2,v2,ke_xy) = bb(:,3,i)
1829 g(:,i,3,v2,ke_xy) = bb(:,4,i)
1835 end subroutine solve_nnode6_var3
1837 subroutine solve_nnode7_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
1839 integer,
intent(in) :: nnode_v
1840 integer,
intent(in) :: jm
1841 integer,
intent(in) :: ne2d
1842 real(rp),
intent(in) :: d(7,7,7,jm,ne2d)
1843 real(rp),
intent(inout) :: b(7,7,2,jm,ne2d)
1844 real(rp),
intent(inout) :: g(7,7,jm,ne2d)
1845 logical,
intent(in) :: is_top
1849 integer :: k, i, j, v, r
1851 integer :: ipiv(7,7)
1853 real(rp) :: tmpv2(7)
1854 real(rp) :: a(7,7,7)
1855 real(rp) :: bb(7,3,7)
1856 real(rp) :: tmpb(7,3)
1863 a(:,:,:) = d(:,:,:,v2,ke_xy)
1865 tmpv(:) = abs(a(:,k,k))
1870 if ( tmp > tmpv(v) )
then
1881 a(v,k,j) = a(v,ip,j)
1887 tmpv(:) = 1.0_rp / a(:,k,k)
1890 a(:,i,k) = a(:,i,k) * tmpv(:)
1895 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
1906 tmp = b(v,i,1,v2,ke_xy)
1907 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
1908 b(v,ip,1,v2,ke_xy) = tmp
1909 tmp = b(v,i,2,v2,ke_xy)
1910 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
1911 b(v,ip,2,v2,ke_xy) = tmp
1916 tmpv(:) = b(:,i,1,v2,ke_xy)
1917 tmpv2(:) = b(:,i,2,v2,ke_xy)
1919 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
1920 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
1922 b(:,i,1,v2,ke_xy) = tmpv(:)
1923 b(:,i,2,v2,ke_xy) = tmpv2(:)
1926 tmpv(:) = b(:,i,1,v2,ke_xy)
1927 tmpv2(:) = b(:,i,2,v2,ke_xy)
1929 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
1930 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
1932 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
1933 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
1940 tmp = b(v,i,1,v2,ke_xy)
1941 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
1942 b(v,ip,1,v2,ke_xy) = tmp
1943 tmp = b(v,i,2,v2,ke_xy)
1944 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
1945 b(v,ip,2,v2,ke_xy) = tmp
1947 tmp = g(v,i,v2,ke_xy)
1948 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
1949 g(v,ip,v2,ke_xy) = tmp
1955 bb(v,1,i) = b(v,i,1,v2,ke_xy)
1956 bb(v,2,i) = b(v,i,2,v2,ke_xy)
1957 bb(v,3,i) = g(v,i,v2,ke_xy)
1961 tmpb(:,:) = bb(:,:,i)
1964 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
1967 bb(:,:,i) = tmpb(:,:)
1970 tmpb(:,:) = bb(:,:,i)
1973 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
1977 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
1981 b(:,i,1,v2,ke_xy) = bb(:,1,i)
1982 b(:,i,2,v2,ke_xy) = bb(:,2,i)
1983 g(:,i,v2,ke_xy) = bb(:,3,i)
1989 end subroutine solve_nnode7_uv
1991 subroutine solve_nnode7_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
1993 integer,
intent(in) :: nnode_v
1994 integer,
intent(in) :: jm
1995 integer,
intent(in) :: ne2d
1996 real(rp),
intent(in) :: d(7,21,21,jm,ne2d)
1997 real(rp),
intent(inout) :: b(7,21,jm,ne2d)
1998 real(rp),
intent(inout) :: g(7,21,3,jm,ne2d)
1999 logical,
intent(in) :: is_top
2003 integer :: k, i, j, v, r
2005 integer :: ipiv(7,21)
2007 real(rp) :: a(7,21,21)
2008 real(rp) :: bb(7,4,21)
2009 real(rp) :: tmpb(7,4)
2016 a(:,:,:) = d(:,:,:,v2,ke_xy)
2018 tmpv(:) = abs(a(:,k,k))
2023 if ( tmp > tmpv(v) )
then
2034 a(v,k,j) = a(v,ip,j)
2040 tmpv(:) = 1.0_rp / a(:,k,k)
2044 a(v,i,k) = a(v,i,k) * tmpv(v)
2050 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
2061 tmp = b(v,i,v2,ke_xy)
2062 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
2063 b(v,ip,v2,ke_xy) = tmp
2068 tmpv(:) = b(:,i,v2,ke_xy)
2070 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
2072 b(:,i,v2,ke_xy) = tmpv(:)
2075 tmpv(:) = b(:,i,v2,ke_xy)
2077 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
2079 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
2086 tmp = b(v,i,v2,ke_xy)
2087 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
2088 b(v,ip,v2,ke_xy) = tmp
2090 tmp = g(v,i,1,v2,ke_xy)
2091 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
2092 g(v,ip,1,v2,ke_xy) = tmp
2093 tmp = g(v,i,2,v2,ke_xy)
2094 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
2095 g(v,ip,2,v2,ke_xy) = tmp
2096 tmp = g(v,i,3,v2,ke_xy)
2097 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
2098 g(v,ip,3,v2,ke_xy) = tmp
2104 bb(v,1,i) = b(v,i,v2,ke_xy)
2105 bb(v,2,i) = g(v,i,1,v2,ke_xy)
2106 bb(v,3,i) = g(v,i,2,v2,ke_xy)
2107 bb(v,4,i) = g(v,i,3,v2,ke_xy)
2111 tmpb(:,:) = bb(:,:,i)
2114 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
2117 bb(:,:,i) = tmpb(:,:)
2120 tmpb(:,:) = bb(:,:,i)
2123 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
2127 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
2131 b(:,i,v2,ke_xy) = bb(:,1,i)
2132 g(:,i,1,v2,ke_xy) = bb(:,2,i)
2133 g(:,i,2,v2,ke_xy) = bb(:,3,i)
2134 g(:,i,3,v2,ke_xy) = bb(:,4,i)
2140 end subroutine solve_nnode7_var3
2142 subroutine solve_nnode8_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
2144 integer,
intent(in) :: nnode_v
2145 integer,
intent(in) :: jm
2146 integer,
intent(in) :: ne2d
2147 real(rp),
intent(in) :: d(8,8,8,jm,ne2d)
2148 real(rp),
intent(inout) :: b(8,8,2,jm,ne2d)
2149 real(rp),
intent(inout) :: g(8,8,jm,ne2d)
2150 logical,
intent(in) :: is_top
2154 integer :: k, i, j, v, r
2156 integer :: ipiv(8,8)
2158 real(rp) :: tmpv2(8)
2159 real(rp) :: a(8,8,8)
2160 real(rp) :: bb(8,3,8)
2161 real(rp) :: tmpb(8,3)
2168 a(:,:,:) = d(:,:,:,v2,ke_xy)
2170 tmpv(:) = abs(a(:,k,k))
2175 if ( tmp > tmpv(v) )
then
2186 a(v,k,j) = a(v,ip,j)
2192 tmpv(:) = 1.0_rp / a(:,k,k)
2195 a(:,i,k) = a(:,i,k) * tmpv(:)
2200 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
2211 tmp = b(v,i,1,v2,ke_xy)
2212 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
2213 b(v,ip,1,v2,ke_xy) = tmp
2214 tmp = b(v,i,2,v2,ke_xy)
2215 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
2216 b(v,ip,2,v2,ke_xy) = tmp
2221 tmpv(:) = b(:,i,1,v2,ke_xy)
2222 tmpv2(:) = b(:,i,2,v2,ke_xy)
2224 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
2225 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
2227 b(:,i,1,v2,ke_xy) = tmpv(:)
2228 b(:,i,2,v2,ke_xy) = tmpv2(:)
2231 tmpv(:) = b(:,i,1,v2,ke_xy)
2232 tmpv2(:) = b(:,i,2,v2,ke_xy)
2234 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
2235 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
2237 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
2238 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
2245 tmp = b(v,i,1,v2,ke_xy)
2246 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
2247 b(v,ip,1,v2,ke_xy) = tmp
2248 tmp = b(v,i,2,v2,ke_xy)
2249 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
2250 b(v,ip,2,v2,ke_xy) = tmp
2252 tmp = g(v,i,v2,ke_xy)
2253 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
2254 g(v,ip,v2,ke_xy) = tmp
2260 bb(v,1,i) = b(v,i,1,v2,ke_xy)
2261 bb(v,2,i) = b(v,i,2,v2,ke_xy)
2262 bb(v,3,i) = g(v,i,v2,ke_xy)
2266 tmpb(:,:) = bb(:,:,i)
2269 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
2272 bb(:,:,i) = tmpb(:,:)
2275 tmpb(:,:) = bb(:,:,i)
2278 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
2282 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
2286 b(:,i,1,v2,ke_xy) = bb(:,1,i)
2287 b(:,i,2,v2,ke_xy) = bb(:,2,i)
2288 g(:,i,v2,ke_xy) = bb(:,3,i)
2294 end subroutine solve_nnode8_uv
2296 subroutine solve_nnode8_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
2298 integer,
intent(in) :: nnode_v
2299 integer,
intent(in) :: jm
2300 integer,
intent(in) :: ne2d
2301 real(rp),
intent(in) :: d(8,24,24,jm,ne2d)
2302 real(rp),
intent(inout) :: b(8,24,jm,ne2d)
2303 real(rp),
intent(inout) :: g(8,24,3,jm,ne2d)
2304 logical,
intent(in) :: is_top
2308 integer :: k, i, j, v, r
2310 integer :: ipiv(8,24)
2312 real(rp) :: a(8,24,24)
2313 real(rp) :: bb(8,4,24)
2314 real(rp) :: tmpb(8,4)
2321 a(:,:,:) = d(:,:,:,v2,ke_xy)
2323 tmpv(:) = abs(a(:,k,k))
2328 if ( tmp > tmpv(v) )
then
2339 a(v,k,j) = a(v,ip,j)
2345 tmpv(:) = 1.0_rp / a(:,k,k)
2349 a(v,i,k) = a(v,i,k) * tmpv(v)
2355 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
2366 tmp = b(v,i,v2,ke_xy)
2367 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
2368 b(v,ip,v2,ke_xy) = tmp
2373 tmpv(:) = b(:,i,v2,ke_xy)
2375 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
2377 b(:,i,v2,ke_xy) = tmpv(:)
2380 tmpv(:) = b(:,i,v2,ke_xy)
2382 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
2384 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
2391 tmp = b(v,i,v2,ke_xy)
2392 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
2393 b(v,ip,v2,ke_xy) = tmp
2395 tmp = g(v,i,1,v2,ke_xy)
2396 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
2397 g(v,ip,1,v2,ke_xy) = tmp
2398 tmp = g(v,i,2,v2,ke_xy)
2399 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
2400 g(v,ip,2,v2,ke_xy) = tmp
2401 tmp = g(v,i,3,v2,ke_xy)
2402 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
2403 g(v,ip,3,v2,ke_xy) = tmp
2409 bb(v,1,i) = b(v,i,v2,ke_xy)
2410 bb(v,2,i) = g(v,i,1,v2,ke_xy)
2411 bb(v,3,i) = g(v,i,2,v2,ke_xy)
2412 bb(v,4,i) = g(v,i,3,v2,ke_xy)
2416 tmpb(:,:) = bb(:,:,i)
2419 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
2422 bb(:,:,i) = tmpb(:,:)
2425 tmpb(:,:) = bb(:,:,i)
2428 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
2432 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
2436 b(:,i,v2,ke_xy) = bb(:,1,i)
2437 g(:,i,1,v2,ke_xy) = bb(:,2,i)
2438 g(:,i,2,v2,ke_xy) = bb(:,3,i)
2439 g(:,i,3,v2,ke_xy) = bb(:,4,i)
2445 end subroutine solve_nnode8_var3
2447 subroutine solve_nnode9_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
2449 integer,
intent(in) :: nnode_v
2450 integer,
intent(in) :: jm
2451 integer,
intent(in) :: ne2d
2452 real(rp),
intent(in) :: d(9,9,9,jm,ne2d)
2453 real(rp),
intent(inout) :: b(9,9,2,jm,ne2d)
2454 real(rp),
intent(inout) :: g(9,9,jm,ne2d)
2455 logical,
intent(in) :: is_top
2459 integer :: k, i, j, v, r
2461 integer :: ipiv(9,9)
2463 real(rp) :: tmpv2(9)
2464 real(rp) :: a(9,9,9)
2465 real(rp) :: bb(9,3,9)
2466 real(rp) :: tmpb(9,3)
2473 a(:,:,:) = d(:,:,:,v2,ke_xy)
2475 tmpv(:) = abs(a(:,k,k))
2480 if ( tmp > tmpv(v) )
then
2491 a(v,k,j) = a(v,ip,j)
2497 tmpv(:) = 1.0_rp / a(:,k,k)
2500 a(:,i,k) = a(:,i,k) * tmpv(:)
2505 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
2516 tmp = b(v,i,1,v2,ke_xy)
2517 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
2518 b(v,ip,1,v2,ke_xy) = tmp
2519 tmp = b(v,i,2,v2,ke_xy)
2520 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
2521 b(v,ip,2,v2,ke_xy) = tmp
2526 tmpv(:) = b(:,i,1,v2,ke_xy)
2527 tmpv2(:) = b(:,i,2,v2,ke_xy)
2529 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
2530 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
2532 b(:,i,1,v2,ke_xy) = tmpv(:)
2533 b(:,i,2,v2,ke_xy) = tmpv2(:)
2536 tmpv(:) = b(:,i,1,v2,ke_xy)
2537 tmpv2(:) = b(:,i,2,v2,ke_xy)
2539 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
2540 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
2542 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
2543 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
2550 tmp = b(v,i,1,v2,ke_xy)
2551 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
2552 b(v,ip,1,v2,ke_xy) = tmp
2553 tmp = b(v,i,2,v2,ke_xy)
2554 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
2555 b(v,ip,2,v2,ke_xy) = tmp
2557 tmp = g(v,i,v2,ke_xy)
2558 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
2559 g(v,ip,v2,ke_xy) = tmp
2565 bb(v,1,i) = b(v,i,1,v2,ke_xy)
2566 bb(v,2,i) = b(v,i,2,v2,ke_xy)
2567 bb(v,3,i) = g(v,i,v2,ke_xy)
2571 tmpb(:,:) = bb(:,:,i)
2574 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
2577 bb(:,:,i) = tmpb(:,:)
2580 tmpb(:,:) = bb(:,:,i)
2583 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
2587 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
2591 b(:,i,1,v2,ke_xy) = bb(:,1,i)
2592 b(:,i,2,v2,ke_xy) = bb(:,2,i)
2593 g(:,i,v2,ke_xy) = bb(:,3,i)
2599 end subroutine solve_nnode9_uv
2601 subroutine solve_nnode9_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
2603 integer,
intent(in) :: nnode_v
2604 integer,
intent(in) :: jm
2605 integer,
intent(in) :: ne2d
2606 real(rp),
intent(in) :: d(9,27,27,jm,ne2d)
2607 real(rp),
intent(inout) :: b(9,27,jm,ne2d)
2608 real(rp),
intent(inout) :: g(9,27,3,jm,ne2d)
2609 logical,
intent(in) :: is_top
2613 integer :: k, i, j, v, r
2615 integer :: ipiv(9,27)
2617 real(rp) :: a(9,27,27)
2618 real(rp) :: bb(9,4,27)
2619 real(rp) :: tmpb(9,4)
2626 a(:,:,:) = d(:,:,:,v2,ke_xy)
2628 tmpv(:) = abs(a(:,k,k))
2633 if ( tmp > tmpv(v) )
then
2644 a(v,k,j) = a(v,ip,j)
2650 tmpv(:) = 1.0_rp / a(:,k,k)
2654 a(v,i,k) = a(v,i,k) * tmpv(v)
2660 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
2671 tmp = b(v,i,v2,ke_xy)
2672 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
2673 b(v,ip,v2,ke_xy) = tmp
2678 tmpv(:) = b(:,i,v2,ke_xy)
2680 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
2682 b(:,i,v2,ke_xy) = tmpv(:)
2685 tmpv(:) = b(:,i,v2,ke_xy)
2687 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
2689 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
2696 tmp = b(v,i,v2,ke_xy)
2697 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
2698 b(v,ip,v2,ke_xy) = tmp
2700 tmp = g(v,i,1,v2,ke_xy)
2701 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
2702 g(v,ip,1,v2,ke_xy) = tmp
2703 tmp = g(v,i,2,v2,ke_xy)
2704 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
2705 g(v,ip,2,v2,ke_xy) = tmp
2706 tmp = g(v,i,3,v2,ke_xy)
2707 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
2708 g(v,ip,3,v2,ke_xy) = tmp
2714 bb(v,1,i) = b(v,i,v2,ke_xy)
2715 bb(v,2,i) = g(v,i,1,v2,ke_xy)
2716 bb(v,3,i) = g(v,i,2,v2,ke_xy)
2717 bb(v,4,i) = g(v,i,3,v2,ke_xy)
2721 tmpb(:,:) = bb(:,:,i)
2724 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
2727 bb(:,:,i) = tmpb(:,:)
2730 tmpb(:,:) = bb(:,:,i)
2733 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
2737 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
2741 b(:,i,v2,ke_xy) = bb(:,1,i)
2742 g(:,i,1,v2,ke_xy) = bb(:,2,i)
2743 g(:,i,2,v2,ke_xy) = bb(:,3,i)
2744 g(:,i,3,v2,ke_xy) = bb(:,4,i)
2750 end subroutine solve_nnode9_var3
2752 subroutine solve_nnode10_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
2754 integer,
intent(in) :: nnode_v
2755 integer,
intent(in) :: jm
2756 integer,
intent(in) :: ne2d
2757 real(rp),
intent(in) :: d(10,10,10,jm,ne2d)
2758 real(rp),
intent(inout) :: b(10,10,2,jm,ne2d)
2759 real(rp),
intent(inout) :: g(10,10,jm,ne2d)
2760 logical,
intent(in) :: is_top
2764 integer :: k, i, j, v, r
2766 integer :: ipiv(10,10)
2767 real(rp) :: tmpv(10)
2768 real(rp) :: tmpv2(10)
2769 real(rp) :: a(10,10,10)
2770 real(rp) :: bb(10,3,10)
2771 real(rp) :: tmpb(10,3)
2778 a(:,:,:) = d(:,:,:,v2,ke_xy)
2780 tmpv(:) = abs(a(:,k,k))
2785 if ( tmp > tmpv(v) )
then
2796 a(v,k,j) = a(v,ip,j)
2802 tmpv(:) = 1.0_rp / a(:,k,k)
2805 a(:,i,k) = a(:,i,k) * tmpv(:)
2810 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
2821 tmp = b(v,i,1,v2,ke_xy)
2822 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
2823 b(v,ip,1,v2,ke_xy) = tmp
2824 tmp = b(v,i,2,v2,ke_xy)
2825 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
2826 b(v,ip,2,v2,ke_xy) = tmp
2831 tmpv(:) = b(:,i,1,v2,ke_xy)
2832 tmpv2(:) = b(:,i,2,v2,ke_xy)
2834 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
2835 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
2837 b(:,i,1,v2,ke_xy) = tmpv(:)
2838 b(:,i,2,v2,ke_xy) = tmpv2(:)
2841 tmpv(:) = b(:,i,1,v2,ke_xy)
2842 tmpv2(:) = b(:,i,2,v2,ke_xy)
2844 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
2845 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
2847 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
2848 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
2855 tmp = b(v,i,1,v2,ke_xy)
2856 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
2857 b(v,ip,1,v2,ke_xy) = tmp
2858 tmp = b(v,i,2,v2,ke_xy)
2859 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
2860 b(v,ip,2,v2,ke_xy) = tmp
2862 tmp = g(v,i,v2,ke_xy)
2863 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
2864 g(v,ip,v2,ke_xy) = tmp
2870 bb(v,1,i) = b(v,i,1,v2,ke_xy)
2871 bb(v,2,i) = b(v,i,2,v2,ke_xy)
2872 bb(v,3,i) = g(v,i,v2,ke_xy)
2876 tmpb(:,:) = bb(:,:,i)
2879 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
2882 bb(:,:,i) = tmpb(:,:)
2885 tmpb(:,:) = bb(:,:,i)
2888 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
2892 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
2896 b(:,i,1,v2,ke_xy) = bb(:,1,i)
2897 b(:,i,2,v2,ke_xy) = bb(:,2,i)
2898 g(:,i,v2,ke_xy) = bb(:,3,i)
2904 end subroutine solve_nnode10_uv
2906 subroutine solve_nnode10_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
2908 integer,
intent(in) :: nnode_v
2909 integer,
intent(in) :: jm
2910 integer,
intent(in) :: ne2d
2911 real(rp),
intent(in) :: d(10,30,30,jm,ne2d)
2912 real(rp),
intent(inout) :: b(10,30,jm,ne2d)
2913 real(rp),
intent(inout) :: g(10,30,3,jm,ne2d)
2914 logical,
intent(in) :: is_top
2918 integer :: k, i, j, v, r
2920 integer :: ipiv(10,30)
2921 real(rp) :: tmpv(10)
2922 real(rp) :: a(10,30,30)
2923 real(rp) :: bb(10,4,30)
2924 real(rp) :: tmpb(10,4)
2931 a(:,:,:) = d(:,:,:,v2,ke_xy)
2933 tmpv(:) = abs(a(:,k,k))
2938 if ( tmp > tmpv(v) )
then
2949 a(v,k,j) = a(v,ip,j)
2955 tmpv(:) = 1.0_rp / a(:,k,k)
2959 a(v,i,k) = a(v,i,k) * tmpv(v)
2965 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
2976 tmp = b(v,i,v2,ke_xy)
2977 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
2978 b(v,ip,v2,ke_xy) = tmp
2983 tmpv(:) = b(:,i,v2,ke_xy)
2985 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
2987 b(:,i,v2,ke_xy) = tmpv(:)
2990 tmpv(:) = b(:,i,v2,ke_xy)
2992 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
2994 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
3001 tmp = b(v,i,v2,ke_xy)
3002 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
3003 b(v,ip,v2,ke_xy) = tmp
3005 tmp = g(v,i,1,v2,ke_xy)
3006 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
3007 g(v,ip,1,v2,ke_xy) = tmp
3008 tmp = g(v,i,2,v2,ke_xy)
3009 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
3010 g(v,ip,2,v2,ke_xy) = tmp
3011 tmp = g(v,i,3,v2,ke_xy)
3012 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
3013 g(v,ip,3,v2,ke_xy) = tmp
3019 bb(v,1,i) = b(v,i,v2,ke_xy)
3020 bb(v,2,i) = g(v,i,1,v2,ke_xy)
3021 bb(v,3,i) = g(v,i,2,v2,ke_xy)
3022 bb(v,4,i) = g(v,i,3,v2,ke_xy)
3026 tmpb(:,:) = bb(:,:,i)
3029 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
3032 bb(:,:,i) = tmpb(:,:)
3035 tmpb(:,:) = bb(:,:,i)
3038 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
3042 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
3046 b(:,i,v2,ke_xy) = bb(:,1,i)
3047 g(:,i,1,v2,ke_xy) = bb(:,2,i)
3048 g(:,i,2,v2,ke_xy) = bb(:,3,i)
3049 g(:,i,3,v2,ke_xy) = bb(:,4,i)
3055 end subroutine solve_nnode10_var3
3057 subroutine solve_nnode11_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
3059 integer,
intent(in) :: nnode_v
3060 integer,
intent(in) :: jm
3061 integer,
intent(in) :: ne2d
3062 real(rp),
intent(in) :: d(22,11,11,jm,ne2d)
3063 real(rp),
intent(inout) :: b(22,11,2,jm,ne2d)
3064 real(rp),
intent(inout) :: g(22,11,jm,ne2d)
3065 logical,
intent(in) :: is_top
3069 integer :: k, i, j, v, r
3071 integer :: ipiv(22,11)
3072 real(rp) :: tmpv(22)
3073 real(rp) :: tmpv2(22)
3074 real(rp) :: a(22,11,11)
3075 real(rp) :: bb(22,3,11)
3076 real(rp) :: tmpb(22,3)
3083 a(:,:,:) = d(:,:,:,v2,ke_xy)
3085 tmpv(:) = abs(a(:,k,k))
3090 if ( tmp > tmpv(v) )
then
3101 a(v,k,j) = a(v,ip,j)
3107 tmpv(:) = 1.0_rp / a(:,k,k)
3110 a(:,i,k) = a(:,i,k) * tmpv(:)
3115 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
3126 tmp = b(v,i,1,v2,ke_xy)
3127 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
3128 b(v,ip,1,v2,ke_xy) = tmp
3129 tmp = b(v,i,2,v2,ke_xy)
3130 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
3131 b(v,ip,2,v2,ke_xy) = tmp
3136 tmpv(:) = b(:,i,1,v2,ke_xy)
3137 tmpv2(:) = b(:,i,2,v2,ke_xy)
3139 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
3140 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
3142 b(:,i,1,v2,ke_xy) = tmpv(:)
3143 b(:,i,2,v2,ke_xy) = tmpv2(:)
3146 tmpv(:) = b(:,i,1,v2,ke_xy)
3147 tmpv2(:) = b(:,i,2,v2,ke_xy)
3149 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
3150 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
3152 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
3153 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
3160 tmp = b(v,i,1,v2,ke_xy)
3161 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
3162 b(v,ip,1,v2,ke_xy) = tmp
3163 tmp = b(v,i,2,v2,ke_xy)
3164 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
3165 b(v,ip,2,v2,ke_xy) = tmp
3167 tmp = g(v,i,v2,ke_xy)
3168 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
3169 g(v,ip,v2,ke_xy) = tmp
3175 bb(v,1,i) = b(v,i,1,v2,ke_xy)
3176 bb(v,2,i) = b(v,i,2,v2,ke_xy)
3177 bb(v,3,i) = g(v,i,v2,ke_xy)
3181 tmpb(:,:) = bb(:,:,i)
3184 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
3187 bb(:,:,i) = tmpb(:,:)
3190 tmpb(:,:) = bb(:,:,i)
3193 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
3197 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
3201 b(:,i,1,v2,ke_xy) = bb(:,1,i)
3202 b(:,i,2,v2,ke_xy) = bb(:,2,i)
3203 g(:,i,v2,ke_xy) = bb(:,3,i)
3209 end subroutine solve_nnode11_uv
3211 subroutine solve_nnode11_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
3213 integer,
intent(in) :: nnode_v
3214 integer,
intent(in) :: jm
3215 integer,
intent(in) :: ne2d
3216 real(rp),
intent(in) :: d(22,33,33,jm,ne2d)
3217 real(rp),
intent(inout) :: b(22,33,jm,ne2d)
3218 real(rp),
intent(inout) :: g(22,33,3,jm,ne2d)
3219 logical,
intent(in) :: is_top
3223 integer :: k, i, j, v, r
3225 integer :: ipiv(22,33)
3226 real(rp) :: tmpv(22)
3227 real(rp) :: a(22,33,33)
3228 real(rp) :: bb(22,4,33)
3229 real(rp) :: tmpb(22,4)
3236 a(:,:,:) = d(:,:,:,v2,ke_xy)
3238 tmpv(:) = abs(a(:,k,k))
3243 if ( tmp > tmpv(v) )
then
3254 a(v,k,j) = a(v,ip,j)
3260 tmpv(:) = 1.0_rp / a(:,k,k)
3264 a(v,i,k) = a(v,i,k) * tmpv(v)
3270 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
3281 tmp = b(v,i,v2,ke_xy)
3282 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
3283 b(v,ip,v2,ke_xy) = tmp
3288 tmpv(:) = b(:,i,v2,ke_xy)
3290 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
3292 b(:,i,v2,ke_xy) = tmpv(:)
3295 tmpv(:) = b(:,i,v2,ke_xy)
3297 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
3299 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
3306 tmp = b(v,i,v2,ke_xy)
3307 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
3308 b(v,ip,v2,ke_xy) = tmp
3310 tmp = g(v,i,1,v2,ke_xy)
3311 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
3312 g(v,ip,1,v2,ke_xy) = tmp
3313 tmp = g(v,i,2,v2,ke_xy)
3314 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
3315 g(v,ip,2,v2,ke_xy) = tmp
3316 tmp = g(v,i,3,v2,ke_xy)
3317 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
3318 g(v,ip,3,v2,ke_xy) = tmp
3324 bb(v,1,i) = b(v,i,v2,ke_xy)
3325 bb(v,2,i) = g(v,i,1,v2,ke_xy)
3326 bb(v,3,i) = g(v,i,2,v2,ke_xy)
3327 bb(v,4,i) = g(v,i,3,v2,ke_xy)
3331 tmpb(:,:) = bb(:,:,i)
3334 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
3337 bb(:,:,i) = tmpb(:,:)
3340 tmpb(:,:) = bb(:,:,i)
3343 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
3347 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
3351 b(:,i,v2,ke_xy) = bb(:,1,i)
3352 g(:,i,1,v2,ke_xy) = bb(:,2,i)
3353 g(:,i,2,v2,ke_xy) = bb(:,3,i)
3354 g(:,i,3,v2,ke_xy) = bb(:,4,i)
3360 end subroutine solve_nnode11_var3
3362 subroutine solve_nnode12_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
3364 integer,
intent(in) :: nnode_v
3365 integer,
intent(in) :: jm
3366 integer,
intent(in) :: ne2d
3367 real(rp),
intent(in) :: d(24,12,12,jm,ne2d)
3368 real(rp),
intent(inout) :: b(24,12,2,jm,ne2d)
3369 real(rp),
intent(inout) :: g(24,12,jm,ne2d)
3370 logical,
intent(in) :: is_top
3374 integer :: k, i, j, v, r
3376 integer :: ipiv(24,12)
3377 real(rp) :: tmpv(24)
3378 real(rp) :: tmpv2(24)
3379 real(rp) :: a(24,12,12)
3380 real(rp) :: bb(24,3,12)
3381 real(rp) :: tmpb(24,3)
3388 a(:,:,:) = d(:,:,:,v2,ke_xy)
3390 tmpv(:) = abs(a(:,k,k))
3395 if ( tmp > tmpv(v) )
then
3406 a(v,k,j) = a(v,ip,j)
3412 tmpv(:) = 1.0_rp / a(:,k,k)
3415 a(:,i,k) = a(:,i,k) * tmpv(:)
3420 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
3431 tmp = b(v,i,1,v2,ke_xy)
3432 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
3433 b(v,ip,1,v2,ke_xy) = tmp
3434 tmp = b(v,i,2,v2,ke_xy)
3435 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
3436 b(v,ip,2,v2,ke_xy) = tmp
3441 tmpv(:) = b(:,i,1,v2,ke_xy)
3442 tmpv2(:) = b(:,i,2,v2,ke_xy)
3444 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
3445 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
3447 b(:,i,1,v2,ke_xy) = tmpv(:)
3448 b(:,i,2,v2,ke_xy) = tmpv2(:)
3451 tmpv(:) = b(:,i,1,v2,ke_xy)
3452 tmpv2(:) = b(:,i,2,v2,ke_xy)
3454 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
3455 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
3457 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
3458 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
3465 tmp = b(v,i,1,v2,ke_xy)
3466 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
3467 b(v,ip,1,v2,ke_xy) = tmp
3468 tmp = b(v,i,2,v2,ke_xy)
3469 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
3470 b(v,ip,2,v2,ke_xy) = tmp
3472 tmp = g(v,i,v2,ke_xy)
3473 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
3474 g(v,ip,v2,ke_xy) = tmp
3480 bb(v,1,i) = b(v,i,1,v2,ke_xy)
3481 bb(v,2,i) = b(v,i,2,v2,ke_xy)
3482 bb(v,3,i) = g(v,i,v2,ke_xy)
3486 tmpb(:,:) = bb(:,:,i)
3489 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
3492 bb(:,:,i) = tmpb(:,:)
3495 tmpb(:,:) = bb(:,:,i)
3498 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
3502 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
3506 b(:,i,1,v2,ke_xy) = bb(:,1,i)
3507 b(:,i,2,v2,ke_xy) = bb(:,2,i)
3508 g(:,i,v2,ke_xy) = bb(:,3,i)
3514 end subroutine solve_nnode12_uv
3516 subroutine solve_nnode12_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
3518 integer,
intent(in) :: nnode_v
3519 integer,
intent(in) :: jm
3520 integer,
intent(in) :: ne2d
3521 real(rp),
intent(in) :: d(24,36,36,jm,ne2d)
3522 real(rp),
intent(inout) :: b(24,36,jm,ne2d)
3523 real(rp),
intent(inout) :: g(24,36,3,jm,ne2d)
3524 logical,
intent(in) :: is_top
3528 integer :: k, i, j, v, r
3530 integer :: ipiv(24,36)
3531 real(rp) :: tmpv(24)
3532 real(rp) :: a(24,36,36)
3533 real(rp) :: bb(24,4,36)
3534 real(rp) :: tmpb(24,4)
3541 a(:,:,:) = d(:,:,:,v2,ke_xy)
3543 tmpv(:) = abs(a(:,k,k))
3548 if ( tmp > tmpv(v) )
then
3559 a(v,k,j) = a(v,ip,j)
3565 tmpv(:) = 1.0_rp / a(:,k,k)
3569 a(v,i,k) = a(v,i,k) * tmpv(v)
3575 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
3586 tmp = b(v,i,v2,ke_xy)
3587 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
3588 b(v,ip,v2,ke_xy) = tmp
3593 tmpv(:) = b(:,i,v2,ke_xy)
3595 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
3597 b(:,i,v2,ke_xy) = tmpv(:)
3600 tmpv(:) = b(:,i,v2,ke_xy)
3602 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
3604 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
3611 tmp = b(v,i,v2,ke_xy)
3612 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
3613 b(v,ip,v2,ke_xy) = tmp
3615 tmp = g(v,i,1,v2,ke_xy)
3616 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
3617 g(v,ip,1,v2,ke_xy) = tmp
3618 tmp = g(v,i,2,v2,ke_xy)
3619 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
3620 g(v,ip,2,v2,ke_xy) = tmp
3621 tmp = g(v,i,3,v2,ke_xy)
3622 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
3623 g(v,ip,3,v2,ke_xy) = tmp
3629 bb(v,1,i) = b(v,i,v2,ke_xy)
3630 bb(v,2,i) = g(v,i,1,v2,ke_xy)
3631 bb(v,3,i) = g(v,i,2,v2,ke_xy)
3632 bb(v,4,i) = g(v,i,3,v2,ke_xy)
3636 tmpb(:,:) = bb(:,:,i)
3639 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
3642 bb(:,:,i) = tmpb(:,:)
3645 tmpb(:,:) = bb(:,:,i)
3648 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
3652 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
3656 b(:,i,v2,ke_xy) = bb(:,1,i)
3657 g(:,i,1,v2,ke_xy) = bb(:,2,i)
3658 g(:,i,2,v2,ke_xy) = bb(:,3,i)
3659 g(:,i,3,v2,ke_xy) = bb(:,4,i)
3665 end subroutine solve_nnode12_var3
3667 subroutine solve_nnode13_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
3669 integer,
intent(in) :: nnode_v
3670 integer,
intent(in) :: jm
3671 integer,
intent(in) :: ne2d
3672 real(rp),
intent(in) :: d(26,13,13,jm,ne2d)
3673 real(rp),
intent(inout) :: b(26,13,2,jm,ne2d)
3674 real(rp),
intent(inout) :: g(26,13,jm,ne2d)
3675 logical,
intent(in) :: is_top
3679 integer :: k, i, j, v, r
3681 integer :: ipiv(26,13)
3682 real(rp) :: tmpv(26)
3683 real(rp) :: tmpv2(26)
3684 real(rp) :: a(26,13,13)
3685 real(rp) :: bb(26,3,13)
3686 real(rp) :: tmpb(26,3)
3693 a(:,:,:) = d(:,:,:,v2,ke_xy)
3695 tmpv(:) = abs(a(:,k,k))
3700 if ( tmp > tmpv(v) )
then
3711 a(v,k,j) = a(v,ip,j)
3717 tmpv(:) = 1.0_rp / a(:,k,k)
3720 a(:,i,k) = a(:,i,k) * tmpv(:)
3725 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
3736 tmp = b(v,i,1,v2,ke_xy)
3737 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
3738 b(v,ip,1,v2,ke_xy) = tmp
3739 tmp = b(v,i,2,v2,ke_xy)
3740 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
3741 b(v,ip,2,v2,ke_xy) = tmp
3746 tmpv(:) = b(:,i,1,v2,ke_xy)
3747 tmpv2(:) = b(:,i,2,v2,ke_xy)
3749 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
3750 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
3752 b(:,i,1,v2,ke_xy) = tmpv(:)
3753 b(:,i,2,v2,ke_xy) = tmpv2(:)
3756 tmpv(:) = b(:,i,1,v2,ke_xy)
3757 tmpv2(:) = b(:,i,2,v2,ke_xy)
3759 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
3760 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
3762 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
3763 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
3770 tmp = b(v,i,1,v2,ke_xy)
3771 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
3772 b(v,ip,1,v2,ke_xy) = tmp
3773 tmp = b(v,i,2,v2,ke_xy)
3774 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
3775 b(v,ip,2,v2,ke_xy) = tmp
3777 tmp = g(v,i,v2,ke_xy)
3778 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
3779 g(v,ip,v2,ke_xy) = tmp
3785 bb(v,1,i) = b(v,i,1,v2,ke_xy)
3786 bb(v,2,i) = b(v,i,2,v2,ke_xy)
3787 bb(v,3,i) = g(v,i,v2,ke_xy)
3791 tmpb(:,:) = bb(:,:,i)
3794 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
3797 bb(:,:,i) = tmpb(:,:)
3800 tmpb(:,:) = bb(:,:,i)
3803 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
3807 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
3811 b(:,i,1,v2,ke_xy) = bb(:,1,i)
3812 b(:,i,2,v2,ke_xy) = bb(:,2,i)
3813 g(:,i,v2,ke_xy) = bb(:,3,i)
3819 end subroutine solve_nnode13_uv
3821 subroutine solve_nnode13_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
3823 integer,
intent(in) :: nnode_v
3824 integer,
intent(in) :: jm
3825 integer,
intent(in) :: ne2d
3826 real(rp),
intent(in) :: d(26,39,39,jm,ne2d)
3827 real(rp),
intent(inout) :: b(26,39,jm,ne2d)
3828 real(rp),
intent(inout) :: g(26,39,3,jm,ne2d)
3829 logical,
intent(in) :: is_top
3833 integer :: k, i, j, v, r
3835 integer :: ipiv(26,39)
3836 real(rp) :: tmpv(26)
3837 real(rp) :: a(26,39,39)
3838 real(rp) :: bb(26,4,39)
3839 real(rp) :: tmpb(26,4)
3846 a(:,:,:) = d(:,:,:,v2,ke_xy)
3848 tmpv(:) = abs(a(:,k,k))
3853 if ( tmp > tmpv(v) )
then
3864 a(v,k,j) = a(v,ip,j)
3870 tmpv(:) = 1.0_rp / a(:,k,k)
3874 a(v,i,k) = a(v,i,k) * tmpv(v)
3880 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
3891 tmp = b(v,i,v2,ke_xy)
3892 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
3893 b(v,ip,v2,ke_xy) = tmp
3898 tmpv(:) = b(:,i,v2,ke_xy)
3900 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
3902 b(:,i,v2,ke_xy) = tmpv(:)
3905 tmpv(:) = b(:,i,v2,ke_xy)
3907 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
3909 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
3916 tmp = b(v,i,v2,ke_xy)
3917 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
3918 b(v,ip,v2,ke_xy) = tmp
3920 tmp = g(v,i,1,v2,ke_xy)
3921 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
3922 g(v,ip,1,v2,ke_xy) = tmp
3923 tmp = g(v,i,2,v2,ke_xy)
3924 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
3925 g(v,ip,2,v2,ke_xy) = tmp
3926 tmp = g(v,i,3,v2,ke_xy)
3927 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
3928 g(v,ip,3,v2,ke_xy) = tmp
3934 bb(v,1,i) = b(v,i,v2,ke_xy)
3935 bb(v,2,i) = g(v,i,1,v2,ke_xy)
3936 bb(v,3,i) = g(v,i,2,v2,ke_xy)
3937 bb(v,4,i) = g(v,i,3,v2,ke_xy)
3941 tmpb(:,:) = bb(:,:,i)
3944 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
3947 bb(:,:,i) = tmpb(:,:)
3950 tmpb(:,:) = bb(:,:,i)
3953 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
3957 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
3961 b(:,i,v2,ke_xy) = bb(:,1,i)
3962 g(:,i,1,v2,ke_xy) = bb(:,2,i)
3963 g(:,i,2,v2,ke_xy) = bb(:,3,i)
3964 g(:,i,3,v2,ke_xy) = bb(:,4,i)
3970 end subroutine solve_nnode13_var3
3972 subroutine solve_nnode14_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
3974 integer,
intent(in) :: nnode_v
3975 integer,
intent(in) :: jm
3976 integer,
intent(in) :: ne2d
3977 real(rp),
intent(in) :: d(28,14,14,jm,ne2d)
3978 real(rp),
intent(inout) :: b(28,14,2,jm,ne2d)
3979 real(rp),
intent(inout) :: g(28,14,jm,ne2d)
3980 logical,
intent(in) :: is_top
3984 integer :: k, i, j, v, r
3986 integer :: ipiv(28,14)
3987 real(rp) :: tmpv(28)
3988 real(rp) :: tmpv2(28)
3989 real(rp) :: a(28,14,14)
3990 real(rp) :: bb(28,3,14)
3991 real(rp) :: tmpb(28,3)
3998 a(:,:,:) = d(:,:,:,v2,ke_xy)
4000 tmpv(:) = abs(a(:,k,k))
4005 if ( tmp > tmpv(v) )
then
4016 a(v,k,j) = a(v,ip,j)
4022 tmpv(:) = 1.0_rp / a(:,k,k)
4025 a(:,i,k) = a(:,i,k) * tmpv(:)
4030 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
4041 tmp = b(v,i,1,v2,ke_xy)
4042 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
4043 b(v,ip,1,v2,ke_xy) = tmp
4044 tmp = b(v,i,2,v2,ke_xy)
4045 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
4046 b(v,ip,2,v2,ke_xy) = tmp
4051 tmpv(:) = b(:,i,1,v2,ke_xy)
4052 tmpv2(:) = b(:,i,2,v2,ke_xy)
4054 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
4055 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
4057 b(:,i,1,v2,ke_xy) = tmpv(:)
4058 b(:,i,2,v2,ke_xy) = tmpv2(:)
4061 tmpv(:) = b(:,i,1,v2,ke_xy)
4062 tmpv2(:) = b(:,i,2,v2,ke_xy)
4064 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
4065 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
4067 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
4068 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
4075 tmp = b(v,i,1,v2,ke_xy)
4076 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
4077 b(v,ip,1,v2,ke_xy) = tmp
4078 tmp = b(v,i,2,v2,ke_xy)
4079 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
4080 b(v,ip,2,v2,ke_xy) = tmp
4082 tmp = g(v,i,v2,ke_xy)
4083 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
4084 g(v,ip,v2,ke_xy) = tmp
4090 bb(v,1,i) = b(v,i,1,v2,ke_xy)
4091 bb(v,2,i) = b(v,i,2,v2,ke_xy)
4092 bb(v,3,i) = g(v,i,v2,ke_xy)
4096 tmpb(:,:) = bb(:,:,i)
4099 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
4102 bb(:,:,i) = tmpb(:,:)
4105 tmpb(:,:) = bb(:,:,i)
4108 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
4112 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
4116 b(:,i,1,v2,ke_xy) = bb(:,1,i)
4117 b(:,i,2,v2,ke_xy) = bb(:,2,i)
4118 g(:,i,v2,ke_xy) = bb(:,3,i)
4124 end subroutine solve_nnode14_uv
4126 subroutine solve_nnode14_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
4128 integer,
intent(in) :: nnode_v
4129 integer,
intent(in) :: jm
4130 integer,
intent(in) :: ne2d
4131 real(rp),
intent(in) :: d(28,42,42,jm,ne2d)
4132 real(rp),
intent(inout) :: b(28,42,jm,ne2d)
4133 real(rp),
intent(inout) :: g(28,42,3,jm,ne2d)
4134 logical,
intent(in) :: is_top
4138 integer :: k, i, j, v, r
4140 integer :: ipiv(28,42)
4141 real(rp) :: tmpv(28)
4142 real(rp) :: a(28,42,42)
4143 real(rp) :: bb(28,4,42)
4144 real(rp) :: tmpb(28,4)
4151 a(:,:,:) = d(:,:,:,v2,ke_xy)
4153 tmpv(:) = abs(a(:,k,k))
4158 if ( tmp > tmpv(v) )
then
4169 a(v,k,j) = a(v,ip,j)
4175 tmpv(:) = 1.0_rp / a(:,k,k)
4179 a(v,i,k) = a(v,i,k) * tmpv(v)
4185 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
4196 tmp = b(v,i,v2,ke_xy)
4197 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
4198 b(v,ip,v2,ke_xy) = tmp
4203 tmpv(:) = b(:,i,v2,ke_xy)
4205 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
4207 b(:,i,v2,ke_xy) = tmpv(:)
4210 tmpv(:) = b(:,i,v2,ke_xy)
4212 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
4214 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
4221 tmp = b(v,i,v2,ke_xy)
4222 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
4223 b(v,ip,v2,ke_xy) = tmp
4225 tmp = g(v,i,1,v2,ke_xy)
4226 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
4227 g(v,ip,1,v2,ke_xy) = tmp
4228 tmp = g(v,i,2,v2,ke_xy)
4229 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
4230 g(v,ip,2,v2,ke_xy) = tmp
4231 tmp = g(v,i,3,v2,ke_xy)
4232 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
4233 g(v,ip,3,v2,ke_xy) = tmp
4239 bb(v,1,i) = b(v,i,v2,ke_xy)
4240 bb(v,2,i) = g(v,i,1,v2,ke_xy)
4241 bb(v,3,i) = g(v,i,2,v2,ke_xy)
4242 bb(v,4,i) = g(v,i,3,v2,ke_xy)
4246 tmpb(:,:) = bb(:,:,i)
4249 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
4252 bb(:,:,i) = tmpb(:,:)
4255 tmpb(:,:) = bb(:,:,i)
4258 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
4262 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
4266 b(:,i,v2,ke_xy) = bb(:,1,i)
4267 g(:,i,1,v2,ke_xy) = bb(:,2,i)
4268 g(:,i,2,v2,ke_xy) = bb(:,3,i)
4269 g(:,i,3,v2,ke_xy) = bb(:,4,i)
4275 end subroutine solve_nnode14_var3
4277 subroutine solve_nnode15_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
4279 integer,
intent(in) :: nnode_v
4280 integer,
intent(in) :: jm
4281 integer,
intent(in) :: ne2d
4282 real(rp),
intent(in) :: d(15,15,15,jm,ne2d)
4283 real(rp),
intent(inout) :: b(15,15,2,jm,ne2d)
4284 real(rp),
intent(inout) :: g(15,15,jm,ne2d)
4285 logical,
intent(in) :: is_top
4289 integer :: k, i, j, v, r
4291 integer :: ipiv(15,15)
4292 real(rp) :: tmpv(15)
4293 real(rp) :: tmpv2(15)
4294 real(rp) :: a(15,15,15)
4295 real(rp) :: bb(15,3,15)
4296 real(rp) :: tmpb(15,3)
4303 a(:,:,:) = d(:,:,:,v2,ke_xy)
4305 tmpv(:) = abs(a(:,k,k))
4310 if ( tmp > tmpv(v) )
then
4321 a(v,k,j) = a(v,ip,j)
4327 tmpv(:) = 1.0_rp / a(:,k,k)
4330 a(:,i,k) = a(:,i,k) * tmpv(:)
4335 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
4346 tmp = b(v,i,1,v2,ke_xy)
4347 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
4348 b(v,ip,1,v2,ke_xy) = tmp
4349 tmp = b(v,i,2,v2,ke_xy)
4350 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
4351 b(v,ip,2,v2,ke_xy) = tmp
4356 tmpv(:) = b(:,i,1,v2,ke_xy)
4357 tmpv2(:) = b(:,i,2,v2,ke_xy)
4359 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
4360 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
4362 b(:,i,1,v2,ke_xy) = tmpv(:)
4363 b(:,i,2,v2,ke_xy) = tmpv2(:)
4366 tmpv(:) = b(:,i,1,v2,ke_xy)
4367 tmpv2(:) = b(:,i,2,v2,ke_xy)
4369 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
4370 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
4372 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
4373 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
4380 tmp = b(v,i,1,v2,ke_xy)
4381 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
4382 b(v,ip,1,v2,ke_xy) = tmp
4383 tmp = b(v,i,2,v2,ke_xy)
4384 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
4385 b(v,ip,2,v2,ke_xy) = tmp
4387 tmp = g(v,i,v2,ke_xy)
4388 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
4389 g(v,ip,v2,ke_xy) = tmp
4395 bb(v,1,i) = b(v,i,1,v2,ke_xy)
4396 bb(v,2,i) = b(v,i,2,v2,ke_xy)
4397 bb(v,3,i) = g(v,i,v2,ke_xy)
4401 tmpb(:,:) = bb(:,:,i)
4404 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
4407 bb(:,:,i) = tmpb(:,:)
4410 tmpb(:,:) = bb(:,:,i)
4413 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
4417 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
4421 b(:,i,1,v2,ke_xy) = bb(:,1,i)
4422 b(:,i,2,v2,ke_xy) = bb(:,2,i)
4423 g(:,i,v2,ke_xy) = bb(:,3,i)
4429 end subroutine solve_nnode15_uv
4431 subroutine solve_nnode15_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
4433 integer,
intent(in) :: nnode_v
4434 integer,
intent(in) :: jm
4435 integer,
intent(in) :: ne2d
4436 real(rp),
intent(in) :: d(15,45,45,jm,ne2d)
4437 real(rp),
intent(inout) :: b(15,45,jm,ne2d)
4438 real(rp),
intent(inout) :: g(15,45,3,jm,ne2d)
4439 logical,
intent(in) :: is_top
4443 integer :: k, i, j, v, r
4445 integer :: ipiv(15,45)
4446 real(rp) :: tmpv(15)
4447 real(rp) :: a(15,45,45)
4448 real(rp) :: bb(15,4,45)
4449 real(rp) :: tmpb(15,4)
4456 a(:,:,:) = d(:,:,:,v2,ke_xy)
4458 tmpv(:) = abs(a(:,k,k))
4463 if ( tmp > tmpv(v) )
then
4474 a(v,k,j) = a(v,ip,j)
4480 tmpv(:) = 1.0_rp / a(:,k,k)
4484 a(v,i,k) = a(v,i,k) * tmpv(v)
4490 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
4501 tmp = b(v,i,v2,ke_xy)
4502 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
4503 b(v,ip,v2,ke_xy) = tmp
4508 tmpv(:) = b(:,i,v2,ke_xy)
4510 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
4512 b(:,i,v2,ke_xy) = tmpv(:)
4515 tmpv(:) = b(:,i,v2,ke_xy)
4517 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
4519 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
4526 tmp = b(v,i,v2,ke_xy)
4527 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
4528 b(v,ip,v2,ke_xy) = tmp
4530 tmp = g(v,i,1,v2,ke_xy)
4531 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
4532 g(v,ip,1,v2,ke_xy) = tmp
4533 tmp = g(v,i,2,v2,ke_xy)
4534 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
4535 g(v,ip,2,v2,ke_xy) = tmp
4536 tmp = g(v,i,3,v2,ke_xy)
4537 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
4538 g(v,ip,3,v2,ke_xy) = tmp
4544 bb(v,1,i) = b(v,i,v2,ke_xy)
4545 bb(v,2,i) = g(v,i,1,v2,ke_xy)
4546 bb(v,3,i) = g(v,i,2,v2,ke_xy)
4547 bb(v,4,i) = g(v,i,3,v2,ke_xy)
4551 tmpb(:,:) = bb(:,:,i)
4554 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
4557 bb(:,:,i) = tmpb(:,:)
4560 tmpb(:,:) = bb(:,:,i)
4563 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
4567 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
4571 b(:,i,v2,ke_xy) = bb(:,1,i)
4572 g(:,i,1,v2,ke_xy) = bb(:,2,i)
4573 g(:,i,2,v2,ke_xy) = bb(:,3,i)
4574 g(:,i,3,v2,ke_xy) = bb(:,4,i)
4580 end subroutine solve_nnode15_var3
4582 subroutine solve_nnode16_uv( D, b, G, Nnode_v, jm, Ne2D, is_top )
4584 integer,
intent(in) :: nnode_v
4585 integer,
intent(in) :: jm
4586 integer,
intent(in) :: ne2d
4587 real(rp),
intent(in) :: d(16,16,16,jm,ne2d)
4588 real(rp),
intent(inout) :: b(16,16,2,jm,ne2d)
4589 real(rp),
intent(inout) :: g(16,16,jm,ne2d)
4590 logical,
intent(in) :: is_top
4594 integer :: k, i, j, v, r
4596 integer :: ipiv(16,16)
4597 real(rp) :: tmpv(16)
4598 real(rp) :: tmpv2(16)
4599 real(rp) :: a(16,16,16)
4600 real(rp) :: bb(16,3,16)
4601 real(rp) :: tmpb(16,3)
4608 a(:,:,:) = d(:,:,:,v2,ke_xy)
4610 tmpv(:) = abs(a(:,k,k))
4615 if ( tmp > tmpv(v) )
then
4626 a(v,k,j) = a(v,ip,j)
4632 tmpv(:) = 1.0_rp / a(:,k,k)
4635 a(:,i,k) = a(:,i,k) * tmpv(:)
4640 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
4651 tmp = b(v,i,1,v2,ke_xy)
4652 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
4653 b(v,ip,1,v2,ke_xy) = tmp
4654 tmp = b(v,i,2,v2,ke_xy)
4655 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
4656 b(v,ip,2,v2,ke_xy) = tmp
4661 tmpv(:) = b(:,i,1,v2,ke_xy)
4662 tmpv2(:) = b(:,i,2,v2,ke_xy)
4664 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
4665 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
4667 b(:,i,1,v2,ke_xy) = tmpv(:)
4668 b(:,i,2,v2,ke_xy) = tmpv2(:)
4671 tmpv(:) = b(:,i,1,v2,ke_xy)
4672 tmpv2(:) = b(:,i,2,v2,ke_xy)
4674 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
4675 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
4677 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
4678 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
4685 tmp = b(v,i,1,v2,ke_xy)
4686 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
4687 b(v,ip,1,v2,ke_xy) = tmp
4688 tmp = b(v,i,2,v2,ke_xy)
4689 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
4690 b(v,ip,2,v2,ke_xy) = tmp
4692 tmp = g(v,i,v2,ke_xy)
4693 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
4694 g(v,ip,v2,ke_xy) = tmp
4700 bb(v,1,i) = b(v,i,1,v2,ke_xy)
4701 bb(v,2,i) = b(v,i,2,v2,ke_xy)
4702 bb(v,3,i) = g(v,i,v2,ke_xy)
4706 tmpb(:,:) = bb(:,:,i)
4709 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
4712 bb(:,:,i) = tmpb(:,:)
4715 tmpb(:,:) = bb(:,:,i)
4718 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
4722 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
4726 b(:,i,1,v2,ke_xy) = bb(:,1,i)
4727 b(:,i,2,v2,ke_xy) = bb(:,2,i)
4728 g(:,i,v2,ke_xy) = bb(:,3,i)
4734 end subroutine solve_nnode16_uv
4736 subroutine solve_nnode16_var3( D, b, G, Nnode_v, jm, Ne2D, is_top )
4738 integer,
intent(in) :: nnode_v
4739 integer,
intent(in) :: jm
4740 integer,
intent(in) :: ne2d
4741 real(rp),
intent(in) :: d(16,48,48,jm,ne2d)
4742 real(rp),
intent(inout) :: b(16,48,jm,ne2d)
4743 real(rp),
intent(inout) :: g(16,48,3,jm,ne2d)
4744 logical,
intent(in) :: is_top
4748 integer :: k, i, j, v, r
4750 integer :: ipiv(16,48)
4751 real(rp) :: tmpv(16)
4752 real(rp) :: a(16,48,48)
4753 real(rp) :: bb(16,4,48)
4754 real(rp) :: tmpb(16,4)
4761 a(:,:,:) = d(:,:,:,v2,ke_xy)
4763 tmpv(:) = abs(a(:,k,k))
4768 if ( tmp > tmpv(v) )
then
4779 a(v,k,j) = a(v,ip,j)
4785 tmpv(:) = 1.0_rp / a(:,k,k)
4789 a(v,i,k) = a(v,i,k) * tmpv(v)
4795 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
4806 tmp = b(v,i,v2,ke_xy)
4807 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
4808 b(v,ip,v2,ke_xy) = tmp
4813 tmpv(:) = b(:,i,v2,ke_xy)
4815 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
4817 b(:,i,v2,ke_xy) = tmpv(:)
4820 tmpv(:) = b(:,i,v2,ke_xy)
4822 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
4824 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
4831 tmp = b(v,i,v2,ke_xy)
4832 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
4833 b(v,ip,v2,ke_xy) = tmp
4835 tmp = g(v,i,1,v2,ke_xy)
4836 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
4837 g(v,ip,1,v2,ke_xy) = tmp
4838 tmp = g(v,i,2,v2,ke_xy)
4839 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
4840 g(v,ip,2,v2,ke_xy) = tmp
4841 tmp = g(v,i,3,v2,ke_xy)
4842 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
4843 g(v,ip,3,v2,ke_xy) = tmp
4849 bb(v,1,i) = b(v,i,v2,ke_xy)
4850 bb(v,2,i) = g(v,i,1,v2,ke_xy)
4851 bb(v,3,i) = g(v,i,2,v2,ke_xy)
4852 bb(v,4,i) = g(v,i,3,v2,ke_xy)
4856 tmpb(:,:) = bb(:,:,i)
4859 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
4862 bb(:,:,i) = tmpb(:,:)
4865 tmpb(:,:) = bb(:,:,i)
4868 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
4872 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
4876 b(:,i,v2,ke_xy) = bb(:,1,i)
4877 g(:,i,1,v2,ke_xy) = bb(:,2,i)
4878 g(:,i,2,v2,ke_xy) = bb(:,3,i)
4879 g(:,i,3,v2,ke_xy) = bb(:,4,i)
4885 end subroutine solve_nnode16_var3
4887 subroutine solve_uv_im( D, b, G, Nnode_v, im, jm, Ne2D, is_top )
4889 integer,
intent(in) :: nnode_v
4890 integer,
intent(in) :: im, jm
4891 integer,
intent(in) :: ne2d
4892 real(rp),
intent(in) :: d(im,nnode_v,nnode_v,jm,ne2d)
4893 real(rp),
intent(inout) :: b(im,nnode_v,2,jm,ne2d)
4894 real(rp),
intent(inout) :: g(im,nnode_v,jm,ne2d)
4895 logical,
intent(in) :: is_top
4899 integer :: k, i, j, v, r
4901 integer :: ipiv(im,nnode_v)
4902 real(rp) :: tmpv(im)
4903 real(rp) :: tmpv2(im)
4904 real(rp) :: a(im,nnode_v,nnode_v)
4905 real(rp) :: bb(im,3,nnode_v)
4906 real(rp) :: tmpb(im,3)
4913 a(:,:,:) = d(:,:,:,v2,ke_xy)
4915 tmpv(:) = abs(a(:,k,k))
4920 if ( tmp > tmpv(v) )
then
4931 a(v,k,j) = a(v,ip,j)
4937 tmpv(:) = 1.0_rp / a(:,k,k)
4940 a(:,i,k) = a(:,i,k) * tmpv(:)
4945 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
4956 tmp = b(v,i,1,v2,ke_xy)
4957 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
4958 b(v,ip,1,v2,ke_xy) = tmp
4959 tmp = b(v,i,2,v2,ke_xy)
4960 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
4961 b(v,ip,2,v2,ke_xy) = tmp
4966 tmpv(:) = b(:,i,1,v2,ke_xy)
4967 tmpv2(:) = b(:,i,2,v2,ke_xy)
4969 tmpv(:) = tmpv(:) - b(:,j,1,v2,ke_xy) * a(:,i,j)
4970 tmpv2(:) = tmpv2(:) - b(:,j,2,v2,ke_xy) * a(:,i,j)
4972 b(:,i,1,v2,ke_xy) = tmpv(:)
4973 b(:,i,2,v2,ke_xy) = tmpv2(:)
4976 tmpv(:) = b(:,i,1,v2,ke_xy)
4977 tmpv2(:) = b(:,i,2,v2,ke_xy)
4979 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,1,v2,ke_xy)
4980 tmpv2(:) = tmpv2(:) - a(:,i,j) * b(:,j,2,v2,ke_xy)
4982 b(:,i,1,v2,ke_xy) = tmpv(:) * a(:,i,i)
4983 b(:,i,2,v2,ke_xy) = tmpv2(:) * a(:,i,i)
4990 tmp = b(v,i,1,v2,ke_xy)
4991 b(v,i,1,v2,ke_xy) = b(v,ip,1,v2,ke_xy)
4992 b(v,ip,1,v2,ke_xy) = tmp
4993 tmp = b(v,i,2,v2,ke_xy)
4994 b(v,i,2,v2,ke_xy) = b(v,ip,2,v2,ke_xy)
4995 b(v,ip,2,v2,ke_xy) = tmp
4997 tmp = g(v,i,v2,ke_xy)
4998 g(v,i,v2,ke_xy) = g(v,ip,v2,ke_xy)
4999 g(v,ip,v2,ke_xy) = tmp
5005 bb(v,1,i) = b(v,i,1,v2,ke_xy)
5006 bb(v,2,i) = b(v,i,2,v2,ke_xy)
5007 bb(v,3,i) = g(v,i,v2,ke_xy)
5011 tmpb(:,:) = bb(:,:,i)
5014 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
5017 bb(:,:,i) = tmpb(:,:)
5020 tmpb(:,:) = bb(:,:,i)
5023 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
5027 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
5031 b(:,i,1,v2,ke_xy) = bb(:,1,i)
5032 b(:,i,2,v2,ke_xy) = bb(:,2,i)
5033 g(:,i,v2,ke_xy) = bb(:,3,i)
5039 end subroutine solve_uv_im
5042 subroutine solve_var3_im( D, b, G, Nnode_v, im, jm, Ne2D, is_top )
5044 integer,
intent(in) :: nnode_v
5045 integer,
intent(in) :: im, jm
5046 integer,
intent(in) :: ne2d
5047 real(rp),
intent(in) :: d(im,3*nnode_v,3*nnode_v,jm,ne2d)
5048 real(rp),
intent(inout) :: b(im,3*nnode_v,jm,ne2d)
5049 real(rp),
intent(inout) :: g(im,3*nnode_v,3,jm,ne2d)
5050 logical,
intent(in) :: is_top
5054 integer :: k, i, j, v, r
5056 integer :: ipiv(im,3*nnode_v)
5057 real(rp) :: tmpv(im)
5058 real(rp) :: a(im,3*nnode_v,3*nnode_v)
5059 real(rp) :: bb(im,4,3*nnode_v)
5060 real(rp) :: tmpb(im,4)
5062 integer :: nnode_vx3
5065 nnode_vx3 = nnode_v * 3
5070 a(:,:,:) = d(:,:,:,v2,ke_xy)
5072 tmpv(:) = abs(a(:,k,k))
5077 if ( tmp > tmpv(v) )
then
5088 a(v,k,j) = a(v,ip,j)
5094 tmpv(:) = 1.0_rp / a(:,k,k)
5097 a(:,i,k) = a(:,i,k) * tmpv(:)
5102 a(v,i,j) = a(v,i,j) - a(v,i,k) * a(v,k,j)
5113 tmp = b(v,i,v2,ke_xy)
5114 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
5115 b(v,ip,v2,ke_xy) = tmp
5120 tmpv(:) = b(:,i,v2,ke_xy)
5122 tmpv(:) = tmpv(:) - b(:,j,v2,ke_xy) * a(:,i,j)
5124 b(:,i,v2,ke_xy) = tmpv(:)
5126 do i=nnode_vx3, 1, -1
5127 tmpv(:) = b(:,i,v2,ke_xy)
5129 tmpv(:) = tmpv(:) - a(:,i,j) * b(:,j,v2,ke_xy)
5131 b(:,i,v2,ke_xy) = tmpv(:) * a(:,i,i)
5138 tmp = b(v,i,v2,ke_xy)
5139 b(v,i,v2,ke_xy) = b(v,ip,v2,ke_xy)
5140 b(v,ip,v2,ke_xy) = tmp
5142 tmp = g(v,i,1,v2,ke_xy)
5143 g(v,i,1,v2,ke_xy) = g(v,ip,1,v2,ke_xy)
5144 g(v,ip,1,v2,ke_xy) = tmp
5145 tmp = g(v,i,2,v2,ke_xy)
5146 g(v,i,2,v2,ke_xy) = g(v,ip,2,v2,ke_xy)
5147 g(v,ip,2,v2,ke_xy) = tmp
5148 tmp = g(v,i,3,v2,ke_xy)
5149 g(v,i,3,v2,ke_xy) = g(v,ip,3,v2,ke_xy)
5150 g(v,ip,3,v2,ke_xy) = tmp
5156 bb(v,1,i) = b(v,i,v2,ke_xy)
5157 bb(v,2,i) = g(v,i,1,v2,ke_xy)
5158 bb(v,3,i) = g(v,i,2,v2,ke_xy)
5159 bb(v,4,i) = g(v,i,3,v2,ke_xy)
5163 tmpb(:,:) = bb(:,:,i)
5166 tmpb(:,r) = tmpb(:,r) - bb(:,r,j) * a(:,i,j)
5169 bb(:,:,i) = tmpb(:,:)
5171 do i=nnode_vx3, 1, -1
5172 tmpb(:,:) = bb(:,:,i)
5175 tmpb(:,r) = tmpb(:,r) - a(:,i,j) * bb(:,r,j)
5179 bb(:,r,i) = tmpb(:,r) * a(:,i,i)
5183 b(:,i,v2,ke_xy) = bb(:,1,i)
5184 g(:,i,1,v2,ke_xy) = bb(:,2,i)
5185 g(:,i,2,v2,ke_xy) = bb(:,3,i)
5186 g(:,i,3,v2,ke_xy) = bb(:,4,i)
5192 end subroutine solve_var3_im
module FElib / Fluid dyn solver / Atmosphere / HEVI / Common
subroutine, public atm_dyn_dgm_hevi_common_linalgebra_solve_var3(d, b, g, nnode_v, im, jm, ne2d, is_top)
subroutine, public atm_dyn_dgm_hevi_common_linalgebra_solve_uv(d, b, g, nnode_v, im, jm, ne2d, is_top)
subroutine, public atm_dyn_dgm_hevi_common_linalgebra_get_param(im, jm, nnode_h1d)