diff options
Diffstat (limited to 'src/qlm_killing_test.F90')
-rw-r--r-- | src/qlm_killing_test.F90 | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/qlm_killing_test.F90 b/src/qlm_killing_test.F90 new file mode 100644 index 0000000..d268824 --- /dev/null +++ b/src/qlm_killing_test.F90 @@ -0,0 +1,83 @@ +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Functions.h" +#include "cctk_Parameters.h" + + + +subroutine qlm_killing_test (CCTK_ARGUMENTS, hn) + use cctk + use qlm_boundary + use qlm_derivs + implicit none + DECLARE_CCTK_ARGUMENTS + DECLARE_CCTK_FUNCTIONS + DECLARE_CCTK_PARAMETERS + integer :: hn + + CCTK_REAL :: qq(2,2), dqq(2,2,2) + CCTK_REAL :: xi(2), dxi(2,2) + CCTK_REAL :: lqq(2,2) + + CCTK_REAL :: delta_space(2) + + integer :: i,j + integer :: a, b, c + CCTK_REAL :: theta, phi + + if (veryverbose/=0) then + call CCTK_INFO ("Testing Killing vector field") + end if + + delta_space(:) = (/ qlm_delta_theta(hn), qlm_delta_phi(hn) /) + + ! Calculate the coordinates + do j = 1+qlm_nghostsphi(hn), qlm_nphi(hn)-qlm_nghostsphi(hn) + do i = 1+qlm_nghoststheta(hn), qlm_ntheta(hn)-qlm_nghoststheta(hn) + theta = qlm_origin_theta(hn) + (i-1)*qlm_delta_theta(hn) + phi = qlm_origin_phi(hn) + (j-1)*qlm_delta_phi(hn) + + ! 2-metric on the horizon + qq(1,1) = qlm_qtt(i,j,hn) + qq(1,2) = qlm_qtp(i,j,hn) + qq(2,2) = qlm_qpp(i,j,hn) + qq(2,1) = qq(1,2) + + dqq(1,1,1) = qlm_dqttt(i,j,hn) + dqq(1,2,1) = qlm_dqtpt(i,j,hn) + dqq(2,2,1) = qlm_dqppt(i,j,hn) + dqq(1,1,2) = qlm_dqttp(i,j,hn) + dqq(1,2,2) = qlm_dqtpp(i,j,hn) + dqq(2,2,2) = qlm_dqppp(i,j,hn) + dqq(2,1,:) = dqq(1,2,:) + + xi(1) = qlm_xi_t(i,j,hn) + xi(2) = qlm_xi_p(i,j,hn) + + dxi(1,1:2) = deriv (qlm_xi_t(:,:,hn), i, j, delta_space) + dxi(2,1:2) = deriv (qlm_xi_p(:,:,hn), i, j, delta_space) + + ! L_xi q_ab = q_cb d_a xi^c + q_ac d_b xi^c + xi^c d_c q_ab + do a=1,2 + do b=1,2 + lqq(a,b) = 0 + do c=1,2 + lqq(a,b) = lqq(a,b) + qq(c,b) * dxi(c,a) & + & + qq(a,c) * dxi(c,b) & + & + xi(c) * dqq(a,b,c) + end do + end do + end do + + qlm_lqtt(i,j,hn) = lqq(1,1) + qlm_lqtp(i,j,hn) = lqq(1,2) + qlm_lqpp(i,j,hn) = lqq(2,2) + + end do + end do + + call set_boundary (CCTK_PASS_FTOF, hn, qlm_lqtt(:,:,hn), +1) + call set_boundary (CCTK_PASS_FTOF, hn, qlm_lqtp(:,:,hn), +1) + call set_boundary (CCTK_PASS_FTOF, hn, qlm_lqpp(:,:,hn), +1) + +end subroutine qlm_killing_test |