/[MITgcm]/MITgcm/pkg/atm2d/read_atmos.F
ViewVC logotype

Contents of /MITgcm/pkg/atm2d/read_atmos.F

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


Revision 1.8 - (show annotations) (download)
Mon Oct 8 23:48:28 2007 UTC (16 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64, checkpoint65, checkpoint60, checkpoint61, checkpoint62, checkpoint63, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59k, checkpoint59j, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y, HEAD
Changes since 1.7: +22 -19 lines
add missing cvs $Header:$ or $Name:$

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

  ViewVC Help
Powered by ViewVC 1.1.22