OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s4volnod3.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "param_c.inc"
#include "com04_c.inc"
#include "scr05_c.inc"
#include "scr18_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine s4volnod3 (volnod6, x, nc1, nc2, nc3, nc4, offg, xdp, nel, ismstr)

Function/Subroutine Documentation

◆ s4volnod3()

subroutine s4volnod3 ( double precision, dimension(6,2*numnod) volnod6,
x,
integer, dimension(*) nc1,
integer, dimension(*) nc2,
integer, dimension(*) nc3,
integer, dimension(*) nc4,
offg,
double precision, dimension(3,sxdp/3), intent(in) xdp,
integer nel,
integer, intent(in) ismstr )

Definition at line 31 of file s4volnod3.F.

35C-----------------------------------------------
36C I m p l i c i t T y p e s
37C-----------------------------------------------
38#include "implicit_f.inc"
39C-----------------------------------------------
40C G l o b a l P a r a m e t e r s
41C-----------------------------------------------
42#include "mvsiz_p.inc"
43#include "param_c.inc"
44#include "com04_c.inc"
45#include "scr05_c.inc"
46C-----------------------------------------------
47C D u m m y A r g u m e n t s
48C-----------------------------------------------
49 INTEGER, INTENT(IN) :: ISMSTR
50 INTEGER NC1(*),NC2(*),NC3(*),NC4(*),NEL
51 double precision
52 . volnod6(6,2*numnod)
53 DOUBLE PRECISION , DIMENSION(3,SXDP/3), INTENT(IN) :: XDP
54C REAL
56 . x(3,*),offg(*)
57C-----------------------------------------------
58C C o m m o n B l o c k s
59C-----------------------------------------------
60#include "scr18_c.inc"
61C-----------------------------------------------
62C L o c a l V a r i a b l e s
63C-----------------------------------------------
64 INTEGER I, K
65C REAL
66
68 . det(mvsiz)
69 double precision
70 . x41, y41, z41, x42, y42, z42, x43, y43, z43,
71 . b1, c1, d1
72 double precision
73 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
74 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
75 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz)
76
77 double precision
78 . det6(6,mvsiz),detdp
79C----------------------------
80C NODAL COORDINATES
81C----------------------------
82 IF (ismstr==1.OR.ismstr==11) RETURN
83 IF(iresp == 1) THEN
84 IF((ismstr==2.OR.ismstr==12).AND.idtmin(1)==3)THEN
85 DO i=1,nel
86 IF(abs(offg(i))>one) cycle
87 x1(i)=xdp(1,nc1(i))
88 y1(i)=xdp(2,nc1(i))
89 z1(i)=xdp(3,nc1(i))
90 x2(i)=xdp(1,nc2(i))
91 y2(i)=xdp(2,nc2(i))
92 z2(i)=xdp(3,nc2(i))
93 x3(i)=xdp(1,nc3(i))
94 y3(i)=xdp(2,nc3(i))
95 z3(i)=xdp(3,nc3(i))
96 x4(i)=xdp(1,nc4(i))
97 y4(i)=xdp(2,nc4(i))
98 z4(i)=xdp(3,nc4(i))
99 ENDDO
100 ELSE
101 DO i=1,nel
102 x1(i)=xdp(1,nc1(i))
103 y1(i)=xdp(2,nc1(i))
104 z1(i)=xdp(3,nc1(i))
105 x2(i)=xdp(1,nc2(i))
106 y2(i)=xdp(2,nc2(i))
107 z2(i)=xdp(3,nc2(i))
108 x3(i)=xdp(1,nc3(i))
109 y3(i)=xdp(2,nc3(i))
110 z3(i)=xdp(3,nc3(i))
111 x4(i)=xdp(1,nc4(i))
112 y4(i)=xdp(2,nc4(i))
113 z4(i)=xdp(3,nc4(i))
114 ENDDO
115 ENDIF
116 ELSE
117 IF((ismstr==2.OR.ismstr==12).AND.idtmin(1)==3)THEN
118 DO i=1,nel
119 IF(abs(offg(i))>one) cycle
120 x1(i)=x(1,nc1(i))
121 y1(i)=x(2,nc1(i))
122 z1(i)=x(3,nc1(i))
123 x2(i)=x(1,nc2(i))
124 y2(i)=x(2,nc2(i))
125 z2(i)=x(3,nc2(i))
126 x3(i)=x(1,nc3(i))
127 y3(i)=x(2,nc3(i))
128 z3(i)=x(3,nc3(i))
129 x4(i)=x(1,nc4(i))
130 y4(i)=x(2,nc4(i))
131 z4(i)=x(3,nc4(i))
132 ENDDO
133 ELSE
134 DO i=1,nel
135 x1(i)=x(1,nc1(i))
136 y1(i)=x(2,nc1(i))
137 z1(i)=x(3,nc1(i))
138 x2(i)=x(1,nc2(i))
139 y2(i)=x(2,nc2(i))
140 z2(i)=x(3,nc2(i))
141 x3(i)=x(1,nc3(i))
142 y3(i)=x(2,nc3(i))
143 z3(i)=x(3,nc3(i))
144 x4(i)=x(1,nc4(i))
145 y4(i)=x(2,nc4(i))
146 z4(i)=x(3,nc4(i))
147 ENDDO
148 ENDIF
149 END IF !(IRESP == 1) THEN
150C----------------------------
151C TETRAHEDRON VOLUME
152C----------------------------
153 DO i=1,nel
154 IF (offg(i) == zero .OR. abs(offg(i))>one) THEN
155 det(i)= zero
156 ELSE
157 x43 = x4(i) - x3(i)
158 y43 = y4(i) - y3(i)
159 z43 = z4(i) - z3(i)
160 x41 = x4(i) - x1(i)
161 y41 = y4(i) - y1(i)
162 z41 = z4(i) - z1(i)
163 x42 = x4(i) - x2(i)
164 y42 = y4(i) - y2(i)
165 z42 = z4(i) - z2(i)
166C
167 b1 = y43*z42 - y42*z43
168 c1 = z43*x42 - z42*x43
169 d1 = x43*y42 - x42*y43
170C
171 detdp= (x41*b1 + y41*c1 + z41*d1)*one_over_6
172 det(i)= detdp
173 ENDIF
174 ENDDO
175
176 !Parith-On treatment
177 CALL foat_to_6_float(1 ,nel ,det ,det6 )
178
179 DO i=1,nel
180C----------------------------------
181C VOLUME <0 SERA TESTE DANS S4DERI3
182C----------------------------------
183 !Parith-On treatment
184 DO k=1,6
185 volnod6(k,nc1(i)) = volnod6(k,nc1(i)) + det6(k,i)
186 volnod6(k,nc2(i)) = volnod6(k,nc2(i)) + det6(k,i)
187 volnod6(k,nc3(i)) = volnod6(k,nc3(i)) + det6(k,i)
188 volnod6(k,nc4(i)) = volnod6(k,nc4(i)) + det6(k,i)
189 ENDDO
190 ENDDO
191C
192 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine foat_to_6_float(jft, jlt, f, f6)
Definition parit.F:225