00001 subroutine liegmab_midpoint
00002 use grid_parameter, only : nrg, ntg, npg
00003 use def_Lie_derivatives, only : elpxx, elpxy, elpxz, elpyy, elpyz, elpzz, &
00004 & rlpxx, rlpxy, rlpxz, rlpyy, rlpyz, rlpzz
00005 use def_metric_hij, only : hxxd, hxyd, hxzd, hyyd, hyzd, hzzd, &
00006 & hxxu, hxyu, hxzu, hyyu, hyzu, hzzu
00007 use def_dvphi, only : dphiu
00008 use interface_interpo_linear_type0
00009 use interface_grdphi_midpoint_type0
00010 implicit none
00011 real(8) :: dhxxdp, dhxxdx, dhxxdy, dhxxdz,
00012 dhxydp, dhxydx, dhxydy, dhxydz, &
00013 dhxzdp, dhxzdx, dhxzdy, dhxzdz, &
00014 dhyxdp, dhyxdx, dhyxdy, dhyxdz, &
00015 dhyydp, dhyydx, dhyydy, dhyydz, &
00016 dhyzdp, dhyzdx, dhyzdy, dhyzdz, &
00017 dhzxdp, dhzxdx, dhzxdy, dhzxdz, &
00018 dhzydp, dhzydx, dhzydy, dhzydz, &
00019 dhzzdp, dhzzdx, dhzzdy, dhzzdz, &
00020 fa13, trlie, &
00021 gmxxd, gmxyd, gmxzd, gmxxu, gmxyu, gmxzu, &
00022 gmyxd, gmyyd, gmyzd, gmyxu, gmyyu, gmyzu, &
00023 gmzxd, gmzyd, gmzzd, gmzxu, gmzyu, gmzzu
00024 integer :: ipg, irg, itg
00025
00026
00027
00028
00029
00030 fa13 = 1.0d0/3.0d0
00031 dphiu(1:3,1:3) = 0.0d0
00032 dphiu(1,2) =-1.0d0
00033 dphiu(2,1) = 1.0d0
00034
00035 do ipg = 1, npg
00036 do itg = 1, ntg
00037 do irg = 1, nrg
00038
00039 call interpo_linear_type0(gmxxd,hxxd,irg,itg,ipg)
00040 call interpo_linear_type0(gmxyd,hxyd,irg,itg,ipg)
00041 call interpo_linear_type0(gmxzd,hxzd,irg,itg,ipg)
00042 call interpo_linear_type0(gmyyd,hyyd,irg,itg,ipg)
00043 call interpo_linear_type0(gmyzd,hyzd,irg,itg,ipg)
00044 call interpo_linear_type0(gmzzd,hzzd,irg,itg,ipg)
00045 gmxxd = gmxxd + 1.0d0
00046 gmyyd = gmyyd + 1.0d0
00047 gmzzd = gmzzd + 1.0d0
00048 gmyxd = gmxyd
00049 gmzxd = gmxzd
00050 gmzyd = gmyzd
00051 call interpo_linear_type0(gmxxu,hxxu,irg,itg,ipg)
00052 call interpo_linear_type0(gmxyu,hxyu,irg,itg,ipg)
00053 call interpo_linear_type0(gmxzu,hxzu,irg,itg,ipg)
00054 call interpo_linear_type0(gmyyu,hyyu,irg,itg,ipg)
00055 call interpo_linear_type0(gmyzu,hyzu,irg,itg,ipg)
00056 call interpo_linear_type0(gmzzu,hzzu,irg,itg,ipg)
00057 gmxxu = gmxxu + 1.0d0
00058 gmyyu = gmyyu + 1.0d0
00059 gmzzu = gmzzu + 1.0d0
00060 gmyxu = gmxyu
00061 gmzxu = gmxzu
00062 gmzyu = gmyzu
00063
00064 call grdphi_midpoint_type0(hxxd,dhxxdp,irg,itg,ipg)
00065 call grdphi_midpoint_type0(hxyd,dhxydp,irg,itg,ipg)
00066 call grdphi_midpoint_type0(hxzd,dhxzdp,irg,itg,ipg)
00067 call grdphi_midpoint_type0(hyyd,dhyydp,irg,itg,ipg)
00068 call grdphi_midpoint_type0(hyzd,dhyzdp,irg,itg,ipg)
00069 call grdphi_midpoint_type0(hzzd,dhzzdp,irg,itg,ipg)
00070
00071 rlpxx(irg,itg,ipg) = dhxxdp + gmxyd*dphiu(2,1) + gmyxd*dphiu(2,1)
00072 rlpxy(irg,itg,ipg) = dhxydp + gmxxd*dphiu(1,2) + gmyyd*dphiu(2,1)
00073 rlpxz(irg,itg,ipg) = dhxzdp + gmyzd*dphiu(2,1)
00074 rlpyy(irg,itg,ipg) = dhyydp + gmyxd*dphiu(1,2) + gmxyd*dphiu(1,2)
00075 rlpyz(irg,itg,ipg) = dhyzdp + gmxzd*dphiu(1,2)
00076 rlpzz(irg,itg,ipg) = dhzzdp
00077
00078 dhxxdp = rlpxx(irg,itg,ipg)
00079 dhxydp = rlpxy(irg,itg,ipg)
00080 dhxzdp = rlpxz(irg,itg,ipg)
00081 dhyydp = rlpyy(irg,itg,ipg)
00082 dhyzdp = rlpyz(irg,itg,ipg)
00083 dhzzdp = rlpzz(irg,itg,ipg)
00084 dhyxdp = dhxydp
00085 dhzxdp = dhxzdp
00086 dhzydp = dhyzdp
00087
00088 trlie = gmxxu*dhxxdp + gmxyu*dhxydp + gmxzu*dhxzdp &
00089 & + gmyxu*dhyxdp + gmyyu*dhyydp + gmyzu*dhyzdp &
00090 & + gmzxu*dhzxdp + gmzyu*dhzydp + gmzzu*dhzzdp
00091
00092 elpxx(irg,itg,ipg) = dhxxdp - fa13*gmxxd*trlie
00093 elpxy(irg,itg,ipg) = dhxydp - fa13*gmxyd*trlie
00094 elpxz(irg,itg,ipg) = dhxzdp - fa13*gmxzd*trlie
00095 elpyy(irg,itg,ipg) = dhyydp - fa13*gmyyd*trlie
00096 elpyz(irg,itg,ipg) = dhyzdp - fa13*gmyzd*trlie
00097 elpzz(irg,itg,ipg) = dhzzdp - fa13*gmzzd*trlie
00098
00099 end do
00100 end do
00101 end do
00102
00103 end subroutine liegmab_midpoint