snesbitt Claude Sonnet 4.6 commited on
Commit
c2f44c6
·
1 Parent(s): 5a365f5

Expand spin term definition on Theory page

Browse files

Show both tensor form and vorticity magnitude equivalence
F_spin = +ρ₀ΣRᵢⱼ² = +ρ₀/2|ω'|², with ω' components explicit.
Clarifies why positive forcing → low p' (dynamic pipe effect).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Files changed (1) hide show
  1. python/updraft_forcing/app.py +13 -6
python/updraft_forcing/app.py CHANGED
@@ -582,15 +582,22 @@ def _theory_content():
582
  html.Div([
583
  html.Div("Nonlinear spin", className="theory-term-title"),
584
  _eq(
585
- r"\begin{aligned}"
586
- r"F_{\mathrm{spin}} &= +\rho_0 \sum_{i,j} R_{ij}^2 \\"
587
- r"R_{ij} &= \tfrac{1}{2}\!\left(\frac{\partial u_i'}{\partial x_j}"
 
 
 
588
  r"- \frac{\partial u_j'}{\partial x_i}\right)"
589
- r"\end{aligned}"
 
 
590
  ),
591
  _p(
592
- r"Rotation-rate tensor squared. Always produces low $p'$ "
593
- r"the dynamic pipe effect. Drives upward acceleration inside "
 
 
594
  r"a rotating mesocyclone."
595
  ),
596
  ], className="theory-term"),
 
582
  html.Div([
583
  html.Div("Nonlinear spin", className="theory-term-title"),
584
  _eq(
585
+ r"F_{\mathrm{spin}} = +\rho_0 \sum_{i,j} R_{ij}^2"
586
+ r" = +\frac{\rho_0}{2}\,|\boldsymbol{\omega}'|^2"
587
+ ),
588
+ _eq(
589
+ r"R_{ij} = \tfrac{1}{2}\!\left("
590
+ r"\frac{\partial u_i'}{\partial x_j}"
591
  r"- \frac{\partial u_j'}{\partial x_i}\right)"
592
+ ),
593
+ _eq(
594
+ r"|\boldsymbol{\omega}'|^2 = \zeta_x^2 + \zeta_y^2 + \zeta_z^2"
595
  ),
596
  _p(
597
+ r"Rotation-rate tensor squared, equal to $\tfrac{1}{2}|\boldsymbol{\omega}'|^2$. "
598
+ r"Positive definite, so $F_{\mathrm{spin}} > 0$ everywhere. "
599
+ r"Positive forcing in $\nabla^2 p' = F$ yields **low** $p'$ "
600
+ r"— the dynamic pipe effect. Drives upward acceleration inside "
601
  r"a rotating mesocyclone."
602
  ),
603
  ], className="theory-term"),