00001 subroutine faraday_gridpoint
00002   use phys_constant,  only : long
00003   use make_array_3d
00004   use grid_parameter, only : nrg, ntg, npg
00005   use def_metric,  only : alph, bvxu, bvyu, bvzu
00006   use def_emfield,  only : alva, vaxd, vayd, vazd
00007   use def_faraday_tensor,  only : fxd, fyd, fzd
00008   use interface_grgrad_4th_gridpoint_bhex
00009   implicit none
00010   integer :: irg, itg, ipg
00011   real(long) :: alpgp, ainvh, bvxugp, bvyugp, bvzugp
00012   real(long) :: vaxdgp, vaydgp, vazdgp
00013   real(long) :: dbvxdxgp, dbvxdygp, dbvxdzgp 
00014                dbvydxgp, dbvydygp, dbvydzgp &
00015                dbvzdxgp, dbvzdygp, dbvzdzgp
00016   real(long) :: dvaxdxgp, dvaxdygp, dvaxdzgp 
00017                dvaydxgp, dvaydygp, dvaydzgp &
00018                dvazdxgp, dvazdygp, dvazdzgp
00019   real(long) :: dalvadxgp, dalvadygp, dalvadzgp
00020   real(long) :: lie_bAx, lie_bAy, lie_bAz
00021 
00022 
00023 
00024 
00025   do ipg = 0, npg
00026     do itg = 0, ntg
00027       do irg = 0, nrg
00028 
00029         call grgrad_4th_gridpoint_bhex(bvxu,dbvxdxgp,dbvxdygp,dbvxdzgp, &
00030         &                                                 ,irg,itg,ipg)
00031         call grgrad_4th_gridpoint_bhex(bvyu,dbvydxgp,dbvydygp,dbvydzgp, &
00032         &                                                 ,irg,itg,ipg)
00033         call grgrad_4th_gridpoint_bhex(bvzu,dbvzdxgp,dbvzdygp,dbvzdzgp, &
00034         &                                                 ,irg,itg,ipg)
00035         call grgrad_4th_gridpoint_bhex(vaxd,dvaxdxgp,dvaxdygp,dvaxdzgp, &
00036         &                                                 ,irg,itg,ipg)
00037         call grgrad_4th_gridpoint_bhex(vayd,dvaydxgp,dvaydygp,dvaydzgp, &
00038         &                                                 ,irg,itg,ipg)
00039         call grgrad_4th_gridpoint_bhex(vazd,dvazdxgp,dvazdygp,dvazdzgp, &
00040         &                                                 ,irg,itg,ipg)
00041         call grgrad_4th_gridpoint_bhex(alva,dalvadxgp,dalvadygp,dalvadzgp, &
00042         &                                                 ,irg,itg,ipg)
00043         ainvh = 1.0d0/alph(irg,itg,ipg)
00044         bvxugp = bvxu(irg,itg,ipg)
00045         bvyugp = bvyu(irg,itg,ipg)
00046         bvzugp = bvzu(irg,itg,ipg)
00047         vaxdgp = vaxd(irg,itg,ipg)
00048         vaydgp = vayd(irg,itg,ipg)
00049         vazdgp = vazd(irg,itg,ipg)
00050 
00051         lie_bAx = bvxugp*dvaxdxgp + bvyugp*dvaxdygp + bvzugp*dvaxdzgp &
00052         &       + vaxdgp*dbvxdxgp + vaydgp*dbvydxgp + vazdgp*dbvzdxgp
00053         lie_bAy = bvxugp*dvaydxgp + bvyugp*dvaydygp + bvzugp*dvaydzgp &
00054         &       + vaxdgp*dbvxdygp + vaydgp*dbvydygp + vazdgp*dbvzdygp
00055         lie_bAz = bvxugp*dvazdxgp + bvyugp*dvazdygp + bvzugp*dvazdzgp &
00056         &       + vaxdgp*dbvxdzgp + vaydgp*dbvydzgp + vazdgp*dbvzdzgp
00057 
00058         fxd_grid(irg,itg,ipg) = ainvh*(lie_bAx - dalvadxgp)
00059         fyd_grid(irg,itg,ipg) = ainvh*(lie_bAy - dalvadygp)
00060         fzd_grid(irg,itg,ipg) = ainvh*(lie_bAz - dalvadzgp)
00061 
00062       end do
00063     end do
00064   end do
00065 
00066 end subroutine faraday_gridpoint