/[MITgcm]/MITgcm_contrib/PRM/multi_comp_setup/cg/code/parent_override.F
ViewVC logotype

Annotation of /MITgcm_contrib/PRM/multi_comp_setup/cg/code/parent_override.F

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


Revision 1.7 - (hide annotations) (download)
Tue Nov 6 00:22:44 2007 UTC (18 years, 10 months ago) by jmc
Branch: MAIN
Changes since 1.6: +31 -31 lines
compute and store FG model orientation relative to CG model X-direction

1 jmc 1.7 C $Header: /u/gcmpack/MITgcm_contrib/PRM/multi_comp_setup/cg/code/parent_override.F,v 1.6 2007/10/25 22:49:18 jmc Exp $
2 cnh 1.1 C $Name: $
3    
4     #include "PACKAGES_CONFIG.h"
5     #include "CPP_OPTIONS.h"
6    
7     CBOP
8     C !ROUTINE: PARENT_TENDENCY_APPLY_U
9     C !INTERFACE:
10     SUBROUTINE PARENT_TENDENCY_APPLY_U(
11     I iMin,iMax, jMin,jMax, bi,bj, kLev,
12     I myTime, myThid )
13     C !DESCRIPTION: \bv
14     C *==========================================================*
15     C | S/R PARENT_TENDENCY_APPLY_U
16     C | o Contains problem specific forcing for zonal velocity.
17     C *==========================================================*
18     C | Adds terms to gU for forcing by external sources
19 jmc 1.7 C | defined as "parent"
20 cnh 1.1 C *==========================================================*
21     C \ev
22    
23     C !USES:
24     IMPLICIT NONE
25     C == Global data ==
26     #include "SIZE.h"
27     #include "GRID.h"
28     #include "EEPARAMS.h"
29     #include "DYNVARS.h"
30     #include "PARENT_OVERRIDE.h"
31    
32     C !INPUT/OUTPUT PARAMETERS:
33     C == Routine arguments ==
34     C iMin,iMax :: Working range of x-index for applying forcing.
35     C jMin,jMax :: Working range of y-index for applying forcing.
36     C bi,bj :: Current tile indices
37     C kLev :: Current vertical level index
38     C myTime :: Current time in simulation
39     C myThid :: Thread Id number
40     INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
41     _RL myTime
42     INTEGER myThid
43    
44     C !LOCAL VARIABLES:
45     C == Local variables ==
46     C i,j :: Loop counters
47     INTEGER i, j
48     CEOP
49    
50     ! Call routine that applies any "parent" override for
51     ! step "tendency_apply_u".
52     ! I think we will end up with a "parent" or "override"
53     ! package to provide general support for this.
54     IF ( usePO_Tendency_Apply_U) THEN
55     DO j=jMin,jMax
56     DO i=iMin,iMax
57 jmc 1.5 gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
58     & + maskW(i,j,kLev,bi,bj) * ( po_gu(i-1,j,kLev,bi,bj)
59 jmc 1.6 & +po_gu( i, j,kLev,bi,bj)
60     & )*0.5 _d 0
61 cnh 1.1 ENDDO
62     ENDDO
63     ENDIF
64    
65     RETURN
66     END
67    
68     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
69     CBOP
70     C !ROUTINE: PARENT_TENDENCY_APPLY_V
71     C !INTERFACE:
72     SUBROUTINE PARENT_TENDENCY_APPLY_V(
73     I iMin,iMax, jMin,jMax, bi,bj, kLev,
74     I myTime, myThid )
75     C !DESCRIPTION: \bv
76     C *==========================================================*
77     C | S/R PARENT_TENDENCY_APPLY_V
78     C | o Contains problem specific forcing for merid velocity.
79     C *==========================================================*
80     C | Adds terms to gV for forcing by external sources
81 jmc 1.7 C | defined as "parent".
82 cnh 1.1 C *==========================================================*
83     C \ev
84    
85     C !USES:
86     IMPLICIT NONE
87     C == Global data ==
88     #include "SIZE.h"
89     #include "EEPARAMS.h"
90     #include "PARAMS.h"
91     #include "GRID.h"
92     #include "DYNVARS.h"
93     #include "PARENT_OVERRIDE.h"
94    
95     C !INPUT/OUTPUT PARAMETERS:
96     C == Routine arguments ==
97     C iMin,iMax :: Working range of x-index for applying forcing.
98     C jMin,jMax :: Working range of y-index for applying forcing.
99     C bi,bj :: Current tile indices
100     C kLev :: Current vertical level index
101     C myTime :: Current time in simulation
102     C myThid :: Thread Id number
103     INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
104     _RL myTime
105     INTEGER myThid
106    
107     C !LOCAL VARIABLES:
108     C == Local variables ==
109     C i,j :: Loop counters
110     C kSurface :: index of surface layer
111     INTEGER i, j
112     INTEGER kSurface
113     CEOP
114 cnh 1.2 IF ( usePO_Tendency_Apply_V) THEN
115     DO j=jMin,jMax
116     DO i=iMin,iMax
117 jmc 1.5 gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
118     & + maskS(i,j,kLev,bi,bj) * ( po_gv(i,j-1,kLev,bi,bj)
119 jmc 1.6 & +po_gv(i, j, kLev,bi,bj)
120     & )*0.5 _d 0
121 cnh 1.2 ENDDO
122     ENDDO
123     ENDIF
124 cnh 1.1
125     RETURN
126     END
127    
128     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
129     CBOP
130     C !ROUTINE: EXTERNAL_FORCING_T
131     C !INTERFACE:
132     SUBROUTINE PARENT_TENDENCY_APPLY_T(
133     I iMin,iMax, jMin,jMax, bi,bj, kLev,
134     I myTime, myThid )
135     C !DESCRIPTION: \bv
136     C *==========================================================*
137     C | S/R EXTERNAL_FORCING_T
138     C | o Contains problem specific forcing for temperature.
139     C *==========================================================*
140     C | Adds terms to gT for forcing by external sources
141     C | e.g. heat flux, climatalogical relaxation, etc ...
142     C *==========================================================*
143     C \ev
144    
145     C !USES:
146     IMPLICIT NONE
147     C == Global data ==
148     #include "SIZE.h"
149     #include "EEPARAMS.h"
150     #include "PARAMS.h"
151     #include "GRID.h"
152     #include "DYNVARS.h"
153     #include "FFIELDS.h"
154 cnh 1.2 #include "PARENT_OVERRIDE.h"
155 cnh 1.1
156     C !INPUT/OUTPUT PARAMETERS:
157     C == Routine arguments ==
158     C iMin,iMax :: Working range of x-index for applying forcing.
159     C jMin,jMax :: Working range of y-index for applying forcing.
160     C bi,bj :: Current tile indices
161     C kLev :: Current vertical level index
162     C myTime :: Current time in simulation
163     C myThid :: Thread Id number
164     INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
165     _RL myTime
166     INTEGER myThid
167    
168     C !LOCAL VARIABLES:
169     C == Local variables ==
170     C i,j :: Loop counters
171     C kSurface :: index of surface layer
172     INTEGER i, j
173     INTEGER kSurface
174     CEOP
175    
176 cnh 1.2 IF ( usePO_Tendency_Apply_Theta) THEN
177     DO j=jMin,jMax
178     DO i=iMin,iMax
179     gT(i,j,kLev,bi,bj) = gT(i,j,kLev,bi,bj) +
180 jmc 1.4 . maskC(i,j,kLev,bi,bj) * po_gTheta(i,j,kLev,bi,bj)
181 cnh 1.2 ENDDO
182     ENDDO
183     ENDIF
184    
185     RETURN
186     END
187    
188    
189 jmc 1.7 SUBROUTINE SET_DDTVARS( gUVelC, gVVelC, gThetaC,
190 jmc 1.5 I cnx, cny, cnr, myThid )
191 cnh 1.2
192     IMPLICIT NONE
193    
194     #include "SIZE.h"
195     #include "EEPARAMS.h"
196     #include "PARAMS.h"
197 jmc 1.7 #include "ORIENTATION.h"
198 cnh 1.2 #include "PARENT_OVERRIDE.h"
199    
200 jmc 1.5 C myThid :: Thread Id number
201     INTEGER myThid
202 cnh 1.2 INTEGER cnx, cny, cnr
203     REAL*8 gUVelC( cnx, cny, cnr)
204     REAL*8 gVVelC( cnx, cny, cnr)
205     REAL*8 gThetaC(cnx, cny, cnr)
206    
207 jmc 1.7 INTEGER i,j,k
208 cnh 1.2
209 jmc 1.7 IF ( cnx .NE. sNx ) THEN
210     STOP 'SET_DTTVARS cnx NE sNx'
211 cnh 1.2 ENDIF
212 jmc 1.7 IF ( cny .NE. sNy ) THEN
213     STOP 'SET_DTTVARS cny NE sNy'
214 cnh 1.2 ENDIF
215 jmc 1.7 IF ( cnr .NE. Nr ) THEN
216     STOP 'SET_DTTVARS cnr NE Nr'
217     ENDIF
218    
219     DO k=1,Nr
220     DO j=1,sNy
221     DO i=1,sNx
222     IF ( velDvRMS(i,j,1,1).GT.0. _d 0 ) THEN
223     po_gu(i,j,k,1,1) = gUVelC(i,j,k)*cAngleFG(i,j,1,1)
224     & - gVVelC(i,j,k)*sAngleFG(i,j,1,1)
225     po_gv(i,j,k,1,1) = gVVelC(i,j,k)*cAngleFG(i,j,1,1)
226     & + gUVelC(i,j,k)*sAngleFG(i,j,1,1)
227     ELSE
228     po_gu(i,j,k,1,1) = 0. _d 0
229     po_gv(i,j,k,1,1) = 0. _d 0
230     ENDIF
231 cnh 1.3 ENDDO
232     ENDDO
233     ENDDO
234    
235 jmc 1.7 DO k=1,Nr
236     DO j=1,sNy
237     DO i=1,sNx
238     po_gTheta(i,j,k,1,1) = gThetaC(i,j,k)
239 cnh 1.3 ENDDO
240     ENDDO
241     ENDDO
242 jmc 1.5 C-- po_gu & po_gv are both on A-grid
243 jmc 1.7 CALL EXCH_UV_AGRID_3D_RL(po_gu,po_gv,.TRUE.,Nr,myThid)
244 cnh 1.3
245 cnh 1.1 RETURN
246     END
247 cnh 1.2

  ViewVC Help
Powered by ViewVC 1.1.22