1 |
c To Do: |
c To Do: |
2 |
c ------ |
c ------ |
3 |
c |
c |
4 |
c Selection of forcing fields |
c Get rid of *clim* files and absorb the code in the non-clim |
5 |
c |
c equivalents. There is no reason to distinguish climatological |
6 |
c 1. Cyclic forcing should be available for each field type |
c variables from others input fields. VAriable repeatPeriod |
7 |
c (surface forcing and relaxation to climatology). |
c makes ALLOW_CLIM_CYCLIC obsolete. |
|
c |
|
|
c Cleaning package |
|
8 |
c |
c |
9 |
c Many assumptions that are made in the current version should, and |
c Many assumptions that are made in the current version should, and |
10 |
c can, be relaxed in later versions: |
c can, be relaxed in later versions: |
26 |
c corresponds to a certain calendar date). |
c corresponds to a certain calendar date). |
27 |
c The second case can be treated analog- |
c The second case can be treated analog- |
28 |
c ously. |
c ously. |
|
c |
|
|
c |
|
|
c Notes regarding more complete implementation of relaxation |
|
|
c ========================================================== |
|
|
c |
|
|
c Modifications in subroutine |
|
|
c INITIALISE_FIXED (from c27 on): |
|
|
c ------------------------------- |
|
|
c . |
|
|
c . |
|
|
c . |
|
|
c C-- Set coriolis operators |
|
|
c CALL INI_CORI( myThid ) |
|
|
c |
|
|
c#ifdef INCLUDE_LAT_CIRC_FFT_FILTER_CODE |
|
|
cC-- Latitude circle filter initialisation |
|
|
c CALL FILTER_LATCIRC_FFT_INIT(myThid) |
|
|
c _BARRIER |
|
|
c#endif |
|
|
c |
|
|
c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE |
|
|
c |
|
|
c call exf_Init( mythid ) |
|
|
c |
|
|
c #ifdef ALLOW_CLIMTEMP_RELAXATION |
|
|
c c-- Set the relaxation coefficient to the temperature climatology. |
|
|
c call exf_GetTempClimLambda( |
|
|
c I mythid |
|
|
c & ) |
|
|
c _BARRIER |
|
|
c #endif |
|
|
c #ifdef ALLOW_CLIMSALT_RELAXATION |
|
|
c c-- Set the relaxation coefficient to the salinity climatology. |
|
|
c call exf_GetSaltClimLambda( |
|
|
c I mythid |
|
|
c & ) |
|
|
c _BARRIER |
|
|
c #endif |
|
|
c #ifdef ALLOW_CLIMSST_RELAXATION |
|
|
c c-- Set the relaxation coefficient to the sst climatology. |
|
|
c call exf_GetSSTClimLambda( |
|
|
c I mythid |
|
|
c & ) |
|
|
c _BARRIER |
|
|
c #endif |
|
|
c #ifdef ALLOW_CLIMSSS_RELAXATION |
|
|
c c-- Set the relaxation coefficient to the sss climatology. |
|
|
c call exf_GetSSSClimLambda( |
|
|
c I mythid |
|
|
c & ) |
|
|
c _BARRIER |
|
|
c #endif |
|
|
c #endif |
|
|
c |
|
|
c c-- Finally, summarise the model cofiguration. |
|
|
c CALL CONFIG_SUMMARY( myThid ) |
|
|
c . |
|
|
c . |
|
|
c . |
|
|
c |
|
|
c |
|
|
c external_forcing.F - Add relaxation to climatological fields. |
|
|
c |
|
|
c |
|
|
c Modifications in subroutine |
|
|
c EXTERNAL_FORCING_T (taken from c25): |
|
|
c ------------------------------------ |
|
|
c . |
|
|
c . |
|
|
c . |
|
|
c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE |
|
|
c #include "exf_clim.h" |
|
|
c #endif |
|
|
c . |
|
|
c . |
|
|
c . |
|
|
c C-- Forcing term |
|
|
c C Add heat in top-layer |
|
|
c IF ( kLev .EQ. 1 ) THEN |
|
|
c DO j=jMin,jMax |
|
|
c DO i=iMin,iMax |
|
|
c gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj) |
|
|
c & +maskC(i,j)*( |
|
|
c & -lambdaThetaClimRelax*(theta(i,j,kLev,bi,bj)-SST(i,j,bi,bj)) |
|
|
c & -Qnet(i,j,bi,bj)*recip_Cp*recip_rhoNil*recip_dRf(kLev) ) |
|
|
c |
|
|
c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE |
|
|
c #ifdef ALLOW_CLIMSST_RELAXATION |
|
|
c gt(i,j,klev,bi,bj) = gt(i,j,klev,bi,bj) - |
|
|
c & maskc(i,j)*lambda_climsst(i,j,bi,bj)* |
|
|
c & ( theta(i,j,klev,bi,bj) - |
|
|
c & climsst(i,j,bi,bj) ) |
|
|
c #endif |
|
|
c #endif |
|
|
c |
|
|
c ENDDO |
|
|
c ENDDO |
|
|
c ENDIF |
|
|
c |
|
|
c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE |
|
|
c #ifdef ALLOW_CLIMTEMP_RELAXATION |
|
|
c do j=jmin,jmax |
|
|
c do i=imin,imax |
|
|
c gt(i,j,klev,bi,bj) = gt(i,j,klev,bi,bj) - |
|
|
c & maskc(i,j)*lambda_climtemp(i,j,klev,bi,bj)* |
|
|
c & ( theta(i,j,klev,bi,bj) - |
|
|
c & climtemp(i,j,klev,bi,bj) ) |
|
|
c enddo |
|
|
c enddo |
|
|
c #endif |
|
|
c #endif |
|
|
c . |
|
|
c . |
|
|
c . |
|
|
c |
|
|
c |
|
|
c Modifications in subroutine |
|
|
c EXTERNAL_FORCING_S (taken from c25): |
|
|
c ------------------------------------ |
|
|
c . |
|
|
c . |
|
|
c . |
|
|
c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE |
|
|
c #include "exf_clim.h" |
|
|
c #endif |
|
|
c . |
|
|
c . |
|
|
c . |
|
|
c C-- Forcing term |
|
|
c C Add fresh-water in top-layer |
|
|
c IF ( kLev .EQ. 1 ) THEN |
|
|
c DO j=jMin,jMax |
|
|
c DO i=iMin,iMax |
|
|
c gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj) |
|
|
c & +maskC(i,j)*( |
|
|
c & -lambdaSaltClimRelax*(salt(i,j,kLev,bi,bj)-SSS(i,j,bi,bj)) |
|
|
c #ifdef ALLOW_NATURAL_BCS |
|
|
c & +EmPmR(i,j,bi,bj)*recip_dRf(1)*salt(i,j,kLev,bi,bj) |
|
|
c #else |
|
|
c & +EmPmR(i,j,bi,bj)*recip_dRf(1)*35. |
|
|
c #endif |
|
|
c & ) |
|
|
c |
|
|
c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE |
|
|
c #ifdef ALLOW_CLIMSSS_RELAXATION |
|
|
c gs(i,j,kLev,bi,bj) = gs(i,j,kLev,bi,bj) - |
|
|
c & maskc(i,j)*lambda_climsss(i,j,bi,bj)* |
|
|
c & ( salt(i,j,kLev,bi,bj) - |
|
|
c & climsss(i,j,bi,bj) ) |
|
|
c #endif |
|
|
c #endif |
|
|
c |
|
|
c ENDDO |
|
|
c ENDDO |
|
|
c ENDIF |
|
|
c |
|
|
c #ifdef INCLUDE_EXTERNAL_FORCING_PACKAGE |
|
|
c #ifdef ALLOW_CLIMSALT_RELAXATION |
|
|
c do j=jmin,jmax |
|
|
c do i=imin,imax |
|
|
c gs(i,j,klev,bi,bj) = gs(i,j,klev,bi,bj) - |
|
|
c & maskc(i,j)*lambda_climsalt(i,j,klev,bi,bj)* |
|
|
c & ( salt(i,j,klev,bi,bj) - |
|
|
c & climsalt(i,j,klev,bi,bj) ) |
|
|
c enddo |
|
|
c enddo |
|
|
c #endif |
|
|
c #endif |
|
|
c . |
|
|
c . |
|
|
c . |
|