32 SUBROUTINE check_dynain(IPART,IPARTC,IPARTTG,IXC,IXTG,DYNAIN_CHECK)
42#include "implicit_f.inc"
54 INTEGER IPART(LIPART1,*), IXC(NIXC,*), IXTG(NIXTG,*),
55 . IPARTC(*), IPARTTG(*)
56 INTEGER ,
INTENT(INOUT) :: DYNAIN_CHECK
60 INTEGER I, J, K, N ,NELC , NELTG , IO_ERR1 , IP , NPRT ,
61 . FLG_CHK , IS_CHECK , JWARN, NELMIN , NELMAX , IPRT ,
62 . NELTGG , NELCG , IPRTALL , IERR2 ,IS_READ,
63 . DYNPART(NPART), IPART_DYNAIN(NPART)
66 INTEGER ,
DIMENSION(:),
ALLOCATABLE :: NELIDC ,NELIDTG,
67 . CLEFC ,CLEFTG ,INDXC ,INDXTG ,IDWARN ,NELIDCG ,NELIDTGG
69 CHARACTER FILNAM*109, KEYA*80, KEYA2*80
70 CHARACTER(LEN=NCHARLINE) ::CARTE
71 INTEGER :: LEN_TMP_NAME
72 CHARACTER(len=4096) :: TMP_NAME
80 filnam=rootnam(1:rootlen)//
'_0001.rad'
83 OPEN(unit=71,file=tmp_name(1:len_tmp_name),
84 . access=
'SEQUENTIAL',status=
'OLD',iostat=io_err1)
87 filnam=rootnam(1:rootlen)//
'D01'
90 OPEN(unit=71,file=tmp_name(1:len_tmp_name),
91 . access=
'SEQUENTIAL',status=
'OLD',iostat=io_err1)
100 ipart_dynain(1:npart) = 0
10310
READ(71,
'(A)',
END=20) keya
105 IF(keya(1:1)==
'#')
GOTO 10
106 IF(keya(1:1)==
'$')
GOTO 10
111 IF(keya(1:14)==
'/DYNAIN/DT/ALL')
THEN
113 ALLOCATE(nelidc(numelc),stat=ierr2)
115 nelidc(i) = ixc(nixc,i)
120 ALLOCATE(nelidtg(numeltg),stat=ierr2)
122 nelidtg(neltg) = ixtg(nixtg,i)
135 ELSEIF(keya(1:10)==
'/DYNAIN/DT')
THEN
136 READ(71,*,
END=20) T0,dt0
138 READ(71,
'(A)',
END=20) carte
143 IF(carte(1:1)/=
'#'.OR.carte(1:1)/=
'$')
THEN
144 DO WHILE(carte(1:1) /=
'/'.AND.len_trim(carte)/=0)
145 DO WHILE (j<=len_trim(carte))
146 IF(carte(j:j)/=
' ')
THEN
148 DO WHILE(carte(k:k)/=
' '.AND.carte(k:k)/=char(13).AND.k<=len_trim(carte))
152 READ(carte(j:k-1),
'(I10)') iprt
158 READ(71,
'(A)',
END=20) carte
169 IF(is_read > 0 )
THEN
173 . anmode=aninfo_blind_1)
175 ELSEIF(iprtall ==0)
THEN
183 IF(ipart(4,j)==iprt)ip=j
188 . anmode=aninfo_blind_1,
193 IF(numelc/=0)
ALLOCATE(nelidc(numelc),stat=ierr2)
194 IF(numeltg/=0)
ALLOCATE(nelidtg(numeltg),stat=ierr2)
205 nelidc(nelc) = ixc(nixc
211 IF(ipart_dynain(ip)==1)
THEN
213 nelidtg(neltg) = ixtg(nixtg,i)
224 IF(nelc/=0.AND.neltg/=0) flg_chk = 1
226 IF(flg_chk == 1 )
THEN
229 ALLOCATE(clefc(nelc),stat=ierr2)
230 ALLOCATE(indxc(2*nelc),stat=ierr2)
236 CALL my_orders(0,work,clefc,indxc,nelc,1)
238 ALLOCATE(cleftg(neltg),stat=ierr2)
239 ALLOCATE(indxtg(2*neltg),stat=ierr2)
243 cleftg(n)= nelidtg(n)
245 CALL my_orders(0,work,cleftg,indxtg,neltg,1)
247 IF(nelidtg(indxtg(1))>=nelidc(indxc(1)).AND.nelidtg(indxtg(1))<=nelidc(indxc(nelc)))
THEN
251 IF(nelidtg(indxtg(neltg))>=nelidc(indxc(1)).AND.nelidtg(indxtg(neltg))<=nelidc(indxc(nelc)))
THEN
255 IF(nelidc(indxc(1))>=nelidtg(indxtg(1)).AND.nelidc(indxc(1))<=nelidtg(indxtg(neltg)))
THEN
259 IF(nelidc(indxc(nelc))>=nelidtg(indxtg(1)).AND.nelidc(indxc(nelc))<=nelidtg(indxtg(neltg)))
THEN
263 IF(is_check == 1)
THEN
264 nelmin =
max(nelidc(indxc(1)),nelidtg(indxtg(1)))
265 nelmax =
min(nelidc(indxc(nelc)),nelidtg(indxtg(neltg)))
267 ALLOCATE(idwarn(
min(nelc,neltg)),stat=ierr2)
270 IF(nelidc(indxc(i))>=nelmin.AND.nelidc(indxc(i))<=nelmax)
THEN
272 IF(nelidtg(indxtg(j))>=nelmin.AND.nelidtg(indxtg(j))<=nelmax)
THEN
273 IF(nelidc(indxc(i))==nelidtg(indxtg(j)))
THEN
275 idwarn(jwarn) = nelidc(indxc(i))
285 .
' ** ERROR : DYNAIN FILE CAN NOT BE WRITTEN',
286 .
' THESE 4 NODE SHELLS AND 3 NODE SHELLS HAVE SAME USER ID'
287 WRITE(iout,*) idwarn(1:jwarn)
291 . anmode=aninfo_blind_1,
298 . anmode=aninfo_blind_1,
306 DEALLOCATE(clefc,cleftg,indxc,indxtg)
310 IF(is_read > 0 )
THEN
311 IF(numelc/=0)
DEALLOCATE(nelidc,stat=ierr2)
312 IF(numeltg/=0)
DEALLOCATE(nelidtg,stat=ierr2)
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)