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

Annotation 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 - (hide 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 jscott 1.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 jscott 1.2 #include "AGRID.h"
16 jscott 1.1 #include "SIZE.h"
17     #include "EEPARAMS.h"
18 jscott 1.2 #include "PARAMS.h"
19 jscott 1.1 #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 jscott 1.2 atm_dLdt_ice(j_atm) = 0. _d 0 ! -devidtg(j_atm)/secDay1000
65 jscott 1.1 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 jscott 1.2 atm_dLdt_iceq(j_atm) =0. _d 0 ! -devidtgeq(j_atm)/secDay1000
69 jscott 1.1 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 jscott 1.2 atm_pco2(j_atm) = co24ocean(j_atm)*1. _d -6
76 jscott 1.1
77     ENDDO
78    
79     a1=sin(atm_yG(2)*deg2rad)
80     a2=sin(atm_yG(jm0-2)*deg2rad) - a1
81 jscott 1.2 a1=a1 + 1. _d 0
82     IF (cflan(2) .NE. 1. _d 0) CALL COMBINE_ENDS(a1,a2,1,2)
83 jscott 1.1
84     a1=sin(atm_yG(jm0-1)*deg2rad)
85     a2=a1-sin(atm_yG(jm0-2)*deg2rad)
86 jscott 1.2 a1=1. _d 0 - a1
87     IF (cflan(jm0-1) .NE. 1. _d 0) CALL COMBINE_ENDS(a1,a2,jm0,jm0-1)
88 jscott 1.1
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 jscott 1.2 #include "AGRID.h"
119 jscott 1.1 #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 jscott 1.2 rsuma=1. _d 0/(a1+a2)
138 jscott 1.1
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