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
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
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
5ca83cd8f7 Dani*0040
0041 _RL H(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c309541e32 Dani*0042
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
0056
0057
0058
0059
0060
0061
0062
0063
0064
887f427c62 Jean*0065
0066
5ca83cd8f7 Dani*0067
0068
0069
0070
c309541e32 Dani*0071
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