c----------------------------------------------------------------------- c driver.f c Mijan Huq c Center for Relativity, c University of Texas at Austin. c----------------------------------------------------------------------- program novikov implicit none integer NRM, NTM parameter(NRM = 401) parameter(NTM = 401) integer NR, NT real Rstar(NRM), tau(NTM) real r(NTM,NRM), t(NTM,NRM), eta(NTM, NRM), . gRR(NTM, NRM), gtt(NTM,NRM), . kRR(NTM, NRM), ktt(NTM,NRM) real drdtau(NTM,NRM), drdRstar(NTM,NRM),detadRstar(NTM,NRM), . dtdtau(NTM,NRM),dtdRstar(NTM,NRM), detadtau(NTM,NRM) real mass, dR, dtau real Rmin, Rmax, tmin, tmax integer itmax real stp c Argument parsing integer nargs, iargc character*32 args nargs = iargc() if ( nargs .ne. 6 .and. nargs .ne. 9)then write(0,*)'Using Default Values' write(0,*)'Usage with arguments is:' write(0,*)'novikov NT NR Rmin Rmax tmin tmax [mass itmax stop]' write(0,*)'max := max number of iterations for Newton solve' write(0,*)'stop:= stopping criteria. 1.0e-8 for example' NR = 201 NT = 201 mass = 1.0e0 itmax = 20 stp = 1.0e-5 Rmax = 4.00e0 c Rmin = Rmax / float(NR) Rmin = 0.0 tmin = 0.0e0 tmax = 3.0e0 else if(nargs .eq. 6 .or. nargs .eq. 9)then call getarg(1,args) read(args,101)NT call getarg(2,args) read(args,101)NR call getarg(3,args) read(args,102)Rmin call getarg(4,args) read(args,102)Rmax call getarg(5,args) read(args,102)tmin call getarg(6,args) read(args,102)tmax if(nargs .eq. 9)then call getarg(7,args) read(args,102)mass call getarg(8,args) read(args,101)itmax call getarg(9,args) read(args,102)stp else mass = 1.0e0 itmax = 20 stp = 1.0e-8 end if end if end if 101 format(I4) 102 format(F20.15) write(0,*)'Using' write(0,*)'NT=',NT,' NR=',NR write(0,*)'Rmin Rmax', Rmin, Rmax write(0,*)'Tmin Tmax', Tmin, Tmax write(0,*)'mass = ',mass write(0,*)'itmax = ',itmax write(0,*)'stop = ',stp call gentable(Rstar, tau, eta,r,t, . dR, dtau, Rmin, Rmax, tmin, tmax, stp, itmax, mass, NT,NR) c Calculate partials write(0,*)'Getting partials' call GetPartials(tau,Rstar,r,mass,drdtau,drdRstar,NT,NR) write(0,*)'Dumping Data' call dumpdata(Rstar,r,tau,gRR, gtt, kRR, ktt, . drdtau,drdRstar,dtdtau,dtdRstar,NT,NR) stop end c----------------------------------------------------------------------- subroutine dumpdata(Rstar,r,tau,gRR, gtt, kRR, ktt, . drdtau,drdRstar,dtdtau,dtdRstar,NT,NR) implicit none integer NR, NT real Rstar(NR), tau(NT), r(NT,NR) real gRR(NT,NR), gtt(NT,NR) real kRR(NT,NR), ktt(NT,NR) real drdtau(NT,NR), drdRstar(NT,NR) real dtdtau(NT,NR), dtdRstar(NT,NR) c Local Variables integer i, j, k c Functions real ff,dff open(file="slice_r.dat",unit=11) do i = 1, NT do j = 1, NR write(11,*)tau(i),Rstar(j),r(i,j) end do write(11,*) end do close (unit=11) open(file="slice_drdtau.dat",unit=11) do i = 1, NT do j = 1, NR write(11,*)tau(i),Rstar(j),drdtau(i,j) end do write(11,*) end do close (unit=11) open(file="slice_drdtau.dat",unit=11) do i = 1, NT do j = 1, NR write(11,*)tau(i),Rstar(j),r(i,j),drdRstar(i,j) end do write(11,*) end do close (unit=11) return end c-----------------------------------------------------------------------