⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_checkpoint_mpiio.f90

📁 做网格的好程序
💻 F90
📖 第 1 页 / 共 4 页
字号:
      call amr_1blk_guardcell(mype,iopt,nlayers,l,mype, &      &                        lcc,lfc,lec,lnc, &      &                        l_srl_only,icoord,ldiag)      endif      else                      ! no_permanent_guardcells#ifndef NO_PERMANENT_GUARDCELLS      facevarx1(:,:,:,:,1) = facevarx(:,:,:,:,l)      facevary1(:,:,:,:,1) = facevary(:,:,:,:,l)      facevarz1(:,:,:,:,1) = facevarz(:,:,:,:,l)#endif      endif                     ! no_permanent_guardcells      if(nodetype(l).eq.1 .or. advance_all_levels) then        ilbnd=il_bnd1        iubnd=iu_bnd1        jlbnd=jl_bnd1        jubnd=ju_bnd1        klbnd=kl_bnd1        kubnd=ku_bnd1        if(neigh(1,1,l).le.-20) ilbnd=1+nguard        if(neigh(1,2,l).le.-20) iubnd=nxb+nguard        if(neigh(1,3,l).le.-20) jlbnd=1+nguard        if(neigh(1,4,l).le.-20) jubnd=nyb+nguard        if(ndim.eq.3) then          if(neigh(1,5,l).le.-20) klbnd=1+nguard          if(neigh(1,6,l).le.-20) kubnd=nzb+nguard        endif        if (.not.l_with_guardcells) then           ilbnd = 1+nguard           iubnd = nxb+nguard           jlbnd = 1+nguard           jubnd = nyb+nguard           if (ndim == 3) then              klbnd = 1+nguard              kubnd = nzb+nguard           end if        end if         ione = 1        if(ndim.eq.3) dz = bsize(3,l)/real(nzb)        dy = bsize(2,l)/real(nyb)        dx = bsize(1,l)/real(nxb)        if(mod(nxb,2).eq.1) then                if(ndim.eq.3) dz = bsize(3,l)/real(nzb-k3d)                dy = bsize(2,l)/real(nyb-1)                dx = bsize(1,l)/real(nxb-1)        endif! first test facevarx#ifdef FACEX      do k=klbnd,kubnd        if(ndim.eq.3) z0 = coord(3,l)-.5*(bsize(3,l)+dz)        zk = z0 + dz*real(k-nguard)        do j=jlbnd,jubnd          y0 = coord(2,l)-.5*(bsize(2,l)+dy)          yj = y0 + dy*real(j-nguard)          do i=ilbnd,iubnd+ione            x0 = coord(1,l)-.5*bsize(1,l)-dx            xi = x0 + dx*real(i-nguard)            value = ax*xi+ay*yj+az*zk            do ivar=1,nfacevar              v0 = value*real(ivar)              if(abs(facevarx1(ivar,i,j,k,1)-v0)>accuracy) then                      write(*,996) mype,l,ivar,i,j,k, &      &                             facevarx1(ivar,i,j,k,1),v0            print *,' error = ',abs(facevarx1(ivar,i,j,k,1)-v0)                      ierror_sum = ierror_sum + 1                      endif            enddo          enddo        enddo      enddo#endif! now test facevary#ifdef FACEY      do k=klbnd,kubnd        if(ndim.eq.3) z0 = coord(3,l)-.5*(bsize(3,l)+dz)        zk = z0 + dz*real(k-nguard)        do i=ilbnd,iubnd          x0 = coord(1,l)-.5*(bsize(1,l)+dx)          xi = x0 + dx*real(i-nguard)          do j=jlbnd,jubnd+ione            y0 = coord(2,l)-.5*bsize(2,l)-dy            yj = y0 + dy*real(j-nguard)            value = ax*xi+ay*yj+az*zk            do ivar=1,nfacevar              v0 = value*real(ivar)              if(abs(facevary1(ivar,i,j,k,1)-v0)>accuracy) then                      write(*,995) mype,l,ivar,i,j,k, &      &                             facevary1(ivar,i,j,k,1),v0                      ierror_sum = ierror_sum + 1              endif            enddo          enddo        enddo      enddo#endif! finally test facevarz#ifdef FACEZ      if (ndim == 3) then      do j=jlbnd,jubnd        y0 = coord(2,l)-.5*(bsize(2,l)+dy)        yj = y0 + dy*real(j-nguard)        do i=ilbnd,iubnd          x0 = coord(1,l)-.5*(bsize(1,l)+dx)          xi = x0 + dx*real(i-nguard)          do k=klbnd,kubnd+ione            z0 = coord(3,l)-.5*bsize(3,l)-dz            zk = z0 + dz*real(k-nguard)            value = ax*xi+ay*yj+az*zk            do ivar=1,nfacevar              v0 = value*real(ivar)              if(abs(facevarz1(ivar,i,j,k,1)-v0)>accuracy) then                     write(*,994) mype,l,ivar,i,j,k, &      &                             facevarz1(ivar,i,j,k,1),v0                     ierror_sum = ierror_sum + 1              endif            enddo          enddo        enddo      enddo      end if#endif      endif      enddo      endif      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      enddo      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      if(mype.eq.0) write(*,*) 'face var. guard cell test complete.'      call amr_1blk_guardcell_reset      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      endif      end if#endif!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#ifdef EDGES      if (nvaredge > 0) then      if (ndim == 3) then! test of guardcell for unk_e's (if appropriate)      if(mod(nxb,2).eq.0) then       iopt = 1      lcc = .false.      lfc = .false.      lec = .true.      lnc = .false.      tag_offset = 100      lguard    = .true.      lprolong  = .false.      lflux     = .false.      ledge     = .false.      lrestrict = .false.      lfulltree = .false.      call mpi_amr_comm_setup(mype,nprocs, &      &                        lguard,lprolong,lflux,ledge, &      &                        lrestrict,lfulltree, &      &                        iopt,lcc,lfc,lec,lnc,tag_offset)  ! test values        do ii=0,nprocs-1        if(mype.eq.ii) then         do l=1,lnblocks       if(nodetype(l).eq.1 .or. advance_all_levels) then      if (no_permanent_guardcells) then      iopt = 1      nlayers = nguard      lcc = .false.      lfc = .false.      lec = .true.      lnc = .false.      l_srl_only = .false.      icoord = 0      ldiag = .false.      ldiag = diagonals      call amr_1blk_guardcell(mype,iopt,nlayers,l,mype, &      &                        lcc,lfc,lec,lnc, &      &                        l_srl_only,icoord,ldiag)       else                      ! no_permanent_guardcells#ifndef NO_PERMANENT_GUARDCELLS      unk_e_x1(:,:,:,:,1) = unk_e_x(:,:,:,:,l)      unk_e_y1(:,:,:,:,1) = unk_e_y(:,:,:,:,l)      unk_e_z1(:,:,:,:,1) = unk_e_z(:,:,:,:,l)#endif      endif                     ! no_permanent_guardcells        ilbnd=il_bnd1        iubnd=iu_bnd1        jlbnd=jl_bnd1        jubnd=ju_bnd1        klbnd=kl_bnd1        kubnd=ku_bnd1         if(neigh(1,1,l).le.-20) ilbnd=1+nguard        if(neigh(1,2,l).le.-20) iubnd=nxb+nguard        if(neigh(1,3,l).le.-20) jlbnd=1+nguard        if(neigh(1,4,l).le.-20) jubnd=nyb+nguard        if(ndim.eq.3) then          if(neigh(1,5,l).le.-20) klbnd=1+nguard          if(neigh(1,6,l).le.-20) kubnd=nzb+nguard        endif         if (.not.l_with_guardcells) then           ilbnd = 1+nguard           iubnd = nxb+nguard           jlbnd = 1+nguard           jubnd = nyb+nguard           if (ndim == 3) then              klbnd = 1+nguard              kubnd = nzb+nguard           end if        end if         ione = 1         if(ndim.eq.3) dz = bsize(3,l)/real(nzb)        dy = bsize(2,l)/real(nyb)        dx = bsize(1,l)/real(nxb)        if(mod(nxb,2).eq.1) then                if(ndim.eq.3) dz = bsize(3,l)/real(nzb-k3d)                dy = bsize(2,l)/real(nyb-1)                dx = bsize(1,l)/real(nxb-1)        endif                                 ! first test unk_e_x#ifdef UNKE_X      do k=klbnd,kubnd+ione        if(ndim.eq.3) z0 = coord(3,l)-.5*bsize(3,l)-dz        zk = z0 + dz*real(k-nguard)        do j=jlbnd,jubnd+ione          y0 = coord(2,l)-.5*bsize(2,l)-dy          yj = y0 + dy*real(j-nguard)          do i=ilbnd,iubnd            x0 = coord(1,l)-.5*(bsize(1,l)+dx)            xi = x0 + dx*real(i-nguard)            value = ax*xi+ay*yj+az*zk            do ivar=1,nvaredge              v0 = value*real(ivar)              if(abs(unk_e_x1(ivar,i,j,k,1)-v0)>accuracy) then                      write(*,990) mype,l,ivar,i,j,k, &      &                             unk_e_x1(ivar,i,j,k,1),v0                      ierror_sum = ierror_sum + 1                      endif            enddo          enddo        enddo      enddo#endif! now test unk_e_y#ifdef UNKE_Y                           do k=klbnd,kubnd+ione        if(ndim.eq.3) z0 = coord(3,l)-.5*bsize(3,l)-dz        zk = z0 + dz*real(k-nguard)        do i=ilbnd,iubnd+ione          x0 = coord(1,l)-.5*bsize(1,l)-dx          xi = x0 + dx*real(i-nguard)          do j=jlbnd,jubnd            y0 = coord(2,l)-.5*(bsize(2,l)+dy)            yj = y0 + dy*real(j-nguard)            value = ax*xi+ay*yj+az*zk            do ivar=1,nvaredge              v0 = value*real(ivar)              if(abs(unk_e_y1(ivar,i,j,k,1)-v0)>accuracy) then                      write(*,991) mype,l,ivar,i,j,k, &      &                             unk_e_y1(ivar,i,j,k,1),v0                      ierror_sum = ierror_sum + 1              endif            enddo          enddo        enddo      enddo#endif ! finally test unk_e_z#ifdef UNKE_Z                             do j=jlbnd,jubnd+ione        y0 = coord(2,l)-.5*bsize(2,l)-dy        yj = y0 + dy*real(j-nguard)        do i=ilbnd,iubnd+ione          x0 = coord(1,l)-.5*bsize(1,l)-dx          xi = x0 + dx*real(i-nguard)          do k=klbnd,kubnd            z0 = coord(3,l)-.5*(bsize(3,l)+dz)            zk = z0 + dz*real(k-nguard)            value = ax*xi+ay*yj+az*zk            do ivar=1,nvaredge              v0 = value*real(ivar)              if(abs(unk_e_z1(ivar,i,j,k,1)-v0)>accuracy) then                     write(*,992) mype,l,ivar,i,j,k, &      &                             unk_e_z1(ivar,i,j,k,1),v0                     ierror_sum = ierror_sum + 1              endif            enddo          enddo        enddo      enddo#endif       endif      enddo      endif      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      enddo       Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      if(mype.eq.0) write(*,*) 'unk_e. guard cell test complete.'      call amr_1blk_guardcell_reset      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)               endif      end if      end if#endif!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 222  if(mype.eq.0) write(*,*) 'End of automatic testing.'      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      call comm_int_sum_to_all(ierror_tot,ierror_sum)      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      lmpi = .false.      lnperm = .false.      ladvanceall = .false.          lmpi = .true.          if (no_permanent_guardcells) then             lnperm = .true.          end if          if (advance_all_levels) then             ladvanceall = .true.          end if      if(mype.eq.0) then      filename = trim(output_dir) // 'test.log'      open(unit = 55,file=filename, &      &            status='unknown',position='append')        write(*,*) ' '        write(*,*) ' '        if(ierror_tot.eq.0) then          write(*,*) 'No errors detected - Test Successful '          write(55,*) 'No errors detected - ', &      &                'Test of checkpoint Successful ', &      &                ': nprocs ',nprocs,' ndim ',ndim, &      &                ' noperm ',lnperm,' advanceall ',ladvanceall, &      &                ' mpi ',lmpi        else          write(*,*) ierror_tot,' errors detected - Test failed '          write(55,*) ierror_tot,' errors detected - ', &      &                'Test of checkpoint failed ', &      &                ': nprocs ',nprocs,' ndim ',ndim, &      &                ' noperm ',lnperm,' advanceall ',ladvanceall, &      &                ' mpi ',lmpi        endif      close(unit=55)      endif      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      if(mype.eq.0) write(*,*) 'Start guardcell consistency check.'      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)!      call guardcell_test(mype)      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      if(mype.eq.0) write(*,*) 'Guardcell consistency check done.'      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      if(mype.eq.0) write(*,*) 'Start mesh check.'      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      call mesh_test(mype)      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      if(mype.eq.0) write(*,*) 'Mesh check done.'      Call MPI_BARRIER(MPI_COMM_WORLD, ierr)      call amr_close()         998      format('u:error proc ',i3,' block l= ',5(2x,i3),2x,f7.4,2x, &      &       f7.4)997      format('w:error proc ',i3,' block l= ',4(2x,i3),2x,f7.4,2x, &      &       f7.4)996      format('fx:error proc ',i3,' block l= ',5(2x,i3),2x,e10.4,2x, &      &       e10.4)995      format('fy:error proc ',i3,' block l= ',5(2x,i3),2x,f7.4,2x, &      &       f7.4)994      format('fz:error proc ',i3,' block l= ',5(2x,i3),2x,f7.4,2x, &      &       f7.4)993      format('n:error proc ',i3,' block l= ',5(2x,i3),2x,f7.4,2x, &      &       f7.4)992      format('ez:error proc ',i3,' block l= ',5(2x,i3),2x,f7.4,2x, &      &       f7.4)991      format('ey:error proc ',i3,' block l= ',5(2x,i3),2x,f7.4,2x, &      &       f7.4)990      format('ex:error proc ',i3,' block l= ',5(2x,i3),2x,f7.4,2x, &      &       f7.4)#ifdef LIBRARY      deallocate(tnewchild)      deallocate(rflags)#endif      end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -