/[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.36 by mlosch, Wed Oct 3 19:41:34 2007 UTC revision 1.37 by dimitri, Wed Nov 28 00:18:17 2007 UTC
# Line 22  C     === Global variables === Line 22  C     === Global variables ===
22  #include "SEAICE_PARAMS.h"  #include "SEAICE_PARAMS.h"
23  #include "SEAICE.h"  #include "SEAICE.h"
24  #include "SEAICE_FFIELDS.h"  #include "SEAICE_FFIELDS.h"
25    #ifdef ALLOW_SALT_PLUME
26    #include "SALT_PLUME.h"
27    #endif /* ALLOW_SALT_PLUME */
28    
29  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
30  # include "tamc.h"  # include "tamc.h"
# Line 44  C     constants Line 47  C     constants
47        _RL TBC, SDF, ICE2SNOW        _RL TBC, SDF, ICE2SNOW
48        _RL QI, recip_QI, QS, recip_QS        _RL QI, recip_QI, QS, recip_QS
49  C     auxillary variables  C     auxillary variables
50        _RL availHeat, hEffOld, snowEnergy, snowAsIce        _RL availHeat, hEffOld, snowEnergy
51        _RL growthHEFF, growthNeg        _RL growthHEFF, growthNeg
52  #ifdef ALLOW_SEAICE_FLOODING  #ifdef ALLOW_SEAICE_FLOODING
53        _RL hDraft        _RL hDraft
# Line 389  C     compute remaining heat flux that w Line 392  C     compute remaining heat flux that w
392  C     convert all snow to melt water (fresh water flux)  C     convert all snow to melt water (fresh water flux)
393              frWtrIce(I,J) = frWtrIce(I,J)              frWtrIce(I,J) = frWtrIce(I,J)
394       &           -HSNOW(I,J,bi,bj)/ICE2SNOW       &           -HSNOW(I,J,bi,bj)/ICE2SNOW
395              HSNOW(I,J,bi,bj)=0.0              HSNOW(I,J,bi,bj)=0.0 _d 0
396             END IF             END IF
397            END IF            END IF
398           ENDDO           ENDDO
# Line 550  CADJ &                        key = iice Line 553  CADJ &                        key = iice
553  # ifdef SEAICE_SALINITY  # ifdef SEAICE_SALINITY
554  CADJ STORE hsalt(:,:,bi,bj) = comlev1_bibj,  CADJ STORE hsalt(:,:,bi,bj) = comlev1_bibj,
555  CADJ &                        key = iicekey, byte = isbyte  CADJ &                        key = iicekey, byte = isbyte
556  # endif  # endif /* SEAICE_SALINITY */
557  #endif  #endif /* ALLOW_AUTODIFF_TAMC */
558    
559          DO J=1,sNy          DO J=1,sNy
560           DO I=1,sNx           DO I=1,sNx
561    
# Line 563  C NOW GET FRESH WATER FLUX Line 567  C NOW GET FRESH WATER FLUX
567       &         * ( ONE - AREA(I,J,2,bi,bj) )       &         * ( ONE - AREA(I,J,2,bi,bj) )
568  #ifdef ALLOW_RUNOFF  #ifdef ALLOW_RUNOFF
569       &         - RUNOFF(I,J,bi,bj)       &         - RUNOFF(I,J,bi,bj)
570  #endif  #endif /* ALLOW_RUNOFF */
571       &         + frWtrIce(I,J)*ICE2WATR/SEAICE_deltaTtherm       &         + frWtrIce(I,J)*ICE2WATR/SEAICE_deltaTtherm
572       &         + saltWtrIce(I,J)*ICE2WATR/SEAICE_deltaTtherm       &         + saltWtrIce(I,J)*ICE2WATR/SEAICE_deltaTtherm
573       &         )*rhoConstFresh       &         )*rhoConstFresh
# Line 574  C NOW GET FRESH WATER FLUX Line 578  C NOW GET FRESH WATER FLUX
578       &               *( ONE - AREA(I,J,2,bi,bj) )       &               *( ONE - AREA(I,J,2,bi,bj) )
579       &         + RUNOFF(I,J,bi,bj)       &         + RUNOFF(I,J,bi,bj)
580       &         )       &         )
581  #endif  #endif /* ALLOW_DIAGNOSTICS */
582    
583  C COMPUTE SURFACE SALT FLUX AND ADJUST ICE SALINITY  C COMPUTE SURFACE SALT FLUX AND ADJUST ICE SALINITY
584  #ifdef SEAICE_SALINITY  #ifdef SEAICE_SALINITY
# Line 582  C set HSALT = 0 if HSALT < 0 and compute Line 586  C set HSALT = 0 if HSALT < 0 and compute
586            IF ( HSALT(I,J,bi,bj) .LT. 0.0 ) THEN            IF ( HSALT(I,J,bi,bj) .LT. 0.0 ) THEN
587               saltFluxAdjust(I,J) = - HEFFM(I,J,bi,bj) *               saltFluxAdjust(I,J) = - HEFFM(I,J,bi,bj) *
588       &            HSALT(I,J,bi,bj) / SEAICE_deltaTtherm       &            HSALT(I,J,bi,bj) / SEAICE_deltaTtherm
589               HSALT(I,J,bi,bj) = 0.0               HSALT(I,J,bi,bj) = 0.0 _d 0
590            ENDIF            ENDIF
591    
592           ENDDO           ENDDO
593          ENDDO          ENDDO
594    
595  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
 # ifdef SEAICE_SALINITY  
