/[MITgcm]/MITgcm/pkg/seaice/seaice_model.F
ViewVC logotype

Diff of /MITgcm/pkg/seaice/seaice_model.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.13 by dimitri, Thu Nov 13 06:35:15 2003 UTC revision 1.22 by dimitri, Wed May 5 02:50:36 2004 UTC
# Line 9  C     /================================= Line 9  C     /=================================
9  C     | SUBROUTINE SEAICE_MODEL                                   |  C     | SUBROUTINE SEAICE_MODEL                                   |
10  C     | o Time stepping of a dynamic/thermodynamic sea ice model. |  C     | o Time stepping of a dynamic/thermodynamic sea ice model. |
11  C     |  Dynamics solver: Zhang/Hibler, JGR, 102, 8691-8702, 1997 |  C     |  Dynamics solver: Zhang/Hibler, JGR, 102, 8691-8702, 1997 |
 C     |    and          Zhang/Rothrock, JGR, 105, 3325-3338, 2000 |  
12  C     |  Thermodynamics:        Hibler, MWR, 108, 1943-1973, 1980 |  C     |  Thermodynamics:        Hibler, MWR, 108, 1943-1973, 1980 |
13  C     |  Rheology:              Hibler, JPO,   9,  815- 846, 1979 |  C     |  Rheology:              Hibler, JPO,   9,  815- 846, 1979 |
14  C     |  Snow:          Zhang et al.  , JPO,  28,  191- 217, 1998 |  C     |  Snow:          Zhang et al.  , JPO,  28,  191- 217, 1998 |
# Line 25  C     === Global variables === Line 24  C     === Global variables ===
24  #include "EEPARAMS.h"  #include "EEPARAMS.h"
25  #include "DYNVARS.h"  #include "DYNVARS.h"
26  #include "PARAMS.h"  #include "PARAMS.h"
27    #include "GRID.h"
28  #include "FFIELDS.h"  #include "FFIELDS.h"
29  #include "SEAICE.h"  #include "SEAICE.h"
30  #include "SEAICE_PARAMS.h"  #include "SEAICE_PARAMS.h"
# Line 50  CEndOfInterface Line 50  CEndOfInterface
50    
51  C     === Local variables ===  C     === Local variables ===
52  C     i,j,bi,bj - Loop counters  C     i,j,bi,bj - Loop counters
   
53        INTEGER i, j, bi, bj        INTEGER i, j, bi, bj
54          LOGICAL  DIFFERENT_MULTIPLE
55          EXTERNAL DIFFERENT_MULTIPLE
56    
57  #ifdef SEAICE_EXTERNAL_FORCING  #ifdef SEAICE_EXTERNAL_FORCING
58  C--   Atmospheric state and runoff are from  C--   Atmospheric state and runoff are from
59  C     pkg/exf, which does not update edges.  C     pkg/exf, which does not update edges.
60           _EXCH_XY_R8( uwind,  myThid )        CALL EXCH_UV_XY_RL(uwind,vwind,.TRUE.,myThid)
61           _EXCH_XY_R8( vwind,  myThid )        _EXCH_XY_R8( atemp,  myThid )
62           _EXCH_XY_R8( atemp,  myThid )        _EXCH_XY_R8( aqh,    myThid )
63           _EXCH_XY_R8( aqh,    myThid )        _EXCH_XY_R8( lwdown, myThid )
64           _EXCH_XY_R8( lwdown, myThid )        _EXCH_XY_R8( swdown, mythid )
65           _EXCH_XY_R8( swdown, mythid )        _EXCH_XY_R8( precip, myThid )
66           _EXCH_XY_R8( precip, myThid )        _EXCH_XY_R8( evap,   myThid )
67           _EXCH_XY_R8( evap,   myThid )        _EXCH_XY_R8( runoff, myThid )
          _EXCH_XY_R8( runoff, myThid )  
