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

model to keep q>1 in stationary transport #785

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open

Conversation

jmcclena
Copy link
Contributor

This pull request implements Jardin's model for stationary sawteeth to raise q>1.

Example run

using Revise
using FUSE
ini, act = FUSE.case_parameters(:D3D)


# Initialize the `dd` structure with 0D parameters
dd = FUSE.init(ini, act);
dd_init = deepcopy(dd)
#act.ActorStationaryPlasma.convergence_error = 0.05#1e-8
act.ActorStationaryPlasma.max_iter = 5
FUSE.ActorStationaryPlasma(dd,act)
Screenshot 2024-12-12 at 3 40 32 PM

@jmcclena jmcclena requested review from bclyons12 and orso82 December 13, 2024 17:00
@jmcclena
Copy link
Contributor Author

@bclyons12 Do you know if eta needs to be updated in the dd to get the correct flux consumption?

@bclyons12
Copy link
Member

I do not. I'd just have to look at how and wear the flux consumption is calculated.

I'll look this over next week.

@orso82
Copy link
Member

orso82 commented Dec 16, 2024

@jmcclena I wonder if we could extend this to time-dependent QED, using the q-profile at the previous time-slice to inform if the conductivity profile should be flattened.

@jmcclena
Copy link
Contributor Author

jmcclena commented Dec 17, 2024

@orso82

For time-dependent, I think it might be better to flatten the profiles directly like this:

function flatten(prof, rad, vol, width, i_inversion)
    prof_tanh = 0.5 .* tanh.(-(rad .- rad[i_inversion]) ./ width) .+ 0.5

    en = IMAS.integrate(vol, prof)
    en_tanh = IMAS.integrate(vol,prof_tanh)
    prof_cut = deepcopy(prof)
    prof_cut[1:i_inversion] .= prof_cut[i_inversion]
    en_cut = IMAS.integrate(vol,prof_cut)

    prof_new = prof_cut .+ (en .- en_cut) ./ en_tanh .* prof_tanh

    return prof_new
end

Then we can flatten the profiles based on some condition (say q0<0.9) on the Jt step, taking half steps of the temperature/density profiles to keep things in sync.

@orso82
Copy link
Member

orso82 commented Dec 18, 2024

@jmcclena @bclyons12 looking more into this, what should happen to the non-inductive current inside of the inversion radius? I wonder if that non-inductive current get redistributed inside the inversion radius, perhaps using the same flatten() function that @jmcclena proposed?

@bclyons12
Copy link
Member

I know that bootstrap current relaxes on the electron collision time, though I'm not sure what happens if there's large MHD that's redistributing particles anyway. Nor do I know how other noninductive sources should behave.

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

Successfully merging this pull request may close these issues.

3 participants