6 SUBROUTINE latlontoxy1d(PLAT0,PLON0,PRPK,PBETA,PLATOR,PLONOR, &
7 pxhatm,pyhatm,plat,plon,kn,pradius)
88 USE yomhook
,ONLY : lhook, dr_hook
89 USE parkind1
,ONLY : jprb
95 INTEGER,
INTENT(IN) :: kn
96 REAL,
INTENT(IN) :: plat0
97 REAL,
INTENT(IN) :: plon0
98 REAL,
INTENT(IN) :: prpk
99 REAL,
INTENT(IN) :: pbeta
100 REAL,
INTENT(IN) :: plator
101 REAL,
INTENT(IN) :: plonor
102 REAL,
DIMENSION(KN),
INTENT(IN) :: plat,plon
103 REAL,
DIMENSION(KN),
INTENT(OUT):: pxhatm,pyhatm
104 REAL,
OPTIONAL,
INTENT(IN) :: pradius
108 REAL,
DIMENSION(KN) :: zlat,zlon
109 REAL :: zrpk,zlat0,zlon0,zlator,zlonor
110 REAL :: zrdsdg,zclat0,zslat0,zclator,zslator
111 REAL :: zro0,zga0,zbeta,zcgam,zsgam
112 REAL :: zxp,zyp,zraclat0,zxe,zye
115 REAL,
DIMENSION(KN) :: zclat,zslat,zro,zga,zxpr,zypr
116 REAL(KIND=JPRB) :: zhook_handle
124 IF (lhook) CALL dr_hook(
'LATLONTOXY1D',0,zhook_handle)
133 zlon(:)=zlon(:)+nint((plon0-zlon(:))/360.)*360.
136 zlonor=zlonor+nint((plon0-zlonor)/360.)*360.
139 IF (present(pradius)) zradius = pradius
171 zclat0 = cos(zrdsdg*zlat0)
172 zslat0 = sin(zrdsdg*zlat0)
173 zclator = cos(zrdsdg*zlator)
174 zslator = sin(zrdsdg*zlator)
175 zro0 = (zradius/zrpk)*(abs(zclat0))**(1.-zrpk) &
176 * ((1.+zslat0)*abs(zclator)/(1.+zslator))**zrpk
177 zga0 = (zrpk*(zlonor-zlon0)-zbeta)*zrdsdg
178 zxp = -zro0*sin(zga0)
183 zclat(:) = cos(zrdsdg*zlat(:))
184 zslat(:) = sin(zrdsdg*zlat(:))
185 zro(:) = (zradius/zrpk)*(abs(zclat0))**(1.-zrpk) &
186 * ((1.+zslat0)*abs(zclat(:))/(1.+zslat(:)))**zrpk
187 zga(:) = (zrpk*(zlon(:)-zlon0)-zbeta)*zrdsdg
189 pxhatm(:) = zxp+zro(:)*sin(zga(:))
190 pyhatm(:) = zyp-zro(:)*cos(zga(:))
206 zcgam = cos(-zrdsdg*pbeta)
207 zsgam = sin(-zrdsdg*pbeta)
208 zraclat0 = zradius*cos(zrdsdg*plat0)
209 zxe = - zraclat0*(plonor-plon0)*zrdsdg
210 zye = - zraclat0*log(tan(xpi/4.+plator*zrdsdg/2.))
214 zxpr(:) = zraclat0*(zlon(:)-plon0)*zrdsdg+zxe
215 zypr(:) = zraclat0*log(tan(xpi/4.+plat(:)*zrdsdg/2.))+zye
217 pxhatm = zxpr(:)*zcgam-zypr(:)*zsgam
218 pyhatm = zxpr(:)*zsgam+zypr(:)*zcgam
226 IF (lhook) CALL dr_hook(
'LATLONTOXY1D',1,zhook_handle)
subroutine latlontoxy1d(PLAT0, PLON0, PRPK, PBETA, PLATOR, PLONOR, PXHATM, PYHATM, PLAT, PLON, KN, PRADIUS)