/[MITgcm]/MITgcm/pkg/cheapaml/cheapaml_fields_load.F
ViewVC logotype

Diff of /MITgcm/pkg/cheapaml/cheapaml_fields_load.F

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

revision 1.7 by jmc, Sun Feb 6 00:18:05 2011 UTC revision 1.11 by jmc, Thu Apr 21 15:15:54 2011 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "CHEAPAML_OPTIONS.h"  #include "CHEAPAML_OPTIONS.h"
5    
6    
7  C     !ROUTINE: CHEAPAML_FIELDS_LOAD  C     !ROUTINE: CHEAPAML_FIELDS_LOAD
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE CHEAPAML_FIELDS_LOAD( myTime, myIter, myThid )        SUBROUTINE CHEAPAML_FIELDS_LOAD( myTime, myIter, myThid )
# Line 21  C     === Global variables === Line 22  C     === Global variables ===
22  c #include "GRID.h"  c #include "GRID.h"
23  c #include "DYNVARS.h"  c #include "DYNVARS.h"
24  C #include "BULKF.h"  C #include "BULKF.h"
25  c #ifdef ALLOW_THSICE  c#ifdef ALLOW_THSICE
26  c #include "THSICE_VARS.h"  c#include "THSICE_VARS.h"
27  c #endif  c#endif
28  #include "CHEAPAML.h"  #include "CHEAPAML.h"
29    
30  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
# Line 50  C     qrair[01]  :: Relaxation specific Line 51  C     qrair[01]  :: Relaxation specific
51  C     solar[01]  :: short wave flux  C     solar[01]  :: short wave flux
52  C     uwind[01]  :: zonal wind  C     uwind[01]  :: zonal wind
53  C     vwind[01]  :: meridional wind  C     vwind[01]  :: meridional wind
54    C     CheaptracerR[01] :: Relaxation profile for passive tracer
55  C     aWght, bWght :: Interpolation weights  C     aWght, bWght :: Interpolation weights
56    
57        COMMON /BULKFFIELDS/        COMMON /CHEAPAML_FIELDS_LOAD_I/ cheapaml_ldRec
58          COMMON /CHEAPAML_FIELDS_LOAD_RL/
59       &         trair0,   trair1,       &         trair0,   trair1,
60       &         qrair0,   qrair1,       &         qrair0,   qrair1,
61       &         Solar0,   Solar1,       &         Solar0,   Solar1,
# Line 62  C     aWght, bWght :: Interpolation weig Line 65  C     aWght, bWght :: Interpolation weig
65       &         vstress0, vstress1,       &         vstress0, vstress1,
66       &         wavesh0,  wavesh1,       &         wavesh0,  wavesh1,
67       &         wavesp0,  wavesp1,       &         wavesp0,  wavesp1,
68       &         rair0,    rair1       &         rair0,    rair1,
69         &         CheaptracerR0, CheaptracerR1
70    
71          INTEGER cheapaml_ldRec(nSx,nSy)
72        _RL  trair0    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL  trair0    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
73        _RL  trair1    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL  trair1    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
74        _RL  qrair0    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL  qrair0    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
# Line 84  C     aWght, bWght :: Interpolation weig Line 89  C     aWght, bWght :: Interpolation weig
89        _RL  wavesp1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL  wavesp1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
90        _RL  rair0  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL  rair0  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
91        _RL  rair1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL  rair1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
92          _RL  CheaptracerR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
93          _RL  CheaptracerR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
94    
95        INTEGER bi,bj,i,j,intime0,intime1        INTEGER intimeP, intime0, intime1
96          INTEGER bi,bj,i,j
97        INTEGER iG,jG        INTEGER iG,jG
98        _RL aWght,bWght,rdt,u          _RL aWght,bWght,u
99        _RL ssq0,ssq1,ssq2,ssqa          _RL ssq0,ssq1,ssq2,ssqa
100  c xsolph - phase of year, assuming time zero is mid winter  c xsolph - phase of year, assuming time zero is mid winter
101  c xinxx - cos ( xsolph )  c xinxx - cos ( xsolph )
102        _RL xsolph,xinxx          _RL xsolph,xinxx
       INTEGER nForcingPeriods,Imytm,Ifprd,Ifcyc,Iftm  
103  c coefficients used to compute saturation specific humidity  c coefficients used to compute saturation specific humidity
104        DATA   ssq0,           ssq1,           ssq2          DATA   ssq0,           ssq1,           ssq2
105       &     / 3.797915 _d 0 , 7.93252 _d -6 , 2.166847 _d -3 /       &     / 3.797915 _d 0 , 7.93252 _d -6 , 2.166847 _d -3 /
106    
107        IF ( periodicExternalForcing ) THEN        IF ( periodicExternalForcing_cheap ) THEN
108    
109    
110  c the objective here is to give cheapaml a default periodic forcing  c the objective here is to give cheapaml a default periodic forcing
111  c consisting only of annually varying solar forcing, and thus Trelaxation  c consisting only of annually varying solar forcing, and thus Trelaxation
# Line 106  c keys off of solardata.  if a solar dat Line 114  c keys off of solardata.  if a solar dat
114  c assume there are files to be read and interpolated between, as is standard  c assume there are files to be read and interpolated between, as is standard
115  c for the MITGCM.  c for the MITGCM.
116    
117         IF ( SolarFile .EQ. ' '  ) THEN        IF ( SolarFile .EQ. ' '  ) THEN
118          IF (useStressOption)then        IF (useStressOption)then
119           write(*,*)' stress option is turned on.  this is not',          write(*,*)' stress option is turned on.  this is not
120       &   'consistent with the default time dependent forcing option'       & consistent with the default time dependent forcing option'
121           STOP 'ABNORMAL END: S/R CHEAPAML_FIELDS_LOAD'          stop
122          ENDIF          ENDIF
123          if ( myIter .EQ. nIter0 )then           if ( myIter .EQ. nIter0 )then
124           WRITE(*,*)           WRITE(*,*)
125       &   'S/R  Assuming Standard Annually Varying Solar Forcing'       &  'S/R  Assuming Standard Annually Varying Solar Forcing'
126          endif           endif
127          xsolph=myTime*2.d0*3.14159 _d 0/365. _d 0/86400. _d 0           xsolph=myTime*2.d0*3.14159 _d 0/365. _d 0/86400. _d 0
128          xinxx=cos(xsolph+xphaseinit+3.14159 _d 0)           xinxx=cos(xsolph+xphaseinit+3.14159 _d 0)
129          DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
130           DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
131            DO j=1,sNy             DO j=1,sNy
132             DO i=1,sNx              DO i=1,sNx
133              jG = myYGlobalLo-1+(bj-1)*sNy+j                    jG = myYGlobalLo-1+(bj-1)*sNy+j
134              local=225.d0+dsolms*xinxx-float((jg-1))/float((ny-1))*              local=225.d0+dsolms*xinxx-float((jg-1))/float((ny-1))*
135       &        (37.5d0-dsolmn*xinxx)       &        (37.5d0-dsolmn*xinxx)
136              Solar(i,j,bi,bj) = local                    Solar(i,j,bi,bj) = local
137                ENDDO
138             ENDDO             ENDDO
139            ENDDO            ENDDO
140           ENDDO           ENDDO
141          ENDDO           _EXCH_XY_RL(solar, mythid)
         _EXCH_XY_RL(solar, myThid)  
