| 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 |