OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
domdec1.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!|| domdec1 ../starter/source/spmd/domain_decomposition/domdec1.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- calls -----------------------------------------------------
28!|| dd_ani ../starter/source/output/anim/dd_ani.F
29!|| dd_fr ../starter/source/spmd/domain_decomposition/domdec1.F
30!|| dd_fr_2 ../starter/source/spmd/domain_decomposition/domdec1.F
31!|| dd_frx ../starter/source/spmd/domain_decomposition/domdec1.F
32!|| nlocal ../starter/source/spmd/node/ddtools.F
33!||--- uses -----------------------------------------------------
34!||====================================================================
35 SUBROUTINE domdec1(
36 1 IPARG ,IXS ,IXQ ,IXC ,IXT ,
37 2 IXP ,IXR ,IXTG ,DD_IAD ,
38 3 X ,DD_IAD_PREV,IXS10 ,IXS20 ,
39 4 IXS16 ,KXX ,IXX ,KXSP ,IXSP ,
40 5 CEPSP ,IXTG6 )
41C
42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 use element_mod , only : nixs,nixq,nixc,nixp,nixt,nixr,nixtg
46C-----------------------------------------------
47C I m p l i c i t T y p e s
48C-----------------------------------------------
49#include "implicit_f.inc"
50C-----------------------------------------------
51C C o m m o n B l o c k s
52C-----------------------------------------------
53#include "com01_c.inc"
54#include "com04_c.inc"
55#include "vect01_c.inc"
56#include "scr03_c.inc"
57#include "scr12_c.inc"
58#include "param_c.inc"
59#include "scr23_c.inc"
60#include "sphcom.inc"
61#include "scr14_c.inc"
62C-----------------------------------------------
63C D u m m y A r g u m e n t s
64C-----------------------------------------------
65 INTEGER IPARG(NPARG,*), IXS(NIXS,*), IXQ(NIXQ,*) ,
66 . IXC(NIXC,*) , IXT(NIXT,*), IXTG(NIXTG,*) ,
67 . IXP(NIXP,*) , IXR(NIXR,*) ,
68 . DD_IAD(NSPMD+1,*),
69 . DD_IAD_PREV(NSPMD+1,*),
70 . ixs10(6,*),ixs20(12,*),ixs16(8,*), ixtg6(4,*),
71 . kxx(nixx,*), ixx(*), kxsp(nisp,*), ixsp(*), cepsp(*)
72 my_real :: x(3,numnod)
73C-----------------------------------------------
74C F u n c t i o n
75C-----------------------------------------------
76 INTEGER NLOCAL
77 EXTERNAL nlocal
78C-----------------------------------------------
79C L o c a l V a r i a b l e s
80C-----------------------------------------------
81 INTEGER NEL, DIM, NG, I,ICON, P, ISOLNOD, ICNOD
82C-----------------------------------------------------
83C S o u r c e L i n e s
84C-----------------------------------------------------
85C
86C phase 1 : dd_iad
87C
88 DO i = 1, nspgroup
89 DO p = 1, nspmd+1
90 dd_iad(p,i) = dd_iad_prev(p,i)
91 ENDDO
92 ENDDO
93C
94C phase 2 : boundary
95C
96 DO ng=1,ngroup
97 ity = iparg(5,ng)
98 nel = iparg(2,ng)
99 nft = iparg(3,ng)
100 p = iparg(32,ng)+1
101 IF(ity==1) THEN
102 icon = 8
103 dim = nixs
104 CALL dd_fr(ixs(1,nft+1),p,nel,icon,dim)
105 IF(codvers>=42) THEN
106 isolnod = iparg(28,ng)
107 IF (isolnod==10) THEN
108 icon = 6
109 dim = 6
110C
111 CALL dd_fr_2(
112 . ixs10(1,1+nft-numels8),p,nel,
113 . icon,dim)
114 ELSEIF(isolnod==20) THEN
115 icon = 12
116 dim = 12
117C
118 CALL dd_fr_2(
119 . ixs20(1,1+nft-numels8-numels10),p,nel,
120 . icon,dim)
121 ELSEIF(isolnod==16) THEN
122 icon = 8
123 dim = 8
124C
125 CALL dd_fr_2(
126 . ixs16(1,1+nft-numels8-numels10-numels20),p,nel,
127 . icon,dim)
128 ENDIF
129 ENDIF
130 ELSE IF(ity==2) THEN
131 icon = 4
132 dim = nixq
133 CALL dd_fr(ixq(1,nft+1),p,nel,icon,dim)
134 ELSE IF(ity==3) THEN
135 icon = 4
136 dim = nixc
137 CALL dd_fr(ixc(1,nft+1),p,nel,icon,dim)
138 ELSE IF(ity==4) THEN
139 icon = 2
140 dim = nixt
141 CALL dd_fr(ixt(1,nft+1),p,nel,icon,dim)
142 ELSE IF(ity==5) THEN
143 icon = 3
144 dim = nixp
145 CALL dd_fr(ixp(1,nft+1),p,nel,icon,dim)
146 ELSE IF(ity==6) THEN
147 icon = 3
148 dim = nixr
149 CALL dd_fr(ixr(1,nft+1),p,nel,icon,dim)
150 ELSE IF(ity==7) THEN
151 icon = 3
152 dim = nixtg
153 CALL dd_fr(ixtg(1,nft+1),p,nel,icon,dim)
154 icnod = iparg(11,ng)
155 icon = 3
156 dim = 4
157 IF(icnod==6)THEN
158C shift of 1 on ixtg6
159 CALL dd_fr(
160 . ixtg6(4,1+nft-numeltg+numeltg6),p,nel,
161 . icon,dim)
162 END IF
163 ELSE IF(ity==51) THEN
164 icon = 1
165 dim = nisp
166C kxsp shifted to retrieve KXSP(3) = node id
167 CALL dd_fr(kxsp(2,nft+1),p,nel,icon,dim)
168 ELSE IF(ity==100) THEN
169 dim = nixx
170 CALL dd_frx(kxx(1,nft+1),ixx,p,nel,dim)
171 ENDIF
172 END DO
173
174C 3) ANIM file for domain decomposition
175 IF (decani==1.AND.anim_vers<40) THEN
176 CALL dd_ani(x ,ixs ,ixq ,ixc ,
177 . ixt ,ixp ,ixr ,ixtg ,
178 . iparg ,kxsp ,ixsp )
179 ENDIF
180
181 RETURN
182 END
183
184!||====================================================================
185!|| dd_fr ../starter/source/spmd/domain_decomposition/domdec1.F
186!||--- called by ------------------------------------------------------
187!|| domdec1 ../starter/source/spmd/domain_decomposition/domdec1.F
188!||--- calls -----------------------------------------------------
189!|| ifrontplus ../starter/source/spmd/node/frontplus.F
190!||====================================================================
191 SUBROUTINE dd_fr(IX,P,NEL,ICON,DIM)
192C-----------------------------------------------
193C M o d u l e s
194C-----------------------------------------------
195
196C-----------------------------------------------
197C I m p l i c i t T y p e s
198C-----------------------------------------------
199#include "implicit_f.inc"
200C-----------------------------------------------
201C D u m m y A r g u m e n t s
202C-----------------------------------------------
203 INTEGER ICON,NEL,DIM,P
204 INTEGER IX(DIM,*)
205C-----------------------------------------------
206C L o c a l V a r i a b l e s
207C-----------------------------------------------
208 INTEGER I,J,N
209C-----------------------------------------------------
210C S o u r c e L i n e s
211C-----------------------------------------------------
212C Phase of counting boundary nodes
213C determine the used nodes
214C mettre a 1 la FRONTIERE(sd) correspondante
215 DO i=1,icon
216 DO j=1,nel
217 n = ix(1+i,j)
218 IF(n/=0) THEN
219 CALL ifrontplus(n,p)
220 ENDIF
221 END DO
222 END DO
223
224 RETURN
225 END
226
227!||====================================================================
228!|| dd_frx ../starter/source/spmd/domain_decomposition/domdec1.F
229!||--- called by ------------------------------------------------------
230!|| domdec1 ../starter/source/spmd/domain_decomposition/domdec1.F
231!||--- calls -----------------------------------------------------
232!|| ifrontplus ../starter/source/spmd/node/frontplus.F
233!||====================================================================
234 SUBROUTINE dd_frx(KXX,IXX,P,NEL,DIM)
235C
236C-----------------------------------------------
237C M o d u l e s
238C-----------------------------------------------
239
240C-----------------------------------------------
241C I m p l i c i t T y p e s
242C-----------------------------------------------
243#include "implicit_f.inc"
244C-----------------------------------------------
245C D u m m y A r g u m e n t s
246C-----------------------------------------------
247 INTEGER ICON,NEL,DIM,P
248 INTEGER KXX(DIM,*),IXX(*)
249C-----------------------------------------------
250C L o c a l V a r i a b l e s
251C-----------------------------------------------
252 INTEGER I,J,N,ADDX
253C-----------------------------------------------------
254C S o u r c e L i n e s
255C-----------------------------------------------------
256C Phase of counting boundary nodes
257C determine the used nodes
258C mettre a 1 la FRONTIERE(sd) correspondante
259 DO i=1,nel
260 icon = kxx(3,i)
261 addx = kxx(4,i)
262 DO j=1,icon
263 n = ixx(addx-1+j)
264 IF(n/=0) THEN
265 CALL ifrontplus(n,p)
266 ENDIF
267 END DO
268 END DO
269
270 RETURN
271 END
272!||====================================================================
273!|| dd_fr_2 ../starter/source/spmd/domain_decomposition/domdec1.F
274!||--- called by ------------------------------------------------------
275!|| domdec1 ../starter/source/spmd/domain_decomposition/domdec1.F
276!||--- calls -----------------------------------------------------
277!|| ifrontplus ../starter/source/spmd/node/frontplus.F
278!||====================================================================
279 SUBROUTINE dd_fr_2(IX,P,NEL,ICON,DIM)
280C-----------------------------------------------
281C M o d u l e s
282C-----------------------------------------------
283
284C-----------------------------------------------
285C I m p l i c i t T y p e s
286C-----------------------------------------------
287#include "implicit_f.inc"
288C-----------------------------------------------
289C D u m m y A r g u m e n t s
290C-----------------------------------------------
291 INTEGER ICON,NEL,DIM,P
292 INTEGER IX(DIM,*)
293C-----------------------------------------------
294C L o c a l V a r i a b l e s
295C-----------------------------------------------
296 INTEGER I,J,N
297C-----------------------------------------------------
298C S o u r c e L i n e s
299C-----------------------------------------------------
300C Phase of counting boundary nodes
301C determine the used nodes
302C mettre a 1 la FRONTIERE(sd) correspondante
303 DO i=1,icon
304 DO j=1,nel
305 n = ix(i,j)
306 IF(n/=0) THEN
307 CALL ifrontplus(n,p)
308 ENDIF
309 END DO
310 END DO
311
312 RETURN
313 END
314
315
316
#define my_real
Definition cppsort.cpp:32
subroutine dd_ani(x, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, iparg, kxsp, ixsp)
Definition dd_ani.F:38
subroutine dd_fr_2(ix, p, nel, icon, dim)
Definition domdec1.F:280
subroutine dd_frx(kxx, ixx, p, nel, dim)
Definition domdec1.F:235
subroutine domdec1(iparg, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, dd_iad, x, dd_iad_prev, ixs10, ixs20, ixs16, kxx, ixx, kxsp, ixsp, cepsp, ixtg6)
Definition domdec1.F:41
subroutine dd_fr(ix, p, nel, icon, dim)
Definition domdec1.F:192
subroutine ifrontplus(n, p)
Definition frontplus.F:101