mbdevpl / transpyle-flash

0 stars 1 forks source link

NotImplementedError in "hy_uhd_getFaceFlux.F90" #1

Open chaw0023 opened 6 years ago

chaw0023 commented 6 years ago

This is the error I get when feeding it in the transpiler.

NotImplementedError: conflicting dimensions information

File path: _flash-4.5/source/physics/Hydro/HydroMain/unsplit/hy_uhdgetFaceFlux.F90

A test case which uses this file is sod problem. i.e. ./setup -auto -2d

chaw0023 commented 6 years ago

Full error stack:


NotImplementedError Traceback (most recent call last)

in () ----> 1 code = to_fortran(path) in to_fortran(path) 2 """Transpile Fortran to Fortran, using Python AST as intermediate (generalized) format.""" 3 fortran_ast = parser.parse('', path) ----> 4 tree = generalizer.generalize(fortran_ast) 5 fortran_code = unparser.unparse(tree) 6 return fortran_code ~/.local/lib/python3.6/site-packages/transpyle/fortran/ast_generalizer.py in generalize(self, root_node) 69 def generalize(self, root_node: ET.Element) -> typed_ast3.AST: 70 file_node = root_node[0] ---> 71 return self.transform(file_node) 72 73 def _ensure_top_level_import(self, canonical_name: str, alias: t.Optional[str] = None): ~/.local/lib/python3.6/site-packages/transpyle/fortran/ast_generalizer.py in transform(self, node, warn) 104 node.tag, ET.tostring(node).decode().rstrip())) 105 _transform = getattr(self, transform_name) --> 106 return _transform(node) 107 108 def transform_all_subnodes( ~/.local/lib/python3.6/site-packages/transpyle/fortran/ast_generalizer.py in _file(self, node) 138 self._now_parsing_file = True 139 body = self.transform_all_subnodes( --> 140 node, warn=False, ignored={'start-of-file', 'end-of-file'}) 141 self._now_parsing_file = False 142 import_statements = list(itertools.chain( ~/.local/lib/python3.6/site-packages/transpyle/fortran/ast_generalizer.py in transform_all_subnodes(self, node, warn, skip_empty, ignored) 131 continue 132 _transform = getattr(self, transform_name) --> 133 transformed.append(_transform(subnode)) 134 return transformed 135 ~/.local/lib/python3.6/site-packages/transpyle/fortran/ast_generalizer.py in _subroutine(self, node) 201 else: 202 arguments = self.transform(arguments_node) --> 203 body = self.transform_all_subnodes(node.find('./body')) 204 return typed_ast3.FunctionDef( 205 name=node.attrib['name'], args=arguments, body=body, decorator_list=[], ~/.local/lib/python3.6/site-packages/transpyle/fortran/ast_generalizer.py in transform_all_subnodes(self, node, warn, skip_empty, ignored) 131 continue 132 _transform = getattr(self, transform_name) --> 133 transformed.append(_transform(subnode)) 134 return transformed 135 ~/.local/lib/python3.6/site-packages/transpyle/fortran/ast_generalizer.py in _specification(self, node) 252 declarations = self.transform_all_subnodes( 253 node, warn=False, skip_empty=True, --> 254 ignored={'declaration-construct', 'specification-part'}) 255 return declarations 256 ~/.local/lib/python3.6/site-packages/transpyle/fortran/ast_generalizer.py in transform_all_subnodes(self, node, warn, skip_empty, ignored) 131 continue 132 _transform = getattr(self, transform_name) --> 133 transformed.append(_transform(subnode)) 134 return transformed 135 ~/.local/lib/python3.6/site-packages/transpyle/fortran/ast_generalizer.py in _declaration(self, node) 273 simple=True) 274 elif declaration_type == 'variable': --> 275 return self._declaration_variable(node) 276 elif declaration_type == 'parameter': 277 return self._declaration_parameter(node) ~/.local/lib/python3.6/site-packages/transpyle/fortran/ast_generalizer.py in _declaration_variable(self, node) 320 raise SyntaxError('many dimensions definitions for single variable') 321 if len(variables) > 1: --> 322 raise NotImplementedError('conflicting dimensions information') 323 dimensions_node = 'found in variable' 324 dimensions = variables[0][0].fortran_metadata['dimensions'] NotImplementedError: conflicting dimensions information
mbdevpl commented 6 years ago

The issue of "NotImplementedError: conflicting dimensions information" is resolved, however a new issue emerged because there's contains statement in subroutine body. Details are described in mbdevpl/transpyle#1

I'll also resolve the new issue at a later date, for now I'm focusing on other issues. I'll post here with updates.