C $Header: /u/gcmpack/MITgcm/pkg/streamice/adstreamice_invert_surf_forthick.F,v 1.4 2014/07/09 16:09:48 dgoldberg Exp $
C $Name: $
#include "CPP_OPTIONS.h"
#include "STREAMICE_OPTIONS.h"
SUBROUTINE ADSTRMICE_H_INV (myThid)
! This S/R finds a thickness (H) that gives surf elev S with bed R
#include "SIZE.h"
#include "GRID.h"
#include "SET_GRID.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "STREAMICE.h"
!#include "CTRL_GENARR.h"
INTEGER myThid
#ifdef ALLOW_STREAMICE
_RL resid, f, fp, hf, htmp
_RL rhoi, rhow, r, i_r, delta
INTEGER ITER, i, j, bi, bj
_RL ETA_GL_STREAMICE
EXTERNAL
_RL ETA_GL_STREAMICE_PRIME
! EXTERNAL PHI_GL_STREAMICE_PRIME
_RL H(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
! _RL Rtmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RL r_low_si_ad(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /streamice_rlow_ad/ r_low_si_ad
_RL h_streamice_ad(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /streamice_fields_rl_ad/ h_streamice_ad
! il=ILNBLNK( xx_genarr2d_file(iarr) )
! write(fnamegeneric(1:80),'(2a,i10.10)')
! & xx_genarr2d_file(iarr)(1:il),'.',optimcycle
! CALL ACTIVE_READ_XY ( fnamegeneric, tmpfld2d, 1,
! & doglobalread, ladinit, optimcycle,
! & myThid, xx_genarr2d_dummy(iarr) )
! CALL ACTIVE_READ_XY ( 'H_adjust.data', H, 1,
! & doglobalread, ladinit, optimcycle,
! & myThid,
! CALL READ_FLD_XY_RL( 'R_low_adjust.data', ' ', Rtmp,
! & 0, myThid )
CALL STREAMICE_INVERT_SURF_FORTHICK (
O H,
I surf_el_streamice,
I R_low_si,
I delta,
I myThid)
rhoi = streamice_density
rhow = streamice_density_ocean_avg
r=rhoi/rhow
i_r = 1/r
delta=1-r
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
do j = 1,sNy
do i = 1,sNx
hf = -1.0 * i_r * R_low_si (i,j,bi,bj)
fp = ETA_GL_STREAMICE_PRIME (
& H (i,j,bi,bj)-hf,
& delta,
& 1. _d 0,
& delta*hf,
& streamice_smooth_gl_width)
r_low_si_ad (i,j,bi,bj) =
& r_low_si_ad (i,j,bi,bj) -
& i_r * (fp-delta)/fp *
& h_streamice_ad(i,j,bi,bj)
enddo
enddo
enddo
enddo
#endif
RETURN
END