32 SUBROUTINE check_dynain(IPART,IPARTC,IPARTTG,IXC,IXTG,DYNAIN_CHECK)
39 use element_mod ,
only : nixc,nixtg
43#include "implicit_f.inc"
55 INTEGER IPART(LIPART1,*), IXC(NIXC,*), IXTG(NIXTG,*),
56 . IPARTC(*), IPARTTG(*)
57 INTEGER ,
INTENT(INOUT) :: DYNAIN_CHECK
61 INTEGER I, J, K, N ,NELC , NELTG , IO_ERR1 , IP , NPRT ,
62 . FLG_CHK , IS_CHECK , JWARN, NELMIN , NELMAX , IPRT ,
63 . NELTGG , NELCG , IPRTALL , IERR2 ,IS_READ,
64 . DYNPART(), IPART_DYNAIN(NPART)
67 INTEGER ,
DIMENSION(:),
ALLOCATABLE :: NELIDC
70 CHARACTER FILNAM*109, KEYA*80, KEYA2*80
71 CHARACTER(LEN=NCHARLINE) ::CARTE
72 INTEGER :: LEN_TMP_NAME
73 CHARACTER(len=4096) :: TMP_NAME
81 filnam=rootnam(1:rootlen)//
'_0001.rad'
84 OPEN(unit=71,file=tmp_name(1:len_tmp_name),
85 . access=
'SEQUENTIAL',status='old
',IOSTAT=IO_ERR1)
88 FILNAM=ROOTNAM(1:ROOTLEN)//'d01
'
89 TMP_NAME=INFILE_NAME(1:INFILE_NAME_LEN)//FILNAM(1:LEN_TRIM(FILNAM))
90 LEN_TMP_NAME = INFILE_NAME_LEN+LEN_TRIM(FILNAM)
91 OPEN(UNIT=71,FILE=TMP_NAME(1:LEN_TMP_NAME),
92 . ACCESS='sequential
',STATUS='old
',IOSTAT=IO_ERR1)
101 IPART_DYNAIN(1:NPART) = 0
10410 READ(71,'(a)
',END=20) KEYA
106 IF(KEYA(1:1)=='#')GOTO 10
107 IF(keya(1:1)==
'$')
GOTO 10
112 IF(keya(1:14)==
'/DYNAIN/DT/ALL')
THEN
114 ALLOCATE(nelidc(numelc),stat=ierr2)
116 nelidc(i) = ixc(nixc,i)
121 ALLOCATE(nelidtg(numeltg),stat=ierr2)
123 nelidtg(neltg) = ixtg(nixtg,i)
136 ELSEIF(keya(1:10)==
'/DYNAIN/DT')
THEN
137 READ(71,*,
END=20) T0,dt0
139 READ(71,
'(A)',
END=20) carte
144 IF(carte(1:1)/=
'#'.OR.carte(1:1)/=
'$')
THEN
145 DO WHILE(carte(1:1) /=
'/'.AND.len_trim(carte)/=0)
146 DO WHILE (j<=len_trim(carte))
147 IF(carte(j:j)/=
' ')
THEN
149 DO WHILE(carte(k:k)/=
' '.AND.carte(k:k)/=char(13).AND.k<=len_trim(carte))
153 READ(carte(j:k-1),
'(I10)') iprt
159 READ(71,
'(A)',
END=20) carte
170 IF(is_read > 0 )
THEN
174 . anmode=aninfo_blind_1)
176 ELSEIF(iprtall ==0)
THEN
184 IF(ipart(4,j)==iprt)ip=j
189 . anmode=aninfo_blind_1,
194 IF(numelc/=0)
ALLOCATE(nelidc(numelc),stat=ierr2)
195 IF(numeltg/=0)
ALLOCATE(nelidtg(numeltg),stat=ierr2)
204 IF(ipart_dynain(ip)==1)
THEN
206 nelidc(nelc) = ixc(nixc,i)
212 IF(ipart_dynain(ip)==1)
THEN
214 nelidtg(neltg) = ixtg(nixtg,i)
225 IF(nelc/=0.AND.neltg/=0) flg_chk = 1
227 IF(flg_chk == 1 )
THEN
230 ALLOCATE(clefc(nelc),stat=ierr2)
231 ALLOCATE(indxc(2*nelc),stat=ierr2)
237 CALL my_orders(0,work,clefc,indxc,nelc,1)
239 ALLOCATE(cleftg(neltg),stat=ierr2)
240 ALLOCATE(indxtg(2*neltg),stat=ierr2)
244 cleftg(n)= nelidtg(n)
246 CALL my_orders(0,work,cleftg,indxtg,neltg,1)
248 IF(nelidtg(indxtg(1))>=nelidc(indxc(1)).AND.nelidtg(indxtg(1))<=nelidc(indxc(nelc)))
THEN
252 IF(nelidtg(indxtg(neltg))>=nelidc(indxc(1)).AND.nelidtg(indxtg(neltg))<=nelidc(indxc(nelc)))
THEN
256 IF(nelidc(indxc(1))>=nelidtg(indxtg(1)).AND.nelidc(indxc(1))<=nelidtg(indxtg(neltg)))
THEN
260 IF(nelidc(indxc(nelc))>=nelidtg(indxtg(1)).AND.nelidc(indxc(nelc))<=nelidtg(indxtg(neltg)))
THEN
264 IF(is_check == 1)
THEN
265 nelmin =
max(nelidc(indxc(1)),nelidtg(indxtg(1)))
266 nelmax =
min(nelidc(indxc(nelc)),nelidtg(indxtg(neltg)))
268 ALLOCATE(idwarn(
min(nelc,neltg)),stat=ierr2)
271 IF(nelidc(indxc(i))>=nelmin.AND.nelidc(indxc(i))<=nelmax)
THEN
273 IF(nelidtg(indxtg(j))>=nelmin.AND.nelidtg(indxtg(j))<=nelmax)
THEN
274 IF(nelidc(indxc(i))==nelidtg(indxtg(j)))
THEN
276 idwarn(jwarn) = nelidc(indxc(i))
286 .
' ** ERROR : DYNAIN FILE CAN NOT BE WRITTEN',
287 .
' THESE 4 NODE SHELLS AND 3 NODE SHELLS HAVE SAME USER ID'
288 WRITE(iout,*) idwarn(1:jwarn)
292 . anmode=aninfo_blind_1,
307 DEALLOCATE(clefc,cleftg,indxc,indxtg)
311 IF(is_read > 0 )
THEN
312 IF(numelc/=0)
DEALLOCATE(nelidc,stat=ierr2)
313 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)