xref: /phasta/phSolver/compressible/timedata.f90 (revision 3e4d567892ef7e8d6a7306f3925c3cf144cef766)
110167291SKenneth E. Jansen      !--------------------------------------------------------
210167291SKenneth E. Jansen      ! Initialize the Probe Point Arrays and write the Header
310167291SKenneth E. Jansen      ! -------------------------------------------------------
410167291SKenneth E. Jansen      subroutine initProbePoints()
510167291SKenneth E. Jansen        !Tests if the probe point file xyzts.dat exists, loads probe
610167291SKenneth E. Jansen        !point locations, initializes a number of arrays used by
70d32f9a8SKenneth E. Jansen        !timedataC, and writes the initial header for the output file.
810167291SKenneth E. Jansen        !
910167291SKenneth E. Jansen        ! Rewritten by:             Nicholas Mati  2014-04-18
1010167291SKenneth E. Jansen        ! Revision history:
1110167291SKenneth E. Jansen        !  2014-04-18   Code moved from itrdrv to here
1210167291SKenneth E. Jansen
130d32f9a8SKenneth E. Jansen        use timedataC
14*3e4d5678SCameron Smith        use mkdir_mod
1510167291SKenneth E. Jansen        include "common.h"
1610167291SKenneth E. Jansen        include "mpif.h"
1710167291SKenneth E. Jansen
1810167291SKenneth E. Jansen        logical :: exVarts
1910167291SKenneth E. Jansen
2010167291SKenneth E. Jansen        !Test if xyzts.dat exists and broadcast the result.
2110167291SKenneth E. Jansen        if(myrank.eq.master) inquire(file='xyzts.dat',exist=exts)
2210167291SKenneth E. Jansen        if(numpe .gt. 1) then
2310167291SKenneth E. Jansen          call MPI_BARRIER(MPI_COMM_WORLD, ierr)
2410167291SKenneth E. Jansen          call MPI_BCAST(exts,1,MPI_INTEGER,master,MPI_COMM_WORLD,ierr)
2510167291SKenneth E. Jansen        endif
2610167291SKenneth E. Jansen
2710167291SKenneth E. Jansen        if(.not. exts) return
2810167291SKenneth E. Jansen        call readProbePoints
2910167291SKenneth E. Jansen
3010167291SKenneth E. Jansen        allocate (statptts(ntspts,2))
3110167291SKenneth E. Jansen        allocate (parptts( ntspts,nsd))
3210167291SKenneth E. Jansen        allocate (varts(   ntspts,ndof))
3310167291SKenneth E. Jansen
3410167291SKenneth E. Jansen        statptts(:,:) = 0
3510167291SKenneth E. Jansen        parptts(:,:) = zero
3610167291SKenneth E. Jansen        varts(:,:) = zero
3710167291SKenneth E. Jansen        ivartsbuff = 0
3810167291SKenneth E. Jansen        vartsResetbuffer = .false.
3910167291SKenneth E. Jansen
4010167291SKenneth E. Jansen        allocate (ivarts(    ntspts*ndof))
4110167291SKenneth E. Jansen        allocate (ivartsg(   ntspts*ndof))
4210167291SKenneth E. Jansen        allocate (vartssoln( ntspts*ndof))
4310167291SKenneth E. Jansen        allocate (vartssolng(ntspts*ndof))
4410167291SKenneth E. Jansen        allocate (vartsbuff( ntspts,ndof,nbuff))
4510167291SKenneth E. Jansen        allocate (vartsbuffstep(nbuff))
4610167291SKenneth E. Jansen
4710167291SKenneth E. Jansen        !test if the varts folder exists. If it doesn't create it.
4810167291SKenneth E. Jansen        if(myrank .eq. master) then
4910167291SKenneth E. Jansen          inquire(file="./varts/.", exist=exVarts)
5010167291SKenneth E. Jansen          if(.not. exVarts) then
51*3e4d5678SCameron Smith            call mkdir("varts")
5210167291SKenneth E. Jansen          endif
5310167291SKenneth E. Jansen        endif
5410167291SKenneth E. Jansen
5510167291SKenneth E. Jansen!       initProbePoints = exts
5610167291SKenneth E. Jansen!     end function
5710167291SKenneth E. Jansen      end subroutine
5810167291SKenneth E. Jansen
5910167291SKenneth E. Jansen
6010167291SKenneth E. Jansen      !------------------------
6110167291SKenneth E. Jansen      ! Read Probe Point Input
6210167291SKenneth E. Jansen      !------------------------
6310167291SKenneth E. Jansen      subroutine readProbePoints
6410167291SKenneth E. Jansen        ! Original Code written by: ??             ????-??-??
6510167291SKenneth E. Jansen        ! Rewritten by:             Nicholas Mati  2014-04-18
6610167291SKenneth E. Jansen        ! Revision history:
6710167291SKenneth E. Jansen        !  2014-04-18   Rewritten code moved from itrdrv to here.
6810167291SKenneth E. Jansen        !
6910167291SKenneth E. Jansen        !Reads the file xyzts.dat for probe point locations, write
7010167291SKenneth E. Jansen        !frequency, tolerance, ... The file is expected to have the
7110167291SKenneth E. Jansen        !form:
7210167291SKenneth E. Jansen        ! ntspts freq tolpt iterat nbuff
7310167291SKenneth E. Jansen        ! x1 y1 z1
7410167291SKenneth E. Jansen        ! x2 y2 z2
7510167291SKenneth E. Jansen        ! ...
7610167291SKenneth E. Jansen        ! xN yN zN
7710167291SKenneth E. Jansen        !
7810167291SKenneth E. Jansen        ! ... where ntspts is the number of probe points and freq is the
7910167291SKenneth E. Jansen        ! number of steps to take before flushing data. If nbuff is
8010167291SKenneth E. Jansen        ! zero, the number of time steps between restarts, ntout, is
8110167291SKenneth E. Jansen        ! used.
8210167291SKenneth E. Jansen
830d32f9a8SKenneth E. Jansen        use timedataC
8410167291SKenneth E. Jansen        include "common.h"
8510167291SKenneth E. Jansen        include "mpif.h"
8610167291SKenneth E. Jansen
8710167291SKenneth E. Jansen        if(myrank.eq.master) then
8810167291SKenneth E. Jansen          open(unit=626,file='xyzts.dat',status='old')
8910167291SKenneth E. Jansen          read(626,*) ntspts, freq, tolpt, iterat, nbuff
9010167291SKenneth E. Jansen        endif
9110167291SKenneth E. Jansen
9210167291SKenneth E. Jansen        !Broadcase out the header of xyzts.dat. These should probably
9310167291SKenneth E. Jansen        !be combined into two calls, but this is quick and dirty.
9410167291SKenneth E. Jansen        if(numpe .gt. 1) then
9510167291SKenneth E. Jansen          call MPI_BARRIER(MPI_COMM_WORLD, ierr)
9610167291SKenneth E. Jansen          call MPI_Bcast(ntspts, 1, MPI_INTEGER,          master,
9710167291SKenneth E. Jansen     &                              MPI_COMM_WORLD,       ierr)
9810167291SKenneth E. Jansen          call MPI_Bcast(freq,   1, MPI_INTEGER,          master,
9910167291SKenneth E. Jansen     &                              MPI_COMM_WORLD,       ierr)
10010167291SKenneth E. Jansen          call MPI_Bcast(tolpt,  1, MPI_DOUBLE_PRECISION, master,
10110167291SKenneth E. Jansen     &                              MPI_COMM_WORLD,       ierr)
10210167291SKenneth E. Jansen          call MPI_Bcast(iterat, 1, MPI_INTEGER,          master,
10310167291SKenneth E. Jansen     &                              MPI_COMM_WORLD,       ierr)
10410167291SKenneth E. Jansen          call MPI_Bcast(nbuff,  1, MPI_INTEGER,          master,
10510167291SKenneth E. Jansen     &                              MPI_COMM_WORLD,       ierr)
10610167291SKenneth E. Jansen        endif
10710167291SKenneth E. Jansen
10810167291SKenneth E. Jansen        allocate (ptts(    ntspts,nsd))
10910167291SKenneth E. Jansen
11010167291SKenneth E. Jansen        !Read probe point coordinates and broadcast to the rest of the
11110167291SKenneth E. Jansen        !processors
11210167291SKenneth E. Jansen        if(myrank .eq. master) then
11310167291SKenneth E. Jansen          do jj=1,ntspts        ! read coordinate data where solution desired
11410167291SKenneth E. Jansen             read(626,*) ptts(jj,1), ptts(jj,2), ptts(jj,3)
11510167291SKenneth E. Jansen           enddo
11610167291SKenneth E. Jansen         close(626)
11710167291SKenneth E. Jansen        endif
11810167291SKenneth E. Jansen
11910167291SKenneth E. Jansen        if(numpe .gt. 1) then
12010167291SKenneth E. Jansen          call MPI_BARRIER(MPI_COMM_WORLD, ierr)
12110167291SKenneth E. Jansen          call MPI_Bcast(ptts, ntspts*nsd, MPI_DOUBLE_PRECISION,
12210167291SKenneth E. Jansen     &                          master,     MPI_COMM_WORLD,       ierr)
12310167291SKenneth E. Jansen        endif
12410167291SKenneth E. Jansen
12510167291SKenneth E. Jansen        if (nbuff .eq. 0)
12610167291SKenneth E. Jansen     &    nbuff=ntout
12710167291SKenneth E. Jansen      end subroutine
12810167291SKenneth E. Jansen
12910167291SKenneth E. Jansen
13010167291SKenneth E. Jansen      !-----------------------------
13110167291SKenneth E. Jansen      ! Write the Header varts file
13210167291SKenneth E. Jansen      !-----------------------------
13310167291SKenneth E. Jansen      subroutine TD_writeHeader(fvarts)
13410167291SKenneth E. Jansen        !Creates the file fvarts and writes the data header.
13510167291SKenneth E. Jansen        !fvarts:    Name The file to create
13610167291SKenneth E. Jansen
1370d32f9a8SKenneth E. Jansen        use timedataC
13810167291SKenneth E. Jansen        include "common.h"
13910167291SKenneth E. Jansen
14010167291SKenneth E. Jansen        character(len=*) fvarts
14110167291SKenneth E. Jansen
14210167291SKenneth E. Jansen        !Open the output varts file and write the header
14310167291SKenneth E. Jansen         if (myrank .eq. master) then
14410167291SKenneth E. Jansen
14510167291SKenneth E. Jansen           !fvarts='varts/varts'
14610167291SKenneth E. Jansen           !fvarts=trim(fvarts)//trim(cname2(lstep))
14710167291SKenneth E. Jansen           !fvarts=trim(fvarts)//'.dat'
14810167291SKenneth E. Jansen           open(unit=1001, file=fvarts, status='unknown')
14910167291SKenneth E. Jansen
15010167291SKenneth E. Jansen           !Write the time step
15110167291SKenneth E. Jansen           write(1001, *) "Time Step: ", Delt(1)
15210167291SKenneth E. Jansen           write(1001, *)
15310167291SKenneth E. Jansen
15410167291SKenneth E. Jansen           !Write the probe locations to varts.ts.dat so that post
15510167291SKenneth E. Jansen           !processing tools actually know what point goes where.
15610167291SKenneth E. Jansen           !From experience, it's difficult to keep this straight.
15710167291SKenneth E. Jansen           write(1001, *)
15810167291SKenneth E. Jansen     &                 "Probe ID   x              y              z"
15910167291SKenneth E. Jansen           do jj = 1, ntspts
16010167291SKenneth E. Jansen             write(1001, "(I5, T12, 3(F16.12))") jj, ptts(jj,1:3)
16110167291SKenneth E. Jansen           enddo
16210167291SKenneth E. Jansen           write(1001, *)
16310167291SKenneth E. Jansen
16410167291SKenneth E. Jansen           !write the output format string. This can't be hard
16510167291SKenneth E. Jansen           !coded because ntspts is not known in advance.
16610167291SKenneth E. Jansen           write(vartsIOFrmtStr, '("(I8, ", I4, "(E15.7e2))")')
16710167291SKenneth E. Jansen     &           ndof*ntspts
16810167291SKenneth E. Jansen
16910167291SKenneth E. Jansen           !Header to delinieate the probe locations with the data.
17010167291SKenneth E. Jansen           write(1001, *) "Probe Data:"
17110167291SKenneth E. Jansen           close(unit=1001)
17210167291SKenneth E. Jansen         endif  ! if(myrank .eq. master)
17310167291SKenneth E. Jansen      end subroutine
17410167291SKenneth E. Jansen
17510167291SKenneth E. Jansen
17610167291SKenneth E. Jansen
17710167291SKenneth E. Jansen      !------------------------
17810167291SKenneth E. Jansen      ! Accumulate Probe Data
17910167291SKenneth E. Jansen      !------------------------
18010167291SKenneth E. Jansen      subroutine TD_bufferData()
18110167291SKenneth E. Jansen
1820d32f9a8SKenneth E. Jansen        use timedataC
18310167291SKenneth E. Jansen        include "common.h"
18410167291SKenneth E. Jansen        include "mpif.h"
18510167291SKenneth E. Jansen
18610167291SKenneth E. Jansen        integer :: icheck, istp, nstp
18710167291SKenneth E. Jansen
18810167291SKenneth E. Jansen        if (mod(lstep,freq).eq.0) then
18910167291SKenneth E. Jansen          if(vartsResetBuffer) then
19010167291SKenneth E. Jansen            ivartsBuff = 0
19110167291SKenneth E. Jansen            vartsResetBuffer = .false.
19210167291SKenneth E. Jansen          endif
19310167291SKenneth E. Jansen
19410167291SKenneth E. Jansen          !------------------------
19510167291SKenneth E. Jansen          !Merge Data across parts
19610167291SKenneth E. Jansen          !------------------------
19710167291SKenneth E. Jansen          if (numpe > 1) then
19810167291SKenneth E. Jansen            !load the contents of varts into vartssoln
19910167291SKenneth E. Jansen            do jj = 1, ntspts
20010167291SKenneth E. Jansen               vartssoln((jj-1)*ndof+1:jj*ndof)=varts(jj,:)
20110167291SKenneth E. Jansen               ivarts=zero
20210167291SKenneth E. Jansen            enddo
20310167291SKenneth E. Jansen
20410167291SKenneth E. Jansen            !mark which points have been computed on this processor
20510167291SKenneth E. Jansen            do k=1,ndof*ntspts
20610167291SKenneth E. Jansen               if(vartssoln(k).ne.zero) ivarts(k)=1
20710167291SKenneth E. Jansen            enddo
20810167291SKenneth E. Jansen
20910167291SKenneth E. Jansen            !merge the solution
21010167291SKenneth E. Jansen            call MPI_REDUCE(vartssoln, vartssolng, ndof*ntspts,
21110167291SKenneth E. Jansen     &           MPI_DOUBLE_PRECISION, MPI_SUM, master,
21210167291SKenneth E. Jansen     &           MPI_COMM_WORLD, ierr)
21310167291SKenneth E. Jansen
21410167291SKenneth E. Jansen            call MPI_REDUCE(ivarts, ivartsg, ndof*ntspts,
21510167291SKenneth E. Jansen     &           MPI_INTEGER, MPI_SUM, master,
21610167291SKenneth E. Jansen     &           MPI_COMM_WORLD, ierr)
21710167291SKenneth E. Jansen
21810167291SKenneth E. Jansen             !if the probe point happened to span multiple partitions,
21910167291SKenneth E. Jansen             !divide the sum by the number of contributing partitions.
22010167291SKenneth E. Jansen             if (myrank.eq.master) then
22110167291SKenneth E. Jansen               do jj = 1, ntspts
22210167291SKenneth E. Jansen                 indxvarts = (jj-1)*ndof
22310167291SKenneth E. Jansen                 do k=1,ndof
22410167291SKenneth E. Jansen                   if(ivartsg(indxvarts+k).ne.0) then ! none of the vartssoln(parts) were non zero
22510167291SKenneth E. Jansen                      varts(jj,k) =
22610167291SKenneth E. Jansen     &                    vartssolng(indxvarts+k) / ivartsg(indxvarts+k)
22710167291SKenneth E. Jansen                   endif
22810167291SKenneth E. Jansen                 enddo !loop over states / DoF
22910167291SKenneth E. Jansen               enddo !loop over probe points
23010167291SKenneth E. Jansen             endif !only on master
23110167291SKenneth E. Jansen          endif !only if numpe > 1
23210167291SKenneth E. Jansen
23310167291SKenneth E. Jansen          ivartsBuff = ivartsBuff + 1
23410167291SKenneth E. Jansen          if (myrank.eq.master) then
23510167291SKenneth E. Jansen            if(ivartsBuff .gt. nbuff) then
23610167291SKenneth E. Jansen              write(*,*) "WARNING: vartsbuff has overflowed"
23710167291SKenneth E. Jansen              ivartsBuff = nbuff
23810167291SKenneth E. Jansen            endif
23910167291SKenneth E. Jansen
24010167291SKenneth E. Jansen            vartsBuffStep(ivartsBuff) = lstep
24110167291SKenneth E. Jansen            do jj = 1, ntspts
24210167291SKenneth E. Jansen              vartsbuff(jj,1:ndof, ivartsBuff) = varts(jj,1:ndof)
24310167291SKenneth E. Jansen            enddo
24410167291SKenneth E. Jansen          endif
24510167291SKenneth E. Jansen        endif
24610167291SKenneth E. Jansen
24710167291SKenneth E. Jansen        varts(:,:) = zero
24810167291SKenneth E. Jansen
24910167291SKenneth E. Jansen      end subroutine
25010167291SKenneth E. Jansen
25110167291SKenneth E. Jansen
25210167291SKenneth E. Jansen      !------------
25310167291SKenneth E. Jansen      ! Write Data
25410167291SKenneth E. Jansen      !------------
25510167291SKenneth E. Jansen      subroutine TD_writeData(fvarts, forceFlush)
25610167291SKenneth E. Jansen        !writes the probe point data accumulated durring calls to
25710167291SKenneth E. Jansen        !TD_bufferData(). Note that actual file IO only occurs when the
25810167291SKenneth E. Jansen        !buffer is full or when DT_writeData is called with forceFlush
25910167291SKenneth E. Jansen        !set to true. Also note that TD_writeHeader must be called prior
26010167291SKenneth E. Jansen        !to calling DT_writeData.
2610d32f9a8SKenneth E. Jansen        use timedataC
26210167291SKenneth E. Jansen        include "common.h"
26310167291SKenneth E. Jansen
26410167291SKenneth E. Jansen        character(len=*) :: fvarts
26510167291SKenneth E. Jansen        logical :: forceFlush
26610167291SKenneth E. Jansen!        logical, optional :: forceflush
26710167291SKenneth E. Jansen        logical :: flush
26810167291SKenneth E. Jansen        integer :: k, ibuf
26910167291SKenneth E. Jansen
27010167291SKenneth E. Jansen        if (myrank.eq.master) then
27110167291SKenneth E. Jansen
27210167291SKenneth E. Jansen          !if provided, use the default value passed in to determine
27310167291SKenneth E. Jansen          !wheather to flush the buffer
27410167291SKenneth E. Jansen!          if(present(forceFlush)) then   !optional version breaks the
27510167291SKenneth E. Jansen            flush = forceFlush            !compiler on Bluegene?
27610167291SKenneth E. Jansen!          else
27710167291SKenneth E. Jansen!            flush = .false.    !set the default value
27810167291SKenneth E. Jansen!          endif
27910167291SKenneth E. Jansen
28010167291SKenneth E. Jansen          !make sure incomplete buffers get purged at the end of a run
28110167291SKenneth E. Jansen          !regardless of the default.
28210167291SKenneth E. Jansen!         if(ivartsBuff .eq. nbuff) flush = .true.
28310167291SKenneth E. Jansen          if(mod(lstep, nbuff) .eq. 0) flush = .true.
28410167291SKenneth E. Jansen          if(vartsResetBuffer) flush = .false.  !Prevent repeated calls without updating
28510167291SKenneth E. Jansen                                                          !the buffer from writting multiple times.
28610167291SKenneth E. Jansen
28710167291SKenneth E. Jansen          if(flush) then   !flush the buffer to disc
28810167291SKenneth E. Jansen            open(unit=1001, file      = fvarts,   status = "old",
28910167291SKenneth E. Jansen     &                  position = "append", action = "write")
29010167291SKenneth E. Jansen            do ibuf = 1,ivartsBuff
29110167291SKenneth E. Jansen              write(1001, vartsIOFrmtStr)
29210167291SKenneth E. Jansen     &                    vartsBuffStep(ibuf),                  !write the time step in the first column.
29310167291SKenneth E. Jansen     &                   ((vartsbuff(jj,k,ibuf),  k=1, ndof)   !loop over the variables that you actually want to output.
29410167291SKenneth E. Jansen     &                                         , jj=1, ntspts) !loop over probe points
29510167291SKenneth E. Jansen            enddo
29610167291SKenneth E. Jansen
29710167291SKenneth E. Jansen            close(1001)
29810167291SKenneth E. Jansen
29910167291SKenneth E. Jansen            vartsResetBuffer = .true.
30010167291SKenneth E. Jansen!            ivartsBuff = 0      !need to reset ivartsBuff because
30110167291SKenneth E. Jansen!                                !writeDate can be called consecutively
30210167291SKenneth E. Jansen          endif !only dump when buffer full
30310167291SKenneth E. Jansen        endif !only on master
30410167291SKenneth E. Jansen
30510167291SKenneth E. Jansen!              call flush(1001)
30610167291SKenneth E. Jansen!              call fsync(1001)
30710167291SKenneth E. Jansen
30810167291SKenneth E. Jansen               !Code for writting one file per probe point
30910167291SKenneth E. Jansen!              do jj = 1, ntspts !loop through probe points
31010167291SKenneth E. Jansen!                ifile = 1000+jj
31110167291SKenneth E. Jansen!                do ibuf=1,nbuff
31210167291SKenneth E. Jansen!                  write(ifile,555) lstep-1 -nbuff+ibuf,
31310167291SKenneth E. Jansen!     &               (vartsbuff(jj,k,ibuf) , k=1, ndof)
31410167291SKenneth E. Jansen!!     &              vartsbuff(jj,:,ibuf)
31510167291SKenneth E. Jansen!
31610167291SKenneth E. Jansen!                enddo ! buff empty
31710167291SKenneth E. Jansen!
31810167291SKenneth E. Jansen!                call flush(ifile)
31910167291SKenneth E. Jansen!              enddo ! jj ntspts
32010167291SKenneth E. Jansen
32110167291SKenneth E. Jansen
32210167291SKenneth E. Jansen!         varts(:,:) = zero ! reset the array for next step   !MOVED FOR Mach Control
32310167291SKenneth E. Jansen! 555     format(i6,6(2x,E12.5e2))
32410167291SKenneth E. Jansen
32510167291SKenneth E. Jansen      end subroutine
32610167291SKenneth E. Jansen
32710167291SKenneth E. Jansen
32810167291SKenneth E. Jansen      subroutine TD_finalize()
3290d32f9a8SKenneth E. Jansen       use timedataC
33010167291SKenneth E. Jansen
33110167291SKenneth E. Jansen        deallocate(ivarts)
33210167291SKenneth E. Jansen        deallocate(ivartsg)
33310167291SKenneth E. Jansen        deallocate(vartssoln)
33410167291SKenneth E. Jansen        deallocate(vartssolng)
33510167291SKenneth E. Jansen        deallocate(vartsbuff)
33610167291SKenneth E. Jansen        deallocate(vartsbuffstep)
33710167291SKenneth E. Jansen
33810167291SKenneth E. Jansen        deallocate(ptts)
33910167291SKenneth E. Jansen        deallocate(varts)
34010167291SKenneth E. Jansen      end subroutine
34110167291SKenneth E. Jansen
34210167291SKenneth E. Jansen
34310167291SKenneth E. Jansen      !---------------------
34410167291SKenneth E. Jansen      ! allocate the arrays
34510167291SKenneth E. Jansen      !---------------------
34610167291SKenneth E. Jansen      subroutine sTD
34710167291SKenneth E. Jansen        !Allocates the arrays statptts, ptts, parptts, and varts for use
34810167291SKenneth E. Jansen        !in itrdrv and ??
34910167291SKenneth E. Jansen        !Subroutine is Depricated.
35010167291SKenneth E. Jansen
3510d32f9a8SKenneth E. Jansen       use timedataC
35210167291SKenneth E. Jansen        include "common.h"
35310167291SKenneth E. Jansen
35410167291SKenneth E. Jansen        allocate (statptts(ntspts,2))
35510167291SKenneth E. Jansen        allocate (ptts(ntspts,nsd))
35610167291SKenneth E. Jansen        allocate (parptts(ntspts,nsd))
35710167291SKenneth E. Jansen        allocate (varts(ntspts,ndof))
35810167291SKenneth E. Jansen
35910167291SKenneth E. Jansen        return
36010167291SKenneth E. Jansen      end
36110167291SKenneth E. Jansen
36210167291SKenneth E. Jansen      !-------------------
36310167291SKenneth E. Jansen      ! delete the arrays
36410167291SKenneth E. Jansen      !-------------------
36510167291SKenneth E. Jansen      subroutine dTD
36610167291SKenneth E. Jansen        !Deallocates ptts and varts
3670d32f9a8SKenneth E. Jansen       use timedataC
36810167291SKenneth E. Jansen
36910167291SKenneth E. Jansen        deallocate (ptts)
37010167291SKenneth E. Jansen        deallocate (varts)
37110167291SKenneth E. Jansen
37210167291SKenneth E. Jansen        return
37310167291SKenneth E. Jansen      end
374