45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 USE python_funct_mod
84 USE sensor_mod
86
87
88
89#include "implicit_f.inc"
90#include "comlock.inc"
91#include "param_c.inc"
92
93
94
95#include "com01_c.inc"
96#include "com04_c.inc"
97
98#include "com08_c.inc"
99#include "parit_c.inc"
100#include "scr14_c.inc"
101#include "scr16_c.inc"
102#include "tabsiz_c.inc"
103#include "mvsiz_p.inc"
104
105
106
107 INTEGER GET_U_NUMSENS,GET_U_SENS_FPAR,GET_U_SENS_IPAR,GET_U_SENS_VALUE,SET_U_SENS_VALUE
109
110
111
112 INTEGER, INTENT(IN) :: MS(NUMNOD)
113 INTEGER ,INTENT(IN) :: NSENSOR
114 INTEGER NPC(SNPC),LLOADP(SLLOADP)
115 INTEGER ILOADP(SIZLOADP,NLOADP)
116 INTEGER IADC(DSNCOL)
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)
120 TYPE(H3D_DATABASE) :: H3D_DATA
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
125
126
127
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
135 EXTERNAL finter
136 INTEGER :: ISMOOTH
137
138
139
140
141
142 sixth = one_over_6
143 wfexc = zero
144 wfextt = zero
145 n_old = 0
146 x_old = zero
147 nsegpl = 0
148 ianim = anim_v(5)+outp_v(5) + h3d_data%N_VECT_FINT + anim_v(6)+outp_v(6) + h3d_data%N_VECT_FEXT
149
150
151
152
153
154 IF(iparit == 0) THEN
155
157
158
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)
173 isens = 0
174
175
176 xsens = one
177 DO k=1,nsensor
178 IF(iloadp(6,
nl) == sensor_tab(k)%SENS_ID) isens=k
179 ENDDO
180 IF(isens == 0)THEN
181 ts=tt
182 ELSE
183 ts = tt-sensor_tab(isens)%TSTART
184 IF(ts < zero) cycle
185 ENDIF
186
187
188 DO i = 1,iloadp(1,
nl)/4
189
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)
194 aa=zero
195 vel=zero
196 pvel=zero
197
198 IF(n4 /= 0 .AND. n1 /= n2 .AND. n1 /= n3 .AND. n1 THEN
199 k1=3*dir_hsp-2
200 k2=3*dir_hsp-1
201 k3=3*dir_hsp
202
203 IF(fun_hsp /= 0)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(3,n1)+x(3,n2)+x(3,n3)+x(3,n4))/four)
207 ismooth = 0
208 IF (fun_hsp > 0) ismooth = npc(2*nfunct+fun_hsp+1)
209 IF(ismooth < 0) THEN
210 CALL python_call_funct1d(python, -ismooth,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx , aa)
211 aa = aa*fcy
212 ELSE
213 aa = fcy*finter(fun_hsp,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
214 ENDIF
215 ENDIF
216
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
219 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))
220 norm = sqrt(nx*nx+ny*ny+nz*nz)
222 pa = aa
224
225
226 k1=3*dir_vel-2
227 k2=3*dir_vel-1
228 k3=3*dir_vel
229 vseg = (xframe(k1,ifra2)*(v(1,n1) + v(1,n2) + v(1,n3) + v(1,n4)) /four)
230 vseg = vseg + (xframe(k2,ifra2)*(v(2,n1) + v(2,n2) + v(2,n3) + v(2,n4)) /four)
231 vseg = vseg + (xframe(k3,ifra2)*(v(3,n1) + v(3,n2) + v(3,n3) + v(3
232
233
234 IF(fun_vel /= 0)THEN
235 ismooth = 0
236 IF (fun_vel > 0) ismooth = npc(2*nfunct+fun_vel+1)
237 IF(ismooth < 0) THEN
238 CALL python_call_funct1d(python, -ismooth,tt*fcx2, vel)
239 vel = vel*fcy2 - vseg
240 ELSE
241 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx) - vseg
242 ENDIF
243 ELSE
244 vel = -vseg
245 ENDIF
246 IF(fun_cx /= 0) THEN
247 pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2)-(ny/
norm)*vel*xframe(k2,ifra2)-(nz/
norm)*vel*xframe(k3,ifra2))**2 )
248 ismooth = 0
249 IF (fun_cx > 0) ismooth = npc(2*nfunct+fun_cx+1)
250 IF(ismooth < 0) THEN
251 CALL python_call_funct1d(python, -ismooth,tt*fcx1, pvel0)
252 pvel = pvel*pvel0*fcy1/two
253 ELSE
254 pvel=pvel*fcy1*finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
255 ENDIF
256 ENDIF
257 nsign = vel*(nx*xframe(k1,ifra2) + ny*xframe(k2,ifra2) + nz*xframe(k3,ifra2))
258 nsign = sign(one,nsign)
259
260
264
265 fx=fx+pvel*half*nx*nsign
266 fy=fy+pvel*half*ny*nsign
267 fz=fz+pvel*half*nz*nsign
268
269 fx=fx*fourth
270 fy=fy*fourth
271 fz=fz*fourth
272
273
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)+v(3,n4)))
277
278#include "lockon.inc"
279
280
281 a(1,n1)=a(1,n1)+fx
282 a(2,n1)=a(2,n1)+fy
283 a(3,n1)=a(3,n1)+fz
284
285 a(1,n2)=a(1,n2)+fx
286 a(2,n2)=a(2,n2)+fy
287 a(3,n2)=a(3,n2)+fz
288
289 a(1,n3)=a(1,n3)+fx
290 a(2,n3)=a(2,n3)+fy
291 a(3,n3)=a(3,n3)+fz
292
293 a(1,n4)=a(1,n4)+fx
294 a(2,n4)=a(2,n4)+fy
295 a(3,n4)=a(3,n4)+fz
296#include "lockoff.inc"
297
298 IF(ianim > 0) THEN
299#include "lockon.inc"
300 fext(1,n1) = fext(1,n1)+fx
301 fext(2,n1) = fext(2,n1)+fy
302 fext(3,n1) = fext(3,n1)+fz
303
304 fext(1,n2) = fext(1,n2)+fx
305 fext(2,n2) = fext(2,n2)+fy
306 fext(3,n2) = fext(3,n2)+fz
307
308 fext(1,n3) = fext(1,n3)+fx
309 fext(2,n3) = fext(2,n3)+fy
310 fext(3,n3) = fext(3,n3)+fz
311
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"
316 ENDIF
317
318 IF(th_surf%LOADP_FLAG >0 ) THEN
319
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
324 vn = vn / four
325
326 an = fx*nx + fy*ny + fz*nz
327 mass = ( ms(n1)+ms(n2)+ms(n3)+ms(n4) ) / four
328 an = an / mass
329
330 nsegpl = nsegpl + 1
331#include "lockon.inc"
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
337 ENDDO
338#include "lockoff.inc"
339 ENDIF
340
341
342
343 ELSE
344 IF(n1 == n2)THEN
345 n2 = n3
346 n3 = n4
347 n4 = 0
348 ELSEIF(n1 == n3)THEN
349 n3 = n4
350 n4 = 0
351 ELSEIF(n1 == n4)THEN
352 n4 = 0
353 ELSEIF(n2 == n3)THEN
354 n3 = n4
355 n4 = 0
356 ELSEIF(n2 == n4)THEN
357 n2 = n3
358 n3 = n4
359 n4 = 0
360 ELSEIF(n3 == n4)THEN
361 n4 = 0
362 ENDIF
363
364
365 IF(fun_hsp /= 0)THEN
366 k1=3*dir_hsp-2
367 k2=3*dir_hsp-1
368 k3=3*dir_hsp
369
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(2,n1)+x(2,n2)+x(2,n3))/three)
372 centroid_depth = centroid_depth+(xframe(k3,ifra1)*(x(3,n1)+x(3,n2)+x(3,n3))/three)
373 ismooth = 0
374 IF (fun_hsp > 0) ismooth = npc(2*nfunct+fun_hsp+1)
375 IF(ismooth < 0) THEN
376 CALL python_call_funct1d(python, -ismooth, (centroid_depth-xframe(9+dir_hsp,ifra1))*fcx ,aa )
377 aa = aa*fcy
378 ELSE
379 aa = fcy*finter(fun_hsp,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
380 ENDIF
381 ENDIF
382
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)
388 pa = aa
390
391
392 k1=3*dir_vel-2
393 k2=3*dir_vel-1
394 k3=3*dir_vel
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
398
399
400 IF(fun_vel /= 0)THEN
401 ismooth = 0
402 IF (fun_vel > 0) ismooth = npc(2*nfunct+fun_vel+1)
403 IF(ismooth < 0) THEN
404 CALL python_call_funct1d(python, -ismooth,tt*fcx2 , vel )
405 vel = vel*fcy2 - vseg
406 ELSE
407 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx) - vseg
408 ENDIF
409 ELSE
410 vel = -vseg
411 ENDIF
412 IF(fun_cx /= 0)THEN
413 pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2)-(ny/
norm)*vel*xframe(k2,ifra2)-(nz/
norm)*vel*xframe(k3,ifra2))**2 )
414 ismooth = 0
415 IF (fun_cx > 0) ismooth = npc(2*nfunct+fun_cx+1)
416 IF(ismooth < 0) THEN
417 CALL python_call_funct1d(python, -ismooth,tt*fcx1 , pvel0)
418 pvel = pvel*pvel0*fcy1/two
419 ELSE
420 pvel=pvel*fcy1*finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
421 ENDIF
422 ENDIF
423 nsign = vel*(nx*xframe(k1,ifra2) + ny*xframe(k2,ifra2) + nz*xframe(k3,ifra2))
424 nsign = sign(one,nsign)
425
426
430
431 fx=fx+pvel*half*nx*nsign
432 fy=fy+pvel*half*ny*nsign
433 fz=fz+pvel*half*nz*nsign
434
435 fx=fx*third
436 fy=fy*third
437 fz=fz*third
438
439
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)))
443
444
445#include "lockon.inc"
446
447
448 a(1,n1)=a(1,n1)+fx
449 a(2,n1)=a(2,n1)+fy
450 a(3,n1)=a(3,n1)+fz
451
452 a(1,n2)=a(1,n2)+fx
453 a(2,n2)=a(2,n2)+fy
454 a(3,n2)=a(3,n2)+fz
455
456 a(1,n3)=a(1,n3)+fx
457 a(2,n3)=a(2,n3)+fy
458 a(3,n3)=a(3,n3)+fz
459#include "lockoff.inc"
460
461
462
463 IF(ianim > 0) THEN
464#include "lockon.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
468
469 fext(1,n2) = fext(1,n2)+fx
470 fext(2,n2) = fext(2,n2)+fy
471 fext(3,n2) = fext(3,n2)+fz
472
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"
477 ENDIF
478
479 IF(th_surf%LOADP_FLAG >0 ) THEN
480
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
484 vn = third * vn
485
486 an = fx*nx + fy*ny + fz*nz
487 mass = third * ( ms(n1)+ms(n2)+ms(n3) )
488 an = an / mass
489
490 nsegpl = nsegpl + 1
491#include "lockon.inc"
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)= th_surf%CHANNELS(4,ksurf) +
area*pa
496 th_surf%CHANNELS(5,ksurf)= th_surf%CHANNELS(5,ksurf) +
area
497 ENDDO
498#include "lockoff.inc"
499 ENDIF
500
501 endif
502 ENDDO
503
504
505 ENDDO
506
507
508 wfext = wfext + wfextt
509
510
511
512
513 ELSE
514
515
516
517
518
519
520 IF(ivector == 0) THEN
521
522
524
525
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)
539 isens = 0
540 xsens = one
541
542
543
544
545 DO i = 1,iloadp(1,
nl)/4
546
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)
551
552 IF(n4 /= 0 .AND. n1 /= n2 .AND. n1 /= n3 .AND. n1 /= n4 .AND.n2 /= n3 .AND. n2 /= n4 .AND. n3 /= n4 )THEN
553 up_bound=4
554 ELSE
555 up_bound=3
556 ENDIF
557 DO ijk=1,up_bound
558 iad = iadc(iloadp(4,
nl)+4*(i-1)+(ijk-1))
559 fsky(1:3,iad) = zero
560 ENDDO
561 ENDDO
562
563
564
565 DO k=1,nsensor
566 IF(iloadp(6,
nl) == sensor_tab(k)%SENS_ID) isens=k
567 ENDDO
568 IF(isens == 0)THEN
569 ts=tt
570 ELSE
571 ts = tt- sensor_tab(isens)%TSTART
572 IF(ts < zero) cycle
573 ENDIF
574
575
576 DO i = 1,iloadp(1,
nl)/4
577
578
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)
583
584 aa = zero
585 vel=zero
586 pvel=zero
587
588
589 IF(n4 /= 0 .AND. n1 /= n2 .AND. n1 /= n3 .AND. n1 /= n4 .AND.n2 /= n3 .AND. n2 THEN
590
591
592 k1=3*dir_hsp-2
593 k2=3*dir_hsp-1
594 k3=3*dir_hsp
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
598 centroid_depth = centroid_depth+(xframe(k3,ifra1)*(x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4))/four)
599 ismooth = 0
600 IF (fun_hsp > 0) ismooth = npc(2*nfunct+fun_hsp+1)
601 IF(ismooth < 0) THEN
602 CALL python_call_funct1d(python, -ismooth, (centroid_depth-xframe(9+dir_hsp,ifra1))*fcx , aa )
603 aa = aa*fcy
604 ELSE
605 aa = fcy*finter(fun_hsp,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
606 ENDIF
607
608 ENDIF
609
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)
615 pa = aa
617
618
619 k1=3*dir_vel-2
620 k2=3*dir_vel-1
621 k3=3*dir_vel
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)
625
626
627 IF(fun_vel /= 0)THEN
628 ismooth = 0
629 IF (fun_vel > 0) ismooth = npc(2*nfunct+fun_vel+1)
630 IF(ismooth < 0) THEN
631 CALL python_call_funct1d(python, -ismooth, tt*fcx2
632 vel = vel*fcy2 - vseg
633 ELSE
634 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx) - vseg
635 ENDIF
636 ELSE
637 vel = -vseg
638 ENDIF
639 IF(fun_cx /= 0)THEN
640 pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2) -(ny/
norm)*vel*xframe(k2,ifra2)-(nz/
norm)*vel*xframe(k3,ifra2))**2 )
641 ismooth = 0
642 IF (fun_cx > 0) ismooth = npc(2*nfunct+fun_cx+1)
643 IF(ismooth < 0) THEN
644 CALL python_call_funct1d(python, -ismooth,tt*fcx1, pvel0)
645 pvel = pvel*pvel0*fcy1/two
646 ELSE
647 pvel=pvel*fcy1*finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
648 ENDIF
649 ENDIF
650 nsign = vel*(nx*xframe(k1,ifra2) + ny*xframe(k2,ifra2) + nz*xframe(k3,ifra2))
651 nsign = sign(one,nsign)
652
653
657
658 fx=fx+pvel*half*nx*nsign
659 fy=fy+pvel*half*ny*nsign
660 fz=fz+pvel*half*nz*nsign
661
662 fx=fx*fourth
663 fy=fy*fourth
664 fz=fz*fourth
665
666
667 iad = iadc(iloadp(4,
nl)+4*(i-1))
668 fsky(1,iad) = fx
669 fsky(2,iad) = fy
670 fsky(3,iad) = fz
671
672
673 iad = iadc(iloadp(4,
nl)+4*(i-1)+1)
674 fsky(1,iad) = fx
675 fsky(2,iad) = fy
676 fsky(3,iad) = fz
677
678
679 iad = iadc(iloadp(4,
nl)+4*(i-1)+2)
680 fsky(1,iad) = fx
681 fsky(2,iad) = fy
682 fsky(3,iad) = fz
683
684
685 iad = iadc(iloadp(4,
nl)+4*(i-1)+3)
686 fsky(1,iad) = fx
687 fsky(2,iad) = fy
688 fsky(3,iad) = fz
689
690
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)))
694
695 IF(ianim > 0) THEN
696#include "lockon.inc"
697 fext(1,n1) = fext(1,n1)+fx
698 fext(2,n1) = fext(2,n1)+fy
699 fext(3,n1) = fext(3,n1)+fz
700
701 fext(1,n2) = fext(1,n2)+fx
702 fext(2,n2) = fext(2,n2)+fy
703 fext(3,n2) = fext(3,n2)+fz
704
705 fext(1,n3) = fext(1,n3)+fx
706 fext(2,n3) = fext(2,n3)+fy
707 fext(3,n3) = fext(3,n3)+fz
708
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"
713 ENDIF
714
715 IF(th_surf%LOADP_FLAG >0 ) THEN
716
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 + v(3,n2)*nz
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
721 vn = vn / four
722
723 an = fx*nx + fy*ny + fz*nz
724 mass = ( ms(n1)+ms(n2)+ms(n3)+ms(n4) ) / four
725 an = an / mass
726
727 nsegpl = nsegpl + 1
728 DO ns=th_surf%LOADP_KSEGS(nsegpl) +1,th_surf%LOADP_KSEGS(nsegpl+1)
729#include "lockon.inc"
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"
735 ENDDO
736 ENDIF
737
738 ELSE
739
740
741 IF(n1 == n2)THEN
742 n2 = n3
743 n3 = n4
744 n4 = 0
745 ELSEIF(n1 == n3)THEN
746 n3 = n4
747 n4 = 0
748 ELSEIF(n1 == n4)THEN
749 n4 = 0
750 ELSEIF(n2 == n3)THEN
751 n3 = n4
752 n4 = 0
753 ELSEIF(n2 == n4)THEN
754 n2 = n3
755 n3 = n4
756 n4 = 0
757 ELSEIF(n3 == n4)THEN
758 n4 = 0
759 ENDIF
760
761
762 IF(fun_hsp /= 0)THEN
763 k1=3*dir_hsp-2
764 k2=3*dir_hsp-1
765 k3=3*dir_hsp
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
769 ismooth = 0
770 IF (fun_hsp > 0) ismooth = npc(2*nfunct+fun_hsp+1)
771 IF(ismooth < 0) THEN
772 CALL python_call_funct1d(python, -ismooth,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx , aa)
773 aa = aa*fcy
774 ELSE
775 aa = fcy*finter(fun_hsp,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
776 ENDIF
777
778 ENDIF
779
780
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(2,n3)-x(2,n1))*
784 norm = sqrt(nx*nx+ny*ny+nz*nz)
786 pa = aa
788
789
790 k1=3*dir_vel-2
791 k2=3*dir_vel-1
792 k3=3*dir_vel
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(3,n3)) /three)
796
797
798 IF(fun_vel /= 0)THEN
799 ismooth = 0
800 IF (fun_vel > 0) ismooth = npc(2*nfunct+fun_vel+1)
801 IF(ismooth < 0) THEN
802 CALL python_call_funct1d(python, -ismooth, tt*fcx2 ,vel )
803 vel = vel*fcy2 - vseg
804 ELSE
805 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx) - vseg
806 ENDIF
807 ELSE
808 vel = -vseg
809 ENDIF
810 IF(fun_cx /= 0) THEN
811 pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2)-(ny/
norm)*vel*xframe(k2,ifra2)-(nz/
norm)*vel*xframe
812 ismooth = 0
813 IF (fun_cx > 0) ismooth = npc(2*nfunct+fun_cx+1)
814 IF(ismooth < 0) THEN
815 CALL python_call_funct1d(python, -ismooth,tt*fcx1, pvel0)
816 pvel = pvel*pvel0*fcy1/two
817 ELSE
818 pvel=pvel*fcy1*finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
819 ENDIF
820 ENDIF
821 nsign = vel*(nx*xframe(k1,ifra2) + ny*xframe(k2,ifra2
822 nsign = sign(one,nsign)
823
824
828
829 fx=fx+pvel*half*nx*nsign
830 fy=fy+pvel*half*ny*nsign
831 fz=fz+pvel*half*nz*nsign
832
833 fx=fx*third
834 fy=fy*third
835 fz=fz*third
836
837
838 iad = iadc(iloadp(4,
nl)+4*(i-1))
839 fsky(1,iad) = fx
840 fsky(2,iad) = fy
841 fsky(3,iad) = fz
842
843
844 iad = iadc(iloadp(4,
nl)+4*(i-1)+1)
845 fsky(1,iad) = fx
846 fsky(2,iad) = fy
847 fsky(3,iad) = fz
848
849
850 iad = iadc(iloadp(4,
nl)+4*(i-1)+2)
851 fsky(1,iad) = fx
852 fsky(2,iad) = fy
853 fsky(3,iad) = fz
854
855
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)))
859
860 IF(ianim > 0) THEN
861#include "lockon.inc"
862 fext(1,n1) = fext(1,n1)+fx
863 fext(2,n1) = fext(2,n1)+fy
864 fext(3,n1) = fext(3,n1)+fz
865
866 fext(1,n2) = fext(1,n2)+fx
867 fext(2,n2) = fext(2,n2)+fy
868 fext(3,n2) = fext(3,n2)+fz
869
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"
874 ENDIF
875
876 IF(th_surf%LOADP_FLAG >0 ) THEN
877
878
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
882 vn = third * vn
883
884
885 an = fx*nx + fy*ny + fz*nz
886 mass = third * ( ms(n1)+ms(n2)+ms(n3) )
887 an = an / mass
888
889 nsegpl = nsegpl + 1
890 DO ns=th_surf%LOADP_KSEGS(nsegpl) +1,th_surf%LOADP_KSEGS(nsegpl+1)
891#include "lockon.inc"
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) +
area
896#include "lockoff.inc"
897 ENDDO
898 ENDIF
899
900 ENDIF
901 enddo
902
903 enddo
904
905
906 wfext = wfext + wfextt
907
908 ELSE
909
910
911
912
913
915
916
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)
930 isens = 0
931 xsens = one
932
933
934 DO k=1,nsensor
935 IF(iloadp(6,
nl) == sensor_tab(k)%SENS_ID) isens=k
936 ENDDO
937 IF(isens == 0)THEN
938 ts=tt
939 ELSE
940 ts = tt- sensor_tab(isens)%TSTART
941 IF(ts < zero) cycle
942 ENDIF
943
944 DO i = 1,iloadp(1,
nl)/4
945
946
947 n1=lloadp(iloadp(4,
nl)+4*(i-1))
948 n2=lloadp(iloadp(4,
nl)+4*(i-1)+1)
949 n3=lloadp(iloadp(4,
nl)+4*(i-1)+2)
950 n4=lloadp(iloadp(4,
nl)+4*(i-1)+3)
951
952 aa = zero
953 vel = zero
954 pvel = zero
955
956 IF(n4 /= 0 .AND. n1 /= n2 .AND. n1 /= n3 .AND. n1 /= n4 .AND. n2 /= n3 .AND. n2 /= n4 .AND.THEN
957
958
959 k1=3*dir_hsp-2
960 k2=3*dir_hsp-1
961 k3=3*dir_hsp
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)
966 ismooth = 0
967 IF (fun_hsp > 0) ismooth = npc(2*nfunct+fun_hsp+1)
968 IF(ismooth < 0) THEN
969 CALL python_call_funct1d(python, -ismooth,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx , aa)
970 aa = aa*fcy
971 ELSE
972 aa = fcy*finter(fun_hsp,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
973 ENDIF
974 ENDIF
975
976
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)
982 pa = aa
984
985
986 k1=3*dir_vel-2
987 k2=3*dir_vel-1
988 k3=3*dir_vel
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)
992
993
994 IF(fun_vel /= 0)THEN
995 ismooth = 0
996 IF (fun_vel > 0) ismooth = npc(2*nfunct+fun_vel+1)
997 IF(ismooth < 0) THEN
998 CALL python_call_funct1d(python, -ismooth, tt*fcx2 ,vel )
999 vel = vel*fcy2 - vseg
1000 ELSE
1001 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx) - vseg
1002 ENDIF
1003 ELSE
1004 vel = -vseg
1005 ENDIF
1006 IF(fun_cx /= 0) THEN
1007 pvel = (-nx/
norm*vel*xframe(k1,ifra2)- (ny/
norm)*vel*xframe(k2,ifra2)-(nz/
norm)*vel*xframe
1008 ismooth = 0
1009 IF (fun_cx > 0) ismooth = npc(2*nfunct+fun_cx+1)
1010 IF(ismooth < 0) THEN
1011 CALL python_call_funct1d(python, -ismooth,tt*fcx1, pvel0)
1012 pvel = pvel*pvel0*fcy1/two
1013 ELSE
1014 pvel = pvel * fcy1*finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
1015 ENDIF
1016
1017 ENDIF
1018 nsign = vel*(nx*xframe(k1,ifra2) + ny*xframe(k2,ifra2) + nz*xframe(k3,ifra2))
1019 nsign = sign(one,nsign)
1020
1021
1025
1026 fx=fx+pvel*half*nx*nsign
1027 fy=fy+pvel*half*ny*nsign
1028 fz=fz+pvel*half*nz*nsign
1029
1030 fx=fx*fourth
1031 fy=fy*fourth
1032 fz=fz*fourth
1033
1034
1035 iad = iadc(iloadp(4,
nl)+4*(i-1))
1036 fskyv(iad,1) = fx
1037 fskyv(iad,2) = fy
1038 fskyv(iad,3) = fz
1039
1040
1041 iad = iadc(iloadp(4,
nl)+4*(i-1)+1)
1042 fskyv(iad,1) = fx
1043 fskyv(iad,2) = fy
1044 fskyv(iad,3) = fz
1045
1046
1047 iad = iadc(iloadp(4,
nl)+4*(i-1)+2)
1048 fskyv(iad,1) = fx
1049 fskyv(iad,2) = fy
1050 fskyv(iad,3) = fz
1051
1052
1053 iad = iadc(iloadp(4,
nl)+4*(i-1)+3)
1054 fskyv(iad,1) = fx
1055 fskyv(iad,2) = fy
1056 fskyv(iad,3) = fz
1057
1058
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(2,n3)+v(2,n4))
1061 + +fz*(v(3,n1)+v(3,n2)+v(3,n3)+v(3,n4)))
1062
1063 IF(ianim > 0) THEN
1064#include "lockon.inc"
1065 fext(1,n1) = fext(1,n1)+fx
1066 fext(2,n1) = fext(2,n1)+fy
1067 fext(3,n1) = fext(3,n1)+fz
1068
1069 fext(1,n2) = fext(1,n2)+fx
1070 fext(2,n2) = fext(2,n2)+fy
1071 fext(3,n2) = fext(3,n2)+fz
1072
1073 fext(1,n3) = fext(1,n3)+fx
1074 fext(2,n3) = fext(2,n3)+fy
1075 fext(3,n3) = fext(3,n3)+fz
1076
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"
1081 ENDIF
1082
1083 IF(th_surf%LOADP_FLAG >0 ) THEN
1084
1085
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
1090 vn = vn / four
1091
1092
1093 an = fx*nx + fy*ny + fz*nz
1094 mass = ( ms(n1)+ms(n2)+ms(n3)+ms(n4) ) / four
1095 an = an / mass
1096
1097 nsegpl = nsegpl + 1
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"
1105 ENDDO
1106 ENDIF
1107
1108 ELSE
1109
1110
1111 IF(n1 == n2)THEN
1112 n2 = n3
1113 n3 = n4
1114 n4 = 0
1115 ELSEIF(n1 == n3)THEN
1116 n3 = n4
1117 n4 = 0
1118 ELSEIF(n1 == n4)THEN
1119 n4 = 0
1120 ELSEIF(n2 == n3)THEN
1121 n3 = n4
1122 n4 = 0
1123 ELSEIF(n2 == n4)THEN
1124 n2 = n3
1125 n3 = n4
1126 n4 = 0
1127 ELSEIF(n3 == n4)THEN
1128 n4 = 0
1129 ENDIF
1130
1131
1132 k1=3*dir_hsp-2
1133 k2=3*dir_hsp-1
1134 k3=3*dir_hsp
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
1138 centroid_depth = centroid_depth+(xframe(k3,ifra1)*(x(3,n1)+x(3,n2)+x(3,n3))/three)
1139 ismooth = 0
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)
1143 aa = aa*fcy
1144 ELSE
1145 aa = fcy*finter(fun_hsp,(centroid_depth-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
1146 ENDIF
1147
1148 ENDIF
1149
1150
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))
1152 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))
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)
1156 pa = aa
1158
1159
1160 k1=3*dir_vel-2
1161 k2=3*dir_vel-1
1162 k3=3*dir_vel
1163 vseg= (xframe(k1,ifra2)* (v(1,n1) + v(1,n2) + v(1,n3)) /three
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)
1166
1167
1168 IF(fun_vel /= 0)THEN
1169 ismooth = 0
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
1174 ELSE
1175 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx) - vseg
1176 ENDIF
1177 ELSE
1178 vel = -vseg
1179 ENDIF
1180 IF(fun_cx /= 0)THEN
1181 pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2)-(ny/
norm)*vel*xframe(k2,ifra2)-(nz/
norm)*vel*xframe(k3,ifra2))**2 )
1182 ismooth = 0
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
1187 ELSE
1188 pvel = pvel * fcy1* finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
1189 ENDIF
1190
1191 ENDIF
1192 nsign = vel*(nx*xframe(k1,ifra2) + ny*xframe(k2,ifra2) + nz
1193 nsign = sign(one,nsign)
1194
1195
1199
1200 fx=fx+pvel*half*nx*nsign
1201 fy=fy+pvel*half*ny*nsign
1202 fz=fz+pvel*half*nz*nsign
1203
1204 fx=fx*third
1205 fy=fy*third
1206 fz=fz*third
1207
1208
1209 iad = iadc(iloadp(4,
nl)+4*(i-1))
1210 fskyv(iad,1) = fx
1211 fskyv(iad,2) = fy
1212 fskyv(iad,3) = fz
1213 IF(ianim > 0) THEN
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"
1219 ENDIF
1220
1221
1222 iad = iadc(iloadp(4,
nl)+4*(i-1)+1)
1223 fskyv(iad,1) = fx
1224 fskyv(iad,2) = fy
1225 fskyv(iad,3) = fz
1226 IF(ianim > 0) THEN
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"
1232 ENDIF
1233
1234
1235 iad = iadc(iloadp(4,
nl)+4*(i-1)+2)
1236 fskyv(iad,1) = fx
1237 fskyv(iad,2) = fy
1238 fskyv(iad,3) = fz
1239 IF(ianim > 0) THEN
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"
1245 ENDIF
1246
1247 IF(th_surf%LOADP_FLAG >0 ) THEN
1248
1249
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
1253 vn = third * vn
1254
1255
1256 an = fx*nx + fy*ny + fz*nz
1257 mass = third * ( ms(n1)+ms(n2)+ms(n3)+ms(n4) )
1258 an = an / mass
1259
1260 nsegpl = nsegpl + 1
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)= th_surf%CHANNELS(5,ksurf) +
area
1267#include "lockoff.inc"
1268 ENDDO
1269 ENDIF
1270
1271
1272 wfextt=wfextt+dt1*(fx*(v(1,n1)+v(1,n2)+v(1,n3))
1273 + +fy*(v(2,n1)+v(2,n2)+v(2,n3))
1274 + +fz*(v(3,n1)+v(3,n2)+v(3,n3)))
1275 ENDIF
1276 enddo
1277
1278 enddo
1279
1280
1281 wfext = wfext + wfextt
1282 ENDIF
1283
1284
1285 ENDIF
1286
1287 RETURN
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
subroutine area(d1, x, x2, y, y2, eint, stif0)
OPTION /TH/SURF outputs of Pressure and Area needed Tabs.
character *2 function nl()
integer function set_u_sens_value(nsens, ivar, var)
integer function get_u_sens_ipar(nsens, ivar, var)
integer function get_u_sens_value(nsens, ivar, var)
integer function get_u_sens_fpar(nsens, ivar, var)
integer function get_u_numsens(idsens)