User: bmundim Date: 2012/01/03 04:13 PM
Added: /trunk/src/ GRHydro_CalcBcom.F90
Modified: /trunk/ schedule.ccl /trunk/src/ make.code.defn
Log: Add a routine to calculate mag pressure/comoving field
* When Tmunu is not calculated, ie when no storage is selected, the comoving magnetic field/magnetic pressure wasn't calculated at all. This commit allows that now.
File Changes:
Directory: /trunk/src/ ======================
File [added]: GRHydro_CalcBcom.F90 Delta lines: +66 -0 =================================================================== --- trunk/src/GRHydro_CalcBcom.F90 (rev 0) +++ trunk/src/GRHydro_CalcBcom.F90 2012-01-03 22:13:04 UTC (rev 310) @@ -0,0 +1,66 @@ + /*@@ + @file GRHydro_CalcBcom.F90 + @date Jan 01, 2012 + @author Bruno Mundim + @histpry + Based on GRHydro_TmunuM.F90 file. + @desc + The calculation of the magnetic pressure and the comoving magnetic + field. + @enddesc + @@*/ +#include "cctk.h" +#include "cctk_Arguments.h" + +#define velx(i,j,k) vel(i,j,k,1) +#define vely(i,j,k) vel(i,j,k,2) +#define velz(i,j,k) vel(i,j,k,3) +#define Bvecx(i,j,k) Bvec(i,j,k,1) +#define Bvecy(i,j,k) Bvec(i,j,k,2) +#define Bvecz(i,j,k) Bvec(i,j,k,3) +#define bcomx(i,j,k) bcom(i,j,k,1) +#define bcomy(i,j,k) bcom(i,j,k,2) +#define bcomz(i,j,k) bcom(i,j,k,3) + + subroutine GRHydro_CalcBcom(CCTK_ARGUMENTS) + + implicit none + + DECLARE_CCTK_ARGUMENTS + + CCTK_REAL :: velxlow, velylow, velzlow + CCTK_REAL :: Bvecxlow,Bvecylow,Bveczlow + CCTK_REAL :: bdotv,b2,bxlow,bylow,bzlow,btlow,dum + CCTK_INT :: i,j,k + + if(stress_energy_state.ne.0) then + return + end if + + !$OMP PARALLEL DO PRIVATE(i,j,k,velxlow, velylow, velzlow,& + !$OMP Bvecxlow,Bvecylow,Bveczlow, bdotv,dum,b2,bxlow,bylow,bzlow) + + do k = 1, cctk_lsh(3) + do j = 1, cctk_lsh(2) + do i = 1, cctk_lsh(1) + + call calc_vlow_blow(gxx(i,j,k),gxy(i,j,k),gxz(i,j,k),& + gyy(i,j,k),gyz(i,j,k),gzz(i,j,k), & + velx(i,j,k),vely(i,j,k),velz(i,j,k),Bvecx(i,j,k),Bvecy(i,j,k),Bvecz(i,j,k), & + velxlow,velylow,velzlow,Bvecxlow,Bvecylow,Bveczlow, & + bdotv,b2,dum,dum,bxlow,bylow,bzlow) + + bcom_sq(i,j,k) = b2 + bcom0(i,j,k) = w_lorentz(i,j,k)*bdotv/alp(i,j,k) + bcomx(i,j,k) = Bvecx(i,j,k)/w_lorentz(i,j,k) + bcom0(i,j,k)*(alp(i,j,k)*velx(i,j,k)-betax(i,j,k)) + bcomy(i,j,k) = Bvecy(i,j,k)/w_lorentz(i,j,k) + bcom0(i,j,k)*(alp(i,j,k)*vely(i,j,k)-betay(i,j,k)) + bcomz(i,j,k) = Bvecz(i,j,k)/w_lorentz(i,j,k) + bcom0(i,j,k)*(alp(i,j,k)*velz(i,j,k)-betaz(i,j,k)) + + end do + end do + end do + !$OMP END PARALLEL DO + + return + + end subroutine GRHydro_CalcBcom
File [modified]: make.code.defn Delta lines: +1 -0 =================================================================== --- trunk/src/make.code.defn 2011-12-07 22:33:23 UTC (rev 309) +++ trunk/src/make.code.defn 2012-01-03 22:13:04 UTC (rev 310) @@ -5,6 +5,7 @@
SRCS = Utils.F90 \ GRHydro_Boundaries.F90 \ + GRHydro_CalcBcom.F90 \ GRHydro_CalcUpdate.F90 \ GRHydro_Con2Prim.F90 \ GRHydro_DivergenceClean.F90 \
Directory: /trunk/ ==================
File [modified]: schedule.ccl Delta lines: +10 -0 =================================================================== --- trunk/schedule.ccl 2011-12-07 22:33:23 UTC (rev 309) +++ trunk/schedule.ccl 2012-01-03 22:13:04 UTC (rev 310) @@ -1139,6 +1139,16 @@ { LANG: Fortran } "Compute the energy-momentum tensor - MHD version" +# bcom is already calculated in GRHydro_TmunuM. +# When Tmunu is not calculated, then the following +# routine is used to evaluate bcom, if requested. + if (calculate_bcom){ + schedule GRHydro_CalcBcom IN HydroBase_PostStep + { + LANG: Fortran + } "Compute comoving magnetic field, pressure, etc..." + } + } else { schedule GRHydro_Tmunu IN AddToTmunu {
commits@lists.einsteintoolkit.org