{"action":"created","comment":{"url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/comments/201661030","pull_request_review_id":136204083,"id":201661030,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMTY2MTAzMA==","diff_hunk":"@@ -0,0 +1,449 @@\n+#if !defined(KRATOS_BASE_DISCRETE_ELEMENT_H_INCLUDED )\n+#define  KRATOS_BASE_DISCRETE_ELEMENT_H_INCLUDED\n+\n+\n+// System includes\n+#include \"includes/define.h\"\n+#include \"includes/element.h\"\n+#include \"includes/ublas_interface.h\"\n+#include \"includes/variables.h\"\n+\n+// External includes\n+\n+// Project includes\n+\n+\n+namespace Kratos\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+/**\n+* @class BaseDiscreteElement\n+* @ingroup IGAStructuralMechanicsApplication\n+* @brief This is base clase used to define discrete elements, \n+*        it is based on displacement degrees of freedom\n+* @author Tobias Teschemacher\n+*/\n+class KRATOS_API(IGA_STRUCTURAL_MECHANICS_APPLICATION) BaseDiscreteElement\n+    : public Element\n+{\n+public:\n+    ///@name Type Definitions\n+    ///@{\n+\n+    /// Counted pointer of BaseDiscreteElement\n+    KRATOS_CLASS_POINTER_DEFINITION( BaseDiscreteElement );\n+\n+    ///@}\n+    ///@name Life Cycle\n+    ///@{\n+\n+    // Constructor void\n+    BaseDiscreteElement()\n+    {};\n+\n+    // Constructor using an array of nodes\n+    BaseDiscreteElement(IndexType NewId, GeometryType::Pointer pGeometry) :Element(NewId, pGeometry)\n+    {};\n+\n+    // Constructor using an array of nodes with properties\n+    BaseDiscreteElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties) \n+        :Element(NewId, pGeometry, pProperties)\n+    {};\n+\n+    // Destructor\n+    ~BaseDiscreteElement() override\n+    {};\n+\n+    ///@}\n+    ///@name Operators\n+    ///@{\n+\n+    ///@}\n+    ///@name Operations\n+    ///@{\n+\n+    Element::Pointer BaseDiscreteElement::Create(\n+        IndexType NewId,\n+        NodesArrayType const& ThisNodes,\n+        PropertiesType::Pointer pProperties) const override\n+    {\n+        KRATOS_ERROR << \"Trying to create a \\\"BaseDiscreteElement\\\"\" << std::endl;\n+    }\n+\n+\n+    /**\n+    * @brief Called to initialize the element.\n+    * @warning Must be called before any calculation is done\n+    */\n+    void Initialize() override;\n+\n+    /**\n+    * @brief This resets the constitutive law\n+    */\n+    void ResetConstitutiveLaw() override;\n+\n+    /**\n+    * @brief This is called during the assembling process in order to calculate the elemental mass matrix\n+    * @param rMassMatrix The elemental mass matrix\n+    * @param rCurrentProcessInfo The current process info instance\n+    */\n+    void CalculateMassMatrix(\n+        MatrixType& rMassMatrix,\n+        ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief This is called during the assembling process in order to calculate the elemental damping matrix\n+    * @param rDampingMatrix The elemental damping matrix\n+    * @param rCurrentProcessInfo The current process info instance\n+    */\n+    void CalculateDampingMatrix(\n+        MatrixType& rDampingMatrix,\n+        ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Sets on rResult the ID's of the element degrees of freedom\n+    * @param rResult The vector containing the equation id\n+    * @param rCurrentProcessInfo The current process info instance\n+    */\n+    void EquationIdVector(\n+        EquationIdVectorType& rResult,\n+        ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Sets on rElementalDofList the degrees of freedom of the considered element geometry\n+    * @param rElementalDofList The vector containing the dof of the element\n+    * @param rCurrentProcessInfo The current process info instance\n+    */\n+    void GetDofList(\n+        DofsVectorType& rElementalDofList,\n+        ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief This function provides a more general interface to the element.\n+    * @details It is designed so that rLHSvariables and rRHSvariables are passed to the element thus telling what is the desired output\n+    * @param rLeftHandSideMatrix container with the output Left Hand Side matrix\n+    * @param rRightHandSideVector container for the desired RHS output\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void CalculateLocalSystem(\n+        MatrixType& rLeftHandSideMatrix,\n+        VectorType& rRightHandSideVector,\n+        ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief This is called during the assembling process in order to calculate the elemental right hand side vector only\n+    * @param rRightHandSideVector the elemental right hand side vector\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void CalculateRightHandSide(\n+        VectorType& rRightHandSideVector,\n+        ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Sets on rValues the nodal displacements\n+    * @param rValues The values of displacements\n+    * @param Step The step to be computed\n+    */\n+    void GetValuesVector(\n+        Vector& rValues,\n+        int Step = 0\n+    ) override;\n+\n+    /**\n+    * @brief Sets on rValues the nodal velocities\n+    * @param rValues The values of velocities\n+    * @param Step The step to be computed\n+    */\n+    void GetFirstDerivativesVector(\n+        Vector& rValues,\n+        int Step = 0\n+    ) override;\n+\n+    /**\n+    * @brief Sets on rValues the nodal accelerations\n+    * @param rValues The values of accelerations\n+    * @param Step The step to be computed\n+    */\n+    void GetSecondDerivativesVector(\n+        Vector& rValues,\n+        int Step = 0\n+    ) override;\n+\n+\n+/********************************************************************/\n+/*    CalculateOnIntegrationPoints                                  */\n+/********************************************************************/\n+    /**\n+    * @brief Calculate a boolean Variable on the Element Constitutive Law\n+    * @param rVariable The variable we want to get\n+    * @param rOutput The values obtained int the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void CalculateOnIntegrationPoints(\n+        const Variable<bool>& rVariable,\n+        std::vector<bool>& rOutput,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Calculate a double Variable on the Element Constitutive Law\n+    * @param rVariable The variable we want to get\n+    * @param rOutput The values obtained int the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void CalculateOnIntegrationPoints(\n+        const Variable<double>& rVariable,\n+        std::vector<double>& rOutput,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Calculate a double array_1d on the Element Constitutive Law\n+    * @param rVariable The variable we want to get\n+    * @param rOutput The values obtained int the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void CalculateOnIntegrationPoints(\n+        const Variable<array_1d<double, 3>>& rVariable,\n+        std::vector<array_1d<double, 3>>& rOutput,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Calculate a Vector Variable on the Element Constitutive Law\n+    * @param rVariable The variable we want to get\n+    * @param rOutput The values obtained int the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void CalculateOnIntegrationPoints(\n+        const Variable<Vector>& rVariable,\n+        std::vector<Vector>& rOutput,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Calculate a Matrix Variable on the Element Constitutive Law\n+    * @param rVariable The variable we want to get\n+    * @param rOutput The values obtained int the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void CalculateOnIntegrationPoints(\n+        const Variable<Matrix >& rVariable,\n+        std::vector< Matrix >& rOutput,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Get on rVariable a double Value from the Element Constitutive Law\n+    * @param rVariable The variable we want to get\n+    * @param rValues The results in the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void GetValueOnIntegrationPoints(\n+        const Variable<double>& rVariable,\n+        std::vector<double>& rValues,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+/********************************************************************/\n+/*    SetValueOnIntegrationPoints                                   */\n+/********************************************************************/\n+    /**\n+    * @brief Set a double Value on the Element Constitutive Law\n+    * @param rVariable The variable we want to set\n+    * @param rValues The values to set in the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void SetValueOnIntegrationPoints(\n+        const Variable<double>& rVariable,\n+        std::vector<double>& rValues,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Set a Vector Value on the Element Constitutive Law\n+    * @param rVariable The variable we want to set\n+    * @param rValues The values to set in the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void SetValueOnIntegrationPoints(\n+        const Variable<Vector>& rVariable,\n+        std::vector<Vector>& rValues,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Set a Matrix Value on the Element Constitutive Law\n+    * @param rVariable The variable we want to set\n+    * @param rValues The values to set in the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void SetValueOnIntegrationPoints(\n+        const Variable<Matrix>& rVariable,\n+        std::vector<Matrix>& rValues,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Set a Constitutive Law Value on the Element\n+    * @param rVariable The variable we want to set\n+    * @param rValues The values to set in the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void SetValueOnIntegrationPoints(\n+        const Variable<ConstitutiveLaw::Pointer>& rVariable,\n+        std::vector<ConstitutiveLaw::Pointer>& rValues,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+/********************************************************************/\n+/*    GetValueOnIntegrationPoints                                   */\n+/********************************************************************/\n+    /**\n+    * @brief Get on rVariable a array_1d Value from the Element Constitutive Law\n+    * @param rVariable The variable we want to get\n+    * @param rValues The results in the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void GetValueOnIntegrationPoints(\n+        const Variable<array_1d<double, 3>>& rVariable,\n+        std::vector<array_1d<double, 3>>& rValues,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Get on rVariable a Vector Value from the Element Constitutive Law\n+    * @param rVariable The variable we want to get\n+    * @param rValues The results in the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void GetValueOnIntegrationPoints(\n+        const Variable<Vector>& rVariable,\n+        std::vector<Vector>& rValues,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+    /**\n+    * @brief Get on rVariable a Matrix Value from the Element Constitutive Law\n+    * @param rVariable The variable we want to get\n+    * @param rValues The results in the integration points\n+    * @param rCurrentProcessInfo the current process info instance\n+    */\n+    void GetValueOnIntegrationPoints(\n+        const Variable<Matrix>& rVariable,\n+        std::vector<Matrix>& rValues,\n+        const ProcessInfo& rCurrentProcessInfo\n+    ) override;\n+\n+\n+    /// Turn back information as a string.\n+    std::string Info() const override\n+    {\n+        std::stringstream buffer;\n+        buffer << \"\\\"BaseDiscreteElement\\\" #\" << Id();\n+        return buffer.str();\n+    }\n+\n+    /// Print information about this object.\n+    void PrintInfo(std::ostream& rOStream) const override\n+    {\n+        rOStream << \"\\\"BaseDiscreteElement\\\" #\" << Id();\n+    }\n+\n+    /// Print object's data.\n+    void PrintData(std::ostream& rOStream) const {\n+        pGetGeometry()->PrintData(rOStream);\n+    }\n+    ///@}\n+\n+protected:\n+\n+    ///@name Protected member Variables\n+    ///@{\n+    std::vector<ConstitutiveLaw::Pointer> mConstitutiveLawVector; /// The vector containing the constitutive laws\n+    ///@}\n+    ///@name Protected Operations\n+    ///@{\n+\n+    /**\n+    * @brief It initializes the material\n+    */\n+    virtual void InitializeMaterial();\n+\n+    /**\n+    * This functions calculates both the RHS and the LHS\n+    * @param rLeftHandSideMatrix: The LHS\n+    * @param rRightHandSideVector: The RHS\n+    * @param rCurrentProcessInfo: The current process info instance\n+    * @param CalculateStiffnessMatrixFlag: The flag to set if compute the LHS\n+    * @param CalculateResidualVectorFlag: The flag to set if compute the RHS\n+    */\n+    virtual void CalculateAll(\n+        MatrixType& rLeftHandSideMatrix,\n+        VectorType& rRightHandSideVector,\n+        ProcessInfo& rCurrentProcessInfo,\n+        const bool CalculateStiffnessMatrixFlag,\n+        const bool CalculateResidualVectorFlag);\n+\n+    /**\n+    * Jacobian computes the mapping from Geometry to Parameter Space.\n+    *\n+    * @param[in] DN_De derivatives of shape functions in two directions.\n+    * @param[out] Jacobian calculated Jacobian. \n+    * @param[in] rWorkingSpaceDimension GeometrySpace coordinates. For surfaces default 3.\n+    * @param[in] rLocalSpaceDimension ParameterSpace coordinates For surfaces default 2.\n+    */\n+    void Jacobian(const Matrix& DN_De,","path":"applications/IGAStructuralMechanicsApplication/custom_elements/base_discrete_element.h","position":420,"original_position":420,"commit_id":"da8d77b1767023a1d1edfce1541ee08fedfac6b0","original_commit_id":"da8d77b1767023a1d1edfce1541ee08fedfac6b0","user":{"login":"philbucher","id":25484702,"node_id":"MDQ6VXNlcjI1NDg0NzAy","avatar_url":"https://avatars3.githubusercontent.com/u/25484702?v=4","gravatar_id":"","url":"https://api.github.com/users/philbucher","html_url":"https://github.com/philbucher","followers_url":"https://api.github.com/users/philbucher/followers","following_url":"https://api.github.com/users/philbucher/following{/other_user}","gists_url":"https://api.github.com/users/philbucher/gists{/gist_id}","starred_url":"https://api.github.com/users/philbucher/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/philbucher/subscriptions","organizations_url":"https://api.github.com/users/philbucher/orgs","repos_url":"https://api.github.com/users/philbucher/repos","events_url":"https://api.github.com/users/philbucher/events{/privacy}","received_events_url":"https://api.github.com/users/philbucher/received_events","type":"User","site_admin":false},"body":"didn't you say this should be virtual?","created_at":"2018-07-11T11:52:33Z","updated_at":"2018-07-11T11:56:31Z","html_url":"https://github.com/KratosMultiphysics/Kratos/pull/2478#discussion_r201661030","pull_request_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2478","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/comments/201661030"},"html":{"href":"https://github.com/KratosMultiphysics/Kratos/pull/2478#discussion_r201661030"},"pull_request":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2478"}}},"pull_request":{"url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2478","id":200670458,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAwNjcwNDU4","html_url":"https://github.com/KratosMultiphysics/Kratos/pull/2478","diff_url":"https://github.com/KratosMultiphysics/Kratos/pull/2478.diff","patch_url":"https://github.com/KratosMultiphysics/Kratos/pull/2478.patch","issue_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues/2478","number":2478,"state":"open","locked":false,"title":"Add BaseDiscreteElement","user":{"login":"tteschemacher","id":25983517,"node_id":"MDQ6VXNlcjI1OTgzNTE3","avatar_url":"https://avatars2.githubusercontent.com/u/25983517?v=4","gravatar_id":"","url":"https://api.github.com/users/tteschemacher","html_url":"https://github.com/tteschemacher","followers_url":"https://api.github.com/users/tteschemacher/followers","following_url":"https://api.github.com/users/tteschemacher/following{/other_user}","gists_url":"https://api.github.com/users/tteschemacher/gists{/gist_id}","starred_url":"https://api.github.com/users/tteschemacher/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tteschemacher/subscriptions","organizations_url":"https://api.github.com/users/tteschemacher/orgs","repos_url":"https://api.github.com/users/tteschemacher/repos","events_url":"https://api.github.com/users/tteschemacher/events{/privacy}","received_events_url":"https://api.github.com/users/tteschemacher/received_events","type":"User","site_admin":false},"body":"The element is the new basis class for all discrete IGA elements.","created_at":"2018-07-11T11:35:24Z","updated_at":"2018-07-11T11:56:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7de757b381f1b4148f3304a6725d8d7c814239b4","assignee":null,"assignees":[],"requested_reviewers":[{"login":"oberbichler","id":7000594,"node_id":"MDQ6VXNlcjcwMDA1OTQ=","avatar_url":"https://avatars3.githubusercontent.com/u/7000594?v=4","gravatar_id":"","url":"https://api.github.com/users/oberbichler","html_url":"https://github.com/oberbichler","followers_url":"https://api.github.com/users/oberbichler/followers","following_url":"https://api.github.com/users/oberbichler/following{/other_user}","gists_url":"https://api.github.com/users/oberbichler/gists{/gist_id}","starred_url":"https://api.github.com/users/oberbichler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oberbichler/subscriptions","organizations_url":"https://api.github.com/users/oberbichler/orgs","repos_url":"https://api.github.com/users/oberbichler/repos","events_url":"https://api.github.com/users/oberbichler/events{/privacy}","received_events_url":"https://api.github.com/users/oberbichler/received_events","type":"User","site_admin":false},{"login":"RiccardoRossi","id":8059665,"node_id":"MDQ6VXNlcjgwNTk2NjU=","avatar_url":"https://avatars1.githubusercontent.com/u/8059665?v=4","gravatar_id":"","url":"https://api.github.com/users/RiccardoRossi","html_url":"https://github.com/RiccardoRossi","followers_url":"https://api.github.com/users/RiccardoRossi/followers","following_url":"https://api.github.com/users/RiccardoRossi/following{/other_user}","gists_url":"https://api.github.com/users/RiccardoRossi/gists{/gist_id}","starred_url":"https://api.github.com/users/RiccardoRossi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RiccardoRossi/subscriptions","organizations_url":"https://api.github.com/users/RiccardoRossi/orgs","repos_url":"https://api.github.com/users/RiccardoRossi/repos","events_url":"https://api.github.com/users/RiccardoRossi/events{/privacy}","received_events_url":"https://api.github.com/users/RiccardoRossi/received_events","type":"User","site_admin":false},{"login":"loumalouomega","id":19991680,"node_id":"MDQ6VXNlcjE5OTkxNjgw","avatar_url":"https://avatars2.githubusercontent.com/u/19991680?v=4","gravatar_id":"","url":"https://api.github.com/users/loumalouomega","html_url":"https://github.com/loumalouomega","followers_url":"https://api.github.com/users/loumalouomega/followers","following_url":"https://api.github.com/users/loumalouomega/following{/other_user}","gists_url":"https://api.github.com/users/loumalouomega/gists{/gist_id}","starred_url":"https://api.github.com/users/loumalouomega/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/loumalouomega/subscriptions","organizations_url":"https://api.github.com/users/loumalouomega/orgs","repos_url":"https://api.github.com/users/loumalouomega/repos","events_url":"https://api.github.com/users/loumalouomega/events{/privacy}","received_events_url":"https://api.github.com/users/loumalouomega/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2478/commits","review_comments_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2478/comments","review_comment_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/comments{/number}","comments_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues/2478/comments","statuses_url":"https://api.github.com/repos/KratosMultiphysics/Kratos/statuses/da8d77b1767023a1d1edfce1541ee08fedfac6b0","head":{"label":"KratosMultiphysics:feature/base_discrete_element","ref":"feature/base_discrete_element","sha":"da8d77b1767023a1d1edfce1541ee08fedfac6b0","user":{"login":"KratosMultiphysics","id":24840449,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0ODQwNDQ5","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,"node_id":"MDEwOlJlcG9zaXRvcnk4MTgxNTQ5NQ==","name":"Kratos","full_name":"KratosMultiphysics/Kratos","owner":{"login":"KratosMultiphysics","id":24840449,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0ODQwNDQ5","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-07-11T10:16:28Z","pushed_at":"2018-07-11T11:36:48Z","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":1178140,"stargazers_count":159,"watchers_count":159,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":41,"mirror_url":null,"archived":false,"open_issues_count":113,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":41,"open_issues":113,"watchers":159,"default_branch":"master"}},"base":{"label":"KratosMultiphysics:master","ref":"master","sha":"89a0840fb323240fd7ec057bd9a0826b4b7c7bb2","user":{"login":"KratosMultiphysics","id":24840449,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0ODQwNDQ5","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,"node_id":"MDEwOlJlcG9zaXRvcnk4MTgxNTQ5NQ==","name":"Kratos","full_name":"KratosMultiphysics/Kratos","owner":{"login":"KratosMultiphysics","id":24840449,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0ODQwNDQ5","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-07-11T10:16:28Z","pushed_at":"2018-07-11T11:36:48Z","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":1178140,"stargazers_count":159,"watchers_count":159,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":41,"mirror_url":null,"archived":false,"open_issues_count":113,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":41,"open_issues":113,"watchers":159,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2478"},"html":{"href":"https://github.com/KratosMultiphysics/Kratos/pull/2478"},"issue":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues/2478"},"comments":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/issues/2478/comments"},"review_comments":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2478/comments"},"review_comment":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/pulls/2478/commits"},"statuses":{"href":"https://api.github.com/repos/KratosMultiphysics/Kratos/statuses/da8d77b1767023a1d1edfce1541ee08fedfac6b0"}},"author_association":"NONE"}}
{"actor":{"display_login":"philbucher"}}