From 57835a343e446ee7925c5952cc235242cc69e619 Mon Sep 17 00:00:00 2001 From: rhaas Date: Thu, 9 Aug 2012 06:26:44 +0000 Subject: Revised parameters for advected loop test From: Josh Faber git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/GRHydro_InitData/trunk@142 ac85fae7-cede-4708-beff-ae01c7fa1c26 --- src/GRHydro_AdvectedLoopM.F90 | 72 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 60 insertions(+), 12 deletions(-) diff --git a/src/GRHydro_AdvectedLoopM.F90 b/src/GRHydro_AdvectedLoopM.F90 index 81a3ede..22775ed 100644 --- a/src/GRHydro_AdvectedLoopM.F90 +++ b/src/GRHydro_AdvectedLoopM.F90 @@ -67,7 +67,7 @@ subroutine GRHydro_AdvectedLoopM(CCTK_ARGUMENTS) CCTK_REAL :: range_x,range_y,range_z,range_d CCTK_REAL :: cos_theta, sin_theta, tan_theta CCTK_REAL :: Bvecx_d, Bvecy_d, Bvecz_d - CCTK_REAL :: x_d, y_d, z_d + CCTK_REAL :: x_d, y_d, z_d,diaglength CCTK_REAL :: dx_d, dy_d, dz_d, dx_x, dz_x !!$Adiabatic index for test: @@ -83,19 +83,47 @@ subroutine GRHydro_AdvectedLoopM(CCTK_ARGUMENTS) rhoval = 1.0d0 pressval = 3.0d0 + if (CCTK_EQUALS(advectedloop_type,"2D")) then + + !!$ Vx, Vy and Vz values: - if (CCTK_EQUALS(advectedloop_case,"V^z/=0")) then - vxval=0.2d0/sqrt(6.0d0) - vyval=0.5d0*vxval - vzval=vyval - else if (CCTK_EQUALS(advectedloop_case,"V^z=0")) then - vxval=0.2d0/sqrt(6.0d0) - vyval=0.5d0*vxval - vzval=0.0d0 - else - call CCTK_WARN(0,"V^z component case not recognized!") - end if + if (CCTK_EQUALS(advectedloop_case,"V^z/=0")) then + +!!$vxval=0.2d0/sqrt(6.0d0) +!!$ This new choice yields a crossing time of exactly t=24 +!!$ assuming -1 x_d=0 is equivalent to x+z=0 + x_d = cos_theta*x(i,j,k)+sin_theta*z(i,j,k) y_d = y(i,j,k) z_d = cos_theta*z(i,j,k)-sin_theta*x(i,j,k) +!!$ need to make x_d periodic! + + if(x_d.gt.1.5*diaglength) then + x_d=x_d-2.0*diaglength + else if (x_d.gt.0.5*diaglength .and. x_d.lt.1.5*diaglength) then + x_d=x_d-diaglength + else if(x_d.lt.-1.5*diaglength) then + x_d=x_d+2.0*diaglength + else if (x_d.lt.(-0.5*diaglength) .and. x_d.gt.(-1.5*diaglength)) then + x_d=x_d+diaglength + endif + radius = sqrt(x_d**2+y_d**2) if (CCTK_EQUALS(advectedloop_delA,"Exact")) then -- cgit v1.2.3