{"action":"created","issue":{"url":"https://api.github.com/repos/dealii/dealii/issues/616","labels_url":"https://api.github.com/repos/dealii/dealii/issues/616/labels{/name}","comments_url":"https://api.github.com/repos/dealii/dealii/issues/616/comments","events_url":"https://api.github.com/repos/dealii/dealii/issues/616/events","html_url":"https://github.com/dealii/dealii/pull/616","id":59286055,"number":616,"title":"Remove deprecated functions 14","user":{"login":"bangerth","id":7504421,"avatar_url":"https://avatars.githubusercontent.com/u/7504421?v=3","gravatar_id":"","url":"https://api.github.com/users/bangerth","html_url":"https://github.com/bangerth","followers_url":"https://api.github.com/users/bangerth/followers","following_url":"https://api.github.com/users/bangerth/following{/other_user}","gists_url":"https://api.github.com/users/bangerth/gists{/gist_id}","starred_url":"https://api.github.com/users/bangerth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bangerth/subscriptions","organizations_url":"https://api.github.com/users/bangerth/orgs","repos_url":"https://api.github.com/users/bangerth/repos","events_url":"https://api.github.com/users/bangerth/events{/privacy}","received_events_url":"https://api.github.com/users/bangerth/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-02-27T19:58:31Z","updated_at":"2015-03-02T00:16:48Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dealii/dealii/pulls/616","html_url":"https://github.com/dealii/dealii/pull/616","diff_url":"https://github.com/dealii/dealii/pull/616.diff","patch_url":"https://github.com/dealii/dealii/pull/616.patch"},"body":"This removes the naked compress() function without VectorOperation argument from the Trilinos classes.\r\nFixes #403 "},"comment":{"url":"https://api.github.com/repos/dealii/dealii/issues/comments/76640413","html_url":"https://github.com/dealii/dealii/pull/616#issuecomment-76640413","issue_url":"https://api.github.com/repos/dealii/dealii/issues/616","id":76640413,"user":{"login":"bangerth","id":7504421,"avatar_url":"https://avatars.githubusercontent.com/u/7504421?v=3","gravatar_id":"","url":"https://api.github.com/users/bangerth","html_url":"https://github.com/bangerth","followers_url":"https://api.github.com/users/bangerth/followers","following_url":"https://api.github.com/users/bangerth/following{/other_user}","gists_url":"https://api.github.com/users/bangerth/gists{/gist_id}","starred_url":"https://api.github.com/users/bangerth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bangerth/subscriptions","organizations_url":"https://api.github.com/users/bangerth/orgs","repos_url":"https://api.github.com/users/bangerth/repos","events_url":"https://api.github.com/users/bangerth/events{/privacy}","received_events_url":"https://api.github.com/users/bangerth/received_events","type":"User","site_admin":false},"created_at":"2015-03-02T00:16:48Z","updated_at":"2015-03-02T00:16:48Z","body":"These are totally reasonable questions, and maybe I should have discussed this more in the pull request.\r\n\r\nMost of the calls to `compress()` that I removed are at the beginning of functions. In other words, the old functions assumed nothing about the state of the matrix whereas after the change, the function assumes that there are no pending writes or additions to the matrix. The reason I removed these calls are:\r\n- If you call `compress` with a `VectorOperation` argument, you need to know whether the last operation was a write or an addition. We cannot know this at the beginning of a function since these operations would have happened in other functions upstream somewhere out of the control of the current function. In other words, we cannot reasonably call `compress()` in these places unless the matrix keeps track what operation was last performed.\r\n- It's pretty inefficient. Some of these places are just short read accesses that might happen in a loop and we probably don't want to call `compress()` in each iteration of the loop.\r\n- It might lead to deadlocks. `compress()` is a collective operation, so every processor needs to execute the same number of calls (i.e., also the same number of iterations through the loop). This is, for example, why the `clear_row()` function did not have a `compress()` call in it, but `clear_rows()` does -- the former is called an unpredictable number of times on each processor, whereas the latter is called exactly once.\r\n\r\nI should probably document the functions where I have removed the call to `compress()` to state that the matrix needs to have `compress()` called beforehand as appropriate, but I'd also appreciate a more general discussion whether the approach taken here is reasonable or not."}}