From 4df16a7254a6e76e13578c5313c4b064581bfb0d Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 17:53:40 +0000 Subject: [PATCH 01/15] initial physics_variables --- source/fortran/physics_variables.f90 | 36 +++++++++++++--------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/source/fortran/physics_variables.f90 b/source/fortran/physics_variables.f90 index 1a06f384c9..a64dc92391 100644 --- a/source/fortran/physics_variables.f90 +++ b/source/fortran/physics_variables.f90 @@ -49,7 +49,7 @@ module physics_variables !! multiplier for beam-background fusion calculation real(dp) :: beta - !! total plasma beta (`iteration variable 5`) (calculated if `ipedestal=3` or stellarator) + !! total plasma beta (`iteration variable 5`) (calculated if stellarator) real(dp) :: betaft !! fast alpha beta component @@ -101,7 +101,7 @@ module physics_variables !! vertical stability (`constraint equation 23`) real(dp) :: dene - !! electron density (/m3) (`iteration variable 6`) (calculated if `ipedestal=3`) + !! electron density (/m3) (`iteration variable 6`) real(dp) :: deni !! fuel ion density (/m3) @@ -147,10 +147,10 @@ module physics_variables !! high Z ion density (/m3) real(dp) :: gradient_length_ne - !! Max. normalized gradient length in el. density (ipedestal==0 only) (1) + !! Max. normalized gradient length in el. density (ipedestal==0 only) real(dp) :: gradient_length_te - !! Max. normalized gradient length in el. temperature (ipedestal==0 only) (1) + !! Max. normalized gradient length in el. temperature (ipedestal==0 only) real(dp), parameter :: ealphadt = 3520.0D0 !! alpha birth energy in D-T reaction (keV) @@ -190,12 +190,12 @@ module physics_variables real(dp) :: fgwped !! fraction of Greenwald density to set as pedestal-top density. If `<0`, pedestal-top - !! density set manually using neped (`ipedestal>=1`). Needs to be `>0` if `ipedestal = 3`. + !! density set manually using neped (`ipedestal==1`). !! (`iteration variable 145`) real(dp) :: fgwsep !! fraction of Greenwald density to set as separatrix density. If `<0`, separatrix - !! density set manually using nesep (`ipedestal>=1`). Needs to be `>0` if `ipedestal = 3`. + !! density set manually using nesep (`ipedestal==1`). !! (`iteration variable 152`) real(dp) :: fhe3 @@ -243,8 +243,7 @@ module physics_variables !! H factors for an ignited plasma for each energy confinement time scaling law real(dp) :: hfact - !! H factor on energy confinement times, radiation corrected (`iteration variable 10`). If - !! `ipedestal=2,3` and `hfact=0`, not used in PLASMOD (see also `plasmod_i_modeltype`) issue #219 + !! H factor on energy confinement times, radiation corrected (`iteration variable 10`). real(dp) :: taumax !! Maximum allowed energy confinement time (s) @@ -330,8 +329,6 @@ module physics_variables !! !! - =0 use original parabolic profiles !! - =1 use pedestal profile - !! - =2 use pedestal profiles and run PLASMOD on final output - !! - =3 use PLASMOD transport model only to calculate pedestal profiles integer :: ips !! switch for Pfirsch-Schlüter current scaling (issue #413): @@ -351,10 +348,10 @@ module physics_variables !! to mitigate or prevent ELMs real(dp) :: neped - !! electron density of pedestal [m-3] (`ipedestal=1,2, calculated if 3`) + !! electron density of pedestal [m-3] (`ipedestal==1) real(dp) :: nesep - !! electron density at separatrix [m-3] (`ipedestal=1,2, calculated if 3`) + !! electron density at separatrix [m-3] (`ipedestal==1) real(dp) :: alpha_crit !! critical ballooning parameter value @@ -366,10 +363,10 @@ module physics_variables !! plasma resistivity pre-factor real(dp) :: rhopedn - !! r/a of density pedestal (`ipedestal>=1`) + !! r/a of density pedestal (`ipedestal==1`) real(dp) :: rhopedt - !! r/a of temperature pedestal (`ipedestal>=1`) + !! r/a of temperature pedestal (`ipedestal==1`) real(dp) :: rho_te_max !! r/a where the temperature gradient is largest (`ipedestal==0`) @@ -378,13 +375,13 @@ module physics_variables !! r/a where the density gradient is largest (`ipedestal==0`) real(dp) :: tbeta - !! temperature profile index beta (`ipedestal=1,2`) + !! temperature profile index beta (`ipedestal==1) real(dp) :: teped - !! electron temperature of pedestal (keV) (`ipedestal>=1, ieped=0, calculated for ieped=1`) + !! electron temperature of pedestal (keV) (`ipedestal==1, ieped=0, calculated for ieped=1`) real(dp) :: tesep - !! electron temperature at separatrix (keV) (`ipedestal>=1`) calculated if reinke + !! electron temperature at separatrix (keV) (`ipedestal==1`) calculated if reinke !! criterion is used (`icc=78`) integer :: iprofile @@ -396,7 +393,7 @@ module physics_variables integer :: iradloss !! switch for radiation loss term usage in power balance (see User Guide): !! - !! - =0 total power lost is scaling power plus radiation (needed for `ipedestal=2,3`) + !! - =0 total power lost is scaling power plus radiation !! - =1 total power lost is scaling power plus core radiation only !! - =2 total power lost is scaling power only, with no additional !! allowance for radiation. This is not recommended for power plant models. @@ -765,7 +762,7 @@ module physics_variables !! Radiation fraction total = SoL + LCFS radiation / total power deposited in plasma real(dp) :: ralpne - !! thermal alpha density/electron density (`iteration variable 109`) (calculated if `ipedestal=3`) + !! thermal alpha density/electron density (`iteration variable 109`) real(dp) :: protium !! Seeded protium density / electron density. @@ -841,7 +838,6 @@ module physics_variables real(dp) :: te !! volume averaged electron temperature (keV) (`iteration variable 4`) - !! (`calculated if ipedestal=3`) real(dp) :: te0 !! central electron temperature (keV) From 5289539f930236cee32bccb6a4e437178b503896 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 17:56:16 +0000 Subject: [PATCH 02/15] remove build routines in caller.py for ipedestal=3 --- process/caller.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/process/caller.py b/process/caller.py index 9b7d652859..d0be83720a 100644 --- a/process/caller.py +++ b/process/caller.py @@ -64,15 +64,6 @@ def call_models(self, xc): self.models.physics.physics() - # call build subroutines again if PLASMOD used, issue #650 - if ft.physics_variables.ipedestal == 3: - # Radial build - self.models.build.radialb(output=False) - - # TODO: is the vertical build needed again? - # Vertical build - self.models.build.vbuild(output=False) - # startup model (not used) # call startup(ft.constants.nout,0) ! commented-out for speed reasons From dba4e3dffa52d059bf29466428018c4eb247248e Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 18:28:35 +0000 Subject: [PATCH 03/15] removed plasmod condition for NBI --- process/current_drive.py | 42 ++++++++++++---------------------------- 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/process/current_drive.py b/process/current_drive.py index 34958c0be4..73625c3dd4 100644 --- a/process/current_drive.py +++ b/process/current_drive.py @@ -256,21 +256,12 @@ def cudriv(self, output: bool): 0.999, current_drive_variables.forbitloss ) # Should never be needed - if physics_variables.ipedestal != 3: # When not using PLASMOD - pnbitotfix = current_drive_variables.pinjfixmw / ( - 1.0e0 - - current_drive_variables.forbitloss - + current_drive_variables.forbitloss - * current_drive_variables.nbshinef - ) - else: - # Netural beam power calculated by PLASMOD - pnbitotfix = current_drive_variables.pinjmw / ( - 1.0e0 - - current_drive_variables.forbitloss - + current_drive_variables.forbitloss - * current_drive_variables.nbshinef - ) + pnbitotfix = current_drive_variables.pinjfixmw / ( + 1.0e0 + - current_drive_variables.forbitloss + + current_drive_variables.forbitloss + * current_drive_variables.nbshinef + ) # Shinethrough power (atoms that are not ionised) [MW]: nbshinemwfix = pnbitotfix * current_drive_variables.nbshinef @@ -478,21 +469,12 @@ def cudriv(self, output: bool): 0.999, current_drive_variables.forbitloss ) # Should never be needed - if physics_variables.ipedestal != 3: # When not using PLASMOD - current_drive_variables.pnbitot = power1 / ( - 1.0e0 - - current_drive_variables.forbitloss - + current_drive_variables.forbitloss - * current_drive_variables.nbshinef - ) - else: - # Neutral beam power calculated by PLASMOD - current_drive_variables.pnbitot = current_drive_variables.pinjmw / ( - 1.0e0 - - current_drive_variables.forbitloss - + current_drive_variables.forbitloss - * current_drive_variables.nbshinef - ) + current_drive_variables.pnbitot = power1 / ( + 1.0e0 + - current_drive_variables.forbitloss + + current_drive_variables.forbitloss + * current_drive_variables.nbshinef + ) # Shinethrough power (atoms that are not ionised) [MW]: current_drive_variables.nbshinemw = ( From 1bdcd1bbc15ad182392be25d41ab240c61a44946 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 18:30:42 +0000 Subject: [PATCH 04/15] plasmod print in output.py --- process/output.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/process/output.py b/process/output.py index 82afe15a3f..76980cc51b 100644 --- a/process/output.py +++ b/process/output.py @@ -48,10 +48,6 @@ def write(models, outfile): # Writing the output from physics.f90 into OUT.DAT + MFILE.DAT ft.physics_module.outplas(outfile) - # Writing - if ft.physics_variables.ipedestal == 2 or ft.physics_variables.ipedestal == 3: - ft.plasmod_module.outputplasmod(outfile) - # TODO what is this? not in caller.f90 ft.physics_module.igmarcal(outfile) From 5363ef7e949143138d76d43bb9daf651e2ecb45b Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 18:33:17 +0000 Subject: [PATCH 05/15] plasmod remove for process.conf --- process/io/run_process.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/process/io/run_process.conf b/process/io/run_process.conf index 3a4ea25b0f..390f619edb 100644 --- a/process/io/run_process.conf +++ b/process/io/run_process.conf @@ -16,7 +16,7 @@ ORIGINAL_IN_DAT = PROCESS_DIR/RUN_DIR/STEP_IN.DAT * PROCESS= PROCESS_DIR/bin/process.exe * ONE line comment to be put into README.txt -COMMENT = ipedestal = 1, with other variables appropriate for running PLASMOD +COMMENT = * Max no. iterations NITER = 50 From ea3ba28fa649dc8e446c55f29c2113239bb3f81c Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 18:35:35 +0000 Subject: [PATCH 06/15] run_process.conf test plasmod removed --- tests/integration/data/run_process.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/data/run_process.conf b/tests/integration/data/run_process.conf index 9541ee61c2..6a724a9400 100644 --- a/tests/integration/data/run_process.conf +++ b/tests/integration/data/run_process.conf @@ -9,7 +9,7 @@ WDIR = . ORIGINAL_IN_DAT = large_tokamak_IN.DAT * ONE line comment to be put into README.txt -COMMENT = ipedestal = 1, with other variables appropriate for running PLASMOD +COMMENT = * Max no. iterations NITER = 1000 From 8e6cc04049e6b5587d2c6b93a17e38c236f4d95f Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 18:47:43 +0000 Subject: [PATCH 07/15] plasmod removed from ref_dicts.json --- process/physics.py | 1 - tests/integration/ref_dicts.json | 481 +------------------------------ 2 files changed, 5 insertions(+), 477 deletions(-) diff --git a/process/physics.py b/process/physics.py index 6daee8682d..ba12778ebe 100644 --- a/process/physics.py +++ b/process/physics.py @@ -182,7 +182,6 @@ def physics(self): physics_variables.vol, ) - # Profile parameters are meaningless with ipedestal=3 betat = ( physics_variables.beta * physics_variables.btot**2 diff --git a/tests/integration/ref_dicts.json b/tests/integration/ref_dicts.json index f52d191297..3732b554c4 100644 --- a/tests/integration/ref_dicts.json +++ b/tests/integration/ref_dicts.json @@ -3557,94 +3557,6 @@ "plascur": 0.0, "plasipf": 0.0, "plasma_res_factor": 1.0, - "plasmod_Ainc": 1.1, - "plasmod_capA": 0.1, - "plasmod_car_qdivt": 0.0001, - "plasmod_chisaw": 0.0, - "plasmod_chisawpos": -1.0, - "plasmod_contrpovr": 0.0, - "plasmod_contrpovs": 0.0, - "plasmod_cxe_psepfac": 0.0001, - "plasmod_dgy": 1e-05, - "plasmod_dt": 0.01, - "plasmod_dtinc": 2.0, - "plasmod_dtmax": 0.1, - "plasmod_dtmaxmax": 0.0, - "plasmod_dtmaxmin": 0.15, - "plasmod_dtmin": 0.05, - "plasmod_dx_cd": [ - 0.2, - 0.03 - ], - "plasmod_dx_control": [ - 0.2, - 0.03 - ], - "plasmod_dx_fus": [ - 0.2, - 0.03 - ], - "plasmod_dx_heat": [ - 0.2, - 0.03 - ], - "plasmod_eccdeff": 0.3, - "plasmod_eopt": 0.15, - "plasmod_fcdp": -1.0, - "plasmod_fpellet": 0.5, - "plasmod_fradc": -1.0, - "plasmod_gamcdothers": 1.0, - "plasmod_globtau": [ - 5.0, - 5.0, - 7.0, - 5.0, - 1.0 - ], - "plasmod_i_equiltype": 1.0, - "plasmod_i_impmodel": 1.0, - "plasmod_i_modeltype": 1.0, - "plasmod_imptype": [ - 14.0, - 13.0, - 9.0 - ], - "plasmod_iprocess": 1.0, - "plasmod_isawt": 1.0, - "plasmod_maxA": 0.0, - "plasmod_maxpauxor": 20.0, - "plasmod_nbi_energy": 1000.0, - "plasmod_nchannels": 3.0, - "plasmod_nx": 41.0, - "plasmod_nxt": 7.0, - "plasmod_pech": 0.0, - "plasmod_pedscal": 1.0, - "plasmod_pfus": 0.0, - "plasmod_psepplh_sup": 12000.0, - "plasmod_qdivt": 0.0, - "plasmod_qnbi_psepfac": 50.0, - "plasmod_sawpertau": 1e-06, - "plasmod_spellet": 0.0, - "plasmod_test": 1000000.0, - "plasmod_tol": 1e-10, - "plasmod_tolmin": 10.1, - "plasmod_v_loop": -1e-06, - "plasmod_x_cd": [ - 0.0, - 0.0 - ], - "plasmod_x_control": [ - 0.0, - 0.0 - ], - "plasmod_x_fus": [ - 0.0, - 0.0 - ], - "plasmod_x_heat": [ - 0.0, - 0.0 - ], "plhthresh": 0.0, "plhybd": 0.0, "plinepv": 0.0, @@ -9245,7 +9157,6 @@ "cohbop": "Central solenoid overall current density at beginning of pulse (A/m2)", "coheof": "Central solenoid overall current density at end of flat-top (A/m2) (`iteration variable 37`) (`sweep variable 62`)", "coldmass": "total mass of components at cryogenic temperatures (kg)", - "comp": "Derived type containing all composition information for PLASMOD", "comp_eps": "", "comp_eps2": "", "comp_huge": "", @@ -9846,7 +9757,6 @@ "gas_buildings_h": "air & gas supply (amalgamated) buildings length, width, height (m)", "gas_buildings_l": "air & gas supply (amalgamated) buildings length, width, height (m)", "gas_buildings_w": "air & gas supply (amalgamated) buildings length, width, height (m)", - "geom": "Derived type containing all geometry information for PLASMOD", "glag": "", "glaga": "", "gm": "", @@ -9879,7 +9789,7 @@ "helpow": "Heat removal at cryogenic temperature tmpcry (W)", "helpow_cryal": "Heat removal at cryogenic temperature tcoolin (W)", "hfac": "H factors for an ignited plasma for each energy confinement time scaling law", - "hfact": "H factor on energy confinement times, radiation corrected (`iteration variable 10`). If\n `ipedestal=2,3` and `hfact=0`, not used in PLASMOD (see also `plasmod_i_modeltype`) issue #219", + "hfact": "H factor on energy confinement times, radiation corrected (`iteration variable 10`)", "hldiv": "divertor heat load (MW/m2)", "hldivlim": "heat load limit (MW/m2)", "hmax": "maximum (half-)height of TF coil (inside edge) (m)", @@ -9921,7 +9831,6 @@ "i_cp_joints": "Switch for CP demoutable joints type\n -= 0 : Clampled joints\n -= 1 : Sliding joints\n Default value (-1) choses :\n Sliding joints for resistive magnets (i_tf_sup = 0, 2)\n Clampled joints for superconducting magents (i_tf_sup = 1)", "i_cp_lifetime": "Switch for the centrepost lifetime constraint\n 0 : The CP full power year lifetime is set by the user via cplife_input\n 1 : The CP lifetime is equal to the divertor lifetime\n 2 : The CP lifetime is equal to the breeding blankets lifetime\n 3 : The CP lifetime is equal to the plant lifetime", "i_cs_stress": "Switch for CS stress calculation:\n
    \n
  • =0 Hoop stress only
  • \n
  • =1 Hoop + Axial stress
  • \n
