00001 subroutine sourceterm_trG_CF(sou)
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrg, ntg, npg
00004 use def_metric, only : psi, alph, bvxu, bvyu, bvzu, &
00005 & tfkijkij, trk
00006
00007 use def_metric_excurve_grid, only : trk_grid
00008 use interface_interpo_linear_type0
00009 use interface_grgrad_midpoint_type0
00010 implicit none
00011 real(long), pointer :: sou(:,:,:)
00012 real(long) :: psigc, alpgc, bxugc, byugc, bzugc, aijaij
00013 real(long) :: oxugc, oyugc, ozugc
00014 real(long) :: traceK, dKdx, dKdy, dKdz, LiebeK, LieomeK, fac512
00015 integer :: irg, itg, ipg
00016
00017
00018
00019
00020 fac512 = 5.0d0/12.0d0
00021 do ipg = 1, npg
00022 do itg = 1, ntg
00023 do irg = 1, nrg
00024 call interpo_linear_type0(psigc,psi,irg,itg,ipg)
00025 call interpo_linear_type0(alpgc,alph,irg,itg,ipg)
00026 call interpo_linear_type0(bxugc,bvxu,irg,itg,ipg)
00027 call interpo_linear_type0(byugc,bvyu,irg,itg,ipg)
00028 call interpo_linear_type0(bzugc,bvzu,irg,itg,ipg)
00029
00030
00031
00032 call grgrad_midpoint_type0(trk_grid,dKdx,dKdy,dKdz,irg,itg,ipg)
00033 aijaij = tfkijkij(irg,itg,ipg)
00034 traceK = trk(irg,itg,ipg)
00035
00036 LiebeK = bxugc*dKdx + byugc*dKdy + bzugc*dKdz
00037
00038
00039 sou(irg,itg,ipg) = alpgc*psigc**5*(0.875d0*aijaij + fac512*traceK**2) &
00040 & + psigc**5*LiebeK
00041
00042 end do
00043 end do
00044 end do
00045
00046 end subroutine sourceterm_trG_CF