63
64
65
76 USE reader_old_mod , ONLY : kinter, kcur, line, nslash
77 use element_mod , only : nixc
78
79
80
81#include "implicit_f.inc"
82
83
84
85#include "com04_c.inc"
86#include "units_c.inc"
87#include "scr17_c.inc"
88#include "param_c.inc"
89#include "r2r_c.inc"
90#include "lagmult.inc"
91#include "sphcom.inc"
92#include "sms_c.inc"
93
94
95
96 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
97 INTEGER IPARTS(*),IPARTC(*),IPARTG(*),IPARTT(*),IPARTP(*),
98 . IPARTR(*),COMPT_T2,MODIF,PASSE,INOM_OPT(*),IPARTSP(*),NSPCONDN,
99 . NSPHION,IPART_L(LIPART1,*),MEMTR(*),IWORKSH(*),NEW_NSLASH_INT,NEW_HM_NINTER,NEW_NINTSUB,
100 . NEW_NINIVOL,IXS10(*), IXS16(*), IXS20(*)
101 INTEGER ,INTENT(IN) :: NB_SEATBELT_SHELLS
102 INTEGER ,INTENT(IN) :: SEATBELT_SHELL_TO_SPRING(NUMELC,2)
103 INTEGER ,INTENT(IN) :: NEBCS
104 INTEGER ,INTENT(INOUT) :: NEW_NEBCS
106 . pm_stack(*)
107
108 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
109 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
110 TYPE (SURF_) , DIMENSION(NSLIN) :: IGRSLIN
111 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
112 TYPE (GROUP_) , DIMENSION(NGRQUAD) :: IGRQUAD
113 TYPE (GROUP_) , DIMENSION(NGRSHEL) :: IGRSH4N
114 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
115 TYPE (GROUP_) , DIMENSION(NGRTRUS) :: IGRTRUSS
116 TYPE (GROUP_) , DIMENSION(NGRBEAM) :: IGRBEAM
117 TYPE (GROUP_) , DIMENSION(NGRSPRI) :: IGRSPRING
118 TYPE(DETONATORS_STRUCT_),TARGET,INTENT(IN) :: DETONATORS
119
120
121
122 INTEGER USR2SYS
123
124
125
126 INTEGER I,J,L,NI,GRM,GRS,IGU,MAIN,NUL,NOD,ISK,NRB
127 INTEGER GR_ID,COMPT,TAG,IAD,CUR_ID,NB_RBY
128 INTEGER NB_KIN,NB_LAG,N1,N2,ID_RBY,DOMA,ISTER
129 INTEGER ID_CYL,CCPL,DIFF,D1,D2,G1,G2,GX,IP,JOE,JIE
130 INTEGER COMPT_M,COMPT_S,CUR_TYP,SUM,CONT,K,TYPE2
131 INTEGER NB_INT,ID_INTER,LNM,LNS,L1,L2,ISENS,VAL,WARN
132 INTEGER ID_RLINK,NUL50(50),ID_RBE3,ID_RBE2,ID_JOIN
133 INTEGER NU(4),NS(4),JREC,ID_MPC,ISUR,ISURS,ID_MON,FLG
134 INTEGER COMPT2,IGR9_TEMP,IGR8_TEMP,IGR2_TEMP,ID,ID_PART,IDS
135 INTEGER SPTFL,BID(LNOPT1),IUD,IGRPP_R2R(2,NGRNOD),FLAG_T24T25
136 INTEGER SUB_ID,IDTITL,IDINT,GR_BRIC,NUMC
137 INTEGER NTRANS,NNODE_TRANSFORM,NODE_TRANSFORM(6)
138 INTEGER GRNOD_T24T25
139 INTEGER NSENSOR
141 CHARACTER MESS*40,TSENS*40
142 CHARACTER(LEN=NCHARTITLE) :: TITR
143 CHARACTER(LEN=NCHARKEY) :: KEY,KEY2
144 CHARACTER(LEN=NCHARFIELD) :: STRING
145 INTEGER, DIMENSION(:), ALLOCATABLE :: BUF_TEMP
146 DATA mess/'MULTIDOMAIN PREREADING OF OPTIONS'/
147 LOGICAL :: IS_AVAILABLE
148
149
150
151
152
153
155 . ipartc,ipartg,igrpp_r2r ,pm_stack , iworksh,
156 . igrnod,igrsurf,igrslin,igrbric,ixs10,
157 . ixs20,ixs16)
158
159
160
161
162
163 IF (passe==0) THEN
164
165
166
167 IF (ndamp>0) THEN
169 . msgtype=msgwarning,
170 . anmode=aninfo_blind_1,
171 . c1="/DAMP")
172 ndamp = 0
173 ENDIF
174
175
176
177 IF (nfxbody>0) THEN
179 . msgtype=msgwarning,
180 . anmode=aninfo,
181 . c1="/FXBODY")
182 nfxbody = 0
183 ENDIF
184
185
186 IF (isms>0) THEN
188 . msgtype=msgerror,
189 . anmode=aninfo,
190 . c1="/AMS")
191 ENDIF
192
193
194
195
196
199 2 igrbric ,igrquad ,igrsh4n ,igrsh3n ,igrtruss,
200 3 igrbeam ,igrspring ,igrnod, lsubmodel , seatbelt_shell_to_spring,
201 4 nb_seatbelt_shells)
202
203
204
205
207 DO i = 1, naccelm
209 CALL hm_get_intv(
'nodeid', nod, is_available, lsubmodel)
210 CALL hm_get_intv(
'skewid', isk, is_available, lsubmodel)
214 ENDDO
215
216
217
218 ntrans = 0
221 DO i=1,ntrans
224 . option_titr = titr,
225 . keyword2 = key)
226
227 IF (key(1:3)/='MAT') THEN
228 CALL hm_get_intv(
'node1',n1,is_available,lsubmodel)
229 CALL hm_get_intv(
'node2',n2,is_available,lsubmodel)
230 IF (n1/=0) THEN
233 ENDIF
234 IF (n2/=0) THEN
237 ENDIF
238 ENDIF
239
240 ENDDO
241
242
243
244
247
248 DO i=1,nsensor
250 . option_id = isens, keyword2 = key )
251 IF (key(1:4) == 'DIST'.OR. key(1:5) == 'TYPE2') THEN
252 CALL hm_get_intv (
'N1' ,n1 ,is_available,lsubmodel)
253 CALL hm_get_intv (
'N2' ,n2 ,is_available,lsubmodel)
258 ELSEIF (key(1:5) == 'INTER'.OR.key(1:5) == 'TYPE6') THEN
259 CALL ancmsg(msgid=835, msgtype=msgerror, anmode=aninfo,
260 . c1="/SENSOR/INTER")
261 ELSEIF (key(1:4) == 'RWAL'.OR.key(1:5) == 'TYPE7') THEN
262 CALL ancmsg(msgid=835, msgtype=msgerror, anmode=aninfo,
263 . c1="/SENSOR/RWALL")
264 ELSEIF (key(1:3) == 'VEL' .OR. key(1:5) == 'TYPE9') THEN
265
266
267
268 ELSEIF (key(1:4) /='SENS'.AND.key(1:5)/='TYPE3'
269 . .AND.key(1:3)/='AND'.AND.key(1:5)/='TYPE4'
270 . .AND.key(1:2)/='OR'.AND.key(1:5)/='TYPE5'
271 . .AND.key(1:3)/='NOT'.AND.key(1:5)/='TYPE8'
272 . .AND.key(1:4)/='TIME'.AND.key(1:5)/='TYPE0'
273 . .AND.key(1:4)/='ACCE'.AND.key(1:5)/='TYPE1') THEN
274 tsens = '/SENSOR/'//key(1:5)
275 CALL ancmsg(msgid=835, msgtype=msgerror, anmode=aninfo,
276 . c1=tsens)
277 ENDIF
278 END DO
279
280
281
282
283
285
288
289 DO i=1,nbgauge
290 key=''
293 . keyword2 = key )
294
295 flg = 0
296 IF (key(1:3) == 'SPH') cycle
297
299
300 CALL hm_get_intv (
'NODE1' ,nod ,is_available,lsubmodel)
301 CALL hm_get_intv (
'shell_ID' ,ids ,is_available,lsubmodel)
302 IF ((nod== 0).AND.(ids /= 0)) THEN
303 flg = 1
304
305 DO j=1,numelc
306 IF(
ixc(nixc*j)==ids)
THEN
307 ids = j
308 EXIT
309 ENDIF
310 ENDDO
311 IF (
tag_elc(ids+npart) < 1)
THEN
313 ENDIF
314 ELSEIF ((nod/=0).AND.(ids==0)) THEN
315
318 ENDIF
319 END DO
320
321
323 DO i=1,nbgauge
324 key=''
327 . keyword2 = key )
328
329 flg = 0
330 IF (key(1:3) == 'SPH') THEN
331
333
334 CALL hm_get_intv (
'NODE1' ,nod ,is_available,lsubmodel)
335 CALL hm_get_intv (
'shell_ID' ,ids ,is_available,lsubmodel)
336 IF ((nod== 0).AND.(ids /= 0)) THEN
337 flg = 1
338
339 DO j=1,numelc
340 IF(
ixc(nixc*j)==ids)
THEN
341 ids = j
342 EXIT
343 ENDIF
344 ENDDO
345 IF (
tag_elc(ids+npart) < 1)
THEN
347 ENDIF
348 ELSEIF ((nod/=0).AND.(ids==0)) THEN
349
352 ENDIF
353 ENDIF
354 END DO
355
356
357
358
359 ni=0
360 ALLOCATE(
tagmon(nmonvol + nvolu))
362
363
364
365
366
368 compt = 0
369
370 DO i=1,nmonvol
371
373 . option_id = id_mon,
374 . keyword2 = key)
375
376 IF (key(1:7) == 'AIRBAG1') THEN
377 CALL hm_get_intv(
'surf_IDex', isur, is_available, lsubmodel)
378 ELSEIF ((key(1:4) == 'PRES').OR.(key(1:6) == 'AIRBAG')) THEN
379 CALL hm_get_intv(
'entityiddisplayed', isur, is_available, lsubmodel)
380 ELSE
381 CALL hm_get_intv(
'surf_IDex', isur, is_available, lsubmodel)
382 ENDIF
383
384 isurs = 0
385 DO j=1,nsurf
386 IF(isur==igrsurf(j)%ID) isurs=j
387 ENDDO
388
389 IF (isurs==0) GOTO 139
390
391 IF (igrsurf(isurs)%NSEG>0) THEN
392 IF (
isurf_r2r(3,isurs)==igrsurf(isurs)%NSEG)
THEN
393
394 GOTO 139
396
398 . msgtype=msgerror,
399 . anmode=aninfo,
400 . i1=id_mon)
401 ENDIF
402 ENDIF
403
404 GOTO 140
406 compt = compt+1
407140 CONTINUE
408
409 END DO
410
411 new_hm_nvolu = compt
412 new_nvolu = 0
413
414 ENDIF
415
416
417
418
419
421 IF (passe==0)
ALLOCATE(
tagcyl(njoint))
423 compt = 0
424
425 DO i=1,njoint
427 . option_id = id_cyl)
428 CALL hm_get_intv(
'independentnode',n1,is_available,lsubmodel)
429 CALL hm_get_intv(
'dependentnodes',n2,is_available,lsubmodel)
430 CALL hm_get_intv(
'dependentnodeset',igu,is_available,lsubmodel)
431
432 gr_id = 0
433 DO j=1,ngrnod
434 IF (igrnod(j)%ID==igu) gr_id = j
435 END DO
438
439 IF (gr_id==0) THEN
440 igr2_temp = 0
441 igr8_temp = 0
442 igr9_temp = 0
443 ELSE
444 igr2_temp = igrnod(gr_id)%NENTITY
445 igr8_temp = igrnod(gr_id)%R2R_ALL
446 igr9_temp = igrnod(gr_id)%R2R_SHARE
447 ENDIF
448
449 IF (
tagno(n1+npart)>1) igr9_temp=igr9_temp+1
450 IF (
tagno(n2+npart)>1) igr9_temp=igr9_temp+1
451 IF (
tagno(n1+npart)>0) igr8_temp=igr8_temp+1
452 IF (
tagno(n2+npart)>0) igr8_temp=igr8_temp+1
453 IF (
tagno(n1+npart)/=0) igr2_temp=igr2_temp+1
454 IF (
tagno(n2+npart)/=0) igr2_temp=igr2_temp+1
455
456 IF (igr8_temp>0) THEN
457 diff = igr2_temp-igr8_temp
458 IF ((igr9_temp>0).OR.(diff/=0)) THEN
459
460 IF (gr_id>0) THEN
461 DO j=1,igrnod(gr_id)%NENTITY
462 cur_id = igrnod(gr_id)%ENTITY(j)
463 IF (
tagno(cur_id+npart)<3)
THEN
465 ENDIF
466 END DO
467 ENDIF
468 IF (
tagno(n1+npart)<3)
THEN
470 ENDIF
471 IF (
tagno(n2+npart)<3)
THEN
473 ENDIF
474 ENDIF
475 compt = compt + 1
476
478 ENDIF
479
480350 CONTINUE
481 END DO
482
483 new_njoint = compt
484
485
486
487
488
490 IF (passe==0)
ALLOCATE(
tagmpc(nummpc))
492 compt = 0
493
494 DO i=1,nummpc
495 compt_m = 0
496 compt_s = 0
498 . option_id = id_mpc,
499 . option_titr = titr)
500 CALL hm_get_intv(
'number_of_nodes',numc,is_available,lsubmodel)
501 DO j=1,numc
504 IF (
tagno(n2+npart)>=0) compt_m=compt_m+1
505 IF (
tagno(n2+npart)>1) compt_s=compt_s+1
506 IF (
tagno(n2+npart)<=0) compt_s=compt_s+1
507 END DO
508
509 IF (compt_m>0) THEN
510 IF (compt_s==0) THEN
511
513 compt = compt + 1
514 ELSE
515
517 . msgtype=msgerror,
518 . anmode=aninfo,
519 . c1="/MPC",
520 . i1=id_mpc)
521 ENDIF
522 ENDIF
523 END DO
524
525 new_nummpc = compt
526
527
528
529
530
532 IF (passe==0)
ALLOCATE(
tagjoin(ngjoint))
534 compt = 0
535
536 DO i=1,ngjoint
537 compt_m = 0
538 compt_s = 0
539
541 . option_id = id_join,
542 . option_titr = titr,
543 . keyword2 = key2
544
546 CALL hm_get_intv(
'node_ID1',nu(2),is_available,lsubmodel
547 CALL hm_get_intv(
'node_ID2',nu(3),is_available,lsubmodel)
548 CALL hm_get_intv(
'node_ID3',nu(4),is_available,lsubmodel)
549
550 val = 3
551 IF(key2(1:4)=='DIFF') val = 4
552
553 DO j=1,val
555 IF (
tagno(ns(j)+npart)>=0) compt_m=compt_m+1
556 IF (
tagno(ns(j)+npart)>1) compt_s=compt_s+1
557 IF (
tagno(ns(j)+npart)<=0) compt_s=compt_s+1
558 END DO
559
560
561 IF (compt_m>0) THEN
562 IF (compt_s==0) THEN
563
565 compt = compt + 1
566 ELSE
567
569 . msgtype=msgerror,
570 . anmode=aninfo,
571 . c1="/GJOINT",
572 . i1=id_join)
573 ENDIF
574 ENDIF
575 END DO
576
577 new_ngjoint = compt
578
579
580
581
582
583 IF (passe==0)
ALLOCATE(
tagrb2(nrbe2))
585 compt = 0
586
588 DO i=1,nrbe2
589
591 . option_id = id_rbe2,
592 . option_titr = titr)
593
594 CALL hm_get_intv(
'independentnode',n1,is_available,lsubmodel)
595 CALL hm_get_intv(
'dependentnodeset',igu,is_available,lsubmodel)
596
598 gr_id=0
599 DO j=1,ngrnod
600 IF (igrnod(j)%ID==igu) gr_id = j
601 END DO
602
603 IF (gr_id==0) THEN
604 compt = compt + 1
606 GOTO 360
607 ENDIF
608
609 compt_m = igrnod(gr_id)%R2R_ALL
610 compt_s = igrnod(gr_id)%R2R_SHARE
611 IF (
tagno(n2+npart)>=0) compt_m=compt_m+1
612 IF (
tagno(n2+npart)>1) compt_s=compt_s+1
613 IF (
tagno(n2+npart)<=0) compt_s=compt_s+1
614
615 IF (compt_m>0) THEN
616 IF (compt_s==0) THEN
617
619 compt = compt + 1
620 ELSE
621
623 . msgtype=msgerror,
624 . anmode=aninfo,
625 . c1="/RBE2",
626 . i1=id_rbe2)
627 ENDIF
628 ENDIF
629360 CONTINUE
630 END DO
631
632 new_nrbe2 = compt
633
634
635
636
637
638 IF (passe==0)
ALLOCATE(
tagrb3(nrbe3))
640 compt = 0
642
643 DO i=1,nrbe3
644 compt_s = 0
645 compt_m = 0
647 . option_id = id_rbe3,
648 . option_titr = titr)
649 CALL hm_get_intv(
'dependentnode',n1,is_available,lsubmodel)
650 CALL hm_get_intv(
'nset',val,is_available,lsubmodel)
651
652 ALLOCATE(buf_temp(val))
654
655 DO l=1,val
658 DO j=1,ngrnod
659 IF (igrnod(j)%ID==igu) gr_id = j
660 END DO
661 buf_temp(l)=gr_id
662 compt_m = compt_m + igrnod(gr_id)%R2R_ALL
663 compt_s = compt_s + igrnod(gr_id)%R2R_SHARE
664 END DO
665
666 IF (
tagno(n2+npart)>=0) compt_m=compt_m+1
667 IF (
tagno(n2+npart)>1) compt_s=compt_s+1
668 IF (
tagno(n2+npart)<=0) compt_s=compt_s+1
669
670
671 IF (compt_m>0) THEN
672 IF (compt_s==0) THEN
673
675 compt = compt + 1
676 ELSE
677
678 IF (
tagno(npart+n2)/=-1)
THEN
679
681 compt = compt +1
682 ENDIF
683 DO l=1,val
684 gr_id = buf_temp(l)
685 DO j=1,igrnod(gr_id)%NENTITY
686 cur_id = igrnod(gr_id)%ENTITY(j)
687 IF (
tagno(cur_id+npart)<3)
THEN
689 ENDIF
690 END DO
691 END DO
692 ENDIF
693 ENDIF
694 DEALLOCATE(buf_temp)
695 END DO
696
697 new_nrbe3 = compt
698
699
700
701
702
703 IF (passe==0)
ALLOCATE(
taglnk(nlink))
705 compt = 0
707
708 DO i=1,nlink
710 . option_id = id_rlink,
711 . option_titr = titr)
712 CALL hm_get_intv(
'dependentnodeset' ,igu ,is_available,lsubmodel)
713
714 gr_id = 0
715 DO j=1,ngrnod
716 IF (igrnod(j)%ID==igu) gr_id = j
717 END DO
718
719 IF (gr_id > 0) THEN
720
721 tag = 0
722 nod=igrnod(gr_id)%R2R_ALL
723 IF (igrnod(gr_id)%R2R_SHARE==0) tag = 1
724
725 IF (nod>0) THEN
726 compt = compt+1
728 IF(tag/=1) THEN
729
730 DO j=1,igrnod(gr_id)%NENTITY
731 cur_id = igrnod(gr_id)%ENTITY(j)
732 IF (
tagno(cur_id+npart)<3)
THEN
734 ENDIF
735 END DO
736 ENDIF
737 ENDIF
738 ENDIF
739
740 END DO
741
742 new_nlink = compt
743
744
745
746
747
748
749 compt_t2 = 0
750 nb_int = 0
751 kcur = kinter
752
753
755
756
757
758
761 flg_tied(:) = 0
762
763
764
765
766
768 ni = 0
769 compt = 0
770
771 DO i=1,hm_ninter
772
773 tag = 0
774 val = iddom
775 type2 = 0
776
778 . option_id = id_inter,
779 . unit_id = nul,
780 . submodel_id = sub_id,
781 . option_titr = titr,
782 . keyword2 = key,
783 . keyword3 = key2)
784
785 tag = 0
786 val = iddom
787 type2 = 0
788
789 flg = 0
790 IF (key(6:6)=='/') flg = 1
791 IF ((len_trim(key))==5) flg = 1
792
793 grnod_t24t25 = 0
794 flag_t24t25 = 0
795 IF ((key(1:6)=='TYPE24').OR.(key(1:6)=='TYPE25')) THEN
796 flag_t24t25 = 1
797 CALL hm_get_intv(
'secondaryentityids',grs,is_available,lsubmodel)
798 CALL hm_get_intv(
'GRNOD_ID',grnod_t24t25,is_available,lsubmodel)
799
800 IF ((grs > 0).AND.(grnod_t24t25 > 0)) grnod_t24t25 = 0
801 ENDIF
802
803
804 IF (((key(1:5)=='TYPE2').AND.(flg==1)).OR.
805 . (key(1:5)=='TYPE7').OR.(key(1:5)=='TYPE5').OR.(key(1:5)=='TYPE8').OR.
806 . (key(1:6)=='TYPE10').OR.(key(1:6)=='TYPE14').OR.
807 . ((key(1:6)=='TYPE24').AND.(grnod_t24t25 > 0)).OR.
808 . ((key(1:6)=='TYPE25').AND.(grnod_t24t25 > 0))) THEN
809 cont = 1
810 CALL hm_get_intv(
'secondaryentityids',grs,is_available,lsubmodel)
811 CALL hm_get_intv(
'mainentityids',grm,is_available,lsubmodel)
812
813
814 IF (flag_t24t25 == 1) grs = grnod_t24t25
815
816
817 IF ((key(1:5)=='TYPE2').AND.(flg==1)) THEN
818 CALL hm_get_intv(
'WFLAG',sptfl,is_available,lsubmodel)
819 IF ((sptfl/=25).AND.(sptfl/=26)) THEN
820 cont = 0
821 type2 = 1
822 ENDIF
823 ENDIF
824
825
827 . type2,val,tag,i,compt,passe,0,igrpp_r2r,
828 . igrnod ,igrsurf ,igrslin, igrbric)
829
830
831 IF (type2==1) THEN
832 DO j=1,igrnod(g1)%NENTITY
833 cur_id = igrnod(g1)%ENTITY(j)
834 IF (
tagno(cur_id+npart)==2) flg_tied(4) = 1
835 IF (
tagno(cur_id+npart)==4) flg_tied(5) = 1
836 END DO
837 ENDIF
838
839 IF (tag>0) THEN
840 compt_t2 = compt_t2 + 1
841
842 IF ((tag==3).OR.(tag==1).OR.(tag==4)) THEN
844 . ipartc,ipartg,ipartsp,val,cont,modif,memtr,0,0,eani,
845 . igrsurf(g2),igrnod,g2)
846 ENDIF
847
848 IF ((tag==2).OR.(tag==1)) THEN
850 . ipartc,ipartg,ipartsp,val,cont,modif,memtr,0,1,eani,
851 . igrsurf,igrnod,g1)
852 ENDIF
853 ENDIF
854
855
856 ELSEIF (key(1:6) == 'TYPE18') THEN
857 cont = 1
858 CALL hm_get_intv(
'ALEelemsEntityids',gr_bric,is_available,lsubmodel)
859 CALL hm_get_intv(
'ALEnodesEntityids',grs,is_available,lsubmodel)
860 CALL hm_get_intv(
'mainentityids',grm,is_available,lsubmodel)
861
862
863 IF (grs > 0) THEN
865 . type2,val,tag,i,compt,passe,0,igrpp_r2r,
866 . igrnod ,igrsurf ,igrslin, igrbric)
867 ELSEIF (gr_bric > 0) THEN
869 . type2,val,tag,i,compt,passe,3,igrpp_r2r,
870 . igrnod ,igrsurf ,igrslin, igrbric)
871 ENDIF
872
873 IF (tag > 0) THEN
874 compt_t2 = compt_t2 + 1
875
876 IF ((tag == 3) .OR. (tag == 1) .OR. (tag == 4)) THEN
878 . ipartc,ipartg,ipartsp,val,cont,modif,memtr,0,0,eani,
879 . igrsurf(g2),igrnod,g2)
880 ENDIF
881
882 IF ((tag == 2) .OR. (tag == 1)) THEN
883 IF (grs > 0) THEN
885 . ipartc,ipartg,ipartsp,val,cont,modif,memtr,0,1,eani,
886 . igrsurf,igrnod,g1)
887 ELSEIF (gr_bric > 0) THEN
888 DO j=1,igrbric(g1)%NENTITY
889 cur_id = igrbric(g1)%ENTITY(j)
890
891 IF ((
tag_els(cur_id+npart)<(1+cont)).AND.(
tagno(iparts(cur_id))/=val))
THEN
893 ENDIF
894 ENDDO
895 ENDIF
896 ENDIF
897 ENDIF
898
899 ELSEIF (key(1:6)=='TYPE11') THEN
900 cont = 1
901 warn = 0
902 CALL hm_get_intv(
'secondaryentityids',grs,is_available,lsubmodel)
903 CALL hm_get_intv(
'mainentityids',grm,is_available,lsubmodel)
904
906 . type2,val,tag,i,compt,passe,2,igrpp_r2r,
907 . igrnod ,igrsurf ,igrslin, igrbric)
908 IF (tag>0) THEN
909 compt_t2 = compt_t2 + 1
910
911 IF ((tag==2).OR.(tag==1)) THEN
913 . iparts,ipartc,ipartg,ipartt,ipartp,ipartr,val,cont,
914 . modif,warn,igrslin(g1))
915 ENDIF
916
917 IF ((tag==3).OR.(tag==1)) THEN
919 . iparts,ipartc,ipartg,ipartt,ipartp,ipartr,val,cont,
920 . modif,warn,igrslin(g2))
921 ENDIF
922 ENDIF
923 IF (warn==1) THEN
925 . msgtype=msgerror,
926 . anmode=anstop,
927 . i1=id_inter)
928 ENDIF
929 ELSEIF (key(1:6)=='TYPE24'.OR.key(1:6)=='TYPE21'.OR.key(1:5)=='TYPE6'.OR.
930 . key(1:6)=='TYPE23'.OR.key(1:6)=='TYPE20'.OR.key(1:6)=='TYPE15'.OR.
931 . key(1:6)=='TYPE25'.OR.((key(1:5)=='TYPE3').AND.(flg==1))) THEN
932 cont = 1
933 CALL hm_get_intv(
'secondaryentityids',grs,is_available,lsubmodel)
934 CALL hm_get_intv(
'mainentityids',grm,is_available,lsubmodel)
935 IF ((flag_t24t25 == 1).AND.(grm==0)) grm = grs
936
938 . type2,val,tag,i,compt,passe,1,igrpp_r2r,
939 . igrnod ,igrsurf ,igrslin, igrbric)
940 IF (tag>0) THEN
941 compt_t2 = compt_t2 + 1
942
943 IF ((tag==2).OR.(tag==1)) THEN
945 . ipartc,ipartg,ipartsp,val,cont,modif,memtr,0,0,eani,
946 . igrsurf(g1),igrnod,g1)
947 ENDIF
948
949 IF ((tag==3).OR.(tag==1)) THEN
951 . ipartc,ipartg,ipartsp,val,cont,modif,memtr,0,0,eani,
952 . igrsurf(g2),igrnod,g2)
953 ENDIF
954 ENDIF
955
956
957 ELSEIF (key(1:3)/='SUB') THEN
959 . msgtype=msgerror,
960 . anmode=aninfo,
961 . i1=id_inter,
962 . c1=line(1:13))
963 ENDIF
964
965 END DO
966
967 new_hm_ninter = compt
968 new_ninter = 0
969 new_nslash_int = 0
970
971
972
973
974
976
977 compt = 0
978 DO i=1,hm_ninter
979
981 . option_id = id_inter,
982 . unit_id = nul,
983 . submodel_id = sub_id,
984 . option_titr = titr,
985 . keyword2 = key,
986 . keyword3 = key2)
987
988 IF (key(1:3)=='SUB') THEN
989 CALL hm_get_intv(
'InterfaceId',idint,is_available,lsubmodel)
990
991 DO j=1,hm_ninter+nslash(kcur)
992 IF (
tagint(j)==idint)
THEN
994 compt = compt + 1
995 ENDIF
996 END DO
997
998 ENDIF
999
1000 END DO
1001
1002 new_nintsub = compt
1003 new_hm_ninter = new_hm_ninter + compt
1004
1005
1006
1007
1008
1009 ni=0
1010 nb_rby = 0
1011 nb_kin = 0
1012 nb_lag = 0
1013 IF (passe==0)
ALLOCATE(
tagrby(nrbody))
1015 doma = 1
1016
1017
1018
1019
1021 nrb = 0
1022 DO i=1,nrbody
1023
1024
1025
1026 key=''
1028 . option_id = id_rby,
1029 . keyword2 = key,
1030 . option_titr = titr)
1031
1032 IF(key(1:6)=='LAGMUL') cycle
1033
1034 nrb=nrb+1
1035
1037 CALL hm_get_intv(
'sens_ID',isens,is_available,lsubmodel)
1038 CALL hm_get_intv(
'grnd_ID',igu,is_available,lsubmodel)
1039
1041 DO j=1,ngrnod
1042 IF (igrnod(j)%ID==igu) gr_id = j
1043 END DO
1044
1045 tag = 0
1046 compt=igrnod(gr_id)%R2R_ALL
1047 compt2=igrnod(gr_id)%R2R_SHARE
1048
1049 IF (
tagno(
main+npart)>1) compt = compt + 1
1050 IF (
tagno(
main+npart)>1) compt2 = compt2 + 1
1051 IF (compt2==0) tag = 1
1052
1053 IF (compt>0) THEN
1054 IF(tag==1) THEN
1055
1057 ELSE
1058
1061 IF (isens/=0) THEN
1063 . msgtype=msgerror,
1064 . anmode=aninfo,
1065 . c1="FOR RBODY ID=",
1066 . i1=id_rby,
1067 . c2="- RBODY WITH SENSOR")
1068 ENDIF
1069 ENDIF
1070 ENDIF
1071
1073 nb_rby = nb_rby + 1
1074 nb_kin = nb_kin + 1
1075 ENDIF
1076 END DO
1077 new_nrbykin=nb_kin
1078
1079
1080
1081
1083 nrb = 0
1084 DO i=1,nrbody
1085
1086
1087
1088 key=''
1090 . option_id = id_rby,
1091 . keyword2 = key,
1092 . option_titr = titr)
1093
1094 IF(key(1:6)=='LAGMUL') THEN
1095 nrb=nrb+1
1096
1098 . msgtype=msgerror,
1099 . anmode=aninfo,
1100 . c1=line(1:l+9))
1101
1103 CALL hm_get_intv(
'grnd_ID',igu,is_available,lsubmodel)
1104
1106 DO j=1,ngrnod
1107 IF (igrnod(j)%ID==igu) gr_id = j
1108 END DO
1109
1110
1111
1112 tag = 0
1113 compt=igrnod(gr_id)%R2R_ALL
1114 compt2=igrnod(gr_id)%R2R_SHARE
1115
1116 IF (
tagno(
main+npart)>1) compt = compt + 1
1117 IF (
tagno(
main+npart)>1) compt2 = compt2 + 1
1118 IF (compt2==0) tag = 1
1119
1120
1121
1122 IF (compt>0) THEN
1123 IF(tag==1) THEN
1124
1126 ELSE
1127
1130 ENDIF
1131 ENDIF
1132
1134 nb_rby = nb_rby + 1
1135 nb_lag = nb_lag + 1
1136 ENDIF
1137 END IF
1138 END DO
1139
1140 new_nrby = nb_rby
1141 nrbylag = nb_lag
1142
1143
1144
1145
1146
1147 nspcondn = 0
1149 IF (passe==0)
ALLOCATE(
tagsphbcs(nspcond))
1151 DO i=1,nspcond
1154 . option_titr = titr,
1155 . keyword2 = key)
1156 CALL hm_get_intv(
'entityid',igu,is_available,lsubmodel)
1157
1158 gr_id = 0
1159 DO j=1,ngrnod
1160 IF (igrnod(j)%ID==igu) gr_id = j
1161 END DO
1162
1163 compt = 0
1164 DO l=1,igrnod(gr_id)%NENTITY
1165 cur_id =
nod2sp(igrnod(gr_id)%ENTITY(l))
1166 IF (
tagno(ipartsp(cur_id))/=0)
THEN
1167 compt = compt + 1
1168 ENDIF
1169 ENDDO
1170
1171 IF (compt>0) THEN
1172 nspcondn = nspcondn + 1
1174 ENDIF
1175 END DO
1176
1177
1178
1179
1180
1181 new_nebcs = 0
1183 DO i=1,nebcs
1186 . option_titr = titr)
1187 CALL hm_get_intv(
'entityid',isur,is_available,lsubmodel)
1188
1189 isurs = 0
1190 DO j=1,nsurf
1191 IF(isur==igrsurf(j)%ID) isurs=j
1192 ENDDO
1193
1194
1195
1196
1198 new_nebcs = new_nebcs + 1
1199 ENDIF
1200 END DO
1201
1202
1203
1204
1205
1206
1207 nsphion = 0
1208 IF (passe == 0)
ALLOCATE(
tagsphio(nsphio))
1211 DO i = 1,nsphio
1212
1213 titr = ''
1216 . option_titr = titr)
1217 CALL hm_get_intv(
'pid' ,id_part ,is_available,lsubmodel)
1218 CALL hm_get_intv(
'SURF_ID' ,isur ,is_available,lsubmodel)
1219
1220 DO j=1,npart
1221 IF (ipart_l(4,j) == id_part) ids = j
1222 ENDDO
1223 DO j=1,nsurf
1224 IF (igrsurf(j)%ID == isur) g2 = j
1225 END DO
1226
1227 IF (
tagno(ids) /= 0)
THEN
1229 . ipartc,ipartg,ipartsp,1,0,modif,memtr,-2,0,eani,
1230 . igrsurf(g2),igrnod,g2)
1231 nsphion = nsphion + 1
1233 ENDIF
1234 END DO
1235
1236
1237
1238
1239
1241 IF (nalelk > 0) THEN
1243 DO i = 1, nalelk
1245 CALL hm_get_intv(
'node_ID1', n1, is_available, lsubmodel)
1246 CALL hm_get_intv(
'node_ID2', n2, is_available, lsubmodel)
1247 CALL hm_get_intv(
'grnod_ID', gr_id, is_available, lsubmodel)
1248 DO j = 1, ngrnod
1249 IF (igrnod(j)%ID == gr_id) THEN
1250 gr_id = j
1251 EXIT
1252 ENDIF
1253 ENDDO
1256 IF (n1 > 0) THEN
1257 IF ((igrnod(gr_id)%R2R_ALL > 0) .AND. (
tagno(npart+n1) < 1))
THEN
1259 ELSEIF ((igrnod(gr_id)%R2R_SHARE > 0) .AND. (
tagno(npart+n1) == 1))
THEN
1261 ELSEIF (
tagno(npart+n1) == 0)
THEN
1263 ELSEIF (
tagno(npart+n1) == -1)
THEN
1265 ENDIF
1266 ENDIF
1267 IF (n2 > 0) THEN
1268 IF ((igrnod(gr_id)%R2R_ALL > 0) .AND. (
tagno(npart+n2) < 1))
THEN
1270 ELSEIF ((igrnod(gr_id)%R2R_SHARE > 0) .AND. (
tagno(npart+n2) == 1))
THEN
1272 ELSEIF (
tagno(npart+n2) == 0)
THEN
1274 ELSEIF (
tagno(npart+n2) == -1)
THEN
1276 ENDIF
1277 ENDIF
1278 ENDDO
1279 ENDIF
1280
1281
1282
1283
1284
1286
1287 DO i=1,nrwall
1288
1290 . option_id = id_mon,
1291 . keyword2 = key)
1292
1293 IF (key(1:7) == 'LAGMUL') THEN
1294
1296 . msgtype=msgerror,
1297 . anmode=aninfo,
1298 . c1=line(1:l+6))
1299 ELSE
1300 CALL hm_get_intv(
'Node1',nod,is_available,lsubmodel)
1301 IF (nod>0) THEN
1304 ENDIF
1305 ENDIF
1306 ENDDO
1307
1308
1309
1310
1311
1312 new_ninivol = 0
1316
1319 CALL hm_get_intv(
'secondarycomponentlist', id_part, is_available, lsubmodel)
1320
1321 DO j=1,npart
1322 IF(ipart_l(4,j)==id_part) ids=j
1323 ENDDO
1324
1325 IF (
tagno(ids) > 0)
THEN
1327 new_ninivol = new_ninivol + 1
1328 ENDIF
1329 ENDDO
1330
1331
1332
1333
1334
1337
1338 DO i=1,ntrans
1339
1342 . keyword2 = key)
1343
1344 nnode_transform = 0
1345 node_transform(1:6) = 0
1346
1347 IF ((key(1:3)=='TRA').OR.(key(1:3)=='ROT').OR.(key(1:3)=='SYM')) THEN
1348 nnode_transform = 2
1349 CALL hm_get_intv(
'node1',node_transform(1),is_available,lsubmodel)
1350 CALL hm_get_intv(
'node2',node_transform(2),is_available,lsubmodel)
1351 ELSEIF (key(1:3)=='SCA') THEN
1352 nnode_transform = 1
1353 CALL hm_get_intv(
'node1',node_transform(1),is_available,lsubmodel)
1354 ELSEIF (key(1:3)=='POS') THEN
1355 nnode_transform = 6
1356 CALL hm_get_intv(
'node1',node_transform(1),is_available,lsubmodel)
1357 CALL hm_get_intv(
'node2',node_transform(2),is_available,lsubmodel)
1358 CALL hm_get_intv(
'node3',node_transform(3),is_available,lsubmodel)
1359 CALL hm_get_intv(
'node4',node_transform(4),is_available,lsubmodel)
1360 CALL hm_get_intv(
'node5',node_transform(5),is_available,lsubmodel)
1361 CALL hm_get_intv(
'node6',node_transform(6),is_available,lsubmodel)
1362 ENDIF
1363
1364 DO j=1,nnode_transform
1365 IF (node_transform(j) > 0) THEN
1368 ENDIF
1369 ENDDO
1370
1371 ENDDO
1372
1373
1374
1375
1377 DO i=1,detonators%N_DET_POINT
1379 CALL hm_get_intv(
'rad_det_node1', nod, is_available, lsubmodel)
1380 IF (nod>0) THEN
1383 ENDIF
1384 ENDDO
1385
1386
1387
1388 RETURN
1389
1390
1391
subroutine hm_get_float_array_index(name, rval, index, is_available, lsubmodel, unitab)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_count(entity_type, hm_option_number)
integer, parameter ncharfield
integer, dimension(:), allocatable tag_els
integer, dimension(:), allocatable tagsphio
integer, dimension(:), allocatable tag_inivol
integer, dimension(:), allocatable tagsphbcs
integer, dimension(:), allocatable tagrby
integer, dimension(:), allocatable tagrb2
integer, dimension(:), allocatable tag_elc
integer, dimension(:), allocatable tagrb3
integer, dimension(:), allocatable tagint
integer, dimension(:), allocatable taglnk
integer, dimension(:), allocatable tagjoin
integer, dimension(:,:), allocatable isurf_r2r
integer, dimension(:), allocatable taggau
integer, dimension(:), allocatable tagint_warn
integer, dimension(:), allocatable tagmpc
integer, dimension(:), allocatable tagcyl
integer, dimension(:), allocatable nod2sp
integer, dimension(:), allocatable, target nom_opt
integer, dimension(:), allocatable ixc
subroutine prelecsec(snstrf, ssecbuf, itabm1, flag_r2r, nom_opt, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrnod, lsubmodel, seatbelt_shell_to_spring, nb_seatbelt_shells)
subroutine r2r_count(passe, iparts, ipartc, ipartg, igrpp_r2r, pm_stack, iworksh, igrnod, igrsurf, igrslin, igrbric, ixs10, ixs20, ixs16)
subroutine modif_tag(tag, new_tag, modif)
int main(int argc, char *argv[])
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)
subroutine tag_elem_void_r2r_lin(nb, iparts, ipartc, ipartg, ipartt, ipartp, ipartr, val, cont, modif, warn, igrslin)
subroutine tag_elem_void_r2r(nb, iparts, ipartc, ipartg, ipartsp, val, cont, modif, itagl, f2, flag, eani2, igrsurf, igrnod, gr_id)
subroutine tagint_r2r(g1, g2, grs, grm, id_inter, type2, val, tag, i, compt, passe, flag, igrpp_r2r, igrnod, igrsurf, igrslin, igrbric)