59 REAL(SP),
ALLOCATABLE :: XX(:),YY(:)
60 REAL(SP) :: ARTMAX,ARTTOT,ARTMIN
61 REAL(SP) :: ART1MAX,ART1TOT,ART1MIN
62 INTEGER :: I,J,II,J1,J2,MAX_NBRE
66 CHARACTER(LEN=10) :: TSTR
67 CHARACTER(LEN=80) ::MSG
76 max_nbre = maxval(
ntve)+1
77 ALLOCATE(xx(2*max_nbre+1),yy(2*max_nbre+1))
78 xx = 0.0_sp ; yy = 0.0_sp
90 artmin = minval(
art(1:n))
91 artmax = maxval(
art(1:n))
92 arttot = sum(
art(1:n))
95 IF(artmin .LT. 1.0e-6_sp)
THEN 99 WRITE(tstr,
'(I3)') myid
100 msg=trim(msg)//trim(tstr)//
"; " 103 msg = trim(msg)//
"Min Triangle Area=" 104 WRITE(tstr,
'(F9.6)') artmin
105 msg=trim(msg)//trim(tstr)
107 i = minloc(
art(1:n),dim=1)
109 msg = trim(msg)//
"; EGID=" 110 WRITE(tstr,
'(I7)')
egid(i)
111 msg=trim(msg)//trim(tstr)
113 WRITE(ipt,*)
"*****************************" 114 WRITE(ipt,*) trim(msg)
115 WRITE(ipt,*)
"*****************************" 121 WRITE(ipt,*)
"! Minimum Triangle Area: ", artmin
122 WRITE(ipt,*)
"! Maximum Triangle Area: ", artmax
123 WRITE(ipt,*)
"! Total Triangle Area : ", arttot
125 IF(artmin.LT. 1.0e-6_sp)
CALL warning(
"CELL_AREA: TRIANGLE AREA IS SMALL (LT 1e-6)")
130 IF(
isonb(i) == 0)
THEN 134 j2=j1+1-int((j1+1)/4)*3
135 xx(2*j-1)=(
vx(
nv(ii,j1))+
vx(
nv(ii,j2)))*0.5_sp-
vx(i)
136 yy(2*j-1)=(
vy(
nv(ii,j1))+
vy(
nv(ii,j2)))*0.5_sp-
vy(i)
140 xx(2*
ntve(i)+1)=xx(1)
141 yy(2*
ntve(i)+1)=yy(1)
144 art1(i)=
art1(i)+0.5_sp*(xx(j+1)*yy(j)-xx(j)*yy(j+1))
151 j2=j1+1-int((j1+1)/4)*3
152 xx(2*j-1)=(
vx(
nv(ii,j1))+
vx(
nv(ii,j2)))*0.5_sp-
vx(i)
153 yy(2*j-1)=(
vy(
nv(ii,j1))+
vy(
nv(ii,j2)))*0.5_sp-
vy(i)
160 j2=j1+2-int((j1+2)/4)*3
161 xx(2*j-1)=(
vx(
nv(ii,j1))+
vx(
nv(ii,j2)))*0.5_sp-
vx(i)
162 yy(2*j-1)=(
vy(
nv(ii,j1))+
vy(
nv(ii,j2)))*0.5_sp-
vy(i)
171 art1(i)=
art1(i)+0.5_sp*(xx(j+1)*yy(j)-xx(j)*yy(j+1))
179 art1min = minval(
art1(1:m))
180 art1max = maxval(
art1(1:m))
181 art1tot = sum(
art1(1:m))
183 IF(art1min .LT. 1.0e-6_sp)
THEN 187 WRITE(tstr,
'(I3)') myid
188 msg=trim(msg)//trim(tstr)//
"; " 191 msg = trim(msg)//
"Min Control Volume Area=" 192 WRITE(tstr,
'(F9.6)') art1min
193 msg=trim(msg)//trim(tstr)
195 i = minloc(
art1(1:m),dim=1)
197 msg = trim(msg)//
"; NGID=" 198 WRITE(tstr,
'(I7)')
ngid(i)
199 msg=trim(msg)//trim(tstr)
202 msg = trim(msg)//
"; Node is interior" 203 ELSEIF(
isonb(i)==1)
THEN 204 msg = trim(msg)//
"; Node is on solid boundary" 205 ELSEIF(
isonb(i)==2)
THEN 206 msg = trim(msg)//
"; Node is on open boundary" 208 msg = trim(msg)//
"; ISONB has bad value!" 212 WRITE(ipt,*)
"*****************************" 213 WRITE(ipt,*) trim(msg)
214 WRITE(ipt,*)
"*****************************" 220 WRITE(ipt,*)
"! Minimum Node Control Volume Area: ", art1min
221 WRITE(ipt,*)
"! Maximum Node Control Volume Area: ", art1max
222 WRITE(ipt,*)
"! Total Node Control Volume Area : ", art1tot
224 IF(art1min.LT. 1.0e-6_sp)
CALL warning(
" CELL_AREA: NODAL CONTROL VOLUME IS SMALL (LT 1e-6)")
real(sp), dimension(:), allocatable, target art
integer, parameter dbg_scl
logical function dbg_set(vrb)
real(sp), dimension(:), allocatable, target art1
real(sp), dimension(:), allocatable, target yc
real(sp), dimension(:), allocatable, target art2
integer, dimension(:,:), allocatable, target nbvt
real(sp), dimension(:), allocatable, target vx
real(sp), dimension(:), allocatable, target vy
integer, dimension(:), allocatable, target ntve
subroutine warning(ER1, ER2, ER3, ER4)
integer, dimension(:,:), allocatable, target nv
integer, dimension(:,:), allocatable, target nbve
real(sp), dimension(:), allocatable, target xc
integer, dimension(:), pointer ngid
integer, parameter dbg_sbr
integer, dimension(:), allocatable, target isonb
integer, dimension(:), pointer egid
integer, parameter dbg_log