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