OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_rbe2.F File Reference
#include "implicit_f.inc"
#include "scr05_c.inc"
#include "scr17_c.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "units_c.inc"
#include "param_c.inc"
#include "r2r_c.inc"
#include "sphcom.inc"
#include "scr03_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_rbe2 (irbe2, lrbe2, itab, itabm1, igrnod, iskn, ikine, iddlevel, nom_opt, itagnd, icdns10, lsubmodel)
subroutine hm_preread_rbe2 (lnum, lreal, igrnod, lsubmodel)
subroutine reorbe2 (irbe2, lrbe2, nc)
subroutine setiadm (iadm, nz, iad_n, irbe2)
subroutine hierarbe2 (irbe2, lrbe2)
subroutine inirbe2 (irbe2, lrbe2, itab, x, ms, in, stifn, stifr, totmas, xgt, ygt, zgt, b1, b2, b3, b5, b6, b9, nom_opt, itagnd)
subroutine contrbe2 (icr, lsubmodel)
subroutine seteloff2 (ixs, ixc, ixt, ixp, ixr, ixtg, iparg, isoloff, isheoff, itruoff, ipouoff, iresoff, itrioff, igrnrb2, igrnod, irbe2)
subroutine setrb2on (ixs, ixc, ixtg, igrnod, igrnrb2, isoloff, isheoff, itrioff, itabm1, lsubmodel)
subroutine rbe2_merge (irbe2, lrbe2)
subroutine same_nsn (nsl, lrbe2_1, lrbe2_2, itag, isame)
subroutine ic_mrg (ic_n, ic1, ic2)
subroutine ict2jt (ict, jt)

Function/Subroutine Documentation

◆ contrbe2()

subroutine contrbe2 ( integer icr,
type(submodel_data), dimension(*), intent(in) lsubmodel )

Definition at line 1000 of file hm_read_rbe2.F.

1001C-----------------------------------------------
1002C M o d u l e s
1003C-----------------------------------------------
1005 USE submodel_mod
1007C-----------------------------------------------
1008C I m p l i c i t T y p e s
1009C-----------------------------------------------
1010#include "implicit_f.inc"
1011C-----------------------------------------------
1012C C o m m o n B l o c k s
1013C-----------------------------------------------
1014#include "com04_c.inc"
1015C-----------------------------------------------
1016C D u m m y A r g u m e n t s
1017C-----------------------------------------------
1018 INTEGER ICR
1019 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
1020C-----------------------------------------------
1021C L o c a l V a r i a b l e s
1022C-----------------------------------------------
1023 INTEGER I, N, K, NSL, NSLT, ITYP, NUSER, NM,M, NI,
1024 . ISK, ISENS, INGU, IGM, J, P,IAD,NS,NN,J6(6),JJ,II,
1025 . IC,IC1,IC2,IROT,ISKS,IADS,IERR1,NC,ID,IRAD
1026 CHARACTER(LEN=NCHARTITLE) :: TITR
1027 CHARACTER(LEN=NCHARKEY) :: KEY
1028 LOGICAL IS_AVAILABLE
1029C-----------------------------------------------
1030C E x t e r n a l F u n c t i o n s
1031C-----------------------------------------------
1032C
1033C=====================================================================|
1034C
1035C-----initialise NHRBE2--au cas no rbe2---add new option-----------
1036 nhrbe2 = 0
1037 icr =0
1038 CALL hm_option_start('/RBE2')
1039 DO i=1,nrbe2
1040 CALL hm_option_read_key(lsubmodel,
1041 . option_id = nuser,
1042 . option_titr = titr)
1043C
1044 CALL hm_get_intv('independentnode',nm,is_available,lsubmodel)
1045 CALL hm_get_intv('VX',j6(1),is_available,lsubmodel)
1046 CALL hm_get_intv('vy',J6(2),IS_AVAILABLE,LSUBMODEL)
1047 CALL HM_GET_INTV('vz',J6(3),IS_AVAILABLE,LSUBMODEL)
1048 CALL HM_GET_INTV('wx',J6(4),IS_AVAILABLE,LSUBMODEL)
1049 CALL HM_GET_INTV('wy',J6(5),IS_AVAILABLE,LSUBMODEL)
1050 CALL HM_GET_INTV('wz',J6(6),IS_AVAILABLE,LSUBMODEL)
1051 CALL HM_GET_INTV('skew_csid',ISK,IS_AVAILABLE,LSUBMODEL)
1052 CALL HM_GET_INTV('dependentnodeset',INGU,IS_AVAILABLE,LSUBMODEL)
1053 CALL HM_GET_INTV('iflag',IRAD,IS_AVAILABLE,LSUBMODEL)
1054C
1055 IF ((J6(1)+J6(2)+J6(3)+J6(4)+J6(5)+J6(6))==0) THEN
1056 J6(4)=1
1057 J6(5)=1
1058 J6(6)=1
1059 ENDIF
1060 ICR = J6(4) + J6(5) + J6(6)
1061 IF (IRAD == 0) ICR = 1
1062 IF (ICR >0) RETURN
1063 ENDDO
1064C
1065 RETURN
1066C
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_start(entity_type)
integer, parameter nchartitle
integer, parameter ncharkey

◆ hierarbe2()

subroutine hierarbe2 ( integer, dimension(nrbe2l,*) irbe2,
integer, dimension(*) lrbe2 )

Definition at line 607 of file hm_read_rbe2.F.

608C-----------------------------------------------
609C I m p l i c i t T y p e s
610C-----------------------------------------------
611#include "implicit_f.inc"
612C-----------------------------------------------
613C C o m m o n B l o c k s
614C-----------------------------------------------
615#include "com04_c.inc"
616#include "param_c.inc"
617#include "tabsiz_c.inc"
618C-----------------------------------------------
619C D u m m y A r g u m e n t s
620C-----------------------------------------------
621 INTEGER IRBE2(NRBE2L,*), LRBE2(*)
622C-----------------------------------------------
623C L o c a l V a r i a b l e s
624C-----------------------------------------------
625 INTEGER I, N, IM1,NS,J,NSL,IAD,M,IH1,K,NZ,II,IAD1
626C
627 INTEGER ITAG1(NRBE2),
628 . LCOPY(SLRBE2),ICOPY(NRBE2L,NRBE2)
629 INTEGER, DIMENSION(:), ALLOCATABLE :: ITAG, IAD_N
630C========================================================================|
631C--------defining hierarchy---------------------------------------
632 ALLOCATE(itag(numnod))
633 ALLOCATE(iad_n(numnod+1))
634 DO i=1,numnod
635 itag(i)=0
636 ENDDO
637C--------if same node as several MAINs---------------------------------------
638 nz=0
639 DO i=1,nrbe2
640 m = irbe2(3,i)
641 IF (itag(m)==0) THEN
642 itag(m)=i
643 ELSE
644 nz=nz+1
645 itag1(nz)=i
646 ENDIF
647 ENDDO
648 CALL setiadm(itag1,nz,iad_n,irbe2)
649C--------------------------------------------
650 DO i=1,nrbe2
651 iad = irbe2(1,i)
652 m = irbe2(3,i)
653 nsl = irbe2(5,i)
654 DO j =1,nsl
655 ns = lrbe2(iad+j)
656 IF (itag(ns)>0) THEN
657 im1=itag(ns)
658 ih1 = irbe2(9,im1)+1
659 irbe2(9,i) = max(irbe2(9,i),ih1)
660 DO k=iad_n(ns),iad_n(ns+1)-1
661 im1=itag1(k)
662 ih1 = irbe2(9,im1)+1
663 irbe2(9,i) = max(irbe2(9,i),ih1)
664 ENDDO
665 ENDIF
666 ENDDO
667 ENDDO
668 nhrbe2=0
669 DO i=1,nrbe2
670 nhrbe2 = max(nhrbe2,irbe2(9,i))
671 m = irbe2(3,i)
672 ENDDO
673 IF (nhrbe2==0) RETURN
674C-------reordering according hiera---
675 DO i=1,nrbe2
676 iad = irbe2(1,i)
677 m = irbe2(3,i)
678 nsl = irbe2(5,i)
679 DO j =1,nrbe2l
680 icopy(j,i) = irbe2(j,i)
681 ENDDO
682 DO j =1,nsl
683 lcopy(iad+j) = lrbe2(iad+j)
684 ENDDO
685 ENDDO
686C----------reodering---
687 iad1 = 0
688 ii = 0
689 DO n=0,nhrbe2
690 DO i=1,nrbe2
691 IF (icopy(9,i)/=n) cycle
692 ii = ii + 1
693 iad = icopy(1,i)
694 m = icopy(3,i)
695 nsl = icopy(5,i)
696 irbe2(1,ii) = iad1
697 DO j =2,nrbe2l
698 irbe2(j,ii) = icopy(j,i)
699 ENDDO
700 DO j =1,nsl
701 lrbe2(iad1+j)=lcopy(iad+j)
702 ENDDO
703 iad1 =iad1+nsl
704 ENDDO
705 ENDDO
706C
707 DEALLOCATE(itag,iad_n)
708 RETURN
subroutine icopy(n, sx, incx, sy, incy)
ICOPY
Definition icopy.f:75
subroutine setiadm(iadm, nz, iad_n, irbe2)
#define max(a, b)
Definition macros.h:21

