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 use interface_dadbscalar_type3
00011 implicit none
00012
00013 real(8) :: delhab(6),
00014 r5(5), th5(5), phi5(5), &
00015 fr5(5), ft5(5), fp5(5), fr5x(5), ft5x(5), fp5x(5), &
00016 fr5y(5), ft5y(5), fp5y(5), fr5z(5), ft5z(5), fp5z(5), &
00017 xi(4), yi1(4), yi2(4), yi3(4), yi4(4), &
00018 yi5(4), yi6(4), yi7(4), yi8(4), yi9(4), &
00019 grad1(3), grad1x(3), grad1y(3), grad1z(3), &
00020 dckkx(3), dckky(3), dckkz(3), dhudhd(3,3), dhdh(6), &
00021 r6(6), th6(6), phi6(6), &
00022 fr6xx(6), ft6xx(6), fp6xx(6), fr5xx(5), ft5xx(5), &
00023 fr6xy(6), ft6xy(6), fp6xy(6), fr5xy(5), ft5xy(5), &
00024 fr6xz(6), ft6xz(6), fp6xz(6), fr5xz(5), ft5xz(5), &
00025 fr6yy(6), ft6yy(6), fp6yy(6), fr5yy(5), ft5yy(5), &
00026 fr6yz(6), ft6yz(6), fp6yz(6), fr5yz(5), ft5yz(5), &
00027 fr6zz(6), ft6zz(6), fp6zz(6), fr5zz(5), ft5zz(5)
00028 real(8) :: dhd(3,3,3), dhu(3,3,3), gamu(3,3)
00029 real(8) :: d2hxx(3,3), d2hxy(3,3), d2hxz(3,3),
00030 d2hyy(3,3), d2hyz(3,3), d2hzz(3,3)
00031 real(8) :: hd2h(6)
00032 real(8) :: c11, c12, c13, c14, c15, c16,
00033 c21, c22, c23, c24, c25, c26, &
00034 c31, c32, c33, c34, c35, c36, &
00035 ckkx, ckky, ckkz, &
00036 ckxlclxk, ckxlclyk, ckxlclzk, &
00037 ckylclyk, ckylclzk, ckzlclzk, &
00038 clxxckkl, clxyckkl, clxzckkl, &
00039 clyyckkl, clyzckkl, clzzckkl, &
00040 hhxxu, hhxyu, hhxzu, hhyxu, hhyyu, hhyzu, &
00041 hhzxu, hhzyu, hhzzu
00042 integer :: ipg, itg, irg, ia, ib, ic, id
00043
00044
00045
00046
00047
00048
00049 do ipg = 1, npg
00050 do itg = 1, ntg
00051 do irg = 1, nrg
00052
00053
00054
00055 call interpo_linear_type0(hhxxu,hxxu,irg,itg,ipg)
00056 call interpo_linear_type0(hhxyu,hxyu,irg,itg,ipg)
00057 call interpo_linear_type0(hhxzu,hxzu,irg,itg,ipg)
00058 call interpo_linear_type0(hhyyu,hyyu,irg,itg,ipg)
00059 call interpo_linear_type0(hhyzu,hyzu,irg,itg,ipg)
00060 call interpo_linear_type0(hhzzu,hzzu,irg,itg,ipg)
00061 hhyxu = hhxyu
00062 hhzxu = hhxzu
00063 hhzyu = hhyzu
00064 gamu(1,1) = hhxxu + 1.0d0
00065 gamu(1,2) = hhxyu
00066 gamu(1,3) = hhxzu
00067 gamu(2,2) = hhyyu + 1.0d0
00068 gamu(2,3) = hhyzu
00069 gamu(3,3) = hhzzu + 1.0d0
00070 gamu(2,1) = gamu(1,2)
00071 gamu(3,1) = gamu(1,3)
00072 gamu(3,2) = gamu(2,3)
00073
00074 c11 = cri(irg,itg,ipg,1,1)
00075 c12 = cri(irg,itg,ipg,1,2)
00076 c13 = cri(irg,itg,ipg,1,3)
00077 c14 = cri(irg,itg,ipg,1,4)
00078 c15 = cri(irg,itg,ipg,1,5)
00079 c16 = cri(irg,itg,ipg,1,6)
00080 c21 = cri(irg,itg,ipg,2,1)
00081 c22 = cri(irg,itg,ipg,2,2)
00082 c23 = cri(irg,itg,ipg,2,3)
00083 c24 = cri(irg,itg,ipg,2,4)
00084 c25 = cri(irg,itg,ipg,2,5)
00085 c26 = cri(irg,itg,ipg,2,6)
00086 c31 = cri(irg,itg,ipg,3,1)
00087 c32 = cri(irg,itg,ipg,3,2)
00088 c33 = cri(irg,itg,ipg,3,3)
00089 c34 = cri(irg,itg,ipg,3,4)
00090 c35 = cri(irg,itg,ipg,3,5)
00091 c36 = cri(irg,itg,ipg,3,6)
00092
00093
00094
00095
00096 ckkx = 0.0d0
00097 ckky = 0.0d0
00098 ckkz = 0.0d0
00099
00100 ckxlclxk = c11**2 + 2.0d0*c12*c21 + c22**2 + &
00101 & 2.0d0*c13*c31 + 2.0d0*c23*c32 + c33**2
00102 ckxlclyk = c11*c12 + c14*c21 + c12*c22 + c22*c24 + &
00103 & c15*c31 + c13*c32 + c25*c32 + c23*c34 + c33*c35
00104 ckxlclzk = c11*c13 + c15*c21 + c12*c23 + c22*c25 + &
00105 & c16*c31 + c26*c32 + c13*c33 + c23*c35 + c33*c36
00106 ckylclyk = c12**2 + 2.0d0*c14*c22 + c24**2 + &
00107 & 2.0d0*c15*c32 + 2.0d0*c25*c34 + c35**2
00108 ckylclzk = c12*c13 + c15*c22 + c14*c23 + c24*c25 + &
00109 & c16*c32 + c15*c33 + c26*c34 + c25*c35 + c35*c36
00110 ckzlclzk = c13**2 + 2.0d0*c15*c23 + c25**2 + &
00111 & 2.0d0*c16*c33 + 2.0d0*c26*c35 + c36**2
00112
00113
00114
00115
00116
00117
00118
00119 clxxckkl = 0.0d0
00120 clxyckkl = 0.0d0
00121 clxzckkl = 0.0d0
00122 clyyckkl = 0.0d0
00123 clyzckkl = 0.0d0
00124 clzzckkl = 0.0d0
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
00218 dckkx(1:3) = 0.0D0
00219 dckky(1:3) = 0.0D0
00220 dckkz(1:3) = 0.0D0
00221
00222
00223
00224 call grgrad1g_midpoint(hxxd,grad1,irg,itg,ipg)
00225 dhd(1,1,1:3) = grad1(1:3)
00226 call grgrad1g_midpoint(hxyd,grad1,irg,itg,ipg)
00227 dhd(1,2,1:3) = grad1(1:3)
00228 dhd(2,1,1:3) = grad1(1:3)
00229 call grgrad1g_midpoint(hxzd,grad1,irg,itg,ipg)
00230 dhd(1,3,1:3) = grad1(1:3)
00231 dhd(3,1,1:3) = grad1(1:3)
00232 call grgrad1g_midpoint(hyyd,grad1,irg,itg,ipg)
00233 dhd(2,2,1:3) = grad1(1:3)
00234 call grgrad1g_midpoint(hyzd,grad1,irg,itg,ipg)
00235 dhd(2,3,1:3) = grad1(1:3)
00236 dhd(3,2,1:3) = grad1(1:3)
00237 call grgrad1g_midpoint(hzzd,grad1,irg,itg,ipg)
00238 dhd(3,3,1:3) = grad1(1:3)
00239
00240 call grgrad1g_midpoint(hxxu,grad1,irg,itg,ipg)
00241 dhu(1,1,1:3) = grad1(1:3)
00242 call grgrad1g_midpoint(hxyu,grad1,irg,itg,ipg)
00243 dhu(1,2,1:3) = grad1(1:3)
00244 dhu(2,1,1:3) = grad1(1:3)
00245 call grgrad1g_midpoint(hxzu,grad1,irg,itg,ipg)
00246 dhu(1,3,1:3) = grad1(1:3)
00247 dhu(3,1,1:3) = grad1(1:3)
00248 call grgrad1g_midpoint(hyyu,grad1,irg,itg,ipg)
00249 dhu(2,2,1:3) = grad1(1:3)
00250 call grgrad1g_midpoint(hyzu,grad1,irg,itg,ipg)
00251 dhu(2,3,1:3) = grad1(1:3)
00252 dhu(3,2,1:3) = grad1(1:3)
00253 call grgrad1g_midpoint(hzzu,grad1,irg,itg,ipg)
00254 dhu(3,3,1:3) = grad1(1:3)
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
00295 do ia = 1, 3
00296 do ib = 1, 3
00297 dhudhd(ia,ib) = 0.0d0
00298 do ic = 1, 3
00299 do id = 1, 3
00300 dhudhd(ia,ib) = dhudhd(ia,ib) + dhu(ic,id,ia)*dhd(ib,id,ic)
00301 end do
00302 end do
00303 end do
00304 end do
00305
00306
00307
00308 dhdh(1:3) = dhudhd(1,1:3) + dhudhd(1:3,1)
00309 dhdh(4) = dhudhd(2,2) + dhudhd(2,2)
00310 dhdh(5) = dhudhd(2,3) + dhudhd(3,2)
00311 dhdh(6) = dhudhd(3,3) + dhudhd(3,3)
00312
00313
00314
00315
00316
00317
00318
00319
00320 call dadbscalar_type3(hxxd,d2hxx,irg,itg,ipg)
00321 call dadbscalar_type3(hxyd,d2hxy,irg,itg,ipg)
00322 call dadbscalar_type3(hxzd,d2hxz,irg,itg,ipg)
00323 call dadbscalar_type3(hyyd,d2hyy,irg,itg,ipg)
00324 call dadbscalar_type3(hyzd,d2hyz,irg,itg,ipg)
00325 call dadbscalar_type3(hzzd,d2hzz,irg,itg,ipg)
00326
00327 hd2h(1) = hhxxu*d2hxx(1,1) + hhxyu*d2hxx(1,2) + hhxzu*d2hxx(1,3) &
00328 & + hhyxu*d2hxx(2,1) + hhyyu*d2hxx(2,2) + hhyzu*d2hxx(2,3) &
00329 & + hhzxu*d2hxx(3,1) + hhzyu*d2hxx(3,2) + hhzzu*d2hxx(3,3)
00330 hd2h(2) = hhxxu*d2hxy(1,1) + hhxyu*d2hxy(1,2) + hhxzu*d2hxy(1,3) &
00331 & + hhyxu*d2hxy(2,1) + hhyyu*d2hxy(2,2) + hhyzu*d2hxy(2,3) &
00332 & + hhzxu*d2hxy(3,1) + hhzyu*d2hxy(3,2) + hhzzu*d2hxy(3,3)
00333 hd2h(3) = hhxxu*d2hxz(1,1) + hhxyu*d2hxz(1,2) + hhxzu*d2hxz(1,3) &
00334 & + hhyxu*d2hxz(2,1) + hhyyu*d2hxz(2,2) + hhyzu*d2hxz(2,3) &
00335 & + hhzxu*d2hxz(3,1) + hhzyu*d2hxz(3,2) + hhzzu*d2hxz(3,3)
00336 hd2h(4) = hhxxu*d2hyy(1,1) + hhxyu*d2hyy(1,2) + hhxzu*d2hyy(1,3) &
00337 & + hhyxu*d2hyy(2,1) + hhyyu*d2hyy(2,2) + hhyzu*d2hyy(2,3) &
00338 & + hhzxu*d2hyy(3,1) + hhzyu*d2hyy(3,2) + hhzzu*d2hyy(3,3)
00339 hd2h(5) = hhxxu*d2hyz(1,1) + hhxyu*d2hyz(1,2) + hhxzu*d2hyz(1,3) &
00340 & + hhyxu*d2hyz(2,1) + hhyyu*d2hyz(2,2) + hhyzu*d2hyz(2,3) &
00341 & + hhzxu*d2hyz(3,1) + hhzyu*d2hyz(3,2) + hhzzu*d2hyz(3,3)
00342 hd2h(6) = hhxxu*d2hzz(1,1) + hhxyu*d2hzz(1,2) + hhxzu*d2hzz(1,3) &
00343 & + hhyxu*d2hzz(2,1) + hhyyu*d2hzz(2,2) + hhyzu*d2hzz(2,3) &
00344 & + hhzxu*d2hzz(3,1) + hhzyu*d2hzz(3,2) + hhzzu*d2hzz(3,3)
00345
00346
00347
00348 delhab(1) = d2hxx(1,1) + d2hxx(2,2) + d2hxx(3,3)
00349 delhab(2) = d2hxy(1,1) + d2hxy(2,2) + d2hxy(3,3)
00350 delhab(3) = d2hxz(1,1) + d2hxz(2,2) + d2hxz(3,3)
00351 delhab(4) = d2hyy(1,1) + d2hyy(2,2) + d2hyy(3,3)
00352 delhab(5) = d2hyz(1,1) + d2hyz(2,2) + d2hyz(3,3)
00353 delhab(6) = d2hzz(1,1) + d2hzz(2,2) + d2hzz(3,3)
00354
00355
00356
00357 rabnl(irg,itg,ipg,1) = - 0.5d0*(dhdh(1) + hd2h(1)) &
00358 & - dckkx(1) + clxxckkl - ckxlclxk
00359 rabnl(irg,itg,ipg,2) = - 0.5d0*(dhdh(2) + hd2h(2)) &
00360 & - dckky(1) + clxyckkl - ckxlclyk
00361 rabnl(irg,itg,ipg,3) = - 0.5d0*(dhdh(3) + hd2h(3)) &
00362 & - dckkz(1) + clxzckkl - ckxlclzk
00363 rabnl(irg,itg,ipg,4) = - 0.5d0*(dhdh(4) + hd2h(4)) &
00364 & - dckky(2) + clyyckkl - ckylclyk
00365 rabnl(irg,itg,ipg,5) = - 0.5d0*(dhdh(5) + hd2h(5)) &
00366 & - dckkz(2) + clyzckkl - ckylclzk
00367 rabnl(irg,itg,ipg,6) = - 0.5d0*(dhdh(6) + hd2h(6)) &
00368 & - dckkz(3) + clzzckkl - ckzlclzk
00369 rab(irg,itg,ipg,1:6) = - 0.5d0*delhab(1:6) + rabnl(irg,itg,ipg,1:6)
00370
00371 end do
00372 end do
00373 end do
00374
00375 end subroutine riccitensor_midpoint