68 INTEGER,
INTENT(IN) :: KN
69 REAL,
INTENT(IN) :: PLAP
70 REAL,
INTENT(IN) :: PLOP
71 REAL,
INTENT(IN) :: PCOEF
72 REAL,
DIMENSION(KN),
INTENT(IN) :: PLAR
73 REAL,
DIMENSION(KN),
INTENT(IN) :: PLOR
74 REAL,
DIMENSION(KN),
INTENT(OUT) :: PLAC
75 REAL,
DIMENSION(KN),
INTENT(OUT) :: PLOC
92 REAL(KIND=JPRB) :: ZHOOK_HANDLE
94 IF (
lhook)
CALL dr_hook(
'ARPEGE_STRETCH_A',0,zhook_handle)
95 zsinstretchla = sin(plap*
xpi/180.)
96 zcosstretchla = cos(plap*
xpi/180.)
97 zsinstretchlo = sin(plop*
xpi/180.)
98 zcosstretchlo = cos(plop*
xpi/180.)
102 plac(:) = plar(:) *
xpi / 180.
103 ploc(:) = plor(:) *
xpi / 180.
105 za = 1. + pcoef*pcoef
107 zb = 1. - pcoef*pcoef
109 zsinla = sin(plac(jloop1))
110 zcosla = cos(plac(jloop1))
111 zsinlo = sin(ploc(jloop1))
112 zcoslo = cos(ploc(jloop1))
114 zx = zcoslo*zcosstretchlo + zsinlo*zsinstretchlo
116 zy = zsinstretchlo*zcoslo - zsinlo*zcosstretchlo
118 zd = za + zb*(zsinstretchla*zsinla+zcosstretchla*zcosla*zx)
122 zsinlas = (zb + za*(zsinstretchla*zsinla+zcosstretchla*zcosla*zx)) / zd
124 zd = zd * (amax1(1e-6,sqrt(1.-zsinlas*zsinlas)))
128 zcoslos = 2.*pcoef*(zcosstretchla*zsinla-zsinstretchla*zcosla*zx) / zd
132 zsinlos = 2.*pcoef*(zcosla*zy) / zd
134 zsinlas = max(zsinlas,-1.)
135 zsinlas = min(zsinlas, 1.)
136 zcoslos = max(zcoslos,-1.)
137 zcoslos = min(zcoslos, 1.)
139 plac(jloop1) = asin(zsinlas)
141 ploc(jloop1) = acos(zcoslos)
143 ploc(jloop1) = -acos(zcoslos)
146 ploc(:) = ploc(:) * 180. /
xpi 147 plac(:) = plac(:) * 180. /
xpi 148 IF (
lhook)
CALL dr_hook(
'ARPEGE_STRETCH_A',1,zhook_handle)
subroutine arpege_stretch_a(KN, PLAP, PLOP, PCOEF, PLAR, PLOR, PLAC, PLOC)