OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
c3ke3.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!|| c3ke3 ../engine/source/elements/sh3n/coque3n/c3ke3.f
25!||--- called by ------------------------------------------------------
26!|| imp_glob_k ../engine/source/implicit/imp_glob_k.F
27!|| imp_glob_k0 ../engine/source/implicit/imp_glob_k.F
28!||--- calls -----------------------------------------------------
29!|| assem_c3 ../engine/source/implicit/assem_c3.F
30!|| c3be3 ../engine/source/elements/sh3n/coque3n/c3be3.F
31!|| c3coork3 ../engine/source/elements/sh3n/coque3n/c3coork3.F
32!|| c3derirz ../engine/source/elements/sh3n/coque3n/c3defo3.F
33!|| c3eoff ../engine/source/elements/sh3n/coque3n/c3eoff.F
34!|| c3lke3 ../engine/source/elements/sh3n/coque3n/c3lke3.F
35!|| c3lkerz3 ../engine/source/elements/sh3n/coque3n/c3lke3.F
36!|| c3sumg3 ../engine/source/elements/sh3n/coque3n/c3sumg3.F
37!|| cmatc3 ../engine/source/elements/shell/coqueba/cmatc3.F
38!|| cmatip3 ../engine/source/elements/shell/coqueba/cmatc3.F
39!||--- uses -----------------------------------------------------
40!|| drape_mod ../engine/share/modules/drape_mod.F
41!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
42!|| stack_mod ../engine/share/modules/stack_mod.F
43!||====================================================================
44 SUBROUTINE c3ke3(
45 1 JFT ,JLT ,NFT ,NPT ,MTN ,
46 2 ITHK ,NCYCLE ,
47 3 ISTRAIN,IPLA ,PM ,GEO ,IXTG ,
48 4 ELBUF_STR ,BUFMAT ,OFFSET ,INDXOF ,
49 5 ETAG , IDDL ,NDOF ,K_DIAG ,K_LT , IADK ,JDIK ,
50 6 IHBE ,THKE ,ISMSTR ,X ,
51 7 IKGEO ,IPM ,IGEO ,IEXPAN ,
52 8 IPARG ,ISUBSTACK,STACK,DRAPE_SH3N, INDX_DRAPE ,
53 9 SEDRAPE,NUMEL_DRAPE)
54C-----------------------------------------------
55C M o d u l e s
56C-----------------------------------------------
57 USE elbufdef_mod
58 USE stack_mod
59 USE drape_mod
60C-----------------------------------------------
61C I m p l i c i t T y p e s
62C-----------------------------------------------
63#include "implicit_f.inc"
64C-----------------------------------------------
65C G l o b a l P a r a m e t e r s
66C-----------------------------------------------
67#include "mvsiz_p.inc"
68C-----------------------------------------------
69C C o m m o n B l o c k s
70C-----------------------------------------------
71#include "com04_c.inc"
72#include "param_c.inc"
73C-----------------------------------------------
74C D U M M Y A R G U M E N T S
75C-----------------------------------------------
76C
77 INTEGER JFT ,JLT ,NFT ,NPT ,MTN ,ITHK ,
78 . NCYCLE,ISUBSTACK,
79 . ISTRAIN ,IPLA ,OFFSET,IHBE ,ISMSTR,IKGEO, IEXPAN
80 INTEGER , INTENT(IN) :: SEDRAPE,NUMEL_DRAPE
81 INTEGER, DIMENSION(SEDRAPE) :: INDX_DRAPE
82 INTEGER IXTG(NIXTG,*) ,IGEO(NPROPGI,*),IPM(*),IPARG(*)
83 INTEGER INDXOF(MVSIZ),
84 . ETAG(*),IDDL(*) ,NDOF(*) ,IADK(*) ,JDIK(*)
85C REAL OU REAL*8
87 . pm(npropm,*),geo(npropg,*),bufmat(*), x(3,*),thke(*)
88 my_real
89 . ke11(36,mvsiz),ke22(36,mvsiz),ke33(36,mvsiz),
90 . ke12(36,mvsiz),ke13(36,mvsiz),ke23(36,mvsiz),off(mvsiz),
91 . k_diag(*) ,k_lt(*)
92 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
93 TYPE (STACK_PLY) :: STACK
94 TYPE (DRAPE_) :: DRAPE_SH3N(NUMELTG_DRAPE)
95C-----------------------------------------------
96C L o c a l V a r i a b l e s
97C-----------------------------------------------
98c indx utilise localement contrairement aux coques 4n
99 INTEGER MAT(MVSIZ),PID(MVSIZ),NGL(MVSIZ),INDX(MVSIZ)
100 INTEGER I,J,J1,J2,IREP,IUN,NEL,IORTH,IGTYP,L_DIRA,L_DIRB,NLAY,
101 . idril,ep
102 my_real
103 . area(mvsiz),px1(mvsiz), py1(mvsiz), py2(mvsiz),
104 . sigy(mvsiz),thk0(mvsiz),
105 . x2(mvsiz) ,y2(mvsiz), x3(mvsiz),y3(mvsiz)
106 my_real
107 . g(mvsiz) , vol0(mvsiz),thk02(mvsiz),zcfac(mvsiz,2),
108 . hm(mvsiz,4),hf(mvsiz,4),hc(mvsiz,2),hz(mvsiz),
109 . hmor(mvsiz,2),hfor(mvsiz,2),hmfor(mvsiz,6),gs(mvsiz)
110 my_real
111 . r11(mvsiz),r12(mvsiz),r13(mvsiz),
112 . r21(mvsiz),r22(mvsiz),r23(mvsiz),
113 . r31(mvsiz),r32(mvsiz),r33(mvsiz),
114 . k11(9,mvsiz),k12(9,mvsiz),k13(9,mvsiz),
115 . k22(9,mvsiz),k23(9,mvsiz),k33(9,mvsiz),
116 . m11(9,mvsiz),m12(9,mvsiz),m13(9,mvsiz),
117 . m22(9,mvsiz),m23(9,mvsiz),m33(9,mvsiz),
118 . mf11(9,mvsiz),mf12(9,mvsiz),mf13(9,mvsiz),
119 . mf22(9,mvsiz),mf23(9,mvsiz),mf33(9,mvsiz),
120 . fm12(9,mvsiz),fm13(9,mvsiz),fm23(9,mvsiz),
121 . bm0rz(mvsiz,3,2),b0rz(mvsiz,3),bkrz(mvsiz,2),berz(mvsiz,2)
122C-----------------------------------------------
123 my_real,
124 . DIMENSION(:) ,POINTER :: dir_a, dir_b
125 my_real,
126 . ALLOCATABLE, DIMENSION(:), TARGET :: dira,dirb
127 TYPE(g_bufel_) ,POINTER :: GBUF
128C-----------------------------------------------
129 IUN = 1
130 nel=jlt-jft+iun
131 gbuf => elbuf_str%GBUF
132 idril = iparg(41)
133
134 igtyp = igeo(11,ixtg(5,1))
135 irep = igeo(6 ,ixtg(5,1))
136 nlay = elbuf_str%NLAY
137 l_dira = elbuf_str%BUFLY(1)%LY_DIRA
138 l_dirb = elbuf_str%BUFLY(1)%LY_DIRB
139 ALLOCATE(dira(nlay*nel*l_dira))
140 ALLOCATE(dirb(nlay*nel*l_dirb))
141 dira = zero
142 dirb = zero
143 dir_a => dira(1:nlay*nel*l_dira)
144 dir_b => dirb(1:nlay*nel*l_dirb)
145 IF (irep == 0) THEN
146 DO j=1,nlay
147 j1 = 1+(j-1)*l_dira*nel
148 j2 = j*l_dira*nel
149 dira(j1:j2) = elbuf_str%BUFLY(j)%DIRA(1:nel*l_dira)
150 ENDDO
151 ENDIF
152C
153 CALL c3coork3(jft ,jlt ,x ,ixtg ,gbuf%OFF,
154 1 geo ,pid ,mat ,ngl ,area ,
155 2 irep ,npt ,ismstr ,nlay ,
156 2 elbuf_str ,gbuf%SMSTR, dir_a,dir_b ,
157 3 x2 ,x3 ,y3 ,
158 4 r11,r12,r13,r21,r22,r23,r31,r32,r33,
159 5 k11,k12,k13,k22,k23,k33,
160 6 m11,m12,m13,m22,m23,m33,
161 7 mf11,mf12,mf13,mf22,mf23,mf33,
162 8 fm12,fm13,fm23,off ,nel)
163 IF (irep>0) THEN
164 CALL cmatc3(jft ,jlt ,pm ,mat ,geo ,
165 1 pid ,area ,thk0 ,thk02 ,gbuf%THK ,
166 2 thke ,vol0 ,mtn ,npt ,ithk ,
167 3 hm ,hf ,hc ,hz ,igtyp ,
168 4 iorth ,hmor ,hfor ,dir_a ,igeo ,
169 5 idril ,ihbe ,hmfor ,gs ,isubstack,
170 6 stack ,elbuf_str ,nlay ,drape_sh3n , nft ,
171 . nel ,indx_drape,sedrape,numel_drape)
172 ELSE
173 CALL cmatc3(jft ,jlt ,pm ,mat ,geo ,
174 1 pid ,area ,thk0 ,thk02 ,gbuf%THK ,
175 2 thke ,vol0 ,mtn ,npt ,ithk ,
176 3 hm ,hf ,hc ,hz ,igtyp ,
177 4 iorth ,hmor ,hfor ,dira ,igeo ,
178 5 idril ,ihbe ,hmfor ,gs ,isubstack,
179 6 stack ,elbuf_str ,nlay ,drape_sh3n ,nft ,
180 . nel ,indx_drape,sedrape,numel_drape)
181 ENDIF
182C-----------------------------------------------
183C IF [KT]
184C-----------------------------------------------
185 CALL cmatip3(jft ,jlt ,pm ,mat ,pid ,
186 1 mtn ,npt ,hm ,hf ,iorth ,
187 2 hmor ,hfor ,hmfor ,iun )
188 IF (iorth >0 ) THEN
189 DO i=1,9
190 DO ep=jft,jlt
191 mf11(i,ep) =zero
192 mf22(i,ep) =zero
193 mf33(i,ep) =zero
194 mf12(i,ep) =zero
195 mf13(i,ep) =zero
196 mf23(i,ep) =zero
197 fm12(i,ep) =zero
198 fm13(i,ep) =zero
199 fm23(i,ep) =zero
200 ENDDO
201 ENDDO
202 ENDIF
203 CALL c3be3(jft,jlt,px1,py1,py2 ,x2 ,x3 , y3 , area)
204C----------------------------------------------------------------------------
205C SUB-MATRICES [KE] LOCAL
206C----------------------------
207 CALL c3lke3(jft,jlt,area,thk0,thk02,hm,hf,hc,hz,
208 1 px1,py1,py2,vol0,
209 2 k11,k12,k13,k22,k23,k33,
210 3 m11,m12,m13,m22,m23,m33,
211 4 mf11,mf12,mf13,mf22,mf23,mf33,
212 5 fm12,fm13,fm23,ikgeo,gbuf%FOR,gbuf%MOM,
213 6 iorth,hmor,hfor,hmfor,idril,
214 7 nel)
215 IF (idril>0) THEN
216 DO i=jft,jlt
217 y2(i)=zero
218 END DO
219C
220 CALL c3derirz(jft ,jlt ,area ,x2 ,x3 ,
221 2 y2 ,y3 ,bm0rz,b0rz,bkrz,berz )
222 CALL c3lkerz3(jft,jlt,hm,hz,
223 1 px1,py1,py2,vol0,area,
224 2 k11,k12,k13,k22,k23,k33,
225 3 m11,m12,m13,m22,m23,m33,
226 4 mf11,mf12,mf13,mf22,mf23,mf33,
227 5 fm12,fm13,fm23,iorth,hmor,
228 6 bm0rz,b0rz,bkrz,berz,thk0,hmfor)
229 END IF
230C----------------------------
231C TRANSFORME [KE] LOCALE AU GLOBALE et ASSEMBLAGE----
232C----------------------------
233 CALL c3sumg3(jft ,jlt ,
234 1 r11,r12,r13,r21,r22,r23,r31,r32,r33,
235 2 k11,k12,k13,k22,k23,k33,
236 3 m11,m12,m13,m22,m23,m33,
237 4 mf11,mf12,mf13,mf22,mf23,mf33,
238 5 fm12,fm13,fm23,
239 6 ke11,ke22,ke33,ke12,ke13,ke23,idril,
240 7 iorth)
241
242
243 IF (neig>0) CALL c3eoff(
244 1 jft, jlt, ixtg, etag, off)
245 CALL assem_c3(
246 1 ixtg ,nel ,iddl ,ndof ,k_diag ,
247 2 k_lt ,iadk ,jdik ,ke11 ,ke12 ,
248 3 ke13 ,ke22 ,ke23 ,ke33 ,off )
249C-------------------------
250 RETURN
251 END
subroutine assem_c3(ixtg, nel, iddl, ndof, k_diag, k_lt, iadk, jdik, kc11, kc12, kc13, kc22, kc23, kc33, off)
Definition assem_c3.F:35
subroutine c3be3(jft, jlt, px1, py1, py2, x2, x3, y3, area)
Definition c3be3.F:30
subroutine c3coork3(jft, jlt, x, ixtg, offg, geo, pid, mat, ngl, area, irep, npt, ismstr, nlay, elbuf_str, smstr, dir_a, dir_b, xl2, xl3, yl3, r11, r12, r13, r21, r22, r23, r31, r32, r33, k11, k12, k13, k22, k23, k33, m11, m12, m13, m22, m23, m33, mf11, mf12, mf13, mf22, mf23, mf33, fm12, fm13, fm23, off, nel)
Definition c3coork3.F:44
subroutine c3derirz(jft, jlt, area, x2, x3, y2, y3, bmrz, b0rz, bkrz, berz)
Definition c3defo3.F:267
subroutine c3eoff(jft, jlt, ixtg, etag, off)
Definition c3eoff.F:29
subroutine c3ke3(jft, jlt, nft, npt, mtn, ithk, ncycle, istrain, ipla, pm, geo, ixtg, elbuf_str, bufmat, offset, indxof, etag, iddl, ndof, k_diag, k_lt, iadk, jdik, ihbe, thke, ismstr, x, ikgeo, ipm, igeo, iexpan, iparg, isubstack, stack, drape_sh3n, indx_drape, sedrape, numel_drape)
Definition c3ke3.F:54
subroutine c3lke3(jft, jlt, area, thk0, thk2, hm, hf, hc, hz, px1, py1, py2, vol, k11, k12, k13, k22, k23, k33, m11, m12, m13, m22, m23, m33, mf11, mf12, mf13, mf22, mf23, mf33, fm12, fm13, fm23, ikgeo, for, mom, iorth, hmor, hfor, hmfor, idril, nel)
Definition c3lke3.F:36
subroutine c3lkerz3(jft, jlt, hm, hz, px1, py1, py2, vol, area, k11, k12, k13, k22, k23, k33, m11, m12, m13, m22, m23, m33, mf11, mf12, mf13, mf22, mf23, mf33, fm12, fm13, fm23, iorth, hmor, bm0rz, b0rz, bkrz, berz, thk0, hmfor)
Definition c3lke3.F:572
subroutine c3sumg3(jft, jlt, r11, r12, r13, r21, r22, r23, r31, r32, r33, k11, k12, k13, k22, k23, k33, m11, m12, m13, m22, m23, m33, mf11, mf12, mf13, mf22, mf23, mf33, fm12, fm13, fm23, ke11, ke22, ke33, ke12, ke13, ke23, idril, iorth)
Definition c3sumg3.F:42
subroutine cmatip3(jft, jlt, pm, mat, pid, mtn, npt, hm, hf, iorth, hmor, hfor, hmfor, ipg)
Definition cmatc3.F:582
subroutine cmatc3(jft, jlt, pm, mat, geo, pid, area, thk0, thk02, thk, thke, volg, mtn, npt, ithk, hm, hf, hc, hz, igtyp, iorth, hmor, hfor, dir, igeo, idril, ihbe, hmfor, gs, isubstack, stack, elbuf_str, nlay, drape, nft, nel, indx_drape, sedrape, numel_drape)
Definition cmatc3.F:47
#define my_real
Definition cppsort.cpp:32
subroutine area(d1, x, x2, y, y2, eint, stif0)