diff --git a/src/Mod/Material/App/Model.cpp b/src/Mod/Material/App/Model.cpp index 19a4ebb8320a..fddc67b9d22a 100644 --- a/src/Mod/Material/App/Model.cpp +++ b/src/Mod/Material/App/Model.cpp @@ -39,11 +39,13 @@ ModelProperty::ModelProperty() {} ModelProperty::ModelProperty(const QString& name, + const QString& header, const QString& type, const QString& units, const QString& url, const QString& description) : _name(name) + , _displayName(header) , _propertyType(type) , _units(units) , _url(url) @@ -52,6 +54,7 @@ ModelProperty::ModelProperty(const QString& name, ModelProperty::ModelProperty(const ModelProperty& other) : _name(other._name) + , _displayName(other._displayName) , _propertyType(other._propertyType) , _units(other._units) , _url(other._url) @@ -63,6 +66,14 @@ ModelProperty::ModelProperty(const ModelProperty& other) } } +const QString ModelProperty::getDisplayName() const +{ + if (_displayName.isEmpty()) { + return getName(); + } + return _displayName; +} + ModelProperty& ModelProperty::operator=(const ModelProperty& other) { if (this == &other) { @@ -70,6 +81,7 @@ ModelProperty& ModelProperty::operator=(const ModelProperty& other) } _name = other._name; + _displayName = other._displayName; _propertyType = other._propertyType; _units = other._units; _url = other._url; @@ -89,7 +101,7 @@ bool ModelProperty::operator==(const ModelProperty& other) const return true; } - return (_name == other._name) && (_propertyType == other._propertyType) + return (_name == other._name) && (_displayName == other._displayName) && (_propertyType == other._propertyType) && (_units == other._units) && (_url == other._url) && (_description == other._description) && (_inheritance == other._inheritance); } diff --git a/src/Mod/Material/App/Model.h b/src/Mod/Material/App/Model.h index fcf83efd4705..5fe5888de04e 100644 --- a/src/Mod/Material/App/Model.h +++ b/src/Mod/Material/App/Model.h @@ -56,6 +56,7 @@ class MaterialsExport ModelProperty: public Base::BaseClass public: ModelProperty(); ModelProperty(const QString& name, + const QString& header, const QString& type, const QString& units, const QString& url, @@ -67,6 +68,7 @@ class MaterialsExport ModelProperty: public Base::BaseClass { return _name; } + const QString getDisplayName() const; const QString getPropertyType() const { return _propertyType; @@ -96,6 +98,10 @@ class MaterialsExport ModelProperty: public Base::BaseClass { _name = name; } + void setColumnHeader(const QString& header) + { + _displayName = header; + } virtual void setPropertyType(const QString& type) { _propertyType = type; @@ -139,6 +145,7 @@ class MaterialsExport ModelProperty: public Base::BaseClass private: QString _name; + QString _displayName; QString _propertyType; QString _units; QString _url; diff --git a/src/Mod/Material/App/ModelLoader.cpp b/src/Mod/Material/App/ModelLoader.cpp index a24bea113ad5..595c3f0d855b 100644 --- a/src/Mod/Material/App/ModelLoader.cpp +++ b/src/Mod/Material/App/ModelLoader.cpp @@ -254,6 +254,7 @@ void ModelLoader::addToTree(std::shared_ptr model, if (exclude.count(QString::fromStdString(propName)) == 0) { // showYaml(it->second); auto yamlProp = yamlProperties[propName]; + auto propDisplayName = yamlValue(yamlProp, "DisplayName", ""); auto propType = yamlValue(yamlProp, "Type", ""); auto propUnits = yamlValue(yamlProp, "Units", ""); auto propURL = yamlValue(yamlProp, "URL", ""); @@ -261,6 +262,7 @@ void ModelLoader::addToTree(std::shared_ptr model, // auto inherits = yamlValue(yamlProp, "Inherits", ""); ModelProperty property(QString::fromStdString(propName), + propDisplayName, propType, propUnits, propURL, @@ -276,11 +278,13 @@ void ModelLoader::addToTree(std::shared_ptr model, // Base::Console().Log("\tColumns '%s'\n", colName.c_str()); auto colProp = cols[colName]; + auto colPropDisplayName = yamlValue(colProp, "DisplayName", ""); auto colPropType = yamlValue(colProp, "Type", ""); auto colPropUnits = yamlValue(colProp, "Units", ""); auto colPropURL = yamlValue(colProp, "URL", ""); auto colPropDescription = yamlValue(colProp, "Description", ""); ModelProperty colProperty(QString::fromStdString(colName), + colPropDisplayName, colPropType, colPropUnits, colPropURL, diff --git a/src/Mod/Material/CMakeLists.txt b/src/Mod/Material/CMakeLists.txt index 58422a436a24..4b53cdac99dc 100644 --- a/src/Mod/Material/CMakeLists.txt +++ b/src/Mod/Material/CMakeLists.txt @@ -232,11 +232,24 @@ SET(MaterialModel_Files Resources/Models/Fluid/Fluid.yml Resources/Models/Legacy/Father.yml Resources/Models/Legacy/MaterialStandard.yml + Resources/Models/Mechanical/ArrudaBoyce.yml Resources/Models/Mechanical/Density.yml Resources/Models/Mechanical/IsotropicLinearElastic.yml Resources/Models/Mechanical/LinearElastic.yml + Resources/Models/Mechanical/MooneyRivlin.yml + Resources/Models/Mechanical/NeoHooke.yml + Resources/Models/Mechanical/OgdenN1.yml + Resources/Models/Mechanical/OgdenN2.yml + Resources/Models/Mechanical/OgdenN3.yml Resources/Models/Mechanical/OgdenYld2004p18.yml Resources/Models/Mechanical/OrthotropicLinearElastic.yml + Resources/Models/Mechanical/PolynomialN1.yml + Resources/Models/Mechanical/PolynomialN2.yml + Resources/Models/Mechanical/PolynomialN3.yml + Resources/Models/Mechanical/ReducedPolynomialN1.yml + Resources/Models/Mechanical/ReducedPolynomialN2.yml + Resources/Models/Mechanical/ReducedPolynomialN3.yml + Resources/Models/Mechanical/Yeoh.yml Resources/Models/Patterns/PAT.yml "Resources/Models/Patterns/Pattern File.yml" "Resources/Models/Render Workbench/RenderAppleseed.yml" diff --git a/src/Mod/Material/Gui/Array2D.cpp b/src/Mod/Material/Gui/Array2D.cpp index e2fc7d40f9f8..fd383ecf4403 100644 --- a/src/Mod/Material/Gui/Array2D.cpp +++ b/src/Mod/Material/Gui/Array2D.cpp @@ -62,6 +62,7 @@ Array2D::Array2D(const QString& propertyName, if (_property) { _value = std::static_pointer_cast(_property->getMaterialValue()); + setWindowTitle(_property->getDisplayName()); } else { _value = nullptr; @@ -81,16 +82,6 @@ Array2D::Array2D(const QString& propertyName, connect(ui->standardButtons, &QDialogButtonBox::rejected, this, &Array2D::reject); } -void Array2D::setHeaders(QStandardItemModel* model) -{ - QStringList headers; - auto columns = _property->getColumns(); - for (auto column = columns.begin(); column != columns.end(); column++) { - headers.append(column->getName()); - } - model->setHorizontalHeaderLabels(headers); -} - void Array2D::setColumnWidths(QTableView* table) { int length = _property->columns(); diff --git a/src/Mod/Material/Gui/Array2D.h b/src/Mod/Material/Gui/Array2D.h index 0829a9565ef8..3372d85c568e 100644 --- a/src/Mod/Material/Gui/Array2D.h +++ b/src/Mod/Material/Gui/Array2D.h @@ -68,7 +68,6 @@ class Array2D: public QDialog QAction _deleteAction; - void setHeaders(QStandardItemModel* model); void setColumnWidths(QTableView* table); void setColumnDelegates(QTableView* table); void setupArray(); diff --git a/src/Mod/Material/Gui/ArrayModel.cpp b/src/Mod/Material/Gui/ArrayModel.cpp index 5d1dbdd57db4..a6b7bac366fc 100644 --- a/src/Mod/Material/Gui/ArrayModel.cpp +++ b/src/Mod/Material/Gui/ArrayModel.cpp @@ -111,7 +111,7 @@ QVariant Array2DModel::headerData(int section, Qt::Orientation orientation, int if (role == Qt::DisplayRole) { if (orientation == Qt::Horizontal) { const Materials::MaterialProperty& column = _property->getColumn(section); - return column.getName(); + return column.getDisplayName(); } else if (orientation == Qt::Vertical) { // Vertical header @@ -251,7 +251,7 @@ QVariant Array3DDepthModel::headerData(int section, Qt::Orientation orientation, if (role == Qt::DisplayRole) { if (orientation == Qt::Horizontal) { const Materials::MaterialProperty& column = _property->getColumn(section); - return column.getName(); + return column.getDisplayName(); } if (orientation == Qt::Vertical) { // Vertical header @@ -406,7 +406,7 @@ QVariant Array3DModel::headerData(int section, Qt::Orientation orientation, int if (role == Qt::DisplayRole) { if (orientation == Qt::Horizontal) { const Materials::MaterialProperty& column = _property->getColumn(section + 1); - return column.getName(); + return column.getDisplayName(); } if (orientation == Qt::Vertical) { // Vertical header diff --git a/src/Mod/Material/Gui/MaterialDelegate.cpp b/src/Mod/Material/Gui/MaterialDelegate.cpp index 414f4cc1b325..feff9ec19695 100644 --- a/src/Mod/Material/Gui/MaterialDelegate.cpp +++ b/src/Mod/Material/Gui/MaterialDelegate.cpp @@ -110,7 +110,8 @@ QVariant MaterialDelegate::getValue(const QModelIndex& index) const QVariant propertyValue; if (group->child(row, 1)) { auto material = group->child(row, 1)->data().value>(); - auto propertyName = group->child(row, 0)->text(); + // auto propertyName = group->child(row, 0)->text(); + auto propertyName = group->child(row, 0)->data().toString(); propertyValue = material->getProperty(propertyName)->getValue(); } return propertyValue; @@ -130,7 +131,8 @@ void MaterialDelegate::setValue(QAbstractItemModel* model, int row = index.row(); if (group->child(row, 1)) { auto material = group->child(row, 1)->data().value>(); - auto propertyName = group->child(row, 0)->text(); + // auto propertyName = group->child(row, 0)->text(); + auto propertyName = group->child(row, 0)->data().toString(); material->getProperty(propertyName)->setValue(value); group->child(row, 1)->setText(value.toString()); } @@ -152,7 +154,8 @@ void MaterialDelegate::notifyChanged(const QAbstractItemModel* model, int row = index.row(); if (group->child(row, 1)) { auto material = group->child(row, 1)->data().value>(); - auto propertyName = group->child(row, 0)->text(); + // auto propertyName = group->child(row, 0)->text(); + auto propertyName = group->child(row, 0)->data().toString(); auto propertyValue = material->getProperty(propertyName)->getValue(); material->setEditStateAlter(); Base::Console().Log("MaterialDelegate::notifyChanged() - marked altered\n"); @@ -181,7 +184,8 @@ bool MaterialDelegate::editorEvent(QEvent* event, int row = index.row(); - QString propertyName = group->child(row, 0)->text(); + // QString propertyName = group->child(row, 0)->text(); + QString propertyName = group->child(row, 0)->data().toString(); auto type = getType(index); if (type == Materials::MaterialValue::Color) { diff --git a/src/Mod/Material/Gui/MaterialsEditor.cpp b/src/Mod/Material/Gui/MaterialsEditor.cpp index defc3065204f..b6166395a66c 100644 --- a/src/Mod/Material/Gui/MaterialsEditor.cpp +++ b/src/Mod/Material/Gui/MaterialsEditor.cpp @@ -963,7 +963,9 @@ void MaterialsEditor::updateMaterialAppearance() QList items; QString key = itp->first; - auto propertyItem = new QStandardItem(key); + // auto propertyItem = new QStandardItem(key); + auto propertyItem = new QStandardItem(itp->second.getDisplayName()); + propertyItem->setData(key); propertyItem->setToolTip(itp->second.getDescription()); items.append(propertyItem); @@ -1026,7 +1028,9 @@ void MaterialsEditor::updateMaterialProperties() QString key = itp->first; Materials::ModelProperty modelProperty = static_cast(itp->second); - auto propertyItem = new QStandardItem(key); + // auto propertyItem = new QStandardItem(key); + auto propertyItem = new QStandardItem(modelProperty.getDisplayName()); + propertyItem->setData(key); propertyItem->setToolTip(modelProperty.getDescription()); items.append(propertyItem); diff --git a/src/Mod/Material/Resources/Models/Architectural/Architectural.yml b/src/Mod/Material/Resources/Models/Architectural/Architectural.yml index a94675ff0ef9..9586f36e46d4 100644 --- a/src/Mod/Material/Resources/Models/Architectural/Architectural.yml +++ b/src/Mod/Material/Resources/Models/Architectural/Architectural.yml @@ -28,16 +28,19 @@ Model: Description: "default architectural model" DOI: "" EnvironmentalEfficiencyClass: + DisplayName: "Environmental Efficiency Class" Type: 'String' Units: '' URL: '' Description: " " ExecutionInstructions: + DisplayName: "Execution Instructions" Type: 'String' Units: '' URL: '' Description: " " FireResistanceClass: + DisplayName: "Fire Resistance Class" Type: 'String' Units: '' URL: '' @@ -48,11 +51,13 @@ Model: URL: '' Description: " " SoundTransmissionClass: + DisplayName: "Sound Transmission Class" Type: 'String' Units: '' URL: '' Description: " " UnitsPerQuantity: + DisplayName: "Units Per Quantity" Type: 'Float' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Costs/Costs.yml b/src/Mod/Material/Resources/Models/Costs/Costs.yml index 92eb8323e441..edefdbe0c7e1 100644 --- a/src/Mod/Material/Resources/Models/Costs/Costs.yml +++ b/src/Mod/Material/Resources/Models/Costs/Costs.yml @@ -28,11 +28,13 @@ Model: Description: "default cost model" DOI: "" ProductURL: + DisplayName: "Product URL" Type: 'URL' Units: '' URL: 'https://de.wikipedia.org/wiki/Hyperlink' Description: "Product URL, recommended are wikipedia links" SpecificPrice: + DisplayName: "Specific Price" Type: 'Float' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Electromagnetic/Electromagnetic.yml b/src/Mod/Material/Resources/Models/Electromagnetic/Electromagnetic.yml index 1f70ab439c7d..866c56665af0 100644 --- a/src/Mod/Material/Resources/Models/Electromagnetic/Electromagnetic.yml +++ b/src/Mod/Material/Resources/Models/Electromagnetic/Electromagnetic.yml @@ -28,17 +28,20 @@ Model: Description: "default electromagnetic model" DOI: "" RelativePermittivity: + DisplayName: "Relative Permittivity" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Relative_permittivity' Description: "The ratio to the permittivity of the vacuum" ElectricalConductivity: + DisplayName: "Electrical Conductivity" Type: 'Quantity' Units: 'S/m' URL: 'https://en.wikipedia.org/wiki/Electrical_resistivity_and_conductivity' Description: > The electrical conductivity in [FreeCAD ElectricalConductivity unit] RelativePermeability: + DisplayName: "Relative Permeability" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Permeability_(electromagnetism)' diff --git a/src/Mod/Material/Resources/Models/Fluid/Fluid.yml b/src/Mod/Material/Resources/Models/Fluid/Fluid.yml index 4ddea05de395..2853392d9db0 100644 --- a/src/Mod/Material/Resources/Models/Fluid/Fluid.yml +++ b/src/Mod/Material/Resources/Models/Fluid/Fluid.yml @@ -30,6 +30,7 @@ Model: - Density: UUID: '454661e5-265b-4320-8e6f-fcf6223ac3af' DynamicViscosity: + DisplayName: "Dynamic Viscosity" Type: 'Quantity' Units: 'Pa*s' URL: 'https://en.wikipedia.org/wiki/Viscosity' @@ -38,11 +39,13 @@ Model: flow and deform during mechanical oscillation as a function of temperature, frequency, time, or both KinematicViscosity: + DisplayName: "Kinematic Viscosity" Type: 'Quantity' Units: 'm^2/s' URL: 'https://en.wikipedia.org/wiki/Viscosity' Description: "Kinematic Viscosity = Dynamic Viscosity / Density" PrandtlNumber: + DisplayName: "Prandtl Number" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Prandtl_number' diff --git a/src/Mod/Material/Resources/Models/Legacy/MaterialStandard.yml b/src/Mod/Material/Resources/Models/Legacy/MaterialStandard.yml index c1d2cf9d27f8..18f26da015bf 100644 --- a/src/Mod/Material/Resources/Models/Legacy/MaterialStandard.yml +++ b/src/Mod/Material/Resources/Models/Legacy/MaterialStandard.yml @@ -28,16 +28,19 @@ Model: Description: "Describes the norm or standards referenced by this material" DOI: "" KindOfMaterial: + DisplayName: "Kind Of Material" Type: 'String' Units: '' URL: '' Description: " " MaterialNumber: + DisplayName: "Material Number" Type: 'String' Units: '' URL: '' Description: " " StandardCode: + DisplayName: "Standard Code" Type: 'String' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Mechanical/ArrudaBoyce.yml b/src/Mod/Material/Resources/Models/Mechanical/ArrudaBoyce.yml new file mode 100644 index 000000000000..1579bcec97d0 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/ArrudaBoyce.yml @@ -0,0 +1,60 @@ +--- +# *************************************************************************** +# * * +# * 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: 'ArrudaBoyce' + UUID: 'e10d00de-c7de-4e59-bcdd-058c2ea19ec6' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + A hyperelastic constitutive model used to describe the mechanical + behavior of rubber and other polymeric substances + ArrudaBoyce: + DisplayName: "Arruda-Boyce" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "Temperature" + Mu: + DisplayName: 'μ' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ [FreeCAD Pressure unit]" + LambdaM: + DisplayName: 'λm' + Type: 'Float' + Units: '' + URL: '' + Description: "λm" + D: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Arruda-Boyce properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/IsotropicLinearElastic.yml b/src/Mod/Material/Resources/Models/Mechanical/IsotropicLinearElastic.yml index 71eb1c519eea..3aca53ef15c7 100644 --- a/src/Mod/Material/Resources/Models/Mechanical/IsotropicLinearElastic.yml +++ b/src/Mod/Material/Resources/Models/Mechanical/IsotropicLinearElastic.yml @@ -30,21 +30,25 @@ Model: and strain relationship is linear DOI: "10.1016/j.ijplas.2004.06.004" BulkModulus: + DisplayName: "Bulk Modulus" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Bulk_modulus' Description: "Bulk modulus in [FreeCAD Pressure unit]" PoissonRatio: + DisplayName: "Poisson Ratio" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Poisson%27s_ratio' Description: "Poisson's ratio [unitless]" ShearModulus: + DisplayName: "Shear Modulus" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Shear_modulus' Description: "Shear modulus in [FreeCAD Pressure unit]" YoungsModulus: + DisplayName: "Young's Modulus" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Young%27s_modulus' diff --git a/src/Mod/Material/Resources/Models/Mechanical/LinearElastic.yml b/src/Mod/Material/Resources/Models/Mechanical/LinearElastic.yml index 83b02a264f8c..aabd4ea72b3a 100644 --- a/src/Mod/Material/Resources/Models/Mechanical/LinearElastic.yml +++ b/src/Mod/Material/Resources/Models/Mechanical/LinearElastic.yml @@ -35,6 +35,7 @@ Model: - IsotropicLinearElastic: UUID: 'f6f9e48c-b116-4e82-ad7f-3659a9219c50' AngleOfFriction: + DisplayName: "Angle Of Friction" Type: 'Quantity' Units: 'deg' URL: 'https://en.wikipedia.org/wiki/Friction#Angle_of_friction' @@ -42,11 +43,13 @@ Model: Further information can be found at https://en.wikipedia.org/wiki/Mohr%E2%80%93Coulomb_theory CompressiveStrength: + DisplayName: "Compressive Strength" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Compressive_strength' Description: "Compressive strength in [FreeCAD Pressure unit]" FractureToughness: + DisplayName: "Fracture Toughness" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Fracture_toughness' @@ -55,16 +58,19 @@ Model: the unit is fixed MPa * m^0.5. https://github.com/FreeCAD/FreeCAD/pull/2156 UltimateStrain: + DisplayName: "Ultimate Strain" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Deformation_(mechanics)' Description: " " UltimateTensileStrength: + DisplayName: "Ultimate Tensile Strength" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Ultimate_tensile_strength' Description: "Ultimate tensile strength in [FreeCAD Pressure unit]" YieldStrength: + DisplayName: "Yield Strength" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Yield_Strength' diff --git a/src/Mod/Material/Resources/Models/Mechanical/MooneyRivlin.yml b/src/Mod/Material/Resources/Models/Mechanical/MooneyRivlin.yml new file mode 100644 index 000000000000..59950db9d11d --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/MooneyRivlin.yml @@ -0,0 +1,59 @@ +--- +# *************************************************************************** +# * * +# * 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: 'MooneyRivlin' + UUID: 'beeed169-7770-4da0-ab67-c9172cf7d23d' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + A hyperelastic material model where the strain energy density function + W is a linear combination of two invariants of the left Cauchy–Green + deformation tensor B + MooneyRivlin: + DisplayName: "Mooney-Rivlin" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C01: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Mooney-Rivlin properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/NeoHooke.yml b/src/Mod/Material/Resources/Models/Mechanical/NeoHooke.yml new file mode 100644 index 000000000000..ad1b6158264b --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/NeoHooke.yml @@ -0,0 +1,54 @@ +--- +# *************************************************************************** +# * * +# * 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: 'NeoHooke' + UUID: '569ebc58-ef29-434a-83be-555a0980d505' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + A neo-Hookean solid is a hyperelastic material model, similar to + Hooke's law, that can be used for predicting the nonlinear stress-strain + behavior of materials undergoing large deformations. + NeoHooke: + DisplayName: "neo-Hooke" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing neo-Hooke properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/OgdenN1.yml b/src/Mod/Material/Resources/Models/Mechanical/OgdenN1.yml new file mode 100644 index 000000000000..1d1c11cf3fff --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/OgdenN1.yml @@ -0,0 +1,61 @@ +--- +# *************************************************************************** +# * * +# * 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: 'OgdenN1' + UUID: 'a2634a2c-412f-468d-9bec-74ae5d87a9c0' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The Ogden material model is a hyperelastic material model used to + describe the non-linear stress–strain behaviour of complex materials + such as rubbers, polymers, and biological tissue. + OgdenN1: + DisplayName: "Ogden N=1" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "Temperature" + Mu1: + DisplayName: 'μ1' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ1 [FreeCAD Pressure unit]" + Alpha1: + DisplayName: 'α1' + Type: 'Float' + Units: '' + URL: '' + Description: "α1" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Ogden N=1 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/OgdenN2.yml b/src/Mod/Material/Resources/Models/Mechanical/OgdenN2.yml new file mode 100644 index 000000000000..406e359e901c --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/OgdenN2.yml @@ -0,0 +1,78 @@ +--- +# *************************************************************************** +# * * +# * 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: 'OgdenN2' + UUID: '233540bb-7b13-4f49-ac12-126a5c82cedf' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The Ogden material model is a hyperelastic material model used to + describe the non-linear stress–strain behaviour of complex materials + such as rubbers, polymers, and biological tissue. + OgdenN2: + DisplayName: "Ogden N=2" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "Temperature" + Mu1: + DisplayName: 'μ1' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ1 [FreeCAD Pressure unit]" + Mu2: + DisplayName: 'μ2' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ2 [FreeCAD Pressure unit]" + Alpha1: + DisplayName: 'α1' + Type: 'Float' + Units: '' + URL: '' + Description: "α1" + Alpha2: + DisplayName: 'α2' + Type: 'Float' + Units: '' + URL: '' + Description: "α2" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Ogden N=2 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/OgdenN3.yml b/src/Mod/Material/Resources/Models/Mechanical/OgdenN3.yml new file mode 100644 index 000000000000..0fed1d8a7844 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/OgdenN3.yml @@ -0,0 +1,95 @@ +--- +# *************************************************************************** +# * * +# * 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: 'OgdenN3' + UUID: 'a917d6b8-209f-429e-9972-fe4bbb97af3f' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The Ogden material model is a hyperelastic material model used to + describe the non-linear stress–strain behaviour of complex materials + such as rubbers, polymers, and biological tissue. + OgdenN3: + DisplayName: "Ogden N=3" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "Temperature" + Mu1: + DisplayName: 'μ1' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ1 [FreeCAD Pressure unit]" + Mu2: + DisplayName: 'μ2' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ2 [FreeCAD Pressure unit]" + Mu3: + DisplayName: 'μ3' + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "μ1 [FreeCAD Pressure unit]" + Alpha1: + DisplayName: 'α1' + Type: 'Float' + Units: '' + URL: '' + Description: "α1" + Alpha2: + DisplayName: 'α2' + Type: 'Float' + Units: '' + URL: '' + Description: "α2" + Alpha3: + DisplayName: 'α3' + Type: 'Float' + Units: '' + URL: '' + Description: "α3" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + D3: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D3 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Ogden N=3 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/OgdenYld2004p18.yml b/src/Mod/Material/Resources/Models/Mechanical/OgdenYld2004p18.yml index 7bf43f619b90..f904d828e880 100644 --- a/src/Mod/Material/Resources/Models/Mechanical/OgdenYld2004p18.yml +++ b/src/Mod/Material/Resources/Models/Mechanical/OgdenYld2004p18.yml @@ -30,33 +30,39 @@ Model: strain relationship is linear DOI: "10.1016/j.ijplas.2004.06.004" OgdenModuli: + DisplayName: "Ogden Moduli" Type: 'List' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Ogden_hyperelastic_model' Description: "Elastic moduli μ for Ogden [FreeCAD Pressure unit]" OgdenExponent: + DisplayName: "Ogden Exponent" Type: 'Integer' Units: '' URL: 'https://en.wikipedia.org/wiki/Ogden_hyperelastic_model' Description: "Exponent ɑ for Ogden [unitless]" InitialYieldStress: + DisplayName: "Initial Yield Stress" Type: 'Quantity' Units: 'kPa' URL: '' Description: > Saturation stress for Voce isotropic hardening [FreeCAD Pressure unit] VoceSaturationStress: + DisplayName: "Voce Saturation Stress" Type: 'Quantity' Units: 'kPa' URL: '' Description: > Saturation stress for Voce isotropic hardening [FreeCAD Pressure unit] VoceStrainScale: + DisplayName: "Voce Strain Scale" Type: 'Float' Units: '' URL: '' Description: "Strain scale in Voce isotropic hardening [unitless]" Yld2004p18Coefficients: + DisplayName: "Yld2004p18 Coefficients" Type: 'List' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Mechanical/OrthotropicLinearElastic.yml b/src/Mod/Material/Resources/Models/Mechanical/OrthotropicLinearElastic.yml index b63302dc96a8..7e88745eb2ea 100644 --- a/src/Mod/Material/Resources/Models/Mechanical/OrthotropicLinearElastic.yml +++ b/src/Mod/Material/Resources/Models/Mechanical/OrthotropicLinearElastic.yml @@ -30,46 +30,55 @@ Model: strain relationship is linear DOI: "" PoissonRatioXY: + DisplayName: "Poisson Ratio XY" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Poisson%27s_ratio' Description: "Poisson's ratio [unitless]" PoissonRatioXZ: + DisplayName: "Poisson Ratio XZ" Type: 'Float' Units: '' URL: 'https://en.wikipedia.org/wiki/Poisson%27s_ratio' Description: "Poisson's ratio [unitless]" PoissonRatioYZ: + DisplayName: "Poisson Ratio YZ" Type: 'Float' Units: 'Pressure' URL: 'https://en.wikipedia.org/wiki/Poisson%27s_ratio' Description: "Poisson's ratio [unitless]" ShearModulusXY: + DisplayName: "Shear Modulus XY" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Shear_modulus' Description: "Shear modulus in [FreeCAD Pressure unit]" ShearModulusXZ: + DisplayName: "Shear Modulus XZ" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Shear_modulus' Description: "Shear modulus in [FreeCAD Pressure unit]" ShearModulusYZ: + DisplayName: "Shear Modulus YZ" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Shear_modulus' Description: "Shear modulus in [FreeCAD Pressure unit]" YoungsModulusX: + DisplayName: "Young's Modulus X" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Young%27s_modulus' Description: "Young's modulus (or E-Module) in [FreeCAD Pressure unit]" YoungsModulusY: + DisplayName: "Young's Modulus Y" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Young%27s_modulus' Description: "Young's modulus (or E-Module) in [FreeCAD Pressure unit]" YoungsModulusZ: + DisplayName: "Young's Modulus Z" Type: 'Quantity' Units: 'kPa' URL: 'https://en.wikipedia.org/wiki/Young%27s_modulus' diff --git a/src/Mod/Material/Resources/Models/Mechanical/PolynomialN1.yml b/src/Mod/Material/Resources/Models/Mechanical/PolynomialN1.yml new file mode 100644 index 000000000000..8f4195636f1c --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/PolynomialN1.yml @@ -0,0 +1,58 @@ +--- +# *************************************************************************** +# * * +# * 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: 'PolynomialN1' + UUID: '285a6042-0f0c-4a36-a898-4afadd6408ce' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The polynomial hyperelastic material model is a phenomenological model + of rubber elasticity. + PolynomialN1: + DisplayName: "Polynomial N=1" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C01: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Polynomial N=1 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/PolynomialN2.yml b/src/Mod/Material/Resources/Models/Mechanical/PolynomialN2.yml new file mode 100644 index 000000000000..cd0fc72df086 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/PolynomialN2.yml @@ -0,0 +1,78 @@ +--- +# *************************************************************************** +# * * +# * 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: 'PolynomialN2' + UUID: '4c2fb7b2-5121-4d6f-be0d-8c5970c9e682' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The polynomial hyperelastic material model is a phenomenological model + of rubber elasticity. + PolynomialN2: + DisplayName: "Polynomial N=2" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C01: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C20: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C11: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C02: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Polynomial N=2 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/PolynomialN3.yml b/src/Mod/Material/Resources/Models/Mechanical/PolynomialN3.yml new file mode 100644 index 000000000000..daa41b364a2d --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/PolynomialN3.yml @@ -0,0 +1,103 @@ +--- +# *************************************************************************** +# * * +# * 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: 'PolynomialN3' + UUID: 'e83ada22-947e-4beb-91e7-482a16f5ba77' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The polynomial hyperelastic material model is a phenomenological model + of rubber elasticity. + PolynomialN3: + DisplayName: "Polynomial N=3" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C01: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C20: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C11: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C02: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C30: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C21: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C12: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C03: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + D3: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D3 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Polynomial N=3 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN1.yml b/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN1.yml new file mode 100644 index 000000000000..d2e70cf1c54a --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN1.yml @@ -0,0 +1,53 @@ +--- +# *************************************************************************** +# * * +# * 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: 'ReducdedPolynomialN1' + UUID: 'f8052a3c-db17-42ea-b2be-13aa5ef30730' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The polynomial hyperelastic material model is a phenomenological model + of rubber elasticity. + ReducdedPolynomialN1: + DisplayName: "Reduced Polynomial N=1" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Reduced Polynomial N=1 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN2.yml b/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN2.yml new file mode 100644 index 000000000000..e98cdd6545e8 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN2.yml @@ -0,0 +1,63 @@ +--- +# *************************************************************************** +# * * +# * 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: 'ReducdedPolynomialN2' + UUID: 'c52b5021-4bb8-441c-80d4-855fce9de15e' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The polynomial hyperelastic material model is a phenomenological model + of rubber elasticity. + ReducdedPolynomialN2: + DisplayName: "Reduced Polynomial N=2" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C20: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Reduced Polynomial N=2 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN3.yml b/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN3.yml new file mode 100644 index 000000000000..85f9b34dc661 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/ReducedPolynomialN3.yml @@ -0,0 +1,73 @@ +--- +# *************************************************************************** +# * * +# * 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: 'ReducdedPolynomialN3' + UUID: 'fa4e58b4-74c7-4292-8e79-7d5fd232fb55' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The polynomial hyperelastic material model is a phenomenological model + of rubber elasticity. + ReducdedPolynomialN3: + DisplayName: "Reduced Polynomial N=3" + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C20: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C30: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + D3: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D3 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Reduced Polynomial N=3 properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Mechanical/Yeoh.yml b/src/Mod/Material/Resources/Models/Mechanical/Yeoh.yml new file mode 100644 index 000000000000..803e97d4c270 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Mechanical/Yeoh.yml @@ -0,0 +1,73 @@ +--- +# *************************************************************************** +# * * +# * 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: 'Yeoh' + UUID: 'cd13c492-21a9-4578-8191-deec003e4c01' + URL: 'http://www.dhondt.de/ccx_2.21.pdf' + Description: > + The Yeoh hyperelastic material model is a phenomenological model for + the deformation of nearly incompressible, nonlinear elastic materials + such as rubber. + Yeoh: + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "" + C10: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C20: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + C30: + Type: 'Quantity' + Units: 'Pa' + URL: '' + Description: "" + D1: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D1 [1/FreeCAD Pressure unit]" + D2: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D2 [1/FreeCAD Pressure unit]" + D3: + Type: 'Quantity' + Units: '1/Pa' + URL: '' + Description: "D3 [1/FreeCAD Pressure unit]" + URL: '' + Description: > + 2 Dimensional array showing Yeoh properties as + a function of temperature diff --git a/src/Mod/Material/Resources/Models/Rendering/AdvancedRendering.yml b/src/Mod/Material/Resources/Models/Rendering/AdvancedRendering.yml index 84223de33bd2..d6057fb312a2 100644 --- a/src/Mod/Material/Resources/Models/Rendering/AdvancedRendering.yml +++ b/src/Mod/Material/Resources/Models/Rendering/AdvancedRendering.yml @@ -31,11 +31,13 @@ AppearanceModel: - BasicRendering: UUID: 'f006c7e4-35b7-43d5-bbf9-c5d572309e6e' FragmentShader: + DisplayName: "Fragment Shader" Type: 'String' Units: '' URL: '' Description: " " VertexShader: + DisplayName: "Vertex Shader" Type: 'String' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Rendering/BasicRendering.yml b/src/Mod/Material/Resources/Models/Rendering/BasicRendering.yml index c5d145ba2daa..e9ffd5a36f33 100644 --- a/src/Mod/Material/Resources/Models/Rendering/BasicRendering.yml +++ b/src/Mod/Material/Resources/Models/Rendering/BasicRendering.yml @@ -28,16 +28,19 @@ AppearanceModel: Description: "default rendering model" DOI: "" AmbientColor: + DisplayName: "Ambient Color" Type: 'Color' Units: '' URL: '' Description: " " DiffuseColor: + DisplayName: "Diffuse Color" Type: 'Color' Units: '' URL: '' Description: " " EmissiveColor: + DisplayName: "Emissive Color" Type: 'Color' Units: '' URL: '' @@ -48,6 +51,7 @@ AppearanceModel: URL: '' Description: " " SpecularColor: + DisplayName: "Specular Color" Type: 'Color' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Rendering/TextureRendering.yml b/src/Mod/Material/Resources/Models/Rendering/TextureRendering.yml index c2fadfa0ad38..02150163d675 100644 --- a/src/Mod/Material/Resources/Models/Rendering/TextureRendering.yml +++ b/src/Mod/Material/Resources/Models/Rendering/TextureRendering.yml @@ -31,11 +31,13 @@ AppearanceModel: - BasicRendering: UUID: 'f006c7e4-35b7-43d5-bbf9-c5d572309e6e' TexturePath: + DisplayName: "Texture Path" Type: 'File' Units: '' URL: '' Description: " " TextureScaling: + DisplayName: "Texture Scaling" Type: 'Float' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Rendering/VectorRendering.yml b/src/Mod/Material/Resources/Models/Rendering/VectorRendering.yml index a1eb05213e38..b756b63ecb48 100644 --- a/src/Mod/Material/Resources/Models/Rendering/VectorRendering.yml +++ b/src/Mod/Material/Resources/Models/Rendering/VectorRendering.yml @@ -28,31 +28,37 @@ AppearanceModel: Description: "default vector rendering model" DOI: "" SectionFillPattern: + DisplayName: "Section Fill Pattern" Type: 'File' Units: '' URL: '' Description: " " SectionLinewidth: + DisplayName: "Section Linewidth" Type: 'Float' Units: '' URL: '' Description: " " SectionColor: + DisplayName: "Section Color" Type: 'Color' Units: '' URL: '' Description: " " ViewColor: + DisplayName: "View Color" Type: 'Color' Units: '' URL: '' Description: " " ViewFillPattern: + DisplayName: "View Fill Pattern" Type: 'Boolean' Units: '' URL: '' Description: " " ViewLinewidth: + DisplayName: "View Linewidth" Type: 'Float' Units: '' URL: '' diff --git a/src/Mod/Material/Resources/Models/Thermal/Thermal.yml b/src/Mod/Material/Resources/Models/Thermal/Thermal.yml index f8154af60bf0..5bbf0a137e04 100644 --- a/src/Mod/Material/Resources/Models/Thermal/Thermal.yml +++ b/src/Mod/Material/Resources/Models/Thermal/Thermal.yml @@ -28,16 +28,19 @@ Model: Description: "default thermal model" DOI: "" SpecificHeat: + DisplayName: "Specific Heat" Type: 'Quantity' Units: 'J/kg/K' URL: 'https://en.wikipedia.org/wiki/Heat_capacity' Description: "Specific capacity in [FreeCAD SpecificHeat unit]" ThermalConductivity: + DisplayName: "Thermal Conductivity" Type: 'Quantity' Units: 'W/m/K' URL: 'https://en.wikipedia.org/wiki/Thermal_conductivity' Description: "Thermal conductivity in [FreeCAD ThermalConductivity unit]" ThermalExpansionCoefficient: + DisplayName: "Thermal Expansion Coefficient" Type: 'Quantity' Units: 'm/m/K' URL: diff --git a/tests/src/Mod/Material/App/TestMaterialProperties.cpp b/tests/src/Mod/Material/App/TestMaterialProperties.cpp index 804cc227faec..455424c399a7 100644 --- a/tests/src/Mod/Material/App/TestMaterialProperties.cpp +++ b/tests/src/Mod/Material/App/TestMaterialProperties.cpp @@ -49,17 +49,20 @@ class TestMaterialProperties: public ::testing::Test { // 2D Properties modelProp = Materials::ModelProperty(QString::fromStdString("Density"), // Name + QString::fromStdString("D"), // Header QString::fromStdString("2DArray"), // Type QString::fromStdString(""), // Units QString::fromStdString(""), // URL QString::fromStdString("desc")); // Description modelProp1 = Materials::ModelProperty(QString::fromStdString("Temperature"), + QString::fromStdString("T"), QString::fromStdString("Quantity"), QString::fromStdString("C"), QString::fromStdString(""), QString::fromStdString("desc1")); modelProp2 = Materials::ModelProperty( QString::fromStdString("Density"), + QString::fromStdString("D"), QString::fromStdString("Quantity"), QString::fromStdString("kg/m^3"), QString::fromStdString("https://en.wikipedia.org/wiki/Density"), @@ -70,23 +73,27 @@ class TestMaterialProperties: public ::testing::Test // 3D properties model3DProp = Materials::ModelProperty( - QString::fromStdString("StressStrain"), // Name - QString::fromStdString("3DArray"), // Type - QString::fromStdString(""), // Units - QString::fromStdString(""), // URL + QString::fromStdString("StressStrain"), // Name + QString::fromStdString("Stress / Strain"), // Header + QString::fromStdString("3DArray"), // Type + QString::fromStdString(""), // Units + QString::fromStdString(""), // URL QString::fromStdString("3 Dimensional array showing stress and strain as a function of " "temperature")); // Description model3DProp1 = Materials::ModelProperty(QString::fromStdString("Temperature"), + QString::fromStdString("T"), QString::fromStdString("Quantity"), QString::fromStdString("C"), QString::fromStdString(""), QString::fromStdString("desc1")); model3DProp2 = Materials::ModelProperty(QString::fromStdString("Stress"), + QString::fromStdString("Stress"), QString::fromStdString("Quantity"), QString::fromStdString("MPa"), QString::fromStdString(""), QString::fromStdString("desc2")); model3DProp3 = Materials::ModelProperty(QString::fromStdString("Strain"), + QString::fromStdString("Strain"), QString::fromStdString("Quantity"), QString::fromStdString("MPa"), QString::fromStdString(""), diff --git a/tests/src/Mod/Material/App/TestModelProperties.cpp b/tests/src/Mod/Material/App/TestModelProperties.cpp index c018608034e5..ab8190e1aa8a 100644 --- a/tests/src/Mod/Material/App/TestModelProperties.cpp +++ b/tests/src/Mod/Material/App/TestModelProperties.cpp @@ -64,12 +64,14 @@ TEST_F(TestModelProperties, TestBasic) QString::fromStdString("2"), QString::fromStdString("3"), QString::fromStdString("4"), - QString::fromStdString("5")); + QString::fromStdString("5"), + QString::fromStdString("6")); EXPECT_EQ(prop.getName(), QString::fromStdString("1")); - EXPECT_EQ(prop.getPropertyType(), QString::fromStdString("2")); - EXPECT_EQ(prop.getUnits(), QString::fromStdString("3")); - EXPECT_EQ(prop.getURL(), QString::fromStdString("4")); - EXPECT_EQ(prop.getDescription(), QString::fromStdString("5")); + EXPECT_EQ(prop.getDisplayName(), QString::fromStdString("2")); + EXPECT_EQ(prop.getPropertyType(), QString::fromStdString("3")); + EXPECT_EQ(prop.getUnits(), QString::fromStdString("4")); + EXPECT_EQ(prop.getURL(), QString::fromStdString("5")); + EXPECT_EQ(prop.getDescription(), QString::fromStdString("6")); EXPECT_TRUE(prop.getInheritance().isNull()); EXPECT_FALSE(prop.isInherited()); EXPECT_EQ(prop.columns(), 0); @@ -85,17 +87,20 @@ TEST_F(TestModelProperties, TestAddColumns) QString::fromStdString("2"), QString::fromStdString("3"), QString::fromStdString("4"), - QString::fromStdString("5")); + QString::fromStdString("5"), + QString::fromStdString("6")); auto prop1 = Materials::ModelProperty(QString::fromStdString("10"), QString::fromStdString("9"), QString::fromStdString("8"), QString::fromStdString("7"), - QString::fromStdString("6")); + QString::fromStdString("6"), + QString::fromStdString("5")); auto prop2 = Materials::ModelProperty(QString::fromStdString("a"), QString::fromStdString("b"), QString::fromStdString("c"), QString::fromStdString("d"), - QString::fromStdString("e")); + QString::fromStdString("e"), + QString::fromStdString("f")); EXPECT_EQ(prop.columns(), 0); prop.addColumn(prop1); @@ -106,20 +111,22 @@ TEST_F(TestModelProperties, TestAddColumns) auto columns = prop.getColumns(); auto entry1 = columns.at(0); EXPECT_EQ(entry1.getName(), QString::fromStdString("10")); - EXPECT_EQ(entry1.getPropertyType(), QString::fromStdString("9")); - EXPECT_EQ(entry1.getUnits(), QString::fromStdString("8")); - EXPECT_EQ(entry1.getURL(), QString::fromStdString("7")); - EXPECT_EQ(entry1.getDescription(), QString::fromStdString("6")); + EXPECT_EQ(entry1.getDisplayName(), QString::fromStdString("9")); + EXPECT_EQ(entry1.getPropertyType(), QString::fromStdString("8")); + EXPECT_EQ(entry1.getUnits(), QString::fromStdString("7")); + EXPECT_EQ(entry1.getURL(), QString::fromStdString("6")); + EXPECT_EQ(entry1.getDescription(), QString::fromStdString("5")); EXPECT_TRUE(entry1.getInheritance().isNull()); EXPECT_FALSE(entry1.isInherited()); EXPECT_EQ(entry1.columns(), 0); auto entry2 = columns.at(1); EXPECT_EQ(entry2.getName(), QString::fromStdString("a")); - EXPECT_EQ(entry2.getPropertyType(), QString::fromStdString("b")); - EXPECT_EQ(entry2.getUnits(), QString::fromStdString("c")); - EXPECT_EQ(entry2.getURL(), QString::fromStdString("d")); - EXPECT_EQ(entry2.getDescription(), QString::fromStdString("e")); + EXPECT_EQ(entry2.getDisplayName(), QString::fromStdString("b")); + EXPECT_EQ(entry2.getPropertyType(), QString::fromStdString("c")); + EXPECT_EQ(entry2.getUnits(), QString::fromStdString("d")); + EXPECT_EQ(entry2.getURL(), QString::fromStdString("e")); + EXPECT_EQ(entry2.getDescription(), QString::fromStdString("f")); EXPECT_TRUE(entry2.getInheritance().isNull()); EXPECT_FALSE(entry2.isInherited()); EXPECT_EQ(entry2.columns(), 0);