56
57
58
63
64
65
66#include "implicit_f.inc"
67
68
69
70#include "scr16_c.inc"
71#include "scr17_c.inc"
72#include "scr03_c.inc"
73#include "com01_c.inc"
74#include "com04_c.inc"
75#include "units_c.inc"
76#include "param_c.inc"
77#include "r2r_c.inc"
78
79
80
81 INTEGER NIX,ITYP,ITABM1(*),IX(NIX,*),
82 . ITAB(NUMNOD),ITHGRP(NITHGR),ITHBUF(*),
83 . IFI,IAD,NV,,NVG,IVARG(18,*),NSNE,
84 . NV0,IMERGE(*),ITHVAR(*),FLAGABF,NVARABF,RFI
85 CHARACTER*10 VARE(NV),KEY,VARG(NVG),KEY1
86 INTEGER, INTENT(in) :: MAPSIZE
87 INTEGER, INTENT(in) :: ITHERM_FE
88 INTEGER, DIMENSION(MAPSIZE,2), INTENT(in) :: MAP
89 TYPE(SUBMODEL_DATA) :: LSUBMODEL(NSUBMOD)
90
91
92
93 INTEGER J,JJ, I,ISU,ID,NNE,NOSYS,J10(10),NTOT,KK,IER,
94 . OK,IGS,IGRS,NSU,K,L,CONT,IAD0,IADV,NTRI,NL,
95 . IFITMP,IADFIN,NVAR,M,N,IAD1,IAD2,ISK,IPROC,JC,
96 . IDSMAX,SIZ
97 INTEGER :: ID_LOCAL
98 CHARACTER(LEN=NCHARTITLE) :: TITR,TITR1
99 CHARACTER MESS*40,DIRMSG*3
100 LOGICAL IS_AVAILABLE
102
103
104
105 INTEGER USR2SYS,ULIST2S,LISTCNT,NINTRN,HM_THVARC
106 INTEGER R2R_SYS,R2R_NIN
107 INTEGER SET_USRTOS
109 DATA mess/'TH GROUP '/
110
111
112
113 is_available = .false.
115 CALL fretitl2(titr1,ithgrp(nithgr-ltitr+1),ltitr)
116 ithgrp(2)=ityp
117 ithgrp(3)=0
118 ifitmp=ifi+1000
119
121
122
124
126 CALL ancmsg(msgid=1109,msgtype=msgerror,anmode=aninfo_blind_1,i1=
id,c1=titr1 )
127 ENDIF
128
130 ithgrp(7)=iad
133 rfi=0
134
135 cont=1
136 nne=0
137
138
139 CALL hm_get_intv(
'idsmax',idsmax,is_available,lsubmodel)
140
141 DO k = 1,idsmax
143 IF (nsubdom /= 0) THEN
144
145 IF (ityp == 0) THEN
146 IF(
r2r_sys(n,itabm1,mess) /= 0)
THEN
147 nne=nne+1
148 ENDIF
149 ELSE
150 IF(
r2r_nin(n,ix,nix,numel) /= 0)
THEN
151 nne=nne+1
152 ENDIF
153 ENDIF
154 ELSE
155 nne = nne+1
156 ENDIF
157 ENDDO
158
159 ithgrp(4)=nne
160 ithgrp(5)=iad
161 iad2=iad+lvarithb*nne
162 ithgrp(8)=iad2
163 ifi=ifi+lvarithb*nne+40*nne
164 CALL zeroin(iad,iad+(40+lvarithb)*nne-1,ithbuf)
165 rfi=0
166
167
168 DO k=1,idsmax
172 siz=len_trim(titr)
173 titr(siz+1:siz+1)=' '
174 IF (ityp == 0) THEN
175
176 IF(nsubdom /= 0) THEN
177 IF (
r2r_sys(n,itabm1,mess) == 0) cycle
178 ENDIF
180 ithbuf(iad+nne)=isk
182 IF (ithbuf(iad) == imerge(
jc))
183 . ithbuf(iad) = imerge(numcnod+
jc)
184 ENDDO
185 ELSE
186
187 IF(nsubdom /= 0) THEN
188 IF (
r2r_nin(n,ix,nix,numel) == 0) cycle
189 ENDIF
191 IF(id_local == 0) THEN
192 CALL ancmsg(msgid=69, msgtype=msgerror,anmode=aninfo,i1=ithgrp(1),c1=titr1,i2=n)
193 ithbuf(iad)=0
194 ELSE
195 ithbuf(iad)=map(id_local,2)
196 ENDIF
197 iproc=0
198 ithbuf(iad+nne)=iproc
199 ithbuf(iad+3*nne)=isk
200 IF(isk/=0) THEN
201 rfi=rfi+2
202 ENDIF
203 ENDIF
204 CALL fretitl(titr,ithbuf(iad2),40)
205 iad=iad+1
206 iad2=iad2+40
207 ENDDO
208
209
210 iad = ithgrp(5)
211 iad2= ithgrp(8)
212 CALL hord3(ithbuf(iad),nne,ithbuf(iad+nne),ithbuf(iad2),40)
213
214 IF(ityp == 0) THEN
215 iad0=ithgrp(7)
216 DO i=iad0,iad0+
nvar-1
217 IF((ireac == 0) .AND. (ithbuf(i) == 620 .OR.
218 . ithbuf(i) == 621 .OR. ithbuf(i) == 622 .OR.
219 . ithbuf(i) == 623 .OR. ithbuf(i) == 624 .OR.
220 . ithbuf(i) == 625)) ireac = 1
221 IF((ithbuf(i) == 626 .OR. ithbuf(i) == 627 .OR.
222 . ithbuf(i) == 628) .AND.
223 . ((isecut == 0 .AND. iisrot == 0 .AND. impose_dr == 0 .AND. idrot == 0) .OR. iroddl == 0)) THEN
224 IF (ithbuf(i) == 626)dirmsg='DRX'
225 IF (ithbuf(i) == 627)dirmsg='DRY'
226 IF (ithbuf(i) == 628)dirmsg='DRZ'
227 CALL fretitl2(titr,ithgrp(nithgr-ltitr+1),ltitr)
228 CALL ancmsg(msgid=774, msgtype=msgwarning, anmode=aninfo_blind_1, i1=ithgrp(1), c1=titr, i2=ithgrp(1), c2=dirmsg)
229 ENDIF
230 IF(ithbuf(i) == 19 .AND. itherm_fe == 0 ) THEN
231 CALL fretitl2(titr,ithgrp(nithgr-ltitr+1),ltitr)
233 . msgtype=msgwarning,
234 . anmode=aninfo_blind_1,
235 . i1=ithgrp(1),
236 . c1=titr,
237 . i2=ithgrp(1),
238 . c2='TEMP')
239 ENDIF
240 ENDDO
241 DO i=1,nne
242 k = ithbuf(iad)
243 ithbuf(iad+2*nne)=itab(k)
244 iad=iad+1
245 ENDDO
246 iad=ithgrp(5)
247 CALL udouble(ithbuf(iad+2*nne),1,nne,mess,0,bid)
248 ELSE
249 DO i=1,nne
250 k = ithbuf(iad)
251 IF(k>0)THEN
252 ithbuf(iad+2*nne)=ix(nix,k)
253 iad=iad+1
254
255 ENDIF
256 ENDDO
257 iad=ithgrp(5)
258 CALL udouble(ithbuf(iad+2*nne),1,nne,mess,0,bid)
259 ENDIF
260
261 iad=iad2+40*nne
262
263 nsne=nsne+nne
264
265
266
268 iad0=ithgrp(7)
269 ithgrp(9)=nvarabf
270 DO j=iad0,iad0+
nvar-1
271 DO k=1,10
272 ithvar((ithgrp(9)+(j-iad0)-1)*10+k)=
273 . ichar(vare(ithbuf(j))(k:k))
274 ENDDO
275 ENDDO
276 nvarabf = nvarabf +
nvar
277
278
279
280
281 IF (ityp == 2) THEN
282 DO j=iad0,iad0+
nvar-1
283 IF ( vare(ithbuf(j))(1:3) == 'EPS' .OR.
284 . vare(ithbuf(j))(1:4) == 'LEPS' ) th_strain = 1
285 ENDDO
286 ENDIF
287
288
289
290 IF (ipri < 1) RETURN
291 n=ithgrp(4)
292 iad1=ithgrp(5)
294 iad0=ithgrp(7)
295 iad2=ithgrp(8)
296 WRITE(iout,'(//)')
297 IF ( key == 'NODE' ) THEN
298 IF ( n >= 2 ) THEN
299 key1 = 'NODES'
300 ELSE
301 key1 = 'NODE'
302 ENDIF
303 ELSE
304 key1 = key
305 ENDIF
306 CALL fretitl2(titr,ithgrp(nithgr-ltitr+1),ltitr)
307 WRITE(iout,'(A,I10,3A,I3,A,I5,A,2A)')'TH GROUP:',ithgrp(1),','','' VAR,',n,' ',key1,':'
308 WRITE(iout,'(A)')' -------------------'
309 IF(ityp == 0)THEN
310 WRITE(iout,
'(10A10)')(vare(ithbuf(j)),j=iad0,iad0+
nvar-1)
311 WRITE(iout,'(A)')' NODE SKEW(OR FRAME) NAME '
312 DO k=iad1,iad1+n-1
314 iad2=iad2+40
315 WRITE(iout,'(2I10,8X,2A)')itab(ithbuf(k)),ithbuf(k+n),' ',titr(1:40)
316 ENDDO
317 ELSE
318 WRITE(iout,
'(10A10)')(vare(ithbuf(j)),j=iad0,iad0+
nvar-1)
319 WRITE(iout,'(2A)')key,' P_SPMD NAME '
320 DO k=iad1,iad1+n-1
322 iad2=iad2+40
323 WRITE(iout,'(2I10,2A)')ix(nix,ithbuf(k)),ithbuf(k+n),' ',titr(1:40)
324 ENDDO
325 ENDIF
326
327 RETURN
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_get_string_index(name, sval, index, size, is_available)
integer function hm_thvarc(vare, nv, ivar, varg, nvg, ivarg, nv0, id, titr, lsubmodel)
subroutine hord3(nel, nsel, isk, iasc, l)
integer function set_usrtos(iu, ipartm1, npart)
integer, parameter nchartitle
integer function nvar(text)
integer function r2r_sys(iu, itabm1, mess)
integer function r2r_nin(iext, ntn, m, n)
subroutine jc(p, t, a, b, cm, cn, tref, tm, epsm, sigmam, jc_yield, tan_jc)
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)
integer function usr2sys(iu, itabm1, mess, id)
subroutine udouble(list, ilist, nlist, mess, ir, rlist)
subroutine zeroin(n1, n2, ma)