115 INTEGER,
ALLOCATABLE,
DIMENSION(:,:) :: TEMP,TEMP2,NB_TMP,ISET
116 INTEGER I,J,DIF1,DIF2,DIF3,II,JJ,NTMP,NCNT,INEY,NFLAG
117 INTEGER ITMP1,ITMP2,ITMP3,JN,JJB,IBCETMP,NCTMP,NCETMP,NPT
118 INTEGER,
ALLOCATABLE :: CELLS(:,:),CELLCNT(:),NBET(:,:)
120 INTEGER N1,N2,N3,J1,J2,J3,SBUF, IERR
123 REAL(SP),
ALLOCATABLE :: FTEMP(:)
125 Character(len=8) :: tmpstr
126 Character(len=200):: errstr
129 REAL(SP) DELTX,DELTY,ALPHA1,ALPHA2
132 IF (dbg_set(dbg_log))
THEN 134 WRITE(ipt,*)
'! SETTING UP TRIS/ELEMENTS/EDGES/CVS ' 146 ALLOCATE(nbet(nt,3)) ; nbet = 0
147 ALLOCATE(cells(mt,50)) ; cells = 0
148 ALLOCATE(cellcnt(mt)) ; cellcnt = 0
150 n1 =
nv(i,1) ; cellcnt(n1) = cellcnt(n1)+1
151 n2 =
nv(i,2) ; cellcnt(n2) = cellcnt(n2)+1
152 n3 =
nv(i,3) ; cellcnt(n3) = cellcnt(n3)+1
153 cells(
nv(i,1),cellcnt(n1)) = i
154 cells(
nv(i,2),cellcnt(n2)) = i
155 cells(
nv(i,3),cellcnt(n3)) = i
157 if(maxval(cellcnt) > 50)
write(ipt,*)
'bad',maxval(cellcnt)
162 DO j1 = 1,cellcnt(n1)
163 DO j2 = 1,cellcnt(n2)
164 IF((cells(n1,j1) == cells(n2,j2)).AND. cells(n1,j1) /= i)
nbe(i,3) = cells(n1,j1)
167 DO j2 = 1,cellcnt(n2)
168 DO j3 = 1,cellcnt(n3)
169 IF((cells(n2,j2) == cells(n3,j3)).AND. cells(n2,j2) /= i)
nbe(i,1) = cells(n2,j2)
172 DO j1 = 1,cellcnt(n1)
173 DO j3 = 1,cellcnt(n3)
174 IF((cells(n1,j1) == cells(n3,j3)).AND. cells(n1,j1) /= i)
nbe(i,2) = cells(n3,j3)
178 DEALLOCATE(cells,cellcnt)
191 IF (dbg_set(dbg_log))
WRITE(ipt,*)
'! NEIGHBOR FINDING : COMPLETE' 197 IF(sum(
nbe(i,1:3))==0)
THEN 199 WRITE(ipt,*)
'ELEMENT ',i,
' AT ',
xc(i),
yc(i),
' HAS NO NEIGHBORS' 203 IF(nflag == 1)
CALL pstop
210 IF(min(
nbe(i,1),
nbe(i,2),
nbe(i,3))==0)
THEN 212 IF(
nbe(i,1) == 0)
THEN 215 IF(
nbe(i,2) ==0)
THEN 218 IF(
nbe(i,3) ==0)
THEN 223 IF (dbg_set(dbg_log))
WRITE(ipt,*)
'! ISONB SETTING : COMPLETE' 251 IF( float(
nv(j,1)-i)*float(
nv(j,2)-i)*float(
nv(j,3)-i) == 0.0_sp) &
254 mx_nbr_elem = max(mx_nbr_elem,ncnt)
262 ALLOCATE(
nbve(m,mx_nbr_elem+1));
nbve = 0
263 ALLOCATE(
nbvt(m,mx_nbr_elem+1));
nbvt = 0
265 ALLOCATE(
nbsn(m,mx_nbr_elem+3));
nbsn = 0
276 IF (float(
nv(j,1)-i)*float(
nv(j,2)-i)*float(
nv(j,3)-i) == 0.0_sp)
THEN 279 IF((
nv(j,1)-i) == 0)
nbvt(i,ncnt)=1
280 IF((
nv(j,2)-i) == 0)
nbvt(i,ncnt)=2
281 IF((
nv(j,3)-i) == 0)
nbvt(i,ncnt)=3
292 ALLOCATE(nb_tmp(mx_nbr_elem+1,2))
294 IF(
isonb(i) == 0)
THEN 295 nb_tmp(1,1)=
nbve(i,1)
296 nb_tmp(1,2)=
nbvt(i,1)
300 nb_tmp(j,1)=
nbe(ii,jj+1-int((jj+1)/4)*3)
302 IF((
nv(jj,1)-i) == 0) nb_tmp(j,2)=1
303 IF((
nv(jj,2)-i) == 0) nb_tmp(j,2)=2
304 IF((
nv(jj,3)-i) == 0) nb_tmp(j,2)=3
308 nbve(i,j)=nb_tmp(j,1)
312 nbvt(i,j)=nb_tmp(j,2)
317 print*, myid,
ngid(i),ntmp,
'NBVE(I,nTMP) NOT CORRECT!!' 318 print*,
"NBVE(I,:)=",
egid(
nbve(i,:))
323 print*,
ngid(i),
'NBVT(I) NOT CORRECT!!' 324 print*,
"NBVT(I,:)=",
nbvt(i,:)
333 nbsn(i,j)=
nv(ii,jj+1-int((jj+1)/4)*3)
344 IF(
nbe(
nbve(i,j),jj+2-int((jj+2)/4)*3) == 0)
THEN 346 nb_tmp(jjb,1)=
nbve(i,j)
347 nb_tmp(jjb,2)=
nbvt(i,j)
352 WRITE(ipt,*)
'ERROR IN ISONB !,I,J', i,j
353 CALL fatal_error(
"ERROR IN TGE DETERMINING ISONB")
359 nb_tmp(j,1)=
nbe(ii,jj+1-int((jj+1)/4)*3)
361 IF((
nv(jj,1)-i) == 0) nb_tmp(j,2)=1
362 IF((
nv(jj,2)-i) == 0) nb_tmp(j,2)=2
363 IF((
nv(jj,3)-i) == 0) nb_tmp(j,2)=3
367 nbve(i,j)=nb_tmp(j,1)
368 nbvt(i,j)=nb_tmp(j,2)
378 nbsn(i,j+1)=
nv(ii,jj+1-int((jj+1)/4)*3)
384 nbsn(i,j+1)=
nv(ii,jj+2-int((jj+2)/4)*3)
390 IF(mx_nbr_elem+3 -maxval(
ntsn) < 0)
THEN 391 WRITE(ipt,*)
'CHECK NTSN/NBSN',maxval(
ntsn),mx_nbr_elem+3
412 IF (dbg_set(dbg_log))
WRITE(ipt,*)
'! NBVE/NBVT : COMPLETE' 434 ALLOCATE(iset(nt,3),temp((nt)*3,2),temp2((nt)*3,2))
441 IF(iset(i,j) == 0)
THEN 446 IF(i ==
nbe(iney,jn)) iset(iney,jn) = 1
448 temp(ne,1) = i ; temp(ne,2) = iney
449 temp2(ne,1) =
nv(i,j+1-int((j+1)/4)*3)
450 temp2(ne,2) =
nv(i,j+2-int((j+2)/4)*3)
469 iec(:,1) = temp(1:ne,1)
470 iec(:,2) = temp(1:ne,2)
471 ienode(:,1) = temp2(1:ne,1)
472 ienode(:,2) = temp2(1:ne,2)
475 DEALLOCATE(temp,temp2)
483 IF((
iec(i,1) == 0) .OR. (
iec(i,2) == 0))
isbc(i) = 1
497 IF (dbg_set(dbg_log))
WRITE(ipt,*)
'! EDGE SETUP : COMPLETE' 529 IF(sum(
isonb(
nv(i,1:3))) == 4)
THEN 532 ELSE IF(sum(
isonb(
nv(i,1:3))) > 4)
THEN 533 print*,
'SORRY, THE BOUNDARY CELL',i,
'IS NOT GOOD FOR MODEL.' 534 print*,
'IT HAS EITHER TWO SIDES OF OPEN BOUNDARY OR ONE OPEN BOUNDARY' 535 print*,
'AND ONE SOLID BOUNDARY. PLEASE CHECK AND MODIFIED IT.' 536 print*,
'THIS MESSAGE IS IN SUBROUTINE TRIANGLE_GRID_EDGE (TGE.F)' 537 print*,
'STOP RUNNING...' 570 IF(
isbc(i) == 0)
THEN 571 IF(
iec(i,1) <= n)
THEN 591 IF(
iec(i,2) <= n)
THEN 610 ELSE IF(
isbc(i) == 1)
THEN 611 IF(
iec(i,1) <= n)
THEN 618 IF(
iec(i,1) == 0)
THEN 619 print*, i,
'IEC(I,1)===0' 635 WRITE(ipt,*)
'ISBC(I) NOT CORRECT, I==',i
643 IF(ncv /= 3*(nt))
THEN 644 print*,
'NCV IS NOT CORRECT, PLEASE CHECK THE SETUP' 647 IF(ncv_i /= 3*n)
THEN 648 print*,
'NCV_I IS NOT CORRECT, PLEASE CHECK THE SETUP' 653 IF(
niec(i,1) > m .OR.
niec(i,2) > m)
THEN 654 write(ipt,*)
'problemas',
niec(i,1),
niec(i,2),m
668 nisbce_1 = 0 ; nisbce_2 = 0 ; nisbce_3 = 0
670 IF(
isbce(i) == 1) nisbce_1 = nisbce_1 + 1
671 IF(
isbce(i) == 2) nisbce_2 = nisbce_2 + 1
672 IF(
isbce(i) == 3) nisbce_3 = nisbce_3 + 1
699 nisbce_1 = 0 ; nisbce_2 = 0 ; nisbce_3 = 0
701 IF(
isbce(i) == 1)
THEN 702 nisbce_1 = nisbce_1 + 1
705 IF(
isbce(i) == 2)
THEN 706 nisbce_2 = nisbce_2 + 1
709 IF(
isbce(i) == 3)
THEN 710 nisbce_3 = nisbce_3 + 1
718 ALLOCATE(
epor(0:nt)) ;
epor = 1.0_sp
723 IF (dbg_set(dbg_log))
WRITE(ipt,*)
'! NISBCE/LISBCE/EPOR : COMPLETE' 724 IF (dbg_set(dbg_log))
WRITE(ipt,*)
'! TRIS/EDGES/CVOLS : COMPLETE' integer, dimension(:,:), allocatable, target ienode
integer, dimension(:), allocatable, target ntsn
real(sp), dimension(:), allocatable, target epor
real(sp), dimension(:,:), allocatable, target yije
integer, dimension(:), allocatable, target lisbce_1
real(sp), dimension(:), allocatable, target yc
real(sp), dimension(:), allocatable, target dltxye
real(sp), dimension(:), allocatable, target dltxc
real(sp), dimension(:,:), allocatable, target xije
real(sp), dimension(:), allocatable, target sitac
subroutine triangle_grid_edge
integer, dimension(:), allocatable, target ntrg
integer, dimension(:), allocatable, target isbc
integer, dimension(:,:), allocatable, target iec
integer, dimension(:,:), allocatable, target niec
integer, dimension(:,:), allocatable, target nbvt
real(sp), dimension(:), allocatable, target vx
real(sp), dimension(:), allocatable, target dltye
real(sp), dimension(:), allocatable, target vy
integer, dimension(:), allocatable, target ntve
integer, dimension(:,:), allocatable, target nbe
integer, dimension(:,:), allocatable, target nv
real(sp), dimension(:), allocatable, target xijc
real(sp), dimension(:), allocatable, target dltyc
real(sp), dimension(:), allocatable, target sitae
real(sp), dimension(:), allocatable, target yijc
integer, dimension(:,:), allocatable, target nbve
real(sp), dimension(:), allocatable, target xc
integer, dimension(:), allocatable, target lisbce_2
integer, dimension(:), allocatable, target lisbce_3
real(sp), dimension(:), allocatable, target dltxyc
integer, dimension(:), allocatable, target isbce
integer, dimension(:,:), allocatable, target nbsn
integer, dimension(:), pointer ngid
real(sp), dimension(:), allocatable, target dltxe
integer, dimension(:), allocatable, target isonb
integer, dimension(:), pointer egid