OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_dt.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!|| hm_read_dt ../starter/source/general_controls/engine/hm_read_dt.F
25!||--- uses -----------------------------------------------------
26!|| message_mod ../starter/share/message_module/message_mod.F
27!||====================================================================
28 SUBROUTINE hm_read_dt(IGRPART)
29C-----------------------------------------------
30C M o d u l e s
31C-----------------------------------------------
32 USE message_mod
33 USE groupdef_mod
34C-----------------------------------------------
35C I m p l i c i t T y p e s
36C-----------------------------------------------
37#include "implicit_f.inc"
38C-----------------------------------------------
39C C o m m o n B l o c k s
40C-----------------------------------------------
41#include "com04_c.inc"
42#include "com06_c.inc"
43#include "scr02_c.inc"
44#include "scr17_c.inc"
45#include "scr18_c.inc"
46#include "sphcom.inc"
47#include "sms_c.inc"
48#include "units_c.inc"
49C-----------------------------------------------
50C D u m m y A r g u m e n t s
51C-----------------------------------------------
52 TYPE(group_) ,DIMENSION(NGRPART) :: IGRPART
53C-----------------------------------------------
54C L o c a l V a r i a b l e s
55C-----------------------------------------------
56 INTEGER I
58 . dt_crit
59C-----------------------------------------------
60C Initializations ../..
61C-----------------------------------------------
62 DO i=1,102
63 dtfac1(i) = zero
64 dtmin1(i) = zero
65 idtmin(i) = 0
66 idtgr(i) = 0
67 ENDDO
68 nodadt = 0
69C-----
70 min_aspect = zero
71 min_defv = zero
72C-----
73C /DTIX
74 dtin = zero
75 dtmx = zero
76C-----
77C /DT/AMS & /DT/INTER/AMS
78 dtfacs = zero
79 dtmins = zero
80 dtfacs_int = zero
81 dtmins_int = zero
82C-----------------------------------------------
83C Read options ../..
84C-----------------------------------------------
85C
86C-----------------------------------------------
87C Finitializations after reading
88C-----------------------------------------------
89 DO i=1,51
90 IF(dtmin1(i) == zero)dtmin1(i) = dtmin
91 IF(dtfac1(i) == zero)dtfac1(i) = dtfac
92 ENDDO
93C-----
94 IF(nodadt == 0)THEN
95 IF(idtmin(1) == 0)idtmin(1) = 1
96 IF(idtmin(2) == 0)idtmin(2) = 1
97 IF(idtmin(3) == 0)idtmin(3) = 2
98 IF(idtmin(7) == 0)idtmin(7) = 2
99 ENDIF
100C-----
101 IF(idtmins/=0)THEN
102 IF(dtmins == zero)dtmins = dtmin
103 IF(dtfacs == zero)dtfacs = dtfac
104 IF(tol_sms == zero) tol_sms = em03
105 IF(nsmspcg==0)nsmspcg=1000
106 ENDIF
107 IF(idtmins_int/=0)THEN
108 IF(dtmins_int == zero)dtmins_int = dtmin
109 IF(dtfacs_int == zero)dtfacs_int = dtfac
110 IF(tol_sms == zero) tol_sms = em03
111 IF(nsmspcg==0)nsmspcg=1000
112 ENDIF
113C-----
114C-----------------------------------------------
115C Printing
116C-----------------------------------------------
117 WRITE(iout,1000)
118 IF(idt1sh /=0) WRITE(iout,4720)
119 IF(idt1sol /= 0) WRITE(iout,4710)
120 IF(idt1sol/=0) WRITE(iout,4730)
121 IF(idt1tet10/=0) WRITE(iout,4740)
122 IF(nodadt == 0)THEN
123 IF (min_aspect+min_defv > zero) THEN
124 WRITE(iout,1115) dtfac1(1),dtmin1(1),idtmin(1),
125 + min_aspect,min_defv,
126 + dtfac1(2),dtmin1(2),idtmin(2),
127 + dtfac1(3),dtmin1(3),idtmin(3),
128 + dtfac1(4),dtmin1(4),idtmin(4),
129 + dtfac1(5),dtmin1(5),idtmin(5),
130 + dtfac1(6),dtmin1(6),idtmin(6),
131 + dtfac1(9),dtmin1(9),idtmin(9),
132 + dtfac1(10),dtmin1(10),idtmin(10)
133 ! WRITE(IOUT,4710) DTFAC1(102),DTMIN1(102)
134 ELSE
135 WRITE(iout,1105) dtfac1(1),dtmin1(1),idtmin(1),
136 + dtfac1(2),dtmin1(2),idtmin(2),
137 + dtfac1(3),dtmin1(3),idtmin(3),
138 + dtfac1(4),dtmin1(4),idtmin(4),
139 + dtfac1(5),dtmin1(5),idtmin(5),
140 + dtfac1(6),dtmin1(6),idtmin(6),
141 + dtfac1(9),dtmin1(9),idtmin(9),
142 + dtfac1(10),dtmin1(10),idtmin(10)
143 ! WRITE(IOUT,4710) DTFAC1(102),DTMIN1(102)
144 END IF
145 IF(idtmin(11) == 3 .OR. idtmin(11) == 8) THEN
146 WRITE(iout,1107)dtfac1(11),dtmin1(11),idtmin(11)
147 ENDIF
148 IF(idtmins_int/=0)THEN
149 WRITE(iout,1208) dtfacs_int,dtmins_int
150 END IF
151 IF(idtmins/=0)THEN
152 IF(idtgrs <= 0)THEN
153 WRITE(iout,1108) dtfacs,dtmins,tol_sms,
154 . nsmspcg,ncprisms,-idtgrs
155 ELSE
156 WRITE(iout,1108) dtfacs,dtmins,tol_sms,
157 . nsmspcg,ncprisms,
158 . igrpart(idtgrs)%ID
159 END IF
160 END IF
161 ELSE
162 IF(idtmin(11)==3.OR.idtmin(11) == 8)THEN
163 WRITE(iout,1106) dtfac1(11),dtmin1(11),idtmin(11)
164 END IF
165 IF (min_aspect+min_defv > zero) THEN
166 WRITE(iout,1115) dtfac1(1),dtmin1(1),idtmin(1),
167 + min_aspect,min_defv,
168 + dtfac1(2),dtmin1(2),idtmin(2),
169 + dtfac1(3),dtmin1(3),idtmin(3),
170 + dtfac1(4),dtmin1(4),idtmin(4),
171 + dtfac1(5),dtmin1(5),idtmin(5),
172 + dtfac1(6),dtmin1(6),idtmin(6),
173 + dtfac1(9),dtmin1(9),idtmin(9),
174 + dtfac1(10),dtmin1(10),idtmin(10)
175 ! WRITE(IOUT,4710) DTFAC1(102),DTMIN1(102)
176 ELSE
177 WRITE(iout,1105) dtfac1(1),dtmin1(1),idtmin(1),
178 + dtfac1(2),dtmin1(2),idtmin(2),
179 + dtfac1(3),dtmin1(3),idtmin(3),
180 + dtfac1(4),dtmin1(4),idtmin(4),
181 + dtfac1(5),dtmin1(5),idtmin(5),
182 + dtfac1(6),dtmin1(6),idtmin(6),
183 + dtfac1(9),dtmin1(9),idtmin(9),
184 + dtfac1(10),dtmin1(10),idtmin(10)
185 ! WRITE(IOUT,4710) DTFAC1(102),DTMIN1(102)
186 END IF ! (MIN_ASPECT+MIN_DEFV > ZERO) THEN
187 IF(idtmins_int/=0)THEN
188 WRITE(iout,1208) dtfacs_int,dtmins_int
189 END IF
190C
191 IF (idtmins/=0) THEN
192 IF (isms_selec < 3) THEN
193 IF(idtgrs<=0)THEN
194 WRITE(iout,1108) dtfacs,dtmins,tol_sms,
195 . nsmspcg,ncprisms,-idtgrs
196 ELSE
197 WRITE(iout,1108) dtfacs,dtmins,tol_sms,
198 . nsmspcg,ncprisms,
199 . igrpart(idtgrs)%ID
200 END IF
201 ELSE
202C-- /DT/CST_AMS >- automatic element selection
203 dt_crit = dtmins / max(em20,dtfac1(11))
204 IF(idtgrs<=0)THEN
205 WRITE(iout,2108) dtfacs,dtmins,tol_sms,
206 . nsmspcg,ncprisms,dt_crit,-idtgrs
207 ELSE
208 WRITE(iout,2108) dtfacs,dtmins,tol_sms,
209 . nsmspcg,ncprisms,dt_crit,
210 . igrpart(idtgrs)%ID
211 END IF
212 ENDIF
213 END IF
214C
215 ENDIF ! IF(NODADT == 0)THEN
216C-----
217 IF(numsph /= 0)THEN
218 IF(idtmin(51) == 3)THEN
219 WRITE(istdo,*)
220 .' ** WARNING SMALL STRAIN FORMULATION FOR SPH'
221 WRITE(iout,*)
222 .' ** WARNING SMALL STRAIN FORMULATION IS NOT AVAILABLE FOR SPH,',
223 . ' OPTION /DT/SPHCEL/CST WILL BE OMITTED.'
224 idtmin(51)=0
225 ENDIF
226 IF(nodadt == 1)THEN
227 WRITE(iout,*)
228 . 'IMPROVED TIME STEP (NODAL) COMPUTATION ON SPH PARTICLES :'
229 dtfac1(51)=dtfac1(11)
230 ENDIF
231 WRITE(iout,1151)dtfac1(51),dtmin1(51),idtmin(51)
232 ENDIF
233C-----
234 WRITE(iout,1152)dtfac1(52),dtmin1(52),idtmin(52)
235C-----------------------------------------------
236 1000 FORMAT(/,' TIME STEP CONTROL . . . . . . .. . . . . . . ',/,
237 . ' ---------------------------------------------'/)
238 1105 FORMAT(
239 . ' BRICK TIME STEP SCALE FACTOR . . . . . . . . . . ',g14.7/
240 . ' BRICK MINIMUM TIME STEP. . . . . . . . . . . . . ',g14.7/
241 . ' MIN. TIME STEP FLAG (1:STOP RUN, 2:DELETE BRICK) ',i5//
242 . ' QUAD TIME STEP SCALE FACTOR. . . . . . . . . . . ',g14.7/
243 . ' QUAD MINIMUM TIME STEP . . . . . . . . . . . . . ',g14.7/
244 . ' MIN. TIME STEP FLAG (1:STOP RUN, 2:DELETE QUAD). ',i5//
245 . ' SHELL TIME STEP SCALE FACTOR . . . . . . . . . . ',g14.7/
246 . ' SHELL MINIMUM TIME STEP. . . . . . . . . . . . . ',g14.7/
247 . ' MIN. TIME FLAG (1:STOP, 2:DELETE, 3:SMALL STRAIN)',i5//
248 . ' TRUSS TIME STEP SCALE FACTOR . . . . . . . . . . ',g14.7/
249 . ' TRUSS MINIMUM TIME STEP. . . . . . . . . . . . . ',g14.7/
250 . ' MIN. TIME FLAG (1:STOP, 2:DELETE). . . . . . . . ',i5//
251 . ' BEAM TIME STEP SCALE FACTOR. . . . . . . . . . . ',g14.7/
252 . ' BEAM MINIMUM TIME STEP . . . . . . . . . . . . . ',g14.7/
253 . ' MIN. TIME FLAG (1:STOP, 2:DELETE). . . . . . . . ',i5//
254 . ' SPRING TIME STEP SCALE FACTOR. . . . . . . . . . ',g14.7/
255 . ' SPRING MINIMUM TIME STEP . . . . . . . . . . . . ',g14.7/
256 . ' MIN. TIME FLAG (1:STOP, 2:DELETE). . . . . . . . ',i5//
257 . ' AIRBAG TIME STEP SCALE FACTOR. . . . . . . . . . ',g14.7/
258 . ' AIRBAG MINIMUM TIME STEP . . . . . . . . . . . . ',g14.7/
259 . ' MIN. TIME FLAG (1:STOP). . . . . . . . . . . . . ',i5//
260 . ' CONTACT TIME STEP SCALE FACTOR . . . . . . . . . ',g14.7/
261 . ' CONTACT MINIMUM TIME STEP. . . . . . . . . . . . ',g14.7/
262 . ' MIN. TIME FLAG(1:STOP, 2:REMOVE NODE FROM INTERF)',i5/ )
263 1106 FORMAT(
264 . ' NODAL TIME STEP SCALE FACTOR, . . . . . . . . . ',g14.7/
265 . ' NODAL MINIMUM TIME STEP. . . . . . . . . . . . . ',g14.7/
266 . ' MIN. TIME FLAG . . . . . . . . . . . . . . . . . ',i5/
267 . ' 1:STOP. . . . . . . . . . . . . . . . . . . . ',/
268 . ' 3:INCREASE MASS, ORIGINAL FORMULATION . . . . ',/
269 . ' 8:INCREASE MASS, IMPROVED FORMULATION . . . . ',//)
270 1107 FORMAT(
271 . ' CONTACT NODAL TIME STEP SCALE FACTOR . . . . . . ',g14.7/
272 . ' CONTACT NODAL MINIMUM TIME STEP. . . . . . . . . ',g14.7/
273 . ' CONTACT NODAL MIN. TIME FLAG . . . . . . . . . . ',i5/
274 . ' 3:INCREASE MASS, ORIGINAL FORMULATION . . . . ',/
275 . ' 8:INCREASE MASS, IMPROVED FORMULATION . . . . ',//)
276 1108 FORMAT(
277 . ' ADVANCED MASS SCALING IS ON . . . . . . . . . . .',/
278 . ' AMS NODAL TIME STEP SCALE FACTOR. . . . . . . . .',g14.7/
279 . ' AMS NODAL MINIMUM TIME STEP . . . . . . . . . . .',g14.7/
280 . ' AMS TOLERANCE ON CONVERGENCE. . . . . . . . . . .',g14.7/
281 . ' AMS MAXIMUM NUMBER OF ITERATIONS FOR CONVERGENCE.',i10/
282 . ' OUTPUT FREQUENCY OF INFORMATION / CONVERGENCE . .',i10/
283 . ' PART GROUP ID (=0 ALL PARTS) . . . . . . . . . . ',i10//)
284 1113 FORMAT(
285 . ' GLOBAL TIME STEP IS ON . . . . . . . . . . . . . . .',/
286 . ' GLOBAL TIME STEP SCALE FACTOR. . . . . . .. . . .',g14.7/
287 . ' GLOBAL TIME STEP TOLERANCE ON CONVERGENCE. . .. .',g14.7/
288 . ' NUMBER OF CYCLES FOR GLOBAL TIME STEP UPDATE. . .',i10//)
289 1115 FORMAT(
290 . ' BRICK TIME STEP SCALE FACTOR . . . . . . . . . . ',g14.7/
291 . ' BRICK MINIMUM TIME STEP. . . . . . . . . . . . . ',g14.7/
292 . ' MIN. TIME STEP FLAG (1:STOP RUN, 2:DELETE 3:CST )',i5//
293 . ' BRICK MINIMUM ASPECT RATIO (Tet collapse). . . . :',g14.7/
294 . ' BRICK MINIMUM VOLUME CHANGE . . . . . . . . . . .:',g14.7//
295 . ' QUAD TIME STEP SCALE FACTOR. . . . . . . . . . . ',g14.7/
296 . ' QUAD MINIMUM TIME STEP . . . . . . . . . . . . . ',g14.7/
297 . ' MIN. TIME STEP FLAG (1:STOP RUN, 2:DELETE QUAD). ',i5//
298 . ' shell time step scale factor . . . . . . . . . . ',G14.7/
299 . ' shell minimum time step. . . . . . . . . . . . . ',G14.7/
300 . ' min. time flag(1:stop, 2:delete, 3:small strain)',I5//
301 . ' truss time step scale factor . . . . . . . . . . ',G14.7/
302 . ' truss minimum time step. . . . . . . . . . . . . ',G14.7/
303 . ' min. time flag(1:stop, 2:delete). . . . . . . . ',I5//
304 . ' beam time step scale factor. . . . . . . . . . . ',G14.7/
305 . ' beam minimum time step . . . . . . . . . . . . . ',G14.7/
306 . ' min. time flag(1:stop, 2:delete). . . . . . . . ',I5//
307 . ' spring time step scale factor. . . . . . . . . . ',G14.7/
308 . ' spring minimum time step . . . . . . . . . . . . ',G14.7/
309 . ' min. time flag (1:stop, 2:delete). . . . . . . . ',I5//
310 . ' airbag time step scale factor. . . . . . . . . . ',G14.7/
311 . ' airbag minimum time step . . . . . . . . . . . . ',G14.7/
312 . ' min. time flag(1:stop). . . . . . . . . . . . . ',I5//
313 . ' INTERFACE type 7 time step scale factor. . . . . ',G14.7/
314 . ' INTERFACE type 7 minimum time step . . . . . . . ',G14.7/
315 . ' min. time flag(1:stop, 2:remove node from interf)',I5/ )
316 1151 FORMAT(
317 . ' smooth particles time step scale factor. . . . . ',G14.7/
318 . ' smooth particles minimum time step . . . . . . . ',G14.7/
319 . ' min. time flag(1:stop, 2:delete, 5:kill). . . . ',I5 )
320 1152 FORMAT(
321 . ' fvmbag time step scale factor. . . . . . . . . . ',G14.7/
322 . ' fvmbag minimum time step . . . . . . . . . . . . ',G14.7/
323 . ' fvmbag time step flag. . . . . . . . . . . . . . ',I5,/)
324 1208 FORMAT(
325 . ' ams contact time step is on . . . . . . . . . . . . .',/
326 . ' . . . . . .(all contacts will be concerned).) . . . .',/
327 . ' ams contact time step scale factor. . . . . . . . . .',G14.7/
328 . ' ams contact minimum time step . . . . . . . . . . . .',G14.7//)
329 2108 FORMAT(
330 . ' advanced mass scaling is on . . . . . . . . . . .',/
331 . ' ams time step scale factor. . . . . . . . . . . .',G14.7/
332 . ' ams minimum time step . . . . . . . . . . . . . .',G14.7/
333 . ' ams tolerance on convergence. . . . . . . . . . .',G14.7/
334 . ' ams maximum number of iterations for convergence.',I10/
335 . ' output frequency of information / convergence . .',I10/
336 . ' auto element selection - time step criteria . . .',G14.7/
337 . ' part group id(=0 all parts) . . . . . . . . . . ',I10//)
338 4710 FORMAT(
339 . ' accurate time step computation for heph is used .',/)
340 4720 FORMAT(
341 . ' accurate time step for shells is used. . . . . . ',/)
342 4730 FORMAT(
343 . ' accurate time step for 4-node tetrahedra is used ',/)
344 4740 FORMAT(
345 . ' accurate time step for 10-node tetrahedra is used ',/)
346C-----------------------------------------------
347 RETURN
348 END
#define my_real
Definition cppsort.cpp:32
subroutine hm_read_dt(igrpart)
Definition hm_read_dt.F:29
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
initmumps id
for(i8=*sizetab-1;i8 >=0;i8--)