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,
52 use element_mod ,
only : nixs
56#include "implicit_f.inc"
65 INTEGER,
INTENT(IN) :: NBRIC, NOINT, IDDLEVEL,ISTIFF
66 INTEGER,
INTENT(IN) :: IBUFSSG(*), IXS(NIXS,NUMELS), IPM(NPROPMI,NUMMAT)
67 my_real,
INTENT(INOUT) :: GLOBAL_GAP
68 my_real,
INTENT(IN) :: x(3,numnod)
69 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
70 LOGICAL,
INTENT(INOUT) :: IS_GAP_COMPUTED
71 my_real ,
INTENT(IN) :: pm(npropm,nummat)
72 my_real,
INTENT(INOUT) :: auto_rho, auto_length
73 TYPE(multi_fvm_struct),
INTENT(IN) :: MULTI_FVM
77 INTEGER :: I, J, J2, IEDG, CONNECT1(12), CONNECT2(12),IE,IMAT, ENUM, ILAW
78 my_real :: MIN_X,MIN_Y,MIN_Z
79 my_real :: MAX_X,MAX_Y,MAX_Z
81 my_real :: xx2,yy2,zz2
83 my_real :: diag, diag_max , len_edge(12), lmax, lmin, ratio2
84 my_real :: rho_max, rho0
85 LOGICAL :: CHECK_ASPECT
86 CHARACTER(LEN=NCHARTITLE) :: MSGTITL
87 CHARACTER*10 :: CHAR_ID
92 is_gap_computed = .false.
97 IF(global_gap == zero)
THEN
111 IF(ixs(j,ibufssg(i))==0)
EXIT
115 IF(xx < min_x)min_x=xx
116 IF(yy < min_y)min_y=yy
117 IF(zz < min_z)min_z=zz
118 IF(xx > max_x)max_x=xx
119 IF(yy > max_y)max_y=yy
120 IF(zz > max_z)max_z=zz
125 diag = sqrt(dx*dx+dy*dy+dz*dz)
126 diag = sqrt(three)*diag
128 IF(diag > diag_max)diag_max=diag
130 global_gap = diag_max
131 auto_length = sqrt(three)*third*diag_max
132 is_gap_computed = .true.
147 IF(ilaw == 51 .OR. ilaw == 151)
THEN
148 rho_max =
max(rho_max,pm(91,imat))
150 rho_max =
max(rho_max, rho0)
160 IF(iddlevel==1 .AND. multi_fvm%IS_USED)check_aspect=.true.
161 IF (check_aspect)
THEN
163 connect1(1:12)=(/1,1,1,2,2,3,3,4,5,5,6,7/)
164 connect2(1:12)=(/2,4,5,3,6,4,7,8,6,8,7,8/)
170 xx = x(1,ixs(j,ibufssg(i)))
171 yy = x(2,ixs(j,ibufssg(i)))
172 zz = x(3,ixs(j,ibufssg(i)))
173 xx2 = x(1,ixs(j2,ibufssg(i)))
174 yy2 = x(2,ixs(j2,ibufssg(i)))
175 zz2 = x(3,ixs(j2,ibufssg(i)))
179 len_edge(iedg) = dx*dx + dy*dy + dz*dz
181 lmin=minval(len_edge)
182 lmax=maxval(len_edge)
184 IF(ratio2 > 6.25 .AND.
ENUM < 10)then
186 WRITE(char_id,fmt=
'(I0)')ixs(11,ibufssg(i))
187 msgtitl=
'CHECK ASPECT RATIO CELL ID ='//char_id
188 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)