00001 subroutine rotation_law_WL
00002 use phys_constant, only : long
00003 use grid_parameter
00004 use def_matter, only : rs, omef, jomef, jomef_int, &
00005 & utf, omeg, jomeg, jomeg_int
00006 use def_matter_parameter, only : ROT_LAW, ome
00007 use def_metric, only : alph, psi, bvyd
00008 use def_metric_hij, only : hyyd
00009 use def_metric_on_SFC_CF, only : alphf, psif, bvydf
00010 use def_metric_on_SFC_WL, only : hyydf
00011 use def_vector_x, only : vec_xf, vec_xg
00012 use make_array_3d
00013 use interface_interpo_gr2fl
00014 implicit none
00015 real(long) :: alp_tmp, psi_tmp, by_tmp, hyy_tmp
00016 real(long) :: omefc, jomefc, jomef_intfc, omegc, jomegc, jomeg_intgc
00017 real(long) :: xx, yy, zz, Rcyl
00018 integer :: irf, itf, ipf
00019
00020 if (ROT_LAW.eq.'DR'.and.nrf.ne.nrf_deform) then
00021 do itf = 0, ntf
00022 do irf = 0, nrf
00023 ipf = 0
00024 xx = vec_xf(irf,itf,ipf,1)
00025 yy = vec_xf(irf,itf,ipf,2)
00026 zz = vec_xf(irf,itf,ipf,3)
00027 Rcyl = sqrt(xx**2 + yy**2)
00028 omefc = omef(irf,itf,ipf)
00029
00030 alp_tmp = alphf(irf,itf,ipf)
00031 psi_tmp = psif(irf,itf,ipf)
00032 by_tmp = bvydf(irf,itf,ipf)
00033 hyy_tmp = hyydf(irf,itf,ipf)
00034
00035 call calc_omega_drot(Rcyl,alp_tmp,psi_tmp,by_tmp,hyy_tmp, &
00036 & omefc,jomefc,jomef_intfc)
00037 omef(irf,itf,0:npf) = omefc
00038 jomef(irf,itf,0:npf) = jomefc
00039 jomef_int(irf,itf,0:npf) = jomef_intfc
00040
00041 xx = vec_xg(irf,itf,ipf,1)
00042 yy = vec_xg(irf,itf,ipf,2)
00043 zz = vec_xg(irf,itf,ipf,3)
00044 Rcyl = sqrt(xx**2 + yy**2)
00045 omegc = omeg(irf,itf,ipf)
00046 alp_tmp = alph(irf,itf,ipf)
00047 psi_tmp = psi(irf,itf,ipf)
00048 by_tmp = bvyd(irf,itf,ipf)
00049 hyy_tmp = hyyd(irf,itf,ipf)
00050 call calc_omega_drot(Rcyl,alp_tmp,psi_tmp,by_tmp,hyy_tmp, &
00051 & omegc,jomegc,jomeg_intgc)
00052 omeg(irf,itf,0:npf) = omegc
00053 jomeg(irf,itf,0:npf) = jomegc
00054 jomeg_int(irf,itf,0:npf) = jomeg_intgc
00055 end do
00056 end do
00057 else
00058 omef(0:nrf,0:ntf,0:npf) = ome
00059 jomef(0:nrf,0:ntf,0:npf) = 0.0d0
00060 jomef_int(0:nrf,0:ntf,0:npf) = 0.0d0
00061 omeg(0:nrf,0:ntf,0:npf) = ome
00062 jomeg(0:nrf,0:ntf,0:npf) = 0.0d0
00063 jomeg_int(0:nrf,0:ntf,0:npf) = 0.0d0
00064 end if
00065
00066 end subroutine rotation_law_WL