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

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

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


Revision 1.5 - (hide annotations) (download)
Tue Feb 18 05:33:55 2003 UTC (21 years, 4 months ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint48f_post, checkpoint48g_post
Changes since 1.4: +25 -4 lines
Merging from release1_p12:
o Modifications for using pkg/exf with pkg/seaice
  - improved description of the various forcing configurations
  - added basic radiation bulk formulae to pkg/exf
  - units/sign fix for evap computation in exf_getffields.F
  - updated verification/global_with_exf/results/output.txt
o Added pkg/sbo for computing IERS Special Bureau for the Oceans
  (SBO) core products, including oceanic mass, center-of-mass,
  angular, and bottom pressure (see pkg/sbo/README.sbo).
o Lower bound for viscosity/diffusivity in pkg/kpp/kpp_routines.F
  to avoid negative values in shallow regions.
  - updated verification/natl_box/results/output.txt
  - updated verification/lab_sea/results/output.txt
o MPI gather, scatter: eesupp/src/gather_2d.F and scatter_2d.F
o Added useSingleCpuIO option (see PARAMS.h).
o Updated useSingleCpuIO option in mdsio_writefield.F to
  work with multi-field files, e.g., for single-file pickup.
o pkg/seaice:
  - bug fix in growth.F: QNET for no shortwave case
  - added HeffFile for specifying initial sea-ice thickness
  - changed SEAICE_EXTERNAL_FLUXES wind stress implementation
o Added missing /* */ to CPP comments in pkg/seaice, pkg/exf,
  kpp_transport_t.F, forward_step.F, and the_main_loop.F
o pkg/seaice:
  - adjoint-friendly modifications
  - added a SEAICE_WRITE_PICKUP at end of the_model_main.F

1 heimbach 1.2 C $Header:
2    
3     #include "SEAICE_OPTIONS.h"
4    
5     CStartOfInterface
6     SUBROUTINE SEAICE_INIT( myThid )
7     C /==========================================================\
8     C | SUBROUTINE SEAICE_INIT |
9     C | o Initialization of sea ice model. |
10     C |==========================================================|
11     C \==========================================================/
12     IMPLICIT NONE
13    
14     C === Global variables ===
15     #include "SIZE.h"
16     #include "EEPARAMS.h"
17     #include "PARAMS.h"
18     #include "GRID.h"
19     #include "SEAICE.h"
20     #include "SEAICE_GRID.h"
21     #include "SEAICE_DIAGS.h"
22     #include "SEAICE_PARAMS.h"
23     #include "SEAICE_EXTERNAL.h"
24    
25     C === Routine arguments ===
26     C myThid - Thread no. that called this routine.
27     INTEGER myThid
28     CEndOfInterface
29    
30     #ifdef ALLOW_SEAICE
31     C === Local variables ===
32     C i,j,k,bi,bj - Loop counters
33    
34     INTEGER i, j, k, bi, bj
35     _RS mask_uice
36    
37     #ifdef ALLOW_TIMEAVE
38     C Initialize averages to zero
39     DO bj = myByLo(myThid), myByHi(myThid)
40     DO bi = myBxLo(myThid), myBxHi(myThid)
41     CALL TIMEAVE_RESET(FUtave ,1,bi,bj,myThid)
42     CALL TIMEAVE_RESET(FVtave ,1,bi,bj,myThid)
43     CALL TIMEAVE_RESET(EmPmRtave,1,bi,bj,myThid)
44     CALL TIMEAVE_RESET(QNETtave ,1,bi,bj,myThid)
45     CALL TIMEAVE_RESET(QSWtave ,1,bi,bj,myThid)
46     CALL TIMEAVE_RESET(UICEtave ,1,bi,bj,myThid)
47     CALL TIMEAVE_RESET(VICEtave ,1,bi,bj,myThid)
48     CALL TIMEAVE_RESET(HEFFtave ,1,bi,bj,myThid)
49     CALL TIMEAVE_RESET(AREAtave ,1,bi,bj,myThid)
50     DO k=1,Nr
51 dimitri 1.3 SEAICE_TimeAve(k,bi,bj)=ZERO
52 heimbach 1.2 ENDDO
53     ENDDO
54     ENDDO
55     #endif /* ALLOW_TIMEAVE */
56    
57     C--- initialize grid info
58     DO bj=myByLo(myThid),myByHi(myThid)
59     DO bi=myBxLo(myThid),myBxHi(myThid)
60     DO J=1,sNy
61     DO I=1,sNx
62     TNGTICE(i,j,bi,bj)=tanPhiAtU(i,j,bi,bj)
63     TNGICE(i,j,bi,bj) =tanPhiAtV(i,j+1,bi,bj)
64     CSTICE(i,j,bi,bj) =cos(atan(tanPhiAtU(i,j,bi,bj)))
65     CSUICE(i,j,bi,bj) =cos(atan(tanPhiAtV(i,j+1,bi,bj)))
66     SINEICE(i,j,bi,bj)=sin(atan(tanPhiAtV(i,j+1,bi,bj)))
67     DXTICE(i,j,bi,bj)=dxF(i,j,bi,bj)/CSTICE(i,j,bi,bj)
68     DXUICE(i,j,bi,bj)=dxC(i+1,j,bi,bj)/CSUICE(i,j,bi,bj)
69     DYTICE(i,j,bi,bj)=dyF(i,j,bi,bj)
70     DYUICE(i,j,bi,bj)=dyC(i,j+1,bi,bj)
71     ENDDO
72     ENDDO
73     DO j=1-OLy,sNy+OLy
74     DO i=1-OLx,sNx+OLx
75 dimitri 1.3 HEFFM(i,j,bi,bj)=ONE
76     IF (_hFacC(i,j,1,bi,bj).eq.0.) HEFFM(i,j,bi,bj)=ZERO
77 heimbach 1.2 ENDDO
78     ENDDO
79     DO J=1,sNy
80     DO I=1,sNx
81 dimitri 1.3 UVM(i,j,bi,bj)=ZERO
82 heimbach 1.2 mask_uice=HEFFM(I,J, bi,bj)+HEFFM(I+1,J+1,bi,bj)
83     & +HEFFM(I,J+1,bi,bj)+HEFFM(I+1,J, bi,bj)
84 dimitri 1.3 IF(mask_uice.GT.3.5) UVM(I,J,bi,bj)=ONE
85 heimbach 1.2 ENDDO
86     ENDDO
87     DO j=1-OLy,sNy+OLy
88     DO i=1-OLx,sNx+OLx
89     TICE(I,J,bi,bj)=273.0 _d 0
90 dimitri 1.3 UICEC(I,J,bi,bj)=ZERO
91     VICEC(I,J,bi,bj)=ZERO
92     AMASS(I,J,bi,bj)=1000.0 _d 0
93 heimbach 1.2 ENDDO
94     ENDDO
95     ENDDO
96     ENDDO
97    
98     C-- Update overlap regions
99     _EXCH_XY_R8(UVM, myThid)
100     _EXCH_XY_R8(TNGTICE, myThid)
101     _EXCH_XY_R8(TNGICE, myThid)
102     _EXCH_XY_R8(CSTICE, myThid)
103     _EXCH_XY_R8(CSUICE, myThid)
104     _EXCH_XY_R8(SINEICE, myThid)
105     _EXCH_XY_R8(DXTICE, myThid)
106     _EXCH_XY_R8(DXUICE, myThid)
107     _EXCH_XY_R8(DYTICE, myThid)
108     _EXCH_XY_R8(DYUICE, myThid)
109    
110     C-- Set model variables to initial/restart conditions
111 dimitri 1.5 IF ( nIter0 .NE. 0 ) THEN
112     CALL SEAICE_READ_PICKUP ( myThid )
113     ELSE
114 heimbach 1.2 DO bj=myByLo(myThid),myByHi(myThid)
115     DO bi=myBxLo(myThid),myBxHi(myThid)
116     DO j=1-OLy,sNy+OLy
117     DO i=1-OLx,sNx+OLx
118     HSNOW(I,J,bi,bj)=0.2 _d 0
119 dimitri 1.3 YNEG(I,J,bi,bj)=ZERO
120 heimbach 1.2 TMIX(I,J,bi,bj)=TICE(I,J,bi,bj)
121     DO k=1,3
122 dimitri 1.3 HEFF(I,J,k,bi,bj)=ONE
123 heimbach 1.2 AREA(I,J,k,bi,bj)=HEFFM(i,j,bi,bj)
124 dimitri 1.3 UICE(I,J,k,bi,bj)=ZERO
125     VICE(I,J,k,bi,bj)=ZERO
126 heimbach 1.2 ENDDO
127     ENDDO
128     ENDDO
129     ENDDO
130     ENDDO
131 dimitri 1.5 ENDIF
132    
133     C-- Read initial sea-ice thickness from file if available.
134     IF ( HeffFile .NE. ' ' ) THEN
135     _BEGIN_MASTER( myThid )
136     CALL READ_FLD_XY_RL( HeffFile, ' ', ZETA, 0, myThid )
137     _END_MASTER(myThid)
138     _EXCH_XY_R8(ZETA,myThid)
139     DO bj=myByLo(myThid),myByHi(myThid)
140     DO bi=myBxLo(myThid),myBxHi(myThid)
141     DO j=1-OLy,sNy+OLy
142     DO i=1-OLx,sNx+OLx
143     DO k=1,3
144     HEFF(I,J,k,bi,bj) = MAX(ZETA(i,j,bi,bj),ZERO)
145     IF ( ZETA(i,j,bi,bj).EQ.ZERO )
146     & AREA(I,J,k,bi,bj) = ZERO
147     ENDDO
148     ENDDO
149     ENDDO
150     ENDDO
151     ENDDO
152 heimbach 1.2 ENDIF
153    
154     C--- Complete initialization
155     DO bj=myByLo(myThid),myByHi(myThid)
156     DO bi=myBxLo(myThid),myBxHi(myThid)
157     DO j=1-OLy,sNy+OLy
158     DO i=1-OLx,sNx+OLx
159     ZETA(I,J,bi,bj)=HEFF(I,J,1,bi,bj)*(1.0 _d 11)
160 dimitri 1.3 ETA(I,J,bi,bj)=ZETA(I,J,bi,bj)/4.0 _d 0
161     surfaceTendencyTice(i,j,bi,bj) = ZERO
162 heimbach 1.2 ENDDO
163     ENDDO
164     ENDDO
165     ENDDO
166    
167 dimitri 1.5 #endif /* ALLOW_SEAICE */
168 heimbach 1.2
169     RETURN
170     END

  ViewVC Help
Powered by ViewVC 1.1.22