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.or. &
00021 & ROT_LAW.eq.'OJ'.and.nrf.ne.nrf_deform) then
00022 do itf = 0, ntf
00023 do irf = 0, nrf
00024 ipf = 0
00025 xx = vec_xf(irf,itf,ipf,1)
00026 yy = vec_xf(irf,itf,ipf,2)
00027 zz = vec_xf(irf,itf,ipf,3)
00028 Rcyl = sqrt(xx**2 + yy**2)
00029 omefc = omef(irf,itf,ipf)
00030
00031 alp_tmp = alphf(irf,itf,ipf)
00032 psi_tmp = psif(irf,itf,ipf)
00033 by_tmp = bvydf(irf,itf,ipf)
00034 hyy_tmp = hyydf(irf,itf,ipf)
00035
00036 call calc_omega_drot(Rcyl,alp_tmp,psi_tmp,by_tmp,hyy_tmp, &
00037 & omefc,jomefc,jomef_intfc)
00038 omef(irf,itf,0:npf) = omefc
00039 jomef(irf,itf,0:npf) = jomefc
00040 jomef_int(irf,itf,0:npf) = jomef_intfc
00041
00042 xx = vec_xg(irf,itf,ipf,1)
00043 yy = vec_xg(irf,itf,ipf,2)
00044 zz = vec_xg(irf,itf,ipf,3)
00045 Rcyl = sqrt(xx**2 + yy**2)
00046 omegc = omeg(irf,itf,ipf)
00047 alp_tmp = alph(irf,itf,ipf)
00048 psi_tmp = psi(irf,itf,ipf)
00049 by_tmp = bvyd(irf,itf,ipf)
00050 hyy_tmp = hyyd(irf,itf,ipf)
00051 call calc_omega_drot(Rcyl,alp_tmp,psi_tmp,by_tmp,hyy_tmp, &
00052 & omegc,jomegc,jomeg_intgc)
00053 omeg(irf,itf,0:npf) = omegc
00054 jomeg(irf,itf,0:npf) = jomegc
00055 jomeg_int(irf,itf,0:npf) = jomeg_intgc
00056 end do
00057 end do
00058 else
00059 omef(0:nrf,0:ntf,0:npf) = ome
00060 jomef(0:nrf,0:ntf,0:npf) = 0.0d0
00061 jomef_int(0:nrf,0:ntf,0:npf) = 0.0d0
00062 omeg(0:nrf,0:ntf,0:npf) = ome
00063 jomeg(0:nrf,0:ntf,0:npf) = 0.0d0
00064 jomeg_int(0:nrf,0:ntf,0:npf) = 0.0d0
00065 end if
00066
00067 end subroutine rotation_law_WL