36 . LOADS ,TABLE ,NSENSOR ,SENSOR_TAB,IFRAME ,
37 . DT1 ,X ,V ,ACC ,FEXT ,
38 . H3D_DATA ,CPTREAC ,FTHREAC ,NODREAC ,FSKY ,
50#include "implicit_f.inc"
64 INTEGER ,
INTENT(IN) :: NSENSOR,CPTREAC
65 my_real ,
INTENT(IN) :: DT1
66 INTEGER ,
DIMENSION(NUMNOD) ,
INTENT(IN) :: NODREAC
67 INTEGER ,
DIMENSION(LISKN,*) ,
INTENT(IN) :: IFRAME
68 my_real ,
DIMENSION(8,LSKY) ,
INTENT(INOUT) :: fsky
69 my_real ,
DIMENSION(3,NUMNOD) ,
INTENT(IN) :: x,v
70 my_real ,
DIMENSION(3,NUMNOD) ,
INTENT(INOUT) :: acc,fext
71 my_real ,
DIMENSION(6,CPTREAC),
INTENT(INOUT) :: fthreac
72 TYPE (TTABLE) ,
DIMENSION(NTABLE) ,
INTENT(IN) :: TABLE
73 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) ,
INTENT(IN) :: SENSOR_TAB
74 TYPE (LOADS_) ,
INTENT(IN) :: LOADS
75 TYPE (H3D_DATABASE),
INTENT(IN) :: H3D_DATA
76 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
80 INTEGER :: I,J,IAD,IANIM,,IFUN,IFRA,N1,N2,N3,N4,M1,M2,
82 my_real :: ,DIRX,DIRY,DIRZ,
83 . RMAX,XFACR,XFACT,YFAC,
84 . nx,ny,nz,fx,fy,fz,segp,press,wfextt
85 my_real,
DIMENSION(3) :: p0,dir,a,b,c,d,m
88 ianim = anim_v(5) + outp_v(5) + h3d_data%N_VECT_FINT
89 . + anim_v(6) + outp_v(6) + h3d_data%N_VECT_FEXT
92 DO i = 1,loads%NLOAD_CYL
93 isens = loads%LOAD_CYL(i)%ISENS
95 IF (sensor_tab(isens)%STATUS == 0) cycle
98 nseg = loads%LOAD_CYL(i)%NSEG
99 ifra = loads%LOAD_CYL(i)%IFRAME + 1
100 xfacr= loads%LOAD_CYL(i)%XSCALE_R
101 xfact= loads%LOAD_CYL(i)%XSCALE_T
102 yfac = loads%LOAD_CYL(i)%YSCALE
103 ifun = loads%LOAD_CYL(i)%ITABLE
104 ndim = table(ifun)%NDIM
105 npoint =
SIZE(table(ifun)%X(1)%VALUES)
106 rmax = table(ifun)%X(1)%VALUES(npoint)
109 dirx = x(1,m1) - x(1,m2)
110 diry = x(2,m1) - x(2,m2)
111 dirz = x(3,m1) - x(3,m2)
112 len = sqrt(dirx**2 + diry**2 + dirz**2)
122 n1 = loads%LOAD_CYL(i)%SEGNOD(j,1)
123 n2 = loads%LOAD_CYL(i)%SEGNOD(j,2)
124 n3 = loads%LOAD_CYL(i)%SEGNOD(j,3)
125 n4 = loads%LOAD_CYL(i)%SEGNOD(j,4)
138 . ifun ,table ,xfacr ,xfact ,segp )
139 nx = (c(2)-a(2))*(c(3)-b(3)) - (c(3)-a(3))*(c(2)-b(2))
140 ny = (c(3)-a(3))*(c(1)-b(1)) - (c(1)-a(1))*(c(3)-b(3))
141 nz = (c(1)-a(1))*(c(2)-b(2)) - (c(2)-a(2))*(c(1)-b(1))
142 press = segp * one_over_6
148 . + (fx*(v(1,n1) + v(1,n2) + v(1,n3))
149 . + fy*(v(2,n1) + v(2,n2) + v(2,n3))
150 . + fz*(v(3,n1) + v(3,n2) + v(3,n3))) * dt1
156 m(1) = (x(1,n1) + x(1,n2) + x(1,n3) + x(1,n4)) * fourth
157 m(2) = (x(2,n1) + x(2,n2) + x(2,n3) + x(2,n4)) * fourth
158 m(3) = (x(3,n1) + x(3,n2) + x(3,n3) + x(3,n4)) * fourth
161 . ifun ,table ,xfacr ,xfact
162 press = press + segp * fourth
165 . ifun ,table ,xfacr ,xfact ,segp )
166 press = press + segp * fourth
169 . ifun ,table ,xfacr ,xfact ,segp )
170 press = press + segp * fourth
173 . ifun ,table ,xfacr ,xfact ,segp )
174 press = press + segp * fourth
176 nx = (c(2)-a(2))*(d(3)-b(3)) - (c(3)-a(3))*(d(2)-b(2))
177 ny = (c(3)-a(3))*(d(1)-b(1)) - (c(1)-a(1))*(d(3)-b(3))
178 nz = (c(1)-a(1))*(d(2)-b(2)) - (c(2)-a(2))*(d(1)-b(1))
179 press = abs(press) * yfac * one_over_8
184 . + (fx*(v(1,n1) + v(1,n2) + v(1,n3) + v(1,n4))
185 . + fy*(v(2,n1) + v(2,n2) + v(2,n3) + v(2,n4))
186 . + fz*(v(3,n1) + v(3,n2) + v(3,n3) + v(3,n4))) * dt1
191 IF (iparit == 0)
THEN
192 acc(1,n1) = acc(1,n1) + fx
193 acc(2,n1) = acc(2,n1) + fy
194 acc(3,n1) = acc(3,n1) + fz
195 acc(1,n2) = acc(1,n2) + fx
196 acc(2,n2) = acc(2,n2) + fy
197 acc(3,n2) = acc(3,n2) + fz
198 acc(1,n3) = acc(1,n3) + fx
199 acc(2,n3) = acc(2,n3) + fy
200 acc(3,n3) = acc(3,n3) + fz
202 acc(1,n4) = acc(1,n4) + fx
203 acc(2,n4) = acc(2,n4) + fy
204 acc(3,n4) = acc(3,n4) + fz
207 iad = loads%LOAD_CYL(i)%SEGMENT_ADRESS(1,j)
212 iad = loads%LOAD_CYL(i)%SEGMENT_ADRESS(2,j)
217 iad = loads%LOAD_CYL(i)%SEGMENT_ADRESS(3,j)
223 iad = loads%LOAD_CYL(i)%SEGMENT_ADRESS(4,j)
231 fext(1,n1) = fext(1,n1) + fx
232 fext(2,n1) = fext(2,n1) + fy
233 fext(3,n1) = fext(3,n1) + fz
234 fext(1,n2) = fext(1,n2) + fx
235 fext(2,n2) = fext(2,n2) + fy
236 fext(3,n2) = fext(3,n2) + fz
237 fext(1,n3) = fext(1,n3) + fx
238 fext(2,n3) = fext(2,n3) + fy
239 fext(3,n3) = fext(3,n3) + fz
241 fext(1,n4) = fext(1,n4) + fx
242 fext(2,n4) = fext(2,n4) + fy
243 fext(3,n4) = fext(3,n4) + fz
246 IF (cptreac > 0)
THEN
247 IF (nodreac(n1) > 0)
THEN
248 fthreac(1,nodreac(n1)) = fthreac(1,nodreac(n1)) + fx*dt1
249 fthreac(2,nodreac(n1)) = fthreac(2,nodreac(n1)) + fy*dt1
250 fthreac(3,nodreac(n1)) = fthreac(3,nodreac(n1)) + fz*dt1
252 IF (nodreac(n2) > 0)
THEN
253 fthreac(1,nodreac(n2)) = fthreac(1,nodreac(n2)) + fx*dt1
254 fthreac(2,nodreac(n2)) = fthreac(2,nodreac(n2)) + fy*dt1
255 fthreac(3,nodreac(n2)) = fthreac(3,nodreac(n2)) + fz*dt1
257 IF (nodreac(n3) > 0)
THEN
258 fthreac(1,nodreac(n3)) = fthreac(1,nodreac(n3)) + fx*dt1
259 fthreac(2,nodreac(n3)) = fthreac(2,nodreac(n3)) + fy*dt1
260 fthreac(3,nodreac(n3)) = fthreac(3,nodreac(n3)) + fz*dt1
263 IF (nodreac(n4) > 0)
THEN
264 fthreac(1,nodreac(n4)) = fthreac(1,nodreac(n4)) + fx*dt1
265 fthreac(2,nodreac(n4)) = fthreac(2,nodreac(n4)) + fy*dt1
266 fthreac(3,nodreac(n4)) = fthreac(3,nodreac(n4)) + fz*dt1
276 wfext = wfext + wfextt