C $Header: /home/ubuntu/mnt/e9_copy/MITgcm_contrib/PRM/multi_comp_setup/cg/code/Attic/parent_override.F,v 1.9 2008/02/05 00:34:13 jmc dead $ C $Name: $ #include "PACKAGES_CONFIG.h" #include "CPP_OPTIONS.h" CBOP C !ROUTINE: PARENT_TENDENCY_APPLY_U C !INTERFACE: SUBROUTINE PARENT_TENDENCY_APPLY_U( I iMin,iMax, jMin,jMax, bi,bj, kLev, I myTime, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | S/R PARENT_TENDENCY_APPLY_U C | o Contains problem specific forcing for zonal velocity. C *==========================================================* C | Adds terms to gU for forcing by external sources C | defined as "parent" C *==========================================================* C \ev C !USES: IMPLICIT NONE C == Global data == #include "SIZE.h" #include "GRID.h" #include "EEPARAMS.h" #include "DYNVARS.h" #include "PARENT_OVERRIDE.h" C !INPUT/OUTPUT PARAMETERS: C == Routine arguments == C iMin,iMax :: Working range of x-index for applying forcing. C jMin,jMax :: Working range of y-index for applying forcing. C bi,bj :: Current tile indices C kLev :: Current vertical level index C myTime :: Current time in simulation C myThid :: Thread Id number INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj _RL myTime INTEGER myThid C !LOCAL VARIABLES: C == Local variables == C i,j :: Loop counters INTEGER i, j CEOP ! Call routine that applies any "parent" override for ! step "tendency_apply_u". ! I think we will end up with a "parent" or "override" ! package to provide general support for this. IF ( usePO_Tendency_Apply_U) THEN DO j=jMin,jMax DO i=iMin,iMax gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj) & + maskW(i,j,kLev,bi,bj) * ( po_gu(i-1,j,kLev,bi,bj) & +po_gu( i, j,kLev,bi,bj) & )*0.5 _d 0 ENDDO ENDDO ENDIF RETURN END C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP C !ROUTINE: PARENT_TENDENCY_APPLY_V C !INTERFACE: SUBROUTINE PARENT_TENDENCY_APPLY_V( I iMin,iMax, jMin,jMax, bi,bj, kLev, I myTime, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | S/R PARENT_TENDENCY_APPLY_V C | o Contains problem specific forcing for merid velocity. C *==========================================================* C | Adds terms to gV for forcing by external sources C | defined as "parent". C *==========================================================* C \ev C !USES: IMPLICIT NONE C == Global data == #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "DYNVARS.h" #include "PARENT_OVERRIDE.h" C !INPUT/OUTPUT PARAMETERS: C == Routine arguments == C iMin,iMax :: Working range of x-index for applying forcing. C jMin,jMax :: Working range of y-index for applying forcing. C bi,bj :: Current tile indices C kLev :: Current vertical level index C myTime :: Current time in simulation C myThid :: Thread Id number INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj _RL myTime INTEGER myThid C !LOCAL VARIABLES: C == Local variables == C i,j :: Loop counters C kSurface :: index of surface layer INTEGER i, j INTEGER kSurface CEOP IF ( usePO_Tendency_Apply_V) THEN DO j=jMin,jMax DO i=iMin,iMax gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj) & + maskS(i,j,kLev,bi,bj) * ( po_gv(i,j-1,kLev,bi,bj) & +po_gv(i, j, kLev,bi,bj) & )*0.5 _d 0 ENDDO ENDDO ENDIF RETURN END C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP C !ROUTINE: EXTERNAL_FORCING_T C !INTERFACE: SUBROUTINE PARENT_TENDENCY_APPLY_T( I iMin,iMax, jMin,jMax, bi,bj, kLev, I myTime, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | S/R EXTERNAL_FORCING_T C | o Contains problem specific forcing for temperature. C *==========================================================* C | Adds terms to gT for forcing by external sources C | e.g. heat flux, climatalogical relaxation, etc ... C *==========================================================* C \ev C !USES: IMPLICIT NONE C == Global data == #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "DYNVARS.h" #include "FFIELDS.h" #include "PARENT_OVERRIDE.h" C !INPUT/OUTPUT PARAMETERS: C == Routine arguments == C iMin,iMax :: Working range of x-index for applying forcing. C jMin,jMax :: Working range of y-index for applying forcing. C bi,bj :: Current tile indices C kLev :: Current vertical level index C myTime :: Current time in simulation C myThid :: Thread Id number INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj _RL myTime INTEGER myThid C !LOCAL VARIABLES: C == Local variables == C i,j :: Loop counters C kSurface :: index of surface layer INTEGER i, j INTEGER kSurface CEOP IF ( usePO_Tendency_Apply_Theta) THEN DO j=jMin,jMax DO i=iMin,iMax gT(i,j,kLev,bi,bj) = gT(i,j,kLev,bi,bj) + . maskC(i,j,kLev,bi,bj) * po_gTheta(i,j,kLev,bi,bj) ENDDO ENDDO ENDIF RETURN END