00001 subroutine faraday_raise_WL
00002   use phys_constant,  only : long
00003   use make_array_3d
00004   use grid_parameter, only : nrg, ntg, npg
00005   use def_metric_hij, only : hxxu, hxyu, hxzu, hyyu, hyzu, hzzu
00006   use def_faraday_tensor,  only : fxd, fyd, fzd, fxu, fyu, fzu, &
00007   &                               fijd, fiju, fijdu, fidfiu, fijfij
00008   use interface_interpo_linear_type0
00009   use interface_index_vec_down2up_midpoint
00010   implicit none
00011   real(8) :: hhxxu, hhxyu, hhxzu, hhyyu, hhyzu, hhzzu
00012   real(8) :: gmiju(3,3), fijdc(3,3), fijuc(3,3), fid(3), fiu(3)
00013   integer :: irg, itg, ipg, ia, ib, ic
00014 
00015 
00016 
00017 
00018   call index_vec_down2up_midpoint(fxu,fyu,fzu,fxd,fyd,fzd)
00019 
00020   do ipg = 1, npg
00021     do itg = 1, ntg
00022       do irg = 1, nrg
00023         call interpo_linear_type0(hhxxu,hxxu,irg,itg,ipg)
00024         call interpo_linear_type0(hhxyu,hxyu,irg,itg,ipg)
00025         call interpo_linear_type0(hhxzu,hxzu,irg,itg,ipg)
00026         call interpo_linear_type0(hhyyu,hyyu,irg,itg,ipg)
00027         call interpo_linear_type0(hhyzu,hyzu,irg,itg,ipg)
00028         call interpo_linear_type0(hhzzu,hzzu,irg,itg,ipg)
00029         gmiju(1,1) = 1.0d0 + hhxxu
00030         gmiju(1,2) =         hhxyu
00031         gmiju(1,3) =         hhxzu
00032         gmiju(2,1) =         hhxyu
00033         gmiju(2,2) = 1.0d0 + hhyyu
00034         gmiju(2,3) =         hhyzu
00035         gmiju(3,1) =         hhxzu
00036         gmiju(3,2) =         hhyzu
00037         gmiju(3,3) = 1.0d0 + hhzzu
00038 
00039         fijdc(1,1) = 0.0d0
00040         fijdc(1,2) = fijd(irg,itg,ipg,1)
00041         fijdc(1,3) = fijd(irg,itg,ipg,2)
00042         fijdc(2,1) = - fijdc(1,2)
00043         fijdc(2,2) = 0.0d0
00044         fijdc(2,3) = fijd(irg,itg,ipg,3)
00045         fijdc(3,1) = - fijdc(1,3)
00046         fijdc(3,2) = - fijdc(2,3)
00047         fijdc(3,3) = 0.0d0
00048 
00049         fiju(irg,itg,ipg,1) = 0.0d0
00050         fiju(irg,itg,ipg,2) = 0.0d0
00051         fiju(irg,itg,ipg,3) = 0.0d0
00052         do ib = 1, 3
00053           do ia = 1, 3
00054             fiju(irg,itg,ipg,1) = fiju(irg,itg,ipg,1) &
00055             &                   + gmiju(1,ia)*gmiju(2,ib)*fijdc(ia,ib)
00056             fiju(irg,itg,ipg,2) = fiju(irg,itg,ipg,2) & 
00057             &                   + gmiju(1,ia)*gmiju(3,ib)*fijdc(ia,ib)
00058             fiju(irg,itg,ipg,3) = fiju(irg,itg,ipg,3) & 
00059             &                   + gmiju(2,ia)*gmiju(3,ib)*fijdc(ia,ib)
00060             fijdu(irg,itg,ipg,ia,ib) = 0.0d0
00061             do ic = 1, 3
00062               fijdu(irg,itg,ipg,ia,ib) = fijdu(irg,itg,ipg,ia,ib) &
00063               &                        + gmiju(ib,ic)*fijdc(ia,ic)
00064             end do
00065           end do
00066         end do        
00067 
00068         fijuc(1,1) = 0.0d0
00069         fijuc(1,2) = fiju(irg,itg,ipg,1)
00070         fijuc(1,3) = fiju(irg,itg,ipg,2)
00071         fijuc(2,1) = - fijuc(1,2)
00072         fijuc(2,2) = 0.0d0
00073         fijuc(2,3) = fiju(irg,itg,ipg,3)
00074         fijuc(3,1) = - fijuc(1,3)
00075         fijuc(3,2) = - fijuc(2,3)
00076         fijuc(3,3) = 0.0d0
00077 
00078         fid(1) = fxd(irg,itg,ipg) ; fiu(1) = fxu(irg,itg,ipg)
00079         fid(2) = fyd(irg,itg,ipg) ; fiu(2) = fyu(irg,itg,ipg)
00080         fid(3) = fzd(irg,itg,ipg) ; fiu(3) = fzu(irg,itg,ipg)
00081 
00082         fidfiu(irg,itg,ipg) = fid(1)*fiu(1) + fid(2)*fiu(2) + fid(3)*fiu(3)
00083         fijfij(irg,itg,ipg) = 0.0d0
00084         do ib = 1, 3
00085           do ia = 1, 3
00086             fijfij(irg,itg,ipg) = fijfij(irg,itg,ipg) &
00087             &                   + fijdc(ia,ib)*fijuc(ia,ib)
00088           end do
00089         end do
00090 
00091       end do
00092     end do
00093   end do
00094 
00095 end subroutine faraday_raise_WL