/[MITgcm]/MITgcm/model/src/ini_forcing.F
ViewVC logotype

Diff of /MITgcm/model/src/ini_forcing.F

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

revision 1.39 by cnh, Mon Nov 7 18:26:02 2005 UTC revision 1.49 by jmc, Fri May 16 01:53:27 2008 UTC
# Line 11  C     !INTERFACE: Line 11  C     !INTERFACE:
11    
12  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
13  C     *==========================================================*  C     *==========================================================*
14  C     | SUBROUTINE INI_FORCING                                      C     | SUBROUTINE INI_FORCING
15  C     | o Set model initial forcing fields.                        C     | o Set model initial forcing fields.
16  C     *==========================================================*  C     *==========================================================*
17  C     \ev  C     \ev
18    
# Line 23  C     === Global variables === Line 23  C     === Global variables ===
23  #include "EEPARAMS.h"  #include "EEPARAMS.h"
24  #include "PARAMS.h"  #include "PARAMS.h"
25  #include "GRID.h"  #include "GRID.h"
26    #include "SURFACE.h"
27  #include "FFIELDS.h"  #include "FFIELDS.h"
28    
29  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
# Line 33  C     myThid -  Number of this instance Line 34  C     myThid -  Number of this instance
34  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
35  C     == Local variables ==  C     == Local variables ==
36  C     bi,bj  - Loop counters  C     bi,bj  - Loop counters
37  C     I,J  C     i, j
38        INTEGER bi, bj        INTEGER bi, bj
39        INTEGER  I,  J        INTEGER  i, j
40  CEOP  CEOP
41    
42        _BARRIER  C-    Initialise all arrays in common blocks
   
43        DO bj = myByLo(myThid), myByHi(myThid)        DO bj = myByLo(myThid), myByHi(myThid)
44         DO bi = myBxLo(myThid), myBxHi(myThid)         DO bi = myBxLo(myThid), myBxHi(myThid)
45          DO j=1-OLy,sNy+OLy          DO j=1-OLy,sNy+OLy
# Line 52  CEOP Line 52  CEOP
52            SST             (i,j,bi,bj) = 0. _d 0            SST             (i,j,bi,bj) = 0. _d 0
53            SSS             (i,j,bi,bj) = 0. _d 0            SSS             (i,j,bi,bj) = 0. _d 0
54            Qsw             (i,j,bi,bj) = 0. _d 0            Qsw             (i,j,bi,bj) = 0. _d 0
55  #ifdef ATMOSPHERIC_LOADING            pLoad           (i,j,bi,bj) = 0. _d 0
           pload           (i,j,bi,bj) = 0. _d 0  
56            sIceLoad        (i,j,bi,bj) = 0. _d 0            sIceLoad        (i,j,bi,bj) = 0. _d 0
57  #endif            surfaceForcingU (i,j,bi,bj) = 0. _d 0
58            surfaceForcingU(i,j,bi,bj) = 0. _d 0            surfaceForcingV (i,j,bi,bj) = 0. _d 0
59            surfaceForcingV(i,j,bi,bj) = 0. _d 0            surfaceForcingT (i,j,bi,bj) = 0. _d 0
60            surfaceForcingT(i,j,bi,bj) = 0. _d 0            surfaceForcingS (i,j,bi,bj) = 0. _d 0
           surfaceForcingS(i,j,bi,bj) = 0. _d 0  
