TRANSP now includes a predictive capability to evolve T3D with GX for comprehensive plasma simulations. The documentation of the T3D code can be found here and the documentation of the GX code can be found here. This feature is available on Traverse (at PPPL) and Perlmutter (at NERSC) clusters. Note that Traverse will be retired soon, so Perlmutter is recommended.
T3D_template.in
GX_template.in
To enable predictive simulations in TRANSP, follow these steps:
LPREDICTIVE_MODE=5
1
based on the plasma parameters you want to predict:
LPREDICT_NE=1
LPREDICT_TE=1
LPREDICT_TI=1
T3D_template.in
and GX_template.in
match the TRANSP namelist configurations.T3D_template.in
and GX_template.in
in the same directory as the TRANSP namelist file.sbatch run_transp_job.sh
T3D
and GX
namelists are consistent with the TRANSP settings to avoid errors during the simulation.By following these steps, you should be able to run coupled simulations using TRANSP, T3D, and GX successfully. For additional help, refer to the cluster documentation or contact support.
[grid] N_radial = 9 flux_label = 'torflux' [time] newton_threshold = 0.01 max_newton_iter = 4 alpha = 1.0 use_SI = true [[model]] model = "GX" gx_template = "GX_template.in" gx_outputs = "T3D-flux-tubes/" adiabatic_species = "electron" overwrite = true check_stalls = false gpus_per_gx = 1 zeta_center = [0.0] [[model]] model = "ReLU" D_neo = 5.0 [[species]] type = "electron" Xadiabatic = true density = {import = true, evolve = true} temperature = {import = true, evolve = true} aux_particle_source = { import = true } aux_power_source = { import = true } density_relu_flux = {critical_gradient = 0.0, slope = 0.0} pressure_relu_flux = {critical_gradient = 0.0, slope = 0.0} [[species]] type = "deuterium" density = {import = true, evolve = false} temperature = {import = true, evolve = true} aux_particle_source = { import = true } aux_power_source = { import = true } density_relu_flux = {critical_gradient = 0.0, slope = 0.0} pressure_relu_flux = {critical_gradient = 0.0, slope = 0.0} [[species]] impurity = true type = "carbon" density = {import = true, evolve = false} temperature = {import = true, evolve = false} aux_particle_source = { import = true } aux_power_source = { import = true } density_relu_flux = {critical_gradient = 0.0, slope = 0.0} pressure_relu_flux = {critical_gradient = 0.0, slope = 0.0} [[species]] impurity = true type = "beryllium" density = {import = true, evolve = false} temperature = {import = true, evolve = false} aux_particle_source = { import = true } aux_power_source = { import = true } density_relu_flux = {critical_gradient = 0.0, slope = 0.0} pressure_relu_flux = {critical_gradient = 0.0, slope = 0.0} [import] type = "transp_realtime" ufiles_dir = "T3D_ufiles" [geometry] geo_option = 'geqdsk' [physics] collisions = true alpha_heating = false bremsstrahlung = false update_equilibrium = false turbulent_exchange = false Zeff = {import = true}
# This is a template gx input file for use with T3D. # It is missing a variety of parameters required for standalone GX calculations. # T3D will automatically fill in missing parameters to generate full gx input files. # The most critical tunable parameters are in [Dimensions], [Domain], and [Time]. debug = true [Dimensions] ntheta = 24 # number of points along field line (theta) per 2pi segment nperiod = 1 # number of 2pi segments along field line is 2*nperiod-1 ny = 61 # number of real-space grid-points in y 64 nx = 111 # number of real-space grid-points in x 192 nhermite = 12 # number of hermite moments (v_parallel resolution) nlaguerre = 4 # number of laguerre moments (mu B resolution) [Domain] y0 = 10.0 # controls box length in y (in units of rho_ref) and minimum ky, so that ky_min*rho_ref = 1/y0 boundary = "linked" # use generalized twist-shift boundary conditions along field line, and cut the field line to enforce x0 ~ y0 [Physics] nonlinear_mode = true # this is a nonlinear calculation [Time] t_max = 150.0 # run to t=500 (in units of L_ref/vt_ref) t_add = 50.0 # on restart, run an additional 300 time units cfl = 0.8 # safety multiplier on computed timestep scheme = "rk4" # use RK3 timestepping scheme [Initialization] ikpar_init = 0 # parallel wavenumber of initial perturbation init_field = "density" # initial condition set in density init_amp = 1.0e-2 # amplitude of initial condition [Dissipation] closure_model = "none" # no closure assumptions (just truncation) hypercollisions = true # use hypercollision model hyper = true # use hyperdiffusion [Diagnostics] nwrite = 1000 # write diagnostics every 100 timesteps fluxes = true # compute and write heat and particle fluxes [Wspectra] # spectra of W = |G_lm|**2 species = false hermite = false laguerre = false hermite_laguerre = true # W(l,m) (summed over kx, ky, z) kx = false ky = true # W(ky) (summed over kx, z, l, m) kxky = false z = false [Pspectra] # spectra of P = ( 1 - Gamma_0(b_s) ) |Phi|**2 species = false kx = false ky = true # P(ky) (summed over kx, z) kxky = false z = true # P(z) (summed over kx, ky) [Qspectra] # spectra of Q (heat flux) kx = false ky = true # Q(ky) (summed over kx, z) kxky = false z = true # Q(z) (summed over kx, ky) [Gamspectra] # spectra of Q (heat flux) kx = false ky = true # Q(ky) (summed over kx, z) kxky = false z = true # Q(z) (summed over kx, ky)