OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
cmaini3.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!|| cmaini3 ../starter/source/elements/sh3n/coquedk/cmaini3.F
25!||--- called by ------------------------------------------------------
26!|| cbainit3 ../starter/source/elements/shell/coqueba/cbainit3.F
27!|| cdkinit3 ../starter/source/elements/sh3n/coquedk/cdkinit3.F
28!||--- calls -----------------------------------------------------
29!|| ancmsg ../starter/source/output/message/message.F
30!|| cm27in3 ../starter/source/materials/mat/mat027/cm27in3.F
31!|| cm58in3 ../starter/source/materials/mat/mat058/cm58in3.F
32!|| corthdir ../starter/source/elements/shell/coque/corthdir.F
33!|| corthini ../starter/source/elements/shell/coque/corthini.F
34!|| law158_init ../starter/source/materials/mat/mat158/law158_init.F
35!|| law42c_ini ../starter/source/materials/mat/mat042/law42c_ini.F90
36!||--- uses -----------------------------------------------------
37!|| drape_mod ../starter/share/modules1/drape_mod.f
38!|| law42c_ini_mod ../starter/source/materials/mat/mat042/law42c_ini.F90
39!|| message_mod ../starter/share/message_module/message_mod.f
40!|| stack_mod ../starter/share/modules1/stack_mod.F
41!||====================================================================
42 SUBROUTINE cmaini3(ELBUF_STR,PM ,GEO ,NEL ,NLAY ,
43 . SKEW ,IGEO ,IX ,NIX ,NUMEL ,
44 . NSIGSH ,SIGSH ,PTSH ,IGTYP ,IORTHLOC ,
45 . IPM ,PROPID ,ALDT ,MAT_PARAM,
46 . IR ,IS ,ISUBSTACK,STACK ,IREP ,
47 . DRAPE ,SHANG ,GEO_STACK,IGEO_STACK,
48 . IGMAT ,IMAT ,IPROP ,NUMMAT ,
49 . X1 ,X2 ,X3 ,X4 ,Y1 ,Y2 ,
50 . Y3 ,Y4 ,Z1 ,Z2 ,Z3 ,Z4 ,
51 . E1X, E2X, E3X, E1Y, E2Y, E3Y ,E1Z, E2Z, E3Z ,X ,
52 . NPT_ALL ,IDRAPE ,NUMEL_DRAPE , INDX)
53C-----------------------------------------------
54C M o d u l e s
55C-----------------------------------------------
56 USE mat_elem_mod
57 USE message_mod
58 USE stack_mod
59 USE drape_mod
61 use law42c_ini_mod
62C-----------------------------------------------
63C I m p l i c i t T y p e s
64C-----------------------------------------------
65#include "implicit_f.inc"
66C-----------------------------------------------
67C G l o b a l P a r a m e t e r s
68C-----------------------------------------------
69#include "mvsiz_p.inc"
70C-----------------------------------------------
71C C o m m o n B l o c k s
72C-----------------------------------------------
73#include "param_c.inc"
74#include "vect01_c.inc"
75C-----------------------------------------------
76C D u m m y A r g u m e n t s
77C-----------------------------------------------
78 INTEGER ,INTENT(IN) :: NUMMAT
79 INTEGER NEL,NLAY,NIX,NSIGSH,NUMEL,IGTYP,PROPID,IR,IS,IREP,IGMAT,IMAT,IPROP,
80 . IDRAPE ,NPT_ALL,NUMEL_DRAPE
81 INTEGER IGEO(NPROPGI,*),IX(NIX,*),PTSH(*),IORTHLOC(MVSIZ),
82 . IPM(NPROPMI,*),ISUBSTACK,IGEO_STACK(*)
83 INTEGER , DIMENSION(NUMEL_DRAPE) :: INDX
84 my_real
85 . PM(*),GEO(NPROPG,*),SKEW(LSKEW,*),ALDT(*),
86 . SIGSH(NSIGSH,*),SHANG(*),GEO_STACK(*),X(3,*)
87 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
88 TYPE (STACK_PLY) :: STACK
89 my_real, DIMENSION(MVSIZ), INTENT(IN) :: e1x,e2x,e3x,e1y,e2y,e3y,e1z,e2z,e3z,
90 . x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4
91 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
92C-----------------------------------------------
93C L o c a l V a r i a b l e s
94C-----------------------------------------------
95 INTEGER IT,IL,NUVAR,NPTT,ILAW,NUPARAM
96 my_real
97 . vx(mvsiz),vy(mvsiz),vz(mvsiz),phi1(npt_all,mvsiz),phi2(npt_all,mvsiz)
98 my_real
99 . coor1(npt_all,mvsiz),coor2(npt_all,mvsiz),coor3(npt_all,mvsiz),
100 . coor4(npt_all,mvsiz)
101 CHARACTER(LEN=NCHARTITLE) :: TITR,TITR1
102 my_real,
103 . DIMENSION(:),POINTER :: UVAR,DIR1,DIR2
104 TYPE(G_BUFEL_) ,POINTER :: GBUF
105 TYPE(l_bufel_) ,POINTER :: LBUF
106 TYPE(buf_lay_) ,POINTER :: BUFLY
107 TYPE(DRAPE_) :: DRAPE(NUMELC_DRAPE + NUMELTG_DRAPE)
108C=======================================================================
109 coor1 = zero
110 coor2 = zero
111 coor3 = zero
112 coor4 = zero
113C
114 gbuf => elbuf_str%GBUF
115C----
116 CALL corthini(
117 . lft ,llt ,nft ,nlay ,numel ,
118 . nsigsh ,nix ,ix ,igeo ,geo ,
119 . skew ,sigsh ,ptsh ,phi1 ,phi2 ,
120 . vx ,vy ,vz ,coor1 ,coor2 ,
121 . coor3 ,coor4 ,iorthloc ,isubstack ,stack ,
122 . irep ,elbuf_str ,drape ,shang ,x ,
123 . geo_stack ,e3x ,e3y ,e3z ,
124 . gbuf%BETAORTH,x1 ,x2 ,y1 ,y2 ,
125 . z1 ,z2 ,nel ,gbuf%G_ADD_NODE,gbuf%ADD_NODE,
126 . npt_all ,idrape ,indx)
127c---
128C----
129 IF(igtyp == 51 .OR. igtyp == 52 .OR. igmat > 0) THEN
130 CALL corthdir(elbuf_str,
131 . igeo ,geo ,vx ,vy ,vz ,
132 . phi1 ,phi2 ,coor1 ,coor2 ,coor3 ,
133 . coor4 ,iorthloc ,nlay ,irep ,isubstack,
134 . stack ,geo_stack ,igeo_stack,ir ,is ,
135 . nel ,imat ,iprop ,
136 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
137 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
138 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z ,
139 . npt_all ,idrape)
140
141 ELSEIF (mtn == 27) THEN
142 CALL cm27in3(elbuf_str,
143 . geo ,igeo ,pm ,ipm ,ix ,nix,
144 . nlay,ir ,is ,imat )
145 ELSEIF (mtn==15 .or. mtn==19 .or. mtn==25 .or. mtn >= 28) THEN
146 IF (mtn == 19 .and. igtyp /= 9) THEN
147 CALL ancmsg(msgid=5,
148 . anmode=aninfo,
149 . msgtype=msgerror,
150 . i1=ix(1,1))
151 ENDIF
152c
153 CALL corthdir(elbuf_str,
154 . igeo ,geo ,vx ,vy ,vz ,
155 . phi1 ,phi2 ,coor1 ,coor2 ,coor3 ,
156 . coor4 ,iorthloc ,nlay ,irep ,isubstack,
157 . stack ,geo_stack ,igeo_stack,ir ,is ,
158 . nel ,imat ,iprop ,
159 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
160 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
161 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z ,
162 . npt_all ,idrape )
163 ENDIF
164C-----
165 IF ((mtn == 58 .or. mtn == 158) .AND.
166 . igtyp /= 16 .AND. igtyp /= 51 .AND. igtyp /= 52) THEN
167 CALL ancmsg(msgid=658,
168 . msgtype=msgerror,
169 . anmode=aninfo_blind_1,
170 . i1=propid,
171 . c1=titr,
172 . i2=mtn,
173 . i3=igtyp)
174 ELSEIF (mtn == 58 .or. mtn == 158 .OR. igtyp == 51 .OR. igtyp == 52) THEN
175C
176 IF (idrape == 0) THEN
177 DO il = 1,nlay
178 nptt = elbuf_str%BUFLY(il)%NPTT
179 imat = elbuf_str%BUFLY(il)%IMAT
180 ilaw = elbuf_str%BUFLY(il)%ILAW
181 nuvar = elbuf_str%BUFLY(il)%NVAR_MAT
182 dir1 => elbuf_str%BUFLY(il)%DIRA
183 dir2 => elbuf_str%BUFLY(il)%DIRB
184 nuparam = mat_param(imat)%NUPARAM
185!
186 IF (ilaw == 58) THEN
187 DO it=1,nptt
188 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
189 uvar => elbuf_str%BUFLY(il)%MAT(ir,is,it)%VAR
190 CALL cm58in3(irep ,dir1 ,dir2 ,mat_param(imat)%UPARAM,
191 . uvar ,aldt ,nel ,nuvar ,lbuf%ANG ,
192 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
193 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
194 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
195 ENDDO
196 ELSE IF (ilaw == 158) THEN
197 DO it=1,nptt
198 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
199 uvar => elbuf_str%BUFLY(il)%MAT(ir,is,it)%VAR
200 CALL law158_init(dir1 ,dir2 ,
201 . uvar ,aldt ,nel ,nuvar ,lbuf%ANG ,
202 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
203 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
204 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
205 ENDDO
206 ENDIF ! ILAW
207 ENDDO ! DO IL = 1,NLAY
208 ELSE
209 DO il = 1,nlay
210 nptt = elbuf_str%BUFLY(il)%NPTT
211 imat = elbuf_str%BUFLY(il)%IMAT
212 ilaw = elbuf_str%BUFLY(il)%ILAW
213 nuvar = elbuf_str%BUFLY(il)%NVAR_MAT
214 nuparam = mat_param(imat)%NUPARAM
215!
216 IF (ilaw == 58) THEN
217 DO it=1,nptt
218 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
219 uvar => elbuf_str%BUFLY(il)%MAT(ir,is,it)%VAR
220 dir1 => elbuf_str%BUFLY(il)%LBUF_DIR(it)%DIRA
221 dir2 => elbuf_str%BUFLY(il)%LBUF_DIR(it)%DIRB
222 CALL cm58in3(irep ,dir1 ,dir2 ,mat_param(imat)%UPARAM,
223 . uvar ,aldt ,nel ,nuvar ,lbuf%ANG ,
224 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
225 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
226 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
227 ENDDO
228 ELSE IF (ilaw == 158) THEN
229 DO it=1,nptt
230 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
231 uvar => elbuf_str%BUFLY(il)%MAT(ir,is,it)%VAR
232 dir1 => elbuf_str%BUFLY(il)%LBUF_DIR(it)%DIRA
233 dir2 => elbuf_str%BUFLY(il)%LBUF_DIR(it)%DIRB
234 CALL law158_init(dir1 ,dir2 ,
235 . uvar ,aldt ,nel ,nuvar ,lbuf%ANG ,
236 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
237 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
238 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z, e2z, e3z )
239 ENDDO
240 ENDIF ! ILAW
241 ENDDO ! DO IL = 1,NLAY
242 ENDIF
243 ENDIF
244 IF (mtn == 42 .OR. mtn == 69 .OR. igtyp == 51 .OR. igtyp == 52) THEN
245 DO il = 1,nlay
246 nptt = elbuf_str%BUFLY(il)%NPTT
247 ilaw = elbuf_str%BUFLY(il)%ILAW
248 nuvar = elbuf_str%BUFLY(il)%NVAR_MAT
249!
250 IF (ilaw == 42 .OR. mtn == 69) THEN
251 DO it=1,nptt
252 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
253 uvar => elbuf_str%BUFLY(il)%MAT(ir,is,it)%VAR
254 CALL law42c_ini(nuvar,uvar,llt)
255 ENDDO
256 ENDIF ! IF (ILAW == 42) THEN
257 ENDDO ! DO IL = 1,NLAY
258 ENDIF
259C-----------
260 RETURN
261 END
subroutine cm27in3(elbuf_str, geo, igeo, pm, ipm, ix, nix, nlay, ir, is, imat)
Definition cm27in3.F:38
subroutine cm58in3(irep, dir1, dir2, uparam, uvar, aldt, nel, nuvar, tan_phi, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
Definition cm58in3.F:35
subroutine cmaini3(elbuf_str, pm, geo, nel, nlay, skew, igeo, ix, nix, numel, nsigsh, sigsh, ptsh, igtyp, iorthloc, ipm, propid, aldt, mat_param, ir, is, isubstack, stack, irep, drape, shang, geo_stack, igeo_stack, igmat, imat, iprop, nummat, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, x, npt_all, idrape, numel_drape, indx)
Definition cmaini3.F:53
subroutine corthdir(elbuf_str, igeo, geo, vx, vy, vz, phi1, phi2, coor1, coor2, coor3, coor4, iorthloc, nlay, irep, isubstack, stack, geo_stack, igeo_stack, ir, is, nel, imat, iprop, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, npt_all, idrape)
Definition corthdir.F:42
subroutine corthini(jft, jlt, nft, nlay, numel, nsigsh, nix, ix, igeo, geo, skew, sigsh, ptsh, phi1, phi2, vx, vy, vz, coor1, coor2, coor3, coor4, iorthloc, isubstack, stack, irep, elbuf_str, drape, angle, x, geo_stack, e3x, e3y, e3z, betaorth, x1, x2, y1, y2, z1, z2, nel, g_add_node, add_node, npt_all, idrape, indx)
Definition corthini.F:48
subroutine law158_init(dir1, dir2, uvar, aldt, nel, nuvar, tan_phi, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
Definition law158_init.F:35
integer, parameter nchartitle
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