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