User: cott Date: 2011/08/02 01:52 PM
Modified: /trunk/src/ GRHydro_ENOReconstruct_drv.F90, GRHydro_PPMMReconstruct_drv.F90, GRHydro_PPMReconstruct_drv.F90, GRHydro_Reconstruct.F90, GRHydro_TVDReconstruct_drv.F90
Log: * modify reconstruction: * get rid of nonsensical re-computation of the conserved tracer * remove support for shift_state = 0 and get rid of unnecessary assignments.
File Changes:
Directory: /trunk/src/ ======================
File [modified]: GRHydro_ENOReconstruct_drv.F90 Delta lines: +5 -24 =================================================================== --- trunk/src/GRHydro_ENOReconstruct_drv.F90 2011-08-02 06:31:44 UTC (rev 255) +++ trunk/src/GRHydro_ENOReconstruct_drv.F90 2011-08-02 18:52:56 UTC (rev 256) @@ -1,7 +1,7 @@ /*@@ @file GRHydro_ENOReconstruct_drv.F90 @date Tue Jul 19 13:22:03 EDT 2011 - @author Bruno C. Mundim, Joshua Faber + @author Bruno C. Mundim, Joshua Faber, Christian D. Ott @desc Driver routine to perform the ENO reconstruction. @enddesc @@ -31,7 +31,7 @@ /*@@ @routine GRHydro_ENOReconstruct_drv @date Tue Jul 19 13:24:34 EDT 2011 - @author Luca Baiotti, Ian Hawke, Bruno C. Mundim, Joshua Faber + @author Luca Baiotti, Ian Hawke, Bruno C. Mundim, Joshua Faber, Christian D. Ott @desc A driver routine to do ENO reconstruction. @enddesc @@ -54,16 +54,13 @@ integer :: nx, ny, nz, i, j, k, itracer
logical, dimension(:,:,:), allocatable :: trivial_rp -!!$ logical, dimension(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)) :: trivial_rp
CCTK_INT :: type_bitsx, trivialx, not_trivialx, & &type_bitsy, trivialy, not_trivialy, & &type_bitsz, trivialz, not_trivialz
CCTK_REAL, dimension(:,:,:),allocatable :: & - &psi4, lbetax, lbetay, lbetaz, dum, dump, dumm -!!$ CCTK_REAL, dimension(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)) :: & -!!$ &psi4, lbetax, lbetay, lbetaz + &dum, dump, dumm
CCTK_INT :: ierr
@@ -73,16 +70,12 @@ end if
!!$ The dum variables are used as dummies if MHD on but divergence cleaning off - allocate(psi4(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - lbetax(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - lbetay(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - lbetaz(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - dum(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& + allocate(dum(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& dump(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& dumm(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),STAT=ierr)
if (ierr .ne. 0) then - call CCTK_WARN(0, "Allocation problems with lbeta") + call CCTK_WARN(0, "Allocation problems with dum dump dumm") end if
call SpaceMask_GetTypeBits(type_bitsx, "Hydro_RiemannProblemX") @@ -112,7 +105,6 @@ do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) trivial_rp(i,j,k) = .false. - psi4(i,j,k) = 1.0d0 rhoplus(i,j,k) = 0.0d0 rhominus(i,j,k)= 0.0d0 epsplus(i,j,k) = 0.0d0 @@ -147,16 +139,6 @@ Y_e_minus(i,j,k) = 0.0d0 endif
- if (shift_state .ne. 0) then - lbetax(i,j,k) = betax(i,j,k) - lbetay(i,j,k) = betay(i,j,k) - lbetaz(i,j,k) = betaz(i,j,k) - else - lbetax(i,j,k) = 0.d0 - lbetay(i,j,k) = 0.d0 - lbetaz(i,j,k) = 0.d0 - end if - enddo enddo enddo @@ -425,7 +407,6 @@ !!$ ENO ends.
deallocate(trivial_rp) - deallocate(psi4, lbetax, lbetay, lbetaz) deallocate(dum,dump,dumm)
end subroutine GRHydro_ENOReconstruct_drv
File [modified]: GRHydro_PPMMReconstruct_drv.F90 Delta lines: +10 -33 =================================================================== --- trunk/src/GRHydro_PPMMReconstruct_drv.F90 2011-08-02 06:31:44 UTC (rev 255) +++ trunk/src/GRHydro_PPMMReconstruct_drv.F90 2011-08-02 18:52:56 UTC (rev 256) @@ -1,7 +1,7 @@ /*@@ @file GRHydro_PPMMReconstruct_drv.F90 @date Wed Jul 27 15:17:03 EDT 2011 - @author Bruno C. Mundim, Joshua Faber + @author Bruno C. Mundim, Joshua Faber, Christian D. Ott @desc Driver routine to perform the magnetic version of PPM reconstruction. @enddesc @@ -31,7 +31,7 @@ /*@@ @routine GRHydro_PPMMReconstruct_drv @date Wed Jul 27 15:17:55 EDT 2011 - @author Luca Baiotti, Ian Hawke, Bruno C. Mundim, Joshua Faber + @author Luca Baiotti, Ian Hawke, Bruno C. Mundim, Joshua Faber, Christian D. Ott @desc A driver routine to do magnetic version of PPM reconstructions. @enddesc @@ -54,16 +54,13 @@ integer :: nx, ny, nz, i, j, k, itracer
logical, dimension(:,:,:), allocatable :: trivial_rp -!!$ logical, dimension(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)) :: trivial_rp
CCTK_INT :: type_bitsx, trivialx, not_trivialx, & &type_bitsy, trivialy, not_trivialy, & &type_bitsz, trivialz, not_trivialz
CCTK_REAL, dimension(:,:,:),allocatable :: & - &psi4, lbetax, lbetay, lbetaz, dum, dump, dumm -!!$ CCTK_REAL, dimension(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)) :: & -!!$ &psi4, lbetax, lbetay, lbetaz + dum, dump, dumm
CCTK_INT :: ierr
@@ -73,18 +70,10 @@ end if
!!$ The dum variables are used as dummies if MHD on but divergence cleaning off - allocate(psi4(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - lbetax(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - lbetay(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - lbetaz(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - dum(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& + allocate(dum(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& dump(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& dumm(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),STAT=ierr)
- if (ierr .ne. 0) then - call CCTK_WARN(0, "Allocation problems with lbeta") - end if - call SpaceMask_GetTypeBits(type_bitsx, "Hydro_RiemannProblemX") call SpaceMask_GetStateBits(trivialx, "Hydro_RiemannProblemX", & &"trivial") @@ -112,7 +101,6 @@ do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) trivial_rp(i,j,k) = .false. - psi4(i,j,k) = 1.0d0 rhoplus(i,j,k) = 0.0d0 rhominus(i,j,k)= 0.0d0 epsplus(i,j,k) = 0.0d0 @@ -145,16 +133,6 @@ Y_e_minus(i,j,k) = 0.0d0 endif
- if (shift_state .ne. 0) then - lbetax(i,j,k) = betax(i,j,k) - lbetay(i,j,k) = betay(i,j,k) - lbetaz(i,j,k) = betaz(i,j,k) - else - lbetax(i,j,k) = 0.d0 - lbetay(i,j,k) = 0.d0 - lbetaz(i,j,k) = 0.d0 - end if - enddo enddo enddo @@ -175,7 +153,7 @@ Bvecxplus(:,j,k),Bvecyplus(:,j,k),Bveczplus(:,j,k),psidcplus(:,j,k),epsplus(:,j,k),& 1,trivial_rp(:,j,k), hydro_excision_mask(:,j,k),& gxx(:,j,k), gxy(:,j,k), gxz(:,j,k), gyy(:,j,k), gyz(:,j,k), & - gzz(:,j,k), psi4(:,j,k), lbetax(:,j,k), alp(:,j,k),& + gzz(:,j,k), betax(:,j,k), alp(:,j,k),& w_lorentz(:,j,k), & 1, j, k, nx, ny, nz, GRHydro_mppm_eigenvalue_x_left, & GRHydro_mppm_eigenvalue_x_right, & @@ -190,7 +168,7 @@ Bvecxplus(:,j,k),Bvecyplus(:,j,k),Bveczplus(:,j,k),dump(:,j,k),epsplus(:,j,k),& 0,trivial_rp(:,j,k), hydro_excision_mask(:,j,k),& gxx(:,j,k), gxy(:,j,k), gxz(:,j,k), gyy(:,j,k), gyz(:,j,k), & - gzz(:,j,k), psi4(:,j,k), lbetax(:,j,k), alp(:,j,k),& + gzz(:,j,k), betax(:,j,k), alp(:,j,k),& w_lorentz(:,j,k), & 1, j, k, nx, ny, nz, GRHydro_mppm_eigenvalue_x_left, & GRHydro_mppm_eigenvalue_x_right, & @@ -246,7 +224,7 @@ Bvecyplus(j,:,k),Bveczplus(j,:,k),Bvecxplus(j,:,k),psidcplus(j,:,k),epsplus(j,:,k),& 1,trivial_rp(j,:,k), hydro_excision_mask(j,:,k),& gyy(j,:,k), gyz(j,:,k), gxy(j,:,k), gzz(j,:,k), gxz(j,:,k), & - gxx(j,:,k), psi4(j,:,k), lbetay(j,:,k), alp(j,:,k),& + gxx(j,:,k), betay(j,:,k), alp(j,:,k),& w_lorentz(j,:,k), & 2, j, k, nx, ny, nz, GRHydro_mppm_eigenvalue_y_left, & GRHydro_mppm_eigenvalue_y_right, & @@ -261,7 +239,7 @@ Bvecyplus(j,:,k),Bveczplus(j,:,k),Bvecxplus(j,:,k),dump(j,:,k),epsplus(j,:,k),& 0,trivial_rp(j,:,k), hydro_excision_mask(j,:,k),& gyy(j,:,k), gyz(j,:,k), gxy(j,:,k), gzz(j,:,k), gxz(j,:,k), & - gxx(j,:,k), psi4(j,:,k), lbetay(j,:,k), alp(j,:,k),& + gxx(j,:,k), betay(j,:,k), alp(j,:,k),& w_lorentz(j,:,k), & 2, j, k, nx, ny, nz, GRHydro_mppm_eigenvalue_y_left, & GRHydro_mppm_eigenvalue_y_right, & @@ -316,7 +294,7 @@ Bveczplus(j,k,:),Bvecxplus(j,k,:),Bvecyplus(j,k,:),psidcplus(j,k,:),epsplus(j,k,:),& 1,trivial_rp(j,k,:), hydro_excision_mask(j,k,:),& gzz(j,k,:), gxz(j,k,:), gyz(j,k,:), gxx(j,k,:), gxy(j,k,:), & - gyy(j,k,:), psi4(j,k,:), lbetaz(j,k,:), alp(j,k,:),& + gyy(j,k,:), betaz(j,k,:), alp(j,k,:),& w_lorentz(j,k,:), & 3, j, k, nx, ny, nz, GRHydro_mppm_eigenvalue_z_left, & GRHydro_mppm_eigenvalue_z_right, & @@ -331,7 +309,7 @@ Bveczplus(j,k,:),Bvecxplus(j,k,:),Bvecyplus(j,k,:),dump(j,k,:),epsplus(j,k,:),& 0,trivial_rp(j,k,:), hydro_excision_mask(j,k,:),& gzz(j,k,:), gxz(j,k,:), gyz(j,k,:), gxx(j,k,:), gxy(j,k,:), & - gyy(j,k,:), psi4(j,k,:), lbetaz(j,k,:), alp(j,k,:),& + gyy(j,k,:), betaz(j,k,:), alp(j,k,:),& w_lorentz(j,k,:), & 3, j, k, nx, ny, nz, GRHydro_mppm_eigenvalue_z_left, & GRHydro_mppm_eigenvalue_z_right, & @@ -379,7 +357,6 @@ !!$ PPM ends.
deallocate(trivial_rp) - deallocate(psi4, lbetax, lbetay, lbetaz) deallocate(dum,dump,dumm)
end subroutine GRHydro_PPMMReconstruct_drv
File [modified]: GRHydro_PPMReconstruct_drv.F90 Delta lines: +6 -34 =================================================================== --- trunk/src/GRHydro_PPMReconstruct_drv.F90 2011-08-02 06:31:44 UTC (rev 255) +++ trunk/src/GRHydro_PPMReconstruct_drv.F90 2011-08-02 18:52:56 UTC (rev 256) @@ -1,7 +1,7 @@ /*@@ @file GRHydro_PPMReconstruct_drv.F90 @date Tue Jul 19 13:22:03 EDT 2011 - @author Bruno C. Mundim, Joshua Faber + @author Bruno C. Mundim, Joshua Faber, Christian D. Ott @desc Driver routine to perform the PPM reconstructions. @enddesc @@ -25,7 +25,7 @@ /*@@ @routine GRHydro_PPMReconstruct_drv @date Tue Jul 19 13:24:34 EDT 2011 - @author Luca Baiotti, Ian Hawke, Bruno C. Mundim, Joshua Faber + @author Luca Baiotti, Ian Hawke, Bruno C. Mundim, Joshua Faber, Christian D. Ott @desc A driver routine to do PPM reconstructions. @enddesc @@ -48,34 +48,18 @@ integer :: nx, ny, nz, i, j, k, itracer
logical, dimension(:,:,:), allocatable :: trivial_rp -!!$ logical, dimension(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)) :: trivial_rp
CCTK_INT :: type_bitsx, trivialx, not_trivialx, & &type_bitsy, trivialy, not_trivialy, & &type_bitsz, trivialz, not_trivialz
- CCTK_REAL, dimension(:,:,:),allocatable :: & - &psi4, lbetax, lbetay, lbetaz -!!$ CCTK_REAL, dimension(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)) :: & -!!$ &psi4, lbetax, lbetay, lbetaz - CCTK_INT :: ierr
allocate(trivial_rp(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),STAT=ierr) if (ierr .ne. 0) then call CCTK_WARN(0, "Allocation problems with trivial_rp") end if - - allocate(psi4(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - lbetax(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - lbetay(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - lbetaz(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - STAT=ierr) - - if (ierr .ne. 0) then - call CCTK_WARN(0, "Allocation problems with psi4 or lbeta") - end if - + call SpaceMask_GetTypeBits(type_bitsx, "Hydro_RiemannProblemX") call SpaceMask_GetStateBits(trivialx, "Hydro_RiemannProblemX", & &"trivial") @@ -103,7 +87,6 @@ do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) trivial_rp(i,j,k) = .false. - psi4(i,j,k) = 1.0d0 rhoplus(i,j,k) = 0.0d0 rhominus(i,j,k)= 0.0d0 epsplus(i,j,k) = 0.0d0 @@ -125,16 +108,6 @@ Y_e_minus(i,j,k) = 0.0d0 endif
- if (shift_state .ne. 0) then - lbetax(i,j,k) = betax(i,j,k) - lbetay(i,j,k) = betay(i,j,k) - lbetaz(i,j,k) = betaz(i,j,k) - else - lbetax(i,j,k) = 0.d0 - lbetay(i,j,k) = 0.d0 - lbetaz(i,j,k) = 0.d0 - end if - enddo enddo enddo @@ -153,7 +126,7 @@ velxplus(:,j,k),velyplus(:,j,k),velzplus(:,j,k),epsplus(:,j,k),& trivial_rp(:,j,k), hydro_excision_mask(:,j,k),& gxx(:,j,k), gxy(:,j,k), gxz(:,j,k), gyy(:,j,k), gyz(:,j,k), & - gzz(:,j,k), psi4(:,j,k), lbetax(:,j,k), alp(:,j,k),& + gzz(:,j,k), betax(:,j,k), alp(:,j,k),& w_lorentz(:,j,k), & 1, j, k, nx, ny, nz, GRHydro_mppm_eigenvalue_x_left, & GRHydro_mppm_eigenvalue_x_right, & @@ -204,7 +177,7 @@ velyplus(j,:,k),velzplus(j,:,k),velxplus(j,:,k),epsplus(j,:,k),& trivial_rp(j,:,k), hydro_excision_mask(j,:,k),& gyy(j,:,k), gyz(j,:,k), gxy(j,:,k), gzz(j,:,k), gxz(j,:,k), & - gxx(j,:,k), psi4(j,:,k), lbetay(j,:,k), alp(j,:,k),& + gxx(j,:,k), betay(j,:,k), alp(j,:,k),& w_lorentz(j,:,k), & 2, j, k, nx, ny, nz, GRHydro_mppm_eigenvalue_y_left, & GRHydro_mppm_eigenvalue_y_right, & @@ -255,7 +228,7 @@ velzplus(j,k,:),velxplus(j,k,:),velyplus(j,k,:),epsplus(j,k,:),& trivial_rp(j,k,:), hydro_excision_mask(j,k,:),& gzz(j,k,:), gxz(j,k,:), gyz(j,k,:), gxx(j,k,:), gxy(j,k,:), & - gyy(j,k,:), psi4(j,k,:), lbetaz(j,k,:), alp(j,k,:),& + gyy(j,k,:), betaz(j,k,:), alp(j,k,:),& w_lorentz(j,k,:), & 3, j, k, nx, ny, nz, GRHydro_mppm_eigenvalue_z_left, & GRHydro_mppm_eigenvalue_z_right, & @@ -302,7 +275,6 @@ !!$ PPM ends.
deallocate(trivial_rp) - deallocate(psi4, lbetax, lbetay, lbetaz)
end subroutine GRHydro_PPMReconstruct_drv
File [modified]: GRHydro_Reconstruct.F90 Delta lines: +6 -8 =================================================================== --- trunk/src/GRHydro_Reconstruct.F90 2011-08-02 06:31:44 UTC (rev 255) +++ trunk/src/GRHydro_Reconstruct.F90 2011-08-02 18:52:56 UTC (rev 256) @@ -1,7 +1,7 @@ /*@@ @file GRHydro_Reconstruct.F90 @date Sat Jan 26 02:13:25 2002 - @author + @author Bruno Mundim, Josh Faber, Christian D. Ott @desc Wrapper routine to perform the reconstruction. @enddesc @@ -17,7 +17,7 @@ /*@@ @routine Reconstruction @date Sat Jan 26 02:13:47 2002 - @author Luca Baiotti, Ian Hawke + @author Luca Baiotti, Ian Hawke, Christian D. Ott @desc A wrapper routine to do reconstruction. Currently just does TVD on the primitive variables. @@ -41,6 +41,10 @@ CCTK_INT :: i,j,k CCTK_REAL :: local_min_tracer
+ ! set things up + if (shift_state .eq. 0) then + call CCTK_WARN(0,"This code no longer supports shift_state = 0"); + endif
if (CCTK_EQUALS(recon_method,"tvd")) then ! this handles MHD and non-MHD @@ -116,12 +120,6 @@ call CCTK_WARN(0,"Variable type to reconstruct not recognized.") end if
- if(evolve_tracer.ne.0) then - ! Call the conserved tracer routine in any case because (accord. to - ! Christian Ott) this is the only way this works - call Prim2ConservativeTracer(CCTK_PASS_FTOF) - end if - return
end subroutine Reconstruction
File [modified]: GRHydro_TVDReconstruct_drv.F90 Delta lines: +2 -30 =================================================================== --- trunk/src/GRHydro_TVDReconstruct_drv.F90 2011-08-02 06:31:44 UTC (rev 255) +++ trunk/src/GRHydro_TVDReconstruct_drv.F90 2011-08-02 18:52:56 UTC (rev 256) @@ -1,7 +1,7 @@ /*@@ @file GRHydro_TVDReconstruct_drv.F90 @date Tue Jul 19 13:22:03 EDT 2011 - @author Bruno C. Mundim, Joshua Faber + @author Bruno C. Mundim, Joshua Faber, Christian D. Ott @desc Driver routine to perform the TVD reconstruction. @enddesc @@ -31,7 +31,7 @@ /*@@ @routine GRHydro_TVDReconstruct_drv @date Tue Jul 19 13:24:34 EDT 2011 - @author Luca Baiotti, Ian Hawke, Bruno C. Mundim, Joshua Faber + @author Luca Baiotti, Ian Hawke, Bruno C. Mundim, Joshua Faber, Christian D. Ott @desc A driver routine to do TVD reconstruction. Currently just does TVD on the primitive variables. @@ -55,17 +55,11 @@ integer :: nx, ny, nz, i, j, k, itracer
logical, dimension(:,:,:), allocatable :: trivial_rp -!!$ logical, dimension(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)) :: trivial_rp
CCTK_INT :: type_bitsx, trivialx, not_trivialx, & &type_bitsy, trivialy, not_trivialy, & &type_bitsz, trivialz, not_trivialz
- CCTK_REAL, dimension(:,:,:),allocatable :: & - &psi4, lbetax, lbetay, lbetaz -!!$ CCTK_REAL, dimension(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)) :: & -!!$ &psi4, lbetax, lbetay, lbetaz - CCTK_INT :: ierr
allocate(trivial_rp(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),STAT=ierr) @@ -73,16 +67,6 @@ call CCTK_WARN(0, "Allocation problems with trivial_rp") end if
- allocate(psi4(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - lbetax(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - lbetay(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - lbetaz(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),& - STAT=ierr) - - if (ierr .ne. 0) then - call CCTK_WARN(0, "Allocation problems with lbeta") - end if - call SpaceMask_GetTypeBits(type_bitsx, "Hydro_RiemannProblemX") call SpaceMask_GetStateBits(trivialx, "Hydro_RiemannProblemX", & &"trivial") @@ -110,7 +94,6 @@ do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) trivial_rp(i,j,k) = .false. - psi4(i,j,k) = 1.0d0 rhoplus(i,j,k) = 0.0d0 rhominus(i,j,k)= 0.0d0 epsplus(i,j,k) = 0.0d0 @@ -145,16 +128,6 @@ Y_e_minus(i,j,k) = 0.0d0 endif
- if (shift_state .ne. 0) then - lbetax(i,j,k) = betax(i,j,k) - lbetay(i,j,k) = betay(i,j,k) - lbetaz(i,j,k) = betaz(i,j,k) - else - lbetax(i,j,k) = 0.d0 - lbetay(i,j,k) = 0.d0 - lbetaz(i,j,k) = 0.d0 - end if - enddo enddo enddo @@ -255,7 +228,6 @@ !!$ TVD ends.
deallocate(trivial_rp) - deallocate(psi4, lbetax, lbetay, lbetaz)
end subroutine GRHydro_TVDReconstruct_drv
commits@lists.einsteintoolkit.org