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