142  c relaxation temperature in radiative equilibrium  c relaxation temperature in radiative equilibrium
143          DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
144           DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
145            DO j=1,sNy             DO j=1,sNy
146             DO i=1,sNx              DO i=1,sNx
147              jG = myYGlobalLo-1+(bj-1)*sNy+j            jG = myYGlobalLo-1+(bj-1)*sNy+j
148              local=solar(i,j,bi,bj)            local=solar(i,j,bi,bj)
149              local=(2.d0*local/stefan)**(0.25d0)-Celcius2K            local=(2.d0*local/stefan)**(0.25d0)-Celsius2K
150              Tr(i,j,bi,bj) = local            TR(i,j,bi,bj) = local
151                ENDDO
152             ENDDO             ENDDO
153            ENDDO            ENDDO
154           ENDDO           ENDDO
155          ENDDO           _EXCH_XY_RL(TR, mythid)
         _EXCH_XY_RL(Tr, myThid)  
156  c default specific humidity profile to 80% relative humidity  c default specific humidity profile to 80% relative humidity
157          DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
158           DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
159            DO j=1,sNy             DO j=1,sNy
160             DO i=1,sNx              DO i=1,sNx
161  c           jG = myYGlobalLo-1+(bj-1)*sNy+j  c                  jG = myYGlobalLo-1+(bj-1)*sNy+j
162              local = Tr(i,j,bi,bj)+Celcius2K                    local = Tr(i,j,bi,bj)+Celsius2K
163              ssqa = ssq0*exp( lath*(ssq1-ssq2/local)) / p0                ssqa = ssq0*exp( lath*(ssq1-ssq2/local)) / p0
164              qr(i,j,bi,bj) = 0.8d0*ssqa                    qr(i,j,bi,bj) = 0.8d0*ssqa
165                ENDDO
166             ENDDO             ENDDO
167            ENDDO            ENDDO
168           ENDDO           ENDDO
169          ENDDO           _EXCH_XY_RL(qr, mythid)
         _EXCH_XY_RL(qr, myThid)  
170  c u wind field  c u wind field
171          DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
172           DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
173            DO j=1,sNy             DO j=1,sNy
174             DO i=1,sNx              DO i=1,sNx
175              jG = myYGlobalLo-1+(bj-1)*sNy+j                    jG = myYGlobalLo-1+(bj-1)*sNy+j
176              local=-5.d0*cos(2.d0*pi*float(jg-1)/(float(ny-1)))                    local=-5.d0*cos(2.d0*pi*float(jg-1)/(float(ny-1)))
177              uwind(i,j,bi,bj) = local                    uwind(i,j,bi,bj) = local
178                ENDDO
179             ENDDO             ENDDO
180            ENDDO            ENDDO
181           ENDDO           ENDDO
182          ENDDO           _EXCH_XY_RL(uwind, mythid)
         _EXCH_XY_RL(uwind, myThid)  
183  c v wind field  c v wind field
184          DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
185           DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
186            DO j=1,sNy             DO j=1,sNy
187             DO i=1,sNx              DO i=1,sNx
188              jG = myYGlobalLo-1+(bj-1)*sNy+j                    jG = myYGlobalLo-1+(bj-1)*sNy+j
189              vwind(i,j,bi,bj) = 0.d0                    vwind(i,j,bi,bj) = 0.d0
190                ENDDO
191             ENDDO             ENDDO
192            ENDDO            ENDDO
193           ENDDO           ENDDO
194          ENDDO           _EXCH_XY_RL(vwind, mythid)
195          _EXCH_XY_RL(vwind, myThid)  C Tracer field
196             IF (useCheapTracer) THEN
        ELSE  
 C      else: solarFile non empty  
   
 C here for usual interpolative forcings  
 C First call requires that we initialize everything to zero for safety  
         IF ( myIter .EQ. nIter0 ) THEN  
197           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
198            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
199             DO j=1-OLy,sNy+OLy              DO j=1,sNy
200              DO i=1-OLx,sNx+OLx                 DO i=1,sNx
201                trair0  (i,j,bi,bj) = 0.                       jG = myYGlobalLo-1+(bj-1)*sNy+j
202                trair1  (i,j,bi,bj) = 0.                       CheaptracerR(i,j,bi,bj) = 290. _d 0
203                qrair0  (i,j,bi,bj) = 0.                 ENDDO
               qrair1  (i,j,bi,bj) = 0.  
               solar0  (i,j,bi,bj) = 0.  
               solar1  (i,j,bi,bj) = 0.  
               uwind0  (i,j,bi,bj) = 0.  
               uwind1  (i,j,bi,bj) = 0.  
               vwind0  (i,j,bi,bj) = 0.  
               vwind1  (i,j,bi,bj) = 0.  
               ustress0(i,j,bi,bj) = 0.  
               ustress1(i,j,bi,bj) = 0.  
               vstress0(i,j,bi,bj) = 0.  
               vstress1(i,j,bi,bj) = 0.  
               wavesh0 (i,j,bi,bj) = 0.  
               wavesh1 (i,j,bi,bj) = 0.  
               wavesp0 (i,j,bi,bj) = 0.  
               wavesp1 (i,j,bi,bj) = 0.  
               rair0   (i,j,bi,bj) = 0.  
               rair1   (i,j,bi,bj) = 0.  
             ENDDO  
