Merge pull request #13529 from davesrocketshop/hardness_units_pr

Materials: Update Material Models
This commit is contained in:
sliptonic
2024-05-06 10:43:32 -05:00
committed by GitHub
9 changed files with 258 additions and 6 deletions

View File

@@ -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");

View File

@@ -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;

View File

@@ -28,12 +28,24 @@
</Documentation>
<Parameter Name="MaterialStandard" Type="String"/>
</Attribute>
<Attribute Name="ArrudaBoyce" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/ArrudaBoyce</UserDocu>
</Documentation>
<Parameter Name="ArrudaBoyce" Type="String"/>
</Attribute>
<Attribute Name="Density" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/Density</UserDocu>
</Documentation>
<Parameter Name="Density" Type="String"/>
</Attribute>
<Attribute Name="Hardness" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/Hardness</UserDocu>
</Documentation>
<Parameter Name="Hardness" Type="String"/>
</Attribute>
<Attribute Name="IsotropicLinearElastic" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/IsotropicLinearElastic</UserDocu>
@@ -46,6 +58,36 @@
</Documentation>
<Parameter Name="LinearElastic" Type="String"/>
</Attribute>
<Attribute Name="MooneyRivlin" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/MooneyRivlin</UserDocu>
</Documentation>
<Parameter Name="MooneyRivlin" Type="String"/>
</Attribute>
<Attribute Name="NeoHooke" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/NeoHooke</UserDocu>
</Documentation>
<Parameter Name="NeoHooke" Type="String"/>
</Attribute>
<Attribute Name="OgdenN1" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/OgdenN1</UserDocu>
</Documentation>
<Parameter Name="OgdenN1" Type="String"/>
</Attribute>
<Attribute Name="OgdenN2" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/OgdenN2</UserDocu>
</Documentation>
<Parameter Name="OgdenN2" Type="String"/>
</Attribute>
<Attribute Name="OgdenN3" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/OgdenN3</UserDocu>
</Documentation>
<Parameter Name="OgdenN3" Type="String"/>
</Attribute>
<Attribute Name="OgdenYld2004p18" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/OgdenYld2004p18</UserDocu>
@@ -58,6 +100,48 @@
</Documentation>
<Parameter Name="OrthotropicLinearElastic" Type="String"/>
</Attribute>
<Attribute Name="PolynomialN1" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/PolynomialN1</UserDocu>
</Documentation>
<Parameter Name="PolynomialN1" Type="String"/>
</Attribute>
<Attribute Name="PolynomialN2" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/PolynomialN2</UserDocu>
</Documentation>
<Parameter Name="PolynomialN2" Type="String"/>
</Attribute>
<Attribute Name="PolynomialN3" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/PolynomialN3</UserDocu>
</Documentation>
<Parameter Name="PolynomialN3" Type="String"/>
</Attribute>
<Attribute Name="ReducedPolynomialN1" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/ReducedPolynomialN1</UserDocu>
</Documentation>
<Parameter Name="ReducedPolynomialN1" Type="String"/>
</Attribute>
<Attribute Name="ReducedPolynomialN2" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/ReducedPolynomialN2</UserDocu>
</Documentation>
<Parameter Name="ReducedPolynomialN2" Type="String"/>
</Attribute>
<Attribute Name="ReducedPolynomialN3" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/ReducedPolynomialN3</UserDocu>
</Documentation>
<Parameter Name="ReducedPolynomialN3" Type="String"/>
</Attribute>
<Attribute Name="Yeoh" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Mechanical/Yeoh</UserDocu>
</Documentation>
<Parameter Name="Yeoh" Type="String"/>
</Attribute>
<Attribute Name="Fluid" ReadOnly="true">
<Documentation>
<UserDocu>UUID for model System:Fluid/Fluid</UserDocu>

View File

@@ -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());

View File

@@ -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

View File

@@ -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"

View File

@@ -0,0 +1,43 @@
---
# ***************************************************************************
# * *
# * Copyright (c) 2023 David Carter <dcarter@davidcarter.ca> *
# * *
# * 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"

View File

@@ -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"

View File

@@ -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")