Changes between Initial Version and Version 2 of Ticket #472
- Timestamp:
- 11/17/10 04:56:30 (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #472
- Property Cc added
- Property Resolution → Fixed
- Property Status new → closed
-
Ticket #472 – Description
initial v2 1 There are a couple of significant problems with the operation of the FLOAT_VWALK option: 1) the nudging velocity that forces the vertical random walk is not scaled correctly before it is applied in interp_floats, leading to the vertical diffusion being too large by a factor equal to the layer thickness, Hz; 2) with this problem fixed, the vertical diffusion applied to the floats is the correct magnitude with VWALK_FORWARD defined, but too small a factor of 0.71 (suspiciously close to 1/sqrt(2)) when the predictor-corrector scheme is in operation. 1 There are a couple of significant problems with the operation of the '''FLOAT_VWALK''' option: 2 '''1)''' the nudging velocity that forces the vertical random walk is not scaled correctly before it is applied in '''interp_floats''', leading to the vertical diffusion being too large by a factor equal to the layer thickness, '''Hz'''; 2 3 3 I investigated these problems with a simple case: fluid at rest with uniform diffusivity @ 10^-5 m2/s, doubly periodic domain 50 m deep, 5 uniformly spaced levels, 300 floats released at 25 m depth and followed for 0.5 days. The standard deviation of the float vertical position should increase with time as sqrt(2 K t) so at 0.5 days should be 0.93 m. However in the simulation it is 9.3 m (VWALK_FORWARD defined) or 6.6 m (not defined).4 '''2)''' with this problem fixed, the vertical diffusion applied to the floats is the correct magnitude with '''VWALK_FORWARD''' defined, but too small a factor of 0.71 (suspiciously close to 1/sqrt(2)) when the predictor-corrector scheme is in operation. 4 5 5 The scaling problem arises because the nudging velocity (nudg) is calculated in vwalk_floats.F in m/s and is then applied in interp_floats.F to calculate the rhs term track(izrhs,...) without further scaling. It should be scaled by the layer depth Hz.6 I investigated these problems with a simple case: fluid at rest with uniform diffusivity at 10^-5^ m2/s, doubly periodic domain 50 m deep, 5 uniformly spaced levels, 300 floats released at 25 m depth and followed for 0.5 days. The standard deviation of the float vertical position should increase with time as sqrt(2 K t) so at 0.5 days should be 0.93 m. However in the simulation it is 9.3 m ('''VWALK_FORWARD''' defined) or 6.6 m (not defined). 6 7 7 I have applied the correct (I think) scaling in a copy of interp_floats.F on my branch on the developers' repository 8 The scaling problem arises because the nudging velocity ('''nudg''') is calculated in '''vwalk_floats.F''' in m/s and is then applied in '''interp_floats.F''' to calculate the rhs term '''track(izrhs,...)''' without further scaling. It should be scaled by the layer depth '''Hz'''. 9 10 I have applied the correct (I think) scaling in a copy of '''interp_floats.F''' on my branch on the developers' repository 8 11 9 12 https://www.myroms.org/svn/omlab/branches/hadfield/trunk/ROMS/Nonlinear/interp_floats.F 10 13 11 I haven't yet looked into the situation where VWALK_FORWARDis undefined, but presumably it arises from the predictor-corrector scheme trying to cope with impulsive perturbations and can be fixed by multiplying the perturbations by sqrt(2).14 I haven't yet looked into the situation where '''VWALK_FORWARD''' is undefined, but presumably it arises from the predictor-corrector scheme trying to cope with impulsive perturbations and can be fixed by multiplying the perturbations by sqrt(2). 12 15