calc_redblue_shift_WL.f90

Go to the documentation of this file.
00001 subroutine calc_redblue_shift_WL
00002   use phys_constant, only  : long, pi
00003   use coordinate_grav_r, only : rg
00004   use grid_parameter, only : nrf, ntf, npf, &
00005   &                          ntfpolp, ntfeq, ntfxy, npfxzp, npfyzp
00006   use trigonometry_grav_theta, only : sinthg, costhg
00007   use trigonometry_grav_phi, only : sinphig, cosphig
00008   use def_metric, only : psi, alph, bvxd, bvyd, bvzd, bvxu, bvyu, bvzu
00009   use def_metric_hij, only : hxxd, hxyd, hxzd, hyyd, hyzd, hzzd
00010   use def_matter, only : rs
00011   use def_matter_parameter, only : ome, ber, radi
00012   use def_quantities, only : zrb_xp_plus, zrb_xp_minus, &
00013   &                          zrb_yp_plus, zrb_yp_minus, &
00014   &                          zrb_zp_plus, zrb_zp_minus
00015   use interface_interpo_radial1p_grav
00016   implicit none
00017   integer    :: ir, it, ip, ii
00018   real(long) :: rv, xx, yy, zz
00019   real(long) :: vphixd, vphiyd, vphizd, vphixu, vphiyu, vphizu
00020   real(long) :: psiw, alphw
00021   real(long) :: bvxdw, bvydw, bvzdw, bvxuw, bvyuw, bvzuw
00022   real(long) :: hxxdw, hxydw, hxzdw, hyydw, hyzdw, hzzdw
00023   real(long) :: gtt, gtp, gpp, hhgc, utgc, bplus, bminus
00024   real(long) :: kdott_plus, kdotu_plus, kdott_minus, kdotu_minus
00025 !
00026 ! Semi-major axis along x
00027 ! Semi-minor axis along y
00028 !
00029   do ii = 1, 2
00030     if (ii.eq.1) then; it = ntfeq; ip = npfxzp; end if
00031     if (ii.eq.2) then; it = ntfeq; ip = npfyzp; end if
00032 !
00033     rv = rg(nrf)*rs(it,ip)
00034     xx = rv*sinthg(it)*cosphig(ip)
00035     yy = rv*sinthg(it)*sinphig(ip)
00036     zz = rv*costhg(it)
00037     vphixu = - yy
00038     vphiyu =   xx
00039     vphizu =   0.0d0
00040     hhgc  = 1.0d0
00041     utgc  = hhgc/ber
00042     call interpo_radial1p_grav(psi,psiw,rv,it,ip) 
00043     call interpo_radial1p_grav(alph,alphw,rv,it,ip) 
00044 !
00045     call interpo_radial1p_grav(bvxd,bvxdw,rv,it,ip) 
00046     call interpo_radial1p_grav(bvyd,bvydw,rv,it,ip) 
00047     call interpo_radial1p_grav(bvzd,bvzdw,rv,it,ip) 
00048     call interpo_radial1p_grav(bvxu,bvxuw,rv,it,ip) 
00049     call interpo_radial1p_grav(bvyu,bvyuw,rv,it,ip) 
00050     call interpo_radial1p_grav(bvzu,bvzuw,rv,it,ip) 
00051 !
00052     call interpo_radial1p_grav(hxxd,hxxdw,rv,it,ip) 
00053     call interpo_radial1p_grav(hxyd,hxydw,rv,it,ip) 
00054     call interpo_radial1p_grav(hxzd,hxzdw,rv,it,ip) 
00055     call interpo_radial1p_grav(hyyd,hyydw,rv,it,ip) 
00056     call interpo_radial1p_grav(hyzd,hyzdw,rv,it,ip) 
00057     call interpo_radial1p_grav(hzzd,hzzdw,rv,it,ip) 
00058 !
00059     vphixd = (1.0d0+hxxdw)*vphixu + hxydw*vphiyu + hxzdw*vphizu
00060     vphiyd = hxydw*vphixu + (1.0d0+hyydw)*vphiyu + hyzdw*vphizu
00061     vphizd = hxzdw*vphixu + hyzdw*vphiyu + (1.0d0+hzzdw)*vphizu
00062 !
00063     gtt = - alphw**2 + psiw**4*(bvxdw*bvxuw + bvydw*bvyuw + bvzdw*bvzuw)
00064     gtp =   psiw**4*(bvxdw*vphixu + bvydw*vphiyu + bvzdw*vphizu)
00065     gpp =   psiw**4*(vphixd*vphixu + vphiyd*vphiyu + vphizd*vphizu)
00066     bplus = (- gtp + sqrt(gtp**2 - gtt*gpp))/gpp
00067     bminus = (- gtp - sqrt(gtp**2 - gtt*gpp))/gpp
00068 !
00069     kdott_plus = gtt + bplus*gtp
00070     kdotu_plus = utgc*(gtt + (bplus + ome)*gtp + bplus*ome*gpp)
00071     kdott_minus = gtt + bminus*gtp
00072     kdotu_minus = utgc*(gtt + (bminus + ome)*gtp + bminus*ome*gpp)
00073 
00074     if (ii.eq.1) then
00075       zrb_xp_plus = kdotu_plus/kdott_plus - 1.0d0
00076       zrb_xp_minus = kdotu_minus/kdott_minus - 1.0d0
00077     end if
00078     if (ii.eq.2) then
00079       zrb_yp_plus = kdotu_plus/kdott_plus - 1.0d0
00080       zrb_yp_minus = kdotu_minus/kdott_minus - 1.0d0
00081     end if
00082 !
00083   end do
00084 !
00085   hhgc  = 1.0d0
00086   utgc  = hhgc/ber
00087   zrb_zp_plus = utgc - 1.0d0
00088   zrb_zp_minus = utgc - 1.0d0
00089 !
00090 end subroutine calc_redblue_shift_WL

Generated on 27 Oct 2011 for Cocal by  doxygen 1.6.1