FUSE Introductory Tutorial

Download this tutorial from the FuseExamples repository

Basic concepts

To make sense of this tutorial, you'll need to know the following organization concepts of FUSE:

  1. 📂 Data storage: All data is stored in the dd structure, which follows the ITER IMAS ontology.
  2. 🧠 Actors: The core components of FUSE simulations are physics and engineering actors.
  3. 🕹️ Control: Actor functionality is governed by act parameters.
  4. 🚀 Initialization: The data structure can be initialized from 0D ini parameters.
  5. 🔧 Use cases: FUSE includes templates for various machines (e.g., FPP, ITER, ARC).
  6. 🔄 Workflows: Self-contained studies and optimizations are conducted via workflows, typically involving multiple FUSE simulations.
  7. 🌍 Interoperability: FUSE interfaces with existing modeling tools like OMFIT/OMAS and the IMAS ecosystem.

A diagram illustrating these concepts is provided below: image.png

Let's get started!


NOTE: Julia is a Just In Time (JIT) programming language. The first time something is executed it will take longer because of the compilation process. Subsequent calls the the same code will be blazingly fast.


Import the necessary packages

using Plots # for plotting
using FUSE # this will also import IMAS in the current namespace

Starting from a use-case

FUSE comes with some predefined use-cases, some of which are used for regression testing.

Note that some use cases are for non-nuclear experiments and certain Actors like Blankets or BalanceOfPlant will not perform any actions.

Here's the list of supported use-cases. These can be customized and you will also be able to build your own.

methods(FUSE.case_parameters)
# 26 methods for generic function case_parameters from FUSE:

Get initial parameters (ini) and actions (act) for a given use-case, let's use KDEMO for example

ini, act = FUSE.case_parameters(:KDEMO);

The ini data structure contains 0D parameters that will be used to bootstrap the dd with plausible data.

The ini parameters can be modified.

ini.equilibrium.B0 = 7.8
ini.equilibrium.R0 = 6.5;

The act data structure contains parameters that define how the actors (ie the models) will behave.

The act parameters can also be modified.

act.ActorCoreTransport.model = :FluxMatcher;

ini and act can now be used to initialize the data dictionary (dd) using the 0D parameters.

NOTE: init() does not return a self-consistent solution, just a plausible starting point to initialize our simulations!

dd = IMAS.dd() # an empty dd
FUSE.init(dd, ini, act);
actors: Equilibrium
actors:  TEQUILA
actors: CXbuild
actors: HCD
actors:  SimpleEC
actors:  SimpleIC
actors:  NeutralFueling
actors: Current
actors:  QED
actors: PassiveStructures

Let's see what we got

plot(dd.build)
Example block output

We can @checkin and @checkout variables with an associated tag.

