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 |