OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
qvolu2.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!|| qvolu2 ../engine/source/elements/solid_2d/quad/qvolu2.F
25!||--- called by ------------------------------------------------------
26!|| bforc2 ../engine/source/ale/bimat/bforc2.F
27!|| multi_computevolume ../engine/source/multifluid/multi_computevolume.F
28!|| q4forc2 ../engine/source/elements/solid_2d/quad4/q4forc2.F
29!|| q4ke2 ../engine/source/elements/solid_2d/quad4/q4ke2.F
30!|| qforc2 ../engine/source/elements/solid_2d/quad/qforc2.F
31!||--- calls -----------------------------------------------------
32!|| ancmsg ../engine/source/output/message/message.F
33!|| arret ../engine/source/system/arret.F
34!||--- uses -----------------------------------------------------
35!|| message_mod ../engine/share/message_module/message_mod.F
36!||====================================================================
37 SUBROUTINE qvolu2(
38 1 OFF, AIRE, VOLU, NGL,
39 2 Y1, Y2, Y3, Y4,
40 3 Z1, Z2, Z3, Z4,
41 4 Y234, Y124, NEL, JMULT,
42 5 JCVT)
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 USE message_mod
47C-----------------------------------------------
48C I m p l i c i t T y p e s
49C-----------------------------------------------
50#include "implicit_f.inc"
51#include "comlock.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 D u m m y A r g u m e n t s
58C-----------------------------------------------
59 INTEGER, INTENT(IN) :: NEL
60 INTEGER, INTENT(IN) :: JMULT
61 INTEGER, INTENT(IN) :: JCVT
62 INTEGER, INTENT(IN) :: NGL(NEL)
63 my_real, INTENT(IN) :: Y1(NEL),Y2(NEL),Y3(NEL),Y4(NEL),Z1(NEL),Z2(NEL),Z3(NEL),Z4(NEL),Y234(NEL),Y124(NEL)
64 my_real, INTENT(INOUT) :: off(nel),aire(nel),volu(nel)
65C-----------------------------------------------
66C C o m m o n B l o c k s
67C-----------------------------------------------
68#include "com01_c.inc"
69#include "com06_c.inc"
70#include "scr17_c.inc"
71C-----------------------------------------------
72C L o c a l V a r i a b l e s
73C-----------------------------------------------
74 INTEGER I
75 my_real A1(MVSIZ), A2(MVSIZ)
76C-----------------------------------------------
77C S o u r c e L i n e s
78C-----------------------------------------------
79 DO i=1,nel
80 a1(i) =y2(i)*(z3(i)-z4(i))+y3(i)*(z4(i)-z2(i))+y4(i)*(z2(i)-z3(i))
81 a2(i) =y2(i)*(z4(i)-z1(i))+y4(i)*(z1(i)-z2(i))+y1(i)*(z2(i)-z4(i))
82 aire(i)=(a1(i)+a2(i))*half
83 ENDDO
84C-----------------------------------------------
85 IF(n2d == 1) THEN
86 IF(jcvt == 0)THEN
87 DO i=1,nel
88 volu(i)=((y2(i)+y3(i)+y4(i))*a1(i)+(y1(i)+y2(i)+y4(i))*a2(i))*one_over_6
89 ENDDO
90 ELSE
91 DO i=1,nel
92 volu(i)=(y234(i)*a1(i)+y124(i)*a2(i))*one_over_6
93 ENDDO
94 END IF
95 ELSE
96 DO i=1,nel
97 volu(i)=aire(i)
98 ENDDO
99 ENDIF
100C-----------------------------------------------
101 IF(jmult == 0)THEN
102 DO i=1,nel
103 IF(off(i) == zero)THEN
104 volu(i)=one
105 aire(i)=one
106 ELSE
107 IF(volu(i) <= volmin)THEN
108 volu(i)=one
109 off(i)=zero
110 CALL ancmsg(msgid=142,anmode=aninfo,i1=ngl(i))
111 idel7nok = 1
112 ENDIF
113 ENDIF
114 ENDDO
115 ENDIF
116C-----------------------------------------------
117 DO i=1,nel
118 IF(off(i) >= one .AND. volu(i) <= zero) THEN
119 CALL ancmsg(msgid=142,anmode=aninfo,i1=ngl(i))
120 CALL arret(2)
121 ENDIF
122 ENDDO
123C-----------------------------------------------
124 RETURN
125 END
subroutine qvolu2(off, aire, volu, ngl, y1, y2, y3, y4, z1, z2, z3, z4, y234, y124, nel, jmult, jcvt)
Definition qvolu2.F:43
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
subroutine arret(nn)
Definition arret.F:87