1 SUBROUTINE eggmlt (PRPI, KDLUX, KDLUN, KDGUX, KDGUN, KULOUT,&
2 & KPRINT, PRPK, PLON0U, PLON1U, PLON2U, KSOTRP, PLAT1R, PLAT2R,&
57 REAL(KIND=JPRB) ,
INTENT(IN) :: PRPI
58 INTEGER(KIND=JPIM),
INTENT(IN) :: KDLUX
59 INTEGER(KIND=JPIM),
INTENT(IN) :: KDLUN
60 INTEGER(KIND=JPIM),
INTENT(IN) :: KDGUX
61 INTEGER(KIND=JPIM),
INTENT(IN) :: KDGUN
62 INTEGER(KIND=JPIM),
INTENT(IN) :: KULOUT
63 INTEGER(KIND=JPIM),
INTENT(IN) :: KPRINT
64 REAL(KIND=JPRB) ,
INTENT(IN) :: PRPK
65 REAL(KIND=JPRB) ,
INTENT(IN) :: PLON0U
66 REAL(KIND=JPRB) ,
INTENT(IN) :: PLON1U
67 REAL(KIND=JPRB) ,
INTENT(IN) :: PLON2U
68 INTEGER(KIND=JPIM),
INTENT(IN) :: KSOTRP
69 REAL(KIND=JPRB) ,
INTENT(INOUT) :: PLAT1R
70 REAL(KIND=JPRB) ,
INTENT(INOUT) :: PLAT2R
71 REAL(KIND=JPRB) ,
INTENT(IN) :: PHSUD
72 REAL(KIND=JPRB) ,
INTENT(IN) :: PBETA
76 REAL(KIND=JPRB) :: ZCS, ZCS1, ZCS2, ZDCLA1, ZDCLA2, ZPIS2, ZPIS4,&
77 & ZRAPP, ZTG1, ZTG2, ZTGK1, ZTGK2
78 REAL(KIND=JPRB) :: ZHOOK_HANDLE
84 IF ( kprint == 1 )
THEN 86 WRITE (kulout,*)
' --- EGGMLT --- ' 90 zpis4 = prpi*0.25_jprb
92 IF ( ksotrp >= 1.AND. prpk /= 0.0_jprb )
THEN 95 zrapp = phsud*(
REAL( kdlux-kdlun ,
jprb)/
REAL( kdgux-kdgun ,
jprb))
96 zcs1 = cos( prpk*(plon1u-plon0u)-pbeta )*zrapp +&
97 & sin( prpk*(plon1u-plon0u)-pbeta )
98 IF ( kprint == 1 )
THEN 99 WRITE (kulout,*)
' ZRAPP = ',zrapp
100 WRITE (kulout,*)
' PLON1U = ',plon1u,
' 0U = ',plon0u
101 WRITE (kulout,*)
' PLON1U-PLON0U ',plon1u-plon0u
103 zcs2 = cos( prpk*(plon2u-plon0u)-pbeta )*zrapp +&
104 & sin( prpk*(plon2u-plon0u)-pbeta )
105 IF ( ksotrp == 1 )
THEN 106 zdcla1 = zpis4 - 0.5_jprb*plat1r
107 ztgk1 = tan( zdcla1 )**prpk
108 ztg2 = ( ztgk1*zcs1/zcs2 )**(1.0_jprb/prpk)
109 plat2r = zpis2 - 2.0_jprb*atan( ztg2 )
110 IF ( kprint == 1 )
THEN 112 WRITE (kulout,*)
' NE LATITUDE PLAT2 MODIFIED ' 113 WRITE (kulout,*)
' ZTGK1 = ',ztgk1
114 WRITE (kulout,*)
' ZCS1 = ',zcs1
115 WRITE (kulout,*)
' ZCS2 = ',zcs2
116 WRITE (kulout,*)
' ROTATED LATITUDE LAT2 R = ',plat2r
119 IF ( ksotrp == 2 )
THEN 120 zdcla2 = zpis4 - 0.5_jprb*plat2r
121 ztgk2 = tan( zdcla2 )**prpk
122 ztg1 = ( ztgk2*zcs2/zcs1 )**(1.0_jprb/prpk)
123 plat1r = zpis2 - 2.0_jprb*atan( ztg1 )
124 IF ( kprint == 1 )
THEN 126 WRITE (kulout,*)
' NE LATITUDE PLAT1 MODIFIED ' 127 WRITE (kulout,*)
' ROTATED LATITUDE LAT1 R = ',plat1r
130 ELSEIF ( ksotrp >= 1.AND. prpk == 0.0_jprb )
THEN 133 zrapp =
REAL( kdgux-kdgun ,
jprb)/
REAL( kdlux-kdlun ,
jprb)
134 zcs = ( plon2u - plon1u )*(zrapp*cos(pbeta)+sin(pbeta))&
135 & /(cos(pbeta)-zrapp*sin(pbeta))
136 IF ( ksotrp == 1 )
THEN 137 zdcla1 = zpis4 - 0.5_jprb*plat1r
138 ztgk1 = log( tan( zdcla1 ) )
139 ztg2 = exp( ztgk1 - zcs )
140 plat2r = zpis2 - 2.0_jprb*atan( ztg2 )
141 IF ( kprint == 1 )
THEN 143 WRITE (kulout,*)
' NE LATITUDE PLAT2 MODIFIED ' 144 WRITE (kulout,*)
' ROTATED LATITUDE LAT2 R = ',plat2r
147 IF ( ksotrp == 2 )
THEN 148 zdcla2 = zpis4 - 0.5_jprb*plat2r
149 ztgk2 = log( tan( zdcla2 ) )
150 ztg1 = exp( ztgk2 + zcs )
151 plat1r = zpis2 - 2.0_jprb*atan( ztg1 )
152 IF ( kprint == 1 )
THEN 154 WRITE (kulout,*)
' NE LATITUDE PLAT1 MODIFIED ' 155 WRITE (kulout,*)
' ROTATED LATITUDE LAT1 R = ',plat1r
158 ELSEIF (ksotrp == 0 )
THEN 159 WRITE (kulout,*)
' EGGMLT USELESSLY CALLED ' 162 IF ( kprint == 1 )
THEN 163 WRITE (kulout,*)
' EGGMLT OVER '
subroutine eggmlt(PRPI, KDLUX, KDLUN, KDGUX, KDGUN, KULOUT, KPRINT, PRPK, PLON0U, PLON1U, PLON2U, KSOTRP, PLAT1R, PLAT2R, PHSUD, PBETA)