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

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

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


Revision 1.6 - (hide annotations) (download)
Wed Apr 30 07:04:08 2003 UTC (21 years ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint50c_post, checkpoint50c_pre, checkpoint50d_post, checkpoint50f_post, checkpoint50f_pre, checkpoint50e_pre, checkpoint50e_post, checkpoint50d_pre
Changes since 1.5: +11 -5 lines
checkpoint50c_pre
Merging from release1_p13:
o bug fix for pkg/seaice dynamic solver
o Added SEAICE_initialHEFF to pkg/seaice

1 heimbach 1.2 C $Header:
2    
3     #include "SEAICE_OPTIONS.h"
4    
5     CStartOfInterface
6     SUBROUTINE seaice_model( myTime, myIter, myThid )
7     C /==========================================================\
8     C | SUBROUTINE SEAICE_MODEL |
9 dimitri 1.6 C | o Time stepping of a dynamic thermodynamic sea ice model |
10     C | Dynamics solver: Zhang/Hibler, JGR, 102, 8691-8702, 1997|
11     C | and Zhang/Rothrock, JGR, 105, 3325-3338, 2000|
12     C | Thermodynamics: Hibler, MWR, 108, 1943-1973, 1980|
13     C | Rheology: Hibler, JPO, 9, 815- 846, 1979|
14     C | Written by Jinlun Zhang (PSC/UW), Feb-2001 |
15     C | Incorporated into MITgcm by Dimitris Menemenlis (JPL) |
16 heimbach 1.2 C |==========================================================|
17     C \==========================================================/
18     IMPLICIT NONE
19    
20     C === Global variables ===
21     #include "SIZE.h"
22     #include "EEPARAMS.h"
23     #include "DYNVARS.h"
24     #include "PARAMS.h"
25     #include "FFIELDS.h"
26     #include "SEAICE.h"
27     #include "SEAICE_PARAMS.h"
28     #include "SEAICE_EXTERNAL.h"
29    
30 dimitri 1.3 #ifdef ALLOW_AUTODIFF_TAMC
31     # include "tamc.h"
32 dimitri 1.5 #endif
33 dimitri 1.4
34     #ifdef SEAICE_EXTERNAL_FORCING
35     #include "SEAICE_FFIELDS.h"
36 dimitri 1.5 #endif
37 dimitri 1.3
38 heimbach 1.2 C === Routine arguments ===
39     C myTime - Simulation time
40     C myIter - Simulation timestep number
41     C myThid - Thread no. that called this routine.
42     _RL myTime
43     INTEGER myIter
44     INTEGER myThid
45     CEndOfInterface
46    
47     #ifdef ALLOW_SEAICE
48    
49     C === Local variables ===
50 dimitri 1.4 C i,j,bi,bj - Loop counters
51 heimbach 1.2
52 dimitri 1.4 INTEGER i, j, bi, bj
53 heimbach 1.2
54 dimitri 1.4 #ifdef SEAICE_EXTERNAL_FORCING
55     C-- Atmospheric state and runoff are from
56     C pkg/exf, which does not update edges.
57     _EXCH_XY_R8( uwind, myThid )
58     _EXCH_XY_R8( vwind, myThid )
59     _EXCH_XY_R8( atemp, myThid )
60     _EXCH_XY_R8( aqh, myThid )
61 dimitri 1.5 _EXCH_XY_R8( lwdown, myThid )
62     _EXCH_XY_R8( swdown, mythid )
63 dimitri 1.4 _EXCH_XY_R8( precip, myThid )
64     _EXCH_XY_R8( evap, myThid )
65     _EXCH_XY_R8( runoff, myThid )
66 dimitri 1.5 #else /* SEAICE_EXTERNAL_FORCING */
67 dimitri 1.4 C-- Load atmospheric state and runoff.
68 heimbach 1.2 CALL SEAICE_GET_FORCING ( myTime, myIter, myThid )
69 dimitri 1.5 #endif /* SEAICE_EXTERNAL_FORCING */
70 heimbach 1.2
71     C-- Third level model velocity is used as proxy for geostrophic velocity
72     DO bj=myByLo(myThid),myByHi(myThid)
73     DO bi=myBxLo(myThid),myBxHi(myThid)
74     DO j=0,sNy+1
75     DO i=0,sNx+1
76 dimitri 1.6 GWATX(I,J,bi,bj)=HALF*(uVel(i,j,3,bi,bj)
77     & +uVel(i,j-1,3,bi,bj))
78     GWATY(I,J,bi,bj)=HALF*(vVel(i,j,3,bi,bj)
79     & +vVel(i-1,j,3,bi,bj))
80 heimbach 1.2 #ifdef SEAICE_DEBUG
81     c write(*,'(2i4,2i2,f7.1,7f12.3)')
82     c & ,i,j,bi,bj,UVM(I,J,bi,bj)
83     c & ,GWATX(I,J,bi,bj),GWATY(I,J,bi,bj)
84     c & ,uVel(i+1,j,3,bi,bj),uVel(i+1,j+1,3,bi,bj)
85     c & ,vVel(i,j+1,3,bi,bj),vVel(i+1,j+1,3,bi,bj)
86 dimitri 1.5 #endif
87 heimbach 1.2 ENDDO
88     ENDDO
89     ENDDO
90     ENDDO
91    
92     C solve ice momentum equations and calculate ocean surface stress
93     CALL DYNSOLVER ( myTime, myIter, myThid )
94    
95     C NOW DO ADVECTION
96     CALL ADVECT( UICE, VICE, HEFF, HEFFM, myThid )
97     CALL ADVECT( UICE, VICE, AREA, HEFFM, myThid )
98    
99     C NOW DO GROWTH
100     C MUST CALL GROWTH ONLY AFTER CALLING ADVECTION
101     CALL GROWTH( myTime, myIter, myThid)
102    
103     C-- Update overlap regions for a bunch of stuff
104     _BARRIER
105 dimitri 1.5 CALL SEAICE_EXCH( HEFF, myThid )
106     CALL SEAICE_EXCH( AREA, myThid )
107 heimbach 1.2 _EXCH_XY_R4(fu , myThid )
108     _EXCH_XY_R4(fv , myThid )
109     _EXCH_XY_R4(EmPmR, myThid )
110     _EXCH_XY_R4(Qnet , myThid )
111     _EXCH_XY_R4(surfaceTendencyTice, myThid )
112     #ifdef SHORTWAVE_HEATING
113     _EXCH_XY_R4(Qsw , myThid )
114 dimitri 1.5 #endif
115 heimbach 1.2 _EXCH_XYZ_R8(theta , myThid )
116    
117     C-- Sea ice diagnostics.
118     CALL SEAICE_DO_DIAGS( myTime, myIter, myThid )
119    
120     C-- Write sea ice restart files
121     CALL SEAICE_WRITE_PICKUP ( .FALSE.,
122     & myTime+deltaTClock, myIter+1, myThid )
123 dimitri 1.3
124     C---------------------------------------------------
125     C OOH NOOOO we need to move the whole stuff
126     C---------------------------------------------------
127     #ifdef ALLOW_AUTODIFF_TAMC
128     CRG CADJ store UICE,VICE,AREA,HEFF,fu,fv,EmPmR,Qnet,Qsw = comlev1_bibj
129 dimitri 1.5 #endif
130 dimitri 1.3
131     C-- Call sea-ice cost function routine
132     CRG CALL SEAICE_COST( myTime, myIter, myThid )
133 heimbach 1.2
134 dimitri 1.5 #endif /* ALLOW_SEAICE */
135 heimbach 1.2
136     RETURN
137     END

  ViewVC Help
Powered by ViewVC 1.1.22