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

Go to the source code of this file.

Functions/Subroutines

subroutine s4defo3 (px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, vx1, vx2, vx3, vx4, vy1, vy2, vy3, vy4, vz1, vz2, vz3, vz4, dxx, dxy, dxz, dyx, dyy, dyz, dzx, dzy, dzz, d4, d5, d6, wxx, wyy, wzz, nel, ismstr)

Function/Subroutine Documentation

◆ s4defo3()

subroutine s4defo3 ( px1,
px2,
px3,
px4,
py1,
py2,
py3,
py4,
pz1,
pz2,
pz3,
pz4,
vx1,
vx2,
vx3,
vx4,
vy1,
vy2,
vy3,
vy4,
vz1,
vz2,
vz3,
vz4,
dxx,
dxy,
dxz,
dyx,
dyy,
dyz,
dzx,
dzy,
dzz,
d4,
d5,
d6,
wxx,
wyy,
wzz,
integer, intent(in) nel,
integer, intent(in) ismstr )

Definition at line 28 of file s4defo3.F.

40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C-----------------------------------------------
45C D u m m y A r g u m e n t s
46C-----------------------------------------------
47 INTEGER, INTENT(IN) :: NEL
48 INTEGER, INTENT(IN) :: ISMSTR
50 . vx1(*), vx2(*), vx3(*), vx4(*),
51 . vy1(*), vy2(*), vy3(*), vy4(*),
52 . vz1(*), vz2(*), vz3(*), vz4(*),
53 . px1(*), px2(*), px3(*), px4(*),
54 . py1(*), py2(*), py3(*), py4(*),
55 . pz1(*), pz2(*), pz3(*), pz4(*),
56 . dxx(*), dxy(*), dxz(*),
57 . dyx(*), dyy(*), dyz(*),
58 . dzx(*), dzy(*), dzz(*), d4(*), d5(*), d6(*),
59 . wxx(*), wyy(*), wzz(*)
60CMasParINCLUDE 'sdefo3.intmap.inc'
61C-----------------------------------------------
62C C o m m o n B l o c k s
63C-----------------------------------------------
64#include "com08_c.inc"
65C-----------------------------------------------
66C L o c a l V a r i a b l e s
67C-----------------------------------------------
68 INTEGER I
69C REAL
71 . dt1d2
72 my_real
73 . pxx2,pyy2,pzz2,pxx2p,pyy2p,pzz2p,aaa,bbb,ccc,
74 . exx,exy,exz,eyx,eyy,eyz,ezx,ezy,ezz
75C-----------------------------------------------
76 DO i=1,nel
77 dxx(i)=px1(i)*vx1(i)+px2(i)*vx2(i)+
78 . px3(i)*vx3(i)+px4(i)*vx4(i)
79 dyy(i)=py1(i)*vy1(i)+py2(i)*vy2(i)+
80 . py3(i)*vy3(i)+py4(i)*vy4(i)
81 dzz(i)=pz1(i)*vz1(i)+pz2(i)*vz2(i)+
82 . pz3(i)*vz3(i)+pz4(i)*vz4(i)
83 dxy(i)=py1(i)*vx1(i)+py2(i)*vx2(i)+
84 . py3(i)*vx3(i)+py4(i)*vx4(i)
85 dxz(i)=pz1(i)*vx1(i)+pz2(i)*vx2(i)+
86 . pz3(i)*vx3(i)+pz4(i)*vx4(i)
87 dyx(i)=px1(i)*vy1(i)+px2(i)*vy2(i)+
88 . px3(i)*vy3(i)+px4(i)*vy4(i)
89 dyz(i)=pz1(i)*vy1(i)+pz2(i)*vy2(i)+
90 . pz3(i)*vy3(i)+pz4(i)*vy4(i)
91 dzx(i)=px1(i)*vz1(i)+px2(i)*vz2(i)+
92 . px3(i)*vz3(i)+px4(i)*vz4(i)
93 dzy(i)=py1(i)*vz1(i)+py2(i)*vz2(i)+
94 . py3(i)*vz3(i)+py4(i)*vz4(i)
95 ENDDO
96C
97 dt1d2=half*dt1
98C
99 IF(ismstr==2.OR.ismstr==4)THEN
100C
101C 2nd order correction is needed only w/large strain
102C since small strain is not objective anyway
103 DO i=1,nel
104C
105 exx=dxx(i)
106 eyy=dyy(i)
107 ezz=dzz(i)
108 exy=dxy(i)
109 eyx=dyx(i)
110 exz=dxz(i)
111 ezx=dzx(i)
112 eyz=dyz(i)
113 ezy=dzy(i)
114C
115C Euler-Almansi A=1/2 [I-Invers(B)], with Left Cauchy-Green tensor B = F.Transp(F)
116C Invers(B)=Invers(Transp(F)).Invers(F)
117C
118C small perturbation A ~ (I-Transp(gradU)).(I-gradU)
119C A ~ 1/2 (gradU + Transp(gradU) - Transp(gradU).gradU)
120C
121 dxx(i) = dxx(i)-dt1d2*(exx*exx+eyx*eyx+ezx*ezx)
122 dyy(i) = dyy(i)-dt1d2*(eyy*eyy+ezy*ezy+exy*exy)
123 dzz(i) = dzz(i)-dt1d2*(ezz*ezz+exz*exz+eyz*eyz)
124 aaa = dt1d2*(exx*exy+eyx*eyy+ezx*ezy)
125 dxy(i) = dxy(i) -aaa
126 dyx(i) = dyx(i) -aaa
127 d4(i) = dxy(i)+dyx(i)
128 bbb = dt1d2*(eyy*eyz+ezy*ezz+exy*exz)
129 dyz(i) = dyz(i) -bbb
130 dzy(i) = dzy(i) -bbb
131 d5(i) = dyz(i)+dzy(i)
132 ccc = dt1d2*(ezz*ezx+exz*exx+eyz*eyx)
133 dxz(i) = dxz(i) -ccc
134 dzx(i) = dzx(i) -ccc
135 d6(i) = dxz(i)+dzx(i)
136C
137C WZZ(I)=DT1D2*(EYX-EXY)
138C WYY(I)=DT1D2*(EXZ-EZX)
139C WXX(I)=DT1D2*(EZY-EYZ)
140C
141C B = F Transp(F) = V^2, F = V.R
142C => R = [Invers(Transp(F)).F]^1/2
143C small perturbation => R ~ I + 1/2 ( gradU - Transp(gradU) - Transp(gradU).gradU )
144C
145C [ 0 wzz -wyy ]
146C and R = [ wzz 0 -wxx ]
147C [ wyy wxx 0 ]
148C
149 wzz(i)=dt1*(half*(eyx-exy)-aaa)
150 wyy(i)=dt1*(half*(exz-ezx)-bbb)
151 wxx(i)=dt1*(half*(ezy-eyz)-ccc)
152 ENDDO
153 ELSE ! ISMSTR==1 or Total Strain Formulation (Approximated Strain Rate)
154 DO i=1,nel
155 d4(i) = dxy(i)+dyx(i)
156 d5(i) = dyz(i)+dzy(i)
157 d6(i) = dxz(i)+dzx(i)
158 wzz(i)=dt1d2*(dyx(i)-dxy(i))
159 wyy(i)=dt1d2*(dxz(i)-dzx(i))
160 wxx(i)=dt1d2*(dzy(i)-dyz(i))
161 ENDDO
162 END IF
163C
164 RETURN
165C
#define my_real
Definition cppsort.cpp:32