1 |
jscott |
1.1 |
|
2 |
|
|
#include "ctrparam.h" |
3 |
|
|
|
4 |
|
|
SUBROUTINE RADIA0 (IM,JM,CO2,READGHG) 4501. |
5 |
|
|
C**** 4502. |
6 |
|
|
C**** THIS SUBROUTINE SETS THE RADIATION CONTROL PARAMETERS AND 4503. |
7 |
|
|
C**** CALCULATES AREA WEIGHTED LATITUDES FOR A STANDARD GRID ETC 4504. |
8 |
|
|
C**** 4505. |
9 |
|
|
|
10 |
|
|
#include "chem_para" |
11 |
|
|
#include "chem_com" |
12 |
|
|
|
13 |
|
|
REAL LT1,LT2 4506. |
14 |
|
|
DIMENSION COSZ(IM,JM),COSZA(IM,JM) 4507. |
15 |
|
|
DIMENSION SINJ(46),COSJ(46),RI(72),SINI(72),COSI(72) 4508. |
16 |
|
|
COMMON/WORK5/LT1(72),LT2(72),SLT1(72),SLT2(72),S2LT1(72),S2LT2(72)4509. |
17 |
|
|
* ,DEGLAT(46),DEGLON(72) 4510. |
18 |
|
|
COMMON/SCJL/SINJ,COSJ |
19 |
|
|
COMMON/CO2TRND/ALFFOR,CO2TR,YEARGT,CO2IN,INYRAD |
20 |
|
|
C 4511. |
21 |
|
|
C RADCOM: CONTROL/INPUT PARAMETERS 4512. |
22 |
|
|
C 4513. |
23 |
|
|
COMMON/RADCOM/VADATA(11,4,3),DGLAT(46),DGLON(72),TMINSR,FULGAS(18)4514. |
24 |
|
|
A ,FRACSL,RATQSL,FOGTSL,PTLISO,TLGRAD,TKCICE,FGOLDU(18)4514.5 |
25 |
|
|
B ,FLONO3,FRAYLE,FCLDTR,FCLDSR,FALGAE,FMARCL,FEMTRA(6) 4515. |
26 |
|
|
C ,WETTRA,WETSRA,DMOICE,DMLICE,LICETK,NTRCE,FZASRA(6) 4515.5 |
27 |
|
|
D ,ID5(5),ITR(4),IMG(2),ILG(2),LAPGAS,KWVCON,NORMS0,NV 4516. |
28 |
|
|
E ,KEEPRH,KEEPAL,ISOSCT,IHGSCT,KFRACC,KGASSR,KAERSR 4516.5 |
29 |
|
|
F ,MARCLD,LAYTOP,LMR,LMRP,JMLAT,IMLON,KFORCE,LASTVC 4517. |
30 |
|
|
C 4517.5 |
31 |
|
|
C BASIC RADCOM INPUT DATA 4518. |
32 |
|
|
C 4518.5 |
33 |
|
|
G ,PLE(40),HLB(40),TLB(40),TLT(40),TL(40),U0GAS(40,9) 4519. |
34 |
|
|
H ,ULGAS(40,9),TRACER(40,4),RTAU(40),QL(40),RHL(40) 4519.5 |
35 |
|
|
I ,POCEAN,PEARTH,POICE,PLICE,AGESN,SNOWE,SNOWOI,SNOWLI 4520. |
36 |
|
|
J ,TGO,TGE,TGOI,TGLI,TS,WS,WEARTH,ZOICE,FSPARE(200) 4520.5 |
37 |
|
|
K ,S0,COSZN,PVT(11),BXA(153),SRBXAL(15,2),FRC(5),LUXGAS4520.6 |
38 |
|
|
L ,JYEAR,JDAY,JLAT,ILON,MEANAL,KALVIS,ISPARE(25),SGPS 4520.8 |
39 |
|
|
C 5033. |
40 |
|
|
C BASIC RADCOM OUTPUT DATA 5034. |
41 |
|
|
C 5035. |
42 |
|
|
c M ,TRDFLB(40),TRUFLB(40),TRNFLB(40),TRFCRL(40),TRSLCR 5036. |
43 |
|
|
c N ,SRDFLB(40),SRUFLB(40),SRNFLB(40),SRFHRL(40),SRSLHR 5037. |
44 |
|
|
c O ,SRIVIS,SROVIS,PLAVIS,SRINIR,SRONIR,PLANIR,SRXATM(4) 5038. |
45 |
|
|
c P ,SRDVIS,SRUVIS,ALBVIS,SRDNIR,SRUNIR,ALBNIR,FSRNFG(4) 5039. |
46 |
|
|
c Q ,SRTVIS,SRRVIS,SRAVIS,SRTNIR,SRRNIR,SRANIR,FTRUFG(4) 5040. |
47 |
|
|
c R ,TRDFGW,TRUFGW,TRUFTW,BTEMPW,TRDFSL,TRUFSL,DTRUFG(4) 5041. |
48 |
|
|
c S ,TRSLTS,TRSLTG,TRSLWV,TRSLBS,TTRUFG,LBOTCL,LTOPCL 5042. |
49 |
|
|
! DATA TWOPI/6.283185/,ZERO1/1.E-5/,ZERO2/5.E-3/ 4521. |
50 |
|
|
! 03/07/06 |
51 |
|
|
DATA TWOPI/6.283185/,ZERO1/1.E-2/,ZERO2/5.E-3/ 4521. |
52 |
|
|
C**** COMPUTE THE AREA WEIGHTED LATITUDES AND THEIR SINES AND COSINES 4522. |
53 |
|
|
JMM1=JM-1 4523. |
54 |
|
|
PHIS=-.25*TWOPI 4524. |
55 |
|
|
SPHIS=-1. 4525. |
56 |
|
|
CPHIS=0. 4526. |
57 |
|
|
DO 20 J=1,JMM1 4527. |
58 |
|
|
PHIN=(TWOPI/(JMM1+JMM1))*(J-.5*JM) 4528. |
59 |
|
|
SPHIN=SIN(PHIN) 4529. |
60 |
|
|
CPHIN=COS(PHIN) 4530. |
61 |
|
|
PHIM=(PHIN*SPHIN+CPHIN-PHIS*SPHIS-CPHIS)/(SPHIN-SPHIS) 4531. |
62 |
|
|
DEGLAT(J)=(360./TWOPI)*PHIM 4532. |
63 |
|
|
SINJ(J)=SIN(PHIM) 4533. |
64 |
|
|
COSJ(J)=COS(PHIM) 4534. |
65 |
|
|
PHIS=PHIN 4535. |
66 |
|
|
SPHIS=SPHIN 4536. |
67 |
|
|
20 CPHIS=CPHIN 4537. |
68 |
|
|
PHIN=.25*TWOPI 4538. |
69 |
|
|
SPHIN=1. 4539. |
70 |
|
|
CPHIN=0. 4540. |
71 |
|
|
PHIM=(PHIN*SPHIN+CPHIN-PHIS*SPHIS-CPHIS)/(SPHIN-SPHIS) 4541. |
72 |
|
|
DEGLAT(JM)=(360./TWOPI)*PHIM 4542. |
73 |
|
|
SINJ(JM)=SIN(PHIM) 4543. |
74 |
|
|
COSJ(JM)=COS(PHIM) 4544. |
75 |
|
|
C**** COMPUTE THE SINES AND COSINES OF LONGITUDE 4545. |
76 |
|
|
DO 40 I=1,IM 4546. |
77 |
|
|
RI(I)=(TWOPI/IM)*(I-1) 4547. |
78 |
|
|
DEGLON(I)=(360./IM)*(I-1) 4548. |
79 |
|
|
SINI(I)=SIN(RI(I)) 4549. |
80 |
|
|
40 COSI(I)=COS(RI(I)) 4550. |
81 |
|
|
C**** MODIFY AND PRINT OUT THE RADIATION CONTROL PARAMETERS 4552. |
82 |
|
|
IF (CO2.GT.0.) FULGAS(2)=CO2 4553.1 |
83 |
|
|
DMOICE=10. 4553.11 |
84 |
|
|
C Convert masking depth over land and ocean ice to meters of water |
85 |
|
|
c DMOICE=0.01 |
86 |
|
|
c DMLICE=0.01 |
87 |
|
|
C Convert masking depth over land and ocean ice to meters of water |
88 |
|
|
C FOR THE 'REAL' TRANSIENT EXPERIMENT USE CO2=-FLOAT(KTREND)-AVGAER 4553.15 |
89 |
|
|
C TO USE THE DEFAULTS EXCEPT FOR CO2 SET CO2.GT.0. 4553.2 |
90 |
|
|
KTREND=-CO2 4553.25 |
91 |
|
|
print *,' KTREND=',KTREND |
92 |
|
|
|
93 |
|
|
#ifdef PREDICTED_GASES |
94 |
|
|
LAPGAS=0 |
95 |
|
|
IMG(2)=9 |
96 |
|
|
print *,' RADIA0 Chem ',1,READGHG,LAPGAS |
97 |
|
|
#endif |
98 |
|
|
|
99 |
|
|
IF (CO2.GT.0.) GO TO 50 4553.3 |
100 |
|
|
NTRCE=1 4553.35 |
101 |
|
|
ITR(1)=1 4553.4 |
102 |
|
|
IF (KTREND.EQ.0) KFORCE=26789 4553.45 |
103 |
|
|
FGOLDU(6)=1. 4553.5 |
104 |
|
|
LAPGAS=2 4553.55 |
105 |
|
|
C FULGAS(8)=0. 4553.6 |
106 |
|
|
C FULGAS(9)=0. 4553.65 |
107 |
|
|
C FGOLDU(1)=.005/.012 4553.7 |
108 |
|
|
c 50 CALL RCOMP1 (21,0,60) 4553.75 |
109 |
|
|
50 continue |
110 |
|
|
print *,' RADIA0 JYEAR=',JYEAR,' JDAY=',JDAY |
111 |
|
|
c IF (KTREND.GT.0) CALL FORSET(1958.,KTREND,1) 4553.8 |
112 |
|
|
IF (KTREND.GT.0)then |
113 |
|
|
TNOW=JYEAR+(JDAY-.5)/365. |
114 |
|
|
if(KTREND.GT.20) TNOW=1765. |
115 |
|
|
print *,' RADIA0 JYEAR=',JYEAR,' JDAY=',JDAY |
116 |
|
|
if (KTREND.EQ.5)then |
117 |
|
|
! print *,' TNOW=',TNOW |
118 |
|
|
print *,' TREF=',TNOW |
119 |
|
|
CALL FORSET(TNOW,KTREND,1) |
120 |
|
|
else |
121 |
|
|
! 04/18/2006 |
122 |
|
|
print *,' TREF=',YEARGT |
123 |
|
|
CALL FORSET(YEARGT,KTREND,1) |
124 |
|
|
endif |
125 |
|
|
endif |
126 |
|
|
c 06/20/2005 |
127 |
|
|
c CALL RCOMP1 (521,0,60) |
128 |
|
|
print *,'Before CALL RCOMP1' |
129 |
|
|
CALL RCOMP1 (521,0,60,KTREND) |
130 |
|
|
print *,'After CALL RCOMP1' |
131 |
|
|
c if(READGHG.lt.0.5) CALL WRITER (1,0) 4554. |
132 |
|
|
RETURN 4555. |
133 |
|
|
C**** 4556. |
134 |
|
|
C**** 4557. |
135 |
|
|
ENTRY COSZT (IM,JM,SIND,COSD,ROT1,ROT2,COSZ) 4558. |
136 |
|
|
C**** 4559. |
137 |
|
|
C**** THIS ENTRY COMPUTES THE ZENITH ANGLE WEIGHTED BY DAYTIME 4560. |
138 |
|
|
C**** HOURS FROM ROT1 TO ROT2, GREENWICH MEAN TIME IN RADIANS. ROT1 4561. |
139 |
|
|
C**** MUST BE BETWEEN 0 AND 2*PI. ROT2 MUST BE BETWEEN ROT1 AND 4562. |
140 |
|
|
C**** ROT1+2*PI. I=1 MUST LIE ON THE INTERNATIONAL DATE LINE. 4563. |
141 |
|
|
C**** 4564. |
142 |
|
|
DROT=ROT2-ROT1 4565. |
143 |
|
|
C**** COMPUTE THE SINES AND COSINES OF THE INITIAL AND FINAL GMT'S 4566. |
144 |
|
|
100 SR1=SIN(ROT1) 4567. |
145 |
|
|
CR1=COS(ROT1) 4568. |
146 |
|
|
SR2=SIN(ROT2) 4569. |
147 |
|
|
CR2=COS(ROT2) 4570. |
148 |
|
|
C**** COMPUTE THE INITIAL AND FINAL LOCAL TIMES (MEASURED FROM NOON TO 4571. |
149 |
|
|
C**** NOON) AND THEIR SINES AND COSINES 4572. |
150 |
|
|
DO 120 I=1,IM 4573. |
151 |
|
|
LT1(I)=ROT1+RI(I) 4574. |
152 |
|
|
SLT1(I)=SR1*COSI(I)+CR1*SINI(I) 4575. |
153 |
|
|
LT2(I)=ROT2+RI(I) 4576. |
154 |
|
|
120 SLT2(I)=SR2*COSI(I)+CR2*SINI(I) 4577. |
155 |
|
|
C**** 4578. |
156 |
|
|
C**** CALCULATION FOR POLAR GRID BOXES 4579. |
157 |
|
|
C**** 4580. |
158 |
|
|
DO 200 J=1,JM,JMM1 4581. |
159 |
|
|
SJSD=SINJ(J)*SIND 4582. |
160 |
|
|
CJCD=COSJ(J)*COSD 4583. |
161 |
|
|
IF(SJSD+CJCD.LE.ZERO1) GO TO 180 4584. |
162 |
|
|
IF(SJSD-CJCD.GE.0.) GO TO 160 4585. |
163 |
|
|
C**** AVERAGE COSZ FROM DAWN TO DUSK NEAR THE POLES 4586. |
164 |
|
|
DUSK=ACOS(-SJSD/CJCD) 4587. |
165 |
|
|
SDUSK=SQRT(CJCD*CJCD-SJSD*SJSD)/CJCD 4588. |
166 |
|
|
DAWN=-DUSK 4589. |
167 |
|
|
SDAWN=-SDUSK 4590. |
168 |
|
|
COSZ(1,J)=(SJSD*(DUSK-DAWN)+CJCD*(SDUSK-SDAWN))/TWOPI 4591. |
169 |
|
|
GO TO 200 4592. |
170 |
|
|
C**** CONSTANT DAYLIGHT NEAR THE POLES 4593. |
171 |
|
|
160 COSZ(1,J)=SJSD 4594. |
172 |
|
|
GO TO 200 4595. |
173 |
|
|
C**** CONSTANT NIGHTIME NEAR THE POLES 4596. |
174 |
|
|
180 COSZ(1,J)=0. 4597. |
175 |
|
|
200 CONTINUE 4598. |
176 |
|
|
C**** 4599. |
177 |
|
|
C**** LOOP OVER NON-POLAR LATITUDES 4600. |
178 |
|
|
C**** 4601. |
179 |
|
|
DO 500 J=2,JMM1 4602. |
180 |
|
|
SJSD=SINJ(J)*SIND 4603. |
181 |
|
|
CJCD=COSJ(J)*COSD 4604. |
182 |
|
|
IF(SJSD+CJCD.LE.ZERO1) GO TO 460 4605. |
183 |
|
|
IF(SJSD-CJCD.GE.0.) GO TO 420 4606. |
184 |
|
|
C**** COMPUTE DAWN AND DUSK (AT LOCAL TIME) AND THEIR SINES 4607. |
185 |
|
|
DUSK=ACOS(-SJSD/CJCD) 4608. |
186 |
|
|
SDUSK=SQRT(CJCD*CJCD-SJSD*SJSD)/CJCD 4609. |
187 |
|
|
DAWN=-DUSK 4610. |
188 |
|
|
SDAWN=-SDUSK 4611. |
189 |
|
|
C**** NEITHER CONSTANT DAYTIME NOR CONSTANT NIGHTIME AT THIS LATITUDE, 4612. |
190 |
|
|
C**** LOOP OVER LONGITUDES 4613. |
191 |
|
|
! 03/07/06 solar radiation |
192 |
|
|
ZERO2=ZERO1/CJCD |
193 |
|
|
DO 400 I=1,IM 4614. |
194 |
|
|
C**** FORCE DUSK TO LIE BETWEEN LT1 AND LT1+2*PI 4615. |
195 |
|
|
IF(DUSK.GT.LT1(I)+ZERO2) GO TO 220 4616. |
196 |
|
|
DUSK=DUSK+TWOPI 4617. |
197 |
|
|
DAWN=DAWN+TWOPI 4618. |
198 |
|
|
220 IF(DAWN.LT.LT2(I)-ZERO2) GO TO 240 4619. |
199 |
|
|
C**** CONTINUOUS NIGHTIME FROM INITIAL TO FINAL TIME 4620. |
200 |
|
|
COSZ(I,J)=0. 4621. |
201 |
|
|
GO TO 400 4622. |
202 |
|
|
240 IF(DAWN.GE.LT1(I)) GO TO 300 4623. |
203 |
|
|
IF(DUSK.LT.LT2(I)) GO TO 260 4624. |
204 |
|
|
C**** CONTINUOUS DAYLIGHT FROM INITIAL TIME TO FINAL TIME 4625. |
205 |
|
|
COSZ(I,J)=SJSD+CJCD*(SLT2(I)-SLT1(I))/DROT 4626. |
206 |
|
|
GO TO 400 4627. |
207 |
|
|
260 IF(DAWN+TWOPI.LT.LT2(I)-ZERO2) GO TO 280 4628. |
208 |
|
|
C**** DAYLIGHT AT INITIAL TIME AND NIGHT AT FINAL TIME 4629. |
209 |
|
|
COSZ(I,J)=(SJSD*(DUSK-LT1(I))+CJCD*(SDUSK-SLT1(I)))/DROT 4630. |
210 |
|
|
GO TO 400 4631. |
211 |
|
|
C**** DAYLIGHT AT INITIAL AND FINAL TIMES WITH NIGHTIME IN BETWEEN 4632. |
212 |
|
|
280 COSZ(I,J)=(SJSD*(LT2(I)-DAWN-TWOPI+DUSK-LT1(I))+CJCD* 4633. |
213 |
|
|
* (SLT2(I)-SDAWN+SDUSK-SLT1(I)))/DROT 4634. |
214 |
|
|
GO TO 400 4635. |
215 |
|
|
300 IF(DUSK.LT.LT2(I)) GO TO 320 4636. |
216 |
|
|
C**** NIGHT AT INITIAL TIME AND DAYLIGHT AT FINAL TIME 4637. |
217 |
|
|
COSZ(I,J)=(SJSD*(LT2(I)-DAWN)+CJCD*(SLT2(I)-SDAWN))/DROT 4638. |
218 |
|
|
GO TO 400 4639. |
219 |
|
|
C**** NIGHTIME AT INITIAL AND FINAL TIMES WITH DAYLIGHT IN BETWEEN 4640. |
220 |
|
|
320 COSZ(I,J)=(SJSD*(DUSK-DAWN)+CJCD*(SDUSK-SDAWN))/DROT 4641. |
221 |
|
|
400 CONTINUE 4642. |
222 |
|
|
GO TO 500 4643. |
223 |
|
|
C**** CONSTANT DAYLIGHT AT THIS LATITUDE 4644. |
224 |
|
|
420 DO 440 I=1,IM 4645. |
225 |
|
|
440 COSZ(I,J)=SJSD+CJCD*(SLT2(I)-SLT1(I))/DROT 4646. |
226 |
|
|
GO TO 500 4647. |
227 |
|
|
C**** CONSTANT NIGHTIME AT THIS LATITUDE 4648. |
228 |
|
|
460 DO 480 I=1,IM 4649. |
229 |
|
|
480 COSZ(I,J)=0. 4650. |
230 |
|
|
500 CONTINUE 4651. |
231 |
|
|
RETURN 4652. |
232 |
|
|
C**** 4653. |
233 |
|
|
C**** 4654. |
234 |
|
|
ENTRY COSZS (IM,JM,SIND,COSD,ROT1,ROT2,COSZ,COSZA) 4655. |
235 |
|
|
C**** 4656. |
236 |
|
|
C**** THIS ENTRY COMPUTES THE ZENITH ANGLE TWICE, FIRST WEIGHTED BY THE 4657. |
237 |
|
|
C**** DAYTIME HOURS FROM ROT1 TO ROT2 AND SECONDLY WEIGHTED BY THE 4658. |
238 |
|
|
C**** INCIDENT SUN LIGHT FROM ROT1 TO ROT2. COSZT MUST HAVE BEEN 4659. |
239 |
|
|
C**** CALLED JUST PREVIOUSLY. 4660. |
240 |
|
|
C**** 4661. |
241 |
|
|
DROT=ROT2-ROT1 4662. |
242 |
|
|
C**** COMPUTE THE SINES AND COSINES OF THE INITIAL AND FINAL GMT'S 4663. |
243 |
|
|
SR1=SIN(ROT1) 4664. |
244 |
|
|
CR1=COS(ROT1) 4665. |
245 |
|
|
SR2=SIN(ROT2) 4666. |
246 |
|
|
CR2=COS(ROT2) 4667. |
247 |
|
|
C**** COMPUTE THE INITIAL AND FINAL LOCAL TIMES (MEASURED FROM NOON TO 4668. |
248 |
|
|
C**** NOON) AND THEIR SINES AND COSINES 4669. |
249 |
|
|
DO 520 I=1,IM 4670. |
250 |
|
|
LT1(I)=ROT1+RI(I) 4671. |
251 |
|
|
SLT1(I)=SR1*COSI(I)+CR1*SINI(I) 4672. |
252 |
|
|
CLT1=CR1*COSI(I)-SR1*SINI(I) 4673. |
253 |
|
|
S2LT1(I)=2.*SLT1(I)*CLT1 4674. |
254 |
|
|
LT2(I)=ROT2+RI(I) 4675. |
255 |
|
|
SLT2(I)=SR2*COSI(I)+CR2*SINI(I) 4676. |
256 |
|
|
CLT2=CR2*COSI(I)-SR2*SINI(I) 4677. |
257 |
|
|
520 S2LT2(I)=2.*SLT2(I)*CLT2 4678. |
258 |
|
|
C**** 4679. |
259 |
|
|
C**** CALCULATION FOR POLAR GRID BOXES 4680. |
260 |
|
|
C**** 4681. |
261 |
|
|
DO 600 J=1,JM,JMM1 4682. |
262 |
|
|
SJSD=SINJ(J)*SIND 4683. |
263 |
|
|
CJCD=COSJ(J)*COSD 4684. |
264 |
|
|
IF(SJSD+CJCD.LE.ZERO1) GO TO 580 4685. |
265 |
|
|
IF(SJSD-CJCD.GE.0.) GO TO 560 4686. |
266 |
|
|
C**** AVERAGE COSZ FROM DAWN TO DUSK NEAR THE POLES 4687. |
267 |
|
|
CDUSK=-SJSD/CJCD 4688. |
268 |
|
|
DUSK=ACOS(CDUSK) 4689. |
269 |
|
|
SDUSK=SQRT(CJCD*CJCD-SJSD*SJSD)/CJCD 4690. |
270 |
|
|
S2DUSK=2.*SDUSK*CDUSK 4691. |
271 |
|
|
DAWN=-DUSK 4692. |
272 |
|
|
SDAWN=-SDUSK 4693. |
273 |
|
|
S2DAWN=-S2DUSK 4694. |
274 |
|
|
ECOSZ=SJSD*(DUSK-DAWN)+CJCD*(SDUSK-SDAWN) 4695. |
275 |
|
|
ECOSQZ=SJSD*ECOSZ+CJCD*(SJSD*(SDUSK-SDAWN)+ 4696. |
276 |
|
|
* .5*CJCD*(DUSK-DAWN+.5*(S2DUSK-S2DAWN))) 4697. |
277 |
|
|
COSZ(1,J)=ECOSZ/TWOPI 4698. |
278 |
|
|
COSZA(1,J)=ECOSQZ/ECOSZ 4699. |
279 |
|
|
GO TO 600 4700. |
280 |
|
|
C**** CONSTANT DAYLIGHT NEAR THE POLES 4701. |
281 |
|
|
560 ECOSZ=SJSD*TWOPI 4702. |
282 |
|
|
ECOSQZ=SJSD*ECOSZ+.5*CJCD*CJCD*TWOPI 4703. |
283 |
|
|
COSZ(1,J)=ECOSZ/TWOPI 4704. |
284 |
|
|
COSZA(1,J)=ECOSQZ/ECOSZ 4705. |
285 |
|
|
GO TO 600 4706. |
286 |
|
|
C**** CONSTANT NIGHTIME NEAR THE POLES 4707. |
287 |
|
|
580 COSZ(1,J)=0. 4708. |
288 |
|
|
COSZA(1,J)=0. 4709. |
289 |
|
|
600 CONTINUE 4710. |
290 |
|
|
C**** 4711. |
291 |
|
|
C**** LOOP OVER NON-POLAR LATITUDES 4712. |
292 |
|
|
C**** 4713. |
293 |
|
|
DO 900 J=2,JMM1 4714. |
294 |
|
|
SJSD=SINJ(J)*SIND 4715. |
295 |
|
|
CJCD=COSJ(J)*COSD 4716. |
296 |
|
|
IF(SJSD+CJCD.LE.ZERO1) GO TO 860 4717. |
297 |
|
|
IF(SJSD-CJCD.GE.0.) GO TO 820 4718. |
298 |
|
|
C**** COMPUTE DAWN AND DUSK (AT LOCAL TIME) AND THEIR SINES 4719. |
299 |
|
|
CDUSK=-SJSD/CJCD 4720. |
300 |
|
|
DUSK=ACOS(CDUSK) 4721. |
301 |
|
|
SDUSK=SQRT(CJCD*CJCD-SJSD*SJSD)/CJCD 4722. |
302 |
|
|
S2DUSK=2.*SDUSK*CDUSK 4723. |
303 |
|
|
DAWN=-DUSK 4724. |
304 |
|
|
SDAWN=-SDUSK 4725. |
305 |
|
|
S2DAWN=-S2DUSK 4726. |
306 |
|
|
C**** NEITHER CONSTANT DAYTIME NOR CONSTANT NIGHTIME AT THIS LATITUDE, 4727. |
307 |
|
|
C**** LOOP OVER LONGITUDES 4728. |
308 |
|
|
! 03/07/06 solar radiation |
309 |
|
|
ZERO2=ZERO1/CJCD |
310 |
|
|
DO 800 I=1,IM 4729. |
311 |
|
|
C**** FORCE DUSK TO LIE BETWEEN LT1 AND LT1+2*PI 4730. |
312 |
|
|
IF(DUSK.GT.LT1(I)+ZERO2) GO TO 620 4731. |
313 |
|
|
DUSK=DUSK+TWOPI 4732. |
314 |
|
|
DAWN=DAWN+TWOPI 4733. |
315 |
|
|
620 IF(DAWN.LT.LT2(I)-ZERO2) GO TO 640 4734. |
316 |
|
|
C**** CONTINUOUS NIGHTIME FROM INITIAL TO FINAL TIME 4735. |
317 |
|
|
COSZ(I,J)=0. 4736. |
318 |
|
|
COSZA(I,J)=0. 4737. |
319 |
|
|
GO TO 800 4738. |
320 |
|
|
640 IF(DAWN.GE.LT1(I)) GO TO 700 4739. |
321 |
|
|
IF(DUSK.LT.LT2(I)) GO TO 660 4740. |
322 |
|
|
C**** CONTINUOUS DAYLIGHT FROM INITIAL TIME TO FINAL TIME 4741. |
323 |
|
|
ECOSZ=SJSD*DROT+CJCD*(SLT2(I)-SLT1(I)) 4742. |
324 |
|
|
ECOSQZ=SJSD*ECOSZ+CJCD*(SJSD*(SLT2(I)-SLT1(I))+ 4743. |
325 |
|
|
* .5*CJCD*(DROT+.5*(S2LT2(I)-S2LT1(I)))) 4744. |
326 |
|
|
COSZ(I,J)=ECOSZ/DROT 4745. |
327 |
|
|
COSZA(I,J)=ECOSQZ/ECOSZ 4746. |
328 |
|
|
GO TO 800 4747. |
329 |
|
|
660 IF(DAWN+TWOPI.LT.LT2(I)-ZERO2) GO TO 680 4748. |
330 |
|
|
C**** DAYLIGHT AT INITIAL TIME AND NIGHT AT FINAL TIME 4749. |
331 |
|
|
ECOSZ=SJSD*(DUSK-LT1(I))+CJCD*(SDUSK-SLT1(I)) 4750. |
332 |
|
|
ECOSQZ=SJSD*ECOSZ+CJCD*(SJSD*(SDUSK-SLT1(I))+ 4751. |
333 |
|
|
* .5*CJCD*(DUSK-LT1(I)+.5*(S2DUSK-S2LT1(I)))) 4752. |
334 |
|
|
COSZ(I,J)=ECOSZ/DROT 4753. |
335 |
|
|
COSZA(I,J)=ECOSQZ/ECOSZ 4754. |
336 |
|
|
GO TO 800 4755. |
337 |
|
|
C**** DAYLIGHT AT INITIAL AND FINAL TIMES WITH NIGHTIME IN BETWEEN 4756. |
338 |
|
|
680 ECOSZ=SJSD*(DROT-DAWN-TWOPI+DUSK)+ 4757. |
339 |
|
|
* CJCD*(SLT2(I)-SDAWN+SDUSK-SLT1(I)) 4758. |
340 |
|
|
ECOSQZ=SJSD*ECOSZ+CJCD*(SJSD*(SDUSK-SLT1(I)+SLT2(I)-SDAWN)+ 4759. |
341 |
|
|
* .5*CJCD*(DUSK+DROT-DAWN-TWOPI+ 4760. |
342 |
|
|
* .5*(S2DUSK-S2LT1(I)+S2LT2(I)-S2DAWN))) 4761. |
343 |
|
|
COSZ(I,J)=ECOSZ/DROT 4762. |
344 |
|
|
COSZA(I,J)=ECOSQZ/ECOSZ 4763. |
345 |
|
|
GO TO 800 4764. |
346 |
|
|
700 IF(DUSK.LT.LT2(I)) GO TO 720 4765. |
347 |
|
|
C**** NIGHT AT INITIAL TIME AND DAYLIGHT AT FINAL TIME 4766. |
348 |
|
|
ECOSZ=SJSD*(LT2(I)-DAWN)+CJCD*(SLT2(I)-SDAWN) 4767. |
349 |
|
|
ECOSQZ=SJSD*ECOSZ+CJCD*(SJSD*(SLT2(I)-SDAWN)+ 4768. |
350 |
|
|
* .5*CJCD*(LT2(I)-DAWN+.5*(S2LT2(I)-S2DAWN))) 4769. |
351 |
|
|
COSZ(I,J)=ECOSZ/DROT 4770. |
352 |
|
|
COSZA(I,J)=ECOSQZ/ECOSZ 4771. |
353 |
|
|
GO TO 800 4772. |
354 |
|
|
C**** NIGHTIME AT INITIAL AND FINAL TIMES WITH DAYLIGHT IN BETWEEN 4773. |
355 |
|
|
720 ECOSZ=SJSD*(DUSK-DAWN)+CJCD*(SDUSK-SDAWN) 4774. |
356 |
|
|
ECOSQZ=SJSD*ECOSZ+CJCD*(SJSD*(SDUSK-SDAWN)+ 4775. |
357 |
|
|
* .5*CJCD*(DUSK-DAWN+.5*(S2DUSK-S2DAWN))) 4776. |
358 |
|
|
COSZ(I,J)=ECOSZ/DROT 4777. |
359 |
|
|
COSZA(I,J)=ECOSQZ/ECOSZ 4778. |
360 |
|
|
800 CONTINUE 4779. |
361 |
|
|
GO TO 900 4780. |
362 |
|
|
C**** CONSTANT DAYLIGHT AT THIS LATITUDE 4781. |
363 |
|
|
820 DO 840 I=1,IM 4782. |
364 |
|
|
ECOSZ=SJSD*DROT+CJCD*(SLT2(I)-SLT1(I)) 4783. |
365 |
|
|
ECOSQZ=SJSD*ECOSZ+CJCD*(SJSD*(SLT2(I)-SLT1(I))+ 4784. |
366 |
|
|
* .5*CJCD*(DROT+.5*(S2LT2(I)-S2LT1(I)))) 4785. |
367 |
|
|
COSZ(I,J)=ECOSZ/DROT 4786. |
368 |
|
|
840 COSZA(I,J)=ECOSQZ/ECOSZ 4787. |
369 |
|
|
GO TO 900 4788. |
370 |
|
|
C**** CONSTANT NIGHTIME AT THIS LATITUDE 4789. |
371 |
|
|
860 DO 880 I=1,IM 4790. |
372 |
|
|
COSZ(I,J)=0. 4791. |
373 |
|
|
880 COSZA(I,J)=0. 4792. |
374 |
|
|
900 CONTINUE 4793. |
375 |
|
|
RETURN 4794. |
376 |
|
|
END 4795. |