38 2 VEL ,SENSOR_TAB,FSKY ,FEXT ,ITABM1,
39 3 H3D_DATA,NSENSOR, PYTHON,WFEXT,NODES)
45 use python_call_funct_cload_mod
51#include "implicit_f.inc"
68 EXTERNAL finter,finter_smooth
72 TYPE(nodal_arrays_) :: NODES
73 TYPE(PYTHON_),
INTENT(inout) :: PYTHON
74 INTEGER ,
INTENT(IN) :: NSENSOR
75 INTEGER IBFV(NIFV,*), NPC(*)
77 my_real tf(*), a(3,*), v(3,*), x(3,*),
78 . vel(lfxvelr,*),fsky(8,lsky),fext(3,*)
80 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) :: SENSOR_TAB
81 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
86 INTEGER NCUR, NCUR_OLD, ISENS, ISMOOTH
88 . axi, aa, a0, vv, dydx, ts, ts_old,
89 . startt, stopt, facx, facy, f1, f2,
90 . xa, ya, za, xf, yf, zf,
91 . fac, skew1, skew2, skew3, wfextt
100 IF (ibfv(13,n) /= 2) cycle
115 IF(ibfv(4,n)==sensor_tab(k)%SENS_ID) isens=k
120 ts = tt-sensor_tab(isens)%TSTART
124 IF(ncur_old/=ncur.OR.ts_old/=ts)
THEN
128 IF (ncur > 0) ismooth = npc(2*nfunct+ncur+1)
129 IF (ismooth == 0)
THEN
130 f1 = finter(ncur,(ts-dt1)*facx,npc,tf,dydx)
131 f2 = finter(ncur,ts*facx,npc,tf,dydx)
132 ELSE IF(ismooth > 0)
THEN
133 f1 = finter_smooth(ncur,(ts-dt1)*facx,npc,tf,dydx)
134 f2 = finter_smooth(ncur,ts*facx,npc,tf,dydx)
135 ELSE IF(ismooth < 0)
THEN
136 CALL python_call_funct_cload(python, -ismooth,ts-dt1, f1,n1,nodes)
137 CALL python_call_funct_cload(python, -ismooth,ts, f2,n2,nodes)
158 fac= sqrt((xf-xa)**2+(yf-ya)**2+(zf-za)**2)
159 IF(fac < vel(7,n)) cycle
163 vv = skew1*v(1,n2)+skew2*v(2,n2)+skew3*v(3,n2)
164 a(1,n2) = a(1,n2)+skew1*aa
165 a(2,n2) = a(2,n2)+skew2*aa
166 a(3,n2) = a(3,n2)+skew3*aa
168 IF( anim_v(5)+outp_v(5)+h3d_data%N_VECT_FINT+
169 . anim_v(6)+outp_v(6)+h3d_data%N_VECT_FEXT > 0
170 . .AND.impl_s==0)
THEN
171 fext(1,n2) = fext(1,n2)+skew1*aa
172 fext(2,n2) = fext(2,n2)+skew2*aa
173 fext(3,n2) = fext(3,n2)+skew3*aa
179 wfext = wfext + wfextt
subroutine forcefingeo(ibfv, npc, tf, a, v, x, vel, sensor_tab, fsky, fext, itabm1, h3d_data, nsensor, python, wfext, nodes)