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