diff --git a/src/Mod/Material/App/ModelUuids.cpp b/src/Mod/Material/App/ModelUuids.cpp
index 8e40b4428a..ceba5591bd 100644
--- a/src/Mod/Material/App/ModelUuids.cpp
+++ b/src/Mod/Material/App/ModelUuids.cpp
@@ -34,16 +34,44 @@ const QString ModelUUIDs::ModelUUID_Legacy_Father =
const QString ModelUUIDs::ModelUUID_Legacy_MaterialStandard =
QString::fromStdString("1e2c0088-904a-4537-925f-64064c07d700");
+const QString ModelUUIDs::ModelUUID_Mechanical_ArrudaBoyce =
+ QString::fromStdString("e10d00de-c7de-4e59-bcdd-058c2ea19ec6");
const QString ModelUUIDs::ModelUUID_Mechanical_Density =
QString::fromStdString("454661e5-265b-4320-8e6f-fcf6223ac3af");
+const QString ModelUUIDs::ModelUUID_Mechanical_Hardness =
+ QString::fromStdString("3d1a6141-d032-4d82-8bb5-a8f339fff8ad");
const QString ModelUUIDs::ModelUUID_Mechanical_IsotropicLinearElastic =
QString::fromStdString("f6f9e48c-b116-4e82-ad7f-3659a9219c50");
const QString ModelUUIDs::ModelUUID_Mechanical_LinearElastic =
QString::fromStdString("7b561d1d-fb9b-44f6-9da9-56a4f74d7536");
+const QString ModelUUIDs::ModelUUID_Mechanical_MooneyRivlin =
+ QString::fromStdString("beeed169-7770-4da0-ab67-c9172cf7d23d");
+const QString ModelUUIDs::ModelUUID_Mechanical_NeoHooke =
+ QString::fromStdString("569ebc58-ef29-434a-83be-555a0980d505");
+const QString ModelUUIDs::ModelUUID_Mechanical_OgdenN1 =
+ QString::fromStdString("a2634a2c-412f-468d-9bec-74ae5d87a9c0");
+const QString ModelUUIDs::ModelUUID_Mechanical_OgdenN2 =
+ QString::fromStdString("233540bb-7b13-4f49-ac12-126a5c82cedf");
+const QString ModelUUIDs::ModelUUID_Mechanical_OgdenN3 =
+ QString::fromStdString("a917d6b8-209f-429e-9972-fe4bbb97af3f");
const QString ModelUUIDs::ModelUUID_Mechanical_OgdenYld2004p18 =
QString::fromStdString("3ef9e427-cc25-43f7-817f-79ff0d49625f");
const QString ModelUUIDs::ModelUUID_Mechanical_OrthotropicLinearElastic =
QString::fromStdString("b19ccc6b-a431-418e-91c2-0ac8c649d146");
+const QString ModelUUIDs::ModelUUID_Mechanical_PolynomialN1 =
+ QString::fromStdString("285a6042-0f0c-4a36-a898-4afadd6408ce");
+const QString ModelUUIDs::ModelUUID_Mechanical_PolynomialN2 =
+ QString::fromStdString("4c2fb7b2-5121-4d6f-be0d-8c5970c9e682");
+const QString ModelUUIDs::ModelUUID_Mechanical_PolynomialN3 =
+ QString::fromStdString("e83ada22-947e-4beb-91e7-482a16f5ba77");
+const QString ModelUUIDs::ModelUUID_Mechanical_ReducedPolynomialN1 =
+ QString::fromStdString("f8052a3c-db17-42ea-b2be-13aa5ef30730");
+const QString ModelUUIDs::ModelUUID_Mechanical_ReducedPolynomialN2 =
+ QString::fromStdString("c52b5021-4bb8-441c-80d4-855fce9de15e");
+const QString ModelUUIDs::ModelUUID_Mechanical_ReducedPolynomialN3 =
+ QString::fromStdString("fa4e58b4-74c7-4292-8e79-7d5fd232fb55");
+const QString ModelUUIDs::ModelUUID_Mechanical_Yeoh =
+ QString::fromStdString("cd13c492-21a9-4578-8191-deec003e4c01");
const QString ModelUUIDs::ModelUUID_Fluid_Default =
QString::fromStdString("1ae66d8c-1ba1-4211-ad12-b9917573b202");
diff --git a/src/Mod/Material/App/ModelUuids.h b/src/Mod/Material/App/ModelUuids.h
index 70a7ebb8e1..1b79e89ea4 100644
--- a/src/Mod/Material/App/ModelUuids.h
+++ b/src/Mod/Material/App/ModelUuids.h
@@ -45,11 +45,25 @@ public:
static const QString ModelUUID_Legacy_Father;
static const QString ModelUUID_Legacy_MaterialStandard;
+ static const QString ModelUUID_Mechanical_ArrudaBoyce;
static const QString ModelUUID_Mechanical_Density;
+ static const QString ModelUUID_Mechanical_Hardness;
static const QString ModelUUID_Mechanical_IsotropicLinearElastic;
static const QString ModelUUID_Mechanical_LinearElastic;
+ static const QString ModelUUID_Mechanical_MooneyRivlin;
+ static const QString ModelUUID_Mechanical_NeoHooke;
+ static const QString ModelUUID_Mechanical_OgdenN1;
+ static const QString ModelUUID_Mechanical_OgdenN2;
+ static const QString ModelUUID_Mechanical_OgdenN3;
static const QString ModelUUID_Mechanical_OgdenYld2004p18;
static const QString ModelUUID_Mechanical_OrthotropicLinearElastic;
+ static const QString ModelUUID_Mechanical_PolynomialN1;
+ static const QString ModelUUID_Mechanical_PolynomialN2;
+ static const QString ModelUUID_Mechanical_PolynomialN3;
+ static const QString ModelUUID_Mechanical_ReducedPolynomialN1;
+ static const QString ModelUUID_Mechanical_ReducedPolynomialN2;
+ static const QString ModelUUID_Mechanical_ReducedPolynomialN3;
+ static const QString ModelUUID_Mechanical_Yeoh;
static const QString ModelUUID_Fluid_Default;
diff --git a/src/Mod/Material/App/UUIDsPy.xml b/src/Mod/Material/App/UUIDsPy.xml
index 7448c032c7..49ee9091fd 100644
--- a/src/Mod/Material/App/UUIDsPy.xml
+++ b/src/Mod/Material/App/UUIDsPy.xml
@@ -28,12 +28,24 @@
+
+
+ UUID for model System:Mechanical/ArrudaBoyce
+
+
+
UUID for model System:Mechanical/Density
+
+
+ UUID for model System:Mechanical/Hardness
+
+
+
UUID for model System:Mechanical/IsotropicLinearElastic
@@ -46,6 +58,36 @@
+
+
+ UUID for model System:Mechanical/MooneyRivlin
+
+
+
+
+
+ UUID for model System:Mechanical/NeoHooke
+
+
+
+
+
+ UUID for model System:Mechanical/OgdenN1
+
+
+
+
+
+ UUID for model System:Mechanical/OgdenN2
+
+
+
+
+
+ UUID for model System:Mechanical/OgdenN3
+
+
+
UUID for model System:Mechanical/OgdenYld2004p18
@@ -58,6 +100,48 @@
+
+
+ UUID for model System:Mechanical/PolynomialN1
+
+
+
+
+
+ UUID for model System:Mechanical/PolynomialN2
+
+
+
+
+
+ UUID for model System:Mechanical/PolynomialN3
+
+
+
+
+
+ UUID for model System:Mechanical/ReducedPolynomialN1
+
+
+
+
+
+ UUID for model System:Mechanical/ReducedPolynomialN2
+
+
+
+
+
+ UUID for model System:Mechanical/ReducedPolynomialN3
+
+
+
+
+
+ UUID for model System:Mechanical/Yeoh
+
+
+
UUID for model System:Fluid/Fluid
diff --git a/src/Mod/Material/App/UUIDsPyImpl.cpp b/src/Mod/Material/App/UUIDsPyImpl.cpp
index e8d7af27da..94403fcb7f 100644
--- a/src/Mod/Material/App/UUIDsPyImpl.cpp
+++ b/src/Mod/Material/App/UUIDsPyImpl.cpp
@@ -57,11 +57,21 @@ Py::String UUIDsPy::getMaterialStandard() const
return Py::String(ModelUUIDs::ModelUUID_Legacy_MaterialStandard.toStdString());
}
+Py::String UUIDsPy::getArrudaBoyce() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_ArrudaBoyce.toStdString());
+}
+
Py::String UUIDsPy::getDensity() const
{
return Py::String(ModelUUIDs::ModelUUID_Mechanical_Density.toStdString());
}
+Py::String UUIDsPy::getHardness() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_Hardness.toStdString());
+}
+
Py::String UUIDsPy::getIsotropicLinearElastic() const
{
return Py::String(ModelUUIDs::ModelUUID_Mechanical_IsotropicLinearElastic.toStdString());
@@ -72,6 +82,31 @@ Py::String UUIDsPy::getLinearElastic() const
return Py::String(ModelUUIDs::ModelUUID_Mechanical_LinearElastic.toStdString());
}
+Py::String UUIDsPy::getMooneyRivlin() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_MooneyRivlin.toStdString());
+}
+
+Py::String UUIDsPy::getNeoHooke() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_NeoHooke.toStdString());
+}
+
+Py::String UUIDsPy::getOgdenN1() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_OgdenN1.toStdString());
+}
+
+Py::String UUIDsPy::getOgdenN2() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_OgdenN2.toStdString());
+}
+
+Py::String UUIDsPy::getOgdenN3() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_OgdenN3.toStdString());
+}
+
Py::String UUIDsPy::getOgdenYld2004p18() const
{
return Py::String(ModelUUIDs::ModelUUID_Mechanical_OgdenYld2004p18.toStdString());
@@ -82,6 +117,41 @@ Py::String UUIDsPy::getOrthotropicLinearElastic() const
return Py::String(ModelUUIDs::ModelUUID_Mechanical_OrthotropicLinearElastic.toStdString());
}
+Py::String UUIDsPy::getPolynomialN1() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_PolynomialN1.toStdString());
+}
+
+Py::String UUIDsPy::getPolynomialN2() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_PolynomialN2.toStdString());
+}
+
+Py::String UUIDsPy::getPolynomialN3() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_PolynomialN3.toStdString());
+}
+
+Py::String UUIDsPy::getReducedPolynomialN1() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_ReducedPolynomialN1.toStdString());
+}
+
+Py::String UUIDsPy::getReducedPolynomialN2() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_ReducedPolynomialN2.toStdString());
+}
+
+Py::String UUIDsPy::getReducedPolynomialN3() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_ReducedPolynomialN3.toStdString());
+}
+
+Py::String UUIDsPy::getYeoh() const
+{
+ return Py::String(ModelUUIDs::ModelUUID_Mechanical_Yeoh.toStdString());
+}
+
Py::String UUIDsPy::getFluid() const
{
return Py::String(ModelUUIDs::ModelUUID_Fluid_Default.toStdString());
diff --git a/src/Mod/Material/CMakeLists.txt b/src/Mod/Material/CMakeLists.txt
index 794f0f1809..a9ee1296d4 100644
--- a/src/Mod/Material/CMakeLists.txt
+++ b/src/Mod/Material/CMakeLists.txt
@@ -238,6 +238,7 @@ SET(MaterialModel_Files
Resources/Models/Legacy/MaterialStandard.yml
Resources/Models/Mechanical/ArrudaBoyce.yml
Resources/Models/Mechanical/Density.yml
+ Resources/Models/Mechanical/Hardness.yml
Resources/Models/Mechanical/IsotropicLinearElastic.yml
Resources/Models/Mechanical/LinearElastic.yml
Resources/Models/Mechanical/MooneyRivlin.yml
diff --git a/src/Mod/Material/Resources/Materials/Standard/Metal/Titanium/Ti-6Al-4V.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Titanium/Ti-6Al-4V.FCMat
index 3aea34e579..e5e89060ad 100644
--- a/src/Mod/Material/Resources/Materials/Standard/Metal/Titanium/Ti-6Al-4V.FCMat
+++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Titanium/Ti-6Al-4V.FCMat
@@ -20,7 +20,10 @@ Models:
UltimateTensileStrength: "975.5 MPa"
YieldStrength: "910 MPa"
YoungsModulus: "114 GPa"
- Hardness: "35 HRC"
+ Hardness:
+ UUID: '3d1a6141-d032-4d82-8bb5-a8f339fff8ad'
+ Hardness: "35"
+ HardnessUnits: "HRC"
Thermal:
UUID: '9959d007-a970-4ea7-bae4-3eb1b8b883c7'
SpecificHeat: "553.0 J/kg/K"
diff --git a/src/Mod/Material/Resources/Models/Mechanical/Hardness.yml b/src/Mod/Material/Resources/Models/Mechanical/Hardness.yml
new file mode 100644
index 0000000000..e587b23033
--- /dev/null
+++ b/src/Mod/Material/Resources/Models/Mechanical/Hardness.yml
@@ -0,0 +1,43 @@
+---
+# ***************************************************************************
+# * *
+# * Copyright (c) 2023 David Carter *
+# * *
+# * This program is free software; you can redistribute it and/or modify *
+# * it under the terms of the GNU Lesser General Public License (LGPL) *
+# * as published by the Free Software Foundation; either version 2 of *
+# * the License, or (at your option) any later version. *
+# * for detail see the LICENCE text file. *
+# * *
+# * This program is distributed in the hope that it will be useful, *
+# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+# * GNU Library General Public License for more details. *
+# * *
+# * You should have received a copy of the GNU Library General Public *
+# * License along with this program; if not, write to the Free Software *
+# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
+# * USA *
+# * *
+# ***************************************************************************
+
+Model:
+ Name: 'Hardness'
+ UUID: '3d1a6141-d032-4d82-8bb5-a8f339fff8ad'
+ URL: 'https://en.wikipedia.org/wiki/Mohs_scale'
+ Description: >
+ Measure of the hardness of the material. FreeCAD does not define any
+ hardness units so it is up to the module to interpret the units as
+ appropriate.
+ DOI: ''
+ Hardness:
+ Type: 'Float'
+ Units: ''
+ URL: 'https://en.wikipedia.org/wiki/Mohs_scale'
+ Description: "Hardness. FreeCAD does not currently support hardness units"
+ HardnessUnits:
+ DisplayName: "Hardness Units"
+ Type: 'String'
+ Units: ''
+ URL: 'https://en.wikipedia.org/wiki/Mohs_scale'
+ Description: "Hardness units. FreeCAD does not currently support hardness units"
diff --git a/src/Mod/Material/Resources/Models/Mechanical/LinearElastic.yml b/src/Mod/Material/Resources/Models/Mechanical/LinearElastic.yml
index aabd4ea72b..7063b17aa9 100644
--- a/src/Mod/Material/Resources/Models/Mechanical/LinearElastic.yml
+++ b/src/Mod/Material/Resources/Models/Mechanical/LinearElastic.yml
@@ -80,8 +80,3 @@ Model:
Units: 'N/m'
URL: 'https://en.wikipedia.org/wiki/Stiffness'
Description: "Stiffness (or Spring Stiffness) in [FreeCAD Stiffness unit]"
- Hardness:
- Type: 'Quantity'
- Units: ''
- URL: 'https://en.wikipedia.org/wiki/Mohs_scale'
- Description: "Hardness. FreeCAD does not currently support hardness units"
diff --git a/src/Mod/Material/materialtests/TestModels.py b/src/Mod/Material/materialtests/TestModels.py
index e6c62aa004..1091c9f80e 100644
--- a/src/Mod/Material/materialtests/TestModels.py
+++ b/src/Mod/Material/materialtests/TestModels.py
@@ -49,11 +49,25 @@ class ModelTestCases(unittest.TestCase):
self.assertTrue(self.uuids.Father, "9cdda8b6-b606-4778-8f13-3934d8668e67")
self.assertTrue(self.uuids.MaterialStandard, "1e2c0088-904a-4537-925f-64064c07d700")
+ self.assertTrue(self.uuids.ArrudaBoyce, "e10d00de-c7de-4e59-bcdd-058c2ea19ec6")
self.assertTrue(self.uuids.Density, "454661e5-265b-4320-8e6f-fcf6223ac3af")
+ self.assertTrue(self.uuids.Hardness, "3d1a6141-d032-4d82-8bb5-a8f339fff8ad")
self.assertTrue(self.uuids.IsotropicLinearElastic, "f6f9e48c-b116-4e82-ad7f-3659a9219c50")
self.assertTrue(self.uuids.LinearElastic,"7b561d1d-fb9b-44f6-9da9-56a4f74d7536")
+ self.assertTrue(self.uuids.MooneyRivlin, "beeed169-7770-4da0-ab67-c9172cf7d23d")
+ self.assertTrue(self.uuids.NeoHooke, "569ebc58-ef29-434a-83be-555a0980d505")
+ self.assertTrue(self.uuids.OgdenN1, "a2634a2c-412f-468d-9bec-74ae5d87a9c0")
+ self.assertTrue(self.uuids.OgdenN2, "233540bb-7b13-4f49-ac12-126a5c82cedf")
+ self.assertTrue(self.uuids.OgdenN3, "a917d6b8-209f-429e-9972-fe4bbb97af3f")
self.assertTrue(self.uuids.OgdenYld2004p18, "3ef9e427-cc25-43f7-817f-79ff0d49625f")
self.assertTrue(self.uuids.OrthotropicLinearElastic, "b19ccc6b-a431-418e-91c2-0ac8c649d146")
+ self.assertTrue(self.uuids.PolynomialN1, "285a6042-0f0c-4a36-a898-4afadd6408ce")
+ self.assertTrue(self.uuids.PolynomialN2, "4c2fb7b2-5121-4d6f-be0d-8c5970c9e682")
+ self.assertTrue(self.uuids.PolynomialN3, "e83ada22-947e-4beb-91e7-482a16f5ba77")
+ self.assertTrue(self.uuids.ReducedPolynomialN1, "f8052a3c-db17-42ea-b2be-13aa5ef30730")
+ self.assertTrue(self.uuids.ReducedPolynomialN2, "c52b5021-4bb8-441c-80d4-855fce9de15e")
+ self.assertTrue(self.uuids.ReducedPolynomialN3, "fa4e58b4-74c7-4292-8e79-7d5fd232fb55")
+ self.assertTrue(self.uuids.Yeoh, "cd13c492-21a9-4578-8191-deec003e4c01")
self.assertTrue(self.uuids.Fluid, "1ae66d8c-1ba1-4211-ad12-b9917573b202")