OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s4for_distor.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"

Go to the source code of this file.

Functions/Subroutines

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)

Function/Subroutine Documentation

◆ s4for_distor()

subroutine s4for_distor ( intent(in) x1,
intent(in) x2,
intent(in) x3,
intent(in) x4,
intent(in) y1,
intent(in) y2,
intent(in) y3,
intent(in) y4,
intent(in) z1,
intent(in) z2,
intent(in) z3,
intent(in) z4,
intent(in) vx1,
intent(in) vx2,
intent(in) vx3,
intent(in) vx4,
intent(in) vy1,
intent(in) vy2,
intent(in) vy3,
intent(in) vy4,
intent(in) vz1,
intent(in) vz2,
intent(in) vz3,
intent(in) vz4,
intent(inout) f11,
intent(inout) f12,
intent(inout) f13,
intent(inout) f14,
intent(inout) f21,
intent(inout) f22,
intent(inout) f23,
intent(inout) f24,
intent(inout) f31,
intent(inout) f32,
intent(inout) f33,
intent(inout) f34,
intent(inout) sti,
intent(in) fld,
intent(in) sti_c,
intent(in) ll,
intent(in) mu,
intent(in) fqmax,
integer, dimension(mvsiz), intent(in) istab,
integer, intent(in) nel,
intent(inout) e_distor,
intent(in) dt1 )

Definition at line 31 of file s4for_distor.F.

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-----------------------------------------------
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
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21
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