Esempio n. 1
0
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()
Esempio n. 2
0
    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()
Esempio n. 5
0
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()