204             ENDDO             ENDDO
205            ENDDO            ENDDO
206           ENDDO           ENDDO
207          ENDIF           ENDIF
208              _EXCH_XY_RL(CheaptracerR, mythid)
209    
210  C Now calculate whether it is time to update the forcing arrays        ELSE
         rdt=1. _d 0 / deltaTclock  
         nForcingPeriods=  
      &   int(externForcingCycle/externForcingPeriod+0.5)  
         Imytm=int(myTime*rdt+0.5)  
         Ifprd=int(externForcingPeriod*rdt+0.5)  
         Ifcyc=int(externForcingCycle*rdt+0.5)  
         Iftm=mod( Imytm+Ifcyc-Ifprd/2 ,Ifcyc)  
   
         intime0=int(Iftm/Ifprd)  
         intime1=mod(intime0+1,nForcingPeriods)  
 c       aWght=float( Iftm-Ifprd*intime0 )/float( Ifprd )  
         aWght=dfloat( Iftm-Ifprd*intime0 )/dfloat( Ifprd )  
         bWght=1.-aWght  
   
         intime0=intime0+1  
         intime1=intime1+1  
   
         IF (  
      &       Iftm-Ifprd*(intime0-1) .EQ. 0  
      &      .OR. myIter .EQ. nIter0  
      &     ) THEN  
211    
212  C      If the above condition is met then we need to read in  c here for usual interpolative forcings
213  C      data for the period ahead and the period behind myTime.  C First call requires that we initialize everything to zero for safety
214           WRITE(*,*)        IF ( myIter .EQ. nIter0 ) THEN
215       &     'S/R CHEAPAML_FIELDS_LOAD'          DO bj = myByLo(myThid), myByHi(myThid)
216           IF ( SolarFile .NE. ' '  ) THEN           DO bi = myBxLo(myThid), myBxHi(myThid)
217            CALL READ_REC_XY_RL( SolarFile,solar0,intime0,            cheapaml_ldRec(bi,bj) = 0
218       &         myIter,myThid )            DO j=1-OLy,sNy+OLy
219            CALL READ_REC_XY_RL( SolarFile,solar1,intime1,             DO i=1-OLx,sNx+OLx
220       &         myIter,myThid )             trair0  (i,j,bi,bj) = 0.
221           ENDIF             trair1  (i,j,bi,bj) = 0.
222           IF ( TrFile .NE. ' '  ) THEN             qrair0  (i,j,bi,bj) = 0.
223            CALL READ_REC_XY_RL( TrFile,trair0,intime0,             qrair1  (i,j,bi,bj) = 0.
224       &         myIter,myThid )             solar0  (i,j,bi,bj) = 0.
225            CALL READ_REC_XY_RL( TrFile,trair1,intime1,             solar1  (i,j,bi,bj) = 0.
226       &         myIter,myThid )             uwind0  (i,j,bi,bj) = 0.
227           ENDIF             uwind1  (i,j,bi,bj) = 0.
228           IF ( QrFile .NE. ' '  ) THEN             vwind0  (i,j,bi,bj) = 0.
229            CALL READ_REC_XY_RL( QrFile,qrair0,intime0,             vwind1  (i,j,bi,bj) = 0.
230       &         myIter,myThid )             ustress0(i,j,bi,bj) = 0.
231            CALL READ_REC_XY_RL( QrFile,qrair1,intime1,             ustress1(i,j,bi,bj) = 0.
232       &         myIter,myThid )             vstress0(i,j,bi,bj) = 0.
233           ENDIF             vstress1(i,j,bi,bj) = 0.
234           IF ( UWindFile .NE. ' '  ) THEN             wavesh0 (i,j,bi,bj) = 0.
235            CALL READ_REC_XY_RL( UWindFile,uwind0,intime0,             wavesh1 (i,j,bi,bj) = 0.
236       &         myIter,myThid )             wavesp0 (i,j,bi,bj) = 0.
237            CALL READ_REC_XY_RL( UWindFile,uwind1,intime1,             wavesp1 (i,j,bi,bj) = 0.
238       &         myIter,myThid )             rair0   (i,j,bi,bj) = 0.
239           ENDIF             rair1   (i,j,bi,bj) = 0.
240           IF ( VWindFile .NE. ' '  ) THEN             CheaptracerR0 (i,j,bi,bj) = 0.
241            CALL READ_REC_XY_RL( VWindFile,vwind0,intime0,             CheaptracerR1 (i,j,bi,bj) = 0.
242       &         myIter,myThid )             ENDDO
243            CALL READ_REC_XY_RL( VWindFile,vwind1,intime1,            ENDDO
244       &         myIter,myThid )           ENDDO
245           ENDIF          ENDDO
246           IF(useStressOption)THEN        ENDIF
           IF ( UStressFile .NE. ' '  ) THEN  
            CALL READ_REC_XY_RL( UStressFile,ustress0,intime0,  
      &          myIter,myThid )  
            CALL READ_REC_XY_RL( UStressFile,ustress1,intime1,  
      &          myIter,myThid )  
           ENDIF  
           IF ( VStressFile .NE. ' '  ) THEN  
            CALL READ_REC_XY_RL( VStressFile,vstress0,intime0,  
      &          myIter,myThid )  
            CALL READ_REC_XY_RL( VStressFile,vstress1,intime1,  
      &          myIter,myThid )  
           ENDIF  
          ENDIF  
          IF(useRelativeHumidity)THEN  
           IF ( QrrelFile .NE. ' '  ) THEN  
            CALL READ_REC_XY_RL( QrrelFile,rair0,intime0,  
      &          myIter,myThid )  
            CALL READ_REC_XY_RL( QrrelFile,rair1,intime1,  
      &          myIter,myThid )  
           ENDIF  
 C     This subroutine is in cheapaml_init_varia  
           CALL CHEAPAML_CONVERT_HUM(rair0, trair0, qrair0,myThid )  
           CALL CHEAPAML_CONVERT_HUM(rair1, trair1, qrair1,myThid )  
          ENDIF  
          IF ( FluxFormula.EQ.'COARE3') THEN  
           IF ( WaveHFile .NE. ' '  ) THEN  
            CALL READ_REC_XY_RL( WaveHFile,wavesh0,intime0,  
      &          myIter,myThid )  
            CALL READ_REC_XY_RL( WaveHFile,wavesh1,intime1,  
      &          myIter,myThid )  
           ENDIF  
           IF ( WavePFile .NE. ' '  ) THEN  
            CALL READ_REC_XY_RL( WavePFile,wavesp0,intime0,  
      &          myIter,myThid )  
            CALL READ_REC_XY_RL( WavePFile,wavesp1,intime1,  
      &          myIter,myThid )  
           ENDIF  
          ENDIF  
