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, fxd_grid, fyd_grid, fzd_grid, &
00008 & fijd_grid, Lie_bFxd, Lie_bFyd, Lie_bFzd
00009 use def_emfield_derivatives, only : Lie_bAxd_grid, Lie_bAyd_grid, &
00010 & Lie_bAzd_grid
00011 use interface_grgrad_4th_gridpoint
00012 use interface_grgrad_midpoint_type0
00013 use interface_interpo_linear_type0
00014 implicit none
00015 integer :: irg, itg, ipg
00016 real(long) :: alpgp, ainvh, bvxugp, bvyugp, bvzugp
00017 real(long) :: vaxdgp, vaydgp, vazdgp
00018 real(long) :: fxdgc, fydgc, fzdgc, bvxugc, bvyugc, bvzugc
00019 real(long) :: dbvxdxgp, dbvxdygp, dbvxdzgp,
00020 dbvydxgp, dbvydygp, dbvydzgp, &
00021 dbvzdxgp, dbvzdygp, dbvzdzgp
00022 real(long) :: dvaxdxgp, dvaxdygp, dvaxdzgp,
00023 dvaydxgp, dvaydygp, dvaydzgp, &
00024 dvazdxgp, dvazdygp, dvazdzgp
00025 real(long) :: dbvxdxgc, dbvxdygc, dbvxdzgc,
00026 dbvydxgc, dbvydygc, dbvydzgc, &
00027 dbvzdxgc, dbvzdygc, dbvzdzgc
00028 real(long) :: dfxdx, dfxdy, dfxdz,
00029 dfydx, dfydy, dfydz, &
00030 dfzdx, dfzdy, dfzdz
00031 real(long) :: dalvadxgp, dalvadygp, dalvadzgp
00032 real(long) :: lie_bAx, lie_bAy, lie_bAz, lie_bFx, lie_bFy, lie_bFz
00033
00034
00035
00036
00037 do ipg = 0, npg
00038 do itg = 0, ntg
00039 do irg = 0, nrg
00040
00041 call grgrad_4th_gridpoint(bvxu,dbvxdxgp,dbvxdygp,dbvxdzgp,irg,itg,ipg)
00042 call grgrad_4th_gridpoint(bvyu,dbvydxgp,dbvydygp,dbvydzgp,irg,itg,ipg)
00043 call grgrad_4th_gridpoint(bvzu,dbvzdxgp,dbvzdygp,dbvzdzgp,irg,itg,ipg)
00044 call grgrad_4th_gridpoint(vaxd,dvaxdxgp,dvaxdygp,dvaxdzgp,irg,itg,ipg)
00045 call grgrad_4th_gridpoint(vayd,dvaydxgp,dvaydygp,dvaydzgp,irg,itg,ipg)
00046 call grgrad_4th_gridpoint(vazd,dvazdxgp,dvazdygp,dvazdzgp,irg,itg,ipg)
00047 call grgrad_4th_gridpoint(alva,dalvadxgp,dalvadygp,dalvadzgp &
00048 & ,irg,itg,ipg)
00049 ainvh = 1.0d0/alph(irg,itg,ipg)
00050 bvxugp = bvxu(irg,itg,ipg)
00051 bvyugp = bvyu(irg,itg,ipg)
00052 bvzugp = bvzu(irg,itg,ipg)
00053 vaxdgp = vaxd(irg,itg,ipg)
00054 vaydgp = vayd(irg,itg,ipg)
00055 vazdgp = vazd(irg,itg,ipg)
00056
00057 lie_bAx = bvxugp*dvaxdxgp + bvyugp*dvaxdygp + bvzugp*dvaxdzgp &
00058 & + vaxdgp*dbvxdxgp + vaydgp*dbvydxgp + vazdgp*dbvzdxgp
00059 lie_bAy = bvxugp*dvaydxgp + bvyugp*dvaydygp + bvzugp*dvaydzgp &
00060 & + vaxdgp*dbvxdygp + vaydgp*dbvydygp + vazdgp*dbvzdygp
00061 lie_bAz = bvxugp*dvazdxgp + bvyugp*dvazdygp + bvzugp*dvazdzgp &
00062 & + vaxdgp*dbvxdzgp + vaydgp*dbvydzgp + vazdgp*dbvzdzgp
00063
00064 Lie_bAxd_grid(irg,itg,ipg) = lie_bAx
00065 Lie_bAyd_grid(irg,itg,ipg) = lie_bAy
00066 Lie_bAzd_grid(irg,itg,ipg) = lie_bAz
00067 fxd_grid(irg,itg,ipg) = ainvh*(lie_bAx - dalvadxgp)
00068 fyd_grid(irg,itg,ipg) = ainvh*(lie_bAy - dalvadygp)
00069 fzd_grid(irg,itg,ipg) = ainvh*(lie_bAz - dalvadzgp)
00070 fijd_grid(irg,itg,ipg,1) = dvaydxgp - dvaxdygp
00071 fijd_grid(irg,itg,ipg,2) = dvazdxgp - dvaxdzgp
00072 fijd_grid(irg,itg,ipg,3) = dvazdygp - dvaydzgp
00073
00074 end do
00075 end do
00076 end do
00077
00078
00079 do ipg = 1, npg
00080 do itg = 1, ntg
00081 do irg = 1, nrg
00082 call grgrad_midpoint_type0(bvxu,dbvxdxgc,dbvxdygc,dbvxdzgc,irg,itg,ipg)
00083 call grgrad_midpoint_type0(bvyu,dbvydxgc,dbvydygc,dbvydzgc,irg,itg,ipg)
00084 call grgrad_midpoint_type0(bvzu,dbvzdxgc,dbvzdygc,dbvzdzgc,irg,itg,ipg)
00085 call grgrad_midpoint_type0(fxd_grid,dfxdx,dfxdy,dfxdz,irg,itg,ipg)
00086 call grgrad_midpoint_type0(fyd_grid,dfydx,dfydy,dfydz,irg,itg,ipg)
00087 call grgrad_midpoint_type0(fzd_grid,dfzdx,dfzdy,dfzdz,irg,itg,ipg)
00088 call interpo_linear_type0(bvxugc,bvxu,irg,itg,ipg)
00089 call interpo_linear_type0(bvyugc,bvyu,irg,itg,ipg)
00090 call interpo_linear_type0(bvzugc,bvzu,irg,itg,ipg)
00091 fxdgc = fxd(irg,itg,ipg)
00092 fydgc = fyd(irg,itg,ipg)
00093 fzdgc = fzd(irg,itg,ipg)
00094 lie_bFx = bvxugc*dfxdx + bvyugc*dfxdy + bvzugc*dfxdz &
00095 & + fxdgc*dbvxdxgc + fydgc*dbvydxgc + fzdgc*dbvzdxgc
00096 lie_bFy = bvxugc*dfydx + bvyugc*dfydy + bvzugc*dfydz &
00097 & + fxdgc*dbvxdygc + fydgc*dbvydygc + fzdgc*dbvzdygc
00098 lie_bFz = bvxugc*dfzdx + bvyugc*dfzdy + bvzugc*dfzdz &
00099 & + fxdgc*dbvxdzgc + fydgc*dbvydzgc + fzdgc*dbvzdzgc
00100
00101 Lie_bFxd(irg,itg,ipg) = lie_bFx
00102 Lie_bFyd(irg,itg,ipg) = lie_bFy
00103 Lie_bFzd(irg,itg,ipg) = lie_bFz
00104
00105 end do
00106 end do
00107 end do
00108
00109 end subroutine faraday_gridpoint