MODgvec_MHD3D_Vars Module

Module ** MHD3D Variables **


Uses

  • module~~modgvec_mhd3d_vars~~UsesGraph module~modgvec_mhd3d_vars MODgvec_MHD3D_Vars module~modgvec_base MODgvec_base module~modgvec_mhd3d_vars->module~modgvec_base module~modgvec_boundaryfromfile MODgvec_boundaryFromFile module~modgvec_mhd3d_vars->module~modgvec_boundaryfromfile module~modgvec_globals MODgvec_Globals module~modgvec_mhd3d_vars->module~modgvec_globals module~modgvec_hmap MODgvec_hmap module~modgvec_mhd3d_vars->module~modgvec_hmap module~modgvec_rprofile_base MODgvec_rProfile_base module~modgvec_mhd3d_vars->module~modgvec_rprofile_base module~modgvec_sgrid MODgvec_sGrid module~modgvec_mhd3d_vars->module~modgvec_sgrid module~modgvec_sol_var_mhd3d MODgvec_sol_var_MHD3D module~modgvec_mhd3d_vars->module~modgvec_sol_var_mhd3d module~modgvec_base->module~modgvec_globals module~modgvec_base->module~modgvec_sgrid module~modgvec_fbase MODgvec_fBase module~modgvec_base->module~modgvec_fbase module~modgvec_sbase MODgvec_sBase module~modgvec_base->module~modgvec_sbase module~modgvec_boundaryfromfile->module~modgvec_globals module~modgvec_io_netcdf MODgvec_IO_NETCDF module~modgvec_boundaryfromfile->module~modgvec_io_netcdf iso_fortran_env iso_fortran_env module~modgvec_globals->iso_fortran_env module~modgvec_c_hmap MODgvec_c_hmap module~modgvec_hmap->module~modgvec_c_hmap module~modgvec_hmap_axisnb MODgvec_hmap_axisNB module~modgvec_hmap->module~modgvec_hmap_axisnb module~modgvec_hmap_cyl MODgvec_hmap_cyl module~modgvec_hmap->module~modgvec_hmap_cyl module~modgvec_hmap_frenet MODgvec_hmap_frenet module~modgvec_hmap->module~modgvec_hmap_frenet module~modgvec_hmap_knot MODgvec_hmap_knot module~modgvec_hmap->module~modgvec_hmap_knot module~modgvec_hmap_rz MODgvec_hmap_RZ module~modgvec_hmap->module~modgvec_hmap_rz module~modgvec_rprofile_base->module~modgvec_globals module~modgvec_sgrid->module~modgvec_globals module~modgvec_sol_var_mhd3d->module~modgvec_globals module~modgvec_c_sol_var MODgvec_c_sol_var module~modgvec_sol_var_mhd3d->module~modgvec_c_sol_var module~modgvec_c_hmap->module~modgvec_globals module~modgvec_c_sol_var->module~modgvec_globals module~modgvec_fbase->module~modgvec_globals module~modgvec_hmap_axisnb->module~modgvec_globals module~modgvec_hmap_axisnb->module~modgvec_c_hmap module~modgvec_hmap_axisnb->module~modgvec_fbase module~modgvec_hmap_axisnb->module~modgvec_io_netcdf module~modgvec_hmap_cyl->module~modgvec_globals module~modgvec_hmap_cyl->module~modgvec_c_hmap module~modgvec_hmap_frenet->module~modgvec_globals module~modgvec_hmap_frenet->module~modgvec_c_hmap module~modgvec_hmap_knot->module~modgvec_globals module~modgvec_hmap_knot->module~modgvec_c_hmap module~modgvec_hmap_rz->module~modgvec_globals module~modgvec_hmap_rz->module~modgvec_c_hmap module~modgvec_io_netcdf->module~modgvec_globals module~modgvec_sbase->module~modgvec_globals module~modgvec_sbase->module~modgvec_sgrid module~sll_m_bsplines sll_m_bsplines module~modgvec_sbase->module~sll_m_bsplines module~sll_m_spline_interpolator_1d sll_m_spline_interpolator_1d module~modgvec_sbase->module~sll_m_spline_interpolator_1d module~sll_m_spline_matrix sll_m_spline_matrix module~modgvec_sbase->module~sll_m_spline_matrix module~sll_m_assert sll_m_assert module~sll_m_bsplines->module~sll_m_assert module~sll_m_bsplines_base sll_m_bsplines_base module~sll_m_bsplines->module~sll_m_bsplines_base module~sll_m_bsplines_non_uniform sll_m_bsplines_non_uniform module~sll_m_bsplines->module~sll_m_bsplines_non_uniform module~sll_m_bsplines_uniform sll_m_bsplines_uniform module~sll_m_bsplines->module~sll_m_bsplines_uniform module~sll_m_errors sll_m_errors module~sll_m_bsplines->module~sll_m_errors module~sll_m_working_precision sll_m_working_precision module~sll_m_bsplines->module~sll_m_working_precision module~sll_m_spline_interpolator_1d->module~sll_m_spline_matrix module~sll_m_spline_interpolator_1d->module~sll_m_assert module~sll_m_boundary_condition_descriptors sll_m_boundary_condition_descriptors module~sll_m_spline_interpolator_1d->module~sll_m_boundary_condition_descriptors module~sll_m_spline_interpolator_1d->module~sll_m_bsplines_base module~sll_m_spline_interpolator_1d->module~sll_m_errors module~sll_m_spline_1d sll_m_spline_1d module~sll_m_spline_interpolator_1d->module~sll_m_spline_1d module~sll_m_spline_interpolator_1d->module~sll_m_working_precision module~sll_m_spline_matrix->module~sll_m_errors module~sll_m_spline_matrix_banded sll_m_spline_matrix_banded module~sll_m_spline_matrix->module~sll_m_spline_matrix_banded module~sll_m_spline_matrix_base sll_m_spline_matrix_base module~sll_m_spline_matrix->module~sll_m_spline_matrix_base module~sll_m_spline_matrix_dense sll_m_spline_matrix_dense module~sll_m_spline_matrix->module~sll_m_spline_matrix_dense module~sll_m_spline_matrix->module~sll_m_working_precision module~sll_m_boundary_condition_descriptors->module~sll_m_working_precision module~sll_m_bsplines_base->module~sll_m_assert module~sll_m_bsplines_base->module~sll_m_working_precision module~sll_m_bsplines_non_uniform->module~sll_m_assert module~sll_m_bsplines_non_uniform->module~sll_m_bsplines_base module~sll_m_bsplines_non_uniform->module~sll_m_working_precision module~sll_m_bsplines_uniform->module~sll_m_assert module~sll_m_bsplines_uniform->module~sll_m_bsplines_base module~sll_m_bsplines_uniform->module~sll_m_errors module~sll_m_bsplines_uniform->module~sll_m_working_precision module~sll_m_errors->iso_fortran_env module~sll_m_spline_1d->module~sll_m_assert module~sll_m_spline_1d->module~sll_m_bsplines_base module~sll_m_spline_1d->module~sll_m_working_precision module~sll_m_spline_matrix_banded->iso_fortran_env module~sll_m_spline_matrix_banded->module~sll_m_assert module~sll_m_spline_matrix_banded->module~sll_m_errors module~sll_m_spline_matrix_banded->module~sll_m_spline_matrix_base module~sll_m_spline_matrix_banded->module~sll_m_working_precision module~sll_m_spline_matrix_base->module~sll_m_working_precision module~sll_m_spline_matrix_dense->iso_fortran_env module~sll_m_spline_matrix_dense->module~sll_m_assert module~sll_m_spline_matrix_dense->module~sll_m_errors module~sll_m_spline_matrix_dense->module~sll_m_spline_matrix_base module~sll_m_spline_matrix_dense->module~sll_m_working_precision

