{"action":"created","issue":{"url":"https://api.github.com/repos/mit-crpg/OpenMOC/issues/254","labels_url":"https://api.github.com/repos/mit-crpg/OpenMOC/issues/254/labels{/name}","comments_url":"https://api.github.com/repos/mit-crpg/OpenMOC/issues/254/comments","events_url":"https://api.github.com/repos/mit-crpg/OpenMOC/issues/254/events","html_url":"https://github.com/mit-crpg/OpenMOC/pull/254","id":129506838,"number":254,"title":"Cmfd refactor to sync with ClosedMOC/3D-MOC","user":{"login":"samuelshaner","id":1244537,"avatar_url":"https://avatars.githubusercontent.com/u/1244537?v=3","gravatar_id":"","url":"https://api.github.com/users/samuelshaner","html_url":"https://github.com/samuelshaner","followers_url":"https://api.github.com/users/samuelshaner/followers","following_url":"https://api.github.com/users/samuelshaner/following{/other_user}","gists_url":"https://api.github.com/users/samuelshaner/gists{/gist_id}","starred_url":"https://api.github.com/users/samuelshaner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/samuelshaner/subscriptions","organizations_url":"https://api.github.com/users/samuelshaner/orgs","repos_url":"https://api.github.com/users/samuelshaner/repos","events_url":"https://api.github.com/users/samuelshaner/events{/privacy}","received_events_url":"https://api.github.com/users/samuelshaner/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mit-crpg/OpenMOC/labels/Bug","name":"Bug","color":"e11d21"},{"url":"https://api.github.com/repos/mit-crpg/OpenMOC/labels/CMFD","name":"CMFD","color":"5319e7"},{"url":"https://api.github.com/repos/mit-crpg/OpenMOC/labels/OpenMP","name":"OpenMP","color":"fbca04"}],"state":"open","locked":false,"assignee":{"login":"geogunow","id":2420416,"avatar_url":"https://avatars.githubusercontent.com/u/2420416?v=3","gravatar_id":"","url":"https://api.github.com/users/geogunow","html_url":"https://github.com/geogunow","followers_url":"https://api.github.com/users/geogunow/followers","following_url":"https://api.github.com/users/geogunow/following{/other_user}","gists_url":"https://api.github.com/users/geogunow/gists{/gist_id}","starred_url":"https://api.github.com/users/geogunow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geogunow/subscriptions","organizations_url":"https://api.github.com/users/geogunow/orgs","repos_url":"https://api.github.com/users/geogunow/repos","events_url":"https://api.github.com/users/geogunow/events{/privacy}","received_events_url":"https://api.github.com/users/geogunow/received_events","type":"User","site_admin":false},"milestone":null,"comments":2,"created_at":"2016-01-28T16:44:06Z","updated_at":"2016-01-29T16:29:19Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/mit-crpg/OpenMOC/pulls/254","html_url":"https://github.com/mit-crpg/OpenMOC/pull/254","diff_url":"https://github.com/mit-crpg/OpenMOC/pull/254.diff","patch_url":"https://github.com/mit-crpg/OpenMOC/pull/254.patch"},"body":"This PR will be accompanied by a PR to ClosedMOC/3D-MOC that syncs up the Cmfd, Vector, and Matrix classes and linalg functions as much as possible. Important changes in this PR include:\r\n\r\n* **Shared OpenMP locks**: @geogunow suggested that OpenMP locks be shared across objects, where possible, to avoid unnecessary duplication of locks. Cmfd now has an array of locks (by Cmfd cell) that are shared with the Vector and Matrix objects used to solve the diffusion eigenvalue problem.\r\n* **splitEdgeCurrents() corrected**: The procedure for splitting edge currents has been fixed to properly handle REFLECTIVE, PERIODIC, and VACUUM boundary conditions.\r\n* **Solver residual initialized to 0.**: If left uninitialized, the residual output for iteration 0 is junk (at least for double precision).\r\n* **Vectorized `setValues(...)` and `incrementValues(...)` added to Vector.cpp**: This implements the Cmfd shared memory optimization that @jtramm started in PR #196.\r\n* **`Lattice::getLatticeSurface(...)` reverted to general form**: The `Lattice::getLatticeSurface(...)` method made some assumptions on the numbering of the surfaces and edges that is not valid for 3D surfaces, so this method was reverted to the previous general form.\r\n* **`splitCorners()` -> `splitEdgeCurrents()`**: The `splitCorners()` routine has been changed to `splitEdgeCurrents()` and the nomenclature for corners has been changed to edges to reflect the language commonly used elsewhere to describe a cube:\r\n\r\n![faces-edges-vertices](https://cloud.githubusercontent.com/assets/1244537/12650385/9f0f204c-c5b0-11e5-9cfa-05e548cb88f7.png)"},"comment":{"url":"https://api.github.com/repos/mit-crpg/OpenMOC/issues/comments/176848037","html_url":"https://github.com/mit-crpg/OpenMOC/pull/254#issuecomment-176848037","issue_url":"https://api.github.com/repos/mit-crpg/OpenMOC/issues/254","id":176848037,"user":{"login":"samuelshaner","id":1244537,"avatar_url":"https://avatars.githubusercontent.com/u/1244537?v=3","gravatar_id":"","url":"https://api.github.com/users/samuelshaner","html_url":"https://github.com/samuelshaner","followers_url":"https://api.github.com/users/samuelshaner/followers","following_url":"https://api.github.com/users/samuelshaner/following{/other_user}","gists_url":"https://api.github.com/users/samuelshaner/gists{/gist_id}","starred_url":"https://api.github.com/users/samuelshaner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/samuelshaner/subscriptions","organizations_url":"https://api.github.com/users/samuelshaner/orgs","repos_url":"https://api.github.com/users/samuelshaner/repos","events_url":"https://api.github.com/users/samuelshaner/events{/privacy}","received_events_url":"https://api.github.com/users/samuelshaner/received_events","type":"User","site_admin":false},"created_at":"2016-01-29T16:29:19Z","updated_at":"2016-01-29T16:29:19Z","body":"I just ran a bunch of cases from the sample-inputs, including `c5g7-cmfd.py`, and the `test_cmfd_pwr_assembly` and got the exact same results from the code in this PR and the code from PR #251."}}