OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
xbilan3.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!|| xbilan3 ../engine/source/elements/xelem/xbilan3.F
25!||--- called by ------------------------------------------------------
26!|| xforc3 ../engine/source/elements/xelem/xforc3.F
27!||====================================================================
28 SUBROUTINE xbilan3(
29 1 NX, KXX, IXX, X,
30 2 V, VR, UMASS, UINER,
31 3 FORC, TORQ, KEUSR, EUSR,
32 4 EINT, PARTSAV, IPART, GRESAV,
33 5 GRTH, IGRTH, IGRE)
34C-----------------------------------------------
35C I m p l i c i t T y p e s
36C-----------------------------------------------
37#include "implicit_f.inc"
38C-----------------------------------------------
39C C o m m o n B l o c k s
40C-----------------------------------------------
41#include "com08_c.inc"
42#include "param_c.inc"
43#include "scr23_c.inc"
44C-----------------------------------------------
45C D u m m y A r g u m e n t s
46C-----------------------------------------------
47 INTEGER, INTENT(IN) :: IGRE
48 INTEGER KXX(NIXX),IXX(*),NX,KEUSR,IPART,GRTH(*),IGRTH(*)
49C REAL
50 my_real
51 . X(3,*),V(3,*),VR(3,*),UMASS(*), UINER(*),FORC(3,*),
52 . torq(3,*),eusr,eint,partsav(npsav,*),gresav(npsav,*)
53C-----------------------------------------------
54C L o c a l V a r i a b l e s
55C-----------------------------------------------
56 INTEGER I, K, IP, I1, IADNOD,J
57C REAL
58 my_real
59 . EMS, XI
60C--------------------------------------------
61 iadnod=kxx(4)
62 IF (keusr==0) THEN
63 DO k=1,nx
64 i1 = ixx(iadnod+k-1)
65 ems=umass(k)
66 xi =uiner(k)
67C ENERGY has not been provided by user routine.
68C Integration en rectangle ..
69 eint = eint
70 . -dt1*(v(1,i1)*forc(1,k)+v(2,i1)*forc(2,k)+v(3,i1)*forc(3,k)
71 . +vr(1,i1)*torq(1,k)+vr(2,i1)*torq(2,k)+vr(3,i1)*torq(3,k))
72 ip=ipart
73 partsav(2,ip)=partsav(2,ip) + half * ems *
74 . (v(1,i1)*v(1,i1)+v(2,i1)*v(2,i1)+v(3,i1)*v(3,i1))
75 partsav(3,ip)=partsav(3,ip) + ems*v(1,i1)
76 partsav(4,ip)=partsav(4,ip) + ems*v(2,i1)
77 partsav(5,ip)=partsav(5,ip) + ems*v(3,i1)
78 partsav(6,ip)=partsav(6,ip) + ems
79 partsav(7,ip)=partsav(7,ip) + half * xi *
80 . (vr(1,i1)*vr(1,i1)+vr(2,i1)*vr(2,i1)+vr(3,i1)*vr(3,i1))
81 ENDDO
82 IF (igre /= 0) THEN
83 IF (igrth(1) /= igrth(2)) THEN
84 DO j = igrth(1),igrth(2)-1
85 gresav(1,grth(j)) = gresav(1,grth(j)) + eint
86 gresav(2,grth(j)) = gresav(2,grth(j)) + half * ems *
87 . (v(1,i1)*v(1,i1)+v(2,i1)*v(2,i1)+v(3,i1)*v(3,i1))
88 gresav(3,grth(j)) = gresav(3,grth(j)) + ems*v(1,i1)
89 gresav(4,grth(j)) = gresav(4,grth(j)) + ems*v(2,i1)
90 gresav(5,grth(j)) = gresav(5,grth(j)) + ems*v(3,i1)
91 gresav(6,grth(j)) = gresav(6,grth(j)) + ems
92 ENDDO
93 ENDIF
94 ENDIF
95 ELSE
96 DO k=1,nx
97 i1 = ixx(iadnod+k-1)
98 ems=umass(k)
99 xi =uiner(k)
100 ip=ipart
101 partsav(2,ip)=partsav(2,ip) + half * ems *
102 . (v(1,i1)*v(1,i1)+v(2,i1)*v(2,i1)+v(3,i1)*v(3,i1))
103 partsav(3,ip)=partsav(3,ip) + ems*v(1,i1)
104 partsav(4,ip)=partsav(4,ip) + ems*v(2,i1)
105 partsav(5,ip)=partsav(5,ip) + ems*v(3,i1)
106 partsav(6,ip)=partsav(6,ip) + ems
107 partsav(7,ip)=partsav(7,ip) + half * xi *
108 . (vr(1,i1)*vr(1,i1)+vr(2,i1)*vr(2,i1)+vr(3,i1)*vr(3,i1))
109 ENDDO
110 IF (igre /= 0) THEN
111 IF (igrth(1) /= igrth(2)) THEN
112 DO j = igrth(1),igrth(2)-1
113 gresav(1,grth(j)) = gresav(1,grth(j)) + eint
114 gresav(2,grth(j)) = gresav(2,grth(j)) + half * ems *
115 . (v(1,i1)*v(1,i1)+v(2,i1)*v(2,i1)+v(3,i1)*v(3,i1))
116 gresav(3,grth(j)) = gresav(3,grth(j)) + ems*v(1,i1)
117 gresav(4,grth(j)) = gresav(4,grth(j)) + ems*v(2,i1)
118 gresav(5,grth(j)) = gresav(5,grth(j)) + ems*v(3,i1)
119 gresav(6,grth(j)) = gresav(6,grth(j)) + ems
120 ENDDO
121 ENDIF
122 ENDIF
123 eint=eusr
124 ENDIF
125 partsav(1,ip)=partsav(1,ip) + eint
126C
127 RETURN
128 END
subroutine xbilan3(nx, kxx, ixx, x, v, vr, umass, uiner, forc, torq, keusr, eusr, eint, partsav, ipart, gresav, grth, igrth, igre)
Definition xbilan3.F:34