39#include "implicit_f.inc"
43 INTEGER,
INTENT(IN) :: IS_DYNA
44 INTEGER,
INTENT(IN) :: NUMNUSR, NUMCNOD
45 INTEGER,
INTENT(OUT) :: NUMNOD
46 INTEGER,
INTENT(IN),
DIMENSION(NUMNUSR+NUMCNOD) :: ITAB
47 my_real,
INTENT(IN),
DIMENSION(3,NUMNUSR) :: x
53 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITABM1, INDX
54 my_real :: xodusr, xmin, ymin, zmin, xmax,
ymax, zmax, dx, dy, dz, tol
58 ALLOCATE (itabm1(2*(numnusr+numcnod)),indx(2*(numnusr+numcnod)),stat=stat)
59 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
68 CALL my_orders(0,work,itab,indx,numnusr,1)
71 itabm1(1) = itab(indx(1))
72 itabm1(numnusr+1) = indx(1)
78 itabm1(i) = itab(indx(i))
79 IF(itabm1(i)==itabm1(i-1))
THEN
85 itabm1(numnusr+i) = indx(i)
99 xmin =
min(xmin,x(1,i))
100 xmax =
max(xmax,x(1,i))
101 ymin =
min(ymin,x(2,i))
104 zmax =
max(zmax,x(3,i))
109 tol = em05*(dx+dy+dz)/(three*exp(third*log(xodusr)))
112 DO WHILE(i <= numnusr)
114 itabm1(i) = itab(indx(i))
117 xmin = x(1,indx(iref))
118 xmax = x(1,indx(iref))
119 ymin = x(2,indx(iref))
120 ymax = x(2,indx(iref))
121 zmin = x(3,indx(iref))
122 zmax = x(3,indx(iref))
124 DO WHILE(i <= numnusr .AND. itabm1(i)==itabm1(iref))
126 xmin =
min(xmin,x(1,indx(i)))
127 xmax =
max(xmax,x(1,indx(i)))
128 ymin =
min(ymin,x(2,indx(i)))
130 zmin =
min(zmin,x(3,indx(i)))
131 zmax =
max(zmax,x(3,indx(i)))
134 itabm1(numnusr+i) = indx(iref)
137 itabm1(i)=itab(indx(i))
146 IF(dx < tol .AND. dy < tol .AND. dz < tol)
THEN
148 . msgtype=msgwarning,
149 . anmode=aninfo_blind_1,
150 . i1=itabm1(i-1),i2=i-iref,i3=itabm1(i-1),r1=tol)
160 itabm1(numnusr+i) = indx(i)
169 IF(itabm1(numnusr+i) == itabm1(numnusr+i-1)) cycle
175 DO i = 1, numnusr+numcnod
179 CALL my_orders(0,work,itab,indx,numnusr+numcnod,1)
181 IF(numnusr+numcnod>=1)
THEN
182 itabm1(1) = itab(indx(1))
183 itabm1(numnusr+numcnod+1) = indx(1)
186 DO i = 2, numnusr+numcnod
187 itabm1(i) = itab(indx(i))
188 IF(itabm1(i)==itabm1(i-1))
THEN
189 IF((indx(i-1) < numnusr .AND. indx(i) > numnusr) .OR.
190 . (indx(i-1) > numnusr .AND. indx(i) < numnusr))
THEN
196 ELSEIF(indx(i-1) > numnusr .AND. indx(i) > numnusr)
THEN
204 itabm1(numnusr+numcnod+i) = indx(i)
207 numnod = numnod + numcnod
208 DEALLOCATE(itabm1,indx)
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
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)