61            surfaceForcingTice(i,j,bi,bj) = 0. _d 0            surfaceForcingTice(i,j,bi,bj) = 0. _d 0
62  #ifndef ALLOW_EXF  #ifndef EXCLUDE_FFIELDS_LOAD
63            taux0           (i,j,bi,bj) = 0. _d 0            taux0           (i,j,bi,bj) = 0. _d 0
64            taux1           (i,j,bi,bj) = 0. _d 0            taux1           (i,j,bi,bj) = 0. _d 0
65            tauy0           (i,j,bi,bj) = 0. _d 0            tauy0           (i,j,bi,bj) = 0. _d 0
# Line 76  CEOP Line 74  CEOP
74            SST1            (i,j,bi,bj) = 0. _d 0            SST1            (i,j,bi,bj) = 0. _d 0
75            SSS0            (i,j,bi,bj) = 0. _d 0            SSS0            (i,j,bi,bj) = 0. _d 0
76            SSS1            (i,j,bi,bj) = 0. _d 0            SSS1            (i,j,bi,bj) = 0. _d 0
77  #ifdef SHORTWAVE_HEATING            #ifdef SHORTWAVE_HEATING
78            Qsw0            (i,j,bi,bj) = 0. _d 0            Qsw0            (i,j,bi,bj) = 0. _d 0
79            Qsw1            (i,j,bi,bj) = 0. _d 0            Qsw1            (i,j,bi,bj) = 0. _d 0
80  #endif  #endif
81  #ifdef ATMOSPHERIC_LOADING  #ifdef ATMOSPHERIC_LOADING
82            pload0          (i,j,bi,bj) = 0. _d 0            pLoad0          (i,j,bi,bj) = 0. _d 0
83            pload1          (i,j,bi,bj) = 0. _d 0            pLoad1          (i,j,bi,bj) = 0. _d 0
 #endif  
