OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
lcbcsf.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!|| lcbcsf ../engine/source/constraints/general/bcs/lcbcsf.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../engine/source/input/lectur.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../engine/source/output/message/message.F
29!|| spmd_glob_isum9 ../engine/source/mpi/interfaces/spmd_th.F
30!|| sysfus2 ../engine/source/system/sysfus.F
31!||--- uses -----------------------------------------------------
32!|| message_mod ../engine/share/message_module/message_mod.F
33!||====================================================================
34 SUBROUTINE lcbcsf(ICODE,ISKEW,NUMBCSN,ITAB,ITABM1,
35 2 NPBY ,ISKWN,WEIGHT )
36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE message_mod
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C-----------------------------------------------
45C D u m m y A r g u m e n t s
46C-----------------------------------------------
47 INTEGER NUMBCSN
48 INTEGER ICODE(*), ISKEW(*), ITAB(*), ITABM1(*), NPBY(*),
49 . iskwn(liskn,*), weight(*)
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 "units_c.inc"
56#include "task_c.inc"
57#include "warn_c.inc"
58#include "param_c.inc"
59C-----------------------------------------------
60C L o c a l V a r i a b l e s
61C-----------------------------------------------
62 INTEGER JJ(12), JO(12), IC, NC, N, NUSR, IS, NOSYS, ICO, ICO1,
63 . ico2, ico3, ico4, i, ic1, ic2, ic3, ic4, ll, nosysv
64 CHARACTER MESS*40
65C-----------------------------------------------
66C E x t e r n a l F u n c t i o n s
67C-----------------------------------------------
68 INTEGER SYSFUS2
69C REAL
70C-----------------------------------------------
71C
72 DATA mess/'BOUNDARY CONDITIONS '/
73C
74 ic=0
75 nc=1
76 DO 10 n=1,numbcsn
77 READ (iin,'(I10,4(1X,3I1),I10)') nusr,jj,is
78 nosys=sysfus2(nusr,itabm1,numnod)
79 nosysv = nosys
80 IF(nspmd > 1) CALL spmd_glob_isum9(nosysv,1)
81 IF(ispmd==0) THEN
82 IF(nosysv==0) THEN
83 CALL ancmsg(msgid=202,anmode=aninfo,
84 . i1=nusr)
85 ierr=ierr+1
86 END IF
87 END IF
88 IF(nosys==0)GOTO 10
89C
90 ico=icode(nosys)
91 ico1=ico/512
92 ico2=(ico-512*ico1)/64
93 ico3=(ico-512*ico1-64*ico2)/8
94 ico4=(ico-512*ico1-64*ico2-8*ico3)
95 jo(1)=ico1/4
96 jo(2)=(ico1-4*jo(1))/2
97 jo(3)=(ico1-4*jo(1)-2*jo(2))
98 jo(4)=ico2/4
99 jo(5)=(ico2-4*jo(4))/2
100 jo(6)=(ico2-4*jo(4)-2*jo(5))
101 jo(7)=ico3/4
102 jo(8)=(ico3-4*jo(7))/2
103 jo(9)=(ico3-4*jo(7)-2*jo(8))
104 jo(10)=ico4/4
105 jo(11)=(ico4-4*jo(10))/2
106 jo(12)=(ico4-4*jo(10)-2*jo(11))
107C
108 DO 5 i=1,12
109 IF(jj(i)==0)THEN
110 jj(i)=jo(i)
111 ELSEIF(jj(i)==2)THEN
112 jj(i)=0
113 ENDIF
114 5 CONTINUE
115C
116 ic1=jj(1)*4 +jj(2)*2 +jj(3)
117 ic2=jj(4)*4 +jj(5)*2 +jj(6)
118 ic3=jj(7)*4 +jj(8)*2 +jj(9)
119 ic4=jj(10)*4+jj(11)*2+jj(12)
120 ic=ic1*512+ic2*64+ic3*8+ic4
121 icode(nosys)=ic
122 DO 7 ll=0,numskw
123 7 IF(is==iskwn(4,ll+1)) iskew(nosys)=ll+1
124C ISKEW(NOSYS)=IS
125 10 CONTINUE
126C
127 IF(ispmd==0) WRITE(iout,1300)
128 DO 500 n=1,numnod
129 ic=icode(n)
130 IF (ic==0) GO TO 500
131 ic1=ic/512
132 ic2=(ic-512*ic1)/64
133 ic3=(ic-512*ic1-64*ic2)/8
134 ic4=(ic-512*ic1-64*ic2-8*ic3)
135 jj(1)=ic1/4
136 jj(2)=(ic1-4*jj(1))/2
137 jj(3)=(ic1-4*jj(1)-2*jj(2))
138 jj(4)=ic2/4
139 jj(5)=(ic2-4*jj(4))/2
140 jj(6)=(ic2-4*jj(4)-2*jj(5))
141 jj(7)=ic3/4
142 jj(8)=(ic3-4*jj(7))/2
143 jj(9)=(ic3-4*jj(7)-2*jj(8))
144 jj(10)=ic4/4
145 jj(11)=(ic4-4*jj(10))/2
146 jj(12)=(ic4-4*jj(10)-2*jj(11))
147 IF(weight(n)==1)
148 . WRITE(iout,'(1X,I10,4(1X,3I2),3X,I10)')itab(n),jj,
149 . iskwn(4,iskew(n))
150 500 CONTINUE
151 RETURN
152C-----------------------------------------------------------------
153 1300 FORMAT(/,
154 . 1x,' BOUNDARY CONDITIONS',/
155 . 1x,' -------------------',/
156 . 1x,' node trans. rotat. grid lagra. skew',/)
157C
158 END
subroutine lcbcsf(icode, iskew, numbcsn, itab, itabm1, npby, iskwn, weight)
Definition lcbcsf.F:36
subroutine spmd_glob_isum9(v, len)
Definition spmd_th.F:523
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:889