aboutsummaryrefslogtreecommitdiff
path: root/src/GRHydro_TVDReconstruct_drv.F90
diff options
context:
space:
mode:
Diffstat (limited to 'src/GRHydro_TVDReconstruct_drv.F90')
-rw-r--r--src/GRHydro_TVDReconstruct_drv.F9090
1 files changed, 57 insertions, 33 deletions
diff --git a/src/GRHydro_TVDReconstruct_drv.F90 b/src/GRHydro_TVDReconstruct_drv.F90
index 6fc2356..f5bf492 100644
--- a/src/GRHydro_TVDReconstruct_drv.F90
+++ b/src/GRHydro_TVDReconstruct_drv.F90
@@ -62,27 +62,22 @@ subroutine GRHydro_TVDReconstruct_drv(CCTK_ARGUMENTS)
&type_bitsz, trivialz, not_trivialz
CCTK_REAL, dimension(:,:,:),allocatable :: &
- &psi4, lbetax, lbetay, lbetaz, dum, dump, dumm
+ &psi4, lbetax, lbetay, lbetaz
!!$ CCTK_REAL, dimension(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)) :: &
!!$ &psi4, lbetax, lbetay, lbetaz
CCTK_INT :: ierr
- CCTK_REAL :: local_min_tracer
-
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
-!!$ 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)),&
- dump(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),&
- dumm(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)),STAT=ierr)
+ STAT=ierr)
if (ierr .ne. 0) then
call CCTK_WARN(0, "Allocation problems with lbeta")
@@ -108,32 +103,62 @@ subroutine GRHydro_TVDReconstruct_drv(CCTK_ARGUMENTS)
ny = cctk_lsh(2)
nz = cctk_lsh(3)
- !$OMP PARALLEL
- !$OMP WORKSHARE
- trivial_rp = .false.
- !$OMP END WORKSHARE NOWAIT
-
-!!$ Currently only option is reconstruction on primitive variables.
-!!$ Should change this.
-
- !$OMP WORKSHARE
- psi4 = 1.d0
- !$OMP END WORKSHARE NOWAIT
- if (shift_state .ne. 0) then
- !$OMP WORKSHARE
- lbetax = betax
- lbetay = betay
- lbetaz = betaz
- !$OMP END WORKSHARE NOWAIT
- else
- !$OMP WORKSHARE
- lbetax = 0.d0
- lbetay = 0.d0
- lbetaz = 0.d0
- !$OMP END WORKSHARE NOWAIT
- end if
- !$OMP END PARALLEL
+!!$ Initialize variables that store reconstructed quantities:
+
+ !$OMP PARALLEL DO PRIVATE(i,j,k)
+ do k=1,cctk_lsh(3)
+ 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
+ epsminus(i,j,k) = 0.0d0
+ velxplus(i,j,k) = 0.0d0
+ velxminus(i,j,k) = 0.0d0
+ velyplus(i,j,k) = 0.0d0
+ velyminus(i,j,k) = 0.0d0
+ velzplus(i,j,k) = 0.0d0
+ velzminus(i,j,k) = 0.0d0
+
+ if(evolve_mhd.ne.0) then
+ Bvecxplus(i,j,k) = 0.0d0
+ Bvecxminus(i,j,k) = 0.0d0
+ Bvecyplus(i,j,k) = 0.0d0
+ Bvecyminus(i,j,k) = 0.0d0
+ Bveczplus(i,j,k) = 0.0d0
+ Bveczminus(i,j,k) = 0.0d0
+ if(clean_divergence.ne.0) then
+ psidcplus(i,j,k) = 0.0d0
+ psidcminus(i,j,k) = 0.0d0
+ endif
+ endif
+
+ if (evolve_tracer .ne. 0) then
+ tracerplus(i,j,k,:) = 0.0d0
+ tracerminus(i,j,k,:) = 0.0d0
+ endif
+
+ if (evolve_Y_e .ne. 0) then
+ Y_e_plus(i,j,k) = 0.0d0
+ 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
+ !$OMP END PARALLEL DO
!!$ TVD starts:
if (evolve_tracer .ne. 0) then
@@ -231,7 +256,6 @@ subroutine GRHydro_TVDReconstruct_drv(CCTK_ARGUMENTS)
deallocate(trivial_rp)
deallocate(psi4, lbetax, lbetay, lbetaz)
- deallocate(dum,dump,dumm)
end subroutine GRHydro_TVDReconstruct_drv