diff options
Diffstat (limited to 'src/tensor.F90')
-rw-r--r-- | src/tensor.F90 | 24 |
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) |