{"action":"created","comment":{"url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/comments/191798795","pull_request_review_id":124442731,"id":191798795,"diff_hunk":"@@ -0,0 +1,352 @@\n+// KRATOS  ___|  |                   |                   |\n+//       \\___ \\  __|  __| |   |  __| __| |   |  __| _` | |\n+//             | |   |    |   | (    |   |   | |   (   | |\n+//       _____/ \\__|_|   \\__,_|\\___|\\__|\\__,_|_|  \\__,_|_| MECHANICS\n+//\n+//  License:\t\t BSD License\n+//\t\t\t\t\t license: structural_mechanics_application/license.txt\n+//\n+//  Main authors:    Armin Geiser, https://github.com/armingeiser\n+//\n+\n+#if !defined(ADJOINT_FINITE_DIFFERENCE_BASE_ELEMENT_H_INCLUDED )\n+#define  ADJOINT_FINITE_DIFFERENCE_BASE_ELEMENT_H_INCLUDED\n+\n+\n+// System includes\n+\n+// External includes\n+\n+// Project includes\n+#include \"includes/element.h\"\n+#include \"../../custom_elements/shell_thin_element_3D3N.hpp\"\n+\n+namespace Kratos\n+{\n+\n+///@name Kratos Globals\n+///@{\n+///@}\n+\n+///@name Type Definitions\n+///@{\n+///@}\n+\n+///@name  Enum's\n+///@{\n+///@}\n+\n+///@name  Functions\n+///@{\n+///@}\n+\n+///@name Kratos Classes\n+///@{\n+\n+/** \\brief AdjointFiniteDifferencingBaseElement\n+ *\n+ * This element is inherited from ShellThinElement3D3N. It is the corresponding","path":"applications/StructuralMechanicsApplication/custom_response_functions/adjoint_elements/adjoint_finite_difference_base_element.h","position":48,"original_position":48,"commit_id":"1de685eeb7e8779d29e225378c0142aa9372c6ca","original_commit_id":"1de685eeb7e8779d29e225378c0142aa9372c6ca","user":{"login":"armingeiser","id":25903585,"avatar_url":"https://avatars2.githubusercontent.com/u/25903585?v=4","gravatar_id":"","url":"https://api.github.com/users/armingeiser","html_url":"https://github.com/armingeiser","followers_url":"https://api.github.com/users/armingeiser/followers","following_url":"https://api.github.com/users/armingeiser/following{/other_user}","gists_url":"https://api.github.com/users/armingeiser/gists{/gist_id}","starred_url":"https://api.github.com/users/armingeiser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/armingeiser/subscriptions","organizations_url":"https://api.github.com/users/armingeiser/orgs","repos_url":"https://api.github.com/users/armingeiser/repos","events_url":"https://api.github.com/users/armingeiser/events{/privacy}","received_events_url":"https://api.github.com/users/armingeiser/received_events","type":"User","site_admin":false},"body":"I know, sorry about this naming inconvenience. As this is just a test, i did not change the naming anymore.\r\nThe AdjointFiniteDifferencingBaseElement should work for all  \"standard\" elements and would only have a element base pointer. This would be called AdjointFiniteDifferencingShell3D3NElement and derive from AdjointFiniteDifferencingBaseElement.","created_at":"2018-05-30T14:50:14Z","updated_at":"2018-05-30T14:50:14Z","html_url":"https://github.com/KratosMultiphysics/Kratos/pull/2083#discussion_r191798795","pull_request_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2083","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/comments/191798795"},"html":{"href":"https://github.com/KratosMultiphysics/Kratos/pull/2083#discussion_r191798795"},"pull_request":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2083"}},"in_reply_to_id":191728639},"pull_request":{"url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2083","id":188171735,"html_url":"https://github.com/KratosMultiphysics/Kratos/pull/2083","diff_url":"https://github.com/KratosMultiphysics/Kratos/pull/2083.diff","patch_url":"https://github.com/KratosMultiphysics/Kratos/pull/2083.patch","issue_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues/2083","number":2083,"state":"open","locked":false,"title":"Feature finite differencing element","user":{"login":"armingeiser","id":25903585,"avatar_url":"https://avatars2.githubusercontent.com/u/25903585?v=4","gravatar_id":"","url":"https://api.github.com/users/armingeiser","html_url":"https://github.com/armingeiser","followers_url":"https://api.github.com/users/armingeiser/followers","following_url":"https://api.github.com/users/armingeiser/following{/other_user}","gists_url":"https://api.github.com/users/armingeiser/gists{/gist_id}","starred_url":"https://api.github.com/users/armingeiser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/armingeiser/subscriptions","organizations_url":"https://api.github.com/users/armingeiser/orgs","repos_url":"https://api.github.com/users/armingeiser/repos","events_url":"https://api.github.com/users/armingeiser/events{/privacy}","received_events_url":"https://api.github.com/users/armingeiser/received_events","type":"User","site_admin":false},"body":"I created an alternative way of doing the finite differencing for the structural sensitivity analysis. I want to give some reasons:\r\n\r\nIn context of the semi-analytic adjoint sensitivity analysis our first approach was to derive the \"adjoint\" elements from their primal counterparts. This would allow us to reuse most of the primal element functions e.g. the system matrices, because they are the same for structural problems. We have overwritten only a few functions, one of them the ```GetValuesVector()``` in order to return the values from the adjoint dofs.\r\n\r\nNow the problem was, that this function is sometimes also called inside the primal element itself, e.g. when the stresses are calculated.\r\nThis now gets problematic because we follow the semi-analytic approach, where we calculate the derivatives by finite differencing. This means we still need to be able to evaluate the primal elements.\r\n \r\nBecause we overwrite the ```GetValuesVector()``` in order to return adjoint dof values, e.g. stresses are now calculated with these - wrong - values. Our solution was to make sure, the internal functions of the primal element are calling its own version of ```GetValuesVector()``` and not the overridden one, by\r\nreplace a ```this->GetValuesVector()``` with e.g. ```ShellThinElement3D3N::GetValuesVector()```.\r\n\r\nIn PR #1804 it was mentioned several times that it is not good practice because it prevents the possibility to further inherit.\r\n\r\nThis is why i propose this ```FiniteDifferencingElement``` that just wraps the primal element.\r\nIt bypasses all the element functions to the primal element, just implements the ones that are needed, very similar to the first solution.\r\n\r\nSome of the primal element functions that are needed when doing the finite differencing are private, this is why for some elements (e.g. ShellThinElemen3D3N) the finite differencing element needs to be a friend.\r\n\r\nI did an exemplary implementation for the ShellThinElemen3D3N element, of course this could be separated into a base class and some special cases as for the shell elements.\r\nLet me know what you think of this idea.\r\n","created_at":"2018-05-15T15:40:42Z","updated_at":"2018-05-30T14:50:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ddd349cb6124b6f771cb1dba7707ac690efe1a1e","assignee":null,"assignees":[],"requested_reviewers":[{"login":"dbaumgaertner","id":25897162,"avatar_url":"https://avatars2.githubusercontent.com/u/25897162?v=4","gravatar_id":"","url":"https://api.github.com/users/dbaumgaertner","html_url":"https://github.com/dbaumgaertner","followers_url":"https://api.github.com/users/dbaumgaertner/followers","following_url":"https://api.github.com/users/dbaumgaertner/following{/other_user}","gists_url":"https://api.github.com/users/dbaumgaertner/gists{/gist_id}","starred_url":"https://api.github.com/users/dbaumgaertner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbaumgaertner/subscriptions","organizations_url":"https://api.github.com/users/dbaumgaertner/orgs","repos_url":"https://api.github.com/users/dbaumgaertner/repos","events_url":"https://api.github.com/users/dbaumgaertner/events{/privacy}","received_events_url":"https://api.github.com/users/dbaumgaertner/received_events","type":"User","site_admin":false},{"login":"MFusseder","id":30687316,"avatar_url":"https://avatars2.githubusercontent.com/u/30687316?v=4","gravatar_id":"","url":"https://api.github.com/users/MFusseder","html_url":"https://github.com/MFusseder","followers_url":"https://api.github.com/users/MFusseder/followers","following_url":"https://api.github.com/users/MFusseder/following{/other_user}","gists_url":"https://api.github.com/users/MFusseder/gists{/gist_id}","starred_url":"https://api.github.com/users/MFusseder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MFusseder/subscriptions","organizations_url":"https://api.github.com/users/MFusseder/orgs","repos_url":"https://api.github.com/users/MFusseder/repos","events_url":"https://api.github.com/users/MFusseder/events{/privacy}","received_events_url":"https://api.github.com/users/MFusseder/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2083/commits","review_comments_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2083/comments","review_comment_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/comments{/number}","comments_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues/2083/comments","statuses_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/statuses/1de685eeb7e8779d29e225378c0142aa9372c6ca","head":{"label":"KratosMultiphysics:feature-finite-differencing-element","ref":"feature-finite-differencing-element","sha":"1de685eeb7e8779d29e225378c0142aa9372c6ca","user":{"login":"KratosMultiphysics","id":24840449,"avatar_url":"https://avatars1.githubusercontent.com/u/24840449?v=4","gravatar_id":"","url":"https://api.github.com/users/KratosMultiphysics","html_url":"https://github.com/KratosMultiphysics","followers_url":"https://api.github.com/users/KratosMultiphysics/followers","following_url":"https://api.github.com/users/KratosMultiphysics/following{/other_user}","gists_url":"https://api.github.com/users/KratosMultiphysics/gists{/gist_id}","starred_url":"https://api.github.com/users/KratosMultiphysics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KratosMultiphysics/subscriptions","organizations_url":"https://api.github.com/users/KratosMultiphysics/orgs","repos_url":"https://api.github.com/users/KratosMultiphysics/repos","events_url":"https://api.github.com/users/KratosMultiphysics/events{/privacy}","received_events_url":"https://api.github.com/users/KratosMultiphysics/received_events","type":"Organization","site_admin":false},"repo":{"id":81815495,"name":"Kratos","full_name":"KratosMultiphysics/Kratos","owner":{"login":"KratosMultiphysics","id":24840449,"avatar_url":"https://avatars1.githubusercontent.com/u/24840449?v=4","gravatar_id":"","url":"https://api.github.com/users/KratosMultiphysics","html_url":"https://github.com/KratosMultiphysics","followers_url":"https://api.github.com/users/KratosMultiphysics/followers","following_url":"https://api.github.com/users/KratosMultiphysics/following{/other_user}","gists_url":"https://api.github.com/users/KratosMultiphysics/gists{/gist_id}","starred_url":"https://api.github.com/users/KratosMultiphysics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KratosMultiphysics/subscriptions","organizations_url":"https://api.github.com/users/KratosMultiphysics/orgs","repos_url":"https://api.github.com/users/KratosMultiphysics/repos","events_url":"https://api.github.com/users/KratosMultiphysics/events{/privacy}","received_events_url":"https://api.github.com/users/KratosMultiphysics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/KratosMultiphysics/Kratos","description":"Kratos Multiphysics (A.K.A Kratos) is a framework for building parallel multi-disciplinary simulation software. Modularity, extensibility and HPC are the main objectives. Kratos has BSD license and is written in C++ with extensive Python interface.","fork":false,"url":"https://api.github.com/repos/KratosMultiphysics/Kratos","forks_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/forks","keys_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/teams","hooks_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/hooks","issue_events_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues/events{/number}","events_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/events","assignees_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/assignees{/user}","branches_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/branches{/branch}","tags_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/tags","blobs_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/git/refs{/sha}","trees_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/statuses/{sha}","languages_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/languages","stargazers_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/stargazers","contributors_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/contributors","subscribers_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/subscribers","subscription_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/subscription","commits_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/commits{/sha}","git_commits_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/git/commits{/sha}","comments_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/comments{/number}","issue_comment_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues/comments{/number}","contents_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/contents/{+path}","compare_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/merges","archive_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/downloads","issues_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues{/number}","pulls_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls{/number}","milestones_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/milestones{/number}","notifications_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/labels{/name}","releases_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/releases{/id}","deployments_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/deployments","created_at":"2017-02-13T10:58:24Z","updated_at":"2018-05-30T08:50:30Z","pushed_at":"2018-05-30T14:27:59Z","git_url":"git://github.com/KratosMultiphysics/Kratos.git","ssh_url":"git@github.com:KratosMultiphysics/Kratos.git","clone_url":"https://github.com/KratosMultiphysics/Kratos.git","svn_url":"https://github.com/KratosMultiphysics/Kratos","homepage":"http://www.cimne.com/kratos/","size":1102185,"stargazers_count":144,"watchers_count":144,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":35,"mirror_url":null,"archived":false,"open_issues_count":101,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":35,"open_issues":101,"watchers":144,"default_branch":"master"}},"base":{"label":"KratosMultiphysics:feature-structural-sensitivity-analysis","ref":"feature-structural-sensitivity-analysis","sha":"5cc678b831850f582fc359c0ced8d038d14145b0","user":{"login":"KratosMultiphysics","id":24840449,"avatar_url":"https://avatars1.githubusercontent.com/u/24840449?v=4","gravatar_id":"","url":"https://api.github.com/users/KratosMultiphysics","html_url":"https://github.com/KratosMultiphysics","followers_url":"https://api.github.com/users/KratosMultiphysics/followers","following_url":"https://api.github.com/users/KratosMultiphysics/following{/other_user}","gists_url":"https://api.github.com/users/KratosMultiphysics/gists{/gist_id}","starred_url":"https://api.github.com/users/KratosMultiphysics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KratosMultiphysics/subscriptions","organizations_url":"https://api.github.com/users/KratosMultiphysics/orgs","repos_url":"https://api.github.com/users/KratosMultiphysics/repos","events_url":"https://api.github.com/users/KratosMultiphysics/events{/privacy}","received_events_url":"https://api.github.com/users/KratosMultiphysics/received_events","type":"Organization","site_admin":false},"repo":{"id":81815495,"name":"Kratos","full_name":"KratosMultiphysics/Kratos","owner":{"login":"KratosMultiphysics","id":24840449,"avatar_url":"https://avatars1.githubusercontent.com/u/24840449?v=4","gravatar_id":"","url":"https://api.github.com/users/KratosMultiphysics","html_url":"https://github.com/KratosMultiphysics","followers_url":"https://api.github.com/users/KratosMultiphysics/followers","following_url":"https://api.github.com/users/KratosMultiphysics/following{/other_user}","gists_url":"https://api.github.com/users/KratosMultiphysics/gists{/gist_id}","starred_url":"https://api.github.com/users/KratosMultiphysics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KratosMultiphysics/subscriptions","organizations_url":"https://api.github.com/users/KratosMultiphysics/orgs","repos_url":"https://api.github.com/users/KratosMultiphysics/repos","events_url":"https://api.github.com/users/KratosMultiphysics/events{/privacy}","received_events_url":"https://api.github.com/users/KratosMultiphysics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/KratosMultiphysics/Kratos","description":"Kratos Multiphysics (A.K.A Kratos) is a framework for building parallel multi-disciplinary simulation software. Modularity, extensibility and HPC are the main objectives. Kratos has BSD license and is written in C++ with extensive Python interface.","fork":false,"url":"https://api.github.com/repos/KratosMultiphysics/Kratos","forks_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/forks","keys_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/teams","hooks_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/hooks","issue_events_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues/events{/number}","events_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/events","assignees_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/assignees{/user}","branches_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/branches{/branch}","tags_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/tags","blobs_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/git/refs{/sha}","trees_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/statuses/{sha}","languages_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/languages","stargazers_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/stargazers","contributors_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/contributors","subscribers_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/subscribers","subscription_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/subscription","commits_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/commits{/sha}","git_commits_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/git/commits{/sha}","comments_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/comments{/number}","issue_comment_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues/comments{/number}","contents_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/contents/{+path}","compare_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/merges","archive_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/downloads","issues_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues{/number}","pulls_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls{/number}","milestones_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/milestones{/number}","notifications_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/labels{/name}","releases_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/releases{/id}","deployments_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/deployments","created_at":"2017-02-13T10:58:24Z","updated_at":"2018-05-30T08:50:30Z","pushed_at":"2018-05-30T14:27:59Z","git_url":"git://github.com/KratosMultiphysics/Kratos.git","ssh_url":"git@github.com:KratosMultiphysics/Kratos.git","clone_url":"https://github.com/KratosMultiphysics/Kratos.git","svn_url":"https://github.com/KratosMultiphysics/Kratos","homepage":"http://www.cimne.com/kratos/","size":1102185,"stargazers_count":144,"watchers_count":144,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":35,"mirror_url":null,"archived":false,"open_issues_count":101,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":35,"open_issues":101,"watchers":144,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2083"},"html":{"href":"https://github.com/KratosMultiphysics/Kratos/pull/2083"},"issue":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues/2083"},"comments":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues/2083/comments"},"review_comments":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2083/comments"},"review_comment":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2083/commits"},"statuses":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/statuses/1de685eeb7e8779d29e225378c0142aa9372c6ca"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"armingeiser"}}