diff --git a/README.md b/README.md index d725c948a03811f839528ec3976cb828b75d1ea4..54db8cd5e4d2385fc9b2004c87e9fbbe0cf3f133 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ In addition *R* (https://www.r-project.org/) is required for pre- and postprocessing and run management (needs to be added to the PATH variable as well). -For R some packages are required to run REMIND. All except of one (`gdxrrw`) are +Some R packages are required to run REMIND. All except of one (`gdxrrw`) are either distributed via the offical R CRAN or via a separate repository hosted at PIK (PIK-CRAN). Before proceeding PIK-CRAN should be added to the list of available repositories via: @@ -114,20 +114,20 @@ Make sure that the config file has been set correctly before starting the model. ## HOW TO CONTRIBUTE -We are interested in working with you! Just contact us through GitHub -(https://github.com/remindmodel) or by mail (remind@pik-potsdam.de) if you have +We are interested in working with you! Contact us through GitHub +(https://github.com/remindmodel) or by E-mail (remind@pik-potsdam.de) if you have found and/or fixed a bug, developed a new model feature, have ideas for further -model development, suggestions for improvements or anything else. We are open to +model development or suggestions for improvements. We are open to any kind of contribution. Our aim is to develop an open, transparent and -meaningful energy-economy-model to get a better -understanding of the underlying processes and possible futures. Join us doing +meaningful energy-economy-model, and to get a better +understanding of the underlying processes and possible futures. Join us in doing so! ## DEPENDENCIES Model dependencies **must be publicly available** and should be Open Source. Development aim is to rather minimize than expand dependencies on non-free and/or non open source software. That means that besides currently existing -dependencies on GAMS, the GDXRRW R package and the corresponding solvers there +dependencies on GAMS, the `gdxrrw` R package and the corresponding solvers there should be no additional dependencies of this kind and that these existing dependencies should be resolved in the future if possible. diff --git a/config/default.cfg b/config/default.cfg index c19cb72ea74768babca37723328ea9b469fb8320..f5fc570c23381d364efdc1173907891027993698 100755 --- a/config/default.cfg +++ b/config/default.cfg @@ -377,7 +377,7 @@ cfg$gms$cm_APscen <- "SSP2" # def <- SSP2 cfg$gms$cm_Full_Integration <- "off" # def = off cfg$gms$c_CO2priceDependent_AdjCosts <- "on" # def = on -cfg$gms$c_scaleEmiHistorical <- "off" # def = off +cfg$gms$c_scaleEmiHistorical <- "on" # def = on # MAGICC configuration (AJS) # Calibrate year 2000 temperature to HADCRUT4 data (which is very close to AR5). diff --git a/config/input.gdx b/config/input.gdx index 35cae3b04c464265a1524103d6d1e3ed58e563e4..93c41b8f9af51dd42bfe1ba1f4dfe29f69dad341 100644 Binary files a/config/input.gdx and b/config/input.gdx differ diff --git a/core/declarations.gms b/core/declarations.gms index e560f50a82809d57741b8dc61bb4a6d4bf6bd3e3..95f9e994039c116708026c6ae0b7df101b23ca1c 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -261,9 +261,7 @@ vm_emiFgas(tall,all_regi,all_enty) "F-gas emissions by single positive variables ***---------------------------------------------------------------------------------------- ***-------------------------------------------------MACRO module--------------------------- -vm_effGr(ttot,all_regi,all_in) "growth of factor efficiency" vm_enerSerAdj(tall,all_regi,all_in) "adjustment costs for energy service transformations" -vm_damageFactor(ttot,all_regi) "damage factor reducing GDP" vm_esCapInv(ttot,all_regi,all_teEs) "investment for energy end-use capital at the energy service level" ***---------------------------------------------------------------------------------------- *-----------------------------------------------ESM module--------------------------------- diff --git a/core/equations.gms b/core/equations.gms index 310c89bd965601911427b71734538226be8e636a..a9647754c0bffa6573ca78bb749d4db0c48b69bc 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -467,12 +467,13 @@ q_costTeCapital(t,regi,teLearn) .. ***--------------------------------------------------------------------------- *** this is to prevent that in the long term, all solids are supplied by biomass. Residential solids can be fully supplied by biomass (-> wood pellets), so the FE residential demand is subtracted *** vm_cesIO(t,regi,"fesob") will be 0 in the stationary realization -q_limitBiotrmod(t,regi)$(t.val > 2050).. +q_limitBiotrmod(t,regi)$(t.val > 2020).. vm_prodSe(t,regi,"pebiolc","sesobio","biotrmod") - sum (in$sameAs("fesob",in), vm_cesIO(t,regi,in)) - sum (fe2es(entyFe,esty,teEs)$buildMoBio(esty), vm_demFeForEs(t,regi,entyFe,esty,teEs) ) =l= - 3 * vm_prodSe(t,regi,"pecoal","sesofos","coaltr") + (2 + max(0,min(1,( 2100 - pm_ttot_val(t)) / ( 2100 - 2020 ))) * 3) !! 5 in 2020 and 2 in 2100 + * vm_prodSe(t,regi,"pecoal","sesofos","coaltr") ; ***----------------------------------------------------------------------------- diff --git a/main.gms b/main.gms index da45295c348290ee7bb5ec953140fcb3b1a5384e..c125509a3903ded2f27493d8625b3d9c5e323c5b 100644 --- a/main.gms +++ b/main.gms @@ -328,8 +328,8 @@ cm_fetaxscen = 3; !! def = 3 cm_multigasscen = 2; !! def = 2 cm_permittradescen = 1; !! def = 1 cm_limit_peur_scen = 1; !! def = 1 -$setGlobal cm_oil_scen medOil !! def = medOil -$setGlobal cm_gas_scen medGas !! def = medGas +$setGlobal cm_oil_scen medOil !! def = medOil +$setGlobal cm_gas_scen medGas !! def = medGas $setGlobal cm_coal_scen medCoal !! def = medCoal cm_rentdiscoil = 0.2; !! def 0.2 cm_rentdiscoil2 = 0.9; !! def 0.9 @@ -344,7 +344,7 @@ cm_earlyreti_rate = 0.09; !! def 0.09 cm_so2tax_scen = 1; !! def = c_cint_scen = 1; !! def = 1 -cm_damage = 0.005; !! def = 0.005 +cm_damage = 0.005; !! def = 0.005 cm_solwindenergyscen = 1; !! def = 1 c_techAssumptScen = 1; !! def = 1 c_ccsinjecratescen = 1; !! def = 1 @@ -368,7 +368,7 @@ cm_taxCO2inc_after_peakBudgYr = 2; !! def = 2 cm_CO2priceRegConvEndYr = 2050; !! def = 2050 cm_trdadj = 2; !! def = 2.0 -cm_trdcst = 1.5; !! def = 1.5 +cm_trdcst = 1.5; !! def = 1.5 c_refcapbnd = 0; !! def = 0 cm_frac_CCS = 10; !! def = 10 cm_frac_NetNegEmi = 0.5; !! def = 0.5 @@ -379,10 +379,10 @@ cm_damages_SccHorizon = 100; !! def = 100 cm_carbonprice_temperatureLimit = 1.8; !! def = 1.8 -cm_DiscRateScen = 0;!! def = 0 -cm_noReboundEffect = 0; -$setGlobal cm_EsubGrowth low !! def = low -$setGlobal c_scaleEmiHistorical off !! def = off +cm_DiscRateScen = 0;!! def = 0 +cm_noReboundEffect = 0; +$setGlobal cm_EsubGrowth low !! def = low +$setGlobal c_scaleEmiHistorical on !! def = on $setGlobal c_regi_nucscen all !! def = all @@ -393,15 +393,15 @@ $setGlobal c_regi_capturescen all !! def = all *** -------------------------------------------------------------------------------------------------------------------------------------------------------------------- *--------------------flags------------------------------------------------------------ $SETGLOBAL cm_SlowConvergence off !! def = off -$setGlobal cm_nash_mode debug !! def = parallel -$setGlobal c_EARLYRETIRE on !! def = on -$setGlobal cm_OILRETIRE off !! def = off -$setglobal cm_INCONV_PENALTY on !! def = on -$setGlobal cm_so2_out_of_opt on !! def = on -$setGlobal c_skip_output off !! def = off -$setGlobal cm_MOFEX off !! def = off -$setGlobal cm_conoptv conopt3 !! def = conopt3 -$setGlobal cm_ccsfosall off !! def = off +$setGlobal cm_nash_mode debug !! def = parallel +$setGlobal c_EARLYRETIRE on !! def = on +$setGlobal cm_OILRETIRE off !! def = off +$setglobal cm_INCONV_PENALTY on !! def = on +$setGlobal cm_so2_out_of_opt on !! def = on +$setGlobal c_skip_output off !! def = off +$setGlobal cm_MOFEX off !! def = off +$setGlobal cm_conoptv conopt3 !! def = conopt3 +$setGlobal cm_ccsfosall off !! def = off $setGlobal cm_APscen SSP2 !! def = SSP2 $setGlobal cm_magicc_calibrateTemperature2000 uncalibrated !! def=uncalibrated diff --git a/modules/20_growth/exogenous/declarations.gms b/modules/20_growth/exogenous/declarations.gms new file mode 100644 index 0000000000000000000000000000000000000000..ef1c82f9ba6a80be290a38e3548755f2e864e88d --- /dev/null +++ b/modules/20_growth/exogenous/declarations.gms @@ -0,0 +1,11 @@ +*** | (C) 2006-2019 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de +*** SOF ./modules/20_growth/exogenous/declarations.gms +positive variables +vm_effGr(ttot,all_regi,all_in) "growth of factor efficiency" +; +*** EOF ./modules/20_growth/exogenous/declarations.gms diff --git a/modules/20_growth/exogenous/realization.gms b/modules/20_growth/exogenous/realization.gms index 026e242d0b41ea4b0e22e127a179eb31019fc764..6afbb3dffe95d18476a3ac597d19b39044930002 100644 --- a/modules/20_growth/exogenous/realization.gms +++ b/modules/20_growth/exogenous/realization.gms @@ -16,6 +16,7 @@ *' growth paths in reaction of policy shocks. This correction is done by an adjustment of capital accumulation. *####################### R SECTION START (PHASES) ############################## +$Ifi "%phase%" == "declarations" $include "./modules/20_growth/exogenous/declarations.gms" $Ifi "%phase%" == "bounds" $include "./modules/20_growth/exogenous/bounds.gms" *######################## R SECTION END (PHASES) ############################### *** EOF ./modules/20_growth/exogenous.gms diff --git a/modules/20_growth/spillover/declarations.gms b/modules/20_growth/spillover/declarations.gms index d861ca228be5700d05f46f1b5489661f84173560..6333cbadddc64714a75768dc129a87968c25408e 100644 --- a/modules/20_growth/spillover/declarations.gms +++ b/modules/20_growth/spillover/declarations.gms @@ -24,6 +24,7 @@ Parameters *mlb* vm_invInno and vm_invImi and pm_cumEff shifted to the core folder Positive variables + vm_effGr(ttot,all_regi,all_in) "growth of factor efficiency" v20_effInno(ttot,all_regi,all_in) "efficiency improvement by innovation" v20_effImi(ttot,all_regi,all_in) "efficiency improvement by imitation" ; diff --git a/modules/32_power/IntC/realization.gms b/modules/32_power/IntC/realization.gms index 268ee0445d0d02a64a36624f42ce551e79f29acd..9acb0a5a87a9e1480f6f767a9e1f5d85d9e274a6 100644 --- a/modules/32_power/IntC/realization.gms +++ b/modules/32_power/IntC/realization.gms @@ -8,17 +8,17 @@ *' @description *' -*'The `IntC` realization (Integrated Costs) assume a single electricity market balance. +*'The `IntC` realization (Integrated Costs) assumes a single electricity market balance. *' -*'This module determine power system supply specific technology behavior, which summs up to the general core capacity equations to define the power sector operation and investment decisions. +*'This module determines power system supply specific technology behavior, which sums up to the general core capacity equations to define the power sector operation and investment decisions. *' -*'Contrary to other secondary energies in REMIND, this requires to move the electricity secondary energy balance (supply = demand) from the core to the module code. +*'Contrary to other secondary energy types in REMIND, this requires to move the electricity secondary energy balance (supply = demand) from the core to the module code. *' *' *'In summary, the specific power technology equations found in this module reflect the points below. *' *' -*'Storage requirements are based on intermittent renewables share, sinergies between different renewables production profiles and curtailment. +*'Storage requirements are based on intermittent renewables share, synergies between different renewables production profiles and curtailment. *' *'Additional grid capacities are calculated for high intermittent renewable capacity (solar and wind) and regional spatial differences. *' diff --git a/modules/50_damages/BurkeLike/declarations.gms b/modules/50_damages/BurkeLike/declarations.gms index 2091c966591ca726878654e0341aa6d28f3ea6f5..8d886c33e816d59ce709b3853c31fcfd4d72c8c3 100644 --- a/modules/50_damages/BurkeLike/declarations.gms +++ b/modules/50_damages/BurkeLike/declarations.gms @@ -4,8 +4,13 @@ *** | AGPL-3.0, you are granted additional permissions described in the *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de - +*** SOF ./modules/50_damages/BurkeLike/declarations.gms parameters p50_damageFuncCoef1 "coef1 of damamge function", p50_damageFuncCoef2 "coef2 of damamge function" ; + +positive variable +vm_damageFactor(ttot,all_regi) "damage factor reducing GDP" +; +*** EOF ./modules/50_damages/BurkeLike/declarations.gms diff --git a/modules/50_damages/DiceLike/declarations.gms b/modules/50_damages/DiceLike/declarations.gms index a3e8cc1f0dc90ec1efb1a1029b8966804b99ffb1..d03b467b44a81ef0daa5cb34da9abb661c4ae8b3 100644 --- a/modules/50_damages/DiceLike/declarations.gms +++ b/modules/50_damages/DiceLike/declarations.gms @@ -4,7 +4,13 @@ *** | AGPL-3.0, you are granted additional permissions described in the *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de +*** SOF ./modules/50_damages/DiceLike/declarations.gms parameters p50_damageFuncCoef1 "damage function coefficient, linear in temperature" p50_damageFuncCoef2 "damage function coefficient, quadratic in temperture" ; + +positive variable +vm_damageFactor(ttot,all_regi) "damage factor reducing GDP" +; +*** EOF ./modules/50_damages/DiceLike/declarations.gms diff --git a/modules/50_damages/off/declarations.gms b/modules/50_damages/off/declarations.gms new file mode 100644 index 0000000000000000000000000000000000000000..dea6d758d1441423be0db207919b74fabdd583a4 --- /dev/null +++ b/modules/50_damages/off/declarations.gms @@ -0,0 +1,11 @@ +*** | (C) 2006-2019 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de +*** SOF ./modules/50_damages/off/declarations.gms +positive variable +vm_damageFactor(ttot,all_regi) "damage factor reducing GDP" +; +*** EOF ./modules/50_damages/off/declarations.gms diff --git a/modules/50_damages/off/realization.gms b/modules/50_damages/off/realization.gms index 1db5be04680fb06f3d5573228a5ca1be579f353f..af494173342dc89198d68b6cb760fe90297a06ab 100644 --- a/modules/50_damages/off/realization.gms +++ b/modules/50_damages/off/realization.gms @@ -9,6 +9,7 @@ *' @description The off-realization of the damage module sets the damage factor on output to 1, meaning no damage. *####################### R SECTION START (PHASES) ############################## +$Ifi "%phase%" == "declarations" $include "./modules/50_damages/off/declarations.gms" $Ifi "%phase%" == "bounds" $include "./modules/50_damages/off/bounds.gms" *######################## R SECTION END (PHASES) ############################### *** EOF ./modules/50_damages/off.gms diff --git a/scripts/output/comparison/compareScenarios.R b/scripts/output/comparison/compareScenarios.R index 449801cca4178f27e618ce011553f74194abc8b9..4019b2c2ff2d9094f29a3d423dd6fefd46b90e33 100644 --- a/scripts/output/comparison/compareScenarios.R +++ b/scripts/output/comparison/compareScenarios.R @@ -52,7 +52,8 @@ start_comp <- function(outputdirs,shortTerm,outfilename) { cat("Starting ",jobname,"\n") on_cluster <- file.exists("/p/projects/") if (on_cluster) { - system(paste0("srun --qos=standby --job-name=",jobname," --output=",jobname,".out --error=",jobname,".err --mail-type=END --time=200 --mem-per-cpu=8000 Rscript scripts/utils/run_compareScenarios.R outputdirs=",paste(outputdirs,collapse=",")," shortTerm=",shortTerm," outfilename=",jobname," &")) + clcom <- paste0("sbatch --qos=standby --job-name=",jobname," --output=",jobname,".out --error=",jobname,".err --mail-type=END --time=200 --mem-per-cpu=8000 --wrap=\"Rscript scripts/utils/run_compareScenarios.R outputdirs=",paste(outputdirs,collapse=",")," shortTerm=",shortTerm," outfilename=",jobname,"\"") + system(clcom) } else { outfilename <- jobname tmp.env <- new.env() diff --git a/scripts/start/prepare_and_run.R b/scripts/start/prepare_and_run.R index a1346dab09f3c020da84b80c2dc0dc83bbbf683b..320e62edbbf20852534062afda6aafdf8f283e12 100644 --- a/scripts/start/prepare_and_run.R +++ b/scripts/start/prepare_and_run.R @@ -765,7 +765,7 @@ prepare_and_run <- function() { # In case there are no subsequent runs (or it's coupled runs), the file contains only # a small message. - subseq_start_file <- paste0(cfg$results_folder,"/start_subsequentruns.R") + subseq_start_file <- paste0(cfg$results_folder,"/start_subsequentruns_manually.R") if(no_subsequent_runs){ write("cat('\nNo subsequent run was set for this scenario\n')",file=subseq_start_file) @@ -776,6 +776,7 @@ prepare_and_run <- function() { for(run in seq(1,length(cfg$subsequentruns))){ filetext <- paste0(filetext,"\n") filetext <- paste0(filetext,"load('",cfg$subsequentruns[run],".RData')\n") + #filetext <- paste0(filetext,"cfg$results_folder <- 'output/:title::date:'\n") filetext <- paste0(filetext,"cat('",cfg$subsequentruns[run],"')\n") filetext <- paste0(filetext,"submit(cfg)\n") } diff --git a/scripts/start/submit.R b/scripts/start/submit.R index 25d3db720391d8b7b0cd6fcfb76c63975127e605..ccc81c54aa367247828ef357ae059a3ec0cb8b2f 100644 --- a/scripts/start/submit.R +++ b/scripts/start/submit.R @@ -15,42 +15,44 @@ submit <- function(cfg) { - # Create name of output folder and output folder itself + # Generate name of output folder and create the folder date <- format(Sys.time(), "_%Y-%m-%d_%H.%M.%S") cfg$results_folder <- gsub(":date:", date, cfg$results_folder, fixed = TRUE) cfg$results_folder <- gsub(":title:", cfg$title, cfg$results_folder, fixed = TRUE) # Create output folder + cat(" Creating results folder",cfg$results_folder,"\n") if (!file.exists(cfg$results_folder)) { dir.create(cfg$results_folder, recursive = TRUE, showWarnings = FALSE) } else if (!cfg$force_replace) { stop(paste0("Results folder ",cfg$results_folder," could not be created because it already exists.")) } else { - cat("Deleting results folder because it alreay exists:",cfg$results_folder,"\n") + cat(" Deleting results folder because it alreay exists:",cfg$results_folder,"\n") unlink(cfg$results_folder, recursive = TRUE) dir.create(cfg$results_folder, recursive = TRUE, showWarnings = FALSE) } - # save main folder + # remember main folder cfg$remind_folder <- getwd() - - # save the cfg data before moving it into the results folder - cat("Writing cfg to file\n") - save(cfg,file=paste0(cfg$title,".RData")) + + # Save the cfg (with the updated name of the result folder) into the results folder. + # Do not save the new name of the results folder to the .RData file in REMINDs main folder, because it + # might be needed to restart subsequent runs manually and should not contain the time stamp in this case. + filename <- paste0(cfg$results_folder,"/config.Rdata") + cat(" Writing cfg to file",filename,"\n") + save(cfg,file=filename) # Copy files required to confiugre and start a run - filelist <- c("config.Rdata" = paste0(cfg$title,".RData"), - "prepare_and_run.R" = "scripts/start/prepare_and_run.R") + filelist <- c("prepare_and_run.R" = "scripts/start/prepare_and_run.R") .copy.fromlist(filelist,cfg$results_folder) - # remove config in main folder (after copying into results folder) - file.remove(paste0(cfg$title,".RData")) + # Do not remove .RData files from REMIND main folder because they are needed in case you need to manually restart subsequent runs. - # change to run folder + # Change to run folder setwd(cfg$results_folder) on.exit(setwd(cfg$remind_folder)) - + # send prepare_and_run.R to cluster - cat("Executing prepare_and_run.R for",cfg$title,"\n") + cat(" Executing prepare_and_run.R for",cfg$results_folder,"\n") if(cfg$slurmConfig=="direct") { log <- format(Sys.time(), paste0(cfg$title,"-%Y-%H-%M-%S-%OS3.log")) system("Rscript prepare_and_run.R") diff --git a/start.R b/start.R index fde2696c5e8596d7ddca802e6e55078004bd817a..854bb33a8d494fed43681241f62a2f9e16f5d88a 100644 --- a/start.R +++ b/start.R @@ -15,7 +15,7 @@ configure_cfg <- function(icfg, iscen, iscenarios, isettings) { # Edit run title icfg$title <- iscen - cat("\n", iscen, "\n") + cat(" Configuring cfg for", iscen,"\n") # Edit main file of model if( "model" %in% names(iscenarios)){ @@ -101,10 +101,12 @@ config.file <- argv[1] if ('--testOneRegi' %in% argv) { testOneRegi <- TRUE config.file <- NA +} else { + testOneRegi <- FALSE } if (!is.na(config.file)) { - cat(paste("reading config file", config.file, "\n")) + cat(paste("\nReading config file", config.file, "\n")) # Read-in the switches table, use first column as row names settings <- read.csv2(config.file, stringsAsFactors = FALSE, row.names = 1, comment.char = "#", na.strings = "") @@ -137,25 +139,31 @@ for (scen in rownames(scenarios)) { cfg$results_folder <- 'output/testOneRegi' # delete existing Results directory - unlink('output/testOneRegi', recursive = TRUE) + cfg$force_replace <- TRUE } + cat("\n",scen,"\n") + # configure cfg based on settings from csv if provided if (!is.na(config.file)) { - - cfg <- configure_cfg(cfg, scen, scenarios, settings) - - # Directly start runs that have a gdx file location given as path_gdx_ref or where this field is empty - start_now <- (substr(scenarios[scen,"path_gdx_ref"], nchar(scenarios[scen,"path_gdx_ref"])-3, nchar(scenarios[scen,"path_gdx_ref"])) == ".gdx" - | is.na(scenarios[scen,"path_gdx_ref"])) + cfg <- configure_cfg(cfg, scen, scenarios, settings) + # Directly start runs that have a gdx file location given as path_gdx_ref or where this field is empty + start_now <- (substr(scenarios[scen,"path_gdx_ref"], nchar(scenarios[scen,"path_gdx_ref"])-3, nchar(scenarios[scen,"path_gdx_ref"])) == ".gdx" + | is.na(scenarios[scen,"path_gdx_ref"])) } - + # save the cfg data for later start of subsequent runs (after preceding run finished) - cat("Writing cfg to file\n") - save(cfg,file=paste0(scen,".RData")) + filename <- paste0(scen,".RData") + cat(" Writing cfg to file",filename,"\n") + save(cfg,file=filename) if (start_now){ - cat("Creating and starting: ",cfg$title,"\n") - submit(cfg) - } + # Create results folder and start run + submit(cfg) + } else { + cat(" Waiting for", scenarios[scen,'path_gdx_ref'] ,"\n") + } + + if (!identical(cfg$subsequentruns,character(0))) cat(" Subsequent runs:",cfg$subsequentruns,"\n") + }