1 |
jscott |
1.1 |
|
2 |
|
|
#include "ctrparam.h" |
3 |
|
|
|
4 |
|
|
SUBROUTINE FORSET(TREF,KTREND,KWRITE) 9101. |
5 |
|
|
C 9101.1 |
6 |
|
|
C RADCOM: CONTROL/INPUT PARAMETERS 9101.2 |
7 |
|
|
C 9101.3 |
8 |
|
|
COMMON/RADCOM/VADATA(11, 4, 3),DLAT(46),DLON(72),TAUMIN,FULGAS(18)9101.4 |
9 |
|
|
A ,FRACSL,RATQSL,FOGTSL,PTLISO,TLGRAD,TKCICE,FGOLDH(18)9101.5 |
10 |
|
|
B ,FLONO3,FRAYLE,FCLDTR,FCLDSR,FALGAE,FMARCL,FEMTRA(6) 9101.6 |
11 |
|
|
C ,WETTRA,WETSRA,DMOICE,DMLICE,LICETK,NTRACE,FZASRA(6) 9101.7 |
12 |
|
|
D ,ID5(5),ITR(4),IMG(2),ILG(2),LAPGAS,KWVCON,NORMS0,NV 9101.8 |
13 |
|
|
E ,KEEPRH,KEEPAL,ISOSCT,IHGSCT,KGASSR,KAERSR,KFRACC 9101.9 |
14 |
|
|
F ,MARCLD,LAYRAD,NL,NLP,JMLAT ,IMLON ,KFORCE,LASTVC 9102. |
15 |
|
|
C 9102.1 |
16 |
|
|
C BASIC RADCOM INPUT DATA 9102.2 |
17 |
|
|
C 9102.3 |
18 |
|
|
G ,PLB(40),HLB(40),TLB(40),TLT(40),TLM(40),U0GAS(40,9) 9102.4 |
19 |
|
|
H ,ULGAS(40,9),TRACER(40,4),CLDTAU(40),SHL(40),RHL(40) 9102.5 |
20 |
|
|
I ,POCEAN,PEARTH,POICE,PLICE,AGESN,SNOWE,SNOWOI,SNOWLI 9102.6 |
21 |
|
|
J ,TGO,TGE,TGOI,TGLI,TSL,WMAG,WEARTH,ZOICE,FSPARE(200) 9102.7 |
22 |
|
|
K ,S0,COSZ,PVT(11),BXA(153),SRBXAL(15,2),FRC(5),LUXGAS 9102.8 |
23 |
|
|
L ,JYEAR,JDAY,JLAT,ILON,MEANAL,KALVIS,ISPARE(25),PSIG0 9102.9 |
24 |
|
|
C 9103. |
25 |
|
|
C BASIC RADCOM OUTPUT DATA 9103.1 |
26 |
|
|
C 9103.2 |
27 |
|
|
M ,TRDFLB(40),TRUFLB(40),TRNFLB(40),TRFCRL(40),TRSLCR 9103.3 |
28 |
|
|
N ,SRDFLB(40),SRUFLB(40),SRNFLB(40),SRFHRL(40),SRSLHR 9103.4 |
29 |
|
|
O ,SRIVIS,SROVIS,PLAVIS,SRINIR,SRONIR,PLANIR,SRXATM(4) 9103.5 |
30 |
|
|
P ,SRDVIS,SRUVIS,ALBVIS,SRDNIR,SRUNIR,ALBNIR,FSRNFG(4) 9103.6 |
31 |
|
|
Q ,SRTVIS,SRRVIS,SRAVIS,SRTNIR,SRRNIR,SRANIR,FTRUFG(4) 9103.7 |
32 |
|
|
R ,TRDFGW,TRUFGW,TRUFTW,BTEMPW,TRDFSL,TRUFSL,DTRUFG(4) 9103.8 |
33 |
|
|
S ,TRSLTS,TRSLTG,TRSLWV,TRSLBS,TTRUFG,LBOTCL,LTOPCL 9103.9 |
34 |
|
|
C 9104. |
35 |
|
|
C BLOCKD INITIALIZED DEFAULT DATA 9104.1 |
36 |
|
|
C 9104.2 |
37 |
|
|
COMMON/BLOCKD/AGOLDH(11, 5),BGOLDH(11, 5),CGOLDH(11, 5) 9104.3 |
38 |
|
|
T ,TRAQEX(25,11),TRAQSC(25,11),TRACOS(25,11) 9104.4 |
39 |
|
|
T ,TRCQEX(25, 2),TRCQSC(25, 2),TRCCOS(25, 2) 9104.5 |
40 |
|
|
S ,SRAQEX( 6,11),SRAQSC( 6,11),SRACOS( 6,11) 9104.6 |
41 |
|
|
S ,SRCQEX( 6, 2),SRCQSC( 6, 2),SRCCOS( 6, 2) 9104.7 |
42 |
|
|
X ,AOCEAN(25 ),AGSIDV(25, 4),CLDALB(25, 2) 9104.8 |
43 |
|
|
Y ,CMANO2(42 ),TRACEG(25,16),PPMV58(9),Z0(9),ZH(9) 9104.9 |
44 |
|
|
Z ,ASNALB(15),AOIALB(15),ALIALB(15),NAERO,NGOLDH,NKSR 9105. |
45 |
|
|
C 9105.1 |
46 |
|
|
DIMENSION XNOW(5),XREF(5),XDT0(5),XDAT(5),XRAT(5),KFOR(5) 9105.2 |
47 |
|
|
C 9105.3 |
48 |
|
|
parameter(nlat=N_LAT) |
49 |
|
|
common /ATCO2/atm_co2(nlat) |
50 |
|
|
LOGICAL wr25,TRANSR,CONTRR,OBSFOR |
51 |
|
|
common/wrcom/wr25,TRANSR,CONTRR,OBSFOR |
52 |
|
|
NGAS=5 9105.4 |
53 |
|
|
print *,'From FORSET TREF=',TREF,' KTREND=',KTREND |
54 |
|
|
IF(KTREND.EQ.1) CALL ATREND(XREF,TREF,NGAS) 9105.5 |
55 |
|
|
IF(KTREND.EQ.2) CALL BTREND(XREF,TREF,NGAS) 9105.6 |
56 |
|
|
IF(KTREND.EQ.3) CALL CTREND(XREF,TREF,NGAS) 9105.7 |
57 |
|
|
IF(KTREND.EQ.5) CALL GTREND(XREF,TREF,NGAS) |
58 |
|
|
IF(KTREND.EQ.4) CALL BMTRND(XREF,TREF,NGAS) |
59 |
|
|
IF(KTREND.EQ.6) CALL BMTRNDMG(XREF,TREF,NGAS) |
60 |
|
|
IF(KTREND.GE.21.and.KTREND.LE.29) |
61 |
|
|
& CALL STBTRND(XREF,TREF,NGAS,KTREND) |
62 |
|
|
DO 100 I=1,NGAS 9105.8 |
63 |
|
|
IF(XREF(I).LT.1.E-06) XREF(I)=1.E-06 9105.9 |
64 |
|
|
100 KFOR(I)=1 9106. |
65 |
|
|
PPMV58(2)=XREF(1) 9106.1 |
66 |
|
|
PPMV58(6)=XREF(2) 9106.2 |
67 |
|
|
PPMV58(7)=XREF(3) 9106.3 |
68 |
|
|
PPMV58(8)=XREF(4)/1000.0 9106.4 |
69 |
|
|
PPMV58(9)=XREF(5)/1000.0 9106.5 |
70 |
|
|
C 9106.6 |
71 |
|
|
IF(KWRITE.NE.1) GO TO 120 9106.7 |
72 |
|
|
DO 110 I=1,NGAS 9106.8 |
73 |
|
|
110 XDAT(I)=XREF(I) 9106.9 |
74 |
|
|
IF(KTREND.EQ.1) WRITE(6,6001) 9107. |
75 |
|
|
IF(KTREND.EQ.2) WRITE(6,6002) 9107.1 |
76 |
|
|
IF(KTREND.EQ.3) WRITE(6,6003) 9107.2 |
77 |
|
|
IF(KTREND.EQ.4) WRITE(6,6004) |
78 |
|
|
IF(KTREND.EQ.5) then |
79 |
|
|
print *,'after GTREND' |
80 |
|
|
print *,PPMV58 |
81 |
|
|
endif |
82 |
|
|
IF(KTREND.EQ.6) then |
83 |
|
|
print *,'after BMTRNDMG' |
84 |
|
|
print *,PPMV58 |
85 |
|
|
endif |
86 |
|
|
WRITE(6,6100) 9107.3 |
87 |
|
|
120 CONTINUE 9107.4 |
88 |
|
|
6001 FORMAT(1H1,5X,'(OUTPUT DATA) GCM RAD EXPECTED TEMPERATURES' 9107.5 |
89 |
|
|
+ ,T55,'PRESENT TREND FORSET INPUT DATA TO GCM' 9107.6 |
90 |
|
|
+ ,T96,'RATE OF CHANGE/YR OF TRACE GAS AMOUNTS') 9107.7 |
91 |
|
|
6002 FORMAT(1H1,5X,'(OUTPUT DATA) GCM RAD EXPECTED TEMPERATURES' 9107.8 |
92 |
|
|
+ ,T55,'REDUCED TREND FORSET INPUT DATA TO GCM' 9107.9 |
93 |
|
|
+ ,T96,'RATE OF CHANGE/YR OF TRACE GAS AMOUNTS') 9108. |
94 |
|
|
6003 FORMAT(1H1,5X,'(OUTPUT DATA) GCM RAD EXPECTED TEMPERATURES' 9108.1 |
95 |
|
|
+ ,T55,'CURTAIL TREND FORSET INPUT DATA TO GCM' 9108.2 |
96 |
|
|
+ ,T96,'RATE OF CHANGE/YR OF TRACE GAS AMOUNTS') 9108.3 |
97 |
|
|
6004 FORMAT(1H1,5X,' TREND FROM BOX MODEL') |
98 |
|
|
6100 FORMAT(6X,6('-'),'(* 3-D)',32('-'),3X,38('-'),3X,38('-') 9108.4 |
99 |
|
|
+ /1X,'YEAR DTSUM *DTCO2 DTN2O DTCH4 DTF11 DTF12' 9108.5 |
100 |
|
|
+ , ' PPMCO2 PPMN20 PPMCH4 PPTF11 PPTF12' 9108.6 |
101 |
|
|
+ , ' RATCO2 RATN2O RATCH4 RATF11 RATF12') 9108.7 |
102 |
|
|
C 9108.8 |
103 |
|
|
RETURN 9108.9 |
104 |
|
|
C 9109. |
105 |
|
|
C------------------------------ 9109.1 |
106 |
|
|
ENTRY FORGET(TNOW,KTREN,KWRITE) |
107 |
|
|
C------------------------------ 9109.3 |
108 |
|
|
C 9109.4 |
109 |
|
|
IF(KTREN.EQ.1) CALL ATREND(XNOW,TNOW,NGAS) 9109.5 |
110 |
|
|
IF(KTREN.EQ.2) CALL BTREND(XNOW,TNOW,NGAS) 9109.6 |
111 |
|
|
IF(KTREN.EQ.3) CALL CTREND(XNOW,TNOW,NGAS) 9109.7 |
112 |
|
|
IF(KTREN.EQ.5) CALL GTREND(XNOW,TNOW,NGAS) |
113 |
|
|
IF(KTREN.EQ.4) CALL BMTRND(XNOW,TNOW,NGAS) |
114 |
|
|
IF(KTREN.EQ.6) CALL BMTRNDMG(XNOW,TNOW,NGAS) |
115 |
|
|
IF(KTREN.GE.21.and.KTREN.LE.29) |
116 |
|
|
& CALL STBTRND(XNOW,TNOW,NGAS,KTREN) |
117 |
|
|
if(KTREN.LE.20)then |
118 |
|
|
CALL DTDX1D(XNOW,XREF,XDT0,SDT0,KFOR,NGAS) 9109.8 |
119 |
|
|
CALL DTDX3D(XNOW,XREF,XDT0,SDT0,KFOR,1) 9109.9 |
120 |
|
|
CALL DXDT3D(XNOW,XREF,XDT0,SDT0,KFOR,NGAS) 9110. |
121 |
|
|
endif |
122 |
|
|
FULGAS(2)=XNOW(1)/XREF(1) 9110.1 |
123 |
|
|
FULGAS(6)=XNOW(2)/XREF(2) 9110.2 |
124 |
|
|
FULGAS(7)=XNOW(3)/XREF(3) 9110.3 |
125 |
|
|
FULGAS(8)=XNOW(4)/XREF(4) 9110.4 |
126 |
|
|
FULGAS(9)=XNOW(5)/XREF(5) 9110.5 |
127 |
|
|
if(.not.OBSFOR)then |
128 |
|
|
IF(KWRITE.EQ.1) then |
129 |
|
|
print *,'From forset XNOW(1)=',XNOW(1) |
130 |
|
|
ENDIF |
131 |
|
|
do j=1,nlat |
132 |
|
|
atm_co2(j)=XNOW(1) |
133 |
|
|
enddo |
134 |
|
|
endif |
135 |
|
|
C 9110.6 |
136 |
|
|
IF(KWRITE.NE.1) GO TO 220 9110.7 |
137 |
|
|
SDT0=0.0 9110.8 |
138 |
|
|
DO 210 I=1,NGAS 9110.9 |
139 |
|
|
SDT0=SDT0+XDT0(I) 9111. |
140 |
|
|
XRAT(I)=(XNOW(I)-XDAT(I))/(1.E-10+XDAT(I)) 9111.1 |
141 |
|
|
210 XDAT(I)=XNOW(I) 9111.2 |
142 |
|
|
IYEAR=TNOW 9111.3 |
143 |
|
|
WRITE(6,6200) IYEAR,SDT0,(XDT0(I),I=1,5),(XNOW(I),I=1,5) 9111.4 |
144 |
|
|
+ ,(XRAT(I),I=1,5) 9111.5 |
145 |
|
|
6200 FORMAT(1X,I4,F6.3,5F8.4,1X,F8.2,4F8.4,1X,5F8.4) 9111.6 |
146 |
|
|
NSPACE=IYEAR-(IYEAR/10)*10 9111.7 |
147 |
|
|
IF(NSPACE.EQ.0) WRITE(6,6010) 9111.8 |
148 |
|
|
6010 FORMAT(1H ) 9111.9 |
149 |
|
|
220 CONTINUE 9112. |
150 |
|
|
C 9112.1 |
151 |
|
|
RETURN 9112.2 |
152 |
|
|
END 9112.3 |