OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
assem_int.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| assem_int ../engine/source/implicit/assem_int.F
25!||--- called by ------------------------------------------------------
26!|| i10ke3 ../engine/source/interfaces/int10/i10ke3.F
27!|| i24ke3 ../engine/source/interfaces/int24/i24ke3.F
28!|| i5ke3 ../engine/source/interfaces/inter3d/i5ke3.F
29!|| i7ke3 ../engine/source/interfaces/int07/i7ke3.F
30!||--- calls -----------------------------------------------------
31!|| assem_kii ../engine/source/implicit/imp_glob_k.F
32!|| assem_kij ../engine/source/implicit/imp_glob_k.F
33!||====================================================================
34 SUBROUTINE assem_int(ND ,NS ,N1 ,N2 ,N3 ,
35 1 N4 ,NEL ,IDDL ,K_DIAG ,K_LT ,
36 2 IADK ,JDIK ,KI11 ,KI12 ,KJ11 ,
37 3 KJ12 ,KK11 ,KK12 ,KL11 ,KL12 ,
38 4 OFF )
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43C-----------------------------------------------
44C D u m m y A r g u m e n t s
45C-----------------------------------------------
46 INTEGER ND ,NS(*) ,N1(*) ,N2(*) ,N3(*),N4(*)
47 INTEGER
48 . NEL ,IDDL(*) ,IADK(*) ,JDIK(*)
49C REAL
51 . k_diag(*) ,k_lt(*) ,off(*),
52 . ki11(nd,nd,*),ki12(nd,nd,*),kj11(nd,nd,*),kj12(nd,nd,*),
53 . kk11(nd,nd,*),kk12(nd,nd,*),kl11(nd,nd,*),kl12(nd,nd,*)
54C-----------------------------------------------
55C L o c a l V a r i a b l e s
56C-----------------------------------------------
57C
58C-------NS,N1----
59 CALL assem_kii(ns,nel,iddl,iadk,k_diag,k_lt ,ki11,nd,off)
60 CALL assem_kii(n1,nel,iddl,iadk,k_diag,k_lt ,ki11,nd,off)
61 CALL assem_kij(ns,n1,nel,iddl,iadk,jdik,
62 . k_diag,k_lt,ki12,nd,off)
63C-------NS,N2----
64 CALL assem_kii(ns,nel,iddl,iadk,k_diag,k_lt ,kj11,nd,off)
65 CALL assem_kii(n2,nel,iddl,iadk,k_diag,k_lt ,kj11,nd,off)
66 CALL assem_kij(ns,n2,nel,iddl,iadk,jdik,
67 . k_diag,k_lt,kj12,nd,off)
68C-------NS,N3----
69 CALL assem_kii(ns,nel,iddl,iadk,k_diag,k_lt ,kk11,nd,off)
70 CALL assem_kii(n3,nel,iddl,iadk,k_diag,k_lt ,kk11,nd,off)
71 CALL assem_kij(ns,n3,nel,iddl,iadk,jdik,
72 . k_diag,k_lt,kk12,nd,off)
73C-------NS,N4----
74 CALL assem_kii(ns,nel,iddl,iadk,k_diag,k_lt ,kl11,nd,off)
75 CALL assem_kii(n4,nel,iddl,iadk,k_diag,k_lt ,kl11,nd,off)
76 CALL assem_kij(ns,n4,nel,iddl,iadk,jdik,
77 . k_diag,k_lt,kl12,nd,off)
78C----6---------------------------------------------------------------7---------8
79 RETURN
80 END
81!||====================================================================
82!|| ass_spmd ../engine/source/implicit/assem_int.F
83!||--- called by ------------------------------------------------------
84!|| i10ke3 ../engine/source/interfaces/int10/i10ke3.F
85!|| i24ke3 ../engine/source/interfaces/int24/i24ke3.F
86!|| i7ke3 ../engine/source/interfaces/int07/i7ke3.F
87!||--- calls -----------------------------------------------------
88!|| assem_kii ../engine/source/implicit/imp_glob_k.F
89!|| assfr_kij ../engine/source/mpi/implicit/imp_fri.F
90!||--- uses -----------------------------------------------------
91!|| imp_intm ../engine/share/modules/imp_intm.f
92!||====================================================================
93 SUBROUTINE ass_spmd(ND ,NS ,N1 ,N2 ,N3 ,
94 1 N4 ,NEL ,IDDL ,K_DIAG ,K_LT ,
95 2 IADK ,JDIK ,KI11 ,KI12 ,KJ11 ,
96 3 KJ12 ,KK11 ,KK12 ,KL11 ,KL12 ,
97 4 OFF ,NIN )
98C-----------------------------------------------
99C M o d u l e s
100C-----------------------------------------------
101 USE imp_intm
102C-----------------------------------------------
103C I m p l i c i t T y p e s
104C-----------------------------------------------
105#include "implicit_f.inc"
106C-----------------------------------------------
107C D u m m y A r g u m e n t s
108C-----------------------------------------------
109 INTEGER ND ,NS(*) ,N1(*) ,N2(*) ,N3(*),N4(*)
110 INTEGER
111 . NEL ,IDDL(*) ,IADK(*) ,JDIK(*),NIN
112C REAL
113 my_real
114 . K_DIAG(*) ,K_LT(*) ,OFF(*),
115 . KI11(ND,ND,*),KI12(ND,ND,*),KJ11(ND,ND,*),KJ12(ND,ND,*),
116 . KK11(ND,ND,*),KK12(ND,ND,*),KL11(ND,ND,*),KL12(ND,ND,*)
117C-----------------------------------------------
118C L o c a l V a r i a b l e s
119C-----------------------------------------------
120 INTEGER
121 . i,nindex,index(nel),j,k,nn,idi,idj
122C
123 nindex=0
124 DO i=1,nel
125 IF (ns(i)>0) THEN
126 nindex=nindex+1
127 index(nindex)=i
128 ELSE
129C--------spmd--secnd remote--Kss->(tempo)FFI,DFI, Diag_Kmm->Diag_I[KI 0]
130c------------------------------------------------------------------[0 Dm]-
131 CALL assem_kii(n1(i),1,iddl,iadk,k_diag,k_lt ,ki11(1,1,i),
132 . nd ,off(i))
133 CALL assem_kii(n2(i),1,iddl,iadk,k_diag,k_lt ,kj11(1,1,i),
134 . nd ,off(i))
135 CALL assem_kii(n3(i),1,iddl,iadk,k_diag,k_lt ,kk11(1,1,i),
136 . nd ,off(i))
137 CALL assem_kii(n4(i),1,iddl,iadk,k_diag,k_lt ,kl11(1,1,i),
138 . nd ,off(i))
139 nn=ind_int(nin)%P(-ns(i))
140 DO j=1,nd
141 ffi(j,nn)=ffi(j,nn) +
142 . ki11(j,j,i)+kj11(j,j,i)+kk11(j,j,i)+kl11(j,j,i)
143 ENDDO
144 dfi(1,nn)=dfi(1,nn) +
145 . ki11(1,2,i)+kj11(1,2,i)+kk11(1,2,i)+kl11(1,2,i)
146 dfi(2,nn)=dfi(2,nn) +
147 . ki11(1,3,i)+kj11(1,3,i)+kk11(1,3,i)+kl11(1,3,i)
148 dfi(3,nn)=dfi(3,nn) +
149 . ki11(2,3,i)+kj11(2,3,i)+kk11(2,3,i)+kl11(2,3,i)
150 IF (intp_d>0) THEN
151C-------NS,N1----
152 idi = iddl_si(nn)
153 idj = iddl(n1(i))
154 CALL assfr_kij(idi ,idj ,iad_si ,jdi_si,lt_si ,
155 1 ki12(1,1,i),nd )
156 idj = iddl(n2(i))
157 CALL assfr_kij(idi ,idj ,iad_si ,jdi_si,lt_si ,
158 1 kj12(1,1,i),nd )
159 idj = iddl(n3(i))
160 CALL assfr_kij(idi ,idj ,iad_si ,jdi_si,lt_si ,
161 1 kk12(1,1,i),nd )
162 idj = iddl(n4(i))
163 CALL assfr_kij(idi ,idj ,iad_si ,jdi_si,lt_si ,
164 1 kl12(1,1,i),nd )
165 ENDIF
166 ENDIF
167 ENDDO
168 IF (nindex<nel) THEN
169 DO i=1,nindex
170 n1(i)= n1(index(i))
171 n2(i)= n2(index(i))
172 n3(i)= n3(index(i))
173 n4(i)= n4(index(i))
174 ns(i)= ns(index(i))
175 off(i)= off(index(i))
176 DO j=1,nd
177 DO k=j,nd
178 ki11(j,k,i)=ki11(j,k,index(i))
179 kj11(j,k,i)=kj11(j,k,index(i))
180 kk11(j,k,i)=kk11(j,k,index(i))
181 kl11(j,k,i)=kl11(j,k,index(i))
182 ENDDO
183 DO k=1,nd
184 ki12(j,k,i)=ki12(j,k,index(i))
185 kj12(j,k,i)=kj12(j,k,index(i))
186 kk12(j,k,i)=kk12(j,k,index(i))
187 kl12(j,k,i)=kl12(j,k,index(i))
188 ENDDO
189 ENDDO
190 ENDDO
191 ENDIF
192 nel=nindex
193C
194C----6---------------------------------------------------------------7---------8
195 RETURN
196 END
197!||====================================================================
198!|| assem_int11 ../engine/source/implicit/assem_int.F
199!||--- called by ------------------------------------------------------
200!|| i11ke3 ../engine/source/interfaces/int11/i11ke3.F
201!||--- calls -----------------------------------------------------
202!|| assem_kii ../engine/source/implicit/imp_glob_k.F
203!|| assem_kij ../engine/source/implicit/imp_glob_k.f
204!||====================================================================
205 SUBROUTINE assem_int11(ND ,N1 ,N2 ,M1 ,
206 1 M2 ,NEL ,IDDL ,K_DIAG ,K_LT ,
207 2 IADK ,JDIK ,K1I11 ,K1I12 ,K1J11 ,
208 9 K1J12 ,K2I11 ,K2I12 ,K2J11 ,K2J12 ,
209 4 OFF )
210C----6------------------------------------------
211C I m p l i c i t T y p e s
212C-----------------------------------------------
213#include "implicit_f.inc"
214C-----------------------------------------------
215C D u m m y A r g u m e n t s
216C-----------------------------------------------
217 INTEGER ND ,N1(*) ,N2(*) ,M1(*) ,M2(*)
218 INTEGER
219 . NEL ,IDDL(*) ,IADK(*) ,JDIK(*)
220C REAL
221 my_real
222 . K_DIAG(*) ,K_LT(*) ,OFF(*),
223 . K1I11(ND,ND,*),K1I12(ND,ND,*),K1J11(ND,ND,*),K1J12(ND,ND,*),
224 . K2I11(ND,ND,*),K2I12(ND,ND,*),K2J11(ND,ND,*),K2J12(ND,ND,*)
225C-----------------------------------------------
226C L o c a l V a r i a b l e s
227C-----------------------------------------------
228C
229C-------N1,M1----
230 CALL assem_kii(n1,nel,iddl,iadk,k_diag,k_lt ,k1i11,nd,off)
231 CALL assem_kii(m1,nel,iddl,iadk,k_diag,k_lt ,k1i11,nd,off)
232 CALL assem_kij(n1,m1,nel,iddl,iadk,jdik,
233 . k_diag,k_lt,k1i12,nd,off)
234C-------N1,M2----
235 CALL assem_kii(n1,nel,iddl,iadk,k_diag,k_lt ,k1j11,nd,off)
236 CALL assem_kii(m2,nel,iddl,iadk,k_diag,k_lt ,k1j11,nd,off)
237 CALL assem_kij(n1,m2,nel,iddl,iadk,jdik,
238 . k_diag,k_lt,k1j12,nd,off)
239C-------N2,M1----
240 CALL assem_kii(n2,nel,iddl,iadk,k_diag,k_lt ,k2i11,nd,off)
241 CALL assem_kii(m1,nel,iddl,iadk,k_diag,k_lt ,k2i11,nd,off)
242 CALL assem_kij(n2,m1,nel,iddl,iadk,jdik,
243 . k_diag,k_lt,k2i12,nd,off)
244C-------N2,M2----
245 CALL assem_kii(n2,nel,iddl,iadk,k_diag,k_lt ,k2j11,nd,off)
246 CALL assem_kii(m2,nel,iddl,iadk,k_diag,k_lt ,k2j11,nd,off)
247 CALL assem_kij(n2,m2,nel,iddl,iadk,jdik,
248 . k_diag,k_lt,k2j12,nd,off)
249C----6---------------------------------------------------------------7---------8
250 RETURN
251 END
252!||====================================================================
253!|| ass_spmd11 ../engine/source/implicit/assem_int.F
254!||--- called by ------------------------------------------------------
255!|| i11ke3 ../engine/source/interfaces/int11/i11ke3.F
256!||--- calls -----------------------------------------------------
257!|| assem_kii ../engine/source/implicit/imp_glob_k.F
258!|| assfr_kij ../engine/source/mpi/implicit/imp_fri.F
259!||--- uses -----------------------------------------------------
260!|| imp_intm ../engine/share/modules/imp_intm.F
261!||====================================================================
262 SUBROUTINE ass_spmd11(ND ,N1 ,N2 ,M1 ,
263 1 M2 ,NEL ,IDDL ,K_DIAG ,K_LT ,
264 2 IADK ,JDIK ,K1I11 ,K1I12 ,K1J11 ,
265 9 K1J12 ,K2I11 ,K2I12 ,K2J11 ,K2J12 ,
266 4 OFF ,NIN ,NS ,NRTS )
267C-----------------------------------------------
268C M o d u l e s
269C-----------------------------------------------
270 USE imp_intm
271C-----------------------------------------------
272C I m p l i c i t T y p e s
273C-----------------------------------------------
274#include "implicit_f.inc"
275C-----------------------------------------------
276C D u m m y A r g u m e n t s
277C-----------------------------------------------
278 INTEGER ND ,N1(*) ,N2(*) ,M1(*),M2(*) ,NS(*) ,NRTS
279 INTEGER
280 . NEL ,IDDL(*) ,IADK(*) ,JDIK(*),NIN
281C REAL
282 my_real
283 . K_DIAG(*) ,K_LT(*) ,OFF(*),
284 . K1I11(ND,ND,*),K1I12(ND,ND,*),K1J11(ND,ND,*),K1J12(ND,ND,*),
285 . K2I11(ND,ND,*),K2I12(ND,ND,*),K2J11(ND,ND,*),K2J12(ND,ND,*)
286C-----------------------------------------------
287C L o c a l V a r i a b l e s
288C-----------------------------------------------
289 INTEGER
290 . I,NINDEX,INDEX(NEL),J,K,NN1,NN2,NN,IDI,IDJ
291C
292 NINDEX=0
293 do i=1,nel
294 IF (ns(i)<=nrts) THEN
295 nindex=nindex+1
296 index(nindex)=i
297 ELSE
298C--------spmd--secnd remote--Kss->(tempo)FFI,DFI, Diag_Kmm->Diag_I[KI 0]
299c------------------------------------------------------------------[0 Dm]-
300 CALL assem_kii(m1(i),1,iddl,iadk,k_diag,k_lt ,k1i11(1,1,i),
301 . nd ,off(i))
302 CALL assem_kii(m2(i),1,iddl,iadk,k_diag,k_lt ,k1j11(1,1,i),
303 . nd ,off(i))
304 CALL assem_kii(m1(i),1,iddl,iadk,k_diag,k_lt ,k2i11(1,1,i),
305 . nd ,off(i))
306 CALL assem_kii(m2(i),1,iddl,iadk,k_diag,k_lt ,k2j11(1,1,i),
307 . nd ,off(i))
308 nn = ns(i)-nrts
309 nn1=ind_int(nin)%P(nn)
310 nn2=nn1+1
311 DO j=1,nd
312 ffi(j,nn1)=ffi(j,nn1) + k1i11(j,j,i)+k1j11(j,j,i)
313 ffi(j,nn2)=ffi(j,nn2) + k2i11(j,j,i)+k2j11(j,j,i)
314 ENDDO
315 dfi(1,nn1)=dfi(1,nn1) +k1i11(1,2,i)+k1j11(1,2,i)
316 dfi(2,nn1)=dfi(2,nn1) +k1i11(1,3,i)+k1j11(1,3,i)
317 dfi(3,nn1)=dfi(3,nn1) +k1i11(2,3,i)+k1j11(2,3,i)
318 dfi(1,nn2)=dfi(1,nn2) +k2i11(1,2,i)+k2j11(1,2,i)
319 dfi(2,nn2)=dfi(2,nn2) +k2i11(1,3,i)+k2j11(1,3,i)
320 dfi(3,nn2)=dfi(3,nn2) +k2i11(2,3,i)+k2j11(2,3,i)
321 IF (intp_d>0) THEN
322 idi = iddl_si(nn1)
323 idj = iddl(m1(i))
324 CALL assfr_kij(idi ,idj ,iad_si ,jdi_si,lt_si ,
325 1 k1i12(1,1,i),nd )
326 idj = iddl(m2(i))
327 CALL assfr_kij(idi ,idj ,iad_si ,jdi_si,lt_si ,
328 1 k1j12(1,1,i),nd )
329 idi = iddl_si(nn2)
330 CALL assfr_kij(idi ,idj ,iad_si ,jdi_si,lt_si ,
331 1 k2j12(1,1,i),nd )
332 idj = iddl(m1(i))
333 CALL assfr_kij(idi ,idj ,iad_si ,jdi_si,lt_si ,
334 1 k2i12(1,1,i),nd )
335 ENDIF
336 ENDIF
337 ENDDO
338 IF (nindex<nel) THEN
339 DO i=1,nindex
340 n1(i)= n1(index(i))
341 n2(i)= n2(index(i))
342 m1(i)= m1(index(i))
343 m2(i)= m2(index(i))
344 ns(i)= ns(index(i))
345 off(i)= off(index(i))
346 DO j=1,nd
347 DO k=j,nd
348 k1i11(j,k,i)=k1i11(j,k,index(i))
349 k1j11(j,k,i)=k1j11(j,k,index(i))
350 k2i11(j,k,i)=k2i11(j,k,index(i))
351 k2j11(j,k,i)=k2j11(j,k,index(i))
352 ENDDO
353 DO k=1,nd
354 k1i12(j,k,i)=k1i12(j,k,index(i))
355 k1j12(j,k,i)=k1j12(j,k,index(i))
356 k2i12(j,k,i)=k2i12(j,k,index(i))
357 k2j12(j,k,i)=k2j12(j,k,index(i))
358 ENDDO
359 ENDDO
360 ENDDO
361 ENDIF
362 nel=nindex
363C
364C----6---------------------------------------------------------------7---------8
365 RETURN
366 END
subroutine ass_spmd(nd, ns, n1, n2, n3, n4, nel, iddl, k_diag, k_lt, iadk, jdik, ki11, ki12, kj11, kj12, kk11, kk12, kl11, kl12, off, nin)
Definition assem_int.F:98
subroutine ass_spmd11(nd, n1, n2, m1, m2, nel, iddl, k_diag, k_lt, iadk, jdik, k1i11, k1i12, k1j11, k1j12, k2i11, k2i12, k2j11, k2j12, off, nin, ns, nrts)
Definition assem_int.F:267
subroutine assem_int(nd, ns, n1, n2, n3, n4, nel, iddl, k_diag, k_lt, iadk, jdik, ki11, ki12, kj11, kj12, kk11, kk12, kl11, kl12, off)
Definition assem_int.F:39
subroutine assem_int11(nd, n1, n2, m1, m2, nel, iddl, k_diag, k_lt, iadk, jdik, k1i11, k1i12, k1j11, k1j12, k2i11, k2i12, k2j11, k2j12, off)
Definition assem_int.F:210
#define my_real
Definition cppsort.cpp:32
subroutine assfr_kij(id, jd, iadk, jdik, k_lt, kij, nd)
Definition imp_fri.F:6408
subroutine assem_kii(ni, nel, iddl, iadk, k_diag, k_lt, kii, nd, off)
Definition imp_glob_k.F:962
subroutine assem_kij(ni, nj, nel, iddl, iadk, jdik, k_diag, k_lt, kij, nd, off)
subroutine imp_glob_k(pm, geo, ipm, igeo, elbuf, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ixtg1, ixs10, ixs20, ixs16, iparg, tf, npc, fr_wave, w16, bufmat, thke, bufgeo, rby, skew, x, wa, iddl, ndof, k_diag, k_lt, iadk, jdik, ikgeo, etag, elbuf_tab, stack, drape_sh4n, drape_sh3n, drapeg)
Definition imp_glob_k.F:62
integer, dimension(:), allocatable jdi_si
Definition imp_intm.F:174
integer, dimension(:), allocatable iad_si
Definition imp_intm.F:174
integer intp_d
Definition imp_intm.F:173
type(int_pointer2), dimension(:), allocatable ind_int
Definition imp_intm.F:133
integer, dimension(:), allocatable iddl_si
Definition imp_intm.F:178