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