C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/atm_compon_interf/atm_apply_import.F,v 1.1 2004/05/21 19:59:38 jmc Exp $ C $Name: $ #include "PACKAGES_CONFIG.h" #include "CPP_OPTIONS.h" CBOP C !ROUTINE: ATM_APPLY_IMPORT C !INTERFACE: SUBROUTINE ATM_APPLY_IMPORT( I land_frc, U aimTsoce, aimSIfrc, I myTime, myIter, bi, bj, myThid ) C !DESCRIPTION: \bv C *================================================================* C | S/R ATM_APPLY_IMPORT C | o Apply imported coupling data to AIM surface BC over ocean C *================================================================* C | Note: when using sea-ice, fill in Mixed layer fields instead C | to be used later as Atmos. + Sea-Ice surface oceanic BC. C *================================================================* C \ev C !USES: IMPLICIT NONE C == Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "CPL_PARAMS.h" #ifdef ALLOW_THSICE # include "THSICE_VARS.h" #endif C-- Coupled to the Ocean : #include "ATMCPL.h" C !INPUT/OUTPUT PARAMETERS: C == Routine arguments == C land_frc :: land fraction [0-1] C aimTsoce :: sea surface temp [K], used in AIM C aimSIfrc :: sea-ice fraction [0-1] C myTime :: Current time of simulation ( s ) C myIter :: Current iteration number in simulation C bi,bj :: Tile index C myThid :: Number of this instance of the routine _RS land_frc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL aimTsoce(sNx,sNy) _RL aimSIfrc(sNx,sNy) _RL myTime INTEGER myIter, bi, bj, myThid CEOP C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| #ifdef COMPONENT_MODULE C == Local variables == C i,j :: Loop counters INTEGER i,j #ifdef ALLOW_THSICE IF ( useThSIce ) THEN C-- Put fields from the ocean component in Mixed-layer arrays: C- fill in hOceMxL with Mixed-layer Depth from the ocean component IF ( useImportMxlD ) THEN DO j=1,sNy DO i=1,sNx IF ( land_frc(i,j,bi,bj) .LT. 1. ) THEN hOceMxL(i,j,bi,bj) = ocMxlD(i,j,bi,bj) ENDIF ENDDO ENDDO ENDIF C- fill in tOceMxL with Sea-Surface Temp. from the ocean component IF ( useImportSST ) THEN DO j=1,sNy DO i=1,sNx IF ( land_frc(i,j,bi,bj) .LT. 1. ) THEN tOceMxL(i,j,bi,bj) = SSTocn(i,j,bi,bj) ENDIF ENDDO ENDDO ENDIF C- fill in sOceMxL with Sea-Surf Salinity from the ocean component IF ( useImportSSS ) THEN DO j=1,sNy DO i=1,sNx IF ( land_frc(i,j,bi,bj) .LT. 1. ) THEN sOceMxL(i,j,bi,bj) = SSSocn(i,j,bi,bj) ENDIF ENDDO ENDDO ENDIF C- fill in v2ocMxL with surf. velocity^2 from the ocean component IF ( useImportVsq ) THEN DO j=1,sNy DO i=1,sNx IF ( land_frc(i,j,bi,bj) .LT. 1. ) THEN v2ocMxL(i,j,bi,bj) = vSqocn(i,j,bi,bj) ENDIF ENDDO ENDDO ENDIF ELSE #else IF (.TRUE.) THEN #endif /* ALLOW_THSICE */ IF ( useImportSST ) THEN DO j=1,sNy DO i=1,sNx IF ( land_frc(i,j,bi,bj) .LT. 1. ) THEN C-- take SST from the ocean compon where Sea-Ice fraction is zero IF ( aimSIfrc(i,j).EQ.0. ) THEN aimTsoce(i,j) = SSTocn(i,j,bi,bj)+celsius2K ELSEIF ( SSTocn(i,j,bi,bj).GE. -1. _d 0) THEN C-- take SST from the ocean compon if clearly warmer than freezing C then reset sea-ice fraction aimTsoce(i,j) = SSTocn(i,j,bi,bj)+celsius2K aimSIfrc(i,j) = 0. ENDIF ENDIF ENDDO ENDDO ENDIF C-- if useThSIce / else / endif ENDIF #endif /* COMPONENT_MODULE */ RETURN END