I have a question about the spline interpolation used to get the stress by the vertical viscosity in step3d_uv.F. I guess that derivatives at the boundary (or alternatives) should be prescribed in the spline interpolation. What kind of the boundary condition is assumed in ROMS? It seems to me that the wind stress is missing in the boundary condition, while the viscous stress should coincide with the wind stress at the surface. If this is the case, I wonder why such things can happen,
Just as a test of a possible candidate of modification, I added the following four lines (numbered 1,2,3,4) to the step3d_uv.F,
Code: Select all
DC(i,k)=cff*(u(i,j,k+1,nnew)-u(i,j,k,nnew)- & & FC(i,k)*DC(i,k-1)) END DO END DO 1 DO i=IstrU,Iend 2 DC(i,N(ng)-1)=DC(i,N(ng)-1) & 3 & -CF(i,N(ng)-1)*sustr(i,j)/AK(i,N(ng)-1) 4 END DO ! ! Backward substitution. ! DO i=IstrU,Iend DC(i,N(ng))=0.0_r8 END DO DO k=N(ng)-1,1,-1 DO i=IstrU,Iend DC(i,k)=DC(i,k)-CF(i,k)*DC(i,k+1) ...
Then, I performed an idealized run of wind-driven Ekman flows (which I made by myself). The thickness of the Ekman layer, sqrt(akv/f), was resolved by three grid points with the total grid numbers, N=30, in the vertical direction. The Ekman spiral was reasonably reproduced, and
compared to the theory (Pedlosky 1987) the velocity at the shallowest grid point was;
(1) 0.900 times of the theory, for the case without modification
(2) 0.999 times of the theory, for the case with the above noted modification
(3) 0.995 times of the theory, for the case "undef SPLINE" in cppdefs.h
The results was improved by the modification. Actually, the result in example (1) implies that the energy input by winds is underestimated by 10 percent in this example. This is worse than example )3), in which a simpler scheme is employed.