/[MITgcm]/MITgcm_contrib/jscott/pkg_atm2d/read_atmos.F
ViewVC logotype

Contents of /MITgcm_contrib/jscott/pkg_atm2d/read_atmos.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (show annotations) (download)
Tue Aug 21 16:06:22 2007 UTC (17 years, 11 months ago) by jscott
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +0 -0 lines
FILE REMOVED
remove old atm2d pkg repository

1 #include "ctrparam.h"
2 #include "ATM2D_OPTIONS.h"
3
4 C !INTERFACE:
5 SUBROUTINE READ_ATMOS(inMonth,myThid )
6 C *==========================================================*
7 C | o Takes atmos data on atmos grid, converts to ocean |
8 C | model units, and combines the polar cap atmos cell |
9 C | with its neighbor to the north or south. |
10 C *==========================================================*
11 IMPLICIT NONE
12
13 C === Global Atmos/Ocean/Seaice Interface Variables ===
14 #include "ATMSIZE.h"
15 #include "AGRID.h"
16 #include "SIZE.h"
17 #include "EEPARAMS.h"
18 #include "PARAMS.h"
19 #include "ATM2D_VARS.h"
20
21 _RL secDay1000
22 PARAMETER (secDay1000= 86400000.D0)
23
24 C !INPUT/OUTPUT PARAMETERS:
25 C === Routine arguments ===
26 C inMonth - current month (or forcing period)
27 C myThid - Thread no. that called this routine.
28 INTEGER inMonth
29 INTEGER myThid
30
31 C LOCAL VARIABLES:
32 _RL a1,a2
33 INTEGER j_atm
34
35 C Keep track of (raw) atmos variables for diagnostics
36 DO j_atm=1,jm0
37 sum_tauu_ta(j_atm,inMonth)= sum_tauu_ta(j_atm,inMonth) +
38 & tauu(j_atm)*dtatmo
39 sum_tauv_ta(j_atm,inMonth)= sum_tauv_ta(j_atm,inMonth) +
40 & tauv(j_atm)*dtatmo
41 sum_wsocean_ta(j_atm,inMonth)= sum_wsocean_ta(j_atm,inMonth) +
42 & wsocean(j_atm)*dtatmo
43 sum_ps4ocean_ta(j_atm,inMonth)= sum_ps4ocean_ta(j_atm,inMonth) +
44 & ps4ocean(j_atm)*dtatmo
45 ENDDO
46
47 C
48 C put atmospheric data onto local arrays and convert units for ocean model
49 C
50 DO j_atm=1,jm0
51
52 atm_tauu(j_atm) = tauu(j_atm)
53 atm_tauv(j_atm) = tauv(j_atm)
54 atm_tair(j_atm) = tempr(j_atm)
55 atm_precip(j_atm) = -precip(j_atm)/secDay1000
56 atm_runoff(j_atm) = -arunoff(j_atm)/secDay1000
57 atm_evap_ice(j_atm) = -evai(j_atm)/secDay1000
58 atm_evap_ocn(j_atm) = -evao(j_atm)/secDay1000
59 atm_qnet_ice(j_atm) = -hfluxi(j_atm)
60 atm_qnet_ocn(j_atm) = -hfluxo(j_atm)
61 atm_dFdt_ice(j_atm) = -dhfidtg(j_atm)
62 atm_dFdt_ocn(j_atm) = -dhfodtg(j_atm)
63 C Ice feels evap from model, no change with temperature
64 atm_dLdt_ice(j_atm) = 0. _d 0 ! -devidtg(j_atm)/secDay1000
65 atm_dLdt_ocn(j_atm) = -devodtg(j_atm)/secDay1000
66 atm_dFdt_iceq(j_atm) = -dhfidtgeq(j_atm)
67 atm_dFdt_ocnq(j_atm) = -dhfodtgeq(j_atm)
68 atm_dLdt_iceq(j_atm) =0. _d 0 ! -devidtgeq(j_atm)/secDay1000
69 atm_dLdt_ocnq(j_atm) = -devodtgeq(j_atm)
70 atm_solarinc(j_atm) = -solarinc_ice(j_atm)
71 atm_solar_ocn(j_atm) = solarnet_ocean(j_atm)
72 atm_solar_ice(j_atm) = solarnet_ice(j_atm)
73 atm_windspeed(j_atm) = wsocean(j_atm)
74 atm_slp(j_atm) = ps4ocean(j_atm)*1013.25/984.0
75 atm_pco2(j_atm) = co24ocean(j_atm)*1. _d -6
76
77 ENDDO
78
79 a1=sin(atm_yG(2)*deg2rad)
80 a2=sin(atm_yG(jm0-2)*deg2rad) - a1
81 a1=a1 + 1. _d 0
82 IF (cflan(2) .NE. 1. _d 0) CALL COMBINE_ENDS(a1,a2,1,2)
83
84 a1=sin(atm_yG(jm0-1)*deg2rad)
85 a2=a1-sin(atm_yG(jm0-2)*deg2rad)
86 a1=1. _d 0 - a1
87 IF (cflan(jm0-1) .NE. 1. _d 0) CALL COMBINE_ENDS(a1,a2,jm0,jm0-1)
88
89 C PRINT *,'***read_atmos: tauu',tauu(JBUGJ+1)
90 C PRINT *,'***read_atmos: atm_tauu',atm_tauu(JBUGJ+1)
91 C PRINT *,'***read_atmos: atm_precip',atm_precip(JBUGJ+1)
92 C PRINT *,'***read_atmos: atm_runoff',atm_runoff(JBUGJ+1)
93 C PRINT *,'***read_atmos: atm_evap_ocn',atm_evap_ocn(JBUGJ+1)
94 C PRINT *,'***read_atmos: atm_qnet_ocn',atm_qnet_ocn(JBUGJ+1)
95 C PRINT *,'***read_atmos: atm_dFdt_ocn',atm_dFdt_ocn(JBUGJ+1)
96 C PRINT *,'***read_atmos: atm_slp',atm_slp
97 C PRINT *,'***read_atmos: atm_pco2',atm_pco2
98
99 RETURN
100 END
101
102 C--------------------------------------------------------------------------
103 #include "ctrparam.h"
104 #include "ATM2D_OPTIONS.h"
105
106
107 SUBROUTINE COMBINE_ENDS(a1,a2,ind1,ind2 )
108 C *==========================================================*
109 C | Subroutine used to combine the atmos model data points at|
110 C | the poles with their neighboring value, area weighted. |
111 C | The calcuated new value is overwritten into ind2. |
112 C *==========================================================*
113 IMPLICIT NONE
114
115
116 C === Global Atmos/Ocean/Seaice Interface Variables ===
117 #include "ATMSIZE.h"
118 #include "AGRID.h"
119 #include "SIZE.h"
120 #include "EEPARAMS.h"
121 #include "ATM2D_VARS.h"
122
123 C !INPUT/OUTPUT PARAMETERS:
124 C === Routine arguments ===
125 C a1 - weighting of first index
126 C a2 - weighting of second index
127 C ind1 - first index into atmos data array
128 C ind2 - first index into atmos data array
129 _RL a1
130 _RL a2
131 INTEGER ind1
132 INTEGER ind2
133
134 C LOCAL VARIABLES:
135 _RL rsuma
136
137 rsuma=1. _d 0/(a1+a2)
138
139 C atm_tauu(ind2)= (a1*atm_tauu(ind1) + a2*atm_tauu(ind2))*rsuma
140 C atm_tauv(ind2)= (a1*atm_tauv(ind1) + a2*atm_tauv(ind2))*rsuma
141 C Tau variables not combined - zero at atm pole point
142
143 atm_tair(ind2)= (a1*atm_tair(ind1) + a2*atm_tair(ind2))*rsuma
144 atm_precip(ind2)= (a1*atm_precip(ind1) +
145 & a2*atm_precip(ind2))*rsuma
146 atm_runoff(ind2)= atm_runoff(ind1)+ atm_runoff(ind2)
147 atm_evap_ice(ind2)= (a1*atm_evap_ice(ind1) +
148 & a2*atm_evap_ice(ind2))*rsuma
149 atm_evap_ocn(ind2)= (a1*atm_evap_ocn(ind1) +
150 & a2*atm_evap_ocn(ind2))*rsuma
151 atm_qnet_ice(ind2)= (a1*atm_qnet_ice(ind1)+
152 & a2*atm_qnet_ice(ind2))*rsuma
153 atm_qnet_ocn(ind2)= (a1*atm_qnet_ocn(ind1) +
154 & a2*atm_qnet_ocn(ind2))*rsuma
155 atm_dFdt_ice(ind2)= (a1*atm_dFdt_ice(ind1)+
156 & a2*atm_dFdt_ice(ind2))*rsuma
157 atm_dFdt_ocn(ind2)= (a1*atm_dFdt_ocn(ind1)+
158 & a2*atm_dFdt_ocn(ind2))*rsuma
159 atm_dLdt_ice(ind2)= (a1*atm_dLdt_ice(ind1)+
160 & a2*atm_dLdt_ice(ind2))*rsuma
161 atm_dLdt_ocn(ind2)= (a1*atm_dLdt_ocn(ind1)+
162 & a2*atm_dLdt_ocn(ind2))*rsuma
163 atm_dFdt_iceq(ind2)= (a1*atm_dFdt_iceq(ind1)+
164 & a2*atm_dFdt_iceq(ind2))*rsuma
165 atm_dFdt_ocnq(ind2)= (a1*atm_dFdt_ocnq(ind1)+
166 & a2*atm_dFdt_ocnq(ind2))*rsuma
167 atm_dLdt_iceq(ind2)= (a1*atm_dLdt_iceq(ind1)+
168 & a2*atm_dLdt_iceq(ind2))*rsuma
169 atm_dLdt_ocnq(ind2)= (a1*atm_dLdt_ocnq(ind1)+
170 & a2*atm_dLdt_ocnq(ind2))*rsuma
171 atm_solarinc(ind2)= (a1*atm_solarinc(ind1) +
172 & a2*atm_solarinc(ind2))*rsuma
173 atm_solar_ocn(ind2)= (a1*atm_solar_ocn(ind1)+
174 & a2*atm_solar_ocn(ind2))*rsuma
175 atm_solar_ice(ind2)= (a1*atm_solar_ice(ind1)+
176 & a2*atm_solar_ice(ind2))*rsuma
177 atm_windspeed(ind2)= (a1*atm_windspeed(ind1) +
178 & a2*atm_windspeed(ind2))*rsuma
179 atm_slp(ind2)= (a1*atm_slp(ind1) + a2*atm_slp(ind2))*rsuma
180 atm_pco2(ind2)= (a1*atm_pco2(ind1)+a2*atm_pco2(ind2))*rsuma
181
182 RETURN
183 END
184
185
186
187
188

  ViewVC Help
Powered by ViewVC 1.1.22