66
67
68
69
70 USE my_alloc_mod
78 use element_mod , only : nixs, nixq, nixc, nixt, nixp, nixr, nixtg
79
80
81
82#include "implicit_f.inc"
83
84
85
86#include "scr17_c.inc"
87#include "com04_c.inc"
88#include "param_c.inc"
89#include "sphcom.inc"
90
91
92
93 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
94 INTEGER ITABM1(*),
95 . IXS(NIXS,*),IXQ(NIXQ,*),IXC(NIXC,*),IXT(NIXT,*),
96 . IXP(NIXP,*),IXR(NIXR,*),IXTG(NIXTG,*),IPARTS(*),
97 . IPARTQ(*),IPARTC(*),IPARTT(*),IPARTP(*),IPARTR(*),
98 . IPARTG(*),IPART(LIPART1,*),ITAB(*),
99 . IXS10(6,*) ,IXS20(12,*) ,IXS16(8,*),
100 . KXSP(NISP,*),IPARTSP(*),ISUBMOD(*),ISKN(LISKN,*),
101 . IXX(*),KXX(*),IPARTX(*),IADBOXMAX,NSETS
102 INTEGER FLAG,MAXNNOD
104 . x(3,*),geo(npropg,*),skew(lskew,*),rtrans(*)
105 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
106
107 TYPE (SUBSET_) , DIMENSION(NSUBS) :: SUBSET
108 TYPE (GROUP_) , TARGET, DIMENSION(NGRNOD) :: IGRNOD
109 TYPE (GROUP_) , TARGET, DIMENSION(NGRQUAD) :: IGRQUAD
110 TYPE (GROUP_) , TARGET, DIMENSION(NGRBRIC) :: IGRBRIC
111 TYPE (GROUP_) , TARGET, DIMENSION(NGRSHEL) :: IGRSH4N
112 TYPE (GROUP_) , TARGET, DIMENSION(NGRSH3N) :: IGRSH3N
113 TYPE (GROUP_) , TARGET, DIMENSION(NGRTRUS) :: IGRTRUSS
114 TYPE (GROUP_) , TARGET, DIMENSION(NGRBEAM) :: IGRBEAM
115 TYPE (GROUP_) , TARGET, DIMENSION(NGRSPRI) :: IGRSPRING
116 TYPE (SURF_) , TARGET, DIMENSION(NSURF) :: IGRSURF
117 TYPE () , TARGET, DIMENSION(NSLIN) :: IGRSLIN
118 TYPE (BOX_) , DIMENSION(NBBOX) :: IBOX
119
120
121
122 INTEGER J10(10),ID_SUB
123 INTEGER, DIMENSION(:), ALLOCATABLE :: BUFTMP
124 INTEGER I,J,K,II,KK,N1,,ISU,ID,JREC,NNOD,NL,NTRI,IGS,IGRS,
125 . OK,IT0,IT1,IT2,IT3,IT4,IT5,IT6,
126 . FLAG_FMT,FLAG_FMT_TMP,IFIX_TMP,STAT,IT7,UID,IFLAGUNIT,
127 . IT8,SUB_ID,IADBOX,NN,LIST_IGR(NGRNOD),IDMIN,IDMAX,OFFSET,
128 . IT9,IDB,NENTITY,NLINES,JJ
129
131 . xmin,xmax,ymin,
ymax,zmin,zmax,bid,fac_l
132 INTEGER, DIMENSION(:),ALLOCATABLE :: BUFTMP2
133 CHARACTER(LEN=NCHARTITLE) :: TITR, TITR1
134 CHARACTER(LEN=NCHARKEY) :: KEY,KEY2
135 CHARACTER *40
136 INTEGER, DIMENSION(:),ALLOCATABLE :: BUFBOX
137 LOGICAL IS_AVAILABLE
138
139
140
141 INTEGER USR2SYS,ULIST2S,LISTCNT
142
143 DATA mess/'NODE GROUP DEFINITION '/
144
145
146
147
148
149! 4-truss, 5-beam, 6-springs,7-shell_3n )
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168 ALLOCATE(buftmp(2*numnod + npart))
169 is_available = .false.
170 it0=0
171 it1=0
172 it2=0
173 it3=0
174 it4=0
175 it5=0
176 it6=0
177 it7=0
178 it8=0
179 it9=0
180
181
182
183 igs=0
184 titr1='NODE GROUP'
185
187
188
189 DO i=1,ngrnod
190
191
194 . option_titr = titr ,
195 . unit_id = uid,
196 . keyword2 = key ,
197 . keyword3 = key2)
198
199
200 igs=igs+1
201
202
203 IF (flag == 0) THEN
204 igrnod(igs)%ID = 0
205 igrnod(igs)%NENTITY = 0
206 igrnod(igs)%GRTYPE = 0
207 igrnod(igs)%SORTED = 0
208 igrnod(igs)%GRPGRP = 0
209 igrnod(igs)%LEVEL = 0
210 igrnod(igs)%R2R_ALL = 0
211 igrnod(igs)%R2R_SHARE = 0
212 ENDIF
213 nn = 0
214 nnod = 0
216 igrnod(igs)%GRTYPE=0
217 igrnod(igs)%SORTED=0
218 igrnod(igs)%LEVEL=1
219 igrnod(igs)%TITLE = titr
220
221
222
223
224 IF(key(1:7) == 'GRNODNS')THEN
225
226 igrnod(igs)%NENTITY=-1
227
228 igrnod(igs)%SORTED=1
229 igrnod(igs)%GRPGRP=2
230 igrnod(igs)%LEVEL=0
231
232
233 ELSEIF(key(1:5) == 'GRNOD')THEN
234 igrnod(igs)%NENTITY=-1
235 igrnod(igs)%GRPGRP=2
236 igrnod(igs)%LEVEL=0
237 it0=it0+1
238
239
240 ELSEIF(key(1:6) == 'NODENS') THEN
241 it1=it1+1
242 IF (flag == 0) THEN
243 CALL hm_get_intv(
'idsmax' ,nentity,is_available,lsubmodel)
244 DO kk = 1,nentity
246 IF (jj /= 0) THEN
247 nnod = nnod + 1
248 ENDIF
249 ENDDO
250 igrnod(igs)%NENTITY=nnod
251
252 IF (.NOT. ALLOCATED(igrnod(igs)%ENTITY))
253 . CALL my_alloc(igrnod(igs)%ENTITY,nnod)
254 igrnod(igs)%GRPGRP=1
255 maxnnod =
max(nnod,maxnnod)
256 ELSE
257 igrnod(igs)%SORTED=1
258 CALL hm_get_intv(
'idsmax' ,nentity,is_available,lsubmodel)
259 DO kk = 1,nentity
261 IF (jj /= 0) THEN
262 nn = nn+1
263 igrnod(igs)%ENTITY(nn) =
usr2sys(jj,itabm1,mess,
id)
264 ENDIF
265 ENDDO
266 ENDIF
267
268
269 ELSEIF(key(1:4) == 'NODE' .OR. key(1:5) == 'CNODE') THEN
270
271 it1=it1+1
272 IF (flag == 0) THEN
273 CALL hm_get_intv(
'idsmax' ,nentity,is_available,lsubmodel)
274 IF(is_available)nnod = nnod + nentity
275 igrnod(igs)%NENTITY=nnod
276
277 IF( .NOT. ALLOCATED(igrnod(igs)%ENTITY))
278 . CALL my_alloc(igrnod(igs)%ENTITY,nnod)
279 igrnod(igs)%GRPGRP=1
280 maxnnod =
max(nnod,maxnnod)
281 ELSE
282
283 CALL hm_get_intv(
'idsmax' ,nentity,is_available,lsubmodel)
284 DO kk = 1,nentity
286 IF (jj /= 0) THEN
287 nn = nn+1
288 igrnod(igs)%ENTITY(nn) = jj
289 ENDIF
290 ENDDO
291 ENDIF
292
293
294 ELSEIF(key(1:4) == 'PART'.OR.key(1:6) == 'SUBSET'.OR.
295 . key(1:3) == 'MAT' .OR.key(1:4) == 'PROP') THEN
296 it2=it2+1
297 IF (flag == 0) igrnod(igs)%NENTITY=0
298 igrnod(igs)%GRPGRP=0
299
300
301 ELSEIF((key(1:3) == 'BOX' .AND. nbbox == 0 .AND.
302 . (key2(1:5) /= 'RECTA'.AND.
303 . key2(1:5) /= 'CYLIN'.AND.key2(1:5) /= 'SPHER')).OR.
304 . key(1:4) == 'GENE'.OR.key(1:4) == 'BOXA')THEN
305 it3=it3+1
306 IF (flag == 0) igrnod(igs)%NENTITY=0
307 igrnod(igs)%GRPGRP=0
308
309 ! grnod from gr, surf, line
310 ELSEIF(key(1:2) == 'GR'.OR.key(1:4) == 'SURF'.OR.key(1:4) == 'LINE'THEN
311 it4=it4+1
312 IF (flag == 0) igrnod(igs)%NENTITY=0
313 igrnod(igs)%GRPGRP=0
314
315
316 ELSEIF(key(1:6) == 'SUBMOD')THEN
317 it5=it5+1
318 IF (flag == 0) igrnod(igs)%NENTITY=0
319 igrnod(igs)%GRPGRP=0
320
321
322 ELSEIF(key(1:3) == 'BOX'.AND.(key2(1:5) == 'RECTA'.OR.
323 . key2(1:5) == 'CYLIN'.OR.key2(1:5) == 'SPHER'))THEN
324
325
326
327 it7=it7+1
328 IF (flag == 0) igrnod(igs)%NENTITY=0
329 igrnod(igs)%GRPGRP=0
330
331
332 ELSEIF(key(1:3) == 'BOX' .AND. nbbox > 0)THEN
333
334 it8=it8+1
335
336
337 ELSEIF(key(1:8) == 'GEN_INCR')THEN
338 it9=it9+1
339 IF (flag == 0) igrnod(igs)%NENTITY=0
340 igrnod(igs)%GRPGRP=0
341 ENDIF
342
343 ENDDO
344
345
346
347 IF (flag == 0) THEN
348 DO igs = 1,ngrnod
349 list_igr(igs) = igrnod(igs)%ID
350 ENDDO
352 ENDIF
353
354
355
356 IF (it1 /= 0 .AND. flag == 1)THEN
357
358 ALLOCATE(buftmp2(maxnnod*2),stat=stat)
359 IF (stat /= 0) THEN
361 . msgtype=msgerror,
362 . anmode=anstop,
363 . c1='BUFTMP2')
364 ENDIF
365
366 DO i=1,ngrnod
367 IF (igrnod(i)%GRPGRP == 1) THEN
369 nnod=igrnod(i)%NENTITY
370 ntri=igrnod(i)%SORTED
371 IF (nnod > 0 .AND. ntri == 0)THEN
372 IF(nnod == 1) THEN
373
374 nn = igrnod(i)%ENTITY(nnod)
375 igrnod(i)%ENTITY(nnod)=
usr2sys(nn,itabm1,mess,
id)
376 igrnod(i)%NENTITY=1
377
378
379 ELSE
380
381 buftmp2(1:2*nnod) = 0
382 nnod=
ulist2s(igrnod(i)%ENTITY,nnod,itabm1,mess,buftmp2,
id)
383 igrnod(i)%NENTITY=nnod
384 END IF
385 ENDIF
386 ENDIF
387 ENDDO
388 DEALLOCATE (buftmp2)
389 ENDIF
390
391
392
393 igs=0
394 IF (it3 /= 0) THEN
396 DO i=1,ngrnod
397
400 . option_titr = titr ,
401 . unit_id = uid,
402 . keyword2 = key ,
403 . keyword3 = key2)
404
405 nnod = 0
406 nn = 0
407 igs = igs+1
408
409
410
411 IF((key(1:3) == 'BOX'.AND.(key2(1:5) /= 'RECTA'.AND.
412 . key2(1:5) /= 'CYLIN'.AND.key2(1:5) /= 'SPHER').AND.
413 . nbbox == 0) .OR. (key(1:4) == 'BOXA'))THEN
414
415
416
417
418 ELSEIF (key(1:4) == 'GENE') THEN
419 buftmp = 0
420
421 CALL hm_get_intv(
'grnodGenArrCnt' ,nentity,is_available,lsubmodel)
422 DO kk = 1,nentity
425 IF (n2 >= n1) THEN
426 DO k=1,numnod
427 IF (itab(k) >= n1 .AND. itab(k) <= n2) buftmp(k)=1
428 ENDDO
429 ENDIF
430 ENDDO
431
432 nnod=0
433 IF (flag == 0) THEN
434 DO j=1,numnod
435 IF (buftmp(j) == 1) nnod = nnod+1
436 ENDDO
437 igrnod(igs)%NENTITY=nnod
438 CALL my_alloc(igrnod(igs)%ENTITY,nnod)
439 igrnod(igs)%ENTITY=0
440 ELSE
441 DO j=1,numnod
442 IF (buftmp(j) == 1)THEN
443 nn = nn + 1
444 igrnod(igs)%ENTITY(nn)=j
445 ENDIF
446 ENDDO
447 ENDIF
448
449 ENDIF
450 ENDDO
451 ENDIF
452
453
454
455 igs=0
456 IF(it7 /= 0)THEN
457
458 ENDIF
459
460
461
462 igs=0
463 IF(it8 /= 0)THEN
464
465 IF (flag == 0) THEN
466 ALLOCATE(bufbox(1))
467 bufbox = 0
468 ELSEIF (flag == 1) THEN
469 ALLOCATE(bufbox(iadboxmax))
470 bufbox(1:iadboxmax) = 0
471 ENDIF
472
474 DO i = 1,ngrnod
475
478 . option_titr = titr ,
479 . unit_id = uid,
480 . keyword2 = key ,
481 . keyword3 = key2
482
483 nn = 0
484 nnod = 0
485 igs = igs+1
486
487 IF (key(1:3) == 'BOX' .AND. nbbox > 0) THEN
488 iadbox = 1
489 iflagunit = 0
490 DO j=1,unitab%NUNITS
491 IF (unitab%UNIT_ID(j) == uid) THEN
492 fac_l = unitab%FAC_L(j)
493 iflagunit = 1
494 EXIT
495 ENDIF
496 ENDDO
497 IF (uid/=0.AND.iflagunit==0) THEN
498 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
499 . i2=uid,i1=
id,c1=
'NODE GROUP',
500 . c2='NODE GROUP',
501 . c3=titr)
502 ENDIF
503
506 . skew,igs ,iskn ,itabm1,ibox ,
507 .
id ,bufbox,iadbox,titr,key,nn,
508 . iadboxmax,igrnod,idb)
509
510 iadboxmax =
max(iadbox,iadboxmax)
511 IF (flag == 0) THEN
512 igrnod(igs)%NENTITY=nnod
513 CALL my_alloc(igrnod(igs)%ENTITY,nnod)
514 igrnod(igs)%ENTITY = 0
515 ELSEIF (flag == 1) THEN
516 igrnod(igs)%NENTITY=nnod
517 ENDIF
518 ENDIF
519 ENDDO
520
521 IF(ALLOCATED(bufbox))DEALLOCATE(bufbox)
522 ENDIF
523
524
525
526 igs=0
527 IF (it2 /= 0)THEN
529 DO i = 1,ngrnod
532 . option_titr = titr ,
533 . unit_id = uid ,
534 . keyword2 = key ,
535 . keyword3 = key2)
536
537 igs=igs+1
538 nn = 0
539 IF (key(1:4) == 'PART'.OR.key(1:6) == 'SUBSET'.OR.key(1:3) == 'MAT' .OR.key(1:4) == 'PROP') THEN
540
541 buftmp = 0
542 CALL hm_tagpart(buftmp ,ipart ,key ,igrnod(igs)%ID,titr ,titr1 ,flag ,subset, lsubmodel)
543
544
545 CALL tagnods(ixs,ixs10,ixs20,ixs16,iparts,buftmp,igrnod(igs)%ID,titr)
546 CALL tagnod(ixq,nixq,2,5,numelq,ipartq,buftmp,npart)
547 CALL tagnod(ixc,nixc,2,5,numelc,ipartc,buftmp,npart)
548 CALL tagnod(ixtg,nixtg,2,4,numeltg,ipartg,buftmp,npart)
549 CALL tagnod(ixt,nixt,2,3,numelt,ipartt,buftmp,npart)
550 CALL tagnod(ixp,nixp,2,3,numelp,ipartp,buftmp,npart)
551 CALL tagnodr(ixr,geo,numelr,ipartr
552 CALL tagnod(kxsp,nisp,3,3,numsph,ipartsp,buftmp,npart)
553 CALL tagnodx(ixx,kxx,numelx,ipartx,buftmp,npart)
554
555 nnod=0
556 IF (flag == 0) THEN
557 DO j=1,numnod
558 IF (buftmp(j+npart) /= 0) nnod=nnod+1
559 ENDDO
560 igrnod(igs)%NENTITY=nnod
561 CALL my_alloc(igrnod(igs)%ENTITY,nnod)
562 igrnod(igs)%ENTITY=0
563 ELSE
564 DO j=1,numnod
565 IF (buftmp(j+npart) /= 0)THEN
566 nn = nn + 1
567 igrnod(igs)%ENTITY(nn) = j
568 ENDIF
569 ENDDO
570 ENDIF
571
572 ENDIF
573 ENDDO
574 ENDIF
575
576
577
578 igs=0
579 IF (it5 > 0)THEN
581 DO i = 1,ngrnod
584 . option_titr = titr ,
585 . unit_id = uid ,
586 . keyword2 = key ,
587 . keyword3 = key2)
588
589 nnod = 0
590 igs = igs+1
591 nn = 0
592 IF(key(1:6) == 'SUBMOD')THEN
594 . nnod ,mess ,flag ,titr ,
595 . titr1 ,lsubmodel ,igrnod(igs),nn )
596 IF (flag == 0) THEN
597 igrnod(igs)%NENTITY=nnod
598 CALL my_alloc(igrnod(igs)%ENTITY,nnod)
599 igrnod(igs)%ENTITY = 0
600 ENDIF
601 ENDIF
602 ENDDO
603 ENDIF
604
605
606
607 igs=0
608 IF (it4 /= 0)THEN
610 DO i=1,ngrnod
613 . option_titr = titr ,
614 . unit_id = uid ,
615 . keyword2 = key ,
616 . keyword3 = key2)
617
618 igs=igs+1
619 nn = 0
620
621 IF(key(1:5) == 'GRNOD')THEN
622 cycle
623 ELSEIF(key(1:2) == 'GR''SURF' .OR. key(1:4) == 'LINE')THEN
624 buftmp = 0
626 IF(key(1:6) == 'GRBRIC')THEN
627 CALL hm_elngrs(ixs,ixs10,ixs20,ixs16,ngrbric,key(1:6),
628 .
id ,igrbric,buftmp,titr,
629 . flag,lsubmodel)
630 ELSEIF(key(1:6) == 'GRQUAD')THEN
631 CALL hm_elngr(ixq,nixq,2,5,ngrquad,key(1:6),
632 .
id,igrquad,buftmp,titr,
633 . flag,lsubmodel)
634 ELSEIF(key(1:6) == 'GRSHEL')THEN
635 CALL hm_elngr(ixc,nixc,2,5,ngrshel,key(1:6),
636 .
id,igrsh4n,buftmp,titr
637 . flag,lsubmodel)
638 ELSEIF(key(1:6) == 'GRTRUS')THEN
639 CALL hm_elngr(ixt,nixt,2,3,ngrtrus,key(1:6),
640 .
id,igrtruss,buftmp,titr,
641 . flag,lsubmodel)
642 ELSEIF(key(1:6) == 'GRBEAM')THEN
643 CALL hm_elngr(ixp,nixp,2,3,ngrbeam,key(1:6),
644 .
id,igrbeam,buftmp,titr,
645 . flag,lsubmodel)
646 ELSEIF(key(1:6) == 'GRSPRI')THEN
648 . igrspring,buftmp,titr,
649 . flag,lsubmodel)
650 ELSEIF(key(1:6) == 'GRSH3N' .OR. key(1:6) == 'GRTRIA')THEN
651 CALL hm_elngr(ixtg,nixtg,2,4,ngrsh3n,key(1:6),
652 .
id,igrsh3n,buftmp,titr,
653 . flag,lsubmodel)
654 ELSEIF(key(1:4) == 'SURF')THEN
656 ELSEIF(key(1:4) == 'LINE')THEN
658 ENDIF
659
660 nnod=0
661 IF (flag == 0) THEN
662 DO j=1,numnod
663 IF (buftmp(j) /= 0) nnod=nnod+1
664 ENDDO
665 igrnod(igs)%NENTITY=nnod
666 CALL my_alloc(igrnod(igs)%ENTITY,nnod)
667 igrnod(igs)%ENTITY = 0
668 ELSE
669 DO j=1,numnod
670 IF (buftmp(j) /= 0)THEN
671 nn = nn + 1
672 igrnod(igs)%ENTITY(nn)=j
673 ENDIF
674 ENDDO
675 ENDIF
676
677 ENDIF
678 ENDDO
679 ENDIF
680
681
682
683 igs=0
684 IF(it9 /= 0)THEN
686 DO i=1,ngrnod
689 . option_titr = titr ,
690 . unit_id = uid ,
691 . keyword2 = key ,
692 . keyword3 = key2 )
693
694 nnod=0
695 nn = 0
696 igs=igs+1
697
698
699
700 IF (key(1:8) == 'GEN_INCR') THEN
701 buftmp = 0
702 CALL hm_get_intv (
'grnodGenArrCnt' ,nlines,is_available,lsubmodel)
703 DO kk=1,nlines
707 DO j=idmin, idmax , offset
708 IF (j > 0) THEN
709 DO k=1,numnod
711 IF(
id<idmin .OR.
id>idmax) cycle
712 IF(mod(
id-idmin,offset)==0) buftmp(k) = 1
713 ENDDO
714 ENDIF
715 ENDDO
716 ENDDO
717
718 nnod=0
719 IF (flag == 0) THEN
720 DO j=1,numnod
721 IF (buftmp(j) == 1) nnod=nnod+1
722 ENDDO
723 igrnod(igs)%NENTITY=nnod
724 CALL my_alloc(igrnod(igs)%ENTITY,nnod)
725 igrnod(igs)%ENTITY=0
726 ELSE
727 DO j=1,numnod
728 IF (buftmp(j) == 1)THEN
729 nn = nn + 1
730 igrnod(igs)%ENTITY(nn)=j
731 ENDIF
732 ENDDO
733 ENDIF
734
735 ENDIF
736 ENDDO
737 ENDIF
738
739 DEALLOCATE(buftmp)
740 RETURN
subroutine hm_bigbox(x, flag, nnod, skew, igs, iskn, itabm1, ibox, id, ibufbox, iadb, titr, key, nn, iboxmax, igrnod, idb)
subroutine hm_elngr(ix, nix, nix1, nix2, ngrele, elchar, id, igrelem, tagbuf, titr, flag, lsubmodel)
subroutine hm_elngrs(ixs, ixs10, ixs20, ixs16, ngrele, elchar, id, igrelem, tagbuf, titr, flag, lsubmodel)
subroutine hm_elngrr(ixr, geo, ngrele, id, igrelem, tagbuf, titr, flag, lsubmodel)
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_linengr(id, igrslin, tagbuf, titr, nsets, lsubmodel)
subroutine hm_option_start(entity_type)
subroutine hm_submodgrn(itab, itabm1, isubmod, sid, nnod, mess, flag, titr, titr1, lsubmodel, igrnod, nn)
subroutine hm_surfnod(id, igrsurf, tagbuf, titr, nsets, lsubmodel)
subroutine hm_tagpart(bufftmp, ipart, key, id, titr, titr1, flag, subset, lsubmodel)
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
integer, parameter nchartitle
integer, parameter ncharkey
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 ulist2s(list, nlist, itabm1, mess, index, id)
integer function usr2sys(iu, itabm1, mess, id)
subroutine udouble_igr(list, nlist, mess, ir, rlist)
subroutine tagnod(ix, nix, nix1, nix2, numel, iparte, tagbuf, npart)
subroutine tagnods(ixs, ixs10, ixs20, ixs16, iparts, tagbuf, idgrn, titr)
subroutine tagnodr(ixr, geo, numelr, ipartr, tagbuf, npart)
subroutine tagnodx(ixx, kxx, numelx, ipartx, tagbuf, npart)