/[MITgcm]/MITgcm/pkg/atm_compon_interf/atm_store_aim_wndstr.F
ViewVC logotype

Annotation of /MITgcm/pkg/atm_compon_interf/atm_store_aim_wndstr.F

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


Revision 1.2 - (hide annotations) (download)
Thu Nov 12 01:01:57 2015 UTC (8 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, HEAD
Changes since 1.1: +2 -3 lines
add ATM_CPL_OPTIONS.h in component pkg and include it in all pkg source files

1 jmc 1.2 C $Header: /u/gcmpack/MITgcm/pkg/atm_compon_interf/atm_store_aim_wndstr.F,v 1.1 2013/09/11 20:17:27 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4 jmc 1.2 #include "ATM_CPL_OPTIONS.h"
5 jmc 1.1 #ifdef ALLOW_AIM
6     # include "AIM_OPTIONS.h"
7     #endif
8    
9     CBOP
10     C !ROUTINE: ATM_STORE_AIM_WNDSTR
11     C !INTERFACE:
12     SUBROUTINE ATM_STORE_AIM_WNDSTR(
13     I bi, bj,
14     I myTime, myIter, myThid )
15    
16     C !DESCRIPTION: \bv
17     C *==========================================================*
18     C | SUBROUTINE ATM_STORE_AIM_WNDSTR
19     C | o Routine for saving AIM surface wind-stress fields
20     C | for export to coupling layer.
21     C *==========================================================*
22     C | This version interfaces to the AIM package.
23     C *==========================================================*
24    
25     C !USES:
26     IMPLICIT NONE
27    
28     C == Global variables ==
29     #ifdef ALLOW_AIM
30     # include "AIM_SIZE.h"
31     #else
32     # include "SIZE.h"
33     #endif
34    
35     #include "EEPARAMS.h"
36     #include "PARAMS.h"
37     #include "CPL_PARAMS.h"
38     #include "GRID.h"
39     #include "DYNVARS.h"
40     #ifdef ALLOW_AIM
41     # include "AIM2DYN.h"
42     c #include "AIM_FFIELDS.h"
43     #endif
44     #ifdef ALLOW_THSICE
45     # include "THSICE_PARAMS.h"
46     # include "THSICE_VARS.h"
47     #endif
48     C == Global variables for coupling interface ==
49     #include "ATMCPL.h"
50    
51     C !INPUT/OUTPUT PARAMETERS:
52     C bi, bj :: Tile indices
53     C myTime :: Current time in simulation (s)
54     C myIter :: Current iteration number
55     C myThid :: My Thread Id. number
56     INTEGER bi, bj
57     _RL myTime
58     INTEGER myIter
59     INTEGER myThid
60     CEOP
61    
62     #ifdef ALLOW_AIM
63     C !LOCAL VARIABLES:
64     C i, j :: Loop counters
65     C ks :: surface level index
66     INTEGER i, j, ks
67     _RL cplTimeFraction
68     _RL uStr_tmp, vStr_tmp
69    
70     C o Accumulate momentum surface flux that will be exported to the
71     C coupling layer. Momentum flux is in N/m^2 with same sign as the wind.
72     cplTimeFraction = 1. _d 0 / DFLOAT(cplSendFrq_iter)
73     ks = 1
74    
75     tauXTime(bi,bj) = tauXTime(bi,bj) + cplTimeFraction
76     tauYTime(bi,bj) = tauYTime(bi,bj) + cplTimeFraction
77     #ifdef ALLOW_THSICE
78     IF ( useThSIce .AND. stressReduction.GT. 0. _d 0 ) THEN
79     C-- Reduce wind stress applied to ocean where sea-ice is present
80     DO j=1,sNy
81     DO i=1,sNx
82     c IF ( aim_landFr(i-1,j,bi,bj)*aim_landFr(i,j,bi,bj) .NE. 1. ) THEN
83     IF ( hFacW(i,j,ks,bi,bj) .NE. 0. ) THEN
84     uStr_tmp =
85     & ( aim_drag(i-1,j,bi,bj)
86     & *(1. _d 0 - iceMask(i-1,j,bi,bj)*stressReduction)
87     & + aim_drag( i ,j,bi,bj)
88     & *(1. _d 0 - iceMask( i ,j,bi,bj)*stressReduction)
89     & )* 0.5 _d 0 * uVel(i,j,ks,bi,bj)
90     tauX(i,j,bi,bj) = tauX(i,j,bi,bj)
91     & + uStr_tmp*cplTimeFraction
92     ENDIF
93     ENDDO
94     ENDDO
95     DO j=1,sNy
96     DO i=1,sNx
97     c IF ( aim_landFr(i,j-1,bi,bj)*aim_landFr(i,j,bi,bj) .NE. 1. ) THEN
98     IF ( hFacS(i,j,ks,bi,bj) .NE. 0. ) THEN
99     vStr_tmp =
100     & ( aim_drag(i,j-1,bi,bj)
101     & *(1. _d 0 - iceMask(i,j-1,bi,bj)*stressReduction)
102     & + aim_drag(i, j ,bi,bj)
103     & *(1. _d 0 - iceMask(i, j ,bi,bj)*stressReduction)
104     & )* 0.5 _d 0 * vVel(i,j,ks,bi,bj)
105     tauY(i,j,bi,bj) = tauY(i,j,bi,bj)
106     & + vStr_tmp*cplTimeFraction
107     ENDIF
108     ENDDO
109     ENDDO
110     ELSE
111     #else /*ALLOW_THSICE*/
112     IF (.TRUE.) THEN
113     #endif /*ALLOW_THSICE*/
114     DO j=1,sNy
115     DO i=1,sNx
116     c IF ( aim_landFr(i-1,j,bi,bj)*aim_landFr(i,j,bi,bj) .NE. 1. ) THEN
117     IF ( hFacW(i,j,ks,bi,bj) .NE. 0. ) THEN
118     uStr_tmp =
119     & ( aim_drag(i-1,j,bi,bj)+aim_drag(i,j,bi,bj) )
120     & * 0.5 _d 0 * uVel(i,j,ks,bi,bj)
121     tauX(i,j,bi,bj) = tauX(i,j,bi,bj)
122     & + uStr_tmp*cplTimeFraction
123     ENDIF
124     ENDDO
125     ENDDO
126     DO j=1,sNy
127     DO i=1,sNx
128     c IF ( aim_landFr(i,j-1,bi,bj)*aim_landFr(i,j,bi,bj) .NE. 1. ) THEN
129     IF ( hFacS(i,j,ks,bi,bj) .NE. 0. ) THEN
130     vStr_tmp =
131     & ( aim_drag(i,j-1,bi,bj)+aim_drag(i,j,bi,bj) )
132     & * 0.5 _d 0 * vVel(i,j,ks,bi,bj)
133     tauY(i,j,bi,bj) = tauY(i,j,bi,bj)
134     & + vStr_tmp*cplTimeFraction
135     ENDIF
136     ENDDO
137     ENDDO
138     ENDIF
139    
140     #endif /* ALLOW_AIM */
141    
142     RETURN
143     END

  ViewVC Help
Powered by ViewVC 1.1.22