00001 subroutine index_vec_down2up(vecxu,vecyu,veczu,vecxd,vecyd,veczd)
00002 use grid_parameter, only : nrg, ntg, npg
00003 use def_metric_hij, only : hxxu, hxyu, hxzu, hyyu, hyzu, hzzu
00004 implicit none
00005 real(8), pointer :: vecxu(:,:,:), vecyu(:,:,:), veczu(:,:,:),
00006 vecxd(:,:,:), vecyd(:,:,:), veczd(:,:,:)
00007 real(8) :: gmxxu, gmxyu, gmxzu, gmyxu, gmyyu, gmyzu,
00008 gmzxu, gmzyu, gmzzu
00009 integer :: ipg, itg, irg
00010
00011
00012
00013 do ipg = 0, npg
00014 do itg = 0, ntg
00015 do irg = 0, nrg
00016 gmxxu = 1.0d0 + hxxu(irg,itg,ipg)
00017 gmxyu = hxyu(irg,itg,ipg)
00018 gmxzu = hxzu(irg,itg,ipg)
00019 gmyxu = hxyu(irg,itg,ipg)
00020 gmyyu = 1.0d0 + hyyu(irg,itg,ipg)
00021 gmyzu = hyzu(irg,itg,ipg)
00022 gmzxu = hxzu(irg,itg,ipg)
00023 gmzyu = hyzu(irg,itg,ipg)
00024 gmzzu = 1.0d0 + hzzu(irg,itg,ipg)
00025 vecxu(irg,itg,ipg) = gmxxu*vecxd(irg,itg,ipg) &
00026 & + gmxyu*vecyd(irg,itg,ipg) &
00027 & + gmxzu*veczd(irg,itg,ipg)
00028 vecyu(irg,itg,ipg) = gmyxu*vecxd(irg,itg,ipg) &
00029 & + gmyyu*vecyd(irg,itg,ipg) &
00030 & + gmyzu*veczd(irg,itg,ipg)
00031 veczu(irg,itg,ipg) = gmzxu*vecxd(irg,itg,ipg) &
00032 & + gmzyu*vecyd(irg,itg,ipg) &
00033 & + gmzzu*veczd(irg,itg,ipg)
00034 end do
00035 end do
00036 end do
00037
00038 end subroutine index_vec_down2up