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

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

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


Revision 1.3 - (hide annotations) (download)
Wed Jun 13 12:55:31 2007 UTC (18 years, 1 month ago) by mlosch
Branch: MAIN
Changes since 1.2: +3 -1 lines
remove diagnostics that do not make sense for the B-grid

1 mlosch 1.3 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_diagnostics_fill.F,v 1.2 2007/06/08 08:04:09 mlosch Exp $
2 mlosch 1.1 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 mlosch 1.2 C
71 mlosch 1.1 CALL DIAGNOSTICS_FILL(HSNOW ,'SIhsnow ',0,1 ,0,1,1,myThid)
72     C
73 mlosch 1.3 #ifdef SEAICE_CGRID
74 mlosch 1.1 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 mlosch 1.3 #endif /* SEAICE_CGRID */
136 mlosch 1.1 C endif useDiagnostics
137     ENDIF
138     #endif /* ALLOW_DIAGNOSTICS */
139    
140     RETURN
141     END

  ViewVC Help
Powered by ViewVC 1.1.22