/[MITgcm]/MITgcm_contrib/dgoldberg/shelfice_remeshing_old/code/shelfice_massmin.F
ViewVC logotype

Contents of /MITgcm_contrib/dgoldberg/shelfice_remeshing_old/code/shelfice_massmin.F

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


Revision 1.1 - (show annotations) (download)
Thu Jul 19 11:14:58 2018 UTC (7 years ago) by dgoldberg
Branch: MAIN
CVS Tags: HEAD
record of verification_other experiment before modification for github

1 C $Header: /u/gcmpack/MITgcm_contrib/verification_other/shelfice_remeshing/code/shelfice_massmin.F,v 1.5 2017/02/12 13:34:10 dgoldberg Exp $
2 C $Name: $
3
4 C KS_dens------
5
6 #include "SHELFICE_OPTIONS.h"
7
8 CBOP
9 SUBROUTINE SHELFICE_MASSMIN( R_min, massMin, myThid )
10 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 INTEGER bi
36 INTEGER bj
37 INTEGER myThid
38
39 CEndOfInterface
40
41 #ifdef ALLOW_SHELFICE
42 C === Local variables ===
43 C i,j,bi,bj - Loop counters
44 INTEGER i, j, k, k2
45 _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 _RL SEALEVEL, ETA
51 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 bj = myByLo(myThid), myByHi(myThid)
61 DO bi = myBxLo(myThid), myBxHi(myThid)
62 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 ENDDO
68 ENDDO
69
70 C First need vertical profile of density anomaly;
71 CALL SHELFICE_VERT_DENS( vert_rho, myThid )
72 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 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 C phiHydF(k) = SEALEVEL*gravity*drho(k)*recip_rhoConst
82 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 ENDDO
88
89 C calculate the level of minimum pressure and from that massMin
90 C based on R_MCWT
91 DO bj = myByLo(myThid), myByHi(myThid)
92 DO bi = myBxLo(myThid), myBxHi(myThid)
93 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 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 drLoc = (rF(k)-R_min(i,j,bi,bj))/drF(k)
100
101 pLoad_min = (phiHydF(k) + drLoc*
102 & (phiHydF(k+1)-phiHydF(k)))*rhoConst
103 & + gravity*rhoConst*(drLoc*drF(k))
104
105 massMin(i,j,bi,bj) = pLoad_min*recip_gravity -
106 & rF(k)*rhoConst
107 ENDIF
108 ENDDO
109 ENDDO
110 ENDDO
111 ENDDO
112 ENDDO
113
114
115 #endif /* ALLOW_SHELFICE */
116
117 RETURN
118 END

  ViewVC Help
Powered by ViewVC 1.1.22