This is handy to save and restore (checkpoint) our progress without having to always start from scratch (we'll use this later).

@checkin :init dd ini act

Running Actors

Let's now run a series of actors and play around with plotting to get a sense of what each individual actor does.

Here's how we can restore things back to after the initialization stage (in case we did anything else in between)

@checkout :init dd ini act

Actors in FUSE can be executed by passing two arguments to them: dd and act.

Let's start by positioning the PF coils, so that we stand a chance to reproduce the desired plasma shape. This will be important to ensure the stability of the ActorStationaryPlasma that we are going to run next.

FUSE.ActorPFdesign(dd, act; do_plot=true); # instead of setting `act.ActorPFdesign.do_plot=true` we can just pass `do_plot=true` as argument without chaning `act`
actors: PFdesign

The ActorStationaryPlasma iterates between plasma transport, pedestal, equilibrium and sources to return a self-consistent plasma solution

peq = plot(dd.equilibrium; label="before")
pcp = plot(dd.core_profiles; color=:gray, label="before")
act.ActorFluxMatcher.verbose = true
act.ActorFluxMatcher.algorithm = :anderson
#act.ActorFluxMatcher.step_size = 0.1
FUSE.ActorStationaryPlasma(dd, act);
actors: StationaryPlasma
actors:  --------------- 1/5
actors:  HCD
actors:   SimpleEC
actors:   SimpleIC
actors:   NeutralFueling
actors:  Current
actors:   QED
actors:  Pedestal
actors:   EPED
actors:  CoreTransport
actors:   FluxMatcher

Calls: 2    Time: 0:00:35
            error: 2.3986908585174067
     Pfusion [MW]: 634.0791758542064
        Ti0 [keV]: 26.763527621791134
        Te0 [keV]: 26.763527621791035
   ne0 [10²⁰ m⁻³]: 0.8669486753400703














Calls: 3    Time: 0:00:40
            error: 2.4614868208460283
     Pfusion [MW]: 635.3244168817072
        Ti0 [keV]: 26.81800244723871
        Te0 [keV]: 26.7851959957034
   ne0 [10²⁰ m⁻³]: 0.8673072946708019














Calls: 4    Time: 0:00:40
            error: 2.0887143164233883
     Pfusion [MW]: 631.4452517654125
        Ti0 [keV]: 26.487088034196155
        Te0 [keV]: 26.626023318725647
   ne0 [10²⁰ m⁻³]: 0.8682166117985088














Calls: 54    Time: 0:00:41
            error: 0.17123663324133373
     Pfusion [MW]: 309.6196928500655
        Ti0 [keV]: 14.611165866093065
        Te0 [keV]: 16.61469121631173
   ne0 [10²⁰ m⁻³]: 0.8469944824369641














Calls: 62    Time: 0:00:41
            error: 0.12246970697927703
     Pfusion [MW]: 307.91592504846125
        Ti0 [keV]: 15.160806229196139
        Te0 [keV]: 16.430902230739434
   ne0 [10²⁰ m⁻³]: 0.8340398113931861














Calls: 70    Time: 0:00:42
            error: 0.07296368765090148
     Pfusion [MW]: 301.5012730046921
        Ti0 [keV]: 15.650280702203478
        Te0 [keV]: 16.266679891977688
   ne0 [10²⁰ m⁻³]: 0.8186724019339789














Calls: 78    Time: 0:00:42
            error: 0.061061403828477294
     Pfusion [MW]: 300.49481490910154
        Ti0 [keV]: 15.918732266699747
        Te0 [keV]: 16.38204608096331
   ne0 [10²⁰ m⁻³]: 0.8125684543602701














Calls: 85    Time: 0:00:42
            error: 0.045115904269717774
     Pfusion [MW]: 290.50746093663906
        Ti0 [keV]: 15.819082581101728
        Te0 [keV]: 16.51398317939473
   ne0 [10²⁰ m⁻³]: 0.8120381899273404














Calls: 92    Time: 0:00:42
            error: 0.04233787603073468
     Pfusion [MW]: 288.9718415223254
        Ti0 [keV]: 15.770496629040256
        Te0 [keV]: 16.512457348749486
   ne0 [10²⁰ m⁻³]: 0.8136406918279612














Calls: 100    Time: 0:00:42
            error: 0.04054283755248907
     Pfusion [MW]: 286.6809905091756
        Ti0 [keV]: 15.73406781823116
        Te0 [keV]: 16.52999108384706
   ne0 [10²⁰ m⁻³]: 0.8131685094341374














Calls: 108    Time: 0:00:42
            error: 0.033676959135281334
     Pfusion [MW]: 285.73742831183455
        Ti0 [keV]: 15.595215747479527
        Te0 [keV]: 16.572438496866635
   ne0 [10²⁰ m⁻³]: 0.8143939504588














Calls: 116    Time: 0:00:42
            error: 0.029000329327946682
     Pfusion [MW]: 281.74051083972597
        Ti0 [keV]: 15.513511181220855
        Te0 [keV]: 16.583545340579736
   ne0 [10²⁰ m⁻³]: 0.81446113573014














Calls: 123    Time: 0:00:42
            error: 0.026673540053890533
     Pfusion [MW]: 276.0554735933803
        Ti0 [keV]: 15.503101783094555
        Te0 [keV]: 16.60338474190949
   ne0 [10²⁰ m⁻³]: 0.8123722596588308














Calls: 130    Time: 0:00:42
            error: 0.024574998448368322
     Pfusion [MW]: 275.6113737920799
        Ti0 [keV]: 15.496040455607247
        Te0 [keV]: 16.585559994097633
   ne0 [10²⁰ m⁻³]: 0.8127937345620063














Calls: 138    Time: 0:00:43
            error: 0.02191718598278903
     Pfusion [MW]: 274.9476000533305
        Ti0 [keV]: 15.546416233061459
        Te0 [keV]: 16.563508332290876
   ne0 [10²⁰ m⁻³]: 0.8118749320104287














Calls: 146    Time: 0:00:43
            error: 0.01977430476142367
     Pfusion [MW]: 277.22354934387766
        Ti0 [keV]: 15.581036617646118
        Te0 [keV]: 16.564550430223964
   ne0 [10²⁰ m⁻³]: 0.8110643054019108














Calls: 154    Time: 0:00:43
            error: 0.016876449178285857
     Pfusion [MW]: 276.9659117100103
        Ti0 [keV]: 15.6178983711363
        Te0 [keV]: 16.56465781409598
   ne0 [10²⁰ m⁻³]: 0.8106082080580952




actors:    Pedestal
actors:     EPED
actors:    FluxCalculator
actors:     TGLF
actors:     Neoclassical











Calls: 154    Time: 0:00:43
            error: 0.016876449178285857
     Pfusion [MW]: 276.9659117100103
        Ti0 [keV]: 15.6178983711363
        Te0 [keV]: 16.56465781409598
   ne0 [10²⁰ m⁻³]: 0.8106082080580952
actors:  Current
actors:   QED
actors:  Equilibrium
actors:   TEQUILA
actors:  --------------- 1/5 @ 673.78%
actors:  HCD
actors:   SimpleEC
actors:   SimpleIC
actors:   NeutralFueling
actors:  Current
actors:   QED
actors:  Pedestal
actors:   EPED
actors:  CoreTransport
actors:   FluxMatcher

Calls: 8    Time: 0:00:00
            error: 0.9333853834867548
     Pfusion [MW]: 402.6387899723012
        Ti0 [keV]: 16.446489407127952
        Te0 [keV]: 16.265493447929035
   ne0 [10²⁰ m⁻³]: 0.8750659642209214














Calls: 15    Time: 0:00:00
            error: 0.5273245630033004
     Pfusion [MW]: 423.0568916584847
        Ti0 [keV]: 16.441026285476525
        Te0 [keV]: 16.27614055704596
   ne0 [10²⁰ m⁻³]: 0.9120969909533151














Calls: 22    Time: 0:00:00
            error: 2.258156543922321
     Pfusion [MW]: 456.7728324306802
        Ti0 [keV]: 16.990152713229122
        Te0 [keV]: 24.880277622960506
   ne0 [10²⁰ m⁻³]: 0.9435650260023571














Calls: 30    Time: 0:00:00
            error: 2.298390552006299
     Pfusion [MW]: 455.8008405326233
        Ti0 [keV]: 16.9437666885457
        Te0 [keV]: 24.60072111323643
   ne0 [10²⁰ m⁻³]: 0.9446878979274893














Calls: 38    Time: 0:00:00
            error: 0.43229455251344867
     Pfusion [MW]: 448.1919593420084
        Ti0 [keV]: 16.829652892506914
        Te0 [keV]: 16.893366795552076
   ne0 [10²⁰ m⁻³]: 0.9468821321111837














Calls: 45    Time: 0:00:00
            error: 2.7671362202641663
     Pfusion [MW]: 482.0030966097575
        Ti0 [keV]: 17.446794195842763
        Te0 [keV]: 25.885769085811045
   ne0 [10²⁰ m⁻³]: 0.966683606990763














Calls: 52    Time: 0:00:00
            error: 0.40352235424466193
     Pfusion [MW]: 461.01515376757857
        Ti0 [keV]: 17.06673166168191
        Te0 [keV]: 17.49086852288587
   ne0 [10²⁰ m⁻³]: 0.9554002825701388














Calls: 57    Time: 0:00:01
            error: 2.513101274713018
     Pfusion [MW]: 471.6359769847102
        Ti0 [keV]: 17.270622999121553
        Te0 [keV]: 25.162230073153623
   ne0 [10²⁰ m⁻³]: 0.9579793626276154














Calls: 65    Time: 0:00:01
            error: 0.37672017283850545
     Pfusion [MW]: 460.0700164085883
        Ti0 [keV]: 17.051023907975534
        Te0 [keV]: 17.47600153760577
   ne0 [10²⁰ m⁻³]: 0.9536237592941127














Calls: 73    Time: 0:00:01
            error: 0.41310418745433947
     Pfusion [MW]: 457.85262093993117
        Ti0 [keV]: 17.014206901866864
        Te0 [keV]: 17.40740838808865
   ne0 [10²⁰ m⁻³]: 0.9527752714766438














Calls: 81    Time: 0:00:01
            error: 0.6834749697106808
     Pfusion [MW]: 453.60290245605455
        Ti0 [keV]: 16.867320061008577
        Te0 [keV]: 17.009322287206345
   ne0 [10²⁰ m⁻³]: 0.9561795269018951














Calls: 88    Time: 0:00:01
            error: 0.7237044701724346
     Pfusion [MW]: 460.7198133706373
        Ti0 [keV]: 17.100443638663936
        Te0 [keV]: 17.26358206188635
   ne0 [10²⁰ m⁻³]: 0.9554967006773831














Calls: 95    Time: 0:00:01
            error: 3.3247209095382426
     Pfusion [MW]: 478.07054970365704
        Ti0 [keV]: 17.357259395447716
        Te0 [keV]: 25.48928487343176
   ne0 [10²⁰ m⁻³]: 0.9611649384504586














Calls: 102    Time: 0:00:01
            error: 3.796668028626635
     Pfusion [MW]: 495.51170506168177
        Ti0 [keV]: 17.6050205512226
        Te0 [keV]: 27.041407382390457
   ne0 [10²⁰ m⁻³]: 0.9692034139248211














Calls: 110    Time: 0:00:01
            error: 3.817126118397149
     Pfusion [MW]: 495.34680548870085
        Ti0 [keV]: 17.55307547285126
        Te0 [keV]: 26.7560117558871
   ne0 [10²⁰ m⁻³]: 0.9703205565880787














Calls: 118    Time: 0:00:01
            error: 0.7798471817081255
     Pfusion [MW]: 461.4879685383877
        Ti0 [keV]: 17.08142432719582
        Te0 [keV]: 17.190156232897372
   ne0 [10²⁰ m⁻³]: 0.9550736239485982














Calls: 125    Time: 0:00:02
            error: 0.3506041555833919
     Pfusion [MW]: 471.15342565970195
        Ti0 [keV]: 17.420254692638295
        Te0 [keV]: 18.015710773368138
   ne0 [10²⁰ m⁻³]: 0.9499792265941794














Calls: 132    Time: 0:00:02
            error: 0.2615683722644383
     Pfusion [MW]: 472.92356841662473
        Ti0 [keV]: 17.57976871958555
        Te0 [keV]: 18.010040264612368
   ne0 [10²⁰ m⁻³]: 0.9442135055421369














Calls: 138    Time: 0:00:02
            error: 0.23591595684920974
     Pfusion [MW]: 474.8664037334073
        Ti0 [keV]: 17.616042429480995
        Te0 [keV]: 18.05882942331773
   ne0 [10²⁰ m⁻³]: 0.9435077648536111














Calls: 146    Time: 0:00:02
            error: 0.160533430243627
     Pfusion [MW]: 447.0788741072005
        Ti0 [keV]: 16.891281871156266
        Te0 [keV]: 17.10131323134006
   ne0 [10²⁰ m⁻³]: 0.9274246245298202














Calls: 153    Time: 0:00:02
            error: 0.13097388389075887
     Pfusion [MW]: 431.33514465796077
        Ti0 [keV]: 16.447189374699676
        Te0 [keV]: 16.50664142257599
   ne0 [10²⁰ m⁻³]: 0.9225997719101748














Calls: 160    Time: 0:00:02
            error: 0.11519971494646078
     Pfusion [MW]: 421.8726574650503
        Ti0 [keV]: 16.147983829616873
        Te0 [keV]: 16.134378858396833
   ne0 [10²⁰ m⁻³]: 0.921546910025732














Calls: 167    Time: 0:00:02
            error: 0.10349196118756074
     Pfusion [MW]: 419.3879228386871
        Ti0 [keV]: 16.08036549958943
        Te0 [keV]: 16.06112864867516
   ne0 [10²⁰ m⁻³]: 0.922131728794031














Calls: 173    Time: 0:00:02
            error: 0.10227056230574183
     Pfusion [MW]: 419.61582301781414
        Ti0 [keV]: 16.095181437559212
        Te0 [keV]: 16.082834727660362
   ne0 [10²⁰ m⁻³]: 0.9223677643086702














Calls: 180    Time: 0:00:02
            error: 0.09106661242572953
     Pfusion [MW]: 418.57625461638503
        Ti0 [keV]: 16.148311839389866
        Te0 [keV]: 16.109147981684778
   ne0 [10²⁰ m⁻³]: 0.9221171478591615














Calls: 188    Time: 0:00:03
            error: 0.08519078548797444
     Pfusion [MW]: 417.06407495009756
        Ti0 [keV]: 16.163724365877176
        Te0 [keV]: 16.063155623469445
   ne0 [10²⁰ m⁻³]: 0.9221442302034335














Calls: 195    Time: 0:00:03
            error: 0.08180564478626795
     Pfusion [MW]: 414.92937275533785
        Ti0 [keV]: 16.18330517796889
        Te0 [keV]: 16.011421337174802
   ne0 [10²⁰ m⁻³]: 0.9220621925510413














Calls: 202    Time: 0:00:03
            error: 0.08041485792971162
     Pfusion [MW]: 413.70005951889766
        Ti0 [keV]: 16.203044546415768
        Te0 [keV]: 15.993961933343137
   ne0 [10²⁰ m⁻³]: 0.9220260889929959














Calls: 209    Time: 0:00:03
            error: 0.07697185164523415
     Pfusion [MW]: 412.3071113902689
        Ti0 [keV]: 16.25363119738364
        Te0 [keV]: 16.03491841579423
   ne0 [10²⁰ m⁻³]: 0.9223169247362174














Calls: 214    Time: 0:00:03
            error: 0.07641847894358433
     Pfusion [MW]: 411.4081399738682
        Ti0 [keV]: 16.299469834113733
        Te0 [keV]: 16.077855807232236
   ne0 [10²⁰ m⁻³]: 0.9224550202591852














Calls: 222    Time: 0:00:03
            error: 0.07472466946270852
     Pfusion [MW]: 410.1113154063148
        Ti0 [keV]: 16.38160901141222
        Te0 [keV]: 16.13533732025077
   ne0 [10²⁰ m⁻³]: 0.9233925554434558














Calls: 230    Time: 0:00:03
            error: 0.07419122386273248
     Pfusion [MW]: 410.06705178594314
        Ti0 [keV]: 16.485203245507275
        Te0 [keV]: 16.253518552930412
   ne0 [10²⁰ m⁻³]: 0.9245027478794258














Calls: 237    Time: 0:00:03
            error: 0.0734904392115544
     Pfusion [MW]: 409.8358490961892
        Ti0 [keV]: 16.663523730096745
        Te0 [keV]: 16.440892383493903
   ne0 [10²⁰ m⁻³]: 0.9260237025939854














Calls: 244    Time: 0:00:03
            error: 0.07299841845999182
     Pfusion [MW]: 410.47047890921897
        Ti0 [keV]: 16.813858366925512
        Te0 [keV]: 16.614924902319792
   ne0 [10²⁰ m⁻³]: 0.9270283294410526














Calls: 251    Time: 0:00:04
            error: 0.07233984446738416
     Pfusion [MW]: 411.2600476242881
        Ti0 [keV]: 17.031686760211002
        Te0 [keV]: 16.866311623595497
   ne0 [10²⁰ m⁻³]: 0.9288232367873247














Calls: 259    Time: 0:00:04
            error: 0.06931893463263207
     Pfusion [MW]: 414.9641742873243
        Ti0 [keV]: 17.586058982267733
        Te0 [keV]: 17.556214516057477
   ne0 [10²⁰ m⁻³]: 0.9335785929724936














Calls: 267    Time: 0:00:04
            error: 0.06357497094206539
     Pfusion [MW]: 419.71816528400075
        Ti0 [keV]: 18.270408646159456
        Te0 [keV]: 18.43536185407142
   ne0 [10²⁰ m⁻³]: 0.9392620239292445














Calls: 275    Time: 0:00:04
            error: 0.05249874611834623
     Pfusion [MW]: 423.5903470154265
        Ti0 [keV]: 18.718457467233463
        Te0 [keV]: 19.065981215326
   ne0 [10²⁰ m⁻³]: 0.9441786501687617














Calls: 282    Time: 0:00:04
            error: 0.034893512614454676
     Pfusion [MW]: 428.3074810421867
        Ti0 [keV]: 19.11358465779777
        Te0 [keV]: 19.672473917244567
   ne0 [10²⁰ m⁻³]: 0.9525072431866916














Calls: 289    Time: 0:00:04
            error: 0.023249075752431056
     Pfusion [MW]: 430.2429264310045
        Ti0 [keV]: 19.2197955463442
        Te0 [keV]: 19.861135681929333
   ne0 [10²⁰ m⁻³]: 0.9570636035644572




actors:    Pedestal
actors:     EPED
actors:    FluxCalculator
actors:     TGLF
actors:     Neoclassical











Calls: 295    Time: 0:00:04
            error: 0.017942905656534298
     Pfusion [MW]: 430.63859959401617
        Ti0 [keV]: 19.24298563055952
        Te0 [keV]: 19.89461613838067
   ne0 [10²⁰ m⁻³]: 0.9579029664723094
actors:  Current
actors:   QED
actors:  Equilibrium
actors:   TEQUILA
actors:  --------------- 2/5 @ 642.51%
actors:  HCD
actors:   SimpleEC
actors:   SimpleIC
actors:   NeutralFueling
actors:  Current
actors:   QED
actors:  Pedestal
actors:   EPED
actors:  CoreTransport
actors:   FluxMatcher

Calls: 4    Time: 0:00:00
            error: 2.2759322711070658
     Pfusion [MW]: 284.1483313727837
        Ti0 [keV]: 17.587069861457664
        Te0 [keV]: 18.02740054028291
   ne0 [10²⁰ m⁻³]: 0.9279568261072693














Calls: 13    Time: 0:00:00
            error: 0.868356957008476
     Pfusion [MW]: 235.96422673921435
        Ti0 [keV]: 16.308873990528298
        Te0 [keV]: 16.356717953006864
   ne0 [10²⁰ m⁻³]: 0.8812460448690922














Calls: 22    Time: 0:00:00
            error: 0.40938518584757017
     Pfusion [MW]: 215.07700210854682
        Ti0 [keV]: 15.522634885199908
        Te0 [keV]: 15.26775615031375
   ne0 [10²⁰ m⁻³]: 0.8736422489435357














Calls: 30    Time: 0:00:00
            error: 0.24943744544478386
     Pfusion [MW]: 205.69555701951128
        Ti0 [keV]: 15.182353183918998
        Te0 [keV]: 14.74080794945898
   ne0 [10²⁰ m⁻³]: 0.8740113200602404














Calls: 38    Time: 0:00:00
            error: 0.1558412668149164
     Pfusion [MW]: 193.8461081467342
        Ti0 [keV]: 14.792214169459154
        Te0 [keV]: 14.07925909477132
   ne0 [10²⁰ m⁻³]: 0.8725249025182534














Calls: 44    Time: 0:00:00
            error: 0.1502718865965218
     Pfusion [MW]: 191.59720419237303
        Ti0 [keV]: 14.734671697745629
        Te0 [keV]: 13.961554100074382
   ne0 [10²⁰ m⁻³]: 0.8716400345868964














Calls: 53    Time: 0:00:00
            error: 0.13715102403012971
     Pfusion [MW]: 193.08553509980155
        Ti0 [keV]: 15.053424977019025
        Te0 [keV]: 14.177548865341675
   ne0 [10²⁰ m⁻³]: 0.8687746221204886














Calls: 62    Time: 0:00:00
            error: 0.10726479833679047
     Pfusion [MW]: 198.1502630723914
        Ti0 [keV]: 15.724203779294047
        Te0 [keV]: 14.756294017153465
   ne0 [10²⁰ m⁻³]: 0.8732497692495882














Calls: 71    Time: 0:00:01
            error: 0.10223481391592956
     Pfusion [MW]: 199.9040542650887
        Ti0 [keV]: 15.859679937916864
        Te0 [keV]: 14.98106384628207
   ne0 [10²⁰ m⁻³]: 0.8755650296500908














Calls: 79    Time: 0:00:01
            error: 0.09531131498044436
     Pfusion [MW]: 202.16289753016807
        Ti0 [keV]: 16.045830135578193
        Te0 [keV]: 15.29612708021031
   ne0 [10²⁰ m⁻³]: 0.876351656187892














Calls: 86    Time: 0:00:01
            error: 0.09184490867120948
     Pfusion [MW]: 204.17493359527558
        Ti0 [keV]: 16.08969803755545
        Te0 [keV]: 15.537790789694208
   ne0 [10²⁰ m⁻³]: 0.8792826085625184














Calls: 95    Time: 0:00:01
            error: 0.09020629234681447
     Pfusion [MW]: 206.65333703716428
        Ti0 [keV]: 16.191586655761895
        Te0 [keV]: 15.774613951085867
   ne0 [10²⁰ m⁻³]: 0.8817667141928085














Calls: 104    Time: 0:00:01
            error: 0.08852800978941529
     Pfusion [MW]: 210.39950738896337
        Ti0 [keV]: 16.409835061984502
        Te0 [keV]: 16.072529609044942
   ne0 [10²⁰ m⁻³]: 0.8833574341032726














Calls: 112    Time: 0:00:01
            error: 0.08738641387811952
     Pfusion [MW]: 211.0426286812436
        Ti0 [keV]: 16.42711603724588
        Te0 [keV]: 16.066611690049214
   ne0 [10²⁰ m⁻³]: 0.8837006922864549














Calls: 120    Time: 0:00:01
            error: 0.08392709192831081
     Pfusion [MW]: 219.22113374914977
        Ti0 [keV]: 16.662765762298562
        Te0 [keV]: 16.540468998059968
   ne0 [10²⁰ m⁻³]: 0.8864136872711191














Calls: 133    Time: 0:00:01
            error: 0.07278595745664694
     Pfusion [MW]: 228.71724567773876
        Ti0 [keV]: 16.810588062230593
        Te0 [keV]: 16.90973290740146
   ne0 [10²⁰ m⁻³]: 0.8885326079461185














Calls: 144    Time: 0:00:01
            error: 0.06079590794642299
     Pfusion [MW]: 235.52901741020116
        Ti0 [keV]: 16.87227269089872
        Te0 [keV]: 17.25506234657478
   ne0 [10²⁰ m⁻³]: 0.8906100846199343














Calls: 152    Time: 0:00:02
            error: 0.05354387377773539
     Pfusion [MW]: 236.13430984377277
        Ti0 [keV]: 16.90595989108585
        Te0 [keV]: 17.289118953112794
   ne0 [10²⁰ m⁻³]: 0.8858870319167625














Calls: 160    Time: 0:00:02
            error: 0.047604122734114
     Pfusion [MW]: 239.45998701963427
        Ti0 [keV]: 16.989675932362818
        Te0 [keV]: 17.43867760007121
   ne0 [10²⁰ m⁻³]: 0.884221252779217














Calls: 172    Time: 0:00:02
            error: 0.03763995002226902
     Pfusion [MW]: 245.37246807567928
        Ti0 [keV]: 17.12144229377626
        Te0 [keV]: 17.697255627932435
   ne0 [10²⁰ m⁻³]: 0.882276222421233














Calls: 183    Time: 0:00:02
            error: 0.02787051335544355
     Pfusion [MW]: 247.34199184815512
        Ti0 [keV]: 17.230278139327705
        Te0 [keV]: 17.81267814319902
   ne0 [10²⁰ m⁻³]: 0.8822436492758043














Calls: 191    Time: 0:00:02
            error: 0.02480946342612053
     Pfusion [MW]: 248.4089880985571
        Ti0 [keV]: 17.289846860084854
        Te0 [keV]: 17.914383730628572
   ne0 [10²⁰ m⁻³]: 0.8826739390314681














Calls: 199    Time: 0:00:02
            error: 0.016735070862015092
     Pfusion [MW]: 249.35545701804972
        Ti0 [keV]: 17.361924334967057
        Te0 [keV]: 18.116012301946
   ne0 [10²⁰ m⁻³]: 0.8837646498481359




actors:    Pedestal
actors:     EPED
actors:    FluxCalculator
actors:     TGLF
actors:     Neoclassical











Calls: 204    Time: 0:00:02
            error: 0.015502445969252283
     Pfusion [MW]: 249.3759463131943
        Ti0 [keV]: 17.36966886831599
        Te0 [keV]: 18.148717152928356
   ne0 [10²⁰ m⁻³]: 0.883913414811802
actors:  Current
actors:   QED
actors:  Equilibrium
actors:   TEQUILA
actors:  --------------- 3/5 @ 348.50%
actors:  HCD
actors:   SimpleEC
actors:   SimpleIC
actors:   NeutralFueling
actors:  Current
actors:   QED
actors:  Pedestal
actors:   EPED
actors:  CoreTransport
actors:   FluxMatcher

Calls: 8    Time: 0:00:00
            error: 1.8563931211554734
     Pfusion [MW]: 281.81358602281745
        Ti0 [keV]: 17.636874577463313
        Te0 [keV]: 18.44390986581222
   ne0 [10²⁰ m⁻³]: 0.9040522605091048














Calls: 16    Time: 0:00:00
            error: 2.645806022440279
     Pfusion [MW]: 280.2278432585134
        Ti0 [keV]: 17.638249815555707
        Te0 [keV]: 18.434841826974942
   ne0 [10²⁰ m⁻³]: 0.9016333089959954














Calls: 24    Time: 0:00:00
            error: 3.684603510072845
     Pfusion [MW]: 277.86454512880454
        Ti0 [keV]: 17.652603301697468
        Te0 [keV]: 18.412196805708472
   ne0 [10²⁰ m⁻³]: 0.900365222139877














Calls: 31    Time: 0:00:00
            error: 4.131679801091568
     Pfusion [MW]: 278.5020164090539
        Ti0 [keV]: 17.62694815680475
        Te0 [keV]: 18.43219611700823
   ne0 [10²⁰ m⁻³]: 0.8979942731068438














Calls: 50    Time: 0:00:00
            error: 2.8961142196686036
     Pfusion [MW]: 280.3088082182606
        Ti0 [keV]: 17.645133543900723
        Te0 [keV]: 18.440657348020274
   ne0 [10²⁰ m⁻³]: 0.9033144774517848














Calls: 59    Time: 0:00:00
            error: 3.1423368867902743
     Pfusion [MW]: 279.28155815303944
        Ti0 [keV]: 17.653504329716604
        Te0 [keV]: 18.423411149446938
   ne0 [10²⁰ m⁻³]: 0.9032536343487778














Calls: 66    Time: 0:00:00
            error: 3.4266738147004214
     Pfusion [MW]: 276.5121220066075
        Ti0 [keV]: 17.651733421427245
        Te0 [keV]: 18.416681380090218
   ne0 [10²⁰ m⁻³]: 0.8979628427555976














Calls: 73    Time: 0:00:01
            error: 2.938197520492554
     Pfusion [MW]: 280.90579214822463
        Ti0 [keV]: 17.657021683531116
        Te0 [keV]: 18.42160738017453
   ne0 [10²⁰ m⁻³]: 0.9057980726010157














Calls: 81    Time: 0:00:01
            error: 3.391572951255058
     Pfusion [MW]: 283.29801773114866
        Ti0 [keV]: 17.651335621865048
        Te0 [keV]: 18.43523372637054
   ne0 [10²⁰ m⁻³]: 0.9099193037976733














Calls: 89    Time: 0:00:01
            error: 3.0735177241898577
     Pfusion [MW]: 279.88138945602975
        Ti0 [keV]: 17.653682016249988
        Te0 [keV]: 18.423106647963255
   ne0 [10²⁰ m⁻³]: 0.9042005102163965














Calls: 97    Time: 0:00:01
            error: 2.5781409738849557
     Pfusion [MW]: 281.45960845502935
        Ti0 [keV]: 17.65708600391108
        Te0 [keV]: 18.419814189455305
   ne0 [10²⁰ m⁻³]: 0.9079115254027129














Calls: 104    Time: 0:00:01
            error: 3.16089025765109
     Pfusion [MW]: 280.4701786396951
        Ti0 [keV]: 17.653179523435295
        Te0 [keV]: 18.417770558012204
   ne0 [10²⁰ m⁻³]: 0.9059150869306622














Calls: 111    Time: 0:00:01
            error: 2.8433802195462876
     Pfusion [MW]: 279.2054234785216
        Ti0 [keV]: 17.65816544810331
        Te0 [keV]: 18.409758439229535
   ne0 [10²⁰ m⁻³]: 0.9037611861933814














Calls: 122    Time: 0:00:01
            error: 3.8922412795571106
     Pfusion [MW]: 280.5284450131257
        Ti0 [keV]: 17.65081777251326
        Te0 [keV]: 18.42584625286174
   ne0 [10²⁰ m⁻³]: 0.9049043046895201














Calls: 132    Time: 0:00:01
            error: 3.3726014371613453
     Pfusion [MW]: 280.23898877329583
        Ti0 [keV]: 17.65140738106245
        Te0 [keV]: 18.42660928809887
   ne0 [10²⁰ m⁻³]: 0.9043449800540291














Calls: 139    Time: 0:00:02
            error: 2.7766381619239913
     Pfusion [MW]: 280.54899359722634
        Ti0 [keV]: 17.65474010601804
        Te0 [keV]: 18.415279649895844
   ne0 [10²⁰ m⁻³]: 0.9055785382600171














Calls: 146    Time: 0:00:02
            error: 3.1271583181888825
     Pfusion [MW]: 279.02799349368564
        Ti0 [keV]: 17.651030760566268
        Te0 [keV]: 18.419794043545334
   ne0 [10²⁰ m⁻³]: 0.9018970701294728














Calls: 153    Time: 0:00:02
            error: 3.134975109696498
     Pfusion [MW]: 280.2400561544416
        Ti0 [keV]: 17.65421863109057
        Te0 [keV]: 18.425069233099187
   ne0 [10²⁰ m⁻³]: 0.9046131187745835














Calls: 161    Time: 0:00:02
            error: 2.6511026349456728
     Pfusion [MW]: 280.220101423625
        Ti0 [keV]: 17.65467842562433
        Te0 [keV]: 18.42153263023493
   ne0 [10²⁰ m⁻³]: 0.9052584320875171














Calls: 169    Time: 0:00:02
            error: 2.483547928272602
     Pfusion [MW]: 280.5740773013626
        Ti0 [keV]: 17.655659573097456
        Te0 [keV]: 18.423476400143535
   ne0 [10²⁰ m⁻³]: 0.9056436024843701














Calls: 177    Time: 0:00:02
            error: 2.981216634866588
     Pfusion [MW]: 280.66250033065074
        Ti0 [keV]: 17.654966208695317
        Te0 [keV]: 18.42248298203644
   ne0 [10²⁰ m⁻³]: 0.905474347266658














Calls: 184    Time: 0:00:02
            error: 2.600655058278809
     Pfusion [MW]: 281.5280532121039
        Ti0 [keV]: 17.65689711011468
        Te0 [keV]: 18.424177431995783
   ne0 [10²⁰ m⁻³]: 0.9075053879861484














Calls: 191    Time: 0:00:02
            error: 3.5610611916676307
     Pfusion [MW]: 279.65126216088765
        Ti0 [keV]: 17.65231507774312
        Te0 [keV]: 18.42462912140099
   ne0 [10²⁰ m⁻³]: 0.903241380771342














Calls: 199    Time: 0:00:03
            error: 3.3079394136308387
     Pfusion [MW]: 282.8497415067392
        Ti0 [keV]: 17.65518762027608
        Te0 [keV]: 18.42627515884075
   ne0 [10²⁰ m⁻³]: 0.9094019688826797














Calls: 207    Time: 0:00:03
            error: 2.8615379705848945
     Pfusion [MW]: 282.4981870805935
        Ti0 [keV]: 17.65506032149969
        Te0 [keV]: 18.42436091186034
   ne0 [10²⁰ m⁻³]: 0.909015699006906














Calls: 215    Time: 0:00:03
            error: 2.603251560864154
     Pfusion [MW]: 280.22063131210064
        Ti0 [keV]: 17.656981018267782
        Te0 [keV]: 18.426690072169063
   ne0 [10²⁰ m⁻³]: 0.9046615820691153














Calls: 222    Time: 0:00:03
            error: 3.2234906047525764
     Pfusion [MW]: 279.75979655781947
        Ti0 [keV]: 17.653921093626217
        Te0 [keV]: 18.42431439542691
   ne0 [10²⁰ m⁻³]: 0.9036791008835461














Calls: 229    Time: 0:00:03
            error: 4.000859012152771
     Pfusion [MW]: 280.11020062290646
        Ti0 [keV]: 17.64707281215116
        Te0 [keV]: 18.415103950459798
   ne0 [10²⁰ m⁻³]: 0.904471797915232














Calls: 236    Time: 0:00:03
            error: 3.2109252718901318
     Pfusion [MW]: 277.5324034685439
        Ti0 [keV]: 17.650652376262954
        Te0 [keV]: 18.418782358717788
   ne0 [10²⁰ m⁻³]: 0.899982917414641














Calls: 244    Time: 0:00:03
            error: 2.8857653732994373
     Pfusion [MW]: 279.8704159430891
        Ti0 [keV]: 17.65179155566505
        Te0 [keV]: 18.41936821198399
   ne0 [10²⁰ m⁻³]: 0.9045468429216811














Calls: 252    Time: 0:00:03
            error: 2.961118627846289
     Pfusion [MW]: 280.8968320854996
        Ti0 [keV]: 17.650996082729694
        Te0 [keV]: 18.419032219097662
   ne0 [10²⁰ m⁻³]: 0.9061237105055833














Calls: 259    Time: 0:00:03
            error: 3.1292409401172097
     Pfusion [MW]: 278.5743869538894
        Ti0 [keV]: 17.652396303439573
        Te0 [keV]: 18.41998703159766
   ne0 [10²⁰ m⁻³]: 0.9023057986788062














Calls: 266    Time: 0:00:04
            error: 3.0257071126408657
     Pfusion [MW]: 280.00887377080085
        Ti0 [keV]: 17.652511941117513
        Te0 [keV]: 18.421113790580012
   ne0 [10²⁰ m⁻³]: 0.9042563298609559














Calls: 273    Time: 0:00:04
            error: 2.793232235796369
     Pfusion [MW]: 279.72117449440105
        Ti0 [keV]: 17.652535310942202
        Te0 [keV]: 18.42225998661877
   ne0 [10²⁰ m⁻³]: 0.9031166217630442














Calls: 281    Time: 0:00:04
            error: 2.756678086339125
     Pfusion [MW]: 282.0069430695247
        Ti0 [keV]: 17.655141136236477
        Te0 [keV]: 18.42539430688746
   ne0 [10²⁰ m⁻³]: 0.9078078747893126














Calls: 289    Time: 0:00:04
            error: 3.377947566287473
     Pfusion [MW]: 279.04797612210643
        Ti0 [keV]: 17.650631457633573
        Te0 [keV]: 18.418841382566892
   ne0 [10²⁰ m⁻³]: 0.9021773591194745














Calls: 297    Time: 0:00:04
            error: 3.4052186521386645
     Pfusion [MW]: 277.909716826027
        Ti0 [keV]: 17.65021717296035
        Te0 [keV]: 18.41716013045122
   ne0 [10²⁰ m⁻³]: 0.9014915604189887














Calls: 304    Time: 0:00:04
            error: 2.9059755784867156
     Pfusion [MW]: 280.84163637000523
        Ti0 [keV]: 17.653552520584398
        Te0 [keV]: 18.42218243717743
   ne0 [10²⁰ m⁻³]: 0.9060025616630166














Calls: 311    Time: 0:00:04
            error: 2.427007949827201
     Pfusion [MW]: 281.4790679732098
        Ti0 [keV]: 17.65540920472906
        Te0 [keV]: 18.424841168413526
   ne0 [10²⁰ m⁻³]: 0.9070446665167469














Calls: 319    Time: 0:00:04
            error: 3.3876525243294178
     Pfusion [MW]: 280.3494564644044
        Ti0 [keV]: 17.64474612966982
        Te0 [keV]: 18.417981763697593
   ne0 [10²⁰ m⁻³]: 0.9038401461027226














Calls: 327    Time: 0:00:04
            error: 3.3558637765725603
     Pfusion [MW]: 281.445788702391
        Ti0 [keV]: 17.64910625717104
        Te0 [keV]: 18.41941366187183
   ne0 [10²⁰ m⁻³]: 0.9056695692789664














Calls: 334    Time: 0:00:05
            error: 2.767385494795948
     Pfusion [MW]: 281.90531959698444
        Ti0 [keV]: 17.654596047974696
        Te0 [keV]: 18.423753287839624
   ne0 [10²⁰ m⁻³]: 0.9076740741785522














Calls: 341    Time: 0:00:05
            error: 3.7590752125452975
     Pfusion [MW]: 278.8684537486337
        Ti0 [keV]: 17.648847567523827
        Te0 [keV]: 18.418782544927325
   ne0 [10²⁰ m⁻³]: 0.9016790189261118














Calls: 347    Time: 0:00:05
            error: 4.3963030213437735
     Pfusion [MW]: 280.2753750916068
        Ti0 [keV]: 17.64504359275454
        Te0 [keV]: 18.41457903097469
   ne0 [10²⁰ m⁻³]: 0.9043282574145008














Calls: 355    Time: 0:00:05
            error: 3.625987656324407
     Pfusion [MW]: 278.4017742063164
        Ti0 [keV]: 17.65084864702618
        Te0 [keV]: 18.415683537828244
   ne0 [10²⁰ m⁻³]: 0.9023148290874322














Calls: 363    Time: 0:00:05
            error: 2.9929198985097085
     Pfusion [MW]: 279.79234678025153
        Ti0 [keV]: 17.651282084014653
        Te0 [keV]: 18.419641245661506
   ne0 [10²⁰ m⁻³]: 0.9031841323514035














Calls: 370    Time: 0:00:05
            error: 3.251142883718653
     Pfusion [MW]: 281.16754818871385
        Ti0 [keV]: 17.650976001079492
        Te0 [keV]: 18.420359207670423
   ne0 [10²⁰ m⁻³]: 0.9063356785563534














Calls: 377    Time: 0:00:05
            error: 3.6766746690434853
     Pfusion [MW]: 280.88542127747144
        Ti0 [keV]: 17.65039672036689
        Te0 [keV]: 18.42034038186065
   ne0 [10²⁰ m⁻³]: 0.905649918552344














Calls: 384    Time: 0:00:05
            error: 3.2173983265845885
     Pfusion [MW]: 280.0077180192168
        Ti0 [keV]: 17.651772498650686
        Te0 [keV]: 18.41978628012476
   ne0 [10²⁰ m⁻³]: 0.9042075640728784














Calls: 390    Time: 0:00:05
            error: 2.611985793515157
     Pfusion [MW]: 281.0677757244417
        Ti0 [keV]: 17.65473642423655
        Te0 [keV]: 18.423170787247376
   ne0 [10²⁰ m⁻³]: 0.9064445335993172














Calls: 398    Time: 0:00:06
            error: 2.535818624958958
     Pfusion [MW]: 275.2324133489908
        Ti0 [keV]: 17.770360484809256
        Te0 [keV]: 18.442210584584153
   ne0 [10²⁰ m⁻³]: 0.9059860024516085














Calls: 406    Time: 0:00:06
            error: 1.4497856390710036
     Pfusion [MW]: 263.01995041875153
        Ti0 [keV]: 18.216399438858552
        Te0 [keV]: 18.5661303677737
   ne0 [10²⁰ m⁻³]: 0.9082893757445856














Calls: 413    Time: 0:00:06
            error: 1.0452580191563234
     Pfusion [MW]: 267.54851854766446
        Ti0 [keV]: 18.108323336055218
        Te0 [keV]: 18.575497597695275
   ne0 [10²⁰ m⁻³]: 0.9085713110190722














Calls: 420    Time: 0:00:06
            error: 0.6920376805474069
     Pfusion [MW]: 268.6995921252891
        Ti0 [keV]: 18.137815260078245
        Te0 [keV]: 18.60938848751138
   ne0 [10²⁰ m⁻³]: 0.9112260241682503














Calls: 425    Time: 0:00:06
            error: 0.7408136010918898
     Pfusion [MW]: 271.85201783344377
        Ti0 [keV]: 18.053515717792823
        Te0 [keV]: 18.61893349037101
   ne0 [10²⁰ m⁻³]: 0.9102536839187498














Calls: 433    Time: 0:00:06
            error: 0.7024991472040427
     Pfusion [MW]: 273.0310606898645
        Ti0 [keV]: 18.02500438696652
        Te0 [keV]: 18.626205087994066
   ne0 [10²⁰ m⁻³]: 0.9099590160571528














Calls: 441    Time: 0:00:06
            error: 0.5217394742953896
     Pfusion [MW]: 272.20228665952396
        Ti0 [keV]: 18.057849248743402
        Te0 [keV]: 18.618919860334255
   ne0 [10²⁰ m⁻³]: 0.9119414820822224














Calls: 448    Time: 0:00:06
            error: 0.4542106674023848
     Pfusion [MW]: 272.10082508583974
        Ti0 [keV]: 18.086311017950262
        Te0 [keV]: 18.627988139110503
   ne0 [10²⁰ m⁻³]: 0.9134107812886332














Calls: 455    Time: 0:00:06
            error: 0.45510688462101495
     Pfusion [MW]: 272.25338798000183
        Ti0 [keV]: 18.072867316360167
        Te0 [keV]: 18.6218383947967
   ne0 [10²⁰ m⁻³]: 0.9129370687283955














Calls: 461    Time: 0:00:07
            error: 0.41605586430141395
     Pfusion [MW]: 272.60772087094625
        Ti0 [keV]: 18.079123641265884
        Te0 [keV]: 18.634490173586418
   ne0 [10²⁰ m⁻³]: 0.9132495363255145














Calls: 469    Time: 0:00:07
            error: 0.3431782940742131
     Pfusion [MW]: 272.76555588951953
        Ti0 [keV]: 18.075717846973955
        Te0 [keV]: 18.635644201020813
   ne0 [10²⁰ m⁻³]: 0.9133096089077105














Calls: 476    Time: 0:00:07
            error: 0.4199761985777052
     Pfusion [MW]: 272.8035014482028
        Ti0 [keV]: 18.070080020111863
        Te0 [keV]: 18.632943175053942
   ne0 [10²⁰ m⁻³]: 0.912934359859417














Calls: 483    Time: 0:00:07
            error: 0.411697204361457
     Pfusion [MW]: 272.64743348981256
        Ti0 [keV]: 18.0713539015809
        Te0 [keV]: 18.626054806072965
   ne0 [10²⁰ m⁻³]: 0.9136766038898082














Calls: 490    Time: 0:00:07
            error: 0.42832323379256415
     Pfusion [MW]: 272.88657747191877
        Ti0 [keV]: 18.066747973734383
        Te0 [keV]: 18.63615142841167
   ne0 [10²⁰ m⁻³]: 0.912515116571019














Calls: 497    Time: 0:00:07
            error: 0.3520753155765923
     Pfusion [MW]: 272.7792813263538
        Ti0 [keV]: 18.076475722901957
        Te0 [keV]: 18.632572893489428
   ne0 [10²⁰ m⁻³]: 0.9138679234000685




actors:    Pedestal
actors:     EPED
actors:    FluxCalculator
actors:     TGLF
actors:     Neoclassical











Calls: 502    Time: 0:00:07
            error: 1.960892703399348
     Pfusion [MW]: 279.7869689988262
        Ti0 [keV]: 17.630675455301134
        Te0 [keV]: 18.449051151814462
   ne0 [10²⁰ m⁻³]: 0.8974766961428751
actors:  Current
actors:   QED
actors:  Equilibrium
actors:   TEQUILA
actors:  --------------- 4/5 @ 205.53%
actors:  HCD
actors:   SimpleEC
actors:   SimpleIC
actors:   NeutralFueling
actors:  Current
actors:   QED
actors:  Pedestal
actors:   EPED
actors:  CoreTransport
actors:   FluxMatcher

Calls: 7    Time: 0:00:00
            error: 1.1211723328553276
     Pfusion [MW]: 268.5063853822539
        Ti0 [keV]: 17.42776248065324
        Te0 [keV]: 18.081264378537668
   ne0 [10²⁰ m⁻³]: 0.9028185357492471














Calls: 16    Time: 0:00:00
            error: 0.5155678212697096
     Pfusion [MW]: 261.1383003640234
        Ti0 [keV]: 17.21704594277894
        Te0 [keV]: 17.699777073739845
   ne0 [10²⁰ m⁻³]: 0.908999613905901














Calls: 24    Time: 0:00:00
            error: 0.3315527298011038
     Pfusion [MW]: 255.5359712108973
        Ti0 [keV]: 17.12357660822984
        Te0 [keV]: 17.501135272606277
   ne0 [10²⁰ m⁻³]: 0.9063694834926118














Calls: 33    Time: 0:00:00
            error: 0.21085112298714984
     Pfusion [MW]: 257.50099543461755
        Ti0 [keV]: 17.150568911101388
        Te0 [keV]: 17.539337479317997
   ne0 [10²⁰ m⁻³]: 0.9088773911151321














Calls: 41    Time: 0:00:00
            error: 0.1613067443214643
     Pfusion [MW]: 257.5832555325109
        Ti0 [keV]: 17.151451405303668
        Te0 [keV]: 17.523720327576612
   ne0 [10²⁰ m⁻³]: 0.9097923066701632














Calls: 49    Time: 0:00:00
            error: 0.1449149060845956
     Pfusion [MW]: 259.71775861094164
        Ti0 [keV]: 17.227739431499018
        Te0 [keV]: 17.585352332525197
   ne0 [10²⁰ m⁻³]: 0.9109909652558289














Calls: 57    Time: 0:00:00
            error: 0.1471704005359011
     Pfusion [MW]: 259.7513623089257
        Ti0 [keV]: 17.22992097349876
        Te0 [keV]: 17.588699941271404
   ne0 [10²⁰ m⁻³]: 0.9108879545365471














Calls: 63    Time: 0:00:00
            error: 0.14292730694291697
     Pfusion [MW]: 259.76012597263065
        Ti0 [keV]: 17.234066605625625
        Te0 [keV]: 17.588154452465286
   ne0 [10²⁰ m⁻³]: 0.9109171327896468














Calls: 72    Time: 0:00:00
            error: 0.14189572022841804
     Pfusion [MW]: 260.04089277227865
        Ti0 [keV]: 17.24484615827137
        Te0 [keV]: 17.5961339258076
   ne0 [10²⁰ m⁻³]: 0.9110546839341431














Calls: 81    Time: 0:00:01
            error: 0.1406010805019913
     Pfusion [MW]: 259.9754801490917
        Ti0 [keV]: 17.2423157565979
        Te0 [keV]: 17.59273313803819
   ne0 [10²⁰ m⁻³]: 0.9111278132482765














Calls: 89    Time: 0:00:01
            error: 0.14075352855056578
     Pfusion [MW]: 259.8363563752832
        Ti0 [keV]: 17.241245442467502
        Te0 [keV]: 17.58945343630033
   ne0 [10²⁰ m⁻³]: 0.9109868012401457














Calls: 97    Time: 0:00:01
            error: 0.13566544639561975
     Pfusion [MW]: 258.9952140490417
        Ti0 [keV]: 17.333279609443863
        Te0 [keV]: 17.57968020393904
   ne0 [10²⁰ m⁻³]: 0.9097219035534716














Calls: 103    Time: 0:00:01
            error: 0.13487035837057101
     Pfusion [MW]: 258.5750777652097
        Ti0 [keV]: 17.38303825445511
        Te0 [keV]: 17.577347755134273
   ne0 [10²⁰ m⁻³]: 0.9090390773547139














Calls: 112    Time: 0:00:01
            error: 0.1309486126543207
     Pfusion [MW]: 258.5170029348565
        Ti0 [keV]: 17.46168490744837
        Te0 [keV]: 17.6201641657157
   ne0 [10²⁰ m⁻³]: 0.9084263808284468














Calls: 121    Time: 0:00:01
            error: 0.11406525795779916
     Pfusion [MW]: 262.4715885169752
        Ti0 [keV]: 17.856063347273786
        Te0 [keV]: 18.032136603955248
   ne0 [10²⁰ m⁻³]: 0.910584323256428














Calls: 129    Time: 0:00:01
            error: 0.09005366271073592
     Pfusion [MW]: 265.924785031362
        Ti0 [keV]: 18.28150378010984
        Te0 [keV]: 18.428743671093727
   ne0 [10²⁰ m⁻³]: 0.9099369365054922














Calls: 136    Time: 0:00:01
            error: 0.08115337503679472
     Pfusion [MW]: 267.0172989677875
        Ti0 [keV]: 18.41465885271308
        Te0 [keV]: 18.556170314838443
   ne0 [10²⁰ m⁻³]: 0.9090731627569885














Calls: 143    Time: 0:00:01
            error: 0.07564383028825544
     Pfusion [MW]: 267.7236680834385
        Ti0 [keV]: 18.47620464608666
        Te0 [keV]: 18.63126372653716
   ne0 [10²⁰ m⁻³]: 0.9085634059763323














Calls: 152    Time: 0:00:02
            error: 0.07147629099683245
     Pfusion [MW]: 268.38899921199504
        Ti0 [keV]: 18.536012069002435
        Te0 [keV]: 18.698754604534226
   ne0 [10²⁰ m⁻³]: 0.9084793738167591














Calls: 161    Time: 0:00:02
            error: 0.06954370745307346
     Pfusion [MW]: 268.81696215562266
        Ti0 [keV]: 18.554305367651818
        Te0 [keV]: 18.734625312611062
   ne0 [10²⁰ m⁻³]: 0.9087623237317057














Calls: 168    Time: 0:00:02
            error: 0.06779911622532002
     Pfusion [MW]: 269.21869537221266
        Ti0 [keV]: 18.578199210783744
        Te0 [keV]: 18.77589378571321
   ne0 [10²⁰ m⁻³]: 0.9087873616975969














Calls: 176    Time: 0:00:02
            error: 0.06308015482657753
     Pfusion [MW]: 269.68396495147954
        Ti0 [keV]: 18.556785188134555
        Te0 [keV]: 18.818134204298353
   ne0 [10²⁰ m⁻³]: 0.9088092933856343














Calls: 182    Time: 0:00:02
            error: 0.054114481910813333
     Pfusion [MW]: 270.7092053010707
        Ti0 [keV]: 18.483041478111524
        Te0 [keV]: 18.886237085631333
   ne0 [10²⁰ m⁻³]: 0.909210615581162














Calls: 191    Time: 0:00:02
            error: 0.0356835691400545
     Pfusion [MW]: 270.8209780000323
        Ti0 [keV]: 18.22656999991351
        Te0 [keV]: 18.81640245861393
   ne0 [10²⁰ m⁻³]: 0.910407331096615














Calls: 200    Time: 0:00:02
            error: 0.034692111415942944
     Pfusion [MW]: 270.7359899244435
        Ti0 [keV]: 18.194166271026138
        Te0 [keV]: 18.79791369982694
   ne0 [10²⁰ m⁻³]: 0.9105580130881837














Calls: 207    Time: 0:00:02
            error: 0.02738794577546587
     Pfusion [MW]: 270.7351803141492
        Ti0 [keV]: 18.08968497638827
        Te0 [keV]: 18.731796001306506
   ne0 [10²⁰ m⁻³]: 0.9104715644039424














Calls: 214    Time: 0:00:02
            error: 0.024524955184118128
     Pfusion [MW]: 270.77411219479643
        Ti0 [keV]: 18.04379668326386
        Te0 [keV]: 18.70636075029433
   ne0 [10²⁰ m⁻³]: 0.9103960755711774














Calls: 221    Time: 0:00:03
            error: 0.023964635002969175
     Pfusion [MW]: 270.7861477542431
        Ti0 [keV]: 18.020254382371487
        Te0 [keV]: 18.69152266622745
   ne0 [10²⁰ m⁻³]: 0.910313161420809














Calls: 229    Time: 0:00:03
            error: 0.022336713080653735
     Pfusion [MW]: 270.72267274126494
        Ti0 [keV]: 18.01542082466471
        Te0 [keV]: 18.68328514766873
   ne0 [10²⁰ m⁻³]: 0.9101650285930086














Calls: 237    Time: 0:00:03
            error: 0.02034260821474062
     Pfusion [MW]: 270.39437877242966
        Ti0 [keV]: 18.00272690565027
        Te0 [keV]: 18.64580838489146
   ne0 [10²⁰ m⁻³]: 0.9095364001238266




actors:    Pedestal
actors:     EPED
actors:    FluxCalculator
actors:     TGLF
actors:     Neoclassical











Calls: 238    Time: 0:00:03
            error: 0.020627947012913324
     Pfusion [MW]: 270.40567385598166
        Ti0 [keV]: 18.002787854499633
        Te0 [keV]: 18.64642108473707
   ne0 [10²⁰ m⁻³]: 0.9095535054086707
actors:  Current
actors:   QED
actors:  Equilibrium
actors:   TEQUILA
actors:  --------------- 5/5 @ 130.73%
┌ Warning: Max number of iterations (5) has been reached with convergence error of (1)[0.337, 0.321, 0.174, 0.103, 0.065](5) compared to threshold of 0.05
└ @ FUSE ~/work/FUSE.jl/FUSE.jl/src/actors/compound/stationary_plasma_actor.jl:208

we can compare equilibrium before and after the self-consistency loop

plot!(peq, dd.equilibrium; label="after")
Example block output

we can compare core_profiles before and after the self-consistency loop

plot!(pcp, dd.core_profiles; label="after")
Example block output

here are the sources

plot(dd.core_sources)
Example block output

and the flux-matched transport

plot(dd.core_transport)
Example block output

HFS sizing actor changes the thickness of the OH and TF layers on the high field side to satisfy current and stresses constraints

plot(dd.build)
FUSE.ActorHFSsizing(dd, act);
plot!(dd.build; cx=false)
Example block output

The stresses on the center stack are stored in the solid_mechanics IDS

plot(dd.solid_mechanics.center_stack.stress)
Example block output

LFS sizing actors change location of the outer TF leg to meet ripple requirements

plot(dd.build)
FUSE.ActorLFSsizing(dd, act);
plot!(dd.build; cx=false)
Example block output

A custom show() method is defined to print the summary of dd.build.layer

dd.build.layer
23×10 DataFrame
 Row │ group   details                            type      ΔR          R_start   R_end     material      area        volume     shape
     │ String  String                             String    Float64     Float64   Float64   String        Float64     Float64    String
─────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1 │ in                                                   1.30751      0.0       1.30751  steel          20.0726      98.9942  rectangle
   2 │ in                                         oh        0.310265     1.30751   1.61777  nb3sn           6.9632      80.5952  rectangle
   3 │ hfs                                        tf        1.68017      1.61777   3.29794  nb3sn_kdemo    42.9246     889.465   convex hull
   4 │ hfs     gap tf vacuum vessel                         0.0          3.29794   3.29794  vacuum          7.46559    490.871   double ellipse
   5 │ hfs     vacuum  outer                      vessel    0.0982993    3.29794   3.39624  steel           3.06115    124.717   negative offset
   6 │ hfs     gap water                                    0.147449     3.39624   3.54369  water           4.47786    182.552   negative offset
   7 │ hfs     vacuum  inner                      vessel    0.0982993    3.54369   3.64199  steel           2.90933    118.686   negative offset
   8 │ hfs     gap high temp shield vacuum vess…            0.00982993   3.64199   3.65182  vacuum          0.287593    11.7359  negative offset
   9 │ hfs     high temp                          shield    0.196599     3.65182   3.84842  steel           5.62432    229.652   negative offset
  10 │ hfs                                        blanket   0.373538     3.84842   4.22196  lithium_lead   20.8557     951.46    negative offset
  11 │ hfs     first                              wall      0.0196599    4.22196   4.24162  tungsten        1.02635     34.1644  offset
  12 │ lhfs                                       plasma    4.51651      4.24162   8.75812  plasma         32.1335    1252.4
  13 │ lfs     first                              wall      0.0196599    8.75812   8.77778  tungsten        1.02635     34.1644  offset
  14 │ lfs                                        blanket   1.17959      8.77778   9.95738  lithium_lead   20.8557     951.46    negative offset
  15 │ lfs     high temp                          shield    0.196599     9.95738  10.154    steel           5.62432    229.652   negative offset
  16 │ lfs     gap high temp shield vacuum vess…            0.0442026   10.154    10.1982   vacuum          0.287593    11.7359  negative offset
  17 │ lfs     vacuum  inner                      vessel    0.0982993   10.1982   10.2965   steel           2.90933    118.686   negative offset
  18 │ lfs     gap water                                    0.147449    10.2965   10.4439   water           4.47786    182.552   negative offset
  19 │ lfs     vacuum  outer                      vessel    0.0982993   10.4439   10.5422   steel           3.06115    124.717   negative offset
  20 │ lfs     gap tf vacuum vessel                         0.775582    10.5422   11.3178   vacuum          7.46559    490.871   double ellipse
  21 │ lfs                                        tf        1.68017     11.3178   12.998    nb3sn_kdemo    42.9246     889.465   convex hull
  22 │ out                                                  1.96599      0.0      14.964    vacuum        164.187     8377.39
  23 │ out                                        cryostat  0.0982993    0.0      15.0623   steel           4.86738    309.732   silo

ActorHFSsizing and ActorLFSsizing only change the layer's thicknesses, so we then need to trigger a build of the 2D cross-sections after them:

FUSE.ActorCXbuild(dd, act);
plot(dd.build)
Example block output

Generate passive structures information (for now the vacuum vessel)

FUSE.ActorPassiveStructures(dd, act)
plot(dd.pf_passive)
Example block output

We can now give the PF coils their final position given the new build

actor = FUSE.ActorPFdesign(dd, act);
plot(actor) # some actors define their own plot
Example block output

With information about both pfactive and pfpassive we can now evaluate vertical stability

FUSE.ActorVerticalStability(dd, act)
IMAS.freeze(dd.mhd_linear)
mhd_linear [DETACHED]
├─ time[0] [s]
└─ time_slice
   └─ 1
      ├─ time ➡ 0 [s]
      └─ toroidal_mode
         ├─ 1
         │  ├─ n_tor0
         │  ├─ perturbation_type
         │  │  ├─ description"Vertical stability margin > 0.15 for stability"
         │  │  └─ name"m_s"
         │  └─ stability_metric ➡ 0.178803
         └─ 2
            ├─ n_tor0
            ├─ perturbation_type
            │  ├─ description"Normalized vertical growth rate < 10 for stability"
            │  └─ name"γτ"
            └─ stability_metric ➡ 6.71595

The ActorNeutronics calculates the heat flux on the first wall

FUSE.ActorNeutronics(dd, act);
p = plot(; layout=2, size=(900, 350))
plot!(p, dd.neutronics.time_slice[].wall_loading, subplot=1)
plot!(p, FUSE.define_neutrons(dd, 100000)[1], dd.equilibrium.time_slice[]; subplot=1, colorbar_entry=false)
plot!(p, dd.neutronics.time_slice[].wall_loading; cx=false, subplot=2, ylabel="")
Example block output

The ActorBlanket will change the thickess of the first wall, breeder, shield, and Li6 enrichment to achieve target TBR

FUSE.ActorBlanket(dd, act);
print_tree(IMAS.freeze(dd.blanket); maxdepth=5)
actors: Blanket
blanket [DETACHED]
├─ module
│  └─ 1
│     ├─ layer
│     │  ├─ 1
│     │  │  ├─ material ➡ "tungsten"
│     │  │  ├─ midplane_thickness ➡ 0.0199578 [m]
│     │  │  └─ name ➡ "lfs first wall"
│     │  ├─ 2
│     │  │  ├─ material ➡ "lithium-lead: Li6/7=90.000%"
│     │  │  ├─ midplane_thickness ➡ 1.27997 [m]
│     │  │  └─ name ➡ "lfs blanket"
│     │  └─ 3
│     │     ├─ material ➡ "steel"
│     │     ├─ midplane_thickness ➡ 0.0959211 [m]
│     │     └─ name ➡ "lfs high temp shield"
│     ├─ name ➡ "blanket"
│     └─ time_slice
│        └─ 1
│           ├─ peak_escape_flux ➡ 199290 [W/m^2]
│           ├─ peak_wall_flux ➡ 902583 [W/m^2]
│           ├─ power_incident_neutrons ➡ 9.66764e+06 [W]
│           ├─ power_incident_radiated ➡ 0 [W]
│           ├─ power_thermal_extracted ➡ 1.16012e+07 [W]
│           ├─ power_thermal_neutrons ➡ 1.16012e+07 [W]
│           ├─ power_thermal_radiated ➡ 0 [W]
│           ├─ time ➡ 0 [s]
│           └─ tritium_breeding_ratio ➡ 1.63959
├─ time ➡ [0] [s]
└─ tritium_breeding_ratio ➡ [0.0732742]

The ActorDivertors actor calculates the divertors heat flux

FUSE.ActorDivertors(dd, act);
print_tree(IMAS.freeze(dd.divertors); maxdepth=4)
actors: Divertors
divertors [DETACHED]
├─ divertor
│  └─ 1
│     ├─ power_black_body
│     │  ├─ data ➡ [0] [W]
│     │  └─ time ➡ [0] [s]
│     ├─ power_conducted
│     │  ├─ data ➡ [1.19644e+08] [W]
│     │  └─ time ➡ [0] [s]
│     ├─ power_convected
│     │  ├─ data ➡ [0] [W]
│     │  └─ time ➡ [0] [s]
│     ├─ power_currents
│     │  ├─ data ➡ [0] [W]
│     │  └─ time ➡ [0] [s]
│     ├─ power_incident
│     │  ├─ data ➡ [3.67253e+07] [W]
│     │  └─ time ➡ [0] [s]
│     ├─ power_neutrals
│     │  ├─ data ➡ [0] [W]
│     │  └─ time ➡ [0] [s]
│     ├─ power_radiated
│     │  ├─ data ➡ [0] [W]
│     │  └─ time ➡ [0] [s]
│     ├─ power_recombination_neutrals
│     │  ├─ data ➡ [0] [W]
│     │  └─ time ➡ [0] [s]
│     ├─ power_recombination_plasma
│     │  ├─ data ➡ [0] [W]
│     │  └─ time ➡ [0] [s]
│     ├─ power_thermal_extracted
│     │  ├─ data ➡ [3.67253e+07] [W]
│     │  └─ time ➡ [0] [s]
│     └─ target
│        ├─ 1
│        │  ⋮
│        │
│        └─ 2
│           ⋮
│
└─ time ➡ [0] [s]

The ActorBalanceOfPlant calculates the optimal cooling flow rates for the heat sources (breeder, divertor, and wall) and get an efficiency for the electricity conversion cycle

FUSE.ActorBalanceOfPlant(dd, act);
IMAS.freeze(dd.balance_of_plant)
balance_of_plant [DETACHED]
├─ Q_plant[0.130476]
├─ power_electric_net[-1.26081e+08] [W]
├─ power_electric_plant_operation
│  ├─ system
│  │  ├─ 1
│  │  │  ├─ index1
│  │  │  ├─ name"HCD"
│  │  │  ├─ power[1e+08] [W]
│  │  │  └─ subsystem
│  │  │     ├─ 1
│  │  │     │  ├─ index1
│  │  │     │  ├─ name"nbi"
│  │  │     │  └─ power[0] [W]
│  │  │     ├─ 2
│  │  │     │  ├─ index2
│  │  │     │  ├─ name"ec_launchers"
│  │  │     │  └─ power[5e+07] [W]
│  │  │     ├─ 3
│  │  │     │  ├─ index3
│  │  │     │  ├─ name"ic_antennas"
│  │  │     │  └─ power[5e+07] [W]
│  │  │     └─ 4
│  │  │        ├─ index4
│  │  │        ├─ name"lh_antennas"
│  │  │        └─ power[0] [W]
│  │  ├─ 2
│  │  │  ├─ index3
│  │  │  ├─ name"cryostat"
│  │  │  └─ power[3e+07] [W]
│  │  ├─ 3
│  │  │  ├─ index4
│  │  │  ├─ name"tritium_handling"
│  │  │  └─ power[1.5e+07] [W]
│  │  └─ 4
│  │     ├─ index6
│  │     ├─ name"pf_active"
│  │     └─ power[0] [W]
│  └─ total_power[1.45e+08] [W]
├─ power_plant
│  ├─ heat_load
│  │  ├─ breeder[1.16012e+07] [W]
│  │  ├─ divertor[3.67253e+07] [W]
│  │  └─ wall[3.49885e+07] [W]
│  ├─ power_cycle_type"rankine"
│  ├─ power_electric_generated[1.8919e+07] [W]
│  └─ total_heat_supplied[8.3315e+07] [W]
├─ thermal_efficiency_plant[0.227078]
└─ time[0] [s]

ActorCosting will break down the capital and operational costs

FUSE.ActorCosting(dd, act)
plot(dd.costing)
Example block output

Let's checkpoint our results

@checkin :manual dd ini act

Whole facility design

Here we restore the :init checkpoint that we had previously stored. Resetting any changes to dd, ini, and act that we did in the meantime.

@checkout :init dd ini act

Actors can call other actors, creating workflows. For example, the ActorWholeFacility can be used to to get a self-consistent stationary whole facility design.

FUSE.ActorWholeFacility(dd, act);
actors: WholeFacility
actors:  PFdesign
actors:  StationaryPlasma
actors:   --------------- 1/5
actors:   HCD
actors:    SimpleEC
actors:    SimpleIC
actors:    NeutralFueling
actors:   Current
actors:    QED
actors:   Pedestal
actors:    EPED
actors:   CoreTransport
actors:    FluxMatcher
actors:     Pedestal
actors:      EPED
actors:     FluxCalculator
actors:      TGLF
actors:      Neoclassical
actors:   Current
actors:    QED
actors:   Equilibrium
actors:    TEQUILA
actors:   --------------- 1/5 @ 670.13%
actors:   HCD
actors:    SimpleEC
actors:    SimpleIC
actors:    NeutralFueling
actors:   Current
actors:    QED
actors:   Pedestal
actors:    EPED
actors:   CoreTransport
actors:    FluxMatcher
actors:     Pedestal
actors:      EPED
actors:     FluxCalculator
actors:      TGLF
actors:      Neoclassical
actors:   Current
actors:    QED
actors:   Equilibrium
actors:    TEQUILA
actors:   --------------- 2/5 @ 628.46%
actors:   HCD
actors:    SimpleEC
actors:    SimpleIC
actors:    NeutralFueling
actors:   Current
actors:    QED
actors:   Pedestal
actors:    EPED
actors:   CoreTransport
actors:    FluxMatcher
actors:     Pedestal
actors:      EPED
actors:     FluxCalculator
actors:      TGLF
actors:      Neoclassical
actors:   Current
actors:    QED
actors:   Equilibrium
actors:    TEQUILA
actors:   --------------- 3/5 @ 348.16%
actors:   HCD
actors:    SimpleEC
actors:    SimpleIC
actors:    NeutralFueling
actors:   Current
actors:    QED
actors:   Pedestal
actors:    EPED
actors:   CoreTransport
actors:    FluxMatcher
actors:     Pedestal
actors:      EPED
actors:     FluxCalculator
actors:      TGLF
actors:      Neoclassical
actors:   Current
actors:    QED
actors:   Equilibrium
actors:    TEQUILA
actors:   --------------- 4/5 @ 249.76%
actors:   HCD
actors:    SimpleEC
actors:    SimpleIC
actors:    NeutralFueling
actors:   Current
actors:    QED
actors:   Pedestal
actors:    EPED
actors:   CoreTransport
actors:    FluxMatcher
actors:     Pedestal
actors:      EPED
actors:     FluxCalculator
actors:      TGLF
actors:      Neoclassical
actors:   Current
actors:    QED
actors:   Equilibrium
actors:    TEQUILA
actors:   --------------- 5/5 @ 148.59%
┌ Warning: Max number of iterations (5) has been reached with convergence error of (1)[0.335, 0.314, 0.174, 0.125, 0.074](5) compared to threshold of 0.05
└ @ FUSE ~/work/FUSE.jl/FUSE.jl/src/actors/compound/stationary_plasma_actor.jl:208
actors:  HFSsizing
actors:   FluxSwing
actors:   Stresses
actors:  LFSsizing
actors:  CXbuild
actors:  PFdesign
actors:  Equilibrium
actors:   TEQUILA
actors:  CXbuild
actors:  Neutronics
actors:  Blanket
actors:  CXbuild
actors:  PassiveStructures
actors:  Divertors
actors:  PlasmaLimits
actors:   VerticalStability
actors:   TroyonBetaNN
actors:  BalanceOfPlant
actors:   ThermalPlant
actors:   PowerNeeds
actors:  Costing
actors:   CostingARIES

Let's check what we got at a glance with the FUSE.digest(dd) function:

FUSE.digest(dd)
GEOMETRY                                EQUILIBRIUM                             TEMPERATURES
────────────────────────────────────    ────────────────────────────────────    ────────────────────────────────────
R0 → 6.5 [m]                            B0 → 7.8 [T]                            Te0 → 18.6 [keV]
a → 2.01 [m]                            ip → 12.7 [MA]                          Ti0 → 18.1 [keV]
1/ϵ → 3.24                              q95 → 6.12                              <Te> → 8.65 [keV]
κ → 2                                   <Bpol> → 0.802 [T]                      <Ti> → 7.86 [keV]
δ → 0.588                               βpol_MHD → 0.77                         Te0/<Te> → 2.15
ζ → -0.0136                             βtor_MHD → 0.00841                      Ti0/<Ti> → 2.31
Volume → 931 [m³]                       βn_MHD → 1.03
Surface → 759 [m²]

DENSITIES                               PRESSURES                               TRANSPORT
────────────────────────────────────    ────────────────────────────────────    ────────────────────────────────────
ne0 → 9.04e+19 [m⁻³]                    P0 → 0.503 [MPa]                        τe → 2.37 [s]
ne_ped → 6.74e+19 [m⁻³]                 <P> → 0.204 [MPa]                       τe_exp → 1.83 [s]
ne_line → 8.26e+19 [m⁻³]                P0/<P> → 2.46                           H98y2 → 0.862
<ne> → 7.56e+19 [m⁻³]                   βn → 1.04                               H98y2_exp → 0.796
ne0/<ne> → 1.2                          βn_th → 1.04                            Hds03 → 0.642
fGW → 0.821                                                                     Hds03_exp → 0.572
zeff_ped → 2                                                                    τα_thermalization → 0.891 [s]
<zeff> → 2                                                                      τα_slowing_down → 0.989 [s]
impurities → DT Ne20 He4

SOURCES                                 EXHAUST                                 CURRENTS
────────────────────────────────────    ────────────────────────────────────    ────────────────────────────────────
Pec → 50 [MW]                           Psol → 120 [MW]                         ip_bs_aux_ohm → 13 [MA]
rho0_ec → 0.56 [MW]                     PLH → 134 [MW]                          ip_ni → 6.62 [MA]
Pnbi → NaN [MW]                         Bpol_omp → 1.11 [T]                     ip_bs → 3.05 [MA]
Enbi1 → NaN [MeV]                       λq → 0.978 [mm]                         ip_aux → 3.57 [MA]
Pic → 50 [MW]                           qpol → 2.3e+03 [MW/m²]                  ip_ohm → 6.36 [MA]
Plh → NaN [MW]                          qpar → 1.26e+04 [MW/m²]                 ejima → 0.4
Paux_tot → 100 [MW]                     P/R0 → 18.4 [MW/m]                      flattop → 0.7 [Hours]
Pα → 54.4 [MW]                          PB/R0 → 144 [MW T/m]
Pohm → 0.518 [MW]                       PBp/R0 → 14.8 [MW T/m]
Pheat → 155 [MW]                        PBϵ/R0q95 → 7.26 [MW T/m]
Prad_tot → -35 [MW]                     neutrons_peak → 0.361 [MW/m²]

BOP                                     BUILD                                   COSTING
────────────────────────────────────    ────────────────────────────────────    ────────────────────────────────────
Pfusion → 272 [MW]                      PF_material → nb3sn                     capital_cost → 6.74 [$B]
Qfusion → 2.72                          TF_material → nb3sn_kdemo               levelized_CoE → Inf [$/kWh]
thermal_cycle_type → rankine            OH_material → nb3sn                     TF_of_total → 17.4 [%]
thermal_efficiency_plant → 22.7 [%]     TF_max_b → 15.4 [T]                     BOP_of_total → 1.79 [%]
thermal_efficiency_cycle → NaN [%]      OH_max_b → 16 [T]                       blanket_of_total → 20.6 [%]
power_electric_generated → 18.3 [MW]    TF_j_margin → 6.67                      cryostat_of_total → 3.02 [%]
Pelectric_net → -127 [MW]               OH_j_margin → 1.4
Qplant → 0.126                          TF_stress_margin → 3.02
TBR → 0.0779                            OH_stress_margin → 1.2

@ time = 0.0 [s]
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
GKS: could not find font middle.ttf
​
​
​

Like before we can checkpoint results for later use

@checkin :awf dd ini act

Getting into the weeds

Saving and loading data

tutorial_temp_dir = tempdir()
filename = joinpath(tutorial_temp_dir, "$(ini.general.casename).json")
"/tmp/K-DEMO.json"

When saving data to be shared outside of FUSE, one can set freeze=true so that all expressions in the dd are evaluated and saved to file.

IMAS.imas2json(dd, filename; freeze=false, strict=false);

Load from JSON

dd1 = IMAS.json2imas(filename);

Exploring the data dictionary

  • FUSE stores data following the IMAS data schema.
  • The root of the data structure is dd, which stands for "Data Dictionary".
  • More details are available in the documentation.

Display part of the equilibrium data in dd

dd.equilibrium.time_slice[1].boundary
boundary
├─ elongation ➡ 1.999
├─ elongation_lowerFunction
├─ elongation_upperFunction
├─ geometric_axis
│  ├─ r ➡ 6.49987 [m]
│  └─ z ➡ 0.0124918 [m]
├─ minor_radius ➡ 2.00734 [m]
├─ outline
│  ├─ r243-element Vector{Float64} [m]
│  │      min:4.51   avg:6.25   max:8.49
│  └─ z243-element Vector{Float64} [m]min:-4.17   avg:-0.0578   max:3.92
├─ ovality ➡ 0.00572603
├─ psi ➡ -0.77774 [Wb]
├─ squareness ➡ -0.0135544
├─ squareness_lower_innerFunction
├─ squareness_lower_outerFunction
├─ squareness_upper_innerFunction
├─ squareness_upper_outerFunction
├─ strike_point
│  ├─ 1
│  │  ├─ last_closed_flux_surface_gap ➡ 1.18848e-08 [m]
│  │  ├─ r ➡ 4.22388 [m]
│  │  └─ z ➡ -4.50536 [m]
│  └─ 2
│     ├─ last_closed_flux_surface_gap ➡ 1.18848e-08 [m]
│     ├─ r ➡ 5.53904 [m]
│     └─ z ➡ -5.16421 [m]
├─ tilt ➡ -0.00162958
├─ triangularity ➡ 0.587596
├─ triangularity_lowerFunction
├─ triangularity_upperFunction
├─ twist ➡ 0.00165424
└─ x_point
   ├─ 1
   │  ├─ r ➡ 5.09059 [m]
   │  └─ z ➡ -4.14955 [m]
   └─ 2
      ├─ r ➡ 4.86111 [m]
      └─ z ➡ 4.37247 [m]

this can be done up to a certain depth with print_tree

print_tree(dd.equilibrium.time_slice[1].boundary; maxdepth=1)
boundary
├─ elongation ➡ 1.999
├─ elongation_lower ➡ Function
├─ elongation_upper ➡ Function
├─ geometric_axis
│  ⋮
│
├─ minor_radius ➡ 2.00734 [m]
├─ outline
│  ⋮
│
├─ ovality ➡ 0.00572603
├─ psi ➡ -0.77774 [Wb]
├─ squareness ➡ -0.0135544
├─ squareness_lower_inner ➡ Function
├─ squareness_lower_outer ➡ Function
├─ squareness_upper_inner ➡ Function
├─ squareness_upper_outer ➡ Function
├─ strike_point
│  ⋮
│
├─ tilt ➡ -0.00162958
├─ triangularity ➡ 0.587596
├─ triangularity_lower ➡ Function
├─ triangularity_upper ➡ Function
├─ twist ➡ 0.00165424
└─ x_point
   ⋮

Plotting data from dd

FUSE uses Plots.jl recipes for visualizing data from dd.

This allows different plots to be shown when calling plot() on different items in the data structure.

Learn more about Plots.jl here

For example plotting the equilibrium...

plot(dd.equilibrium)
Example block output

...or the core profiles

plot(dd.core_profiles)
Example block output

Whant to know what arguments can be passed? use help_plot() function

help_plot(dd.equilibrium; core_profiles_overlay=true, levels_in=21, levels_out=5, show_secondary_separatrix=true, coordinate=:rho_tor_norm)
Example block output

These plots can be composed by calling plot!() instead of plot()

plot(dd.equilibrium; color=:gray, cx=true)
plot!(dd.build.layer)
plot!(dd.pf_active)
plot!(dd.pf_passive)
plot!(dd.pulse_schedule.position_control; color=:red)
Example block output

Plotting an array...

plot(dd.core_profiles.profiles_1d[1].pressure_thermal)
Example block output

...is different from plotting a field from the IDS (which plots the quantity against its coordinate and with units)

plot(dd.core_profiles.profiles_1d[1], :pressure_thermal)
Example block output

Customizing plot attributes:

plot(dd.core_profiles.profiles_1d[1], :pressure_thermal; label="", linewidth=2, color=:red, labelfontsize=25)
Example block output

Use findall(ids, r"...") to search for certain fields. In Julia, string starting with r are regular expressions.

findall(dd, r"\.psi")
[1] dd.core_profiles.profiles_1d[1].grid.psi_norm [101-element Vector{Float64}] (min:0, avg:0.465, max:1)
[2] dd.core_profiles.profiles_1d[1].grid.psi [Wb] [101-element Vector{Float64}] (min:-69, avg:-37.3, max:-0.89)
[3] dd.equilibrium.time_slice[1].boundary.psi [Wb] [Float64] (all:-0.778)
[4] dd.equilibrium.time_slice[1].boundary_separatrix.psi [Wb] [Float64] (all:-0.778)
[5] dd.equilibrium.time_slice[1].global_quantities.psi_boundary [Wb] [Float64] (all:-0.778)
[6] dd.equilibrium.time_slice[1].global_quantities.psi_axis [Wb] [Float64] (all:-73.9)
[7] dd.equilibrium.time_slice[1].profiles_1d.psi_norm [129-element Vector{Float64}] (min:0, avg:0.5, max:1)
[8] dd.equilibrium.time_slice[1].profiles_1d.psi [Wb] [129-element Vector{Float64}] (min:-73.9, avg:-37.4, max:-0.778)
[9] dd.equilibrium.time_slice[1].profiles_2d[1].psi [Wb] [31×13 Matrix{Float64}] (min:-0.038, avg:0.634, max:6.64)
[10] dd.equilibrium.time_slice[1].profiles_2d[2].psi [Wb] [66×129 Matrix{Float64}] (min:-73.9, avg:17.8, max:182)

findall(ids, r"...") can be combined with plot() to plot multiple fields

plot(findall(dd, r"\.psi"))
Example block output

Working with time series

The IMAS data structure supports time-dependent data, and IMAS.jl provides ways to handle time data efficiently.

Each dd has a global_time attribute, which is used throughout FUSE and IMAS to indicate the time at which things should be operate.

dd.global_time
0.0

For the sake of demonstrating handling of time, let's add a new time_slice to the equilibrium.

NOTE: in addition to the usual resize!(ids, n::Int), time dependent arrays of structures can be resized with:

  • resize!(ids) which will add a time-slice at the current global time (this is what you want to use in most cases)
  • resize!(ids, time0) which will add a time-slice at time0 seconds

resize the time dependent array of structure

resize!(dd.equilibrium.time_slice, 1.0);

let's just populate it with the data from the previous time slice

dd.equilibrium.time_slice[2] = deepcopy(dd.equilibrium.time_slice[1]);
dd.equilibrium.time_slice[2].time = 1.0
1.0

Here we see that equilibrium has mulitiple time_slices

dd.equilibrium.time
2-element Vector{Float64}:
 0.0
 1.0

We can access time-dependent arrays of structures via integer index...

eqt = dd.equilibrium.time_slice[2]
eqt.time
1.0

...or at a given time, by passing the time as a floating point number (in seconds)

eqt = dd.equilibrium.time_slice[1.0]
eqt.time
1.0

NOTE: If we ask a time that is not exactly in the arrays of structures, we'll get the closest (causal!) time-slice

eqt = dd.equilibrium.time_slice[0.9]
eqt.time

eqt = dd.equilibrium.time_slice[1.1]
eqt.time
1.0

... or at the current dd.global_time by leaving the square brackets empty []

NOTE: using [] is what you want to use in most situations that involve time-dependent arrays of structures!

dd.global_time = 0.0
eqt = dd.equilibrium.time_slice[]
eqt.time

dd.global_time = 1.0
eqt = dd.equilibrium.time_slice[]
eqt.time
1.0

What we described above was for time-dependent arrays of structures.

The other place where time comes in, is when dealing with time-dependent arrays of data.

In this case, we can use the @ddtime macro to manipulate these time-dependent arrays at dd.global_time.

NOTE: Also in this case, @ddtime will operate on the closest (causal!) time point

dd.equilibrium.vacuum_toroidal_field.b0

dd.global_time = 1.0
@ddtime(dd.equilibrium.vacuum_toroidal_field.b0 = 10.0)
dd.equilibrium.vacuum_toroidal_field.b0

dd.global_time = 0.0
@ddtime(dd.equilibrium.vacuum_toroidal_field.b0)

dd.global_time = 1.0
@ddtime(dd.equilibrium.vacuum_toroidal_field.b0)
10.0

Expressions in dd

Some fields in the data dictionary are expressions (ie. Functions). For example dd.core_profiles.profiles_1d[].pressure is dynamically calculated as the product of thermal densities and temperature with addition of fast ions contributions

dd.global_time = 0.0
print_tree(dd.core_profiles.profiles_1d[]; maxdepth=1)
1
├─ conductivity_parallel ➡ Function [ohm^-1.m^-1]
├─ electrons
│  ⋮
│
├─ grid
│  ⋮
│
├─ ion
│  ⋮
│
├─ j_bootstrap ➡ 101-element Vector{Float64} [A/m^2]
│                min:378   avg:1.12e+05   max:5.63e+05
├─ j_non_inductive ➡ 101-element Vector{Float64} [A/m^2]
│                    min:2.96e+03   avg:4.91e+05   max:1.31e+06
├─ j_ohmic ➡ 101-element Vector{Float64} [A/m^2]
│            min:972   avg:3.81e+05   max:6.56e+05
├─ j_tor ➡ 101-element Vector{Float64} [A/m^2]
│          min:8.18e+03   avg:8.66e+05   max:1.98e+06
├─ j_total ➡ 101-element Vector{Float64} [A/m^2]
│            min:9.1e+03   avg:8.73e+05   max:1.96e+06
├─ neutral
│  ⋮
│
├─ pressure ➡ Function [Pa]
├─ pressure_ion_total ➡ Function [Pa]
├─ pressure_parallel ➡ Function [Pa]
├─ pressure_perpendicular ➡ Function [Pa]
├─ pressure_thermal ➡ Function [Pa]
├─ rotation_frequency_tor_sonic ➡ 101-element Vector{Float64} [s^-1]
│                                 all:0
├─ t_i_average ➡ Function [eV]
├─ time ➡ 0 [s]
└─ zeff ➡ 101-element Vector{Float64}
          all:2

accessing a dynamic expression, automatically evaluates it

dd.core_profiles.profiles_1d[].conductivity_parallel
101-element Vector{Float64}:
      1.5965042990819001e9
      1.5539525714417021e9
      1.4967376240114691e9
      1.4372326642469559e9
      1.3769142969231076e9
      1.3161803643176403e9
      1.2666353881417987e9
      1.223459160721668e9
      1.1841141009344788e9
      1.149791354579876e9
      ⋮
      9.501250880529523e7
      7.898892055174997e7
      6.242582877860529e7
      4.665292944358043e7
      3.2737812452158187e7
      2.1292972756236613e7
      1.236132513568004e7
      5.573991582842473e6
 659144.8608666097

In addition to evaluating expressions by accessing them, expressions in the tree can be evaluated using IMAS.freeze(ids)

NOTE: IMAS.freeze(ids, field::Symbol) works on a single field and IMAS.refreeze!(ids, field) forces re-evaluation of an expression. Also, IMAS.empty!(ids, field::Symbol) can be used to revert a frozen field back into an expression.

print_tree(IMAS.freeze(dd.core_profiles.profiles_1d[1]); maxdepth=1)
profiles_1d [DETACHED]
├─ conductivity_parallel ➡ 101-element Vector{Float64} [ohm^-1.m^-1]
│                          min:6.59e+05   avg:4.69e+08   max:1.6e+09
├─ electrons
│  ⋮
│
├─ grid
│  ⋮
│
├─ ion
│  ⋮
│
├─ j_bootstrap ➡ 101-element Vector{Float64} [A/m^2]
│                min:378   avg:1.12e+05   max:5.63e+05
├─ j_non_inductive ➡ 101-element Vector{Float64} [A/m^2]
│                    min:2.96e+03   avg:4.91e+05   max:1.31e+06
├─ j_ohmic ➡ 101-element Vector{Float64} [A/m^2]
│            min:972   avg:3.81e+05   max:6.56e+05
├─ j_tor ➡ 101-element Vector{Float64} [A/m^2]
│          min:8.18e+03   avg:8.66e+05   max:1.98e+06
├─ j_total ➡ 101-element Vector{Float64} [A/m^2]
│            min:9.1e+03   avg:8.73e+05   max:1.96e+06
├─ neutral
│  ⋮
│
├─ pressure ➡ 101-element Vector{Float64} [Pa]
│             min:430   avg:2.7e+05   max:5.03e+05
├─ pressure_ion_total ➡ 101-element Vector{Float64} [Pa]
│                       min:205   avg:1.22e+05   max:2.34e+05
├─ pressure_parallel ➡ 101-element Vector{Float64} [Pa]
│                      min:143   avg:9e+04   max:1.68e+05
├─ pressure_perpendicular ➡ 101-element Vector{Float64} [Pa]
│                           min:143   avg:9e+04   max:1.68e+05
├─ pressure_thermal ➡ 101-element Vector{Float64} [Pa]
│                     min:430   avg:2.7e+05   max:5.03e+05
├─ rotation_frequency_tor_sonic ➡ 101-element Vector{Float64} [s^-1]
│                                 all:0
├─ t_i_average ➡ 101-element Vector{Float64} [eV]
│                min:85.1   avg:1.01e+04   max:1.81e+04
├─ time ➡ 0 [s]
└─ zeff ➡ 101-element Vector{Float64}
          all:2

Comparing two IDSs

We can introduce a change in the dd1 and spot it with the diff function

dd1.equilibrium.time_slice[1].time = -100.0
IMAS.diff(dd.equilibrium, dd1.equilibrium)
Dict{String, String} with 3 entries:
  "time"                     => "length:  2 --  1"
  "vacuum_toroidal_field.b0" => "length:  2 --  1"
  "time_slice"               => "length:  2 --  1"

Summary

Snapshot of dd in 0D quantities (evaluated at dd.global_time).

Extract + plots saved to PDF (printed to screen if filename is omitted). NOTE: For PDF creation to work, one may need to install of DejaVu Sans Mono font.

filename = joinpath(tutorial_temp_dir, "$(ini.general.casename).pdf")
display(filename)
FUSE.digest(dd)#, filename)
GEOMETRY                                EQUILIBRIUM                             TEMPERATURES
────────────────────────────────────    ────────────────────────────────────    ────────────────────────────────────
R0 → 6.5 [m]                            B0 → 7.8 [T]                            Te0 → 18.6 [keV]
a → 2.01 [m]                            ip → 12.7 [MA]                          Ti0 → 18.1 [keV]
1/ϵ → 3.24                              q95 → 6.12                              <Te> → 8.65 [keV]
κ → 2                                   <Bpol> → 0.802 [T]                      <Ti> → 7.86 [keV]
δ → 0.588                               βpol_MHD → 0.77                         Te0/<Te> → 2.15
ζ → -0.0136                             βtor_MHD → 0.00841                      Ti0/<Ti> → 2.31
Volume → 931 [m³]                       βn_MHD → 1.03
Surface → 759 [m²]

DENSITIES                               PRESSURES                               TRANSPORT
────────────────────────────────────    ────────────────────────────────────    ────────────────────────────────────
ne0 → 9.04e+19 [m⁻³]                    P0 → 0.503 [MPa]                        τe → 2.37 [s]
ne_ped → 6.74e+19 [m⁻³]                 <P> → 0.204 [MPa]                       τe_exp → 1.83 [s]
ne_line → 8.26e+19 [m⁻³]                P0/<P> → 2.46                           H98y2 → 0.862
<ne> → 7.56e+19 [m⁻³]                   βn → 1.04                               H98y2_exp → 0.796
ne0/<ne> → 1.2                          βn_th → 1.04                            Hds03 → 0.642
fGW → 0.821                                                                     Hds03_exp → 0.572
zeff_ped → 2                                                                    τα_thermalization → 0.891 [s]
<zeff> → 2                                                                      τα_slowing_down → 0.989 [s]
impurities → DT Ne20 He4

SOURCES                                 EXHAUST                                 CURRENTS
────────────────────────────────────    ────────────────────────────────────    ────────────────────────────────────
Pec → 50 [MW]                           Psol → 120 [MW]                         ip_bs_aux_ohm → 13 [MA]
rho0_ec → 0.56 [MW]                     PLH → 134 [MW]                          ip_ni → 6.62 [MA]
Pnbi → NaN [MW]                         Bpol_omp → 1.11 [T]                     ip_bs → 3.05 [MA]
Enbi1 → NaN [MeV]                       λq → 0.978 [mm]                         ip_aux → 3.57 [MA]
Pic → 50 [MW]                           qpol → 2.3e+03 [MW/m²]                  ip_ohm → 6.36 [MA]
Plh → NaN [MW]                          qpar → 1.26e+04 [MW/m²]                 ejima → 0.4
Paux_tot → 100 [MW]                     P/R0 → 18.4 [MW/m]                      flattop → 0.7 [Hours]
Pα → 54.4 [MW]                          PB/R0 → 144 [MW T/m]
Pohm → 0.518 [MW]                       PBp/R0 → 14.8 [MW T/m]
Pheat → 155 [MW]                        PBϵ/R0q95 → 7.26 [MW T/m]
Prad_tot → -35 [MW]                     neutrons_peak → 0.361 [MW/m²]

BOP                                     BUILD                                   COSTING
────────────────────────────────────    ────────────────────────────────────    ────────────────────────────────────
Pfusion → 272 [MW]                      PF_material → nb3sn                     capital_cost → 6.74 [$B]
Qfusion → 2.72                          TF_material → nb3sn_kdemo               levelized_CoE → Inf [$/kWh]
thermal_cycle_type → rankine            OH_material → nb3sn                     TF_of_total → 17.4 [%]
thermal_efficiency_plant → 22.7 [%]     TF_max_b → 15.4 [T]                     BOP_of_total → 1.79 [%]
thermal_efficiency_cycle → NaN [%]      OH_max_b → 16 [T]                       blanket_of_total → 20.6 [%]
power_electric_generated → 18.3 [MW]    TF_j_margin → 6.67                      cryostat_of_total → 3.02 [%]
Pelectric_net → -127 [MW]               OH_j_margin → 1.4
Qplant → 0.126                          TF_stress_margin → 3.02
TBR → 0.0779                            OH_stress_margin → 1.2

@ time = 0.0 [s]
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​