/[MITgcm]/MITgcm/pkg/offline/offline_get_diffus.F
ViewVC logotype

Contents of /MITgcm/pkg/offline/offline_get_diffus.F

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


Revision 1.2 - (show annotations) (download)
Sun Jul 19 18:17:49 2015 UTC (8 years, 9 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, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65n, checkpoint65o, HEAD
Changes since 1.1: +11 -1 lines
also reset initial vertical velocity (nIter0) if provided from file (Wvelfile)

1 C $Header: /u/gcmpack/MITgcm/pkg/offline/offline_get_diffus.F,v 1.1 2015/07/18 21:43:21 jmc Exp $
2 C $Name: $
3
4 #include "OFFLINE_OPTIONS.h"
5 #ifdef ALLOW_DIC
6 #include "DIC_OPTIONS.h"
7 #endif
8 #ifdef ALLOW_DARWIN
9 #include "DARWIN_OPTIONS.h"
10 #endif
11
12 CBOP
13 C !ROUTINE: OFFLINE_GET_SURFFORCING
14 C !INTERFACE:
15 SUBROUTINE OFFLINE_GET_DIFFUS( myTime, myIter, myThid )
16
17 C !DESCRIPTION: \bv
18 C *==========================================================*
19 C | SUBROUTINE OFFLINE_GET_DIFFUS
20 C | o Interpolate in time diffusivity fields that have
21 C | been loaded from file
22 C *==========================================================*
23 C *==========================================================*
24 C \ev
25
26 C !USES:
27 IMPLICIT NONE
28 C === Global variables ===
29 #include "SIZE.h"
30 #include "EEPARAMS.h"
31 #include "PARAMS.h"
32 #include "DYNVARS.h"
33 #include "FFIELDS.h"
34 #include "OFFLINE.h"
35 #include "OFFLINE_SWITCH.h"
36 #ifdef ALLOW_GMREDI
37 # include "GMREDI.h"
38 #endif
39 #ifdef ALLOW_KPP
40 # include "KPP.h"
41 #endif
42
43 C !INPUT/OUTPUT PARAMETERS:
44 C === Routine arguments ===
45 C myTime :: current time in simulation
46 C myIter :: current iteration number in simulation
47 C myThid :: my Thread Id number
48 _RL myTime
49 INTEGER myIter
50 INTEGER myThid
51 CEOP
52
53 C !LOCAL VARIABLES:
54 INTEGER i,j,k
55 INTEGER bi,bj
56 _RL aWght, bWght
57 #ifdef ALLOW_AUTODIFF
58 _RL locTime
59 INTEGER intimeP, intime0, intime1
60 #endif /* ALLOW_AUTODIFF */
61
62 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
63
64 #ifdef ALLOW_AUTODIFF
65 C-- Re-compute the weights (bWght, aWght) to simplify dependencies
66 C (since they are not stored on tapes)
67 locTime = myTime - offlineTimeOffset
68 CALL GET_PERIODIC_INTERVAL(
69 O intimeP, intime0, intime1, bWght, aWght,
70 I offlineForcingCycle, offlineForcingPeriod,
71 I deltaToffline, locTime, myThid )
72 #endif /* ALLOW_AUTODIFF */
73
74 C-- Interpolate Diffusivity Components:
75 DO bj = myByLo(myThid), myByHi(myThid)
76 DO bi = myBxLo(myThid), myBxHi(myThid)
77 #ifndef ALLOW_AUTODIFF
78 bWght = offline_Wght(1,bi,bj)
79 aWght = offline_Wght(2,bi,bj)
80 #endif /* ndef ALLOW_AUTODIFF */
81
82 IF ( Wvelfile .NE. ' ' .AND. myIter.EQ.nIter0 ) THEN
83 DO k=1,Nr
84 DO j=1-OLy,sNy+OLy
85 DO i=1-OLx,sNx+OLx
86 wVel(i,j,k,bi,bj) = bWght*wvel0(i,j,k,bi,bj)
87 & + aWght*wvel1(i,j,k,bi,bj)
88 ENDDO
89 ENDDO
90 ENDDO
91 ENDIF
92 IF ( offlineLoadConvec ) THEN
93 DO k=1,Nr
94 DO j=1-OLy,sNy+OLy
95 DO i=1-OLx,sNx+OLx
96 IVDConvCount(i,j,k,bi,bj) = bWght*conv0(i,j,k,bi,bj)
97 & + aWght*conv1(i,j,k,bi,bj)
98 ENDDO
99 ENDDO
100 ENDDO
101 ENDIF
102 #ifdef ALLOW_GMREDI
103 IF ( offlineLoadGMRedi ) THEN
104 DO k=1,Nr
105 DO j=1-OLy,sNy+OLy
106 DO i=1-OLx,sNx+OLx
107 Kwx(i,j,k,bi,bj) = bWght*gmkx0(i,j,k,bi,bj)
108 & + aWght*gmkx1(i,j,k,bi,bj)
109 Kwy(i,j,k,bi,bj) = bWght*gmky0(i,j,k,bi,bj)
110 & + aWght*gmky1(i,j,k,bi,bj)
111 Kwz(i,j,k,bi,bj) = bWght*gmkz0(i,j,k,bi,bj)
112 & + aWght*gmkz1(i,j,k,bi,bj)
113 ENDDO
114 ENDDO
115 ENDDO
116 ENDIF
117 #endif
118 #ifdef ALLOW_KPP
119 IF ( offlineLoadKPP ) THEN
120 DO k=1,Nr
121 DO j=1-OLy,sNy+OLy
122 DO i=1-OLx,sNx+OLx
123 KPPdiffKzS(i,j,k,bi,bj) = bWght*kdfs0(i,j,k,bi,bj)
124 & + aWght*kdfs1(i,j,k,bi,bj)
125 C-- Note: for convenience, the array KPPghat will contain
126 C the product ghat*diffKzS (and not ghat alone).
127 KPPghat(i,j,k,bi,bj) = bWght*kght0(i,j,k,bi,bj)
128 & + aWght*kght1(i,j,k,bi,bj)
129 ENDDO
130 ENDDO
131 ENDDO
132 ENDIF
133 #endif
134
135 C-- Interpolate surface forcing
136 #if ( (defined ALLOW_DIC) || (defined ALLOW_DARWIN) )
137 #ifdef ALLOW_OLD_VIRTUALFLUX
138 IF ( SFluxFile.NE.' ' ) THEN
139 DO j=1-OLy,sNy+OLy
140 DO i=1-OLx,sNx+OLx
141 surfaceForcingS(i,j,bi,bj) = bWght*sflx0(i,j,bi,bj)
142 & + aWght*sflx1(i,j,bi,bj)
143 surfaceForcingS(i,j,bi,bj) = surfaceForcingS(i,j,bi,bj)
144 & *mass2rUnit
145 ENDDO
146 ENDDO
147 ENDIF
148 #endif /* ALLOW_OLD_VIRTUALFLUX */
149 #endif /* ALLOW_DIC or ALLOW_DARWIN */
150
151 C-- kept from older version:
152 c surfaceForcingT(i,j,bi,bj) = bWght*hflx0(i,j,bi,bj)
153 c & + aWght*hflx1(i,j,bi,bj)
154 c surfaceForcingT(i,j,bi,bj) = surfaceForcingT(i,j,bi,bj)
155 c & *recip_Cp*mass2rUnit
156 c ICEM(i,j,bi,bj) = bWght*icem0(i,j,bi,bj)
157 c & + aWght*icem1(i,j,bi,bj)
158
159 C-- end bi,bj loops
160 ENDDO
161 ENDDO
162
163 RETURN
164 END

  ViewVC Help
Powered by ViewVC 1.1.22