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) ::
52 INTEGER I, IREF, J, STAT
54 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITABM1, INDX
56 . xodusr, xmin, ymin, zmin, xmax,
ymax, zmax, dx, dy, dz, tol
60 ALLOCATE (itabm1(2*(numnusr+numcnod)),indx(2*(numnusr+numcnod)),stat=stat)
61 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
70 CALL my_orders(0,work,itab,indx,numnusr,1)
73 itabm1(1) = itab(indx(1))
74 itabm1(numnusr+1) = indx(1)
80 itabm1(i) = itab(indx(i))
81 IF(itabm1(i)==itabm1(i-1))
THEN
87 itabm1(numnusr+i) = indx(i)
101 xmin =
min(xmin,x(1,i))
102 xmax =
max(xmax,x(1,i))
103 ymin =
min(ymin,x(2,i))
105 zmin =
min(zmin,x(3,i))
106 zmax =
max(zmax,x(3,i))
111 tol = em05*(dx+dy+dz)/(three*exp(third*log(xodusr)))
114 DO WHILE(i <= numnusr)
116 itabm1(i) = itab(indx(i))
119 xmin = x(1,indx(iref))
120 xmax = x(1,indx(iref))
121 ymin = x(2,indx(iref))
122 ymax = x(2,indx(iref))
123 zmin = x(3,indx(iref))
124 zmax = x(3,indx(iref))
126 DO WHILE(i <= numnusr .AND. itabm1(i)==itabm1(iref))
128 xmin =
min(xmin,x(1,indx(i)))
129 xmax =
max(xmax,x(1,indx(i)))
130 ymin =
min(ymin,x(2,indx(i)))
132 zmin =
min(zmin,x(3,indx(i)))
133 zmax =
max(zmax,x(3,indx(i)))
136 itabm1(numnusr+i) = indx(iref)
139 itabm1(i)=itab(indx(i))
148 IF(dx < tol .AND. dy < tol .AND. dz < tol)
THEN
150 . msgtype=msgwarning,
151 . anmode=aninfo_blind_1,
152 . i1=itabm1(i-1),i2=i-iref,i3=itabm1(i-1),r1=tol)
162 itabm1(numnusr+i) = indx(i)
171 IF(itabm1(numnusr+i) == itabm1(numnusr+i-1)) cycle
177 DO i = 1, numnusr+numcnod
181 CALL my_orders(0,work,itab,indx,numnusr+numcnod,1)
183 IF(numnusr+numcnod>=1)
THEN
184 itabm1(1) = itab(indx(1))
185 itabm1(numnusr+numcnod+1) = indx(1)
188 DO i = 2, numnusr+numcnod
189 itabm1(i) = itab(indx(i))
190 IF(itabm1(i)==itabm1(i-1))
THEN
191 IF((indx(i-1) < numnusr .AND. indx(i) > numnusr) .OR.
192 . (indx(i-1) > numnusr .AND. indx(i) < numnusr))
THEN
198 ELSEIF(indx(i-1) > numnusr .AND. indx(i) > numnusr)
THEN
206 itabm1(numnusr+numcnod+i) = indx(i)
209 numnod = numnod + numcnod
210 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)