!-------------------------------------- LICENCE BEGIN ------------------------------------ !Environment Canada - Atmospheric Science and Technology License/Disclaimer, ! version 3; Last Modified: May 7, 2008. !This is free but copyrighted software; you can use/redistribute/modify it under the terms !of the Environment Canada - Atmospheric Science and Technology License/Disclaimer !version 3 or (at your option) any later version that should be found at: !http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html ! !This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; !without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. !See the above mentioned License/Disclaimer for more details. !You should have received a copy of the License/Disclaimer along with this software; !if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec), !CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca !-------------------------------------- LICENCE END -------------------------------------- ! ! !**s/r carall - Returns (lat,lon) (degrees) of an input Cartesian position vector on the unit sphere. !subroutine carall(plon,plat,pcart,kni,knj) 1 ! IMPLICIT NONE integer kni,knj real plat,plon real*8 pcart(3) ! !author: Luc Fillion 21 Feb. 2005 ! !revision ! !arguments ! #include "taglam4d.cdk"
#include "comcst.cdk"
! integer ji,jj ! !! plat=asin(pcart(3)) plat=plat*rrad2deg ! if(pcart(1).eq.0.) then if(pcart(2).eq.0.) then ! point is located at the pole plon=0.0 ! can be any longitude... set it to zero simply. else if(pcart(2).gt.0.0) then plon=90.0 else if(pcart(2).lt.0.0) then plon=270.0 endif else plon=atan2(pcart(2),pcart(1)) if(plon.lt.0.0) plon=plon+2.*rpi plon=plon*rrad2deg endif ! return end