def main(): initial_state = None configuration = Configuration() spin_up = SpinUp(configuration) # object for spin_up currTimeStep = ModelTime( ) # timeStep info: year, month, day, doy, hour, etc # spinningUp noSpinUps = int(configuration.globalOptions['maxSpinUpsInYears']) if noSpinUps > 0: logger.info('Spin-Up #Total Years: ' + str(noSpinUps)) spinUpRun = 0 has_converged = False while spinUpRun < noSpinUps and has_converged == False: spinUpRun += 1 currTimeStep.getStartEndTimeStepsForSpinUp( configuration.globalOptions['startTime'], spinUpRun, noSpinUps) logger.info('Spin-Up Run No. ' + str(spinUpRun)) deterministic_runner = DeterministicRunner(configuration, currTimeStep, initial_state) all_state_begin = deterministic_runner.model.getAllState() dynamic_framework = DynamicFramework(deterministic_runner, currTimeStep.nrOfTimeSteps) dynamic_framework.setQuiet(True) dynamic_framework.run() all_state_end = deterministic_runner.model.getAllState() has_converged = spin_up.checkConvergence( all_state_begin, all_state_end, spinUpRun, deterministic_runner.model.routing.cellArea) initial_state = deterministic_runner.model.getState() # # Running the deterministic_runner (excluding DA scheme) currTimeStep.getStartEndTimeSteps(configuration.globalOptions['startTime'], configuration.globalOptions['endTime']) logger.info('Transient simulation run started.') deterministic_runner = DeterministicRunner(configuration, currTimeStep, initial_state) dynamic_framework = DynamicFramework(deterministic_runner, currTimeStep.nrOfTimeSteps) dynamic_framework.setQuiet(True) dynamic_framework.run()
def spinup(self): """ Spin-up the model. This is required to obtain realistic starting conditions for the model run. It runs on a yearly basis until the required convergence or max. allowed spin-up runs is reached. """ spin_up = SpinUp(self.configuration) # object for spin_up self.currTimeStep = ModelTime( ) # timeStep info: year, month, day, doy, hour, etc # spin-up noSpinUps = int(self.configuration.globalOptions['maxSpinUpsInYears']) if noSpinUps > 0: logger.info('Spin-Up #Total Years: ' + str(noSpinUps)) spinUpRun = 0 has_converged = False while spinUpRun < noSpinUps and has_converged == False: spinUpRun += 1 self.currTimeStep.getStartEndTimeStepsForSpinUp( self.configuration.globalOptions['startTime'], spinUpRun, noSpinUps) logger.info('Spin-Up Run No. ' + str(spinUpRun)) deterministic_runner = DeterministicRunner( self.configuration, self.currTimeStep, self.initial_state) all_state_begin = deterministic_runner.model.getAllState() self.dynamic_framework = DynamicFramework( deterministic_runner, self.currTimeStep.nrOfTimeSteps) self.dynamic_framework.setQuiet(True) self.dynamic_framework.run() all_state_end = deterministic_runner.model.getAllState() has_converged = spin_up.checkConvergence( all_state_begin, all_state_end, spinUpRun, deterministic_runner.model.routing.cellArea) self.initial_state = deterministic_runner.model.getState() # setting model ready after spin-up self.currTimeStep.getStartEndTimeSteps( self.configuration.globalOptions['startTime'], self.configuration.globalOptions['endTime']) self.deterministic_runner = DeterministicRunner( self.configuration, self.currTimeStep, self.initial_state) logger.info( 'End of spin-up. Model is ready for transient simulation run.')
def main(): # get the full path of configuration/ini file given in the system argument iniFileName = os.path.abspath(sys.argv[1]) # debug option debug_mode = False if len(sys.argv) > 2: if sys.argv[2] == "debug" or sys.argv[ 2] == "debug_parallel" or sys.argv[2] == "debug-parallel": debug_mode = True # object to handle configuration/ini file configuration = Configuration(iniFileName = iniFileName, \ debug_mode = debug_mode, \ no_modification = False) # parallel option this_run_is_part_of_a_set_of_parallel_run = False if len(sys.argv) > 2: if sys.argv[2] == "parallel" or sys.argv[ 2] == "debug_parallel" or sys.argv[2] == "debug-parallel": this_run_is_part_of_a_set_of_parallel_run = True # for a non parallel run (usually 30min), a specific directory given in the system argument (sys.argv[3]) will be assigned for a given parameter combination: if this_run_is_part_of_a_set_of_parallel_run == False: # modfiying 'outputDir' (based on the given system argument) configuration.globalOptions['outputDir'] += "/" + str( sys.argv[3]) + "/" # for a parallel run (usually 5min), we assign a specific directory based on the clone number/code: if this_run_is_part_of_a_set_of_parallel_run: # modfiying outputDir, clone-map and landmask (based on the given system arguments) clone_code = str(sys.argv[3]) configuration.globalOptions['outputDir'] += "/" + clone_code + "/" configuration.globalOptions['cloneMap'] = configuration.globalOptions[ 'cloneMap'] % (clone_code) configuration.globalOptions['landmask'] = configuration.globalOptions[ 'landmask'] % (clone_code) # set configuration configuration.set_configuration(system_arguments=sys.argv) # timeStep info: year, month, day, doy, hour, etc currTimeStep = ModelTime() # object for spin_up spin_up = SpinUp(configuration) # spinning-up noSpinUps = int(configuration.globalOptions['maxSpinUpsInYears']) initial_state = None if noSpinUps > 0: logger.info('Spin-Up #Total Years: ' + str(noSpinUps)) spinUpRun = 0 has_converged = False while spinUpRun < noSpinUps and has_converged == False: spinUpRun += 1 currTimeStep.getStartEndTimeStepsForSpinUp( configuration.globalOptions['startTime'], spinUpRun, noSpinUps) logger.info('Spin-Up Run No. ' + str(spinUpRun)) deterministic_runner = DeterministicRunner(configuration, currTimeStep, initial_state, sys.argv) all_state_begin = deterministic_runner.model.getAllState() dynamic_framework = DynamicFramework(deterministic_runner, currTimeStep.nrOfTimeSteps) dynamic_framework.setQuiet(True) dynamic_framework.run() all_state_end = deterministic_runner.model.getAllState() has_converged = spin_up.checkConvergence( all_state_begin, all_state_end, spinUpRun, deterministic_runner.model.routing.cellArea) initial_state = deterministic_runner.model.getState() # # Running the deterministic_runner (excluding DA scheme) currTimeStep.getStartEndTimeSteps(configuration.globalOptions['startTime'], configuration.globalOptions['endTime']) logger.info('Transient simulation run started.') deterministic_runner = DeterministicRunner(configuration, currTimeStep, initial_state, sys.argv) dynamic_framework = DynamicFramework(deterministic_runner, currTimeStep.nrOfTimeSteps) dynamic_framework.setQuiet(True) dynamic_framework.run()
def main(): # print disclaimer disclaimer.print_disclaimer() # get the full path of configuration/ini file given in the system argument iniFileName = os.path.abspath(sys.argv[1]) # debug option debug_mode = False if len(sys.argv) > 2: if sys.argv[2] == "debug": debug_mode = True # object to handle configuration/ini file configuration = Configuration(iniFileName = iniFileName, \ debug_mode = debug_mode) # timeStep info: year, month, day, doy, hour, etc currTimeStep = ModelTime() # object for spin_up spin_up = SpinUp(configuration) # spinningUp noSpinUps = int(configuration.globalOptions['maxSpinUpsInYears']) initial_state = None if noSpinUps > 0: logger.info('Spin-Up #Total Years: ' + str(noSpinUps)) spinUpRun = 0 has_converged = False while spinUpRun < noSpinUps and has_converged == False: spinUpRun += 1 currTimeStep.getStartEndTimeStepsForSpinUp( configuration.globalOptions['startTime'], spinUpRun, noSpinUps) logger.info('Spin-Up Run No. ' + str(spinUpRun)) deterministic_runner = DeterministicRunner(configuration, currTimeStep, initial_state) all_state_begin = deterministic_runner.model.getAllState() dynamic_framework = DynamicFramework(deterministic_runner, currTimeStep.nrOfTimeSteps) dynamic_framework.setQuiet(True) dynamic_framework.run() all_state_end = deterministic_runner.model.getAllState() has_converged = spin_up.checkConvergence( all_state_begin, all_state_end, spinUpRun, deterministic_runner.model.routing.cellArea) initial_state = deterministic_runner.model.getState() # Running the deterministic_runner (excluding DA scheme) currTimeStep.getStartEndTimeSteps(configuration.globalOptions['startTime'], configuration.globalOptions['endTime']) logger.info('Transient simulation run started.') deterministic_runner = DeterministicRunner(configuration, currTimeStep, initial_state) dynamic_framework = DynamicFramework(deterministic_runner, currTimeStep.nrOfTimeSteps) dynamic_framework.setQuiet(True) dynamic_framework.run() # for debugging to PCR-GLOBWB version one if configuration.debug_to_version_one: logger.info('\n\n\n\n\n' + 'Executing PCR-GLOBWB version 1.' + '\n\n\n\n\n') # reset modelTime object currTimeStep = None currTimeStep = ModelTime() currTimeStep.getStartEndTimeSteps( configuration.globalOptions['startTime'], configuration.globalOptions['endTime']) # execute PCR-GLOBWB version 1 # - including comparing model outputs (from versions one and two) pcrglobwb_one = oldcalc_framework.PCRGlobWBVersionOne(configuration, \ currTimeStep, \ deterministic_runner.model.routing.landmask, \ deterministic_runner.model.routing.cellArea) dynamic_framework = DynamicFramework(pcrglobwb_one, currTimeStep.nrOfTimeSteps) dynamic_framework.setQuiet(True) dynamic_framework.run()
def main(): # get the full path of configuration/ini file given in the system argument iniFileName = os.path.abspath(sys.argv[1]) # debug option debug_mode = False if len(sys.argv) > 2: if sys.argv[2] == "debug": debug_mode = True # object to handle configuration/ini file configuration = Configuration(iniFileName = iniFileName, \ debug_mode = debug_mode) # timeStep info: year, month, day, doy, hour, etc currTimeStep = ModelTime() # object for spin_up spin_up = SpinUp(configuration) # spinningUp noSpinUps = int(configuration.globalOptions['maxSpinUpsInYears']) initial_state = None if noSpinUps > 0: logger.info('Spin-Up #Total Years: ' + str(noSpinUps)) spinUpRun = 0 has_converged = False while spinUpRun < noSpinUps and has_converged == False: spinUpRun += 1 currTimeStep.getStartEndTimeStepsForSpinUp( configuration.globalOptions['startTime'], spinUpRun, noSpinUps) logger.info('Spin-Up Run No. ' + str(spinUpRun)) deterministic_runner = DeterministicRunner(configuration, currTimeStep, initial_state) all_state_begin = deterministic_runner.model.getAllState() dynamic_framework = DynamicFramework(deterministic_runner, currTimeStep.nrOfTimeSteps) dynamic_framework.setQuiet(True) dynamic_framework.run() all_state_end = deterministic_runner.model.getAllState() has_converged = spin_up.checkConvergence( all_state_begin, all_state_end, spinUpRun, deterministic_runner.model.routing.cellArea) initial_state = deterministic_runner.model.getState() # # Running the deterministic_runner (excluding DA scheme) currTimeStep.getStartEndTimeSteps(configuration.globalOptions['startTime'], configuration.globalOptions['endTime']) logger.info('Transient simulation run started.') deterministic_runner = DeterministicRunner(configuration, currTimeStep, initial_state) dynamic_framework = DynamicFramework(deterministic_runner, currTimeStep.nrOfTimeSteps) dynamic_framework.setQuiet(True) dynamic_framework.run()