1 |
jscott |
1.1 |
|
2 |
|
|
#include "ctrparam.h" |
3 |
|
|
|
4 |
|
|
! ========================================================== |
5 |
|
|
! |
6 |
|
|
! SULFUT.F: Subroutine for setup prescribed sulfate |
7 |
|
|
! aerosol forcing in the format of |
8 |
|
|
! surface albedo. |
9 |
|
|
! |
10 |
|
|
! ---------------------------------------------------------- |
11 |
|
|
! |
12 |
|
|
! Revision History: |
13 |
|
|
! |
14 |
|
|
! When Who What |
15 |
|
|
! ----- ---------- ------- |
16 |
|
|
! 080100 Chien Wang repack based on CliChem3 & M24x11, |
17 |
|
|
! and add cpp. |
18 |
|
|
! 081100 Chien/Andrei open cpp control for all case. |
19 |
|
|
! |
20 |
|
|
! ========================================================== |
21 |
|
|
|
22 |
|
|
subroutine sulfr(BSO4LAND,BSO4OCEAN,TNOW) |
23 |
|
|
|
24 |
|
|
#include "BD2G04.COM" |
25 |
|
|
|
26 |
|
|
C in original sulf1986.4x5.1986.dat file BSO4LAND and BSO4OCEAN |
27 |
|
|
c are SO2 loading per m^2 over land and ocean |
28 |
|
|
C in sulf1986.4x5.1986.new.dat file BSO4LAND and BSO4OCEAN |
29 |
|
|
c are SO2 loading per m^2 over land and ocean multiplied by |
30 |
|
|
c land and ocean fraction respectively |
31 |
|
|
dimension BSO4LAND(JM0),BSO4OCEAN(JM0), |
32 |
|
|
& BSO4LD86(JM0),BSO4ON86(JM0), |
33 |
|
|
& IYSULF(2000),CF86(2000),YSULF(2000) |
34 |
|
|
character * 120 sulf1986,sulf2050,sulfamp,SO2_EM |
35 |
|
|
character * 80 title |
36 |
|
|
common /sulfdata/sulf1986,sulf2050,sulfamp,SO2_EM |
37 |
|
|
logical first |
38 |
|
|
data first /.true./ |
39 |
|
|
|
40 |
|
|
if(first) then |
41 |
|
|
JM=JM0 |
42 |
|
|
open (575,file=sulf1986,status='old') |
43 |
|
|
open (577,file=SO2_EM,status='old') |
44 |
|
|
read (575,'(E13.5)'),(BSO4LD86(J),j=1,JM) |
45 |
|
|
read (575,'(E13.5)'),(BSO4ON86(J),j=1,JM) |
46 |
|
|
read (577,'(A80)'),title |
47 |
|
|
print *,'From sulfut' |
48 |
|
|
print *,title |
49 |
|
|
read (577,'(A80)'),title |
50 |
|
|
print *,title |
51 |
|
|
read (577,'(A80)'),title |
52 |
|
|
print *,title |
53 |
|
|
do ny=1,2000 |
54 |
|
|
read (577,*,end=500),IYSULF(ny),CF86(ny) |
55 |
|
|
if(IYSULF(ny).eq.1986)cfref=CF86(ny) |
56 |
|
|
enddo |
57 |
|
|
500 continue |
58 |
|
|
NYS=ny-1 |
59 |
|
|
close (575) |
60 |
|
|
close (577) |
61 |
|
|
print *,'Sulfate data for years ',IYSULF(1),IYSULF(NYS) |
62 |
|
|
print *,' BSO4LD86' |
63 |
|
|
print ('(6F7.4)'),(BSO4LD86(J)*1.e6,j=1,JM) |
64 |
|
|
print *,' BSO4ON86' |
65 |
|
|
print ('(6F7.4)'),(BSO4ON86(J)*1.e6,j=1,JM) |
66 |
|
|
do n=1,NYS |
67 |
|
|
YSULF(n)=IYSULF(n)+0.5 |
68 |
|
|
CF86(n)=CF86(n)/cfref |
69 |
|
|
enddo |
70 |
|
|
first=.false. |
71 |
|
|
end if |
72 |
|
|
do n=1,NYS-1 |
73 |
|
|
if(TNOW.gt.YSULF(n).and.TNOW.le.YSULF(n+1))go to 100 |
74 |
|
|
enddo |
75 |
|
|
print *,' Wrong TNOW TNOW=',TNOW |
76 |
|
|
stop |
77 |
|
|
100 continue |
78 |
|
|
x=(YSULF(n+1)-TNOW)/(YSULF(n+1)-YSULF(n)) |
79 |
|
|
cf=x*CF86(n)+(1.-x)*CF86(n+1) |
80 |
|
|
do j=1,jm |
81 |
|
|
BSO4LAND(J)=cf*BSO4LD86(j) |
82 |
|
|
BSO4OCEAN(J)=cf*BSO4ON86(j) |
83 |
|
|
enddo |
84 |
|
|
c print *,' TNOW=',TNOW |
85 |
|
|
c print *,' n=',n,' YSULF(n)=',YSULF(n), |
86 |
|
|
c & ' YSULF(n+1)=',YSULF(n+1) |
87 |
|
|
c print *,' BSO4LAND' |
88 |
|
|
c print ('(6F7.4)'),(BSO4LAND(J)*1.e6,j=1,JM) |
89 |
|
|
c print *,' BSO4OCEAN' |
90 |
|
|
c print ('(6F7.4)'),(BSO4OCEAN(J)*1.e6,j=1,JM) |
91 |
|
|
return |
92 |
|
|
end |