247    
248           _EXCH_XY_RL( trair0 , myThid )  C--   Now calculate whether it is time to update the forcing arrays
249           _EXCH_XY_RL( qrair0 , myThid )        CALL GET_PERIODIC_INTERVAL(
250           _EXCH_XY_RL( solar0 , myThid )       O                  intimeP, intime0, intime1, bWght, aWght,
251           _EXCH_XY_RL( uwind0 , myThid )       I      externForcingCycle_cheap, externForcingPeriod_cheap,
252           _EXCH_XY_RL( vwind0 , myThid )       I                  deltaTclock, myTime, myThid )
253           _EXCH_XY_RL( trair1 , myThid )  
254           _EXCH_XY_RL( qrair1 , myThid )        bi = myBxLo(myThid)
255           _EXCH_XY_RL( solar1 , myThid )        bj = myByLo(myThid)
256           _EXCH_XY_RL( uwind1 , myThid )  #ifdef ALLOW_DEBUG
257           _EXCH_XY_RL( vwind1 , myThid )        IF ( debugLevel.GE.debLevA ) THEN
258           IF(useStressOption)THEN          _BEGIN_MASTER(myThid)
259            _EXCH_XY_RL( ustress0 , myThid )          WRITE(standardMessageUnit,'(A,I10,A,4I5,A,2F14.10)')
260            _EXCH_XY_RL( vstress0 , myThid )       &   ' CHEAPAML_FIELDS_LOAD,', myIter,
261            _EXCH_XY_RL( ustress1 , myThid )       &   ' : iP,iLd,i0,i1=', intimeP,cheapaml_ldRec(bi,bj),
262            _EXCH_XY_RL( vstress1 , myThid )       &   intime0,intime1, ' ; Wght=', bWght, aWght
263           ENDIF          _END_MASTER(myThid)
264           IF(FluxFormula.EQ.'COARE3') THEN        ENDIF
265            _EXCH_XY_RL( wavesp0 , myThid )  #endif /* ALLOW_DEBUG */
           _EXCH_XY_RL( wavesp1 , myThid )  
           _EXCH_XY_RL( wavesh0 , myThid )  
           _EXCH_XY_RL( wavesh1 , myThid )  
          ENDIF  
