{"action":"opened","issue":{"url":"https://api.github.com/repos/VT-ESM-CrowdDynamics/model/issues/4","labels_url":"https://api.github.com/repos/VT-ESM-CrowdDynamics/model/issues/4/labels{/name}","comments_url":"https://api.github.com/repos/VT-ESM-CrowdDynamics/model/issues/4/comments","events_url":"https://api.github.com/repos/VT-ESM-CrowdDynamics/model/issues/4/events","html_url":"https://github.com/VT-ESM-CrowdDynamics/model/issues/4","id":68961126,"number":4,"title":"Change out circular buffer and completely independent forces to a struct passing pattern","user":{"login":"automaticgiant","id":2954612,"avatar_url":"https://avatars.githubusercontent.com/u/2954612?v=3","gravatar_id":"","url":"https://api.github.com/users/automaticgiant","html_url":"https://github.com/automaticgiant","followers_url":"https://api.github.com/users/automaticgiant/followers","following_url":"https://api.github.com/users/automaticgiant/following{/other_user}","gists_url":"https://api.github.com/users/automaticgiant/gists{/gist_id}","starred_url":"https://api.github.com/users/automaticgiant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/automaticgiant/subscriptions","organizations_url":"https://api.github.com/users/automaticgiant/orgs","repos_url":"https://api.github.com/users/automaticgiant/repos","events_url":"https://api.github.com/users/automaticgiant/events{/privacy}","received_events_url":"https://api.github.com/users/automaticgiant/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"automaticgiant","id":2954612,"avatar_url":"https://avatars.githubusercontent.com/u/2954612?v=3","gravatar_id":"","url":"https://api.github.com/users/automaticgiant","html_url":"https://github.com/automaticgiant","followers_url":"https://api.github.com/users/automaticgiant/followers","following_url":"https://api.github.com/users/automaticgiant/following{/other_user}","gists_url":"https://api.github.com/users/automaticgiant/gists{/gist_id}","starred_url":"https://api.github.com/users/automaticgiant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/automaticgiant/subscriptions","organizations_url":"https://api.github.com/users/automaticgiant/orgs","repos_url":"https://api.github.com/users/automaticgiant/repos","events_url":"https://api.github.com/users/automaticgiant/events{/privacy}","received_events_url":"https://api.github.com/users/automaticgiant/received_events","type":"User","site_admin":false},"milestone":null,"comments":0,"created_at":"2015-04-16T16:31:00Z","updated_at":"2015-04-16T16:31:00Z","closed_at":null,"body":"newpattern is promising, but there is duplicated effort when\r\nfetching/calculating agent state data from the buffer and when one wants to have\r\nsome forces be dependent on results of others. One of the main principles for\r\nthe present construction of the parallel engine code is reducing side effects.\r\nThis is primarily because the parallel loops' iterations are limited in the data\r\nwhich they can modify. The last design's struct usage maintaining state was\r\nassumed to be counterproductive, however modifying it slightly would have been\r\nbetter than going to the circular buffer. A struct passing pattern can actually\r\nbe very functional, in the CS sense of the word. Functional design (as opposed\r\nto procedural) is exactly what the parallel code needs to avoid side effects. By\r\nchanging the code to pass in and out agent structs, functional design is\r\npreserved and state changes are isolated to agents, compatible with the\r\nparallelization requirements."}}