{"action":"created","issue":{"url":"https://api.github.com/repos/dealii/dealii/issues/727","labels_url":"https://api.github.com/repos/dealii/dealii/issues/727/labels{/name}","comments_url":"https://api.github.com/repos/dealii/dealii/issues/727/comments","events_url":"https://api.github.com/repos/dealii/dealii/issues/727/events","html_url":"https://github.com/dealii/dealii/pull/727","id":65919450,"number":727,"title":"New MappingFE","user":{"login":"mtezzele","id":8956946,"avatar_url":"https://avatars.githubusercontent.com/u/8956946?v=3","gravatar_id":"","url":"https://api.github.com/users/mtezzele","html_url":"https://github.com/mtezzele","followers_url":"https://api.github.com/users/mtezzele/followers","following_url":"https://api.github.com/users/mtezzele/following{/other_user}","gists_url":"https://api.github.com/users/mtezzele/gists{/gist_id}","starred_url":"https://api.github.com/users/mtezzele/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtezzele/subscriptions","organizations_url":"https://api.github.com/users/mtezzele/orgs","repos_url":"https://api.github.com/users/mtezzele/repos","events_url":"https://api.github.com/users/mtezzele/events{/privacy}","received_events_url":"https://api.github.com/users/mtezzele/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":10,"created_at":"2015-04-02T12:58:33Z","updated_at":"2015-04-09T12:50:43Z","closed_at":"2015-04-06T10:32:43Z","pull_request":{"url":"https://api.github.com/repos/dealii/dealii/pulls/727","html_url":"https://github.com/dealii/dealii/pull/727","diff_url":"https://github.com/dealii/dealii/pull/727.diff","patch_url":"https://github.com/dealii/dealii/pull/727.patch"},"body":"Added a new class called MappingFE that generalizes the MappingQEulerian and uses general Finite Elements."},"comment":{"url":"https://api.github.com/repos/dealii/dealii/issues/comments/91221097","html_url":"https://github.com/dealii/dealii/pull/727#issuecomment-91221097","issue_url":"https://api.github.com/repos/dealii/dealii/issues/727","id":91221097,"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-04-09T12:50:43Z","updated_at":"2015-04-09T12:50:43Z","body":"Ah, I finally understand what this function does! It would be good to have the description you list above somewhere in the documentation.\r\n\r\nMay I suggest renaming the function to make its purpose clearer? Maybe `get_position_vector` or, if you like it better, `get_euler_vector`?\r\n\r\nOn a different note, why do you need to call this function after creating the mapping? I suppose it is because the class stores a reference to the original vector, but at the time it gets the vector (through the constructor), the vector is not yet initialized. I find this workflow\r\n```\r\n  create vector, leave it uninitialized\r\n  create mapping, pass uninitialized vector in, store reference to it but don't use it right away\r\n  initialize vector\r\n```\r\na bit confusing. If one passes a vector to a function or an object, one assumes that that function uses the vector. May I suggest changing this workflow? For example, I would see these options:\r\n\r\n1/ The Mapping actually stores a vector itself. This way you wouldn't have to pass a user-owned vector in during construction. You'd need a member function of the form `set_euler_vector` that sets a new position vector. The function would copy the given vector to its own storage.\r\n\r\n2/ Use the model of `MappingQEulerian` that does not provide any (obvious) way of ever updating the vector once set. From a user perspective, it is not clear whether that class stores a copy or a reference to the original vector, and one would therefore simply create a mapping of this type everytime one needs one, using the then-current vector, rather than keeping a mapping around and updating the vector. Such a model would require a function that allows to compute the current Euler vector before creating a `MappingFE` object, for example this:\r\n```\r\n  static void create_euler_vector (const DoFHandler &, Vector &);\r\n```\r\nBecause it is static, one can call it before creating a mapping object, and then pass the resulting vector into the mapping:\r\n```\r\n  Vector euler_vector;\r\n  MappingFE::create_euler_vector (euler_dof_handler, euler_vector);  // or choose any other means to fill the vector\r\n  MappingFE mapping (euler_dof_handler, euler_vector);\r\n```\r\n\r\nI recognize that you copied much of the interface from `MappingQEulerian` which stems from a time when we were less skilled at designing interfaces. I would like to avoid re-making the mistakes we made at the time."}}