266    
267  C       end of loading new fields block  C-    Make no assumption on sequence of calls to CHEAPAML_FIELDS_LOAD ;
268    C     This is the correct formulation (works in Adjoint run).
269          IF ( intime1.NE.cheapaml_ldRec(bi,bj) ) THEN
270    
271    C--   If the above condition is met then we need to read in
272    C     data for the period ahead and the period behind myTime.
273            _BEGIN_MASTER(myThid)
274            WRITE(standardMessageUnit,'(A,I10,A,2(2I5,A))')
275         &   ' CHEAPAML_FIELDS_LOAD, it=', myIter,
276         &   ' : Reading new data, i0,i1=', intime0, intime1,
277         &    ' (prev=', intimeP, cheapaml_ldRec(bi,bj), ' )'
278            _END_MASTER(myThid)
279    
280          IF ( SolarFile .NE. ' '  ) THEN
281           CALL READ_REC_XY_RL( SolarFile,solar0,intime0,
282         &       myIter,myThid )
283           CALL READ_REC_XY_RL( SolarFile,solar1,intime1,
284         &       myIter,myThid )
285          ENDIF
286          IF ( TrFile .NE. ' '  ) THEN
287           CALL READ_REC_XY_RL( TRFile,trair0,intime0,
288         &       myIter,myThid )
289           CALL READ_REC_XY_RL( TRFile,trair1,intime1,
290         &       myIter,myThid )
291          ENDIF
292          IF ( QrFile .NE. ' '  ) THEN
293           CALL READ_REC_XY_RL( QrFile,qrair0,intime0,
294         &       myIter,myThid )
295           CALL READ_REC_XY_RL( QrFile,qrair1,intime1,
296         &       myIter,myThid )
297          ENDIF
298          IF ( UWindFile .NE. ' '  ) THEN
299           CALL READ_REC_XY_RL( UWindFile,uwind0,intime0,
300         &       myIter,myThid )
301           CALL READ_REC_XY_RL( UWindFile,uwind1,intime1,
302         &       myIter,myThid )
303          ENDIF
304          IF ( VWindFile .NE. ' '  ) THEN
305           CALL READ_REC_XY_RL( VWindFile,vwind0,intime0,
306         &       myIter,myThid )
307           CALL READ_REC_XY_RL( VWindFile,vwind1,intime1,
308         &       myIter,myThid )
309          ENDIF
310          IF(useStressOption)THEN
311          IF ( UStressFile .NE. ' '  ) THEN
312           CALL READ_REC_XY_RL( UStressFile,ustress0,intime0,
313         &       myIter,myThid )
314           CALL READ_REC_XY_RL( UStressFile,ustress1,intime1,
315         &       myIter,myThid )
316          ENDIF
317          IF ( VStressFile .NE. ' '  ) THEN
318           CALL READ_REC_XY_RL( VStressFile,vstress0,intime0,
319         &       myIter,myThid )
320           CALL READ_REC_XY_RL( VStressFile,vstress1,intime1,
321         &       myIter,myThid )
322            ENDIF
323          ENDIF
324          IF ( FluxFormula.eq.'COARE3') THEN
325          IF ( WaveHFile .NE. ' '  ) THEN
326           CALL READ_REC_XY_RL( WaveHFile,wavesh0,intime0,
327         &       myIter,myThid )
328           CALL READ_REC_XY_RL( WaveHFile,wavesh1,intime1,
329         &       myIter,myThid )
330          ENDIF
331          IF ( WavePFile .NE. ' '  ) THEN
332           CALL READ_REC_XY_RL( WavePFile,wavesp0,intime0,
333         &       myIter,myThid )
334           CALL READ_REC_XY_RL( WavePFile,wavesp1,intime1,
335         &       myIter,myThid )
336          ENDIF
337          ENDIF          ENDIF
338          IF (useCheapTracer) THEN
339          IF ( TracerRFile .NE. ' '  ) THEN
340            CALL READ_REC_XY_RL( TracerRFile,CheaptracerR0,intime0,
341         &       myIter,myThid )
342            CALL READ_REC_XY_RL( TracerRFile,CheaptracerR1,intime1,
343         &       myIter,myThid )
344          ENDIF
345          ENDIF
346           _EXCH_XY_RL(trair0 , myThid )
347           _EXCH_XY_RL(qrair0 , myThid )
348           _EXCH_XY_RL(solar0 , myThid )
349           _EXCH_XY_RL(uwind0 , myThid )
350           _EXCH_XY_RL(vwind0 , myThid )
351           _EXCH_XY_RL(trair1 , myThid )
352           _EXCH_XY_RL(qrair1 , myThid )
353           _EXCH_XY_RL(solar1 , myThid )
354           _EXCH_XY_RL(uwind1 , myThid )
355           _EXCH_XY_RL(vwind1 , myThid )
356           IF(useStressOption)THEN
357           _EXCH_XY_RL(uwind0 , myThid )
358           _EXCH_XY_RL(vwind0 , myThid )
359           _EXCH_XY_RL(uwind1 , myThid )
360           _EXCH_XY_RL(vwind1 , myThid )
361            ENDIF
362            IF(FluxFormula.EQ.'COARE3') THEN
363           _EXCH_XY_RL(wavesp0 , myThid )
364           _EXCH_XY_RL(wavesp1 , myThid )
365           _EXCH_XY_RL(wavesh0 , myThid )
366           _EXCH_XY_RL(wavesh1 , myThid )
367            ENDIF
368           IF(useCheapTracer) THEN
369           _EXCH_XY_RL(CheaptracerR0 , myThid )
370           _EXCH_XY_RL(CheaptracerR1, myThid )
371           ENDIF
372    
373  C--   Interpolate Tr, Qr, Solar  C-    save newly loaded time-record
374          DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
375           DO bi = myBxLo(myThid), myBxHi(myThid)           DO bi = myBxLo(myThid), myBxHi(myThid)
376            DO j=1,sNy             cheapaml_ldRec(bi,bj) = intime1
377             DO i=1,sNx           ENDDO
378              Tr(i,j,bi,bj)   = bWght*trair0(i,j,bi,bj)          ENDDO
379       &                       +aWght*trair1(i,j,bi,bj)   !+273.15  
380              qr(i,j,bi,bj)   = bWght*qrair0(i,j,bi,bj)  C     end of loading new fields block
381       &                       +aWght*qrair1(i,j,bi,bj)        ENDIF
382              uwind(i,j,bi,bj)= bWght*uwind0(i,j,bi,bj)  
383       &                       +aWght*uwind1(i,j,bi,bj)  C--   Interpolate TR, QR, SOLAR
384              vwind(i,j,bi,bj)= bWght*vwind0(i,j,bi,bj)        DO bj = myByLo(myThid), myByHi(myThid)
385       &                       +aWght*vwind1(i,j,bi,bj)         DO bi = myBxLo(myThid), myBxHi(myThid)
386              solar(i,j,bi,bj)= bWght*solar0(i,j,bi,bj)          DO j=1-OLy,sNy+OLy
387       &                       +aWght*solar1(i,j,bi,bj)           DO i=1-OLx,sNx+OLx
388              IF(useStressOption)THEN            TR(i,j,bi,bj)      = bWght*trair0(i,j,bi,bj)
389               ustress(i,j,bi,bj)= bWght*ustress0(i,j,bi,bj)       &                        +aWght*trair1(i,j,bi,bj)   !+273.15
390              qr(i,j,bi,bj)      = bWght*qrair0(i,j,bi,bj)
391         &                        +aWght*qrair1(i,j,bi,bj)
392              uwind(i,j,bi,bj)   = bWght*uwind0(i,j,bi,bj)
393         &                        +aWght*uwind1(i,j,bi,bj)
394              vwind(i,j,bi,bj)   = bWght*vwind0(i,j,bi,bj)
395         &                        +aWght*vwind1(i,j,bi,bj)
396              solar(i,j,bi,bj)   = bWght*solar0(i,j,bi,bj)
397         &                        +aWght*solar1(i,j,bi,bj)
398           IF(useStressOption)THEN
399              ustress(i,j,bi,bj)   = bWght*ustress0(i,j,bi,bj)
400       &                          +aWght*ustress1(i,j,bi,bj)       &                          +aWght*ustress1(i,j,bi,bj)
401               vstress(i,j,bi,bj)= bWght*vstress0(i,j,bi,bj)            vstress(i,j,bi,bj)   = bWght*vstress0(i,j,bi,bj)
402       &                          +aWght*vstress1(i,j,bi,bj)       &                          +aWght*vstress1(i,j,bi,bj)
403              ENDIF         ENDIF
404              IF(FluxFormula.EQ.'COARE3')THEN         IF(useCheapTracer)THEN
405               IF(WaveHFile.NE.' ')THEN             CheaptracerR(i,j,bi,bj) = bWght*CheaptracerR0(i,j,bi,bj)
406                wavesh(i,j,bi,bj) = bWght*wavesh0(i,j,bi,bj)       &                             +aWght*CheaptracerR1(i,j,bi,bj)
407       &                           +aWght*wavesh1(i,j,bi,bj)         ENDIF
408               ENDIF          IF(FluxFormula.eq.'COARE3')THEN
409               IF(WavePFile.NE.' ')THEN          IF(WaveHFile.ne.' ')THEN
410                wavesp(i,j,bi,bj) = bWght*wavesp0(i,j,bi,bj)            wavesh(i,j,bi,bj)   = bWght*wavesh0(i,j,bi,bj)
411       &                           +aWght*wavesp1(i,j,bi,bj)       &                         +aWght*wavesh1(i,j,bi,bj)
412               ENDIF          ENDIF
413              ELSE          IF(WavePFile.ne.' ')THEN
414               u=uwind(i,j,bi,bj)**2+vwind(i,j,bi,bj)**2            wavesp(i,j,bi,bj)   = bWght*wavesp0(i,j,bi,bj)
415               u=dsqrt(u)       &                         +aWght*wavesp1(i,j,bi,bj)
416               wavesp(i,j,bi,bj)=0.729 _d 0 * u          ENDIF
417               wavesh(i,j,bi,bj)=0.018 _d 0 * u*u*(1. _d 0 + .015 _d 0 *u)          ELSE
418              ENDIF            u=uwind(i,j,bi,bj)**2+vwind(i,j,bi,bj)**2
419             ENDDO            u=dsqrt(u)
420            ENDDO            wavesp(i,j,bi,bj)=0.729 _d 0 * u
421              wavesh(i,j,bi,bj)=0.018 _d 0 * u*u*(1. _d 0 + .015 _d 0 *u)
422              ENDIF
423           ENDDO           ENDDO
424          ENDDO          ENDDO
425           ENDDO
426          ENDDO
427    
428  C end if solarFile is empty  c end if solarFile is empty
429         ENDIF        ENDIF
430    
431    c end of periodic forcing options, on to steady option
432    
 C end of periodic forcing options, on to steady option  