84  #endif  #endif
85    #endif /* EXCLUDE_FFIELDS_LOAD */
86           ENDDO           ENDDO
87          ENDDO          ENDDO
88         ENDDO         ENDDO
89        ENDDO        ENDDO
90  C  
91        DO bj = myByLo(myThid), myByHi(myThid)        DO bj = myByLo(myThid), myByHi(myThid)
92         DO bi = myBxLo(myThid), myBxHi(myThid)         DO bi = myBxLo(myThid), myBxHi(myThid)
93          DO J=1-Oly,sNy+Oly          DO j=1-Oly,sNy+Oly
94           DO I=1-Olx,sNx+Olx           DO i=1-Olx,sNx+Olx
95            IF ( doThetaClimRelax .AND.            IF ( doThetaClimRelax .AND.
96       &         abs(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN       &         ABS(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
97             lambdaThetaClimRelax(I,J,bi,bj) = 1./tauThetaClimRelax             lambdaThetaClimRelax(i,j,bi,bj) = 1. _d 0/tauThetaClimRelax
98            ELSE            ELSE
99             lambdaThetaClimRelax(I,J,bi,bj) = 0.D0             lambdaThetaClimRelax(i,j,bi,bj) = 0. _d 0
100            ENDIF            ENDIF
101            IF ( doSaltClimRelax .AND.            IF ( doSaltClimRelax .AND.
102       &         abs(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN       &         ABS(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
103             lambdaSaltClimRelax(I,J,bi,bj) = 1./tauSaltClimRelax             lambdaSaltClimRelax(i,j,bi,bj) = 1. _d 0/tauSaltClimRelax
104            ELSE            ELSE
105             lambdaSaltClimRelax(I,J,bi,bj) = 0.D0             lambdaSaltClimRelax(i,j,bi,bj) = 0. _d 0
106            ENDIF            ENDIF
107           ENDDO           ENDDO
108          ENDDO          ENDDO
109         ENDDO         ENDDO
110        ENDDO        ENDDO
111  C  
112    C-    every-one waits before master thread loads from file
113        _BARRIER        _BARRIER
114        _BEGIN_MASTER(myThid)  
115        IF ( zonalWindFile .NE. ' '  ) THEN        IF ( zonalWindFile .NE. ' '  ) THEN
116         CALL READ_FLD_XY_RS( zonalWindFile, ' ', fu, 0, myThid )         CALL READ_FLD_XY_RS( zonalWindFile, ' ', fu, 0, myThid )
117        ENDIF        ENDIF
# Line 126  C Line 125  C
125        ENDIF        ENDIF
126        IF ( EmPmRfile .NE. ' '  ) THEN        IF ( EmPmRfile .NE. ' '  ) THEN
127         CALL READ_FLD_XY_RS( EmPmRfile, ' ', EmPmR, 0, myThid )         CALL READ_FLD_XY_RS( EmPmRfile, ' ', EmPmR, 0, myThid )
128    c      IF ( convertEmP2rUnit.EQ.mass2rUnit ) THEN
129    C-     EmPmR is now (after c59h) expressed in kg/m2/s (fresh water mass flux)
130            _BARRIER
131            DO bj = myByLo(myThid), myByHi(myThid)
132             DO bi = myBxLo(myThid), myBxHi(myThid)
133              DO j=1-Oly,sNy+Oly
134               DO i=1-Olx,sNx+Olx
135                EmPmR(i,j,bi,bj) = EmPmR(i,j,bi,bj)*rhoConstFresh
136               ENDDO
137              ENDDO
138             ENDDO
139            ENDDO
140    c      ENDIF
141        ENDIF        ENDIF
142        IF ( saltFluxFile .NE. ' '  ) THEN        IF ( saltFluxFile .NE. ' '  ) THEN
143         CALL READ_FLD_XY_RS( saltFluxFile, ' ', saltFlux, 0, myThid )         CALL READ_FLD_XY_RS( saltFluxFile, ' ', saltFlux, 0, myThid )
# Line 137  C Line 149  C
149         CALL READ_FLD_XY_RS( saltClimFile, ' ', SSS, 0, myThid )         CALL READ_FLD_XY_RS( saltClimFile, ' ', SSS, 0, myThid )
150        ENDIF        ENDIF
151        IF ( lambdaThetaFile .NE. ' '  ) THEN        IF ( lambdaThetaFile .NE. ' '  ) THEN
152         CALL READ_FLD_XY_RS( lambdaThetaFile, ' ',         CALL READ_FLD_XY_RS( lambdaThetaFile, ' ',
153       &  lambdaThetaClimRelax, 0, myThid )       &  lambdaThetaClimRelax, 0, myThid )
154        ENDIF        ENDIF
155        IF ( lambdaSaltFile .NE. ' '  ) THEN        IF ( lambdaSaltFile .NE. ' '  ) THEN
156         CALL READ_FLD_XY_RS( lambdaSaltFile, ' ',         CALL READ_FLD_XY_RS( lambdaSaltFile, ' ',
157       &  lambdaSaltClimRelax, 0, myThid )       &  lambdaSaltClimRelax, 0, myThid )
158        ENDIF        ENDIF
159  #ifdef SHORTWAVE_HEATING  #ifdef SHORTWAVE_HEATING
# Line 149  C Line 161  C
161         CALL READ_FLD_XY_RS( surfQswFile, ' ', Qsw, 0, myThid )         CALL READ_FLD_XY_RS( surfQswFile, ' ', Qsw, 0, myThid )
162         IF ( surfQFile .NE. ' '  ) THEN         IF ( surfQFile .NE. ' '  ) THEN
163  C-     Qnet is now (after c54) the net Heat Flux (including SW)  C-     Qnet is now (after c54) the net Heat Flux (including SW)
164          DO bj = 1,nSy          _BARRIER
165           DO bi = 1,nSx          DO bj = myByLo(myThid), myByHi(myThid)
166             DO bi = myBxLo(myThid), myBxHi(myThid)
167            DO j=1-OLy,sNy+OLy            DO j=1-OLy,sNy+OLy
168             DO i=1-OLx,sNx+OLx             DO i=1-OLx,sNx+OLx
169              Qnet(i,j,bi,bj) = Qnet(i,j,bi,bj) + Qsw(i,j,bi,bj)              Qnet(i,j,bi,bj) = Qnet(i,j,bi,bj) + Qsw(i,j,bi,bj)
# Line 163  C-     Qnet is now (after c54) the net H Line 176  C-     Qnet is now (after c54) the net H
176  #endif  #endif
177  #ifdef ATMOSPHERIC_LOADING  #ifdef ATMOSPHERIC_LOADING
178        IF ( pLoadFile .NE. ' '  ) THEN        IF ( pLoadFile .NE. ' '  ) THEN
179         CALL READ_FLD_XY_RS( pLoadFile, ' ', pload, 0, myThid )         CALL READ_FLD_XY_RS( pLoadFile, ' ', pLoad, 0, myThid )
180        ENDIF        ENDIF
181  #endif  #endif
182        _END_MASTER(myThid)  
183  C        CALL EXCH_UV_XY_RS( fu,fv, .TRUE., myThid )
184        _EXCH_XY_R4(fu   , myThid )        CALL EXCH_XY_RS( Qnet , myThid )
185        _EXCH_XY_R4(fv   , myThid )        CALL EXCH_XY_RS( EmPmR, myThid )
186        _EXCH_XY_R4(Qnet , myThid )        CALL EXCH_XY_RS( saltFlux, myThid )
187        _EXCH_XY_R4(EmPmR, myThid )        CALL EXCH_XY_RS( SST  , myThid )
188        _EXCH_XY_R4( saltFlux, myThid )        CALL EXCH_XY_RS( SSS  , myThid )
189        _EXCH_XY_R4(SST  , myThid )        CALL EXCH_XY_RS( lambdaThetaClimRelax, myThid )
190        _EXCH_XY_R4(SSS  , myThid )        CALL EXCH_XY_RS( lambdaSaltClimRelax , myThid )
       _EXCH_XY_R4(lambdaThetaClimRelax , myThid )  
       _EXCH_XY_R4(lambdaSaltClimRelax , myThid )  
191  #ifdef SHORTWAVE_HEATING  #ifdef SHORTWAVE_HEATING
192        _EXCH_XY_R4(Qsw  , myThid )        CALL EXCH_XY_RS(Qsw  , myThid )
193  #endif  #endif
194  #ifdef ATMOSPHERIC_LOADING  #ifdef ATMOSPHERIC_LOADING
195        _EXCH_XY_R4(pload  , myThid )        CALL EXCH_XY_RS(pLoad  , myThid )
196  C     CALL PLOT_FIELD_XYRS( pload, 'S/R INI_FORCING pload',1,myThid)  C     CALL PLOT_FIELD_XYRS( pLoad, 'S/R INI_FORCING pLoad',1,myThid)
197  #endif  #endif
   
198  C     CALL PLOT_FIELD_XYRS( fu, 'S/R INI_FORCING FU',1,myThid)  C     CALL PLOT_FIELD_XYRS( fu, 'S/R INI_FORCING FU',1,myThid)
199  C     CALL PLOT_FIELD_XYRS( fv, 'S/R INI_FORCING FV',1,myThid)  C     CALL PLOT_FIELD_XYRS( fv, 'S/R INI_FORCING FV',1,myThid)
200    
201    #ifdef ATMOSPHERIC_LOADING
202          IF ( pLoadFile .NE. ' ' .AND. usingPCoords ) THEN
203    C-- This is a hack used to read phi0surf from a file (pLoadFile)
204    C          instead of computing it from bathymetry & density ref. profile.
205    C-  Ocean: The true atmospheric P-loading is not yet implemented for P-coord
206    C          (requires time varying dP(Nr) like dP(k-bottom) with NonLin FS).
207    C-  Atmos: sometime usefull to overwrite phi0surf with fixed-in-time field
208    C          read from file (and anyway, pressure loading is meaningless here)
209            DO bj = myByLo(myThid), myByHi(myThid)
210             DO bi = myBxLo(myThid), myBxHi(myThid)
211              DO j=1-OLy,sNy+OLy
212               DO i=1-OLx,sNx+OLx
213                 phi0surf(i,j,bi,bj) = pLoad(i,j,bi,bj)
214               ENDDO
215              ENDDO
216             ENDDO
217            ENDDO
218          ENDIF
219    #endif /* ATMOSPHERIC_LOADING */
220    
221        RETURN        RETURN
222        END        END

Legend:
Removed from v.1.39  
changed lines
  Added in v.1.49

  ViewVC Help
Powered by ViewVC 1.1.22