Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:38:12 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
6d54cf9ca1 Ed H*0001 #include "BULK_FORCE_OPTIONS.h"
679d149d01 Jean*0002 
7753507405 Curt*0003 C     !ROUTINE: BULKF_FIELDS_LOAD
                0004 C     !INTERFACE:
                0005       SUBROUTINE BULKF_FIELDS_LOAD( myTime, myIter, myThid )
a96726d526 Jean*0006 
                0007 C     !DESCRIPTION:
7753507405 Curt*0008 C     *==========================================================*
679d149d01 Jean*0009 C     | SUBROUTINE BULKF_FIELDS_LOAD
a96726d526 Jean*0010 C     | o Control reading of fields from external source.
7753507405 Curt*0011 C     *==========================================================*
679d149d01 Jean*0012 C     | Bulk formula External source field loading routine.
a96726d526 Jean*0013 C     | This routine is called every time we want to
                0014 C     | load a a set of external fields. The routine decides
                0015 C     | which fields to load and then reads them in.
                0016 C     | This routine needs to be customised for particular
                0017 C     | experiments.
                0018 C     | Notes
                0019 C     | =====
                0020 C     | Two-dimensional and three-dimensional I/O are handled in
                0021 C     | the following way under MITgcmUV. A master thread
                0022 C     | performs I/O using system calls. This threads reads data
                0023 C     | into a temporary buffer. At present the buffer is loaded
                0024 C     | with the entire model domain. This is probably OK for now
                0025 C     | Each thread then copies data from the buffer to the
                0026 C     | region of the proper array it is responsible for.
                0027 C     | =====
                0028 C     | Conversion of flux fields are described in FFIELDS.h
7753507405 Curt*0029 C     *==========================================================*
                0030 
                0031 C     !USES:
                0032       IMPLICIT NONE
a96726d526 Jean*0033 
7753507405 Curt*0034 C     === Global variables ===
                0035 #include "SIZE.h"
                0036 #include "EEPARAMS.h"
                0037 #include "PARAMS.h"
679d149d01 Jean*0038 #include "BULKF_PARAMS.h"
7753507405 Curt*0039 #include "BULKF.h"
679d149d01 Jean*0040 
7753507405 Curt*0041 C     !INPUT/OUTPUT PARAMETERS:
                0042 C     === Routine arguments ===
679d149d01 Jean*0043 C     myTime :: Simulation time
                0044 C     myIter :: Simulation timestep number
                0045 C     myThid :: Thread no. that called this routine.
7753507405 Curt*0046       _RL     myTime
                0047       INTEGER myIter
679d149d01 Jean*0048       INTEGER myThid
                0049 
6a1d3c464b Jean*0050 #ifdef ALLOW_BULK_FORCE
7753507405 Curt*0051 
                0052 C     !LOCAL VARIABLES:
a96726d526 Jean*0053 C     === Local arrays in common block ===
                0054 C     bulkfRec   :: time-record currently loaded (in temp arrays *[1])
679d149d01 Jean*0055 C     tair[01]   :: Temp. for air temperature
                0056 C     qair[01]   :: Temp. for air specific humidity
                0057 C     solar[01]  :: Temp. for incoming solar radition
                0058 C     flwdwn[01] :: Temp. for downward longwave flux
                0059 C     cloud[01]  :: Temp for cloud
                0060 C     wspeed[01] :: Temp. for wind speed
7753507405 Curt*0061 C     uwind[01]  :: Temp. for zonal wind speed
                0062 C     vwind[01]  :: Temp. for meridional wind speed
679d149d01 Jean*0063 C     rain[01]   :: Temp. for rain
                0064 C     runoff[01] :: Temp. for runoff
                0065 C     snow[01]   :: Temp  for snow
                0066 C     thAir[01]  :: Temp for Air potential temp. in the BL [K]
                0067 c     qnetch[01] :: Temp for qnet (cheating)
                0068 C     empch[01]  :: Temp for empmr (cheating)
                0069 C     [01]       :: End points for interpolation
a96726d526 Jean*0070 
                0071       COMMON /BULKF_FIELDS_LOAD_I/ bulkfRec
                0072       COMMON /BULKF_FIELDS_LOAD_RS/
679d149d01 Jean*0073      &                 tair0, tair1, qair0, qair1,
                0074      &                 solar0, solar1, flwdwn0, flwdwn1,
                0075      &                 cloud0, cloud1, wspeed0, wspeed1,
                0076      &                 uwind0, uwind1, vwind0, vwind1,
                0077      &                 rain0, rain1, runoff0, runoff1,
                0078      &                 snow0, snow1,
                0079 #ifdef ALLOW_FORMULA_AIM
                0080      &                 thAir0, thAir1,
                0081 #endif
                0082      &                 qnetch0, qnetch1, empch0, empch1
                0083 
a96726d526 Jean*0084       INTEGER bulkfRec(nSx,nSy)
679d149d01 Jean*0085       _RS  tair0   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0086       _RS  tair1   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0087       _RS  qair0   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0088       _RS  qair1   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0089       _RS  solar0  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0090       _RS  solar1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0091       _RS  flwdwn0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0092       _RS  flwdwn1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0093       _RS  cloud0  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0094       _RS  cloud1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0095       _RS  wspeed0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0096       _RS  wspeed1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0097       _RS  uwind0  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0098       _RS  uwind1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0099       _RS  vwind0  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0100       _RS  vwind1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0101       _RS  rain0   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0102       _RS  rain1   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0103       _RS  runoff0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0104       _RS  runoff1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0105       _RS  snow0   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0106       _RS  snow1   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0107 #ifdef ALLOW_FORMULA_AIM
                0108       _RS  thAir0  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0109       _RS  thAir1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0110 #endif
                0111       _RS  qnetch0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0112       _RS  qnetch1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0113       _RS  empch0  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0114       _RS  empch1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
7753507405 Curt*0115 
a96726d526 Jean*0116 C     === Local variables ===
                0117 C     aWght, bWght :: Interpolation weights
                0118       _RL  aWght,bWght
                0119       INTEGER intimeP, intime0, intime1
                0120       INTEGER bi, bj, i, j
                0121 CEOP
7753507405 Curt*0122 
                0123       IF ( periodicExternalForcing ) THEN
                0124 
                0125 C First call requires that we initialize everything to zero for safety
                0126       IF ( myIter .EQ. nIter0 ) THEN
679d149d01 Jean*0127         DO bj=myByLo(myThid),myByHi(myThid)
                0128          DO bi=myBxLo(myThid),myBxHi(myThid)
a96726d526 Jean*0129            bulkfRec(bi,bj) = 0
679d149d01 Jean*0130            DO j = 1-Oly,sNy+Oly
                0131             DO i = 1-Olx,sNx+Olx
                0132               tair0(i,j,bi,bj)   = 0. _d 0
                0133               tair1(i,j,bi,bj)   = 0. _d 0
                0134               qair0(i,j,bi,bj)   = 0. _d 0
                0135               qair1(i,j,bi,bj)   = 0. _d 0
                0136               rain0(i,j,bi,bj)   = 0. _d 0
                0137               rain1(i,j,bi,bj)   = 0. _d 0
                0138               solar0(i,j,bi,bj)  = 0. _d 0
                0139               solar1(i,j,bi,bj)  = 0. _d 0
                0140               flwdwn0(i,j,bi,bj) = 0. _d 0
                0141               flwdwn1(i,j,bi,bj) = 0. _d 0
                0142               cloud0(i,j,bi,bj)  = 0. _d 0
                0143               cloud1(i,j,bi,bj)  = 0. _d 0
                0144               wspeed0(i,j,bi,bj) = 0. _d 0
                0145               wspeed1(i,j,bi,bj) = 0. _d 0
                0146               uwind0(i,j,bi,bj)  = 0. _d 0
                0147               uwind1(i,j,bi,bj)  = 0. _d 0
                0148               vwind0(i,j,bi,bj)  = 0. _d 0
                0149               vwind1(i,j,bi,bj)  = 0. _d 0
                0150               runoff0(i,j,bi,bj) = 0. _d 0
                0151               runoff1(i,j,bi,bj) = 0. _d 0
                0152               snow0(i,j,bi,bj)   = 0. _d 0
                0153               snow1(i,j,bi,bj)   = 0. _d 0
                0154 #ifdef ALLOW_FORMULA_AIM
                0155               thAir0(i,j,bi,bj)  = 0. _d 0
                0156               thAir1(i,j,bi,bj)  = 0. _d 0
                0157 #endif
                0158               qnetch0(i,j,bi,bj) = 0. _d 0
                0159               qnetch1(i,j,bi,bj) = 0. _d 0
                0160               empch0(i,j,bi,bj)  = 0. _d 0
                0161               empch1(i,j,bi,bj)  = 0. _d 0
                0162             ENDDO
                0163            ENDDO
                0164          ENDDO
                0165         ENDDO
7753507405 Curt*0166       ENDIF
                0167 
a96726d526 Jean*0168 C--   Now calculate whether it is time to update the forcing arrays
                0169       CALL GET_PERIODIC_INTERVAL(
                0170      O                  intimeP, intime0, intime1, bWght, aWght,
                0171      I                  externForcingCycle, externForcingPeriod,
                0172      I                  deltaTclock, myTime, myThid )
679d149d01 Jean*0173 
a96726d526 Jean*0174       bi = myBxLo(myThid)
                0175       bj = myByLo(myThid)
                0176 #ifdef ALLOW_DEBUG
94370ae71c Jean*0177       IF ( debugLevel.GE.debLevB ) THEN
a96726d526 Jean*0178         _BEGIN_MASTER(myThid)
                0179         WRITE(standardMessageUnit,'(A,I10,A,4I5,A,2F14.10)')
                0180      &   ' BULKF_FIELDS_LOAD,', myIter,
                0181      &   ' : iP,iLd,i0,i1=', intimeP,bulkfRec(bi,bj), intime0,intime1,
                0182      &   ' ; Wght=', bWght, aWght
                0183         _END_MASTER(myThid)
                0184       ENDIF
                0185 #endif /* ALLOW_DEBUG */
7753507405 Curt*0186 
a96726d526 Jean*0187 C-    Make no assumption on sequence of calls to BULKF_FIELDS_LOAD ;
                0188 C     This is the correct formulation (works in Adjoint run).
                0189       IF ( intime1.NE.bulkfRec(bi,bj) ) THEN
7753507405 Curt*0190 
a05d835d01 Jean*0191        _BARRIER
7753507405 Curt*0192 
a96726d526 Jean*0193 C--   If the above condition is met then we need to read in
                0194 C     data for the period ahead and the period behind myTime.
94370ae71c Jean*0195        IF ( debugLevel.GE.debLevZero ) THEN
                0196          _BEGIN_MASTER(myThid)
a96726d526 Jean*0197         WRITE(standardMessageUnit,'(A,I10,A,2(2I5,A))')
                0198      &   ' BULKF_FIELDS_LOAD, it=', myIter,
                0199      &   ' : Reading new data, i0,i1=', intime0, intime1,
                0200      &    ' (prev=', intimeP, bulkfRec(bi,bj), ' )'
                0201         _END_MASTER(myThid)
94370ae71c Jean*0202        ENDIF
679d149d01 Jean*0203 
7753507405 Curt*0204       IF ( AirTempFile .NE. ' '  ) THEN
                0205        CALL READ_REC_XY_RS( AirTempFile,tair0,intime0,
                0206      &       myIter,myThid )
                0207        CALL READ_REC_XY_RS( AirTempFile,tair1,intime1,
                0208      &       myIter,myThid )
                0209       ENDIF
                0210       IF ( AirHumidityFile .NE. ' '  ) THEN
                0211        CALL READ_REC_XY_RS( AirhumidityFile,qair0,intime0,
                0212      &       myIter,myThid )
                0213        CALL READ_REC_XY_RS( AirhumidityFile,qair1,intime1,
                0214      &       myIter,myThid )
                0215       ENDIF
                0216       IF ( SolarFile .NE. ' '  ) THEN
                0217        CALL READ_REC_XY_RS( SolarFile,solar0,intime0,
                0218      &       myIter,myThid )
                0219        CALL READ_REC_XY_RS( SolarFile,solar1,intime1,
                0220      &       myIter,myThid )
                0221       ENDIF
                0222       IF ( LongwaveFile .NE. ' '  ) THEN
679d149d01 Jean*0223        CALL READ_REC_XY_RS( LongwaveFile,flwdwn0,intime0,
                0224      &       myIter,myThid )
                0225        CALL READ_REC_XY_RS( LongwaveFile,flwdwn1,intime1,
                0226      &       myIter,myThid )
                0227       ENDIF
                0228       IF ( CloudFile .NE. ' '  ) THEN
                0229        CALL READ_REC_XY_RS( CloudFile,cloud0,intime0,
                0230      &       myIter,myThid )
                0231        CALL READ_REC_XY_RS( CloudFile,cloud1,intime1,
                0232      &       myIter,myThid )
                0233       ENDIF
                0234 
                0235       IF ( WSpeedFile .NE. ' '  ) THEN
                0236        CALL READ_REC_XY_RS( WSpeedFile,wspeed0,intime0,
7753507405 Curt*0237      &       myIter,myThid )
679d149d01 Jean*0238        CALL READ_REC_XY_RS( WSpeedFile,wspeed1,intime1,
7753507405 Curt*0239      &       myIter,myThid )
                0240       ENDIF
                0241       IF ( UwindFile .NE. ' '  ) THEN
                0242        CALL READ_REC_XY_RS( UWindFile,uwind0,intime0,
                0243      &       myIter,myThid )
                0244        CALL READ_REC_XY_RS( UWindFile,uwind1,intime1,
                0245      &       myIter,myThid )
                0246       ENDIF
                0247       IF ( VwindFile .NE. ' '  ) THEN
                0248        CALL READ_REC_XY_RS( VWindFile,vwind0,intime0,
                0249      &       myIter,myThid )
                0250        CALL READ_REC_XY_RS( VWindFile,vwind1,intime1,
                0251      &       myIter,myThid )
                0252       ENDIF
679d149d01 Jean*0253 
                0254       IF ( RainFile .NE. ' '  ) THEN
                0255        CALL READ_REC_XY_RS( RainFile,rain0,intime0,
                0256      &       myIter,myThid )
                0257        CALL READ_REC_XY_RS( RainFile,rain1,intime1,
                0258      &       myIter,myThid )
                0259       ENDIF
7753507405 Curt*0260       IF ( RunoffFile .NE. ' '  ) THEN
                0261        CALL READ_REC_XY_RS( RunoffFile,runoff0,intime0,
                0262      &       myIter,myThid )
                0263        CALL READ_REC_XY_RS( RunoffFile,runoff1,intime1,
                0264      &       myIter,myThid )
                0265       ENDIF
679d149d01 Jean*0266       IF ( SnowFile .NE. ' '  ) THEN
                0267        CALL READ_REC_XY_RS( SnowFile,snow0,intime0,
7753507405 Curt*0268      &       myIter,myThid )
679d149d01 Jean*0269        CALL READ_REC_XY_RS( SnowFile,snow1,intime1,
7753507405 Curt*0270      &       myIter,myThid )
                0271       ENDIF
                0272 
679d149d01 Jean*0273 #ifdef ALLOW_FORMULA_AIM
                0274       IF ( airPotTempFile .NE. ' '  ) THEN
                0275        CALL READ_REC_XY_RS( airPotTempFile, thAir0, intime0,
                0276      &       myIter,myThid )
                0277        CALL READ_REC_XY_RS( airPotTempFile, thAir1, intime1,
                0278      &       myIter,myThid )
                0279       ENDIF
                0280 #endif
7753507405 Curt*0281 
                0282       IF ( QnetFile .NE. ' '  ) THEN
                0283        CALL READ_REC_XY_RS( QnetFile,qnetch0,intime0,
                0284      &       myIter,myThid )
                0285        CALL READ_REC_XY_RS( QnetFile,qnetch1,intime1,
                0286      &       myIter,myThid )
                0287       ENDIF
                0288       IF ( EmPFile .NE. ' '  ) THEN
                0289        CALL READ_REC_XY_RS( EmpFile,empch0,intime0,
                0290      &       myIter,myThid )
                0291        CALL READ_REC_XY_RS( EmpFile,empch1,intime1,
                0292      &       myIter,myThid )
3da6675e68 Jean*0293 c      IF ( convertEmP2rUnit.EQ.mass2rUnit ) THEN
a5003302cb Jean*0294 C-     EmPmR is now (after c59h) expressed in kg/m2/s (fresh water mass flux)
                0295         _BARRIER
                0296         DO bj = myByLo(myThid), myByHi(myThid)
                0297          DO bi = myBxLo(myThid), myBxHi(myThid)
                0298           DO j=1-Oly,sNy+Oly
                0299            DO i=1-Olx,sNx+Olx
                0300             empch0(i,j,bi,bj) = empch0(i,j,bi,bj)*rhoConstFresh
                0301             empch1(i,j,bi,bj) = empch1(i,j,bi,bj)*rhoConstFresh
                0302            ENDDO
                0303           ENDDO
                0304          ENDDO
                0305         ENDDO
3da6675e68 Jean*0306 c      ENDIF
7753507405 Curt*0307       ENDIF
                0308 
a05d835d01 Jean*0309 C note: no need for extra barrier here since EXCH contains threads synchronization
                0310 c      _BARRIER
679d149d01 Jean*0311 
12ffad7671 Jean*0312        _EXCH_XY_RS(tair0 , myThid )
                0313        _EXCH_XY_RS(tair1 , myThid )
                0314        _EXCH_XY_RS(qair0 , myThid )
                0315        _EXCH_XY_RS(qair1 , myThid )
                0316        _EXCH_XY_RS(solar0, myThid )
                0317        _EXCH_XY_RS(solar1, myThid )
                0318        _EXCH_XY_RS(flwdwn0, myThid )
                0319        _EXCH_XY_RS(flwdwn1, myThid )
                0320        _EXCH_XY_RS(cloud0, myThid )
                0321        _EXCH_XY_RS(cloud1, myThid )
                0322        _EXCH_XY_RS(wspeed0, myThid )
                0323        _EXCH_XY_RS(wspeed1, myThid )
                0324 c      _EXCH_XY_RS(uwind0, myThid )
                0325 c      _EXCH_XY_RS(uwind1, myThid )
                0326 c      _EXCH_XY_RS(vwind0, myThid )
                0327 c      _EXCH_XY_RS(vwind1, myThid )
a05d835d01 Jean*0328        CALL EXCH_UV_AGRID_3D_RS( uwind0, vwind0, .TRUE., 1, myThid )
                0329        CALL EXCH_UV_AGRID_3D_RS( uwind1, vwind1, .TRUE., 1, myThid )
12ffad7671 Jean*0330        _EXCH_XY_RS(rain0, myThid )
                0331        _EXCH_XY_RS(rain1, myThid )
                0332        _EXCH_XY_RS(runoff0, myThid )
                0333        _EXCH_XY_RS(runoff1, myThid )
                0334        _EXCH_XY_RS(snow0 , myThid )
                0335        _EXCH_XY_RS(snow1 , myThid )
679d149d01 Jean*0336 #ifdef ALLOW_FORMULA_AIM
                0337        IF ( useFluxFormula_AIM ) THEN
12ffad7671 Jean*0338          _EXCH_XY_RS( thAir0, myThid )
                0339          _EXCH_XY_RS( thAir1, myThid )
679d149d01 Jean*0340        ENDIF
                0341 #endif
12ffad7671 Jean*0342        _EXCH_XY_RS(qnetch0, myThid )
                0343        _EXCH_XY_RS(qnetch1, myThid )
                0344        _EXCH_XY_RS(empch0, myThid )
                0345        _EXCH_XY_RS(empch1, myThid )
679d149d01 Jean*0346 
a96726d526 Jean*0347 C-    save newly loaded time-record
                0348         DO bj = myByLo(myThid), myByHi(myThid)
                0349          DO bi = myBxLo(myThid), myBxHi(myThid)
                0350            bulkfRec(bi,bj) = intime1
                0351          ENDDO
                0352         ENDDO
                0353 
                0354 C--   end if-block for loading new time-records
7753507405 Curt*0355       ENDIF
                0356 
                0357 C--   Interpolate TAIR, QAIR, RAIN, SOLAR
                0358       DO bj = myByLo(myThid), myByHi(myThid)
                0359        DO bi = myBxLo(myThid), myBxHi(myThid)
                0360         DO j=1-Oly,sNy+Oly
                0361          DO i=1-Olx,sNx+Olx
679d149d01 Jean*0362 Cswdblkf -- QQQQQ check if tair is K or C ------
                0363 C        -- dasilva data in C, ncep data in K ---
                0364           TAIR(i,j,bi,bj)   = bWght*tair0(i,j,bi,bj)
                0365      &                       +aWght*tair1(i,j,bi,bj)
                0366 c                            +273.15 _d 0
                0367 Cswdblkf -- QQQQQ set to kg.kg??? ---
                0368 C       -- dasilva data in g, ncep in kg ---
                0369           QAIR(i,j,bi,bj)    =(bWght*qair0(i,j,bi,bj)
6a1d3c464b Jean*0370      &                        +aWght*qair1(i,j,bi,bj) )
                0371           SOLAR(i,j,bi,bj)   = bWght*solar0(i,j,bi,bj)
                0372      &                        +aWght*solar1(i,j,bi,bj)
679d149d01 Jean*0373           FLWDWN(i,j,bi,bj)  = bWght*flwdwn0(i,j,bi,bj)
                0374      &                        +aWght*flwdwn1(i,j,bi,bj)
                0375           CLOUD(i,j,bi,bj)   = bWght*cloud0(i,j,bi,bj)
                0376      &                        +aWght*cloud1(i,j,bi,bj)
                0377           WSPEED(i,j,bi,bj)  = bWght*wspeed0(i,j,bi,bj)
                0378      &                        +aWght*wspeed1(i,j,bi,bj)
6a1d3c464b Jean*0379           UWIND(i,j,bi,bj)   = bWght*uwind0(i,j,bi,bj)
                0380      &                        +aWght*uwind1(i,j,bi,bj)
                0381           VWIND(i,j,bi,bj)   = bWght*vwind0(i,j,bi,bj)
                0382      &                        +aWght*vwind1(i,j,bi,bj)
679d149d01 Jean*0383           RAIN(i,j,bi,bj)    = bWght*rain0(i,j,bi,bj)
                0384      &                        +aWght*rain1(i,j,bi,bj)
6a1d3c464b Jean*0385           RUNOFF(i,j,bi,bj)  = bWght*runoff0(i,j,bi,bj)
                0386      &                        +aWght*runoff1(i,j,bi,bj)
94370ae71c Jean*0387 c#ifdef ALLOW_THSICE
                0388 c         SNOW(i,j,bi,bj)    = bWght*snow0(i,j,bi,bj)
                0389 c    &                        +aWght*snow1(i,j,bi,bj)
                0390 c#endif
a5003302cb Jean*0391           Qnetch(i,j,bi,bj)  = bWght*qnetch0(i,j,bi,bj)
679d149d01 Jean*0392      &                        +aWght*qnetch1(i,j,bi,bj)
a5003302cb Jean*0393           EmPch(i,j,bi,bj)   = bWght*empch0(i,j,bi,bj)
679d149d01 Jean*0394      &                        +aWght*empch1(i,j,bi,bj)
7753507405 Curt*0395          ENDDO
                0396         ENDDO
679d149d01 Jean*0397 #ifdef ALLOW_FORMULA_AIM
                0398         IF ( useFluxFormula_AIM ) THEN
                0399          DO j=1-Oly,sNy+Oly
                0400           DO i=1-Olx,sNx+Olx
                0401             thAir(i,j,bi,bj)  = bWght*thAir0(i,j,bi,bj)
                0402      &                        + aWght*thAir1(i,j,bi,bj)
                0403           ENDDO
                0404          ENDDO
                0405         ENDIF
                0406 #endif
7753507405 Curt*0407        ENDDO
                0408       ENDDO
                0409 
6a1d3c464b Jean*0410 C- jmc: not needed since local fields have been exchanged.
12ffad7671 Jean*0411 c      _EXCH_XY_RL(tair , myThid )
7753507405 Curt*0412 
                0413 C-- Diagnostics
2af766aefa Curt*0414 c      IF (myThid.EQ.1 .AND. myTime.LT.62208000.) THEN
                0415 c        write(*,'(a,1p5e12.4,2i6,2e12.4)')
                0416 c     &   'time,TAIR,QAIR,RAIN,SOLAR,i0,i1,a,b = ',
                0417 c     &   myTime,
                0418 c     &   TAIR(1,sNy,1,1),QAIR(1,sNy,1,1),
                0419 c     &   RAIN(1,sNy,1,1),SOLAR(1,sNy,1,1),
                0420 c     &   intime0,intime1,aWght,bWght
                0421 c        write(*,'(a,1p4e12.4,2e12.4)')
                0422 c     &   'time,tair0,tair1,TAIR = ',
                0423 c     &   myTime,
                0424 c     &   tair0(1,sNy,1,1),tair1(1,sNy,1,1),TAIR(1,sNy,1,1),
                0425 c     &   aWght,bWght
                0426 c      ENDIF
7753507405 Curt*0427 
                0428 C endif for periodicForcing
                0429       ENDIF
                0430 
6a1d3c464b Jean*0431 #endif /*ALLOW_BULK_FORCE*/
7753507405 Curt*0432 
                0433       RETURN
                0434       END