1 |
jscott |
1.1 |
|
2 |
|
|
#include "ctrparam.h" |
3 |
|
|
|
4 |
|
|
! ========================================================== |
5 |
|
|
! |
6 |
|
|
! OBSSOLAR.F: This file contains subroitine obssolar.f |
7 |
|
|
! which reads observed solar constant |
8 |
|
|
! |
9 |
|
|
! ---------------------------------------------------------- |
10 |
|
|
! |
11 |
|
|
! Revision History: |
12 |
|
|
! |
13 |
|
|
! When Who What |
14 |
|
|
! ---- ---------- ------- |
15 |
|
|
! 070302 |
16 |
|
|
! |
17 |
|
|
! |
18 |
|
|
! ========================================================== |
19 |
|
|
|
20 |
|
|
subroutine obssolar(S0const,YEAR1) |
21 |
|
|
parameter (nyd=2000,nyd1=nyd+1) |
22 |
|
|
C |
23 |
|
|
C |
24 |
|
|
C For simulations with observed solar constant using equivalent |
25 |
|
|
C S0conts from file S0C_data |
26 |
|
|
C DATA are annual means, but they are |
27 |
|
|
C used as a data for the middle of the coresponding year |
28 |
|
|
C |
29 |
|
|
C |
30 |
|
|
dimension solar(nyd),solar1(nyd1),yearS0(nyd) |
31 |
|
|
common /solardata/S0C_data |
32 |
|
|
character * 120 S0C_data |
33 |
|
|
logical first |
34 |
|
|
data first /.true./ |
35 |
|
|
if(first)then |
36 |
|
|
print *,' Solar constant from observation ' |
37 |
|
|
open (unit=561,file=S0C_data, |
38 |
|
|
* status='OLD',form='formatted') |
39 |
|
|
do 50 i=1,nyd |
40 |
|
|
c read (561,501,end=500),ighgyr(i),tmp,xco2(i) |
41 |
|
|
read (561,*,end=500),yearS0(i),solar(i) |
42 |
|
|
c print *,yearS0(i),solar(i) |
43 |
|
|
50 continue |
44 |
|
|
500 continue |
45 |
|
|
close (561) |
46 |
|
|
ny=i-1 |
47 |
|
|
print *,'Last year for solardata is ',yearS0(ny) |
48 |
|
|
ny1=ny+1 |
49 |
|
|
ny2=ny+2 |
50 |
|
|
501 format(2f13.2) |
51 |
|
|
first=.false. |
52 |
|
|
endif |
53 |
|
|
year=year1 |
54 |
|
|
c print *,' year=',year |
55 |
|
|
if(year.lt.yearS0(1))year=yearS0(1) |
56 |
|
|
if(year.gt.yearS0(ny))year=yearS0(ny) |
57 |
|
|
i=year-yearS0(1)+1 |
58 |
|
|
dl=year-yearS0(i) |
59 |
|
|
c print *,' i=',i,' dl=',dl |
60 |
|
|
c print *,yearS0(i),yearS0(i+1) |
61 |
|
|
c print *,solar(i),solar(i+1) |
62 |
|
|
S0const=solar(i)*(1.-dl)+solar(i+1)*dl |
63 |
|
|
c print *,' year=',year,' S0x=',S0const |
64 |
|
|
return |
65 |
|
|
end |