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 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 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 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 = ( diff --git a/process/io/plot_proc.py b/process/io/plot_proc.py index 06d07af343..0c2e06baa5 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 please see https://github.com/ukaea/PROCESS?tab=readme-ov-file#contacts " ) 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: 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 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) 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/process/utilities/errorlist.json b/process/utilities/errorlist.json index feea2c9558..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": "CONVERT_PLASMOD2PROCESS: PLASMOD Transport model (ipedestal=3) has not converged" - }, - { - "no": 175, - "level": 3, - "message": "SETUPPLASMOD: PLASMOD(ipedestal=2,3) can only be used with ieped = 0 or 1" - }, - { - "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": "CHECK: You have to use the LH-threshold constraint with PLASMOD(ipedestal=3)" - }, - { - "no": 180, - "level": 1, - "message": "OBSOLETE" - }, - { - "no": 181, - "level": 3, - "message": "CHECK: You have to enforce H-mode with PLASMOD(ipedestal=3)" - }, - { - "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:" - }, - { - "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" - }, - { - "no": 184, - "level": 3, - "message": "CHECK: You need to use iradloss=0 with PLASMOD(ipedestal=2,3)" - }, - { - "no": 185, - "level": 3, - "message": "CHECK: You cannot use icc = 2 (global power balance) in combination with PLASMOD(ipedestal=3)" - }, { "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": "CHECK: The beta consistency equation cannot be used in conjunction with PLASMOD (ipedestal=3) as beta is an output" - }, - { - "no": 189, - "level": 2, - "message": "CHECK: plasmod_i_equiltype =2 is a not consistently implemented option!" - }, - { - "no": 190, - "level": 3, - "message": "CHECK: if plasmod_i_equiltype = 2, q95 is an output and plascur an input. Hence, q cannot vary!" - }, - { - "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!" - }, - { - "no": 192, - "level": 3, - "message": "CONVERT_PLASMOD2PROCESS: Definitions of dnalp inconsistent between PLASMOD and PROCESS! Flag to developer!" - }, - { - "no": 193, - "level": 3, - "message": "CONVERT_PLASMOD2PROCESS: Definitions of deni inconsistent between PLASMOD and PROCESS! Flag to developer!" - }, - { - "no": 194, - "level": 3, - "message": "CONVERT_PLASMOD2PROCESS: Definitions of dnz inconsistent between PLASMOD and PROCESS! Flag to developer!" - }, - { - "no": 195, - "level": 3, - "message": "CONVERT_PLASMOD2PROCESS: Definitions of zeff inconsistent between PLASMOD and PROCESS! Flag to developer!" - }, - { - "no": 196, - "level": 3, - "message": "CHECK: ishape has to be 4, if ipedestal=2,3, as PLASMOD takes kappa95,triang95 as inputs!" - }, - { - "no": 197, - "level": 3, - "message": "CHECK: PLASMOD (ipedestal=2,3) only uses NBI current drive" - }, - { - "no": 198, - "level": 3, - "message": "CHECK: PLASMOD (ipedestal=2,3) always has to have current drive" - }, - { - "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" - }, - { - "no": 200, - "level": 3, - "message": "CONVERT_PLASMOD2PROCESS: PLASMOD output for dnitot is inconsistent" - }, { "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": "CHECK: icc = 68 (Psep * Bt / qAR upper limit) cannot be used with PLASMOD" - }, - { - "no": 209, - "level": 3, - "message": "CHECK: You cannot use icc = 15 (LH power threshold limit) in combination with PLASMOD(ipedestal=3)" - }, - { - "no": 210, - "level": 3, - "message": "CHECK: You cannot use icc = 62 (ratio of particle and energy confinement times) in combination with PLASMOD(ipedestal=3)" - }, - { - "no": 211, - "level": 3, - "message": "CHECK: You cannot use icc = 24 (Beta upper limit) in combination with PLASMOD(ipedestal=3)" - }, { "no": 212, "level": 3, 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 340f040302..d539be736b 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) @@ -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 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 1a06f384c9..c05ff5ed65 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): @@ -343,18 +340,17 @@ 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 !! 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 +362,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 +374,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 +392,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 +761,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 +837,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) 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 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", - "i_flag": "Error flag for PLASMOD", "i_pf_current": "Switch for controlling the current of the PF 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", @@ -9957,7 +9866,7 @@ "idivrt": "number of divertors (calculated from `i_single_null`)", "iefrf": "Switch for current drive efficiency model:\n", "iefrffix": "Switch for 2nd current drive efficiency model:\n", - "ieped": "switch for scaling pedestal-top temperature with plasma parameters (issue #730):\n", + "ieped": "switch for scaling pedestal-top temperature with plasma parameters (issue #730):\n