PlasmaControl / DESC

Stellarator Equilibrium and Optimization Suite
MIT License
77 stars 15 forks source link

Allow reading in of boundary from a SPEC file #224

Open dpanici opened 2 years ago

dpanici commented 2 years ago

SPEC has same bdry representation and bdry input file syntax as VMEC so it would just be a matter of allowing the input reader to recognize the different namelist lines (&XXX, not sure what these are called)

example SPEC input file:

&physicslist
 Igeometry   =         3
 Istellsym   =         0
 Lfreebound  =         0
 phiedge     =   -3.500000000000000E+00
 curtor      =   1.038123580200000E-09
 curpol      =   0.000000000000000E+00
 gamma       =   0.000000000000000E+00
 Nfp         =         1
 Nvol        =         1
 Mpol        =         10
 Ntor        =         1
 Lrad        =                       8
 tflux       =   3.033538489388870E-01  1.000000000000000E+00
 pflux       =   0.000000000000000E+00 -2.040878894181875E-01
 helicity    =   2.036396095021530E-02  1.559429589793997E-03
 pscale      =   1.000000000000000E-03
 Ladiabatic  =         0
 pressure    =   1.000000000000000E+00  0.000000000000000E+00
 adiabatic   =   1.000000000000000E+00  0.000000000000000E+00
 mu          =   1.000000000000000E+00 -1.606028675492643E-04
 Lconstraint =         1
 pl          =                       0                      0                      0
 ql          =                       0                      0                      0
 pr          =                       0                      0                      0
 qr          =                       0                      0                      0
 iota        =   0.000000000000000E+00  1.400000000000000E-01  
 lp          =                       0                      0                      0
 lq          =                       0                      0                      0
 rp          =                       0                      0                      0
 rq          =                       0                      0                      0
 oita        =   0.000000000000000E+00  1.400000000000000E-01 
 mupftol     =   1.000000000000000E-12
 mupfits     =       128
 Rac         =   1.650000000000000E+00  0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
 Zas         =   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
 Ras         =   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
 Zac         =   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
