{"action":"created","issue":{"url":"https://api.github.com/repos/mit-crpg/openmc/issues/647","repository_url":"https://api.github.com/repos/mit-crpg/openmc","labels_url":"https://api.github.com/repos/mit-crpg/openmc/issues/647/labels{/name}","comments_url":"https://api.github.com/repos/mit-crpg/openmc/issues/647/comments","events_url":"https://api.github.com/repos/mit-crpg/openmc/issues/647/events","html_url":"https://github.com/mit-crpg/openmc/pull/647","id":154298059,"number":647,"title":"Add periodic boundary conditions","user":{"login":"paulromano","id":743095,"avatar_url":"https://avatars.githubusercontent.com/u/743095?v=3","gravatar_id":"","url":"https://api.github.com/users/paulromano","html_url":"https://github.com/paulromano","followers_url":"https://api.github.com/users/paulromano/followers","following_url":"https://api.github.com/users/paulromano/following{/other_user}","gists_url":"https://api.github.com/users/paulromano/gists{/gist_id}","starred_url":"https://api.github.com/users/paulromano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paulromano/subscriptions","organizations_url":"https://api.github.com/users/paulromano/orgs","repos_url":"https://api.github.com/users/paulromano/repos","events_url":"https://api.github.com/users/paulromano/events{/privacy}","received_events_url":"https://api.github.com/users/paulromano/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mit-crpg/openmc/labels/Geometry","name":"Geometry","color":"CD6600"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/mit-crpg/openmc/milestones/14","html_url":"https://github.com/mit-crpg/openmc/milestones/v0.8","labels_url":"https://api.github.com/repos/mit-crpg/openmc/milestones/14/labels","id":1241750,"number":14,"title":"v0.8","description":"","creator":{"login":"paulromano","id":743095,"avatar_url":"https://avatars.githubusercontent.com/u/743095?v=3","gravatar_id":"","url":"https://api.github.com/users/paulromano","html_url":"https://github.com/paulromano","followers_url":"https://api.github.com/users/paulromano/followers","following_url":"https://api.github.com/users/paulromano/following{/other_user}","gists_url":"https://api.github.com/users/paulromano/gists{/gist_id}","starred_url":"https://api.github.com/users/paulromano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paulromano/subscriptions","organizations_url":"https://api.github.com/users/paulromano/orgs","repos_url":"https://api.github.com/users/paulromano/repos","events_url":"https://api.github.com/users/paulromano/events{/privacy}","received_events_url":"https://api.github.com/users/paulromano/received_events","type":"User","site_admin":false},"open_issues":7,"closed_issues":41,"state":"open","created_at":"2015-08-05T10:39:23Z","updated_at":"2016-05-12T03:03:35Z","due_on":"2016-04-30T05:00:00Z","closed_at":null},"comments":4,"created_at":"2016-05-11T17:25:31Z","updated_at":"2016-05-15T17:01:59Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/mit-crpg/openmc/pulls/647","html_url":"https://github.com/mit-crpg/openmc/pull/647","diff_url":"https://github.com/mit-crpg/openmc/pull/647.diff","patch_url":"https://github.com/mit-crpg/openmc/pull/647.patch"},"body":"This pull request adds support for periodic boundary conditions on x-, y-, and z-planes. The user simply specifies `boundary=\"periodic\"` on pairs of surfaces and OpenMC will automatically match surfaces together.\r\n\r\nNo special support is needed in the Python API."},"comment":{"url":"https://api.github.com/repos/mit-crpg/openmc/issues/comments/219297463","html_url":"https://github.com/mit-crpg/openmc/pull/647#issuecomment-219297463","issue_url":"https://api.github.com/repos/mit-crpg/openmc/issues/647","id":219297463,"user":{"login":"paulromano","id":743095,"avatar_url":"https://avatars.githubusercontent.com/u/743095?v=3","gravatar_id":"","url":"https://api.github.com/users/paulromano","html_url":"https://github.com/paulromano","followers_url":"https://api.github.com/users/paulromano/followers","following_url":"https://api.github.com/users/paulromano/following{/other_user}","gists_url":"https://api.github.com/users/paulromano/gists{/gist_id}","starred_url":"https://api.github.com/users/paulromano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paulromano/subscriptions","organizations_url":"https://api.github.com/users/paulromano/orgs","repos_url":"https://api.github.com/users/paulromano/repos","events_url":"https://api.github.com/users/paulromano/events{/privacy}","received_events_url":"https://api.github.com/users/paulromano/received_events","type":"User","site_admin":false},"created_at":"2016-05-15T17:01:59Z","updated_at":"2016-05-15T17:01:59Z","body":"@smharper Let me cogitate on your proposal. I personally like having boundary conditions specified as attributes of a surface, since that's how we ultimately store them. For rotational periodic conditions, I could imagine something like:\r\n```xml\r\n<surface id=\"1\" type=\"x-plane\" coeffs=\"0.0\" boundary=\"periodic\" opposite=\"2\" />\r\n<surface id=\"2\" type=\"y-plane\" coeffs=\"0.0\" boundary=\"periodic\" opposite=\"1\" />\r\n```\r\nThe Python side would have the user specify an `opposite` attribute that expects an instance of `Surface`. The name doesn't have to be opposite if you can think of something better (\"opposite_boundary\", \"periodic_with\", \"periodic_surface\", etc.)."}}