OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
admbcs.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!|| admbcs ../starter/source/model/remesh/admbcs.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- calls -----------------------------------------------------
28!|| admbcs3 ../starter/source/model/remesh/admbcs.F
29!|| admbcs4 ../starter/source/model/remesh/admbcs.F
30!|| ancmsg ../starter/source/output/message/message.F
31!||--- uses -----------------------------------------------------
32!|| message_mod ../starter/share/message_module/message_mod.F
33!||====================================================================
34 SUBROUTINE admbcs(IXC,IPARTC,IXTG,IPARTTG,IPART,
35 . ICODE,ISKEW,ITAB,SH4TREE,SH3TREE)
36 USE message_mod
37 use element_mod , only : nixc,nixtg
38C-----------------------------------------------
39C I m p l i c i t T y p e s
40C-----------------------------------------------
41#include "implicit_f.inc"
42C-----------------------------------------------
43C G l o b a l P a r a m e t e r s
44C-----------------------------------------------
45#include "scr17_c.inc"
46#include "com04_c.inc"
47#include "param_c.inc"
48C-----------------------------------------------
49C D u m m y A r g u m e n t s
50C-----------------------------------------------
51 INTEGER IXC(NIXC,*),IPARTC(*),IXTG(NIXTG,*),IPARTTG(*),
52 . ipart(lipart1,*),icode(*),iskew(*),itab(*),
53 . sh4tree(ksh4tree,*),sh3tree(ksh3tree,*)
54C-----------------------------------------------
55C L o c a l V a r i a b l e s
56C-----------------------------------------------
57 INTEGER IP,NLEV,N1,N2,IC1,IC2,ICOD,IS1,IS2,
58 . dir, n
59C-----------------------------------------------
60 INTEGER MY_AND
61 EXTERNAL my_and
62C-----------------------------------------------
63C
64 DO n=1,numelc0
65 ip =ipartc(n)
66 nlev =ipart(10,ip)
67 IF(nlev>0)THEN
68 DO dir=0,3
69 n1=ixc(dir+2,n)
70 n2=ixc(mod(dir+1,4)+2,n)
71 ic1 =icode(n1)
72 ic2 =icode(n2)
73 icod=my_and(ic1,ic2)
74 IF(icod/=0)THEN
75 is1=iskew(n1)
76 is2=iskew(n2)
77 IF(is1/=is2)THEN
78 CALL ancmsg(msgid=650,
79 . msgtype=msgerror,
80 . anmode=aninfo,
81 . i2=itab(n2),
82 . i1=itab(n1),
83 . i3=ixc(nixc,n))
84 END IF
85 CALL admbcs4(dir,icod,is1,n ,ixc,
86 . ipartc,ipart,icode,iskew,sh4tree)
87 END IF
88 END DO
89 END IF
90 END DO
91C
92 DO n=1,numeltg0
93 ip =iparttg(n)
94 nlev =ipart(10,ip)
95 IF(nlev>0)THEN
96 DO dir=0,2
97 n1=ixtg(dir+2,n)
98 n2=ixtg(mod(dir+1,3)+2,n)
99 ic1 =icode(n1)
100 ic2 =icode(n2)
101 icod=my_and(ic1,ic2)
102 IF(icod/=0)THEN
103 is1=iskew(n1)
104 is2=iskew(n2)
105 IF(is1/=is2)THEN
106 CALL ancmsg(msgid=650,
107 . msgtype=msgerror,
108 . anmode=aninfo,
109 . i2=itab(n2),
110 . i1=itab(n1),
111 . i3=ixtg(nixtg,n))
112 END IF
113 CALL admbcs3(dir,icod,is1,n ,ixtg,
114 . iparttg,ipart,icode,iskew,sh3tree)
115 END IF
116 END DO
117 END IF
118 END DO
119
120 RETURN
121 END
122
123
124!||====================================================================
125!|| admbcs4 ../starter/source/model/remesh/admbcs.F
126!||--- called by ------------------------------------------------------
127!|| admbcs ../starter/source/model/remesh/admbcs.F
128!||--- calls -----------------------------------------------------
129!||--- uses -----------------------------------------------------
130!||====================================================================
131 RECURSIVE SUBROUTINE admbcs4(DIR,ICOD ,ISK ,N ,IXC ,
132 . IPARTC,IPART,ICODE,ISKEW,SH4TREE)
133 use element_mod , only : nixc
134C-----------------------------------------------
135C I m p l i c i t T y p e s
136C-----------------------------------------------
137#include "implicit_f.inc"
138C-----------------------------------------------
139C G l o b a l P a r a m e t e r s
140C-----------------------------------------------
141#include "scr17_c.inc"
142#include "param_c.inc"
143C-----------------------------------------------
144C D u m m y A r g u m e n t s
145C-----------------------------------------------
146 INTEGER dir,icod,isk,n,ixc(nixc,*),
147 . ipartc(*),ipart(lipart1,*),icode(*),iskew(*),
148 . sh4tree(ksh4tree,*)
149C-----------------------------------------------
150C L o c a l V a r i a b l e s
151C-----------------------------------------------
152 INTEGER level,ip,NLEV
153 INTEGER son,m1,m2
154C-----------------------------------------------
155 INTEGER my_or
156 EXTERNAL MY_OR
157C-----------------------------------------------
158 level=sh4tree(3,n)
159 IF(level<0)THEN
160 level=-(level+1)
161 END IF
162 ip =ipartc(n)
163 nlev =ipart(10,ip)
164
165 IF(level<nlev)THEN
166 son=sh4tree(2,n)+dir
167 CALL admbcs4(dir,icod,isk,son,ixc,
168 . ipartc,ipart,icode,iskew,sh4tree)
169 son=sh4tree(2,n)+mod(dir+1,4)
170 CALL admbcs4(dir,icod,isk,son,ixc,
171 . ipartc,ipart,icode,iskew,sh4tree)
172 ELSE
173 m1=ixc(dir+2,n)
174 m2=ixc(mod(dir+1,4)+2,n)
175 icode(m1)=my_or(icod,icode(m1))
176 icode(m2)=my_or(icod,icode(m2))
177 iskew(m1)=isk
178 iskew(m2)=isk
179 END IF
180
181 RETURN
182 END
183!||====================================================================
184!|| admbcs3 ../starter/source/model/remesh/admbcs.F
185!||--- called by ------------------------------------------------------
186!|| admbcs ../starter/source/model/remesh/admbcs.f
187!||--- calls -----------------------------------------------------
188!||--- uses -----------------------------------------------------
189!||====================================================================
190 RECURSIVE SUBROUTINE admbcs3(DIR,ICOD,ISK,N,IXTG,
191 . IPARTTG,IPART,ICODE,ISKEW,SH3TREE)
192 use element_mod , only : nixtg
193C-----------------------------------------------
194C I m p l i c i t T y p e s
195C-----------------------------------------------
196#include "implicit_f.inc"
197C-----------------------------------------------
198C G l o b a l P a r a m e t e r s
199C-----------------------------------------------
200#include "scr17_c.inc"
201#include "param_c.inc"
202C-----------------------------------------------
203C D u m m y A r g u m e n t s
204C-----------------------------------------------
205 INTEGER dir,icod,isk,n,ixtg(nixtg,*),
206 . iparttg(*),ipart(lipart1,*),icode(*),iskew(*),
207 . sh3tree(ksh3tree,*)
208C-----------------------------------------------
209C L o c a l V a r i a b l e s
210C-----------------------------------------------
211 INTEGER level,ip,nlev
212 INTEGER son, m1, m2
213C-----------------------------------------------
214 INTEGER my_or
215 EXTERNAL my_or
216C-----------------------------------------------
217 level=sh3tree(3,n)
218 IF(level<0)THEN
219 level=-(level+1)
220 END IF
221 ip =iparttg(n)
222 nlev =ipart(10,ip)
223
224 IF(level<nlev)THEN
225 son=sh3tree(2,n)+dir
226 CALL admbcs3(dir,icod,isk,son,ixtg,
227 . iparttg,ipart,icode,iskew,sh3tree)
228 son=sh3tree(2,n)+mod(dir+1,3)
229 CALL admbcs3(dir,icod,isk,son,ixtg,
230 . iparttg,ipart,icode,iskew,sh3tree)
231 ELSE
232 m1=ixtg(dir+2,n)
233 m2=ixtg(mod(dir+1,3)+2,n)
234 icode(m1)=my_or(icod,icode(m1))
235 icode(m2)=my_or(icod,icode(m2))
236 iskew(m1)=isk
237 iskew(m2)=isk
238 END IF
239
240 RETURN
241 END
recursive subroutine admbcs3(dir, icod, isk, n, ixtg, iparttg, ipart, icode, iskew, sh3tree)
Definition admbcs.F:192
recursive subroutine admbcs4(dir, icod, isk, n, ixc, ipartc, ipart, icode, iskew, sh4tree)
Definition admbcs.F:133
subroutine admbcs(ixc, ipartc, ixtg, iparttg, ipart, icode, iskew, itab, sh4tree, sh3tree)
Definition admbcs.F:36
int my_or(int *a, int *b)
Definition precision.c:63
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:895
program starter
Definition starter.F:39