00001 subroutine index_vec_up2down(vecxd,vecyd,veczd,vecxu,vecyu,veczu)
00002 use grid_parameter, only : nrg, ntg, npg
00003 use def_metric_hij, only : hxxd, hxyd, hxzd, hyyd, hyzd, hzzd
00004 implicit none
00005 real(8), pointer :: vecxu(:,:,:), vecyu(:,:,:), veczu(:,:,:),
00006 vecxd(:,:,:), vecyd(:,:,:), veczd(:,:,:)
00007 real(8) :: gmxxd, gmxyd, gmxzd, gmyxd, gmyyd, gmyzd,
00008 gmzxd, gmzyd, gmzzd
00009 integer :: ipg, itg, irg
00010
00011
00012
00013 do ipg = 0, npg
00014 do itg = 0, ntg
00015 do irg = 0, nrg
00016 gmxxd = 1.0d0 + hxxd(irg,itg,ipg)
00017 gmxyd = hxyd(irg,itg,ipg)
00018 gmxzd = hxzd(irg,itg,ipg)
00019 gmyxd = hxyd(irg,itg,ipg)
00020 gmyyd = 1.0d0 + hyyd(irg,itg,ipg)
00021 gmyzd = hyzd(irg,itg,ipg)
00022 gmzxd = hxzd(irg,itg,ipg)
00023 gmzyd = hyzd(irg,itg,ipg)
00024 gmzzd = 1.0d0 + hzzd(irg,itg,ipg)
00025 vecxd(irg,itg,ipg) = gmxxd*vecxu(irg,itg,ipg) &
00026 & + gmxyd*vecyu(irg,itg,ipg) &
00027 & + gmxzd*veczu(irg,itg,ipg)
00028 vecyd(irg,itg,ipg) = gmyxd*vecxu(irg,itg,ipg) &
00029 & + gmyyd*vecyu(irg,itg,ipg) &
00030 & + gmyzd*veczu(irg,itg,ipg)
00031 veczd(irg,itg,ipg) = gmzxd*vecxu(irg,itg,ipg) &
00032 & + gmzyd*vecyu(irg,itg,ipg) &
00033 & + gmzzd*veczu(irg,itg,ipg)
00034 end do
00035 end do
00036 end do
00037
00038 end subroutine index_vec_up2down