Used by

  • module~~modgvec_mhd3d_vars~~UsedByGraph module~modgvec_mhd3d_vars MODgvec_MHD3D_Vars proc~addboundaryperturbation AddBoundaryPerturbation proc~addboundaryperturbation->module~modgvec_mhd3d_vars proc~analyze Analyze proc~analyze->module~modgvec_mhd3d_vars proc~applybc_fstrong ApplyBC_Fstrong proc~applybc_fstrong->module~modgvec_mhd3d_vars proc~buildprecond BuildPrecond proc~buildprecond->module~modgvec_mhd3d_vars proc~evalaux EvalAux proc~evalaux->module~modgvec_mhd3d_vars proc~evalenergy EvalEnergy proc~evalenergy->module~modgvec_mhd3d_vars proc~evalforce EvalForce proc~evalforce->module~modgvec_mhd3d_vars proc~evaluate_hmap evaluate_hmap proc~evaluate_hmap->module~modgvec_mhd3d_vars proc~evaluate_hmap_derivs evaluate_hmap_derivs proc~evaluate_hmap_derivs->module~modgvec_mhd3d_vars proc~evaluate_hmap_only evaluate_hmap_only proc~evaluate_hmap_only->module~modgvec_mhd3d_vars proc~evaluate_hmap_only_pw evaluate_hmap_only_pw proc~evaluate_hmap_only_pw->module~modgvec_mhd3d_vars proc~evaluate_hmap_pw evaluate_hmap_pw proc~evaluate_hmap_pw->module~modgvec_mhd3d_vars proc~evaluate_jac_h_derivs evaluate_jac_h_derivs proc~evaluate_jac_h_derivs->module~modgvec_mhd3d_vars proc~evaluate_jac_h_derivs_pw evaluate_jac_h_derivs_pw proc~evaluate_jac_h_derivs_pw->module~modgvec_mhd3d_vars proc~evaluate_metric_derivs evaluate_metric_derivs proc~evaluate_metric_derivs->module~modgvec_mhd3d_vars proc~evaluate_profile evaluate_profile proc~evaluate_profile->module~modgvec_mhd3d_vars proc~evaluate_rho2_profile evaluate_rho2_profile proc~evaluate_rho2_profile->module~modgvec_mhd3d_vars proc~finalizemhd3d t_functional_mhd3d%FinalizeMHD3D proc~finalizemhd3d->module~modgvec_mhd3d_vars proc~finalizemhd3d_evalfunc FinalizeMHD3D_EvalFunc proc~finalizemhd3d_evalfunc->module~modgvec_mhd3d_vars proc~find_pest_angles_2d find_pest_angles_2D proc~find_pest_angles_2d->module~modgvec_mhd3d_vars proc~get_boozer get_boozer proc~get_boozer->module~modgvec_mhd3d_vars proc~init Init proc~init->module~modgvec_mhd3d_vars proc~init_boozer init_boozer proc~init_boozer->module~modgvec_mhd3d_vars proc~init_la_from_solution Init_LA_from_Solution proc~init_la_from_solution->module~modgvec_mhd3d_vars proc~initaverageaxis InitAverageAxis proc~initaverageaxis->module~modgvec_mhd3d_vars proc~initializemhd3d_evalfunc InitializeMHD3D_evalFunc proc~initializemhd3d_evalfunc->module~modgvec_mhd3d_vars proc~initmhd3d t_functional_mhd3d%InitMHD3D proc~initmhd3d->module~modgvec_mhd3d_vars proc~initprofilesgp InitProfilesGP proc~initprofilesgp->module~modgvec_mhd3d_vars proc~initsolutionmhd3d t_functional_mhd3d%InitSolutionMHD3D proc~initsolutionmhd3d->module~modgvec_mhd3d_vars proc~initsolution~2 InitSolution proc~initsolution~2->module~modgvec_mhd3d_vars proc~minimize minimize proc~minimize->module~modgvec_mhd3d_vars proc~minimizemhd3d t_functional_mhd3d%MinimizeMHD3D proc~minimizemhd3d->module~modgvec_mhd3d_vars proc~restartfromstate RestartFromState proc~restartfromstate->module~modgvec_mhd3d_vars proc~select_base select_base proc~select_base->module~modgvec_mhd3d_vars proc~select_base_dofs select_base_dofs proc~select_base_dofs->module~modgvec_mhd3d_vars proc~writestatetoascii WriteStateToASCII proc~writestatetoascii->module~modgvec_mhd3d_vars