", - "i_flag": "Error flag for PLASMOD", "i_pf_current": "Switch for controlling the current of the PF coils:\n
    \n
  • =0 Input via the variables curpfb, curpff, curpfs
  • \n
  • =1 SVD targets zero field across midplane (flux swing\n coils) and the correct vertical field at the plasma\n center (equilibrium coils)
  • \n
", "i_r_cp_top": "Switch selecting the he parametrization of the outer radius of the top of the CP part of the TF coil\n 0 : `r_cp_top` is set by the plasma shape\n 1 : `r_cp_top` is a user input\n 2 : `r_cp_top` is set using the CP top and midplane CP radius ratio", "i_shield_mat": "Switch for shield material - currently only applied in costing routines `cost_model = 2`\n
    \n
  • =0 Tungsten (default)
  • \n
  • =1 Tungsten carbide
  • \n
", @@ -9957,7 +9866,7 @@ "idivrt": "number of divertors (calculated from `i_single_null`)", "iefrf": "Switch for current drive efficiency model:\n
    \n
  • =1 Fenstermacher Lower Hybrid
  • \n
  • =2 Ion Cyclotron current drive
  • \n
  • =3 Fenstermacher ECH
  • \n
  • =4 Ehst Lower Hybrid
  • \n
  • =5 ITER Neutral Beam
  • \n
  • =6 new Culham Lower Hybrid model
  • \n
  • =7 new Culham ECCD model
  • \n
  • =8 new Culham Neutral Beam model
  • \n
  • =9 RFP option removed in PROCESS (issue #508)
  • \n
  • =10 ECRH user input gamma
  • \n
  • =11 ECRH \"HARE\" model (E. Poli, Physics of Plasmas 2019)
  • \n
  • =12 EBW user scaling input. Scaling (S. Freethy)
  • \n
", "iefrffix": "Switch for 2nd current drive efficiency model:\n
    \n
  • =0 No fixed current drive
  • \n
  • =1 Fenstermacher Lower Hybrid
  • \n
  • =2 Ion Cyclotron current drive
  • \n
  • =3 Fenstermacher ECH
  • \n
  • =4 Ehst Lower Hybrid
  • \n
  • =5 ITER Neutral Beam
  • \n
  • =6 new Culham Lower Hybrid model
  • \n
  • =7 new Culham ECCD model
  • \n
  • =8 new Culham Neutral Beam model
  • \n
  • =9 RFP option removed in PROCESS (issue #508)
  • \n
  • =10 ECRH user input gamma
  • \n
  • =11 ECRH \"HARE\" model (E. Poli, Physics of Plasmas 2019)
  • \n
  • =12 EBW user scaling input. Scaling (S. Freethy)
  • \n
", - "ieped": "switch for scaling pedestal-top temperature with plasma parameters (issue #730):\n
    \n
  • =0 set pedestal-top temperature manually using teped
  • \n
  • =1 set pedestal-top temperature using EPED scaling (PLASMOD implementation\n of scaling within PLASMOD, `ipedestal =2,3 (ttps://idm.euro-fusion.org/?uid=2MSZ4T)
  • \n
", + "ieped": "switch for scaling pedestal-top temperature with plasma parameters (issue #730):\n
    \n
  • =0 set pedestal-top temperature manually using teped
  • \n
  • =1 set pedestal-top temperature using EPED scaling", "ifalphap": "switch for fast alpha pressure calculation\n
      \n
    • =0 ITER physics rules (Uckan) fit
    • \n
    • =1 Modified fit (D. Ward) - better at high temperature
    • \n
    ", "ife": "Switch for IFE option:\n
      \n
    • =0 use tokamak, RFP or stellarator model
    • \n
    • =1 use IFE model
    • \n
    ", "ifedrv": "Switch for type of IFE driver:\n
      \n
    • =-1 use gainve, etave for gain and driver efficiency
    • \n
    • =0 use tgain, drveff for gain and driver efficiency
    • \n
    • =1 use laser driver based on SOMBRERO design
    • \n
    • =2 use heavy ion beam driver based on OSIRIS
    • \n
    • =3 Input pfusife, rrin and drveff
    • \n
    ", @@ -9990,7 +9899,7 @@ "impurity_arr_len_tab": "", "impurity_concs": "", "impurity_data": "", - "impurity_enrichment": "Ratio of each impurity concentration in SOL to confined plasma + the enrichment for Argon\n is also propagated for PLASMOD (`ipedestal=3`)", + "impurity_enrichment": "Ratio of each impurity concentration in SOL to confined plasma + the enrichment for Argon\n", "impuritypowerlost": "Power lost due to impurity radiation [W]", "impvar": "", "impvardiv": "Index of impurity to be iterated for Reinke divertor detachment criterion", @@ -9998,7 +9907,6 @@ "info": "", "initialpressure": "initial neutral pressure at the beginning of the dwell phase (Pa)", "inlet_temp": "inlet temperature of blanket coolant (K) (`secondary_cycle>1`)", - "inp0": "Derived type containing miscellaneous input information for PLASMOD", "insstrain": "Radial strain in insulator", "insulation_area": "single turn insulation area (m2)", "int_def": "", @@ -10012,7 +9920,7 @@ "iotabar": "rotational transform (reciprocal of tokamak q) for stellarator confinement time scaling laws", "iotty": "Standard output unit identifier", "ip": "", - "ipedestal": "switch for pedestal profiles:\n
      \n
    • =0 use original parabolic profiles
    • \n
    • =1 use pedestal profile
    • \n
    • =2 use pedestal profiles and run PLASMOD on final output
    • \n
    • =3 use PLASMOD transport model only to calculate pedestal profiles
    • \n
    ", + "ipedestal": "switch for pedestal profiles:\n
      \n
    • =0 use original parabolic profiles
    • \n
    • =1 use pedestal profile
    • ", "ipeqns": "ipeqns FIX : number of constraint equations available", "ipfloc": "Switch for location of PF coil group i:\n
        \n
      • =1 PF coil on top of central solenoid (flux ramp only)
      • \n
      • =2 PF coil on top of TF coil (flux ramp only)
      • \n
      • =3 PF coil outside of TF coil (equilibrium coil)
      • \n
      • =4 PF coil, general location (equilibrium coil)
      • \n
      ", "ipfres": "switch for PF coil type:\n
        \n
      • =0 superconducting PF coils
      • \n
      • =1 resistive PF coils
      • \n
      ", @@ -10095,7 +10003,7 @@ "ksic": "power fraction for outboard double-null scrape-off plasma", "lablcc": "lablcc(ipeqns) : labels describing constraint equations (corresponding itvs)
        \n
        \n
      • ( 1) Beta (consistency equation) (itv 5)\n
      • ( 2) Global power balance (consistency equation) (itv 10,1,2,3,4,6,11)\n
      • ( 3) Ion power balance DEPRECATED (itv 10,1,2,3,4,6,11)\n
      • ( 4) Electron power balance DEPRECATED (itv 10,1,2,3,4,6,11)\n
      • ( 5) Density upper limit (itv 9,1,2,3,4,5,6)\n
      • ( 6) (Epsilon x beta poloidal) upper limit (itv 8,1,2,3,4,6)\n
      • ( 7) Beam ion density (NBI) (consistency equation) (itv 7)\n
      • ( 8) Neutron wall load upper limit (itv 14,1,2,3,4,6)\n
      • ( 9) Fusion power upper limit (itv 26,1,2,3,4,6)\n
      • (10) Toroidal field 1/R (consistency equation) (itv 12,1,2,3,13 )\n
      • (11) Radial build (consistency equation) (itv 3,1,13,16,29,42,61)\n
      • (12) Volt second lower limit (STEADY STATE) (itv 15,1,2,3)\n
      • (13) Burn time lower limit (PULSE) (itv 21,1,16,17,29,42,44,61)\n (itv 19,1,2,3,6)\n
      • (14) Neutral beam decay lengths to plasma centre (NBI) (consistency equation)\n
      • (15) LH power threshold limit (itv 103)\n
      • (16) Net electric power lower limit (itv 25,1,2,3)\n
      • (17) Radiation fraction upper limit (itv 28)\n
      • (18) Divertor heat load upper limit (itv 27)\n
      • (19) MVA upper limit (itv 30)\n
      • (20) Neutral beam tangency radius upper limit (NBI) (itv 33,31,3,13)\n
      • (21) Plasma minor radius lower limit (itv 32)\n
      • (22) Divertor collisionality upper limit (itv 34,43)\n
      • (23) Conducting shell to plasma minor radius ratio upper limit\n (itv 104,1,74)\n
      • (24) Beta upper limit (itv 36,1,2,3,4,6,18)\n
      • (25) Peak toroidal field upper limit (itv 35,3,13,29)\n
      • (26) Central solenoid EOF current density upper limit (ipfres=0)\n (itv 38,37,41,12)\n
      • (27) Central solenoid BOP current density upper limit (ipfres=0)\n (itv 39,37,41,12)\n
      • (28) Fusion gain Q lower limit (itv 45,47,40)\n
      • (29) Inboard radial build consistency (itv 3,1,13,16,29,42,61)\n
      • (30) Injection power upper limit (itv 46,47,11)\n
      • (31) TF coil case stress upper limit (SCTF) (itv 48,56,57,58,59,60,24)\n
      • (32) TF coil conduit stress upper limit (SCTF) (itv 49,56,57,58,59,60,24)\n
      • (33) I_op / I_critical (TF coil) (SCTF) (itv 50,56,57,58,59,60,24)\n
      • (34) Dump voltage upper limit (SCTF) (itv 51,52,56,57,58,59,60,24)\n
      • (35) J_winding pack/J_protection upper limit (SCTF) (itv 53,56,57,58,59,60,24)\n
      • (36) TF coil temperature margin lower limit (SCTF) (itv 54,55,56,57,58,59,60,24)\n
      • (37) Current drive gamma upper limit (itv 40,47)\n
      • (38) First wall coolant temperature rise upper limit (itv 62)\n
      • (39) First wall peak temperature upper limit (itv 63)\n
      • (40) Start-up injection power lower limit (PULSE) (itv 64)\n
      • (41) Plasma current ramp-up time lower limit (PULSE) (itv 66,65)\n
      • (42) Cycle time lower limit (PULSE) (itv 17,67,65)\n
      • (43) Average centrepost temperature\n (TART) (consistency equation) (itv 13,20,69,70)\n
      • (44) Peak centrepost temperature upper limit (TART) (itv 68,69,70)\n
      • (45) Edge safety factor lower limit (TART) (itv 71,1,2,3)\n
      • (46) Equation for Ip/Irod upper limit (TART) (itv 72,2,60)\n
      • (47) NOT USED\n
      • (48) Poloidal beta upper limit (itv 79,2,3,18)\n
      • (49) NOT USED\n
      • (50) IFE repetition rate upper limit (IFE)\n
      • (51) Startup volt-seconds consistency (PULSE) (itv 16,29,3,1)\n
      • (52) Tritium breeding ratio lower limit (itv 89,90,91)\n
      • (53) Neutron fluence on TF coil upper limit (itv 92,93,94)\n
      • (54) Peak TF coil nuclear heating upper limit (itv 95,93,94)\n
      • (55) Vacuum vessel helium concentration upper limit iblanket =2 (itv 96,93,94)\n
      • (56) Pseparatrix/Rmajor upper limit (itv 97,1,3,102)\n
      • (57) NOT USED\n
      • (58) NOT USED\n
      • (59) Neutral beam shine-through fraction upper limit (NBI) (itv 105,6,19,4 )\n
      • (60) Central solenoid temperature margin lower limit (SCTF) (itv 106)\n
      • (61) Minimum availability value (itv 107)\n
      • (62) taup/taueff the ratio of particle to energy confinement times (itv 110)\n
      • (63) The number of ITER-like vacuum pumps niterpump < tfno (itv 111)\n
      • (64) Zeff less than or equal to zeffmax (itv 112)\n
      • (65) Dump time set by VV loads (itv 56, 113)\n
      • (66) Limit on rate of change of energy in poloidal field\n (Use iteration variable 65(tohs), 115)\n
      • (67) Simple Radiation Wall load limit (itv 116, 102, 4,6)\n
      • (68) Psep * Bt / qAR upper limit (itv 117)\n
      • (69) ensure separatrix power = the value from Kallenbach divertor (itv 118)\n
      • (70) ensure that teomp = separatrix temperature in the pedestal profile,\n (itv 119 (tesep))\n
      • (71) ensure that neomp = separatrix density (nesep) x neratio\n
      • (72) central solenoid shear stress limit (Tresca yield criterion) (itv 123 foh_stress)\n
      • (73) Psep >= Plh + Paux (itv 137 (fplhsep))\n
      • (74) TFC quench < tmax_croco (itv 141 (fcqt))\n
      • (75) TFC current/copper area < Maximum (itv 143 f_coppera_m2)\n
      • (76) Eich critical separatrix density\n
      • (77) TF coil current per turn upper limit\n
      • (78) Reinke criterion impurity fraction lower limit (itv 147 freinke)\n
      • (79) Peak CS field upper limit (itv 149 fbmaxcs)\n
      • (80) Divertor power lower limit pdivt (itv 153 fpdivlim)\n
      • (81) Ne(0) > ne(ped) constraint (itv 154 fne0)\n
      • (82) toroidalgap > tftort constraint (itv 171 ftoroidalgap)\n
      • (83) Radial build consistency for stellarators (itv 172 f_avspace)\n
      • (84) Lower limit for beta (itv 173 fbetatry_lower)\n
      • (85) Constraint for CP lifetime\n
      • (86) Constraint for TF coil turn dimension\n
      • (87) Constraint for cryogenic power\n
      • (88) Constraint for TF coil strain absolute value\n
      • (89) Constraint for CS coil quench protection\n
      • (90) Checking if the design point is ECRH ignitable (itv 164 fecrh_ignition)
      \n\n\n\n", "lablmm": "lablmm(ipnfoms) : labels describing figures of merit:
        \n
        \n
      • ( 1) major radius\n
      • ( 2) not used\n
      • ( 3) neutron wall load\n
      • ( 4) P_tf + P_pf\n
      • ( 5) fusion gain Q\n
      • ( 6) cost of electricity\n
      • ( 7) capital cost (direct cost if ireactor=0,\n constructed cost otherwise)\n
      • ( 8) aspect ratio\n
      • ( 9) divertor heat load\n
      • (10) toroidal field\n
      • (11) total injected power\n
      • (12) hydrogen plant capital cost OBSOLETE\n
      • (13) hydrogen production rate OBSOLETE\n
      • (14) pulse length\n
      • (15) plant availability factor (N.B. requires\n iavail=1 to be set)\n
      • (16) linear combination of major radius (minimised) and pulse length (maximised)\n note: FoM should be minimised only!\n
      • (17) net electrical output\n
      • (18) Null Figure of Merit\n
      • (19) linear combination of big Q and pulse length (maximised)\n note: FoM should be minimised only!
      \n\n\n", - "lablxc": "lablxc(ipnvars) : labels describing iteration variables
        \n
        \n
      • ( 1) aspect\n
      • ( 2) bt\n
      • ( 3) rmajor\n
      • ( 4) te\n
      • ( 5) beta\n
      • ( 6) dene\n
      • ( 7) rnbeam\n
      • ( 8) fbeta (f-value for equation 6)\n
      • ( 9) fdene (f-value for equation 5)\n
      • (10) hfact\n
      • (11) pheat\n
      • (12) oacdcp\n
      • (13) tfcth (NOT RECOMMENDED)\n
      • (14) fwalld (f-value for equation 8)\n
      • (15) fvs (f-value for equation 12)\n
      • (16) ohcth\n
      • (17) tdwell\n
      • (18) q\n
      • (19) enbeam\n
      • (20) tcpav\n
      • (21) ftburn (f-value for equation 13)\n
      • (22) NOT USED\n
      • (23) fcoolcp\n
      • (24) NOT USED\n
      • (25) fpnetel (f-value for equation 16)\n
      • (26) ffuspow (f-value for equation 9)\n
      • (27) fhldiv (f-value for equation 18)\n
      • (28) fradpwr (f-value for equation 17), total radiation fraction\n
      • (29) bore\n
      • (30) fmva (f-value for equation 19)\n
      • (31) gapomin\n
      • (32) frminor (f-value for equation 21)\n
      • (33) fportsz (f-value for equation 20)\n
      • (34) fdivcol (f-value for equation 22)\n
      • (35) fpeakb (f-value for equation 25)\n
      • (36) fbetatry (f-value for equation 24)\n
      • (37) coheof\n
      • (38) fjohc (f-value for equation 26)\n
      • (39) fjohc0 (f-value for equation 27)\n
      • (40) fgamcd (f-value for equation 37)\n
      • (41) fcohbop\n
      • (42) gapoh\n
      • (43) NOT USED\n
      • (44) fvsbrnni\n
      • (45) fqval (f-value for equation 28)\n
      • (46) fpinj (f-value for equation 30)\n
      • (47) feffcd\n
      • (48) fstrcase (f-value for equation 31)\n
      • (49) fstrcond (f-value for equation 32)\n
      • (50) fiooic (f-value for equation 33)\n
      • (51) fvdump (f-value for equation 34)\n
      • (52) vdalw\n
      • (53) fjprot (f-value for equation 35)\n
      • (54) ftmargtf (f-value for equation 36)\n
      • (55) NOT USED\n
      • (56) tdmptf\n
      • (57) thkcas\n
      • (58) thwcndut\n
      • (59) fcutfsu\n
      • (60) cpttf\n
      • (61) gapds\n
      • (62) fdtmp (f-value for equation 38)\n
      • (63) ftpeak (f-value for equation 39)\n
      • (64) fauxmn (f-value for equation 40)\n
      • (65) tohs\n
      • (66) ftohs (f-value for equation 41)\n
      • (67) ftcycl (f-value for equation 42)\n
      • (68) fptemp (f-value for equation 44)\n
      • (69) rcool\n
      • (70) vcool\n
      • (71) fq (f-value for equation 45)\n
      • (72) fipir (f-value for equation 46)\n
      • (73) scrapli\n
      • (74) scraplo\n
      • (75) tfootfi\n
      • (76) NOT USED\n
      • (77) NOT USED\n
      • (78) NOT USED\n
      • (79) fbetap (f-value for equation 48)\n
      • (80) NOT USED\n
      • (81) edrive\n
      • (82) drveff\n
      • (83) tgain\n
      • (84) chrad\n
      • (85) pdrive\n
      • (86) frrmax (f-value for equation 50)\n
      • (87) NOT USED\n
      • (88) NOT USED\n
      • (89) ftbr (f-value for equation 52)\n
      • (90) blbuith\n
      • (91) blbuoth\n
      • (92) fflutf (f-value for equation 53)\n
      • (93) shldith\n
      • (94) shldoth\n
      • (95) fptfnuc (f-value for equation 54)\n
      • (96) fvvhe (f-value for equation 55)\n
      • (97) fpsepr (f-value for equation 56)\n
      • (98) li6enrich\n
      • (99) NOT USED\n
      • (100) NOT USED\n
      • (101) NOT USED\n
      • (102) fimpvar\n
      • (103) flhthresh (f-value for equation 15)\n
      • (104) fcwr (f-value for equation 23)\n
      • (105) fnbshinef (f-value for equation 59)\n
      • (106) ftmargoh (f-value for equation 60)\n
      • (107) favail (f-value for equation 61)\n
      • (108) breeder_f: Volume of Li4SiO4 / (Volume of Be12Ti + Li4SiO4)\n
      • (109) ralpne: thermal alpha density / electron density\n
      • (110) ftaulimit: Lower limit on taup/taueff the ratio of alpha\n
      • (111) fniterpump: f-value for constraint that number\n
      • (112) fzeffmax: f-value for max Zeff (f-value for equation 64)\n
      • (113) ftaucq: f-value for minimum quench time (f-value for equation 65)\n
      • (114) fw_channel_length: Length of a single first wall channel\n
      • (115) fpoloidalpower: f-value for max rate of change of\n
      • (116) fradwall: f-value for radiation wall load limit (eq. 67)\n
      • (117) fpsepbqar: f-value for Psep*Bt/qar upper limit (eq. 68)\n
      • (118) fpsep: f-value to ensure separatrix power is less than\n
      • (119) tesep: separatrix temperature calculated by the Kallenbach divertor model\n
      • (120) ttarget: Plasma temperature adjacent to divertor sheath [eV]\n
      • (121) neratio: ratio of mean SOL density at OMP to separatrix density at OMP\n
      • (122) oh_steel_frac : streel fraction of Central Solenoid\n
      • (123) foh_stress : f-value for CS coil Tresca yield criterion (f-value for eq. 72)\n
      • (124) qtargettotal : Power density on target including surface recombination [W/m2]\n
      • (125) fimp(3) : Beryllium density fraction relative to electron density\n
      • (126) fimp(4) : Carbon density fraction relative to electron density\n
      • (127) fimp(5) : Nitrogen fraction relative to electron density\n
      • (128) fimp(6) : Oxygen density fraction relative to electron density\n
      • (129) fimp(7) : Neon density fraction relative to electron density\n
      • (130) fimp(8) : Silicon density fraction relative to electron density\n
      • (131) fimp(9) : Argon density fraction relative to electron density\n
      • (132) fimp(10) : Iron density fraction relative to electron density\n
      • (133) fimp(11) : Nickel density fraction relative to electron density\n
      • (134) fimp(12) : Krypton density fraction relative to electron density\n
      • (135) fimp(13) : Xenon density fraction relative to electron density\n
      • (136) fimp(14) : Tungsten density fraction relative to electron density\n
      • (137) fplhsep (f-value for equation 73)\n
      • (138) rebco_thickness : thickness of REBCO layer in tape (m)\n
      • (139) copper_thick : thickness of copper layer in tape (m)\n
      • (140) dr_tf_wp : radial thickness of TFC winding pack (m)\n
      • (141) fcqt : TF coil quench temperature < tmax_croco (f-value for equation 74)\n
      • (142) nesep : electron density at separatrix [m-3]\n
      • (143) f_copperA_m2 : TF coil current / copper area < Maximum value\n
      • (144) fnesep : Eich critical electron density at separatrix\n
      • (145) fgwped : fraction of Greenwald density to set as pedestal-top density\n
      • (146) fcpttf : F-value for TF coil current per turn limit (constraint equation 77)\n
      • (147) freinke : F-value for Reinke detachment criterion (constraint equation 78)\n
      • (148) fzactual : fraction of impurity at SOL with Reinke detachment criterion\n
      • (149) fbmaxcs : F-value for max peak CS field (con. 79, itvar 149)\n
      • (150) plasmod_fcdp : (P_CD - Pheat)/(Pmax-Pheat)\n
      • (151) plasmod_fradc : Pline_Xe / (Palpha + Paux - PlineAr - Psync - Pbrad)\n
      • (152) fbmaxcs : Ratio of separatrix density to Greenwald density\n
      • (153) fpdivlim : F-value for minimum pdivt (con. 80)\n
      • (154) fne0 : F-value for ne(0) > ne(ped) (con. 81)\n
      • (155) pfusife : IFE input fusion power (MW) (ifedrv=3 only)\n
      • (156) rrin : Input IFE repetition rate (Hz) (ifedrv=3 only)\n
      • (157) fvssu : F-value for available to required start up flux (con. 51)\n
      • (158) croco_thick : Thickness of CroCo copper tube (m)\n
      • (159) ftoroidalgap : F-value for toroidalgap > tftort constraint (con. 82)\n
      • (160) f_avspace (f-value for equation 83)\n
      • (161) fbetatry_lower (f-value for equation 84)\n
      • (162) r_cp_top : Top outer radius of the centropost (ST only) (m)\n
      • (163) f_t_turn_tf : f-value for TF coils WP trurn squared dimension constraint\n
      • (164) f_crypmw : f-value for cryogenic plant power\n
      • (165) fstr_wp : f-value for TF coil strain absolute value\n
      • (166) f_copperaoh_m2 : CS coil current /copper area < Maximum value\n
      • (167) fecrh_ignition: f-value for equation 90\n
      • (168) EMPTY : Description\n
      • (169) EMPTY : Description\n
      • (170) EMPTY : Description\n
      • (171) EMPTY : Description\n
      • (172) EMPTY : Description\n
      • (173) EMPTY : Description\n
      • (174) EMPTY : Description\n
      • (175) EMPTY : Description\n\n\n\n", + "lablxc": "lablxc(ipnvars) : labels describing iteration variables
          \n
          \n
        • ( 1) aspect\n
        • ( 2) bt\n
        • ( 3) rmajor\n
        • ( 4) te\n
        • ( 5) beta\n
        • ( 6) dene\n
        • ( 7) rnbeam\n
        • ( 8) fbeta (f-value for equation 6)\n
        • ( 9) fdene (f-value for equation 5)\n
        • (10) hfact\n
        • (11) pheat\n
        • (12) oacdcp\n
        • (13) tfcth (NOT RECOMMENDED)\n
        • (14) fwalld (f-value for equation 8)\n
        • (15) fvs (f-value for equation 12)\n
        • (16) ohcth\n
        • (17) tdwell\n
        • (18) q\n
        • (19) enbeam\n
        • (20) tcpav\n
        • (21) ftburn (f-value for equation 13)\n
        • (22) NOT USED\n
        • (23) fcoolcp\n
        • (24) NOT USED\n
        • (25) fpnetel (f-value for equation 16)\n
        • (26) ffuspow (f-value for equation 9)\n
        • (27) fhldiv (f-value for equation 18)\n
        • (28) fradpwr (f-value for equation 17), total radiation fraction\n
        • (29) bore\n
        • (30) fmva (f-value for equation 19)\n
        • (31) gapomin\n
        • (32) frminor (f-value for equation 21)\n
        • (33) fportsz (f-value for equation 20)\n
        • (34) fdivcol (f-value for equation 22)\n
        • (35) fpeakb (f-value for equation 25)\n
        • (36) fbetatry (f-value for equation 24)\n
        • (37) coheof\n
        • (38) fjohc (f-value for equation 26)\n
        • (39) fjohc0 (f-value for equation 27)\n
        • (40) fgamcd (f-value for equation 37)\n
        • (41) fcohbop\n
        • (42) gapoh\n
        • (43) NOT USED\n
        • (44) fvsbrnni\n
        • (45) fqval (f-value for equation 28)\n
        • (46) fpinj (f-value for equation 30)\n
        • (47) feffcd\n
        • (48) fstrcase (f-value for equation 31)\n
        • (49) fstrcond (f-value for equation 32)\n
        • (50) fiooic (f-value for equation 33)\n
        • (51) fvdump (f-value for equation 34)\n
        • (52) vdalw\n
        • (53) fjprot (f-value for equation 35)\n
        • (54) ftmargtf (f-value for equation 36)\n
        • (55) NOT USED\n
        • (56) tdmptf\n
        • (57) thkcas\n
        • (58) thwcndut\n
        • (59) fcutfsu\n
        • (60) cpttf\n
        • (61) gapds\n
        • (62) fdtmp (f-value for equation 38)\n
        • (63) ftpeak (f-value for equation 39)\n
        • (64) fauxmn (f-value for equation 40)\n
        • (65) tohs\n
        • (66) ftohs (f-value for equation 41)\n
        • (67) ftcycl (f-value for equation 42)\n
        • (68) fptemp (f-value for equation 44)\n
        • (69) rcool\n
        • (70) vcool\n
        • (71) fq (f-value for equation 45)\n
        • (72) fipir (f-value for equation 46)\n
        • (73) scrapli\n
        • (74) scraplo\n
        • (75) tfootfi\n
        • (76) NOT USED\n
        • (77) NOT USED\n
        • (78) NOT USED\n
        • (79) fbetap (f-value for equation 48)\n
        • (80) NOT USED\n
        • (81) edrive\n
        • (82) drveff\n
        • (83) tgain\n
        • (84) chrad\n
        • (85) pdrive\n
        • (86) frrmax (f-value for equation 50)\n
        • (87) NOT USED\n
        • (88) NOT USED\n
        • (89) ftbr (f-value for equation 52)\n
        • (90) blbuith\n
        • (91) blbuoth\n
        • (92) fflutf (f-value for equation 53)\n
        • (93) shldith\n
        • (94) shldoth\n
        • (95) fptfnuc (f-value for equation 54)\n
        • (96) fvvhe (f-value for equation 55)\n
        • (97) fpsepr (f-value for equation 56)\n
        • (98) li6enrich\n
        • (99) NOT USED\n
        • (100) NOT USED\n
        • (101) NOT USED\n
        • (102) fimpvar\n
        • (103) flhthresh (f-value for equation 15)\n
        • (104) fcwr (f-value for equation 23)\n
        • (105) fnbshinef (f-value for equation 59)\n
        • (106) ftmargoh (f-value for equation 60)\n
        • (107) favail (f-value for equation 61)\n
        • (108) breeder_f: Volume of Li4SiO4 / (Volume of Be12Ti + Li4SiO4)\n
        • (109) ralpne: thermal alpha density / electron density\n
        • (110) ftaulimit: Lower limit on taup/taueff the ratio of alpha\n
        • (111) fniterpump: f-value for constraint that number\n
        • (112) fzeffmax: f-value for max Zeff (f-value for equation 64)\n
        • (113) ftaucq: f-value for minimum quench time (f-value for equation 65)\n
        • (114) fw_channel_length: Length of a single first wall channel\n
        • (115) fpoloidalpower: f-value for max rate of change of\n
        • (116) fradwall: f-value for radiation wall load limit (eq. 67)\n
        • (117) fpsepbqar: f-value for Psep*Bt/qar upper limit (eq. 68)\n
        • (118) fpsep: f-value to ensure separatrix power is less than\n
        • (119) tesep: separatrix temperature calculated by the Kallenbach divertor model\n
        • (120) ttarget: Plasma temperature adjacent to divertor sheath [eV]\n
        • (121) neratio: ratio of mean SOL density at OMP to separatrix density at OMP\n
        • (122) oh_steel_frac : streel fraction of Central Solenoid\n
        • (123) foh_stress : f-value for CS coil Tresca yield criterion (f-value for eq. 72)\n
        • (124) qtargettotal : Power density on target including surface recombination [W/m2]\n
        • (125) fimp(3) : Beryllium density fraction relative to electron density\n
        • (126) fimp(4) : Carbon density fraction relative to electron density\n
        • (127) fimp(5) : Nitrogen fraction relative to electron density\n
        • (128) fimp(6) : Oxygen density fraction relative to electron density\n
        • (129) fimp(7) : Neon density fraction relative to electron density\n
        • (130) fimp(8) : Silicon density fraction relative to electron density\n
        • (131) fimp(9) : Argon density fraction relative to electron density\n
        • (132) fimp(10) : Iron density fraction relative to electron density\n
        • (133) fimp(11) : Nickel density fraction relative to electron density\n
        • (134) fimp(12) : Krypton density fraction relative to electron density\n
        • (135) fimp(13) : Xenon density fraction relative to electron density\n
        • (136) fimp(14) : Tungsten density fraction relative to electron density\n
        • (137) fplhsep (f-value for equation 73)\n
        • (138) rebco_thickness : thickness of REBCO layer in tape (m)\n
        • (139) copper_thick : thickness of copper layer in tape (m)\n
        • (140) dr_tf_wp : radial thickness of TFC winding pack (m)\n
        • (141) fcqt : TF coil quench temperature < tmax_croco (f-value for equation 74)\n
        • (142) nesep : electron density at separatrix [m-3]\n
        • (143) f_copperA_m2 : TF coil current / copper area < Maximum value\n
        • (144) fnesep : Eich critical electron density at separatrix\n
        • (145) fgwped : fraction of Greenwald density to set as pedestal-top density\n
        • (146) fcpttf : F-value for TF coil current per turn limit (constraint equation 77)\n
        • (147) freinke : F-value for Reinke detachment criterion (constraint equation 78)\n
        • (148) fzactual : fraction of impurity at SOL with Reinke detachment criterion\n
        • (149) fbmaxcs : F-value for max peak CS field (con. 79, itvar 149)\n
        • (152) fbmaxcs : Ratio of separatrix density to Greenwald density\n
        • (153) fpdivlim : F-value for minimum pdivt (con. 80)\n
        • (154) fne0 : F-value for ne(0) > ne(ped) (con. 81)\n
        • (155) pfusife : IFE input fusion power (MW) (ifedrv=3 only)\n
        • (156) rrin : Input IFE repetition rate (Hz) (ifedrv=3 only)\n
        • (157) fvssu : F-value for available to required start up flux (con. 51)\n
        • (158) croco_thick : Thickness of CroCo copper tube (m)\n
        • (159) ftoroidalgap : F-value for toroidalgap > tftort constraint (con. 82)\n
        • (160) f_avspace (f-value for equation 83)\n
        • (161) fbetatry_lower (f-value for equation 84)\n
        • (162) r_cp_top : Top outer radius of the centropost (ST only) (m)\n
        • (163) f_t_turn_tf : f-value for TF coils WP trurn squared dimension constraint\n
        • (164) f_crypmw : f-value for cryogenic plant power\n
        • (165) fstr_wp : f-value for TF coil strain absolute value\n
        • (166) f_copperaoh_m2 : CS coil current /copper area < Maximum value\n
        • (167) fecrh_ignition: f-value for equation 90\n
        • (168) EMPTY : Description\n
        • (169) EMPTY : Description\n
        • (170) EMPTY : Description\n
        • (171) EMPTY : Description\n
        • (172) EMPTY : Description\n
        • (173) EMPTY : Description\n
        • (174) EMPTY : Description\n
        • (175) EMPTY : Description\n\n\n\n", "lambda_EU": "Decay length in EUROFER [cm]", "lambda_He_VV": "Decay length [cm]", "lambda_n_BZ_IB": "Decay length in IB BZ [cm]", @@ -10150,7 +10058,6 @@ "logT_qz": "", "logT_z": "", "logical_def": "", - "loss": "Derived type containing all power loss information for PLASMOD", "lowest_valid_fom": "", "lpulse": "Switch for reactor model:\n
            \n
          • =0 continuous operation
          • \n
          • =1 pulsed operation
          • \n
          ", "lsa": "Level of safety assurance switch (generally, use 3 or 4):\n
            \n
          • =1 truly passively safe plant
          • \n
          • =2,3 in-between
          • \n
          • =4 like current fission plant
          • \n
          ", @@ -10219,7 +10126,6 @@ "mfile": "Machine-optimised output file unit", "mflibe": "total mass of FLiBe (kg)", "mftotal": "Total mass flow rate for coolant (kg/s)", - "mhd": "Derived type containing all mhd information for PLASMOD", "mi": "", "minmax": "", "minstang": "minimum strike angle for heat flux calculation", @@ -10339,7 +10245,6 @@ "ntype": "switch for vacuum pump type:\n
            \n
          • =0 - for turbomolecular pump (magnetic bearing) with speed of 2.0 m3/s\n (1.95 for N2, 1.8 for He, 1.8 for DT)
          • \n
          • =1 - for compound cryopump with nominal speed of 10.0 m3/s\n (9.0 for N2, 5.0 for He and 25.0 for DT)
          • \n
          ", "nu_": "", "nu_star": "", - "num": "Derived type containing all numerics information for PLASMOD", "num_rh_systems": "Number of remote handling systems (1-10)", "nvar": "nvar /16/ : number of iteration variables to use", "nvduct": "number of ducts (torus to pumps)", @@ -10400,7 +10305,6 @@ "peakmva": "peak MVA requirement", "peakpoloidalpower": "Peak absolute rate of change of stored energy in poloidal field (MW)", "peakradwallload": "Peak radiation wall load (MW/m^2) (`constraint equation 67`)", - "ped": "Derived type containing all pedestal information for PLASMOD", "pedgeradpv": "edge radiation power per volume (MW/m3)", "pfbldgm3": "volume of PF coil power supply building (m3)", "pfcaseth": "steel case thickness for PF coil i (m)", @@ -10442,60 +10346,6 @@ "plascur": "plasma current (A)", "plasipf": "plasma driven current fraction (Bootstrap + Diamagnetic + PS)", "plasma_res_factor": "plasma resistivity pre-factor", - "plasmod_Ainc": "increase of dt", - "plasmod_capA": "first radial grid point", - "plasmod_car_qdivt": "dcar/d(qdivt)", - "plasmod_chisaw": "artificial diffusivity in m^2/s", - "plasmod_chisawpos": "position where artificial sawtooth diffusivity is added, -1 - uses q=1 position", - "plasmod_contrpovr": "control power in Paux/R (MW/m)", - "plasmod_contrpovs": "control power in Paux/lateral_area (MW/m2)", - "plasmod_cxe_psepfac": "dcxe/d(1-Psep/PLH)", - "plasmod_dgy": "Newton differential", - "plasmod_dt": "plasmod time step", - "plasmod_dtinc": "decrease of dt", - "plasmod_dtmax": "plasmod max time step", - "plasmod_dtmaxmax": "stabilizing coefficient", - "plasmod_dtmaxmin": "exponent of jipperdo2", - "plasmod_dtmin": "plasmod min time step", - "plasmod_dx_cd": "plasmod change in auxiliary current drive array:\n
            \n
          • [1] - nbi
          • \n
          • [2] - ech
          • \n
          ", - "plasmod_dx_control": "plasmod change in control array:\n
            \n
          • [1] - nbi
          • \n
          • [2] - ech
          • \n
          ", - "plasmod_dx_fus": "plasmod change in fusion power array:\n
            \n
          • [1] - nbi
          • \n
          • [2] - ech
          • \n
          ", - "plasmod_dx_heat": "plasmod change in auxiliary heating array:\n
            \n
          • [1] - nbi
          • \n
          • [2] - ech
          • \n
          ", - "plasmod_eccdeff": "current drive multiplier: CD = eccdeffPCDTE/NE (not in use yet)", - "plasmod_eopt": "exponent of jipperdo", - "plasmod_fcdp": "(P_CD - Pheat)/(Pmax-Pheat),i.e. ratio of CD power over available power (`iteration variable 150`)", - "plasmod_fpellet": "pellet frequency [Hz]", - "plasmod_fradc": "Pline_Xe / (Palpha + Paux - PlineAr - Psync - Pbrad) (`iteration variable 151`)", - "plasmod_gamcdothers": "efficiency multiplier for non-CD heating. If 0.0 pheat treated as if had no CD associated", - "plasmod_globtau": "tauparticle/tauE for D, T, He, Xe, Ar (not used for Xe)", - "plasmod_i_equiltype": "switch for EMEQ setting to use either q95 or Ip as input:\n
            \n
          • =1 EMEQ, solve with sawteeth and inputted q95.
          • \n
          • =2 EMEQ, solve with sawteeth and inputted Ip (not recommended!).
          • \n
          ", - "plasmod_i_impmodel": "switch for plasma inpurity concentration setting:\n
            \n
          • =0 fixed concentration
          • \n
          • =1 fixed concentration at pedestal top, then fixed density
          • \n
          ", - "plasmod_i_modeltype": "switch for the transport model:\n
            \n
          • =1 Simple gyrobohm scaling with imposed H factor > 1. Other values give H factor as output
          • \n
          • =111 roughly calibrated to give H=1 for DEMO, but not fixed H
          • \n
          ", - "plasmod_imptype": "Impurities array:\n
            \n
          • [1] - intrinsic impurity
          • \n
          • [2] - Psep control
          • \n
          • [3] - seeding for SOL (defaults: W, Xe, Ar)
          • \n
          ", - "plasmod_iprocess": "switch for determining which functions to use:\n
            \n
          • =0 use PLASMOD functions
          • \n
          • =1 use PROCESS functions
          • \n
          ", - "plasmod_isawt": "switch to determine if plasmod solves with sawteeth:\n
            \n
          • =0 no sawteeth
          • \n
          • =1 solve with sawteeth
          • \n
          ", - "plasmod_maxA": "diagz 0 or 1", - "plasmod_maxpauxor": "max allowed auxiliary power / R", - "plasmod_nbi_energy": "NBI energy [keV]", - "plasmod_nchannels": "leave this at 3", - "plasmod_nx": "number of interpolated grid points", - "plasmod_nxt": "number of solved grid points", - "plasmod_pech": "ech power (not in use yet) #TODO: units?", - "plasmod_pedscal": "multiplication factor of the pedestal scaling in PLASMOD can be used to scan the pedestal height.", - "plasmod_pfus": "plasmod fusion power. If 0. not used (otherwise controlled with Pauxheat).", - "plasmod_psepplh_sup": "Psep/PLH if above this, use Xe", - "plasmod_qdivt": "divertor heat flux in MW/m^2, if 0, dont use SOL model", - "plasmod_qnbi_psepfac": "dqnbi/d(1-Psep/PLH)", - "plasmod_sawpertau": "ratio between sawtooth period and confinement time", - "plasmod_spellet": "pellet mass in units of D in 10^19", - "plasmod_test": "max number of plasmod iterations", - "plasmod_tol": "tolerance to be reached at each time step (%)", - "plasmod_tolmin": "multiplier of etolm which can not be exceeded", - "plasmod_v_loop": "target loop voltage. If lower than -1.e5 do not use.", - "plasmod_x_cd": "plasmod auxiliary current drive array:\n
            \n
          • [1] - nbi
          • \n
          • [2] - ech
          • \n
          ", - "plasmod_x_control": "plasmod control array:\n
            \n
          • [1] - nbi
          • \n
          • [2] - ech
          • \n
          ", - "plasmod_x_fus": "plasmod fusion power array:\n
            \n
          • [1] - nbi
          • \n
          • [2] - ech
          • \n
          ", - "plasmod_x_heat": "plasmod auxiliary heating array:\n
            \n
          • [1] - nbi
          • \n
          • [2] - ech
          • \n
          ", "plhthresh": "L-H mode power threshold (MW) (chosen via ilhthresh, and enforced if\n constraint equation 15 is on)", "plhybd": "lower hybrid injection power (MW)", "plinepv": "line radiation power per volume (MW/m3)", @@ -10677,7 +10527,6 @@ "rad_ob": "", "radctf": "radius of arc i (m)", "radial_array": "Array refining the radii of the stress calculations arrays", - "radp": "Derived type containing all radial profile information for PLASMOD", "ralpne": "thermal alpha density/electron density (`iteration variable 109`) (calculated if `ipedestal=3`)", "rat": "plasma chamber wall outgassing rate (Pa-m/s)", "rb": "outer radius of coil i (m)", @@ -14211,182 +14060,6 @@ "lb": 0.0, "ub": 1.0 }, - "plasmod_Ainc": { - "lb": 0.0, - "ub": 20000.0 - }, - "plasmod_capA": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_car_qdivt": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_chisaw": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_chisawpos": { - "lb": -10.0, - "ub": 10.0 - }, - "plasmod_contrpovr": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_contrpovs": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_cxe_psepfac": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_dgy": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_dt": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_dtinc": { - "lb": 0.0, - "ub": 100000.0 - }, - "plasmod_dtmax": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_dtmaxmax": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_dtmaxmin": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_dtmin": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_eccdeff": { - "lb": 0.0, - "ub": 1.0 - }, - "plasmod_eopt": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_fcdp": { - "lb": -1.0, - "ub": 1.0 - }, - "plasmod_fpellet": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_fradc": { - "lb": -1.0, - "ub": 1.0 - }, - "plasmod_gamcdothers": { - "lb": 0.0, - "ub": 1.0 - }, - "plasmod_i_equiltype": { - "lb": 1, - "ub": 20000 - }, - "plasmod_i_impmodel": { - "lb": 0, - "ub": 10000 - }, - "plasmod_i_modeltype": { - "lb": 0, - "ub": 10000 - }, - "plasmod_iprocess": { - "lb": 0, - "ub": 1 - }, - "plasmod_isawt": { - "lb": 0, - "ub": 2 - }, - "plasmod_maxA": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_maxpauxor": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_nbi_energy": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_nchannels": { - "lb": 3, - "ub": 3 - }, - "plasmod_nx": { - "lb": 0, - "ub": 10000 - }, - "plasmod_nxt": { - "lb": 0, - "ub": 10000 - }, - "plasmod_pech": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_pedscal": { - "lb": 0.0, - "ub": 10.0 - }, - "plasmod_pfus": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_psepplh_sup": { - "lb": 0.0, - "ub": 20000.0 - }, - "plasmod_qdivt": { - "lb": 0.0, - "ub": 1000000.0 - }, - "plasmod_qnbi_psepfac": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_sawpertau": { - "lb": 0.0, - "ub": 1.0 - }, - "plasmod_spellet": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_test": { - "lb": 0.0, - "ub": 1000000.0 - }, - "plasmod_tol": { - "lb": 0.0, - "ub": 10000.0 - }, - "plasmod_tolmin": { - "lb": 0.0, - "ub": 200000.0 - }, - "plasmod_v_loop": { - "lb": -10000.0, - "ub": 10000.0 - }, "plleni": { "lb": 0.1, "ub": 10.0 @@ -16089,14 +15762,6 @@ "lb": 0.001, "ub": 1000.0 }, - "plasmod_fcdp": { - "lb": 0.0, - "ub": 1.0 - }, - "plasmod_fradc": { - "lb": 0.001, - "ub": 1.0 - }, "q": { "lb": 2.0, "ub": 50.0 @@ -16325,8 +15990,6 @@ "pdrive": 23000000.0, "pfusife": 1000.0, "pheat": 0.0, - "plasmod_fcdp": -1.0, - "plasmod_fradc": -1.0, "q": 3.0, "qtargettotal": 5000000.0, "r_cp_top": 0.0, @@ -16632,16 +16295,6 @@ "name": "fvs", "ub": 1.0 }, - "150": { - "lb": 0.0, - "name": "plasmod_fcdp", - "ub": 1.0 - }, - "151": { - "lb": 0.001, - "name": "plasmod_fradc", - "ub": 1.0 - }, "152": { "lb": 0.001, "name": "fgwsep", @@ -17224,8 +16877,6 @@ "148": "fzactual", "149": "fbmaxcs", "15": "fvs", - "150": "plasmod_fcdp", - "151": "plasmod_fradc", "152": "fgwsep", "153": "fpdivlim", "154": "fne0", @@ -17459,8 +17110,6 @@ "pdrive": "85", "pfusife": "155", "pheat": "11", - "plasmod_fcdp": "150", - "plasmod_fradc": "151", "q": "18", "qtargettotal": "124", "r_cp_top": "162", @@ -19818,72 +19467,6 @@ "zeffai" ], "plasma_geometry_module": [], - "plasmod_module": [], - "plasmod_variables": [ - "plasmod_tol", - "plasmod_dtmin", - "plasmod_dtmax", - "plasmod_dt", - "plasmod_dtinc", - "plasmod_Ainc", - "plasmod_test", - "plasmod_tolmin", - "plasmod_eopt", - "plasmod_dtmaxmin", - "plasmod_dtmaxmax", - "plasmod_capA", - "plasmod_maxA", - "plasmod_dgy", - "plasmod_iprocess", - "plasmod_i_modeltype", - "plasmod_i_equiltype", - "plasmod_isawt", - "plasmod_nx", - "plasmod_nxt", - "plasmod_nchannels", - "plasmod_i_impmodel", - "plasmod_globtau", - "plasmod_psepplh_sup", - "plasmod_qdivt", - "plasmod_imptype", - "plasmod_qnbi_psepfac", - "plasmod_cxe_psepfac", - "plasmod_car_qdivt", - "plasmod_maxpauxor", - "plasmod_x_heat", - "plasmod_x_cd", - "plasmod_x_fus", - "plasmod_x_control", - "plasmod_dx_heat", - "plasmod_dx_cd", - "plasmod_dx_fus", - "plasmod_dx_control", - "plasmod_contrpovs", - "plasmod_contrpovr", - "plasmod_nbi_energy", - "plasmod_v_loop", - "plasmod_pfus", - "plasmod_eccdeff", - "plasmod_fcdp", - "plasmod_fradc", - "plasmod_pech", - "plasmod_gamcdothers", - "plasmod_chisawpos", - "plasmod_chisaw", - "plasmod_sawpertau", - "plasmod_spellet", - "plasmod_fpellet", - "plasmod_pedscal", - "geom", - "comp", - "ped", - "inp0", - "radp", - "mhd", - "loss", - "num", - "i_flag" - ], "power_module": [ "double", "htpmwe_shld", @@ -21262,60 +20845,6 @@ "pinjmax": "real_variable", "pitch": "real_variable", "plasma_res_factor": "real_variable", - "plasmod_Ainc": "real_variable", - "plasmod_capA": "real_variable", - "plasmod_car_qdivt": "real_variable", - "plasmod_chisaw": "real_variable", - "plasmod_chisawpos": "real_variable", - "plasmod_contrpovr": "real_variable", - "plasmod_contrpovs": "real_variable", - "plasmod_cxe_psepfac": "real_variable", - "plasmod_dgy": "real_variable", - "plasmod_dt": "real_variable", - "plasmod_dtinc": "real_variable", - "plasmod_dtmax": "real_variable", - "plasmod_dtmaxmax": "real_variable", - "plasmod_dtmaxmin": "real_variable", - "plasmod_dtmin": "real_variable", - "plasmod_dx_cd": "real_array", - "plasmod_dx_control": "real_array", - "plasmod_dx_fus": "real_array", - "plasmod_dx_heat": "real_array", - "plasmod_eccdeff": "real_variable", - "plasmod_eopt": "real_variable", - "plasmod_fcdp": "real_variable", - "plasmod_fpellet": "real_variable", - "plasmod_fradc": "real_variable", - "plasmod_gamcdothers": "real_variable", - "plasmod_globtau": "real_array", - "plasmod_i_equiltype": "int_variable", - "plasmod_i_impmodel": "int_variable", - "plasmod_i_modeltype": "int_variable", - "plasmod_imptype": "int_array", - "plasmod_iprocess": "int_variable", - "plasmod_isawt": "int_variable", - "plasmod_maxA": "real_variable", - "plasmod_maxpauxor": "real_variable", - "plasmod_nbi_energy": "real_variable", - "plasmod_nchannels": "int_variable", - "plasmod_nx": "int_variable", - "plasmod_nxt": "int_variable", - "plasmod_pech": "real_variable", - "plasmod_pedscal": "real_variable", - "plasmod_pfus": "real_variable", - "plasmod_psepplh_sup": "real_variable", - "plasmod_qdivt": "real_variable", - "plasmod_qnbi_psepfac": "real_variable", - "plasmod_sawpertau": "real_variable", - "plasmod_spellet": "real_variable", - "plasmod_test": "real_variable", - "plasmod_tol": "real_variable", - "plasmod_tolmin": "real_variable", - "plasmod_v_loop": "real_variable", - "plasmod_x_cd": "real_array", - "plasmod_x_control": "real_array", - "plasmod_x_fus": "real_array", - "plasmod_x_heat": "real_array", "plleni": "real_variable", "plleno": "real_variable", "plsepi": "real_variable", From f5416fb01dfb91656761c8ecb701b6c305dd6f7d Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 18:50:57 +0000 Subject: [PATCH 08/15] general plasmod removal --- source/fortran/numerics.f90 | 4 ++-- source/fortran/physics_functions.f90 | 2 +- source/fortran/physics_variables.f90 | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/source/fortran/numerics.f90 b/source/fortran/numerics.f90 index 340f040302..bca8c41aeb 100755 --- a/source/fortran/numerics.f90 +++ b/source/fortran/numerics.f90 @@ -351,8 +351,8 @@ module numerics !!
        • (147) freinke : F-value for Reinke detachment criterion (constraint equation 78) !!
        • (148) fzactual : fraction of impurity at SOL with Reinke detachment criterion !!
        • (149) fbmaxcs : F-value for max peak CS field (con. 79, itvar 149) - !!
        • (150) plasmod_fcdp : (P_CD - Pheat)/(Pmax-Pheat) - !!
        • (151) plasmod_fradc : Pline_Xe / (Palpha + Paux - PlineAr - Psync - Pbrad) + !!
        • (150) REMOVED + !!
        • (151) REMOVED !!
        • (152) fbmaxcs : Ratio of separatrix density to Greenwald density !!
        • (153) fpdivlim : F-value for minimum pdivt (con. 80) !!
        • (154) fne0 : F-value for ne(0) > ne(ped) (con. 81) diff --git a/source/fortran/physics_functions.f90 b/source/fortran/physics_functions.f90 index 85649408ba..77cf3aa2c8 100644 --- a/source/fortran/physics_functions.f90 +++ b/source/fortran/physics_functions.f90 @@ -4,7 +4,7 @@ module physics_functions_module !! author: K Ellis, CCFE, Culham Science Centre !! N/A !! This module contains physics routines which can be called by physics or - !! other modules (e.g. PLASMOD). + !! other modules !! AEA FUS 251: A User's Guide to the PROCESS Systems Code ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/source/fortran/physics_variables.f90 b/source/fortran/physics_variables.f90 index a64dc92391..c05ff5ed65 100644 --- a/source/fortran/physics_variables.f90 +++ b/source/fortran/physics_variables.f90 @@ -340,8 +340,7 @@ module physics_variables !! switch for scaling pedestal-top temperature with plasma parameters (issue #730): !! !! - =0 set pedestal-top temperature manually using teped - !! - =1 set pedestal-top temperature using EPED scaling (PLASMOD implementation - !! of scaling within PLASMOD, `ipedestal =2,3 (ttps://idm.euro-fusion.org/?uid=2MSZ4T) + !! - =1 set pedestal-top temperature using EPED scaling real(dp) :: eped_sf !! Adjustment factor for EPED scaling to reduce pedestal temperature or pressure From 7a94299b1d4067c01a2467a098f3617fb1f14897 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 18:52:32 +0000 Subject: [PATCH 09/15] plasmod removed from gitignore --- .gitignore | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.gitignore b/.gitignore index d3529e3229..36edb07e82 100644 --- a/.gitignore +++ b/.gitignore @@ -51,19 +51,7 @@ untracked.info com.msg Katy_test/* KatyTest/* -PLASMOD/CHARTST/* -PLASMOD/*.DAT -PLASMOD/*.dat -PLASMOD/fort.* -PLASMOD/output_list.txt -PLASMOD/KE* *~ -lib/PLASMOD/CHARTST/* -lib/PLASMOD/*.DAT -/lib/PLASMOD/*.dat -/lib/PLASMOD/fort.* -/lib/PLASMOD/output_list.txt -/lib/PLASMOD/KE* /utilities/run_process.conf *.fdb_latexmk *.fls From 894d48bcb343e3c5a0b97a13e7855630b40ee7ac Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 18:58:28 +0000 Subject: [PATCH 10/15] plasmod removed from plot_proc.py --- process/io/plot_proc.py | 144 +++------------------------------------- 1 file changed, 8 insertions(+), 136 deletions(-) diff --git a/process/io/plot_proc.py b/process/io/plot_proc.py index 06d07af343..1a5c984696 100755 --- a/process/io/plot_proc.py +++ b/process/io/plot_proc.py @@ -800,34 +800,6 @@ def plot_nprofile(prof, demo_ranges): # --- -def plot_plasmod_nprofile(prof, demo_ranges): - """Function to plot plasmod density profile - Arguments: - prof --> axis object to add plot to - """ - - prof.set_xlabel("r/a") - prof.set_ylabel(r"$n_{e}\cdot 10^{19} \mathrm{m}^{-3}$") - prof.set_title("Density profile") - prof.plot(pmod_r, pmod_ne, label="plasmod $n_e$") - prof.plot(pmod_r, pmod_ni, label="plasmod $n_i$") - prof.plot(pmod_r, pmod_nt, label="plasmod $n_T$") - prof.plot(pmod_r, pmod_nd, label="plasmod $n_D$") - prof.legend() - - # Ranges - # --- - # DEMO : Fixed ranges for comparison - prof.set_xlim([0, 1]) - if demo_ranges: - prof.set_ylim([0, 20]) - - # Adapatative ranges - else: - prof.set_ylim([0, prof.get_ylim()[1]]) - # --- - - def plot_tprofile(prof, demo_ranges): """Function to plot temperature profile Arguments: @@ -869,32 +841,6 @@ def plot_tprofile(prof, demo_ranges): # --- -def plot_plasmod_tprofile(prof, demo_ranges): - """Function to plot plasmod temperature profile - Arguments: - prof --> axis object to add plot to - """ - - prof.set_xlabel("r/a") - prof.set_ylabel("$T_{e}$ [keV]") - prof.set_title("Temperature profile") - prof.plot(pmod_r, pmod_te, label="plasmod $T_e$") - prof.plot(pmod_r, pmod_ti, label="plasmod $T_i$") - prof.legend() - - # Ranges - # --- - prof.set_xlim([0, 1]) - # DEMO : Fixed ranges for comparison - if demo_ranges: - prof.set_ylim([0, 50]) - - # Adapatative ranges - else: - prof.set_ylim([0, prof.get_ylim()[1]]) - # --- - - def plot_qprofile(prof, demo_ranges): """Function to plot q profile, formula taken from Nevins bootstrap model. @@ -927,31 +873,6 @@ def plot_qprofile(prof, demo_ranges): # --- -def plot_plasmod_qprofile(prof, demo_ranges): - """Function to plot plasmod q profile - Arguments: - prof --> axis object to add plot to - """ - - prof.set_xlabel("r/a") - prof.set_ylabel("-") - prof.set_title("q profile") - prof.plot(pmod_r, pmod_q, label="plasmod $q(r/a)$") - prof.legend() - - # Ranges - # --- - prof.set_xlim([0, 1]) - # DEMO : Fixed ranges for comparison - if demo_ranges: - prof.set_ylim([0, 10]) - - # Adapatative ranges - else: - prof.set_ylim([0, prof.get_ylim()[1]]) - # --- - - def read_imprad_data(skiprows, data_path): """Function to read all data needed for creation of radiation profile @@ -2443,7 +2364,6 @@ def main_plot( fig2, m_file_data, scan, - plasmod=False, imp="../data/lz_non_corona_14_elements/", demo_ranges=False, ): @@ -2454,7 +2374,6 @@ def main_plot( fig2 --> figure object to add plot to. m_file_data --> MFILE.DAT data to read scan --> scan to read from MFILE.DAT - plasmod --> plasmod data or not imp --> path to impurity data """ @@ -2488,26 +2407,16 @@ def main_plot( # Plot density profiles plot_4 = fig2.add_subplot(234) # , aspect= 0.05) - if plasmod: - plot_plasmod_nprofile(plot_4, demo_ranges) - else: - plot_nprofile(plot_4, demo_ranges) + plot_nprofile(plot_4, demo_ranges) # Plot temperature profiles plot_5 = fig2.add_subplot(235) # , aspect= 1/35) - if plasmod: - plot_plasmod_tprofile(plot_5, demo_ranges) - else: - plot_tprofile(plot_5, demo_ranges) + plot_tprofile(plot_5, demo_ranges) - if plasmod: - plot_6 = fig2.add_subplot(236) # , aspect=1/10) - plot_plasmod_qprofile(plot_6, demo_ranges) - else: - # plot_qprofile(plot_6) - plot_6 = fig2.add_subplot(236) # , aspect=2) - if os.path.isdir(imp): - plot_radprofile(plot_6, m_file_data, scan, imp, demo_ranges) + # plot_qprofile(plot_6) + plot_6 = fig2.add_subplot(236) # , aspect=2) + if os.path.isdir(imp): + plot_radprofile(plot_6, m_file_data, scan, imp, demo_ranges) # plot_7 = # plot_radprofile(plot_7) @@ -2807,8 +2716,7 @@ def parse_args(args): # Setup command line arguments parser = argparse.ArgumentParser( description="Produces a two page summary of the PROCESS MFILE output, using the MFILE. " - "For info contact michael.kovari@ukaea.uk or james.morris2@ukaea.uk. " - "If using PLASMOD you must specify the profile file using -m." + "For info contact michael.kovari@ukaea.uk or james.morris2@ukaea.uk." ) parser.add_argument( @@ -2818,14 +2726,6 @@ def parse_args(args): default="", help="specify input/output file path", ) - parser.add_argument( - "-m", - metavar="PLASMODFILE", - type=str, - default="", - help="specify PLASMOD profile file", - ) - parser.add_argument("-s", "--show", help="show plot", action="store_true") parser.add_argument("-n", type=int, help="Which scan to plot?") @@ -3005,32 +2905,6 @@ def main(args=None): # Alpha press(keV*10^10 m^-3) -- 14 # Ion dens(10^19 m^-3) -- 15 # Poloidal flux (Wb) -- 16 - if args.m != "": - global pmod_r - global pmod_ne - global pmod_te - global pmod_ti - global pmod_nd - global pmod_nt - global pmod_q - global pmod_ni - - plasmod_profiles = np.loadtxt(args.m).transpose() - pmod_r = plasmod_profiles[0] - pmod_ne = plasmod_profiles[1] - pmod_te = plasmod_profiles[2] - pmod_ti = plasmod_profiles[3] - pmod_nd = plasmod_profiles[4] - pmod_nt = plasmod_profiles[5] - pmod_q = plasmod_profiles[10] - pmod_ni = plasmod_profiles[15] - pmod_switch = True - print("plasmod!") - else: - if ipedestal == 2 or ipedestal == 3: - print("\n ERROR: Specify the PLASMOD profile file using -m \n") - exit() - pmod_switch = False # rad profile global ssync global bt @@ -3104,9 +2978,7 @@ def main(args=None): page2 = plt.figure(figsize=(12, 9), dpi=80) # run main_plot - main_plot( - page1, page2, m_file, scan=scan, plasmod=pmod_switch, demo_ranges=demo_ranges - ) + main_plot(page1, page2, m_file, scan=scan, demo_ranges=demo_ranges) # with bpdf.PdfPages(args.o) as pdf: with bpdf.PdfPages(args.f + "SUMMARY.pdf") as pdf: From f22b76593146009852e570b409bfc357077cea3d Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 19:03:59 +0000 Subject: [PATCH 11/15] plasmod removed from errorlist.json --- process/utilities/errorlist.json | 50 ++++++++++++++++---------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/process/utilities/errorlist.json b/process/utilities/errorlist.json index feea2c9558..a5b2e7bdb9 100644 --- a/process/utilities/errorlist.json +++ b/process/utilities/errorlist.json @@ -878,12 +878,12 @@ { "no": 174, "level": 3, - "message": "CONVERT_PLASMOD2PROCESS: PLASMOD Transport model (ipedestal=3) has not converged" + "message": "OBSOLETE" }, { "no": 175, "level": 3, - "message": "SETUPPLASMOD: PLASMOD(ipedestal=2,3) can only be used with ieped = 0 or 1" + "message": "OBSOLETE" }, { "no": 176, @@ -903,7 +903,7 @@ { "no": 179, "level": 3, - "message": "CHECK: You have to use the LH-threshold constraint with PLASMOD(ipedestal=3)" + "message": "OBSOLETE" }, { "no": 180, @@ -913,27 +913,27 @@ { "no": 181, "level": 3, - "message": "CHECK: You have to enforce H-mode with PLASMOD(ipedestal=3)" + "message": "OBSOLETE" }, { "no": 182, "level": 3, - "message": "CHECK: It.vars 4,5,6,9,36,44,102,103,109,110,117 can't be used with PLASMOD:" + "message": "OBSOLETE" }, { "no": 183, "level": 3, - "message": "CHECK: The density limit (icc = 5) cannot be used in conjuctions with PLASMOD(ipedestal=3), use fgwsep or fgwped instead" + "message": "OBSOLETE" }, { "no": 184, "level": 3, - "message": "CHECK: You need to use iradloss=0 with PLASMOD(ipedestal=2,3)" + "message": "OBSOLETE" }, { "no": 185, "level": 3, - "message": "CHECK: You cannot use icc = 2 (global power balance) in combination with PLASMOD(ipedestal=3)" + "message": "OBSOLETE" }, { "no": 186, @@ -948,67 +948,67 @@ { "no": 188, "level": 3, - "message": "CHECK: The beta consistency equation cannot be used in conjunction with PLASMOD (ipedestal=3) as beta is an output" + "message": "OBSOLETE" }, { "no": 189, "level": 2, - "message": "CHECK: plasmod_i_equiltype =2 is a not consistently implemented option!" + "message": "OBSOLETE" }, { "no": 190, "level": 3, - "message": "CHECK: if plasmod_i_equiltype = 2, q95 is an output and plascur an input. Hence, q cannot vary!" + "message": "OBSOLETE" }, { "no": 191, "level": 3, - "message": "CHECK: if plasmod_i_modeltype > 1, beta is calculated and its limit is enforced inside PLASMOD. Therefore no beta limit needs be checked in PROCESS!" + "message": "OBSOLETE" }, { "no": 192, "level": 3, - "message": "CONVERT_PLASMOD2PROCESS: Definitions of dnalp inconsistent between PLASMOD and PROCESS! Flag to developer!" + "message": "OBSOLETE" }, { "no": 193, "level": 3, - "message": "CONVERT_PLASMOD2PROCESS: Definitions of deni inconsistent between PLASMOD and PROCESS! Flag to developer!" + "message": "OBSOLETE" }, { "no": 194, "level": 3, - "message": "CONVERT_PLASMOD2PROCESS: Definitions of dnz inconsistent between PLASMOD and PROCESS! Flag to developer!" + "message": "OBSOLETE" }, { "no": 195, "level": 3, - "message": "CONVERT_PLASMOD2PROCESS: Definitions of zeff inconsistent between PLASMOD and PROCESS! Flag to developer!" + "message": "OBSOLETE" }, { "no": 196, "level": 3, - "message": "CHECK: ishape has to be 4, if ipedestal=2,3, as PLASMOD takes kappa95,triang95 as inputs!" + "message": "OBSOLETE" }, { "no": 197, "level": 3, - "message": "CHECK: PLASMOD (ipedestal=2,3) only uses NBI current drive" + "message": "OBSOLETE" }, { "no": 198, "level": 3, - "message": "CHECK: PLASMOD (ipedestal=2,3) always has to have current drive" + "message": "OBSOLETE" }, { "no": 199, "level": 2, - "message": "CHECK: PLASMOD (ipedestal=2,3) automatically takes both pseprmax and psepbqarmax as input. It uses which ever one leads to the lower Psep value. Not to use one of them set them to a very large number" + "message": "OBSOLETE" }, { "no": 200, "level": 3, - "message": "CONVERT_PLASMOD2PROCESS: PLASMOD output for dnitot is inconsistent" + "message": "OBSOLETE" }, { "no": 201, @@ -1048,22 +1048,22 @@ { "no": 208, "level": 3, - "message": "CHECK: icc = 68 (Psep * Bt / qAR upper limit) cannot be used with PLASMOD" + "message": "OBSOLETE" }, { "no": 209, "level": 3, - "message": "CHECK: You cannot use icc = 15 (LH power threshold limit) in combination with PLASMOD(ipedestal=3)" + "message": "OBSOLETE" }, { "no": 210, "level": 3, - "message": "CHECK: You cannot use icc = 62 (ratio of particle and energy confinement times) in combination with PLASMOD(ipedestal=3)" + "message": "OBSOLETE" }, { "no": 211, "level": 3, - "message": "CHECK: You cannot use icc = 24 (Beta upper limit) in combination with PLASMOD(ipedestal=3)" + "message": "OBSOLETE" }, { "no": 212, From be37380878ab61333252e9aa90b0c7ad03c5fcfc Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 19:07:31 +0000 Subject: [PATCH 12/15] ipedetsal == 2 removal --- source/fortran/initial.f90 | 2 +- source/fortran/numerics.f90 | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/source/fortran/initial.f90 b/source/fortran/initial.f90 index 7ecf2bdc81..8a40a68b08 100755 --- a/source/fortran/initial.f90 +++ b/source/fortran/initial.f90 @@ -375,7 +375,7 @@ subroutine check ! Plasma profile consistency checks if (ife /= 1) then - if (ipedestal == 1 .or. ipedestal == 2) then + if (ipedestal == 1) then ! Temperature checks if (teped < tesep) then diff --git a/source/fortran/numerics.f90 b/source/fortran/numerics.f90 index bca8c41aeb..d539be736b 100755 --- a/source/fortran/numerics.f90 +++ b/source/fortran/numerics.f90 @@ -660,7 +660,6 @@ end subroutine init_numerics ! use global_variables, only: icase, verbose, vlabel ! use constants, only: mfile, nout ! use maths_library, only: HYBRD - ! use plasmod_variables, only: geom, power_losses, i_flag ! implicit none ! ! Interface for the external fcnhyb subroutine argument From 846c9b6bd5b7cd3e91cae3605c9a5825aef85469 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 4 Dec 2023 19:27:16 +0000 Subject: [PATCH 13/15] remove plasmod from docs --- documentation/proc-pages/fusion-devices/stellarator.md | 2 +- documentation/proc-pages/physics-models/plasma.md | 1 - documentation/proc-pages/usage/running-process.md | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/documentation/proc-pages/fusion-devices/stellarator.md b/documentation/proc-pages/fusion-devices/stellarator.md index 525e7eead4..f45678259e 100644 --- a/documentation/proc-pages/fusion-devices/stellarator.md +++ b/documentation/proc-pages/fusion-devices/stellarator.md @@ -154,7 +154,7 @@ Here $\bar{\iota}$ is the rotational transform, which is equivalent to the recip ### Gradient informed neoclassical transport checks -As no 1D solver options are available for stellarators yet (the PLASMOD module can not be called yet for stellarator-PROCESS), PROCESS prints several neoclassics parameters as obtained from the 1/$\nu$ regime. +As no 1D solver options are available for stellarators yet, PROCESS prints several neoclassics parameters as obtained from the 1/$\nu$ regime. The two most important parameters are `q_PROCESS` and `total_q_neo_e`. `q_PROCESS` is the heat flux that PROCESS obtaines from the 0D confinement time scalings. `total_q_neo_e` is the estimated total neoclassical flux as obtained from the 1/$\nu$ electron transport regime, multiplied by a factor of 4 (2 for the ion contribution and another factor of 2 for the radial electrical field influence). diff --git a/documentation/proc-pages/physics-models/plasma.md b/documentation/proc-pages/physics-models/plasma.md index 44344df1ec..4479f33e56 100644 --- a/documentation/proc-pages/physics-models/plasma.md +++ b/documentation/proc-pages/physics-models/plasma.md @@ -190,7 +190,6 @@ be described as 1/2-D. The relevant profile index variables are If `ipedestal` = 1, 2 or 3 the density and temperature profiles include a pedestal. If `ipedestal` = 1 the density and temperature profiles use the forms given below [^6]. -If `ipedestal` = 2 or 3 the profiles are determined by the transport code PLASMOD. $$\begin{aligned} \mbox{density:} \qquad n(\rho) = \left\{ diff --git a/documentation/proc-pages/usage/running-process.md b/documentation/proc-pages/usage/running-process.md index 59717dd789..af46a1d248 100644 --- a/documentation/proc-pages/usage/running-process.md +++ b/documentation/proc-pages/usage/running-process.md @@ -59,7 +59,7 @@ ORIGINAL_IN_DAT = ref_IN.DAT * PROCESS= ../../../process.exe * ONE line comment to be put into README.txt -COMMENT = ipedestal = 1, with other variables appropriate for running PLASMOD +COMMENT = * Max no. iterations NITER = 1000 From d22b204f3d4f8e2a0fff38894011d8bb68673292 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 18 Dec 2023 10:34:32 +0000 Subject: [PATCH 14/15] change contact details --- process/io/plot_proc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/process/io/plot_proc.py b/process/io/plot_proc.py index 1a5c984696..0c2e06baa5 100755 --- a/process/io/plot_proc.py +++ b/process/io/plot_proc.py @@ -2716,7 +2716,7 @@ def parse_args(args): # Setup command line arguments parser = argparse.ArgumentParser( description="Produces a two page summary of the PROCESS MFILE output, using the MFILE. " - "For info contact michael.kovari@ukaea.uk or james.morris2@ukaea.uk." + "For info please see https://github.com/ukaea/PROCESS?tab=readme-ov-file#contacts " ) parser.add_argument( From b707080f8937d912c3ef97a915a92ac56dcbcf3b Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 18 Dec 2023 10:42:33 +0000 Subject: [PATCH 15/15] remove obsolete errors --- process/utilities/errorlist.json | 140 ------------------------------- 1 file changed, 140 deletions(-) diff --git a/process/utilities/errorlist.json b/process/utilities/errorlist.json index a5b2e7bdb9..ca0a803591 100644 --- a/process/utilities/errorlist.json +++ b/process/utilities/errorlist.json @@ -875,66 +875,11 @@ "level": 3, "message": "CONSTRAINTS: Do not use constraint 55 if iblanket != 2" }, - { - "no": 174, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 175, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 176, - "level": 3, - "message": "CHECK: fgwped has to be > 0, if ipedestal = 2 or 3" - }, - { - "no": 177, - "level": 3, - "message": "CHECK: fgwsep has to be > 0, if ipedestal = 2 or 3" - }, { "no": 178, "level": 3, "message": "CHECK: Cannot use Psep/R and PsepB/qAR limits at the same time" }, - { - "no": 179, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 180, - "level": 1, - "message": "OBSOLETE" - }, - { - "no": 181, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 182, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 183, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 184, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 185, - "level": 3, - "message": "OBSOLETE" - }, { "no": 186, "level": 3, @@ -945,71 +890,6 @@ "level": 3, "message": "CHECK: Specify only one variable from contrpovs and contrpovr" }, - { - "no": 188, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 189, - "level": 2, - "message": "OBSOLETE" - }, - { - "no": 190, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 191, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 192, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 193, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 194, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 195, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 196, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 197, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 198, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 199, - "level": 2, - "message": "OBSOLETE" - }, - { - "no": 200, - "level": 3, - "message": "OBSOLETE" - }, { "no": 201, "level": 1, @@ -1045,26 +925,6 @@ "level": 1, "message": "LH THRESHOLD: Closed divertor only. Limited data used in Snipes fit" }, - { - "no": 208, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 209, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 210, - "level": 3, - "message": "OBSOLETE" - }, - { - "no": 211, - "level": 3, - "message": "OBSOLETE" - }, { "no": 212, "level": 3,