/[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.90 by gforget, Sat Oct 16 23:28:09 2010 UTC revision 1.91 by jmc, Thu Oct 21 20:02:33 2010 UTC
# Line 1  Line 1 
 #define SEAICE_GROWTH_LEGACY  
 #define SEAICE_DO_OPEN_WATER_GROWTH  
 #define SEAICE_OCN_MELT_ACT_ON_AREA  
1  C $Header$  C $Header$
2  C $Name$  C $Name$
3    
4    #define SEAICE_GROWTH_LEGACY
5    #define SEAICE_DO_OPEN_WATER_GROWTH
6    #define SEAICE_OCN_MELT_ACT_ON_AREA
7  #include "SEAICE_OPTIONS.h"  #include "SEAICE_OPTIONS.h"
8    
9  CBOP  CBOP
# Line 51  C     myThid :: Thread no. that called t Line 51  C     myThid :: Thread no. that called t
51  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
52  C     === Local variables ===  C     === Local variables ===
53  C  C
54  C unit/sign convention:  C unit/sign convention:
55  C    Within the thermodynamic computation all stocks, except HSNOW,    C    Within the thermodynamic computation all stocks, except HSNOW,
56  C      are in 'effective ice meters' units, and >0 implies more ice.  C      are in 'effective ice meters' units, and >0 implies more ice.
57  C    This holds for stocks due to ocean and atmosphere heat,  C    This holds for stocks due to ocean and atmosphere heat,
58  C      at the outset of 'PART 2: determine heat fluxes/stocks'  C      at the outset of 'PART 2: determine heat fluxes/stocks'
59  C      and until 'PART 7: determine ocean model forcing'  C      and until 'PART 7: determine ocean model forcing'
60  C    This strategy minimizes the need for multiplications/divisions  C    This strategy minimizes the need for multiplications/divisions
61  C      by ice fraction, heat capacity, etc. The only conversions that  C      by ice fraction, heat capacity, etc. The only conversions that
62  C      occurs are for the HSNOW (in effective snow meters) and  C      occurs are for the HSNOW (in effective snow meters) and
63  C      PRECIP (fresh water m/s).  C      PRECIP (fresh water m/s).
64  c  c
65  c HEFF is effective Hice thickness (m3/m2)  c HEFF is effective Hice thickness (m3/m2)
66  c HSNOW is Heffective snow thickness (m3/m2)  c HSNOW is Heffective snow thickness (m3/m2)
# Line 68  c HSALT is Heffective salt content (g/m2 Line 68  c HSALT is Heffective salt content (g/m2
68  c AREA is the seaice cover fraction (0<=AREA<=1)  c AREA is the seaice cover fraction (0<=AREA<=1)
69  c Q denotes heat stocks -- converted to ice stocks (m3/m2) early on  c Q denotes heat stocks -- converted to ice stocks (m3/m2) early on
70  c  c
71  c For all other stocks/increments, such as d_HEFFbyATMonOCN  c For all other stocks/increments, such as d_HEFFbyATMonOCN
72  c or a_QbyATM_cover, the naming convention is as follows:  c or a_QbyATM_cover, the naming convention is as follows:
73  c    The prefix 'a_' means available, the prefix 'd_' means delta  c    The prefix 'a_' means available, the prefix 'd_' means delta
74  c       (i.e. increment), and the prefix 'r_' means residual.  c       (i.e. increment), and the prefix 'r_' means residual.
75  c    The suffix '_cover' denotes a value for the ice covered fraction  c    The suffix '_cover' denotes a value for the ice covered fraction
76  c       of the grid cell, whereas '_cover' is for the open water fraction.  c       of the grid cell, whereas '_cover' is for the open water fraction.
77  c    The main part of the name states what ice/snow stock is concerned  c    The main part of the name states what ice/snow stock is concerned
78  c       (e.g. QbyATM or HEFF), and how it is affected (e.g. d_HEFFbyATMonOCN  c       (e.g. QbyATM or HEFF), and how it is affected (e.g. d_HEFFbyATMonOCN
79  c       is the increment of HEFF due to the ATMosphere extracting heat from the  c       is the increment of HEFF due to the ATMosphere extracting heat from the
80  c       OCeaN surface, or providing heat to the OCeaN surface).  c       OCeaN surface, or providing heat to the OCeaN surface).
81    
82  CEOP  CEOP
# Line 88  C     constants Line 88  C     constants
88        _RL TBC, ICE2SNOW        _RL TBC, ICE2SNOW
89        _RL QI, QS, Lfusion        _RL QI, QS, Lfusion
90    
91  C     a_QbyATM_cover :: available heat (in W/m^2) due to the interaction of    C     a_QbyATM_cover :: available heat (in W/m^2) due to the interaction of
92  C             the atmosphere and the ocean surface - for ice covered water  C             the atmosphere and the ocean surface - for ice covered water
93  C     a_QbyATM_open  :: same but for open water  C     a_QbyATM_open  :: same but for open water
94  C     r_QbyATM_cover :: residual of a_QbyATM_cover after freezing/melting processes  C     r_QbyATM_cover :: residual of a_QbyATM_cover after freezing/melting processes
# Line 101  C     a_QSWbyATM_open   - short wave hea Line 101  C     a_QSWbyATM_open   - short wave hea
101  C     a_QSWbyATM_cover  - short wave heat flux under ice in W/m^2  C     a_QSWbyATM_cover  - short wave heat flux under ice in W/m^2
102        _RL a_QSWbyATM_open     (1:sNx,1:sNy)        _RL a_QSWbyATM_open     (1:sNx,1:sNy)
103        _RL a_QSWbyATM_cover    (1:sNx,1:sNy)        _RL a_QSWbyATM_cover    (1:sNx,1:sNy)
104  C     a_QbyOCN :: available heat (in in W/m^2) due to the    C     a_QbyOCN :: available heat (in in W/m^2) due to the
105  C             interaction of the ice pack and the ocean surface  C             interaction of the ice pack and the ocean surface
106  C     r_QbyOCN :: residual of a_QbyOCN after freezing/melting  C     r_QbyOCN :: residual of a_QbyOCN after freezing/melting
107  C             processes have been accounted for  C             processes have been accounted for
108        _RL a_QbyOCN            (1:sNx,1:sNy)        _RL a_QbyOCN            (1:sNx,1:sNy)
109        _RL r_QbyOCN            (1:sNx,1:sNy)        _RL r_QbyOCN            (1:sNx,1:sNy)
# Line 154  c temporary variables available for the Line 154  c temporary variables available for the
154  #ifdef ALLOW_SEAICE_FLOODING  #ifdef ALLOW_SEAICE_FLOODING
155        _RL hDraft        _RL hDraft
156  #endif /* ALLOW_SEAICE_FLOODING */  #endif /* ALLOW_SEAICE_FLOODING */
157          
158  #ifdef SEAICE_SALINITY  #ifdef SEAICE_SALINITY
159        _RL saltFluxAdjust      (1:sNx,1:sNy)        _RL saltFluxAdjust      (1:sNx,1:sNy)
160  #endif  #endif
# Line 197  C     MINIMUM THICKNESS USED TO REGULARI Line 197  C     MINIMUM THICKNESS USED TO REGULARI
197        hiceMin=0.05 _d +00        hiceMin=0.05 _d +00
198  c note: areaMax slightly less than 1 can be set to specify that there allways are some leads  c note: areaMax slightly less than 1 can be set to specify that there allways are some leads
199        areaMax=1. _d 0        areaMax=1. _d 0
200          
201  C     FREEZING TEMP. OF SEA WATER (deg C)  C     FREEZING TEMP. OF SEA WATER (deg C)
202        TBC          = SEAICE_freeze        TBC          = SEAICE_freeze
203    
# Line 352  CADJ &                        key = iice Line 352  CADJ &                        key = iice
352  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
353          DO J=1,sNy          DO J=1,sNy
354           DO I=1,sNx           DO I=1,sNx
355            IF ((HEFF(i,j,bi,bj).GT.0).OR.(HSNOW(i,j,bi,bj).GT.0))            IF ((HEFF(i,j,bi,bj).GT.0).OR.(HSNOW(i,j,bi,bj).GT.0))
356       &     AREA(I,J,bi,bj)=MAX(AREA(I,J,bi,bj),areaMin)       &     AREA(I,J,bi,bj)=MAX(AREA(I,J,bi,bj),areaMin)
357           ENDDO           ENDDO
358          ENDDO          ENDDO
# Line 400  CADJ &                        key = iice Line 400  CADJ &                        key = iice
400    
401  c 5) treat sea ice age pathological cases  c 5) treat sea ice age pathological cases
402  c ...  c ...
403            
404  #else  #else
405  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
406  CADJ STORE hsnow(:,:,bi,bj)  = comlev1_bibj,  CADJ STORE hsnow(:,:,bi,bj)  = comlev1_bibj,
# Line 536  CADJ &                           key = i Line 536  CADJ &                           key = i
536           DO J=1,sNy           DO J=1,sNy
537            DO I=1,sNx            DO I=1,sNx
538  C     average over categories  C     average over categories
539             a_QbyATM_cover (I,J) =             a_QbyATM_cover (I,J) =
540       &       a_QbyATM_cover(I,J) + a_QbyATMmult_cover(I,J)/MULTDIM       &       a_QbyATM_cover(I,J) + a_QbyATMmult_cover(I,J)/MULTDIM
541             a_QSWbyATM_cover (I,J) =             a_QSWbyATM_cover (I,J) =
542       &       a_QSWbyATM_cover(I,J) + a_QSWbyATMmult_cover(I,J)/MULTDIM       &       a_QSWbyATM_cover(I,J) + a_QSWbyATMmult_cover(I,J)/MULTDIM
543             TICES(I,J,IT,bi,bj) = TICE(I,J,bi,bj)             TICES(I,J,IT,bi,bj) = TICE(I,J,bi,bj)
544            ENDDO            ENDDO
# Line 571  C--  End loop over multi-categories Line 571  C--  End loop over multi-categories
571  c switch heat fluxes from W/m2 to 'effective' ice meters  c switch heat fluxes from W/m2 to 'effective' ice meters
572          DO J=1,sNy          DO J=1,sNy
573           DO I=1,sNx           DO I=1,sNx
574             a_QbyATM_cover(I,J) = a_QbyATM_cover(I,J)               a_QbyATM_cover(I,J) = a_QbyATM_cover(I,J)
575       &         * convertQ2HI * AREApreTH(I,J)       &         * convertQ2HI * AREApreTH(I,J)
576             a_QSWbyATM_cover(I,J) = a_QSWbyATM_cover(I,J)             a_QSWbyATM_cover(I,J) = a_QSWbyATM_cover(I,J)
577       &         * convertQ2HI * AREApreTH(I,J)       &         * convertQ2HI * AREApreTH(I,J)
578             a_QbyATM_open(I,J) = a_QbyATM_open(I,J)             a_QbyATM_open(I,J) = a_QbyATM_open(I,J)
579       &         * convertQ2HI * ( ONE - AREApreTH(I,J) )       &         * convertQ2HI * ( ONE - AREApreTH(I,J) )
580             a_QSWbyATM_open(I,J) = a_QSWbyATM_open(I,J)             a_QSWbyATM_open(I,J) = a_QSWbyATM_open(I,J)
581       &         * convertQ2HI * ( ONE - AREApreTH(I,J) )       &         * convertQ2HI * ( ONE - AREApreTH(I,J) )
582  c and initialize r_QbyATM_cover/r_QbyATM_open  c and initialize r_QbyATM_cover/r_QbyATM_open
583             r_QbyATM_cover(I,J)=a_QbyATM_cover(I,J)             r_QbyATM_cover(I,J)=a_QbyATM_cover(I,J)
# Line 586  c and initialize r_QbyATM_cover/r_QbyATM Line 586  c and initialize r_QbyATM_cover/r_QbyATM
586          ENDDO          ENDDO
587    
588    
589  C determine available heat due to the ice pack tying the  C determine available heat due to the ice pack tying the
590  C underlying surface water temperature to freezing point  C underlying surface water temperature to freezing point
591  C ======================================================  C ======================================================
592    
# Line 667  CADJ &                         key = iic Line 667  CADJ &                         key = iic
667            IF ( a_QbyATM_cover(I,J).LT. 0. _d 0 ) THEN            IF ( a_QbyATM_cover(I,J).LT. 0. _d 0 ) THEN
668              tmpscal1=              tmpscal1=
669       &        MAX(r_QbyATM_cover(I,J)*ICE2SNOW, -HSNOW(I,J,bi,bj))       &        MAX(r_QbyATM_cover(I,J)*ICE2SNOW, -HSNOW(I,J,bi,bj))
670            ELSE            ELSE
671              tmpscal1=0. _d 0              tmpscal1=0. _d 0
672            ENDIF            ENDIF
673            d_HSNWbyATMonSNW(I,J)= tmpscal1            d_HSNWbyATMonSNW(I,J)= tmpscal1
674            HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj) + tmpscal1            HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj) + tmpscal1
675            r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J) - tmpscal1/ICE2SNOW            r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J) - tmpscal1/ICE2SNOW
676           ENDDO           ENDDO
677          ENDDO          ENDDO
# Line 695  cgf warming conditions, the lab_sea resu Line 695  cgf warming conditions, the lab_sea resu
695            d_HEFFbyATMonOCN(I,J)=d_HEFFbyATMonOCN(I,J)+tmpscal2            d_HEFFbyATMonOCN(I,J)=d_HEFFbyATMonOCN(I,J)+tmpscal2
696            r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J)-tmpscal2            r_QbyATM_cover(I,J)=r_QbyATM_cover(I,J)-tmpscal2
697  c The following line is what I referred to as the 'vintage bug'  c The following line is what I referred to as the 'vintage bug'
698  c If I mistook a desirable feature for a bug, then we will un-comment  c If I mistook a desirable feature for a bug, then we will un-comment
699  c this line. Otherwise we may want to delete the comment at some point.  c this line. Otherwise we may want to delete the comment at some point.
700  c     &                                            *AREApreTH(I,J)  c     &                                            *AREApreTH(I,J)
701            HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal2            HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal2
# Line 703  c     & Line 703  c     &
703          ENDDO          ENDDO
704    
705    
706  C attribute precip to fresh water or snow stock,  C attribute precip to fresh water or snow stock,
707  C depending on atmospheric conditions.  C depending on atmospheric conditions.
708  C =================================================  C =================================================
709  #ifdef ALLOW_ATM_TEMP  #ifdef ALLOW_ATM_TEMP
# Line 717  C           add precip as snow Line 717  C           add precip as snow
717              d_HFRWbyRAIN(I,J)=0. _d 0              d_HFRWbyRAIN(I,J)=0. _d 0
718              d_HSNWbyRAIN(I,J)=convertPRECIP2HI*ICE2SNOW*              d_HSNWbyRAIN(I,J)=convertPRECIP2HI*ICE2SNOW*
719       &            PRECIP(I,J,bi,bj)*AREApreTH(I,J)       &            PRECIP(I,J,bi,bj)*AREApreTH(I,J)
720            ELSE            ELSE
721  c           add precip to the fresh water bucket  c           add precip to the fresh water bucket
722              d_HFRWbyRAIN(I,J)=-convertPRECIP2HI*              d_HFRWbyRAIN(I,J)=-convertPRECIP2HI*
723       &            PRECIP(I,J,bi,bj)*AREApreTH(I,J)       &            PRECIP(I,J,bi,bj)*AREApreTH(I,J)
724              d_HSNWbyRAIN(I,J)=0. _d 0              d_HSNWbyRAIN(I,J)=0. _d 0
725            ENDIF            ENDIF
726            HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj) + d_HSNWbyRAIN(I,J)            HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj) + d_HSNWbyRAIN(I,J)
727           ENDDO           ENDDO
728          ENDDO          ENDDO
729  cgf note: this does not affect air-sea heat flux,  cgf note: this does not affect air-sea heat flux,
730  cgf since the implied air heat gain to turn  cgf since the implied air heat gain to turn
731  cgf rain to snow is not a surface process.  cgf rain to snow is not a surface process.
732  #endif /* ALLOW_ATM_TEMP */  #endif /* ALLOW_ATM_TEMP */
733    
# Line 770  CADJ &                       key = iicek Line 770  CADJ &                       key = iicek
770            if ( (r_QbyATM_open(I,J).GT.0. _d 0).AND.            if ( (r_QbyATM_open(I,J).GT.0. _d 0).AND.
771       &         (AREApreTH(I,J).GT.0. _d 0) ) then       &         (AREApreTH(I,J).GT.0. _d 0) ) then
772              tmpscal1=r_QbyATM_open(I,J)+r_QbyOCN(i,j)              tmpscal1=r_QbyATM_open(I,J)+r_QbyOCN(i,j)
773  c at this point r_QbyOCN(i,j)<=0 and represents the heat  c at this point r_QbyOCN(i,j)<=0 and represents the heat
774  c that is still needed to get to the first layer to freezing point  c that is still needed to get to the first layer to freezing point
775              tmpscal2=SWFRACB*(a_QSWbyATM_cover(I,J)              tmpscal2=SWFRACB*(a_QSWbyATM_cover(I,J)
776       &                       +a_QSWbyATM_open(I,J))       &                       +a_QSWbyATM_open(I,J))
777  c SWFRACB*tmpscal2<=0 is the heat (out of qnet) that is not  c SWFRACB*tmpscal2<=0 is the heat (out of qnet) that is not
778  c going to the first layer, which favors its freezing  c going to the first layer, which favors its freezing
779              tmpscal3=MAX(0. _d 0, tmpscal1-tmpscal2)              tmpscal3=MAX(0. _d 0, tmpscal1-tmpscal2)
780            else            else
# Line 782  c going to the first layer, which favors Line 782  c going to the first layer, which favors
782            endif            endif
783            d_HEFFbyATMonOCN_open(I,J)=tmpscal3            d_HEFFbyATMonOCN_open(I,J)=tmpscal3
784  c The distinct d_HEFFbyATMonOCN_open array is only needed for d_AREA computation.  c The distinct d_HEFFbyATMonOCN_open array is only needed for d_AREA computation.
785  c For the rest it is treated as another contribution to d_HEFFbyATMonOCN.  c For the rest it is treated as another contribution to d_HEFFbyATMonOCN.
786            d_HEFFbyATMonOCN(I,J)=d_HEFFbyATMonOCN(I,J)+tmpscal3            d_HEFFbyATMonOCN(I,J)=d_HEFFbyATMonOCN(I,J)+tmpscal3
787            r_QbyATM_open(I,J)=r_QbyATM_open(I,J)-tmpscal3            r_QbyATM_open(I,J)=r_QbyATM_open(I,J)-tmpscal3
788            HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal3            HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + tmpscal3
# Line 807  c note: in legacy, this process is done Line 807  c note: in legacy, this process is done
807             d_HEFFbyFLOODING(I,J)=tmpscal1             d_HEFFbyFLOODING(I,J)=tmpscal1
808             HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj)+d_HEFFbyFLOODING(I,J)             HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj)+d_HEFFbyFLOODING(I,J)
809             HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj)-             HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj)-
810       &                           d_HEFFbyFLOODING(I,J)*ICE2SNOW         &                           d_HEFFbyFLOODING(I,J)*ICE2SNOW
811            ENDDO            ENDDO
812           ENDDO           ENDDO
813  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
# Line 860  CADJ &                         key = iic Line 860  CADJ &                         key = iic
860  #ifndef SEAICE_GROWTH_LEGACY  #ifndef SEAICE_GROWTH_LEGACY
861  c compute ice melt due to ATM (and OCN) heat stocks  c compute ice melt due to ATM (and OCN) heat stocks
862  c  c
863  # ifdef SEAICE_OCN_MELT_ACT_ON_AREA  # ifdef SEAICE_OCN_MELT_ACT_ON_AREA
864  c ice cover reduction by joint OCN+ATM melt  c ice cover reduction by joint OCN+ATM melt
865            tmpscal3 = MIN( 0. _d 0 ,            tmpscal3 = MIN( 0. _d 0 ,
866       &              d_HEFFbyATMonOCN(I,J)+d_HEFFbyOCNonICE(I,J) )       &              d_HEFFbyATMonOCN(I,J)+d_HEFFbyOCNonICE(I,J) )
867  # else  # else
868  c ice cover reduction by ATM melt only -- as in legacy code  c ice cover reduction by ATM melt only -- as in legacy code
869            tmpscal3 = MIN( 0. _d 0 , d_HEFFbyATMonOCN(I,J) )            tmpscal3 = MIN( 0. _d 0 , d_HEFFbyATMonOCN(I,J) )
870  # endif      # endif
871  C gain of new ice over open water  C gain of new ice over open water
872  c  c
873  # ifdef SEAICE_DO_OPEN_WATER_GROWTH  # ifdef SEAICE_DO_OPEN_WATER_GROWTH
# Line 914  c compute cover fraction tendency Line 914  c compute cover fraction tendency
914  c apply tendency  c apply tendency
915            IF ( (HEFF(i,j,bi,bj).GT.0. _d 0).OR.            IF ( (HEFF(i,j,bi,bj).GT.0. _d 0).OR.
916       &        (HSNOW(i,j,bi,bj).GT.0. _d 0) ) THEN       &        (HSNOW(i,j,bi,bj).GT.0. _d 0) ) THEN
917             AREA(I,J,bi,bj)=max(0. _d 0 , min( 1. _d 0,             AREA(I,J,bi,bj)=max(0. _d 0 , min( 1. _d 0,
918       &                     AREA(I,J,bi,bj)+d_AREAbyATM(I,J) ) )       &                     AREA(I,J,bi,bj)+d_AREAbyATM(I,J) ) )
919            ELSE            ELSE
920             AREA(I,J,bi,bj)=0. _d 0             AREA(I,J,bi,bj)=0. _d 0
# Line 1029  c ====================================== Line 1029  c ======================================
1029    
1030  #ifdef SEAICE_GROWTH_LEGACY  #ifdef SEAICE_GROWTH_LEGACY
1031    
1032  C treat values of ice cover fraction oustide  C treat values of ice cover fraction oustide
1033  C the [0 1] range, and other such issues.  C the [0 1] range, and other such issues.
1034  C ===========================================  C ===========================================
1035    
# Line 1107  C ================================= Line 1107  C =================================
1107             d_HEFFbyFLOODING(I,J)=tmpscal1             d_HEFFbyFLOODING(I,J)=tmpscal1
1108             HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj)+d_HEFFbyFLOODING(I,J)             HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj)+d_HEFFbyFLOODING(I,J)
1109             HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj)-             HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj)-
1110       &                           d_HEFFbyFLOODING(I,J)*ICE2SNOW         &                           d_HEFFbyFLOODING(I,J)*ICE2SNOW
1111            ENDDO            ENDDO
1112           ENDDO           ENDDO
1113  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
# Line 1167  C--   compute actual age from effective Line 1167  C--   compute actual age from effective
1167             tmpscal1=IceAge(i,j,bi,bj)/AREApreTH(i,j)             tmpscal1=IceAge(i,j,bi,bj)/AREApreTH(i,j)
1168            ELSE            ELSE
1169             tmpscal1=0. _d 0             tmpscal1=0. _d 0
1170            ENDIF                    ENDIF
1171            IF ( (HEFFpreTH(i,j).LT.HEFF(i,j,bi,bj)).AND.            IF ( (HEFFpreTH(i,j).LT.HEFF(i,j,bi,bj)).AND.
1172       &         (AREA(i,j,bi,bj).GT.0.15) ) THEN       &         (AREA(i,j,bi,bj).GT.0.15) ) THEN
1173             tmpscal2=tmpscal1*HEFFpreTH(i,j)/             tmpscal2=tmpscal1*HEFFpreTH(i,j)/
# Line 1192  c ====================================== Line 1192  c ======================================
1192    
1193    
1194    
1195  C compute net heat flux leaving/entering the ocean,  C compute net heat flux leaving/entering the ocean,
1196  C accounting for the part used in melt/freeze processes  C accounting for the part used in melt/freeze processes
1197  C =====================================================  C =====================================================
1198    
1199          DO J=1,sNy          DO J=1,sNy
1200           DO I=1,sNx           DO I=1,sNx
1201            QNET(I,J,bi,bj) = r_QbyATM_cover(I,J) + r_QbyATM_open(I,J)            QNET(I,J,bi,bj) = r_QbyATM_cover(I,J) + r_QbyATM_open(I,J)
1202       &         - ( d_HEFFbyOCNonICE(I,J) +       &         - ( d_HEFFbyOCNonICE(I,J) +
1203       &             d_HSNWbyOCNonSNW(I,J)/ICE2SNOW +       &             d_HSNWbyOCNonSNW(I,J)/ICE2SNOW +
1204       &             d_HEFFbyNEG(I,J) +       &             d_HEFFbyNEG(I,J) +
1205       &             d_HSNWbyNEG(I,J)/ICE2SNOW )       &             d_HSNWbyNEG(I,J)/ICE2SNOW )
1206       &         * maskC(I,J,kSurface,bi,bj)       &         * maskC(I,J,kSurface,bi,bj)
1207            QSW(I,J,bi,bj)  = a_QSWbyATM_cover(I,J) + a_QSWbyATM_open(I,J)            QSW(I,J,bi,bj)  = a_QSWbyATM_cover(I,J) + a_QSWbyATM_open(I,J)
# Line 1238  C ====================================== Line 1238  C ======================================
1238            QSW(I,J,bi,bj)  = QSW(I,J,bi,bj)*convertHI2Q            QSW(I,J,bi,bj)  = QSW(I,J,bi,bj)*convertHI2Q
1239           ENDDO           ENDDO
1240          ENDDO          ENDDO
1241            
1242  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
1243         CALL PLOT_FIELD_XYRL( QSW,'Current QSW ', myIter, myThid )         CALL PLOT_FIELD_XYRL( QSW,'Current QSW ', myIter, myThid )
1244         CALL PLOT_FIELD_XYRL( QNET,'Current QNET ', myIter, myThid )         CALL PLOT_FIELD_XYRL( QNET,'Current QNET ', myIter, myThid )
# Line 1246  C ====================================== Line 1246  C ======================================
1246  #endif /* SEAICE_DEBUG */  #endif /* SEAICE_DEBUG */
1247    
1248    
1249  C compute net fresh water flux leaving/entering  C compute net fresh water flux leaving/entering
1250  C the ocean, accounting for fresh/salt water stocks.  C the ocean, accounting for fresh/salt water stocks.
1251  C ==================================================  C ==================================================
1252    
# Line 1258  C ====================================== Line 1258  C ======================================
1258       &            +d_HSNWbyOCNonSNW(I,J)/ICE2SNOW       &            +d_HSNWbyOCNonSNW(I,J)/ICE2SNOW
1259       &            +d_HEFFbyOCNonICE(I,J)       &            +d_HEFFbyOCNonICE(I,J)
1260       &            +d_HEFFbyATMonOCN(I,J)       &            +d_HEFFbyATMonOCN(I,J)
1261       &            +d_HEFFbyNEG(I,J)       &            +d_HEFFbyNEG(I,J)
1262       &            +d_HSNWbyNEG(I,J)/ICE2SNOW       &            +d_HSNWbyNEG(I,J)/ICE2SNOW
1263            EmPmR(I,J,bi,bj)  = maskC(I,J,kSurface,bi,bj)*(            EmPmR(I,J,bi,bj)  = maskC(I,J,kSurface,bi,bj)*(
1264       &         ( EVAP(I,J,bi,bj)-PRECIP(I,J,bi,bj) )       &         ( EVAP(I,J,bi,bj)-PRECIP(I,J,bi,bj) )

Legend:
Removed from v.1.90  
changed lines
  Added in v.1.91

  ViewVC Help
Powered by ViewVC 1.1.22