/[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.22 - (hide annotations) (download)
Wed May 5 02:50:36 2004 UTC (20 years, 1 month ago) by dimitri
Branch: MAIN
Changes since 1.21: +1 -2 lines
removed a debug print statement

1 dimitri 1.22 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_model.F,v 1.21 2004/05/05 00:23:37 dimitri Exp $
2 edhill 1.9 C $Name: $
3 heimbach 1.2
4     #include "SEAICE_OPTIONS.h"
5    
6     CStartOfInterface
7     SUBROUTINE seaice_model( myTime, myIter, myThid )
8 dimitri 1.7 C /===========================================================\
9     C | SUBROUTINE SEAICE_MODEL |
10     C | o Time stepping of a dynamic/thermodynamic sea ice model. |
11     C | Dynamics solver: Zhang/Hibler, JGR, 102, 8691-8702, 1997 |
12     C | Thermodynamics: Hibler, MWR, 108, 1943-1973, 1980 |
13     C | Rheology: Hibler, JPO, 9, 815- 846, 1979 |
14     C | Snow: Zhang et al. , JPO, 28, 191- 217, 1998 |
15     C | Parallel forward ice model written by Jinlun Zhang PSC/UW|
16     C | & coupled into MITgcm by Dimitris Menemenlis (JPL) 2/2001|
17     C | zhang@apl.washington.edu / menemenlis@jpl.nasa.gov |
18     C |===========================================================|
19     C \===========================================================/
20 heimbach 1.2 IMPLICIT NONE
21    
22     C === Global variables ===
23     #include "SIZE.h"
24     #include "EEPARAMS.h"
25     #include "DYNVARS.h"
26     #include "PARAMS.h"
27 dimitri 1.17 #include "GRID.h"
28 heimbach 1.2 #include "FFIELDS.h"
29     #include "SEAICE.h"
30     #include "SEAICE_PARAMS.h"
31    
32 heimbach 1.8 #ifdef SEAICE_EXTERNAL_FORCING
33     # include "SEAICE_FFIELDS.h"
34     #endif
35    
36 dimitri 1.3 #ifdef ALLOW_AUTODIFF_TAMC
37     # include "tamc.h"
38 dimitri 1.5 #endif
39 dimitri 1.4
40 heimbach 1.2 C === Routine arguments ===
41     C myTime - Simulation time
42     C myIter - Simulation timestep number
43     C myThid - Thread no. that called this routine.
44     _RL myTime
45     INTEGER myIter
46     INTEGER myThid
47     CEndOfInterface
48    
49     #ifdef ALLOW_SEAICE
50    
51     C === Local variables ===
52 dimitri 1.4 C i,j,bi,bj - Loop counters
53 dimitri 1.20 INTEGER i, j, bi, bj
54 dimitri 1.21 LOGICAL DIFFERENT_MULTIPLE
55     EXTERNAL DIFFERENT_MULTIPLE
56 heimbach 1.2
57 dimitri 1.4 #ifdef SEAICE_EXTERNAL_FORCING
58     C-- Atmospheric state and runoff are from
59     C pkg/exf, which does not update edges.
60 dimitri 1.14 CALL EXCH_UV_XY_RL(uwind,vwind,.TRUE.,myThid)
61     _EXCH_XY_R8( atemp, myThid )
62     _EXCH_XY_R8( aqh, myThid )
63     _EXCH_XY_R8( lwdown, myThid )
64     _EXCH_XY_R8( swdown, mythid )
65     _EXCH_XY_R8( precip, myThid )
66     _EXCH_XY_R8( evap, myThid )
67     _EXCH_XY_R8( runoff, myThid )
68 dimitri 1.5 #else /* SEAICE_EXTERNAL_FORCING */
69 dimitri 1.4 C-- Load atmospheric state and runoff.
70 heimbach 1.2 CALL SEAICE_GET_FORCING ( myTime, myIter, myThid )
71 dimitri 1.5 #endif /* SEAICE_EXTERNAL_FORCING */
72 heimbach 1.2
73 dimitri 1.19 C-- Compute proxy for geostrophic velocity,
74 heimbach 1.2 DO bj=myByLo(myThid),myByHi(myThid)
75     DO bi=myBxLo(myThid),myBxHi(myThid)
76     DO j=0,sNy+1
77     DO i=0,sNx+1
78 dimitri 1.19 GWATX(I,J,bi,bj)=HALF*(uVel(i,j,KGEO(I,J,bi,bj),bi,bj)
79     & +uVel(i,j-1,KGEO(I,J,bi,bj),bi,bj))
80     GWATY(I,J,bi,bj)=HALF*(vVel(i,j,KGEO(I,J,bi,bj),bi,bj)
81     & +vVel(i-1,j,KGEO(I,J,bi,bj),bi,bj))
82 heimbach 1.2 #ifdef SEAICE_DEBUG
83     c write(*,'(2i4,2i2,f7.1,7f12.3)')
84     c & ,i,j,bi,bj,UVM(I,J,bi,bj)
85     c & ,GWATX(I,J,bi,bj),GWATY(I,J,bi,bj)
86     c & ,uVel(i+1,j,3,bi,bj),uVel(i+1,j+1,3,bi,bj)
87     c & ,vVel(i,j+1,3,bi,bj),vVel(i+1,j+1,3,bi,bj)
88 dimitri 1.5 #endif
89 heimbach 1.2 ENDDO
90     ENDDO
91     ENDDO
92     ENDDO
93    
94 heimbach 1.8 #ifdef ALLOW_AUTODIFF_TAMC
95     CADJ STORE uwind = comlev1, key = ikey_dynamics
96     CADJ STORE vwind = comlev1, key = ikey_dynamics
97 heimbach 1.12 CADJ STORE heff = comlev1, key = ikey_dynamics
98 heimbach 1.8 # ifdef SEAICE_ALLOW_DYNAMICS
99     CADJ STORE area = comlev1, key = ikey_dynamics
100     # endif
101     #endif /* ALLOW_AUTODIFF_TAMC */
102    
103 heimbach 1.2 C solve ice momentum equations and calculate ocean surface stress
104 dimitri 1.21 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 heimbach 1.2
111 heimbach 1.8 #ifdef ALLOW_AUTODIFF_TAMC
112     # ifdef SEAICE_ALLOW_DYNAMICS
113     CADJ STORE heff = comlev1, key = ikey_dynamics
114     CADJ STORE area = comlev1, key = ikey_dynamics
115     CADJ STORE uice = comlev1, key = ikey_dynamics
116     CADJ STORE vice = comlev1, key = ikey_dynamics
117     # endif
118     #endif /* ALLOW_AUTODIFF_TAMC */
119 heimbach 1.2 C NOW DO ADVECTION
120     CALL ADVECT( UICE, VICE, HEFF, HEFFM, myThid )
121     CALL ADVECT( UICE, VICE, AREA, HEFFM, myThid )
122    
123     C NOW DO GROWTH
124     C MUST CALL GROWTH ONLY AFTER CALLING ADVECTION
125     CALL GROWTH( myTime, myIter, myThid)
126    
127     C-- Update overlap regions for a bunch of stuff
128 dimitri 1.14 _BARRIER
129     CALL SEAICE_EXCH( HEFF, myThid )
130     CALL SEAICE_EXCH( AREA, myThid )
131     CALL EXCH_UV_XY_RS(fu,fv,.TRUE.,myThid)
132     _EXCH_XY_R4(EmPmR, myThid )
133     _EXCH_XY_R4(Qnet , myThid )
134     _EXCH_XY_R4(surfaceTendencyTice, myThid )
135 heimbach 1.2 #ifdef SHORTWAVE_HEATING
136 dimitri 1.14 _EXCH_XY_R4(Qsw , myThid )
137 dimitri 1.5 #endif
138 dimitri 1.14 _EXCH_XYZ_R8(theta , myThid )
139 heimbach 1.2
140     C-- Sea ice diagnostics.
141 dimitri 1.16 C <= moved to S/R do_the_model_io with other pkgs
142 heimbach 1.2
143     C-- Write sea ice restart files
144 jmc 1.15 C <= moved to S/R packages_write_pickup with other pkgs
145 dimitri 1.3
146     C---------------------------------------------------
147     C OOH NOOOO we need to move the whole stuff
148     C---------------------------------------------------
149     #ifdef ALLOW_AUTODIFF_TAMC
150     CRG CADJ store UICE,VICE,AREA,HEFF,fu,fv,EmPmR,Qnet,Qsw = comlev1_bibj
151 dimitri 1.5 #endif
152 dimitri 1.3
153     C-- Call sea-ice cost function routine
154     CRG CALL SEAICE_COST( myTime, myIter, myThid )
155 heimbach 1.2
156 dimitri 1.5 #endif /* ALLOW_SEAICE */
157 heimbach 1.2
158     RETURN
159     END

  ViewVC Help
Powered by ViewVC 1.1.22