{"action":"created","issue":{"url":"https://api.github.com/repos/opesci/devito/issues/43","repository_url":"https://api.github.com/repos/opesci/devito","labels_url":"https://api.github.com/repos/opesci/devito/issues/43/labels{/name}","comments_url":"https://api.github.com/repos/opesci/devito/issues/43/comments","events_url":"https://api.github.com/repos/opesci/devito/issues/43/events","html_url":"https://github.com/opesci/devito/issues/43","id":166112355,"number":43,"title":"Generic symbolic dimensions  ","user":{"login":"mlange05","id":5585005,"avatar_url":"https://avatars.githubusercontent.com/u/5585005?v=3","gravatar_id":"","url":"https://api.github.com/users/mlange05","html_url":"https://github.com/mlange05","followers_url":"https://api.github.com/users/mlange05/followers","following_url":"https://api.github.com/users/mlange05/following{/other_user}","gists_url":"https://api.github.com/users/mlange05/gists{/gist_id}","starred_url":"https://api.github.com/users/mlange05/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mlange05/subscriptions","organizations_url":"https://api.github.com/users/mlange05/orgs","repos_url":"https://api.github.com/users/mlange05/repos","events_url":"https://api.github.com/users/mlange05/events{/privacy}","received_events_url":"https://api.github.com/users/mlange05/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/opesci/devito/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2016-07-18T14:50:39Z","updated_at":"2016-08-16T13:58:58Z","closed_at":null,"body":"The default symbols used to represent the different spatial and temporal dimensions work fine for our current examples and test cases, but restrict users that may want to implement other, more complicated equations or time-stepping schemes. A more dynamic and customisable approach will facilitate further implementations and should allow us to significantly reduce the complexity of the `Propagator`. This, however, requires careful design which can be discussed in this issue.\r\n\r\nMy current thinking is based around the idea of introducing some type of `Dimension` class that, similar to our `SymbolicData` objects, associates SymPy dimension symbols (`x`, `y`, `z`, `t`) with meta-data about dimension sizes and loop iteration spaces. Such a model might work something like this:\r\n* A Propagator maintains a list of `Dimensions`, which it can query to generate the appropriate C loop code, reducing the complexity of the Propagator code.\r\n* A `Dimension` might yield multiple `IterationSpace` objects that represent sub-loops for loop blocking. These can be created according to various blocking schemes and across multiple dimensions.\r\n* Individual stencil equations coming into the Operator can be scanned for `Dimension` symbols, which allows us to capture _free and bound variables_ and will allow us to automatically insert the stencil at the right depth in the loop nest. This will help with sanity checks for _operator merging_ and inserting sparse operations, ie. source and receiver terms, more gracefully.\r\n* Additional SymPy expressions might be used to define custom stepping schemes for individual iteration spaces, which will allow user to implement custom time-stepping algorithms.\r\n\r\nAs stated above, this issue is intended for discussing and drafting a possible implementation, so comments and suggestions are highly welcome.  "},"comment":{"url":"https://api.github.com/repos/opesci/devito/issues/comments/240109993","html_url":"https://github.com/opesci/devito/issues/43#issuecomment-240109993","issue_url":"https://api.github.com/repos/opesci/devito/issues/43","id":240109993,"user":{"login":"mloubout","id":5702350,"avatar_url":"https://avatars.githubusercontent.com/u/5702350?v=3","gravatar_id":"","url":"https://api.github.com/users/mloubout","html_url":"https://github.com/mloubout","followers_url":"https://api.github.com/users/mloubout/followers","following_url":"https://api.github.com/users/mloubout/following{/other_user}","gists_url":"https://api.github.com/users/mloubout/gists{/gist_id}","starred_url":"https://api.github.com/users/mloubout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mloubout/subscriptions","organizations_url":"https://api.github.com/users/mloubout/orgs","repos_url":"https://api.github.com/users/mloubout/repos","events_url":"https://api.github.com/users/mloubout/events{/privacy}","received_events_url":"https://api.github.com/users/mloubout/received_events","type":"User","site_admin":false},"created_at":"2016-08-16T13:58:58Z","updated_at":"2016-08-16T13:58:58Z","body":"`self.stencils` list of stencils with the main code for the Dimension loop\r\nIt still would be good to be able to have possibility to split the stencils in different dimension loop with intermediate `Pre/post` loops"}}
{"actor":{"display_login":"mloubout"}}