OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
r26def3.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!|| r26def3 ../engine/source/elements/spring/r26def3.F
25!||--- called by ------------------------------------------------------
26!|| rforc3 ../engine/source/elements/spring/rforc3.F
27!||--- calls -----------------------------------------------------
28!|| r26sig ../engine/source/elements/spring/r26sig.F
29!||--- uses -----------------------------------------------------
30!|| python_funct_mod ../common_source/modules/python_mod.F90
31!||====================================================================
32 SUBROUTINE r26def3(python,
33 1 F, E, DL, AL0,
34 2 DV0, FEP, DPL2, IPOS,
35 3 GEO, IGEO, NPF, TF,
36 4 V, OFF, ANIM, FR_WAVE,
37 5 AL0_ERR, X1DP, X2DP, NGL,
38 6 MGN, EX, EY, EZ,
39 7 XK, XM, XC, AK,
40 8 NEL, NFT, IAD, CRIT)
41 use python_funct_mod
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46#include "comlock.inc"
47C-----------------------------------------------
48C G l o b a l P a r a m e t e r s
49C-----------------------------------------------
50#include "mvsiz_p.inc"
51C-----------------------------------------------
52C C o m m o n B l o c k s
53C-----------------------------------------------
54#include "units_c.inc"
55#include "scr17_c.inc"
56#include "scr14_c.inc"
57#include "param_c.inc"
58#include "com08_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 type(python_), intent(inout) :: python
63 INTEGER, INTENT(IN) :: NFT
64 INTEGER, INTENT(INOUT) :: IAD
65 INTEGER, INTENT(IN) :: NEL
66 INTEGER NPF(*),IGEO(NPROPGI,*),NGL(*),MGN(*)
67C REAL
68 my_real
69 . GEO(NPROPG,*), F(*), AL0(*), E(*), DL(*), TF(*), OFF(*),
70 . dv0(*), dpl2(*), fep(*),anim(*),ipos(*),fr_wave(*),v(3,*),
71 . al0_err(*),ex(mvsiz), ey(mvsiz), ez(mvsiz),xk(mvsiz),
72 . xm(mvsiz),xc(mvsiz),ak(mvsiz)
73 DOUBLE PRECISION X1DP(3,*),X2DP(3,*)
74 my_real, DIMENSION(NEL), INTENT(INOUT) ::
75 . crit
76C-----------------------------------------------
77C L o c a l V a r i a b l e s
78C-----------------------------------------------
79 INTEGER I, J, ILENG,NINDX, PID
80 INTEGER NC1(MVSIZ), NC2(MVSIZ),INDX(MVSIZ)
81C REAL
82 my_real
83 . dlold(mvsiz),dmn(mvsiz),dmx(mvsiz),xl0(mvsiz),
84 . dv(mvsiz),alpha(mvsiz)
85 my_real
86 . dt11, bid, sum
87 DOUBLE PRECISION EXDP(MVSIZ),EYDP(MVSIZ),EZDP(MVSIZ),ALDP(MVSIZ),
88 . al0dp(mvsiz)
89C-----------------------------------------------
90 dt11 = dt1
91 IF (dt11 == zero) dt11 = ep30
92c
93 DO i=1,nel
94 pid = mgn(i)
95 xm(i) =geo(1,pid)
96 xk(i) =geo(2,pid)
97 xc(i) =zero
98 alpha(i)=geo(4,pid)
99 dmn(i) =geo(15,pid)
100 dmx(i) =geo(16,pid)
101 ak(i) = one
102 ENDDO
103C
104 DO i=1,nel
105 exdp(i)=x2dp(1,i)-x1dp(1,i)
106 eydp(i)=x2dp(2,i)-x1dp(2,i)
107 ezdp(i)=x2dp(3,i)-x1dp(3,i)
108 dlold(i)=dl(i)
109 aldp(i)=sqrt(exdp(i)*exdp(i)+eydp(i)*eydp(i)+ezdp(i)*ezdp(i))
110 ENDDO
111C
112 IF (tt == zero) THEN
113 DO i=1,nel
114 al0(i)=aldp(i) ! cast double vers My_real
115 al0_err(i)=aldp(i)-al0(i) ! difference entre double et My_real
116 ENDDO
117 ENDIF
118C
119 DO i=1,nel
120 al0dp(i) = al0(i) ! cast My_real en double
121 al0dp(i) = al0dp(i) + al0_err(i) ! AL_DP doit etre recalcule ainsi afin de garantir la coherence absolue entre AL0_DP et AL_DP
122 ENDDO
123C
124 DO i=1,nel
125 sum = max(aldp(i),em15)
126 exdp(i)= exdp(i)/sum
127 eydp(i)= eydp(i)/sum
128 ezdp(i)= ezdp(i)/sum
129 ex(i)=exdp(i)
130 ey(i)=eydp(i)
131 ez(i)=ezdp(i)
132 ENDDO
133C
134 DO i=1,nel
135 dl(i) = aldp(i) - al0dp(i)
136 ENDDO
137C
138 DO i=1,nel
139 ileng = nint(geo(93,mgn(i)))
140 IF (ileng /= 0) THEN
141 xl0(i)= al0dp(i)
142 ELSE
143 xl0(i)=one
144 ENDIF
145 ENDDO
146C
147C-----
148 CALL r26sig(python,
149 1 f, xk, dl, dlold,
150 2 e, off, xl0, tf,
151 3 npf, anim, anim_fe(11),fr_wave,
152 4 dmn, dmx, igeo, geo,
153 5 mgn, dv0, alpha, nel,
154 6 nft, iad)
155C-----
156 nindx = 0
157 DO i=1,nel
158 IF (off(i) == one) THEN
159 crit(i) = max(dl(i)/(dmx(i)*xl0(i)),dl(i)/(dmn(i)*xl0(i)))
160 crit(i) = min(crit(i),one)
161 crit(i) = max(crit(i),zero)
162 IF (dl(i) > dmx(i)*xl0(i) .OR. dl(i) < dmn(i)*xl0(i)) THEN
163 crit(i) = one
164 off(i)=zero
165 nindx = nindx + 1
166 indx(nindx) = i
167 idel7nok = 1
168 ENDIF
169 ENDIF
170 ENDDO
171 DO j=1,nindx
172 i = indx(j)
173#include "lockon.inc"
174 WRITE(iout, 1000) ngl(i)
175 WRITE(istdo,1100) ngl(i),tt
176#include "lockoff.inc"
177 ENDDO
178 DO i=1,nel
179 xm(i)=xm(i)*xl0(i)
180 xk(i)=xk(i)/xl0(i)
181 xc(i)=xc(i)/xl0(i)
182 ENDDO
183C-----------
184 1000 FORMAT(1x,'-- RUPTURE OF SPRING ELEMENT NUMBER ',i10)
185 1100 FORMAT(1x,'-- RUPTURE OF SPRING ELEMENT :',i10,' AT TIME :',g11.4)
186C-----------
187 RETURN
188 END SUBROUTINE r26def3
#define alpha
Definition eval.h:35
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine r26def3(python, f, e, dl, al0, dv0, fep, dpl2, ipos, geo, igeo, npf, tf, v, off, anim, fr_wave, al0_err, x1dp, x2dp, ngl, mgn, ex, ey, ez, xk, xm, xc, ak, nel, nft, iad, crit)
Definition r26def3.F:41
subroutine r26sig(python, fx, xk, dx, dxold, e, off, xl0, tf, npf, anim, iani, fr_wave, dmn, dmx, igeo, geo, pid, dv0, alpha, nel, nft, iad)
Definition r26sig.F:39