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 vecxu(irg,itg,ipg) = gmxxu*vecxd(irg,itg,ipg) &
00020 & + gmxyu*vecyd(irg,itg,ipg) &
00021 & + gmxzu*veczd(irg,itg,ipg)
00022 end do
00023 end do
00024 end do
00025
00026 do ipg = 0, npg
00027 do itg = 0, ntg
00028 do irg = 0, nrg
00029 gmyxu = hxyu(irg,itg,ipg)
00030 gmyyu = 1.0d0 + hyyu(irg,itg,ipg)
00031 gmyzu = hyzu(irg,itg,ipg)
00032 vecyu(irg,itg,ipg) = gmyxu*vecxd(irg,itg,ipg) &
00033 & + gmyyu*vecyd(irg,itg,ipg) &
00034 & + gmyzu*veczd(irg,itg,ipg)
00035 end do
00036 end do
00037 end do
00038
00039 do ipg = 0, npg
00040 do itg = 0, ntg
00041 do irg = 0, nrg
00042 gmzxu = hxzu(irg,itg,ipg)
00043 gmzyu = hyzu(irg,itg,ipg)
00044 gmzzu = 1.0d0 + hzzu(irg,itg,ipg)
00045 veczu(irg,itg,ipg) = gmzxu*vecxd(irg,itg,ipg) &
00046 & + gmzyu*vecyd(irg,itg,ipg) &
00047 & + gmzzu*veczd(irg,itg,ipg)
00048 end do
00049 end do
00050 end do
00051
00052 end subroutine index_vec_down2up
00053