42 * ILOADP ,FAC ,A ,V ,X ,
43 1 IADC ,FSKY ,LLOADP ,FEXT ,NODA_SURF,NODA_PEXT,
44 2 ITAB ,H3D_DATA ,NL ,DTMIN_LOC ,WFEXT_LOC,
56 USE output_mod ,
ONLY : h3d_has_noda_pext, anim_has_noda_pext
60#include "implicit_f.inc"
74#include "tabsiz_c.inc"
78 INTEGER,
INTENT(IN) :: LLOADP(SLLOADP)
79 INTEGER,
INTENT(INOUT) :: ILOADP(SIZLOADP,NLOADP)
80 INTEGER,
INTENT(IN) :: IADC(*)
81 INTEGER,
INTENT(IN) :: (NUMNOD),NL
82 my_real,
INTENT(INOUT) :: dtmin_loc
83 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT_LOC
84 my_real,
INTENT(IN) :: v(3,numnod),x(3,numnod)
85 my_real,
INTENT(INOUT) :: fac(lfacload,nloadp)
86 my_real,
INTENT(INOUT) :: a(3,numnod),fsky(8,sfsky/8)
87 my_real,
INTENT(INOUT) :: fext(3,numnod)
88 my_real,
INTENT(INOUT) :: noda_surf(numnod)
89 my_real,
INTENT(INOUT) :: noda_pext(numnod)
91 TYPE (TH_SURF_) ,
INTENT(INOUT) :: TH_SURF
92 INTEGER,
INTENT(INOUT) :: NSEGPL
93 TYPE(pblast_),
INTENT(INOUT) :: PBLAST
97 CHARACTER(LEN=NCHARLINE) :: MSGOUT1,MSGOUT2
98 TYPE(FRIEDLANDER_PARAMS_) :: FRIEDLANDER_PARAMS
99 INTEGER N1, N2, N3, N4,IL,IS,IAD,I,IANIM_OR_H3D,IZ_UPDATE,ABAC_ID,ISIZ_SEG,IERR1
100 INTEGER ID, ITA_SHIFT,IMODEL
102 INTEGER :: curve_id1, curve_id2, NN(4), NDT
103 LOGICAL :: BOOL_UNDERGROUND_CURRENT_SEG, IS_DECAY_TO_BE_COMPUTED
104 LOGICAL,
SAVE :: IS_UPDATED
108 my_real nnx,nny,nnz,norm_nn, norm2_nn, tmp_var
113 my_real projz(3),projdet(3), tmp(3)
117 my_real cos_theta, alpha_inci, alpha_refl,p_inci,p_refl,z,
118 . i_inci,i_refl,dt_0,t_a,wave_refl,wave_inci, w13
119 my_real dnorm,xdet,ydet,zdet,tdet,wtnt,pmin,t_stop,dx,dy,dz,p,
120 . fac_m_bb, fac_l_bb, fac_t_bb, fac_p_bb, fac_i_bb, ta_first, tt_star
129 DATA pi_/3.141592653589793238462643d0/
134 my_real :: cst_255_div_ln_z1_on_zn
135 DATA cst_255_div_ln_z1_on_zn/-38.147316611455952998/
138 DATA log10_ /2.30258509299405000000/
141 DATA cst_180 /180.000000000000000000/
143 INTEGER,
EXTERNAL :: DICHOTOMIC_SEARCH_R_DESC,DICHOTOMIC_SEARCH_R_ASC
146 DATA fac_unit/3.966977216838196139019/
162 IF(pblast%NLOADP_B==0)
RETURN
165 ta_first = fac(07,nl)
167 tt_star = tt + pblast%PBLAST_DT%TA_INF
168 iz_update = iloadp(06,nl)
170 ta_first = fac(07,nl) + pblast%PBLAST_DT%TA_INF
171 IF(iz_update ==1)
THEN
174 dtmin_loc=
max(pblast%PBLAST_TAB(il)%DTMIN, dtmin_loc)
175 IF(tt_star<ta_first)
RETURN
178 dtmin_loc = (one+em06)*(tdet - tt)
179 dtmin_loc=
max(pblast%PBLAST_TAB(il)%DTMIN, dtmin_loc)
181 dtmin_loc = pblast%PBLAST_TAB(il)%DTMIN
183 IF(tt_star<tdet)
RETURN
189 ianim_or_h3d = anim_v(5)+outp_v(5)+h3d_data%N_VECT_FINT + anim_v(6)+outp_v(6)+h3d_data%N_VECT_FEXT
192 z1_ = 0.500000000000000
196 fac_m_bb = fac_mass*ep03
197 fac_l_bb = fac_length*ep02
198 fac_t_bb = fac_time*ep06
199 fac_p_bb = fac_m_bb/fac_l_bb/fac_t_bb/fac_t_bb
200 fac_i_bb = fac_p_bb*fac_t_bb
215 ta_first = fac(07,nl)
220 alpha_zc = fac(12,nl)
222 isiz_seg = iloadp(01,nl)/4
224 iz_update = iloadp(06,nl)
225 abac_id = iloadp(07,nl)
227 ita_shift = iloadp(09,nl)
229 imodel = iloadp(11,nl)
232 is_decay_to_be_computed = .false.
233 IF(imodel == 2)is_decay_to_be_computed=.true.
237 curve_id1=int(alpha_zc)
238 curve_id2=
min(10,curve_id1+1)
239 alpha_zc = alpha_zc - curve_id1
242 w13 = (wtnt*fac_m_bb)**third
244 norm2_nn=nnx*nnx+nny*nny+nnz*nnz
245 norm_nn =sqrt(norm2_nn)
253 bool_underground_current_seg = .false.
255 n1=lloadp(iloadp(4,nl)+4*(i-1))
256 n2=lloadp(iloadp(4,nl)+4*(i-1)+1)
257 n3=lloadp(iloadp(4,nl)+4*(i-1)+2)
258 n4=lloadp(iloadp(4,nl)+4*(i-1)+3)
260 IF(n4 == 0 .OR. n3 == n4)
THEN
262 pblast%PBLAST_TAB(il)%NPt(i) = three
265 zx = x(1,n1)+x(1,n2)+x(1,n3)
266 zy = x(2,n1)+x(2,n2)+x(2,n3)
267 zz = x(3,n1)+x(3,n2)+x(3,n3)
272 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))
273 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))
274 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))
276 norm = sqrt(nx*nx+ny*ny+nz*nz)
279 pblast%PBLAST_TAB(il)%NPt(i) = four
282 zx = x(1,n1)+x(1,n2)+x(1,n3)+x(1,n4)
283 zy = x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4)
284 zz = x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4)
289 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))
290 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))
291 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))
293 norm = sqrt(nx*nx+ny*ny+nz*nz)
299 pblast%PBLAST_TAB(il)%N(1,i) = n1
300 pblast%PBLAST_TAB(il)%N(2,i) = n2
301 pblast%PBLAST_TAB(il)%N(3,i) = n3
302 pblast%PBLAST_TAB(il)%N(4,i) = n4
312 IF(iz_update == 2)
THEN
317 dx = (xdet - zx)*fac_l_bb
318 dy = (ydet - zy)*fac_l_bb
319 dz = (zdet - zz)*fac_l_bb
320 dnorm = sqrt(dx*dx+dy*dy+dz*dz)
327 projdet(1)=xdet + nnx
328 projdet(2)=ydet + nny
329 projdet(3)=zdet + nnz
331 hz=-(nnx*zx + nnx*zy + nnz*zz - nnx*projdet(1)-nnx*projdet(2)-nnz*projdet(3))/hc
346 bool_underground_current_seg = .true.
350 z_struct = hz*fac_l_bb/w13
358 projz(1) = zx + hz*nnx/hc
359 projz(2) = zy + hz*nny/hc
360 projz(3) = zz + hz*nnz/hc
361 tmp(1) = (projz(1)-projdet(1))
363 tmp(3) = (projz(3)-projdet(3))
364 lg = sqrt(tmp(1)*tmp(1)+tmp(2)*tmp(2)+tmp(3)*tmp(3))
368 cos_theta = (projdet(1)-projz(1))*nx + (projdet(2)-projz(2))*ny + (projdet(3)-projz(3))*nz
369 cos_theta = cos_theta/
max(em20,lg*
norm)
375 tmp_var=sqrt( tmp(1)*tmp(1) + tmp(2)*tmp(2) + tmp(3)*tmp(3) )
376 angle_g = -( nnx*tmp(1) + nny*tmp(2) + nnz
377 angle_g =
min(one,
max(-one,angle_g))
378 angle_g = acos(angle_g)
379 angle_g = cst_180/pi_*angle_g
380 IF(angle_g < zero .AND. pblast%PBLAST_TAB(il)%TAGMSG(i) == 0 )
THEN
381 write(iout,*)
'Warning : /LOAD/PBLAST id=',id,
' NEGATIVE ANGLE,',angle_g
382 write(istdo,*)
'Warning : /LOAD/PBLAST id=',id,
' NEGATIVE ANGLE,',angle_g
383 if(n4 == 0 .or. n3 == n4)
then
384 write(iout,fmt=
'(A,3I11)')
' FACE:',itab((/n1,n2,n3/)),
' SEEMS TO BE BELOW THE GROUND'
385 write(istdo,fmt=
'(A,3I11)')
' FACE:',itab((/n1,n2,n3/)),
' SEEMS TO BE BELOW THE GROUND'
387 write(iout,fmt=
'(A,4I11)')
' FACE:',itab((/n1,n2,n3,n4/)),
' SEEMS TO BE BELOW THE GROUND'
388 write(istdo,fmt=
'(A,4I11)')
' FACE:',itab((/n1,n2,n3,n4/)),
' SEEMS TO BE BELOW THE GROUND'
391 pblast%PBLAST_TAB(il)%TAGMSG(i) = 1
392 ELSEIF(angle_g > 85.00000 .AND. pblast%PBLAST_TAB(il)%TAGMSG(i) == 0)
THEN
393 write(iout, fmt=
'(A,I0,A,E10.4)')
'Warning : /LOAD/PBLAST id=',id,
' ANGLE IS OVER THE UPPER BOUND,',angle_g
394 write(istdo,fmt=
'(A,I0,A,E10.4)')
'Warning : /LOAD/PBLAST id=',id,
' ANGLE IS OVER THE UPPER BOUND,',angle_g
395 if(n4 == 0 .or. n3 == n4)
then
396 write(iout, fmt=
'(A,3I11)')
' ANGLE SET TO 85.00 FOR FACE:',itab((/n1,n2,n3/))
397 write(istdo,fmt=
'(A,3I11)') ' angle set to 85.00
for face:
',itab((/n1,n2,n3/))
399 write(iout, FMT='(a,4i11)
') ' angle set to 85.00
for',itab((/n1,n2,n3,n4/))
400 write(istdo,FMT='(a,4i11)
') ' angle set to 85.00
for face:
',itab((/n1,n2,n3,n4/))
404 PBLAST%PBLAST_TAB(IL)%TAGMSG(I) = 1
408 !------------------------------------------------------------------!
409 CALL PBLAST_PARAMETERS__AIR_BURST( PBLAST,
410 + Z_struct, Zc, Zg, ANGLE_g, W13, TDET,
411 + FAC_P_bb, FAC_I_bb, FAC_T_bb,
412 + IS_DECAY_TO_BE_COMPUTED,
414 + FRIEDLANDER_PARAMS,NWARN)
415 P_inci = FRIEDLANDER_PARAMS%P_inci
416 P_refl = FRIEDLANDER_PARAMS%P_refl
417 I_inci = FRIEDLANDER_PARAMS%I_inci
418 I_refl = FRIEDLANDER_PARAMS%I_refl
419 T_A = FRIEDLANDER_PARAMS%T_A
420 DT_0 = FRIEDLANDER_PARAMS%DT_0
421 decay_inci = FRIEDLANDER_PARAMS%decay_inci
422 decay_refl = FRIEDLANDER_PARAMS%decay_refl
423 !------------------------------------------------------------------!
425 TA_INF_LOC = MIN(TA_INF_LOC, T_A)
427 !update wave parameters
428 PBLAST%PBLAST_TAB(IL)%cos_theta(I) = cos_theta
429 PBLAST%PBLAST_TAB(IL)%P_inci(I) = P_inci
430 PBLAST%PBLAST_TAB(IL)%P_refl(I) = P_refl
431 PBLAST%PBLAST_TAB(IL)%ta(I) = T_A
432 PBLAST%PBLAST_TAB(IL)%t0(I) = DT_0
433 PBLAST%PBLAST_TAB(IL)%decay_inci(I) = decay_inci
434 PBLAST%PBLAST_TAB(IL)%decay_refl(I) = decay_refl
438 DTMIN_LOC = MIN(DTMIN_LOC,DT_0/NDT)
439 IZ_UPDATE = 1 !update done
440 ILOADP(06,NL) = IZ_UPDATE
445 !Use wave parameters from Starter
446 cos_theta = PBLAST%PBLAST_TAB(IL)%cos_theta(I)
447 P_inci = PBLAST%PBLAST_TAB(IL)%P_inci(I)
448 P_refl = PBLAST%PBLAST_TAB(IL)%P_refl(I)
449 T_A = PBLAST%PBLAST_TAB(IL)%ta(I)
450 DT_0 = PBLAST%PBLAST_TAB(IL)%t0(I)
451 decay_inci = PBLAST%PBLAST_TAB(IL)%decay_inci(I)
452 decay_refl = PBLAST%PBLAST_TAB(IL)%decay_refl(I)
453 DTMIN_LOC = PBLAST%PBLAST_TAB(IL)%DTMIN
457!------------------------------- ---
459 !Coefficients for wave superimposition
460 !PressureLoad = Reflected_Pressure * cos2X + IncidentPressure * (1 + cos2X -2 cosX)
461 IF(cos_theta<=ZERO)THEN
462 !Surface not facing the point of explosion
466 alpha_refl = cos_theta**2 ! cos**2 a
467 alpha_inci = ONE + cos_theta - TWO * alpha_refl ! 1 + cos a -2 cos**2 a
470 !Building pressure waves from Friedlander model. (Modified model can bu introduced later if needed)
473 IF(TT_STAR >= T_A)THEN
474 WAVE_INCI = P_inci*(ONE-(TT_STAR-T_A)/DT_0)*exp(-DECAY_inci*(TT_STAR-T_A)/DT_0)
475 WAVE_REFL = P_refl*(ONE-(TT_STAR-T_A)/DT_0)*exp(-DECAY_refl*(TT_STAR-T_A)/DT_0)
480 P = alpha_refl * WAVE_REFL + alpha_inci * WAVE_INCI
482 PBLAST%PBLAST_TAB(IL)%PRES(I) = P
484 !Expand Pressure load to nodes
485 SURF_PATCH = HALF*SQRT(NX*NX+NY*NY+NZ*NZ) / NPT
486 PBLAST%PBLAST_TAB(IL)%FX(I)= -P * HALF*NX / NPT
487 PBLAST%PBLAST_TAB(IL)%FY(I)= -P * HALF*NY / NPT
488 PBLAST%PBLAST_TAB(IL)%FZ(I)= -P * HALF*NZ / NPT
489 PBLAST%PBLAST_TAB(IL)%SURF_PATCH(I) = SURF_PATCH
492 ! on a given node : DW = <F,V>*dt
493 ! for this current 4-node or 3-node face : DW = sum( <F_k,V_k>*dt k=1,NPT) where F_k=Fel/NPT
494 WFEXT_LOC=WFEXT_LOC+DT1*( PBLAST%PBLAST_TAB(IL)%FX(I) * SUM( V( 1, NN(1:NINT(NPt)) ) )
495 + + PBLAST%PBLAST_TAB(IL)%FY(I) * SUM( V( 2, NN(1:NINT(NPt)) ) )
496 + + PBLAST%PBLAST_TAB(IL)%FZ(I) * SUM( V( 3, NN(1:NINT(NPt)) ) )
500 IF(TH_SURF%LOADP_FLAG > 0 ) THEN
502 AREA = SURF_PATCH*NPT
503 DO NS=TH_SURF%LOADP_KSEGS(NSEGPL) +1,TH_SURF%LOADP_KSEGS(NSEGPL+1)
504 KSURF = TH_SURF%LOADP_SEGS(NS)
505 th_surf%channels(4,KSURF)= th_surf%channels(4,KSURF) + AREA*P ! mean pressure
506 th_surf%channels(5,KSURF)= th_surf%channels(5,KSURF) + AREA ! surface where pressure is applied
514.AND.
IF(IMODEL == 2 NWARN > 0)THEN
516 WRITE(MSGOUT1,FMT='(i0,a)
') NWARN,
517 . ' segment(s) has excessive positive impulse regarding
the peak pressure and positive duration.
'
519 MSGOUT2='a triangular waveform will be used instead to maximize
the impulse. defining a pmin
VALUE'
520 write(IOUT , FMT='(a,i10,/a,/a)
') "Updated parameters for /LOAD/PBLAST id=", ID, MSGOUT1, MSGOUT2
521 write(ISTDO, FMT='(a,i10,/a,/a)
') "Updated parameters for /LOAD/PBLAST id=", ID, MSGOUT1, MSGOUT2
529 FAC(07,NL) = MIN(TA_INF_LOC, FAC(07,NL)) !smp min value
531 DTMIN_LOC = (ONE+EM06)*(FAC(07,NL) - TT) ! go directly to trigger time
532 DTMIN_LOC=MAX(PBLAST%PBLAST_TAB(IL)%DTMIN, DTMIN_LOC)
533 !---no update on next cycle
534 IZ_UPDATE = 1 !update done
535 ILOADP(06,NL) = IZ_UPDATE
536#include "lockoff.inc"
538 write(IOUT ,FMT='(a,i10,a,e16.8,a,e16.8)
') "Updated parameters for /LOAD/PBLAST id=",
539 . ID,' previous first arrival time :
',ZETA,
540 . ' is now updated to :
',FAC(07,NL)
541 write(istdo,FMT='(a,i10,a,e16.8,a,e16.8)
') "Updated parameters for /LOAD/PBLAST id=",
542 . ID,' previous first arrival time
',ZETA,
543 . ' is now updated to :
',FAC(07,NL)
547 !-------------------------------------------------------------------!
549 ! /PARITH/OFF : F directly added in A(1:3,1:NUMNOD). !
550 ! /PARITH/ON : F added FSKY & and automatically treated later !
551 !-------------------------------------------------------------------!
552 ! SPMD/SMP Parith/OFF
556 N1=LLOADP(ILOADP(4,NL)+4*(I-1))
557 N2=LLOADP(ILOADP(4,NL)+4*(I-1)+1)
558 N3=LLOADP(ILOADP(4,NL)+4*(I-1)+2)
559 N4=LLOADP(ILOADP(4,NL)+4*(I-1)+3)
560 A(1,N1)=A(1,N1)+PBLAST%PBLAST_TAB(IL)%FX(I)
561 A(2,N1)=A(2,N1)+PBLAST%PBLAST_TAB(IL)%FY(I)
562 A(3,N1)=A(3,N1)+PBLAST%PBLAST_TAB(IL)%FZ(I)
563 A(1,N2)=A(1,N2)+PBLAST%PBLAST_TAB(IL)%FX(I)
564 A(2,N2)=A(2,N2)+PBLAST%PBLAST_TAB(IL)%FY(I)
565 A(3,N2)=A(3,N2)+PBLAST%PBLAST_TAB(IL)%FZ(I)
566 A(1,N3)=A(1,N3)+PBLAST%PBLAST_TAB(IL)%FX(I)
567 A(2,N3)=A(2,N3)+PBLAST%PBLAST_TAB(IL)%FY(I)
568 A(3,N3)=A(3,N3)+PBLAST%PBLAST_TAB(IL)%FZ(I)
569 IF(PBLAST%PBLAST_TAB(IL)%NPt(I) == FOUR)THEN
570 A(1,N4)=A(1,N4)+PBLAST%PBLAST_TAB(IL)%FX(I)
571 A(2,N4)=A(2,N4)+PBLAST%PBLAST_TAB(IL)%FY(I)
572 A(3,N4)=A(3,N4)+PBLAST%PBLAST_TAB(IL)%FZ(I)
577!$OMP DO SCHEDULE(GUIDED,MVSIZ)
579 IAD =IADC(ILOADP(4,NL)+4*(I-1))
580 FSKY(1,IAD) =PBLAST%PBLAST_TAB(IL)%FX(I)
581 FSKY(2,IAD) =PBLAST%PBLAST_TAB(IL)%FY(I)
582 FSKY(3,IAD) =PBLAST%PBLAST_TAB(IL)%FZ(I)
583 IAD =IADC(ILOADP(4,NL)+4*(I-1)+1)
584 FSKY(1,IAD) =PBLAST%PBLAST_TAB(IL)%FX(I)
585 FSKY(2,IAD) =PBLAST%PBLAST_TAB(IL)%FY(I)
586 FSKY(3,IAD) =PBLAST%PBLAST_TAB(IL)%FZ(I)
587 IAD =IADC(ILOADP(4,NL)+4*(I-1)+2)
588 FSKY(1,IAD) =PBLAST%PBLAST_TAB(IL)%FX(I)
589 FSKY(2,IAD) =PBLAST%PBLAST_TAB(IL)%FY(I)
590 FSKY(3,IAD) =PBLAST%PBLAST_TAB(IL)%FZ(I)
591 IF(PBLAST%PBLAST_TAB(IL)%NPt(I) == FOUR)THEN
592 IAD =IADC(ILOADP(4,NL)+4*(I-1)+3)
593 FSKY(1,IAD) =PBLAST%PBLAST_TAB(IL)%FX(I)
594 FSKY(2,IAD) =PBLAST%PBLAST_TAB(IL)%FY(I)
595 FSKY(3,IAD) =PBLAST%PBLAST_TAB(IL)%FZ(I)
602 !-------------------------------------------!
603 ! ANIMATION FILE /ANIM/VECT/FEXT !
604 ! H3D FILE /H3D/NODA/FEXT !
605 !-------------------------------------------!
608 IF(IANIM_OR_H3D > 0) THEN
610 N1=PBLAST%PBLAST_TAB(IL)%N(1,I)
611 N2=PBLAST%PBLAST_TAB(IL)%N(2,I)
612 N3=PBLAST%PBLAST_TAB(IL)%N(3,I)
613 N4=PBLAST%PBLAST_TAB(IL)%N(4,I)
614 FEXT(1,N1) = FEXT(1,N1)+PBLAST%PBLAST_TAB(IL)%FX(I)
615 FEXT(2,N1) = FEXT(2,N1)+PBLAST%PBLAST_TAB(IL)%FY(I)
616 FEXT(3,N1) = FEXT(3,N1)+PBLAST%PBLAST_TAB(IL)%FZ(I)
617 FEXT(1,N2) = FEXT(1,N2)+PBLAST%PBLAST_TAB(IL)%FX(I)
618 FEXT(2,N2) = FEXT(2,N2)+PBLAST%PBLAST_TAB(IL)%FY(I)
619 FEXT(3,N2) = FEXT(3,N2)+PBLAST%PBLAST_TAB(IL)%FZ(I)
620 FEXT(1,N3) = FEXT(1,N3)+PBLAST%PBLAST_TAB(IL)%FX(I)
621 FEXT(2,N3) = FEXT(2,N3)+PBLAST%PBLAST_TAB(IL)%FY(I)
622 FEXT(3,N3) = FEXT(3,N3)+PBLAST%PBLAST_TAB(IL)%FZ(I)
623 IF(PBLAST%PBLAST_TAB(IL)%NPt(I)==FOUR)THEN
624 FEXT(1,N4) = FEXT(1,N4)+PBLAST%PBLAST_TAB(IL)%FX(I)
625 FEXT(2,N4) = FEXT(2,N4)+PBLAST%PBLAST_TAB(IL)%FY(I)
626 FEXT(3,N4) = FEXT(3,N4)+PBLAST%PBLAST_TAB(IL)%FZ(I)
630.OR..OR.
IF(TH_HAS_NODA_PEXT > 0 ANIM_HAS_NODA_PEXT > 0 H3D_HAS_NODA_PEXT > 0) THEN
632 N1 = PBLAST%PBLAST_TAB(IL)%N(1,I)
633 N2 = PBLAST%PBLAST_TAB(IL)%N(2,I)
634 N3 = PBLAST%PBLAST_TAB(IL)%N(3,I)
635 N4 = PBLAST%PBLAST_TAB(IL)%N(4,I)
636 SURF_PATCH = PBLAST%PBLAST_TAB(IL)%SURF_PATCH(I)
637 NODA_SURF(N1) = NODA_SURF(N1) + SURF_PATCH
638 NODA_SURF(N2) = NODA_SURF(N2) + SURF_PATCH
639 NODA_SURF(N3) = NODA_SURF(N3) + SURF_PATCH
640 P = PBLAST%PBLAST_TAB(IL)%PRES(I) * SURF_PATCH
641 NODA_PEXT(N1) = NODA_PEXT(N1) + P
642 NODA_PEXT(N2) = NODA_PEXT(N2) + P
643 NODA_PEXT(N3) = NODA_PEXT(N3) + P
644 IF(PBLAST%PBLAST_TAB(IL)%NPT(I) == FOUR)THEN
645 NODA_SURF(N4) = NODA_SURF(N4) + SURF_PATCH
646 NODA_PEXT(N4) = NODA_PEXT(N4) + P
656 write(iout,*)' ** error in memory allocation - pblast loading
'
657 write(istdo,*)' ** error in memory allocation - pblast loading
'