OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
c3dt3.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!|| c3dt3 ../engine/source/elements/sh3n/coque3n/c3dt3.f
25!||--- called by ------------------------------------------------------
26!|| c3forc3 ../engine/source/elements/sh3n/coque3n/c3forc3.F
27!|| c3forc3_crk ../engine/source/elements/xfem/c3forc3_crk.F
28!||--- calls -----------------------------------------------------
29!|| cssp2a11 ../engine/source/elements/sh3n/coque3n/cssp2a11.F
30!||====================================================================
31 SUBROUTINE c3dt3(JFT ,JLT ,PM ,OFF ,DT2T ,
32 2 NELTST,ITYPTST,STI ,STIR ,OFFG ,
33 3 SSP ,VISCMX ,ISMSTR ,NFT ,IOFC ,
34 4 ALPE ,MSTG ,DMELTG ,JSMS ,PTG ,
35 5 SHF ,IGTYP ,IGMAT ,G ,A1 ,
36 6 A11R ,G_DT ,DTEL ,ALDT ,THK0 ,
37 7 AREA ,NGL ,IMAT ,MTN ,NEL ,
38 8 ZOFFSET)
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43#include "comlock.inc"
44C-----------------------------------------------
45C G l o b a l P a r a m e t e r s
46C-----------------------------------------------
47#include "mvsiz_p.inc"
48C-----------------------------------------------
49C C o m m o n B l o c k s
50C-----------------------------------------------
51#include "param_c.inc"
52#include "com08_c.inc"
53#include "scr02_c.inc"
54#include "scr07_c.inc"
55#include "scr17_c.inc"
56#include "scr18_c.inc"
57#include "sms_c.inc"
58#include "units_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER JFT, JLT,NELTST,ITYPTST,ISMSTR,NFT,IOFC, JSMS,IGTYP,
63 . IGMAT,IMAT,MTN
64 INTEGER NGL(MVSIZ)
65 my_real
66 . PM(NPROPM,*), OFF(*),STI(*),STIR(*),OFFG(*),SSP(MVSIZ),
67 . VISCMX(MVSIZ),DT2T, MSTG(*), DMELTG(*), PTG(3,*),SHF(*), G(MVSIZ),
68 . A11R(MVSIZ),A1(MVSIZ),ALDT(MVSIZ),THK0(MVSIZ),AREA(MVSIZ),ALPE(MVSIZ)
69 INTEGER,INTENT(IN) :: G_DT, NEL
70 my_real,DIMENSION(JLT), INTENT(INOUT) :: DTEL
71 my_real,DIMENSION(NEL),INTENT(IN) :: zoffset
72C-----------------------------------------------
73C L o c a l V a r i a b l e s
74C-----------------------------------------------
75 INTEGER INDX(MVSIZ),I, II, NINDX,IDT
76 my_real dt(mvsiz)
77 my_real athk, mmin,fac
78C=======================================================================
79 DO i=jft,jlt
80 viscmx(i) = sqrt(one + viscmx(i)*viscmx(i)) - viscmx(i)
81 aldt(i) = aldt(i)*viscmx(i) / sqrt(alpe(i))
82 ENDDO
83c---------------------------------------------------
84C
85 IF (nodadt/=0) THEN
86 IF(igtyp == 52 .OR.
87 . ((igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51)
88 . .AND. igmat > 0 )) THEN
89 DO i=jft,jlt
90 IF (off(i)==zero) THEN
91 sti(i) = zero
92 stir(i) = zero
93 ELSE
94 athk = area(i) * thk0(i)
95 sti(i) = athk * a1(i) / aldt(i)**2
96 fac =a11r(i)*area(i)/ aldt(i)**2
97 stir(i) = fac*(one_over_12* thk0(i)**3 + thk0(i)*zoffset(i)*zoffset(i)
98 . + thk0(i)*half * shf(i) * area(i) * g(i)/a1(i))
99 ENDIF
100 ENDDO
101 ELSE
102 DO i=jft,jlt
103 a1(i) = pm(24,imat)
104 g(i) = pm(22,imat)
105 ENDDO
106 IF (mtn == 58 .or. mtn == 158) CALL cssp2a11(pm ,imat ,ssp ,a1 ,jlt )
107 DO i=jft,jlt
108 IF (off(i)==zero) THEN
109 sti(i) = zero
110 stir(i) = zero
111 ELSE
112 athk = area(i) * thk0(i)
113 sti(i) = athk * a1(i) / aldt(i)**2
114 stir(i) = sti(i) * (thk0(i) * thk0(i) * one_over_12
115 . + half * shf(i) * area(i) * g(i)/a1(i))
116c STI(I) = 0.5 * ATHK * A1(I) / ALDT(I)**2
117c STIR(I) = STI(I) * (THK0(I) * THK0(I) / 12.
118c . + AREA(I) /9.)
119 ENDIF
120 ENDDO
121 ENDIF
122C
123 ELSEIF(idtmins == 2)THEN
124 IF(igtyp == 52 .OR.
125 . ((igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51)
126 . .AND. igmat > 0 )) THEN
127 DO i=jft,jlt
128 IF (off(i)==zero) THEN
129 sti(i) = zero
130 stir(i) = zero
131 ELSE
132 athk = area(i) * thk0(i)
133 sti(i) = athk * a1(i) / aldt(i)**2
134 fac = a11r(i)*area(i)/ aldt(i)**2
135 stir(i) = fac * (one_over_12* (thk0(i)**3) + thk0(i)*zoffset(i)*zoffset(i)
136 . + half * thk0(i)*shf(i) * area(i) * g(i)/a1(i))
137 ENDIF
138 END DO
139 ELSE
140 DO i=jft,jlt
141 a1(i) = pm(24,imat)
142 g(i) = pm(22,imat)
143 ENDDO
144 DO i=jft,jlt
145 IF (off(i)==zero) THEN
146 sti(i) = zero
147 stir(i) = zero
148 ELSE
149 athk = area(i) * thk0(i)
150 sti(i) = athk * a1(i) / aldt(i)**2
151 stir(i) = sti(i) * (thk0(i) * thk0(i) * one_over_12
152 . + half * shf(i) * area(i) * g(i)/a1(i))
153 ENDIF
154 END DO
155 ENDIF
156C
157 IF(jsms /= 0)THEN
158 DO i=jft,jlt
159 IF(offg(i) < zero .OR. off(i) == zero) cycle
160c
161 mmin=mstg(i)*min(ptg(1,i),ptg(2,i),ptg(3,i))
162c
163c dmelc = 2*dmelc !!
164c w^2 < 2k / (m+dmelc+dmelc/2) < 2k / (m+dmelc)
165c dt = 2/w = sqrt( 2*(m+dmelc)/k)
166 dmeltg(i)=max(dmeltg(i),
167 . (dtmins/dtfacs)**2 * sti(i) - two*mmin)
168 dt(i) = dtfacs*
169 . sqrt((two*mmin+dmeltg(i))/max(em20,sti(i)))
170 IF(dt(i)<dt2t)THEN
171 dt2t = dt(i)
172 neltst = ngl(i)
173 ityptst = 7
174 END IF
175 END DO
176 ENDIF
177C
178 ENDIF
179C
180 DO i=jft,jlt
181 dt(i)=dtfac1(7)*aldt(i)/ssp(i)
182 END DO
183 IF(g_dt/=zero)THEN
184 DO i=jft,jlt
185 dtel(i) = dt(i)
186 ENDDO
187 ENDIF
188C
189 IF (idtmin(7)==0) RETURN
190C
191 nindx=iofc
192 IF(idtmin(7)==1)THEN
193 DO 100 i=jft,jlt
194 IF(dt(i)>dtmin1(7).OR.off(i)<one
195 . .OR.offg(i)==two.OR.offg(i)<zero) GO TO 100
196 tstop = tt
197C
198#include "lockon.inc"
199 WRITE(iout,1000) ngl(i)
200 WRITE(istdo,1000) ngl(i)
201#include "lockoff.inc"
202 100 CONTINUE
203 ELSEIF(idtmin(7)==2)THEN
204 DO 120 i=jft,jlt
205 IF(dt(i)>dtmin1(7).OR.off(i)<one
206 . .OR.offg(i)<zero) GO TO 120
207 off(i)=zero
208
209 ii=i+nft
210 nindx=nindx+1
211 indx(nindx)=i
212 idel7nok = 1
213C
214#include "lockon.inc"
215 WRITE(iout,1200) ngl(i)
216 WRITE(istdo,1300) ngl(i),tt
217#include "lockoff.inc"
218 120 CONTINUE
219 iofc = nindx
220 ELSEIF(ismstr==2.AND.idtmin(7)==3)THEN
221 DO 140 i=jft,jlt
222 IF(dt(i)>dtmin1(7).OR.
223 . off(i)<one.OR.offg(i)==two.OR.offg(i)<zero) GO TO 140
224 offg(i)=two
225C
226#include "lockon.inc"
227 WRITE(iout,1400) ngl(i)
228 WRITE(istdo,1400) ngl(i)
229#include "lockoff.inc"
230 140 CONTINUE
231 ELSEIF(idtmin(7)==5)THEN
232 DO 150 i=jft,jlt
233 IF(dt(i)>dtmin1(7).OR.off(i)<one.
234 . or.offg(i)==two.OR.offg(i)<zero) GO TO 150
235 mstop = 2
236C
237#include "lockon.inc"
238 WRITE(iout,1000) ngl(i)
239 WRITE(istdo,1000) ngl(i)
240#include "lockoff.inc"
241 150 CONTINUE
242 ENDIF
243C
244 IF(nodadt/=0.OR.(idtmins==2.AND.jsms/=0))RETURN
245C
246C- VECTOR
247 idt=0
248 DO i=jft,jlt
249 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t) idt=1
250 ENDDO
251C- NON VECTOR
252 IF(idt==1)THEN
253 DO i=jft,jlt
254 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t)THEN
255 dt2t = dt(i)
256 neltst = ngl(i)
257 ityptst = 7
258 ENDIF
259 ENDDO
260 ENDIF
261C
262 IF(idtmins==2)RETURN
263C
264 DO i=jft,jlt
265 sti(i) = area(i) * thk0(i) * a1(i) / aldt(i)**2
266 sti(i) = zep81 * zep81 * sti(i) * off(i)
267 stir(i)= zero
268 ENDDO
269C-----------
270 1000 FORMAT(1x,'-- MINIMUM TIME STEP 3N SHELL ELEMENT NUMBER ',i10)
271 1200 FORMAT(1x,'-- DELETE 3N SHELL ELEMENT NUMBER ',i10)
272 1300 FORMAT(1x,'-- DELETE 3N SHELL ELEMENT :',i10,' AT TIME :',g11.4)
273 1400 FORMAT(1x,'-- CONSTANT TIME STEP 3N SHELL ELEMENT NUMBER ',i10)
274C-----------
275 RETURN
276 END
subroutine c3dt3(jft, jlt, pm, off, dt2t, neltst, ityptst, sti, stir, offg, ssp, viscmx, ismstr, nft, iofc, alpe, mstg, dmeltg, jsms, ptg, shf, igtyp, igmat, g, a1, a11r, g_dt, dtel, aldt, thk0, area, ngl, imat, mtn, nel, zoffset)
Definition c3dt3.F:39
subroutine cssp2a11(pm, imat, ssp, a11, nel)
Definition cssp2a11.F:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21