◆ hm_preread_rbe2()

subroutine hm_preread_rbe2 ( integer lnum,
integer lreal,
type (group_), dimension(ngrnod) igrnod,
type(submodel_data), dimension(*), intent(in) lsubmodel )

Definition at line 328 of file hm_read_rbe2.F.

329C-----------------------------------------------
330C M o d u l e s
331C-----------------------------------------------
332 USE r2r_mod
333 USE groupdef_mod
334 USE submodel_mod
337C-----------------------------------------------
338C I m p l i c i t T y p e s
339C-----------------------------------------------
340#include "implicit_f.inc"
341C-----------------------------------------------
342C C o m m o n B l o c k s
343C-----------------------------------------------
344#include "param_c.inc"
345#include "com04_c.inc"
346#include "r2r_c.inc"
347C-----------------------------------------------
348C D u m m y A r g u m e n t s
349C-----------------------------------------------
350 INTEGER LNUM ,LREAL
351C-----------------------------------------------
352 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
353 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
354C-----------------------------------------------
355C L o c a l V a r i a b l e s
356C-----------------------------------------------
357 INTEGER I,J,K,IGU,IGS,NI,NN,NJ,JJ, NUSER, NUM,NRB
358 CHARACTER(LEN=NCHARTITLE) :: TITR
359 INTEGER NGR2USRN,ISK
360 LOGICAL IS_AVAILABLE
361C========================================================================|
362 lnum = 0
363 lreal = 0
364 IF (nrbe2==0) RETURN
365
366 nrb = 0
367
368 CALL hm_option_start('/rbe2')
369 DO I=1,NRBE2
370 NRB=NRB+1
371C----------Multidomaines --> on ignore les rbe2 non tages---------
372 IF(NSUBDOM>0)THEN
373 IF(TAGRB2(NRB)==0)CALL HM_SZ_R2R(TAGRB2,NRB,LSUBMODEL)
374 END IF
375C-----------------------------------------------------------------
376 CALL HM_OPTION_READ_KEY(LSUBMODEL,
377 . OPTION_ID = NUSER,
378 . OPTION_TITR = TITR)
379
380 CALL HM_GET_INTV('dependentnodeset',IGU,IS_AVAILABLE,LSUBMODEL)
381 IGS = NGR2USRN(IGU,IGRNOD,NGRNOD,NN)
382C
383 LREAL = LREAL + NN
384 LNUM = LNUM +NRBE2L
385 ENDDO
386C-----------
387 RETURN

◆ hm_read_rbe2()

subroutine hm_read_rbe2 ( integer, dimension(nrbe2l,*) irbe2,
integer, dimension(*) lrbe2,
integer, dimension(*) itab,
integer, dimension(*) itabm1,
type (group_), dimension(ngrnod) igrnod,
integer, dimension(liskn,*) iskn,
integer, dimension(*) ikine,
integer iddlevel,
integer, dimension(lnopt1,*) nom_opt,
integer, dimension(*) itagnd,
integer, dimension(*) icdns10,
type(submodel_data), dimension(*), intent(in) lsubmodel )

Definition at line 46 of file hm_read_rbe2.F.

