23 |
#include "PARAMS.h" |
#include "PARAMS.h" |
24 |
#include "STREAMICE.h" |
#include "STREAMICE.h" |
25 |
#include "STREAMICE_CG.h" |
#include "STREAMICE_CG.h" |
26 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
27 |
|
# include "tamc.h" |
28 |
|
#endif |
29 |
|
|
30 |
C !INPUT/OUTPUT ARGUMENTS |
C !INPUT/OUTPUT ARGUMENTS |
31 |
INTEGER myThid |
INTEGER myThid |
37 |
|
|
38 |
C LOCAL VARIABLES |
C LOCAL VARIABLES |
39 |
INTEGER i, j, bi, bj, k, l, umid, vmid, m |
INTEGER i, j, bi, bj, k, l, umid, vmid, m |
40 |
|
INTEGER ikey_1 |
41 |
_RL ux, uy, vx, vy, exx, eyy, exy, unorm, second_inv |
_RL ux, uy, vx, vy, exx, eyy, exy, unorm, second_inv |
42 |
_RL ub, vb, fb, mean_u_shear, mean_v_shear |
_RL ub, vb, fb, mean_u_shear, mean_v_shear |
43 |
_RL omega_temp (Nr+1), u_shear(Nr+1), v_shear(Nr+1) |
_RL omega_temp (Nr+1), u_shear(Nr+1), v_shear(Nr+1) |
99 |
omega_temp (Nr+1) = 0.0 |
omega_temp (Nr+1) = 0.0 |
100 |
u_shear(Nr+1) = 0.0 |
u_shear(Nr+1) = 0.0 |
101 |
v_shear(Nr+1) = 0.0 |
v_shear(Nr+1) = 0.0 |
102 |
|
|
103 |
DO m=Nr,1,-1 |
DO m=Nr,1,-1 |
104 |
|
|
105 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
106 |
|
act1 = bi - myBxLo(myThid) |
107 |
|
max1 = myBxHi(myThid) - myBxLo(myThid) + 1 |
108 |
|
act2 = bj - myByLo(myThid) |
109 |
|
max2 = myByHi(myThid) - myByLo(myThid) + 1 |
110 |
|
act3 = myThid - 1 |
111 |
|
max3 = nTx*nTy |
112 |
|
act4 = ikey_dynamics - 1 |
113 |
|
|
114 |
|
ikey_1 = m |
115 |
|
& + Nr*(i-1) |
116 |
|
& + Nr*sNx*(j-1) |
117 |
|
& + Nr*sNx*sNy*act1 |
118 |
|
& + Nr*sNx*sNy*max1*act2 |
119 |
|
& + Nr*sNx*sNy*max1*max2*act3 |
120 |
|
& + Nr*sNx*sNy*max1*max2*max3*act4 |
121 |
|
|
122 |
|
CADJ STORE visc_streamice_full(i,j,m,bi,bj) |
123 |
|
CADJ & = comlev1_stream_hybrid, key=ikey_1 |
124 |
|
#endif |
125 |
|
|
126 |
streamice_vert_shear_uz (m) = streamice_taubx(i,j,bi,bj) / |
streamice_vert_shear_uz (m) = streamice_taubx(i,j,bi,bj) / |
127 |
& visc_streamice_full(i,j,m,bi,bj) |
& visc_streamice_full(i,j,m,bi,bj) |
128 |
& * streamice_sigma_coord(m) |
& * streamice_sigma_coord(m) |