Skip to content
Extraits de code Groupes Projets
extend_enkf_experiment.py 2,56 ko
Newer Older
  • Learn to ignore specific revisions
  • import argparse
    
    import utilities.generic
    
    import models.nemo.utilities.generic
    import models.nemo.utilities.argument_parser
    import models.nemo.utilities.global_information
    
    import models.nemo.enkf_tools.launch_enkf_experiment
    
    import models.nemo.enkf_tools.utilities.argument_parser
    import models.nemo.enkf_tools.utilities.enkf_experiment
    
    
    #############
    # functions #
    #############
    
    def extend_enkf_experiment(version, configuration, name, end_date,
      assimilation_frequency=models.nemo.utilities.generic.DEFAULT_VALUE_ASSIMILATION_FREQUENCY,
      launch=False):
      '''
      Extend an existing EnKF experiment, by adding new assimilated legs.
      '''
    
      print('Extending EnKF experiment "%s", in configuration "%s", in version "%s"...\n'%(name,
        configuration, version))
    
      # create the experiment object
      experiment = models.nemo.enkf_tools.utilities.enkf_experiment.EnKFExperiment(version=version,
        configuration=configuration, name=name)
      experiment_plan = experiment.get_experiment_plan(for_modification=True)
    
      # extend the experiment plan
      experiment_plan.extend_legs(end_date=end_date, restart_frequency=assimilation_frequency)
      experiment_plan.rewrite()
    
      # launch the experiment, if requested
      if launch:
        models.nemo.enkf_tools.launch_enkf_experiment.launch_enkf_experiment(version=version,
          configuration=configuration, name=name)
    
    
    #################
    # main function #
    #################
    
    def main():
    
      print()
    
      parser = argparse.ArgumentParser(description=extend_enkf_experiment.__doc__,
        formatter_class=argparse.RawTextHelpFormatter)
      models.nemo.utilities.argument_parser.add_argument_version(parser=parser, required=False)
      models.nemo.utilities.argument_parser.add_argument_configuration(parser=parser, required=False)
      models.nemo.utilities.argument_parser.add_argument_name(parser=parser)
      models.nemo.utilities.argument_parser.add_argument_end_date(parser=parser)
      models.nemo.enkf_tools.utilities.argument_parser.add_argument_assimilation_frequency(
        parser=parser, help_choice='enkf')
      models.nemo.utilities.argument_parser.add_argument_launch(parser=parser)
      arguments = vars(parser.parse_args())
    
      try:
        arguments['version'], arguments['configuration'] = (
          models.nemo.utilities.global_information.get_version_and_configuration(
          tentative_version=arguments['version'], tentative_configuration=arguments['configuration']))
      except utilities.generic.ClimateToolboxException as e:
        e.display()
    
      try:
        extend_enkf_experiment(**arguments)
      except utilities.generic.ClimateToolboxException as e:
        e.display()
    
    
    if __name__ == '__main__':
      main()