433        ELSE        ELSE
434    
435         IF ( myIter .EQ. nIter0 ) THEN         IF ( myIter .EQ. nIter0 ) THEN
436          IF ( SolarFile .NE. ' '  ) THEN          IF ( SolarFile .NE. ' '  ) THEN
437           CALL READ_FLD_XY_RL( SolarFile,' ',solar,0,myThid )           CALL READ_FLD_XY_RS( SolarFile,' ',solar,0,myThid )
438          ELSE          ELSE
439           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
440            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 407  C end of periodic forcing options, on to Line 448  C end of periodic forcing options, on to
448            ENDDO            ENDDO
449           ENDDO           ENDDO
450          ENDIF          ENDIF
451          _EXCH_XY_RL(solar, myThid)          _EXCH_XY_RS(solar, mythid)
452          IF ( TrFile .NE. ' '  ) THEN          IF ( TrFile .NE. ' '  ) THEN
453           CALL READ_FLD_XY_RL( TrFile,' ',tr,0,myThid )           CALL READ_FLD_XY_RL( TrFile,' ',tr,0,myThid )
454          ELSE          ELSE
# Line 418  C end of periodic forcing options, on to Line 459  C end of periodic forcing options, on to
459              jG = myYGlobalLo-1+(bj-1)*sNy+j              jG = myYGlobalLo-1+(bj-1)*sNy+j
460              local=solar(i,j,bi,bj)              local=solar(i,j,bi,bj)
461              local=(2.d0*local/stefan)**(0.25d0)-273.16              local=(2.d0*local/stefan)**(0.25d0)-273.16
462              Tr(i,j,bi,bj) = local              TR(i,j,bi,bj) = local
463              ENDDO              ENDDO
464             ENDDO             ENDDO
465            ENDDO            ENDDO
466           ENDDO           ENDDO
467          ENDIF          ENDIF
         _EXCH_XY_RL(Tr, myThid)  
468    
469  C do specific humidity          _EXCH_XY_RL(TR, mythid)
470          IF ( QrFile .NE. ' '.AND..NOT. useRelativeHumidity  ) THEN  c do specific humidity
471            IF ( QrFile .NE. ' ') THEN
472           CALL READ_FLD_XY_RL( QrFile,' ',qr,0,myThid )           CALL READ_FLD_XY_RL( QrFile,' ',qr,0,myThid )
         ELSEIF ( QrrelFile .NE. ' '.AND.useRelativeHumidity) THEN  
          CALL READ_FLD_XY_RL( QrrelFile,' ',rref,0,myThid )  
          CALL CHEAPAML_CONVERT_HUM(rref, Tr, qr,myThid )  
   
473          ELSE          ELSE
474  C default specific humidity profile to 80% relative humidity  c default specific humidity profile to 80% relative humidity
475           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
476            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
477             DO j=1,sNy             DO j=1,sNy
# Line 448  c                  jG = myYGlobalLo-1+(b Line 485  c                  jG = myYGlobalLo-1+(b
485            ENDDO            ENDDO
486           ENDDO           ENDDO
487          ENDIF          ENDIF
488          _EXCH_XY_RL(qr, myThid)          _EXCH_XY_RL(qr, mythid)
489          IF ( UWindFile .NE. ' '  ) THEN          IF ( UWindFile .NE. ' '  ) THEN
490           CALL READ_FLD_XY_RL( UWindFile,' ',uwind,0,myThid )           CALL READ_FLD_XY_RL( UWindFile,' ',uwind,0,myThid )
491          ELSE          ELSE
# Line 456  c                  jG = myYGlobalLo-1+(b Line 493  c                  jG = myYGlobalLo-1+(b
493            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
494             DO j=1,sNy             DO j=1,sNy
495              DO i=1,sNx              DO i=1,sNx
496                jG = myYGlobalLo-1+(bj-1)*sNy+j                    jG = myYGlobalLo-1+(bj-1)*sNy+j
497  c mod for debug  c mod for debug
498  c to return to original code, uncomment following line  c to return to original code, uncomment following line
499  c comment out 2nd line  c comment out 2nd line
500                local=-5.d0*cos(2.d0*pi*float(jg-1)/(float(ny-1)))                    local=-5.d0*cos(2.d0*pi*float(jg-1)/(float(ny-1)))
501  c             local=0.d0*cos(2.d0*pi*float(jg-1)/(float(ny-1)))  c                 local=0.d0*cos(2.d0*pi*float(jg-1)/(float(ny-1)))
502                uwind(i,j,bi,bj) = local                    uwind(i,j,bi,bj) = local
503              ENDDO              ENDDO
504             ENDDO             ENDDO
505            ENDDO            ENDDO
506           ENDDO           ENDDO
507          ENDIF          ENDIF
508           _EXCH_XY_RL(uwind, myThid)           _EXCH_XY_RL(uwind, mythid)
509          IF ( VWindFile .NE. ' '  ) THEN          IF ( VWindFile .NE. ' '  ) THEN
510           CALL READ_FLD_XY_RL( VWindFile,' ',vwind,0,myThid )           CALL READ_FLD_XY_RL( VWindFile,' ',vwind,0,myThid )
511          ELSE          ELSE
# Line 476  c             local=0.d0*cos(2.d0*pi*flo Line 513  c             local=0.d0*cos(2.d0*pi*flo
513            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
514             DO j=1,sNy             DO j=1,sNy
515              DO i=1,sNx              DO i=1,sNx
516                jG = myYGlobalLo-1+(bj-1)*sNy+j                    jG = myYGlobalLo-1+(bj-1)*sNy+j
517                vwind(i,j,bi,bj) = 0.d0                    vwind(i,j,bi,bj) = 0.d0
518              ENDDO              ENDDO
519             ENDDO             ENDDO
520            ENDDO            ENDDO
521           ENDDO           ENDDO
522          ENDIF          ENDIF
523          _EXCH_XY_RL(vwind, myThid)           _EXCH_XY_RL(vwind, mythid)
524          IF(useStressOption)THEN         IF(useStressOption)THEN
525           IF ( UStressFile .NE. ' '  ) THEN          IF ( UStressFile .NE. ' '  ) THEN
526            CALL READ_FLD_XY_RL( UStressFile,' ',ustress,0,myThid )           CALL READ_FLD_XY_RL( UStressFile,' ',ustress,0,myThid )
527           ELSE          ELSE
528            write(*,*)' U Stress File absent with stress option'          write(*,*)' U Stress File absent with stress option'
529            STOP 'ABNORMAL END: S/R CHEAPAML_FIELDS_LOAD'          stop
          ENDIF  
          IF ( VStressFile .NE. ' '  ) THEN  
           CALL READ_FLD_XY_RL( VStressFile,' ',vstress,0,myThid )  
          ELSE  
           write(*,*)' V Stress File absent with stress option'  
           STOP 'ABNORMAL END: S/R CHEAPAML_FIELDS_LOAD'  
          ENDIF  
          _EXCH_XY_RL(ustress, myThid)  
          _EXCH_XY_RL(vstress, myThid)  
