/[MITgcm]/MITgcm/pkg/mom_common/mom_calc_hfacz.F
ViewVC logotype

Diff of /MITgcm/pkg/mom_common/mom_calc_hfacz.F

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

revision 1.1 by adcroft, Fri May 14 17:43:11 2004 UTC revision 1.2 by heimbach, Wed Jun 7 01:55:14 2006 UTC
# Line 20  C !USES: =============================== Line 20  C !USES: ===============================
20  #include "SIZE.h"  #include "SIZE.h"
21  #include "GRID.h"  #include "GRID.h"
22    
23    #ifdef ALLOW_AUTODIFF_TAMC
24    # include "EEPARAMS.h"
25    # include "tamc.h"
26    # include "tamc_keys.h"
27    #endif
28    
29  C !INPUT PARAMETERS: ===================================================  C !INPUT PARAMETERS: ===================================================
30  C  bi,bj                :: tile indices  C  bi,bj                :: tile indices
31  C  k                    :: vertical level  C  k                    :: vertical level
# Line 36  C  r_hFacZ              :: reciprocal Line 42  C  r_hFacZ              :: reciprocal
42  C !LOCAL VARIABLES: ====================================================  C !LOCAL VARIABLES: ====================================================
43  C  i,j                  :: loop indices  C  i,j                  :: loop indices
44        INTEGER I,J        INTEGER I,J
45    #ifdef ALLOW_DEPTH_CONTROL
46          _RL hFacZOpen(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
47          _RL hFacZOpenI(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
48          _RL hFacZOpenJ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
49    # ifdef USE_SMOOTH_MIN
50          _RS      smoothMin_R4
51          EXTERNAL smoothMin_R4
52    # endif /* USE_SMOOTH_MIN */
53    #else
54        _RL hFacZOpen        _RL hFacZOpen
55    #endif /* ALLOW_DEPTH_CONTROL */
56  CEOP  CEOP
57    
58    #ifdef ALLOW_AUTODIFF_TAMC
59    #ifdef ALLOW_DEPTH_CONTROL
60              act1 = bi - myBxLo(myThid)
61              max1 = myBxHi(myThid) - myBxLo(myThid) + 1
62              act2 = bj - myByLo(myThid)
63              max2 = myByHi(myThid) - myByLo(myThid) + 1
64              act3 = myThid - 1
65              max3 = nTx*nTy
66              act4 = ikey_dynamics - 1
67              ikey = (act1 + 1) + act2*max1
68         &                      + act3*max1*max2
69         &                      + act4*max1*max2*max3
70              kkey = (ikey-1)*Nr + k
71    #endif /* ALLOW_DEPTH_CONTROL */
72    #endif /* ALLOW_AUTODIFF_TAMC */
73    
74  C--   Calculate open water fraction at vorticity points  C--   Calculate open water fraction at vorticity points
75    
76    #ifdef ALLOW_DEPTH_CONTROL
77          DO j=1-Oly,sNy+Oly
78           DO i=1-Olx,sNx+Olx
79            hFacZ(i,j)     =0.
80            r_hFacZ(i,j)   =0.
81            hFacZOpen(i,j) =0.
82            hFacZOpenJ(i,j)=0.
83            hFacZOpenJ(i,j)=0.
84           ENDDO
85          ENDDO
86    
87    #ifdef    ALLOW_AUTODIFF_TAMC
88    CADJ STORE      hFacZ(:,:) = comlev1_bibj_k , key=kkey, byte=isbyte
89    CADJ STORE    r_hFacZ(:,:) = comlev1_bibj_k , key=kkey, byte=isbyte
90    #endif    /* ALLOW_AUTODIFF_TAMC */
91          DO j=2-Oly,sNy+Oly
92           DO i=2-Olx,sNx+Olx
93            hFacZOpenJ(i,j)=
94    #ifdef USE_SMOOTH_MIN
95         &       smoothMin_R4(_hFacW(i  ,j  ,k,bi,bj),
96    #else
97         &                MIN(_hFacW(i  ,j  ,k,bi,bj),
98    #endif /* USE_SMOOTH_MIN */
99         &                    _hFacW(i  ,j-1,k,bi,bj))
100         &       *maskW(i,j,k,bi,bj)*maskW(i,j-1,k,bi,bj)
101            hFacZOpenI(i,j)=
102    #ifdef USE_SMOOTH_MIN
103         &       smoothMin_R4(_hFacS(i  ,j  ,k,bi,bj),
104    #else
105         &                MIN(_hFacS(i  ,j  ,k,bi,bj),
106    #endif /* USE_SMOOTH_MIN */
107         &                    _hFacS(i-1,j  ,k,bi,bj))
108         &         *maskS(i,j,k,bi,bj)*maskS(i-1,j,k,bi,bj)
109           ENDDO
110          ENDDO
111    #ifdef    ALLOW_AUTODIFF_TAMC
112    #ifdef ALLOW_DEPTH_CONTROL
113    CADJ STORE hFacZOpenI(:,:) = comlev1_bibj_k , key=kkey, byte=isbyte
114    CADJ STORE hFacZOpenJ(:,:) = comlev1_bibj_k , key=kkey, byte=isbyte
115    #endif /* ALLOW_DEPTH_CONTROL */
116    #endif    /* ALLOW_AUTODIFF_TAMC */
117          DO j=2-Oly,sNy+Oly
118           DO i=2-Olx,sNx+Olx
119            hFacZ(i,j) =
120    #ifdef USE_SMOOTH_MIN
121         &       smoothMin_R4(hFacZOpenI(i,j),hFacZOpenJ(i,j))
122    #else
123         &                MIN(hFacZOpenI(i,j),hFacZOpenJ(i,j))
124    #endif /* USE_SMOOTH_MIN */
125         &         *maskW(i,j,k,bi,bj)*maskW(i,j-1,k,bi,bj)
126         &         *maskS(i,j,k,bi,bj)*maskS(i-1,j,k,bi,bj)
127           ENDDO
128          ENDDO
129    #ifdef    ALLOW_AUTODIFF_TAMC
130    #ifdef ALLOW_DEPTH_CONTROL
131    CADJ STORE hFacZ(:,:) = comlev1_bibj_k , key=kkey, byte=isbyte
132    #endif /* ALLOW_DEPTH_CONTROL */
133    #endif    /* ALLOW_AUTODIFF_TAMC */
134          DO j=2-Oly,sNy+Oly
135           DO i=2-Olx,sNx+Olx
136            IF (hFacZ(i,j).EQ.0.) THEN
137             r_hFacZ(i,j)=0.
138            ELSE
139             r_hFacZ(i,j)=1./hFacZ(i,j)
140            ENDIF
141           ENDDO
142          ENDDO
143    #ifdef    ALLOW_AUTODIFF_TAMC
144    #ifdef ALLOW_DEPTH_CONTROL
145    CADJ STORE    r_hFacZ(:,:) = comlev1_bibj_k , key=kkey, byte=isbyte
146    #endif /* ALLOW_DEPTH_CONTROL */
147    #endif    /* ALLOW_AUTODIFF_TAMC */
148    
149    #else /* not ALLOW_DEPTH_CONTROL */
150    
151        DO i=1-Olx,sNx+Olx        DO i=1-Olx,sNx+Olx
152         hFacZ(i,1-Oly)=0.         hFacZ(i,1-Oly)=0.
153         r_hFacZ(i,1-Oly)=0.         r_hFacZ(i,1-Oly)=0.
# Line 62  C--   Calculate open water fraction at v Line 169  C--   Calculate open water fraction at v
169          ENDIF          ENDIF
170         ENDDO         ENDDO
171        ENDDO        ENDDO
172    #endif /* ALLOW_DEPTH_CONTROL */
173    
174        RETURN        RETURN
175        END        END

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

  ViewVC Help
Powered by ViewVC 1.1.22