![]() |
The Open FUSION Toolkit 1.0.0-6f445ef
An open-source framework for fusion and plasma science and engineering
|
Grad-Shafranov equilibrium object.
Public Member Functions | |
| procedure | copy (self, source) |
| Needs docs. | |
| procedure | delete (self) |
| Destory G-S object. | |
| procedure | fit_isoflux (self, psi_full, ierr) |
| Compute coil currents to best fit isoflux, flux, and saddle targets at current solution. | |
| procedure | get_chi (self) |
| Compute toroidal field potential. | |
| procedure | itor (self, psi_vec) |
| Compute approximate toroidal current as \( \int \Delta^* \psi dA \). | |
| procedure | new (self, device) |
| Needs docs. | |
Public Attributes | |
| class(oft_vector), pointer | chi => NULL() |
| Toroidal field potential (if computed) | |
| real(r8), dimension(:), pointer | coil_currs => NULL() |
| Coil currents. | |
| real(r8), dimension(:,:), pointer | coil_reg_mat => NULL() |
| Coil regularization terms. | |
| real(r8), dimension(:), pointer | coil_reg_targets => NULL() |
| Targets for coil regularization terms. | |
| type(gs_factory), pointer | device => NULL() |
| Device/factory object for equilibrium. | |
| real(r8) | dipole_a = 0.d0 |
| Anisotropy exponent for dipole pressure profiles. | |
| logical | diverted = .FALSE. |
| Equilibrium is diverted? | |
| real(r8) | estore_target = -1.d0 |
| Stored energy target. | |
| class(flux_func), pointer | eta => NULL() |
| Resistivity flux function. | |
| real(r8) | ffp_scale = 1.d0 |
| Scale factor for F*F' or F' profile (see mode) | |
| integer(i4) | flux_ntargets = 0 |
| Number of \( \psi \) target locations. | |
| real(r8), dimension(:,:), pointer | flux_targets => NULL() |
| Flux target locations and values. | |
| logical | has_plasma = .TRUE. |
| Solve with plasma? (otherwise vacuum) | |
| class(flux_func), pointer | i => NULL() |
| F*F' flux function. | |
| class(flux_func), pointer | i_ni => NULL() |
| Non-inductive F*F' flux function. | |
| real(r8) | ip_ratio_target = -1.d99 |
| Ip ratio target. | |
| integer(i4) | isoflux_ntargets = 0 |
| Number of isoflux target locations. | |
| real(r8), dimension(:,:), pointer | isoflux_targets => NULL() |
| Isoflux target locations. | |
| real(r8) | itor_target = -1.d0 |
| Toroidal current target. | |
| real(r8), dimension(2) | lim_point = [-1.d0,1.d99] |
| Location of limiting point or active X-point. | |
| real(r8) | mirror_bturn = 0.d0 |
| Turning point for mirror pressure profiles. | |
| real(r8) | mirror_n = -1.d0 |
| Anisotropy exponent for mirror pressure profiles. | |
| real(r8) | mirror_zthroat = 0.d0 |
| Mirror peak field point. | |
| integer(i4) | mode = 0 |
| RHS source mode (0 -> F*F', 1 -> F') | |
| integer(i4) | nregularize = 0 |
| Number of regularization terms. | |
| integer(i4) | nx_points = 0 |
| Number of X-points in current solution. | |
| real(r8), dimension(2) | o_point = [-1.d0,1.d99] |
| Location of magnetic axis. | |
| class(flux_func), pointer | p => NULL() |
| Pressure flux function. | |
| class(gs_ani_press), pointer | p_ani => NULL() |
| Anisotropic flux interpolator. | |
| real(r8) | p_scale = 1.d0 |
| Scale factor for P' profile. | |
| real(r8) | pax_target = -1.d0 |
| On-axis pressure target. | |
| real(r8), dimension(2) | plasma_bounds = [-1.d99,1.d99] |
| Boundaing \( \psi \) values on [LCFS, axis]. | |
| class(oft_vector), pointer | psi => NULL() |
| Current \( \psi \) solution. | |
| real(r8) | psimax = 1.d0 |
| Maximum \( \psi \) value for homogeneous equilibria. | |
| real(r8) | psiscale = 1.d0 |
| Solution scale factor for homogeneous equilibria. | |
| real(r8) | r0_target = -1.d0 |
| Magnetic axis radial target. | |
| integer(i4) | saddle_ntargets = 0 |
| Number of saddle target locations. | |
| real(r8), dimension(:,:), pointer | saddle_targets => NULL() |
| Saddle target locations. | |
| real(r8) | v0_target = -1.d99 |
| Magnetic axis vertical target. | |
| real(r8) | vcontrol_val = 0.d0 |
| Amplitude of virtual VSC "current". | |
| real(r8), dimension(2, max_xpoints) | x_points = 0.d0 |
| Location of tracked X-points. | |
| real(r8), dimension(2, max_xpoints) | x_vecs = 0.d0 |
| Vectors point from X-points to O-point. | |
Needs docs.
| [in,out] | self | G-S equilibrium object |
| [in] | source | Source G-S equilibrium object |
| procedure delete | ( | class(gs_equil), intent(inout) | self | ) |
Destory G-S object.
| [in,out] | self | G-S object |
| procedure fit_isoflux | ( | class(gs_equil), intent(inout) | self, |
| class(oft_vector), intent(inout), target | psi_full, | ||
| integer(4), intent(out) | ierr | ||
| ) |
Compute coil currents to best fit isoflux, flux, and saddle targets at current solution.
| [in,out] | self | G-S object |
| [in,out] | psi_full | Current \( \psi \) |
| [out] | ierr | Error flag |
| procedure get_chi | ( | class(gs_equil), intent(inout) | self | ) |
Compute toroidal field potential.
| [in,out] | self | G-S object |
| procedure itor | ( | class(gs_equil), intent(inout) | self, |
| class(oft_vector), intent(inout), optional | psi_vec | ||
| ) |
Compute approximate toroidal current as \( \int \Delta^* \psi dA \).
| [in,out] | self | G-S object |
| [in,out] | psi_vec | Needs docs |
| procedure new | ( | class(gs_equil), intent(inout) | self, |
| type(gs_factory), intent(in), target | device | ||
| ) |
Needs docs.
| [in,out] | self | G-S equilibrium object |
| [in] | device | G-S factory/device object |
| class(oft_vector), pointer chi => NULL() |
Toroidal field potential (if computed)
| real(r8), dimension(:), pointer coil_currs => NULL() |
Coil currents.
| real(r8), dimension(:,:), pointer coil_reg_mat => NULL() |
Coil regularization terms.
| real(r8), dimension(:), pointer coil_reg_targets => NULL() |
Targets for coil regularization terms.
| type(gs_factory), pointer device => NULL() |
Device/factory object for equilibrium.
| real(r8) dipole_a = 0.d0 |
Anisotropy exponent for dipole pressure profiles.
| logical diverted = .FALSE. |
Equilibrium is diverted?
| real(r8) estore_target = -1.d0 |
Stored energy target.
| class(flux_func), pointer eta => NULL() |
Resistivity flux function.
| real(r8) ffp_scale = 1.d0 |
Scale factor for F*F' or F' profile (see mode)
| integer(i4) flux_ntargets = 0 |
Number of \( \psi \) target locations.
| real(r8), dimension(:,:), pointer flux_targets => NULL() |
Flux target locations and values.
| logical has_plasma = .TRUE. |
Solve with plasma? (otherwise vacuum)
| class(flux_func), pointer i => NULL() |
F*F' flux function.
| class(flux_func), pointer i_ni => NULL() |
Non-inductive F*F' flux function.
| real(r8) ip_ratio_target = -1.d99 |
Ip ratio target.
| integer(i4) isoflux_ntargets = 0 |
Number of isoflux target locations.
| real(r8), dimension(:,:), pointer isoflux_targets => NULL() |
Isoflux target locations.
| real(r8) itor_target = -1.d0 |
Toroidal current target.
| real(r8), dimension(2) lim_point = [-1.d0,1.d99] |
Location of limiting point or active X-point.
| real(r8) mirror_bturn = 0.d0 |
Turning point for mirror pressure profiles.
| real(r8) mirror_n = -1.d0 |
Anisotropy exponent for mirror pressure profiles.
| real(r8) mirror_zthroat = 0.d0 |
Mirror peak field point.
| integer(i4) mode = 0 |
RHS source mode (0 -> F*F', 1 -> F')
| integer(i4) nregularize = 0 |
Number of regularization terms.
| integer(i4) nx_points = 0 |
Number of X-points in current solution.
| real(r8), dimension(2) o_point = [-1.d0,1.d99] |
Location of magnetic axis.
| class(flux_func), pointer p => NULL() |
Pressure flux function.
| class(gs_ani_press), pointer p_ani => NULL() |
Anisotropic flux interpolator.
| real(r8) p_scale = 1.d0 |
Scale factor for P' profile.
| real(r8) pax_target = -1.d0 |
On-axis pressure target.
| real(r8), dimension(2) plasma_bounds = [-1.d99,1.d99] |
Boundaing \( \psi \) values on [LCFS, axis].
| class(oft_vector), pointer psi => NULL() |
Current \( \psi \) solution.
| real(r8) psimax = 1.d0 |
Maximum \( \psi \) value for homogeneous equilibria.
| real(r8) psiscale = 1.d0 |
Solution scale factor for homogeneous equilibria.
| real(r8) r0_target = -1.d0 |
Magnetic axis radial target.
| integer(i4) saddle_ntargets = 0 |
Number of saddle target locations.
| real(r8), dimension(:,:), pointer saddle_targets => NULL() |
Saddle target locations.
| real(r8) v0_target = -1.d99 |
Magnetic axis vertical target.
| real(r8) vcontrol_val = 0.d0 |
Amplitude of virtual VSC "current".
| real(r8), dimension(2,max_xpoints) x_points = 0.d0 |
Location of tracked X-points.
| real(r8), dimension(2,max_xpoints) x_vecs = 0.d0 |
Vectors point from X-points to O-point.