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" |
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 |
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 |
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 |
|
|
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 |
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 |
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 |
|
|
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) = |
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 |
|
|