Merge pull request #12753 from davesrocketshop/20240301_FEM_Models

Material: New data models to support elasticity
This commit is contained in:
Chris Hennes
2024-03-11 12:11:05 -05:00
committed by GitHub
38 changed files with 1055 additions and 41 deletions

View File

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

View File

@@ -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 @@ public:
{
return _name;
}
const QString getDisplayName() const;
const QString getPropertyType() const
{
return _propertyType;
@@ -96,6 +98,10 @@ public:
{
_name = name;
}
void setColumnHeader(const QString& header)
{
_displayName = header;
}
virtual void setPropertyType(const QString& type)
{
_propertyType = type;
@@ -139,6 +145,7 @@ public:
private:
QString _name;
QString _displayName;
QString _propertyType;
QString _units;
QString _url;

View File

@@ -254,6 +254,7 @@ void ModelLoader::addToTree(std::shared_ptr<ModelEntry> 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<ModelEntry> 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<ModelEntry> 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,

View File

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

View File

@@ -62,6 +62,7 @@ Array2D::Array2D(const QString& propertyName,
if (_property) {
_value =
std::static_pointer_cast<Materials::Material2DArray>(_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();

View File

@@ -68,7 +68,6 @@ private:
QAction _deleteAction;
void setHeaders(QStandardItemModel* model);
void setColumnWidths(QTableView* table);
void setColumnDelegates(QTableView* table);
void setupArray();

View File

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

View File

@@ -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<std::shared_ptr<Materials::Material>>();
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<std::shared_ptr<Materials::Material>>();
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<std::shared_ptr<Materials::Material>>();
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) {

View File

@@ -963,7 +963,9 @@ void MaterialsEditor::updateMaterialAppearance()
QList<QStandardItem*> 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<Materials::ModelProperty>(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);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,60 @@
---
# ***************************************************************************
# * *
# * 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: '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

View File

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

View File

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

View File

@@ -0,0 +1,59 @@
---
# ***************************************************************************
# * *
# * 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: '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 CauchyGreen
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

View File

@@ -0,0 +1,54 @@
---
# ***************************************************************************
# * *
# * 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: '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

View File

@@ -0,0 +1,61 @@
---
# ***************************************************************************
# * *
# * 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: '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 stressstrain 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

View File

@@ -0,0 +1,78 @@
---
# ***************************************************************************
# * *
# * 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: '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 stressstrain 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

View File

@@ -0,0 +1,95 @@
---
# ***************************************************************************
# * *
# * 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: '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 stressstrain 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

View File

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

View File

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

View File

@@ -0,0 +1,58 @@
---
# ***************************************************************************
# * *
# * 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: '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

View File

@@ -0,0 +1,78 @@
---
# ***************************************************************************
# * *
# * 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: '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

View File

@@ -0,0 +1,103 @@
---
# ***************************************************************************
# * *
# * 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: '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

View File

@@ -0,0 +1,53 @@
---
# ***************************************************************************
# * *
# * 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: '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

View File

@@ -0,0 +1,63 @@
---
# ***************************************************************************
# * *
# * 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: '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

View File

@@ -0,0 +1,73 @@
---
# ***************************************************************************
# * *
# * 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: '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

View File

@@ -0,0 +1,73 @@
---
# ***************************************************************************
# * *
# * 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: '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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -49,17 +49,20 @@ protected:
{
// 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 @@ protected:
// 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(""),

View File

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