00001 subroutine riccitensor_midpoint
00002   use grid_parameter, only : nrg, ntg, npg
00003   use def_metric_hij, only : hxxd, hxyd, hxzd, hyyd, hyzd, hzzd, &
00004   &                          hxxu, hxyu, hxzu, hyyu, hyzu, hzzu
00005   use def_cristoffel, only : cri
00006   use def_ricci_tensor, only : rab, rabnl
00007   use interface_interpo_linear_type0
00008   use interface_grgrad1g_midpoint
00009   use interface_dadbscalar_type0
00010   implicit none
00011 
00012   real(8) :: delhab(6), 
00013             r5(5),  th5(5), phi5(5), &
00014             fr5(5),  ft5(5),  fp5(5), fr5x(5), ft5x(5), fp5x(5), &
00015             fr5y(5), ft5y(5), fp5y(5), fr5z(5), ft5z(5), fp5z(5), &
00016             xi(4),  yi1(4),  yi2(4),  yi3(4),  yi4(4), &
00017             yi5(4),  yi6(4),  yi7(4),  yi8(4),  yi9(4), &
00018             grad1(3), grad1x(3), grad1y(3),  grad1z(3), &
00019             dckkx(3),  dckky(3),  dckkz(3), dhudhd(3,3), dhdh(6), &
00020             r6(6), th6(6), phi6(6), &
00021             fr6xx(6), ft6xx(6), fp6xx(6), fr5xx(5), ft5xx(5), &
00022             fr6xy(6), ft6xy(6), fp6xy(6), fr5xy(5), ft5xy(5), &
00023             fr6xz(6), ft6xz(6), fp6xz(6), fr5xz(5), ft5xz(5), &
00024             fr6yy(6), ft6yy(6), fp6yy(6), fr5yy(5), ft5yy(5), &
00025             fr6yz(6), ft6yz(6), fp6yz(6), fr5yz(5), ft5yz(5), &
00026             fr6zz(6), ft6zz(6), fp6zz(6), fr5zz(5), ft5zz(5)
00027   real(8) :: dhd(3,3,3), dhu(3,3,3),  gamu(3,3)
00028   real(8) :: d2hxx(3,3), d2hxy(3,3), d2hxz(3,3), 
00029             d2hyy(3,3), d2hyz(3,3), d2hzz(3,3)
00030   real(8) :: hd2h(6)
00031   real(8) :: c11, c12, c13, c14, c15, c16, 
00032             c21, c22, c23, c24, c25, c26, &
00033             c31, c32, c33, c34, c35, c36, &
00034             ckkx, ckky, ckkz, &
00035             ckxlclxk, ckxlclyk, ckxlclzk, &
00036             ckylclyk, ckylclzk, ckzlclzk, &
00037             clxxckkl, clxyckkl, clxzckkl, &
00038             clyyckkl, clyzckkl, clzzckkl, &
00039             hhxxu, hhxyu, hhxzu, hhyxu, hhyyu, hhyzu, &
00040             hhzxu, hhzyu, hhzzu
00041   integer :: ipg, itg, irg, ia, ib, ic, id
00042 
00043 
00044 
00045 
00046 
00047 
00048   do ipg = 1, npg
00049     do itg = 1, ntg
00050       do irg = 1, nrg
00051 
00052 
00053 
00054         call interpo_linear_type0(hhxxu,hxxu,irg,itg,ipg)
00055         call interpo_linear_type0(hhxyu,hxyu,irg,itg,ipg)
00056         call interpo_linear_type0(hhxzu,hxzu,irg,itg,ipg)
00057         call interpo_linear_type0(hhyyu,hyyu,irg,itg,ipg)
00058         call interpo_linear_type0(hhyzu,hyzu,irg,itg,ipg)
00059         call interpo_linear_type0(hhzzu,hzzu,irg,itg,ipg)
00060         hhyxu = hhxyu
00061         hhzxu = hhxzu
00062         hhzyu = hhyzu
00063         gamu(1,1) = hhxxu + 1.0d0
00064         gamu(1,2) = hhxyu
00065         gamu(1,3) = hhxzu
00066         gamu(2,2) = hhyyu + 1.0d0
00067         gamu(2,3) = hhyzu
00068         gamu(3,3) = hhzzu + 1.0d0
00069         gamu(2,1) = gamu(1,2)
00070         gamu(3,1) = gamu(1,3)
00071         gamu(3,2) = gamu(2,3)
00072 
00073         c11 = cri(irg,itg,ipg,1,1)
00074         c12 = cri(irg,itg,ipg,1,2)
00075         c13 = cri(irg,itg,ipg,1,3)
00076         c14 = cri(irg,itg,ipg,1,4)
00077         c15 = cri(irg,itg,ipg,1,5)
00078         c16 = cri(irg,itg,ipg,1,6)
00079         c21 = cri(irg,itg,ipg,2,1)
00080         c22 = cri(irg,itg,ipg,2,2)
00081         c23 = cri(irg,itg,ipg,2,3)
00082         c24 = cri(irg,itg,ipg,2,4)
00083         c25 = cri(irg,itg,ipg,2,5)
00084         c26 = cri(irg,itg,ipg,2,6)
00085         c31 = cri(irg,itg,ipg,3,1)
00086         c32 = cri(irg,itg,ipg,3,2)
00087         c33 = cri(irg,itg,ipg,3,3)
00088         c34 = cri(irg,itg,ipg,3,4)
00089         c35 = cri(irg,itg,ipg,3,5)
00090         c36 = cri(irg,itg,ipg,3,6)
00091 
00092 
00093 
00094 
00095         ckkx = 0.0d0
00096         ckky = 0.0d0
00097         ckkz = 0.0d0
00098 
00099         ckxlclxk = c11**2 + 2.0d0*c12*c21 + c22**2 + &
00100            &       2.0d0*c13*c31 + 2.0d0*c23*c32 + c33**2
00101         ckxlclyk = c11*c12 + c14*c21 + c12*c22 + c22*c24 + &
00102            &       c15*c31 + c13*c32 + c25*c32 + c23*c34 + c33*c35
00103         ckxlclzk = c11*c13 + c15*c21 + c12*c23 + c22*c25 + &
00104            &       c16*c31 + c26*c32 + c13*c33 + c23*c35 + c33*c36
00105         ckylclyk = c12**2 + 2.0d0*c14*c22 + c24**2 + &
00106            &       2.0d0*c15*c32 + 2.0d0*c25*c34 + c35**2
00107         ckylclzk = c12*c13 + c15*c22 + c14*c23 + c24*c25 + &
00108            &       c16*c32 + c15*c33 + c26*c34 + c25*c35 + c35*c36
00109         ckzlclzk = c13**2 + 2.0d0*c15*c23 + c25**2 + &
00110            &       2.0d0*c16*c33 + 2.0d0*c26*c35 + c36**2
00111 
00112 
00113 
00114 
00115 
00116 
00117 
00118         clxxckkl = 0.0d0
00119         clxyckkl = 0.0d0
00120         clxzckkl = 0.0d0
00121         clyyckkl = 0.0d0
00122         clyzckkl = 0.0d0
00123         clzzckkl = 0.0d0
00124 
00125 
00126 
00127 
00128 
00129 
00130 
00131 
00132 
00133 
00134 
00135 
00136 
00137 
00138 
00139 
00140 
00141 
00142 
00143 
00144 
00145 
00146 
00147 
00148 
00149 
00150 
00151 
00152 
00153 
00154 
00155 
00156 
00157 
00158 
00159 
00160 
00161 
00162 
00163 
00164 
00165 
00166 
00167 
00168 
00169 
00170 
00171 
00172 
00173 
00174 
00175 
00176 
00177 
00178 
00179 
00180 
00181 
00182 
00183 
00184 
00185 
00186 
00187 
00188 
00189 
00190 
00191 
00192 
00193 
00194 
00195 
00196 
00197 
00198 
00199 
00200 
00201 
00202 
00203 
00204 
00205 
00206 
00207 
00208 
00209 
00210 
00211 
00212 
00213 
00214 
00215 
00216 
00217         dckkx(1:3) = 0.0D0
00218         dckky(1:3) = 0.0D0
00219         dckkz(1:3) = 0.0D0
00220 
00221 
00222 
00223         call grgrad1g_midpoint(hxxd,grad1,irg,itg,ipg)
00224         dhd(1,1,1:3) = grad1(1:3)
00225         call grgrad1g_midpoint(hxyd,grad1,irg,itg,ipg)
00226         dhd(1,2,1:3) = grad1(1:3)
00227         dhd(2,1,1:3) = grad1(1:3)
00228         call grgrad1g_midpoint(hxzd,grad1,irg,itg,ipg)
00229         dhd(1,3,1:3) = grad1(1:3)
00230         dhd(3,1,1:3) = grad1(1:3)
00231         call grgrad1g_midpoint(hyyd,grad1,irg,itg,ipg)
00232         dhd(2,2,1:3) = grad1(1:3)
00233         call grgrad1g_midpoint(hyzd,grad1,irg,itg,ipg)
00234         dhd(2,3,1:3) = grad1(1:3)
00235         dhd(3,2,1:3) = grad1(1:3)
00236         call grgrad1g_midpoint(hzzd,grad1,irg,itg,ipg)
00237         dhd(3,3,1:3) = grad1(1:3)
00238 
00239         call grgrad1g_midpoint(hxxu,grad1,irg,itg,ipg)
00240         dhu(1,1,1:3) = grad1(1:3)
00241         call grgrad1g_midpoint(hxyu,grad1,irg,itg,ipg)
00242         dhu(1,2,1:3) = grad1(1:3)
00243         dhu(2,1,1:3) = grad1(1:3)
00244         call grgrad1g_midpoint(hxzu,grad1,irg,itg,ipg)
00245         dhu(1,3,1:3) = grad1(1:3)
00246         dhu(3,1,1:3) = grad1(1:3)
00247         call grgrad1g_midpoint(hyyu,grad1,irg,itg,ipg)
00248         dhu(2,2,1:3) = grad1(1:3)
00249         call grgrad1g_midpoint(hyzu,grad1,irg,itg,ipg)
00250         dhu(2,3,1:3) = grad1(1:3)
00251         dhu(3,2,1:3) = grad1(1:3)
00252         call grgrad1g_midpoint(hzzu,grad1,irg,itg,ipg)
00253         dhu(3,3,1:3) = grad1(1:3)
00254 
00255 
00256 
00257 
00258 
00259 
00260 
00261 
00262 
00263 
00264 
00265 
00266 
00267 
00268 
00269 
00270 
00271 
00272 
00273 
00274 
00275 
00276 
00277 
00278 
00279 
00280 
00281 
00282 
00283 
00284 
00285 
00286 
00287 
00288 
00289 
00290 
00291 
00292 
00293 
00294         do ia = 1, 3
00295           do ib = 1, 3
00296             dhudhd(ia,ib) = 0.0d0
00297             do ic = 1, 3
00298               do id = 1, 3
00299                 dhudhd(ia,ib) = dhudhd(ia,ib) + dhu(ic,id,ia)*dhd(ib,id,ic)
00300               end do
00301             end do
00302           end do
00303         end do
00304 
00305 
00306 
00307         dhdh(1:3) = dhudhd(1,1:3) + dhudhd(1:3,1)
00308         dhdh(4) = dhudhd(2,2) + dhudhd(2,2)
00309         dhdh(5) = dhudhd(2,3) + dhudhd(3,2)
00310         dhdh(6) = dhudhd(3,3) + dhudhd(3,3)
00311 
00312         call dadbscalar_type0(hxxd,d2hxx,irg,itg,ipg)
00313         call dadbscalar_type0(hxyd,d2hxy,irg,itg,ipg)
00314         call dadbscalar_type0(hxzd,d2hxz,irg,itg,ipg)
00315         call dadbscalar_type0(hyyd,d2hyy,irg,itg,ipg)
00316         call dadbscalar_type0(hyzd,d2hyz,irg,itg,ipg)
00317         call dadbscalar_type0(hzzd,d2hzz,irg,itg,ipg)
00318 
00319         hd2h(1) = hhxxu*d2hxx(1,1) + hhxyu*d2hxx(1,2) + hhxzu*d2hxx(1,3) &
00320            &        + hhyxu*d2hxx(2,1) + hhyyu*d2hxx(2,2) + hhyzu*d2hxx(2,3) &
00321            &        + hhzxu*d2hxx(3,1) + hhzyu*d2hxx(3,2) + hhzzu*d2hxx(3,3)
00322         hd2h(2) = hhxxu*d2hxy(1,1) + hhxyu*d2hxy(1,2) + hhxzu*d2hxy(1,3) &
00323            &        + hhyxu*d2hxy(2,1) + hhyyu*d2hxy(2,2) + hhyzu*d2hxy(2,3) &
00324            &        + hhzxu*d2hxy(3,1) + hhzyu*d2hxy(3,2) + hhzzu*d2hxy(3,3)
00325         hd2h(3) = hhxxu*d2hxz(1,1) + hhxyu*d2hxz(1,2) + hhxzu*d2hxz(1,3) &
00326            &        + hhyxu*d2hxz(2,1) + hhyyu*d2hxz(2,2) + hhyzu*d2hxz(2,3) &
00327            &        + hhzxu*d2hxz(3,1) + hhzyu*d2hxz(3,2) + hhzzu*d2hxz(3,3)
00328         hd2h(4) = hhxxu*d2hyy(1,1) + hhxyu*d2hyy(1,2) + hhxzu*d2hyy(1,3) &
00329            &        + hhyxu*d2hyy(2,1) + hhyyu*d2hyy(2,2) + hhyzu*d2hyy(2,3) &
00330            &        + hhzxu*d2hyy(3,1) + hhzyu*d2hyy(3,2) + hhzzu*d2hyy(3,3)
00331         hd2h(5) = hhxxu*d2hyz(1,1) + hhxyu*d2hyz(1,2) + hhxzu*d2hyz(1,3) &
00332            &        + hhyxu*d2hyz(2,1) + hhyyu*d2hyz(2,2) + hhyzu*d2hyz(2,3) &
00333            &        + hhzxu*d2hyz(3,1) + hhzyu*d2hyz(3,2) + hhzzu*d2hyz(3,3)
00334         hd2h(6) = hhxxu*d2hzz(1,1) + hhxyu*d2hzz(1,2) + hhxzu*d2hzz(1,3) &
00335            &        + hhyxu*d2hzz(2,1) + hhyyu*d2hzz(2,2) + hhyzu*d2hzz(2,3) &
00336            &        + hhzxu*d2hzz(3,1) + hhzyu*d2hzz(3,2) + hhzzu*d2hzz(3,3)
00337 
00338 
00339 
00340         delhab(1) = d2hxx(1,1) + d2hxx(2,2) + d2hxx(3,3)
00341         delhab(2) = d2hxy(1,1) + d2hxy(2,2) + d2hxy(3,3)
00342         delhab(3) = d2hxz(1,1) + d2hxz(2,2) + d2hxz(3,3)
00343         delhab(4) = d2hyy(1,1) + d2hyy(2,2) + d2hyy(3,3)
00344         delhab(5) = d2hyz(1,1) + d2hyz(2,2) + d2hyz(3,3)
00345         delhab(6) = d2hzz(1,1) + d2hzz(2,2) + d2hzz(3,3)
00346 
00347 
00348 
00349         rabnl(irg,itg,ipg,1) = -0.5d0*(dhdh(1) + hd2h(1)) &
00350            &                     - dckkx(1) + clxxckkl - ckxlclxk
00351         rabnl(irg,itg,ipg,2) = -0.5d0*(dhdh(2) + hd2h(2)) &
00352            &                     - dckky(1) + clxyckkl - ckxlclyk
00353         rabnl(irg,itg,ipg,3) = -0.5d0*(dhdh(3) + hd2h(3)) &
00354            &                     - dckkz(1) + clxzckkl - ckxlclzk
00355         rabnl(irg,itg,ipg,4) = -0.5d0*(dhdh(4) + hd2h(4)) &
00356            &                     - dckky(2) + clyyckkl - ckylclyk
00357         rabnl(irg,itg,ipg,5) = -0.5d0*(dhdh(5) + hd2h(5)) &
00358            &                     - dckkz(2) + clyzckkl - ckylclzk
00359         rabnl(irg,itg,ipg,6) = -0.5d0*(dhdh(6) + hd2h(6)) &
00360            &                     - dckkz(3) + clzzckkl - ckzlclzk
00361         rab(irg,itg,ipg,1:6) = -0.5d0*delhab(1:6) + rabnl(irg,itg,ipg,1:6)
00362 
00363       end do
00364     end do
00365   end do
00366 
00367 end subroutine riccitensor_midpoint