68  #else /* SEAICE_EXTERNAL_FORCING */  #else /* SEAICE_EXTERNAL_FORCING */
69  C--   Load atmospheric state and runoff.  C--   Load atmospheric state and runoff.
70        CALL SEAICE_GET_FORCING ( myTime, myIter, myThid )        CALL SEAICE_GET_FORCING ( myTime, myIter, myThid )
71  #endif /* SEAICE_EXTERNAL_FORCING */  #endif /* SEAICE_EXTERNAL_FORCING */
72    
73  C--   Third level model velocity is used as proxy for geostrophic velocity  C--   Compute proxy for geostrophic velocity,
74        DO bj=myByLo(myThid),myByHi(myThid)        DO bj=myByLo(myThid),myByHi(myThid)
75         DO bi=myBxLo(myThid),myBxHi(myThid)         DO bi=myBxLo(myThid),myBxHi(myThid)
76          DO j=0,sNy+1          DO j=0,sNy+1
77           DO i=0,sNx+1           DO i=0,sNx+1
78            GWATX(I,J,bi,bj)=HALF*(uVel(i,j,3,bi,bj)            GWATX(I,J,bi,bj)=HALF*(uVel(i,j,KGEO(I,J,bi,bj),bi,bj)
79       &                         +uVel(i,j-1,3,bi,bj))       &                         +uVel(i,j-1,KGEO(I,J,bi,bj),bi,bj))
80            GWATY(I,J,bi,bj)=HALF*(vVel(i,j,3,bi,bj)            GWATY(I,J,bi,bj)=HALF*(vVel(i,j,KGEO(I,J,bi,bj),bi,bj)
81       &                         +vVel(i-1,j,3,bi,bj))       &                         +vVel(i-1,j,KGEO(I,J,bi,bj),bi,bj))
82  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
83  c          write(*,'(2i4,2i2,f7.1,7f12.3)')  c          write(*,'(2i4,2i2,f7.1,7f12.3)')
84  c     &     ,i,j,bi,bj,UVM(I,J,bi,bj)  c     &     ,i,j,bi,bj,UVM(I,J,bi,bj)
# Line 101  CADJ STORE area  = comlev1, key = ikey_d Line 101  CADJ STORE area  = comlev1, key = ikey_d
101  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
102    
103  C solve ice momentum equations and calculate ocean surface stress  C solve ice momentum equations and calculate ocean surface stress
104        CALL DYNSOLVER ( myTime, myIter, myThid )        IF ( DIFFERENT_MULTIPLE(
105         &     SEAICE_deltaTdyn,myTime,myTime-SEAICE_deltaTtherm) ) THEN
106             CALL TIMER_START('DYNSOLVER          [SEAICE_MODEL]',myThid)
107             CALL DYNSOLVER ( myTime, myIter, myThid )
108             CALL TIMER_STOP ('DYNSOLVER          [SEAICE_MODEL]',myThid)
109          ENDIF
110    
111  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
112  # ifdef SEAICE_ALLOW_DYNAMICS  # ifdef SEAICE_ALLOW_DYNAMICS
# Line 120  C     MUST CALL GROWTH ONLY AFTER CALLIN Line 125  C     MUST CALL GROWTH ONLY AFTER CALLIN
125        CALL GROWTH( myTime, myIter, myThid)        CALL GROWTH( myTime, myIter, myThid)
126    
127  C--   Update overlap regions for a bunch of stuff  C--   Update overlap regions for a bunch of stuff
128         _BARRIER        _BARRIER
129         CALL SEAICE_EXCH( HEFF, myThid )        CALL SEAICE_EXCH( HEFF, myThid )
130         CALL SEAICE_EXCH( AREA, myThid )        CALL SEAICE_EXCH( AREA, myThid )
131         _EXCH_XY_R4(fu   , myThid )        CALL EXCH_UV_XY_RS(fu,fv,.TRUE.,myThid)
132         _EXCH_XY_R4(fv   , myThid )        _EXCH_XY_R4(EmPmR, myThid )
133         _EXCH_XY_R4(EmPmR, myThid )        _EXCH_XY_R4(Qnet , myThid )
134         _EXCH_XY_R4(Qnet , myThid )        _EXCH_XY_R4(surfaceTendencyTice, myThid )
        _EXCH_XY_R4(surfaceTendencyTice, myThid )  
135  #ifdef SHORTWAVE_HEATING  #ifdef SHORTWAVE_HEATING
136         _EXCH_XY_R4(Qsw  , myThid )        _EXCH_XY_R4(Qsw  , myThid )
137  #endif  #endif
138         _EXCH_XYZ_R8(theta , myThid )        _EXCH_XYZ_R8(theta , myThid )
139    
140  C--   Sea ice diagnostics.  C--   Sea ice diagnostics.
141        CALL SEAICE_DO_DIAGS( myTime, myIter, myThid )  C     <= moved to S/R do_the_model_io with other pkgs
142    
143  C--   Write sea ice restart files  C--   Write sea ice restart files
144        CALL SEAICE_WRITE_PICKUP ( .FALSE.,  C     <= moved to S/R packages_write_pickup with other pkgs
      &     myTime+deltaTClock, myIter+1, myThid )  
145    
146  C---------------------------------------------------  C---------------------------------------------------
147  C OOH NOOOO we need to move the whole stuff  C OOH NOOOO we need to move the whole stuff

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.22

  ViewVC Help
Powered by ViewVC 1.1.22