{"action":"created","issue":{"url":"https://api.github.com/repos/CASL/Futility/issues/104","repository_url":"https://api.github.com/repos/CASL/Futility","labels_url":"https://api.github.com/repos/CASL/Futility/issues/104/labels{/name}","comments_url":"https://api.github.com/repos/CASL/Futility/issues/104/comments","events_url":"https://api.github.com/repos/CASL/Futility/issues/104/events","html_url":"https://github.com/CASL/Futility/pull/104","id":322130960,"number":104,"title":"Implement a PETSc-based multigrid solver in Futility","user":{"login":"benyee","id":1551952,"avatar_url":"https://avatars2.githubusercontent.com/u/1551952?v=4","gravatar_id":"","url":"https://api.github.com/users/benyee","html_url":"https://github.com/benyee","followers_url":"https://api.github.com/users/benyee/followers","following_url":"https://api.github.com/users/benyee/following{/other_user}","gists_url":"https://api.github.com/users/benyee/gists{/gist_id}","starred_url":"https://api.github.com/users/benyee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benyee/subscriptions","organizations_url":"https://api.github.com/users/benyee/orgs","repos_url":"https://api.github.com/users/benyee/repos","events_url":"https://api.github.com/users/benyee/events{/privacy}","received_events_url":"https://api.github.com/users/benyee/received_events","type":"User","site_admin":false},"labels":[{"id":495128221,"url":"https://api.github.com/repos/CASL/Futility/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"open","locked":false,"assignee":{"login":"bkochuna","id":5183217,"avatar_url":"https://avatars0.githubusercontent.com/u/5183217?v=4","gravatar_id":"","url":"https://api.github.com/users/bkochuna","html_url":"https://github.com/bkochuna","followers_url":"https://api.github.com/users/bkochuna/followers","following_url":"https://api.github.com/users/bkochuna/following{/other_user}","gists_url":"https://api.github.com/users/bkochuna/gists{/gist_id}","starred_url":"https://api.github.com/users/bkochuna/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bkochuna/subscriptions","organizations_url":"https://api.github.com/users/bkochuna/orgs","repos_url":"https://api.github.com/users/bkochuna/repos","events_url":"https://api.github.com/users/bkochuna/events{/privacy}","received_events_url":"https://api.github.com/users/bkochuna/received_events","type":"User","site_admin":false},"assignees":[{"login":"bkochuna","id":5183217,"avatar_url":"https://avatars0.githubusercontent.com/u/5183217?v=4","gravatar_id":"","url":"https://api.github.com/users/bkochuna","html_url":"https://github.com/bkochuna","followers_url":"https://api.github.com/users/bkochuna/followers","following_url":"https://api.github.com/users/bkochuna/following{/other_user}","gists_url":"https://api.github.com/users/bkochuna/gists{/gist_id}","starred_url":"https://api.github.com/users/bkochuna/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bkochuna/subscriptions","organizations_url":"https://api.github.com/users/bkochuna/orgs","repos_url":"https://api.github.com/users/bkochuna/repos","events_url":"https://api.github.com/users/bkochuna/events{/privacy}","received_events_url":"https://api.github.com/users/bkochuna/received_events","type":"User","site_admin":false}],"milestone":null,"comments":3,"created_at":"2018-05-11T00:38:33Z","updated_at":"2018-05-11T17:04:51Z","closed_at":null,"author_association":"COLLABORATOR","pull_request":{"url":"https://api.github.com/repos/CASL/Futility/pulls/104","html_url":"https://github.com/CASL/Futility/pull/104","diff_url":"https://github.com/CASL/Futility/pull/104.diff","patch_url":"https://github.com/CASL/Futility/pull/104.patch"},"body":"In these commits, I have implemented a PETSc-based multigrid solver in Futility.\r\n\r\nSummary of changes:\r\n* New LinearSolverTypes_Multigrid.f90 module for the PETSc-based multigrid linear solver\r\n* New MultigridMesh.f90 module.  Filling out a MultigridMeshStructureType object is the easiest way to tell LinearSolverTypes_Multigrid.f90 how to set-up the interpolation and grid structure.\r\n* Added unit tests corresponding to these two modules.\r\n* New pcmg_supplement.c file to create a \"SoftReset\" function that PETSc was missing for its multigrid linear solver\r\n* I tried to make a custom smoother using PCSHELL in PETSc, but it didn't work very well, so I scrapped it.  However, the commits required for it can be found below in case we ever want to revisit it.\r\n* Some relatively minor changes/improvements were made to a few other files in Futility as well\r\n\r\nAlthough I developed it with MPACT in mind, I tried to make it as general as possible.  Basically, the steps for using LinearSolverTypes_Multigrid are as follows:\r\n\r\n1. Call %init as you would with a normal LSTypes\r\n2. Fill out a MultigridMeshStructureType based on your problem's geometric information and your desired interpolation scheme.\r\n3. Call %fillInterpMats, which allocates the necessary PETSc matrices for the interpolation operators and fills them out based on the information you have stored in MultigridMeshStructureType.\r\n4.  Call %setupPETScMG, which defines the smoother on each multigrid level, makes sure each level gets assigned the appropriate interpolation operator, and sets other multigrid-related parameters from a parameter list\r\n\r\nI wasn't sure who to request to review this, so if you would like to review it, please go for it!  Thanks!"},"comment":{"url":"https://api.github.com/repos/CASL/Futility/issues/comments/388424754","html_url":"https://github.com/CASL/Futility/pull/104#issuecomment-388424754","issue_url":"https://api.github.com/repos/CASL/Futility/issues/104","id":388424754,"user":{"login":"benyee","id":1551952,"avatar_url":"https://avatars2.githubusercontent.com/u/1551952?v=4","gravatar_id":"","url":"https://api.github.com/users/benyee","html_url":"https://github.com/benyee","followers_url":"https://api.github.com/users/benyee/followers","following_url":"https://api.github.com/users/benyee/following{/other_user}","gists_url":"https://api.github.com/users/benyee/gists{/gist_id}","starred_url":"https://api.github.com/users/benyee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benyee/subscriptions","organizations_url":"https://api.github.com/users/benyee/orgs","repos_url":"https://api.github.com/users/benyee/repos","events_url":"https://api.github.com/users/benyee/events{/privacy}","received_events_url":"https://api.github.com/users/benyee/received_events","type":"User","site_admin":false},"created_at":"2018-05-11T17:04:51Z","updated_at":"2018-05-11T17:04:51Z","author_association":"COLLABORATOR","body":"I'll have 2 new commits to address the still-failing CI build and Brendan's comments shortly.  I just want to make sure it compiles and runs locally first."}}
{"actor":{"display_login":"benyee"}}