Material

From FreeCAD Documentation
Revision as of 04:02, 2 February 2013 by Jrheinlaender (talk | contribs) (→‎Abstract: Improved spelling)

This page is about the material data system in FreeCAD.

Abstract

Since it is hard, or even impossible, to define a fixed or complete set of material properties, we go a more open way. Every object in FreeCAD which has to deal with material will have a Property named "Material", which is a key/value list that can hold an infinite number of material properties. Since this is a very open and extensible way to deal with such data, it also holds the danger of chaos. Therefore this page defines some rules and basic properties for dealing with such material-property-maps.

Rules

Every property set has only one mendatory entry which is "Name". This is the primary key of the material. The rest of the matrial properties are optional or can be retrived out of a material DB.

Property names (key) are ordered by strings separated by underscores. The first substring is named by the application or standard, the following can be used to further group the properties. The Values can also be grouped by underscores, e.g. to seperate different sorts of steel. Examples:

  • Name=Steel_Casted
  • SpecificWeight=7.85 (at 20° in kg/mm3)
  • EN10027_name = S235JR+AR (steel standard EN 10027-1)
  • FEM_YoungsModulus = xx ( in mm−1·kg·s−2
  • FEM_YoungsModulus_Z
  • FEM_YoungsModulus_X

Each property has a human readably description on this Material page, with links to further information (e.g. Wikipedia).

For each property a unit has to be defined, based on the FreeCAD internal unit mm-kg-s! That allows consistand usage and translation.

The key (name) and the value of the property uses only ASCII characters (7-bit). The keys are written in Camel-Case but interpreted case-insensitive.

The underscores allow later a tree view property editor/viewer which allow folding.

Material Database

Given that above standard is implemented, it would be stupid to store all the properties again and again to objects. Basically we can build up a Material DB with the Name as a primary key. So if you have no special needs for you material, you just define e.g. Name=Steel and FreeCAD can retrieve all properties from that DB. Every additional property you set in the map overrides the one from the DB.

In the future we can host that DB somwhere in the Web and build up a general OpenSource material DB.

At the moment I think of a compiled in mini dataset with a set of "basic" materials and its basic properties and a SQLite based full version.


Material.py

Since handling material-properties is a tedious work we should implement a Python front-end module calles Material.py. This will be the place to implement all kind of helper methods for material handling.

  • Calculation of Mass out of Volume and Desity
  • Translation in different unit systems
  • Calculation needed in special application (e.g. FEM)
  • and anything else we don't know yet :)

The module should be implemented that way it can run in FreeCAD or stand alone on the command line (material-property-map has be given as python map).


Basic material properties

Here now the description of agreed material-properties. Feel free to add a subsection for the material-properties of you field of expertise.

General

General material properties
property name Description Unit/Data-Type
Name Unique name of the property, following the rules described above ASCII string 7-bit
Label A user-friendly name for the material UTF-8 string
Description A placeholder for a longer description of the material UTF-8 string
SpecificWeight The specific weight (also known as the unit weight) is the weight per unit volume of a material. see: Specific_weight kg/mm^3

ToDos: add some properties with an ordering system for materials (metal, alloy, mineral, wood, ....)

Mechanical

Material properties used in mechanical engineering
property name Description Unit/Data-Type
YoungsModulus Young's modulus, also known as the tensile modulus or elastic modulus, is a measure of the stiffness of an elastic material and is a quantity used to characterize materials. See: Young's modulus mm^−1·kg·s^−2
EN-10027-1 In case of steel material the Steel grade as defined in the European standard No. 10027-1. string ASCII 7-bit

ToDos: further add properties needed for mechanical design.

Finite Element Method

ToDos: Build up collection of FEM material properties.

Computational Fluid Dynamics

ToDos: Build up collection of CFM material properties.

Architecture and BIM

Material properties used in architectural design
property name Description Unit/Data-Type
Family A generic family for this material, for example, a brick is a member of the ceramics family, or an inner wall is member of the walls family UTF-8 string
Vendor Specifies the brand/vendor of the material string UTF-8
ProductUrl An URL where to find more information about the material ASCII string 7-bit (or spacial type for URL?)
SpecificPrice The price per unit of this material. Since units can vary a lot (USD/m³, EUR/piece, etc...), best to keep it as a string for now string UTF-8
ThermalConductivity The thermal conductivity (lambda) coefficient that indicates the capacity to transfer heat of a material W/m²K