[Commits] [svn:einsteintoolkit] GRHydro/trunk/ (Rev. 310)
bcmsma at astro.rit.edu
bcmsma at astro.rit.edu
Tue Jan 3 16:13:04 CST 2012
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
{
More information about the Commits
mailing list