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