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   fa13 = 1.0d0/3.0d0
00029   dphiu(1:3,1:3) = 0.0d0
00030   dphiu(1,2) =-1.0d0
00031   dphiu(2,1) = 1.0d0
00032 
00033   do ipg = 1, npg
00034     do itg = 1, ntg
00035       do irg = 1, nrg
00036 
00037         call interpo_linear_type0(gmxxd,hxxd,irg,itg,ipg)
00038         call interpo_linear_type0(gmxyd,hxyd,irg,itg,ipg)
00039         call interpo_linear_type0(gmxzd,hxzd,irg,itg,ipg)
00040         call interpo_linear_type0(gmyyd,hyyd,irg,itg,ipg)
00041         call interpo_linear_type0(gmyzd,hyzd,irg,itg,ipg)
00042         call interpo_linear_type0(gmzzd,hzzd,irg,itg,ipg)
00043         gmxxd = gmxxd + 1.0d0
00044         gmyyd = gmyyd + 1.0d0
00045         gmzzd = gmzzd + 1.0d0
00046         gmyxd = gmxyd
00047         gmzxd = gmxzd
00048         gmzyd = gmyzd
00049         call interpo_linear_type0(gmxxu,hxxu,irg,itg,ipg)
00050         call interpo_linear_type0(gmxyu,hxyu,irg,itg,ipg)
00051         call interpo_linear_type0(gmxzu,hxzu,irg,itg,ipg)
00052         call interpo_linear_type0(gmyyu,hyyu,irg,itg,ipg)
00053         call interpo_linear_type0(gmyzu,hyzu,irg,itg,ipg)
00054         call interpo_linear_type0(gmzzu,hzzu,irg,itg,ipg)
00055         gmxxu = gmxxu + 1.0d0
00056         gmyyu = gmyyu + 1.0d0
00057         gmzzu = gmzzu + 1.0d0
00058         gmyxu = gmxyu
00059         gmzxu = gmxzu
00060         gmzyu = gmyzu
00061 
00062         call grdphi_midpoint_type0(hxxd,dhxxdp,irg,itg,ipg)
00063         call grdphi_midpoint_type0(hxyd,dhxydp,irg,itg,ipg)
00064         call grdphi_midpoint_type0(hxzd,dhxzdp,irg,itg,ipg)
00065         call grdphi_midpoint_type0(hyyd,dhyydp,irg,itg,ipg)
00066         call grdphi_midpoint_type0(hyzd,dhyzdp,irg,itg,ipg)
00067         call grdphi_midpoint_type0(hzzd,dhzzdp,irg,itg,ipg)
00068 
00069         rlpxx(irg,itg,ipg) = dhxxdp + gmxyd*dphiu(2,1) + gmyxd*dphiu(2,1)
00070         rlpxy(irg,itg,ipg) = dhxydp + gmxxd*dphiu(1,2) + gmyyd*dphiu(2,1)
00071         rlpxz(irg,itg,ipg) = dhxzdp
00072         rlpyy(irg,itg,ipg) = dhyydp + gmyxd*dphiu(1,2) + gmxyd*dphiu(1,2)
00073         rlpyz(irg,itg,ipg) = dhyzdp
00074         rlpzz(irg,itg,ipg) = dhzzdp
00075 
00076         dhxxdp = rlpxx(irg,itg,ipg)
00077         dhxydp = rlpxy(irg,itg,ipg)
00078         dhxzdp = rlpxz(irg,itg,ipg)
00079         dhyydp = rlpyy(irg,itg,ipg)
00080         dhyzdp = rlpyz(irg,itg,ipg)
00081         dhzzdp = rlpzz(irg,itg,ipg)
00082         dhyxdp = dhxydp
00083         dhzxdp = dhxzdp
00084         dhzydp = dhyzdp
00085 
00086         trlie = gmxxu*dhxxdp + gmxyu*dhxydp + gmxzu*dhxzdp &
00087            &      + gmyxu*dhyxdp + gmyyu*dhyydp + gmyzu*dhyzdp &
00088            &      + gmzxu*dhzxdp + gmzyu*dhzydp + gmzzu*dhzzdp
00089 
00090         elpxx(irg,itg,ipg) = dhxxdp - fa13*gmxxd*trlie
00091         elpxy(irg,itg,ipg) = dhxydp - fa13*gmxyd*trlie
00092         elpxz(irg,itg,ipg) = dhxzdp - fa13*gmxzd*trlie
00093         elpyy(irg,itg,ipg) = dhyydp - fa13*gmyyd*trlie
00094         elpyz(irg,itg,ipg) = dhyzdp - fa13*gmyzd*trlie
00095         elpzz(irg,itg,ipg) = dhzzdp - fa13*gmzzd*trlie
00096 
00097       end do
00098     end do
00099   end do
00100 
00101 end subroutine liegmab_midpoint