Ejemplo n.º 1
0
def collect_physics_subroutines(scheme_files):
    """Scan all Fortran source files in scheme_files for subroutines with argument tables."""
    logging.info('Parsing metadata tables in physics scheme files ...')
    success = True
    # Parse all scheme files
    metadata_request = {}
    arguments_request = {}
    pset_request = {}
    pset_schemes = {}
    for scheme_file in scheme_files.keys():
        (scheme_filepath,
         scheme_filename) = os.path.split(os.path.abspath(scheme_file))
        # Change to directory where scheme_file lives
        os.chdir(scheme_filepath)
        (metadata, arguments) = parse_scheme_tables(scheme_filename)
        # The different psets for the variables used by schemes in scheme_file
        pset = {
            var_name: scheme_files[scheme_file]
            for var_name in metadata.keys()
        }
        # The different psets for the schemes in scheme_file
        for scheme_name in arguments.keys():
            pset_schemes[scheme_name] = scheme_files[scheme_file]
        # Merge metadata and pset, append to arguments
        metadata_request = merge_dictionaries(metadata_request, metadata)
        pset_request = merge_dictionaries(pset_request, pset)
        arguments_request.update(arguments)
        os.chdir(BASEDIR)
    # Return to BASEDIR
    os.chdir(BASEDIR)
    return (success, metadata_request, pset_request, arguments_request,
            pset_schemes)
Ejemplo n.º 2
0
def collect_physics_subroutines(scheme_files):
    """Scan all Fortran source files in scheme_files for subroutines with argument tables."""
    logging.info('Parsing metadata tables in physics scheme files ...')
    success = True
    # Parse all scheme files: record metadata, argument list, dependencies, and which scheme is in which file
    metadata_request = collections.OrderedDict()
    arguments_request = collections.OrderedDict()
    dependencies_request = collections.OrderedDict()
    schemes_in_files = collections.OrderedDict()
    for scheme_file in scheme_files:
        scheme_file_with_abs_path = os.path.abspath(scheme_file)
        (scheme_filepath,
         scheme_filename) = os.path.split(scheme_file_with_abs_path)
        # Change to directory where scheme_file lives
        os.chdir(scheme_filepath)
        (metadata, arguments,
         dependencies) = parse_scheme_tables(scheme_filepath, scheme_filename)
        # Record which scheme is in which file
        for scheme in arguments.keys():
            schemes_in_files[scheme] = scheme_file_with_abs_path
        # Merge metadata, append to arguments and dependencies
        metadata_request = merge_dictionaries(metadata_request, metadata)
        arguments_request.update(arguments)
        dependencies_request.update(dependencies)
        os.chdir(BASEDIR)
    # Return to BASEDIR
    os.chdir(BASEDIR)
    return (success, metadata_request, arguments_request, dependencies_request,
            schemes_in_files)
Ejemplo n.º 3
0
def collect_physics_subroutines(scheme_files):
    """Scan all Fortran source files in scheme_files for subroutines with argument tables."""
    logging.info('Parsing metadata tables in physics scheme files ...')
    success = True
    # Parse all scheme files
    metadata_request = {}
    arguments_request = {}
    for scheme_file in scheme_files:
        (scheme_filepath, scheme_filename) = os.path.split(os.path.abspath(scheme_file))
        # Change to directory where scheme_file lives
        os.chdir(scheme_filepath)
        (metadata, arguments) = parse_scheme_tables(scheme_filename)
        metadata_request = merge_metadata_dicts(metadata_request, metadata)
        arguments_request.update(arguments)
        os.chdir(BASEDIR)
    # Return to BASEDIR
    os.chdir(BASEDIR)
    return (success, metadata_request, arguments_request)