195 INTEGER,
ALLOCATABLE,
DIMENSION(:) ::
icha 275 LOGICAL ::
trace=.false.
285 LOGICAL ::
init=.true.
308 IF(
ALLOCATED(
icha))
DEALLOCATE(
icha)
336 INTEGER,
INTENT(IN) :: NPARAM,NOMB
337 INTEGER,
INTENT(INOUT) :: NCHDIM,LAST_NCHDIM
354 IF(last_nchdim.EQ.0)
THEN 362 ELSEIF(nchdim.GT.last_nchdim)
THEN 386 INTEGER,
INTENT(IN) :: NPARAM,NOMB
387 INTEGER,
INTENT(INOUT) :: NCHDIM,LAST_NCHDIM
398 IF (.NOT.
ALLOCATED(
icha))
ALLOCATE(
icha(isize))
408 IF(last_nchdim.EQ.0)
THEN 416 ELSEIF(nchdim.GT.last_nchdim)
THEN 443 INTEGER,
INTENT(IN) :: NPARAM
476 INTEGER,
INTENT(IN) :: NPARAM,NOMB
505 & ISP,NSP,XP,YP,ZP,FP,DX,DY,DZ,DF,
506 & IFAPAR,NCHDIM,NCHARA)
509 INTEGER,
INTENT(IN) :: MYPID,IOR,MYII,IFACE,KNE,IFR
510 INTEGER,
INTENT(IN) :: ISP,NSP,NCHDIM
511 INTEGER,
INTENT(IN) :: IFAPAR(6,*)
512 INTEGER,
INTENT(INOUT) :: NCHARA
513 DOUBLE PRECISION,
INTENT(IN) :: XP,YP,ZP,FP,DX,DY,DZ,DF
517 nepid=ifapar(iface ,myii)
518 ii =ifapar(iface+3,myii)
520 IF(nchara.GT.nchdim)
THEN 522 WRITE (
lu,*)
'MODULE STREAMLINE:' 523 WRITE (
lu,*)
'NCHARA=',nchara,
' NCHDIM=',nchdim
524 WRITE (
lu,*)
'COLLECT_CHAR::NCHARA>NCHDIM, INCREASE' 525 WRITE (
lu,*)
'SECURITY COEFFICIENT FOR SCARACT' 526 WRITE (
lu,*)
'MYPID=',mypid
557 SUBROUTINE collect_alg(MYPID,NEPID,INE,KNE,ISP,NSP,
558 & IFR,XP,YP,ZP,FP,DX,DY,DZ,DF,
562 INTEGER,
INTENT(IN) :: MYPID,NEPID,INE(*),KNE(*)
563 INTEGER,
INTENT(IN) :: ISP,NSP,IFR,NCHARA,NCHDIM
564 DOUBLE PRECISION,
INTENT(IN) :: XP(*),YP(*),ZP(*),FP(*)
565 DOUBLE PRECISION,
INTENT(IN) :: DX(*),DY(*),DZ(*),DF(*)
568 IF(nchara.GT.nchdim)
THEN 570 WRITE (
lu,*)
'MODULE STREAMLINE:' 571 WRITE (
lu,*)
'NCHARA=',nchara,
' NCHDIM=',nchdim
572 WRITE (
lu,*)
'COLLECT_ALG::NCHARA>NCHDIM, INCREASE' 573 WRITE (
lu,*)
'SECURITY COEFFICIENT FOR SCARACT' 574 WRITE (
lu,*)
'MYPID=',mypid
633 INTEGER,
INTENT(OUT) :: NSEND,NLOSTCHAR,NLOSTAGAIN,NARRV
655 INTEGER,
INTENT(IN) :: NSEND
656 INTEGER,
INTENT(OUT) :: NLOSTCHAR
657 INTEGER,
INTENT(INOUT) :: NCHARA
692 INTEGER,
INTENT(IN) :: NSEND
693 INTEGER,
INTENT(OUT) :: NLOSTCHAR
694 INTEGER,
INTENT(INOUT) :: NCHARA
697 IF(nchara.EQ.0)
RETURN 725 INTEGER,
INTENT(IN) :: NSEND
726 INTEGER,
INTENT(OUT) :: NLOSTCHAR
727 INTEGER,
INTENT(INOUT) :: NCHARA
730 IF(nchara.EQ.0)
RETURN 763 SUBROUTINE heap_found(NLOSTAGAIN,NARRV,NCHARA)
766 INTEGER,
INTENT(OUT) :: NLOSTAGAIN
767 INTEGER,
INTENT(IN) :: NARRV
768 INTEGER,
INTENT(INOUT) :: NCHARA
778 WRITE(
lu,*)
'MODULE STREAMLINE:' 779 WRITE(
lu,*)
'NOT ENOUGH MEMORY ALLOCATION, INCREASE' 780 WRITE(
lu,*)
'SECURITY COEFFICIENT FOR SCARACT' 806 INTEGER,
INTENT(IN) :: NARRV
807 INTEGER,
INTENT(OUT) :: NSEND
836 INTEGER,
INTENT(INOUT) :: NCHARA
879 &
'STREAMLINE::GLOB_CHAR_COMM::MPI_ALLTOALL ERROR: ',ier
893 &
'STREAMLINE::GLOB_CHAR_COMM::MPI_ALLTOALLV ERROR: ',ier
920 &
' @STREAMLINE::GLOB_CHAR_COMM::MPI_ALLTOALL ERROR: ',ier
935 &
' @STREAMLINE::GLOB_ALG_COMM::MPI_ALLTOALLV ERROR: ',ier
957 &
' @STREAMLINE::GLOB_CHAR_COMM::MPI_ALLTOALL ERROR: ',ier
971 &
' @STREAMLINE::GLOB_CHAR_COMM::MPI_ALLTOALLV ERROR: ',ier
991 & (val,n,ikle,elt,eta,fre,shp,shz,shf,nelem,npoin2,
992 & nplan,nrange,post,nomb,perio,ya4d)
995 INTEGER,
INTENT(IN) :: N,NELEM,NPOIN2,NPLAN,NRANGE,NOMB
996 INTEGER,
INTENT(IN) :: IKLE(nelem,3)
997 INTEGER,
INTENT(IN) :: ELT(nrange),ETA(nrange)
998 INTEGER,
INTENT(IN) :: FRE(nrange)
999 DOUBLE PRECISION,
INTENT(IN) :: SHP(3,nrange),SHZ(nrange)
1000 DOUBLE PRECISION,
INTENT(IN) :: SHF(*)
1001 DOUBLE PRECISION,
INTENT(IN) :: VAL(npoin2,nplan,*)
1002 LOGICAL,
INTENT(IN) :: POST,PERIO,YA4D
1003 INTEGER I,ETAP1,I1,I2,I3,IFR
1004 DOUBLE PRECISION UMSHZ,UMSHF
1022 & ((val(i1,eta(i),ifr ) * shp(1,i)
1023 & + val(i2,eta(i),ifr ) * shp(2,i)
1024 & + val(i3,eta(i),ifr ) * shp(3,i)) * umshz
1025 & +( val(i1,etap1 ,ifr ) * shp(1,i)
1026 & + val(i2,etap1 ,ifr ) * shp(2,i)
1027 & + val(i3,etap1 ,ifr ) * shp(3,i)) * shz(i) )
1029 & ((val(i1,eta(i),ifr+1) * shp(1,i)
1030 & + val(i2,eta(i),ifr+1) * shp(2,i)
1031 & + val(i3,eta(i),ifr+1) * shp(3,i)) * umshz
1032 & +( val(i1,etap1 ,ifr+1) * shp(1,i)
1033 & + val(i2,etap1 ,ifr+1) * shp(2,i)
1034 & + val(i3,etap1 ,ifr+1) * shp(3,i)) * shz(i) )
1036 ELSEIF(
recvchar(i)%NEPID.LT.-1)
THEN 1037 WRITE(
lu,*)
'STREAMLINE INTERP_RECVCHAR_11' 1038 WRITE(
lu,*)
'NEPID OUT OF RANGE:',
recvchar(i)%NEPID
1039 WRITE(
lu,*)
'FOR I=',i
1050 & (val(ikle(elt(i),1),eta(i),1)*shp(1,i)
1051 & +val(ikle(elt(i),2),eta(i),1)*shp(2,i)
1052 & +val(ikle(elt(i),3),eta(i),1)*shp(3,i))*(1.d0-shz(i))
1053 & +(val(ikle(elt(i),1),etap1 ,1)*shp(1,i)
1054 & +val(ikle(elt(i),2),etap1 ,1)*shp(2,i)
1055 & +val(ikle(elt(i),3),etap1 ,1)*shp(3,i))*shz(i)
1057 ELSEIF(
recvchar(i)%NEPID.LT.-1)
THEN 1058 WRITE(
lu,*)
'STREAMLINE INTERP_RECVCHAR_11' 1059 WRITE(
lu,*)
'NEPID OUT OF RANGE:',
recvchar(i)%NEPID
1060 WRITE(
lu,*)
'FOR I=',i
1073 & ( val(ikle(elt(i),1),eta(i),1) *shp(1,i)
1074 & + val(ikle(elt(i),2),eta(i),1) *shp(2,i)
1075 & + val(ikle(elt(i),3),eta(i),1) *shp(3,i))*(1.d0-shz(i))
1076 & +( val(ikle(elt(i),1),eta(i)+1,1)*shp(1,i)
1077 & + val(ikle(elt(i),2),eta(i)+1,1)*shp(2,i)
1078 & + val(ikle(elt(i),3),eta(i)+1,1)*shp(3,i))*shz(i)
1080 ELSEIF(
recvchar(i)%NEPID.LT.-1)
THEN 1081 WRITE(
lu,*)
'STREAMLINE INTERP_RECVCHAR_11' 1082 WRITE(
lu,*)
'NEPID OUT OF RANGE:',
recvchar(i)%NEPID
1083 WRITE(
lu,*)
'FOR I=',i
1133 & (val,n,ikle,elt,shp,nelem,npoin,nrange,ielm,post,nomb)
1137 INTEGER,
INTENT(IN) :: N,NELEM,NPOIN,NRANGE,IELM,NOMB
1138 INTEGER,
INTENT(IN) :: IKLE(nelem,*)
1139 INTEGER,
INTENT(IN) :: ELT(nrange)
1140 DOUBLE PRECISION,
INTENT(IN) :: SHP(3,nrange)
1141 DOUBLE PRECISION,
INTENT(IN) :: VAL(npoin)
1142 LOGICAL,
INTENT(IN) :: POST
1144 DOUBLE PRECISION SHP11,SHP12,SHP14
1145 DOUBLE PRECISION SHP22,SHP23,SHP24
1146 DOUBLE PRECISION SHP33,SHP31,SHP34
1149 DOUBLE PRECISION,
PARAMETER :: EPSILO = 1.d-6
1157 & val(ikle(elt(i),1)) * shp(1,i)
1158 & + val(ikle(elt(i),2)) * shp(2,i)
1159 & + val(ikle(elt(i),3)) * shp(3,i)
1161 ELSEIF(
recvchar(i)%NEPID.LT.-1)
THEN 1162 WRITE(
lu,*)
'STREAMLINE INTERP_RECVCHAR_11' 1163 WRITE(
lu,*)
'NEPID OUT OF RANGE:',
recvchar(i)%NEPID
1164 WRITE(
lu,*)
'FOR I=',i
1170 ELSEIF(ielm.EQ.12)
THEN 1173 shp11=shp(1,i)-shp(3,i)
1174 shp12=shp(2,i)-shp(3,i)
1176 shp22=shp(2,i)-shp(1,i)
1177 shp23=shp(3,i)-shp(1,i)
1179 shp33=shp(3,i)-shp(2,i)
1180 shp31=shp(1,i)-shp(2,i)
1183 IF( shp11.GT. -2.d0*epsilo .AND.
1184 & shp11.LT.1.d0+4.d0*epsilo .AND.
1185 & shp12.GT. -2.d0*epsilo .AND.
1186 & shp12.LT.1.d0+4.d0*epsilo .AND.
1187 & shp14.LT.1.d0+4.d0*epsilo )
THEN 1189 & val(ikle(elt(i),1)) * shp11
1190 & + val(ikle(elt(i),2)) * shp12
1191 & + val(ikle(elt(i),4)) * shp14
1192 ELSEIF( shp22.GT. -2.d0*epsilo .AND.
1193 & shp22.LT.1.d0+4.d0*epsilo .AND.
1194 & shp23.GT. -2.d0*epsilo .AND.
1195 & shp23.LT.1.d0+4.d0*epsilo .AND.
1196 & shp24.LT.1.d0+4.d0*epsilo )
THEN 1198 & val(ikle(elt(i),2)) * shp22
1199 & + val(ikle(elt(i),3)) * shp23
1200 & + val(ikle(elt(i),4)) * shp24
1201 ELSEIF( shp33.GT. -2.d0*epsilo .AND.
1202 & shp33.LT.1.d0+4.d0*epsilo .AND.
1203 & shp31.GT. -2.d0*epsilo .AND.
1204 & shp31.LT.1.d0+4.d0*epsilo .AND.
1205 & shp34.LT.1.d0+4.d0*epsilo )
THEN 1207 & val(ikle(elt(i),3)) * shp33
1208 & + val(ikle(elt(i),1)) * shp31
1209 & + val(ikle(elt(i),4)) * shp34
1211 WRITE(
lu,*)
'I=',i,
' NOT LOCATED, ELT=',elt(i)
1216 ELSEIF(
recvchar(i)%NEPID.LT.-1)
THEN 1217 WRITE(
lu,*)
'STREAMLINE INTERP_RECVCHAR_11' 1218 WRITE(
lu,*)
'NEPID OUT OF RANGE:',
recvchar(i)%NEPID
1219 WRITE(
lu,*)
'FOR I=',i
1225 ELSEIF(ielm.EQ.13)
THEN 1229 & val(ikle(elt(i),1)) * (2.d0*shp(1,i)-1.d0)* shp(1,i)
1230 & +val(ikle(elt(i),2)) * (2.d0*shp(2,i)-1.d0)* shp(2,i)
1231 & +val(ikle(elt(i),3)) * (2.d0*shp(3,i)-1.d0)* shp(3,i)
1232 & +val(ikle(elt(i),4)) * 4.d0 * shp(1,i)*shp(2,i)
1233 & +val(ikle(elt(i),5)) * 4.d0 * shp(2,i)*shp(3,i)
1234 & +val(ikle(elt(i),6)) * 4.d0 * shp(3,i)*shp(1,i)
1236 ELSEIF(
recvchar(i)%NEPID.LT.-1)
THEN 1237 WRITE(
lu,*)
'STREAMLINE INTERP_RECVCHAR_11' 1238 WRITE(
lu,*)
'NEPID OUT OF RANGE:',
recvchar(i)%NEPID
1239 WRITE(
lu,*)
'FOR I=',i
1246 WRITE(
lu,*)
'WRONG IELM IN INTERP_RECVCHAR_11:',ielm
1253 IF(ielm.EQ.11.OR.ielm.EQ.12.OR.ielm.EQ.13)
THEN 1263 WRITE(
lu,*)
'WRONG IELM IN INTERP_RECVCHAR_11:',ielm
1278 & SHP,SHZ,SHF,ELT,ETA,FRE,
1282 INTEGER,
INTENT(IN) :: NOMB,NARRV,IELM
1283 INTEGER,
INTENT(INOUT) :: ELT(*),ETA(*),FRE(*)
1284 DOUBLE PRECISION,
INTENT(INOUT) :: SHP(3,*),SHZ(*)
1285 DOUBLE PRECISION,
INTENT(INOUT) :: SHF(*)
1287 LOGICAL,
INTENT(IN) :: POST,YA4D
1288 TYPE(bief_obj),
INTENT(INOUT) :: VAL
1289 INTEGER I,N,IPOIN,MAXDIM
1291 WRITE(lu,*)
'STREAMLINE::INTRODUCE_RECVCHAR' 1292 WRITE(lu,*)
'NOMB>MAX_BASKET_SIZE' 1309 ELSEIF(ielm.EQ.41)
THEN 1334 WRITE(lu,*)
'STREAMLINE::INTRODUCE_RECVCHAR' 1335 WRITE(lu,*)
'UNEXPECTED IELM=',ielm
1344 IF(val%TYPE.EQ.2)
THEN 1348 ELSEIF(val%TYPE.EQ.4)
THEN 1350 maxdim=val%ADR(1)%P%DIM1
1353 maxdim=max(maxdim,val%ADR(n)%P%DIM1)
1357 IF(maxdim.GT.val%ADR(n)%P%DIM1)
THEN 1363 IF(
recvchar(i)%IOR.LE.val%ADR(n)%P%DIM1)
THEN 1377 WRITE(lu,*)
'STREAMLINE::INTRODUCE_RECVCHAR' 1378 WRITE(lu,*)
'UNEXPECTED VAL%TYPE=',val%TYPE
1397 &( u , v , w , dt , nrk , x , y , zstar , z , ikle2 , ibor ,
1398 & xplot , yplot , zplot , dx , dy , dz , shp , shz , elt , eta ,
1399 & nplot , npoin2 , nelem2 ,nelmax2, nplan , surdet ,
1400 & sens , ifapar,
nchdim,nchara,add,sigma)
1480 INTEGER ,
INTENT(IN) :: SENS,NPLAN,NCHDIM,NELMAX2
1481 INTEGER ,
INTENT(IN) :: NPOIN2,NELEM2,NPLOT,NRK
1482 INTEGER ,
INTENT(IN) :: IKLE2(nelmax2,3)
1483 INTEGER ,
INTENT(INOUT) :: ELT(nplot),NCHARA
1484 DOUBLE PRECISION,
INTENT(IN) :: U(npoin2,nplan),V(npoin2,nplan)
1485 DOUBLE PRECISION,
INTENT(IN) :: W(npoin2,nplan),SURDET(nelem2)
1486 DOUBLE PRECISION,
INTENT(INOUT) :: XPLOT(nplot),YPLOT(nplot)
1487 DOUBLE PRECISION,
INTENT(INOUT) :: ZPLOT(nplot)
1488 DOUBLE PRECISION,
INTENT(INOUT) :: SHP(3,nplot),SHZ(nplot)
1489 DOUBLE PRECISION,
INTENT(IN) :: X(npoin2),Y(npoin2),DT
1490 DOUBLE PRECISION,
INTENT(IN) :: Z(npoin2,nplan),ZSTAR(nplan)
1491 DOUBLE PRECISION,
INTENT(INOUT) :: DX(nplot),DY(nplot)
1492 DOUBLE PRECISION,
INTENT(INOUT) :: DZ(nplot)
1493 INTEGER ,
INTENT(IN) :: IBOR(nelmax2,5,nplan-1)
1494 INTEGER ,
INTENT(INOUT) :: ETA(nplot)
1495 INTEGER ,
INTENT(IN) :: IFAPAR(6,*)
1496 LOGICAL,
INTENT(IN) :: ADD,SIGMA
1500 INTEGER IELE,ISO,ISPDONE,NSP
1501 INTEGER :: IPLOT,ISP,I1,I2,I3,IEL,IET,IET2,ISOH,ISOV,IFA,ISUI(3)
1503 DOUBLE PRECISION PAS,A1,DX1,DY1,DXP,DYP,XP,YP,ZP,NUM,DENOM
1504 DOUBLE PRECISION DELTAZ,PAS2,ZUP,ZDOWN,ZZ
1506 INTRINSIC abs , int , max , sqrt
1508 parameter( isui = (/ 2 , 3 , 1 /) )
1509 DOUBLE PRECISION,
PARAMETER :: EPSILO = -1.d-6
1510 DOUBLE PRECISION,
PARAMETER :: EPSDZ = 1.d-4
1516 DO iplot = 1 , nplot
1538 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
1539 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
1540 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
1541 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
1542 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
1543 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
1545 shz(iplot) = (zp-zstar(iet)) / (zstar(iet+1)-zstar(iet))
1547 zdown=shp(1,iplot)*z(i1,iet)
1548 & +shp(2,iplot)*z(i2,iet)
1549 & +shp(3,iplot)*z(i3,iet)
1550 zup =shp(1,iplot)*z(i1,iet+1)
1551 & +shp(2,iplot)*z(i2,iet+1)
1552 & +shp(3,iplot)*z(i3,iet+1)
1553 shz(iplot) = (zp-zdown) / max(zup-zdown,epsdz)
1577 dxp =( u(i1,iet )*shp(1,iplot)
1578 & + u(i2,iet )*shp(2,iplot)
1579 & + u(i3,iet )*shp(3,iplot) )*(1.d0-shz(iplot))
1580 & +( u(i1,iet+1)*shp(1,iplot)
1581 & + u(i2,iet+1)*shp(2,iplot)
1582 & + u(i3,iet+1)*shp(3,iplot) )*shz(iplot)
1583 dyp =( v(i1,iet )*shp(1,iplot)
1584 & + v(i2,iet )*shp(2,iplot)
1585 & + v(i3,iet )*shp(3,iplot) )*(1.d0-shz(iplot))
1586 & +( v(i1,iet+1)*shp(1,iplot)
1587 & + v(i2,iet+1)*shp(2,iplot)
1588 & + v(i3,iet+1)*shp(3,iplot) )*shz(iplot)
1590 nsp=max(1,int(nrk*dt*sqrt((dxp**2+dyp**2)*surdet(iel))))
1595 pas = sens * dt / nsp
1603 DO isp = ispdone,nsp
1615 IF(isp.EQ.ispdone)
GO TO 50
1616 IF(
recvchar(iplot)%NEPID.NE.-1) cycle
1625 dx(iplot) = ((u(i1,iet )*shp(1,iplot)
1626 & + u(i2,iet )*shp(2,iplot)
1627 & + u(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
1628 & +(u(i1,iet+1)*shp(1,iplot)
1629 & + u(i2,iet+1)*shp(2,iplot)
1630 & + u(i3,iet+1)*shp(3,iplot))*shz(iplot) ) * pas
1632 dy(iplot) = ((v(i1,iet )*shp(1,iplot)
1633 & + v(i2,iet )*shp(2,iplot)
1634 & + v(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
1635 & +(v(i1,iet+1)*shp(1,iplot)
1636 & + v(i2,iet+1)*shp(2,iplot)
1637 & + v(i3,iet+1)*shp(3,iplot))*shz(iplot) ) * pas
1640 deltaz = (z(i1,iet+1)-z(i1,iet))*shp(1,iplot)
1641 & + (z(i2,iet+1)-z(i2,iet))*shp(2,iplot)
1642 & + (z(i3,iet+1)-z(i3,iet))*shp(3,iplot)
1644 IF(deltaz.GT.epsdz)
THEN 1647 dz(iplot) = ((w(i1,iet )*shp(1,iplot)
1648 & + w(i2,iet )*shp(2,iplot)
1649 & + w(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
1650 & +(w(i1,iet+1)*shp(1,iplot)
1651 & + w(i2,iet+1)*shp(2,iplot)
1652 & + w(i3,iet+1)*shp(3,iplot))*shz(iplot) )
1653 & * pas * (zstar(iet+1)-zstar(iet)) / deltaz
1658 dz(iplot) = ((w(i1,iet )*shp(1,iplot)
1659 & + w(i2,iet )*shp(2,iplot)
1660 & + w(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
1661 & +(w(i1,iet+1)*shp(1,iplot)
1662 & + w(i2,iet+1)*shp(2,iplot)
1663 & + w(i3,iet+1)*shp(3,iplot))*shz(iplot) ) * pas
1666 xp = xplot(iplot) + dx(iplot)
1667 yp = yplot(iplot) + dy(iplot)
1668 zp = zplot(iplot) + dz(iplot)
1670 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
1671 & -(y(i3)-y(i2))*(xp-x(i2))) * surdet(iel)
1672 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
1673 & -(y(i1)-y(i3))*(xp-x(i3))) * surdet(iel)
1674 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
1675 & -(y(i2)-y(i1))*(xp-x(i1))) * surdet(iel)
1677 shz(iplot) = (zp-zstar(iet)) / (zstar(iet+1)-zstar(iet))
1679 zdown=shp(1,iplot)*z(i1,iet)
1680 & +shp(2,iplot)*z(i2,iet)
1681 & +shp(3,iplot)*z(i3,iet)
1682 zup =shp(1,iplot)*z(i1,iet+1)
1683 & +shp(2,iplot)*z(i2,iet+1)
1684 & +shp(3,iplot)*z(i3,iet+1)
1685 shz(iplot) = (zp-zdown) / max(zup-zdown,epsdz)
1712 IF(shp(1,iplot).LT.epsilo) iso=ibset(iso,2)
1713 IF(shp(2,iplot).LT.epsilo) iso=ibset(iso,3)
1714 IF(shp(3,iplot).LT.epsilo) iso=ibset(iso,4)
1715 IF(shz(iplot) .LT.epsilo) iso=ibset(iso,0)
1716 IF(shz(iplot) .GT.1.d0-epsilo) iso=ibset(iso,1)
1736 ELSEIF(isoh.EQ.8)
THEN 1738 ELSEIF(isoh.EQ.16)
THEN 1740 ELSEIF(isoh.EQ.12)
THEN 1742 IF(dx(iplot)*(y(ikle2(iel,3))-yp).LT.
1743 & dy(iplot)*(x(ikle2(iel,3))-xp)) ifa = 3
1744 ELSEIF(isoh.EQ.24)
THEN 1746 IF(dx(iplot)*(y(ikle2(iel,1))-yp).LT.
1747 & dy(iplot)*(x(ikle2(iel,1))-xp)) ifa = 1
1750 IF(dx(iplot)*(y(ikle2(iel,2))-yp).LT.
1751 & dy(iplot)*(x(ikle2(iel,2))-xp)) ifa = 2
1756 IF(abs(dz(iplot)).GT.epsdz)
THEN 1758 a1 = (zp-zstar(iet+isov-1)) / dz(iplot)
1763 i2 = ikle2(iel,isui(ifa))
1767 IF ((x(i2)-x(i1))*(yp-a1*dy(iplot)-y(i1)).GT.
1768 & (y(i2)-y(i1))*(xp-a1*dx(iplot)-x(i1))) ifa=isov+3
1770 denom=-(x(i2)-x(i1))*dy(iplot)+(y(i2)-y(i1))*dx(iplot)
1772 IF(abs(denom).GT.1.d-10)
THEN 1773 num=-(xp-x(i1))*dy(iplot)+(yp-y(i1))*dx(iplot)
1778 zdown= a1 *z(i2,iet)
1779 & +(1.d0-a1)*z(i1,iet)
1780 zup = a1 *z(i2,iet+1)
1781 & +(1.d0-a1)*z(i1,iet+1)
1783 zz = zp-(1.d0-a1)*dz(iplot)
1785 IF(zz.GT.zup.OR.zz.LT.zdown) ifa=isov+3
1795 iel = ibor(iel,ifa,iet)
1813 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
1814 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
1815 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
1816 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
1817 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
1818 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
1832 & (ipid,iplot,elt(iplot),ifa,eta(iplot),0,isp,
1833 & nsp,xplot(iplot),yplot(iplot),
1834 & zplot(iplot),0.d0,
1835 & dx(iplot),dy(iplot),dz(iplot),0.d0,
1836 & ifapar,nchdim,nchara)
1840 recvchar(iplot)%NEPID=ifapar(ifa,elt(iplot))
1841 recvchar(iplot)%INE=ifapar(ifa+3,elt(iplot))
1854 i1 = ikle2(elt(iplot),ifa)
1855 i2 = ikle2(elt(iplot),isui(ifa))
1866 a1 = (dxp*dx1+dyp*dy1) / (dx1**2+dy1**2)
1867 dx(iplot) = a1 * dx1
1868 dy(iplot) = a1 * dy1
1870 a1=((xp-x(i1))*dx1+(yp-y(i1))*dy1)/(dx1**2+dy1**2)
1871 shp( ifa ,iplot) = 1.d0 - a1
1872 shp( isui(ifa) ,iplot) = a1
1873 shp(isui(isui(ifa)),iplot) = 0.d0
1874 xplot(iplot) = x(i1) + a1 * dx1
1875 yplot(iplot) = y(i1) + a1 * dy1
1887 ELSEIF(iel.EQ.0)
THEN 1893 denom = dxp*dy1-dyp*dx1
1894 IF(abs(denom).GT.1.d-12)
THEN 1895 a1 = (dxp*(yp-y(i1))-dyp*(xp-x(i1))) / denom
1899 IF(a1.GT.1.d0) a1 = 1.d0
1900 IF(a1.LT.0.d0) a1 = 0.d0
1901 shp( ifa ,iplot) = 1.d0 - a1
1902 shp( isui(ifa) ,iplot) = a1
1903 shp(isui(isui(ifa)),iplot) = 0.d0
1904 xplot(iplot) = x(i1) + a1 * dx1
1905 yplot(iplot) = y(i1) + a1 * dy1
1906 IF(abs(dxp).GT.abs(dyp))
THEN 1907 a1 = (xp-xplot(iplot))/dxp
1909 a1 = (yp-yplot(iplot))/dyp
1911 zplot(iplot) = zp - a1*dz(iplot)
1913 shz(iplot) = (zplot(iplot)-zstar(iet))
1914 & / (zstar(iet+1)-zstar(iet))
1916 shz(iplot) = (zp-zdown) / max(zup-zdown,epsdz)
1920 elt(iplot) = - sens * elt(iplot)
1926 WRITE(lu,*)
'UNEXPECTED CASE IN SCHAR41' 1927 WRITE(lu,*)
'IEL=',iel
1950 eta(iplot) = iet + ifa + ifa - 1
1952 shz(iplot) = (zp-zstar(eta(iplot)))
1953 & / (zstar(eta(iplot)+1)-zstar(eta(iplot)))
1955 zdown=shp(1,iplot)*z(i1,eta(iplot))
1956 & +shp(2,iplot)*z(i2,eta(iplot))
1957 & +shp(3,iplot)*z(i3,eta(iplot))
1958 zup =shp(1,iplot)*z(i1,eta(iplot)+1)
1959 & +shp(2,iplot)*z(i2,eta(iplot)+1)
1960 & +shp(3,iplot)*z(i3,eta(iplot)+1)
1961 shz(iplot) = (zp-zdown) / max(zup-zdown,epsdz)
1970 IF(shz(iplot).LT. epsilo) iso=ibset(iso,0)
1971 IF(shz(iplot).GT.1.d0-epsilo) iso=ibset(iso,1)
1987 zplot(iplot) = zstar(iet+ifa)
1989 zplot(iplot) = shp(1,iplot)*z(i1,iet+ifa)
1990 & +shp(2,iplot)*z(i2,iet+ifa)
1991 & +shp(3,iplot)*z(i3,iet+ifa)
1996 IF(isoh.NE.0)
GOTO 50
2008 IF(abs(dz(iplot)).GT.epsdz)
THEN 2009 a1 = (zp-zstar(iet+ifa)) / dz(iplot)
2013 xp = xp - a1*dx(iplot)
2014 yp = yp - a1*dy(iplot)
2017 WRITE(lu,*)
'SORTIE EN VERTICALE PAR FRONTIERE LIQUIDE' 2018 WRITE(lu,*)
'CAS NON PROGRAMME' 2027 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
2028 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iele)
2029 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
2030 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iele)
2031 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
2032 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iele)
2052 iet = iet + ifa + ifa - 1
2056 dx(iplot) = ( u(i1,iet2)*shp(1,iplot)
2057 & + u(i2,iet2)*shp(2,iplot)
2058 & + u(i3,iet2)*shp(3,iplot) ) * pas2
2060 dy(iplot) = ( v(i1,iet2)*shp(1,iplot)
2061 & + v(i2,iet2)*shp(2,iplot)
2062 & + v(i3,iet2)*shp(3,iplot) ) * pas2
2065 deltaz = (z(i1,iet+1)-z(i1,iet))*shp(1,iplot)
2066 & + (z(i2,iet+1)-z(i2,iet))*shp(2,iplot)
2067 & + (z(i3,iet+1)-z(i3,iet))*shp(3,iplot)
2069 IF(deltaz.GT.epsdz)
THEN 2070 dz(iplot) = ( w(i1,iet2)*shp(1,iplot)
2071 & + w(i2,iet2)*shp(2,iplot)
2072 & + w(i3,iet2)*shp(3,iplot) ) * pas2
2073 & * (zstar(iet+1)-zstar(iet)) / deltaz
2078 dz(iplot)=((w(i1,iet )*shp(1,iplot)
2079 & + w(i2,iet )*shp(2,iplot)
2080 & + w(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
2081 & +(w(i1,iet+1)*shp(1,iplot)
2082 & + w(i2,iet+1)*shp(2,iplot)
2083 & + w(i3,iet+1)*shp(3,iplot))*shz(iplot) )*pas
2090 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
2091 & -(y(i3)-y(i2))*(xp-x(i2))) * surdet(iele)
2092 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
2093 & -(y(i1)-y(i3))*(xp-x(i3))) * surdet(iele)
2094 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
2095 & -(y(i2)-y(i1))*(xp-x(i1))) * surdet(iele)
2097 shz(iplot)=(zp-zstar(iet))/(zstar(iet+1)-zstar(iet))
2099 zdown=shp(1,iplot)*z(i1,iet)
2100 & +shp(2,iplot)*z(i2,iet)
2101 & +shp(3,iplot)*z(i3,iet)
2102 zup =shp(1,iplot)*z(i1,iet+1)
2103 & +shp(2,iplot)*z(i2,iet+1)
2104 & +shp(3,iplot)*z(i3,iet+1)
2105 shz(iplot) = (zp-zdown) / max(zup-zdown,epsdz)
2115 IF(shp(1,iplot).LT.epsilo) iso=ibset(iso,2)
2116 IF(shp(2,iplot).LT.epsilo) iso=ibset(iso,3)
2117 IF(shp(3,iplot).LT.epsilo) iso=ibset(iso,4)
2119 IF(shz(iplot).LT. epsilo) iso=ibset(iso,0)
2120 IF(shz(iplot).GT.1.d0-epsilo) iso=ibset(iso,1)
2141 elt(iplot) = - sens * elt(iplot)
2164 &( u , v , w , dt , nrk , x , y , zstar , z , ikle2 , ibor ,
2165 & xplot , yplot , zplot , dx , dy , dz , shp , shz , elt , eta ,
2166 & nplot , npoin2 , nelem2 , nelmax2,nplan , surdet ,
2167 & sens , ifapar,
nchdim,nchara,add,sigma,viscvi,stocha)
2224 INTEGER ,
INTENT(IN) :: SENS,NPLAN,NCHDIM,STOCHA
2225 INTEGER ,
INTENT(IN) :: NPOIN2,NELEM2,NPLOT,NRK,NELMAX2
2226 INTEGER ,
INTENT(IN) :: IKLE2(nelmax2,3)
2227 INTEGER ,
INTENT(INOUT) :: ELT(nplot),NCHARA
2228 DOUBLE PRECISION,
INTENT(IN) :: U(npoin2,nplan),V(npoin2,nplan)
2229 DOUBLE PRECISION,
INTENT(IN) :: W(npoin2,nplan),SURDET(nelem2)
2230 DOUBLE PRECISION,
INTENT(INOUT) :: XPLOT(nplot),YPLOT(nplot)
2231 DOUBLE PRECISION,
INTENT(INOUT) :: ZPLOT(nplot)
2232 DOUBLE PRECISION,
INTENT(INOUT) :: SHP(3,nplot),SHZ(nplot)
2233 DOUBLE PRECISION,
INTENT(IN) :: X(npoin2),Y(npoin2),DT
2234 DOUBLE PRECISION,
INTENT(IN) :: Z(npoin2,nplan),ZSTAR(nplan)
2235 DOUBLE PRECISION,
INTENT(INOUT) :: DX(nplot),DY(nplot)
2236 DOUBLE PRECISION,
INTENT(INOUT) :: DZ(nplot)
2237 INTEGER ,
INTENT(IN) :: IBOR(nelmax2,5,nplan-1)
2238 INTEGER ,
INTENT(INOUT) :: ETA(nplot)
2239 INTEGER ,
INTENT(IN) :: IFAPAR(6,*)
2240 LOGICAL,
INTENT(IN) :: ADD,SIGMA
2241 type(bief_obj),
INTENT(INOUT) :: viscvi
2245 INTEGER IELE,ISO,ISPDONE,NSP
2246 INTEGER :: IPLOT,ISP,I1,I2,I3,IEL,IET,IET2,ISOH,ISOV,IFA,ISUI(3)
2248 DOUBLE PRECISION PAS,A1,DX1,DY1,DXP,DYP,XP,YP,ZP,NUM,DENOM
2249 DOUBLE PRECISION DELTAZ,PAS2,ZUP,ZDOWN,ZZ
2251 INTRINSIC abs , int , max , sqrt
2254 DOUBLE PRECISION RAND1,RAND2,A,B,C,D,E,DIFF_X,DIFF_Y,DEUXPI
2256 parameter( isui = (/ 2 , 3 , 1 /) )
2257 DOUBLE PRECISION,
PARAMETER :: EPSILO = -1.d-6
2258 DOUBLE PRECISION,
PARAMETER :: EPSDZ = 1.d-4
2264 DO iplot = 1 , nplot
2286 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
2287 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
2288 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
2289 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
2290 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
2291 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
2293 shz(iplot) = (zp-zstar(iet)) / (zstar(iet+1)-zstar(iet))
2295 zdown=shp(1,iplot)*z(i1,iet)
2296 & +shp(2,iplot)*z(i2,iet)
2297 & +shp(3,iplot)*z(i3,iet)
2298 zup =shp(1,iplot)*z(i1,iet+1)
2299 & +shp(2,iplot)*z(i2,iet+1)
2300 & +shp(3,iplot)*z(i3,iet+1)
2301 shz(iplot) = (zp-zdown) / max(zup-zdown,epsdz)
2325 dxp =( u(i1,iet )*shp(1,iplot)
2326 & + u(i2,iet )*shp(2,iplot)
2327 & + u(i3,iet )*shp(3,iplot) )*(1.d0-shz(iplot))
2328 & +( u(i1,iet+1)*shp(1,iplot)
2329 & + u(i2,iet+1)*shp(2,iplot)
2330 & + u(i3,iet+1)*shp(3,iplot) )*shz(iplot)
2331 dyp =( v(i1,iet )*shp(1,iplot)
2332 & + v(i2,iet )*shp(2,iplot)
2333 & + v(i3,iet )*shp(3,iplot) )*(1.d0-shz(iplot))
2334 & +( v(i1,iet+1)*shp(1,iplot)
2335 & + v(i2,iet+1)*shp(2,iplot)
2336 & + v(i3,iet+1)*shp(3,iplot) )*shz(iplot)
2338 nsp=max(1,int(nrk*dt*sqrt((dxp**2+dyp**2)*surdet(iel))))
2343 pas = sens * dt / nsp
2351 DO isp = ispdone,nsp
2363 IF(isp.EQ.ispdone)
GO TO 50
2364 IF(
recvchar(iplot)%NEPID.NE.-1) cycle
2373 dx(iplot) = ((u(i1,iet )*shp(1,iplot)
2374 & + u(i2,iet )*shp(2,iplot)
2375 & + u(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
2376 & +(u(i1,iet+1)*shp(1,iplot)
2377 & + u(i2,iet+1)*shp(2,iplot)
2378 & + u(i3,iet+1)*shp(3,iplot))*shz(iplot) ) * pas
2380 dy(iplot) = ((v(i1,iet )*shp(1,iplot)
2381 & + v(i2,iet )*shp(2,iplot)
2382 & + v(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
2383 & +(v(i1,iet+1)*shp(1,iplot)
2384 & + v(i2,iet+1)*shp(2,iplot)
2385 & + v(i3,iet+1)*shp(3,iplot))*shz(iplot) ) * pas
2388 deltaz = (z(i1,iet+1)-z(i1,iet))*shp(1,iplot)
2389 & + (z(i2,iet+1)-z(i2,iet))*shp(2,iplot)
2390 & + (z(i3,iet+1)-z(i3,iet))*shp(3,iplot)
2392 IF(deltaz.GT.epsdz)
THEN 2395 dz(iplot) = ((w(i1,iet )*shp(1,iplot)
2396 & + w(i2,iet )*shp(2,iplot)
2397 & + w(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
2398 & +(w(i1,iet+1)*shp(1,iplot)
2399 & + w(i2,iet+1)*shp(2,iplot)
2400 & + w(i3,iet+1)*shp(3,iplot))*shz(iplot) )
2401 & * pas * (zstar(iet+1)-zstar(iet)) / deltaz
2406 dz(iplot) = ((w(i1,iet )*shp(1,iplot)
2407 & + w(i2,iet )*shp(2,iplot)
2408 & + w(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
2409 & +(w(i1,iet+1)*shp(1,iplot)
2410 & + w(i2,iet+1)*shp(2,iplot)
2411 & + w(i3,iet+1)*shp(3,iplot))*shz(iplot) ) * pas
2416 IF(stocha.EQ.1)
THEN 2418 a=max(viscvi%ADR(1)%P%R(i1)*shp(1,iplot)
2419 & +viscvi%ADR(1)%P%R(i2)*shp(2,iplot)
2420 & +viscvi%ADR(1)%P%R(i3)*shp(3,iplot),0.d0)
2421 b=max(viscvi%ADR(2)%P%R(i1)*shp(1,iplot)
2422 & +viscvi%ADR(2)%P%R(i2)*shp(2,iplot)
2423 & +viscvi%ADR(2)%P%R(i3)*shp(3,iplot),0.d0)
2425 deuxpi=2.d0*acos(-1.d0)
2426 CALL random_number(rand1)
2427 CALL random_number(rand2)
2428 c=sqrt(-2.d0*log(rand1))
2429 d=c*cos(deuxpi*rand2)
2430 e=c*sin(deuxpi*rand2)
2431 diff_x=d*sqrt(2.d0*a/0.72d0)
2432 diff_y=e*sqrt(2.d0*b/0.72d0)
2433 dx(iplot) = dx(iplot) + diff_x*sqrt(abs(pas))
2434 dy(iplot) = dy(iplot) + diff_y*sqrt(abs(pas))
2437 xp = xplot(iplot) + dx(iplot)
2438 yp = yplot(iplot) + dy(iplot)
2439 zp = zplot(iplot) + dz(iplot)
2441 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
2442 & -(y(i3)-y(i2))*(xp-x(i2))) * surdet(iel)
2443 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
2444 & -(y(i1)-y(i3))*(xp-x(i3))) * surdet(iel)
2445 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
2446 & -(y(i2)-y(i1))*(xp-x(i1))) * surdet(iel)
2448 shz(iplot) = (zp-zstar(iet)) / (zstar(iet+1)-zstar(iet))
2450 zdown=shp(1,iplot)*z(i1,iet)
2451 & +shp(2,iplot)*z(i2,iet)
2452 & +shp(3,iplot)*z(i3,iet)
2453 zup =shp(1,iplot)*z(i1,iet+1)
2454 & +shp(2,iplot)*z(i2,iet+1)
2455 & +shp(3,iplot)*z(i3,iet+1)
2456 shz(iplot) = (zp-zdown) / max(zup-zdown,epsdz)
2483 IF(shp(1,iplot).LT.epsilo) iso=ibset(iso,2)
2484 IF(shp(2,iplot).LT.epsilo) iso=ibset(iso,3)
2485 IF(shp(3,iplot).LT.epsilo) iso=ibset(iso,4)
2486 IF(shz(iplot) .LT.epsilo) iso=ibset(iso,0)
2487 IF(shz(iplot) .GT.1.d0-epsilo) iso=ibset(iso,1)
2507 ELSEIF(isoh.EQ.8)
THEN 2509 ELSEIF(isoh.EQ.16)
THEN 2511 ELSEIF(isoh.EQ.12)
THEN 2513 IF(dx(iplot)*(y(ikle2(iel,3))-yp).LT.
2514 & dy(iplot)*(x(ikle2(iel,3))-xp)) ifa = 3
2515 ELSEIF(isoh.EQ.24)
THEN 2517 IF(dx(iplot)*(y(ikle2(iel,1))-yp).LT.
2518 & dy(iplot)*(x(ikle2(iel,1))-xp)) ifa = 1
2521 IF(dx(iplot)*(y(ikle2(iel,2))-yp).LT.
2522 & dy(iplot)*(x(ikle2(iel,2))-xp)) ifa = 2
2527 IF(abs(dz(iplot)).GT.epsdz)
THEN 2529 a1 = (zp-zstar(iet+isov-1)) / dz(iplot)
2534 i2 = ikle2(iel,isui(ifa))
2538 IF ((x(i2)-x(i1))*(yp-a1*dy(iplot)-y(i1)).GT.
2539 & (y(i2)-y(i1))*(xp-a1*dx(iplot)-x(i1))) ifa=isov+3
2541 denom=-(x(i2)-x(i1))*dy(iplot)+(y(i2)-y(i1))*dx(iplot)
2543 IF(abs(denom).GT.1.d-10)
THEN 2544 num=-(xp-x(i1))*dy(iplot)+(yp-y(i1))*dx(iplot)
2549 zdown= a1 *z(i2,iet)
2550 & +(1.d0-a1)*z(i1,iet)
2551 zup = a1 *z(i2,iet+1)
2552 & +(1.d0-a1)*z(i1,iet+1)
2554 zz = zp-(1.d0-a1)*dz(iplot)
2556 IF(zz.GT.zup.OR.zz.LT.zdown) ifa=isov+3
2566 iel = ibor(iel,ifa,iet)
2584 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
2585 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
2586 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
2587 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
2588 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
2589 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
2603 & (ipid,iplot,elt(iplot),ifa,eta(iplot),0,isp,
2604 & nsp,xplot(iplot),yplot(iplot),
2605 & zplot(iplot),0.d0,
2606 & dx(iplot),dy(iplot),dz(iplot),0.d0,
2607 & ifapar,nchdim,nchara)
2611 recvchar(iplot)%NEPID=ifapar(ifa,elt(iplot))
2612 recvchar(iplot)%INE=ifapar(ifa+3,elt(iplot))
2625 i1 = ikle2(elt(iplot),ifa)
2626 i2 = ikle2(elt(iplot),isui(ifa))
2637 a1 = (dxp*dx1+dyp*dy1) / (dx1**2+dy1**2)
2638 dx(iplot) = a1 * dx1
2639 dy(iplot) = a1 * dy1
2641 a1=((xp-x(i1))*dx1+(yp-y(i1))*dy1)/(dx1**2+dy1**2)
2642 shp( ifa ,iplot) = 1.d0 - a1
2643 shp( isui(ifa) ,iplot) = a1
2644 shp(isui(isui(ifa)),iplot) = 0.d0
2645 xplot(iplot) = x(i1) + a1 * dx1
2646 yplot(iplot) = y(i1) + a1 * dy1
2658 ELSEIF(iel.EQ.0)
THEN 2664 denom = dxp*dy1-dyp*dx1
2665 IF(abs(denom).GT.1.d-12)
THEN 2666 a1 = (dxp*(yp-y(i1))-dyp*(xp-x(i1))) / denom
2670 IF(a1.GT.1.d0) a1 = 1.d0
2671 IF(a1.LT.0.d0) a1 = 0.d0
2672 shp( ifa ,iplot) = 1.d0 - a1
2673 shp( isui(ifa) ,iplot) = a1
2674 shp(isui(isui(ifa)),iplot) = 0.d0
2675 xplot(iplot) = x(i1) + a1 * dx1
2676 yplot(iplot) = y(i1) + a1 * dy1
2677 IF(abs(dxp).GT.abs(dyp))
THEN 2678 a1 = (xp-xplot(iplot))/dxp
2680 a1 = (yp-yplot(iplot))/dyp
2682 zplot(iplot) = zp - a1*dz(iplot)
2684 shz(iplot) = (zplot(iplot)-zstar(iet))
2685 & / (zstar(iet+1)-zstar(iet))
2687 shz(iplot) = (zp-zdown) / max(zup-zdown,epsdz)
2691 elt(iplot) = - sens * elt(iplot)
2697 WRITE(lu,*)
'UNEXPECTED CASE IN SCHAR41' 2698 WRITE(lu,*)
'IEL=',iel
2721 eta(iplot) = iet + ifa + ifa - 1
2723 shz(iplot) = (zp-zstar(eta(iplot)))
2724 & / (zstar(eta(iplot)+1)-zstar(eta(iplot)))
2726 zdown=shp(1,iplot)*z(i1,eta(iplot))
2727 & +shp(2,iplot)*z(i2,eta(iplot))
2728 & +shp(3,iplot)*z(i3,eta(iplot))
2729 zup =shp(1,iplot)*z(i1,eta(iplot)+1)
2730 & +shp(2,iplot)*z(i2,eta(iplot)+1)
2731 & +shp(3,iplot)*z(i3,eta(iplot)+1)
2732 shz(iplot) = (zp-zdown) / max(zup-zdown,epsdz)
2741 IF(shz(iplot).LT. epsilo) iso=ibset(iso,0)
2742 IF(shz(iplot).GT.1.d0-epsilo) iso=ibset(iso,1)
2758 zplot(iplot) = zstar(iet+ifa)
2760 zplot(iplot) = shp(1,iplot)*z(i1,iet+ifa)
2761 & +shp(2,iplot)*z(i2,iet+ifa)
2762 & +shp(3,iplot)*z(i3,iet+ifa)
2767 IF(isoh.NE.0)
GOTO 50
2779 IF(abs(dz(iplot)).GT.epsdz)
THEN 2780 a1 = (zp-zstar(iet+ifa)) / dz(iplot)
2784 xp = xp - a1*dx(iplot)
2785 yp = yp - a1*dy(iplot)
2788 WRITE(lu,*)
'VERTICAL GETTING OUT FROM LIQUID ' 2789 WRITE(lu,*)
'BOUNDARY - NON IMPLEMENTED CASE' 2798 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
2799 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iele)
2800 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
2801 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iele)
2802 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
2803 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iele)
2823 iet = iet + ifa + ifa - 1
2827 dx(iplot) = ( u(i1,iet2)*shp(1,iplot)
2828 & + u(i2,iet2)*shp(2,iplot)
2829 & + u(i3,iet2)*shp(3,iplot) ) * pas2
2831 dy(iplot) = ( v(i1,iet2)*shp(1,iplot)
2832 & + v(i2,iet2)*shp(2,iplot)
2833 & + v(i3,iet2)*shp(3,iplot) ) * pas2
2836 deltaz = (z(i1,iet+1)-z(i1,iet))*shp(1,iplot)
2837 & + (z(i2,iet+1)-z(i2,iet))*shp(2,iplot)
2838 & + (z(i3,iet+1)-z(i3,iet))*shp(3,iplot)
2840 IF(deltaz.GT.epsdz)
THEN 2841 dz(iplot) = ( w(i1,iet2)*shp(1,iplot)
2842 & + w(i2,iet2)*shp(2,iplot)
2843 & + w(i3,iet2)*shp(3,iplot) ) * pas2
2844 & * (zstar(iet+1)-zstar(iet)) / deltaz
2849 dz(iplot)=((w(i1,iet )*shp(1,iplot)
2850 & + w(i2,iet )*shp(2,iplot)
2851 & + w(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
2852 & +(w(i1,iet+1)*shp(1,iplot)
2853 & + w(i2,iet+1)*shp(2,iplot)
2854 & + w(i3,iet+1)*shp(3,iplot))*shz(iplot) )*pas
2861 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
2862 & -(y(i3)-y(i2))*(xp-x(i2))) * surdet(iele)
2863 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
2864 & -(y(i1)-y(i3))*(xp-x(i3))) * surdet(iele)
2865 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
2866 & -(y(i2)-y(i1))*(xp-x(i1))) * surdet(iele)
2868 shz(iplot)=(zp-zstar(iet))/(zstar(iet+1)-zstar(iet))
2870 zdown=shp(1,iplot)*z(i1,iet)
2871 & +shp(2,iplot)*z(i2,iet)
2872 & +shp(3,iplot)*z(i3,iet)
2873 zup =shp(1,iplot)*z(i1,iet+1)
2874 & +shp(2,iplot)*z(i2,iet+1)
2875 & +shp(3,iplot)*z(i3,iet+1)
2876 shz(iplot) = (zp-zdown) / max(zup-zdown,epsdz)
2886 IF(shp(1,iplot).LT.epsilo) iso=ibset(iso,2)
2887 IF(shp(2,iplot).LT.epsilo) iso=ibset(iso,3)
2888 IF(shp(3,iplot).LT.epsilo) iso=ibset(iso,4)
2890 IF(shz(iplot).LT. epsilo) iso=ibset(iso,0)
2891 IF(shz(iplot).GT.1.d0-epsilo) iso=ibset(iso,1)
2912 elt(iplot) = - sens * elt(iplot)
2935 &( u , v , w , dt , nrk , x , y , zstar , z , ikle2 , ibor ,
2936 & xplot , yplot , zplot , dx , dy , dz , shp , shz , elt , eta ,
2937 & nplot , npoin2 , nelem2 , nelmax2,nplan , surdet ,
2938 & sens , ifapar,
nchdim,nchara,add)
3020 INTEGER ,
INTENT(IN) :: SENS,NPLAN,NCHDIM,NELMAX2
3021 INTEGER ,
INTENT(IN) :: NPOIN2,NELEM2,NPLOT,NRK
3022 INTEGER ,
INTENT(IN) :: IKLE2(nelmax2,3)
3023 INTEGER ,
INTENT(INOUT) :: ELT(nplot),NCHARA
3024 DOUBLE PRECISION,
INTENT(IN) :: U(npoin2,nplan),V(npoin2,nplan)
3025 DOUBLE PRECISION,
INTENT(IN) :: W(npoin2,nplan),SURDET(nelem2)
3026 DOUBLE PRECISION,
INTENT(INOUT) :: XPLOT(nplot),YPLOT(nplot)
3027 DOUBLE PRECISION,
INTENT(INOUT) :: ZPLOT(nplot)
3028 DOUBLE PRECISION,
INTENT(INOUT) :: SHP(3,nplot),SHZ(nplot)
3029 DOUBLE PRECISION,
INTENT(IN) :: X(npoin2),Y(npoin2),DT
3030 DOUBLE PRECISION,
INTENT(IN) :: Z(npoin2,nplan),ZSTAR(nplan)
3031 DOUBLE PRECISION,
INTENT(INOUT) :: DX(nplot),DY(nplot)
3032 DOUBLE PRECISION,
INTENT(INOUT) :: DZ(nplot)
3033 INTEGER ,
INTENT(IN) :: IBOR(nelmax2,5,nplan-1)
3034 INTEGER ,
INTENT(INOUT) :: ETA(nplot)
3035 INTEGER ,
INTENT(IN) :: IFAPAR(6,*)
3036 LOGICAL,
INTENT(IN) :: ADD
3040 INTEGER IELE,ISO,ISPDONE,NSP
3041 INTEGER :: IPLOT,ISP,I1,I2,I3,IEL,IET,IET2,ISOH,ISOV,IFA,ISUI(3)
3043 DOUBLE PRECISION PAS,A1,DX1,DY1,DXP,DYP,XP,YP,ZP,DENOM
3044 DOUBLE PRECISION DELTAZ,PAS2
3046 INTRINSIC abs , int , max , sqrt
3048 parameter( isui = (/ 2 , 3 , 1 /) )
3049 DOUBLE PRECISION,
PARAMETER :: EPSILO = -1.d-6
3050 DOUBLE PRECISION,
PARAMETER :: EPSDZ = 1.d-4
3056 DO iplot = 1 , nplot
3078 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
3079 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
3080 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
3081 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
3082 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
3083 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
3084 shz(iplot) = (zp-zstar(iet)) / (zstar(iet+1)-zstar(iet))
3107 dxp =( u(i1,iet )*shp(1,iplot)
3108 & + u(i2,iet )*shp(2,iplot)
3109 & + u(i3,iet )*shp(3,iplot) )*(1.d0-shz(iplot))
3110 & +( u(i1,iet+1)*shp(1,iplot)
3111 & + u(i2,iet+1)*shp(2,iplot)
3112 & + u(i3,iet+1)*shp(3,iplot) )*shz(iplot)
3113 dyp =( v(i1,iet )*shp(1,iplot)
3114 & + v(i2,iet )*shp(2,iplot)
3115 & + v(i3,iet )*shp(3,iplot) )*(1.d0-shz(iplot))
3116 & +( v(i1,iet+1)*shp(1,iplot)
3117 & + v(i2,iet+1)*shp(2,iplot)
3118 & + v(i3,iet+1)*shp(3,iplot) )*shz(iplot)
3119 nsp=max(1,int(nrk*dt*sqrt((dxp**2+dyp**2)*surdet(iel))))
3124 pas = sens * dt / nsp
3132 DO isp = ispdone,nsp
3144 IF(isp.EQ.ispdone)
GO TO 50
3145 IF(
recvchar(iplot)%NEPID.NE.-1) cycle
3154 dx(iplot) = ((u(i1,iet )*shp(1,iplot)
3155 & + u(i2,iet )*shp(2,iplot)
3156 & + u(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
3157 & +(u(i1,iet+1)*shp(1,iplot)
3158 & + u(i2,iet+1)*shp(2,iplot)
3159 & + u(i3,iet+1)*shp(3,iplot))*shz(iplot) ) * pas
3161 dy(iplot) = ((v(i1,iet )*shp(1,iplot)
3162 & + v(i2,iet )*shp(2,iplot)
3163 & + v(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
3164 & +(v(i1,iet+1)*shp(1,iplot)
3165 & + v(i2,iet+1)*shp(2,iplot)
3166 & + v(i3,iet+1)*shp(3,iplot))*shz(iplot) ) * pas
3168 deltaz = (z(i1,iet+1)-z(i1,iet))*shp(1,iplot)
3169 & + (z(i2,iet+1)-z(i2,iet))*shp(2,iplot)
3170 & + (z(i3,iet+1)-z(i3,iet))*shp(3,iplot)
3172 IF(deltaz.GT.epsdz)
THEN 3175 dz(iplot) = ((w(i1,iet )*shp(1,iplot)
3176 & + w(i2,iet )*shp(2,iplot)
3177 & + w(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
3178 & +(w(i1,iet+1)*shp(1,iplot)
3179 & + w(i2,iet+1)*shp(2,iplot)
3180 & + w(i3,iet+1)*shp(3,iplot))*shz(iplot) )
3181 & * pas * (zstar(iet+1)-zstar(iet)) / deltaz
3186 xp = xplot(iplot) + dx(iplot)
3187 yp = yplot(iplot) + dy(iplot)
3188 zp = zplot(iplot) + dz(iplot)
3190 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
3191 & -(y(i3)-y(i2))*(xp-x(i2))) * surdet(iel)
3192 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
3193 & -(y(i1)-y(i3))*(xp-x(i3))) * surdet(iel)
3194 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
3195 & -(y(i2)-y(i1))*(xp-x(i1))) * surdet(iel)
3197 shz(iplot) = (zp-zstar(iet)) / (zstar(iet+1)-zstar(iet))
3223 IF(shp(1,iplot).LT.epsilo) iso=ibset(iso,2)
3224 IF(shp(2,iplot).LT.epsilo) iso=ibset(iso,3)
3225 IF(shp(3,iplot).LT.epsilo) iso=ibset(iso,4)
3226 IF(shz(iplot) .LT.epsilo) iso=ibset(iso,0)
3227 IF(shz(iplot) .GT.1.d0-epsilo) iso=ibset(iso,1)
3247 ELSEIF(isoh.EQ.8)
THEN 3249 ELSEIF(isoh.EQ.16)
THEN 3251 ELSEIF(isoh.EQ.12)
THEN 3253 IF(dx(iplot)*(y(ikle2(iel,3))-yp).LT.
3254 & dy(iplot)*(x(ikle2(iel,3))-xp)) ifa = 3
3255 ELSEIF(isoh.EQ.24)
THEN 3257 IF(dx(iplot)*(y(ikle2(iel,1))-yp).LT.
3258 & dy(iplot)*(x(ikle2(iel,1))-xp)) ifa = 1
3261 IF(dx(iplot)*(y(ikle2(iel,2))-yp).LT.
3262 & dy(iplot)*(x(ikle2(iel,2))-xp)) ifa = 2
3266 IF(abs(dz(iplot)).GT.epsdz)
THEN 3267 a1 = (zp-zstar(iet+isov-1)) / dz(iplot)
3272 i2 = ikle2(iel,isui(ifa))
3273 IF ((x(i2)-x(i1))*(yp-a1*dy(iplot)-y(i1)).GT.
3274 & (y(i2)-y(i1))*(xp-a1*dx(iplot)-x(i1))) ifa=isov+3
3283 iel = ibor(iel,ifa,iet)
3301 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
3302 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
3303 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
3304 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
3305 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
3306 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
3320 & (ipid,iplot,elt(iplot),ifa,eta(iplot),0,isp,
3321 & nsp,xplot(iplot),yplot(iplot),
3322 & zplot(iplot),0.d0,
3323 & dx(iplot),dy(iplot),dz(iplot),0.d0,
3324 & ifapar,nchdim,nchara)
3328 recvchar(iplot)%NEPID=ifapar(ifa,elt(iplot))
3329 recvchar(iplot)%INE=ifapar(ifa+3,elt(iplot))
3342 i1 = ikle2(elt(iplot),ifa)
3343 i2 = ikle2(elt(iplot),isui(ifa))
3354 a1 = (dxp*dx1+dyp*dy1) / (dx1**2+dy1**2)
3355 dx(iplot) = a1 * dx1
3356 dy(iplot) = a1 * dy1
3358 a1=((xp-x(i1))*dx1+(yp-y(i1))*dy1)/(dx1**2+dy1**2)
3359 shp( ifa ,iplot) = 1.d0 - a1
3360 shp( isui(ifa) ,iplot) = a1
3361 shp(isui(isui(ifa)),iplot) = 0.d0
3362 xplot(iplot) = x(i1) + a1 * dx1
3363 yplot(iplot) = y(i1) + a1 * dy1
3375 ELSEIF(iel.EQ.0)
THEN 3381 denom = dxp*dy1-dyp*dx1
3382 IF(abs(denom).GT.1.d-12)
THEN 3383 a1 = (dxp*(yp-y(i1))-dyp*(xp-x(i1))) / denom
3387 IF(a1.GT.1.d0) a1 = 1.d0
3388 IF(a1.LT.0.d0) a1 = 0.d0
3389 shp( ifa ,iplot) = 1.d0 - a1
3390 shp( isui(ifa) ,iplot) = a1
3391 shp(isui(isui(ifa)),iplot) = 0.d0
3392 xplot(iplot) = x(i1) + a1 * dx1
3393 yplot(iplot) = y(i1) + a1 * dy1
3394 IF(abs(dxp).GT.abs(dyp))
THEN 3395 a1 = (xp-xplot(iplot))/dxp
3397 a1 = (yp-yplot(iplot))/dyp
3399 zplot(iplot) = zp - a1*dz(iplot)
3400 shz(iplot) = (zplot(iplot)-zstar(iet))
3401 & / (zstar(iet+1)-zstar(iet))
3404 elt(iplot) = - sens * elt(iplot)
3410 WRITE(lu,*)
'UNEXPECTED CASE IN SCHAR41_SIGMA' 3411 WRITE(lu,*)
'IEL=',iel
3434 eta(iplot) = iet + ifa + ifa - 1
3435 shz(iplot) = (zp-zstar(eta(iplot)))
3436 & / (zstar(eta(iplot)+1)-zstar(eta(iplot)))
3444 IF(shz(iplot).LT. epsilo) iso=ibset(iso,0)
3445 IF(shz(iplot).GT.1.d0-epsilo) iso=ibset(iso,1)
3458 zplot(iplot) = zstar(iet+ifa)
3463 IF(isoh.NE.0)
GOTO 50
3474 IF(abs(dz(iplot)).GT.epsdz)
THEN 3475 a1 = (zp-zstar(iet+ifa)) / dz(iplot)
3479 xp = xp - a1*dx(iplot)
3480 yp = yp - a1*dy(iplot)
3487 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
3488 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iele)
3489 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
3490 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iele)
3491 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
3492 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iele)
3512 iet = iet + ifa + ifa - 1
3516 dx(iplot) = ( u(i1,iet2)*shp(1,iplot)
3517 & + u(i2,iet2)*shp(2,iplot)
3518 & + u(i3,iet2)*shp(3,iplot) ) * pas2
3520 dy(iplot) = ( v(i1,iet2)*shp(1,iplot)
3521 & + v(i2,iet2)*shp(2,iplot)
3522 & + v(i3,iet2)*shp(3,iplot) ) * pas2
3524 deltaz = (z(i1,iet+1)-z(i1,iet))*shp(1,iplot)
3525 & + (z(i2,iet+1)-z(i2,iet))*shp(2,iplot)
3526 & + (z(i3,iet+1)-z(i3,iet))*shp(3,iplot)
3528 IF(deltaz.GT.epsdz)
THEN 3529 dz(iplot) = ( w(i1,iet2)*shp(1,iplot)
3530 & + w(i2,iet2)*shp(2,iplot)
3531 & + w(i3,iet2)*shp(3,iplot) ) * pas2
3532 & * (zstar(iet+1)-zstar(iet)) / deltaz
3541 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
3542 & -(y(i3)-y(i2))*(xp-x(i2))) * surdet(iele)
3543 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
3544 & -(y(i1)-y(i3))*(xp-x(i3))) * surdet(iele)
3545 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
3546 & -(y(i2)-y(i1))*(xp-x(i1))) * surdet(iele)
3547 shz(iplot)=(zp-zstar(iet))/(zstar(iet+1)-zstar(iet))
3556 IF(shp(1,iplot).LT.epsilo) iso=ibset(iso,2)
3557 IF(shp(2,iplot).LT.epsilo) iso=ibset(iso,3)
3558 IF(shp(3,iplot).LT.epsilo) iso=ibset(iso,4)
3560 IF(shz(iplot).LT. epsilo) iso=ibset(iso,0)
3561 IF(shz(iplot).GT.1.d0-epsilo) iso=ibset(iso,1)
3582 elt(iplot) = - sens * elt(iplot)
3604 &( u , v , w , dt , nrk , x , y , zstar , ikle2 , ibor ,
3605 & xplot , yplot , zplot , dx , dy , dz , shp , shz , elt , eta ,
3606 & nplot , npoin2 , nelem2 , nelmax2,nplan , surdet ,
3607 & sens , ifapar,
nchdim,nchara,add)
3689 INTEGER ,
INTENT(IN) :: SENS,NPLAN,NCHDIM,NELMAX2
3690 INTEGER ,
INTENT(IN) :: NPOIN2,NELEM2,NPLOT,NRK
3691 INTEGER ,
INTENT(IN) :: IKLE2(nelmax2,3)
3692 INTEGER ,
INTENT(INOUT) :: ELT(nplot),NCHARA
3693 DOUBLE PRECISION,
INTENT(IN) :: U(npoin2,nplan),V(npoin2,nplan)
3694 DOUBLE PRECISION,
INTENT(IN) :: W(npoin2,nplan),SURDET(nelem2)
3695 DOUBLE PRECISION,
INTENT(INOUT) :: XPLOT(nplot),YPLOT(nplot)
3696 DOUBLE PRECISION,
INTENT(INOUT) :: ZPLOT(nplot)
3697 DOUBLE PRECISION,
INTENT(INOUT) :: SHP(3,nplot),SHZ(nplot)
3698 DOUBLE PRECISION,
INTENT(IN) :: X(npoin2),Y(npoin2),DT
3700 DOUBLE PRECISION,
INTENT(IN) :: ZSTAR(nplan+1)
3701 DOUBLE PRECISION,
INTENT(INOUT) :: DX(nplot),DY(nplot)
3702 DOUBLE PRECISION,
INTENT(INOUT) :: DZ(nplot)
3703 INTEGER ,
INTENT(IN) :: IBOR(nelmax2,5,nplan-1)
3704 INTEGER ,
INTENT(INOUT) :: ETA(nplot)
3705 INTEGER ,
INTENT(IN) :: IFAPAR(6,*)
3706 LOGICAL ,
INTENT(IN) :: ADD
3710 INTEGER IELE,ISO,ISPDONE,NSP,NSPMAX,IETP1
3711 INTEGER IPLOT,ISP,I1,I2,I3,IEL,IET,IET2,ISOH,ISOV,IFA,ISUI(3)
3713 DOUBLE PRECISION PAS,A1,DX1,DY1,DXP,DYP,DZP,XP,YP,ZP,DENOM,PAS2
3715 INTRINSIC abs , int , max , sqrt
3717 parameter( isui = (/ 2 , 3 , 1 /) )
3718 DOUBLE PRECISION,
PARAMETER :: EPSILO = -1.d-6
3719 DOUBLE PRECISION,
PARAMETER :: EPSDZ = 1.d-4
3728 DO iplot = 1 , nplot
3750 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
3751 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
3752 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
3753 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
3754 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
3755 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
3756 shz(iplot) = (zp-zstar(iet)) / (zstar(iet+1)-zstar(iet))
3780 dxp = u(i1,iet )*shp(1,iplot)*(1.d0-shz(iplot))
3781 & + u(i2,iet )*shp(2,iplot)*(1.d0-shz(iplot))
3782 & + u(i3,iet )*shp(3,iplot)*(1.d0-shz(iplot))
3783 & + u(i1,iet+1)*shp(1,iplot)*shz(iplot)
3784 & + u(i2,iet+1)*shp(2,iplot)*shz(iplot)
3785 & + u(i3,iet+1)*shp(3,iplot)*shz(iplot)
3786 dyp = v(i1,iet )*shp(1,iplot)*(1.d0-shz(iplot))
3787 & + v(i2,iet )*shp(2,iplot)*(1.d0-shz(iplot))
3788 & + v(i3,iet )*shp(3,iplot)*(1.d0-shz(iplot))
3789 & + v(i1,iet+1)*shp(1,iplot)*shz(iplot)
3790 & + v(i2,iet+1)*shp(2,iplot)*shz(iplot)
3791 & + v(i3,iet+1)*shp(3,iplot)*shz(iplot)
3792 nsp=max(1,int(nrk*dt*sqrt((dxp**2+dyp**2)*surdet(iel))))
3794 dzp = w(i1,iet )*shp(1,iplot)*(1.d0-shz(iplot))
3795 & + w(i2,iet )*shp(2,iplot)*(1.d0-shz(iplot))
3796 & + w(i3,iet )*shp(3,iplot)*(1.d0-shz(iplot))
3797 & + w(i1,iet+1)*shp(1,iplot)*shz(iplot)
3798 & + w(i2,iet+1)*shp(2,iplot)*shz(iplot)
3799 & + w(i3,iet+1)*shp(3,iplot)*shz(iplot)
3801 nsp=max(nsp,int(nrk*dt*abs(dzp/(zstar(iet+1)-zstar(iet)))))
3802 nspmax = max(nspmax,nsp)
3809 pas = sens * dt / nsp
3817 DO isp = ispdone,nsp
3829 IF(isp.EQ.ispdone)
GO TO 50
3830 IF(
recvchar(iplot)%NEPID.NE.-1) cycle
3842 dx(iplot) = ((u(i1,iet )*shp(1,iplot)
3843 & + u(i2,iet )*shp(2,iplot)
3844 & + u(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
3845 & +(u(i1,ietp1)*shp(1,iplot)
3846 & + u(i2,ietp1)*shp(2,iplot)
3847 & + u(i3,ietp1)*shp(3,iplot))*shz(iplot) )*pas
3849 dy(iplot) = ((v(i1,iet )*shp(1,iplot)
3850 & + v(i2,iet )*shp(2,iplot)
3851 & + v(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
3852 & +(v(i1,ietp1)*shp(1,iplot)
3853 & + v(i2,ietp1)*shp(2,iplot)
3854 & + v(i3,ietp1)*shp(3,iplot))*shz(iplot) )*pas
3863 dz(iplot) = ((w(i1,iet )*shp(1,iplot)
3864 & + w(i2,iet )*shp(2,iplot)
3865 & + w(i3,iet )*shp(3,iplot))*(1.d0-shz(iplot))
3866 & +(w(i1,ietp1)*shp(1,iplot)
3867 & + w(i2,ietp1)*shp(2,iplot)
3868 & + w(i3,ietp1)*shp(3,iplot))*shz(iplot))
3876 xp = xplot(iplot) + dx(iplot)
3877 yp = yplot(iplot) + dy(iplot)
3878 zp = zplot(iplot) + dz(iplot)
3880 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
3881 & -(y(i3)-y(i2))*(xp-x(i2))) * surdet(iel)
3882 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
3883 & -(y(i1)-y(i3))*(xp-x(i3))) * surdet(iel)
3884 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
3885 & -(y(i2)-y(i1))*(xp-x(i1))) * surdet(iel)
3886 shz(iplot) = (zp-zstar(iet)) / (zstar(iet+1)-zstar(iet))
3912 IF(shp(1,iplot).LT.epsilo) iso=ibset(iso,2)
3913 IF(shp(2,iplot).LT.epsilo) iso=ibset(iso,3)
3914 IF(shp(3,iplot).LT.epsilo) iso=ibset(iso,4)
3915 IF(shz(iplot) .LT.epsilo) iso=ibset(iso,0)
3916 IF(shz(iplot) .GT.1.d0-epsilo) iso=ibset(iso,1)
3936 ELSEIF(isoh.EQ.8)
THEN 3938 ELSEIF(isoh.EQ.16)
THEN 3940 ELSEIF(isoh.EQ.12)
THEN 3942 IF(dx(iplot)*(y(ikle2(iel,3))-yp).LT.
3943 & dy(iplot)*(x(ikle2(iel,3))-xp)) ifa = 3
3944 ELSEIF(isoh.EQ.24)
THEN 3946 IF(dx(iplot)*(y(ikle2(iel,1))-yp).LT.
3947 & dy(iplot)*(x(ikle2(iel,1))-xp)) ifa = 1
3950 IF(dx(iplot)*(y(ikle2(iel,2))-yp).LT.
3951 & dy(iplot)*(x(ikle2(iel,2))-xp)) ifa = 2
3955 IF(abs(dz(iplot)).GT.epsdz)
THEN 3956 a1 = (zp-zstar(iet+isov-1)) / dz(iplot)
3961 i2 = ikle2(iel,isui(ifa))
3962 IF ((x(i2)-x(i1))*(yp-a1*dy(iplot)-y(i1)).GT.
3963 & (y(i2)-y(i1))*(xp-a1*dx(iplot)-x(i1))) ifa=isov+3
3976 iel = ibor(iel,ifa,1)
3995 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
3996 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
3997 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
3998 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
3999 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
4000 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
4014 & (ipid,iplot,elt(iplot),ifa,eta(iplot),0,isp,
4015 & nsp,xplot(iplot),yplot(iplot),
4016 & zplot(iplot),0.d0,
4017 & dx(iplot),dy(iplot),dz(iplot),0.d0,
4018 & ifapar,nchdim,nchara)
4022 recvchar(iplot)%NEPID=ifapar(ifa,elt(iplot))
4023 recvchar(iplot)%INE=ifapar(ifa+3,elt(iplot))
4036 i1 = ikle2(elt(iplot),ifa)
4037 i2 = ikle2(elt(iplot),isui(ifa))
4078 elt(iplot) = - sens * elt(iplot)
4081 ELSEIF(iel.EQ.0)
THEN 4087 denom = dxp*dy1-dyp*dx1
4088 IF(abs(denom).GT.1.d-12)
THEN 4089 a1 = (dxp*(yp-y(i1))-dyp*(xp-x(i1))) / denom
4093 IF(a1.GT.1.d0) a1 = 1.d0
4094 IF(a1.LT.0.d0) a1 = 0.d0
4095 shp( ifa ,iplot) = 1.d0 - a1
4096 shp( isui(ifa) ,iplot) = a1
4097 shp(isui(isui(ifa)),iplot) = 0.d0
4098 xplot(iplot) = x(i1) + a1 * dx1
4099 yplot(iplot) = y(i1) + a1 * dy1
4100 IF(abs(dxp).GT.abs(dyp))
THEN 4101 a1 = (xp-xplot(iplot))/dxp
4103 a1 = (yp-yplot(iplot))/dyp
4105 zplot(iplot) = zp - a1*dz(iplot)
4106 shz(iplot) = (zplot(iplot)-zstar(iet))
4107 & / (zstar(iet+1)-zstar(iet))
4110 elt(iplot) = - sens * elt(iplot)
4116 WRITE(lu,*)
'UNEXPECTED CASE IN SCHAR41' 4117 WRITE(lu,*)
'IEL=',iel
4140 eta(iplot) = iet + ifa + ifa - 1
4142 IF(eta(iplot).EQ.nplan+1)
THEN 4144 zp=zp-zstar(nplan+1)
4147 IF(eta(iplot).EQ.0)
THEN 4149 zp=zp+zstar(nplan+1)
4153 shz(iplot) = (zp-zstar(eta(iplot)))
4154 & / (zstar(eta(iplot)+1)-zstar(eta(iplot)))
4163 IF(shz(iplot).LT. epsilo) iso=ibset(iso,0)
4164 IF(shz(iplot).GT.1.d0-epsilo) iso=ibset(iso,1)
4177 zplot(iplot) = zstar(iet+ifa)
4182 IF(isoh.NE.0)
GOTO 50
4193 IF(abs(dz(iplot)).GT.epsdz)
THEN 4194 a1 = (zp-zstar(iet+ifa)) / dz(iplot)
4198 xp = xp - a1*dx(iplot)
4199 yp = yp - a1*dy(iplot)
4206 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
4207 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iele)
4208 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
4209 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iele)
4210 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
4211 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iele)
4231 iet = iet + ifa + ifa - 1
4235 dx(iplot) = ( u(i1,iet2)*shp(1,iplot)
4236 & + u(i2,iet2)*shp(2,iplot)
4237 & + u(i3,iet2)*shp(3,iplot) ) * pas2
4239 dy(iplot) = ( v(i1,iet2)*shp(1,iplot)
4240 & + v(i2,iet2)*shp(2,iplot)
4241 & + v(i3,iet2)*shp(3,iplot) ) * pas2
4248 dz(iplot) = ( w(i1,iet2)*shp(1,iplot)
4249 & + w(i2,iet2)*shp(2,iplot)
4250 & + w(i3,iet2)*shp(3,iplot) ) * pas2
4260 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
4261 & -(y(i3)-y(i2))*(xp-x(i2))) * surdet(iele)
4262 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
4263 & -(y(i1)-y(i3))*(xp-x(i3))) * surdet(iele)
4264 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
4265 & -(y(i2)-y(i1))*(xp-x(i1))) * surdet(iele)
4266 shz(iplot)=(zp-zstar(iet))/(zstar(iet+1)-zstar(iet))
4275 IF(shp(1,iplot).LT.epsilo) iso=ibset(iso,2)
4276 IF(shp(2,iplot).LT.epsilo) iso=ibset(iso,3)
4277 IF(shp(3,iplot).LT.epsilo) iso=ibset(iso,4)
4279 IF(shz(iplot).LT. epsilo) iso=ibset(iso,0)
4280 IF(shz(iplot).GT.1.d0-epsilo) iso=ibset(iso,1)
4301 elt(iplot) = - sens * elt(iplot)
4316 IF(ncsize.GT.1) nspmax=
p_max(nspmax)
4317 WRITE(lu,*)
'NUMBER OF SUB-ITERATIONS :',nspmax
4332 &( u , v , w , f , dt , nrk , x , y , zstar , freq ,ikle2 ,ibor ,
4333 & xplot , yplot , zplot , fplot,dx , dy , dz , df,
4334 & shp , shz , shf , elt , eta ,
4335 & fre , nplot , npoin2 , nelem2 , nelmax2,nplan , nf,surdet ,
4336 & sens , ifapar,
nchdim ,nchara,add)
4418 INTEGER ,
INTENT(IN) :: SENS,NPLAN,NCHDIM,NF,NELMAX2
4419 INTEGER ,
INTENT(IN) :: NPOIN2,NELEM2,NPLOT,NRK
4420 INTEGER ,
INTENT(IN) :: IKLE2(nelmax2,3)
4421 INTEGER ,
INTENT(INOUT) :: ELT(nplot),NCHARA
4422 DOUBLE PRECISION,
INTENT(IN) :: U(npoin2,nplan,nf)
4423 DOUBLE PRECISION,
INTENT(IN) :: V(npoin2,nplan,nf)
4424 DOUBLE PRECISION,
INTENT(IN) :: W(npoin2,nplan,nf)
4425 DOUBLE PRECISION,
INTENT(IN) :: F(npoin2,nplan,nf)
4426 DOUBLE PRECISION,
INTENT(IN) :: SURDET(nelem2)
4427 DOUBLE PRECISION,
INTENT(INOUT) :: XPLOT(nplot),YPLOT(nplot)
4428 DOUBLE PRECISION,
INTENT(INOUT) :: ZPLOT(nplot),FPLOT(nplot)
4429 DOUBLE PRECISION,
INTENT(INOUT) :: SHP(3,nplot),SHZ(nplot)
4430 DOUBLE PRECISION,
INTENT(INOUT) :: SHF(nplot)
4431 DOUBLE PRECISION,
INTENT(IN) :: X(npoin2),Y(npoin2),DT
4433 DOUBLE PRECISION,
INTENT(IN) :: ZSTAR(nplan+1)
4434 DOUBLE PRECISION,
INTENT(IN) :: FREQ(nf)
4435 DOUBLE PRECISION,
INTENT(INOUT) :: DX(nplot),DY(nplot)
4436 DOUBLE PRECISION,
INTENT(INOUT) :: DZ(nplot),DF(nplot)
4437 INTEGER ,
INTENT(IN) :: IBOR(nelmax2,5,nplan-1)
4438 INTEGER ,
INTENT(INOUT) :: ETA(nplot),FRE(nplot)
4439 INTEGER ,
INTENT(IN) :: IFAPAR(6,*)
4440 LOGICAL,
INTENT(IN) :: ADD
4444 INTEGER ISO,ISPDONE,NSP,NSPMAX
4445 INTEGER IPLOT,ISP,I1,I2,I3,IEL,IET,ISOH,ISOV,ISOF,ISOT
4446 INTEGER :: IETP1,IFA,ISUI(3),IFR
4448 DOUBLE PRECISION PAS,A1,A2,DX1,DY1,DXP,DYP,DZP,XP,YP,ZP,FP
4449 DOUBLE PRECISION PAS2,DFP,DENOM
4451 INTRINSIC abs , int , max , sqrt
4453 parameter( isui = (/ 2 , 3 , 1 /) )
4454 DOUBLE PRECISION,
PARAMETER :: EPSILO = -1.d-6
4463 DO iplot = 1 , nplot
4490 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
4491 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
4492 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
4493 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
4494 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
4495 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
4496 shz(iplot) = (zp-zstar(iet)) / (zstar(iet+1)-zstar(iet))
4497 shf(iplot) = (fp-freq(ifr)) / (freq(ifr+1)-freq(ifr))
4524 dxp =(1.d0-shf(iplot))*
4525 & ((u(i1,iet ,ifr)*shp(1,iplot)
4526 & + u(i2,iet ,ifr)*shp(2,iplot)
4527 & + u(i3,iet ,ifr)*shp(3,iplot))*(1.d0-shz(iplot))
4528 & +(u(i1,iet+1,ifr)*shp(1,iplot)
4529 & + u(i2,iet+1,ifr)*shp(2,iplot)
4530 & + u(i3,iet+1,ifr)*shp(3,iplot))*shz(iplot))
4532 & ((u(i1,iet ,ifr+1)*shp(1,iplot)
4533 & + u(i2,iet ,ifr+1)*shp(2,iplot)
4534 & + u(i3,iet ,ifr+1)*shp(3,iplot))*(1.d0-shz(iplot))
4535 & +(u(i1,iet+1,ifr+1)*shp(1,iplot)
4536 & + u(i2,iet+1,ifr+1)*shp(2,iplot)
4537 & + u(i3,iet+1,ifr+1)*shp(3,iplot))*shz(iplot))
4539 dyp =(1.d0-shf(iplot))*
4540 & ((v(i1,iet ,ifr)*shp(1,iplot)
4541 & + v(i2,iet ,ifr)*shp(2,iplot)
4542 & + v(i3,iet ,ifr)*shp(3,iplot))*(1.d0-shz(iplot))
4543 & +(v(i1,iet+1,ifr)*shp(1,iplot)
4544 & + v(i2,iet+1,ifr)*shp(2,iplot)
4545 & + v(i3,iet+1,ifr)*shp(3,iplot))*shz(iplot))
4547 & ((v(i1,iet ,ifr+1)*shp(1,iplot)
4548 & + v(i2,iet ,ifr+1)*shp(2,iplot)
4549 & + v(i3,iet ,ifr+1)*shp(3,iplot))*(1.d0-shz(iplot))
4550 & +(v(i1,iet+1,ifr+1)*shp(1,iplot)
4551 & + v(i2,iet+1,ifr+1)*shp(2,iplot)
4552 & + v(i3,iet+1,ifr+1)*shp(3,iplot))*shz(iplot))
4554 dzp =(1.d0-shf(iplot))*
4555 & ((w(i1,iet ,ifr)*shp(1,iplot)
4556 & + w(i2,iet ,ifr)*shp(2,iplot)
4557 & + w(i3,iet ,ifr)*shp(3,iplot))*(1.d0-shz(iplot))
4558 & +(w(i1,iet+1,ifr)*shp(1,iplot)
4559 & + w(i2,iet+1,ifr)*shp(2,iplot)
4560 & + w(i3,iet+1,ifr)*shp(3,iplot))*shz(iplot))
4562 & ((w(i1,iet ,ifr+1)*shp(1,iplot)
4563 & + w(i2,iet ,ifr+1)*shp(2,iplot)
4564 & + w(i3,iet ,ifr+1)*shp(3,iplot))*(1.d0-shz(iplot))
4565 & +(w(i1,iet+1,ifr+1)*shp(1,iplot)
4566 & + w(i2,iet+1,ifr+1)*shp(2,iplot)
4567 & + w(i3,iet+1,ifr+1)*shp(3,iplot))*shz(iplot))
4569 dfp =(1.d0-shf(iplot))*
4570 & ((f(i1,iet ,ifr)*shp(1,iplot)
4571 & + f(i2,iet ,ifr)*shp(2,iplot)
4572 & + f(i3,iet ,ifr)*shp(3,iplot))*(1.d0-shz(iplot))
4573 & +(f(i1,iet+1,ifr)*shp(1,iplot)
4574 & + f(i2,iet+1,ifr)*shp(2,iplot)
4575 & + f(i3,iet+1,ifr)*shp(3,iplot))*shz(iplot))
4577 & ((f(i1,iet ,ifr+1)*shp(1,iplot)
4578 & + f(i2,iet ,ifr+1)*shp(2,iplot)
4579 & + f(i3,iet ,ifr+1)*shp(3,iplot))*(1.d0-shz(iplot))
4580 & +(f(i1,iet+1,ifr+1)*shp(1,iplot)
4581 & + f(i2,iet+1,ifr+1)*shp(2,iplot)
4582 & + f(i3,iet+1,ifr+1)*shp(3,iplot))*shz(iplot))
4584 nsp=max(1,int(nrk*dt*sqrt((dxp**2+dyp**2)*surdet(iel))))
4585 nsp=max(nsp,int(nrk*dt*abs(dzp/(zstar(iet+1)-zstar(iet)))))
4586 nsp=max(nsp,int(nrk*dt*abs(dfp/(freq(ifr)-freq(ifr+1)))))
4587 nspmax=max(nsp,nspmax)
4594 pas = sens * dt / nsp
4602 DO isp = ispdone,nsp
4614 IF(isp.EQ.ispdone)
GO TO 50
4615 IF(
recvchar(iplot)%NEPID.NE.-1) cycle
4627 dx(iplot) = ( (1.d0-shf(iplot))*
4628 & ((u(i1,iet ,ifr)*shp(1,iplot)
4629 & + u(i2,iet ,ifr)*shp(2,iplot)
4630 & + u(i3,iet ,ifr)*shp(3,iplot))*(1.d0-shz(iplot))
4631 & +(u(i1,ietp1,ifr)*shp(1,iplot)
4632 & + u(i2,ietp1,ifr)*shp(2,iplot)
4633 & + u(i3,ietp1,ifr)*shp(3,iplot))*shz(iplot))
4635 & ((u(i1,iet ,ifr+1)*shp(1,iplot)
4636 & + u(i2,iet ,ifr+1)*shp(2,iplot)
4637 & + u(i3,iet ,ifr+1)*shp(3,iplot))*(1.d0-shz(iplot))
4638 & +(u(i1,ietp1,ifr+1)*shp(1,iplot)
4639 & + u(i2,ietp1,ifr+1)*shp(2,iplot)
4640 & + u(i3,ietp1,ifr+1)*shp(3,iplot))*shz(iplot)))*pas
4642 dy(iplot) = ( (1.d0-shf(iplot))*
4643 & ((v(i1,iet ,ifr)*shp(1,iplot)
4644 & + v(i2,iet ,ifr)*shp(2,iplot)
4645 & + v(i3,iet ,ifr)*shp(3,iplot))*(1.d0-shz(iplot))
4646 & +(v(i1,ietp1,ifr)*shp(1,iplot)
4647 & + v(i2,ietp1,ifr)*shp(2,iplot)
4648 & + v(i3,ietp1,ifr)*shp(3,iplot))*shz(iplot))
4650 & ((v(i1,iet ,ifr+1)*shp(1,iplot)
4651 & + v(i2,iet ,ifr+1)*shp(2,iplot)
4652 & + v(i3,iet ,ifr+1)*shp(3,iplot))*(1.d0-shz(iplot))
4653 & +(v(i1,ietp1,ifr+1)*shp(1,iplot)
4654 & + v(i2,ietp1,ifr+1)*shp(2,iplot)
4655 & + v(i3,ietp1,ifr+1)*shp(3,iplot))*shz(iplot)))*pas
4657 dz(iplot) = ( (1.d0-shf(iplot))*
4658 & ((w(i1,iet ,ifr)*shp(1,iplot)
4659 & + w(i2,iet ,ifr)*shp(2,iplot)
4660 & + w(i3,iet ,ifr)*shp(3,iplot))*(1.d0-shz(iplot))
4661 & +(w(i1,ietp1,ifr)*shp(1,iplot)
4662 & + w(i2,ietp1,ifr)*shp(2,iplot)
4663 & + w(i3,ietp1,ifr)*shp(3,iplot))*shz(iplot))
4665 & ((w(i1,iet ,ifr+1)*shp(1,iplot)
4666 & + w(i2,iet ,ifr+1)*shp(2,iplot)
4667 & + w(i3,iet ,ifr+1)*shp(3,iplot))*(1.d0-shz(iplot))
4668 & +(w(i1,ietp1,ifr+1)*shp(1,iplot)
4669 & + w(i2,ietp1,ifr+1)*shp(2,iplot)
4670 & + w(i3,ietp1,ifr+1)*shp(3,iplot))*shz(iplot)))*pas
4672 df(iplot) = ( (1.d0-shf(iplot))*
4673 & ((f(i1,iet ,ifr)*shp(1,iplot)
4674 & + f(i2,iet ,ifr)*shp(2,iplot)
4675 & + f(i3,iet ,ifr)*shp(3,iplot))*(1.d0-shz(iplot))
4676 & +(f(i1,ietp1,ifr)*shp(1,iplot)
4677 & + f(i2,ietp1,ifr)*shp(2,iplot)
4678 & + f(i3,ietp1,ifr)*shp(3,iplot))*shz(iplot))
4680 & ((f(i1,iet ,ifr+1)*shp(1,iplot)
4681 & + f(i2,iet ,ifr+1)*shp(2,iplot)
4682 & + f(i3,iet ,ifr+1)*shp(3,iplot))*(1.d0-shz(iplot))
4683 & +(f(i1,ietp1,ifr+1)*shp(1,iplot)
4684 & + f(i2,ietp1,ifr+1)*shp(2,iplot)
4685 & + f(i3,ietp1,ifr+1)*shp(3,iplot))*shz(iplot)) )*pas
4687 xp = xplot(iplot) + dx(iplot)
4688 yp = yplot(iplot) + dy(iplot)
4689 zp = zplot(iplot) + dz(iplot)
4690 fp = fplot(iplot) + df(iplot)
4692 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
4693 & -(y(i3)-y(i2))*(xp-x(i2))) * surdet(iel)
4694 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
4695 & -(y(i1)-y(i3))*(xp-x(i3))) * surdet(iel)
4696 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
4697 & -(y(i2)-y(i1))*(xp-x(i1))) * surdet(iel)
4698 shz(iplot) = (zp-zstar(iet)) / (zstar(iet+1)-zstar(iet))
4699 shf(iplot) = (fp-freq(ifr)) / (freq(ifr+1)-freq(ifr))
4728 IF(shp(1,iplot).LT.epsilo) iso=ibset(iso,4)
4729 IF(shp(2,iplot).LT.epsilo) iso=ibset(iso,5)
4730 IF(shp(3,iplot).LT.epsilo) iso=ibset(iso,6)
4731 IF(shz(iplot).LT.epsilo) iso=ibset(iso,0)
4732 IF(shz(iplot).GT.1.d0-epsilo) iso=ibset(iso,1)
4733 IF(shf(iplot).LT.epsilo) iso=ibset(iso,2)
4734 IF(shf(iplot).GT.1.d0-epsilo) iso=ibset(iso,3)
4743 isof = iand(iso,12)/4
4745 isoh = iand(iso,112)
4758 ELSEIF(isoh.EQ.32)
THEN 4760 ELSEIF(isoh.EQ.64)
THEN 4762 ELSEIF(isoh.EQ.48)
THEN 4764 IF(dx(iplot)*(y(ikle2(iel,3))-yp).LT.
4765 & dy(iplot)*(x(ikle2(iel,3))-xp)) ifa = 3
4766 ELSEIF(isoh.EQ.96)
THEN 4768 IF(dx(iplot)*(y(ikle2(iel,1))-yp).LT.
4769 & dy(iplot)*(x(ikle2(iel,1))-xp)) ifa = 1
4773 IF(dx(iplot)*(y(ikle2(iel,2))-yp).LT.
4774 & dy(iplot)*(x(ikle2(iel,2))-xp)) ifa = 2
4779 i2 = ikle2(iel,isui(ifa))
4782 a1=(fp- freq(ifr+isof-1))/df(iplot)
4783 a2=(zp-zstar(iet+isot-1))/dz(iplot)
4785 IF((x(i2)-x(i1))*(yp-a1*dy(iplot)-y(i1)).GT.
4786 & (y(i2)-y(i1))*(xp-a1*dx(iplot)-x(i1)))
THEN 4790 IF((x(i2)-x(i1))*(yp-a2*dy(iplot)-y(i1)).GT.
4791 & (y(i2)-y(i1))*(xp-a2*dx(iplot)-x(i1)))
THEN 4796 a1 = (fp-freq(ifr+isof-1)) / df(iplot)
4797 IF((x(i2)-x(i1))*(yp-a1*dy(iplot)-y(i1)).GT.
4798 & (y(i2)-y(i1))*(xp-a1*dx(iplot)-x(i1)))
THEN 4803 a1 = (zp-zstar(iet+isot-1)) / dz(iplot)
4804 IF((x(i2)-x(i1))*(yp-a1*dy(iplot)-y(i1)).GT.
4805 & (y(i2)-y(i1))*(xp-a1*dx(iplot)-x(i1)))
THEN 4811 ELSEIF(isot.GT.0)
THEN 4814 a1=(fp-freq(ifr+isof-1))/df(iplot)
4815 a2=(zp-zstar(iet+isot-1))/dz(iplot)
4816 IF(a1.LT.a2) ifa = isof + 5
4825 iel = ibor(iel,ifa,1)
4844 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
4845 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
4846 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
4847 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
4848 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
4849 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
4863 & (ipid,iplot,elt(iplot),ifa,eta(iplot),fre(iplot),isp,
4864 & nsp,xplot(iplot),yplot(iplot),
4865 & zplot(iplot),fplot(iplot),
4866 & dx(iplot),dy(iplot),dz(iplot),df(iplot),
4867 & ifapar,nchdim,nchara)
4871 recvchar(iplot)%NEPID=ifapar(ifa,elt(iplot))
4872 recvchar(iplot)%INE=ifapar(ifa+3,elt(iplot))
4886 i1 = ikle2(elt(iplot),ifa)
4887 i2 = ikle2(elt(iplot),isui(ifa))
4901 elt(iplot) = - sens * elt(iplot)
4911 denom = dxp*dy1-dyp*dx1
4912 IF(abs(denom).GT.1.d-12)
THEN 4913 a1 = (dxp*(yp-y(i1))-dyp*(xp-x(i1))) / denom
4917 IF(a1.GT.1.d0) a1 = 1.d0
4918 IF(a1.LT.0.d0) a1 = 0.d0
4919 shp(ifa ,iplot) = 1.d0 - a1
4920 shp(isui(ifa) ,iplot) = a1
4921 shp(isui(isui(ifa)),iplot) = 0.d0
4922 xplot(iplot) = x(i1) + a1 * dx1
4923 yplot(iplot) = y(i1) + a1 * dy1
4924 IF(abs(dxp).GT.abs(dyp))
THEN 4925 a1 = (xp-xplot(iplot))/dxp
4927 a1 = (yp-yplot(iplot))/dyp
4929 zplot(iplot) = zp - a1*dz(iplot)
4930 shz(iplot) = (zplot(iplot)-zstar(iet))
4931 & / (zstar(iet+1)-zstar(iet))
4932 fplot(iplot) = fp - a1*df(iplot)
4933 shf(iplot) = (fplot(iplot)-freq(ifr))
4934 & / (freq(ifr+1)-freq(ifr))
4935 elt(iplot) = - sens * elt(iplot)
4939 ELSEIF(ifa.LE.5)
THEN 4942 iel = ibor(iel,ifa,1)
4958 eta(iplot) = iet + ifa + ifa - 1
4959 IF(eta(iplot).EQ.nplan+1)
THEN 4961 zp=zp-zstar(nplan+1)
4964 IF(eta(iplot).EQ.0)
THEN 4966 zp=zp+zstar(nplan+1)
4969 shz(iplot) = (zp-zstar(eta(iplot)))
4970 & / (zstar(eta(iplot)+1)-zstar(eta(iplot)))
4980 WRITE(lu,*)
'PROBLEM IN SCHAR41_PER_4D',iel,iplot
4997 IF(ifa.EQ.1.AND.ifr.EQ.nf-1) iel=-1
4998 IF(ifa.EQ.0.AND.ifr.EQ.1) iel=-1
5006 fre(iplot) = ifr + ifa + ifa - 1
5007 shf(iplot) = (fp-freq(fre(iplot)))
5008 & / (freq(fre(iplot)+1)-freq(fre(iplot)))
5023 fplot(iplot)=freq(ifr+ifa)
5042 IF(ncsize.GT.1) nspmax=
p_max(nspmax)
5043 WRITE(lu,*)
'NUMBER OF SUB-ITERATIONS :',nspmax
5067 &(u,v,dt,nrk,x,y,ikle,ifabor,xplot,yplot,dx,dy,shp,elt,
5068 & nplot,nelem,nelmax,surdet,sens,
5069 & ifapar,
nchdim,nchara,add)
5137 INTEGER ,
INTENT(IN) :: SENS,NCHDIM
5138 INTEGER ,
INTENT(IN) :: NELEM,NELMAX,NPLOT,NRK
5139 INTEGER ,
INTENT(IN) :: IKLE(nelmax,3),IFABOR(nelmax,3)
5140 INTEGER ,
INTENT(INOUT) :: ELT(*),NCHARA
5141 DOUBLE PRECISION,
INTENT(IN) :: U(*),V(*),SURDET(nelem)
5142 DOUBLE PRECISION,
INTENT(INOUT) :: XPLOT(*),YPLOT(*)
5143 DOUBLE PRECISION,
INTENT(INOUT) :: SHP(3,*)
5144 DOUBLE PRECISION,
INTENT(IN) :: DT
5145 DOUBLE PRECISION,
INTENT(IN) :: X(*),Y(*)
5146 DOUBLE PRECISION,
INTENT(INOUT) :: DX(*),DY(*)
5147 INTEGER,
INTENT(IN) :: IFAPAR(6,*)
5148 LOGICAL,
INTENT(IN) :: ADD
5152 INTEGER :: IPLOT,ISP,I1,I2,I3,IEL,ISO,IFA,ISUI(3),ISUI2(3),ISPDONE
5153 INTEGER IPROC,ILOC,NSP
5154 DOUBLE PRECISION PAS,A1,DX1,DY1,DXP,DYP,XP,YP,DENOM
5156 INTRINSIC int,max,min,sqrt
5158 parameter( isui = (/ 2 , 3 , 1 /) )
5159 parameter( isui2 = (/ 3 , 1 , 2 /) )
5160 DOUBLE PRECISION,
PARAMETER :: EPSILO = -1.d-6
5183 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
5184 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
5185 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
5186 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
5187 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
5188 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
5208 dxp = u(i1)*shp(1,iplot)+u(i2)*shp(2,iplot)
5209 & +u(i3)*shp(3,iplot)
5210 dyp = v(i1)*shp(1,iplot)+v(i2)*shp(2,iplot)
5211 & +v(i3)*shp(3,iplot)
5212 nsp=max(1,int(nrk*dt*sqrt((dxp**2+dyp**2)*surdet(iel))))
5216 pas = sens * dt / nsp
5234 IF(isp.EQ.ispdone)
GO TO 50
5235 IF(
recvchar(iplot)%NEPID.NE.-1) cycle
5243 dx(iplot) = ( u(i1)*shp(1,iplot)
5244 & + u(i2)*shp(2,iplot)
5245 & + u(i3)*shp(3,iplot) ) * pas
5246 dy(iplot) = ( v(i1)*shp(1,iplot)
5247 & + v(i2)*shp(2,iplot)
5248 & + v(i3)*shp(3,iplot) ) * pas
5249 xp = xplot(iplot) + dx(iplot)
5250 yp = yplot(iplot) + dy(iplot)
5252 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
5253 & -(y(i3)-y(i2))*(xp-x(i2))) * surdet(iel)
5254 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
5255 & -(y(i1)-y(i3))*(xp-x(i3))) * surdet(iel)
5256 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
5257 & -(y(i2)-y(i1))*(xp-x(i1))) * surdet(iel)
5280 IF(shp(1,iplot).LT.epsilo) iso = 1
5281 IF(shp(2,iplot).LT.epsilo) iso = iso + 2
5282 IF(shp(3,iplot).LT.epsilo) iso = iso + 4
5307 ELSEIF (iso.EQ.2)
THEN 5309 ELSEIF (iso.EQ.4)
THEN 5311 ELSEIF (iso.EQ.3)
THEN 5313 IF(dx(iplot)*(y(ikle(iel,3))-yp).LT.
5314 & dy(iplot)*(x(ikle(iel,3))-xp)) ifa = 3
5315 ELSEIF (iso.EQ.6)
THEN 5317 IF (dx(iplot)*(y(ikle(iel,1))-yp).LT.
5318 & dy(iplot)*(x(ikle(iel,1))-xp)) ifa = 1
5322 IF(dx(iplot)*(y(ikle(iel,2))-yp).LT.
5323 & dy(iplot)*(x(ikle(iel,2))-xp)) ifa = 2
5326 iel = ifabor(iel,ifa)
5339 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
5340 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
5341 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
5342 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
5343 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
5344 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
5358 iproc=ifapar(ifa ,elt(iplot))
5359 iloc =ifapar(ifa+3,elt(iplot))
5364 CALL collect_char(ipid,iplot,elt(iplot),ifa,0,0,isp,nsp,
5365 & xplot(iplot),yplot(iplot),0.d0,0.d0,
5366 & dx(iplot),dy(iplot),0.d0,0.d0,
5367 & ifapar,nchdim,nchara)
5379 i1 = ikle(elt(iplot),ifa)
5380 i2 = ikle(elt(iplot),isui(ifa))
5394 a1 = (dxp*dx1 + dyp*dy1) / (dx1**2 + dy1**2)
5398 dx(iplot) = a1 * dx1
5399 dy(iplot) = a1 * dy1
5408 a1 = ((xp-x(i1))*dx1+(yp-y(i1))*dy1)/(dx1**2+dy1**2)
5409 shp( ifa ,iplot) = 1.d0 - a1
5410 shp( isui(ifa),iplot) = a1
5411 shp(isui2(ifa),iplot) = 0.d0
5412 xplot(iplot) = x(i1) + a1 * dx1
5413 yplot(iplot) = y(i1) + a1 * dy1
5423 ELSEIF(iel.EQ.0)
THEN 5429 denom = dxp*dy1-dyp*dx1
5430 IF(abs(denom).GT.1.d-12)
THEN 5431 a1 = (dxp*(yp-y(i1))-dyp*(xp-x(i1))) / denom
5435 a1 = max(min(a1,1.d0),0.d0)
5436 shp( ifa ,iplot) = 1.d0 - a1
5437 shp( isui(ifa),iplot) = a1
5438 shp(isui2(ifa),iplot) = 0.d0
5439 xplot(iplot) = x(i1) + a1 * dx1
5440 yplot(iplot) = y(i1) + a1 * dy1
5443 elt(iplot) = - sens * elt(iplot)
5448 WRITE(lu,*)
'UNEXPECTED CASE IN SCHAR11' 5449 WRITE(lu,*)
'IEL=',iel
5468 &(u,v,dt,nrk,x,y,ikle,ifabor,xplot,yplot,dx,dy,shp,elt,
5469 & nplot,npoin,nelem,nelmax,surdet,sens,
5470 & ifapar,
nchdim,nchara,add,ielm,visc,stocha)
5540 INTEGER ,
INTENT(IN) :: SENS,NCHDIM,IELM,STOCHA
5541 INTEGER ,
INTENT(IN) :: NPOIN,NELEM,NELMAX,NPLOT,NRK
5542 INTEGER ,
INTENT(IN) :: IKLE(nelmax,*),IFABOR(nelmax,3)
5543 INTEGER ,
INTENT(INOUT) :: ELT(*),NCHARA
5544 DOUBLE PRECISION,
INTENT(IN) :: U(npoin),V(npoin),SURDET(nelem)
5545 DOUBLE PRECISION,
INTENT(INOUT) :: XPLOT(*),YPLOT(*)
5546 DOUBLE PRECISION,
INTENT(INOUT) :: SHP(3,*)
5547 DOUBLE PRECISION,
INTENT(IN) :: DT
5548 DOUBLE PRECISION,
INTENT(IN) :: X(npoin),Y(npoin),VISC(npoin)
5549 DOUBLE PRECISION,
INTENT(INOUT) :: DX(*),DY(*)
5550 INTEGER,
INTENT(IN) :: IFAPAR(6,*)
5551 LOGICAL,
INTENT(IN) :: ADD
5555 INTEGER IPLOT,ISP,I1,I2,I3,I4,I5,I6
5556 INTEGER :: IEL,ISO,IFA,ISUI(3),ISUI2(3),ISPDONE
5557 INTEGER IPROC,ILOC,NSP
5558 DOUBLE PRECISION PAS,A1,DX1,DY1,DXP,DYP,XP,YP,DENOM
5559 DOUBLE PRECISION SHP11,SHP12,SHP14
5560 DOUBLE PRECISION SHP22,SHP23,SHP24
5561 DOUBLE PRECISION SHP33,SHP31,SHP34
5563 DOUBLE PRECISION RAND1,RAND2,A,C,D,E,DIFF_X,DIFF_Y,DEUXPI
5565 INTRINSIC int,max,min,sqrt,acos
5567 parameter( isui = (/ 2 , 3 , 1 /) )
5568 parameter( isui2 = (/ 3 , 1 , 2 /) )
5569 DOUBLE PRECISION,
PARAMETER :: EPSILO = -1.d-6
5575 deuxpi=2.d0*acos(-1.d0)
5594 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
5595 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
5596 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
5597 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
5598 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
5599 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
5622 dxp = u(i1)*shp(1,iplot)+u(i2)*shp(2,iplot)
5623 & +u(i3)*shp(3,iplot)
5624 dyp = v(i1)*shp(1,iplot)+v(i2)*shp(2,iplot)
5625 & +v(i3)*shp(3,iplot)
5626 nsp=max(1,int(nrk*dt*sqrt((dxp**2+dyp**2)*surdet(iel))))
5630 pas = sens * dt / nsp
5648 IF(isp.EQ.ispdone)
GO TO 50
5649 IF(
recvchar(iplot)%NEPID.NE.-1) cycle
5659 dx(iplot) = ( u(i1)*shp(1,iplot)
5660 & + u(i2)*shp(2,iplot)
5661 & + u(i3)*shp(3,iplot) ) * pas
5662 dy(iplot) = ( v(i1)*shp(1,iplot)
5663 & + v(i2)*shp(2,iplot)
5664 & + v(i3)*shp(3,iplot) ) * pas
5666 ELSEIF(ielm.EQ.12)
THEN 5669 shp11=shp(1,iplot)-shp(3,iplot)
5670 shp12=shp(2,iplot)-shp(3,iplot)
5671 shp14=3.d0*shp(3,iplot)
5672 shp22=shp(2,iplot)-shp(1,iplot)
5673 shp23=shp(3,iplot)-shp(1,iplot)
5674 shp24=3.d0*shp(1,iplot)
5675 shp33=shp(3,iplot)-shp(2,iplot)
5676 shp31=shp(1,iplot)-shp(2,iplot)
5677 shp34=3.d0*shp(2,iplot)
5678 IF( shp11.GT. 2.d0*epsilo .AND.
5679 & shp11.LT.1.d0-4.d0*epsilo .AND.
5680 & shp12.GT. 2.d0*epsilo .AND.
5681 & shp12.LT.1.d0-4.d0*epsilo .AND.
5682 & shp14.LT.1.d0-4.d0*epsilo )
THEN 5683 dx(iplot) = ( u(i1) * shp11
5685 & + u(i4) * shp14 ) * pas
5686 dy(iplot) = ( v(i1) * shp11
5688 & + v(i4) * shp14 ) * pas
5689 ELSEIF( shp22.GT. 2.d0*epsilo .AND.
5690 & shp22.LT.1.d0-4.d0*epsilo .AND.
5691 & shp23.GT. 2.d0*epsilo .AND.
5692 & shp23.LT.1.d0-4.d0*epsilo .AND.
5693 & shp24.LT.1.d0-4.d0*epsilo )
THEN 5694 dx(iplot) = ( u(i2) * shp22
5696 & + u(i4) * shp24 ) * pas
5697 dy(iplot) = ( v(i2) * shp22
5699 & + v(i4) * shp24 ) * pas
5700 ELSEIF( shp33.GT. 2.d0*epsilo .AND.
5701 & shp33.LT.1.d0-4.d0*epsilo .AND.
5702 & shp31.GT. 2.d0*epsilo .AND.
5703 & shp31.LT.1.d0-4.d0*epsilo .AND.
5704 & shp34.LT.1.d0-4.d0*epsilo )
THEN 5705 dx(iplot) = ( u(i3) * shp33
5707 & + u(i4) * shp34 ) * pas
5708 dy(iplot) = ( v(i3) * shp33
5710 & + v(i4) * shp34 ) * pas
5712 WRITE(lu,*)
'SCHAR11_STO: POINT ',iplot
5713 WRITE(lu,*)
'NOT IN ELEMENT ',elt(iplot)
5714 WRITE(lu,*)
'SHP(1,IPLOT)=',shp(1,iplot)
5715 WRITE(lu,*)
'SHP(2,IPLOT)=',shp(2,iplot)
5716 WRITE(lu,*)
'SHP(3,IPLOT)=',shp(3,iplot)
5717 WRITE(lu,*)
'EPSILO=',epsilo,
' IPID=',ipid
5722 ELSEIF(ielm.EQ.13)
THEN 5727 dx(iplot) = ( u(i1)*(2.d0*shp(1,iplot)-1.d0)*shp(1,iplot)
5728 & + u(i2)*(2.d0*shp(2,iplot)-1.d0)*shp(2,iplot)
5729 & + u(i3)*(2.d0*shp(3,iplot)-1.d0)*shp(3,iplot)
5730 & + u(i4)*4.d0*shp(1,iplot)*shp(2,iplot)
5731 & + u(i5)*4.d0*shp(2,iplot)*shp(3,iplot)
5732 & + u(i6)*4.d0*shp(3,iplot)*shp(1,iplot)) * pas
5733 dy(iplot) = ( v(i1)*(2.d0*shp(1,iplot)-1.d0)*shp(1,iplot)
5734 & + v(i2)*(2.d0*shp(2,iplot)-1.d0)*shp(2,iplot)
5735 & + v(i3)*(2.d0*shp(3,iplot)-1.d0)*shp(3,iplot)
5736 & + v(i4)*4.d0*shp(1,iplot)*shp(2,iplot)
5737 & + v(i5)*4.d0*shp(2,iplot)*shp(3,iplot)
5738 & + v(i6)*4.d0*shp(3,iplot)*shp(1,iplot)) * pas
5742 WRITE(lu,*)
'UNEXPECTED CASE IN SCHAR11_STO' 5743 WRITE(lu,*)
'IELM=',ielm
5751 IF(stocha.EQ.1)
THEN 5753 a=max(visc(i1)*shp(1,iplot)
5754 & +visc(i2)*shp(2,iplot)
5755 & +visc(i3)*shp(3,iplot),0.d0)
5757 CALL random_number(rand1)
5758 CALL random_number(rand2)
5759 c=sqrt(-2.d0*log(rand1))
5760 d=c*cos(deuxpi*rand2)
5761 e=c*sin(deuxpi*rand2)
5762 diff_x=d*sqrt(2.d0*a/0.72d0)
5763 diff_y=e*sqrt(2.d0*a/0.72d0)
5764 dx(iplot) = dx(iplot) + diff_x*sqrt(abs(pas))
5765 dy(iplot) = dy(iplot) + diff_y*sqrt(abs(pas))
5768 xp = xplot(iplot) + dx(iplot)
5769 yp = yplot(iplot) + dy(iplot)
5771 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
5772 & -(y(i3)-y(i2))*(xp-x(i2))) * surdet(iel)
5773 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
5774 & -(y(i1)-y(i3))*(xp-x(i3))) * surdet(iel)
5775 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
5776 & -(y(i2)-y(i1))*(xp-x(i1))) * surdet(iel)
5799 IF(shp(1,iplot).LT.epsilo) iso = 1
5800 IF(shp(2,iplot).LT.epsilo) iso = iso + 2
5801 IF(shp(3,iplot).LT.epsilo) iso = iso + 4
5826 ELSEIF (iso.EQ.2)
THEN 5828 ELSEIF (iso.EQ.4)
THEN 5830 ELSEIF (iso.EQ.3)
THEN 5832 IF(dx(iplot)*(y(ikle(iel,3))-yp).LT.
5833 & dy(iplot)*(x(ikle(iel,3))-xp)) ifa = 3
5834 ELSEIF (iso.EQ.6)
THEN 5836 IF (dx(iplot)*(y(ikle(iel,1))-yp).LT.
5837 & dy(iplot)*(x(ikle(iel,1))-xp)) ifa = 1
5841 IF(dx(iplot)*(y(ikle(iel,2))-yp).LT.
5842 & dy(iplot)*(x(ikle(iel,2))-xp)) ifa = 2
5845 iel = ifabor(iel,ifa)
5858 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
5859 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
5860 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
5861 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
5862 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
5863 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
5877 iproc=ifapar(ifa ,elt(iplot))
5878 iloc =ifapar(ifa+3,elt(iplot))
5883 CALL collect_char(ipid,iplot,elt(iplot),ifa,0,0,isp,nsp,
5884 & xplot(iplot),yplot(iplot),0.d0,0.d0,
5885 & dx(iplot),dy(iplot),0.d0,0.d0,
5886 & ifapar,nchdim,nchara)
5898 i1 = ikle(elt(iplot),ifa)
5899 i2 = ikle(elt(iplot),isui(ifa))
5913 a1 = (dxp*dx1 + dyp*dy1) / (dx1**2 + dy1**2)
5917 dx(iplot) = a1 * dx1
5918 dy(iplot) = a1 * dy1
5927 a1 = ((xp-x(i1))*dx1+(yp-y(i1))*dy1)/(dx1**2+dy1**2)
5928 shp( ifa ,iplot) = 1.d0 - a1
5929 shp( isui(ifa),iplot) = a1
5930 shp(isui2(ifa),iplot) = 0.d0
5931 xplot(iplot) = x(i1) + a1 * dx1
5932 yplot(iplot) = y(i1) + a1 * dy1
5942 ELSEIF(iel.EQ.0)
THEN 5948 denom = dxp*dy1-dyp*dx1
5949 IF(abs(denom).GT.1.d-12)
THEN 5950 a1 = (dxp*(yp-y(i1))-dyp*(xp-x(i1))) / denom
5954 a1 = max(min(a1,1.d0),0.d0)
5955 shp( ifa ,iplot) = 1.d0 - a1
5956 shp( isui(ifa),iplot) = a1
5957 shp(isui2(ifa),iplot) = 0.d0
5958 xplot(iplot) = x(i1) + a1 * dx1
5959 yplot(iplot) = y(i1) + a1 * dy1
5962 elt(iplot) = - sens * elt(iplot)
5967 WRITE(lu,*)
'UNEXPECTED CASE IN SCHAR11' 5968 WRITE(lu,*)
'IEL=',iel
5987 &(u,v,dt,nrk,x,y,ikle,ifabor,xplot,yplot,dx,dy,shp,elt,
5988 & nplot,nelem,nelmax,surdet,sens,
5989 & ifapar,
nchdim,nchara,add)
6042 INTEGER ,
INTENT(IN) :: SENS,NCHDIM
6043 INTEGER ,
INTENT(IN) :: NELEM,NELMAX,NPLOT,NRK
6044 INTEGER ,
INTENT(IN) :: IKLE(nelmax,4),IFABOR(nelmax,3)
6045 INTEGER ,
INTENT(INOUT) :: ELT(*),NCHARA
6046 DOUBLE PRECISION,
INTENT(IN) :: U(*),V(*)
6047 DOUBLE PRECISION,
INTENT(IN) :: SURDET(nelem)
6048 DOUBLE PRECISION,
INTENT(INOUT) :: XPLOT(*),YPLOT(*)
6049 DOUBLE PRECISION,
INTENT(INOUT) :: SHP(3,*)
6050 DOUBLE PRECISION,
INTENT(IN) :: DT
6051 DOUBLE PRECISION,
INTENT(IN) :: X(*),Y(*)
6052 DOUBLE PRECISION,
INTENT(INOUT) :: DX(*),DY(*)
6053 INTEGER,
INTENT(IN) :: IFAPAR(6,*)
6054 LOGICAL,
INTENT(IN) :: ADD
6058 INTEGER :: IPLOT,ISP,I1,I2,I3,IEL,ISO,IFA,ISUI(3),ISUI2(3)
6059 INTEGER IPROC,ILOC,ISPDONE,NSP
6060 DOUBLE PRECISION PAS,A1,DX1,DY1,DXP,DYP,XP,YP,DENOM
6061 DOUBLE PRECISION SHP11,SHP12,SHP14
6062 DOUBLE PRECISION SHP22,SHP23,SHP24
6063 DOUBLE PRECISION SHP33,SHP31,SHP34
6065 INTRINSIC int,max,min,sqrt
6067 parameter( isui = (/ 2 , 3 , 1 /) )
6068 parameter( isui2 = (/ 3 , 1 , 2 /) )
6069 DOUBLE PRECISION,
PARAMETER :: EPSILO = -1.d-6
6092 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
6093 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
6094 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
6095 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
6096 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
6097 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
6114 shp11=shp(1,iplot)-shp(3,iplot)
6115 shp12=shp(2,iplot)-shp(3,iplot)
6116 shp14=3.d0*shp(3,iplot)
6117 shp22=shp(2,iplot)-shp(1,iplot)
6118 shp23=shp(3,iplot)-shp(1,iplot)
6119 shp24=3.d0*shp(1,iplot)
6120 shp33=shp(3,iplot)-shp(2,iplot)
6121 shp31=shp(1,iplot)-shp(2,iplot)
6122 shp34=3.d0*shp(2,iplot)
6123 IF( shp11.GT. 2.d0*epsilo .AND.
6124 & shp11.LT.1.d0-4.d0*epsilo .AND.
6125 & shp12.GT. 2.d0*epsilo .AND.
6126 & shp12.LT.1.d0-4.d0*epsilo .AND.
6127 & shp14.LT.1.d0-4.d0*epsilo )
THEN 6128 dxp = u(ikle(iel,1)) * shp11
6129 & + u(ikle(iel,2)) * shp12
6130 & + u(ikle(iel,4)) * shp14
6131 dyp = v(ikle(iel,1)) * shp11
6132 & + v(ikle(iel,2)) * shp12
6133 & + v(ikle(iel,4)) * shp14
6134 ELSEIF( shp22.GT. 2.d0*epsilo .AND.
6135 & shp22.LT.1.d0-4.d0*epsilo .AND.
6136 & shp23.GT. 2.d0*epsilo .AND.
6137 & shp23.LT.1.d0-4.d0*epsilo .AND.
6138 & shp24.LT.1.d0-4.d0*epsilo )
THEN 6139 dxp = u(ikle(iel,2)) * shp22
6140 & + u(ikle(iel,3)) * shp23
6141 & + u(ikle(iel,4)) * shp24
6142 dyp = v(ikle(iel,2)) * shp22
6143 & + v(ikle(iel,3)) * shp23
6144 & + v(ikle(iel,4)) * shp24
6145 ELSEIF( shp33.GT. 2.d0*epsilo .AND.
6146 & shp33.LT.1.d0-4.d0*epsilo .AND.
6147 & shp31.GT. 2.d0*epsilo .AND.
6148 & shp31.LT.1.d0-4.d0*epsilo .AND.
6149 & shp34.LT.1.d0-4.d0*epsilo )
THEN 6150 dxp = u(ikle(iel,3)) * shp33
6151 & + u(ikle(iel,1)) * shp31
6152 & + u(ikle(iel,4)) * shp34
6153 dyp = v(ikle(iel,3)) * shp33
6154 & + v(ikle(iel,1)) * shp31
6155 & + v(ikle(iel,4)) * shp34
6157 WRITE(lu,*)
'SCHAR12: POINT ',iplot
6158 WRITE(lu,*)
' NOT IN ELEMENT ',iel
6159 WRITE(lu,*)
'SHP(1,IPLOT)=',shp(1,iplot)
6160 WRITE(lu,*)
'SHP(2,IPLOT)=',shp(2,iplot)
6161 WRITE(lu,*)
'SHP(3,IPLOT)=',shp(3,iplot)
6162 WRITE(lu,*)
'EPSILO=',epsilo,
' IPID=',ipid,
' CASE 1' 6163 WRITE(lu,*)
'SHP11=',shp11
6164 WRITE(lu,*)
'SHP12=',shp12
6165 WRITE(lu,*)
'SHP14=',shp14
6166 WRITE(lu,*)
'SHP22=',shp22
6167 WRITE(lu,*)
'SHP23=',shp23
6168 WRITE(lu,*)
'SHP24=',shp24
6169 WRITE(lu,*)
'SHP33=',shp33
6170 WRITE(lu,*)
'SHP31=',shp31
6171 WRITE(lu,*)
'SHP34=',shp34
6175 nsp=max(1,int(nrk*dt*sqrt((dxp**2+dyp**2)*surdet(iel))))
6197 IF(isp.EQ.ispdone)
GO TO 50
6198 IF(
recvchar(iplot)%NEPID.NE.-1) cycle
6206 shp11=shp(1,iplot)-shp(3,iplot)
6207 shp12=shp(2,iplot)-shp(3,iplot)
6208 shp14=3.d0*shp(3,iplot)
6209 shp22=shp(2,iplot)-shp(1,iplot)
6210 shp23=shp(3,iplot)-shp(1,iplot)
6211 shp24=3.d0*shp(1,iplot)
6212 shp33=shp(3,iplot)-shp(2,iplot)
6213 shp31=shp(1,iplot)-shp(2,iplot)
6214 shp34=3.d0*shp(2,iplot)
6215 IF( shp11.GT. 2.d0*epsilo .AND.
6216 & shp11.LT.1.d0-4.d0*epsilo .AND.
6217 & shp12.GT. 2.d0*epsilo .AND.
6218 & shp12.LT.1.d0-4.d0*epsilo .AND.
6219 & shp14.LT.1.d0-4.d0*epsilo )
THEN 6220 dx(iplot) = ( u(ikle(iel,1)) * shp11
6221 & + u(ikle(iel,2)) * shp12
6222 & + u(ikle(iel,4)) * shp14 ) * pas
6223 dy(iplot) = ( v(ikle(iel,1)) * shp11
6224 & + v(ikle(iel,2)) * shp12
6225 & + v(ikle(iel,4)) * shp14 ) * pas
6226 ELSEIF( shp22.GT. 2.d0*epsilo .AND.
6227 & shp22.LT.1.d0-4.d0*epsilo .AND.
6228 & shp23.GT. 2.d0*epsilo .AND.
6229 & shp23.LT.1.d0-4.d0*epsilo .AND.
6230 & shp24.LT.1.d0-4.d0*epsilo )
THEN 6231 dx(iplot) = ( u(ikle(iel,2)) * shp22
6232 & + u(ikle(iel,3)) * shp23
6233 & + u(ikle(iel,4)) * shp24 ) * pas
6234 dy(iplot) = ( v(ikle(iel,2)) * shp22
6235 & + v(ikle(iel,3)) * shp23
6236 & + v(ikle(iel,4)) * shp24 ) * pas
6237 ELSEIF( shp33.GT. 2.d0*epsilo .AND.
6238 & shp33.LT.1.d0-4.d0*epsilo .AND.
6239 & shp31.GT. 2.d0*epsilo .AND.
6240 & shp31.LT.1.d0-4.d0*epsilo .AND.
6241 & shp34.LT.1.d0-4.d0*epsilo )
THEN 6242 dx(iplot) = ( u(ikle(iel,3)) * shp33
6243 & + u(ikle(iel,1)) * shp31
6244 & + u(ikle(iel,4)) * shp34 ) * pas
6245 dy(iplot) = ( v(ikle(iel,3)) * shp33
6246 & + v(ikle(iel,1)) * shp31
6247 & + v(ikle(iel,4)) * shp34 ) * pas
6249 WRITE(lu,*)
'SCHAR12: POINT ',iplot
6250 WRITE(lu,*)
' NOT IN ELEMENT ',elt(iplot)
6251 WRITE(lu,*)
'SHP(1,IPLOT)=',shp(1,iplot)
6252 WRITE(lu,*)
'SHP(2,IPLOT)=',shp(2,iplot)
6253 WRITE(lu,*)
'SHP(3,IPLOT)=',shp(3,iplot)
6254 WRITE(lu,*)
'EPSILO=',epsilo,
' IPID=',ipid,
' CASE 2' 6258 xp = xplot(iplot) + dx(iplot)
6259 yp = yplot(iplot) + dy(iplot)
6261 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
6262 & -(y(i3)-y(i2))*(xp-x(i2))) * surdet(iel)
6263 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
6264 & -(y(i1)-y(i3))*(xp-x(i3))) * surdet(iel)
6265 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
6266 & -(y(i2)-y(i1))*(xp-x(i1))) * surdet(iel)
6289 IF(shp(1,iplot).LT.epsilo) iso = 1
6290 IF(shp(2,iplot).LT.epsilo) iso = iso + 2
6291 IF(shp(3,iplot).LT.epsilo) iso = iso + 4
6305 ELSEIF (iso.EQ.2)
THEN 6307 ELSEIF (iso.EQ.4)
THEN 6309 ELSEIF (iso.EQ.3)
THEN 6311 IF(dx(iplot)*(y(ikle(iel,3))-yp).LT.
6312 & dy(iplot)*(x(ikle(iel,3))-xp)) ifa = 3
6313 ELSEIF (iso.EQ.6)
THEN 6315 IF (dx(iplot)*(y(ikle(iel,1))-yp).LT.
6316 & dy(iplot)*(x(ikle(iel,1))-xp)) ifa = 1
6319 IF(dx(iplot)*(y(ikle(iel,2))-yp).LT.
6320 & dy(iplot)*(x(ikle(iel,2))-xp)) ifa = 2
6323 iel = ifabor(iel,ifa)
6336 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
6337 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
6338 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
6339 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
6340 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
6341 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)
6355 iproc=ifapar(ifa ,elt(iplot))
6356 iloc =ifapar(ifa+3,elt(iplot))
6361 CALL collect_char(ipid,iplot,elt(iplot),ifa,0,0,isp,nsp,
6362 & xplot(iplot),yplot(iplot),0.d0,0.d0,
6363 & dx(iplot),dy(iplot),0.d0,0.d0,
6364 & ifapar,nchdim,nchara)
6376 i1 = ikle(elt(iplot),ifa)
6377 i2 = ikle(elt(iplot),isui(ifa))
6388 a1 = (dxp*dx1 + dyp*dy1) / (dx1**2 + dy1**2)
6389 dx(iplot) = a1 * dx1
6390 dy(iplot) = a1 * dy1
6392 a1 = ((xp-x(i1))*dx1+(yp-y(i1))*dy1)/(dx1**2+dy1**2)
6393 shp( ifa ,iplot) = 1.d0 - a1
6394 shp( isui(ifa),iplot) = a1
6395 shp(isui2(ifa),iplot) = 0.d0
6396 xplot(iplot) = x(i1) + a1 * dx1
6397 yplot(iplot) = y(i1) + a1 * dy1
6407 ELSEIF(iel.EQ.0)
THEN 6413 denom = dxp*dy1-dyp*dx1
6414 IF(abs(denom).GT.1.d-12)
THEN 6415 a1 = (dxp*(yp-y(i1))-dyp*(xp-x(i1))) / denom
6419 a1 = max(min(a1,1.d0),0.d0)
6420 shp( ifa ,iplot) = 1.d0 - a1
6421 shp( isui(ifa),iplot) = a1
6422 shp(isui2(ifa),iplot) = 0.d0
6423 xplot(iplot) = x(i1) + a1 * dx1
6424 yplot(iplot) = y(i1) + a1 * dy1
6427 elt(iplot) = - sens * elt(iplot)
6432 WRITE(lu,*)
'UNEXPECTED CASE IN SCHAR12' 6433 WRITE(lu,*)
'IEL=',iel
6452 &(u,v,dt,nrk,x,y,ikle,ifabor,xplot,yplot,dx,dy,shp,elt,
6453 & nplot,nelem,nelmax,surdet,sens,
6454 & ifapar,
nchdim,nchara,add)
6509 INTEGER ,
INTENT(IN) :: SENS,NCHDIM
6510 INTEGER ,
INTENT(IN) :: NELEM,NELMAX,NPLOT,NRK
6511 INTEGER ,
INTENT(IN) :: IKLE(nelmax,6),IFABOR(nelmax,3)
6512 INTEGER ,
INTENT(INOUT) :: ELT(nplot),NCHARA
6514 DOUBLE PRECISION,
INTENT(IN) :: U(*),V(*),SURDET(nelem)
6515 DOUBLE PRECISION,
INTENT(INOUT) :: XPLOT(nplot),YPLOT(nplot)
6516 DOUBLE PRECISION,
INTENT(INOUT) :: SHP(3,nplot)
6517 DOUBLE PRECISION,
INTENT(IN) :: DT
6518 DOUBLE PRECISION,
INTENT(IN) :: X(*),Y(*)
6519 DOUBLE PRECISION,
INTENT(INOUT) :: DX(nplot),DY(nplot)
6520 INTEGER,
INTENT(IN) :: IFAPAR(6,*)
6521 LOGICAL,
INTENT(IN) :: ADD
6525 INTEGER IPLOT,ISP,I1,I2,I3,I4,I5,I6,IEL,ISO,IFA
6526 INTEGER :: ISUI(3),ISUI2(3)
6527 INTEGER IPROC,ILOC,ISPDONE,NSP
6528 DOUBLE PRECISION PAS,A1,DX1,DY1,DXP,DYP,XP,YP,DENOM
6530 INTRINSIC int,max,min,sqrt
6532 parameter( isui = (/ 2 , 3 , 1 /) )
6533 parameter( isui2 = (/ 3 , 1 , 2 /) )
6534 DOUBLE PRECISION,
PARAMETER :: EPSILO = -1.d-6
6557 shp(1,iplot) = ((x(i3)-x(i2))*(yp-y(i2))
6558 & -(y(i3)-y(i2))*(xp-x(i2)))*surdet(iel)
6559 shp(2,iplot) = ((x(i1)-x(i3))*(yp-y(i3))
6560 & -(y(i1)-y(i3))*(xp-x(i3)))*surdet(iel)
6561 shp(3,iplot) = ((x(i2)-x(i1))*(yp-y(i1))
6562 & -(y(i2)-y(i1))*(xp-x(i1)))*surdet(iel)