Repository navigation
Conversation
|
Your What do you think @parkjk ? |
|
Any progress here @d-burg? |
|
Status @d-burg? |
|
@d-burg this seems to have gone stale. Let's get it merged or closed as part of your current PR push |
|
@logan-nc should we keep this on the backburner? With my latest changes to this branch (and without TJ's Fitzpatrick-specific flux coordinate "r") I still haven't been able to get the outputs looking correct. However, given how well the STRIDE and TJ Δ' values align, and how close the growth rates are on circular equilibria, I'm not sure if we need this symmetrization? This might be a good question for a future meeting with Dylan or Richard, if we can catch him at MHDW. |
|
Sounds good @d-burg. change the pr status from "open" to "draft" please. if/when you come back to it you can change it back |
|
@d-burg is this so stale it should be closed? |
|
Closing this without merging. As part of wrapping up #173 I checked whether STRIDE's Δ' still needs symmetrizing. It doesn't: on current STRIDE's Δ' is already symmetric up to a per-surface scale. Fitzpatrick's normalization differs from STRIDE's only by a separate scale on each surface's large and small solutions. That changes the matrix to B⁻¹ Δ' A with A and B diagonal. Such a rescaling can make a matrix Hermitian only if certain products of its entries, which the rescaling leaves unchanged, are already Hermitian-consistent. On the DIII-D-like example (n = 1, five surfaces, q = 2–6,
The raw matrix therefore looks non-symmetric only because the surfaces are normalized differently. The coupling information is consistent. Symmetrizing cannot change the roots. A rescaling with A = B is a similarity transform, and det(Δ' − D) is unchanged by a similarity transform for any diagonal D. That determinant is the one SLAYER's coupled dispersion relation uses. What remains when A ≠ B is a scaling of each row by a_i/b_i. In the dispersion relation that is the same as scaling each surface's layer response, so it amounts to choosing the reference length on each surface. #173 now handles that explicitly: it converts Δ' from STRIDE's ψ_N reference to the r_s reference of the layer, Δ'_ij → K_i^(1/2+α_i) Δ'_ij K_j^(α_j−1/2) with K = r_s dψ_N/dr and α = √(−D_I), following the Julia implementation. Note on earlier If we later want a symmetric Δ' as a diagnostic, for example to compare entry by entry with TJ, the per-surface weights above take about ten lines to compute from the pair products. That can be added when someone needs it. 🤖 Generated with Claude Code |

The procedure outlined in
sym.ffollows the procedure written by Fitzpatrick through equation (16) (see: Benchmark.pdf). On this first pass and as far as I can tell, I've implemented all GPEC equilibrium quantities, integrals, and matrix multiplies correctly – however, the resulting matrices do not yet follow the desired symmetry properties.One question for now: does this look like I'm calculating the J(psi_N) contour integral correctly? I'm also not totally sure about the need for
jacin this case.GPEC/stride/sym.f
Lines 148 to 165 in 4568a5c
And in the meantime, I'll continue checking through the rest of the algebra (f_S, f_L, etc) for any issues.