OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
kldim.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#ifndef DNC
24!||====================================================================
25!|| kldim ../engine/stub/kldim.F
26!||====================================================================
27 SUBROUTINE kldim(EIGIPM, EIGIBUF, NDOF , LDIAG, LJDIK,
28 . LJDIK2, NDDL , K_DIAG, K_LT , IADK ,
29 . JDIK , IKC , NMS , INLOC, IDDL )
30C-----------------------------------------------
31C I m p l i c i t T y p e s
32C-----------------------------------------------
33#include "implicit_f.inc"
34C-----------------------------------------------
35C C o m m o n B l o c k s
36C-----------------------------------------------
37#include "com04_c.inc"
38#include "units_c.inc"
39C-----------------------------------------------
40C D u m m y A r g u m e n t s
41C-----------------------------------------------
42 INTEGER EIGIPM(*), EIGIBUF(*),NDOF(*), LDIAG, LJDIK, LJDIK2,
43 . NDDL, IADK(*), JDIK(*), IKC(*), NMS, INLOC(*), IDDL(*)
45 . k_diag(*), k_lt(*)
46C-----------------------------------------------
47C L o c a l V a r i a b l e s
48C-----------------------------------------------
49 INTEGER ICT, ICR, NN1, NN2, BDOF(6), I, II, J, JD, ITAG(NDDL),
50 . NBDOF, IND_IB(NDDL), ITAGN(NUMNOD), N, ITAG2(NDDL)
51C
52 ict=eigipm(3)
53 icr=eigipm(4)
54 nn1=eigipm(10)
55 nn2=eigipm(11)
56 DO i=1,6
57 bdof(i)=0
58 ENDDO
59 IF (ict==1) THEN
60 bdof(3)=1
61 nbdof=1
62 ELSEIF (ict==2) THEN
63 bdof(2)=1
64 nbdof=1
65 ELSEIF (ict==3) THEN
66 bdof(2)=1
67 bdof(3)=1
68 nbdof=2
69 ELSEIF (ict==4) THEN
70 bdof(1)=1
71 nbdof=1
72 ELSEIF (ict==5) THEN
73 bdof(1)=1
74 bdof(3)=1
75 nbdof=2
76 ELSEIF (ict==6) THEN
77 bdof(1)=1
78 bdof(2)=1
79 nbdof=2
80 ELSEIF (ict==7) THEN
81 bdof(1)=1
82 bdof(2)=1
83 bdof(3)=1
84 nbdof=3
85 ENDIF
86 IF (icr==1) THEN
87 bdof(6)=1
88 nbdof=nbdof+1
89 ELSEIF (icr==2) THEN
90 bdof(5)=1
91 nbdof=nbdof+1
92 ELSEIF (icr==3) THEN
93 bdof(5)=1
94 bdof(6)=1
95 nbdof=nbdof+2
96 ELSEIF (icr==4) THEN
97 bdof(4)=1
98 nbdof=nbdof+1
99 ELSEIF (icr==5) THEN
100 bdof(4)=1
101 bdof(6)=1
102 nbdof=nbdof+2
103 ELSEIF (icr==6) THEN
104 bdof(4)=1
105 bdof(5)=1
106 nbdof=nbdof+2
107 ELSEIF (icr==7) THEN
108 bdof(4)=1
109 bdof(5)=1
110 bdof(6)=1
111 nbdof=nbdof+3
112 ENDIF
113C
114 DO i=1,numnod
115 itagn(i)=0
116 ENDDO
117 DO i=1,nn1
118 ii=eigibuf(i)
119 itagn(ii)=1
120 ENDDO
121 DO i=1,nn2
122 ii=eigibuf(nn1+i)
123 itagn(ii)=2
124 ENDDO
125C
126 DO i=1,nddl
127 itag(i)=0
128 ENDDO
129 nms=0
130 DO i=1,numnod
131 n=inloc(i)
132 ii=iddl(n)
133 IF (itagn(n)==1) THEN
134 DO j=1,ndof(n)
135 itag(ii+j)=1
136 ENDDO
137 ELSEIF (itagn(n)==2) THEN
138 DO j=1,ndof(n)
139 IF (ikc(ii+j)<1.AND.bdof(j)==1) nms=nms+1
140 itag(ii+j)=bdof(j)+1
141 ENDDO
142 ENDIF
143 DO j=1,ndof(n)
144 IF (ikc(ii+j)>=1) itag(ii+j)=-1
145 ENDDO
146 ENDDO
147C Elimination des ddls bloques dans la liste
148 DO i=1,nddl
149 itag2(i)=itag(i)
150 itag(i)=0
151 ENDDO
152 ii=0
153 DO i=1,nddl
154 IF (itag2(i)>=0) THEN
155 ii=ii+1
156 itag(ii)=itag2(i)
157 ENDIF
158 ENDDO
159C
160 DO i=1,nddl
161 ind_ib(i)=0
162 ENDDO
163 ldiag=0
164 ljdik=0
165 ljdik2=0
166 DO i=1,nddl
167 IF (itag(i)>=1) THEN
168 ldiag=ldiag+1
169 DO j=iadk(i),iadk(i+1)-1
170 jd=jdik(j)
171 IF (itag(jd)>=1) THEN
172 ljdik=ljdik+1
173 IF (itag(jd)==2.AND.itag(i)==1)
174 . ind_ib(i)=ind_ib(i)+1
175 IF (itag(jd)==1.AND.itag(i)==2)
176 . ind_ib(jd)=ind_ib(jd)+1
177 ENDIF
178 ENDDO
179 ENDIF
180 ENDDO
181 DO i=1,nddl
182 ljdik2=ljdik2+ind_ib(i)
183 ENDDO
184C
185 RETURN
186 END
187#endif
#define my_real
Definition cppsort.cpp:32
subroutine kldim(eigipm, eigibuf, ndof, ldiag, ljdik, ljdik2, nddl, k_diag, k_lt, iadk, jdik, ikc, nms, inloc, iddl)
Definition kldim.F:30