00001 subroutine riccitensor_midpoint
00002 use grid_parameter, only : nrg, ntg, npg
00003 use coordinate_grav_r, only : hrg
00004 use def_metric_hij, only : hxxd, hxyd, hxzd, hyyd, hyzd, hzzd, &
00005 & hxxu, hxyu, hxzu, hyyu, hyzu, hzzu
00006 use def_cristoffel, only : cri, crid
00007 use def_transverse_part
00008 use def_ricci_tensor, only : rab, rabnl, rabDF
00009 use def_vector_x, only : hvec_xg
00010 use interface_interpo_linear_type0
00011 use interface_grgrad1g_midpoint
00012 use interface_dadbscalar_type0
00013 use interface_dadbscalar_type3
00014 implicit none
00015
00016 real(8) :: delhab(6),
00017 r5(5), th5(5), phi5(5), &
00018 fr5(5), ft5(5), fp5(5), fr5x(5), ft5x(5), fp5x(5), &
00019 fr5y(5), ft5y(5), fp5y(5), fr5z(5), ft5z(5), fp5z(5), &
00020 xi(4), yi1(4), yi2(4), yi3(4), yi4(4), &
00021 yi5(4), yi6(4), yi7(4), yi8(4), yi9(4), &
00022 grad1(3), grad1x(3), grad1y(3), grad1z(3), &
00023 dckkx(3), dckky(3), dckkz(3), dhudhd(3,3), dhdh(6), &
00024 r6(6), th6(6), phi6(6), &
00025 fr6xx(6), ft6xx(6), fp6xx(6), fr5xx(5), ft5xx(5), &
00026 fr6xy(6), ft6xy(6), fp6xy(6), fr5xy(5), ft5xy(5), &
00027 fr6xz(6), ft6xz(6), fp6xz(6), fr5xz(5), ft5xz(5), &
00028 fr6yy(6), ft6yy(6), fp6yy(6), fr5yy(5), ft5yy(5), &
00029 fr6yz(6), ft6yz(6), fp6yz(6), fr5yz(5), ft5yz(5), &
00030 fr6zz(6), ft6zz(6), fp6zz(6), fr5zz(5), ft5zz(5)
00031 real(8) :: dhd(3,3,3), dhu(3,3,3), gamu(3,3)
00032 real(8) :: d2hxx(3,3), d2hxy(3,3), d2hxz(3,3),
00033 d2hyy(3,3), d2hyz(3,3), d2hzz(3,3)
00034 real(8) :: hd2h(6)
00035 real(8) :: Ftvxu, Ftvyu, Ftvzu, dFtv(3,3), fdFtv(6), dhFtv(6), Fcrid(6)
00036 real(8) :: c11, c12, c13, c14, c15, c16,
00037 c21, c22, c23, c24, c25, c26, &
00038 c31, c32, c33, c34, c35, c36, &
00039 crid11, crid12, crid13, crid14, crid15, crid16, &
00040 crid21, crid22, crid23, crid24, crid25, crid26, &
00041 crid31, crid32, crid33, crid34, crid35, crid36, &
00042 ckkx, ckky, ckkz, &
00043 ckxlclxk, ckxlclyk, ckxlclzk, &
00044 ckylclyk, ckylclzk, ckzlclzk, &
00045 clxxckkl, clxyckkl, clxzckkl, &
00046 clyyckkl, clyzckkl, clzzckkl, &
00047 hhxxu, hhxyu, hhxzu, hhyxu, hhyyu, hhyzu, &
00048 hhzxu, hhzyu, hhzzu, &
00049 hhxxd, hhxyd, hhxzd, hhyxd, hhyyd, hhyzd, &
00050 hhzxd, hhzyd, hhzzd
00051 integer :: ipg, itg, irg, ia, ib, ic, id
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 do ipg = 1, npg
00062 do itg = 1, ntg
00063 do irg = 1, nrg
00064
00065
00066
00067 call interpo_linear_type0(hhxxu,hxxu,irg,itg,ipg)
00068 call interpo_linear_type0(hhxyu,hxyu,irg,itg,ipg)
00069 call interpo_linear_type0(hhxzu,hxzu,irg,itg,ipg)
00070 call interpo_linear_type0(hhyyu,hyyu,irg,itg,ipg)
00071 call interpo_linear_type0(hhyzu,hyzu,irg,itg,ipg)
00072 call interpo_linear_type0(hhzzu,hzzu,irg,itg,ipg)
00073 hhyxu = hhxyu
00074 hhzxu = hhxzu
00075 hhzyu = hhyzu
00076 gamu(1,1) = hhxxu + 1.0d0
00077 gamu(1,2) = hhxyu
00078 gamu(1,3) = hhxzu
00079 gamu(2,2) = hhyyu + 1.0d0
00080 gamu(2,3) = hhyzu
00081 gamu(3,3) = hhzzu + 1.0d0
00082 gamu(2,1) = gamu(1,2)
00083 gamu(3,1) = gamu(1,3)
00084 gamu(3,2) = gamu(2,3)
00085 call interpo_linear_type0(hhxxd,hxxd,irg,itg,ipg)
00086 call interpo_linear_type0(hhxyd,hxyd,irg,itg,ipg)
00087 call interpo_linear_type0(hhxzd,hxzd,irg,itg,ipg)
00088 call interpo_linear_type0(hhyyd,hyyd,irg,itg,ipg)
00089 call interpo_linear_type0(hhyzd,hyzd,irg,itg,ipg)
00090 call interpo_linear_type0(hhzzd,hzzd,irg,itg,ipg)
00091 hhyxd = hhxyd
00092 hhzxd = hhxzd
00093 hhzyd = hhyzd
00094
00095 c11 = cri(irg,itg,ipg,1,1)
00096 c12 = cri(irg,itg,ipg,1,2)
00097 c13 = cri(irg,itg,ipg,1,3)
00098 c14 = cri(irg,itg,ipg,1,4)
00099 c15 = cri(irg,itg,ipg,1,5)
00100 c16 = cri(irg,itg,ipg,1,6)
00101 c21 = cri(irg,itg,ipg,2,1)
00102 c22 = cri(irg,itg,ipg,2,2)
00103 c23 = cri(irg,itg,ipg,2,3)
00104 c24 = cri(irg,itg,ipg,2,4)
00105 c25 = cri(irg,itg,ipg,2,5)
00106 c26 = cri(irg,itg,ipg,2,6)
00107 c31 = cri(irg,itg,ipg,3,1)
00108 c32 = cri(irg,itg,ipg,3,2)
00109 c33 = cri(irg,itg,ipg,3,3)
00110 c34 = cri(irg,itg,ipg,3,4)
00111 c35 = cri(irg,itg,ipg,3,5)
00112 c36 = cri(irg,itg,ipg,3,6)
00113
00114 crid11 = crid(irg,itg,ipg,1,1)
00115 crid12 = crid(irg,itg,ipg,1,2)
00116 crid13 = crid(irg,itg,ipg,1,3)
00117 crid14 = crid(irg,itg,ipg,1,4)
00118 crid15 = crid(irg,itg,ipg,1,5)
00119 crid16 = crid(irg,itg,ipg,1,6)
00120 crid21 = crid(irg,itg,ipg,2,1)
00121 crid22 = crid(irg,itg,ipg,2,2)
00122 crid23 = crid(irg,itg,ipg,2,3)
00123 crid24 = crid(irg,itg,ipg,2,4)
00124 crid25 = crid(irg,itg,ipg,2,5)
00125 crid26 = crid(irg,itg,ipg,2,6)
00126 crid31 = crid(irg,itg,ipg,3,1)
00127 crid32 = crid(irg,itg,ipg,3,2)
00128 crid33 = crid(irg,itg,ipg,3,3)
00129 crid34 = crid(irg,itg,ipg,3,4)
00130 crid35 = crid(irg,itg,ipg,3,5)
00131 crid36 = crid(irg,itg,ipg,3,6)
00132
00133
00134
00135
00136 ckkx = 0.0d0
00137 ckky = 0.0d0
00138 ckkz = 0.0d0
00139
00140 ckxlclxk = c11**2 + 2.0d0*c12*c21 + c22**2 + &
00141 & 2.0d0*c13*c31 + 2.0d0*c23*c32 + c33**2
00142 ckxlclyk = c11*c12 + c14*c21 + c12*c22 + c22*c24 + &
00143 & c15*c31 + c13*c32 + c25*c32 + c23*c34 + c33*c35
00144 ckxlclzk = c11*c13 + c15*c21 + c12*c23 + c22*c25 + &
00145 & c16*c31 + c26*c32 + c13*c33 + c23*c35 + c33*c36
00146 ckylclyk = c12**2 + 2.0d0*c14*c22 + c24**2 + &
00147 & 2.0d0*c15*c32 + 2.0d0*c25*c34 + c35**2
00148 ckylclzk = c12*c13 + c15*c22 + c14*c23 + c24*c25 + &
00149 & c16*c32 + c15*c33 + c26*c34 + c25*c35 + c35*c36
00150 ckzlclzk = c13**2 + 2.0d0*c15*c23 + c25**2 + &
00151 & 2.0d0*c16*c33 + 2.0d0*c26*c35 + c36**2
00152
00153
00154
00155
00156
00157
00158
00159 clxxckkl = 0.0d0
00160 clxyckkl = 0.0d0
00161 clxzckkl = 0.0d0
00162 clyyckkl = 0.0d0
00163 clyzckkl = 0.0d0
00164 clzzckkl = 0.0d0
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
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258 dckkx(1:3) = 0.0D0
00259 dckky(1:3) = 0.0D0
00260 dckkz(1:3) = 0.0D0
00261
00262
00263
00264 call grgrad1g_midpoint(hxxd,grad1,irg,itg,ipg)
00265 dhd(1,1,1:3) = grad1(1:3)
00266 call grgrad1g_midpoint(hxyd,grad1,irg,itg,ipg)
00267 dhd(1,2,1:3) = grad1(1:3)
00268 dhd(2,1,1:3) = grad1(1:3)
00269 call grgrad1g_midpoint(hxzd,grad1,irg,itg,ipg)
00270 dhd(1,3,1:3) = grad1(1:3)
00271 dhd(3,1,1:3) = grad1(1:3)
00272 call grgrad1g_midpoint(hyyd,grad1,irg,itg,ipg)
00273 dhd(2,2,1:3) = grad1(1:3)
00274 call grgrad1g_midpoint(hyzd,grad1,irg,itg,ipg)
00275 dhd(2,3,1:3) = grad1(1:3)
00276 dhd(3,2,1:3) = grad1(1:3)
00277 call grgrad1g_midpoint(hzzd,grad1,irg,itg,ipg)
00278 dhd(3,3,1:3) = grad1(1:3)
00279
00280 call grgrad1g_midpoint(hxxu,grad1,irg,itg,ipg)
00281 dhu(1,1,1:3) = grad1(1:3)
00282 call grgrad1g_midpoint(hxyu,grad1,irg,itg,ipg)
00283 dhu(1,2,1:3) = grad1(1:3)
00284 dhu(2,1,1:3) = grad1(1:3)
00285 call grgrad1g_midpoint(hxzu,grad1,irg,itg,ipg)
00286 dhu(1,3,1:3) = grad1(1:3)
00287 dhu(3,1,1:3) = grad1(1:3)
00288 call grgrad1g_midpoint(hyyu,grad1,irg,itg,ipg)
00289 dhu(2,2,1:3) = grad1(1:3)
00290 call grgrad1g_midpoint(hyzu,grad1,irg,itg,ipg)
00291 dhu(2,3,1:3) = grad1(1:3)
00292 dhu(3,2,1:3) = grad1(1:3)
00293 call grgrad1g_midpoint(hzzu,grad1,irg,itg,ipg)
00294 dhu(3,3,1:3) = grad1(1:3)
00295
00296
00297
00298 Ftvxu = Ftvx(irg,itg,ipg)
00299 Ftvyu = Ftvy(irg,itg,ipg)
00300 Ftvzu = Ftvz(irg,itg,ipg)
00301 call grgrad1g_midpoint(Ftvx_grid,grad1,irg,itg,ipg)
00302 dFtv(1,1:3) = grad1(1:3)
00303 call grgrad1g_midpoint(Ftvy_grid,grad1,irg,itg,ipg)
00304 dFtv(2,1:3) = grad1(1:3)
00305 call grgrad1g_midpoint(Ftvz_grid,grad1,irg,itg,ipg)
00306 dFtv(3,1:3) = grad1(1:3)
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347 do ia = 1, 3
00348 do ib = 1, 3
00349 dhudhd(ia,ib) = 0.0d0
00350 do ic = 1, 3
00351 do id = 1, 3
00352 dhudhd(ia,ib) = dhudhd(ia,ib) + dhu(ic,id,ia)*dhd(ib,id,ic)
00353 end do
00354 end do
00355 end do
00356 end do
00357
00358
00359
00360 dhdh(1:3) = dhudhd(1,1:3) + dhudhd(1:3,1)
00361 dhdh(4) = dhudhd(2,2) + dhudhd(2,2)
00362 dhdh(5) = dhudhd(2,3) + dhudhd(3,2)
00363 dhdh(6) = dhudhd(3,3) + dhudhd(3,3)
00364
00365
00366
00367
00368
00369
00370
00371
00372 call dadbscalar_type3(hxxd,d2hxx,irg,itg,ipg)
00373 call dadbscalar_type3(hxyd,d2hxy,irg,itg,ipg)
00374 call dadbscalar_type3(hxzd,d2hxz,irg,itg,ipg)
00375 call dadbscalar_type3(hyyd,d2hyy,irg,itg,ipg)
00376 call dadbscalar_type3(hyzd,d2hyz,irg,itg,ipg)
00377 call dadbscalar_type3(hzzd,d2hzz,irg,itg,ipg)
00378
00379 hd2h(1) = hhxxu*d2hxx(1,1) + hhxyu*d2hxx(1,2) + hhxzu*d2hxx(1,3) &
00380 & + hhyxu*d2hxx(2,1) + hhyyu*d2hxx(2,2) + hhyzu*d2hxx(2,3) &
00381 & + hhzxu*d2hxx(3,1) + hhzyu*d2hxx(3,2) + hhzzu*d2hxx(3,3)
00382 hd2h(2) = hhxxu*d2hxy(1,1) + hhxyu*d2hxy(1,2) + hhxzu*d2hxy(1,3) &
00383 & + hhyxu*d2hxy(2,1) + hhyyu*d2hxy(2,2) + hhyzu*d2hxy(2,3) &
00384 & + hhzxu*d2hxy(3,1) + hhzyu*d2hxy(3,2) + hhzzu*d2hxy(3,3)
00385 hd2h(3) = hhxxu*d2hxz(1,1) + hhxyu*d2hxz(1,2) + hhxzu*d2hxz(1,3) &
00386 & + hhyxu*d2hxz(2,1) + hhyyu*d2hxz(2,2) + hhyzu*d2hxz(2,3) &
00387 & + hhzxu*d2hxz(3,1) + hhzyu*d2hxz(3,2) + hhzzu*d2hxz(3,3)
00388 hd2h(4) = hhxxu*d2hyy(1,1) + hhxyu*d2hyy(1,2) + hhxzu*d2hyy(1,3) &
00389 & + hhyxu*d2hyy(2,1) + hhyyu*d2hyy(2,2) + hhyzu*d2hyy(2,3) &
00390 & + hhzxu*d2hyy(3,1) + hhzyu*d2hyy(3,2) + hhzzu*d2hyy(3,3)
00391 hd2h(5) = hhxxu*d2hyz(1,1) + hhxyu*d2hyz(1,2) + hhxzu*d2hyz(1,3) &
00392 & + hhyxu*d2hyz(2,1) + hhyyu*d2hyz(2,2) + hhyzu*d2hyz(2,3) &
00393 & + hhzxu*d2hyz(3,1) + hhzyu*d2hyz(3,2) + hhzzu*d2hyz(3,3)
00394 hd2h(6) = hhxxu*d2hzz(1,1) + hhxyu*d2hzz(1,2) + hhxzu*d2hzz(1,3) &
00395 & + hhyxu*d2hzz(2,1) + hhyyu*d2hzz(2,2) + hhyzu*d2hzz(2,3) &
00396 & + hhzxu*d2hzz(3,1) + hhzyu*d2hzz(3,2) + hhzzu*d2hzz(3,3)
00397
00398
00399
00400 delhab(1) = d2hxx(1,1) + d2hxx(2,2) + d2hxx(3,3)
00401 delhab(2) = d2hxy(1,1) + d2hxy(2,2) + d2hxy(3,3)
00402 delhab(3) = d2hxz(1,1) + d2hxz(2,2) + d2hxz(3,3)
00403 delhab(4) = d2hyy(1,1) + d2hyy(2,2) + d2hyy(3,3)
00404 delhab(5) = d2hyz(1,1) + d2hyz(2,2) + d2hyz(3,3)
00405 delhab(6) = d2hzz(1,1) + d2hzz(2,2) + d2hzz(3,3)
00406
00407
00408
00409 fdFtv(1) = dFtv(1,1) + dFtv(1,1)
00410 fdFtv(2) = dFtv(1,2) + dFtv(2,1)
00411 fdFtv(3) = dFtv(1,3) + dFtv(3,1)
00412 fdFtv(4) = dFtv(2,2) + dFtv(2,2)
00413 fdFtv(5) = dFtv(2,3) + dFtv(3,2)
00414 fdFtv(6) = dFtv(3,3) + dFtv(3,3)
00415
00416 dhFtv(1) = hhxxd*dFtv( 1,1) + hhxyd*dFtv( 2,1) + hhxzd*dFtv( 3,1) &
00417 & + hhxxd*dFtv( 1,1) + hhxyd*dFtv( 2,1) + hhxzd*dFtv( 3,1) &
00418 & + Ftvxu*dhd(1,1,1) + Ftvyu*dhd(1,2,1) + Ftvzu*dhd(1,3,1) &
00419 & + Ftvxu*dhd(1,1,1) + Ftvyu*dhd(1,2,1) + Ftvzu*dhd(1,3,1)
00420 dhFtv(2) = hhxxd*dFtv( 1,2) + hhxyd*dFtv( 2,2) + hhxzd*dFtv( 3,2) &
00421 & + hhyxd*dFtv( 1,1) + hhyyd*dFtv( 2,1) + hhyzd*dFtv( 3,1) &
00422 & + Ftvxu*dhd(1,1,2) + Ftvyu*dhd(1,2,2) + Ftvzu*dhd(1,3,2) &
00423 & + Ftvxu*dhd(2,1,1) + Ftvyu*dhd(2,2,1) + Ftvzu*dhd(2,3,1)
00424 dhFtv(3) = hhxxd*dFtv( 1,3) + hhxyd*dFtv( 2,3) + hhxzd*dFtv( 3,3) &
00425 & + hhzxd*dFtv( 1,1) + hhzyd*dFtv( 2,1) + hhzzd*dFtv( 3,1) &
00426 & + Ftvxu*dhd(1,1,3) + Ftvyu*dhd(1,2,3) + Ftvzu*dhd(1,3,3) &
00427 & + Ftvxu*dhd(3,1,1) + Ftvyu*dhd(3,2,1) + Ftvzu*dhd(3,3,1)
00428 dhFtv(4) = hhyxd*dFtv( 1,2) + hhyyd*dFtv( 2,2) + hhyzd*dFtv( 3,2) &
00429 & + hhyxd*dFtv( 1,2) + hhyyd*dFtv( 2,2) + hhyzd*dFtv( 3,2) &
00430 & + Ftvxu*dhd(2,1,2) + Ftvyu*dhd(2,2,2) + Ftvzu*dhd(2,3,2) &
00431 & + Ftvxu*dhd(2,1,2) + Ftvyu*dhd(2,2,2) + Ftvzu*dhd(2,3,2)
00432 dhFtv(5) = hhyxd*dFtv( 1,3) + hhyyd*dFtv( 2,3) + hhyzd*dFtv( 3,3) &
00433 & + hhzxd*dFtv( 1,2) + hhzyd*dFtv( 2,2) + hhzzd*dFtv( 3,2) &
00434 & + Ftvxu*dhd(2,1,3) + Ftvyu*dhd(2,2,3) + Ftvzu*dhd(2,3,3) &
00435 & + Ftvxu*dhd(3,1,2) + Ftvyu*dhd(3,2,2) + Ftvzu*dhd(3,3,2)
00436 dhFtv(6) = hhzxd*dFtv( 1,3) + hhzyd*dFtv( 2,3) + hhzzd*dFtv( 3,3) &
00437 & + hhzxd*dFtv( 1,3) + hhzyd*dFtv( 2,3) + hhzzd*dFtv( 3,3) &
00438 & + Ftvxu*dhd(3,1,3) + Ftvyu*dhd(3,2,3) + Ftvzu*dhd(3,3,3) &
00439 & + Ftvxu*dhd(3,1,3) + Ftvyu*dhd(3,2,3) + Ftvzu*dhd(3,3,3)
00440
00441 Fcrid(1) = Ftvxu*crid11 + Ftvyu*crid21 + Ftvzu*crid31
00442 Fcrid(2) = Ftvxu*crid12 + Ftvyu*crid22 + Ftvzu*crid32
00443 Fcrid(3) = Ftvxu*crid13 + Ftvyu*crid23 + Ftvzu*crid33
00444 Fcrid(4) = Ftvxu*crid14 + Ftvyu*crid24 + Ftvzu*crid34
00445 Fcrid(5) = Ftvxu*crid15 + Ftvyu*crid25 + Ftvzu*crid35
00446 Fcrid(6) = Ftvxu*crid16 + Ftvyu*crid26 + Ftvzu*crid36
00447
00448
00449
00450 rabnl(irg,itg,ipg,1) = - 0.5d0*(dhdh(1) + hd2h(1)) &
00451 & - dckkx(1) + clxxckkl - ckxlclxk &
00452 & - 0.5*dhFtv(1) + Fcrid(1)
00453 rabnl(irg,itg,ipg,2) = - 0.5d0*(dhdh(2) + hd2h(2)) &
00454 & - dckky(1) + clxyckkl - ckxlclyk &
00455 & - 0.5*dhFtv(2) + Fcrid(2)
00456 rabnl(irg,itg,ipg,3) = - 0.5d0*(dhdh(3) + hd2h(3)) &
00457 & - dckkz(1) + clxzckkl - ckxlclzk &
00458 & - 0.5*dhFtv(3) + Fcrid(3)
00459 rabnl(irg,itg,ipg,4) = - 0.5d0*(dhdh(4) + hd2h(4)) &
00460 & - dckky(2) + clyyckkl - ckylclyk &
00461 & - 0.5*dhFtv(4) + Fcrid(4)
00462 rabnl(irg,itg,ipg,5) = - 0.5d0*(dhdh(5) + hd2h(5)) &
00463 & - dckkz(2) + clyzckkl - ckylclzk &
00464 & - 0.5*dhFtv(5) + Fcrid(5)
00465 rabnl(irg,itg,ipg,6) = - 0.5d0*(dhdh(6) + hd2h(6)) &
00466 & - dckkz(3) + clzzckkl - ckzlclzk &
00467 & - 0.5*dhFtv(6) + Fcrid(6)
00468
00469 rabDF(irg,itg,ipg,1:6) = - 0.5d0*fdFtv(1:6)
00470
00471 rab(irg,itg,ipg,1:6) = - 0.5d0*delhab(1:6) &
00472 & + rabDF(irg,itg,ipg,1:6) &
00473 & + rabnl(irg,itg,ipg,1:6)
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494 end do
00495 end do
00496 end do
00497
00498
00499
00500 end subroutine riccitensor_midpoint