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

Contents of /MITgcm/pkg/seaice/seaice_diagnostics_fill.F

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


Revision 1.4 - (show annotations) (download)
Thu Jun 21 00:30:53 2007 UTC (18 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +1 -1 lines
FILE REMOVED
rename SEAICE_DIAGNOSTICS_FILL to SEAICE_DIAGNOSTICS_STATE

1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_diagnostics_fill.F,v 1.3 2007/06/13 12:55:31 mlosch Exp $
2 C $Name: $
3
4 #include "SEAICE_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: SEAICE_DIAGNOSTICS_FILL
8 C !INTERFACE:
9 SUBROUTINE SEAICE_DIAGNOSTICS_FILL(
10 I myTime, myIter, myThid )
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | S/R SEAICE_DIAGNOSTICS_FILL
14 C | o fill-in diagnostics array for SEAICE state variables
15 C *==========================================================*
16 C \ev
17
18 C !USES:
19 IMPLICIT NONE
20
21 C == Global variables ==
22 #include "SIZE.h"
23 #include "EEPARAMS.h"
24 #include "PARAMS.h"
25 #include "FFIELDS.h"
26 #include "SEAICE_PARAMS.h"
27 #include "SEAICE_FFIELDS.h"
28 #include "SEAICE.h"
29
30 C !INPUT/OUTPUT PARAMETERS:
31 C == Routine Arguments ==
32 C myTime :: time counter for this thread
33 C myIter :: iteration counter for this thread
34 C bi,bj :: tile indices
35 C myThid :: thread number for this instance of the routine.
36 _RL myTime
37 INTEGER myIter
38 INTEGER myThid
39 CEOP
40
41 #ifdef ALLOW_DIAGNOSTICS
42 C == Local variables ==
43 INTEGER i,j
44 INTEGER bi,bj
45 _RL sigI (1-oLx:sNx+oLx,1-oLy:sNy+oLy)
46 _RL sigII(1-oLx:sNx+oLx,1-oLy:sNy+oLy)
47 _RL e11 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
48 _RL e22 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
49 _RL e12 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
50 _RL press(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
51 _RL sig1, sig2, sig12, sigTmp, recip_prs
52 C
53 LOGICAL DIAGNOSTICS_IS_ON
54 EXTERNAL DIAGNOSTICS_IS_ON
55
56 IF ( useDiagnostics ) THEN
57
58 DO bj = myByLo(myThid), myByHi(myThid)
59 DO bi = myBxLo(myThid), myBxHi(myThid)
60 CALL DIAGNOSTICS_FILL(AREA(1-oLx,1-oLy,1,bi,bj),
61 & 'SIarea ',0,1 ,2,bi,bj,myThid)
62 CALL DIAGNOSTICS_FILL(HEFF(1-oLx,1-oLy,1,bi,bj),
63 & 'SIheff ',0,1 ,2,bi,bj,myThid)
64 CALL DIAGNOSTICS_FILL(UICE(1-oLx,1-oLy,1,bi,bj),
65 & 'SIuice ',0,1 ,2,bi,bj,myThid)
66 CALL DIAGNOSTICS_FILL(VICE(1-oLx,1-oLy,1,bi,bj),
67 & 'SIvice ',0,1 ,2,bi,bj,myThid)
68 ENDDO
69 ENDDO
70 C
71 CALL DIAGNOSTICS_FILL(HSNOW ,'SIhsnow ',0,1 ,0,1,1,myThid)
72 C
73 #ifdef SEAICE_CGRID
74 IF ( DIAGNOSTICS_IS_ON('SIsigI ',myThid) .OR.
75 & DIAGNOSTICS_IS_ON('SIsigII ',myThid) .OR.
76 & DIAGNOSTICS_IS_ON('SIpress ',myThid) .OR.
77 & DIAGNOSTICS_IS_ON('SIzeta ',myThid) .OR.
78 & DIAGNOSTICS_IS_ON('SIeta ',myThid) ) THEN
79 C Unfortunately, for this we have to recompute a few things
80 C first make sure we have a current copy of ice velocities
81 DO bj=myByLo(myThid),myByHi(myThid)
82 DO bi=myBxLo(myThid),myBxHi(myThid)
83 DO j=1-OLy,sNy+OLy
84 DO i=1-OLx,sNx+OLx
85 uIceC(I,J,bi,bj)=uIce(I,J,1,bi,bj)
86 vIceC(I,J,bi,bj)=vIce(I,J,1,bi,bj)
87 ENDDO
88 ENDDO
89 ENDDO
90 ENDDO
91 C compute strainrates, "viscosities" and modified pressure
92 CALL SEAICE_CALC_STRAINRATES(
93 I uIceC, vIceC,
94 O e11, e22, e12,
95 I myThid )
96
97 CALL SEAICE_CALC_VISCOSITIES(
98 I e11, e22, e12, zMin, zMax, hEffM, press0,
99 O eta, zeta, press,
100 I myThid )
101 C
102 CALL DIAGNOSTICS_FILL(zeta ,'SIzeta ',0,1 ,0,1,1,myThid)
103 CALL DIAGNOSTICS_FILL(eta ,'SIeta ',0,1 ,0,1,1,myThid)
104 CALL DIAGNOSTICS_FILL(press ,'SIpress ',0,1 ,0,1,1,myThid)
105 ENDIF
106
107 IF ( DIAGNOSTICS_IS_ON('SIsigI ',myThid) .OR.
108 & DIAGNOSTICS_IS_ON('SIsigII ',myThid) ) THEN
109 C principle stress components
110 DO bj = myByLo(myThid), myByHi(myThid)
111 DO bi = myBxLo(myThid), myBxHi(myThid)
112 DO j=1,sNy
113 DO i=1,sNx
114 sig1 = 2.*zeta(I,J,bi,bj)
115 & * (e11(I,J,bi,bj) + e22(I,J,bi,bj))
116 & - press(I,J,bi,bj)
117 sig2 = 2.* eta(I,J,bi,bj)
118 & * (e11(I,J,bi,bj) - e22(I,J,bi,bj))
119 sig12 = 2.*eta(I,J,bi,bj) * 0.25 _d 0 *
120 & ( e12(I ,J ,bi,bj) + e12(I+1,J ,bi,bj)
121 & + e12(I ,J+1,bi,bj) + e12(I+1,J+1,bi,bj) )
122 sigTmp = SQRT( sig2*sig2 + 4. _d 0*sig12*sig12 )
123 recip_prs = 0. _d 0
124 IF ( press(I,J, bi,bj) .GT. 1. _d -13 )
125 & recip_prs = 1./press(I,J,bi,bj)
126 sigI (I,J) = 0.5*(sig1 + sigTmp)*recip_prs
127 sigII(I,J) = 0.5*(sig1 - sigTmp)*recip_prs
128 ENDDO
129 ENDDO
130 CALL DIAGNOSTICS_FILL(sigI ,'SIsigI ',0,1,2,bi,bj,myThid)
131 CALL DIAGNOSTICS_FILL(sigII,'SIsigII ',0,1,2,bi,bj,myThid)
132 ENDDO
133 ENDDO
134 ENDIF
135 #endif /* SEAICE_CGRID */
136 C endif useDiagnostics
137 ENDIF
138 #endif /* ALLOW_DIAGNOSTICS */
139
140 RETURN
141 END

  ViewVC Help
Powered by ViewVC 1.1.22