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)
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)
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)