remove unnecessary ifs and optimize parallel td solve
This commit is contained in:
parent
75f0feaa02
commit
6933297130
1 changed files with 145 additions and 123 deletions
268
m_compact.f90
268
m_compact.f90
|
|
@ -202,6 +202,10 @@
|
|||
INTEGER :: i,j
|
||||
REAL*8 :: r1,r2,h1
|
||||
|
||||
integer (kind=MPI_INTEGER_KIND) :: idx
|
||||
integer (kind=MPI_INTEGER_KIND),dimension(2) :: requests
|
||||
logical :: flagLow, flagUpp
|
||||
|
||||
h1=1./h
|
||||
r1=7./3.
|
||||
r2=1./12.
|
||||
|
|
@ -209,70 +213,89 @@
|
|||
!if (myid.eq.0) write(*,*) "parallel dfp commuication"
|
||||
if (myid.eq.master) then
|
||||
|
||||
call MPI_ISEND (x(1,1), 2*nd, MPI_REAL8, numprocs-1, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_RECV (xu, 2*nd, MPI_REAL8, myid+1, myid+1, &
|
||||
MPI_COMM_TASK, mpi_status, mpi_err)
|
||||
|
||||
call MPI_ISEND (x(1,n-1), 2*nd, MPI_REAL8, myid+1, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_RECV (xl, 2*nd, MPI_REAL8, numprocs-1, numprocs-1, &
|
||||
MPI_COMM_TASK, mpi_status, mpi_err)
|
||||
|
||||
elseif (myid.eq.numprocs-1) then
|
||||
|
||||
call MPI_ISEND (x(1,1), 2*nd, MPI_REAL8, myid-1, myid, &
|
||||
call MPI_ISEND (x(1,1), 2*nd, MPI_REAL8, numprocs-1, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_RECV (xu, 2*nd, MPI_REAL8, 0, 0, &
|
||||
MPI_COMM_TASK, mpi_status, mpi_err)
|
||||
call MPI_IRECV (xl, 2*nd, MPI_REAL8, numprocs-1, numprocs-1, &
|
||||
MPI_COMM_TASK, requests(1), mpi_err)
|
||||
|
||||
call MPI_IRECV (xu, 2*nd, MPI_REAL8, myid+1, myid+1, &
|
||||
MPI_COMM_TASK, requests(2), mpi_err)
|
||||
|
||||
elseif (myid.eq.numprocs-1) then
|
||||
|
||||
call MPI_ISEND (x(1,n-1), 2*nd, MPI_REAL8, 0, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_RECV (xl, 2*nd, MPI_REAL8, myid-1, myid-1, &
|
||||
MPI_COMM_TASK, mpi_status, mpi_err)
|
||||
|
||||
else
|
||||
|
||||
call MPI_ISEND (x(1,1), 2*nd, MPI_REAL8, myid-1, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_RECV (xu, 2*nd, MPI_REAL8, myid+1, myid+1, &
|
||||
MPI_COMM_TASK, mpi_status, mpi_err)
|
||||
call MPI_IRECV (xl, 2*nd, MPI_REAL8, myid-1, myid-1, &
|
||||
MPI_COMM_TASK, requests(1), mpi_err)
|
||||
|
||||
call MPI_IRECV (xu, 2*nd, MPI_REAL8, 0, 0, &
|
||||
MPI_COMM_TASK, requests(2), mpi_err)
|
||||
|
||||
else
|
||||
|
||||
call MPI_ISEND (x(1,n-1), 2*nd, MPI_REAL8, myid+1, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_RECV (xl, 2*nd, MPI_REAL8, myid-1, myid-1, &
|
||||
MPI_COMM_TASK, mpi_status, mpi_err)
|
||||
call MPI_ISEND (x(1,1), 2*nd, MPI_REAL8, myid-1, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_IRECV (xl, 2*nd, MPI_REAL8, myid-1, myid-1, &
|
||||
MPI_COMM_TASK, requests(1), mpi_err)
|
||||
|
||||
call MPI_IRECV (xu, 2*nd, MPI_REAL8, myid+1, myid+1, &
|
||||
MPI_COMM_TASK, requests(2), mpi_err)
|
||||
|
||||
endif
|
||||
|
||||
DO j=1,nd
|
||||
dx(j,1) =(r1*( x(j,2)-xl(j,2)) +r2*( x(j,3)-xl(j,1))) *h1
|
||||
ENDDO
|
||||
|
||||
DO j=1,nd
|
||||
dx(j,2) =(r1*( x(j,3)- x(j,1)) +r2*( x(j,4)-xl(j,2))) *h1
|
||||
ENDDO
|
||||
|
||||
DO j=1,nd
|
||||
dx(j,n-1)=(r1*( x(j,n)- x(j,n-2))+r2*(xu(j,1)- x(j,n-3)))*h1
|
||||
ENDDO
|
||||
|
||||
DO j=1,nd
|
||||
dx(j,n) =(r1*(xu(j,1)- x(j,n-1))+r2*(xu(j,2)- x(j,n-2)))*h1
|
||||
ENDDO
|
||||
|
||||
DO i=3,n-2
|
||||
DO j=1,nd
|
||||
dx(j,i)=(r1*(x(j,i+1)-x(j,i-1))+r2*(x(j,i+2)-x(j,i-2)))*h1
|
||||
ENDDO
|
||||
ENDDO
|
||||
|
||||
flagLow = .true.
|
||||
flagUpp = .true.
|
||||
|
||||
do while (flagLow.or.flagUpp)
|
||||
|
||||
call MPI_WAITANY (2, requests, idx, mpi_status, mpi_err)
|
||||
|
||||
!call MPI_WAIT (request1, mpi_status, mpi_err)
|
||||
|
||||
if (idx.eq.1) then
|
||||
DO j=1,nd
|
||||
dx(j,1) =(r1*( x(j,2)-xl(j,2)) +r2*( x(j,3)-xl(j,1))) *h1
|
||||
ENDDO
|
||||
|
||||
DO j=1,nd
|
||||
dx(j,2) =(r1*( x(j,3)- x(j,1)) +r2*( x(j,4)-xl(j,2))) *h1
|
||||
ENDDO
|
||||
|
||||
flagLow = .false.
|
||||
endif
|
||||
|
||||
!call MPI_WAIT (request2, mpi_status, mpi_err)
|
||||
|
||||
if (idx.eq.2) then
|
||||
DO j=1,nd
|
||||
dx(j,n-1)=(r1*( x(j,n)- x(j,n-2))+r2*(xu(j,1)- x(j,n-3)))*h1
|
||||
ENDDO
|
||||
|
||||
DO j=1,nd
|
||||
dx(j,n) =(r1*(xu(j,1)- x(j,n-1))+r2*(xu(j,2)- x(j,n-2)))*h1
|
||||
ENDDO
|
||||
|
||||
flagUpp = .false.
|
||||
endif
|
||||
enddo
|
||||
|
||||
IF (dir.eq.1) CALL ctdslv(dx,vz1,zz1,nd,n,nall) ! x-direction
|
||||
IF (dir.eq.2) CALL ctdslv(dx,vz1,zz1,nd,n,nall) ! x-direction
|
||||
|
|
@ -291,6 +314,10 @@
|
|||
|
||||
REAL*8,DIMENSION(nd,2) :: xu, xl
|
||||
|
||||
integer (kind=MPI_INTEGER_KIND) :: idx
|
||||
integer (kind=MPI_INTEGER_KIND),dimension(2) :: requests
|
||||
logical :: flagLow, flagUpp
|
||||
|
||||
h2=1./(h*h)
|
||||
r1=6.
|
||||
r2=3./8.
|
||||
|
|
@ -298,81 +325,48 @@
|
|||
!if (myid.eq.0) write(*,*) "parallel d2fp commuication"
|
||||
if (myid.eq.master) then
|
||||
|
||||
call MPI_ISEND (x(1,1), 2*nd, MPI_REAL8, numprocs-1, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_RECV (xu, 2*nd, MPI_REAL8, myid+1, myid+1, &
|
||||
MPI_COMM_TASK, mpi_status, mpi_err)
|
||||
|
||||
call MPI_ISEND (x(1,n-1), 2*nd, MPI_REAL8, myid+1, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_RECV (xl, 2*nd, MPI_REAL8, numprocs-1, numprocs-1, &
|
||||
MPI_COMM_TASK, mpi_status, mpi_err)
|
||||
|
||||
elseif (myid.eq.numprocs-1) then
|
||||
|
||||
call MPI_ISEND (x(1,1), 2*nd, MPI_REAL8, myid-1, myid, &
|
||||
call MPI_ISEND (x(1,1), 2*nd, MPI_REAL8, numprocs-1, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_RECV (xu, 2*nd, MPI_REAL8, 0, 0, &
|
||||
MPI_COMM_TASK, mpi_status, mpi_err)
|
||||
call MPI_IRECV (xl, 2*nd, MPI_REAL8, numprocs-1, numprocs-1, &
|
||||
MPI_COMM_TASK, requests(1), mpi_err)
|
||||
|
||||
call MPI_IRECV (xu, 2*nd, MPI_REAL8, myid+1, myid+1, &
|
||||
MPI_COMM_TASK, requests(2), mpi_err)
|
||||
|
||||
elseif (myid.eq.numprocs-1) then
|
||||
|
||||
call MPI_ISEND (x(1,n-1), 2*nd, MPI_REAL8, 0, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_RECV (xl, 2*nd, MPI_REAL8, myid-1, myid-1, &
|
||||
MPI_COMM_TASK, mpi_status, mpi_err)
|
||||
|
||||
else
|
||||
|
||||
call MPI_ISEND (x(1,1), 2*nd, MPI_REAL8, myid-1, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_RECV (xu, 2*nd, MPI_REAL8, myid+1, myid+1, &
|
||||
MPI_COMM_TASK, mpi_status, mpi_err)
|
||||
call MPI_IRECV (xl, 2*nd, MPI_REAL8, myid-1, myid-1, &
|
||||
MPI_COMM_TASK, requests(1), mpi_err)
|
||||
|
||||
call MPI_IRECV (xu, 2*nd, MPI_REAL8, 0, 0, &
|
||||
MPI_COMM_TASK, requests(2), mpi_err)
|
||||
|
||||
else
|
||||
|
||||
call MPI_ISEND (x(1,n-1), 2*nd, MPI_REAL8, myid+1, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_RECV (xl, 2*nd, MPI_REAL8, myid-1, myid-1, &
|
||||
MPI_COMM_TASK, mpi_status, mpi_err)
|
||||
call MPI_ISEND (x(1,1), 2*nd, MPI_REAL8, myid-1, myid, &
|
||||
MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
|
||||
call MPI_IRECV (xl, 2*nd, MPI_REAL8, myid-1, myid-1, &
|
||||
MPI_COMM_TASK, requests(1), mpi_err)
|
||||
|
||||
call MPI_IRECV (xu, 2*nd, MPI_REAL8, myid+1, myid+1, &
|
||||
MPI_COMM_TASK, requests(2), mpi_err)
|
||||
|
||||
endif
|
||||
|
||||
|
||||
DO j=1,nd
|
||||
|
||||
t1 = (x(j,2)-2.*x(j,1)+xl(j,2))
|
||||
t2 = (x(j,3)-2.*x(j,1)+xl(j,1))
|
||||
dx(j,1)=(r1*t1+r2*t2)*h2
|
||||
|
||||
ENDDO
|
||||
|
||||
DO j=1,nd
|
||||
|
||||
t1 = (x(j,3)-2.*x(j,2)+ x(j,1))
|
||||
t2 = (x(j,4)-2.*x(j,2)+xl(j,2))
|
||||
dx(j,2)=(r1*t1+r2*t2)*h2
|
||||
|
||||
ENDDO
|
||||
|
||||
DO j=1,nd
|
||||
|
||||
t1 = ( x(j,n)-2.*x(j,n-1)+x(j,n-2))
|
||||
t2 = (xu(j,1)-2.*x(j,n-1)+x(j,n-3))
|
||||
dx(j,n-1)=(r1*t1+r2*t2)*h2
|
||||
|
||||
ENDDO
|
||||
|
||||
DO j=1,nd
|
||||
|
||||
t1 = (xu(j,1)-2.*x(j,n)+x(j,n-1))
|
||||
t2 = (xu(j,2)-2.*x(j,n)+x(j,n-2))
|
||||
dx(j,n)=(r1*t1+r2*t2)*h2
|
||||
|
||||
ENDDO
|
||||
|
||||
DO i=3,n-2
|
||||
DO j=1,nd
|
||||
|
||||
|
|
@ -383,6 +377,61 @@
|
|||
ENDDO
|
||||
ENDDO
|
||||
|
||||
|
||||
flagLow = .true.
|
||||
flagUpp = .true.
|
||||
|
||||
do while (flagLow.or.flagUpp)
|
||||
|
||||
call MPI_WAITANY (2, requests, idx, mpi_status, mpi_err)
|
||||
|
||||
!call MPI_WAIT (request1, mpi_status, mpi_err)
|
||||
|
||||
if (idx.eq.1) then
|
||||
|
||||
DO j=1,nd
|
||||
|
||||
t1 = (x(j,2)-2.*x(j,1)+xl(j,2))
|
||||
t2 = (x(j,3)-2.*x(j,1)+xl(j,1))
|
||||
dx(j,1)=(r1*t1+r2*t2)*h2
|
||||
|
||||
ENDDO
|
||||
|
||||
DO j=1,nd
|
||||
|
||||
t1 = (x(j,3)-2.*x(j,2)+ x(j,1))
|
||||
t2 = (x(j,4)-2.*x(j,2)+xl(j,2))
|
||||
dx(j,2)=(r1*t1+r2*t2)*h2
|
||||
|
||||
ENDDO
|
||||
|
||||
flagLow = .false.
|
||||
endif
|
||||
|
||||
!call MPI_WAIT (request2, mpi_status, mpi_err)
|
||||
|
||||
if (idx.eq.2) then
|
||||
|
||||
DO j=1,nd
|
||||
|
||||
t1 = ( x(j,n)-2.*x(j,n-1)+x(j,n-2))
|
||||
t2 = (xu(j,1)-2.*x(j,n-1)+x(j,n-3))
|
||||
dx(j,n-1)=(r1*t1+r2*t2)*h2
|
||||
|
||||
ENDDO
|
||||
|
||||
DO j=1,nd
|
||||
|
||||
t1 = (xu(j,1)-2.*x(j,n)+x(j,n-1))
|
||||
t2 = (xu(j,2)-2.*x(j,n)+x(j,n-2))
|
||||
dx(j,n)=(r1*t1+r2*t2)*h2
|
||||
|
||||
ENDDO
|
||||
|
||||
flagUpp = .false.
|
||||
endif
|
||||
enddo
|
||||
|
||||
IF (dir.eq.1) CALL ctdslv(dx,vz2,zz2,nd,n,nall) ! x-direction
|
||||
IF (dir.eq.2) CALL ctdslv(dx,vz2,zz2,nd,n,nall) ! y-direction
|
||||
IF (dir.eq.3) CALL ctdslv(dx,vz2,zz2,nd,n,nall) ! z-direction
|
||||
|
|
@ -614,13 +663,12 @@
|
|||
x1_ = x1_ + z(i)*r(:,i)
|
||||
enddo
|
||||
|
||||
! call MPI_ALLREDUCE(x1_, x1, nd, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
||||
call MPI_REDUCE(x1_, x1, nd, MPI_REAL8, MPI_SUM, master, MPI_COMM_TASK, mpi_err)
|
||||
|
||||
! first process
|
||||
if (myid.eq.0) then
|
||||
|
||||
CALL MPI_ISEND(x1, nd, MPI_REAL8, np-1, 100, MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
CALL MPI_SSEND(x1, nd, MPI_REAL8, np-1, 100, MPI_COMM_TASK, mpi_err)
|
||||
|
||||
r(:,1) = x1
|
||||
r(:,2) = r(:,2) - x1
|
||||
|
|
@ -945,30 +993,22 @@
|
|||
DO j=1,nd
|
||||
t1 = (x(j,n)-2.*x(j,n-1)+x(j,n-2))
|
||||
t2 = (x(j,1)-2.*x(j,n-1)+x(j,n-3))
|
||||
IF (x(j,n).eq.x(j,n-1).and.x(j,n-1).eq.x(j,n-2)) t1=0.
|
||||
IF (x(j,1).eq.x(j,n-1).and.x(j,n-1).eq.x(j,n-3)) t2=0.
|
||||
dx(j,n-1)=(r1*t1+r2*t2)
|
||||
|
||||
t1 = (x(j,1)-2.*x(j,n)+x(j,n-1))
|
||||
t2 = (x(j,2)-2.*x(j,n)+x(j,n-2))
|
||||
IF (x(j,1).eq.x(j,n).and.x(j,n).eq.x(j,n-1)) t1=0.
|
||||
IF (x(j,2).eq.x(j,n).and.x(j,n).eq.x(j,n-2)) t2=0.
|
||||
! dx(j,n)=(r1*(x(j,1)-2.*x(j,n)+x(j,n-1)) &
|
||||
! +r2*(x(j,2)-2.*x(j,n)+x(j,n-2)))
|
||||
dx(j,n)=(r1*t1+r2*t2)
|
||||
|
||||
t1 = (x(j,2)-2.*x(j,1)+x(j,n))
|
||||
t2 = (x(j,3)-2.*x(j,1)+x(j,n-1))
|
||||
IF (x(j,2).eq.x(j,1).and.x(j,1).eq.x(j,n)) t1=0.
|
||||
IF (x(j,3).eq.x(j,1).and.x(j,1).eq.x(j,n-1)) t2=0.
|
||||
! dx(j,1)=(r1*(x(j,2)-2.*x(j,1)+x(j,n)) &
|
||||
! +r2*(x(j,3)-2.*x(j,1)+x(j,n-1)))
|
||||
dx(j,1)=(r1*t1+r2*t2)
|
||||
|
||||
t1 = (x(j,3)-2.*x(j,2)+x(j,1))
|
||||
t2 = (x(j,4)-2.*x(j,2)+x(j,n))
|
||||
IF (x(j,3).eq.x(j,2).and.x(j,2).eq.x(j,1)) t1=0.
|
||||
IF (x(j,4).eq.x(j,2).and.x(j,2).eq.x(j,n)) t2=0.
|
||||
! dx(j,2)=(r1*(x(j,3)-2.*x(j,2)+x(j,1)) &
|
||||
! +r2*(x(j,4)-2.*x(j,2)+x(j,n)))
|
||||
dx(j,2)=(r1*t1+r2*t2)
|
||||
|
|
@ -982,8 +1022,6 @@
|
|||
DO j=1,nd
|
||||
t1 = (x(j,i+1)-2.*x(j,i)+x(j,i-1))
|
||||
t2 = (x(j,i+2)-2.*x(j,i)+x(j,i-2))
|
||||
IF (x(j,i+1).eq.x(j,i).and.x(j,i).eq.x(j,i-1)) t1=0.
|
||||
IF (x(j,i+2).eq.x(j,i).and.x(j,i).eq.x(j,i-2)) t2=0.
|
||||
! dx(j,i)=(r1*(x(j,i+1)-2.*x(j,i)+x(j,i-1)) &
|
||||
! +r2*(x(j,i+2)-2.*x(j,i)+x(j,i-2)))
|
||||
dx(j,i)=(r1*t1+r2*t2)
|
||||
|
|
@ -1059,30 +1097,22 @@
|
|||
|
||||
t1 = ( x(j,n)-2.*x(j,n-1)+x(j,n-2))
|
||||
t2 = (xu(j,1)-2.*x(j,n-1)+x(j,n-3))
|
||||
IF ( x(j,n).eq.x(j,n-1).and.x(j,n-1).eq.x(j,n-2)) t1=0.
|
||||
IF (xu(j,1).eq.x(j,n-1).and.x(j,n-1).eq.x(j,n-3)) t2=0.
|
||||
dx(j,n-1)=(r1*t1+r2*t2)*h2
|
||||
|
||||
t1 = (xu(j,1)-2.*x(j,n)+x(j,n-1))
|
||||
t2 = (xu(j,2)-2.*x(j,n)+x(j,n-2))
|
||||
IF (xu(j,1).eq.x(j,n).and.x(j,n).eq.x(j,n-1)) t1=0.
|
||||
IF (xu(j,2).eq.x(j,n).and.x(j,n).eq.x(j,n-2)) t2=0.
|
||||
! dx(j,n)=(r1*(x(j,1)-2.*x(j,n)+x(j,n-1)) &
|
||||
! +r2*(x(j,2)-2.*x(j,n)+x(j,n-2)))
|
||||
dx(j,n)=(r1*t1+r2*t2)*h2
|
||||
|
||||
t1 = (x(j,2)-2.*x(j,1)+xl(j,2))
|
||||
t2 = (x(j,3)-2.*x(j,1)+xl(j,1))
|
||||
IF (x(j,2).eq.x(j,1).and.x(j,1).eq.xl(j,2)) t1=0.
|
||||
IF (x(j,3).eq.x(j,1).and.x(j,1).eq.xl(j,1)) t2=0.
|
||||
! dx(j,1)=(r1*(x(j,2)-2.*x(j,1)+x(j,n)) &
|
||||
! +r2*(x(j,3)-2.*x(j,1)+x(j,n-1)))
|
||||
dx(j,1)=(r1*t1+r2*t2)*h2
|
||||
|
||||
t1 = (x(j,3)-2.*x(j,2)+ x(j,1))
|
||||
t2 = (x(j,4)-2.*x(j,2)+xl(j,2))
|
||||
IF (x(j,3).eq.x(j,2).and.x(j,2).eq.x(j,1)) t1=0.
|
||||
IF (x(j,4).eq.x(j,2).and.x(j,2).eq.xl(j,2)) t2=0.
|
||||
! dx(j,2)=(r1*(x(j,3)-2.*x(j,2)+x(j,1)) &
|
||||
! +r2*(x(j,4)-2.*x(j,2)+x(j,n)))
|
||||
dx(j,2)=(r1*t1+r2*t2)*h2
|
||||
|
|
@ -1094,8 +1124,6 @@
|
|||
|
||||
t1 = (x(j,i+1)-2.*x(j,i)+x(j,i-1))
|
||||
t2 = (x(j,i+2)-2.*x(j,i)+x(j,i-2))
|
||||
IF (x(j,i+1).eq.x(j,i).and.x(j,i).eq.x(j,i-1)) t1=0.
|
||||
IF (x(j,i+2).eq.x(j,i).and.x(j,i).eq.x(j,i-2)) t2=0.
|
||||
! dx(j,i)=(r1*(x(j,i+1)-2.*x(j,i)+x(j,i-1)) &
|
||||
! +r2*(x(j,i+2)-2.*x(j,i)+x(j,i-2)))
|
||||
dx(j,i)=(r1*t1+r2*t2)*h2
|
||||
|
|
@ -1152,10 +1180,6 @@
|
|||
dx(j,2)=(x(j,3)-2.*x(j,2)+x(j,1))
|
||||
dx(j,n-1)=(x(j,n)-2.*x(j,n-1)+x(j,n-2))
|
||||
dx(j,n)=(a*x(j,n)+b*x(j,n-1)+c*x(j,n-2)+e*x(j,n-3))
|
||||
IF (x(j,1).eq.x(j,2).and.x(j,2).eq.x(j,3).and.x(j,3).eq.x(j,4)) dx(j,1)=0.
|
||||
IF (x(j,3).eq.x(j,2).and.x(j,2).eq.x(j,1)) dx(j,2)=0.
|
||||
IF (x(j,n).eq.x(j,n-1).and.x(j,n-1).eq.x(j,n-2).and.x(j,n-2).eq.x(j,n-3)) dx(j,n)=0.
|
||||
IF (x(j,n).eq.x(j,n-1).and.x(j,n-1).eq.x(j,n-2)) dx(j,n-1)=0.
|
||||
dx(j,1)=dx(j,1)*h2
|
||||
dx(j,2)=dx(j,2)*h2*r3
|
||||
dx(j,n-1)=dx(j,n-1)*h2*r3
|
||||
|
|
@ -1165,8 +1189,6 @@
|
|||
DO j=1,nd
|
||||
t1 = (x(j,i+1)-2.*x(j,i)+x(j,i-1))
|
||||
t2 = (x(j,i+2)-2.*x(j,i)+x(j,i-2))
|
||||
IF (x(j,i+1).eq.x(j,i).and.x(j,i).eq.x(j,i-1)) t1=0.
|
||||
IF (x(j,i+2).eq.x(j,i).and.x(j,i).eq.x(j,i-2)) t2=0.
|
||||
|
||||
! dx(j,i)=(r1*(x(j,i+1)-2.*x(j,i)+x(j,i-1)) &
|
||||
! +r2*(x(j,i+2)-2.*x(j,i)+x(j,i-2)))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue