/[MITgcm]/MITgcm/pkg/seaice/seaice_growth.F
ViewVC logotype

Diff of /MITgcm/pkg/seaice/seaice_growth.F

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

revision 1.97 by mlosch, Fri Nov 5 08:10:57 2010 UTC revision 1.98 by mlosch, Thu Nov 11 16:37:39 2010 UTC
# Line 157  c temporary variables available for the Line 157  c temporary variables available for the
157        _RL saltFluxAdjust      (1:sNx,1:sNy)        _RL saltFluxAdjust      (1:sNx,1:sNy)
158  #endif  #endif
159    
160          INTEGER nDim
161  #ifdef SEAICE_MULTICATEGORY  #ifdef SEAICE_MULTICATEGORY
       INTEGER it  
162        INTEGER ilockey        INTEGER ilockey
163        _RL RK        PARAMETER ( nDim = MULTDIM )
164    #else
165          PARAMETER ( nDim = 1 )
166    #endif /* SEAICE_MULTICATEGORY */
167          INTEGER it
168          _RL pFac
169        _RL heffActualP         (1:sNx,1:sNy)        _RL heffActualP         (1:sNx,1:sNy)
170        _RL a_QbyATMmult_cover  (1:sNx,1:sNy)        _RL a_QbyATMmult_cover  (1:sNx,1:sNy)
171        _RL a_QSWbyATMmult_cover(1:sNx,1:sNy)        _RL a_QSWbyATMmult_cover(1:sNx,1:sNy)
 #endif  
172    
173  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
174        _RL DIAGarray     (1:sNx,1:sNy)        _RL DIAGarray     (1:sNx,1:sNy)
# Line 172  c temporary variables available for the Line 176  c temporary variables available for the
176        EXTERNAL DIAGNOSTICS_IS_ON        EXTERNAL DIAGNOSTICS_IS_ON
177  #endif  #endif
178    
   
   
179  c ===================================================================  c ===================================================================
180  c =================PART 0: constants and initializations=============  c =================PART 0: constants and initializations=============
181  c ===================================================================  c ===================================================================
182    
   
   
183        IF ( buoyancyRelation .EQ. 'OCEANICP' ) THEN        IF ( buoyancyRelation .EQ. 'OCEANICP' ) THEN
184         kSurface        = Nr         kSurface        = Nr
185        ELSE        ELSE
# Line 276  c Line 276  c
276  #ifdef SEAICE_SALINITY  #ifdef SEAICE_SALINITY
277            saltFluxAdjust(I,J)        = 0.0 _d 0            saltFluxAdjust(I,J)        = 0.0 _d 0
278  #endif  #endif
 #ifdef SEAICE_MULTICATEGORY  
279            a_QbyATMmult_cover(I,J)    = 0.0 _d 0            a_QbyATMmult_cover(I,J)    = 0.0 _d 0
280            a_QSWbyATMmult_cover(I,J)  = 0.0 _d 0            a_QSWbyATMmult_cover(I,J)  = 0.0 _d 0
 #endif  
281           ENDDO           ENDDO
282          ENDDO          ENDDO
283  #ifdef ALLOW_MEAN_SFLUX_COST_CONTRIBUTION  #ifdef ALLOW_MEAN_SFLUX_COST_CONTRIBUTION
# Line 506  C wind speed from exf Line 504  C wind speed from exf
504  C determine available heat due to the atmosphere -- for ice covered water  C determine available heat due to the atmosphere -- for ice covered water
505  C =======================================================================  C =======================================================================
506    
 #ifdef ALLOW_AUTODIFF_TAMC  
 CADJ STORE tice   = comlev1, key = ikey_dynamics, byte = isbyte  
 # ifdef SEAICE_MULTICATEGORY  
 CADJ STORE tices  = comlev1, key = ikey_dynamics, byte = isbyte  
 # endif  
 #endif /* ALLOW_AUTODIFF_TAMC */  
   
507  #ifdef ALLOW_ATM_WIND  #ifdef ALLOW_ATM_WIND
508          IF (useRelativeWind) THEN          IF (useRelativeWind) THEN
509  C     Compute relative wind speed over sea ice.  C     Compute relative wind speed over sea ice.
# Line 537  C     Compute relative wind speed over s Line 528  C     Compute relative wind speed over s
528          ENDIF          ENDIF
529  #endif  #endif
530    
 #ifdef SEAICE_MULTICATEGORY  
 C--  Start loop over muli-categories  
         DO IT=1,MULTDIM  
531  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
532           ilockey = (iicekey-1)*MULTDIM + IT  CADJ STORE tice   = comlev1, key = ikey_dynamics, byte = isbyte
533    # ifdef SEAICE_MULTICATEGORY
534    CADJ STORE tices  = comlev1, key = ikey_dynamics, byte = isbyte
535    # endif /* SEAICE_MULTICATEGORY */
536    #endif /* ALLOW_AUTODIFF_TAMC */
537    
538    C--   Start loop over muli-categories, if SEAICE_MULTICATEGORY is undefined
539    C     nDim = 1, and there is only one loop iteration
540            DO IT=1,nDim
541    #ifdef ALLOW_AUTODIFF_TAMC
542    #ifdef SEAICE_MULTICATEGORY
543    C     Why do we need this store directive when we have just stored
544    C     TICES before the loop?
545             ilockey = (iicekey-1)*nDim + IT
546  CADJ STORE tices(:,:,it,bi,bj) = comlev1_multdim,  CADJ STORE tices(:,:,it,bi,bj) = comlev1_multdim,
547  CADJ &                           key = ilockey, byte = isbyte  CADJ &                           key = ilockey, byte = isbyte
548    #endif /* SEAICE_MULTICATEGORY */
549  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
550           RK=REAL(IT)           pFac = (2.0 _d 0*real(IT)-1.0 _d 0)/nDim
551           DO J=1,sNy           DO J=1,sNy
552            DO I=1,sNx            DO I=1,sNx
553             heffActualP(I,J)=             heffActualP(I,J)= heffActual(I,J)*pFac
554       &        (heffActual(I,J)/MULTDIM)*((2.0 _d 0*RK)-1.0 _d 0)  #ifdef SEAICE_MULTICATEGORY
555             TICE(I,J,bi,bj)=TICES(I,J,IT,bi,bj)             TICE(I,J,bi,bj)=TICES(I,J,IT,bi,bj)
556    #endif /* SEAICE_MULTICATEGORY */
557            ENDDO            ENDDO
558           ENDDO           ENDDO
559           CALL SEAICE_SOLVE4TEMP(           CALL SEAICE_SOLVE4TEMP(
# Line 561  CADJ &                           key = i Line 564  CADJ &                           key = i
564           DO J=1,sNy           DO J=1,sNy
565            DO I=1,sNx            DO I=1,sNx
566  C     average over categories  C     average over categories
567             a_QbyATM_cover (I,J) =             a_QbyATM_cover (I,J)   = a_QbyATM_cover(I,J)
568       &       a_QbyATM_cover(I,J) + a_QbyATMmult_cover(I,J)/MULTDIM       &          + a_QbyATMmult_cover(I,J)/nDim
569             a_QSWbyATM_cover (I,J) =             a_QSWbyATM_cover (I,J) = a_QSWbyATM_cover(I,J)
570       &       a_QSWbyATM_cover(I,J) + a_QSWbyATMmult_cover(I,J)/MULTDIM       &          + a_QSWbyATMmult_cover(I,J)/nDim
571    #ifdef SEAICE_MULTICATEGORY
572             TICES(I,J,IT,bi,bj) = TICE(I,J,bi,bj)             TICES(I,J,IT,bi,bj) = TICE(I,J,bi,bj)
573    #endif /* SEAICE_MULTICATEGORY */
574            ENDDO            ENDDO
575           ENDDO           ENDDO
576          ENDDO          ENDDO
577  C--  End loop over multi-categories  C--  End loop over multi-categories
 #else  /* SEAICE_MULTICATEGORY */  
         CALL SEAICE_SOLVE4TEMP(  
      I       UG, heffActual, hsnowActual,  
      U       TICE,  
      O       a_QbyATM_cover, a_QSWbyATM_cover,  
      I       bi, bj, myTime, myIter, myThid )  
 #endif /* SEAICE_MULTICATEGORY */  
578    
579  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
580          IF ( useDiagnostics ) THEN          IF ( useDiagnostics ) THEN
# Line 916  C gain of new ice over open water Line 914  C gain of new ice over open water
914  c compute cover fraction tendency  c compute cover fraction tendency
915            IF ( YC(I,J,bi,bj) .LT. ZERO ) THEN            IF ( YC(I,J,bi,bj) .LT. ZERO ) THEN
916             d_AREAbyATM(I,J)=tmpscal4/HO_south             d_AREAbyATM(I,J)=tmpscal4/HO_south
 #ifndef SEAICE_GROWTH_LEGACY  
      &          +HALF*tmpscal3/heffActual(I,J)  
 #else  
      &          +HALF*tmpscal3*AREApreTH(I,J)  
      &          /(tmpscal0+.00001 _d 0)  
 #endif  
917            ELSE            ELSE
918             d_AREAbyATM(I,J)=tmpscal4/HO             d_AREAbyATM(I,J)=tmpscal4/HO
919              ENDIF
920              d_AREAbyATM(I,J)=d_AREAbyATM(I,J)
921  #ifndef SEAICE_GROWTH_LEGACY  #ifndef SEAICE_GROWTH_LEGACY
922       &          +HALF*tmpscal3/heffActual(I,J)       &         +HALF*tmpscal3/heffActual(I,J)
923  #else  #else
924       &          +HALF*tmpscal3*AREApreTH(I,J)       &         +HALF*tmpscal3*AREApreTH(I,J)
925       &          /(tmpscal0+.00001 _d 0)       &         /(tmpscal0+.00001 _d 0)
926  #endif  #endif
           ENDIF  
927  c apply tendency  c apply tendency
928            IF ( (HEFF(i,j,bi,bj).GT.0. _d 0).OR.            IF ( (HEFF(i,j,bi,bj).GT.0. _d 0).OR.
929       &        (HSNOW(i,j,bi,bj).GT.0. _d 0) ) THEN       &        (HSNOW(i,j,bi,bj).GT.0. _d 0) ) THEN

Legend:
Removed from v.1.97  
changed lines
  Added in v.1.98

  ViewVC Help
Powered by ViewVC 1.1.22