{"action":"created","issue":{"url":"https://api.github.com/repos/espressomd/espresso/issues/1644","repository_url":"https://api.github.com/repos/espressomd/espresso","labels_url":"https://api.github.com/repos/espressomd/espresso/issues/1644/labels{/name}","comments_url":"https://api.github.com/repos/espressomd/espresso/issues/1644/comments","events_url":"https://api.github.com/repos/espressomd/espresso/issues/1644/events","html_url":"https://github.com/espressomd/espresso/pull/1644","id":276272731,"number":1644,"title":"Matheval","user":{"login":"hmenke","id":1903556,"avatar_url":"https://avatars2.githubusercontent.com/u/1903556?v=4","gravatar_id":"","url":"https://api.github.com/users/hmenke","html_url":"https://github.com/hmenke","followers_url":"https://api.github.com/users/hmenke/followers","following_url":"https://api.github.com/users/hmenke/following{/other_user}","gists_url":"https://api.github.com/users/hmenke/gists{/gist_id}","starred_url":"https://api.github.com/users/hmenke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hmenke/subscriptions","organizations_url":"https://api.github.com/users/hmenke/orgs","repos_url":"https://api.github.com/users/hmenke/repos","events_url":"https://api.github.com/users/hmenke/events{/privacy}","received_events_url":"https://api.github.com/users/hmenke/received_events","type":"User","site_admin":false},"labels":[{"id":217388879,"url":"https://api.github.com/repos/espressomd/espresso/labels/Core","name":"Core","color":"e11d21","default":false},{"id":586924125,"url":"https://api.github.com/repos/espressomd/espresso/labels/New%20Feature","name":"New Feature","color":"fbca04","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/espressomd/espresso/milestones/4","html_url":"https://github.com/espressomd/espresso/milestone/4","labels_url":"https://api.github.com/repos/espressomd/espresso/milestones/4/labels","id":2943492,"number":4,"title":"Espresso 4.1","description":"Next feature release","creator":{"login":"fweik","id":893663,"avatar_url":"https://avatars0.githubusercontent.com/u/893663?v=4","gravatar_id":"","url":"https://api.github.com/users/fweik","html_url":"https://github.com/fweik","followers_url":"https://api.github.com/users/fweik/followers","following_url":"https://api.github.com/users/fweik/following{/other_user}","gists_url":"https://api.github.com/users/fweik/gists{/gist_id}","starred_url":"https://api.github.com/users/fweik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fweik/subscriptions","organizations_url":"https://api.github.com/users/fweik/orgs","repos_url":"https://api.github.com/users/fweik/repos","events_url":"https://api.github.com/users/fweik/events{/privacy}","received_events_url":"https://api.github.com/users/fweik/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":3,"state":"open","created_at":"2017-11-28T13:57:21Z","updated_at":"2018-02-21T11:47:29Z","due_on":null,"closed_at":null},"comments":4,"created_at":"2017-11-23T06:02:18Z","updated_at":"2018-03-01T08:13:52Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/espressomd/espresso/pulls/1644","html_url":"https://github.com/espressomd/espresso/pull/1644","diff_url":"https://github.com/espressomd/espresso/pull/1644.diff","patch_url":"https://github.com/espressomd/espresso/pull/1644.patch"},"body":"### What?\r\n\r\nThis adds a mathematical expression parser to the ESPResSo core.  With this it is possible to pass a mathematical expression as a string all the way into a tight loop, like the integration loop and have it evaluated in every iteration with, say, the time step.\r\n\r\n### Why?\r\n\r\nThis is intended to serve as a building block for constraints or LB boundaries with time-dependent parameters.  It was motivated by the Lees-Edwards boundary conditions for LB as the Lees-Edwards shift has to be adjusted every time step.\r\n\r\n### How?\r\n\r\nThe parser uses [Boost Matheval](https://github.com/hmenke/boost_matheval), another project of mine, under the hood.  It is based on Boost.Spirit and Boost.Phoenix.  The compilation time of projects using Boost.Spirit is unfortunately quite excessive, which is why in the ESPResSo implementation I hide all those nasty details behind an opaque pointer (also known as pImpl).\r\n\r\n---\r\n\r\nA unit test and inline Doxygen documentation is supplied alongside.\r\n- [x] Tests\r\n- [x] Docs\r\n\r\n---\r\n\r\nAt the same time this PR fixes a small formatting mistake in the Doxygen documentation and makes the file `src/core/utils/Timer.cpp` actually compile.  This did not show up before this PR because the file was hitherto unused.  It was unclear to me whether it is still needed.  I'd appreciate a comment on that."},"comment":{"url":"https://api.github.com/repos/espressomd/espresso/issues/comments/369510467","html_url":"https://github.com/espressomd/espresso/pull/1644#issuecomment-369510467","issue_url":"https://api.github.com/repos/espressomd/espresso/issues/1644","id":369510467,"user":{"login":"hmenke","id":1903556,"avatar_url":"https://avatars2.githubusercontent.com/u/1903556?v=4","gravatar_id":"","url":"https://api.github.com/users/hmenke","html_url":"https://github.com/hmenke","followers_url":"https://api.github.com/users/hmenke/followers","following_url":"https://api.github.com/users/hmenke/following{/other_user}","gists_url":"https://api.github.com/users/hmenke/gists{/gist_id}","starred_url":"https://api.github.com/users/hmenke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hmenke/subscriptions","organizations_url":"https://api.github.com/users/hmenke/orgs","repos_url":"https://api.github.com/users/hmenke/repos","events_url":"https://api.github.com/users/hmenke/events{/privacy}","received_events_url":"https://api.github.com/users/hmenke/received_events","type":"User","site_admin":false},"created_at":"2018-03-01T08:13:52Z","updated_at":"2018-03-01T08:13:52Z","author_association":"MEMBER","body":"It is very easy to pass an expression through the Python interface.  Instead of a number you simply pass the expression as a string.  If you can give me a mockup of what you would imagine expression-based interactions to look like, I could try to implement it and add it to this PR."}}
{"actor":{"display_login":"hmenke"}}