OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
intstamp_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!|| intstamp_dt ../engine/source/interfaces/int21/intstamp_dt.F
25!||--- called by ------------------------------------------------------
26!|| resol ../engine/source/engine/resol.F
27!||--- uses -----------------------------------------------------
28!|| intstamp_mod ../engine/share/modules/intstamp_mod.F
29!||====================================================================
30 SUBROUTINE intstamp_dt(
31 1 INTSTAMP ,IPARI, NELTST ,ITYPTST ,DT2T,
32 2 NODNX_SMS,DIAG_SMS,MS ,V ,STIFN,
33 3 STIFR )
34C-----------------------------------------------
35C M o d u l e s
36C-----------------------------------------------
37 USE intstamp_mod
38C-----------------------------------------------
39C I m p l i c i t T y p e s
40C-----------------------------------------------
41#include "implicit_f.inc"
42C-----------------------------------------------
43C C o m m o n B l o c k s
44C-----------------------------------------------
45#include "intstamp_c.inc"
46#include "param_c.inc"
47#include "sms_c.inc"
48C-----------------------------------------------
49C D u m m y A r g u m e n t s
50C-----------------------------------------------
51 INTEGER IPARI(NPARI,*), NELTST, ITYPTST, NODNX_SMS(*)
52C REAL
53 my_real
54 . dt2t, diag_sms(*), ms(*), v(3,*), stifn(*), stifr(*)
55 TYPE(intstamp_data) INTSTAMP(*)
56C-----------------------------------------------
57C L o c a l V a r i a b l e s
58C-----------------------------------------------
59 INTEGER KDIR, NN, K, IROT, MAIN, INTDAMP
60C REAL
61 my_real
62 . mass, stf, inm, str, alpha, vis,
63 . c, cvis(nintstamp), cvisr(nintstamp)
64C-----------------------------------------------
65 IF(idtmins/=2.AND.idtmins_int==0)THEN
66 DO nn=1,nintstamp
67 cvis(nn) =zero
68 cvisr(nn)=zero
69 ENDDO
70 DO nn=1,nintstamp
71 intdamp=intstamp(nn)%INTDAMP
72 mass =intstamp(nn)%MASS
73 alpha=intstamp(nn)%DAMP
74 stf =intstamp(nn)%STF
75 c =alpha*sqrt(four*mass*stf)
76 cvis(nn)=cvis(nn)+c
77 IF(intdamp/=0)THEN
78 cvis(intdamp)=cvis(intdamp)+c
79 END IF
80 irot=intstamp(nn)%IROT
81 IF(irot/=0)THEN
82 inm=min(intstamp(nn)%IN(1),
83 . intstamp(nn)%IN(2),
84 . intstamp(nn)%IN(3))
85 str =intstamp(nn)%STR
86 alpha=intstamp(nn)%DAMPR
87 c =alpha*sqrt(four*inm*str)
88 cvisr(nn)=cvisr(nn)+c
89 IF(intdamp/=0)THEN
90 cvisr(intdamp)=cvisr(intdamp)+c
91 END IF
92 END IF
93 ENDDO
94 DO nn=1,nintstamp
95 intdamp=intstamp(nn)%INTDAMP
96 mass =intstamp(nn)%MASS
97 stf =intstamp(nn)%STF
98 main =intstamp(nn)%MSR
99 IF(stf/=zero)THEN
100 alpha=cvis(nn)/sqrt(four*mass*stf)
101 stf =stf*(sqrt(one+alpha*alpha)+alpha)**2
102 stifn(main)=stifn(main)+stf
103 END IF
104 irot=intstamp(nn)%IROT
105 IF(irot/=0)THEN
106 inm=min(intstamp(nn)%IN(1),
107 . intstamp(nn)%IN(2),
108 . intstamp(nn)%IN(3))
109 str =intstamp(nn)%STR
110 IF(str/=zero)THEN
111 alpha=cvisr(nn)/sqrt(four*inm*str)
112 str =str*(sqrt(one+alpha*alpha)+alpha)**2
113 stifr(main)=stifr(main)+str
114 END IF
115 END IF
116 ENDDO
117 ELSE
118 DO nn=1,nintstamp
119 cvis(nn) =zero
120 cvisr(nn)=zero
121 ENDDO
122 DO nn=1,nintstamp
123 intdamp=intstamp(nn)%INTDAMP
124 mass =intstamp(nn)%MASS
125 alpha=intstamp(nn)%DAMP
126 stf =intstamp(nn)%STF
127 c =alpha*sqrt(four*mass*stf)
128 cvis(nn)=cvis(nn)+c
129 IF(intdamp/=0)THEN
130 cvis(intdamp)=cvis(intdamp)+c
131 END IF
132 irot=intstamp(nn)%IROT
133 IF(irot/=0)THEN
134 inm=min(intstamp(nn)%IN(1),
135 . intstamp(nn)%IN(2),
136 . intstamp(nn)%IN(3))
137 str =intstamp(nn)%STR
138 alpha=intstamp(nn)%DAMPR
139 c =alpha*sqrt(four*inm*str)
140 cvisr(nn)=cvisr(nn)+c
141 IF(intdamp/=0)THEN
142 cvisr(intdamp)=cvisr(intdamp)+c
143 END IF
144 END IF
145 ENDDO
146 DO nn=1,nintstamp
147 main=intstamp(nn)%MSR
148 IF(nodnx_sms(main)==0)THEN
149 mass=intstamp(nn)%MASS
150 stf =intstamp(nn)%STF
151 IF(stf/=zero)THEN
152 alpha=cvis(nn)/sqrt(four*mass*stf)
153 stf =stf*(sqrt(one+alpha*alpha)+alpha)**2
154 stifn(main)=stifn(main)+stf
155 END IF
156 irot=intstamp(nn)%IROT
157 IF(irot/=0)THEN
158 inm=min(intstamp(nn)%IN(1),
159 . intstamp(nn)%IN(2),
160 . intstamp(nn)%IN(3))
161 str =intstamp(nn)%STR
162 IF(str/=zero)THEN
163 alpha=cvisr(nn)/sqrt(four*inm*str)
164 str =str*(sqrt(one+alpha*alpha)+alpha)**2
165 stifr(main)=stifr(main)+str
166 END IF
167 END IF
168 ELSE
169C
170 mass =intstamp(nn)%MASS
171 stf =intstamp(nn)%STF
172 vis =cvis(nn)
173C
174C stabilite des amortisseurs (masse augment e)::
175C DM=HALF*C*DTMINS/DTFACS <=> 2*DM/C=DTMINS/DTFACS
176 diag_sms(main)=diag_sms(main)+half*vis*dtmins/dtfacs
177C
178 irot=intstamp(nn)%IROT
179 IF(irot/=0)THEN
180 inm=min(intstamp(nn)%IN(1),
181 . intstamp(nn)%IN(2),
182 . intstamp(nn)%IN(3))
183 str =intstamp(nn)%STR
184 IF(str/=zero)THEN
185 alpha=cvisr(nn)/sqrt(four*inm*str)
186 str =str*(sqrt(one+alpha*alpha)+alpha)**2
187 stifr(main)=stifr(main)+str
188 END IF
189 END IF
190 END IF
191 ENDDO
192 END IF
193C
194 RETURN
195 END
#define alpha
Definition eval.h:35
subroutine intstamp_dt(intstamp, ipari, neltst, ityptst, dt2t, nodnx_sms, diag_sms, ms, v, stifn, stifr)
Definition intstamp_dt.F:34
#define min(a, b)
Definition macros.h:20