Rbc(0,0)=1.612935602325639 Zbs(0,0)=0.000000000000000 Rbs(0,0)=0.000000000000000 Zbc(0,0)=-0.026361500951971 
Rbc(0,1)=0.468033275536568 Zbs(0,1)=0.819754773573621 Rbs(0,1)=0.048631470366051 Zbc(0,1)=0.052577914669610 
Rbc(0,2)=0.045299208965026 Zbs(0,2)=-0.030305645577619 Rbs(0,2)=0.034445731586463 Zbc(0,2)=0.008588317715608 
Rbc(0,3)=0.016677614293854 Zbs(0,3)=-0.006741348674401 Rbs(0,3)=-0.009537543218040 Zbc(0,3)=-0.006705264367706 
Rbc(0,4)=-0.000229628396703 Zbs(0,4)=0.009213452684346 Rbs(0,4)=-0.000491253912228 Zbc(0,4)=-0.003907235305967 
Rbc(0,5)=0.001876654633650 Zbs(0,5)=0.003242891733493 Rbs(0,5)=0.000465063476213 Zbc(0,5)=0.002999229816571 
Rbc(0,6)=-0.000472239815916 Zbs(0,6)=-0.002791536531703 Rbs(0,6)=-0.000352940659099 Zbc(0,6)=0.000663394396739 
Rbc(0,7)=-0.000292479687288 Zbs(0,7)=-0.000228682255502 Rbs(0,7)=0.000156223219181 Zbc(0,7)=-0.001519163177021 
Rbc(0,8)=0.000387953952119 Zbs(0,8)=0.001359081207577 Rbs(0,8)=0.000073966975911 Zbc(0,8)=0.000091252267582 
Rbc(0,9)=-0.000022837101353 Zbs(0,9)=-0.000225885465002 Rbs(0,9)=-0.000212609367627 Zbc(0,9)=0.000869063282008 
Rbc(0,10)=-0.000223395068024 Zbs(0,10)=-0.000692636391849 Rbs(0,10)=0.000092055052804 Zbc(0,10)=-0.000277128785519 
Rbc(0,11)=0.000134916144697 Zbs(0,11)=0.000301928201153 Rbs(0,11)=0.000137445053222 Zbc(0,11)=-0.000468584132200 
Rbc(0,12)=0.000103355827125 Zbs(0,12)=0.000348257656636 Rbs(0,12)=-0.000140544312459 Zbc(0,12)=0.000281039736500 
Rbc(0,13)=-0.000144403548201 Zbs(0,13)=-0.000263374015715 Rbs(0,13)=-0.000057176022917 Zbc(0,13)=0.000233523870209 
Rbc(0,14)=-0.000031287015384 Zbs(0,14)=-0.000162378948684 Rbs(0,14)=0.000130450318971 Zbc(0,14)=-0.000229992578423 
Rbc(0,15)=0.000119257835274 Zbs(0,15)=0.000201043263660 Rbs(0,15)=0.000007032100730 Zbc(0,15)=-0.000101905092304 
Rbc(0,16)=-0.000007314085345 Zbs(0,16)=0.000062061412368 Rbs(0,16)=-0.000104153614683 Zbc(0,16)=0.000169123945745 
Rbc(0,17)=-0.000091035495114 Zbs(0,17)=-0.000140892181012 Rbs(0,17)=0.000020364674116 Zbc(0,17)=0.000032017325124 
Rbc(0,18)=0.000028468548435 Zbs(0,18)=-0.000012239774491 Rbs(0,18)=0.000076000785104 Zbc(0,18)=-0.000114357415557 
Rbc(0,19)=0.000063248435748 Zbs(0,19)=0.000090974614283 Rbs(0,19)=-0.000032993052847 Zbc(0,19)=0.000000841376125 
Rbc(0,20)=-0.000036198598622 Zbs(0,20)=-0.000007986525634 Rbs(0,20)=-0.000051247031139 Zbc(0,20)=0.000070964365717 
Rbc(0,21)=-0.000037973352863 Zbs(0,21)=-0.000054962853528 Rbs(0,21)=0.000036866494180 Zbc(0,21)=-0.000011728232781 
Rbc(0,22)=0.000032837960039 Zbs(0,22)=0.000013610136676 Rbs(0,22)=0.000028991581952 Zbc(0,22)=-0.000040857097453 
Rbc(0,23)=0.000021080224695 Zbs(0,23)=0.000031251303489 Rbs(0,23)=-0.000031528495818 Zbc(0,23)=0.000011939409241 
Rbc(0,24)=-0.000025430200895 Zbs(0,24)=-0.000013615688681 Rbs(0,24)=-0.000014535000466 Zbc(0,24)=0.000022052433408 
Rbc(0,25)=-0.000010418377364 Zbs(0,25)=-0.000014827655990 Rbs(0,25)=0.000024981387640 Zbc(0,25)=-0.000007518729463 
Rbc(0,26)=0.000009700593868 Zbs(0,26)=0.000017558488517 Rbs(0,26)=0.000003519675765 Zbc(0,26)=-0.000011048401872 
Rbc(0,27)=0.000001181086941 Zbs(0,27)=0.000006889731053 Rbs(0,27)=-0.000012122127895 Zbc(0,27)=0.000005324716935 
Rbc(-1,6) = 2.000000000E-02 Zbs(-1,6) = 2.000000000E-02
Rbc(-1,7) = 2.000000000E-02 Zbs(-1,7) = 2.000000000E-02
/
&numericlist
 Linitialize =         0
 Ndiscrete   =         2
 Nquad       =        -1
 iMpol       =        -4
 iNtor       =        -4
 Lsparse     =         0
 Lsvdiota    =         0
 imethod     =         3
 iorder      =         2
 iprecon     =         1
 iotatol     =  -1.000000000000000E+00
/
&locallist
 LBeltrami   =         4
 Linitgues   =         1
/
&globallist
 Lfindzero   =         2
 escale      =   0.000000000000000E+00
 pcondense   =   4.000000000000000E+00
 forcetol    =   1.000000000000000E-12
 c05xtol     =   1.000000000000000E-12
 c05factor   =   1.000000000000000E-04
 LreadGF     =         F
 opsilon     =   1.000000000000000E+00
 epsilon     =   1.000000000000000E+00
 upsilon     =   1.000000000000000E+00
/
&diagnosticslist
 odetol      =   1.000000000000000E-07
 absreq      =   1.000000000000000E-08
 relreq      =   1.000000000000000E-08
 absacc      =   1.000000000000000E-04
 epsr        =   1.000000000000000E-08
 nPpts       =         2000
 nPtrj       =          20    
 LHevalues   =         F
 LHevectors  =         F
/
&screenlist
 Wpp00aa = T
/
dpanici commented 1 week ago

Related to #183