40 SUBROUTINE pfluid(ILOADP ,RLOAD ,NPC ,TF ,A ,
42 3 NSENSOR ,SENSOR_TAB ,WFEXC ,WFEXT ,IADC ,
43 4 FSKY ,FSKYV ,LLOADP ,FEXT ,H3D_DATA ,
89#include "implicit_f.inc"
100#include "scr14_c.inc"
101#include "scr16_c.inc"
102#include "tabsiz_c.inc"
103#include "mvsiz_p.inc"
107 INTEGER GET_U_NUMSENS,GET_U_SENS_FPAR,GET_U_SENS_IPAR,GET_U_SENS_VALUE,SET_U_SENS_VALUE
108 EXTERNAL GET_U_NUMSENS,GET_U_SENS_FPAR,GET_U_SENS_IPAR,GET_U_SENS_VALUE,SET_U_SENS_VALUE
112 INTEGER,
INTENT(IN) :: MS(NUMNOD)
113 INTEGER ,
INTENT(IN) :: NSENSOR
114 INTEGER NPC(SNPC),LLOADP(SLLOADP)
115 INTEGER ILOADP(SIZLOADP,NLOADP)
117 my_real rload(lfacload,nloadp), tf(stf), a(3,numnod), v(3,numnod),
118 . x(3,numnod), xframe(nxframe,numfram+1),wfexc,
119 . fsky(8,sfsky/8), fskyv(sfsky/8,8),fext(3,numnod)
121 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) ,
INTENT(IN) :: SENSOR_TAB
122 TYPE (TH_SURF_) ,
INTENT(INOUT) :: TH_SURF
123 TYPE(PYTHON_) :: PYTHON
124 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
128 INTEGER NL, N1, N2, N3, N4, FUN_HSP, K1, K2, K3, ISENS,K,
129 . IAD,N_OLD,IFRA1,DIR_HSP,I,
130 . FUN_CX,FUN_VEL,DIR_VEL,IFRA2, IANIM,IJK,UP_BOUND,NS,KSURF,NSEGPL
131 my_real NX, NY, NZ, AA,FX, FY, FZ, DYDX, TS,
132 . sixth,wfextt,x_old,xsens,fcx,fcy,
133 . fcx1,fcy1,fcx2,fcy2,vel,vseg,finter,
134 . centroid_depth,pvel,
norm,nsign,
area,pa,mass,an,vn,pvel0
148 ianim = anim_v(5)+outp_v(5) + h3d_data%N_VECT_FINT + anim_v(6)+outp_v(6) + h3d_data%N_VECT_FEXT
159 fun_hsp = iloadp(7,nl)
160 dir_hsp = iloadp(8,nl)
164 fun_cx = iloadp(10,nl)
167 fun_vel = iloadp(11,nl)
170 dir_vel =
max(iloadp(12,nl),1)
171 ifra2 = iloadp(13,nl)
178 IF(iloadp(6,nl) == sensor_tab(k)%SENS_ID) isens=k
183 ts = tt-sensor_tab(isens)%TSTART
188 DO i = 1,iloadp(1,nl)/4
190 n1=lloadp(iloadp(4,nl)+4*(i-1))
191 n2=lloadp(iloadp(4,nl)+4*(i-1)+1)
192 n3=lloadp(iloadp(4,nl)+4*(i-1)+2)
193 n4=lloadp(iloadp(4,nl)+4*(i-1)+3)
198 IF(n4 /= 0 .AND. n1 /= n2
THEN
204 centroid_depth = (xframe(k1,ifra1)*(x(1,n1)+x(1,n2)+x(1,n3)+x(1,n4))/four)
205 centroid_depth = centroid_depth +(xframe(k2,ifra1)*(x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4))/four)
206 centroid_depth = centroid_depth +(xframe(k3,ifra1)*(x
208 IF (fun_hsp > 0) ismooth = npc(2*nfunct+fun_hsp+1)
210 CALL python_call_funct1d(python, -ismooth,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx , aa)
213 aa = fcy*finter(fun_hsp
217 nx=(x(2,n3)-x(2,n1))*(x(3,n4)-x(3,n2)) - (x(3,n3)-x(3,n1))*(x(2,n4)-x(2,n2))
218 ny=(x(3,n3)-x(3,n1))*(x(1,n4)-x(1,n2)) - (x(1,n3)-x(1,n1))*(x(3,n4)-x(3,n2))
219 nz=(x(1,n3)-x(1,n1))*(x(2,n4)-x(2,n2)) - (x(2,n3)-x
229 vseg = (xframe(k1,ifra2)*(v(1,n1) + v
230 vseg = vseg + (xframe
231 vseg = vseg + (xframe(k3,ifra2)*(v(3,n1) + v(3,n2) + v
236 IF (fun_vel > 0) ismooth = npc(2*nfunct+fun_vel+1)
238 CALL python_call_funct1d(python, -ismooth,tt*fcx2, vel)
239 vel = vel*fcy2 - vseg
241 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx) - vseg
247 pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2)-(ny/
norm)*vel*xframe(k2,ifra2)-(nz/
norm)*vel*xframe(k3,ifra2))**2 )
249 IF (fun_cx > 0) ismooth = npc(2*nfunct+fun_cx+1)
251 CALL python_call_funct1d(python, -ismooth,tt*fcx1, pvel0)
252 pvel = pvel*pvel0*fcy1/two
254 pvel=pvel*fcy1*finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
257 nsign = vel*(nx*xframe(k1,ifra2) + ny*xframe(k2,ifra2) + nz*xframe(k3,ifra2))
258 nsign = sign(one,nsign)
265 fx=fx+pvel*half*nx*nsign
266 fy=fy+pvel*half*ny*nsign
267 fz=fz+pvel*half*nz*nsign
274 wfextt=wfextt+dt1*(fx*(v(1,n1)+v(1,n2)+v(1,n3)+v(1,n4))
275 + +fy*(v(2,n1)+v(2,n2)+v(2,n3)+v(2,n4))
276 + +fz*(v(3,n1)+v(3,n2)+v(3,n3
296#include "lockoff.inc"
300 fext(1,n1) = fext(1,n1)+fx
302 fext(3,n1) = fext(3,n1)+fz
304 fext(1,n2) = fext(1,n2)+fx
305 fext(2,n2) = fext(2,n2)+fy
306 fext(3,n2) = fext(3,n2)+fz
308 fext(1,n3) = fext(1,n3)+fx
309 fext(2,n3) = fext(2,n3)+fy
310 fext(3,n3) = fext(3,n3)+fz
312 fext(1,n4) = fext(1,n4)+fx
313 fext(2,n4) = fext(2,n4)+fy
314 fext(3,n4) = fext(3,n4)+fz
315#include "lockoff.inc"
318 IF(th_surf%LOADP_FLAG >0 )
THEN
320 vn = v(1,n1)*nx + v(2,n1)*ny + v(3,n1)*nz
321 vn = vn + v(1,n2)*nx + v(2,n2)*ny + v(3,n2)*nz
322 vn = vn + v(1,n3)*nx + v(2,n3)*ny + v(3,n3)*nz
323 vn = vn + v(1,n4)*nx + v(2,n4)*ny + v(3,n4)*nz
326 an = fx*nx + fy*ny + fz*nz
327 mass = ( ms(n1)+ms(n2)+ms(n3)+ms(n4) ) / four
332 DO ns=th_surf%LOADP_KSEGS(nsegpl) +1,th_surf%LOADP_KSEGS(nsegpl+1)
333 ksurf = th_surf%LOADP_SEGS(ns)
334 th_surf%CHANNELS(3,ksurf)= th_surf%CHANNELS(3,ksurf) +
area*vn
335 th_surf%CHANNELS(4,ksurf)= th_surf%CHANNELS(4,ksurf) +
area*pa
336 th_surf%CHANNELS(5,ksurf)= th_surf%CHANNELS(5,ksurf) +
area
338#include "lockoff.inc"
370 centroid_depth = (xframe(k1,ifra1)*(x(1,n1)+x(1,n2)+x(1,n3))/three)
371 centroid_depth = centroid_depth+(xframe(k2,ifra1)*(x
372 centroid_depth = centroid_depth+(xframe(k3,ifra1)*(x(3,n1
374 IF (fun_hsp > 0) ismooth = npc(2*nfunct+fun_hsp+1)
376 CALL python_call_funct1d(python, -ismooth, (centroid_depth-xframe(9+dir_hsp,ifra1))*fcx ,aa )
379 aa = fcy*finter(fun_hsp,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
383 nx = (x(2,n3)-x(2,n1))*(x(3,n3)-x(3,n2)) - (x(3,n3)-x(3,n1))*(x(2,n3)-x(2,n2))
384 ny = (x(3,n3)-x(3,n1))*(x(1,n3)-x(1,n2)) - (x(1,n3)-x(1,n1))*(x(3,n3)-x(3,n2))
385 nz = (x(1,n3)-x(1,n1))*(x(2,n3)-x(2,n2)) - (x(2,n3)-x(2,n1))*(x(1,n3)-x(1,n2))
386 norm = sqrt(nx*nx+ny*ny+nz*nz)
395 vseg= (xframe(k1,ifra2)* (v(1,n1) + v(1,n2) + v(1,n3)) /three)
396 vseg=vseg+(xframe(k2,ifra2)* (v(2,n1) + v(2,n2) + v(2,n3)) /three)
397 vseg=vseg+(xframe(k3,ifra2)* (v(3,n1) + v(3,n2) + v(3,n3)) /three)
402 IF (fun_vel > 0) ismooth = npc(2*nfunct+fun_vel+1)
404 CALL python_call_funct1d(python, -ismooth,tt*fcx2 , vel )
405 vel = vel*fcy2 - vseg
407 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx) - vseg
413 pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2)-(ny/
norm)*vel*xframe(k2,ifra2)-(nz/
norm)*vel*xframe(k3,ifra2))**2 )
415 IF (fun_cx > 0) ismooth = npc(2*nfunct+fun_cx+1)
417 CALL python_call_funct1d(python, -ismooth,tt*fcx1 , pvel0)
418 pvel = pvel*pvel0*fcy1/two
420 pvel=pvel*fcy1*finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
423 nsign = vel*(nx*xframe(k1,ifra2) + ny*xframe(k2,ifra2) + nz*xframe(k3,ifra2))
424 nsign = sign(one,nsign)
431 fx=fx+pvel*half*nx*nsign
432 fy=fy+pvel*half*ny*nsign
433 fz=fz+pvel*half*nz*nsign
440 wfextt=wfextt+dt1*(fx*(v(1,n1)+v(1,n2)+v(1,n3))
441 + +fy*(v(2,n1)+v(2,n2)+v(2,n3))
442 + +fz*(v(3,n1)+v(3,n2)+v(3,n3)))
459#include "lockoff.inc"
465 fext(1,n1) = fext(1,n1)+fx
466 fext(2,n1) = fext(2,n1)+fy
467 fext(3,n1) = fext(3,n1)+fz
469 fext(1,n2) = fext(1,n2)+fx
470 fext(2,n2) = fext(2,n2)+fy
471 fext(3,n2) = fext(3,n2)+fz
473 fext(1,n3) = fext(1,n3)+fx
474 fext(2,n3) = fext(2,n3)+fy
475 fext(3,n3) = fext(3,n3)+fz
476#include "lockoff.inc"
479 IF(th_surf%LOADP_FLAG >0 )
THEN
481 vn = v(1,n1)*nx + v(2,n1)*ny + v(3,n1)*nz
482 vn = vn + v(1,n2)*nx + v(2,n2)*ny + v(3,n2)*nz
483 vn = vn + v(1,n3)*nx + v(2,n3)*ny + v(3,n3)*nz
486 an = fx*nx + fy*ny + fz*nz
487 mass = third * ( ms(n1)+ms(n2)+ms(n3) )
492 DO ns=th_surf%LOADP_KSEGS(nsegpl) +1,th_surf%LOADP_KSEGS(nsegpl+1)
493 ksurf = th_surf%LOADP_SEGS(ns)
494 th_surf%CHANNELS(3,ksurf)= th_surf%CHANNELS(3,ksurf) +
area*vn
495 th_surf%CHANNELS(4,ksurf
496 th_surf%CHANNELS(5,ksurf)= th_surf%CHANNELS(5,ksurf) +
area
498#include "lockoff.inc"
508 wfext = wfext + wfextt
520 IF(ivector == 0)
THEN
526 fun_hsp = iloadp(7,nl)
527 dir_hsp = iloadp(8,nl)
531 fun_cx = iloadp(10,nl)
534 fun_vel = iloadp(11,nl)
537 dir_vel =
max(iloadp(12,nl),1)
538 ifra2 = iloadp(13,nl)
545 DO i = 1,iloadp(1,nl)/4
547 n1=lloadp(iloadp(4,nl)+4*(i-1))
548 n2=lloadp(iloadp(4,nl)+4*(i-1)+1)
549 n3=lloadp(iloadp(4,nl)+4*(i-1)+2)
550 n4=lloadp(iloadp(4,nl)+4*(i-1)+3)
552 IF(n4 /= 0 .AND. n1 /= n2 .AND. n1 /= n3 .AND. n1 /= n4 .AND.n2 /= n3 .AND. n2 /= n4 .AND. n3 /= n4 )
THEN
558 iad = iadc(iloadp(4,nl)+4*(i-1)+(ijk-1))
566 IF(iloadp(6,nl) == sensor_tab(k)%SENS_ID) isens=k
571 ts = tt- sensor_tab(isens)%TSTART
576 DO i = 1,iloadp(1,nl)/4
579 n1=lloadp(iloadp(4,nl)+4*(i-1))
580 n2=lloadp(iloadp(4,nl)+4*(i-1)+1)
581 n3=lloadp(iloadp(4,nl)+4*(i-1)+2)
582 n4=lloadp(iloadp(4,nl)+4*(i-1)+3)
589 IF(n4 /= 0 .AND. n1 /= n2 .AND. n1 /= n3 .AND. n1 /= n4 .AND.n2 /= n3 .AND. n2 /= n4 .AND. n3 /= n4 )
THEN
595 IF(fun_hsp /= 0)
THEN
596 centroid_depth = (xframe(k1,ifra1)*(x(1,n1)+x(1,n2)+x(1,n3)+x(1,n4))/four)
597 centroid_depth = centroid_depth+(xframe(k2,ifra1)*(x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4))/four)
598 centroid_depth = centroid_depth+(xframe(k3,ifra1)*(x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4))/four)
600 IF (fun_hsp > 0) ismooth = npc(2*nfunct+fun_hsp+1)
602 CALL python_call_funct1d(python, -ismooth, (centroid_depth-xframe(9+dir_hsp,ifra1))*fcx , aa )
605 aa = fcy*finter(fun_hsp,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
610 nx = (x(2,n3)-x(2,n1))*(x(3,n4)-x(3,n2))-(x(3,n3)-x(3,n1))*(x(2,n4)-x(2,n2))
611 ny = (x(3,n3)-x(3,n1))*(x(1,n4)-x(1,n2))-(x(1,n3)-x(1,n1))*(x(3,n4)-x(3,n2))
612 nz = (x(1,n3)-x(1,n1))*(x(2,n4)-x(2,n2))-(x(2,n3)-x(2,n1))*(x(1,n4)-x(1,n2))
613 norm = sqrt(nx*nx+ny*ny+nz*nz)
622 vseg= (xframe(k1,ifra2)*(v(1,n1) + v(1,n2) + v(1,n3) + v(1,n4)) /four)
623 vseg=vseg+(xframe(k2,ifra2)*(v(2,n1) + v(2,n2) + v(2,n3) + v(2,n4)) /four)
624 vseg=vseg+(xframe(k3,ifra2)*(v(3,n1) + v(3,n2) + v(3,n3) + v(3,n4)) /four)
629 IF (fun_vel > 0) ismooth = npc(2*nfunct+fun_vel+1)
631 CALL python_call_funct1d(python, -ismooth, tt*fcx2 ,vel )
632 vel = vel*fcy2 - vseg
634 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx) - vseg
640 pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2) -(ny/
norm)*vel*xframe(k2,ifra2)-(nz/
norm)*vel*xframe(k3,ifra2))**2 )
642 IF (fun_cx > 0) ismooth = npc(2*nfunct+fun_cx+1)
644 CALL python_call_funct1d(python, -ismooth,tt*fcx1, pvel0
645 pvel = pvel*pvel0*fcy1/two
647 pvel=pvel*fcy1*finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
650 nsign = vel*(nx*xframe(k1,ifra2) + ny*xframe(k2,ifra2) + nz*xframe(k3,ifra2))
651 nsign = sign(one,nsign)
658 fx=fx+pvel*half*nx*nsign
659 fy=fy+pvel*half*ny*nsign
660 fz=fz+pvel*half*nz*nsign
667 iad = iadc(iloadp(4,nl)+4*(i-1))
673 iad = iadc(iloadp(4,nl)+4*(i-1)+1)
679 iad = iadc(iloadp(4,nl)+4*(i-1)+2)
685 iad = iadc(iloadp(4,nl)+4*(i-1)+3)
691 wfextt=wfextt+dt1*(fx*(v(1,n1)+v(1,n2)+v(1,n3)+v(1,n4))
692 + +fy*(v(2,n1)+v(2,n2)+v(2,n3)+v(2,n4))
693 + +fz*(v(3,n1)+v(3,n2)+v(3,n3)+v(3,n4)))
697 fext(1,n1) = fext(1,n1)+fx
698 fext(2,n1) = fext(2,n1)+fy
699 fext(3,n1) = fext(3,n1)+fz
701 fext(1,n2) = fext(1,n2)+fx
702 fext(2,n2) = fext(2,n2)+fy
703 fext(3,n2) = fext(3,n2)+fz
705 fext(1,n3) = fext(1,n3)+fx
706 fext(2,n3) = fext(2,n3)+fy
707 fext(3,n3) = fext(3,n3)+fz
709 fext(1,n4) = fext(1,n4)+fx
710 fext(2,n4) = fext(2,n4)+fy
711 fext(3,n4) = fext(3,n4)+fz
712#include
"lockoff.inc"
715 IF(th_surf%LOADP_FLAG >0 )
THEN
717 vn = v(1,n1)*nx + v(2,n1)*ny + v(3,n1)*nz
718 vn = vn + v(1,n2)*nx + v(2,n2)*ny
719 vn = vn + v(1,n3)*nx + v(2,n3)*ny + v(3,n3)*nz
720 vn = vn + v(1,n4)*nx + v(2,n4)*ny + v(3,n4)*nz
723 an = fx*nx + fy*ny + fz*nz
728 DO ns=th_surf%LOADP_KSEGS(nsegpl) +1,th_surf%LOADP_KSEGS(nsegpl+1)
730 ksurf = th_surf%LOADP_SEGS(ns)
731 th_surf%CHANNELS(3,ksurf)= th_surf%CHANNELS(3,ksurf) +
area*vn
732 th_surf%CHANNELS(4,ksurf)= th_surf%CHANNELS(4,ksurf) +
area*pa
733 th_surf%CHANNELS(5,ksurf)= th_surf%CHANNELS(5,ksurf) +
area
734#include "lockoff.inc"
766 centroid_depth = (xframe(k1,ifra1)*(x(1,n1)+x(1,n2)+x(1,n3))/three)
767 centroid_depth = centroid_depth + (xframe(k2,ifra1)*(x(2,n1)+x(2,n2)+x(2,n3))/three)
768 centroid_depth = centroid_depth + (xframe(k3,ifra1)*(x(3,n1)+x(3,n2)+x(3,n3))/three)
770 IF (fun_hsp > 0) ismooth = npc(2*nfunct+fun_hsp+1)
772 CALL python_call_funct1d(python, -ismooth,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx , aa)
775 aa = fcy*finter(fun_hsp,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
781 nx = (x(2,n3)-x(2,n1))*(x(3,n3)-x(3,n2))-(x(3,n3)-x(3,n1))*(x(2,n3)-x(2,n2))
782 ny = (x(3,n3)-x(3,n1))*(x(1,n3)-x(1,n2))-(x(1,n3)-x(1,n1))*(x(3,n3)-x(3,n2))
783 nz = (x(1,n3)-x(1,n1))*(x(2,n3)-x(2,n2))-(x
784 norm = sqrt(nx*nx+ny*ny+nz*nz)
793 vseg= (xframe(k1,ifra2)*(v(1,n1) + v(1,n2) + v(1,n3)) /three)
794 vseg=vseg+(xframe(k2,ifra2)*(v(2,n1) + v(2,n2) + v(2,n3)) /three)
795 vseg=vseg+(xframe(k3,ifra2)*(v(3,n1) + v(3,n2) + v
800 IF (fun_vel > 0) ismooth = npc(2*nfunct+fun_vel+1)
802 CALL python_call_funct1d(python, -ismooth, tt*fcx2 ,vel )
803 vel = vel*fcy2 - vseg
805 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx) - vseg
811 pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2)-(ny/
norm)*vel*xframe(k2,ifra2)-(nz/
norm)*vel*xframe(k3,ifra2))**2 )
813 IF (fun_cx > 0) ismooth = npc(2*nfunct+fun_cx+1)
815 CALL python_call_funct1d(python, -ismooth,tt*fcx1, pvel0)
816 pvel = pvel*pvel0*fcy1/two
818 pvel=pvel*fcy1*finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
821 nsign = vel*(nx*xframe(k1,ifra2) + ny*xframe(k2,ifra2) + nz*xframe(k3,ifra2))
822 nsign = sign(one,nsign)
829 fx=fx+pvel*half*nx*nsign
830 fy=fy+pvel*half*ny*nsign
831 fz=fz+pvel*half*nz*nsign
838 iad = iadc(iloadp(4,nl)+4*(i-1))
844 iad = iadc(iloadp(4,nl)+4*(i-1)+1)
850 iad = iadc(iloadp(4,nl)+4*(i-1)+2)
856 wfextt=wfextt+dt1*(fx*(v(1,n1)+v(1,n2)+v(1,n3))
857 + +fy*(v(2,n1)+v(2,n2)+v(2,n3))
858 + +fz*(v(3,n1)+v(3,n2)+v(3,n3)))
862 fext(1,n1) = fext(1,n1)+fx
863 fext(2,n1) = fext(2,n1)+fy
864 fext(3,n1) = fext(3,n1)+fz
866 fext(1,n2) = fext(1,n2)+fx
867 fext(2,n2) = fext(2,n2)+fy
868 fext(3,n2) = fext(3,n2)+fz
870 fext(1,n3) = fext(1,n3)+fx
871 fext(2,n3) = fext(2,n3)+fy
872 fext(3,n3) = fext(3,n3)+fz
873#include "lockoff.inc"
876 IF(th_surf%LOADP_FLAG >0 )
THEN
879 vn = v(1,n1)*nx + v(2,n1)*ny + v(3,n1)*nz
880 vn = vn + v(1,n2)*nx + v(2,n2)*ny + v(3,n2)*nz
881 vn = vn + v(1,n3)*nx + v(2,n3)*ny + v(3,n3)*nz
886 mass = third * ( ms(n1)+ms(n2)+ms(n3) )
890 DO ns=th_surf%LOADP_KSEGS(nsegpl) +1,th_surf%LOADP_KSEGS(nsegpl+1)
892 ksurf = th_surf%LOADP_SEGS(ns)
893 th_surf%CHANNELS(3,ksurf)= th_surf%CHANNELS(3,ksurf) +
area*vn
894 th_surf%CHANNELS(4,ksurf)= th_surf%CHANNELS(4,ksurf) +
area*pa
895 th_surf%CHANNELS(5,ksurf)= th_surf%CHANNELS(5,ksurf
896#include "lockoff.inc"
906 wfext = wfext + wfextt
917 fun_hsp = iloadp(7,nl)
918 dir_hsp = iloadp(8,nl)
922 fun_cx = iloadp(10,nl)
925 fun_vel = iloadp(11,nl)
928 dir_vel =
max(iloadp(12,nl),1)
929 ifra2 = iloadp(13,nl)
935 IF(iloadp(6,nl) == sensor_tab(k)%SENS_ID) isens=k
940 ts = tt- sensor_tab(isens)%TSTART
944 DO i = 1,iloadp(1,nl)/4
947 n1=lloadp(iloadp(4,nl)+4*(i-1))
948 n2=lloadp(iloadp(4,nl)+4*(i-1)+
949 n3=lloadp(iloadp(4,nl)+4*(i-1)+2)
950 n4=lloadp(iloadp(4,nl)+4*(i-1)+3)
956 IF(n4 /= 0 .AND. n1 /= n2 .AND. n1 /= n3 .AND. n1 /= n4 .AND. n2 /= n3 .AND. n2 /= n4 .AND. n3 /= n4 )
THEN
962 IF(fun_hsp /= 0)
THEN
963 centroid_depth = (xframe(k1,ifra1)*(x(1,n1)+x(1,n2)+x(1,n3)+x(1,n4))/four)
964 centroid_depth = centroid_depth+(xframe(k2,ifra1)*(x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4))/four)
965 centroid_depth = centroid_depth+(xframe(k3,ifra1)*(x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4))/four)
967 IF (fun_hsp > 0) ismooth = npc(2*nfunct+fun_hsp+1)
969 CALL python_call_funct1d(python, -ismooth,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx , aa)
972 aa = fcy*finter(fun_hsp,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
977 nx = (x(2,n3)-x(2,n1))*(x(3,n4)-x(3,n2)) - (x(3,n3)-x(3,n1))*(x(2,n4)-x(2,n2))
978 ny = (x(3,n3)-x(3,n1))*(x(1,n4)-x(1,n2)) - (x(1,n3)-x(1,n1))*(x(3,n4)-x(3,n2))
979 nz = (x(1,n3)-x(1,n1))*(x(2,n4)-x(2,n2)) - (x(2,n3)-x(2,n1))*(x(1,n4)-x(1,n2))
980 norm = sqrt(nx*nx+ny*ny+nz*nz)
989 vseg= (xframe(k1,ifra2)*(v(1,n1) + v(1,n2) + v(1,n3) + v(1,n4)) /four)
990 vseg=vseg+(xframe(k2,ifra2)*(v(2,n1) + v(2,n2) + v(2,n3) + v(2,n4)) /four)
991 vseg=vseg+(xframe(k3,ifra2)*(v(3,n1) + v(3,n2) + v(3,n3) + v(3,n4)) /four)
996 IF (fun_vel > 0) ismooth = npc(2*nfunct+fun_vel+1)
998 CALL python_call_funct1d(python, -ismooth, tt*fcx2 ,vel )
999 vel = vel*fcy2 - vseg
1001 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx) - vseg
1006 IF(fun_cx /= 0)
THEN
1007 pvel = (-nx/
norm*vel*xframe(k1,ifra2)- (ny/
norm)*vel*xframe(k2,ifra2)-(nz/
norm)*vel*xframe(k3,ifra2))**2
1009 IF (fun_cx > 0) ismooth = npc(2*nfunct+fun_cx
1010 IF(ismooth < 0)
THEN
1011 CALL python_call_funct1d(python, -ismooth,tt*fcx1, pvel0)
1012 pvel = pvel*pvel0*fcy1/two
1014 pvel = pvel * fcy1*finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
1018 nsign = vel*(nx*xframe(k1,ifra2) + ny*xframe(k2,ifra2) + nz*xframe(k3,ifra2))
1019 nsign = sign(one,nsign)
1021 !hydrostatic pressure
1026 fx=fx+pvel*half*nx*nsign
1027 fy=fy+pvel*half*ny*nsign
1028 fz=fz+pvel*half*nz*nsign
1035 iad = iadc(iloadp(4,nl)+4*(i-1))
1041 iad = iadc(iloadp(4,nl)+4*(i-1)+1)
1047 iad = iadc(iloadp(4,nl)+4*(i-1)+2)
1053 iad = iadc(iloadp(4,nl)+4*(i-1)+3)
1059 wfextt=wfextt+dt1*(fx*(v(1,n1)+v(1,n2)+v(1,n3)+v(1,n4))
1060 + +fy*(v(2,n1)+v(2,n2)+v
1061 + +fz*(v(3,n1)+v(3,n2)+v
1064#include "lockon.inc"
1065 fext(1,n1) = fext(1,n1)+fx
1067 fext(3,n1) = fext(3,n1)+fz
1069 fext(1,n2) = fext(1,n2)+fx
1070 fext(2,n2) = fext(2,n2)+fy
1071 fext(3,n2) = fext(3,n2)+fz
1073 fext(1,n3) = fext(1,n3)+fx
1074 fext(2,n3) = fext(2,n3)+fy
1075 fext(3,n3) = fext(3,n3)+fz
1077 fext(1,n4) = fext(1,n4)+fx
1078 fext(2,n4) = fext(2,n4)+fy
1079 fext(3,n4) = fext(3,n4)+fz
1080#include "lockoff.inc"
1083 IF(th_surf%LOADP_FLAG >0 )
THEN
1086 vn = v(1,n1)*nx + v(2,n1)*ny + v(3,n1)*nz
1087 vn = vn + v(1,n2)*nx + v(2,n2)*ny + v(3,n2)*nz
1088 vn = vn + v(1,n3)*nx + v(2,n3)*ny + v(3,n3)*nz
1089 vn = vn + v(1,n4)*nx + v(2,n4)*ny + v(3,n4)*nz
1093 an = fx*nx + fy*ny + fz*nz
1094 mass = ( ms(n1)+ms(n2)+ms(n3)+ms(n4) ) / four
1098 DO ns=th_surf%LOADP_KSEGS(nsegpl) +1,th_surf%LOADP_KSEGS(nsegpl+1)
1099#include "lockon.inc"
1100 ksurf = th_surf%LOADP_SEGS(ns)
1101 th_surf%CHANNELS(3,ksurf)= th_surf%CHANNELS(3,ksurf) +
area*vn
1102 th_surf%CHANNELS(4,ksurf)= th_surf%CHANNELS(4,ksurf) +
area*pa
1103 th_surf%CHANNELS(5,ksurf)= th_surf%CHANNELS(5,ksurf) +
area
1104#include "lockoff.inc"
1115 ELSEIF(n1 == n3)
THEN
1118 ELSEIF(n1 == n4)
THEN
1120 ELSEIF(n2 == n3)
THEN
1123 ELSEIF(n2 == n4)
THEN
1127 ELSEIF(n3 == n4)
THEN
1135 IF(fun_hsp /= 0)
THEN
1136 centroid_depth = (xframe(k1,ifra1)*(x(1,n1)+x(1,n2)+x(1,n3))/three)
1137 centroid_depth = centroid_depth+(xframe(k2,ifra1)*(x(2,n1)+x(2,n2)+x(2,n3))/three)
1138 centroid_depth = centroid_depth+(xframe(k3,ifra1)*(x(3,n1)+x(3,n2)+x(3,n3))/three)
1140 IF (fun_hsp > 0) ismooth = npc(2*nfunct+fun_hsp+1)
1141 IF(ismooth < 0)
THEN
1142 CALL python_call_funct1d(python, -ismooth,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx , aa)
1151 nx = (x(2,n3)-x(2,n1))*(x(3,n3)-x(3,n2)) - (x(3,n3)-x(3,n1))*(x(2,n3)-x(2,n2))
1153 nz = (x(1,n3)-x(1,n1))*(x(2,n3)-x(2,n2)) - (x(2,n3)-x(2,n1))*(x(1,n3)-x(1,n2))
1154 norm = sqrt(nx*nx+ny*ny+nz*nz)
1163 vseg= (xframe(k1,ifra2
1164 vseg=vseg+(xframe(k2,ifra2)* (v(2,n1) + v(2,n2) + v(2,n3)) /three)
1165 vseg=vseg+(xframe(k3,ifra2)* (v(3,n1) + v(3,n2) + v(3,n3)) /three)
1168 IF(fun_vel /= 0)
THEN
1170 IF (fun_vel > 0) ismooth = npc(2*nfunct+fun_vel+1)
1171 IF(ismooth < 0)
THEN
1172 CALL python_call_funct1d(python, -ismooth, tt*fcx2 ,vel )
1173 vel = vel*fcy2 - vseg
1175 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx) - vseg
1181 pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2)-(ny/
norm)*vel*xframe(k2,ifra2)-(nz/
norm)*vel*xframe(k3,ifra2))**2 )
1183 IF (fun_cx > 0) ismooth = npc(2*nfunct+fun_cx+1)
1184 IF(ismooth < 0)
THEN
1185 CALL python_call_funct1d(python, -ismooth,tt*fcx1, pvel0)
1186 pvel = pvel*pvel0*fcy1/two
1188 pvel = pvel * fcy1* finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
1192 nsign = vel*(nx*xframe(k1,ifra2) + ny*xframe(k2,ifra2) + nz*xframe(k3,ifra2))
1193 nsign = sign(one,nsign)
1200 fx=fx+pvel*half*nx*nsign
1201 fy=fy+pvel*half*ny*nsign
1202 fz=fz+pvel*half*nz*nsign
1209 iad = iadc(iloadp(4,nl)+4*(i-1))
1214#include "lockon.inc"
1215 fext(1,n1) = fext(1,n1)+fx
1216 fext(2,n1) = fext(2,n1)+fy
1217 fext(3,n1) = fext(3,n1)+fz
1218#include "lockoff.inc"
1222 iad = iadc(iloadp(4,nl)+4*(i-1)+1)
1227#include "lockon.inc"
1228 fext(1,n2) = fext(1,n2)+fx
1229 fext(2,n2) = fext(2,n2)+fy
1230 fext(3,n2) = fext(3,n2)+fz
1231#include "lockoff.inc"
1235 iad = iadc(iloadp(4,nl)+4*(i-1)+2)
1240#include "lockon.inc"
1241 fext(1,n3) = fext(1,n3)+fx
1242 fext(2,n3) = fext(2,n3)+fy
1243 fext(3,n3) = fext(3,n3)+fz
1244#include "lockoff.inc"
1247 IF(th_surf%LOADP_FLAG >0 )
THEN
1250 vn = v(1,n1)*nx + v(2,n1)*ny + v(3,n1)*nz
1251 vn = vn + v(1,n2)*nx + v(2,n2)*ny + v(3,n2)*nz
1252 vn = vn + v(1,n3)*nx + v(2,n3)*ny + v(3,n3)*nz
1256 an = fx*nx + fy*ny + fz*nz
1257 mass = third * ( ms(n1)+ms(n2)+ms(n3)+ms(n4) )
1261 DO ns=th_surf%LOADP_KSEGS(nsegpl) +1,th_surf%LOADP_KSEGS(nsegpl+1)
1262#include "lockon.inc"
1263 ksurf = th_surf%LOADP_SEGS(ns)
1264 th_surf%CHANNELS(3,ksurf)= th_surf%CHANNELS(3,ksurf) +
area*vn
1265 th_surf%CHANNELS(4,ksurf)= th_surf%CHANNELS(4,ksurf) +
area*pa
1266 th_surf%CHANNELS(5,ksurf
1267#include "lockoff.inc"
1272 wfextt=wfextt+dt1*(fx*(v(1,n1
1273 + +fy*(v(2,n1)+v(2,n2)+v(2,n3))
1274 + +fz*(v(3,n1)+v(3,n2)+v(3,n3)))
1281 wfext = wfext + wfextt