00001 subroutine cristoffel_gridpoint
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_grid, only : cri_grid, crid_grid
00006 use def_gamma_crist_grid, only : gmcrix_grid, gmcriy_grid, gmcriz_grid
00007 use interface_grgrad_4th_gridpoint
00008 use make_array_3d
00009 implicit none
00010 real(8) :: dhyxdx, dhyxdy, dhyxdz, dhzxdx, dhzxdy, dhzxdz,
00011 dhzydx, dhzydy, dhzydz, &
00012 dhxxdx, dhxxdy, dhxxdz, dhxydx, dhxydy, dhxydz, &
00013 dhxzdx, dhxzdy, dhxzdz, dhyydx, dhyydy, dhyydz, &
00014 dhyzdx, dhyzdy, dhyzdz, dhzzdx, dhzzdy, dhzzdz, &
00015 gmxxu, gmxyu, gmxzu, gmyyu, gmyzu, gmzzu, &
00016 gmyxu, gmzxu, gmzyu
00017 integer :: ipg, itg, irg
00018
00019
00020
00021
00022
00023
00024 do ipg = 0, npg
00025 do itg = 0, ntg
00026 do irg = 0, nrg
00027
00028 gmxxu=hxxu(irg,itg,ipg)
00029 gmxyu=hxyu(irg,itg,ipg)
00030 gmxzu=hxzu(irg,itg,ipg)
00031 gmyyu=hyyu(irg,itg,ipg)
00032 gmyzu=hyzu(irg,itg,ipg)
00033 gmzzu=hzzu(irg,itg,ipg)
00034 gmyyu = gmyyu + 1.0d0
00035 gmxxu = gmxxu + 1.0d0
00036 gmzzu = gmzzu + 1.0d0
00037 gmyxu = gmxyu
00038 gmzxu = gmxzu
00039 gmzyu = gmyzu
00040
00041 call grgrad_4th_gridpoint(hxxd,dhxxdx,dhxxdy,dhxxdz,irg,itg,ipg)
00042 call grgrad_4th_gridpoint(hxyd,dhxydx,dhxydy,dhxydz,irg,itg,ipg)
00043 call grgrad_4th_gridpoint(hxzd,dhxzdx,dhxzdy,dhxzdz,irg,itg,ipg)
00044 call grgrad_4th_gridpoint(hyyd,dhyydx,dhyydy,dhyydz,irg,itg,ipg)
00045 call grgrad_4th_gridpoint(hyzd,dhyzdx,dhyzdy,dhyzdz,irg,itg,ipg)
00046 call grgrad_4th_gridpoint(hzzd,dhzzdx,dhzzdy,dhzzdz,irg,itg,ipg)
00047
00048 dhyxdx = dhxydx
00049 dhyxdy = dhxydy
00050 dhyxdz = dhxydz
00051
00052 dhzxdx = dhxzdx
00053 dhzxdy = dhxzdy
00054 dhzxdz = dhxzdz
00055
00056 dhzydx = dhyzdx
00057 dhzydy = dhyzdy
00058 dhzydz = dhyzdz
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 crid_grid(irg,itg,ipg,1,1) = 0.5d0*(dhxxdx + dhxxdx - dhxxdx)
00081 crid_grid(irg,itg,ipg,1,2) = 0.5d0*(dhxxdy + dhxydx - dhxydx)
00082 crid_grid(irg,itg,ipg,1,3) = 0.5d0*(dhxxdz + dhxzdx - dhxzdx)
00083 crid_grid(irg,itg,ipg,1,4) = 0.5d0*(dhxydy + dhxydy - dhyydx)
00084 crid_grid(irg,itg,ipg,1,5) = 0.5d0*(dhxydz + dhxzdy - dhyzdx)
00085 crid_grid(irg,itg,ipg,1,6) = 0.5d0*(dhxzdz + dhxzdz - dhzzdx)
00086 crid_grid(irg,itg,ipg,2,1) = 0.5d0*(dhxydx + dhxydx - dhxxdy)
00087 crid_grid(irg,itg,ipg,2,2) = 0.5d0*(dhxydy + dhyydx - dhxydy)
00088 crid_grid(irg,itg,ipg,2,3) = 0.5d0*(dhxydz + dhyzdx - dhxzdy)
00089 crid_grid(irg,itg,ipg,2,4) = 0.5d0*(dhyydy + dhyydy - dhyydy)
00090 crid_grid(irg,itg,ipg,2,5) = 0.5d0*(dhyydz + dhyzdy - dhyzdy)
00091 crid_grid(irg,itg,ipg,2,6) = 0.5d0*(dhyzdz + dhyzdz - dhzzdy)
00092 crid_grid(irg,itg,ipg,3,1) = 0.5d0*(dhxzdx + dhxzdx - dhxxdz)
00093 crid_grid(irg,itg,ipg,3,2) = 0.5d0*(dhxzdy + dhyzdx - dhxydz)
00094 crid_grid(irg,itg,ipg,3,3) = 0.5d0*(dhxzdz + dhzzdx - dhxzdz)
00095 crid_grid(irg,itg,ipg,3,4) = 0.5d0*(dhyzdy + dhyzdy - dhyydz)
00096 crid_grid(irg,itg,ipg,3,5) = 0.5d0*(dhyzdz + dhzzdy - dhyzdz)
00097 crid_grid(irg,itg,ipg,3,6) = 0.5d0*(dhzzdz + dhzzdz - dhzzdz)
00098
00099 cri_grid(irg,itg,ipg,1,1) = &
00100 & (-gmxzu*dhxxdz - gmxyu*dhxxdy + gmxxu*dhxxdx + &
00101 & 2.0d0*gmxyu*dhxydx + 2.0d0*gmxzu*dhxzdx)*0.5d0
00102 cri_grid(irg,itg,ipg,1,2) = &
00103 & (-gmxzu*dhxydz + gmxxu*dhxxdy + gmxzu*dhxzdy + &
00104 & gmxyu*dhyydx + gmxzu*dhyzdx)*0.5d0
00105 cri_grid(irg,itg,ipg,1,3) = &
00106 & (gmxxu*dhxxdz + gmxyu*dhxydz - gmxyu*dhxzdy + &
00107 & gmxyu*dhyzdx + gmxzu*dhzzdx)*0.5d0
00108 cri_grid(irg,itg,ipg,1,4) = &
00109 & (-gmxzu*dhyydz + 2.0d0*gmxxu*dhxydy + gmxyu*dhyydy + &
00110 & 2.0d0*gmxzu*dhyzdy - gmxxu*dhyydx)*0.5d0
00111 cri_grid(irg,itg,ipg,1,5) = &
00112 & (gmxxu*dhxydz + gmxyu*dhyydz + gmxxu*dhxzdy + &
00113 & gmxzu*dhzzdy - gmxxu*dhyzdx)*0.5d0
00114 cri_grid(irg,itg,ipg,1,6) = &
00115 & (2.0d0*gmxxu*dhxzdz + 2.0d0*gmxyu*dhyzdz + &
00116 & gmxzu*dhzzdz - gmxyu*dhzzdy - gmxxu*dhzzdx)*0.5d0
00117
00118 cri_grid(irg,itg,ipg,2,1) = &
00119 & (-gmyzu*dhxxdz - gmyyu*dhxxdy + gmxyu*dhxxdx + &
00120 & 2.0d0*gmyyu*dhxydx + 2.0d0*gmyzu*dhxzdx)*0.5d0
00121 cri_grid(irg,itg,ipg,2,2) = &
00122 & (-gmyzu*dhxydz + gmxyu*dhxxdy + gmyzu*dhxzdy + &
00123 & gmyyu*dhyydx + gmyzu*dhyzdx)*0.5d0
00124 cri_grid(irg,itg,ipg,2,3) = &
00125 & (gmxyu*dhxxdz + gmyyu*dhxydz - gmyyu*dhxzdy + &
00126 & gmyyu*dhyzdx + gmyzu*dhzzdx)*0.5d0
00127 cri_grid(irg,itg,ipg,2,4) = &
00128 & (-gmyzu*dhyydz + 2.0d0*gmxyu*dhxydy + gmyyu*dhyydy + &
00129 & 2.0d0*gmyzu*dhyzdy - gmxyu*dhyydx)*0.5d0
00130 cri_grid(irg,itg,ipg,2,5) = &
00131 & (gmxyu*dhxydz + gmyyu*dhyydz + gmxyu*dhxzdy + &
00132 & gmyzu*dhzzdy - gmxyu*dhyzdx)*0.5d0
00133 cri_grid(irg,itg,ipg,2,6) = &
00134 & (2.0d0*gmxyu*dhxzdz + 2.0d0*gmyyu*dhyzdz + &
00135 & gmyzu*dhzzdz - gmyyu*dhzzdy - gmxyu*dhzzdx)*0.5d0
00136
00137 cri_grid(irg,itg,ipg,3,1) = &
00138 & (-gmzzu*dhxxdz - gmyzu*dhxxdy + gmxzu*dhxxdx + &
00139 & 2.0d0*gmyzu*dhxydx + 2.0d0*gmzzu*dhxzdx)*0.5d0
00140 cri_grid(irg,itg,ipg,3,2) = &
00141 & (-gmzzu*dhxydz + gmxzu*dhxxdy + gmzzu*dhxzdy + &
00142 & gmyzu*dhyydx + gmzzu*dhyzdx)*0.5d0
00143 cri_grid(irg,itg,ipg,3,3) = &
00144 & (gmxzu*dhxxdz + gmyzu*dhxydz - gmyzu*dhxzdy + &
00145 & gmyzu*dhyzdx + gmzzu*dhzzdx)*0.5d0
00146 cri_grid(irg,itg,ipg,3,4) = &
00147 & (-gmzzu*dhyydz + 2.0d0*gmxzu*dhxydy + gmyzu*dhyydy + &
00148 & 2.0d0*gmzzu*dhyzdy - gmxzu*dhyydx)*0.5d0
00149 cri_grid(irg,itg,ipg,3,5) = &
00150 & (gmxzu*dhxydz + gmyzu*dhyydz + gmxzu*dhxzdy + &
00151 & gmzzu*dhzzdy - gmxzu*dhyzdx)*0.5d0
00152 cri_grid(irg,itg,ipg,3,6) = &
00153 & (2.0d0*gmxzu*dhxzdz + 2.0d0*gmyzu*dhyzdz + &
00154 & gmzzu*dhzzdz - gmyzu*dhzzdy - gmxzu*dhzzdx)*0.5d0
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177 gmcrix_grid(irg,itg,ipg) = 0.0d0
00178 gmcriy_grid(irg,itg,ipg) = 0.0d0
00179 gmcriz_grid(irg,itg,ipg) = 0.0d0
00180 end do
00181 end do
00182 end do
00183
00184
00185
00186 end subroutine cristoffel_gridpoint