596  CADJ STORE hsalt(:,:,bi,bj) = comlev1_bibj,  CADJ STORE hsalt(:,:,bi,bj) = comlev1_bibj,
597  CADJ &                        key = iicekey, byte = isbyte  CADJ &                        key = iicekey, byte = isbyte
598  # endif  #endif /* ALLOW_AUTODIFF_TAMC */
599  #endif  
600          DO J=1,sNy          DO J=1,sNy
601           DO I=1,sNx           DO I=1,sNx
602    
# Line 613  C saltWtrIce < 0 : m of sea ice that is Line 616  C saltWtrIce < 0 : m of sea ice that is
616               saltFlux(I,J,bi,bj) = HEFFM(I,J,bi,bj)*saltWtrIce(I,J)*               saltFlux(I,J,bi,bj) = HEFFM(I,J,bi,bj)*saltWtrIce(I,J)*
617       &            HSALT(I,J,bi,bj)/(HEFF(I,J,1,bi,bj)-saltWtrIce(I,J))/       &            HSALT(I,J,bi,bj)/(HEFF(I,J,1,bi,bj)-saltWtrIce(I,J))/
618       &            SEAICE_deltaTtherm       &            SEAICE_deltaTtherm
619    #ifdef ALLOW_SALT_PLUME
620                 saltPlumeFlux(i,j,bi,bj) = 0.0 _d 0
621    #endif /* ALLOW_SALT_PLUME */
622            ENDIF            ENDIF
623  C update HSALT based on surface altFlux  C update HSALT based on surface saltFlux
624            HSALT(I,J,bi,bj) = HSALT(I,J,bi,bj) +            HSALT(I,J,bi,bj) = HSALT(I,J,bi,bj) +
625       &         saltFlux(I,J,bi,bj) * SEAICE_deltaTtherm       &         saltFlux(I,J,bi,bj) * SEAICE_deltaTtherm
626            saltFlux(I,J,bi,bj) =            saltFlux(I,J,bi,bj) =
# Line 624  C set HSALT = 0 if HEFF = 0 and compute Line 630  C set HSALT = 0 if HEFF = 0 and compute
630               saltFlux(I,J,bi,bj) = saltFlux(I,J,bi,bj) -               saltFlux(I,J,bi,bj) = saltFlux(I,J,bi,bj) -
631       &            HEFFM(I,J,bi,bj) * HSALT(I,J,bi,bj) /       &            HEFFM(I,J,bi,bj) * HSALT(I,J,bi,bj) /
632       &            SEAICE_deltaTtherm       &            SEAICE_deltaTtherm
633               HSALT(I,J,bi,bj) = 0.0               HSALT(I,J,bi,bj) = 0.0 _d 0
634    #ifdef ALLOW_SALT_PLUME
635                 saltPlumeFlux(i,j,bi,bj) = 0.0 _d 0
636    #endif /* ALLOW_SALT_PLUME */
637            ENDIF            ENDIF
638  #endif /* SEAICE_SALINITY */  #endif /* SEAICE_SALINITY */
639    

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.37

  ViewVC Help
Powered by ViewVC 1.1.22