diff options
Diffstat (limited to 'src/GRHydro_TVDReconstruct_drv.F90')
-rw-r--r-- | src/GRHydro_TVDReconstruct_drv.F90 | 90 |
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 |