00001 subroutine invhij
00002   use grid_parameter, only : nrg, ntg, npg
00003   use def_metric_hij, only : hxxd, hxyd, hxzd, hyyd, hyzd, hzzd, &
00004   &                          hxxu, hxyu, hxzu, hyyu, hyzu, hzzu
00005   implicit none
00006   real(8) :: hxx, hxy, hxz, hyx, hyy, hyz, hzx, hzy, hzz, 
00007             hod1, hod2, hod3, detgm, detgmi, &
00008             gmxxu, gmxyu, gmxzu, gmyxu, gmyyu, gmyzu, &
00009             gmzxu, gmzyu, gmzzu
00010   integer :: ipg, itg, irg
00011 
00012   do ipg = 0, npg
00013     do itg = 0, ntg
00014       do irg = 0, nrg
00015 
00016         hxx = hxxd(irg,itg,ipg)
00017         hxy = hxyd(irg,itg,ipg)
00018         hxz = hxzd(irg,itg,ipg)
00019         hyx = hxy
00020         hyy = hyyd(irg,itg,ipg)
00021         hyz = hyzd(irg,itg,ipg)
00022         hzx = hxz
00023         hzy = hyz
00024         hzz = hzzd(irg,itg,ipg)
00025 
00026         hod1 = hxx + hyy + hzz
00027         hod2 = hxx*hyy + hxx*hzz + hyy*hzz &
00028            &     - hxy*hyx - hxz*hzx - hyz*hzy
00029         hod3 = hxx*hyy*hzz + hxy*hyz*hzx + hxz*hyx*hzy &
00030            &     - hxx*hyz*hzy - hxy*hyx*hzz - hxz*hyy*hzx
00031         detgm  = 1.0d0 + hod1 + hod2 + hod3
00032         detgmi = 1.0d0/detgm
00033 
00034         hod1  = + hyy + hzz
00035         hod2  = + hyy*hzz - hyz*hzy
00036         gmxxu = (1.0d0 + hod1 + hod2)*detgmi
00037         hod1  = - hxy
00038         hod2  = + hxz*hzy - hxy*hzz
00039         gmxyu = (hod1 + hod2)*detgmi
00040         hod1  = - hxz
00041         hod2  = + hxy*hyz - hxz*hyy
00042         gmxzu = (hod1 + hod2)*detgmi
00043         hod1  = + hxx + hzz
00044         hod2  = + hxx*hzz - hxz*hzx
00045         gmyyu = (1.0d0 + hod1 + hod2)*detgmi
00046         hod1  = - hyz
00047         hod2  = + hxz*hyx - hxx*hyz
00048         gmyzu = (hod1 + hod2)*detgmi
00049         hod1  = + hxx + hyy
00050         hod2  = + hxx*hyy - hxy*hyx
00051         gmzzu = (1.0d0 + hod1 + hod2)*detgmi
00052         gmyxu = gmxyu
00053         gmzxu = gmxzu
00054         gmzyu = gmyzu
00055 
00056         hxxu(irg,itg,ipg) = gmxxu - 1.0d0
00057         hxyu(irg,itg,ipg) = gmxyu
00058         hxzu(irg,itg,ipg) = gmxzu
00059         hyyu(irg,itg,ipg) = gmyyu - 1.0d0
00060         hyzu(irg,itg,ipg) = gmyzu
00061         hzzu(irg,itg,ipg) = gmzzu - 1.0d0
00062 
00063       end do
00064     end do
00065   end do
00066 
00067 end subroutine invhij