OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
tbilan.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!|| tbilan ../engine/source/elements/truss/tbilan.F
25!||--- called by ------------------------------------------------------
26!|| tforc3 ../engine/source/elements/truss/tforc3.F
27!||--- calls -----------------------------------------------------
28!|| grelem_sav ../engine/source/output/th/grelem_sav.F
29!|| sensor_energy_bilan ../engine/source/tools/sensor/sensor_energy_bilan.F
30!||--- uses -----------------------------------------------------
31!|| h3d_mod ../engine/share/modules/h3d_mod.F
32!|| sensor_mod ../common_source/modules/sensor_mod.F90
33!||====================================================================
34 SUBROUTINE tbilan(
35 1 PM, V, EINT, AREA,
36 2 PARTSAV, IPARTT, TANI, FOR,
37 3 GRESAV, GRTH, IGRTH, MAT,
38 4 AL, VX1, VX2, VY1,
39 5 VY2, VZ1, VZ2, X1,
40 6 X2, Y1, Y2, Z1,
41 7 Z2, ITASK, H3D_DATA,NEL,
42 8 IGRE, SENSORS)
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 USE h3d_mod
47 USE sensor_mod
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52C-----------------------------------------------
53C G l o b a l P a r a m e t e r s
54C-----------------------------------------------
55#include "mvsiz_p.inc"
56C-----------------------------------------------
57C C o m m o n B l o c k s
58C-----------------------------------------------
59#include "param_c.inc"
60#include "scr14_c.inc"
61C-----------------------------------------------
62C D u m m y A r g u m e n t s
63C-----------------------------------------------
64 INTEGER, INTENT(IN) :: NEL
65 INTEGER, INTENT(IN) :: IGRE
66 INTEGER IPARTT(*),GRTH(*),IGRTH(*),MAT(MVSIZ),ITASK
67 my_real
68 . PM(NPROPM,*),V(3,*),EINT(*),AREA(*),PARTSAV(NPSAV,*),
69 . TANI(15,*),FOR(*),GRESAV(*),AL(MVSIZ),VX1(MVSIZ),VX2(MVSIZ),
70 . VY1(MVSIZ),VY2(MVSIZ),VZ1(MVSIZ),VZ2(MVSIZ),
71 . X1(MVSIZ),X2(MVSIZ),Y1(MVSIZ),Y2(MVSIZ),
72 . z1(mvsiz),z2(mvsiz)
73 TYPE(h3d_database) :: H3D_DATA
74 type (sensors_),INTENT(INOUT) :: SENSORS
75C-----------------------------------------------
76C L o c a l V a r i a b l e s
77C-----------------------------------------------
78 INTEGER I, M, J, FLAG
79 my_real
80 . VXA(MVSIZ), VYA(MVSIZ),VZA(MVSIZ), VA2(MVSIZ), XMAS(MVSIZ),
81 . ei(mvsiz), ek(mvsiz), xm(mvsiz),
82 . ym(mvsiz), zm(mvsiz),
83 . rbidon(1),off(mvsiz),rho(mvsiz),
84 . xcg(mvsiz), ycg(mvsiz), zcg(mvsiz),
85 . xx(mvsiz) , yy(mvsiz) , zz(mvsiz) ,
86 . rei(mvsiz), rek(mvsiz), inel,
87 . xxm(mvsiz), yym(mvsiz), zzm(mvsiz),
88 . ixx(mvsiz), iyy(mvsiz), izz(mvsiz),
89 . ixy(mvsiz), iyz(mvsiz), izx(mvsiz)
90C-----------------------------------------------
91 off(1:mvsiz) = zero
92c
93 DO i=1,nel
94 rho(i)=pm(1,mat(i))
95 ENDDO
96c
97 DO i=1,nel
98 xx(i)=x1(i)+x2(i)
99 yy(i)=y1(i)+y2(i)
100 zz(i)=z1(i)+z2(i)
101 vxa(i)=vx1(i)+vx2(i)
102 vya(i)=vy1(i)+vy2(i)
103 vza(i)=vz1(i)+vz2(i)
104 va2(i)=vx1(i)*vx1(i)+vx2(i)*vx2(i)
105 . +vy1(i)*vy1(i)+vy2(i)*vy2(i)
106 . +vz1(i)*vz1(i)+vz2(i)*vz2(i)
107 ENDDO
108C
109 DO i=1,nel
110 xx(i)=xx(i)*half
111 yy(i)=yy(i)*half
112 zz(i)=zz(i)*half
113 vxa(i)=vxa(i)*half
114 vya(i)=vya(i)*half
115 vza(i)=vza(i)*half
116 va2(i)=va2(i)*half
117 ENDDO
118C
119 DO i=1,nel
120 xmas(i)=rho(i)*area(i)*al(i)
121 ENDDO
122c
123 DO i=1,nel
124 ei(i)= eint(i)
125 ek(i)= xmas(i)*va2(i)*half
126 xm(i)= xmas(i)*vxa(i)
127 ym(i)= xmas(i)*vya(i)
128 zm(i)= xmas(i)*vza(i)
129 ENDDO
130
131 DO i=1,nel
132 xcg(i)= xmas(i)*xx(i)
133 ycg(i)= xmas(i)*yy(i)
134 zcg(i)= xmas(i)*zz(i)
135 inel = xmas(i)*al(i)*al(i)*one_over_12
136 ixy(i) = -xcg(i)*yy(i)
137 iyz(i) = -ycg(i)*zz(i)
138 izx(i) = -zcg(i)*xx(i)
139 xx(i) = xcg(i)*xx(i)
140 yy(i) = ycg(i)*yy(i)
141 zz(i) = zcg(i)*zz(i)
142 ixx(i)= inel + yy(i) + zz(i)
143 iyy(i)= inel + zz(i) + xx(i)
144 izz(i)= inel + xx(i) + yy(i)
145 xxm(i)= vza(i)*ycg(i)-vya(i)*zcg(i)
146 yym(i)= vxa(i)*zcg(i)-vza(i)*xcg(i)
147 zzm(i)= vya(i)*xcg(i)-vxa(i)*ycg(i)
148 rei(i)= ei(i)
149 rek(i)= inel*va2(i)*half
150 ENDDO
151c
152 flag = 0
153 IF (igre /= 0) THEN
154 DO i=1,nel
155 off(i) = one
156 ENDDO
157 CALL grelem_sav(1 ,nel ,gresav,igrth ,grth ,
158 2 off ,ei ,ek ,xm ,ym ,
159 3 zm ,xmas ,xcg ,ycg ,zcg ,
160 4 xxm ,yym ,zzm ,ixx ,iyy ,
161 5 izz ,ixy ,iyz ,izx ,rei ,
162 6 rek ,flag )
163
164 ENDIF
165c
166 DO i=1,nel
167 m = ipartt(i)
168 partsav(1,m)=partsav(1,m) + eint(i)
169 partsav(2,m)=partsav(2,m) + ek(i)
170 partsav(3,m)=partsav(3,m) + xm(i)
171 partsav(4,m)=partsav(4,m) + ym(i)
172 partsav(5,m)=partsav(5,m) + zm(i)
173 partsav(6,m)=partsav(6,m) + xmas(i)
174 partsav(9,m) =partsav(9,m) + xcg(i)
175 partsav(10,m)=partsav(10,m) + ycg(i)
176 partsav(11,m)=partsav(11,m) + zcg(i)
177 partsav(12,m)=partsav(12,m) + xxm(i)
178 partsav(13,m)=partsav(13,m) + yym(i)
179 partsav(14,m)=partsav(14,m) + zzm(i)
180 partsav(15,m)=partsav(15,m) + ixx(i)
181 partsav(16,m)=partsav(16,m) + iyy(i)
182 partsav(17,m)=partsav(17,m) + izz(i)
183 partsav(18,m)=partsav(18,m) + ixy(i)
184 partsav(19,m)=partsav(19,m) + iyz(i)
185 partsav(20,m)=partsav(20,m) + izx(i)
186 partsav(21,m)=partsav(21,m) + rei(i)
187 partsav(22,m)=partsav(22,m) + rek(i)
188 ENDDO
189c
190 IF (anim_ft(1) /= 0 .OR. h3d_data%UND_FORC /= 0) THEN
191 DO i=1,nel
192 tani(1,i)= for(i)
193 tani(2,i)= zero
194 tani(3,i)= zero
195 tani(4,i)= zero
196 tani(5,i)= zero
197 tani(6,i)= zero
198 tani(7,i)= zero
199 tani(8,i)= zero
200 tani(9,i)= zero
201 ENDDO
202 ENDIF
203 off(1:nel) = one
204 CALL sensor_energy_bilan(1,nel,eint,ek,off,ipartt,itask,sensors)
205C-----------------------------------------------
206 RETURN
207 END
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 sensor_energy_bilan(jft, jlt, ei, ek, off, ipart, itask, sensors)
subroutine tbilan(pm, v, eint, area, partsav, ipartt, tani, for, gresav, grth, igrth, mat, al, vx1, vx2, vy1, vy2, vz1, vz2, x1, x2, y1, y2, z1, z2, itask, h3d_data, nel, igre, sensors)
Definition tbilan.F:43