530          ENDIF          ENDIF
531          IF (FluxFormula.EQ.'COARE3')THEN          IF ( VStressFile .NE. ' '  ) THEN
532           IF (WaveHFile.NE.' ')THEN           CALL READ_FLD_XY_RL( VStressFile,' ',vstress,0,myThid )
533            CALL READ_FLD_XY_RL( WaveHFile,' ',wavesh,0,myThid )          ELSE
534           ENDIF          write(*,*)' V Stress File absent with stress option'
535           IF (WavePFile.NE.' ')THEN          stop
536            CALL READ_FLD_XY_RL( WavePFile,' ',wavesp,0,myThid )          ENDIF
537           ELSE           _EXCH_XY_RL(ustress, mythid)
538            DO bj = myByLo(myThid), myByHi(myThid)           _EXCH_XY_RL(vstress, mythid)
539             DO bi = myBxLo(myThid), myBxHi(myThid)          ENDIF
540              DO j=1,sNy          IF(useCheapTracer)THEN
541               DO i=1,sNx            IF ( TracerRFile .NE. ' ' ) THEN
542                u=uwind(i,j,bi,bj)**2+vwind(i,j,bi,bj)**2            CALL READ_FLD_XY_RL( TracerRFile,' ',CheaptracerR,0,myThid )
543                u=dsqrt(u)             ELSE
544                wavesp(i,j,bi,bj)=0.729 _d 0*u             DO bj = myByLo(myThid), myByHi(myThid)
545                wavesh(i,j,bi,bj)=0.018 _d 0*u*u*(1. _d 0 + .015 _d 0 *u)              DO bi = myBxLo(myThid), myBxHi(myThid)
546                 DO j=1,sNy
547                  DO i=1,sNx
548                   CheaptracerR(i,j,bi,bj)=290. _d 0
549                  ENDDO
550               ENDDO               ENDDO
551              ENDDO              ENDDO
552             ENDDO             ENDDO
553            ENDDO            ENDIF
554           ENDIF            _EXCH_XY_RL(CheaptracerR, mythid)
          _EXCH_XY_RL(wavesp, myThid)  
          _EXCH_XY_RL(wavesh, myThid)  
