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