/[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.5 - (hide annotations) (download)
Sun Feb 12 13:34:10 2017 UTC (8 years, 5 months ago) by dgoldberg
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint67a, checkpoint67b, checkpoint67d, HEAD
Changes since 1.4: +5 -1 lines
fixes for multiple tiles

1 dgoldberg 1.5 C $Header: /u/gcmpack/MITgcm_contrib/verification_other/shelfice_remeshing/code/shelfice_massmin.F,v 1.4 2017/02/10 18:52:46 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 dgoldberg 1.5 DO bj = myByLo(myThid), myByHi(myThid)
61     DO bi = myBxLo(myThid), myBxHi(myThid)
62 ksnow 1.1 DO j=1-OLy,sNy+OLy
63     DO i=1-OLx,sNx+OLx
64     massMin(i,j,bi,bj) = 0 _d 0
65     ENDDO
66     ENDDO
67 dgoldberg 1.5 ENDDO
68     ENDDO
69 ksnow 1.1
70     C First need vertical profile of density anomaly;
71     CALL SHELFICE_VERT_DENS( vert_rho, myThid )
72 ksnow 1.2 C Get the average open ocean ssh
73     SEALEVEL = 0. _d 0
74     ETA = 0. _d 0
75     CALL SHELFICE_SEA_LEVEL_AVG( SEALEVEL,ETA, myThid )
76 ksnow 1.1 C calcaulte hydrostatic pressure based on density profile
77     DO k = 1,Nr
78     drho(k) = vert_rho(k)
79     IF (k.EQ.1) THEN
80     phiHydF(k) = 0.
81 ksnow 1.2 C phiHydF(k) = SEALEVEL*gravity*drho(k)*recip_rhoConst
82 ksnow 1.1 ENDIF
83     phiHydC(k)=phiHydF(k) + halfRL*drF(k)*gravity*drho(k)
84     & *recip_rhoConst
85     phiHydF(k+1)=phiHydC(k) + halfRL*drF(k)*gravity*drho(k)
86     & *recip_rhoConst
87 dgoldberg 1.3 ENDDO
88 ksnow 1.1
89     C calculate the level of minimum pressure and from that massMin
90     C based on R_MCWT
91 dgoldberg 1.4 DO bj = myByLo(myThid), myByHi(myThid)
92     DO bi = myBxLo(myThid), myBxHi(myThid)
93 dgoldberg 1.3 DO j=1,sNy
94     DO i=1,sNx
95     R_min(i,j,bi,bj)=R_Low(i,j,bi,bj)+R_MWCT(i,j,bi,bj)
96 ksnow 1.1 DO k =1,Nr
97     IF ((R_min(i,j,bi,bj) .GT. rF(k+1)) .AND.
98     & (R_min(i,j,bi,bj) .LE. rF(k))) THEN
99 ksnow 1.2 drLoc = (rF(k)-R_min(i,j,bi,bj))/drF(k)
100 ksnow 1.1
101     pLoad_min = (phiHydF(k) + drLoc*
102     & (phiHydF(k+1)-phiHydF(k)))*rhoConst
103 ksnow 1.2 & + gravity*rhoConst*(drLoc*drF(k))
104    
105 ksnow 1.1 massMin(i,j,bi,bj) = pLoad_min*recip_gravity -
106 ksnow 1.2 & rF(k)*rhoConst
107 ksnow 1.1 ENDIF
108     ENDDO
109     ENDDO
110     ENDDO
111 dgoldberg 1.4 ENDDO
112     ENDDO
113 dgoldberg 1.3
114 ksnow 1.1
115     #endif /* ALLOW_SHELFICE */
116    
117     RETURN
118     END

  ViewVC Help
Powered by ViewVC 1.1.22