From df6843bfb06c27f1c38d8aa9394b41435d96b61a Mon Sep 17 00:00:00 2001 From: rubenzorrilla Date: Fri, 1 Sep 2023 13:05:00 +0200 Subject: [PATCH 1/3] Adding HasPrototypeEntity --- kratos/utilities/entities_utilities.cpp | 18 ++++++++++++++++++ kratos/utilities/entities_utilities.h | 16 ++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/kratos/utilities/entities_utilities.cpp b/kratos/utilities/entities_utilities.cpp index 1d358c1e6724..873462008036 100755 --- a/kratos/utilities/entities_utilities.cpp +++ b/kratos/utilities/entities_utilities.cpp @@ -62,6 +62,24 @@ bool EntitityIdentifier::IsInitialized() const /***********************************************************************************/ /***********************************************************************************/ +template +const bool EntitityIdentifier::HasPrototypeEntity(typename GeometryType::Pointer pGeometry) const +{ + return mTypes[static_cast(pGeometry->GetGeometryType())] != nullptr; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +const bool EntitityIdentifier::HasPrototypeEntity(const GeometryType& rGeometry) const +{ + return mTypes[static_cast(rGeometry.GetGeometryType())] != nullptr; +} + +/***********************************************************************************/ +/***********************************************************************************/ + template const TEntity& EntitityIdentifier::GetPrototypeEntity(typename GeometryType::Pointer pGeometry) const { diff --git a/kratos/utilities/entities_utilities.h b/kratos/utilities/entities_utilities.h index 9807b1151fdc..b95159791361 100755 --- a/kratos/utilities/entities_utilities.h +++ b/kratos/utilities/entities_utilities.h @@ -103,6 +103,22 @@ namespace EntitiesUtilities */ bool IsInitialized() const; + /** + * @brief Get the prototype entity. + * @param pGeometry The pointer to the geometry. + * @return true there is a prototype for the provided entity. + * @return false there is no prototype for the provided entity. + */ + const bool HasPrototypeEntity(typename GeometryType::Pointer pGeometry) const; + + /** + * @brief Get the prototype entity. + * @param rGeometry The reference to the geometry. + * @return true there is a prototype for the provided entity. + * @return false there is no prototype for the provided entity. + */ + const bool HasPrototypeEntity(const GeometryType& rGeometry) const; + /** * @brief Get the prototype entity. * @param pGeometry The pointer to the geometry. From bbf08110e9fcd3d07095764cec5f95faed60bb19 Mon Sep 17 00:00:00 2001 From: rubenzorrilla Date: Fri, 1 Sep 2023 13:12:24 +0200 Subject: [PATCH 2/3] Copy&paste leftover --- kratos/utilities/entities_utilities.cpp | 4 ++-- kratos/utilities/entities_utilities.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/kratos/utilities/entities_utilities.cpp b/kratos/utilities/entities_utilities.cpp index 873462008036..0a09fa60ac63 100755 --- a/kratos/utilities/entities_utilities.cpp +++ b/kratos/utilities/entities_utilities.cpp @@ -63,7 +63,7 @@ bool EntitityIdentifier::IsInitialized() const /***********************************************************************************/ template -const bool EntitityIdentifier::HasPrototypeEntity(typename GeometryType::Pointer pGeometry) const +bool EntitityIdentifier::HasPrototypeEntity(typename GeometryType::Pointer pGeometry) const { return mTypes[static_cast(pGeometry->GetGeometryType())] != nullptr; } @@ -72,7 +72,7 @@ const bool EntitityIdentifier::HasPrototypeEntity(typename GeometryType /***********************************************************************************/ template -const bool EntitityIdentifier::HasPrototypeEntity(const GeometryType& rGeometry) const +bool EntitityIdentifier::HasPrototypeEntity(const GeometryType& rGeometry) const { return mTypes[static_cast(rGeometry.GetGeometryType())] != nullptr; } diff --git a/kratos/utilities/entities_utilities.h b/kratos/utilities/entities_utilities.h index b95159791361..fdf8c1e68429 100755 --- a/kratos/utilities/entities_utilities.h +++ b/kratos/utilities/entities_utilities.h @@ -109,7 +109,7 @@ namespace EntitiesUtilities * @return true there is a prototype for the provided entity. * @return false there is no prototype for the provided entity. */ - const bool HasPrototypeEntity(typename GeometryType::Pointer pGeometry) const; + bool HasPrototypeEntity(typename GeometryType::Pointer pGeometry) const; /** * @brief Get the prototype entity. @@ -117,7 +117,7 @@ namespace EntitiesUtilities * @return true there is a prototype for the provided entity. * @return false there is no prototype for the provided entity. */ - const bool HasPrototypeEntity(const GeometryType& rGeometry) const; + bool HasPrototypeEntity(const GeometryType& rGeometry) const; /** * @brief Get the prototype entity. From 8a87677e9a852b56f74776f403490e04ef542603 Mon Sep 17 00:00:00 2001 From: rubenzorrilla Date: Fri, 1 Sep 2023 15:26:10 +0200 Subject: [PATCH 3/3] Removing pointer version and test addition --- .../utilities/test_entities_utilities.cpp | 35 +++++++++++++++++++ kratos/utilities/entities_utilities.cpp | 9 ----- kratos/utilities/entities_utilities.h | 8 ----- 3 files changed, 35 insertions(+), 17 deletions(-) create mode 100644 kratos/tests/cpp_tests/utilities/test_entities_utilities.cpp diff --git a/kratos/tests/cpp_tests/utilities/test_entities_utilities.cpp b/kratos/tests/cpp_tests/utilities/test_entities_utilities.cpp new file mode 100644 index 000000000000..c8ba69c4dd32 --- /dev/null +++ b/kratos/tests/cpp_tests/utilities/test_entities_utilities.cpp @@ -0,0 +1,35 @@ +// | / | +// ' / __| _` | __| _ \ __| +// . \ | ( | | ( |\__ ` +// _|\_\_| \__,_|\__|\___/ ____/ +// Multi-Physics +// +// License: BSD License +// Kratos default license: kratos/license.txt +// +// Main authors: Ruben Zorrilla +// +// + +// Project includes +#include "testing/testing.h" +#include "containers/model.h" +#include "includes/expect.h" +#include "utilities/entities_utilities.h" + +namespace Kratos::Testing +{ + +KRATOS_TEST_CASE_IN_SUITE(EntityIdentifierHasPrototype, KratosCoreFastSuite) +{ + Model model; + auto& r_model_part = model.CreateModelPart("MainModelPart"); + r_model_part.CreateNewNode(1, 0.0, 0.0, 0.0); + r_model_part.CreateNewNode(2, 1.0, 0.0, 0.0); + r_model_part.CreateNewNode(3, 0.0, 1.0, 0.0); + auto p_tri_geom = r_model_part.CreateNewGeometry("Triangle2D3", 1, {{1, 2, 3}}); + auto entity_identifier = EntitiesUtilities::EntitityIdentifier("Element2D3N"); + KRATOS_EXPECT_TRUE(entity_identifier.HasPrototypeEntity(*p_tri_geom)); +} + +} // namespace Kratos::Testing. diff --git a/kratos/utilities/entities_utilities.cpp b/kratos/utilities/entities_utilities.cpp index 0a09fa60ac63..b0e632102c89 100755 --- a/kratos/utilities/entities_utilities.cpp +++ b/kratos/utilities/entities_utilities.cpp @@ -62,15 +62,6 @@ bool EntitityIdentifier::IsInitialized() const /***********************************************************************************/ /***********************************************************************************/ -template -bool EntitityIdentifier::HasPrototypeEntity(typename GeometryType::Pointer pGeometry) const -{ - return mTypes[static_cast(pGeometry->GetGeometryType())] != nullptr; -} - -/***********************************************************************************/ -/***********************************************************************************/ - template bool EntitityIdentifier::HasPrototypeEntity(const GeometryType& rGeometry) const { diff --git a/kratos/utilities/entities_utilities.h b/kratos/utilities/entities_utilities.h index fdf8c1e68429..a316a58b3412 100755 --- a/kratos/utilities/entities_utilities.h +++ b/kratos/utilities/entities_utilities.h @@ -103,14 +103,6 @@ namespace EntitiesUtilities */ bool IsInitialized() const; - /** - * @brief Get the prototype entity. - * @param pGeometry The pointer to the geometry. - * @return true there is a prototype for the provided entity. - * @return false there is no prototype for the provided entity. - */ - bool HasPrototypeEntity(typename GeometryType::Pointer pGeometry) const; - /** * @brief Get the prototype entity. * @param rGeometry The reference to the geometry.