/[MITgcm]/MITgcm_contrib/dgoldberg/streamice/streamice_invert_surf_forthick.F
ViewVC logotype

Annotation of /MITgcm_contrib/dgoldberg/streamice/streamice_invert_surf_forthick.F

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


Revision 1.2 - (hide annotations) (download)
Wed Aug 27 19:29:14 2014 UTC (10 years, 11 months ago) by dgoldberg
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +14 -11 lines
updating contrib streamice repo with latest files, and separated out convergence checks; and parameterised maximum iteration counts and interface w shelfice for coupling

1 dgoldberg 1.2 C $Header: /u/gcmpack/MITgcm/pkg/streamice/streamice_invert_surf_forthick.F,v 1.3 2013/06/21 20:49:50 jmc Exp $
2     C $Name: $
3    
4 dgoldberg 1.1 #include "CPP_OPTIONS.h"
5     #include "STREAMICE_OPTIONS.h"
6    
7     SUBROUTINE STREAMICE_INVERT_SURF_FORTHICK (
8     O H,
9     I S,
10     I R,
11     I delta,
12     I myThid)
13    
14     ! This S/R finds a thickness (H) that gives surf elev S with bed R
15    
16     #include "SIZE.h"
17     #include "GRID.h"
18     #include "SET_GRID.h"
19     #include "EEPARAMS.h"
20     #include "PARAMS.h"
21     #include "STREAMICE.h"
22    
23     _RL H(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
24     _RL S(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
25     _RL R(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
26     _RL DELTA
27     INTEGER myThid
28    
29     #ifdef ALLOW_STREAMICE
30    
31     _RL resid, f, fp, hf, htmp
32     INTEGER i, j, bi, bj, ITER
33     _RL ETA_GL_STREAMICE
34     EXTERNAL ETA_GL_STREAMICE
35     _RL ETA_GL_STREAMICE_PRIME
36 dgoldberg 1.2 ! EXTERNAL PHI_GL_STREAMICE_PRIME
37 dgoldberg 1.1
38     DO bj=myByLo(myThid), myByHi(myThid)
39     DO bi=myBxLo(myThid), myBxHi(myThid)
40     DO j = 1,sNy
41     DO i = 1,sNx
42     IF (STREAMICE_hmask(i,j,bi,bj).eq.1.0) THEN
43     hf = (-1. _d 0) * R(i,j,bi,bj) /
44     & (1. _d 0 - delta)
45    
46     IF (S(i,j,bi,bj) .gt. delta*HF) THEN
47     htmp = S(i,j,bi,bj)-R(i,j,bi,bj)
48     ELSE
49     htmp = S(i,j,bi,bj)/delta
50 dgoldberg 1.2 ENDIF
51    
52 dgoldberg 1.1 IF (streamice_smooth_gl_width.gt.0.) THEN
53    
54     RESID=1. _d 0
55    
56     DO ITER=1,20
57     IF ((RESID .gt. .005) .and.
58 dgoldberg 1.2 & ( STREAMICE_hmask(i,j,bi,bj).eq.1.0)) THEN
59    
60     hf = (-1. _d 0) * R(i,j,bi,bj) /
61 dgoldberg 1.1 & (1. _d 0 - delta)
62    
63     IF (S(i,j,bi,bj) .gt. delta*HF) THEN
64     htmp = S(i,j,bi,bj)-R(i,j,bi,bj)
65     ELSE
66     htmp = S(i,j,bi,bj)/delta
67     ENDIF
68 dgoldberg 1.2
69 dgoldberg 1.1 RESID = ETA_GL_STREAMICE (
70     & htmp-HF,
71     & delta,
72     & 1. _d 0,
73     & delta*HF,
74     & streamice_smooth_gl_width)
75     RESID = RESID - S(i,j,bi,bj)
76     FP = ETA_GL_STREAMICE_PRIME (
77     & htmp-HF,
78     & delta,
79     & 1. _d 0,
80     & delta*HF,
81     & streamice_smooth_gl_width)
82     Htmp = HTMP-RESID/FP
83     ENDIF
84     ENDDO
85     ENDIF
86 dgoldberg 1.2 H(i,j,bi,bj) = Htmp
87 dgoldberg 1.1 ENDIF
88     ENDDO
89     ENDDO
90     ENDDO
91 dgoldberg 1.2 ENDDO
92    
93 dgoldberg 1.1
94     #endif
95     RETURN
96 dgoldberg 1.2 END

  ViewVC Help
Powered by ViewVC 1.1.22