OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ininode_rm.F File Reference
#include "implicit_f.inc"
#include "com04_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine ininode_rm (connec, irig_node, irby, sln, nrb, nrsln, stifn, stifr, rmstifn, rmstifr, numel, ner)

Function/Subroutine Documentation

◆ ininode_rm()

subroutine ininode_rm ( integer, dimension(numel,*) connec,
integer, dimension(*) irig_node,
integer, dimension(*) irby,
integer, dimension(*) sln,
integer nrb,
integer nrsln,
stifn,
stifr,
rmstifn,
rmstifr,
integer numel,
integer ner )

Definition at line 28 of file ininode_rm.F.

31C=======================================================================
32C EN SORTIE
33C IRBY Rigid node
34C SLN secnd node number by rigid material
35C-----------------------------------------------
36C I m p l i c i t T y p e s
37C-----------------------------------------------
38#include "implicit_f.inc"
39C-----------------------------------------------
40C A n a l y s e M o d u l e
41C-----------------------------------------------
42#include "com04_c.inc"
43C-----------------------------------------------
44C D u m m y A r g u m e n t s
45C-----------------------------------------------
46 INTEGER IRBY(*),SLN(*),NRSLN,NRB,NUMEL,NER
47 INTEGER RBYID,IRIG_NODE(*),CONNEC(NUMEL,*)
49 . stifn(*),stifr(*),rmstifn(*), rmstifr(*)
50C-----------------------------------------------
51C L o c a l V a r i a b l e s
52C-----------------------------------------------
53 INTEGER I,J,II,JJ,NR,NR1,NR0,KK,NRC,IR,N,NREST,IE,
54 . NER1,NER0,IEL
55C REAL
56
57 INTEGER, DIMENSION(:), ALLOCATABLE ::
58 . IRN,INDX,INDX0,ITAG,IRE,
59 . INDXE, INDXE0, ITAGE
60C
61C construction des materiaux rigides
62C
63 ALLOCATE (irn(numnod))
64 irn = 0
65 nr = 0
66 nrsln =0
67 DO i = 1, numnod
68 IF(irig_node(i) > 0) THEN
69 nr = nr + 1
70 irn(nr)= i
71 ENDIF
72 ENDDO
73C
74C allocation de tableau de travail
75C
76 ALLOCATE (indx(nr),indx0(nr),itag(numnod))
77 ALLOCATE (indxe(ner),indxe0(ner),itage(ner))
78C initialisation
79 itag = 0
80 itage = 0
81 indx = 0
82 indx0 = 0
83 indxe = 0
84 indxe0 = 0
85C
86 nr1 = 0
87 nrb = 1
88 itage(1) = nrb
89 indxe(1) = 1
90C
91 DO j=1,10
92 ie = indxe(1)
93 ii = connec(ie,j)
94 IF(ii > 0 ) THEN
95 itag(ii) = nrb
96 nr1 = nr1 + 1
97 indx(nr1) = ii
98 ENDIF
99 ENDDO
100C
101 nrest = nr - nr1
102 ner1 = 0
103
104 DO i=2,ner
105 ner1 = ner1 + 1
106 indxe(ner1) = i
107 ENDDO
108c NRC = NR1
109 kk = 0
110 DO WHILE(nrest > 0 )
111 nr0 = 0
112 ner0 = 0
113 DO i=1,nr1
114 ii = indx(i)
115 DO ie =1 , ner1
116 iel = indxe(ie)
117 IF(itage(iel) == 0) THEN
118 DO j=1,10
119 IF(ii == connec(iel, j)) THEN
120 ner0 = ner0 + 1
121 indxe0(ner0) = iel
122 itage(iel) = nrb
123 ENDIF
124 ENDDO
125 ENDIF
126 ENDDO
127 ENDDO
128 nr1 = 0
129 IF(ner0 > 0) THEN
130 DO i=1,ner0
131 iel = indxe0(i)
132 DO j=1,10
133 ii= connec(iel,j)
134 IF(ii > 0) THEN
135 IF(itag(ii) == 0)THEN
136 itag(ii) = nrb
137 nr1 = nr1 + 1
138 indx(nr1) = ii
139 END IF
140 ENDIF
141 ENDDO
142 ENDDO
143 IF(nr1 > 0) THEN
144C nbre d'element restant
145 ner0 = 0
146 DO ie = 1, ner1
147 iel = indxe(ie)
148 IF(itage(iel) == 0) THEN
149 ner0 = ner0 + 1
150 indxe0(ner0) = iel
151 ENDIF
152 ENDDO
153 ner1 = ner0
154 DO i=1,ner0
155 indxe(i) = indxe0(i)
156 ENDDO
157C noeud restant
158 nrest = nrest - nr1
159 ELSE
160 nrb = nrb + 1
161 ner0 = 0
162 DO ie =1 , ner1
163 iel = indxe(ie)
164 IF(itage(iel) == 0) THEN
165 ner0 = ner0 + 1
166 indxe0(ner0) = iel
167 ENDIF
168 ENDDO
169C creation d'un autre corps rigid
170 ner1 = ner0
171 DO i=1,ner1
172 indxe(i) = indxe0(i)
173 ENDDO
174C
175 iel = indxe(1)
176 nr1 = 0
177 DO j=1,10
178 iel = indxe(1)
179 ii = connec(iel,j)
180 itage(iel) = nrb
181 IF(ii > 0 ) THEN
182 itag(ii) = nrb
183 nr1 = nr1 + 1
184 indx(nr1) = ii
185 ENDIF
186 ENDDO
187C
188 nrest = nrest - nr1
189 ENDIF
190 ELSE
191 nrb = nrb + 1
192C creation d'un autre corps rigid
193 ner0 = 0
194 DO ie =1 , ner1
195 iel = indxe(ie)
196 IF(itage(iel) == 0) THEN
197 ner0 = ner0 + 1
198 indxe0(ner0) = iel
199 ENDIF
200 ENDDO
201C creation d'un autre corps rigid
202 ner1 = ner0
203 DO i=1,ner1
204 indxe(i) = indxe0(i)
205 ENDDO
206 iel = indxe(1)
207 itage(iel) = nrb
208 nr1 = 0
209 DO j=1,10
210cc IEL = INDXE(1)
211 ii = connec(iel,j)
212 IF(ii > 0 ) THEN
213 itag(ii) = nrb
214 nr1 = nr1 + 1
215 indx(nr1) = ii
216 ENDIF
217 ENDDO
218C
219 nrest = nrest - nr1
220 ENDIF
221 ENDDO
222C
223C creation des corps rigide
224C
225 kk = 0
226 DO ir =1,nrb
227 ii = 0
228 DO i=1,nr
229 n = irn(i)
230 IF(itag(n) == ir) THEN
231 ii = ii + 1
232 irby(ii + kk) = n
233 rmstifn(ii + kk) = stifn(n)
234 rmstifr(ii + kk) = stifr(n)
235 stifn(n) = em20
236 stifr(n) = em20
237 ENDIF
238 ENDDO
239 sln(ir) = ii
240 kk = kk + ii
241 nrsln = nrsln + ii
242 ENDDO
243C
244 DEALLOCATE(itag,irn,indx,indx0)
245 DEALLOCATE(indxe,indxe0,itage)
246 RETURN
#define my_real
Definition cppsort.cpp:32