Variables

Type Visibility Attributes Name Initial
class(t_base), public, ALLOCATABLE, TARGET :: X1_base

container for base of variable X1

class(t_base), public, ALLOCATABLE, TARGET :: X2_base

container for base of variable X2

class(t_base), public, ALLOCATABLE, TARGET :: LA_base

container for base of variable lambda

type(t_sGrid), public :: sgrid

only one grid up to now

integer, public :: nDOF_X1

total number of degrees of freedom, sBase%nBase * fbase%mn_modes

integer, public :: nDOF_X2

total number of degrees of freedom, sBase%nBase * fbase%mn_modes

integer, public :: nDOF_LA

total number of degrees of freedom, sBase%nBase * fbase%mn_modes

integer, public, ALLOCATABLE :: X1_BC_type(:,:)

X1 var: BC type for axis and edge for each mode (1:2,1:modes) (1=axis,2=edge)

integer, public, ALLOCATABLE :: X2_BC_type(:,:)

X2 var: BC type for axis and edge for each mode (1:2,1:modes) (1=axis,2=edge)

integer, public, ALLOCATABLE :: LA_BC_type(:,:)

LA var: BC type for axis and edge for each mode (1:2,1:modes) (1=axis,2=edge)

class(c_hmap), public, ALLOCATABLE :: hmap

