/[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.9.2.1 by cnh, Fri Jun 19 04:55:13 1998 UTC revision 1.39 by cnh, Mon Nov 7 18:26:02 2005 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2    C $Name$
3    
4  #include "CPP_EEOPTIONS.h"  #include "PACKAGES_CONFIG.h"
5    #include "CPP_OPTIONS.h"
6    
7  CStartOfInterface  CBOP
8    C     !ROUTINE: INI_FORCING
9    C     !INTERFACE:
10        SUBROUTINE INI_FORCING( myThid )        SUBROUTINE INI_FORCING( myThid )
 C     /==========================================================\  
 C     | SUBROUTINE INI_FORCING                                   |  
 C     | o Set model initial forcing fields.                      |  
 C     \==========================================================/  
11    
12    C     !DESCRIPTION: \bv
13    C     *==========================================================*
14    C     | SUBROUTINE INI_FORCING                                    
15    C     | o Set model initial forcing fields.                      
16    C     *==========================================================*
17    C     \ev
18    
19    C     !USES:
20          IMPLICIT NONE
21  C     === Global variables ===  C     === Global variables ===
22  #include "SIZE.h"  #include "SIZE.h"
23  #include "EEPARAMS.h"  #include "EEPARAMS.h"
# Line 16  C     === Global variables === Line 25  C     === Global variables ===
25  #include "GRID.h"  #include "GRID.h"
26  #include "FFIELDS.h"  #include "FFIELDS.h"
27    
28    C     !INPUT/OUTPUT PARAMETERS:
29  C     == Routine arguments ==  C     == Routine arguments ==
30  C     myThid -  Number of this instance of INI_FORCING  C     myThid -  Number of this instance of INI_FORCING
31        INTEGER myThid        INTEGER myThid
 CEndOfInterface  
32    
33    C     !LOCAL VARIABLES:
34  C     == Local variables ==  C     == Local variables ==
 C     iG, jG - Global coordinate index  
35  C     bi,bj  - Loop counters  C     bi,bj  - Loop counters
36  C     I,J,K  C     I,J
 C     distY  - Distance accross domain of point j  
 C     lY     - Width of the basin ( last point is land )  
 C     tauMax - Peak zonal wind stress ( N/m^2 )  
 C     tauX   - Local zonal wind stress  
       INTEGER iG, jG  
37        INTEGER bi, bj        INTEGER bi, bj
38        INTEGER  I,  J, K        INTEGER  I,  J
39        _RL distY  CEOP
       _RL lY  
       _RL tauX, tauMax  
40    
41        _BARRIER        _BARRIER
42    
43  C--   Initialise surface bc arrays        DO bj = myByLo(myThid), myByHi(myThid)
44        IF ( zonalWindFile .EQ. ' ' ) THEN         DO bi = myBxLo(myThid), myBxHi(myThid)
45  C      In cartesian yc, delY and ly are meters.          DO j=1-OLy,sNy+OLy
46  C      In spherical polar yc, delY and ly are degrees           DO i=1-OLx,sNx+OLx
47         tauMax = 0.1 _d 0            fu              (i,j,bi,bj) = 0. _d 0
48         lY = 0. _d 0            fv              (i,j,bi,bj) = 0. _d 0
49         DO j=1,nY-1            Qnet            (i,j,bi,bj) = 0. _d 0
50          lY = lY + delY(j)            EmPmR           (i,j,bi,bj) = 0. _d 0
51         ENDDO            saltFlux        (i,j,bi,bj) = 0. _d 0
52         DO bj = myByLo(myThid), myByHi(myThid)            SST             (i,j,bi,bj) = 0. _d 0
53          DO bi = myBxLo(myThid), myBxHi(myThid)            SSS             (i,j,bi,bj) = 0. _d 0
54           DO j=1-OLy,sNy+OLy            Qsw             (i,j,bi,bj) = 0. _d 0
55            DO i=1-OLx,sNx+OLx  #ifdef ATMOSPHERIC_LOADING
56             fu(i,j,bi,bj) = 0. _d 0            pload           (i,j,bi,bj) = 0. _d 0
57             fv(i,j,bi,bj) = 0. _d 0            sIceLoad        (i,j,bi,bj) = 0. _d 0
58            ENDDO  #endif
59           ENDDO            surfaceForcingU(i,j,bi,bj) = 0. _d 0
60          ENDDO            surfaceForcingV(i,j,bi,bj) = 0. _d 0
61         ENDDO            surfaceForcingT(i,j,bi,bj) = 0. _d 0
62         DO bj = myByLo(myThid), myByHi(myThid)            surfaceForcingS(i,j,bi,bj) = 0. _d 0
63          DO bi = myBxLo(myThid), myBxHi(myThid)            surfaceForcingTice(i,j,bi,bj) = 0. _d 0
64           DO j=1,sNy  #ifndef ALLOW_EXF
65            DO i=1,sNx            taux0           (i,j,bi,bj) = 0. _d 0
66             distY = (yC(i,j,bi,bj)-yC0)/lY            taux1           (i,j,bi,bj) = 0. _d 0
67             tauX  = -tauMax*cos(2. _d 0*PI*distY)            tauy0           (i,j,bi,bj) = 0. _d 0
68             tauX  = tauMax*sin(PI*distY)            tauy1           (i,j,bi,bj) = 0. _d 0
69             fu(i,j,bi,bj) = tauX/(delZ(1)*rhonil)            Qnet0           (i,j,bi,bj) = 0. _d 0
70  C          fu(i,j,bi,bj) = -tauMax            Qnet1           (i,j,bi,bj) = 0. _d 0
71            ENDDO            EmPmR0          (i,j,bi,bj) = 0. _d 0
72              EmPmR1          (i,j,bi,bj) = 0. _d 0
73              saltFlux0       (i,j,bi,bj) = 0. _d 0
74              saltFlux1       (i,j,bi,bj) = 0. _d 0
75              SST0            (i,j,bi,bj) = 0. _d 0
76              SST1            (i,j,bi,bj) = 0. _d 0
77              SSS0            (i,j,bi,bj) = 0. _d 0
78              SSS1            (i,j,bi,bj) = 0. _d 0
79    #ifdef SHORTWAVE_HEATING          
80              Qsw0            (i,j,bi,bj) = 0. _d 0
81              Qsw1            (i,j,bi,bj) = 0. _d 0
82    #endif
83    #ifdef ATMOSPHERIC_LOADING
84              pload0          (i,j,bi,bj) = 0. _d 0
85              pload1          (i,j,bi,bj) = 0. _d 0
86    #endif
87    #endif
88           ENDDO           ENDDO
89          ENDDO          ENDDO
90         ENDDO         ENDDO
91         fu(4,4,1,1) = fu(4,4,1,1)*0.917d0        ENDDO
92        ELSE  C
93         _BEGIN_MASTER(myThid)        DO bj = myByLo(myThid), myByHi(myThid)
94         CALL READ_FLD_XY_RS( zonalWindFile, ' ', fu, 0, myThid )         DO bi = myBxLo(myThid), myBxHi(myThid)
95         DO bj = myByLo(myThid), myByHi(myThid)          DO J=1-Oly,sNy+Oly
96          DO bi = myBxLo(myThid), myBxHi(myThid)           DO I=1-Olx,sNx+Olx
97           DO j=1,sNy            IF ( doThetaClimRelax .AND.
98            DO i=1,sNx       &         abs(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
99             fu(i,j,bi,bj) = fu(i,j,bi,bj)/(delZ(1)*rhonil)             lambdaThetaClimRelax(I,J,bi,bj) = 1./tauThetaClimRelax
100  C          fu(i,j,bi,bj) = 0.1/(delZ(1)*rhonil)            ELSE
101            ENDDO             lambdaThetaClimRelax(I,J,bi,bj) = 0.D0
102              ENDIF
103              IF ( doSaltClimRelax .AND.
104         &         abs(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
105               lambdaSaltClimRelax(I,J,bi,bj) = 1./tauSaltClimRelax
106              ELSE
107               lambdaSaltClimRelax(I,J,bi,bj) = 0.D0
108              ENDIF
109           ENDDO           ENDDO
110          ENDDO          ENDDO
111         ENDDO         ENDDO
112         _END_MASTER(myThid)        ENDDO
       ENDIF  
113  C  C
114        _BARRIER        _BARRIER
115          _BEGIN_MASTER(myThid)
116        IF ( meridWindFile .EQ. ' ' ) THEN        IF ( zonalWindFile .NE. ' '  ) THEN
117         DO bj = myByLo(myThid), myByHi(myThid)         CALL READ_FLD_XY_RS( zonalWindFile, ' ', fu, 0, myThid )
118          DO bi = myBxLo(myThid), myBxHi(myThid)        ENDIF
119           DO j=1-OLy,sNy+OLy        IF ( meridWindFile .NE. ' '  ) THEN
           DO i=1-OLx,sNx+OLx  
            fv(i,j,bi,bj) = 0. _d 0  
           ENDDO  
          ENDDO  
         ENDDO  
        ENDDO  
       ELSE  
        _BEGIN_MASTER(myThid)  
120         CALL READ_FLD_XY_RS( meridWindFile, ' ', fv, 0, myThid )         CALL READ_FLD_XY_RS( meridWindFile, ' ', fv, 0, myThid )
121         DO bj = myByLo(myThid), myByHi(myThid)        ENDIF
122          DO bi = myBxLo(myThid), myBxHi(myThid)        IF ( surfQFile .NE. ' '  ) THEN
123           DO j=1,sNy         CALL READ_FLD_XY_RS( surfQFile, ' ', Qnet, 0, myThid )
124            DO i=1,sNx        ELSEIF ( surfQnetFile .NE. ' '  ) THEN
125             fv(i,j,bi,bj) = fv(i,j,bi,bj)/(delZ(1)*rhonil)         CALL READ_FLD_XY_RS( surfQnetFile, ' ', Qnet, 0, myThid )
126          ENDIF
127          IF ( EmPmRfile .NE. ' '  ) THEN
128           CALL READ_FLD_XY_RS( EmPmRfile, ' ', EmPmR, 0, myThid )
129          ENDIF
130          IF ( saltFluxFile .NE. ' '  ) THEN
131           CALL READ_FLD_XY_RS( saltFluxFile, ' ', saltFlux, 0, myThid )
132          ENDIF
133          IF ( thetaClimFile .NE. ' '  ) THEN
134           CALL READ_FLD_XY_RS( thetaClimFile, ' ', SST, 0, myThid )
135          ENDIF
136          IF ( saltClimFile .NE. ' '  ) THEN
137           CALL READ_FLD_XY_RS( saltClimFile, ' ', SSS, 0, myThid )
138          ENDIF
139          IF ( lambdaThetaFile .NE. ' '  ) THEN
140           CALL READ_FLD_XY_RS( lambdaThetaFile, ' ',
141         &  lambdaThetaClimRelax, 0, myThid )
142          ENDIF
143          IF ( lambdaSaltFile .NE. ' '  ) THEN
144           CALL READ_FLD_XY_RS( lambdaSaltFile, ' ',
145         &  lambdaSaltClimRelax, 0, myThid )
146          ENDIF
147    #ifdef SHORTWAVE_HEATING
148          IF ( surfQswFile .NE. ' '  ) THEN
149           CALL READ_FLD_XY_RS( surfQswFile, ' ', Qsw, 0, myThid )
150           IF ( surfQFile .NE. ' '  ) THEN
151    C-     Qnet is now (after c54) the net Heat Flux (including SW)
152            DO bj = 1,nSy
153             DO bi = 1,nSx
154              DO j=1-OLy,sNy+OLy
155               DO i=1-OLx,sNx+OLx
156                Qnet(i,j,bi,bj) = Qnet(i,j,bi,bj) + Qsw(i,j,bi,bj)
157               ENDDO
158            ENDDO            ENDDO
159           ENDDO           ENDDO
160          ENDDO          ENDDO
161         ENDDO         ENDIF
162         _END_MASTER(myThid)        ENDIF
163    #endif
164    #ifdef ATMOSPHERIC_LOADING
165          IF ( pLoadFile .NE. ' '  ) THEN
166           CALL READ_FLD_XY_RS( pLoadFile, ' ', pload, 0, myThid )
167        ENDIF        ENDIF
168    #endif
169          _END_MASTER(myThid)
170  C  C
171        _EXCH_XY_R4(fu  , myThid )        _EXCH_XY_R4(fu   , myThid )
172        _EXCH_XY_R4(fv  , myThid )        _EXCH_XY_R4(fv   , myThid )
173          _EXCH_XY_R4(Qnet , myThid )
174          _EXCH_XY_R4(EmPmR, myThid )
175          _EXCH_XY_R4( saltFlux, myThid )
176          _EXCH_XY_R4(SST  , myThid )
177          _EXCH_XY_R4(SSS  , myThid )
178          _EXCH_XY_R4(lambdaThetaClimRelax , myThid )
179          _EXCH_XY_R4(lambdaSaltClimRelax , myThid )
180    #ifdef SHORTWAVE_HEATING
181          _EXCH_XY_R4(Qsw  , myThid )
182    #endif
183    #ifdef ATMOSPHERIC_LOADING
184          _EXCH_XY_R4(pload  , myThid )
185    C     CALL PLOT_FIELD_XYRS( pload, 'S/R INI_FORCING pload',1,myThid)
186    #endif
187    
188        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)
189        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)
190    
191        RETURN        RETURN
192        END        END

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

  ViewVC Help
Powered by ViewVC 1.1.22