OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
r2len3.F File Reference
#include "implicit_f.inc"
#include "comlock.inc"
#include "mvsiz_p.inc"
#include "com08_c.inc"
#include "scr02_c.inc"
#include "scr07_c.inc"
#include "scr17_c.inc"
#include "scr18_c.inc"
#include "sms_c.inc"
#include "units_c.inc"
#include "lockon.inc"
#include "lockoff.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine r2len3 (jft, jlt, off, dt2t, neltst, ityptst, sti, stir, ms, in, msrt, dmelrt, g_dt, dtel, ngl, xcr, xin, xm, xkm, xcm, xkr, nc1, nc2, jsms)

Function/Subroutine Documentation

◆ r2len3()

subroutine r2len3 ( integer jft,
integer jlt,
off,
dt2t,
integer neltst,
integer ityptst,
sti,
stir,
ms,
in,
msrt,
dmelrt,
integer, intent(in) g_dt,
dimension(jft:jlt), intent(inout) dtel,
integer, dimension(*) ngl,
xcr,
xin,
xm,
xkm,
xcm,
xkr,
integer, dimension(*) nc1,
integer, dimension(*) nc2,
integer, intent(in) jsms )

Definition at line 31 of file r2len3.F.

38C-----------------------------------------------
39C I m p l i c i t T y p e s
40C-----------------------------------------------
41#include "implicit_f.inc"
42#include "comlock.inc"
43C-----------------------------------------------
44C G l o b a l P a r a m e t e r s
45C-----------------------------------------------
46#include "mvsiz_p.inc"
47C-----------------------------------------------
48C C o m m o n B l o c k s
49C-----------------------------------------------
50#include "com08_c.inc"
51#include "scr02_c.inc"
52#include "scr07_c.inc"
53#include "scr17_c.inc"
54#include "scr18_c.inc"
55#include "sms_c.inc"
56#include "units_c.inc"
57C-----------------------------------------------
58C D u m m y A r g u m e n t s
59C-----------------------------------------------
60 INTEGER, INTENT(IN) :: JSMS
61 INTEGER JFT,JLT,NELTST ,ITYPTST,NGL(*),NC1(*),NC2(*)
62 my_real dt2t,
63 . off(*), sti(3,*), stir(3,*), ms(*), in(*),
64 . msrt(*), dmelrt(*),xcr(mvsiz), xin(mvsiz),
65 . xm(mvsiz),xkm(mvsiz),xcm(mvsiz),xkr(mvsiz)
66 my_real,INTENT(INOUT) :: dtel(jft:jlt)
67 INTEGER,INTENT(IN) :: G_DT
68C-----------------------------------------------
69C L o c a l V a r i a b l e s
70C-----------------------------------------------
71 INTEGER I
73 . dt(mvsiz),dtc(mvsiz),
74 . a, mass2, in2, b, dta, dtb, mx
75C-----------------------------------------------
76 IF(nodadt/=0.OR.idtmins==2)THEN
77C
78 DO i=jft,jlt
79 sti(1,i) = zero
80 sti(2,i) = zero
81 stir(1,i) = zero
82 stir(2,i) = zero
83 IF(off(i)>zero)THEN
84 IF(ms(nc1(i))/=zero)THEN
85 mass2 = two * ms(nc1(i))
86 ELSE
87 mass2 = xm(i)
88 ENDIF
89 IF(xkm(i)/=zero.AND.xcm(i)/=zero.AND.
90 . mass2/=zero)THEN
91 sti(1,i) = (xcm(i) + sqrt(xcm(i)**2+xkm(i)*mass2))**2/mass2
92 ELSEIF(xkm(i)/=zero)THEN
93 sti(1,i) = xkm(i)
94 ELSEIF(xcm(i)/=zero.AND.mass2/=zero)THEN
95 a = four * xcm(i)**2
96 sti(1,i) = a / mass2
97 ENDIF
98C
99 IF(ms(nc2(i))/=zero)THEN
100 mass2 = two * ms(nc2(i))
101 ELSE
102 mass2 = xm(i)
103 ENDIF
104 IF(xkm(i)/=zero.AND.xcm(i)/=zero.AND.
105 . mass2/=zero)THEN
106 sti(2,i) = (xcm(i) + sqrt(xcm(i)**2+xkm(i)*mass2))**2/mass2
107 ELSEIF(xkm(i)/=zero)THEN
108 sti(2,i) = xkm(i)
109 ELSEIF(xcm(i)/=zero.AND.mass2/=zero)THEN
110 a = four * xcm(i)**2
111 sti(2,i) = a / mass2
112 ENDIF
113C
114 IF(in(nc1(i))/=zero)THEN
115 in2 = two * in(nc1(i))
116 ELSE
117 in2 = xin(i)
118 ENDIF
119 IF(xkr(i)/=zero.AND.xcr(i)/=zero.AND.
120 . in2/=zero)THEN
121 stir(1,i) = (xcr(i) + sqrt(xcr(i)**2+xkr(i)*in2))**2/in2
122 ELSEIF(xkr(i)/=zero)THEN
123 stir(1,i) = xkr(i)
124 ELSEIF(xcr(i)/=zero.AND.in2/=zero)THEN
125 a = four * xcr(i)**2
126 stir(1,i) = a / in2
127 ENDIF
128C
129 IF(in(nc2(i))/=zero)THEN
130 in2 = two * in(nc2(i))
131 ELSE
132 in2 = xin(i)
133 ENDIF
134 IF(xkr(i)/=zero.AND.xcr(i)/=zero.AND.
135 . in2/=zero)THEN
136 stir(2,i) = (xcr(i) + sqrt(xcr(i)**2+xkr(i)*in2))**2/in2
137 ELSEIF(xkr(i)/=zero)THEN
138 stir(2,i) = xkr(i)
139 ELSEIF(xcr(i)/=zero.AND.in2/=zero)THEN
140 a = four * xcr(i)**2
141 stir(2,i) = a / in2
142 ENDIF
143 ENDIF
144 ENDDO ! DO I=JFT,JLT
145C
146 IF(idtmin(6)==0.AND.(idtmins/=2.OR.jsms==0))RETURN
147C
148 IF(idtmins==2.AND.jsms/=0)THEN
149C
150C IDTMINS=2 & JSMS=1 <=> AMS & elementary time step
151C
152 dta=dtmins/dtfacs
153 dtb=dta*dta
154 DO i=jft,jlt
155 IF(off(i)<=zero) cycle
156 dmelrt(i)=max(dmelrt(i),
157 . xcm(i)*dta+half*xkm(i)*dtb-half*msrt(i))
158C
159C MX = 2*(Mn+2*DeltaM)
160 mx =msrt(i)+two*dmelrt(i)
161C
162 IF(xcm(i)+xkm(i)<em15)mx =one
163 xkm(i)= max(em15,xkm(i))
164
165 dt(i)=dtfacs*
166 . mx /max(em15,sqrt(xcm(i)*xcm(i)+mx*xkm(i))+xcm(i))
167 ENDDO
168C
169 DO i=jft,jlt
170 IF(off(i)<=zero) cycle
171 IF(dt(i)<dt2t) THEN
172 dt2t=dt(i)
173 neltst =ngl(i)
174 ityptst=6
175 ENDIF
176 ENDDO
177 ELSE
178C
179 DO i=jft,jlt
180 IF(xcm(i)+xkm(i)<em15)xm(i) =one
181 xkm(i)= max(em15,xkm(i))
182 dt(i)=xm(i)/max(em15,sqrt(xcm(i)*xcm(i)+xm(i)*xkm(i))+xcm(i))
183 IF(xcr(i)+xkr(i)<em15)xin(i)=one
184 xkr(i)= max(em15,xkr(i))
185 dtc(i)=xin(i)/max(em15,sqrt(xcr(i)*xcr(i)+xin(i)*xkr(i))+xcr(i))
186 dt(i)= min(dt(i),dtc(i))
187 ENDDO
188C
189 DO i=jft,jlt
190 IF(off(i)>zero)THEN
191 dt(i)=dtfac1(6)*dt(i)
192 IF(idtmin(6)==1.AND.dt(i)<dtmin1(6))THEN
193 tstop = tt
194#include "lockon.inc"
195 WRITE(iout,*)
196 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
197 WRITE(istdo,*)
198 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
199#include "lockoff.inc"
200 ELSEIF(idtmin(6)==5.AND.dt(i)<dtmin1(6))THEN
201 mstop = 2
202#include "lockon.inc"
203 WRITE(iout,*)
204 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
205 WRITE(istdo,*)
206 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
207#include "lockoff.inc"
208 ELSEIF(idtmin(6)==2.AND.dt(i)<dtmin1(6))THEN
209 off(i)=zero
210#include "lockon.inc"
211 WRITE(iout,*) '-- DELETE OF SPRING ELEMENT NUMBER',ngl(i)
212#include "lockoff.inc"
213 idel7nok = 1
214 ENDIF
215 ENDIF
216 ENDDO
217 END IF
218C
219 ELSE
220C
221 DO i=jft,jlt
222 IF(xcm(i)+xkm(i)<em15)xm(i) =one
223 xkm(i)= max(em15,xkm(i))
224 dt(i)=xm(i)/max(em15,sqrt(xcm(i)*xcm(i)+xm(i)*xkm(i))+xcm(i))
225 ENDDO
226C
227 DO i=jft,jlt
228 sti(1,i) = zero
229 sti(2,i) = zero
230 stir(1,i) = zero
231 stir(2,i) = zero
232 IF(off(i)>zero) THEN
233 sti(1,i) = xm(i) / dt(i)**2
234 sti(2,i) = sti(1,i)
235 ENDIF
236 ENDDO
237C
238 DO i=jft,jlt
239 IF(xcr(i)+xkr(i)<em15)xin(i)=one
240 xkr(i)= max(em15,xkr(i))
241 dtc(i)=xin(i)/max(em15,sqrt(xcr(i)*xcr(i)+xin(i)*xkr(i))+xcr(i))
242 dt(i)= min(dt(i),dtc(i))
243 ENDDO
244C
245 DO i=jft,jlt
246 IF(off(i)>zero)THEN
247 dt(i)=dtfac1(6)*dt(i)
248 IF(idtmin(6)==1.AND.dt(i)<dtmin1(6))THEN
249 tstop = tt
250#include "lockon.inc"
251 WRITE(iout,*)
252 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
253 WRITE(istdo,*)
254 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
255#include "lockoff.inc"
256 ELSEIF(idtmin(6)==5.AND.dt(i)<dtmin1(6))THEN
257 mstop = 2
258#include "lockon.inc"
259 WRITE(iout,*)
260 . ' **error : time step less or equal dtmin for spring element'
261 WRITE(ISTDO,*)
262 . ' **error : time step less or equal dtmin for spring element'
263#include "lockoff.inc"
264.AND. ELSEIF(IDTMIN(6)==2DT(I)<DTMIN1(6))THEN
265 OFF(I)=ZERO
266#include "lockon.inc"
267 WRITE(IOUT,*) '-- delete of spring element number',NGL(I)
268#include "lockoff.inc"
269 IDEL7NOK = 1
270 ENDIF
271 IF(DT(I)<DT2T)THEN
272 DT2T=DT(I)
273 NELTST =NGL(I)
274 ITYPTST=6
275 ENDIF
276 ENDIF
277 ENDDO
278 ENDIF
279C------------------------------
280 IF(G_DT/=0)THEN
281 DO I=JFT,JLT
282 DTEL(I) = DT(I)
283 ENDDO
284 ENDIF
285C------------------------------
286
287 RETURN
288C
#define my_real
Definition cppsort.cpp:32
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)
Definition dtel.F:46
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
for(i8=*sizetab-1;i8 >=0;i8--)