Back to home page

MITgcm

 
 

    


File indexing completed on 2023-09-21 05:10:51 UTC

view on githubraw file Latest commit 96b00645 on 2023-09-20 15:15:14 UTC
5ca83cd8f7 Dani*0001 #include "CPP_OPTIONS.h"
                0002 #include "STREAMICE_OPTIONS.h"
                0003 
                0004       SUBROUTINE STREAMICE_INVERT_SURF_FORTHICK (
                0005      O            H,
                0006      I            S,
                0007      I            R,
                0008      I            delta,
                0009      I            myThid)
                0010 
96b006450c dngo*0011 c      This S/R finds a thickness (H) that gives surf elev S with bed R
1f04afc3fd Dani*0012 
5ca83cd8f7 Dani*0013 #include "SIZE.h"
                0014 #include "GRID.h"
                0015 #include "SET_GRID.h"
                0016 #include "EEPARAMS.h"
                0017 #include "PARAMS.h"
                0018 #include "STREAMICE.h"
                0019 
1f04afc3fd Dani*0020 #ifdef ALLOW_OPENAD
                0021       use OAD_tape
                0022       use OAD_rev
                0023       use OAD_cp
                0024 #endif
                0025 
5ca83cd8f7 Dani*0026       _RL H(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0027       _RL S(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0028       _RL R(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0029       _RL DELTA
                0030       INTEGER myThid
1f04afc3fd Dani*0031 #ifdef ALLOW_OPENAD
                0032       type(active) :: ETA_GL_STREAMICE
                0033       type(active) :: X,Y0
                0034       type(modeType) :: our_orig_mode
                0035 #endif
5ca83cd8f7 Dani*0036 
                0037 #ifdef ALLOW_STREAMICE
                0038 
96b006450c dngo*0039       _RL resid, fp, hf, htmp
5ca83cd8f7 Dani*0040       INTEGER  i, j, bi, bj, ITER
1f04afc3fd Dani*0041       _RL ETA_GL_PRIME_STREAMICE
                0042 #ifndef ALLOW_OPENAD
5ca83cd8f7 Dani*0043       _RL ETA_GL_STREAMICE
                0044       EXTERNAL ETA_GL_STREAMICE
1f04afc3fd Dani*0045 #endif
96b006450c dngo*0046 c      EXTERNAL PHI_GL_STREAMICE_PRIME
5ca83cd8f7 Dani*0047 
                0048         DO bj=myByLo(myThid), myByHi(myThid)
                0049          DO bi=myBxLo(myThid), myBxHi(myThid)
                0050           DO j = 1,sNy
                0051            DO i = 1,sNx
                0052             IF (STREAMICE_hmask(i,j,bi,bj).eq.1.0) THEN
                0053              hf = (-1. _d 0) * R(i,j,bi,bj) /
                0054      &           (1. _d 0 - delta)
                0055 
                0056              IF (S(i,j,bi,bj) .gt. delta*HF) THEN
                0057               htmp = S(i,j,bi,bj)-R(i,j,bi,bj)
                0058              ELSE
                0059               htmp = S(i,j,bi,bj)/delta
887f427c62 Jean*0060              ENDIF
                0061 
5ca83cd8f7 Dani*0062              IF (streamice_smooth_gl_width.gt.0.) THEN
                0063 
                0064               RESID=1. _d 0
                0065 
                0066               DO ITER=1,20
                0067                IF ((RESID .gt. .005) .and.
887f427c62 Jean*0068      &           ( STREAMICE_hmask(i,j,bi,bj).eq.1.0)) THEN
                0069 
                0070                 hf = (-1. _d 0) * R(i,j,bi,bj) /
5ca83cd8f7 Dani*0071      &           (1. _d 0 - delta)
                0072 
                0073                 IF (S(i,j,bi,bj) .gt. delta*HF) THEN
                0074                  htmp = S(i,j,bi,bj)-R(i,j,bi,bj)
                0075                 ELSE
                0076                  htmp = S(i,j,bi,bj)/delta
                0077                 ENDIF
887f427c62 Jean*0078 
1f04afc3fd Dani*0079 #ifdef ALLOW_OPENAD
                0080 
                0081                 our_orig_mode = our_rev_mode
                0082                 our_rev_mode%arg_store=.FALSE.
                0083                 our_rev_mode%arg_restore=.FALSE.
                0084                 our_rev_mode%plain=.TRUE.
                0085                 our_rev_mode%tape=.FALSE.
                0086                 our_rev_mode%adjoint=.FALSE.
                0087 
                0088                 X%v = htmp-HF
                0089                 Y0%v = delta*HF
                0090 
                0091                 CALL OpenAD_oad_s_eta_gl_streamice(
                0092      &             X,
                0093      &             delta,
                0094      &             1. _d 0,
                0095      &             Y0,
                0096      &             streamice_smooth_gl_width,
                0097      &             ETA_GL_STREAMICE)
                0098 
                0099                 RESID = ETA_GL_STREAMICE%v
                0100                 our_rev_mode = our_orig_mode
                0101 
                0102 #else
5ca83cd8f7 Dani*0103                 RESID = ETA_GL_STREAMICE (
                0104      &             htmp-HF,
                0105      &             delta,
                0106      &             1. _d 0,
                0107      &             delta*HF,
                0108      &             streamice_smooth_gl_width)
1f04afc3fd Dani*0109 #endif
5ca83cd8f7 Dani*0110                 RESID = RESID - S(i,j,bi,bj)
1f04afc3fd Dani*0111                 FP = ETA_GL_PRIME_STREAMICE (
5ca83cd8f7 Dani*0112      &             htmp-HF,
                0113      &             delta,
                0114      &             1. _d 0,
                0115      &             delta*HF,
                0116      &             streamice_smooth_gl_width)
                0117                 Htmp = HTMP-RESID/FP
                0118                ENDIF
                0119               ENDDO
                0120              ENDIF
887f427c62 Jean*0121              H(i,j,bi,bj) = Htmp
5ca83cd8f7 Dani*0122             ENDIF
                0123            ENDDO
                0124           ENDDO
                0125          ENDDO
887f427c62 Jean*0126         ENDDO
                0127 
5ca83cd8f7 Dani*0128 #endif
                0129       RETURN
887f427c62 Jean*0130       END