555          ENDIF          ENDIF
556            IF (FluxFormula.eq.'COARE3')THEN
557  C end if myIter = nIter0                  IF (WaveHFile.NE.' ')THEN
558             CALL READ_FLD_XY_RL( WaveHFile,' ',wavesh,0,myThid )
559            ENDIF
560                    IF (WavePFile.NE.' ')THEN
561             CALL READ_FLD_XY_RL( WavePFile,' ',wavesp,0,myThid )
562            ELSE
563             DO bj = myByLo(myThid), myByHi(myThid)
564              DO bi = myBxLo(myThid), myBxHi(myThid)
565               DO j=1,sNy
566                DO i=1,sNx
567                    u=uwind(i,j,bi,bj)**2+vwind(i,j,bi,bj)**2
568                    u=dsqrt(u)
569              wavesp(i,j,bi,bj)=0.729 _d 0 * u
570              wavesh(i,j,bi,bj)=0.018 _d 0 * u*u*(1. _d 0 + .015 _d 0 *u)
571                ENDDO
572               ENDDO
573              ENDDO
574             ENDDO
575         ENDIF         ENDIF
576            _EXCH_XY_RL(wavesp, mythid)
577            _EXCH_XY_RL(wavesh, mythid)
578          ENDIF
579           ENDIF
580    
581    
582  C endif for Steady Option  C endif for Steady Option
583        ENDIF        ENDIF
584    
585  C fill in outer edges  C fill in outer edges
586        DO bj = myByLo(myThid), myByHi(myThid)  
587          DO bi = myBxLo(myThid), myBxHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
588            DO j=1-oly,sny+oly            DO bi = myBxLo(myThid), myBxHi(myThid)
589              jG = myYGlobalLo-1+(bj-1)*sNy+j                  do j=1-oly,sny+oly
590              DO i=1-olx,snx+olx                    jG = myYGlobalLo-1+(bj-1)*sNy+j
591                iG=myXGlobalLo-1+(bi-1)*sNx+i                  do i=1-olx,snx+olx
592                if(iG.lt.1)then                    iG=myXGlobalLo-1+(bi-1)*sNx+i
593                  Tr(i,j,bi,bj)=Tr(1,j,bi,bj)              if(iG.lt.1)then
594                  qr(i,j,bi,bj)=qr(1,j,bi,bj)              Tr(i,j,bi,bj)=Tr(1,j,bi,bj)
595                  uwind(i,j,bi,bj)=uwind(1,j,bi,bj)              qr(i,j,bi,bj)=qr(1,j,bi,bj)
596                  vwind(i,j,bi,bj)=vwind(1,j,bi,bj)              uwind(i,j,bi,bj)=uwind(1,j,bi,bj)
597                  Solar(i,j,bi,bj)=Solar(1,j,bi,bj)              vwind(i,j,bi,bj)=vwind(1,j,bi,bj)
598                  if(UseStressOption)then              Solar(i,j,bi,bj)=Solar(1,j,bi,bj)
599                    ustress(i,j,bi,bj)=ustress(1,j,bi,bj)  
600                    vstress(i,j,bi,bj)=vstress(1,j,bi,bj)                  IF(useStressOption)THEN
601                  endif                  ustress(i,j,bi,bj)=ustress(1,j,bi,bj)
602                  if(FluxFormula.EQ.'COARE3')then                  vstress(i,j,bi,bj)=vstress(1,j,bi,bj)
603                    wavesp(i,j,bi,bj)=wavesp(1,j,bi,bj)                  ENDIF
604                    wavesh(i,j,bi,bj)=wavesh(1,j,bi,bj)  
605                    IF(useCheapTracer)THEN
606                    CheaptracerR(i,j,bi,bj)=CheaptracerR(1,j,bi,bj)
607                    ENDIF
608    
609                    if(FluxFormula.eq.'COARE3')then
610                    wavesp(i,j,bi,bj)=wavesp(1,j,bi,bj)
611                    wavesh(i,j,bi,bj)=wavesh(1,j,bi,bj)
612                  endif                  endif
613                elseif(iG.gt.Nx)then  
614                  Tr(i,j,bi,bj)=Tr(sNx,j,bi,bj)              elseif(iG.gt.Nx)then
615                  qr(i,j,bi,bj)=qr(sNx,j,bi,bj)              Tr(i,j,bi,bj)=Tr(sNx,j,bi,bj)
616                  uwind(i,j,bi,bj)=uwind(sNx,j,bi,bj)              qr(i,j,bi,bj)=qr(sNx,j,bi,bj)
617                  vwind(i,j,bi,bj)=vwind(sNx,j,bi,bj)              uwind(i,j,bi,bj)=uwind(sNx,j,bi,bj)
618                  Solar(i,j,bi,bj)=Solar(sNx,j,bi,bj)              vwind(i,j,bi,bj)=vwind(sNx,j,bi,bj)
619                Solar(i,j,bi,bj)=Solar(sNx,j,bi,bj)
620    
621                  if(UseStressOption)then                  if(UseStressOption)then
622                    ustress(i,j,bi,bj)=ustress(sNx,j,bi,bj)                  ustress(i,j,bi,bj)=ustress(sNx,j,bi,bj)
623                    vstress(i,j,bi,bj)=vstress(sNx,j,bi,bj)                  vstress(i,j,bi,bj)=vstress(sNx,j,bi,bj)
624                  endif                  endif
625                  if(FluxFormula.EQ.'COARE3')then  
626                    wavesp(i,j,bi,bj)=wavesp(sNx,j,bi,bj)                  IF(useCheapTracer)THEN
627                    wavesh(i,j,bi,bj)=wavesh(sNx,j,bi,bj)                  CheaptracerR(i,j,bi,bj)=CheaptracerR(sNx,j,bi,bj)
628                    ENDIF
629    
630                    if(FluxFormula.eq.'COARE3')then
631                    wavesp(i,j,bi,bj)=wavesp(sNx,j,bi,bj)
632                    wavesh(i,j,bi,bj)=wavesh(sNx,j,bi,bj)
633                  endif                  endif
634                elseif(jG.lt.1)then  
635                  Tr(i,j,bi,bj)=Tr(i,1,bi,bj)              elseif(jG.lt.1)then
636                  qr(i,j,bi,bj)=qr(i,1,bi,bj)              Tr(i,j,bi,bj)=Tr(i,1,bi,bj)
637                  uwind(i,j,bi,bj)=uwind(i,1,bi,bj)              qr(i,j,bi,bj)=qr(i,1,bi,bj)
638                  vwind(i,j,bi,bj)=vwind(i,1,bi,bj)              uwind(i,j,bi,bj)=uwind(i,1,bi,bj)
639                  Solar(i,j,bi,bj)=Solar(i,1,bi,bj)              vwind(i,j,bi,bj)=vwind(i,1,bi,bj)
640                Solar(i,j,bi,bj)=Solar(i,1,bi,bj)
641    
642                  if(UseStressOption)then                  if(UseStressOption)then
643                    ustress(i,j,bi,bj)=ustress(i,1,bi,bj)                  ustress(i,j,bi,bj)=ustress(i,1,bi,bj)
644                    vstress(i,j,bi,bj)=vstress(i,1,bi,bj)                  vstress(i,j,bi,bj)=vstress(i,1,bi,bj)
645                  endif                  endif
646                  if(FluxFormula.EQ.'COARE3')then  
647                    wavesp(i,j,bi,bj)=wavesp(i,1,bi,bj)                  IF(useCheapTracer)THEN
648                    wavesh(i,j,bi,bj)=wavesh(i,1,bi,bj)                  CheaptracerR(i,j,bi,bj)=CheaptracerR(i,1,bi,bj)
649                    ENDIF
650    
651                    if(FluxFormula.eq.'COARE3')then
652                    wavesp(i,j,bi,bj)=wavesp(i,1,bi,bj)
653                    wavesh(i,j,bi,bj)=wavesh(i,1,bi,bj)
654                  endif                  endif
655                elseif(jG.gt.sNy)then  
656                  Tr(i,j,bi,bj)=Tr(i,sNy,bi,bj)              elseif(jG.gt.Ny)then
657                  qr(i,j,bi,bj)=qr(i,sNy,bi,bj)              Tr(i,j,bi,bj)=Tr(i,sNy,bi,bj)
658                  uwind(i,j,bi,bj)=uwind(i,sNy,bi,bj)              qr(i,j,bi,bj)=qr(i,sNy,bi,bj)
659                  vwind(i,j,bi,bj)=vwind(i,sNy,bi,bj)              uwind(i,j,bi,bj)=uwind(i,sNy,bi,bj)
660                  Solar(i,j,bi,bj)=Solar(i,sNy,bi,bj)              vwind(i,j,bi,bj)=vwind(i,sNy,bi,bj)
661                Solar(i,j,bi,bj)=Solar(i,sNy,bi,bj)
662    
663                  if(UseStressOption)then                  if(UseStressOption)then
664                    ustress(i,j,bi,bj)=ustress(i,sNy,bi,bj)                  ustress(i,j,bi,bj)=ustress(i,sNy,bi,bj)
665                    vstress(i,j,bi,bj)=vstress(i,sNy,bi,bj)                  vstress(i,j,bi,bj)=vstress(i,sNy,bi,bj)
666                  endif                  endif
667                  if(FluxFormula.EQ.'COARE3')then  
668                    wavesp(i,j,bi,bj)=wavesp(i,sNy,bi,bj)                  IF(useCheapTracer)THEN
669                    wavesh(i,j,bi,bj)=wavesh(i,sNy,bi,bj)                  CheaptracerR(i,j,bi,bj)=CheaptracerR(i,sNy,bi,bj)
670                    ENDIF
671    
672                    if(FluxFormula.eq.'COARE3')then
673                    wavesp(i,j,bi,bj)=wavesp(i,sNy,bi,bj)
674                    wavesh(i,j,bi,bj)=wavesh(i,sNy,bi,bj)
675                  endif                  endif
676                endif  
677                endif
678              ENDDO              ENDDO
679               ENDDO
680            ENDDO            ENDDO
681          ENDDO           ENDDO
682        ENDDO         RETURN
   
       RETURN  
683        END        END

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22