OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
pbilan.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!|| pbilan ../engine/source/elements/beam/pbilan.F
25!||--- called by ------------------------------------------------------
26!|| pforc3 ../engine/source/elements/beam/pforc3.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 pbilan(
35 1 PM, V, EINT, GEO,
36 2 PARTSAV, IPARTP, TANI, FOR,
37 3 MOM, GRESAV, GRTH, IGRTH,
38 4 OFF_DUM, NEL, AL, NC1,
39 5 NC2, NC3, E1X, E1Y,
40 6 E1Z, E2X, E2Y, E2Z,
41 7 MAT, PID, VX1G, VX2G,
42 8 VY1G, VY2G, VZ1G, VZ2G,
43 9 X1G, X2G, Y1G, Y2G,
44 A Z1G, Z2G, ITASK, H3D_DATA,
45 B IGRE, SENSORS, G_WPLA, WPLA)
46C-----------------------------------------------
47C M o d u l e s
48C-----------------------------------------------
49 USE h3d_mod
50 USE sensor_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C G l o b a l P a r a m e t e r s
57C-----------------------------------------------
58#include "mvsiz_p.inc"
59C-----------------------------------------------
60C C o m m o n B l o c k s
61C-----------------------------------------------
62#include "param_c.inc"
63#include "scr14_c.inc"
64C-----------------------------------------------
65C D u m m y A r g u m e n t s
66C-----------------------------------------------
67 INTEGER, INTENT(IN) :: IGRE
68 INTEGER IPARTP(*),GRTH(*),IGRTH(*),NEL,NC1(MVSIZ),NC2(MVSIZ),
69 . NC3(MVSIZ),MAT(MVSIZ),PID(MVSIZ),ITASK
70C REAL
71 my_real
72 . PM(NPROPM,*), V(3,*), EINT(NEL,2), GEO(NPROPG,*),
73 . PARTSAV(NPSAV,*),TANI(15,*),FOR(NEL,3),MOM(NEL,3),GRESAV(*),
74 . OFF_DUM(*),AL(MVSIZ),E1X(MVSIZ),E1Y(MVSIZ),E1Z(MVSIZ),
75 . E2X(MVSIZ),E2Y(MVSIZ),E2Z(MVSIZ),VX1G(MVSIZ),VX2G(MVSIZ),
76 . VY1G(MVSIZ),VY2G(MVSIZ),VZ1G(MVSIZ),VZ2G(MVSIZ),
77 . X1G(MVSIZ),X2G(MVSIZ),Y1G(MVSIZ),Y2G(MVSIZ),
78 . z1g(mvsiz),z2g(mvsiz)
79 TYPE(h3d_database) :: H3D_DATA
80 type (sensors_),INTENT(INOUT) :: SENSORS
81 INTEGER, INTENT(IN) :: G_WPLA
82 my_real,DIMENSION(NEL*G_WPLA), INTENT(IN) :: wpla
83C-----------------------------------------------
84C L o c a l V a r i a b l e s
85C-----------------------------------------------
86 INTEGER I, M, FLAG
87C REAL
88 my_real
89 . VXA(MVSIZ), VYA(MVSIZ),VZA(MVSIZ), VA2(MVSIZ), XMAS(MVSIZ),
90 . ei(mvsiz), ek(mvsiz), xm(mvsiz),
91 . ym(mvsiz), zm(mvsiz), sect(mvsiz),
92 . rbidon(1),off(mvsiz),rho(mvsiz),
93 . xcg(mvsiz), ycg(mvsiz), zcg(mvsiz),
94 . xx(mvsiz) , yy(mvsiz) , zz(mvsiz) ,
95 . rei(mvsiz), rek(mvsiz), inel,
96 . xxm(mvsiz), yym(mvsiz), zzm(mvsiz),
97 . ixx(mvsiz), iyy(mvsiz), izz(mvsiz),
98 . ixy(mvsiz), iyz(mvsiz), izx(mvsiz)
99C-----------------------------------------------
100 rbidon = zero
101 off(1:mvsiz) = zero
102 flag = 0
103 DO i=1,nel
104 sect(i)=geo(1,pid(i))
105 rho(i) =pm(1,mat(i))
106 ENDDO
107C
108 DO i=1,nel
109 xx(i)=x1g(i)+x2g(i)
110 yy(i)=y1g(i)+y2g(i)
111 zz(i)=z1g(i)+z2g(i)
112 vxa(i)=vx1g(i)+vx2g(i)
113 vya(i)=vy1g(i)+vy2g(i)
114 vza(i)=vz1g(i)+vz2g(i)
115 va2(i)=vx1g(i)*vx1g(i)+vx2g(i)*vx2g(i)
116 . +vy1g(i)*vy1g(i)+vy2g(i)*vy2g(i)
117 . +vz1g(i)*vz1g(i)+vz2g(i)*vz2g(i)
118 ENDDO
119C
120 DO i=1,nel
121 xx(i)=xx(i)*half
122 yy(i)=yy(i)*half
123 zz(i)=zz(i)*half
124 vxa(i)=vxa(i)*half
125 vya(i)=vya(i)*half
126 vza(i)=vza(i)*half
127 va2(i)=va2(i)*half
128 ENDDO
129C
130 DO i=1,nel
131 xmas(i)=rho(i)*al(i)*sect(i)
132 ENDDO
133C
134 DO i=1,nel
135 ei(i)= eint(i,1) + eint(i,2)
136 ek(i)= xmas(i)*va2(i)*half
137 xm(i)= xmas(i)*vxa(i)
138 ym(i)= xmas(i)*vya(i)
139 zm(i)= xmas(i)*vza(i)
140 ENDDO
141C
142 DO i=1,nel
143 xcg(i)= xmas(i)*xx(i)
144 ycg(i)= xmas(i)*yy(i)
145 zcg(i)= xmas(i)*zz(i)
146 inel = xmas(i)*al(i)*al(i)*one_over_12
147 ixy(i) = -xcg(i)*yy(i)
148 iyz(i) = -ycg(i)*zz(i)
149 izx(i) = -zcg(i)*xx(i)
150 xx(i) = xcg(i)*xx(i)
151 yy(i) = ycg(i)*yy(i)
152 zz(i) = zcg(i)*zz(i)
153 ixx(i)= inel + yy(i) + zz(i)
154 iyy(i)= inel + zz(i) + xx(i)
155 izz(i)= inel + xx(i) + yy(i)
156 xxm(i)= vza(i)*ycg(i)-vya(i)*zcg(i)
157 yym(i)= vxa(i)*zcg(i)-vza(i)*xcg(i)
158 zzm(i)= vya(i)*xcg(i)-vxa(i)*ycg(i)
159 rei(i)= ei(i)
160 rek(i)= inel*va2(i)*half
161 ENDDO
162C
163 IF (igre /= 0) THEN
164 DO i=1,nel
165 off(i) = one
166 ENDDO
167 CALL grelem_sav(1 ,nel ,gresav,igrth ,grth ,
168 2 off ,ei ,ek ,xm ,ym ,
169 3 zm ,xmas ,xcg ,ycg ,zcg ,
170 4 xxm ,yym ,zzm ,ixx ,iyy ,
171 5 izz ,ixy ,iyz ,izx ,rei ,
172 6 rek ,flag )
173 ENDIF
174C
175 DO i=1,nel
176 m = ipartp(i)
177 partsav(1,m)=partsav(1,m) + ei(i)
178 partsav(2,m)=partsav(2,m) + ek(i)
179 partsav(3,m)=partsav(3,m) + xm(i)
180 partsav(4,m)=partsav(4,m) + ym(i)
181 partsav(5,m)=partsav(5,m) + zm(i)
182 IF (off_dum(i) > zero) partsav(6,m)=partsav(6,m) + xmas(i)
183 partsav(9,m) =partsav(9,m) + xcg(i)
184 partsav(10,m)=partsav(10,m) + ycg(i)
185 partsav(11,m)=partsav(11,m) + zcg(i)
186 partsav(12,m)=partsav(12,m) + xxm(i)
187 partsav(13,m)=partsav(13,m) + yym(i)
188 partsav(14,m)=partsav(14,m) + zzm(i)
189 partsav(15,m)=partsav(15,m) + ixx(i)
190 partsav(16,m)=partsav(16,m) + iyy(i)
191 partsav(17,m)=partsav(17,m) + izz(i)
192 partsav(18,m)=partsav(18,m) + ixy(i)
193 partsav(19,m)=partsav(19,m) + iyz(i)
194 partsav(20,m)=partsav(20,m) + izx(i)
195 partsav(21,m)=partsav(21,m) + rei(i)
196 partsav(22,m)=partsav(22,m) + rek(i)
197 IF (g_wpla > 0) partsav(29,m)=partsav(29,m) + wpla(i)
198 ENDDO
199C
200 IF (anim_ft(1) /= 0 .OR. h3d_data%UND_FORC /= 0) THEN
201 DO i=1,nel
202 ! Beam force
203 tani(1,i)= for(i,1)
204 tani(2,i)= for(i,2)
205 tani(3,i)= for(i,3)
206 ! Beam Node_1 moment
207 tani(4,i)= -mom(i,1)
208 tani(5,i)= -mom(i,2) + half*al(i)*for(i,3)
209 tani(6,i)= -mom(i,3) - half*al(i)*for(i,2)
210 ! Beam Node_2 moment
211 tani(7,i)= mom(i,1)
212 tani(5,i)= mom(i,2) + half*al(i)*for(i,3)
213 tani(9,i)= mom(i,3) - half*al(i)*for(i,2)
214C TANI(10,I)= E1X(I)
215C TANI(11,I)= E1Y(I)
216C TANI(12,I)= E1Z(I)
217C TANI(13,I)= E2X(I)
218C TANI(14,I)= E2Y(I)
219C TANI(15,I)= E2Z(I)
220 ENDDO
221 ENDIF
222 off(1:mvsiz) = one
223 CALL sensor_energy_bilan(1,nel,ei,ek,off,ipartp,itask,sensors)
224C-----------------------------------------------
225 RETURN
226 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 pbilan(pm, v, eint, geo, partsav, ipartp, tani, for, mom, gresav, grth, igrth, off_dum, nel, al, nc1, nc2, nc3, e1x, e1y, e1z, e2x, e2y, e2z, mat, pid, vx1g, vx2g, vy1g, vy2g, vz1g, vz2g, x1g, x2g, y1g, y2g, z1g, z2g, itask, h3d_data, igre, sensors, g_wpla, wpla)
Definition pbilan.F:46
subroutine sensor_energy_bilan(jft, jlt, ei, ek, off, ipart, itask, sensors)