00001 subroutine adjusthij
00002   use grid_parameter, only : nrg, ntg, npg
00003   use def_metric, only : psi
00004   use def_metric_hij, only : hxxd, hxyd, hxzd, hyyd, hyzd, hzzd
00005   implicit none
00006   real(8) :: detgm, psi4, psinew, psiold, twelve, 
00007             gmxx, gmxy, gmxz, gmyx, gmyy, gmyz, gmzx, gmzy, gmzz, &
00008             hod1, hod2, hod3, &
00009             hxx, hxy, hxz, hyx, hyy, hyz, hzx, hzy, hzz
00010   integer :: ipg, itg, irg
00011 
00012 
00013   twelve = 1.0d0/12.0d0
00014   do ipg = 0, npg
00015     do itg = 0, ntg
00016       do irg = 0, nrg
00017 
00018         hxx = hxxd(irg,itg,ipg)
00019         hxy = hxyd(irg,itg,ipg)
00020         hxz = hxzd(irg,itg,ipg)
00021         hyx = hxy
00022         hyy = hyyd(irg,itg,ipg)
00023         hyz = hyzd(irg,itg,ipg)
00024         hzx = hxz
00025         hzy = hyz
00026         hzz = hzzd(irg,itg,ipg)
00027 
00028         gmxx = 1.0d0 + hxx
00029         gmxy = hxy
00030         gmxz = hxz
00031         gmyx = hxy
00032         gmyy = 1.0d0 + hyy
00033         gmyz = hyz
00034         gmzx = hxz
00035         gmzy = hyz
00036         gmzz = 1.0d0 + hzz
00037 
00038         hod1 = hxx + hyy + hzz
00039         hod2 = hxx*hyy + hxx*hzz + hyy*hzz &
00040         &    - hxy*hyx - hxz*hzx - hyz*hzy
00041         hod3 = hxx*hyy*hzz + hxy*hyz*hzx + hxz*hyx*hzy &
00042         &    - hxx*hyz*hzy - hxy*hyx*hzz - hxz*hyy*hzx
00043         detgm = 1.0d0 + hod1 + hod2 + hod3
00044 
00045         psiold = psi(irg,itg,ipg)
00046         psinew = psiold*detgm**twelve
00047         psi4 = (psiold/psinew)**4
00048 
00049 
00050 
00051         psi(irg,itg,ipg) = psinew
00052         hxxd(irg,itg,ipg) = gmxx*psi4 - 1.0d0
00053         hxyd(irg,itg,ipg) = gmxy*psi4
00054         hxzd(irg,itg,ipg) = gmxz*psi4
00055         hyyd(irg,itg,ipg) = gmyy*psi4 - 1.0d0
00056         hyzd(irg,itg,ipg) = gmyz*psi4
00057         hzzd(irg,itg,ipg) = gmzz*psi4 - 1.0d0
00058 
00059       end do
00060     end do
00061   end do
00062 
00063 end subroutine adjusthij