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,
60#include "implicit_f.inc"
74#include "tabsiz_c.inc"
78 TYPE(output_),
INTENT(INOUT) :: OUTPUT
79 INTEGER,
INTENT(IN) :: LLOADP(SLLOADP)
80 INTEGER,
INTENT(INOUT) :: ILOADP(SIZLOADP,NLOADP)
81 INTEGER,
INTENT(IN) :: IADC(*)
82 INTEGER,
INTENT(IN) :: ITAB(NUMNOD),NL
83 my_real,
INTENT(INOUT) :: dtmin_loc
84 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT_LOC
85 my_real,
INTENT(IN) :: v(3,numnod),x(3,numnod)
86 my_real,
INTENT(INOUT) :: fac(lfacload,nloadp)
87 my_real,
INTENT(INOUT) :: a(3,numnod),fsky(8,sfsky/8)
88 my_real,
INTENT(INOUT) :: fext(3,numnod)
89 my_real,
INTENT(INOUT) :: noda_surf(numnod)
90 my_real,
INTENT(INOUT) :: noda_pext(numnod)
92 TYPE (TH_SURF_) ,
INTENT(INOUT) :: TH_SURF
93 INTEGER,
INTENT(INOUT) :: NSEGPL
94 TYPE(pblast_),
INTENT(INOUT) :: PBLAST
98 INTEGER :: N1, N2, N3, N4, IL, IS, IAD, I, IANIM_OR_H3D,IZ_UPDATE,ABAC_ID,ISIZ_SEG,IERR1,, ITA_SHIFT,NS,KSURF
99 INTEGER :: NDT,IMODEL,NN(4)
102 my_real :: zx,zy,zz,
norm,nx,ny,nz,nnx,nny,nnz,hz,
area
103 my_real :: lambda,cos_theta, alpha_inci, alpha_refl, p_inci,p_refl
104 my_real :: i_inci,i_refl,dt_0,t_a,wave_refl,wave_inci, w13
105 my_real :: xdet,ydet,zdet,tdet,wtnt,pmin,t_stop,p,fac_m_bb, fac_l_bb, fac_t_bb, fac_p_bb, fac_i_bb,
107 my_real :: decay_inci,decay_refl
108 my_real :: cst_255_div_ln_z1_on_zn, log10_, npt, ff(3)
109 my_real :: projz(3), tmp(3), lg, zg, hc
110 my_real :: base_x,base_y,base_z
114 TYPE(friedlander_params_) :: FRIEDLANDER_PARAMS
115 LOGICAL,
SAVE :: IS_UPDATED
116 LOGICAL :: IS_DECAY_TO_BE_COMPUTED
118 CHARACTER(LEN=NCHARLINE) :: MSGOUT1,MSGOUT2
120 DATA cst_255_div_ln_z1_on_zn/-38.147316611455952998/
121 DATA log10_ /2.30258509299405000000/
137 IF(pblast%NLOADP_B == 0)
RETURN
140 ta_first = fac(07,nl)
142 tt_star = tt + pblast%PBLAST_DT%TA_INF
143 iz_update = iloadp(06,nl)
145 ta_first = fac(07,nl) + pblast%PBLAST_DT%TA_INF
146 IF(iz_update ==1)
THEN
148 dtmin_loc = (one+em06)*(ta_first - tt)
150 IF(tt_star<ta_first)
RETURN
153 dtmin_loc = (one+em06)*(tdet - tt)
154 dtmin_loc=
max(pblast%PBLAST_TAB(il)%DTMIN, dtmin_loc)
156 dtmin_loc = pblast%PBLAST_TAB(il)%DTMIN
158 IF(tt_star<tdet)
RETURN
163 ianim_or_h3d = anim_v(5)+outp_v
166 z1_ = 0.500000000000000
169 fac_m_bb = fac_mass*ep03
170 fac_l_bb = fac_length*ep02
171 fac_t_bb = fac_time*ep06
172 fac_p_bb = fac_m_bb/fac_l_bb/fac_t_bb/fac_t_bb
173 fac_i_bb = fac_p_bb*fac_t_bb
174 fac_i_bb = fac_m_bb/fac_l_bb/fac_t_bb
189 ta_first = fac(07,nl)
196 ishape = iloadp(03,nl)
197 iz_update = iloadp(06,nl)
198 abac_id = iloadp(07,nl)
200 ita_shift = iloadp(09,nl)
202 imodel = iloadp(11,nl)
203 isiz_seg = iloadp(01,nl)/4
205 w13 = (wtnt*fac_m_bb)**third
209 is_decay_to_be_computed = .false.
210 IF(imodel == 2)is_decay_to_be_computed=.true.
219 n1=lloadp(iloadp(4,nl)+4*(i-1))
220 n2=lloadp(iloadp(4,nl)+4*(i-1)+1)
221 n3=lloadp(iloadp(4,nl)+4*(i-1)+2)
222 n4=lloadp(iloadp(4,nl)+4*(i-1)+3)
230 pblast%PBLAST_TAB(il)%NPt(i) = three
233 zx = x(1,n1)+x(1,n2)+x(1,n3)
234 zy = x(2,n1)+x(2,n2)+x(2,n3)
235 zz = x(3,n1)+x(3,n2)+x(3,n3)
240 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))
241 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))
242 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))
244 norm = sqrt(nx*nx+ny*ny+nz*nz)
247 pblast%PBLAST_TAB(il)%NPt(i) = four
250 zx = x(1,n1)+x(1,n2)+x(1,n3)+x(1,n4)
251 zy = x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4)
252 zz = x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4)
257 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))
258 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))
259 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))
261 norm = sqrt(nx*nx+ny*ny+nz*nz)
264 pblast%PBLAST_TAB(il)%N(1,i) = n1
265 pblast%PBLAST_TAB(il)%N(2,i) = n2
266 pblast%PBLAST_TAB(il)%N(3,i) = n3
267 pblast%PBLAST_TAB(il)%N(4,i) = n4
272 hz = ( nnx*zx + nny*zy + nnz*zz - nnx*xdet - nny*ydet - nnz*zdet )
280 IF(iz_update == 2)
THEN
284 IF(hz >= -em10 .OR. ishape == 2)
THEN
292 lambda = (base_x-zx)*nnx + (base_y-zy)*nny + (base_z-zz)*nnz
294 projz(1) = zx + lambda*nnx
295 projz(2) = zy + lambda*nny
296 projz(3) = zz + lambda*nnz
298 tmp(1) = (projz(1)-xdet)
299 tmp(2) = (projz(2)-ydet)
300 tmp(3) = (projz(3)-zdet)
301 lg = sqrt(tmp(1)*tmp(1)+tmp(2)*tmp(2)+tmp(3)*tmp(3))
310 dx = (xdet - zx)*fac_l_bb
311 dy = (ydet - zy)*fac_l_bb
312 dz = (zdet - zz)*fac_l_bb
313 dnorm = sqrt(dx*dx+dy*dy+dz*dz)
316 cos_theta = dx*nx + dy*ny + dz*nz
317 cos_theta = cos_theta/
max(em20,
norm*dnorm)
321 cos_theta = (xdet-projz(1))*nx + (ydet-projz(2))*ny + (zdet-projz(3))*nz
322 cos_theta = cos_theta/
max(em20,lg*
norm)
326 IF(z > 0.5 .AND. z < 400.)
then
329 elseif(z <= 0.5 .AND. pblast%PBLAST_TAB(il)%TAGMSG(i) == 0)
then
330 write(iout, fmt=
'(A,I0,A)')
"Warning : /LOAD/PBLAST id=",
id,
" Rg/W**(1/3) < 0.5 cm/g**(1/3)"
331 write(istdo,fmt=
'(A,I0,A)')
"Warning : /LOAD/PBLAST id=",
id,
" Rg/W**(1/3) < 0.5 cm/g**(1/3)"
332 write(iout, fmt=
'(A)') " horizontal distance on ground(rg) is too
close to
the charge
"
333 write(istdo,FMT='(A)') " horizontal distance on ground(rg) is too
close to
the charge
"
334.OR.
if (N4 == 0 N3 == N4)then
335 write(iout, FMT='(A,3I11)') " -> segment nodes :
",itab(n1),itab(n2),itab(n3)
336 write(istdo,FMT='(A,3I11)') " -> segment nodes :
",itab(n1),itab(n2),itab(n3)
338 write(iout, FMT='(A,4I11)') " -> segment nodes :
",itab(n1),itab(n2),itab(n3),itab(n4)
339 write(istdo,FMT='(A,4I11)') " -> segment nodes :
",itab(n1),itab(n2),itab(n3),itab(n4)
341 PBLAST%PBLAST_TAB(IL)%TAGMSG(I) = 1
343.AND.
elseif(Z > 400. PBLAST%PBLAST_TAB(IL)%TAGMSG(I) == 0)then
344 write(iout, fmt='(A,I0,A)') "warning : /load/pblast
id=
",ID," rg/w**(1/3) > 400. cm/g**(1/3)
"
345 write(istdo,fmt='(a,i0,a)') "warning : /load/pblast
id=
",id," rg/w**(1/3) > 400. cm/g**(1/3)
"
346 write(iout, FMT='(A)') " horizontal distance on ground(rg) is too far from
"
347 write(istdo,FMT='(A)') " horizontal distance on ground(rg)
"
348.OR.
if (N4 == 0 N3 == N4)then
349 write(iout, FMT='(A,3I11)') " -> segment nodes :
",itab(n1),itab(n2),itab(n3)
350 write(istdo,FMT='(A,3I11)') " -> segment nodes :
",itab(n1),itab(n2),itab(n3)
352 write(iout, FMT='(A,4I11)') " -> segment nodes :
",itab(n1),itab(n2),itab(n3),itab(n4)
353 write(istdo,FMT='(A,4I11)') " -> segment nodes :
",itab(n1),itab(n2),itab(n3),itab(n4)
355 PBLAST%PBLAST_TAB(IL)%TAGMSG(I) = 1
359 !------------------------------------------------------------------!
360 CALL PBLAST_PARAMETERS__SURFACE_BURST( PBLAST,
362 + FAC_P_bb, FAC_I_bb, FAC_T_bb,
363 + IS_DECAY_TO_BE_COMPUTED,
364 + FRIEDLANDER_PARAMS, NWARN )
365 P_inci = FRIEDLANDER_PARAMS%P_inci
366 P_refl = FRIEDLANDER_PARAMS%P_refl
367 I_inci = FRIEDLANDER_PARAMS%I_inci
368 I_refl = FRIEDLANDER_PARAMS%I_refl
369 T_A = FRIEDLANDER_PARAMS%T_A
370 DT_0 = FRIEDLANDER_PARAMS%DT_0
371 decay_inci = FRIEDLANDER_PARAMS%decay_inci
372 decay_refl = FRIEDLANDER_PARAMS%decay_refl
373 !------------------------------------------------------------------!
375 TA_INF_LOC = MIN(TA_INF_LOC, T_A)
377 !update wave parameters
378 PBLAST%PBLAST_TAB(IL)%cos_theta(I) = cos_theta
379 PBLAST%PBLAST_TAB(IL)%P_inci(I) = P_inci
380 PBLAST%PBLAST_TAB(IL)%P_refl(I) = P_refl
381 PBLAST%PBLAST_TAB(IL)%ta(I) = T_A
382 PBLAST%PBLAST_TAB(IL)%t0(I) = DT_0
383 PBLAST%PBLAST_TAB(IL)%decay_inci(I) = decay_inci
384 PBLAST%PBLAST_TAB(IL)%decay_refl(I) = decay_refl
387 !nothing to compute underground
398 DTMIN_LOC = MIN(DTMIN_LOC,DT_0/NDT)
399 IZ_UPDATE = 1 !update done
400 ILOADP(06,NL) = IZ_UPDATE
405 !use wave parameters from Starter
406 Z = ZERO ! ZG not used here since all wave characteristics are stored.
407 cos_theta = PBLAST%PBLAST_TAB(IL)%cos_theta(I)
408 P_inci = PBLAST%PBLAST_TAB(IL)%P_inci(I)
409 P_refl = PBLAST%PBLAST_TAB(IL)%P_refl(I)
410 T_A = PBLAST%PBLAST_TAB(IL)%ta(I)
411 DT_0 = PBLAST%PBLAST_TAB(IL)%t0(I)
412 decay_inci = PBLAST%PBLAST_TAB(IL)%decay_inci(I)
413 decay_refl = PBLAST%PBLAST_TAB(IL)%decay_refl(I)
414 DTMIN_LOC = PBLAST%PBLAST_TAB(IL)%DTMIN
416 ENDIF !IF(IZ_UPDATE == 2)
418 !Coefficients for wave superimposition
419 !PressureLoad = Reflected_Pressure * cos2X + IncidentPressure * (1 + cos2X -2 cosX)
420 IF(cos_theta<=ZERO)THEN
421 !Surface not facing the point of explosion
425 alpha_refl = cos_theta**2 ! cos**2 a
426 alpha_inci = ONE + cos_theta - TWO * alpha_refl ! 1 + cos a -2 cos**2 a
429 !Building pressure waves from Friedlander model. (Modified model can bu introduced later if needed)
433 WAVE_INCI = P_inci*(ONE-(TT_STAR-T_A)/DT_0)*exp(-DECAY_inci*(TT_STAR-T_A)/DT_0)
434 WAVE_REFL = P_refl*(ONE-(TT_STAR-T_A)/DT_0)*exp(-DECAY_refl*(TT_STAR-T_A)/DT_0)
439 P = alpha_refl * WAVE_REFL + alpha_inci * WAVE_INCI
441 PBLAST%PBLAST_TAB(IL)%PRES(I) = P
443 !!Expand Pressure load to nodes
444 ! FF is nodal force which applied on each node N1,N2,N3, and also N4 if relevant
445 ! FF = FF_elem / NPT = Pload.S.n / NPT where n is the unitary normal vector
446 ! NX,NY,NZ = 2S.n (in all cases:quadrangles & triangles)
447 SURF_PATCH = HALF*SQRT(NX*NX+NY*NY+NZ*NZ) / NPT
448 FF(1) = -P * HALF*NX / NPT ! -P*S/NPT . nx
449 FF(2) = -P * HALF*NY / NPT ! -P*S/NPT . ny
450 FF(3) = -P * HALF*NZ / NPT ! -P*S/NPT . nz
451 !storing force for one node of the current face (for assembly below)
452 PBLAST%PBLAST_TAB(IL)%FX(I) = FF(1)
453 PBLAST%PBLAST_TAB(IL)%FY(I) = FF(2)
454 PBLAST%PBLAST_TAB(IL)%FZ(I) = FF(3)
455 PBLAST%PBLAST_TAB(IL)%SURF_PATCH(I) = SURF_PATCH
458 ! on a given node : DW = <F,V>*dt
459 ! for this current 4-node or 3-node face : DW = sum( <F_k,V_k>*dt k=1,NPT) where F_k=Fel/NPT
460 WFEXT_LOC=WFEXT_LOC+DT1*(FF(1)*SUM(V(1,NN(1:NINT(NPT)))) +FF(2)*SUM(V(2,NN(1:NINT(NPT)))) +FF(3)*SUM(V(3,NN(1:NINT(NPT)))))
463 IF(TH_SURF%LOADP_FLAG > 0 ) THEN
465 AREA = SURF_PATCH*NPT
466 DO NS=TH_SURF%LOADP_KSEGS(NSEGPL) +1,TH_SURF%LOADP_KSEGS(NSEGPL+1)
467 KSURF = TH_SURF%LOADP_SEGS(NS)
468 th_surf%channels(4,KSURF)= th_surf%channels(4,KSURF) + AREA*P ! mean pressure
469 th_surf%channels(5,KSURF)= th_surf%channels(5,KSURF) + AREA ! surface where pressure is applied
477.AND.
IF(IMODEL == 2 NWARN > 0)THEN
479 WRITE(MSGOUT1,FMT='(I0,A)') NWARN,
480 . ' SEGMENT(S) HAS EXCESSIVE POSITIVE IMPULSE REGARDING THE PEAK PRESSURE AND POSITIVE DURATION.'
482 MSGOUT2='A TRIANGULAR WAVEFORM WILL BE USED INSTEAD TO MAXIMIZE THE IMPULSE. DEFINING A PMIN VALUE IS STRONGLY RECOMMENDED'
483 write(IOUT , FMT='(A,I10,/A,/A)') "updated parameters
for /load/pblast
id=
", ID, MSGOUT1, MSGOUT2
484 write(ISTDO, FMT='(A,I10,/A,/A)') "updated parameters
for /load/pblast
id=
", ID, MSGOUT1, MSGOUT2
492 FAC(07,NL) = MIN(TA_INF_LOC, FAC(07,NL)) !smp min value
494 DTMIN_LOC = (ONE+EM06)*(FAC(07,NL) - TT) ! go directly to trigger time
495 DTMIN_LOC=MAX(PBLAST%PBLAST_TAB(IL)%DTMIN, DTMIN_LOC)
496 !---no update on next cycle
497 IZ_UPDATE = 1 !update done
498 ILOADP(06,NL) = IZ_UPDATE
499#include "lockoff.inc
"
501 write(*,FMT='(A,I10,A,E16.8,A,E16.8)') "updated parameters
for /load/pblast
id=
",
502 . ID,' previous first arrival time :',ZETA,
503 . ' is now updated to :',FAC(07,NL)
507 !-------------------------------------------------------------------!
509 ! /PARITH/OFF : F directly added in A(1:3,1:NUMNOD). !
510 ! /PARITH/ON : F added FSKY & and automatically treated later !
511 !-------------------------------------------------------------------!
512 ! SPMD/SMP Parith/OFF
516 N1=LLOADP(ILOADP(4,NL)+4*(I-1))
517 N2=LLOADP(ILOADP(4,NL)+4*(I-1)+1)
518 N3=LLOADP(ILOADP(4,NL)+4*(I-1)+2)
519 N4=LLOADP(ILOADP(4,NL)+4*(I-1)+3)
520 A(1,N1)=A(1,N1)+PBLAST%PBLAST_TAB(IL)%FX(I)
521 A(2,N1)=A(2,N1)+PBLAST%PBLAST_TAB(IL)%FY(I)
522 A(3,N1)=A(3,N1)+PBLAST%PBLAST_TAB(IL)%FZ(I)
523 A(1,N2)=A(1,N2)+PBLAST%PBLAST_TAB(IL)%FX(I)
524 A(2,N2)=A(2,N2)+PBLAST%PBLAST_TAB(IL)%FY(I)
525 A(3,N2)=A(3,N2)+PBLAST%PBLAST_TAB(IL)%FZ(I)
526 A(1,N3)=A(1,N3)+PBLAST%PBLAST_TAB(IL)%FX(I)
527 A(2,N3)=A(2,N3)+PBLAST%PBLAST_TAB(IL)%FY(I)
528 A(3,N3)=A(3,N3)+PBLAST%PBLAST_TAB(IL)%FZ(I)
529 IF(PBLAST%PBLAST_TAB(IL)%NPt(I) == FOUR)THEN
530 A(1,N4)=A(1,N4)+PBLAST%PBLAST_TAB(IL)%FX(I)
531 A(2,N4)=A(2,N4)+PBLAST%PBLAST_TAB(IL)%FY(I)
532 A(3,N4)=A(3,N4)+PBLAST%PBLAST_TAB(IL)%FZ(I)
537!$OMP DO SCHEDULE(GUIDED,MVSIZ)
539 IAD =IADC(ILOADP(4,NL)+4*(I-1))
540 FSKY(1,IAD) =PBLAST%PBLAST_TAB(IL)%FX(I)
541 FSKY(2,IAD) =PBLAST%PBLAST_TAB(IL)%FY(I)
542 FSKY(3,IAD) =PBLAST%PBLAST_TAB(IL)%FZ(I)
543 IAD =IADC(ILOADP(4,NL)+4*(I-1)+1)
544 FSKY(1,IAD) =PBLAST%PBLAST_TAB(IL)%FX(I)
545 FSKY(2,IAD) =PBLAST%PBLAST_TAB(IL)%FY(I)
546 FSKY(3,IAD) =PBLAST%PBLAST_TAB(IL)%FZ(I)
547 IAD =IADC(ILOADP(4,NL)+4*(I-1)+2)
548 FSKY(1,IAD) =PBLAST%PBLAST_TAB(IL)%FX(I)
549 FSKY(2,IAD) =PBLAST%PBLAST_TAB(IL)%FY(I)
550 FSKY(3,IAD) =PBLAST%PBLAST_TAB(IL)%FZ(I)
551 IF(PBLAST%PBLAST_TAB(IL)%NPt(I) == FOUR)THEN
552 IAD =IADC(ILOADP(4,NL)+4*(I-1)+3)
553 FSKY(1,IAD) =PBLAST%PBLAST_TAB(IL)%FX(I)
554 FSKY(2,IAD) =PBLAST%PBLAST_TAB(IL)%FY(I)
555 FSKY(3,IAD) =PBLAST%PBLAST_TAB(IL)%FZ(I)
562 !-------------------------------------------!
563 ! ANIMATION FILE /ANIM/VECT/FEXT !
564 ! H3D FILE /H3D/NODA/FEXT !
565 !-------------------------------------------!
567 IF(IANIM_OR_H3D > 0) THEN
569 N1=PBLAST%PBLAST_TAB(IL)%N(1,I)
570 N2=PBLAST%PBLAST_TAB(IL)%N(2,I)
571 N3=PBLAST%PBLAST_TAB(IL)%N(3,I)
572 N4=PBLAST%PBLAST_TAB(IL)%N(4,I)
573 FEXT(1,N1) = FEXT(1,N1)+PBLAST%PBLAST_TAB(IL)%FX(I)
574 FEXT(2,N1) = FEXT(2,N1)+PBLAST%PBLAST_TAB(IL)%FY(I)
575 FEXT(3,N1) = FEXT(3,N1)+PBLAST%PBLAST_TAB(IL)%FZ(I)
576 FEXT(1,N2) = FEXT(1,N2)+PBLAST%PBLAST_TAB(IL)%FX(I)
577 FEXT(2,N2) = FEXT(2,N2)+PBLAST%PBLAST_TAB(IL)%FY(I)
578 FEXT(3,N2) = FEXT(3,N2)+PBLAST%PBLAST_TAB(IL)%FZ(I)
579 FEXT(1,N3) = FEXT(1,N3)+PBLAST%PBLAST_TAB(IL)%FX(I)
580 FEXT(2,N3) = FEXT(2,N3)+PBLAST%PBLAST_TAB(IL)%FY(I)
581 FEXT(3,N3) = FEXT(3,N3)+PBLAST%PBLAST_TAB(IL)%FZ(I)
582 IF(PBLAST%PBLAST_TAB(IL)%NPt(I)==FOUR)THEN
583 FEXT(1,N4) = FEXT(1,N4)+PBLAST%PBLAST_TAB(IL)%FX(I)
584 FEXT(2,N4) = FEXT(2,N4)+PBLAST%PBLAST_TAB(IL)%FY(I)
585 FEXT(3,N4) = FEXT(3,N4)+PBLAST%PBLAST_TAB(IL)%FZ(I)
589.OR..OR.
IF(TH_HAS_NODA_PEXT > 0 OUTPUT%DATA%ANIM_HAS_NODA_PEXT > 0 OUTPUT%DATA%H3D_HAS_NODA_PEXT > 0) THEN
591 N1 = PBLAST%PBLAST_TAB(IL)%N(1,I)
592 N2 = PBLAST%PBLAST_TAB(IL)%N(2,I)
593 N3 = PBLAST%PBLAST_TAB(IL)%N(3,I)
594 N4 = PBLAST%PBLAST_TAB(IL)%N(4,I)
595 SURF_PATCH = PBLAST%PBLAST_TAB(IL)%SURF_PATCH(I)
596 NODA_SURF(N1) = NODA_SURF(N1) + SURF_PATCH
597 NODA_SURF(N2) = NODA_SURF(N2) + SURF_PATCH
598 NODA_SURF(N3) = NODA_SURF(N3) + SURF_PATCH
599 P = PBLAST%PBLAST_TAB(IL)%PRES(I) * SURF_PATCH
600 NODA_PEXT(N1) = NODA_PEXT(N1) + P
601 NODA_PEXT(N2) = NODA_PEXT(N2) + P
602 NODA_PEXT(N3) = NODA_PEXT(N3) + P
603 IF(PBLAST%PBLAST_TAB(IL)%NPT(I) == FOUR)THEN
604 NODA_SURF(N4) = NODA_SURF(N4) + SURF_PATCH
605 NODA_PEXT(N4) = NODA_PEXT(N4) + P
615 WRITE(IOUT,*)' ** ERROR IN MEMORY ALLOCATION - PBLAST LOADING'
616 WRITE(ISTDO,*)' ** ERROR IN MEMORY ALLOCATION - PBLAST LOADING'