/[MITgcm]/MITgcm_contrib/verification_other/shelfice_remeshing/code/shelfice_massmin.F
ViewVC logotype

Annotation of /MITgcm_contrib/verification_other/shelfice_remeshing/code/shelfice_massmin.F

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


Revision 1.4 - (hide annotations) (download)
Fri Feb 10 18:52:46 2017 UTC (8 years, 5 months ago) by dgoldberg
Branch: MAIN
Changes since 1.3: +6 -2 lines
do not call massmin within tile loop

1 dgoldberg 1.4 C $Header: /u/gcmpack/MITgcm_contrib/verification_other/shelfice_remeshing/code/shelfice_massmin.F,v 1.3 2017/02/05 15:48:45 dgoldberg Exp $
2 ksnow 1.1 C $Name: $
3    
4     C KS_dens------
5    
6     #include "SHELFICE_OPTIONS.h"
7    
8     CBOP
9 dgoldberg 1.4 SUBROUTINE SHELFICE_MASSMIN( R_min, massMin, myThid )
10 ksnow 1.1 C *============================================================*
11     C | SUBROUTINE SHELFICE_MASSMIN
12     C | o Routine to determine the minimum mass based on MCWT
13     C *============================================================*
14     IMPLICIT NONE
15    
16     C === Global variables ===
17     #include "SIZE.h"
18     #include "EEPARAMS.h"
19     #include "PARAMS.h"
20     #include "GRID.h"
21     #include "SHELFICE.h"
22     #include "DYNVARS.h"
23     #ifdef ALLOW_COST
24     # include "SHELFICE_COST.h"
25     #endif /* ALLOW_COST */
26    
27     C === Routine arguments ===
28     C myThid - Number of this instance
29     C
30     C This subroutine calculates the minimum mass to allow MWCT space
31     C under the grounded ice.
32    
33     _RL massMin(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
34     _RL R_min(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
35 dgoldberg 1.3 INTEGER bi
36     INTEGER bj
37 ksnow 1.1 INTEGER myThid
38    
39     CEndOfInterface
40    
41     #ifdef ALLOW_SHELFICE
42     C === Local variables ===
43     C i,j,bi,bj - Loop counters
44 dgoldberg 1.3 INTEGER i, j, k, k2
45 ksnow 1.1 _RL drho (Nr)
46     _RL phiHydF(Nr+1)
47     _RL phiHydC(Nr)
48     _RL vert_rho(Nr)
49     _RL drLoc, pLoad_min, sum_hFac
50 ksnow 1.2 _RL SEALEVEL, ETA
51 ksnow 1.1 CEOP
52    
53     C Initialize variables
54     R_min = 0 _d 0
55     drLoc = 0 _d 0
56     pLoad_min = 0 _d 0
57     DO k=1,Nr
58     vert_rho(k) = 0 _d 0
59     ENDDO
60     DO j=1-OLy,sNy+OLy
61     DO i=1-OLx,sNx+OLx
62     massMin(i,j,bi,bj) = 0 _d 0
63     ENDDO
64     ENDDO
65    
66     C First need vertical profile of density anomaly;
67     CALL SHELFICE_VERT_DENS( vert_rho, myThid )
68 ksnow 1.2 C Get the average open ocean ssh
69     SEALEVEL = 0. _d 0
70     ETA = 0. _d 0
71     CALL SHELFICE_SEA_LEVEL_AVG( SEALEVEL,ETA, myThid )
72 ksnow 1.1 C calcaulte hydrostatic pressure based on density profile
73     DO k = 1,Nr
74     drho(k) = vert_rho(k)
75     IF (k.EQ.1) THEN
76     phiHydF(k) = 0.
77 ksnow 1.2 C phiHydF(k) = SEALEVEL*gravity*drho(k)*recip_rhoConst
78 ksnow 1.1 ENDIF
79     phiHydC(k)=phiHydF(k) + halfRL*drF(k)*gravity*drho(k)
80     & *recip_rhoConst
81     phiHydF(k+1)=phiHydC(k) + halfRL*drF(k)*gravity*drho(k)
82     & *recip_rhoConst
83 dgoldberg 1.3 ENDDO
84 ksnow 1.1
85     C calculate the level of minimum pressure and from that massMin
86     C based on R_MCWT
87 dgoldberg 1.4 DO bj = myByLo(myThid), myByHi(myThid)
88     DO bi = myBxLo(myThid), myBxHi(myThid)
89 dgoldberg 1.3 DO j=1,sNy
90     DO i=1,sNx
91     R_min(i,j,bi,bj)=R_Low(i,j,bi,bj)+R_MWCT(i,j,bi,bj)
92 ksnow 1.1 DO k =1,Nr
93     IF ((R_min(i,j,bi,bj) .GT. rF(k+1)) .AND.
94     & (R_min(i,j,bi,bj) .LE. rF(k))) THEN
95 ksnow 1.2 drLoc = (rF(k)-R_min(i,j,bi,bj))/drF(k)
96 ksnow 1.1
97     pLoad_min = (phiHydF(k) + drLoc*
98     & (phiHydF(k+1)-phiHydF(k)))*rhoConst
99 ksnow 1.2 & + gravity*rhoConst*(drLoc*drF(k))
100    
101 ksnow 1.1 massMin(i,j,bi,bj) = pLoad_min*recip_gravity -
102 ksnow 1.2 & rF(k)*rhoConst
103 ksnow 1.1 ENDIF
104     ENDDO
105     ENDDO
106     ENDDO
107 dgoldberg 1.4 ENDDO
108     ENDDO
109 dgoldberg 1.3
110 ksnow 1.1
111     #endif /* ALLOW_SHELFICE */
112    
113     RETURN
114     END

  ViewVC Help
Powered by ViewVC 1.1.22