32 SUBROUTINE ingrbric_dx(NBRIC , IBUFSSG, GLOBAL_GAP , IXS , X ,
33 . NOINT , TITR , IS_GAP_COMPUTED, PM , IPM ,
34 . IDDLEVEL , ISTIFF , AUTO_RHO , AUTO_LENGTH,
55#include "implicit_f.inc"
64 INTEGER,
INTENT(IN) :: NBRIC, NOINT, IDDLEVEL,ISTIFF
65 INTEGER,
INTENT(IN) :: IBUFSSG(*), IXS(NIXS,NUMELS), IPM(NPROPMI,NUMMAT)
66 my_real,
INTENT(INOUT) :: GLOBAL_GAP
67 my_real,
INTENT(IN) :: x(3,numnod)
68 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
69 LOGICAL,
INTENT(INOUT) :: IS_GAP_COMPUTED
70 my_real ,
INTENT(IN) :: pm(npropm,nummat
71 my_real,
INTENT(INOUT) :: auto_rho, auto_length
72 TYPE(multi_fvm_struct),
INTENT(IN) ::
76 INTEGER :: I, J, J2, IEDG, CONNECT1(12), CONNECT2(12),IE,IMAT, ENUM, ILAW
77 my_real :: MIN_X,MIN_Y,MIN_Z
78 my_real :: MAX_X,MAX_Y,MAX_Z
80 my_real :: xx2,yy2,zz2
82 my_real :: diag, diag_max , max_ratio, len_edge(12), lmax, lmin, ratio2
83 my_real :: rho_max, rho0
84 LOGICAL :: CHECK_ASPECT
85 CHARACTER(LEN=NCHARTITLE) :: MSGTITL
86 CHARACTER*10 :: CHAR_ID
91 is_gap_computed = .false.
96 IF(global_gap == zero)
THEN
110 IF(ixs(j,ibufssg(i))==0)
EXIT
114 IF(xx < min_x)min_x=xx
115 IF(yy < min_y)min_y=yy
116 IF(zz < min_z)min_z=zz
117 IF(xx > max_x)max_x=xx
118 IF(yy > max_y)max_y=yy
119 IF(zz > max_z)max_z=zz
124 diag = sqrt(dx*dx+dy*dy+dz*dz)
125 diag = sqrt(three)*diag
127 IF(diag > diag_max)diag_max=diag
129 global_gap = diag_max
130 auto_length = sqrt(three)*third*diag_max
131 is_gap_computed = .true.
146 IF(ilaw == 51 .OR. ilaw == 151)
THEN
147 rho_max =
max(rho_max,pm(91,imat))
149 rho_max =
max(rho_max, rho0)
159 IF(iddlevel==1 .AND. multi_fvm%IS_USED)check_aspect=.true.
160 IF (check_aspect)
THEN
162 connect1(1:12)=(/1,1,1,2,2,3,3,4,5,5,6,7/)
163 connect2(1:12)=(/2,4,5,3,6,4,7,8,6,8,7,8/)
169 xx = x(1,ixs(j,ibufssg(i)))
170 yy = x(2,ixs(j,ibufssg(i)))
171 zz = x(3,ixs(j,ibufssg(i)))
172 xx2 = x(1,ixs(j2,ibufssg(i)))
173 yy2 = x(2,ixs(j2,ibufssg(i)))
174 zz2 = x(3,ixs(j2,ibufssg(i)))
178 len_edge(iedg) = dx*dx + dy*dy + dz*dz
180 lmin=minval(len_edge)
181 lmax=maxval(len_edge)
183 IF(ratio2 > 6.25 .AND.
ENUM < 10)then
185 WRITE(char_id,fmt=
'(I0)')ixs(11,ibufssg(i))
186 msgtitl=
'CHECK ASPECT RATIO CELL ID ='//char_id
187 CALL ancmsg(msgid=1826, msgtype=msgwarning, anmode=aninfo, i1=noint, c1=titr, c2=msgtitl)
subroutine ingrbric_dx(nbric, ibufssg, global_gap, ixs, x, noint, titr, is_gap_computed, pm, ipm, iddlevel, istiff, auto_rho, auto_length, multi_fvm)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)