OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
pcurv3.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "com08_c.inc"
#include "param_c.inc"
#include "impl1_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine pcurv3 (r, geo, offg, off, exx, exy, exz, kxx, kyy, kzz, al, nc1, nc2, nc3, rx1g, rx2g, ry1g, ry2g, rz1g, rz2g, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, pid, nel)

Function/Subroutine Documentation

◆ pcurv3()

subroutine pcurv3 ( r,
geo,
offg,
off,
exx,
exy,
exz,
kxx,
kyy,
kzz,
al,
integer, dimension(mvsiz) nc1,
integer, dimension(mvsiz) nc2,
integer, dimension(mvsiz) nc3,
rx1g,
rx2g,
ry1g,
ry2g,
rz1g,
rz2g,
e1x,
e1y,
e1z,
e2x,
e2y,
e2z,
e3x,
e3y,
e3z,
integer, dimension(mvsiz) pid,
integer, intent(in) nel )

Definition at line 28 of file pcurv3.F.

37C-----------------------------------------------
38C I m p l i c i t T y p e s
39C-----------------------------------------------
40#include "implicit_f.inc"
41C-----------------------------------------------
42C G l o b a l P a r a m e t e r s
43C-----------------------------------------------
44#include "mvsiz_p.inc"
45C-----------------------------------------------
46C C o m m o n B l o c k s
47C-----------------------------------------------
48#include "com08_c.inc"
49#include "param_c.inc"
50#include "impl1_c.inc"
51C-----------------------------------------------
52C D u m m y A r g u m e n t s
53C-----------------------------------------------
54 INTEGER, INTENT(IN) :: NEL
55 INTEGER NC1(MVSIZ),NC2(MVSIZ),NC3(MVSIZ),PID(MVSIZ)
57 . r(3,*), geo(npropg,*),
58 . offg(*),off(*),al(mvsiz),exx(mvsiz),exy(mvsiz),exz(mvsiz),
59 . kxx(mvsiz),kyy(mvsiz),kzz(mvsiz),rx1g(mvsiz),rx2g(mvsiz),
60 . ry1g(mvsiz),ry2g(mvsiz),rz1g(mvsiz),rz2g(mvsiz),
61 . rx1(mvsiz),rx2(mvsiz),ry1(mvsiz),ry2(mvsiz),rz1(mvsiz),rz2(mvsiz),
62 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),e2x(mvsiz),e2y(mvsiz),
63 . e2z(mvsiz),e3x(mvsiz),e3y(mvsiz),e3z(mvsiz)
64C-----------------------------------------------
65C L o c a l V a r i a b l e s
66C-----------------------------------------------
67 INTEGER I, IG, IRX, IR1Y, IR1Z,
68 . IR2Y, IR2Z, IRY, IRZ, J
70 . rxav(mvsiz), ryav(mvsiz), rzav(mvsiz),exx00(mvsiz), exy00(mvsiz),
71 . exz00(mvsiz), exy0(mvsiz), exz0(mvsiz),rz10(mvsiz),
72 . ry10(mvsiz), rz20(mvsiz), ry20(mvsiz), exx00phi,exy00phi,
73 . exz00phi, exy0phi, exz0phi, rx10phi, ry10phi, rz10phi,
74 . rx20phi, ry20phi, rz20phi,off_l,dt05
75C-----------------------------------------------
76 DO i=1,nel
77 rx1(i)=e1x(i)*rx1g(i)+e1y(i)*ry1g(i)+e1z(i)*rz1g(i)
78 ry1(i)=e2x(i)*rx1g(i)+e2y(i)*ry1g(i)+e2z(i)*rz1g(i)
79 rz1(i)=e3x(i)*rx1g(i)+e3y(i)*ry1g(i)+e3z(i)*rz1g(i)
80 rx2(i)=e1x(i)*rx2g(i)+e1y(i)*ry2g(i)+e1z(i)*rz2g(i)
81 ry2(i)=e2x(i)*rx2g(i)+e2y(i)*ry2g(i)+e2z(i)*rz2g(i)
82 rz2(i)=e3x(i)*rx2g(i)+e3y(i)*ry2g(i)+e3z(i)*rz2g(i)
83 ENDDO
84C---------------------------------
85C SECOND ORDRE TRANSLATIONS ROTATIONS
86C---------------------------------
87 dt05=half*dt1
88 IF (impl_s > 0 .AND. ismdisp > 0) dt05=zero
89C
90 DO i=1,nel
91 rxav(i)= half*dt05*(rx1(i)+rx2(i))
92 exx00(i)=exx(i)
93 exy00(i)=exy(i)
94 exz00(i)=exz(i)
95C
96 exy0(i)=dt05*exy(i)
97 exz0(i)=dt05*exz(i)
98 exx(i)=exx(i)-(exy0(i)*exy00(i)+exz0(i)*exz00(i))
99 exy(i)=exy(i)+exz0(i)*exx00(i)
100 exz(i)=exz(i)+exy0(i)*exx00(i)
101 rz10(i)=rz1(i)
102 ry10(i)=ry1(i)
103 rz20(i)=rz2(i)
104 ry20(i)=ry2(i)
105 rx1(i)=rx1(i)-exy0(i)*ry10(i)-exz0(i)*rz10(i)
106 ry1(i)=ry1(i)-rxav(i)*(rz10(i)-exy(i))
107 rz1(i)=rz1(i)+rxav(i)*(ry10(i)+exz(i))
108 rx2(i)=rx2(i)-exy0(i)*ry20(i)-exz0(i)*rz20(i)
109 ry2(i)=ry2(i)-rxav(i)*(rz20(i)-exy(i))
110 rz2(i)=rz2(i)+rxav(i)*(ry20(i)+exz(i))
111 ENDDO
112C---------------------------------------------------
113C LIBERATION DES ROTATIONS
114C---------------------------------------------------
115 DO i=1,nel
116 ig=pid(i)
117 irx =nint(geo(7 ,ig))
118 ir1y=nint(geo(8 ,ig))
119 ir1z=nint(geo(9 ,ig))
120 ir2y=nint(geo(10,ig))
121 ir2z=nint(geo(11,ig))
122 iry =min(1,ir1y+ir2y)
123 irz =min(1,ir1z+ir2z)
124 rx1(i)=rx1(i)*irx
125 ry1(i)=ry1(i)*iry
126 rz1(i)=rz1(i)*irz
127 rx2(i)=rx2(i)*irx
128 ry2(i)=ry2(i)*iry
129 rz2(i)=rz2(i)*irz
130 exz(i)=exz(i)*iry
131 exy(i)=exy(i)*irz
132C ... !!!!!!!
133 ry1(i)=ir1y*ry1(i)
134 + -(one -ir1y)*(three_half*exz(i)+half*ry2(i))
135 ry2(i)=ir2y*ry2(i)
136 + -(one -ir2y)*(three_half*exz(i)+half*ry1(i))
137 rz1(i)=ir1z*rz1(i)
138 + +(one-ir1z)*(three_half*exy(i)-half*rz2(i))
139 rz2(i)=ir2z*rz2(i)
140 + +(one -ir2z)*(three_half*exy(i)-half*rz1(i))
141 ENDDO
142C
143 DO i=1,nel
144 kxx(i)=(rx2(i)-rx1(i))/al(i)
145 kyy(i)=(ry2(i)-ry1(i))/al(i)
146 kzz(i)=(rz2(i)-rz1(i))/al(i)
147 ENDDO
148C
149 DO i=1,nel
150 rxav(i)=rx1(i)+rx2(i)
151 rzav(i)=rz1(i)+rz2(i)
152 ryav(i)=ry1(i)+ry2(i)
153 ENDDO
154C---------------------------------
155 DO i=1,nel
156 exz(i)=exz(i) + half*ryav(i)
157 exy(i)=exy(i) - half*rzav(i)
158 ENDDO
159C----------------------------
160C OFF
161C----------------------------
162 off_l = zero
163 DO i=1,nel
164 off(i) = min(one,abs(offg(i)))
165 off(i) = max(zero,off(i))
166 off_l = min(off_l,offg(i))
167 ENDDO
168 IF (off_l < zero) THEN
169 DO i=1,nel
170 IF (offg(i) < zero) THEN
171 exx(i)=zero
172 exz(i)=zero
173 exy(i)=zero
174 kxx(i)=zero
175 kyy(i)=zero
176 kzz(i)=zero
177 ENDIF
178 ENDDO
179 ENDIF
180C---------------------------------
181 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21