diff options
author | schnetter <schnetter@b716e942-a2de-43ad-8f52-f3dfe468e4e7> | 2008-07-21 16:11:57 +0000 |
---|---|---|
committer | schnetter <schnetter@b716e942-a2de-43ad-8f52-f3dfe468e4e7> | 2008-07-21 16:11:57 +0000 |
commit | b704bcf9b565e092ffa29a7f78ae1b890e8ca5be (patch) | |
tree | acb8775412e47b558707b34014d69c9383705a04 | |
parent | 1a8ab73c2c5ca659a617cad16222769aacf36429 (diff) |
New function calc_3metricderivdot
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinUtils/TGRtensor/trunk@46 b716e942-a2de-43ad-8f52-f3dfe468e4e7
-rw-r--r-- | src/adm_metric.F90 | 208 |
1 files changed, 189 insertions, 19 deletions
diff --git a/src/adm_metric.F90 b/src/adm_metric.F90 index 9e284cd..a9ef4a4 100644 --- a/src/adm_metric.F90 +++ b/src/adm_metric.F90 @@ -3,6 +3,7 @@ #include "cctk.h" module adm_metric + use constants use tensor implicit none private @@ -12,14 +13,19 @@ module adm_metric public calc_3metric public calc_3metricderivs - public calc_3metricdot public calc_extcurv + public calc_3metricdot + public calc_3metricderivdot +!!$ public calc_extcurvdot +!!$ public calc_3metricdot2 public calc_3metricdot_simple public calc_3metricderivdot_simple public calc_extcurvdot_simple public calc_3metricdot2_simple +!!$ public simplify_t4 + contains subroutine calc_4metric (gg, alfa, beta, g4) @@ -235,6 +241,29 @@ contains + subroutine calc_extcurv (gg, dgg, gg_dot, alfa, beta, dbeta, kk) + CCTK_REAL, intent(in) :: gg(3,3), dgg(3,3,3), gg_dot(3,3) + CCTK_REAL, intent(in) :: alfa + CCTK_REAL, intent(in) :: beta(3), dbeta(3,3) + CCTK_REAL, intent(out) :: kk(3,3) + integer :: i,j,k + + ! d/dt g_ij = -2 alpha K_ij + g_kj beta^k,i + g_ik beta^k,j + beta^k g_ij,k + + do i=1,3 + do j=1,3 + kk(i,j) = - gg_dot(i,j) + do k=1,3 + kk(i,j) = kk(i,j) & + + gg(k,j) * dbeta(k,i) + gg(i,k) * dbeta(k,j) & + + beta(k) * dgg(i,j,k) + end do + kk(i,j) = kk(i,j) / (2*alfa) + end do + end do + + end subroutine calc_extcurv + subroutine calc_3metricdot (gg, dgg, kk, alfa, beta, dbeta, gg_dot) CCTK_REAL, intent(in) :: gg(3,3), dgg(3,3,3) CCTK_REAL, intent(in) :: kk(3,3) @@ -257,31 +286,95 @@ contains end do end subroutine calc_3metricdot - subroutine calc_extcurv (gg, dgg, gg_dot, alfa, beta, dbeta, kk) - CCTK_REAL, intent(in) :: gg(3,3), dgg(3,3,3), gg_dot(3,3) - CCTK_REAL, intent(in) :: alfa - CCTK_REAL, intent(in) :: beta(3), dbeta(3,3) - CCTK_REAL, intent(out) :: kk(3,3) - integer :: i,j,k + subroutine calc_3metricderivdot (gg, dgg, ddgg, kk, dkk, & + alfa, dalfa, beta, dbeta, ddbeta, dgg_dot) + CCTK_REAL, intent(in) :: gg(3,3), dgg(3,3,3), ddgg(3,3,3,3) + CCTK_REAL, intent(in) :: kk(3,3), dkk(3,3,3) + CCTK_REAL, intent(in) :: alfa, dalfa(3) + CCTK_REAL, intent(in) :: beta(3), dbeta(3,3), ddbeta(3,3,3) + CCTK_REAL, intent(out) :: dgg_dot(3,3,3) + integer :: i,j,k,l ! d/dt g_ij = -2 alpha K_ij + g_kj beta^k,i + g_ik beta^k,j + beta^k g_ij,k + ! d/dt g_ij,k = - 2 alpha,k K_ij - 2 alpha K_ij,k + ! + g_lj,k beta^l,i + g_lj beta^l,ik + ! + g_il,k beta^l,j + g_il beta^l,jk + ! + beta^l,k g_ij,l + beta^l g_ij,lk + do i=1,3 do j=1,3 - kk(i,j) = - gg_dot(i,j) do k=1,3 - kk(i,j) = kk(i,j) & - + gg(k,j) * dbeta(k,i) + gg(i,k) * dbeta(k,j) & - + beta(k) * dgg(i,j,k) + dgg_dot(i,j,k) = - 2*dalfa(k) * kk(i,j) - 2*alfa * dkk(i,j,k) + do l=1,3 + dgg_dot(i,j,k) = dgg_dot(i,j,k) & + + dgg(l,j,k) * dbeta(l,i) + gg(l,j) * ddbeta(l,i,k) & + + dgg(i,l,k) * dbeta(l,j) + gg(i,l) * ddbeta(l,j,k) & + + dbeta(l,k) * dgg(i,j,l) + beta(l) * ddgg(i,j,l,k) + end do end do - kk(i,j) = kk(i,j) / (2*alfa) end do end do - - end subroutine calc_extcurv + end subroutine calc_3metricderivdot + +!!$ subroutine calc_extcurvdot (gg,gu,ri, kk, t44, kk_dot) +!!$ CCTK_REAL, intent(in) :: gg(3,3), gu(3,3) +!!$ CCTK_REAL, intent(in) :: ri(3,3) +!!$ CCTK_REAL, intent(in) :: kk(3,3) +!!$ CCTK_REAL, intent(out) :: kk_dot(3,3) +!!$ integer :: i,j,l,m +!!$ +!!$ ! d/dt K_ij = R_ij - 2 K_il g^lm K_mj + g^lm K_lm K_ij +!!$ ! - 8 pi (T_ij - 1/2 g_ij T) +!!$ +!!$ do i=1,3 +!!$ do j=1,3 +!!$ kk_dot(i,j) = ri(i,j) - 8*pi * tt(i,j) +!!$ do l=1,3 +!!$ do m=1,3 +!!$ kk_dot(i,j) = kk_dot(i,j) & +!!$ + gu(l,m) * (-2 * kk(i,l) * kk(m,j) + kk(l,m) * kk(i,j)) & +!!$ + 4*pi * gg(i,j) * gu(l,m) * tt(l,m) +!!$ end do +!!$ end do +!!$ end do +!!$ end do +!!$ end subroutine calc_extcurvdot_simple +!!$ +!!$ subroutine calc_3metricdot2 (kk_dot, gg_dot2) +!!$ CCTK_REAL, intent(in) :: kk_dot(3,3) +!!$ CCTK_REAL, intent(out) :: gg_dot2(3,3) +!!$ integer :: i,j +!!$ +!!$ ! d/dt g_ij = -2 alpha K_ij + g_kj beta^k,i + g_ik beta^k,j + beta^k g_ij,k +!!$ +!!$ ! d^2/dt^2 g_ij = -2 alpha K_ij + g_kj beta^k,i + g_ik beta^k,j + beta^k g_ij,k +!!$ +!!$ do i=1,3 +!!$ do j=1,3 +!!$ gg_dot2(i,j) = -2 * kk_dot(i,j) +!!$ end do +!!$ end do +!!$ end subroutine calc_3metricdot2 + subroutine calc_extcurv_simple (gg_dot, kk) + CCTK_REAL, intent(in) :: gg_dot(3,3) + CCTK_REAL, intent(out) :: kk(3,3) + integer :: i,j + + ! d/dt g_ij = -2 K_ij + + do i=1,3 + do j=1,3 + kk(i,j) = - gg_dot(i,j) + kk(i,j) = kk(i,j) / 2 + end do + end do + + end subroutine calc_extcurv_simple + subroutine calc_3metricdot_simple (kk, gg_dot) CCTK_REAL, intent(in) :: kk(3,3) CCTK_REAL, intent(out) :: gg_dot(3,3) @@ -312,22 +405,25 @@ contains end do end subroutine calc_3metricderivdot_simple - subroutine calc_extcurvdot_simple (gu,ri, kk, kk_dot) - CCTK_REAL, intent(in) :: gu(3,3) + subroutine calc_extcurvdot_simple (gg,gu,ri, kk, tt, kk_dot) + CCTK_REAL, intent(in) :: gg(3,3), gu(3,3) CCTK_REAL, intent(in) :: ri(3,3) CCTK_REAL, intent(in) :: kk(3,3) + CCTK_REAL, intent(in) :: tt(3,3) CCTK_REAL, intent(out) :: kk_dot(3,3) integer :: i,j,l,m ! d/dt K_ij = R_ij - 2 K_il g^lm K_mj + g^lm K_lm K_ij + ! - 8 pi (T_ij - 1/2 g_ij T) do i=1,3 do j=1,3 - kk_dot(i,j) = ri(i,j) + kk_dot(i,j) = ri(i,j) - 8*pi * tt(i,j) do l=1,3 do m=1,3 - kk_dot(i,j) = kk_dot(i,j) + gu(l,m) & - * (-2 * kk(i,l) * kk(m,j) + kk(l,m) * kk(i,j)) + kk_dot(i,j) = kk_dot(i,j) & + + gu(l,m) * (-2 * kk(i,l) * kk(m,j) + kk(l,m) * kk(i,j)) & + + 4*pi * gg(i,j) * gu(l,m) * tt(l,m) end do end do end do @@ -349,4 +445,78 @@ contains end do end subroutine calc_3metricdot2_simple + + +!!$ subroutine simplify_t4 (t4, alfa, beta, t4s) +!!$ CCTK_REAL, intent(in) :: t4(0:3,0:3) +!!$ CCTK_REAL, intent(in) :: alfa +!!$ CCTK_REAL, intent(in) :: beta(3) +!!$ CCTK_REAL, intent(out) :: t4s(0:3,0:3) +!!$ +!!$ ! T_ab g_ij alfa beta^i +!!$ ! T'_ab g_ij 1 [0,0,0] +!!$ +!!$ ! x^a +!!$ ! x'^a +!!$ +!!$ ! g'_ab = dx^c/dx'^a dx^d/dx'^b g_cd +!!$ ! = dx^0/dx'^a dx^0/dx'^b g_00 +!!$ ! dx^0/dx'^a dx^l/dx'^b g_0l +!!$ ! dx^k/dx'^a dx^0/dx'^b g_k0 +!!$ ! dx^k/dx'^a dx^l/dx'^b g_kl +!!$ +!!$ ! g'_ab = J^c_a J^d_b g_cd +!!$ ! T'_ab = J^c_a J^d_b T_cd +!!$ +!!$ +!!$ +!!$ ! delta^i_b = g'^ia g'_ab = J^c_a J^d_b g_cd g'^ia +!!$ +!!$ +!!$ +!!$ ! g' = J^T g J +!!$ ! g' J^(-1) = J^T g +!!$ ! T' = J^T T J +!!$ +!!$ +!!$ +!!$ ! -1 = g'_00 = dx^0/dx'^0 dx^0/dx'^0 g_00 +!!$ ! dx^0/dx'^0 dx^l/dx'^0 g_0l +!!$ ! dx^k/dx'^0 dx^0/dx'^0 g_k0 +!!$ ! dx^k/dx'^0 dx^l/dx'^0 g_kl +!!$ +!!$ ! 0 = g'_0j = dx^0/dx'^0 dx^0/dx'^j g_00 +!!$ ! dx^0/dx'^0 dx^l/dx'^j g_0l !!! <<< !!! +!!$ ! dx^k/dx'^0 dx^0/dx'^j g_k0 +!!$ ! dx^k/dx'^0 dx^l/dx'^j g_kl +!!$ +!!$ ! g_ij = g'_ij = dx^0/dx'^i dx^0/dx'^j g_00 +!!$ ! dx^0/dx'^i dx^l/dx'^j g_0l +!!$ ! dx^k/dx'^i dx^0/dx'^j g_k0 +!!$ ! dx^k/dx'^i dx^l/dx'^j g_kl +!!$ +!!$ ! dx^0/dx'^0 = 1/sqrt(-g_00) +!!$ ! dx^0/dx'^i = 0 +!!$ ! dx^k/dx'^0 = 0 +!!$ ! dx^k/dx'^i = delta^k_i +!!$ +!!$ +!!$ +!!$ ! g_00 = -alfa^2 + gama_ij beta^i beta^j +!!$ ! g_0i = gama_ij beta^j +!!$ +!!$ ! alfa^2 = -g_00 + gama_ij beta^i beta^j +!!$ ! beta^i = gama^ij g_0j +!!$ +!!$ ! alfa'^2 = -g'_00 + gama'_ij beta'^i beta'^j +!!$ ! beta'^i = gama'^ij g'_0j +!!$ +!!$ ! -1 = alfa'^2 = -g'_00 + gama'_ij beta'^i beta'^j +!!$ ! 0 = beta'^i = gama'^ij g'_0j +!!$ +!!$ ! g'_00 = -1 +!!$ ! g'_0i = 0 +!!$ +!!$ end subroutine simplify_t4 + end module adm_metric |