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