OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
r23bilan.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!|| r23bilan ../engine/source/elements/spring/r23bilan.F
25!||--- called by ------------------------------------------------------
26!|| r23law108 ../engine/source/elements/spring/r23law108.F
27!|| r23law113 ../engine/source/elements/spring/r23law113.F
28!|| r23law114 ../engine/source/elements/spring/r23law114.F
29!||--- calls -----------------------------------------------------
30!|| grelem_sav ../engine/source/output/th/grelem_sav.F
31!||--- uses -----------------------------------------------------
32!|| element_mod ../common_source/modules/elements/element_mod.F90
33!||====================================================================
34 SUBROUTINE r23bilan(
35 1 EINT, PARTSAV, IXR, GEO,
36 2 V, IPARTR, MASS, GRESAV,
37 3 GRTH, IGRTH, OFF_DUM, NC1,
38 4 NC2, X, VR, NEL,
39 5 IGRE)
40 use element_mod , only : nixr
41C-----------------------------------------------
42C I m p l i c i t T y p e s
43C-----------------------------------------------
44#include "implicit_f.inc"
45#include "comlock.inc"
46C-----------------------------------------------
47C G l o b a l P a r a m e t e r s
48C-----------------------------------------------
49#include "mvsiz_p.inc"
50C-----------------------------------------------
51C C o m m o n B l o c k s
52C-----------------------------------------------
53#include "com06_c.inc"
54#include "param_c.inc"
55C-----------------------------------------------
56C D u m m y A r g u m e n t s
57C-----------------------------------------------
58 INTEGER, INTENT(IN) :: NEL
59 INTEGER, INTENT(IN) :: IGRE
60 INTEGER IPARTR(*),IXR(NIXR,*),GRTH(*),IGRTH(*),
61 . NC1(*),NC2(*)
62C REAL
64 . geo(npropg,*),eint(*),partsav(npsav,*),v(3,*), mass(*),
65 . gresav(*),off_dum(*),x(3,*),vr(3,*)
66C-----------------------------------------------
67C L o c a l V a r i a b l e s
68C-----------------------------------------------
69 INTEGER I,MX, FLAG
70 my_real
71 . X1(MVSIZ), Y1(MVSIZ), Z1(MVSIZ),
72 . X2(MVSIZ), Y2(MVSIZ), Z2(MVSIZ),
73 . V1(MVSIZ,3),V2(MVSIZ,3),
74 . vr1(mvsiz,3),vr2(mvsiz,3),
75 . xmas2(mvsiz), reintt,
76 . xmas(mvsiz), inel,
77 . ek(mvsiz), xm(mvsiz), ym(mvsiz), zm(mvsiz),
78 . rbidon(1),off(mvsiz),
79 . in2,rek(mvsiz),
80 . xxm(mvsiz), yym(mvsiz), zzm(mvsiz),
81 . xcg(mvsiz), ycg(mvsiz), zcg(mvsiz),
82 . ixx(mvsiz), iyy(mvsiz), izz(mvsiz),
83 . ixy(mvsiz), iyz(mvsiz), izx(mvsiz),
84 . xx(mvsiz) , yy(mvsiz) , zz(mvsiz) ,
85 . xy(mvsiz) , yz(mvsiz) , zx(mvsiz) ,
86 . xx2(mvsiz), yy2(mvsiz), zz2(mvsiz),
87 . vxa(mvsiz), vya(mvsiz), vza(mvsiz),
88 . va2(mvsiz), vra2(mvsiz)
89C-----------------------------------------------
90 reintt = zero
91 flag = 0
92 rbidon = zero
93 off = zero
94 DO i=1,nel
95 reintt=reintt + eint(i)
96 ENDDO
97C
98!$OMP ATOMIC
99 reint = reint + reintt
100C
101 DO i=1,nel
102 x1(i)=x(1,nc1(i))
103 y1(i)=x(2,nc1(i))
104 z1(i)=x(3,nc1(i))
105 x2(i)=x(1,nc2(i))
106 y2(i)=x(2,nc2(i))
107 z2(i)=x(3,nc2(i))
108 v1(i,1)=v(1,nc1(i))
109 v1(i,2)=v(2,nc1(i))
110 v1(i,3)=v(3,nc1(i))
111 v2(i,1)=v(1,nc2(i))
112 v2(i,2)=v(2,nc2(i))
113 v2(i,3)=v(3,nc2(i))
114 vr1(i,1)=vr(1,nc1(i))
115 vr1(i,2)=vr(2,nc1(i))
116 vr1(i,3)=vr(3,nc1(i))
117 vr2(i,1)=vr(1,nc2(i))
118 vr2(i,2)=vr(2,nc2(i))
119 vr2(i,3)=vr(3,nc2(i))
120 xmas(i)=mass(i)
121 ENDDO
122c
123 DO i=1,nel
124 xx(i)= x1(i)+x2(i)
125 yy(i)= y1(i)+y2(i)
126 zz(i)= z1(i)+z2(i)
127 xx2(i) = x1(i)*x1(i)+x2(i)*x2(i)
128 yy2(i) = y1(i)*y1(i)+y2(i)*y2(i)
129 zz2(i) = z1(i)*z1(i)+z2(i)*z2(i)
130 xy(i) = x1(i)*y1(i)+x2(i)*y2(i)
131 yz(i) = y1(i)*z1(i)+y2(i)*z2(i)
132 zx(i) = z1(i)*x1(i)+z2(i)*x2(i)
133 vxa(i)=v1(i,1)+v2(i,1)
134 vya(i)=v1(i,2)+v2(i,2)
135 vza(i)=v1(i,3)+v2(i,3)
136 va2(i)=v1(i,1)*v1(i,1)+v2(i,1)*v2(i,1)
137 . +v1(i,2)*v1(i,2)+v2(i,2)*v2(i,2)
138 . +v1(i,3)*v1(i,3)+v2(i,3)*v2(i,3)
139 vra2(i) = vr1(i,1)*vr1(i,1)+vr2(i,1)*vr2(i,1)
140 . +vr1(i,2)*vr1(i,2)+vr2(i,2)*vr2(i,2)
141 . +vr1(i,3)*vr1(i,3)+vr2(i,3)*vr2(i,3)
142 ENDDO
143C
144 DO i=1,nel
145 xmas2(i)=xmas(i)*half
146 xm(i)= xmas2(i)*vxa(i)
147 ym(i)= xmas2(i)*vya(i)
148 zm(i)= xmas2(i)*vza(i)
149 ek(i)= xmas2(i)*va2(i)*half
150 ENDDO
151C
152 DO i=1,nel
153 xcg(i)= xmas2(i)*xx(i)
154 ycg(i)= xmas2(i)*yy(i)
155 zcg(i)= xmas2(i)*zz(i)
156 inel=geo(2,ixr(1,i))
157 in2 = inel*half
158 ixy(i) = -xmas2(i)*xy(i)
159 iyz(i) = -xmas2(i)*yz(i)
160 izx(i) = -xmas2(i)*zx(i)
161 ixx(i)= inel + xmas2(i)*(yy2(i) + zz2(i))
162 iyy(i)= inel + xmas2(i)*(zz2(i) + xx2(i))
163 izz(i)= inel + xmas2(i)*(xx2(i) + yy2(i))
164C
165 xxm(i)= xmas2(i)*
166 . (v1(i,3)*y1(i)-v1(i,2)*z1(i)
167 . +v2(i,3)*y2(i)-v2(i,2)*z2(i))
168 . +in2*(vr1(i,1)+vr2(i,1))
169 yym(i)= xmas2(i)*
170 . (v1(i,1)*z1(i)-v1(i,3)*x1(i)
171 . +v2(i,1)*z2(i)-v2(i,3)*x2(i))
172 . +in2*(vr1(i,2)+vr2(i,2))
173 zzm(i)= xmas2(i)*
174 . (v1(i,2)*x1(i)-v1(i,1)*y1(i)
175 . +v2(i,2)*x2(i)-v2(i,1)*y2(i))
176 . +in2*(vr1(i,3)+vr2(i,3))
177 rek(i)= in2*vra2(i)*half
178 ENDDO
179C
180 IF (igre /= 0) THEN
181 DO i=1,nel
182 off(i) = one
183 ENDDO
184 CALL grelem_sav(1 ,nel ,gresav,igrth ,grth ,
185 2 off ,eint ,ek ,xm ,ym ,
186 3 zm ,xmas ,xcg ,ycg ,zcg ,
187 4 xxm ,yym ,zzm ,ixx ,iyy ,
188 5 izz ,ixy ,iyz ,izx ,rbidon,
189 6 rek ,flag )
190 ENDIF
191C
192 DO i=1,nel
193 mx = ipartr(i)
194 partsav(1,mx)=partsav(1,mx) + eint(i)
195 partsav(2,mx)=partsav(2,mx) + ek(i)
196 partsav(3,mx)=partsav(3,mx) + xm(i)
197 partsav(4,mx)=partsav(4,mx) + ym(i)
198 partsav(5,mx)=partsav(5,mx) + zm(i)
199 IF (off_dum(i) > zero) partsav(6,mx)=partsav(6,mx) + xmas(i)
200 partsav(9,mx) =partsav(9,mx) + xcg(i)
201 partsav(10,mx)=partsav(10,mx) + ycg(i)
202 partsav(11,mx)=partsav(11,mx) + zcg(i)
203 partsav(12,mx)=partsav(12,mx) + xxm(i)
204 partsav(13,mx)=partsav(13,mx) + yym(i)
205 partsav(14,mx)=partsav(14,mx) + zzm(i)
206 partsav(15,mx)=partsav(15,mx) + ixx(i)
207 partsav(16,mx)=partsav(16,mx) + iyy(i)
208 partsav(17,mx)=partsav(17,mx) + izz(i)
209 partsav(18,mx)=partsav(18,mx) + ixy(i)
210 partsav(19,mx)=partsav(19,mx) + iyz(i)
211 partsav(20,mx)=partsav(20,mx) + izx(i)
212 partsav(22,mx)=partsav(22,mx) + rek(i)
213 ENDDO
214C
215 RETURN
216 END
#define my_real
Definition cppsort.cpp:32
subroutine grelem_sav(jft, jlt, gresav, igrth, grth, off, ei, ek, xm, ym, zm, xmas, xcg, ycg, zcg, xxm, yym, zzm, ixx, iyy, izz, ixy, iyz, izx, rei, rek, flag)
Definition grelem_sav.F:54
subroutine r23bilan(eint, partsav, ixr, geo, v, ipartr, mass, gresav, grth, igrth, off_dum, nc1, nc2, x, vr, nel, igre)
Definition r23bilan.F:40