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