Back to home page

MITgcm

 
 

    


File indexing completed on 2022-02-22 06:09:31 UTC

view on githubraw file Latest commit 16cc32c7 on 2022-02-21 18:12:34 UTC
5ca83cd8f7 Dani*0001 #include "STREAMICE_OPTIONS.h"
16cc32c739 Mart*0002 #ifdef ALLOW_AUTODIFF
                0003 # include "AUTODIFF_OPTIONS.h"
                0004 #endif
5ca83cd8f7 Dani*0005 
c309541e32 Dani*0006 
                0007       SUBROUTINE ADSTRMICE_H_INV (
                0008 #ifdef ALLOW_OPENAD
                0009      &            H,
                0010      &            Hd,
                0011      &            S,
                0012      &            R,
                0013      &            Rd,
                0014      &            delta,
                0015 #endif
                0016      &            mythid)
5ca83cd8f7 Dani*0017 
                0018 !      This S/R finds a thickness (H) that gives surf elev S with bed R
                0019 
                0020 #include "SIZE.h"
                0021 #include "GRID.h"
                0022 #include "SET_GRID.h"
                0023 #include "EEPARAMS.h"
                0024 #include "PARAMS.h"
                0025 #include "STREAMICE.h"
                0026 !#include "CTRL_GENARR.h"
                0027 
                0028       INTEGER myThid
                0029 
                0030 #ifdef ALLOW_STREAMICE
79cfa53108 Dani*0031 #ifdef ALLOW_AUTODIFF
887f427c62 Jean*0032 
16cc32c739 Mart*0033       _RL fp, hf
c309541e32 Dani*0034       _RL rhoi, rhow, i_r, delta
16cc32c739 Mart*0035       INTEGER i, j, bi, bj
5ca83cd8f7 Dani*0036       _RL ETA_GL_STREAMICE
                0037       EXTERNAL ETA_GL_STREAMICE
c309541e32 Dani*0038       _RL ETA_GL_PRIME_STREAMICE
e321477f28 Dani*0039 !      EXTERNAL PHI_GL_STREAMICE_PRIME
5ca83cd8f7 Dani*0040 
                0041       _RL H(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c309541e32 Dani*0042 !      _RL Rtmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)a
                0043 #ifdef ALLOW_AUTODIFF_TAMC
0b3616ab92 Dani*0044       _RL r_low_si_ad(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
                0045       common /streamice_rlow_ad/ r_low_si_ad
                0046       _RL h_streamice_ad(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
                0047       common /streamice_fields_rl_ad/ h_streamice_ad
c309541e32 Dani*0048 #else
                0049       _RL R(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
                0050       _RL S(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
                0051       _RL Rd(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
                0052       _RL Hd(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
                0053 #endif
5ca83cd8f7 Dani*0054 
                0055 !       il=ILNBLNK( xx_genarr2d_file(iarr) )
                0056 !       write(fnamegeneric(1:80),'(2a,i10.10)')
                0057 !     &     xx_genarr2d_file(iarr)(1:il),'.',optimcycle
                0058 !       CALL ACTIVE_READ_XY ( fnamegeneric, tmpfld2d, 1,
                0059 !     &                      doglobalread, ladinit, optimcycle,
                0060 !     &                      myThid, xx_genarr2d_dummy(iarr) )
                0061 
                0062 
                0063 
                0064 !      CALL ACTIVE_READ_XY ( 'H_adjust.data', H, 1,
887f427c62 Jean*0065 !     &     doglobalread, ladinit, optimcycle,
                0066 !     &     myThid,
5ca83cd8f7 Dani*0067 
                0068 !      CALL READ_FLD_XY_RL( 'R_low_adjust.data', ' ', Rtmp,
                0069 !     &     0, myThid )
                0070 
c309541e32 Dani*0071 !      call write_fld_xy_rl ("R_invert_pre","",R,0,mythid)
                0072 
5ca83cd8f7 Dani*0073       CALL STREAMICE_INVERT_SURF_FORTHICK (
                0074      O            H,
c309541e32 Dani*0075 #ifdef ALLOW_AUTODIFF_TAMC
5ca83cd8f7 Dani*0076      I            surf_el_streamice,
                0077      I            R_low_si,
c309541e32 Dani*0078 #else
                0079      I            S,
                0080      I            R,
                0081 #endif
5ca83cd8f7 Dani*0082      I            delta,
                0083      I            myThid)
                0084 
                0085       rhoi = streamice_density
                0086       rhow = streamice_density_ocean_avg
c309541e32 Dani*0087       i_r = rhow/rhoi
                0088       delta=1-rhoi/rhow
5ca83cd8f7 Dani*0089 
                0090       DO bj=myByLo(myThid), myByHi(myThid)
                0091         DO bi=myBxLo(myThid), myBxHi(myThid)
                0092           do j = 1,sNy
                0093             do i = 1,sNx
887f427c62 Jean*0094 
c309541e32 Dani*0095 
                0096 #ifdef ALLOW_AUTODIFF_TAMC
5ca83cd8f7 Dani*0097               hf = -1.0 * i_r * R_low_si (i,j,bi,bj)
c309541e32 Dani*0098 #else
                0099               hf = -1.0 * i_r * R (i,j,bi,bj)
                0100 #endif
5ca83cd8f7 Dani*0101 
c309541e32 Dani*0102               fp = ETA_GL_PRIME_STREAMICE (
5ca83cd8f7 Dani*0103      &             H (i,j,bi,bj)-hf,
                0104      &             delta,
                0105      &             1. _d 0,
                0106      &             delta*hf,
                0107      &             streamice_smooth_gl_width)
                0108 
c309541e32 Dani*0109 
                0110 #ifdef ALLOW_AUTODIFF_TAMC
0b3616ab92 Dani*0111               r_low_si_ad (i,j,bi,bj) =
                0112      &          r_low_si_ad (i,j,bi,bj) -
5ca83cd8f7 Dani*0113      &          i_r * (fp-delta)/fp *
0b3616ab92 Dani*0114      &          h_streamice_ad(i,j,bi,bj)
c309541e32 Dani*0115 #else
                0116               rd (i,j,bi,bj) =
                0117      &          rd (i,j,bi,bj) -
                0118      &          i_r * (fp-delta)/fp *
                0119      &          hd(i,j,bi,bj)
                0120 #endif
5ca83cd8f7 Dani*0121 
                0122             enddo
                0123           enddo
                0124         enddo
                0125       enddo
                0126 
79cfa53108 Dani*0127 #endif
5ca83cd8f7 Dani*0128 #endif
                0129       RETURN
                0130       END