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