OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
rmass.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!|| rmass ../starter/source/elements/spring/rmass.F
25!||--- called by ------------------------------------------------------
26!|| rinit3 ../starter/source/elements/spring/rinit3.F
27!||--- uses -----------------------------------------------------
28!||====================================================================
29 SUBROUTINE rmass(IXR ,GEO ,MS ,XIN ,PARTSAV,
30 2 X ,V ,IPART,XL ,MSR ,
31 3 INR ,MSRT ,EMS )
32 use element_mod , only : nixr
33C----------------------------------------------
34C initialization of nodal masses
35C----------------------------------------------
36C-----------------------------------------------
37C I m p l i c i t T y p e s
38C-----------------------------------------------
39#include "implicit_f.inc"
40C-----------------------------------------------
41C C o m m o n B l o c k s
42C-----------------------------------------------
43#include "com01_c.inc"
44#include "param_c.inc"
45#include "vect01_c.inc"
46C-----------------------------------------------
47C D u m m y A r g u m e n t s
48C-----------------------------------------------
49 INTEGER :: IXR(NIXR,*),IPART(*)
50 my_real :: GEO(NPROPG,*), MS(*), XIN(*),X(3,*),V(3,*),PARTSAV(20,*)
51 my_real :: xl(*),msr(3,*),inr(3,*), msrt(*),ems(*)
52C-----------------------------------------------
53C L o c a l V a r i a b l e s
54C-----------------------------------------------
55 INTEGER :: I, IP,I1,I2
56 my_real :: XX,YY,ZZ,XY,YZ,ZX
57 my_real :: xi
58C---------------------------------------------------------------------
59C----------------------------------------------
60C MASSE ELEMENT /2
61C----------------------------------------------
62 DO i=lft,llt
63 ems(i)=half*geo(1,ixr(1,i+nft))*xl(i)
64 ENDDO
65C
66 IF(irest_mselt/=0)THEN
67 DO i=lft,llt
68 msrt(i)=two*ems(i)
69 ENDDO
70 END IF
71C----------------------------------------------
72C initialization of nodal masses
73C----------------------------------------------
74
75 DO i=lft,llt
76 i1 = ixr(2,i+nft)
77 i2 = ixr(3,i+nft)
78
79 xi=half*geo(9,ixr(1,i+nft))*xl(i)
80 msr(1,i)=ems(i)
81 msr(2,i)=ems(i)
82 msr(3,i)=ems(i)
83 inr(1,i)=xi
84 inr(2,i)=xi
85 inr(3,i)=xi
86
87 ip=ipart(i)
88 partsav(1,ip)=partsav(1,ip) + two*ems(i)
89 partsav(2,ip)=partsav(2,ip) + ems(i)*(x(1,i1)+x(1,i2))
90 partsav(3,ip)=partsav(3,ip) + ems(i)*(x(2,i1)+x(2,i2))
91 partsav(4,ip)=partsav(4,ip) + ems(i)*(x(3,i1)+x(3,i2))
92 xx = (x(1,i1)*x(1,i1)+x(1,i2)*x(1,i2))
93 xy = (x(1,i1)*x(2,i1)+x(1,i2)*x(2,i2))
94 yy = (x(2,i1)*x(2,i1)+x(2,i2)*x(2,i2))
95 yz = (x(2,i1)*x(3,i1)+x(2,i2)*x(3,i2))
96 zz = (x(3,i1)*x(3,i1)+x(3,i2)*x(3,i2))
97 zx = (x(3,i1)*x(1,i1)+x(3,i2)*x(1,i2))
98 partsav(5,ip) =partsav(5,ip) + two*xi + ems(i) * (yy+zz)
99 partsav(6,ip) =partsav(6,ip) + two*xi + ems(i) * (zz+xx)
100 partsav(7,ip) =partsav(7,ip) + two*xi + ems(i) * (xx+yy)
101 partsav(8,ip) =partsav(8,ip) - ems(i) * xy
102 partsav(9,ip) =partsav(9,ip) - ems(i) * yz
103 partsav(10,ip)=partsav(10,ip) - ems(i) * zx
104
105 partsav(11,ip)=partsav(11,ip) + ems(i)*(v(1,i1)+v(1,i2))
106 partsav(12,ip)=partsav(12,ip) + ems(i)*(v(2,i1)+v(2,i2))
107 partsav(13,ip)=partsav(13,ip) + ems(i)*(v(3,i1)+v(3,i2))
108 partsav(14,ip)=partsav(14,ip) + half* ems(i) *
109 . (v(1,i1)*v(1,i1)+v(2,i1)*v(2,i1)+v(3,i1)*v(3,i1)
110 . +v(1,i2)*v(1,i2)+v(2,i2)*v(2,i2)+v(3,i2)*v(3,i2))
111 ENDDO
112
113 RETURN
114 END
115!||====================================================================
116!|| r23mass ../starter/source/elements/spring/rmass.F
117!||--- called by ------------------------------------------------------
118!|| inivoid ../starter/source/elements/initia/inivoid.F
119!|| rinit3 ../starter/source/elements/spring/rinit3.F
120!||--- uses -----------------------------------------------------
121!||====================================================================
122 SUBROUTINE r23mass(IXR ,GEO ,MS ,XIN ,PARTSAV,
123 2 X ,V ,IPART,XL ,MSR ,
124 3 INR ,MSRT ,EMS , MASS ,UINER,MTYP)
125 use element_mod , only : nixr
126C----------------------------------------------
127C initialization of nodal masses
128C----------------------------------------------
129C-----------------------------------------------
130C I m p l i c i t T y p e s
131C-----------------------------------------------
132#include "implicit_f.inc"
133C-----------------------------------------------
134C C o m m o n B l o c k s
135C-----------------------------------------------
136#include "com01_c.inc"
137#include "param_c.inc"
138#include "vect01_c.inc"
139C-----------------------------------------------
140C D u m m y A r g u m e n t s
141C-----------------------------------------------
142 INTEGER IXR(NIXR,*),IPART(*),MTYP
143 my_real
144 . GEO(NPROPG,*), MS(*), XIN(*),X(3,*),V(3,*),PARTSAV(20,*),
145 . XL(*),MSR(3,*),INR(3,*), MSRT(*),EMS(*),MASS(*),UINER(*)
146C-----------------------------------------------
147C L o c a l V a r i a b l e s
148C-----------------------------------------------
149 INTEGER I, IP,I1,I2
150 my_real :: XX,YY,ZZ,XY,YZ,ZX
151 my_real :: XI
152C---------------------------------------------------------------------
153C----------------------------------------------
154C MASSE ELEMENT /2
155C----------------------------------------------
156 DO i=lft,llt
157 ems(i)=half*mass(i)
158 ENDDO
159C
160 IF(irest_mselt/=0)THEN
161 DO i=lft,llt
162 msrt(i)=two*ems(i)
163 ENDDO
164 END IF
165C----------------------------------------------
166C initialization of nodal masses
167C----------------------------------------------
168
169 DO i=lft,llt
170 i1 = ixr(2,i+nft)
171 i2 = ixr(3,i+nft)
172C
173 IF (mtyp == 114) THEN
174 xi=half*uiner(i)
175 ELSE
176 xi=half*geo(2,ixr(1,i+nft))
177 ENDIF
178C
179 msr(1,i)=ems(i)
180 msr(2,i)=ems(i)
181 msr(3,i)=ems(i)
182 inr(1,i)=xi
183 inr(2,i)=xi
184 inr(3,i)=xi
185
186 ip=ipart(i)
187 partsav(1,ip)=partsav(1,ip) + two*ems(i)
188 partsav(2,ip)=partsav(2,ip) + ems(i)*(x(1,i1)+x(1,i2))
189 partsav(3,ip)=partsav(3,ip) + ems(i)*(x(2,i1)+x(2,i2))
190 partsav(4,ip)=partsav(4,ip) + ems(i)*(x(3,i1)+x(3,i2))
191 xx = (x(1,i1)*x(1,i1)+x(1,i2)*x(1,i2))
192 xy = (x(1,i1)*x(2,i1)+x(1,i2)*x(2,i2))
193 yy = (x(2,i1)*x(2,i1)+x(2,i2)*x(2,i2))
194 yz = (x(2,i1)*x(3,i1)+x(2,i2)*x(3,i2))
195 zz = (x(3,i1)*x(3,i1)+x(3,i2)*x(3,i2))
196 zx = (x(3,i1)*x(1,i1)+x(3,i2)*x(1,i2))
197 partsav(5,ip) =partsav(5,ip) + two*xi + ems(i) * (yy+zz)
198 partsav(6,ip) =partsav(6,ip) + two*xi + ems(i) * (zz+xx)
199 partsav(7,ip) =partsav(7,ip) + two*xi + ems(i) * (xx+yy)
200 partsav(8,ip) =partsav(8,ip) - ems(i) * xy
201 partsav(9,ip) =partsav(9,ip) - ems(i) * yz
202 partsav(10,ip)=partsav(10,ip) - ems(i) * zx
203
204 partsav(11,ip)=partsav(11,ip) + ems(i)*(v(1,i1)+v(1,i2))
205 partsav(12,ip)=partsav(12,ip) + ems(i)*(v(2,i1)+v(2,i2))
206 partsav(13,ip)=partsav(13,ip) + ems(i)*(v(3,i1)+v(3,i2))
207 partsav(14,ip)=partsav(14,ip) + half* ems(i) *
208 . (v(1,i1)*v(1,i1)+v(2,i1)*v(2,i1)+v(3,i1)*v(3,i1)
209 . +v(1,i2)*v(1,i2)+v(2,i2)*v(2,i2)+v(3,i2)*v(3,i2))
210 ENDDO
211
212
213 RETURN
214 END
subroutine rmass(ixr, geo, ms, xin, partsav, x, v, ipart, xl, msr, inr, msrt, ems)
Definition rmass.F:32
subroutine r23mass(ixr, geo, ms, xin, partsav, x, v, ipart, xl, msr, inr, msrt, ems, mass, uiner, mtyp)
Definition rmass.F:125