49C-----------------------------------------------
50C M o d u l e s
51C-----------------------------------------------
52 USE message_mod
53 USE groupdef_mod
55 USE submodel_mod
57C-----------------------------------------------
58C M o d u l e s
59C-----------------------------------------------
60 USE r2r_mod
61C-----------------------------------------------
62C I m p l i c i t T y p e s
63C-----------------------------------------------
64#include "implicit_f.inc"
65C-----------------------------------------------
66C C o m m o n B l o c k s
67C-----------------------------------------------
68#include "scr05_c.inc"
69#include "scr17_c.inc"
70#include "com01_c.inc"
71#include "com04_c.inc"
72#include "units_c.inc"
73#include "param_c.inc"
74#include "r2r_c.inc"
75#include "sphcom.inc"
76#include "scr03_c.inc"
77C-----------------------------------------------
78C D u m m y A r g u m e n t s
79C-----------------------------------------------
80 INTEGER IRBE2(NRBE2L,*), LRBE2(*), ITAB(*),ITABM1(*),
81 . ISKN(LISKN,*),
82 . IKINE(*),IDDLEVEL,ITAGND(*),ICDNS10(*)
83 INTEGER NOM_OPT(LNOPT1,*)
84C-----------------------------------------------
85 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
86 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
90 INTEGER I, N, K, NSL, NSLT, ITYP, NUSER, NM,M, NI,
91 . ISK, ISENS, INGU, IGM, J, P,IAD,NS,NN,J6(6),JJ,II,
92 . IC,IC1,IC2,IROT,ISKS,IADS,IERR1,NC,ID,IDIR,
93 . IKINE1(3*NUMNOD),IRAD,NRB,ICP,IER,NMOVE,SUB_INDEX
94 INTEGER, DIMENSION(NUMNOD) :: ITAGM,ITAGIC
95 CHARACTER(LEN=NCHARTITLE) :: TITR
96 CHARACTER(LEN=NCHARKEY) :: KEY
97 CHARACTER :: MESS*40
98 LOGICAL IS_AVAILABLE
99C-----------------------------------------------
100C E x t e r n a l F u n c t i o n s
101C-----------------------------------------------
102 INTEGER USR2SYS,NODGRNR6
103 INTEGER FMAIN(PARASIZ)
104 INTEGER NLOCAL
105 EXTERNAL nlocal
106C
107 DATA mess/'RBE2 RIGID BODY '/
108C-----------------------------------------------
109C IRBE2(1,I) : IAD0 for LRBE2
110C IRBE2(2,I) : TYPE usr' id temporaire (print)
111C IRBE2(3,I) : INDEPENDENT NODE
112C IRBE2(4,I) : REF_DOF
113C IRBE2(5,I) : NUMBER OF DEPENDENT NODES
114C IRBE2(6,I) : m_iad if same node as several Rbe2 main (init.in engine)
115C IRBE2(7,I) : iskew
116C IRBE2(8,I) : SBE2
117C IRBE2(9,I) : hierarchy level 0-NHRBE2
118C IRBE2(10,I) : id for modif/spmd
119C IRBE2(11,I) : flag to associate REF_DOF to main node
120C========================================================================|
121 WRITE(iout,1000)
122 IF (ipri<5) WRITE(iout,1201)
123C
124 nrb = 0
125C
126 DO i=1,3*numnod
127 ikine1(i) = 0
128 ENDDO
129 k = 0
130C
131 CALL hm_option_start('/RBE2')
132 iad = 0
133 DO i=1,nrbe2
134 nrb=nrb+1
135C----------Multidomaines --> on ignore les rbe3 non tages---------
136 IF(nsubdom>0)THEN
137 IF(tagrb2(nrb)==0)CALL hm_sz_r2r(tagrb2,nrb,lsubmodel)
138 END IF
139C-----------------------------------------------------------------
140 CALL hm_option_read_key(lsubmodel,
141 . option_id = nuser,
142 . submodel_index = sub_index,
143 . option_titr = titr)
144
145 nom_opt(1,i)=nuser
146 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,i),ltitr)
147 irbe2(2,i) = nuser
148 irbe2(10,i) = i
149 CALL hm_get_intv('independentnode',nm,is_available,lsubmodel)
150 CALL hm_get_intv('VX',j6(1),is_available,lsubmodel)
151 CALL hm_get_intv('VY',j6(2),is_available,lsubmodel)
152 CALL hm_get_intv('VZ',j6(3),is_available,lsubmodel)
153 CALL hm_get_intv('WX',j6(4),is_available,lsubmodel)
154 CALL hm_get_intv('WY',j6(5),is_available,lsubmodel)
155 CALL hm_get_intv('WZ',j6(6),is_available,lsubmodel)
156 CALL hm_get_intv('SKEW_CSID',isk,is_available,lsubmodel)
157 CALL hm_get_intv('dependentnodeset',INGU,IS_AVAILABLE,LSUBMODEL)
158 CALL HM_GET_INTV('iflag',IRAD,IS_AVAILABLE,LSUBMODEL)
159C
160.and. IF (ISK == 0 SUB_INDEX > 0) ISK = LSUBMODEL(SUB_INDEX)%SKEW
161C
162 M = USR2SYS(NM,ITABM1,MESS,NUSER)
163 IC1=J6(1)*4 +J6(2)*2 +J6(3)
164 IC2=J6(4)*4 +J6(5)*2 +J6(6)
165 IC =IC1*512+IC2*64
166 IF (IC==0) IC =7*512+7*64
167 IRBE2(3,I) = M
168 IRBE2(4,I) = IC
169 IRBE2(1,I) = IAD
170 IRBE2(11,I) = IRAD
171 NS = NODGRNR6(M ,INGU ,IGM ,LRBE2(IAD+1),IGRNOD,
172 . ITABM1,MESS,NUSER)
173 IF (NS10E > 0) THEN
174C----partial dof of RBE2 will be treated correctly
175C
176 IF (ITAGND(M)/=0) THEN
177 CALL ANCMSG(MSGID=1211,
178 . MSGTYPE=MSGERROR,
179 . ANMODE=ANINFO,
180 . I1=ITAB(M),
181 . C1='rbe2',
182 . I2=NUSER,
183 . C2='rbe2')
184 END IF
185 END IF
186 ISKS = 0
187 IF ((J6(1)+J6(2)+J6(3)+J6(4)+J6(5)+J6(6))==0) THEN
188 J6(1)=1
189 J6(2)=1
190 J6(3)=1
191 J6(4)=1
192 J6(5)=1
193 J6(6)=1
194 ENDIF
195 IF (ISK/=0) THEN
196 DO JJ=0,NUMSKW+MIN(1,NSPCOND)*NUMSPH+NSUBMOD
197 IF(ISK==ISKN(4,JJ+1)) THEN
198 ISKS=JJ+1
199 GO TO 10
200 ENDIF
201 ENDDO
202 CALL ANCMSG(MSGID=184,
203 . MSGTYPE=MSGERROR,
204 . ANMODE=ANINFO,
205 . C1='rbe2',
206 . I1=NUSER,
207 . C2='rbe2',
208 . C3=TITR,
209 . I2=ISK)
210 10 CONTINUE
211 ENDIF
212 IRBE2(7,I) = ISKS
213C
214 IF (IDDLEVEL == 0) THEN
215 DO J=1,NS
216 DO IDIR=1,6
217 IF ( J6(IDIR) == 1)
218 . CALL KINSET(2048,ITAB(LRBE2(J+K)),IKINE(LRBE2(J+K)),IDIR,ISK,
219 . IKINE1(LRBE2(J+K)))
220 ENDDO
221 ENDDO
222 ENDIF
223 IAD = IAD+NS
224 IRBE2(5,I) = NS
225 IF (IPRI>=5) THEN
226 WRITE(IOUT,1100) NUSER,NM,J6,ISK,NS,IRAD
227 ELSE
228 WRITE(IOUT,1200) NUSER,NM,J6,ISK,NS,IRAD
229 END IF
230 K = K + NS
231 END DO
232C------treatment compatibility w/ Itetra10=2
233 IF (NS10E > 0) THEN
234C------can have the same MAIN node in several RBE2
235 ITAGM(1:NUMNOD)=0
236 ITAGIC(1:NUMNOD)=0
237 DO I=1,NRBE2
238 IAD = IRBE2(1,I)
239 M = IRBE2(3,I)
240 NSL = IRBE2(5,I)
241 IC = IRBE2(4,I)
242 DO J=1,NSL
243 NS =LRBE2(IAD+J)
244 IF (ITAGM(NS)==0) THEN
245 ITAGM(NS) = M
246 ELSEIF (ITAGM(NS)/=M) THEN
247C------- error-out
248 END IF
249 ITAGIC(NS) = ITAGIC(NS) + IC
250 END DO
251 END DO
252 NMOVE = 0
253 DO I=1,NRBE2
254 IAD = IRBE2(1,I)
255 M = IRBE2(3,I)
256 NSL = IRBE2(5,I)
257 NUSER = IRBE2(2,I)
258 CALL RBE2MODIF_ND(NSL,LRBE2(IAD+1),ITAGND,ICDNS10,NUSER,ITAB,
259 . ITAGM,M,ITAGIC)
260 IF (IRBE2(5,I)>NSL) THEN
261 NMOVE = NMOVE+IRBE2(5,I)-NSL
262 IRBE2(5,I) = NSL
263 END IF
264 END DO
265 IF (NMOVE>0) THEN
266 CALL ANCMSG(MSGID=1729,
267 . MSGTYPE=MSGINFO,
268 . ANMODE=ANINFO_BLIND_1,
269 . I1=NMOVE)
270 END IF
271 END IF
272C--------for decompo
273 IF (IDDLEVEL > 0) THEN
274 DO I=1,NRBE2
275 IAD = IRBE2(1,I)
276 M = IRBE2(3,I)
277 NS = IRBE2(5,I)
278.AND. IF (NSPMD > 1NS>0) THEN
279 FMAIN(1:NSPMD) = 0
280 DO P = 1, NSPMD
281 DO J = 1, NS
282 IF (NLOCAL(LRBE2(IAD+J),P)/=0)THEN
283 FMAIN(P) = 1
284 GO TO 85
285 ENDIF
286 ENDDO
287 85 CONTINUE
288 END DO
289C noeud main sur les procs ayant au moins 1 SECONDARY
290 DO P = 1, NSPMD
291 IF (FMAIN(P)==1) THEN
292 CALL IFRONTPLUS(M,P)
293 ENDIF
294 ENDDO
295 ENDIF
296 END DO
297 END IF !(IDDLEVEL > 0) THEN
298C
299 RETURN
300C
301 1000 FORMAT(//
302 .' rigid element(rbe2) '/
303 . ' ---------------------- ')
304 1100 FORMAT(/10X,'number . . . . . . . . . . .',I10,/,
305 . /10X,'independent node number . . ',I10,
306 . /10X,'dof( x,y,z, xx,yy,zz). . . . ',3I1,2X,3I1
307 . /10X,'skew number . . . . . . . . .',I10,
308 . /10X,'number of dependent nodes. . .',I10,
309 . /10X,'formulation flag . . . . . . ',I10,//)
310 1201 FORMAT(' rbe2_id ind._node ref_dof skew_id #SECONDARY IFLAG'/)
311 1200 FORMAT(3x,2i10,3x,3i1,1x,3i1,3i10)
integer function nlocal(n, p)
Definition ddtools.F:349
integer, dimension(:), allocatable tagrb2
Definition r2r_mod.F:138
subroutine hm_sz_r2r(tag, val, lsubmodel)
subroutine fretitl(titr, iasc, l)
Definition freform.F:620

◆ ic_mrg()

subroutine ic_mrg ( integer ic_n,
integer ic1,
integer ic2 )

Definition at line 1438 of file hm_read_rbe2.F.

1439C-----------------------------------------------
1440C I m p l i c i t T y p e s
1441C-----------------------------------------------
1442#include "implicit_f.inc"
1443C-----------------------------------------------
1444C D u m m y A r g u m e n t s
1445C-----------------------------------------------
1446 INTEGER IC_N,IC1 ,IC2
1447C-----------------------------------------------
1448C L o c a l V a r i a b l e s
1449C-----------------------------------------------
1450 INTEGER I,ICT,ICR,JT1(3),JR1(3),JT2(3),JR2(3),IUN
1451C========================================================================|
1452 ict=ic1/512
1453 icr=(ic1-512*(ict))/64
1454 CALL ict2jt(ict,jt1)
1455 CALL ict2jt(icr,jr1)
1456 ict=ic2/512
1457 icr=(ic2-512*(ict))/64
1458 CALL ict2jt(ict,jt2)
1459 CALL ict2jt(icr,jr2)
1460 iun=1
1461 DO i =1,3
1462 jt1(i) = jt1(i)+jt2(i)
1463 jr1(i) = jr1(i)+jr2(i)
1464 jt1(i) = min(iun,jt1(i))
1465 jr1(i) = min(iun,jr1(i))
1466 END DO
1467 ict=jt1(1)*4 +jt1(2)*2 +jt1(3)
1468 icr=jr1(1)*4 +jr1(2)*2 +jr1(3)
1469 ic_n =ict*512+icr*64
1470C
1471 RETURN
subroutine ict2jt(ict, jt)
#define min(a, b)
Definition macros.h:20

◆ ict2jt()

subroutine ict2jt ( integer ict,
integer, dimension(3) jt )

Definition at line 1478 of file hm_read_rbe2.F.

1479C-----------------------------------------------
1480C I m p l i c i t T y p e s
1481C-----------------------------------------------
1482#include "implicit_f.inc"
1483C-----------------------------------------------
1484C D u m m y A r g u m e n t s
1485C-----------------------------------------------
1486 INTEGER ICT,JT(3)
1487C REAL
1488C-----------------------------------------------
1489C L o c a l V a r i a b l e s
1490C-----------------------------------------------
1491 INTEGER I, J
1492C======================================================================|
1493C ICT=IC/512
1494C ICR=(IC-512*(ICT))/64
1495 jt(1:3)= 0
1496 SELECT CASE (ict)
1497 CASE(1)
1498 jt(3)=1
1499 CASE(2)
1500 jt(2)=1
1501 CASE(3)
1502 jt(2)=1
1503 jt(3)=1
1504 CASE(4)
1505 jt(1)=1
1506 CASE(5)
1507 jt(1)=1
1508 jt(3)=1
1509 CASE(6)
1510 jt(1)=1
1511 jt(2)=1
1512 CASE(7)
1513 jt(1)=1
1514 jt(2)=1
1515 jt(3)=1
1516 END SELECT
1517C---
1518 RETURN

◆ inirbe2()

subroutine inirbe2 ( integer, dimension(nrbe2l,*) irbe2,
integer, dimension(*) lrbe2,
integer, dimension(*) itab,
x,
ms,
in,
stifn,
stifr,
totmas,
xgt,
ygt,
zgt,
b1,
b2,
b3,
b5,
b6,
b9,
integer, dimension(lnopt1,*) nom_opt,
integer, dimension(*) itagnd )

Definition at line 723 of file hm_read_rbe2.F.

727 USE message_mod
729C-----------------------------------------------
730C I m p l i c i t T y p e s
731C-----------------------------------------------
732#include "implicit_f.inc"
733C-----------------------------------------------
734C C o m m o n B l o c k s
735C-----------------------------------------------
736#include "scr17_c.inc"
737#include "com01_c.inc"
738#include "com04_c.inc"
739#include "units_c.inc"
740#include "param_c.inc"
741#include "scr03_c.inc"
742C-----------------------------------------------
743C D u m m y A r g u m e n t s
744C-----------------------------------------------
745 INTEGER IRBE2(NRBE2L,*), LRBE2(*),ITAB(*),ITAGND(*)
746 my_real
747 . x(3,*),ms(*),in(*),stifn(*) ,stifr(*),totmas,
748 . b1, b2, b3, b5, b6, b9,xgt ,ygt ,zgt
749 INTEGER NOM_OPT(LNOPT1,*)
750C-----------------------------------------------
751C L o c a l V a r i a b l e s
752C-----------------------------------------------
753 INTEGER I, J ,N, K, NSL,M, NC,NS,ICT,ICR,IC,IAD,ID,J6(6),IRAD
754C
755 my_real xx, xy, xz, yy, yz, zz,ixx,iyy,izz,dd,masrb,inrb,ins,ins0
756 CHARACTER(LEN=NCHARTITLE) :: TITR
757C========================================================================|
758 CALL rbe2_merge(irbe2 ,lrbe2 )
759 CALL reorbe2(irbe2 ,lrbe2 ,nc )
760 CALL hierarbe2(irbe2 ,lrbe2 )
761 IF (nc<0) THEN
762 id= -nc
763 CALL ancmsg(msgid=803,
764 . msgtype=msgerror,
765 . anmode=aninfo,
766 . i1=id)
767 ELSEIF(nhrbe2>0) THEN
768 WRITE(iout,1200) nhrbe2
769 IF (ipri>=5) THEN
770 WRITE(iout,1000)
771 DO i=1,nrbe2
772 m = itab(irbe2(3,i))
773 nsl = irbe2(5,i)
774 ic=irbe2(4,i)
775 ict=ic/512
776 icr=(ic-512*(ict))/64
777 DO j =1,6
778 j6(j)=0
779 ENDDO
780 SELECT CASE (ict)
781 CASE(1)
782 j6(3)=1
783 CASE(2)
784 j6(2)=1
785 CASE(3)
786 j6(2)=1
787 j6(3)=1
788 CASE(4)
789 j6(1)=1
790 CASE(5)
791 j6(1)=1
792 j6(3)=1
793 CASE(6)
794 j6(1)=1
795 j6(2)=1
796 CASE(7)
797 j6(1)=1
798 j6(2)=1
799 j6(3)=1
800 END SELECT
801 SELECT CASE (icr)
802 CASE(1)
803 j6(6)=1
804 CASE(2)
805 j6(5)=1
806 CASE(3)
807 j6(5)=1
808 j6(6)=1
809 CASE(4)
810 j6(4)=1
811 CASE(5)
812 j6(4)=1
813 j6(6)=1
814 CASE(6)
815 j6(4)=1
816 j6(5)=1
817 CASE(7)
818 j6(4)=1
819 j6(5)=1
820 j6(6)=1
821 END SELECT
822 WRITE(iout,1100) irbe2(2,i),irbe2(9,i),m,j6,irbe2(7,i),nsl
823 ENDDO
824 END IF
825 ENDIF
826C
827 inrb=zero
828 DO i=1,nrbe2
829 iad = irbe2(1,i)
830 nom_opt(1,i) = irbe2(2,i)
831 m = irbe2(3,i)
832 nsl = irbe2(5,i)
833 ic=irbe2(4,i)
834 irad = irbe2(11,i)
835 ict=ic/512
836 IF (ict>0) THEN
837 IF (ns10e>0) THEN
838 DO j =1,nsl
839 ns = lrbe2(iad+j)
840 IF (itagnd(ns)/=0) cycle
841 ms(m) = ms(m)+ms(ns)
842 stifn(m)= stifn(m)+stifn(ns)
843 ENDDO
844 ELSE
845 DO j =1,nsl
846 ns = lrbe2(iad+j)
847 ms(m) = ms(m)+ms(ns)
848 stifn(m)= stifn(m)+stifn(ns)
849 ENDDO
850 END IF !(NS10E>0) THEN
851 ENDIF
852 icr=(ic-512*(ict))/64
853 IF (iroddl==0) icr =0
854 IF (icr>0.OR.irad==0) THEN
855 IF (icr>0) THEN
856 DO j =1,nsl
857 ns = lrbe2(iad+j)
858 in(m) = in(m)+in(ns)
859 stifr(m)= stifr(m)+stifr(ns)
860 ENDDO
861 END IF
862 IF (ict>0) THEN
863 IF (ns10e>0) THEN
864 DO j =1,nsl
865 ns = lrbe2(iad+j)
866 IF (itagnd(ns)/=0) cycle
867 xx=(x(1,ns)-x(1,m))*(x(1,ns)-x(1,m))
868 yy=(x(2,ns)-x(2,m))*(x(2,ns)-x(2,m))
869 zz=(x(3,ns)-x(3,m))*(x(3,ns)-x(3,m))
870 ixx=yy+zz
871 iyy=zz+xx
872 izz=xx+yy
873 ins = (ixx+iyy+izz)*ms(ns)
874 in(m) = in(m)+ ins
875 IF (ict==7) inrb = inrb+ins
876 dd = xx+yy+zz
877 stifr(m)= stifr(m)+dd*stifn(ns)
878 ENDDO
879 ELSE
880 DO j =1,nsl
881 ns = lrbe2(iad+j)
882 xx=(x(1,ns)-x(1,m))*(x(1,ns)-x(1,m))
883 yy=(x(2,ns)-x(2,m))*(x(2,ns)-x(2,m))
884 zz=(x(3,ns)-x(3,m))*(x(3,ns)-x(3,m))
885 ixx=yy+zz
886 iyy=zz+xx
887 izz=xx+yy
888 ins = (ixx+iyy+izz)*ms(ns)
889 in(m) = in(m)+ ins
890 IF (ict==7) inrb = inrb+ins
891 dd = xx+yy+zz
892 stifr(m)= stifr(m)+dd*stifn(ns)
893 ENDDO
894 END IF !(NS10E>0) THEN
895 ENDIF
896 ENDIF
897 ENDDO
898C-----Correction -only for the case 111---
899 masrb=zero
900 DO i=1,nrbe2
901 iad = irbe2(1,i)
902 nsl = irbe2(5,i)
903 ic=irbe2(4,i)
904 ict=ic/512
905 IF (ict==7) THEN
906 DO j =1,nsl
907 ns = lrbe2(iad+j)
908 stifn(ns)= em20
909 masrb = masrb+ms(ns)
910 xx=(x(1,ns))*(x(1,ns))
911 xy=(x(1,ns))*(x(2,ns))
912 xz=(x(1,ns))*(x(3,ns))
913 yy=(x(2,ns))*(x(2,ns))
914 yz=(x(2,ns))*(x(3,ns))
915 zz=(x(3,ns))*(x(3,ns))
916 b1 = b1 -(yy+zz)*ms(ns)
917 b2 = b2 + xy*ms(ns)
918 b3 = b3 + xz*ms(ns)
919 b5 = b5 -(zz+xx)*ms(ns)
920 b6 = b6 + yz*ms(ns)
921 b9 = b9 - (xx+yy)*ms(ns)
922 xgt = xgt - ms(ns)*x(1,ns)
923 ygt = ygt - ms(ns)*x(2,ns)
924 zgt = zgt - ms(ns)*x(3,ns)
925 ENDDO
926 ENDIF
927 icr=(ic-512*(ict))/64
928 IF (icr==7.AND.iroddl>0) THEN
929 DO j =1,nsl
930 ns = lrbe2(iad+j)
931 stifr(ns)= em20
932 inrb=inrb+in(ns)
933 b1 = b1 -in(ns)
934 b5 = b5 -in(ns)
935 b9 = b9 -in(ns)
936 ENDDO
937 ENDIF
938 ENDDO
939 totmas = totmas - masrb
940C------INRB will not be taken into account due to solide elements as dependent nodes but defined as 111 111
941C
942 DO i=1,nrbe2
943 id=nom_opt(1,i)
944 CALL fretitl2(titr,
945 . nom_opt(lnopt1-ltitr+1,i),ltitr)
946
947 m = irbe2(3,i)
948 IF(ms(m)<=1.0e-25) THEN
949 CALL ancmsg(msgid=804,
950 . msgtype=msgerror,
951 . anmode=aninfo_blind_1,
952 . i1=id,
953 . c1=titr)
954 RETURN
955 ENDIF
956 IF (ipri>=3) THEN
957 WRITE(iout,1300)
958 IF (iroddl==0) THEN
959 WRITE(iout,1600) irbe2(2,i),itab(irbe2(3,i)),ms(m)
960 ELSE
961 WRITE(iout,1400) irbe2(2,i),itab(irbe2(3,i)),ms(m),in(m)
962 END IF
963 ENDIF
964 ENDDO
965C
966 RETURN
967 1000 FORMAT(//
968 .' RIGID ELEMENT(RBE2) WITH HIERARCHY LEVEL AFTER REORDERING:'/
969 . ' --------------------------------------------------------- ')
970 1100 FORMAT(/10x,'NUMBER . . . . . . . . . . .',i10,/,
971 . /10x,'HIERARCHY LEVEL. . . . . . ',i10,
972 . /10x,'INDEPENDENT NODE NUMBER. . .',i10,
973 . /10x,'DOF ( X,Y,Z, XX,YY,ZZ). . . . ',3i1,2x,3i1
974 . /10x,'SKEW NUMBER (LOCAL) . . . . .',i10,
975 . /10x,'NUMBER OF DEPENDENT NODES . .',i10,//)
976 1200 FORMAT(/10x,'RBE2 HIERARCHY LEVEL . . . . =',i5,2x,//)
977 1300 FORMAT(//
978 .' RIGID ELEMENT(RBE2) INDEPENDENT NODE MASSES AND INERTIA (NEW):'/
979 . ' --------------------------------------------------------- ')
980 1400 FORMAT(/10x,'NUMBER . . . . . . . . . . .',i10,/,
981 . /10x,'INDEPENDENT NODE NUMBER. . .',i10,
982 . /10x,'NEW MASS. . . . . . . . . . .',1pg20.13,
983 . /10x,'NEW SPHERIC INERTIA. . . . . ',1pg20.13,//)
984 1600 FORMAT(/10x,'NUMBER . . . . . . . . . . .',i10,/,
985 . /10x,'INDEPENDENT NODE NUMBER. . .',i10,
986 . /10x,'NEW MASS. . . . . . . . . . .',1pg20.13,//)
#define my_real
Definition cppsort.cpp:32
subroutine rbe2_merge(irbe2, lrbe2)
subroutine hierarbe2(irbe2, lrbe2)
subroutine reorbe2(irbe2, lrbe2, nc)
initmumps id
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)
Definition message.F:889
subroutine fretitl2(titr, iasc, l)
Definition freform.F:804

◆ rbe2_merge()

subroutine rbe2_merge ( integer, dimension(nrbe2l,*) irbe2,
integer, dimension(*) lrbe2 )

Definition at line 1335 of file hm_read_rbe2.F.

1336C-----------------------------------------------
1337C I m p l i c i t T y p e s
1338C-----------------------------------------------
1339#include "implicit_f.inc"
1340C-----------------------------------------------
1341C C o m m o n B l o c k s
1342C-----------------------------------------------
1343#include "com04_c.inc"
1344#include "param_c.inc"
1345C-----------------------------------------------
1346C D u m m y A r g u m e n t s
1347C-----------------------------------------------
1348 INTEGER IRBE2(NRBE2L,*), LRBE2(*)
1349C-----------------------------------------------
1350C L o c a l V a r i a b l e s
1351C-----------------------------------------------
1352 INTEGER I, N, K, NSL,NM, NI, NMT,M,IROT,ID,IMO,IC0,NZ,NSLN,NSLJ,
1353 . J, P,IAD,NS,NN,II,IT,IADS,IERR1,IAD1,IC,MJ,ICJ,NSJ,IADJ
1354C
1355 INTEGER ISAME
1356 INTEGER, DIMENSION(:), ALLOCATABLE :: ITAG
1357
1358C========================================================================|
1359C--------merging RBE2 w/ the same NS/M (separated IC)--------------------
1360 ALLOCATE(itag(numnod))
1361 itag(1:numnod)=0
1362C--------if same node as several IND. of /RBE2------------
1363 nz=0
1364 DO i=1,nrbe2
1365 iad = irbe2(1,i)
1366 nsl = irbe2(5,i)
1367 DO j =1,nsl
1368 ns = lrbe2(iad+j)
1369 IF (itag(ns)>0) nz = nz + 1
1370 itag(ns)=itag(ns)+1
1371 ENDDO
1372 ENDDO
1373 IF (nz==0) THEN
1374 DEALLOCATE(itag)
1375 RETURN
1376 ENDIF
1377C --------merge if same all excepting IC
1378 DO i=1,nrbe2
1379 iad = irbe2(1,i)
1380 nsl = irbe2(5,i)
1381 m = irbe2(3,i)
1382 IF (nsl==0) cycle
1383 DO ii=i+1,nrbe2
1384 iadj = irbe2(1,ii)
1385 nslj = irbe2(5,ii)
1386 mj = irbe2(3,ii)
1387 IF (mj/=m.OR.nslj/=nsl) cycle
1388 CALL same_nsn(nsl,lrbe2(iad+1),lrbe2(iadj+1),itag,isame)
1389 IF (isame==1) THEN
1390 CALL ic_mrg(ic,irbe2(4,i),irbe2(4,ii))
1391 irbe2(4,i) = ic
1392 irbe2(5,ii) = 0
1393 END IF
1394 ENDDO
1395 ENDDO
1396C
1397 DEALLOCATE(itag)
1398 RETURN
subroutine ic_mrg(ic_n, ic1, ic2)
subroutine same_nsn(nsl, lrbe2_1, lrbe2_2, itag, isame)

◆ reorbe2()

subroutine reorbe2 ( integer, dimension(nrbe2l,*) irbe2,
integer, dimension(*) lrbe2,
integer nc )

Definition at line 396 of file hm_read_rbe2.F.

397C-----------------------------------------------
398C I m p l i c i t T y p e s
399C-----------------------------------------------
400#include "implicit_f.inc"
401C-----------------------------------------------
402C C o m m o n B l o c k s
403C-----------------------------------------------
404#include "com04_c.inc"
405#include "param_c.inc"
406#include "tabsiz_c.inc"
407C-----------------------------------------------
408C D u m m y A r g u m e n t s
409C-----------------------------------------------
410 INTEGER IRBE2(NRBE2L,*), LRBE2(*),NC
411C-----------------------------------------------
412C L o c a l V a r i a b l e s
413C-----------------------------------------------
414 INTEGER I, N, K, NSL,NM, NI, NMT,M,IROT,ID,IMO,IC0,NZ,
415 . J, P,IAD,NS,NN,II,IT,IADS,IERR1,IAD1,IC,NIT,I0,I1
416C
417 INTEGER LCOPY(SLRBE2),ICOPY(NRBE2L,NRBE2),
418 . NHIE,IORDER(NRBE2),INDICE(NRBE2),ITAG1(NRBE2)
419 INTEGER, DIMENSION(:), ALLOCATABLE :: ITAG,IAD_N
420C========================================================================|
421C--------re-ordering if with hierarchy---------------------------------------
422 ALLOCATE(itag(numnod))
423 ALLOCATE(iad_n(numnod+1))
424 nc=0
425 DO i=1,numnod
426 itag(i)=0
427 ENDDO
428C--------if same node as several IND. of /RBE2---------------------------------------
429 nz=0
430 DO i=1,nrbe2
431 m = irbe2(3,i)
432 IF (itag(m)==0) THEN
433 itag(m)=i
434 ELSE
435 nz=nz+1
436 itag1(nz)=i
437 ENDIF
438 ENDDO
439 CALL setiadm(itag1,nz,iad_n,irbe2)
440C--------- if hierarchy
441 DO i=1,nrbe2
442 iad = irbe2(1,i)
443 m = irbe2(3,i)
444 nsl = irbe2(5,i)
445 DO j =1,nsl
446 ns = lrbe2(iad+j)
447 IF (itag(ns)>i) nc=nc+1
448 DO k=iad_n(ns),iad_n(ns+1)-1
449 IF (itag1(k)>i) nc=nc+1
450 ENDDO
451 ENDDO
452 ENDDO
453 IF (nc==0) RETURN
454C---------
455 DO i=1,nrbe2
456 iorder(i) = i
457 indice(i) = i
458 ENDDO
459 nc = 0
460C--------- ite=
461 ierr1 = 0
462 nit =5
463 DO it=1,nit
464 ii = nc
465 DO i=1,nrbe2
466 iad = irbe2(1,i)
467 m = irbe2(3,i)
468 nsl = irbe2(5,i)
469 DO j =1,nsl
470 ns = lrbe2(iad+j)
471 IF (itag(ns)==0) cycle
472 ic=indice(itag(ns))
473 i1=indice(i)
474C-----
475 IF (ic>i1) THEN
476 nc = nc+1
477C-------exchange IORDER(IC) & IORDER(I) --
478 i0 = iorder(i1)
479 iorder(i1) = iorder(ic)
480 iorder(ic) = i0
481 ic0 = indice(i)
482 indice(i) = ic
483 indice(itag(ns)) = i1
484 IF (it==nit) ierr1 = irbe2(2,i)
485 ENDIF
486 DO k=iad_n(ns),iad_n(ns+1)-1
487 ic=indice(itag1(k))
488 i1=indice(i)
489 IF (ic>i1) THEN
490 nc = nc+1
491C--exchange IORDER(IC) & IORDER(I) --
492 i0 = iorder(i1)
493 iorder(i1) = iorder(ic)
494 iorder(ic) = i0
495 indice(i) = ic
496 indice(itag1(k)) = i1
497 ENDIF
498 ENDDO
499 ENDDO
500 ENDDO
501 ii = nc -ii
502 IF (ii<=0) GOTO 100
503 ENDDO
504 100 CONTINUE
505C
506 IF (ierr1>0) nc=-ierr1
507C----------copy---
508 DO i=1,nrbe2
509 iad = irbe2(1,i)
510 m = irbe2(3,i)
511 nsl = irbe2(5,i)
512 DO j =1,nrbe2l
513 icopy(j,i) = irbe2(j,i)
514 ENDDO
515 DO j =1,nsl
516 lcopy(iad+j) = lrbe2(iad+j)
517 ENDDO
518 ENDDO
519C----------reodering---
520 iad1 = 0
521 DO n=1,nrbe2
522 i = iorder(n)
523 iad = icopy(1,i)
524 m = icopy(3,i)
525 nsl = icopy(5,i)
526 irbe2(1,n) = iad1
527 DO j =2,nrbe2l
528 irbe2(j,n) = icopy(j,i)
529 ENDDO
530 DO j =1,nsl
531 lrbe2(iad1+j)=lcopy(iad+j)
532 ENDDO
533 iad1 =iad1+nsl
534 ENDDO
535 DEALLOCATE(itag,iad_n)
536
537C
538 RETURN

◆ same_nsn()

subroutine same_nsn ( integer nsl,
integer, dimension(*) lrbe2_1,
integer, dimension(*) lrbe2_2,
integer, dimension(*) itag,
integer isame )

Definition at line 1405 of file hm_read_rbe2.F.

1406C-----------------------------------------------
1407C I m p l i c i t T y p e s
1408C-----------------------------------------------
1409#include "implicit_f.inc"
1410C-----------------------------------------------
1411C D u m m y A r g u m e n t s
1412C-----------------------------------------------
1413 INTEGER NSL,LRBE2_1(*) ,LRBE2_2(*),ITAG(*),ISAME
1414C-----------------------------------------------
1415C L o c a l V a r i a b l e s
1416C-----------------------------------------------
1417 INTEGER I,NS1,NS2
1418C========================================================================|
1419 isame=1
1420 DO i=1,nsl
1421 ns1=lrbe2_1(i)
1422 ns2=lrbe2_2(i)
1423 IF (ns1/=ns2.OR.itag(ns1)/=itag(ns2).OR.itag(ns1)<=1) THEN
1424 isame=0
1425 cycle
1426 END IF
1427 ENDDO
1428C
1429 RETURN

◆ seteloff2()

subroutine seteloff2 ( integer, dimension(nixs,*) ixs,
integer, dimension(nixc,*) ixc,
integer, dimension(nixt,*) ixt,
integer, dimension(nixp,*) ixp,
integer, dimension(nixr,*) ixr,
integer, dimension(nixtg,*) ixtg,
integer, dimension(nparg,*) iparg,
integer, dimension(*) isoloff,
integer, dimension(*) isheoff,
integer, dimension(*) itruoff,
integer, dimension(*) ipouoff,
integer, dimension(*) iresoff,
integer, dimension(*) itrioff,
integer, dimension(*) igrnrb2,
type (group_), dimension(ngrnod) igrnod,
integer, dimension(nrbe2l,*) irbe2 )

Definition at line 1074 of file hm_read_rbe2.F.

1078C-----------------------------------------------
1079C M o d u l e s
1080C-----------------------------------------------
1081 USE groupdef_mod
1082C-------------------------------------
1083C PRE LECTURE STRUCTURE RIGIDES POUR OPTIMIZATION
1084C-----------------------------------------------
1085C I m p l i c i t T y p e s
1086C-----------------------------------------------
1087#include "implicit_f.inc"
1088C-----------------------------------------------
1089C C o m m o n B l o c k s
1090C-----------------------------------------------
1091#include "com04_c.inc"
1092#include "units_c.inc"
1093#include "scr03_c.inc"
1094#include "param_c.inc"
1095C-----------------------------------------------
1096C D u m m y A r g u m e n t s
1097C-----------------------------------------------
1098 INTEGER ISOLOFF(*), ISHEOFF(*), ITRIOFF(*),ITRUOFF(*),
1099 . IPOUOFF(*), IRESOFF(*),
1100 . IXS(NIXS,*), IXC(NIXC,*), IXTG(NIXTG,*), IXT(NIXT,*),
1101 . IXP(NIXP,*), IXR(NIXR,*),
1102 . IPARG(NPARG,*),IGRNRB2(*),
1103 . IRBE2(NRBE2L,*)
1104C-----------------------------------------------
1105 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
1106C-----------------------------------------------
1107C L o c a l V a r i a b l e s
1108C-----------------------------------------------
1109 INTEGER NG, MLW, ITY, NEL, NFT, IAD, I, II, IGOF, NR, IG,
1110 . NSN, NALL, ISHFT, IOK, IRBYON,M,IC,IC0,
1111 . ITAG(NUMNOD)
1112C-----------------------
1113C MISE DE OFF A -OFF
1114C======================================================================|
1115 IF (nrbe2==0) RETURN
1116 IF(ipri>=5) THEN
1117 WRITE(iout,*)' '
1118
1119 WRITE(iout,*)' LIST OF DEACTIVATED ELEMENTS FROM RBE2'
1120 WRITE(iout,*)' ----------------------------------------------'
1121 END IF
1122C
1123 irbyon = 20
1124 ic0 = 7*512+7*64
1125C
1126 DO nr = 1, nrbe2
1127 ig = igrnrb2(nr)
1128 m = irbe2(3,nr)
1129 ic = irbe2(4,nr)
1130 IF(ig>0.AND.ic==ic0)THEN
1131 nsn = igrnod(ig)%NENTITY
1132 DO i=1,numnod
1133 itag(i)=0
1134 ENDDO
1135 itag(m)=1
1136 DO i=1,nsn
1137 itag(igrnod(ig)%ENTITY(i))=1
1138 END DO
1139C
1140 DO ii = 1, numelt
1141 nall = itag(ixt(2,ii)) * itag(ixt(3,ii))
1142 IF(nall/=0)THEN
1143 itruoff(ii) = irbyon
1144 END IF
1145 END DO
1146C
1147 DO ii = 1, numelp
1148 nall = itag(ixp(2,ii)) * itag(ixp(3,ii))
1149 IF(nall/=0)THEN
1150 ipouoff(ii) = irbyon
1151 END IF
1152 END DO
1153C
1154 DO ii = 1, numelr
1155 nall = itag(ixr(2,ii)) * itag(ixr(3,ii))
1156 IF(nall/=0)THEN
1157 iresoff(ii) = irbyon
1158 END IF
1159 END DO
1160 END IF
1161C
1162 END DO
1163C -----DEACTIVATED ELEMENTS will done in SETELOFF------
1164 RETURN

◆ setiadm()

subroutine setiadm ( integer, dimension(*) iadm,
integer nz,
integer, dimension(*) iad_n,
integer, dimension(nrbe2l,*) irbe2 )

Definition at line 546 of file hm_read_rbe2.F.

547C-----------------------------------------------
548C I m p l i c i t T y p e s
549C-----------------------------------------------
550#include "implicit_f.inc"
551C-----------------------------------------------
552C C o m m o n B l o c k s
553C-----------------------------------------------
554#include "com04_c.inc"
555#include "param_c.inc"
556C-----------------------------------------------
557C D u m m y A r g u m e n t s
558C-----------------------------------------------
559 INTEGER IRBE2(NRBE2L,*), IADM(*),NZ,IAD_N(*)
560C-----------------------------------------------
561C L o c a l V a r i a b l e s
562C-----------------------------------------------
563 INTEGER I, N, NM,NS,J,NSL,IAD,M
564C
565 INTEGER IADM_CP(NZ)
566 INTEGER, DIMENSION(:), ALLOCATABLE :: ITAG
567C========================================================================|
568 ALLOCATE(itag(numnod))
569C========================================================================|
570 DO i=1,numnod
571 itag(i)=0
572 ENDDO
573 DO j=1,nz
574 i = iadm(j)
575 m = irbe2(3,i)
576 itag(m)=itag(m)+1
577 ENDDO
578 nm =0
579 iad_n(1)=1
580 DO n=1,numnod
581 IF (itag(n)>0) THEN
582 DO j=1,nz
583 i = iadm(j)
584 m = irbe2(3,i)
585 IF (m==n) THEN
586 nm=nm+1
587 iadm_cp(nm)=i
588 ENDIF
589 END DO
590 ENDIF
591 iad_n(n+1)=nm+1
592 ENDDO
593 DO j=1,nz
594 iadm(j)=iadm_cp(j)
595 ENDDO
596 DEALLOCATE(itag)
597C
598 RETURN

◆ setrb2on()

subroutine setrb2on ( integer, dimension(nixs,*) ixs,
integer, dimension(nixc,*) ixc,
integer, dimension(nixtg,*) ixtg,
type (group_), dimension(ngrnod) igrnod,
integer, dimension(*) igrnrb2,
integer, dimension(*) isoloff,
integer, dimension(*) isheoff,
integer, dimension(*) itrioff,
integer, dimension(*) itabm1,
type(submodel_data), dimension(*), intent(in) lsubmodel )

Definition at line 1181 of file hm_read_rbe2.F.

1184C-----------------------------------------------
1185C M o d u l e s
1186C-----------------------------------------------
1187 USE groupdef_mod
1189 USE submodel_mod
1190 USE names_and_titles_mod , ONLY : nchartitle
1191C-------------------------------------
1192C PRE LECTURE STRUCTURE RIGIDES POUR OPTIMIZATION
1193C-----------------------------------------------
1194C I m p l i c i t T y p e s
1195C-----------------------------------------------
1196#include "implicit_f.inc"
1197C-----------------------------------------------
1198C C o m m o n B l o c k s
1199C-----------------------------------------------
1200#include "com04_c.inc"
1201C-----------------------------------------------
1202C D u m m y A r g u m e n t s
1203C-----------------------------------------------
1204 INTEGER IGRNRB2(*),ISOLOFF(*),ISHEOFF(*),ITRIOFF(*),
1205 . IXS(NIXS,*), IXC(NIXC,*), IXTG(NIXTG,*),ITABM1(*)
1206C-----------------------------------------------
1207 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
1208 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
1209C-----------------------------------------------
1210C L o c a l V a r i a b l e s
1211C-----------------------------------------------
1212 INTEGER NR, IDUM, I, L, ISENS, IGS,NSN,IAD,II,NALL,
1213 . IGU,ID,ILAGM,ISU,UID,IRBYON,
1214 . ITAG(NUMNOD),NN,NM, NUSER, NUM,M,J6(6),IC
1215 CHARACTER(LEN=NCHARTITLE) :: TITR
1216 CHARACTER :: MESS*40
1217 INTEGER NGR2USRN
1218 LOGICAL IS_AVAILABLE
1219C-----------------------------------------------
1220C E x t e r n a l F u n c t i o n s
1221C-----------------------------------------------
1222 INTEGER USR2SYS,NODGRNR,NGR2USR
1223C-----------------------------------
1224 IF (nrbe2==0) RETURN
1225C
1226 CALL hm_option_start('/RBE2')
1227 irbyon = 20
1228 DO nr=1,nrbe2
1229 igrnrb2(nr)=0
1230 CALL hm_option_read_key(lsubmodel,
1231 . option_id = nuser,
1232 . option_titr = titr)
1233C
1234 CALL hm_get_intv('independentnode',nm,is_available,lsubmodel)
1235 CALL hm_get_intv('VX',j6(1),is_available,lsubmodel)
1236 CALL hm_get_intv('VY',j6(2),is_available,lsubmodel)
1237 CALL hm_get_intv('VZ',j6(3),is_available,lsubmodel)
1238 CALL hm_get_intv('WX',j6(4),is_available,lsubmodel)
1239 CALL hm_get_intv('WY',j6(5),is_available,lsubmodel)
1240 CALL hm_get_intv('WZ',j6(6),is_available,lsubmodel)
1241 CALL hm_get_intv('dependentnodeset',igu,is_available,lsubmodel)
1242C
1243 m = usr2sys(nm,itabm1,mess,nuser)
1244 igs = ngr2usrn(igu,igrnod,ngrnod,nn)
1245 ic= j6(1)+j6(2)+j6(3)+j6(4)+j6(5)+j6(6)
1246C
1247 IF(igs/=0.AND.(ic==0.OR.ic==6)) THEN
1248C
1249 DO i=1,numnod
1250 itag(i)=0
1251 ENDDO
1252 igrnrb2(nr)=igs
1253 nsn = igrnod(igs)%NENTITY
1254 itag(m)=1
1255 DO i=1,nsn
1256 itag(igrnod(igs)%ENTITY(i))=1
1257 END DO
1258C
1259 DO ii = 1, numelc
1260 nall = itag(ixc(2,ii)) * itag(ixc(3,ii)) *
1261 + itag(ixc(4,ii)) * itag(ixc(5,ii))
1262 IF(nall/=0)THEN
1263 isheoff(ii) = irbyon
1264 END IF
1265 END DO
1266C
1267 DO ii = 1, numeltg
1268 nall = itag(ixtg(2,ii)) * itag(ixtg(3,ii)) *
1269 + itag(ixtg(4,ii))
1270 IF(nall/=0)THEN
1271 itrioff(ii) = irbyon
1272 END IF
1273 END DO
1274 END IF
1275C
1276 END DO
1277C------------solid elements
1278C
1279 CALL hm_option_start('/RBE2')
1280 DO nr=1,nrbe2
1281 igrnrb2(nr)=0
1282 CALL hm_option_read_key(lsubmodel,
1283 . option_id = nuser,
1284 . option_titr = titr)
1285C
1286 CALL hm_get_intv('independentnode',nm,is_available,lsubmodel)
1287 CALL hm_get_intv('VX',j6(1),is_available,lsubmodel)
1288 CALL hm_get_intv('VY',j6(2),is_available,lsubmodel)
1289 CALL hm_get_intv('VZ',j6(3),is_available,lsubmodel)
1290 CALL hm_get_intv('WX',j6(4),is_available,lsubmodel)
1291 CALL hm_get_intv('WY',j6(5),is_available,lsubmodel)
1292 CALL hm_get_intv('WZ',j6(6),is_available,lsubmodel)
1293 CALL hm_get_intv('dependentnodeset',igu,is_available,lsubmodel)
1294C
1295 m = usr2sys(nm,itabm1,mess,nuser)
1296 igs = ngr2usrn(igu,igrnod,ngrnod,nn)
1297 ic= j6(1)+j6(2)+j6(3)
1298C
1299 IF(igs/=0.AND.(ic==0.OR.ic==3)) THEN
1300C
1301 DO i=1,numnod
1302 itag(i)=0
1303 ENDDO
1304 igrnrb2(nr)=igs
1305 nsn = igrnod(igs)%NENTITY
1306 itag(m)=1
1307 DO i=1,nsn
1308 itag(igrnod(igs)%ENTITY(i))=1
1309 END DO
1310C
1311 DO ii = 1, numels
1312 nall = itag(ixs(2,ii)) * itag(ixs(3,ii)) *
1313 + itag(ixs(4,ii)) * itag(ixs(5,ii)) *
1314 + itag(ixs(6,ii)) * itag(ixs(7,ii)) *
1315 + itag(ixs(8,ii)) * itag(ixs(9,ii))
1316 IF(nall/=0)THEN
1317 isoloff(ii) = irbyon
1318 END IF
1319 END DO
1320 END IF
1321C
1322 END DO
1323C
1324 RETURN
integer function ngr2usrn(iu, igrnod, ngrnod, num)
Definition nintrr.F:407
integer function usr2sys(iu, itabm1, mess, id)
Definition sysfus.F:160