Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Schwartz inequalities sign and coefficient #4

Open
BrodiePearson opened this issue Feb 10, 2021 · 3 comments
Open

Schwartz inequalities sign and coefficient #4

BrodiePearson opened this issue Feb 10, 2021 · 3 comments
Assignees

Comments

@BrodiePearson
Copy link
Collaborator

BrodiePearson commented Feb 10, 2021

The current third-order fluxes of temperature and salinity flux (code linked below) are limited by the inequality
$\overline{w'w'\theta'}\leq \sqrt{\sigma^3(1-\sigma)^3(w_u-w_d)^4(\theta_u-\theta_d)^2}$
Which I think is equivalent to
$\overline{w'w'\theta'}\leq \sqrt{min[\left(\overline{w'\theta'}\right)^2\overline{w'w'}, \quad \overline{\theta'\theta'}\left(\overline{w'w'}\right)^2]}$

However, the appendix of this paper (Eq. A1) suggests the inequality should apply to the absolute value and depend on the product of a fourth-order moment and a second-order moment, instead of the product of three second-order moments:

$|\overline{w'w'\theta'}|\leq \sqrt{min[\left(\overline{w'w'\theta'\theta'}\right)\overline{w'w'}, \quad \overline{\theta'\theta'}\left(\overline{w'w'w'w'}\right)]}$
or
$|\overline{w'w'\theta'}| \leq \sqrt{\sigma(1-\sigma)(1-3\sigma+3\sigma^2)(w_u-w_d)^4(\theta_u-\theta_d)^2}$

Should we change the current code:

w2tTemp = -sigav*(1.0_RKIND - sigav)*(1.0_RKIND - 2.0_RKIND*sigav)*wumdav**2.0_RKIND*tumdav
w2tCheck = (sigav**3*(1.0_RKIND - sigav)**3*wumdav**4*tumdav**2)**0.5
w2t(k,iCell) = min(w2tTemp, w2tCheck)

to

w2tTemp = -sigav*(1.0_RKIND - sigav)*(1.0_RKIND - 2.0_RKIND*sigav)*wumdav**2.0_RKIND*tumdav 
 w2tCheck = (sigav*(1.0_RKIND - sigav)*(1.0_RKIND - 3.0_RKIND*sigav + &
       3.0_RKIND*sigav**2.0_RKIND)*wumdav**4*tumdav**2)**0.5 
 w2t(k,iCell) = sign(min(abs(w2tTemp), abs(w2tCheck)), w2tTemp) 

and similar for the salinity limiter?

@vanroekel
Copy link
Owner

@BrodiePearson sorry for missing this for so long, I apparently don't get notifications even though it is my fork. Anyway, I think you are definitely right. I had started thinking about this w/ regard to w3, but agree this should be fixed here too.

@vanroekel vanroekel self-assigned this Feb 18, 2021
@vanroekel
Copy link
Owner

@BrodiePearson should the w2tCheck you propose be

 w2tCheck = (sigav**2.0*(1.0_RKIND - sigav)**2.0*(1.0_RKIND - 3.0_RKIND*sigav + &
       3.0_RKIND*sigav**2.0_RKIND)*wumdav**4*tumdav**2)**0.5 

I think we should pick up an extra sig*(1-sig) from the w2 and t2 terms in your equation above

@BrodiePearson
Copy link
Collaborator Author

@vanroekel Yes you're right those extra terms are needed

vanroekel pushed a commit that referenced this issue Dec 15, 2021
Adds namelist parameters for Stokes drift/Langmuir forcing
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants