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