aboutsummaryrefslogtreecommitdiff
path: root/src/tensor.F90
diff options
context:
space:
mode:
Diffstat (limited to 'src/tensor.F90')
-rw-r--r--src/tensor.F9024
1 files changed, 24 insertions, 0 deletions
diff --git a/src/tensor.F90 b/src/tensor.F90
index 759c781..66c6552 100644
--- a/src/tensor.F90
+++ b/src/tensor.F90
@@ -14,6 +14,7 @@ module tensor
public calc_inv
public calc_invderiv
+ public calc_invderiv2
public calc_invdot
contains
@@ -116,6 +117,29 @@ contains
end do
end subroutine calc_invderiv
+ subroutine calc_invderiv2 (gu, dgg, dgu, ddgg, ddgu)
+ CCTK_REAL, intent(in) :: gu(3,3), dgg(3,3,3), dgu(3,3,3), ddgg(3,3,3,3)
+ CCTK_REAL, intent(out) :: ddgu(3,3,3,3)
+ integer :: i,j,k,l,m,n
+ do i=1,3
+ do j=1,3
+ do k=1,3
+ do l=1,3
+ ddgu(i,j,k,l) = 0
+ do m=1,3
+ do n=1,3
+ ddgu(i,j,k,l) = ddgu(i,j,k,l) &
+ - dgu(i,m,l) * gu(j,n) * dgg(m,n,k) &
+ - gu(i,m) * dgu(j,n,l) * dgg(m,n,k) &
+ - gu(i,m) * gu(j,n) * ddgg(m,n,k,l)
+ end do
+ end do
+ end do
+ end do
+ end do
+ end do
+ end subroutine calc_invderiv2
+
subroutine calc_invdot (gu, gg_dot, gu_dot)
CCTK_REAL, intent(in) :: gu(3,3), gg_dot(3,3)
CCTK_REAL, intent(out) :: gu_dot(3,3)