type containing subroutines for evaluating the map h (Omega_p x S^1) --> Omega

class(c_hmap_auxvar), public, ALLOCATABLE :: hmap_auxvar(:)

auxiliary variables for hmap

integer, public :: which_init

select initialization. 0: only using input parameter, 1: using a VMEC equilibrium

integer, public :: which_hmap
logical, public :: init_fromBCOnly

default=TRUE, for VMEC only, if set false: initial mapping is interpolated for s=0..1

logical, public :: init_with_profile_pressure

default=FALSE, if True, overwrite profile from VMEC ini using profile from parameterfile

logical, public :: init_with_profile_iota

default=FALSE, if True, overwrite profile from VMEC ini using profile from parameterfile

logical, public :: init_average_axis

default=FALSE, if true, use outer boundary to estimate axis position (center of closed line)

logical, public :: boundary_perturb

default=FALSE, if true, mapping is perturbed with a given modal perturbation of the boundary (X1pert_b,X2pert_b)

integer, public :: boundary_perturb_type
integer, public, parameter :: BLEND_LEGACY = 0

types of blending functions for boundary_perturb_type

integer, public, parameter :: BLEND_COSM = 1

types of blending functions for boundary_perturb_type

real(kind=wp), public :: boundary_perturb_depth

depth of boundary perturbation

real(kind=wp), public :: average_axis_move(2)

used if init_average_axis=True to additionally move axis in X1,X2

integer, public :: init_BC

active if init_fromBC_only=T: -1: keep vmec axis and boundary (default), 0: keep vmec boundary, overwrite axis, 1: keep vmec axis, overwrite boundary, 2: overwrite axis and boundary

integer, public :: getBoundaryFromFile

-1: off, 1: read from specific netcdf file

logical, public :: init_LA

false: lambda=0 at initialization, true: lambda is computed from initial mapping

integer, public :: PrecondType
integer, public :: MinimizerType

which mimimizer to use: 0: gradient descent (default) , 10: accelerated gradient descent

integer, public :: maxIter

maximum iteration count for minimization

integer, public :: outputIter

number of iterations after which output files are written

integer, public :: logIter

number of iterations after which a screen log is written

integer, public :: nlogScreen

number of log outputs after a screen output is written

real(kind=wp), public :: minimize_tol

absolute tolerance for minimization of functional

real(kind=wp), public :: start_dt

starting time step, is adapted during iteration

real(kind=wp), public :: dW_allowed

for minimizer, accept step if dW<dW_allowed*W_MHD(iter=0) default +10e-10

logical, public :: DoCheckDistance

TRUE: check distance between solutions of two log output states (default: false)

logical, public :: DoCheckAxis
real(kind=wp), public :: Phi_edge

toroidal flux at the last flux surface of the domain

real(kind=wp), public :: mu_0

permeability

real(kind=wp), public :: gamm

isentropic exponent, if gamma /= 0 pres ~ mass profile

real(kind=wp), public :: sgammM1

=1/(gamm-1)

real(kind=wp), public, ALLOCATABLE :: X1_b(:)

fourier modes of the edge boundary for X1

real(kind=wp), public, ALLOCATABLE :: X2_b(:)

fourier modes of the edge boundary for X2

real(kind=wp), public, ALLOCATABLE :: LA_b(:)

fourier modes of the edge boundary for LA

real(kind=wp), public, ALLOCATABLE :: X1_a(:)

fourier modes of the axis boundary for X1

real(kind=wp), public, ALLOCATABLE :: X2_a(:)

fourier modes of the axis boundary for X2

real(kind=wp), public, ALLOCATABLE :: X1pert_b(:)

fourier modes of the boundary perturbation for X1 (if boundary_perturb=T)

real(kind=wp), public, ALLOCATABLE :: X2pert_b(:)

fourier modes of the boundary perturbation for X2 (if boundary_perturb=T)

class(t_boundaryFromFile), public, ALLOCATABLE :: BFF

class for reading a boundary from file

class(c_rProfile), public, ALLOCATABLE :: iota_profile
class(c_rProfile), public, ALLOCATABLE :: pres_profile
class(c_rProfile), public, ALLOCATABLE :: Phi_profile
class(c_rProfile), public, ALLOCATABLE :: chi_profile