OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sfor_n2stria2.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!|| sfor_n2stria2 ../engine/source/elements/solid/solide10/sfor_n2stria2.F
25!||--- called by ------------------------------------------------------
26!|| s10for_distor ../engine/source/elements/solid/solide10/s10for_distor.F
27!||--- calls -----------------------------------------------------
28!|| sfor_n2s3 ../engine/source/elements/solid/solide4/sfor_n2s3.F
29!|| ssort_n3 ../engine/source/elements/solid/solide4/ssort_n3.F
30!||====================================================================
31 SUBROUTINE sfor_n2stria2(
32 . XC, YC, ZC,
33 . XC1, YC1, ZC1,
34 . XC2, YC2, ZC2,
35 . XC3, YC3, ZC3,
36 . X1, X2, X3,
37 . Y1, Y2, Y3,
38 . Z1, Z2, Z3,
39 . FOR_T1, FOR_T2, FOR_T3,
40 . X4, X5, X6,
41 . Y4, Y5, Y6,
42 . Z4, Z5, Z6,
43 . FOR_T4, FOR_T5, FOR_T6,
44 . FORC_N1,FORC_N2,FORC_N3,
45 . FORC_N, STIF, STIF0,
46 . FQMAX, IFCTL, LL,
47 . PENMIN, PENREF, MARGE,
48 . VCX, VCY, VCZ,
49 . VXC1, VYC1, VZC1,
50 . VXC2, VYC2, VZC2,
51 . VXC3, VYC3, VZC3,
52 . VX1, VX2, VX3,
53 . VY1, VY2, VY3,
54 . VZ1, VZ2, VZ3,
55 . VX4, VX5, VX6,
56 . VY4, VY5, VY6,
57 . VZ4, VZ5, VZ6,
58 . IFC1, NEL ,E_DISTOR,
59 . DT1 )
60C-----------------------------------------------
61C I m p l i c i t T y p e s
62C-----------------------------------------------
63#include "implicit_f.inc"
64C-----------------------------------------------
65C G l o b a l P a r a m e t e r s
66C-----------------------------------------------
67#include "mvsiz_p.inc"
68C-----------------------------------------------
69C D u m m y A r g u m e n t s
70C-----------------------------------------------
71 INTEGER, INTENT (IN) :: NEL
72 INTEGER, INTENT (OUT) :: IFCTL
73 INTEGER, DIMENSION(MVSIZ), INTENT (IN) :: IFC1
74 DOUBLE PRECISION, DIMENSION(MVSIZ), INTENT (IN) ::
75 . X1, X2, X3,
76 . Y1, Y2, Y3,
77 . Z1, Z2, Z3,
78 . X4, X5, X6,
79 . Y4, Y5, Y6,
80 . Z4, Z5, Z6
81 my_real, DIMENSION(MVSIZ), INTENT (IN) :: STIF0,LL,
82 . XC, YC, ZC,
83 . XC1, YC1, ZC1,
84 . XC2, YC2, ZC2,
85 . XC3, YC3, ZC3
86 my_real, DIMENSION(MVSIZ), INTENT (IN) ::
87 . VCX, VCY, VCZ,
88 . VXC1, VYC1, VZC1,
89 . VXC2, VYC2, VZC2,
90 . VXC3, VYC3, VZC3,
91 . VX1, VX2, VX3,
92 . VY1, VY2, VY3,
93 . VZ1, VZ2, VZ3,
94 . VX4, VX5, VX6,
95 . VY4, VY5, VY6,
96 . VZ4, VZ5, VZ6
97 my_real, DIMENSION(MVSIZ), INTENT (IN) :: PENMIN,PENREF,MARGE
98 my_real, DIMENSION(MVSIZ), INTENT (INOUT) :: STIF
99 my_real, DIMENSION(MVSIZ,3), INTENT (INOUT) :: forc_n,
100 . forc_n1,forc_n2,forc_n3,
101 . for_t1, for_t2, for_t3,
102 . for_t4, for_t5, for_t6
103 my_real, INTENT (IN) :: fqmax,dt1
104 my_real, DIMENSION(NEL), INTENT (INOUT) :: e_distor
105C-----------------------------------------------
106C C o m m o n B l o c k s
107C-----------------------------------------------
108C
109C-----------------------------------------------
110C L o c a l V a r i a b l e s
111C-----------------------------------------------
112 INTEGER I,J,IFCTL1,IEDGE,IFC2(MVSIZ),NIMPA
113C 12
114 my_real
115 . fkt(nel),dx,dy,dz,dcj_0,dcj
116 my_real, DIMENSION(NEL) ::
117 . xs1, xs2, xs3,
118 . ys1, ys2, ys3,
119 . zs1, zs2, zs3,
120 . xs4, xs5, xs6,
121 . ys4, ys5, ys6,
122 . zs4, zs5, zs6
123C----------------------------
124 fkt(1:nel) = one
125 ifc2(1:nel) = ifc1(1:nel)
126 CALL ssort_n3(xc , yc , zc ,
127 . x1, x2, x3,
128 . y1, y2, y3,
129 . z1, z2, z3,
130 . marge, stif0, ifc2,
131 . nel)
132 ifctl = 0
133 ifctl1 = 0
134 DO i=1,nel
135 IF (ifc2(i)==0) cycle
136 ifctl1=1
137 END DO
138C
139 IF (ifctl1==1) THEN
140 xs1(1:nel) = x1(1:nel)
141 xs2(1:nel) = x2(1:nel)
142 xs3(1:nel) = x3(1:nel)
143 xs4(1:nel) = x4(1:nel)
144 xs5(1:nel) = x5(1:nel)
145 xs6(1:nel) = x6(1:nel)
146 ys1(1:nel) = y1(1:nel)
147 ys2(1:nel) = y2(1:nel)
148 ys3(1:nel) = y3(1:nel)
149 ys4(1:nel) = y4(1:nel)
150 ys5(1:nel) = y5(1:nel)
151 ys6(1:nel) = y6(1:nel)
152 zs1(1:nel) = z1(1:nel)
153 zs2(1:nel) = z2(1:nel)
154 zs3(1:nel) = z3(1:nel)
155 zs4(1:nel) = z4(1:nel)
156 zs5(1:nel) = z5(1:nel)
157 zs6(1:nel) = z6(1:nel)
158C
159 nimpa = 0
160C------ 1,4,6
161 CALL sfor_n2s3(xc1, yc1, zc1,forc_n1,
162 . xs1, ys1, zs1, for_t1,
163 . xs4, ys4, zs4, for_t4,
164 . xs6, ys6, zs6, for_t6,
165 . stif0, ifc2, ifctl, penmin,
166 . penref, fkt, ll, fqmax ,
167 . vx1, vx4, vx6, vxc1 ,
168 . vy1, vy4, vy6, vyc1 ,
169 . vz1, vz4, vz6, vzc1 ,
170 . nel,e_distor, dt1)
171 nimpa = nimpa + ifctl
172C------ 2,5,4
173 CALL sfor_n2s3(xc2, yc2, zc2,forc_n2,
174 . xs2, ys2, zs2, for_t2,
175 . xs5, ys5, zs5, for_t5,
176 . xs4, ys4, zs4, for_t4,
177 . stif0, ifc2, ifctl, penmin,
178 . penref, fkt, ll, fqmax ,
179 . vx2, vx5, vx4, vxc2 ,
180 . vy2, vy5, vy4, vyc2 ,
181 . vz2, vz5, vz4, vzc2 ,
182 . nel,e_distor, dt1)
183 nimpa = nimpa + ifctl
184C------ 3,6,5
185 CALL sfor_n2s3(xc3, yc3, zc3,forc_n3,
186 . xs3, ys3, zs3, for_t3,
187 . xs6, ys6, zs6, for_t6,
188 . xs5, ys5, zs5, for_t5,
189 . stif0, ifc2, ifctl, penmin,
190 . penref, fkt, ll, fqmax ,
191 . vx3, vx6, vx5, vxc3 ,
192 . vy3, vy6, vy5, vyc3 ,
193 . vz3, vz6, vz5, vzc3 ,
194 . nel,e_distor, dt1)
195 nimpa = nimpa + ifctl
196C------ 4,5,6
197 CALL sfor_n2s3( xc, yc, zc, forc_n,
198 . xs4, ys4, zs4, for_t4,
199 . xs5, ys5, zs5, for_t5,
200 . xs6, ys6, zs6, for_t6,
201 . stif0, ifc2, ifctl, penmin,
202 . penref, fkt, ll, fqmax ,
203 . vx4, vx5, vx6, vcx ,
204 . vy4, vy5, vy6, vcy ,
205 . vz4, vz5, vz6, vcz ,
206 . nel,e_distor, dt1)
207 nimpa = nimpa + ifctl
208C------
209 DO i=1,nel
210 IF ( fkt(i) > one) THEN
211 stif(i) = max(stif(i),fkt(i)*stif0(i))
212 ifctl = 1
213 END IF
214 ENDDO
215 END IF
216C
217 RETURN
218 END
#define max(a, b)
Definition macros.h:21
subroutine sfor_n2s3(xi, yi, zi, forc_n, x1, y1, z1, for_t1, x2, y2, z2, for_t2, x3, y3, z3, for_t3, stif, ifc1, ifctl, penmin, penref, fktmax, ll, fqmax, vx1, vx2, vx3, vxi, vy1, vy2, vy3, vyi, vz1, vz2, vz3, vzi, nel, e_distor, dt1)
Definition sfor_n2s3.F:40
subroutine sfor_n2stria2(xc, yc, zc, xc1, yc1, zc1, xc2, yc2, zc2, xc3, yc3, zc3, x1, x2, x3, y1, y2, y3, z1, z2, z3, for_t1, for_t2, for_t3, x4, x5, x6, y4, y5, y6, z4, z5, z6, for_t4, for_t5, for_t6, forc_n1, forc_n2, forc_n3, forc_n, stif, stif0, fqmax, ifctl, ll, penmin, penref, marge, vcx, vcy, vcz, vxc1, vyc1, vzc1, vxc2, vyc2, vzc2, vxc3, vyc3, vzc3, vx1, vx2, vx3, vy1, vy2, vy3, vz1, vz2, vz3, vx4, vx5, vx6, vy4, vy5, vy6, vz4, vz5, vz6, ifc1, nel, e_distor, dt1)
subroutine ssort_n3(xi, yi, zi, x1, x2, x3, y1, y2, y3, z1, z2, z3, marge, stif, ifc1, nel)
Definition ssort_n3.F:34