OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s4for_distor.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!|| s4for_distor ../engine/source/elements/solid/solide4/s4for_distor.F
25!||--- called by ------------------------------------------------------
26!|| s4forc3 ../engine/source/elements/solid/solide4/s4forc3.F
27!||--- calls -----------------------------------------------------
28!|| sfor_n2stria ../engine/source/elements/solid/solide4/sfor_n2stria.F
29!|| sfor_visn4 ../engine/source/elements/solid/solide4/sfor_visn4.f
30!||====================================================================
31 SUBROUTINE s4for_distor(
32 . X1, X2, X3, X4,
33 . Y1, Y2, Y3, Y4,
34 . Z1, Z2, Z3, Z4,
35 . VX1, VX2, VX3, VX4,
36 . VY1, VY2, VY3, VY4,
37 . VZ1, VZ2, VZ3, VZ4,
38 . F11, F12, F13, F14,
39 . F21, F22, F23, F24,
40 . F31, F32, F33, F34,
41 . STI, FLD, STI_C, LL,
42 . MU, FQMAX, ISTAB, NEL ,
43 . E_DISTOR, DT1)
44C-----------------------------------------------
45C M o d u l e s
46C-----------------------------------------------
47C-----------------------------------------------
48C I m p l i c i t T y p e s
49C-----------------------------------------------
50#include "implicit_f.inc"
51C-----------------------------------------------
52C G l o b a l P a r a m e t e r s
53C-----------------------------------------------
54#include "mvsiz_p.inc"
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58C D u m m y A r g u m e n t s
59C-----------------------------------------------
60 INTEGER, INTENT(IN) :: NEL
61 INTEGER, DIMENSION(MVSIZ), INTENT(IN) :: ISTAB
62 my_real, INTENT(IN) :: MU,FQMAX,DT1
63 my_real, DIMENSION(MVSIZ), INTENT(IN) :: FLD,
64 . X1,X2,X3,X4,
65 . Y1,Y2,Y3,Y4,
66 . Z1,Z2,Z3,Z4,
67 . VX1,VX2,VX3,VX4,
68 . VY1,VY2,VY3,VY4,
69 . VZ1,VZ2,VZ3,VZ4,LL,STI_C
70 my_real, DIMENSION(MVSIZ), INTENT(INOUT) ::
71 . F11,F21,F31,F12,F22,F32,
72 . f13,f23,f33,f14,f24,f34,sti
73 my_real, DIMENSION(NEL), INTENT(INOUT) :: e_distor
74C-----------------------------------------------
75C L o c a l V a r i a b l e s
76C-----------------------------------------------
77 my_real
78 . xc(mvsiz),yc(mvsiz),zc(mvsiz),stif(mvsiz),
79 . vc(mvsiz,3),forc_n(mvsiz,3),for_t1(mvsiz,3),
80 . for_t2(mvsiz,3),for_t3(mvsiz,3),for_t4(mvsiz,3),
81 . fcx,fcy,fcz,fac,gap_max,gap_min,tol_t,tol_c,tol_v,
82 . penmin(mvsiz),penref(mvsiz),marge(mvsiz)
83 INTEGER I,J,NCTL,IFCTL,IFC1(MVSIZ)
84C-----------------------------------------------
85C S o u r c e C o d e
86C-----------------------------------------------
87 tol_c= zep2
88 tol_v = eight
89C---- element center
90 DO i=1,nel
91 vc(i,1) = fourth*(vx1(i)+vx2(i)+vx3(i)+vx4(i))
92 vc(i,2) = fourth*(vy1(i)+vy2(i)+vy3(i)+vy4(i))
93 vc(i,3) = fourth*(vz1(i)+vz2(i)+vz3(i)+vz4(i))
94 stif(i) = sti_c(i)
95 ifc1(i) = istab(i)
96 ENDDO
97C
98 nctl = 0
99 forc_n = zero
100 for_t1 = zero
101 for_t2 = zero
102 for_t3 = zero
103 for_t4 = zero
104 CALL sfor_visn4(vc , fld, tol_v, ifc1,
105 . vx1, vx2, vx3, vx4,
106 . vy1, vy2, vy3, vy4,
107 . vz1, vz2, vz3, vz4,
108 . for_t1, for_t2, for_t3, for_t4,
109 . ifctl, stif , mu , nel ,
110 . e_distor,dt1 )
111 nctl = nctl + ifctl
112C---- element center
113 DO i=1,nel
114 xc(i) = fourth*(x1(i)+x2(i)+x3(i)+x4(i))
115 yc(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
116 zc(i) = fourth*(z1(i)+z2(i)+z3(i)+z4(i))
117 ENDDO
118! -- sorting for each 4 big seg. :
119 gap_min = tol_c*em02 !percentage
120 gap_max = five*gap_min
121 penmin(1:nel) = gap_min*ll(1:nel)
122 penref(1:nel) = gap_max*ll(1:nel)
123! MARGE(1:NEL) = TWO*GAP_MAX*LL(1:NEL)
124C---- seg 1 : 1,2,3 (normal will be towards inside)
125 CALL sfor_n2stria(xc, yc, zc,
126 . x1, x2, x3,
127 . y1, y2, y3,
128 . z1, z2, z3,
129 . vc(1,1), vc(1,2),vc(1,3),
130 . vx1, vx2, vx3,
131 . vy1, vy2, vy3,
132 . vz1, vz2, vz3,
133 . for_t1, for_t2, for_t3,
134 . forc_n, sti_c, stif,
135 . fqmax , penmin, penref,
136 . ll , ifctl, nel ,
137 . e_distor, dt1 )
138 nctl = nctl + ifctl
139C---- seg 2 : 1,4,2
140 CALL sfor_n2stria(xc, yc, zc,
141 . x1, x4, x2,
142 . y1, y4, y2,
143 . z1, z4, z2,
144 . vc(1,1), vc(1,2),vc(1,3),
145 . vx1, vx4, vx2,
146 . vy1, vy4, vy2,
147 . vz1, vz4, vz2,
148 . for_t1, for_t4, for_t2,
149 . forc_n, sti_c, stif,
150 . fqmax , penmin, penref,
151 . ll , ifctl, nel ,
152 . e_distor, dt1 )
153 nctl = nctl + ifctl
154C---- seg 3 : 2,4,3
155 CALL sfor_n2stria( xc, yc, zc,
156 . x2, x4, x3,
157 . y2, y4, y3,
158 . z2, z4, z3,
159 . vc(1,1),vc(1,2),vc(1,3),
160 . vx2, vx4, vx3,
161 . vy2, vy4, vy3,
162 . vz2, vz4, vz3,
163 . for_t2, for_t4, for_t3,
164 . forc_n, sti_c, stif,
165 . fqmax , penmin, penref,
166 . ll , ifctl, nel ,
167 . e_distor, dt1 )
168 nctl = nctl + ifctl
169C---- seg 4 : 1,3,4
170 CALL sfor_n2stria(xc, yc, zc,
171 . x1, x3, x4,
172 . y1, y3, y4,
173 . z1, z3, z4,
174 . vc(1,1), vc(1,2),vc(1,3),
175 . vx1, vx3, vx4,
176 . vy1, vy3, vy4,
177 . vz1, vz3, vz4,
178 . for_t1, for_t3, for_t4,
179 . forc_n, sti_c, stif,
180 . fqmax , penmin, penref,
181 . ll , ifctl, nel ,
182 . e_distor, dt1 )
183 nctl = nctl + ifctl
184C---- force assemblage and STI update (dt)
185! IF (NCTL >0) THEN : potential P/ON issue
186 DO i=1,nel
187 IF (sti_c(i)==zero) cycle
188 fcx = fourth*forc_n(i,1)
189 fcy = fourth*forc_n(i,2)
190 fcz = fourth*forc_n(i,3)
191 f11(i)=f11(i) + for_t1(i,1) + fcx
192 f21(i)=f21(i) + for_t1(i,2) + fcy
193 f31(i)=f31(i) + for_t1(i,3) + fcz
194 f12(i)=f12(i) + for_t2(i,1) + fcx
195 f22(i)=f22(i) + for_t2(i,2) + fcy
196 f32(i)=f32(i) + for_t2(i,3) + fcz
197 f13(i)=f13(i) + for_t3(i,1) + fcx
198 f23(i)=f23(i) + for_t3(i,2) + fcy
199 f33(i)=f33(i) + for_t3(i,3) + fcz
200 f14(i)=f14(i) + for_t4(i,1) + fcx
201 f24(i)=f24(i) + for_t4(i,2) + fcy
202 f34(i)=f34(i) + for_t4(i,3) + fcz
203C
204 IF (stif(i)>sti_c(i)) sti(i) = max(sti(i),stif(i))
205 END DO
206! END IF !(NCTL >0) THEN
207
208
209
210
211 RETURN
212 END
213
#define max(a, b)
Definition macros.h:21
subroutine s4for_distor(x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, vx1, vx2, vx3, vx4, vy1, vy2, vy3, vy4, vz1, vz2, vz3, vz4, f11, f12, f13, f14, f21, f22, f23, f24, f31, f32, f33, f34, sti, fld, sti_c, ll, mu, fqmax, istab, nel, e_distor, dt1)
subroutine sfor_n2stria(xc, yc, zc, x1, x2, x3, y1, y2, y3, z1, z2, z3, vcx, vcy, vcz, vx1, vx2, vx3, vy1, vy2, vy3, vz1, vz2, vz3, for_t1, for_t2, for_t3, forc_n, stif0, stif, fqmax, penmin, penref, ll, ifctl, nel, e_distor, dt1)
subroutine sfor_visn4(vc, fld, tol_v, ifc1, vx1, vx2, vx3, vx4, vy1, vy2, vy3, vy4, vz1, vz2, vz3, vz4, for_t1, for_t2, for_t3, for_t4, ifctl, stif, mu, nel, e_distor, dt1)
Definition sfor_visn4.F:35