00001 subroutine excurve_traceK_WL
00002 use grid_parameter, only : nrg, ntg, npg
00003 use coordinate_grav_r, only : rg, hrg
00004 use def_metric, only : psi, alph, bvxu, bvyu, bvzu, trk
00005 use def_metric_excurve_grid, only : trk_grid
00006 use def_shift_derivatives, only : cdivbv
00007 use def_shift_derivatives_grid, only : cdivbv_grid
00008 use interface_grgrad_midpoint_type0
00009 use interface_grgrad_gridpoint_type0
00010 use interface_interpo_linear_type0
00011 implicit none
00012 real(8) :: psigc, alphgc, bvxgc, bvygc, bvzgc, alphinv, alpsinv,
00013 divbv, dxpsi, dypsi, dzpsi, bvudpsi
00014 integer :: ipg, irg, itg
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 do ipg = 1, npg
00028 do itg = 1, ntg
00029 do irg = 1, nrg
00030
00031 call interpo_linear_type0(psigc,psi,irg,itg,ipg)
00032 call interpo_linear_type0(alphgc,alph,irg,itg,ipg)
00033 call interpo_linear_type0(bvxgc,bvxu,irg,itg,ipg)
00034 call interpo_linear_type0(bvygc,bvyu,irg,itg,ipg)
00035 call interpo_linear_type0(bvzgc,bvzu,irg,itg,ipg)
00036 call grgrad_midpoint_type0(psi,dxpsi,dypsi,dzpsi,irg,itg,ipg)
00037 alphinv = 1.0d0/alphgc
00038 alpsinv = 1.0d0/(alphgc*psigc)
00039 divbv = cdivbv(irg,itg,ipg)
00040 bvudpsi = bvxgc*dxpsi + bvygc*dypsi + bvzgc*dzpsi
00041
00042 trk(irg,itg,ipg) = alphinv*divbv + 6.0d0*alpsinv*bvudpsi
00043
00044 end do
00045 end do
00046 end do
00047
00048
00049
00050 do ipg = 0, npg
00051 do itg = 0, ntg
00052 do irg = 0, nrg
00053
00054 psigc = psi(irg,itg,ipg)
00055 alphgc = alph(irg,itg,ipg)
00056 bvxgc = bvxu(irg,itg,ipg)
00057 bvygc = bvyu(irg,itg,ipg)
00058 bvzgc = bvzu(irg,itg,ipg)
00059 call grgrad_gridpoint_type0(psi,dxpsi,dypsi,dzpsi,irg,itg,ipg)
00060 alphinv = 1.0d0/alphgc
00061 alpsinv = 1.0d0/(alphgc*psigc)
00062 divbv = cdivbv_grid(irg,itg,ipg)
00063 bvudpsi = bvxgc*dxpsi + bvygc*dypsi + bvzgc*dzpsi
00064
00065 trk_grid(irg,itg,ipg) = alphinv*divbv + 6.0d0*alpsinv*bvudpsi
00066
00067 end do
00068 end do
00069 end do
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081 end subroutine excurve_traceK_WL