|  | SPEC 3.20
    Stepped Pressure Equilibrium Code | 
Defines input namelists and global variables, and opens some output files. More...
| Data Types | |
| type | typedefns::subgrid | 
| used for quantities which have different resolutions in different volumes, e.g. the vector potential  More... | |
| type | typedefns::matrixlu | 
| type | typedefns::derivative | 
| \({\rm d}\mathbf{B}/{\rm d}\mathbf{X}\) (?)  More... | |
| Modules | |
| module | constants | 
| some constants used throughout the code | |
| module | numerical | 
| platform-dependant numerical resolution | |
| module | fileunits | 
| central definition of file units to avoid conflicts | |
| module | cputiming | 
| timing variables | |
| module | typedefns | 
| type definitions for custom datatypes | |
| module | allglobal | 
| global variable storage used as "workspace" throughout the code | |
| module | fftw_interface | 
| Interface to FFTW library. | |
| Functions/Subroutines | |
| subroutine | fileunits::mute (action) | 
| subroutine | allglobal::build_vector_potential (lvol, iocons, aderiv) | 
| subroutine | allglobal::set_mpi_comm (comm) | 
| pure character(len=1000) function | allglobal::get_hidden (ext) | 
| subroutine | allglobal::read_inputlists_from_file () | 
| subroutine | allglobal::write_spec_namelist () | 
| subroutine | allglobal::check_inputs () | 
| subroutine | allglobal::broadcast_inputs | 
| subroutine | allglobal::wrtend | 
| Write the restart file ext.sp.end. | |
| subroutine | allglobal::ismyvolume (vvol) | 
| Check if volume vvol is associated to the corresponding MPI node.  More... | |
| subroutine | allglobal::whichcpuid (vvol, cpu_id) | 
| Returns which MPI node is associated to a given volume. | |
| Variables | |
| real, parameter | constants::zero = 0.0 | 
| 0 | |
| real, parameter | constants::one = 1.0 | 
| 1 | |
| real, parameter | constants::two = 2.0 | 
| 2 | |
| real, parameter | constants::three = 3.0 | 
| 3 | |
| real, parameter | constants::four = 4.0 | 
| 4 | |
| real, parameter | constants::five = 5.0 | 
| 5 | |
| real, parameter | constants::six = 6.0 | 
| 6 | |
| real, parameter | constants::seven = 7.0 | 
| 7 | |
| real, parameter | constants::eight = 8.0 | 
| 8 | |
| real, parameter | constants::nine = 9.0 | 
| 9 | |
| real, parameter | constants::ten = 10.0 | 
| 10 | |
| real, parameter | constants::eleven = 11.0 | 
| 11 | |
| real, parameter | constants::twelve = 12.0 | 
| 12 | |
| real, parameter | constants::hundred = 100.0 | 
| 100 | |
| real, parameter | constants::thousand = 1000.0 | 
| 1000 | |
| real, parameter | constants::half = one / two | 
| 1/2 | |
| real, parameter | constants::third = one / three | 
| 1/3 | |
| real, parameter | constants::quart = one / four | 
| 1/4 | |
| real, parameter | constants::fifth = one / five | 
| 1/5 | |
| real, parameter | constants::sixth = one / six | 
| 1/6 | |
| real, parameter | constants::pi2 = 6.28318530717958623 | 
| \(2\pi\) | |
| real, parameter | constants::pi = pi2 / two | 
| \(\pi\) | |
| real, parameter | constants::mu0 = 2.0E-07 * pi2 | 
| \(4\pi\cdot10^{-7}\) | |
| real, parameter | constants::goldenmean = 1.618033988749895 | 
| golden mean = \(( 1 + \sqrt 5 ) / 2\) ; | |
| real, parameter | constants::version = 3.23 | 
| version of SPEC | |
| real, parameter | numerical::machprec = 1.11e-16 | 
| machine precision: 0.5*epsilon(one) for 64 bit double precision | |
| real, parameter | numerical::vsmall = 100*machprec | 
| very small number | |
| real, parameter | numerical::small = 10000*machprec | 
| small number | |
| real, parameter | numerical::sqrtmachprec = sqrt(machprec) | 
| square root of machine precision | |
| real, parameter | numerical::logtolerance = 1.0e-32 | 
| this is used to avoid taking alog10(zero); see e.g. dforce; | |
| integer | fileunits::iunit = 10 | 
| input; used in global/readin:ext.sp, global/wrtend:ext.sp.end | |
| integer | fileunits::ounit = 6 | 
| screen output; | |
| integer | fileunits::gunit = 13 | 
| wall geometry; used in wa00aa | |
| integer | fileunits::aunit = 11 | 
| vector potential; used in ra00aa:.ext.AtAzmn; | |
| integer | fileunits::dunit = 12 | 
| derivative matrix; used in newton:.ext.GF; | |
| integer | fileunits::hunit = 14 | 
| eigenvalues of Hessian; under re-construction; | |
| integer | fileunits::munit = 14 | 
| matrix elements of Hessian; | |
| integer | fileunits::lunit = 20 | 
| local unit; used in lunit+myid: pp00aa:.ext.poincare,.ext.transform; | |
| integer | fileunits::vunit = 15 | 
| for examination of adaptive quadrature; used in casing:.ext.vcint; | |
| real | cputiming::tmanual = 0.0 | 
| real | cputiming::manualt = 0.0 | 
| real | cputiming::trzaxis = 0.0 | 
| real | cputiming::rzaxist = 0.0 | 
| real | cputiming::tpackxi = 0.0 | 
| real | cputiming::packxit = 0.0 | 
| real | cputiming::tvolume = 0.0 | 
| real | cputiming::volumet = 0.0 | 
| real | cputiming::tcoords = 0.0 | 
| real | cputiming::coordst = 0.0 | 
| real | cputiming::tbasefn = 0.0 | 
| real | cputiming::basefnt = 0.0 | 
| real | cputiming::tmemory = 0.0 | 
| real | cputiming::memoryt = 0.0 | 
| real | cputiming::tmetrix = 0.0 | 
| real | cputiming::metrixt = 0.0 | 
| real | cputiming::tma00aa = 0.0 | 
| real | cputiming::ma00aat = 0.0 | 
| real | cputiming::tmatrix = 0.0 | 
| real | cputiming::matrixt = 0.0 | 
| real | cputiming::tspsmat = 0.0 | 
| real | cputiming::spsmatt = 0.0 | 
| real | cputiming::tspsint = 0.0 | 
| real | cputiming::spsintt = 0.0 | 
| real | cputiming::tmp00ac = 0.0 | 
| real | cputiming::mp00act = 0.0 | 
| real | cputiming::tma02aa = 0.0 | 
| real | cputiming::ma02aat = 0.0 | 
| real | cputiming::tpackab = 0.0 | 
| real | cputiming::packabt = 0.0 | 
| real | cputiming::ttr00ab = 0.0 | 
| real | cputiming::tr00abt = 0.0 | 
| real | cputiming::tcurent = 0.0 | 
| real | cputiming::curentt = 0.0 | 
| real | cputiming::tdf00ab = 0.0 | 
| real | cputiming::df00abt = 0.0 | 
| real | cputiming::tlforce = 0.0 | 
| real | cputiming::lforcet = 0.0 | 
| real | cputiming::tintghs = 0.0 | 
| real | cputiming::intghst = 0.0 | 
| real | cputiming::tmtrxhs = 0.0 | 
| real | cputiming::mtrxhst = 0.0 | 
| real | cputiming::tlbpol = 0.0 | 
| real | cputiming::lbpolt = 0.0 | 
| real | cputiming::tbrcast = 0.0 | 
| real | cputiming::brcastt = 0.0 | 
| real | cputiming::tdfp100 = 0.0 | 
| real | cputiming::dfp100t = 0.0 | 
| real | cputiming::tdfp200 = 0.0 | 
| real | cputiming::dfp200t = 0.0 | 
| real | cputiming::tdforce = 0.0 | 
| real | cputiming::dforcet = 0.0 | 
| real | cputiming::tnewton = 0.0 | 
| real | cputiming::newtont = 0.0 | 
| real | cputiming::tcasing = 0.0 | 
| real | cputiming::casingt = 0.0 | 
| real | cputiming::tbnorml = 0.0 | 
| real | cputiming::bnormlt = 0.0 | 
| real | cputiming::tjo00aa = 0.0 | 
| real | cputiming::jo00aat = 0.0 | 
| real | cputiming::tpp00aa = 0.0 | 
| real | cputiming::pp00aat = 0.0 | 
| real | cputiming::tpp00ab = 0.0 | 
| real | cputiming::pp00abt = 0.0 | 
| real | cputiming::tbfield = 0.0 | 
| real | cputiming::bfieldt = 0.0 | 
| real | cputiming::tstzxyz = 0.0 | 
| real | cputiming::stzxyzt = 0.0 | 
| real | cputiming::thesian = 0.0 | 
| real | cputiming::hesiant = 0.0 | 
| real | cputiming::tra00aa = 0.0 | 
| real | cputiming::ra00aat = 0.0 | 
| real | cputiming::tnumrec = 0.0 | 
| real | cputiming::numrect = 0.0 | 
| real | cputiming::tdcuhre = 0.0 | 
| real | cputiming::dcuhret = 0.0 | 
| real | cputiming::tminpack = 0.0 | 
| real | cputiming::minpackt = 0.0 | 
| real | cputiming::tiqpack = 0.0 | 
| real | cputiming::iqpackt = 0.0 | 
| real | cputiming::trksuite = 0.0 | 
| real | cputiming::rksuitet = 0.0 | 
| real | cputiming::ti1mach = 0.0 | 
| real | cputiming::i1macht = 0.0 | 
| real | cputiming::td1mach = 0.0 | 
| real | cputiming::d1macht = 0.0 | 
| real | cputiming::tilut = 0.0 | 
| real | cputiming::ilutt = 0.0 | 
| real | cputiming::titers = 0.0 | 
| real | cputiming::iterst = 0.0 | 
| real | cputiming::tsphdf5 = 0.0 | 
| real | cputiming::sphdf5t = 0.0 | 
| real | cputiming::tpreset = 0.0 | 
| real | cputiming::presett = 0.0 | 
| real | cputiming::tglobal = 0.0 | 
| real | cputiming::globalt = 0.0 | 
| real | cputiming::txspech = 0.0 | 
| real | cputiming::xspecht = 0.0 | 
| real | cputiming::tinputlist = 0.0 | 
| real | cputiming::inputlistt = 0.0 | 
| real | cputiming::treadin = 0.0 | 
| real | cputiming::twrtend = 0.0 | 
| integer | allglobal::myid | 
| MPI rank of current CPU. | |
| integer | allglobal::ncpu | 
| number of MPI tasks | |
| integer | allglobal::ismyvolumevalue | 
| flag to indicate if a CPU is operating on its assigned volume | |
| real | allglobal::cpus | 
| initial time | |
| integer | allglobal::mpi_comm_spec | 
| SPEC MPI communicator. | |
| logical | allglobal::skip_write = .false. | 
| real | allglobal::pi2nfp | 
| pi2/nfp ; assigned in readin; | |
| real | allglobal::pi2pi2nfp | 
| pi2*pi2/nfp | |
| real | allglobal::pi2pi2nfphalf | 
| 2*pi*pi/nfp | |
| real | allglobal::pi2pi2nfpquart | 
| pi*pi/nfp | |
| character(len=1000) | allglobal::ext | 
| real | allglobal::forceerr | 
| total force-imbalance | |
| real | allglobal::energy | 
| MHD energy. | |
| real | allglobal::bnserr | 
| (in freeboundary) error in self-consistency of field on plasma boundary (Picard iteration) | |
| real | allglobal::betatotal = 0.0 | 
| Beta, averaged over entire domain. | |
| real, dimension(:), allocatable | allglobal::ipdt | 
| real, dimension(:,:), allocatable | allglobal::ipdtdpf | 
| Toroidal pressure-driven current. | |
| integer | allglobal::mvol | 
| total number of volumes (including the vacuum region in the case of free-boundary calculations) | |
| real | allglobal::total_pflux | 
| logical | allglobal::yesstellsym | 
| internal shorthand copies of Istellsym, which is an integer input; | |
| logical | allglobal::notstellsym | 
| internal shorthand copies of Istellsym, which is an integer input; | |
| logical | allglobal::yesmatrixfree | 
| logical | allglobal::notmatrixfree | 
| to use matrix-free method or not | |
| real, dimension(:,:), allocatable | allglobal::cheby | 
| local workspace for evaluation of Chebychev polynomials | |
| real, dimension(:,:,:), allocatable | allglobal::zernike | 
| local workspace for evaluation of Zernike polynomials | |
| real, dimension(:,:,:), allocatable | allglobal::tt | 
| derivatives of Chebyshev polynomials at the inner and outer interfaces; | |
| real, dimension(:,:,:,:), allocatable | allglobal::rtt | 
| derivatives of Zernike polynomials at the inner and outer interfaces; | |
| real, dimension(:,:), allocatable | allglobal::rtm | 
| \(r^m\) term of Zernike polynomials at the origin | |
| real, dimension(:), allocatable | allglobal::zernikedof | 
| Zernike degree of freedom for each \(m\). | |
| integer | allglobal::mne | 
| enhanced resolution for metric elements | |
| integer, dimension(:), allocatable | allglobal::ime | 
| enhanced poloidal mode numbers for metric elements | |
| integer, dimension(:), allocatable | allglobal::ine | 
| enhanced toroidal mode numbers for metric elements | |
| integer | allglobal::mns | 
| enhanced resolution for straight field line transformation | |
| integer, dimension(:), allocatable | allglobal::ims | 
| enhanced poloidal mode numbers for straight field line transformation | |
| integer, dimension(:), allocatable | allglobal::ins | 
| enhanced toroidal mode numbers for straight field line transformation | |
| integer | allglobal::lmpol | 
| what is this? | |
| integer | allglobal::lntor | 
| what is this? | |
| integer | allglobal::smpol | 
| what is this? | |
| integer | allglobal::sntor | 
| what is this? | |
| real | allglobal::xoffset = 1.0 | 
| used to normalize NAG routines (which ones exacly where?) | |
| logical, dimension(:), allocatable | allglobal::imagneticok | 
| used to indicate if Beltrami fields have been correctly constructed; | |
| logical | allglobal::iconstraintok | 
| Used to break iteration loops of slaves in the global constraint minimization. | |
| real, dimension(:,:), allocatable | allglobal::beltramierror | 
| to store the integral of |curlB-mu*B| computed by jo00aa; | |
| integer | allglobal::mn | 
| total number of Fourier harmonics for coordinates/fields; calculated from Mpol, Ntor in readin() | |
| integer, dimension(:), allocatable | allglobal::im | 
| poloidal mode numbers for Fourier representation | |
| integer, dimension(:), allocatable | allglobal::in | 
| toroidal mode numbers for Fourier representation | |
| real, dimension(:), allocatable | allglobal::halfmm | 
| I saw this already somewhere... | |
| real, dimension(:), allocatable | allglobal::regumm | 
| I saw this already somewhere... | |
| real | allglobal::rscale | 
| no idea | |
| real, dimension(:,:), allocatable | allglobal::psifactor | 
| no idea | |
| real, dimension(:,:), allocatable | allglobal::inifactor | 
| no idea | |
| real, dimension(:), allocatable | allglobal::bbweight | 
| weight on force-imbalance harmonics; used in dforce() | |
| real, dimension(:), allocatable | allglobal::mmpp | 
| spectral condensation factors | |
| real, dimension(:,:), allocatable | allglobal::irbc | 
| cosine R harmonics of interface surface geometry; stellarator symmetric | |
| real, dimension(:,:), allocatable | allglobal::izbs | 
| sine Z harmonics of interface surface geometry; stellarator symmetric | |
| real, dimension(:,:), allocatable | allglobal::irbs | 
| sine R harmonics of interface surface geometry; non-stellarator symmetric | |
| real, dimension(:,:), allocatable | allglobal::izbc | 
| cosine Z harmonics of interface surface geometry; non-stellarator symmetric | |
| real, dimension(:,:), allocatable | allglobal::drbc | 
| cosine R harmonics of interface surface geometry; stellarator symmetric; linear deformation | |
| real, dimension(:,:), allocatable | allglobal::dzbs | 
| sine Z harmonics of interface surface geometry; stellarator symmetric; linear deformation | |
| real, dimension(:,:), allocatable | allglobal::drbs | 
| sine R harmonics of interface surface geometry; non-stellarator symmetric; linear deformation | |
| real, dimension(:,:), allocatable | allglobal::dzbc | 
| cosine Z harmonics of interface surface geometry; non-stellarator symmetric; linear deformation | |
| real, dimension(:,:), allocatable | allglobal::irij | 
| interface surface geometry; real space | |
| real, dimension(:,:), allocatable | allglobal::izij | 
| interface surface geometry; real space | |
| real, dimension(:,:), allocatable | allglobal::drij | 
| interface surface geometry; real space | |
| real, dimension(:,:), allocatable | allglobal::dzij | 
| interface surface geometry; real space | |
| real, dimension(:,:), allocatable | allglobal::trij | 
| interface surface geometry; real space | |
| real, dimension(:,:), allocatable | allglobal::tzij | 
| interface surface geometry; real space | |
| real, dimension(:), allocatable | allglobal::ivns | 
| sine harmonics of vacuum normal magnetic field on interfaces; stellarator symmetric | |
| real, dimension(:), allocatable | allglobal::ibns | 
| sine harmonics of plasma normal magnetic field on interfaces; stellarator symmetric | |
| real, dimension(:), allocatable | allglobal::ivnc | 
| cosine harmonics of vacuum normal magnetic field on interfaces; non-stellarator symmetric | |
| real, dimension(:), allocatable | allglobal::ibnc | 
| cosine harmonics of plasma normal magnetic field on interfaces; non-stellarator symmetric | |
| real, dimension(:), allocatable | allglobal::lrbc | 
| local workspace | |
| real, dimension(:), allocatable | allglobal::lzbs | 
| local workspace | |
| real, dimension(:), allocatable | allglobal::lrbs | 
| local workspace | |
| real, dimension(:), allocatable | allglobal::lzbc | 
| local workspace | |
| integer | allglobal::num_modes | 
| integer, dimension(:), allocatable | allglobal::mmrzrz | 
| integer, dimension(:), allocatable | allglobal::nnrzrz | 
| real, dimension(:,:,:), allocatable | allglobal::allrzrz | 
| integer | allglobal::nt | 
| discrete resolution along \(\theta\) of grid in real space | |
| integer | allglobal::nz | 
| discrete resolution along \(\zeta\) of grid in real space | |
| integer | allglobal::ntz | 
| discrete resolution; Ntz=Nt*Nz shorthand | |
| integer | allglobal::hnt | 
| discrete resolution; Ntz=Nt*Nz shorthand | |
| integer | allglobal::hnz | 
| discrete resolution; Ntz=Nt*Nz shorthand | |
| real | allglobal::sontz | 
| one / sqrt (one*Ntz); shorthand | |
| real, dimension(:,:,:), allocatable | allglobal::rij | 
| real-space grid; R | |
| real, dimension(:,:,:), allocatable | allglobal::zij | 
| real-space grid; Z | |
| real, dimension(:,:,:), allocatable | allglobal::xij | 
| what is this? | |
| real, dimension(:,:,:), allocatable | allglobal::yij | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::sg | 
| real-space grid; jacobian and its derivatives | |
| real, dimension(:,:,:,:), allocatable | allglobal::guvij | 
| real-space grid; metric elements | |
| real, dimension(:,:,:), allocatable | allglobal::gvuij | 
| real-space grid; metric elements (?); 10 Dec 15; | |
| real, dimension(:,:,:,:), allocatable | allglobal::guvijsave | 
| what is this? | |
| integer, dimension(:,:), allocatable | allglobal::ki | 
| identification of Fourier modes | |
| integer, dimension(:,:,:), allocatable | allglobal::kijs | 
| identification of Fourier modes | |
| integer, dimension(:,:,:), allocatable | allglobal::kija | 
| identification of Fourier modes | |
| integer, dimension(:), allocatable | allglobal::iotakkii | 
| identification of Fourier modes | |
| integer, dimension(:,:), allocatable | allglobal::iotaksub | 
| identification of Fourier modes | |
| integer, dimension(:,:), allocatable | allglobal::iotakadd | 
| identification of Fourier modes | |
| integer, dimension(:,:), allocatable | allglobal::iotaksgn | 
| identification of Fourier modes | |
| real, dimension(:), allocatable | allglobal::efmn | 
| Fourier harmonics; dummy workspace. | |
| real, dimension(:), allocatable | allglobal::ofmn | 
| Fourier harmonics; dummy workspace. | |
| real, dimension(:), allocatable | allglobal::cfmn | 
| Fourier harmonics; dummy workspace. | |
| real, dimension(:), allocatable | allglobal::sfmn | 
| Fourier harmonics; dummy workspace. | |
| real, dimension(:), allocatable | allglobal::evmn | 
| Fourier harmonics; dummy workspace. | |
| real, dimension(:), allocatable | allglobal::odmn | 
| Fourier harmonics; dummy workspace. | |
| real, dimension(:), allocatable | allglobal::comn | 
| Fourier harmonics; dummy workspace. | |
| real, dimension(:), allocatable | allglobal::simn | 
| Fourier harmonics; dummy workspace. | |
| real, dimension(:), allocatable | allglobal::ijreal | 
| what is this ? | |
| real, dimension(:), allocatable | allglobal::ijimag | 
| what is this ? | |
| real, dimension(:), allocatable | allglobal::jireal | 
| what is this ? | |
| real, dimension(:), allocatable | allglobal::jiimag | 
| what is this ? | |
| real, dimension(:), allocatable | allglobal::jkreal | 
| what is this ? | |
| real, dimension(:), allocatable | allglobal::jkimag | 
| what is this ? | |
| real, dimension(:), allocatable | allglobal::kjreal | 
| what is this ? | |
| real, dimension(:), allocatable | allglobal::kjimag | 
| what is this ? | |
| real, dimension(:,:,:), allocatable | allglobal::bsupumn | 
| tangential field on interfaces; \(\theta\)-component; required for virtual casing construction of field; 11 Oct 12 | |
| real, dimension(:,:,:), allocatable | allglobal::bsupvmn | 
| tangential field on interfaces; \(\zeta\) -component; required for virtual casing construction of field; 11 Oct 12 | |
| real, dimension(:,:), allocatable | allglobal::goomne | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::goomno | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::gssmne | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::gssmno | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::gstmne | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::gstmno | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::gszmne | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::gszmno | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::gttmne | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::gttmno | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::gtzmne | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::gtzmno | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::gzzmne | 
| described in preset() | |
| real, dimension(:,:), allocatable | allglobal::gzzmno | 
| described in preset() | |
| real, dimension(:,:,:,:), allocatable | allglobal::dtoocc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::dtoocs | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::dtoosc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::dtooss | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ttsscc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ttsscs | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ttsssc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ttssss | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::tdstcc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::tdstcs | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::tdstsc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::tdstss | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::tdszcc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::tdszcs | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::tdszsc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::tdszss | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ddttcc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ddttcs | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ddttsc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ddttss | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ddtzcc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ddtzcs | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ddtzsc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ddtzss | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ddzzcc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ddzzcs | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ddzzsc | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:,:,:), allocatable | allglobal::ddzzss | 
| volume-integrated Chebychev-metrics; see matrix() | |
| real, dimension(:,:), allocatable | allglobal::tsc | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::tss | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::dtc | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::dts | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::dzc | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::dzs | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::ttc | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::tzc | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::tts | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::tzs | 
| what is this? | |
| real, dimension(:), allocatable | allglobal::dtflux | 
| \(\delta \psi_{toroidal}\) in each annulus | |
| real, dimension(:), allocatable | allglobal::dpflux | 
| \(\delta \psi_{poloidal}\) in each annulus | |
| real, dimension(:), allocatable | allglobal::sweight | 
| minimum poloidal length constraint weight | |
| integer, dimension(:), allocatable | allglobal::nadof | 
| degrees of freedom in Beltrami fields in each annulus | |
| integer, dimension(:), allocatable | allglobal::nfielddof | 
| degrees of freedom in Beltrami fields in each annulus, field only, no Lagrange multipliers | |
| type(subgrid), dimension(:,:,:), allocatable | allglobal::ate | 
| magnetic vector potential cosine Fourier harmonics; stellarator-symmetric | |
| type(subgrid), dimension(:,:,:), allocatable | allglobal::aze | 
| magnetic vector potential cosine Fourier harmonics; stellarator-symmetric | |
| type(subgrid), dimension(:,:,:), allocatable | allglobal::ato | 
| magnetic vector potential sine Fourier harmonics; non-stellarator-symmetric | |
| type(subgrid), dimension(:,:,:), allocatable | allglobal::azo | 
| magnetic vector potential sine Fourier harmonics; non-stellarator-symmetric | |
| integer, dimension(:,:), allocatable | allglobal::lma | 
| Lagrange multipliers (?) | |
| integer, dimension(:,:), allocatable | allglobal::lmb | 
| Lagrange multipliers (?) | |
| integer, dimension(:,:), allocatable | allglobal::lmc | 
| Lagrange multipliers (?) | |
| integer, dimension(:,:), allocatable | allglobal::lmd | 
| Lagrange multipliers (?) | |
| integer, dimension(:,:), allocatable | allglobal::lme | 
| Lagrange multipliers (?) | |
| integer, dimension(:,:), allocatable | allglobal::lmf | 
| Lagrange multipliers (?) | |
| integer, dimension(:,:), allocatable | allglobal::lmg | 
| Lagrange multipliers (?) | |
| integer, dimension(:,:), allocatable | allglobal::lmh | 
| Lagrange multipliers (?) | |
| real, dimension(:,:), allocatable | allglobal::lmavalue | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::lmbvalue | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::lmcvalue | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::lmdvalue | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::lmevalue | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::lmfvalue | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::lmgvalue | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::lmhvalue | 
| what is this? | |
| integer, dimension(:,:), allocatable | allglobal::fso | 
| what is this? | |
| integer, dimension(:,:), allocatable | allglobal::fse | 
| what is this? | |
| logical | allglobal::lcoordinatesingularity | 
| set by LREGIONmacro; true if inside the innermost volume | |
| logical | allglobal::lplasmaregion | 
| set by LREGIONmacro; true if inside the plasma region | |
| logical | allglobal::lvacuumregion | 
| set by LREGIONmacro; true if inside the vacuum region | |
| logical | allglobal::lsavedguvij | 
| flag used in matrix free | |
| logical | allglobal::localconstraint | 
| what is this? | |
| real, dimension(:,:), allocatable | allglobal::dma | 
| energy and helicity matrices; quadratic forms | |
| real, dimension(:,:), allocatable | allglobal::dmb | 
| energy and helicity matrices; quadratic forms | |
| real, dimension(:,:), allocatable | allglobal::dmd | 
| energy and helicity matrices; quadratic forms | |
| real, dimension(:), allocatable | allglobal::dmas | 
| sparse version of dMA, data | |
| real, dimension(:), allocatable | allglobal::dmds | 
| sparse version of dMD, data | |
| integer, dimension(:), allocatable | allglobal::idmas | 
| sparse version of dMA and dMD, indices | |
| integer, dimension(:), allocatable | allglobal::jdmas | 
| sparse version of dMA and dMD, indices | |
| integer, dimension(:), allocatable | allglobal::ndmasmax | 
| number of elements for sparse matrices | |
| integer, dimension(:), allocatable | allglobal::ndmas | 
| number of elements for sparse matrices | |
| real, dimension(:), allocatable | allglobal::dmg | 
| what is this? | |
| real, dimension(:), allocatable | allglobal::adotx | 
| the matrix-vector product | |
| real, dimension(:), allocatable | allglobal::ddotx | 
| the matrix-vector product | |
| real, dimension(:,:), allocatable | allglobal::solution | 
| this is allocated in dforce; used in mp00ac and ma02aa; and is passed to packab | |
| real, dimension(:,:,:), allocatable | allglobal::gmreslastsolution | 
| used to store the last solution for restarting GMRES | |
| real, dimension(:), allocatable | allglobal::mbpsi | 
| matrix vector products | |
| logical | allglobal::liluprecond | 
| whether to use ILU preconditioner for GMRES | |
| real, dimension(:,:), allocatable | allglobal::beltramiinverse | 
| Beltrami inverse matrix. | |
| real, dimension(:,:,:), allocatable | allglobal::diotadxup | 
| measured rotational transform on inner/outer interfaces for each volume; d(transform)/dx; (see dforce) | |
| real, dimension(:,:,:), allocatable | allglobal::ditgpdxtp | 
| measured toroidal and poloidal current on inner/outer interfaces for each volume; d(Itor,Gpol)/dx; (see dforce) | |
| real, dimension(:,:,:,:), allocatable | allglobal::glambda | 
| save initial guesses for iterative calculation of rotational-transform | |
| integer | allglobal::lmns | 
| number of independent degrees of freedom in angle transformation; | |
| real, dimension(:,:,:), allocatable | allglobal::dlambdaout | 
| real, dimension(:,:,:), allocatable | allglobal::bemn | 
| force vector; stellarator-symmetric (?) | |
| real, dimension(:,:), allocatable | allglobal::iomn | 
| force vector; stellarator-symmetric (?) | |
| real, dimension(:,:,:), allocatable | allglobal::somn | 
| force vector; non-stellarator-symmetric (?) | |
| real, dimension(:,:,:), allocatable | allglobal::pomn | 
| force vector; non-stellarator-symmetric (?) | |
| real, dimension(:,:,:), allocatable | allglobal::bomn | 
| force vector; stellarator-symmetric (?) | |
| real, dimension(:,:), allocatable | allglobal::iemn | 
| force vector; stellarator-symmetric (?) | |
| real, dimension(:,:,:), allocatable | allglobal::semn | 
| force vector; non-stellarator-symmetric (?) | |
| real, dimension(:,:,:), allocatable | allglobal::pemn | 
| force vector; non-stellarator-symmetric (?) | |
| real, dimension(:), allocatable | allglobal::bbe | 
| force vector (?); stellarator-symmetric (?) | |
| real, dimension(:), allocatable | allglobal::iio | 
| force vector (?); stellarator-symmetric (?) | |
| real, dimension(:), allocatable | allglobal::bbo | 
| force vector (?); non-stellarator-symmetric (?) | |
| real, dimension(:), allocatable | allglobal::iie | 
| force vector (?); non-stellarator-symmetric (?) | |
| real, dimension(:,:,:), allocatable | allglobal::btemn | 
| covariant \(\theta\) cosine component of the tangential field on interfaces; stellarator-symmetric | |
| real, dimension(:,:,:), allocatable | allglobal::bzemn | 
| covariant \(\zeta\) cosine component of the tangential field on interfaces; stellarator-symmetric | |
| real, dimension(:,:,:), allocatable | allglobal::btomn | 
| covariant \(\theta\) sine component of the tangential field on interfaces; non-stellarator-symmetric | |
| real, dimension(:,:,:), allocatable | allglobal::bzomn | 
| covariant \(\zeta\) sine component of the tangential field on interfaces; non-stellarator-symmetric | |
| real, dimension(:,:), allocatable | allglobal::bloweremn | 
| covariant field for Hessian computation | |
| real, dimension(:,:), allocatable | allglobal::bloweromn | 
| covariant field for Hessian computation | |
| integer | allglobal::lgdof | 
| geometrical degrees of freedom associated with each interface | |
| integer | allglobal::ngdof | 
| total geometrical degrees of freedom | |
| real, dimension(:,:,:), allocatable | allglobal::dbbdrz | 
| derivative of magnetic field w.r.t. geometry (?) | |
| real, dimension(:,:), allocatable | allglobal::diidrz | 
| derivative of spectral constraints w.r.t. geometry (?) | |
| real, dimension(:,:,:,:,:), allocatable | allglobal::dffdrz | 
| derivatives of B^2 at the interfaces wrt geometry | |
| real, dimension(:,:,:,:), allocatable | allglobal::dbbdmp | 
| derivatives of B^2 at the interfaces wrt mu and dpflux | |
| real, dimension(:,:,:,:,:), allocatable | allglobal::hdffdrz | 
| derivatives of B^2 at the interfaces wrt geometry 2D Hessian; | |
| real, dimension(:,:,:,:,:), allocatable | allglobal::denergydrr | 
| derivatives of energy at the interfaces wrt geometry 3D Hessian; | |
| real, dimension(:,:,:,:,:), allocatable | allglobal::denergydrz | 
| derivatives of energy at the interfaces wrt geometry 3D Hessian; | |
| real, dimension(:,:,:,:,:), allocatable | allglobal::denergydzr | 
| derivatives of energy at the interfaces wrt geometry 3D Hessian; | |
| real, dimension(:,:,:,:,:), allocatable | allglobal::denergydzz | 
| derivatives of energy at the interfaces wrt geometry 3D Hessian; | |
| real, dimension(:,:,:,:,:), allocatable | allglobal::dmupfdx | 
| derivatives of mu and dpflux wrt geometry at constant interface transform | |
| logical | allglobal::lhessianallocated | 
| flag to indicate that force gradient matrix is allocated (?) | |
| real, dimension(:,:), allocatable | allglobal::hessian | 
| force gradient matrix (?) | |
| real, dimension(:,:), allocatable | allglobal::dessian | 
| derivative of force gradient matrix (?) | |
| logical | allglobal::lhessian2dallocated | 
| flag to indicate that 2D Hessian matrix is allocated (?) | |
| real, dimension(:,:), allocatable | allglobal::hessian2d | 
| Hessian 2D. | |
| real, dimension(:,:), allocatable | allglobal::dessian2d | 
| derivative Hessian 2D | |
| logical | allglobal::lhessian3dallocated | 
| flag to indicate that 2D Hessian matrix is allocated (?) | |
| real, dimension(:,:), allocatable | allglobal::hessian3d | 
| Hessian 3D. | |
| real, dimension(:,:), allocatable | allglobal::dessian3d | 
| derivative Hessian 3D | |
| real, dimension(:), allocatable | allglobal::force_final | 
| Final force on the interfaces [inface*mode]. | |
| real, dimension(:,:), allocatable | allglobal::cosi | 
| some precomputed cosines | |
| real, dimension(:,:), allocatable | allglobal::sini | 
| some precomputed sines | |
| real, dimension(:), allocatable | allglobal::gteta | 
| something related to \(\sqrt g\) and \(\theta\) ? | |
| real, dimension(:), allocatable | allglobal::gzeta | 
| something related to \(\sqrt g\) and \(\zeta\) ? | |
| real, dimension(:), allocatable | allglobal::ajk | 
| definition of coordinate axis | |
| real, dimension(:,:,:,:), allocatable | allglobal::dradr | 
| derivatives of coordinate axis | |
| real, dimension(:,:,:,:), allocatable | allglobal::dradz | 
| derivatives of coordinate axis | |
| real, dimension(:,:,:,:), allocatable | allglobal::dzadr | 
| derivatives of coordinate axis | |
| real, dimension(:,:,:,:), allocatable | allglobal::dzadz | 
| derivatives of coordinate axis | |
| real, dimension(:,:,:), allocatable | allglobal::drodr | 
| derivatives of coordinate axis | |
| real, dimension(:,:,:), allocatable | allglobal::drodz | 
| derivatives of coordinate axis | |
| real, dimension(:,:,:), allocatable | allglobal::dzodr | 
| derivatives of coordinate axis | |
| real, dimension(:,:,:), allocatable | allglobal::dzodz | 
| derivatives of coordinate axis | |
| integer, dimension(:,:), allocatable | allglobal::djkp | 
| for calculating cylindrical volume | |
| integer, dimension(:,:), allocatable | allglobal::djkm | 
| for calculating cylindrical volume | |
| real, dimension(:), allocatable | allglobal::lbbintegral | 
| B.B integral. | |
| real, dimension(:), allocatable | allglobal::labintegral | 
| A.B integral. | |
| real, dimension(:), allocatable | allglobal::vvolume | 
| volume integral of \(\sqrt g\); computed in volume | |
| real | allglobal::dvolume | 
| derivative of volume w.r.t. interface geometry | |
| integer | allglobal::ivol | 
| labels volume; some subroutines (called by NAG) are fixed argument list but require the volume label | |
| real | allglobal::gbzeta | 
| toroidal (contravariant) field; calculated in bfield; required to convert \(\dot \theta\) to \(B^\theta\), \(\dot s\) to \(B^s\) | |
| integer, dimension(:), allocatable | allglobal::iquad | 
| internal copy of Nquad | |
| real, dimension(:,:), allocatable | allglobal::gaussianweight | 
| weights for Gaussian quadrature | |
| real, dimension(:,:), allocatable | allglobal::gaussianabscissae | 
| abscissae for Gaussian quadrature | |
| logical | allglobal::lblinear | 
| controls selection of Beltrami field solver; depends on LBeltrami | |
| logical | allglobal::lbnewton | 
| controls selection of Beltrami field solver; depends on LBeltrami | |
| logical | allglobal::lbsequad | 
| controls selection of Beltrami field solver; depends on LBeltrami | |
| real, dimension(1:3) | allglobal::orzp | 
| used in mg00aa() to determine \((s,\theta,\zeta)\) given \((R,Z,\varphi)\) | |
| type(derivative) | allglobal::dbdx | 
| \({\rm d}\mathbf{B}/{\rm d}\mathbf{X}\) (?) | |
| integer | allglobal::globaljk | 
| labels position | |
| real, dimension(:,:), allocatable | allglobal::dxyz | 
| computational boundary; position | |
| real, dimension(:,:), allocatable | allglobal::nxyz | 
| computational boundary; normal | |
| real, dimension(:,:), allocatable | allglobal::jxyz | 
| plasma boundary; surface current | |
| real, dimension(:,:), allocatable | allglobal::pbxyz | 
| plasma boundary; position | |
| integer | allglobal::prevcstride | 
| previous virtual casing stride for casinggrid (only relevant when Lvcgrid=1) | |
| real | allglobal::virtualcasingfactor = -one / (four*pi) | 
| this agrees with diagno | |
| integer | allglobal::iberror | 
| for computing error in magnetic field | |
| integer | allglobal::nfreeboundaryiterations | 
| number of free-boundary iterations already performed | |
| integer, parameter | allglobal::node = 2 | 
| best to make this global for consistency between calling and called routines | |
| logical | allglobal::first_free_bound = .false. | 
| flag to indicate that this is the first free-boundary iteration | |
| type(c_ptr) | fftw_interface::planf | 
| FFTW-related (?) | |
| type(c_ptr) | fftw_interface::planb | 
| FFTW-related (?) | |
| complex(c_double_complex), dimension(:,:,:), allocatable | fftw_interface::cplxin | 
| FFTW-related (?) | |
| complex(c_double_complex), dimension(:,:,:), allocatable | fftw_interface::cplxout | 
| FFTW-related (?) | |
Defines input namelists and global variables, and opens some output files.
Note that all variables in namelist need to be broadcasted in readin.
Input geometry
\begin{eqnarray} R_l(\theta,\zeta)&=&\sum_{j}R_{j,l}\cos(m_j\theta-n_j\zeta), \\ Z_l(\theta,\zeta)&=&\sum_{j}Z_{j,l}\sin(m_j\theta-n_j\zeta). \end{eqnarray}
ext.sp file and come directly after the namelists described above. The required format is as follows: \begin{eqnarray} \begin{array}{ccccccccc} m_1 & n_1 & R_{1,0} & Z_{1,0} & R_{1,1} & Z_{1,1} & ... & R_{1,N} & Z_{1,N} \\ m_2 & n_2 & R_{2,0} & Z_{2,0} & R_{2,1} & Z_{2,1} & ... & R_{2,N} & Z_{2,N} \\ ... \\ m_j & n_j & R_{j,0} & Z_{j,0} & R_{j,1} & Z_{j,1} & ... & R_{j,N} & Z_{j,N} \\ ... \end{array} \end{eqnarray}
| type typedefns::subgrid | 
| type typedefns::matrixlu | 
| type typedefns::derivative | 
\({\rm d}\mathbf{B}/{\rm d}\mathbf{X}\) (?)
| Class Members | ||
|---|---|---|
| logical | l | what is this? | 
| integer | vol | Used in coords(); required for global constraint force gradient evaluation. | 
| integer | innout | what is this? | 
| integer | ii | what is this? | 
| integer | irz | what is this? | 
| integer | issym | what is this? |