39 2 VEL ,SENSOR_TAB,FSKY ,FEXT ,ITABM1,
40 3 H3D_DATA,NSENSOR, PYTHON,WFEXT,NODES)
46 use python_call_funct_cload_mod
52#include
"implicit_f.inc"
69 my_real FINTER,FINTER_SMOOTH
70 EXTERNAL finter,finter_smooth
74 TYPE(nodal_arrays_) :: NODES
75 TYPE(),
INTENT(inout) ::
76 INTEGER ,
INTENT(IN) :: NSENSOR
77 INTEGER IBFV(NIFV,*), NPC(*)
79 my_real tf(*), a(3,*), v(3,*), x(3,*),
80 . vel(lfxvelr,*),fsky(8,lsky),fext(3,*)
82 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) :: SENSOR_TAB
83 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
88 INTEGER NCUR, NCUR_OLD, ISENS, ISMOOTH
90 . axi, aa, a0, vv, dydx, ts, ts_old,
91 . startt, stopt, facx, facy, f1, f2,
92 . xa, ya, za, xf, yf, zf,
93 . fac, skew1, skew2, skew3, wfextt
102 IF (ibfv(13,n) /= 2) cycle
117 IF(ibfv(4,n)==sensor_tab(k)%SENS_ID) isens=k
122 ts = tt-sensor_tab(isens)%TSTART
126 IF(ncur_old/=ncur.OR.ts_old/=ts)
THEN
130 IF (ncur > 0) ismooth = npc(2*nfunct+ncur+1)
131 IF (ismooth == 0)
THEN
132 f1 = finter(ncur,(ts-dt1)*facx,npc,tf,dydx)
133 f2 = finter(ncur,ts*facx,npc,tf,dydx)
134 ELSE IF(ismooth > 0)
THEN
135 f1 = finter_smooth(ncur,(ts-dt1)*facx,npc,tf,dydx)
136 f2 = finter_smooth(ncur,ts*facx,npc
137 ELSE IF(ismooth < 0)
THEN
138 CALL python_call_funct_cload(python, -ismooth,ts-dt1, f1,n1,nodes)
139 CALL python_call_funct_cload(python, -ismooth,ts, f2,n2,nodes)
160 fac= sqrt((xf-xa)**2+(yf-ya)**2+(zf-za)**2)
161 IF(fac < vel(7,n)) cycle
165 vv = skew1*v(1,n2)+skew2*v(2,n2)+skew3*v(3,n2)
166 a(1,n2) = a(1,n2)+skew1*aa
167 a(2,n2) = a(2,n2)+skew2*aa
168 a(3,n2) = a(3,n2)+skew3*aa
170 IF( anim_v(5)+outp_v(5)+h3d_data%N_VECT_FINT+
171 . anim_v(6)+outp_v(6)+h3d_data%N_VECT_FEXT > 0
172 . .AND.impl_s==0)
THEN
173 fext(1,n2) = fext(1,n2)+skew1*aa
174 fext(2,n2) = fext(2,n2)+skew2*aa
175 fext(3,n2) = fext(3,n2)+skew3*aa
177 wfextt = wfextt + dt1*half*(a0+aa)*vv*axi
181 wfext = wfext + wfextt
subroutine forcefingeo(ibfv, npc, tf, a, v, x, vel, sensor_tab, fsky, fext, itabm1, h3d_data, nsensor, python, wfext, nodes)