FreeCAD-Doc/localwiki/Units-es.html
2018-07-19 18:47:02 -05:00

368 lines
28 KiB
HTML

<html><head><title>Units/es</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link type='text/css' href='wiki.css' rel='stylesheet'></head><body><h1>Units/es</h1></div>
<div id="mw-content-text" lang="es" dir="ltr" class="mw-content-ltr"><hr/><div class="mw-parser-output"><p>Aquí hay algunos enlaces con información sobre unidades:
</p>
<ul><li><a rel="nofollow" class="external text" href="http://es.wikipedia.org/wiki/Sistema_Internacional_de_Unidades">Sistema Internacional de Unidades SI</a></li>
<li><a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Imperial_units">Sistema Británico</a></li>
<li><a rel="nofollow" class="external text" href="http://es.wikipedia.org/wiki/Unidades_derivadas_del_Sistema_Internacional">Unidades derivadas del Sistema Internacional</a></li>
<li><a rel="nofollow" class="external text" href="http://es.wikipedia.org/wiki/Grado_sexagesimal">Unidades angulares</a></li></ul>
<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Ejemplos"><span class="tocnumber">1</span> <span class="toctext">Ejemplos</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#Unidades_soportadas"><span class="tocnumber">2</span> <span class="toctext">Unidades soportadas</span></a></li>
<li class="toclevel-1 tocsection-3"><a href="#Prop.C3.B3sito_y_principios:_Propuesta_de_una_extensi.C3.B3n_del_sistema_de_gesti.C3.B3n_de_unidades"><span class="tocnumber">3</span> <span class="toctext">Propósito y principios: Propuesta de una extensión del sistema de gestión de unidades</span></a></li>
<li class="toclevel-1 tocsection-4"><a href="#Resultado"><span class="tocnumber">4</span> <span class="toctext">Resultado</span></a></li>
<li class="toclevel-1 tocsection-5"><a href="#Tormenta_de_ideas"><span class="tocnumber">5</span> <span class="toctext">Tormenta de ideas</span></a>
<ul>
<li class="toclevel-2 tocsection-6"><a href="#Contexto_1:_Apertura_de_un_archivo_de_datos"><span class="tocnumber">5.1</span> <span class="toctext">Contexto 1: Apertura de un archivo de datos</span></a></li>
<li class="toclevel-2 tocsection-7"><a href="#Contexto_2:_Cambiando_el_sistema_de_unidades_durante_la_ejecuci.C3.B3n"><span class="tocnumber">5.2</span> <span class="toctext">Contexto 2: Cambiando el sistema de unidades durante la ejecución</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-8"><a href="#Organizaci.C3.B3n"><span class="tocnumber">6</span> <span class="toctext">Organización</span></a>
<ul>
<li class="toclevel-2 tocsection-9"><a href="#Escalado_l.C3.B3gico_de_unidades"><span class="tocnumber">6.1</span> <span class="toctext">Escalado lógico de unidades</span></a>
<ul>
<li class="toclevel-3 tocsection-10"><a href="#Coherencia_de_unidades_a_trav.C3.A9s_de_la_ejecuci.C3.B3n_de_FreeCAD"><span class="tocnumber">6.1.1</span> <span class="toctext">Coherencia de unidades a través de la ejecución de FreeCAD</span></a></li>
<li class="toclevel-3 tocsection-11"><a href="#Sistema_de_unidades"><span class="tocnumber">6.1.2</span> <span class="toctext">Sistema de unidades</span></a></li>
<li class="toclevel-3 tocsection-12"><a href="#Unidades_base_y_derivadas"><span class="tocnumber">6.1.3</span> <span class="toctext">Unidades base y derivadas</span></a></li>
<li class="toclevel-3 tocsection-13"><a href="#S.C3.ADmbolos_de_unidades_base_y_derivadas"><span class="tocnumber">6.1.4</span> <span class="toctext">Símbolos de unidades base y derivadas</span></a></li>
</ul>
</li>
<li class="toclevel-2 tocsection-14"><a href="#Modelo_de_datos"><span class="tocnumber">6.2</span> <span class="toctext">Modelo de datos</span></a>
<ul>
<li class="toclevel-3 tocsection-15"><a href="#Unidad"><span class="tocnumber">6.2.1</span> <span class="toctext">Unidad</span></a>
<ul>
<li class="toclevel-4 tocsection-16"><a href="#Dimension"><span class="tocnumber">6.2.1.1</span> <span class="toctext">Dimension</span></a></li>
<li class="toclevel-4 tocsection-17"><a href="#Signature"><span class="tocnumber">6.2.1.2</span> <span class="toctext">Signature</span></a></li>
<li class="toclevel-4 tocsection-18"><a href="#Symbols"><span class="tocnumber">6.2.1.3</span> <span class="toctext">Symbols</span></a></li>
</ul>
</li>
<li class="toclevel-3 tocsection-19"><a href="#Unit_dictionary"><span class="tocnumber">6.2.2</span> <span class="toctext">Unit dictionary</span></a>
<ul>
<li class="toclevel-4 tocsection-20"><a href="#Units"><span class="tocnumber">6.2.2.1</span> <span class="toctext">Units</span></a></li>
</ul>
</li>
<li class="toclevel-3 tocsection-21"><a href="#Unit_system"><span class="tocnumber">6.2.3</span> <span class="toctext">Unit system</span></a>
<ul>
<li class="toclevel-4 tocsection-22"><a href="#Name"><span class="tocnumber">6.2.3.1</span> <span class="toctext">Name</span></a></li>
<li class="toclevel-4 tocsection-23"><a href="#Magnitudes"><span class="tocnumber">6.2.3.2</span> <span class="toctext">Magnitudes</span></a></li>
</ul>
</li>
<li class="toclevel-3 tocsection-24"><a href="#Unit_management_API"><span class="tocnumber">6.2.4</span> <span class="toctext">Unit management API</span></a>
<ul>
<li class="toclevel-4 tocsection-25"><a href="#Checking_the_unit_dictionary"><span class="tocnumber">6.2.4.1</span> <span class="toctext">Checking the unit dictionary</span></a>
<ul>
<li class="toclevel-5 tocsection-26"><a href="#isValid"><span class="tocnumber">6.2.4.1.1</span> <span class="toctext">isValid</span></a></li>
<li class="toclevel-5 tocsection-27"><a href="#isCompatibleWithThisSignature"><span class="tocnumber">6.2.4.1.2</span> <span class="toctext">isCompatibleWithThisSignature</span></a></li>
</ul>
</li>
<li class="toclevel-4 tocsection-28"><a href="#Scaling_units"><span class="tocnumber">6.2.4.2</span> <span class="toctext">Scaling units</span></a>
<ul>
<li class="toclevel-5 tocsection-29"><a href="#scaleUnitFromSymbolToSymbol"><span class="tocnumber">6.2.4.2.1</span> <span class="toctext">scaleUnitFromSymbolToSymbol</span></a></li>
<li class="toclevel-5 tocsection-30"><a href="#scaleUnitFromSymbolToUnitSystem"><span class="tocnumber">6.2.4.2.2</span> <span class="toctext">scaleUnitFromSymbolToUnitSystem</span></a></li>
<li class="toclevel-5 tocsection-31"><a href="#scaleUnitFromUnitSystemToSymbol"><span class="tocnumber">6.2.4.2.3</span> <span class="toctext">scaleUnitFromUnitSystemToSymbol</span></a></li>
</ul>
</li>
</ul>
</li>
<li class="toclevel-3 tocsection-32"><a href="#Motivations_for_such_a_management:_example_of_application"><span class="tocnumber">6.2.5</span> <span class="toctext">Motivations for such a management: example of application</span></a></li>
</ul>
</li>
</ul>
</li>
<li class="toclevel-1 tocsection-33"><a href="#Next_actions"><span class="tocnumber">7</span> <span class="toctext">Next actions</span></a></li>
</ul>
</div>
<h2><span class="mw-headline" id="Ejemplos">Ejemplos</span></h2>
<pre> # -- some examples of the FreeCAD unit translation system --
# make a shortcut for the examples
FreeCAD.Units.parseQuantity
# 10 meters in internal numbers
tu('10 m')
# doing math
tu('3/8 in')
# combined stuff
tu('100 km/h')
# transfer to other units
tu('100 km/h')/tu('m/s')
# derived units (Ohm)
tu('m^2*kg*s^-3*A^-2')
# or
tu('(m^2*kg)/(A^2*s^3)')
# angles
tu('2*pi rad') # full circle
# as gon
tu('2*pi rad') / tu('gon')
# more imperial
tu('1ft+(3+7/16)in')
# or
tu('1\'(3+7/16)"') # the ' we have to escape because of python
# trigonometry
tu('sin(pi)')
# Using translated units as parameters, this command will create a 50.8mm x 20mm x 10mm box
b = Part.makeBox(tu('2in'),tu('2m')/100,10)
</pre>
<h2><span class="mw-headline" id="Unidades_soportadas">Unidades soportadas</span></h2>
<p>Aquí están las unidades definidas en FreeCAD hasta el momento. Es sencillo añadir una nueva unidad definida por el usuario. La definición está <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Base/UnitsApi.l?view=markup">Aquí</a>.
</p><p>Métricas de longitud
</p>
<pre>"mm" 1.0; // millimeter (internal standard length)
"m" 1000.0; // meter
"cm" 10.0; // centimeter
"dm" 100.0; // decimeter
"km" 1000000.0; // kilometer
</pre>
<p>Británicas de longitud
</p>
<pre>"in" "\"" 25.4; // inch
"ft" "'" 304.8; // foot
"th" 0.0254; // thou
"yr" 914.4; // yard
</pre>
<p>Métricas de masa
</p>
<pre>"kg" 1.0; // kilogram (internal standard mass)
"g" 0.001; // gram
"mg" 0.000001; // milligram
"t" 1000.0; // ton
</pre>
<p>Británicas de masa
</p>
<pre>"lb" 0.45359237; // pound
"oz" 0.45359237; // ounce
"st" 6.35029318; // Stone
"cwt" 50.80234544;// hundredweights
</pre>
<p>Angulares
</p>
<pre>"deg" 1.0; // degree (internal standard angle)
"rad" 180/M_PI; // radian
"gon" 360.0/400.0;// gon
</pre>
<p>Tiempo
</p>
<pre>"s" 1.0; // second (internal standard time)
"min" 60.0; // minute
"h" 3600.0; // hour
</pre>
<p>El resto del SI
</p>
<pre>"A" 1.0; // Ampere (internal standard electric current)
"K" 1.0; // Kelvin (internal standard thermodynamic temperature)
"cd" 1.0; // Candela (internal standard luminous intensity)
"mol" 1.0; // Mole (internal standard amount of substance)
</pre>
<p>Métricas de volumen
</p>
<pre>"µl" 1.0; // microliter mm^3(derived standard volume)
"ml" 1000.0; // milliliter cm^3
"l" 1000000.0; // Liter dm^3
</pre>
<h2><span class="mw-headline" id="Prop.C3.B3sito_y_principios:_Propuesta_de_una_extensi.C3.B3n_del_sistema_de_gesti.C3.B3n_de_unidades">Propósito y principios: Propuesta de una extensión del sistema de gestión de unidades</span></h2>
<p>En las próximas secciones se propone un sistema de gestión de unidades, desarrollando el concepto de <i>sistema de unidades</i>, activado durante la ejecución de FreeCAD.
El interés de definir tal concepto es trabajar de forma más sencilla con diversos tipos de unidades <b>físicas</b> (incluso creadas por el usuario), sin incrementar la complejidad de la gestión de unidades para el usuario, o para los desarrolladores de FreeCAD.
</p><p>En resumen, los eventos de escalado de unidades están localizados de forma precisa, y llevados de un modo genérico.
</p><p>Lograr tal flexibilidad se requiere principalmente cuando se empieza a trabajar con propiedades de materiales que pueden tener unidades muy diferentes, dificiles de manejar una a una manualmente.
</p><p>El razonamiento propuesto permite manejar las unidades como se describe en la <a rel="nofollow" class="external text" href="http://physics.nist.gov/cuu/pdf/sp811.pdf">Guía para el uso de las unidades del Sistema Internacional (SI)</a> y en el <a rel="nofollow" class="external text" href="http://physics.nist.gov/Pubs/SP330/sp330.pdf">Sistema internacional de unidades (SI)</a> ambos de NIST.
</p><p>En esta propuesta, se requiere en la sección <a href="/wiki/Units/es#Tormenta_de_ideas" title="Units/es">Tormenta de ideas</a> un primer recordatorio de los posibles contextos en los que se podría utilizar la gestión de unidades.
</p><p>En la sección <a href="/wiki/Units/es#Organizaci.C3.B3n" title="Units/es">Organización</a>, presentamos el modelo de datos retenido para lograr la gestión de unidades, basado en 3 objetos, la <i>unidad</i>, el <i>diccionario de unidades</i>, y el <i>sistema de unidades</i>.
Finalmente, también se presenta una breve API de un cuarto objeto denominado <i>gestor de unidades</i>.
</p>
<h2><span class="mw-headline" id="Resultado">Resultado</span></h2>
<p>Gracias a esta extensión, una de las intenciones es hacer más sencillo el escalado de unidades que puede suceder entre diferentes tareas. Por ejemplo, los dibujos técnicos se pueden realizar en el sistema de unidades estándar, mientras que el modelado para elementos finitos se puede gestionar en un sistema de unidades que se ajuste mejor a él.
</p><p>El intercambio de datos entre estos dos tipos de actividades se hace más sencilla con esta extensión.
</p>
<h2><span class="mw-headline" id="Tormenta_de_ideas">Tormenta de ideas</span></h2>
<p>En esta sección se destacan los contextos del uso del sistema de gestión de unidades.
Desde estops contextos, podemos definir sus especificaciones técnicas.
</p><p>Esencialmente se dan 2 contextos como ejemplo.
</p>
<h3><span class="mw-headline" id="Contexto_1:_Apertura_de_un_archivo_de_datos">Contexto 1: Apertura de un archivo de datos</span></h3>
<p>Este es posiblemente el caso más frecuente.
Recibes un archivo que contiene por ejemplo un modelo geométrico, o describiendo un material con bastantes propiedades. El modelo geométrico se expresa en metros, o las propiedades del material de acuerdo al sistema internacional de unidades.
</p><p>Que mal..
</p><p>Esperabas un modelado para cálculo por elementos finitos, y trabajas en milimetros para la longitud y MegaPascales para la tensión, toneladas para la masa...
</p><p>En este contexto, la gestión de unidades se requiere para escalar los datos de un sistema de unidades inicial definido en el archivo de entrada a un sistema de unidades objetivo definido por el usuario.
</p>
<h3><span class="mw-headline" id="Contexto_2:_Cambiando_el_sistema_de_unidades_durante_la_ejecuci.C3.B3n">Contexto 2: Cambiando el sistema de unidades durante la ejecución</span></h3>
<p>En este caso, puedes ser al mismo tiempo el que realiza el dibujo, y el que maneja el modelo para cálculo por elementos finitos. De modo similar al caso anterior, el sistema de unidades para estas dos tareas no es la misma, y necesitas cambiar el sistema de unidades inicial a tu preferido en tiempo de ejecución.
</p>
<h2><span class="mw-headline" id="Organizaci.C3.B3n">Organización</span></h2>
<h3><span class="mw-headline" id="Escalado_l.C3.B3gico_de_unidades">Escalado lógico de unidades</span></h3>
<p>En la sección <a href="/wiki/Units/es#Tormenta_de_ideas" title="Units/es">Tormenta de ideas</a> se han presentado 2 contextos de utilización del escalado de unidades.
Algunos aspectos deberían destacarse de estos dos contextos.
</p>
<h4><span class="mw-headline" id="Coherencia_de_unidades_a_trav.C3.A9s_de_la_ejecuci.C3.B3n_de_FreeCAD">Coherencia de unidades a través de la ejecución de FreeCAD</span></h4>
<p>El sistema propuesto está basado en una suposición fundamental: el usuario está trabajando en un sistema de unidades coherente.
Por ejemplo, esto significa que si el usuario expresa las longitudes en milímetros, necesariamente las áreas se expresarán en milímetros cuadrados, no metros cuadrados.
Esta es la <b>Hipótesis uno</b>.
</p>
<h4><span class="mw-headline" id="Sistema_de_unidades">Sistema de unidades</span></h4>
<p>Debido a la <i>hipótesis uno</i>, es posible y relevante definir un sistema de unidades.
Un sistema de unidades se aplica a:
</p>
<ul><li> Una ejecución de FreeCAD en la que estés trabajando</li>
<li> o se puede aplicar globalmente al contexto de un archivo de entrada</li></ul>
<p>De acuerdo con la <a rel="nofollow" class="external text" href="http://physics.nist.gov/cuu/pdf/sp811.pdf">Guía para el uso del Sistema Internacional de Unidades (SI)</a> de NIST, hay 7 unidades físicas base.
Seleccionamos expresar un sistema de unidades en términos de dichas 7 unidades base.
</p><p>Cuando se trabaja en una instancia de FreeCAD, el usuario de este modo tiene que definir primero el sistema de unidades de acuerdo al cual está trabajando antes de decidir cambiar a otro sistema de unidades, o antes de importar datos de un archivo de entrada.
</p><p>Este sistema de unidades se aplicará hasta que el usuario decida cambiarlo. Si lo hace, todos los datos con dimensiones serán escalados.
</p><p>Considerando la <i>hipótesis uno</i>, todos los datos que el usuario introduzca manualmente en FreeCAD se asumen que sean coherentes con el sistema de unidades escogido.
</p><p>El beneficio de trabajar con un <i>sistema de unidades</i> definido al nivel de la instancia de ejecución de FreeCAD, o a nivel del archivo de entrada de datos (en lugar de <i>unidades</i> que son definidas a nivel de datos) es que la gestión de unidades se simplifica considerablemente.
</p><p>Estos son algunos ejemplos de sistemas de unidades.
</p>
<ul><li> metro, kilogramo, segundo, amperio, Kelvin, mol, candela</li>
<li> milímetro, tonelada, milisegundo, amperio, Kelvin, mol, candela</li>
<li> milímetro, kilogramo, milisegundo, amperio, Kelvin, mol, candela</li>
<li>...</li></ul>
<h4><span class="mw-headline" id="Unidades_base_y_derivadas">Unidades base y derivadas</span></h4>
<p>Las unidades derivadas son creadas por combinación de las unidades base. Por ejemplo, una velocidad (m/s) combina la longitud y el tiempo. Una interesante imagen presentando la relación entre las unidades base y las derivadas se puede ver <a rel="nofollow" class="external text" href="http://physics.nist.gov/cuu/pdf/SIDiagramColorAnnot.pdf">aquí</a> también de NIST.
</p><p>Gracias a la definición del <i>sistema de unidades</i>, es posible para el usuario trabajar con cualquier tipo de unidades derivadas, sin necesidad de que los desarrolladores de FreeCAD lo tengan previsto por anticipado.
</p>
<h4><span class="mw-headline" id="S.C3.ADmbolos_de_unidades_base_y_derivadas">Símbolos de unidades base y derivadas</span></h4>
<p>De acuerdo al <a rel="nofollow" class="external text" href="http://physics.nist.gov/Pubs/SP330/sp330.pdf">Sistema internacional de unidades (SI)</a>, los símbolos para especificar una unidad están aprobados oficialmente. Dos consecuencias se pueden destacar de esto.
</p>
<ul><li> No es sencillo para un programa informático trabajar con símbolos de unidades porque por ejemplo algunos utilizan letras griegas. De ahí que puedan ser algo difíciles de procesar por un programa</li>
<li> Mientras que algunas unidades y sus símbolos se pueden utilizar ampliamente, pueden no estar aprobados oficialmente, como por ejemplo la unidad <i>tonelada</i> (mira la página 32 del <a rel="nofollow" class="external text" href="http://physics.nist.gov/Pubs/SP330/sp330.pdf">Sistema Internacional de unidades (SI)</a>)</li></ul>
<p>Para superar estas limitaciones y permanecer flexible, el sistema propuesto está a favor del uso de unidades de magnitud en lugar de símbolos de unidades, el cual se mantiene no obstante por razones de ergonomía.
</p>
<h3><span class="mw-headline" id="Modelo_de_datos">Modelo de datos</span></h3>
<p>Los tres objetos principales del sistema de gestión de unidades se han presentado, denominándose <i>unidad</i>, <i>diccionario de unidades</i> y <i>sistema de unidades</i>.
</p>
<h4><span class="mw-headline" id="Unidad">Unidad</span></h4>
<p>As a foreword, it is important to highlight that a <i>unit</i> object in itself only indicates a <b>dimension</b> like length, mass, time... It doesn't specify a <b>magnitude</b> like meter, millimeter, kilometer... This last information is specified through the unit system.
</p>
<h5><span class="mw-headline" id="Dimension">Dimension</span></h5>
<p>Compulsory string indicating the <i>dimension</i> of the unit. The <i>dimension</i> of the 7 base units are indicated below (from <a rel="nofollow" class="external text" href="http://physics.nist.gov/cuu/pdf/sp811.pdf">Guide for the Use of the International System of Units (SI)</a>).
</p>
<ul><li> LENGTH</li>
<li> MASS</li>
<li> TIME</li>
<li> ELECTRIC CURRENT</li>
<li> THERMODYNAMIC TEMPERATURE</li>
<li> AMOUNT OF SUBSTANCE</li>
<li> LUMINOUS INTENSITY</li></ul>
<p><i>Dimension</i> attribute allows identifying the unit.
Two units cannot share the same <i>dimension</i>.
</p>
<h5><span class="mw-headline" id="Signature">Signature</span></h5>
<p>Compulsory integer array of size 7 (number of base units) that defines what the unit is.
The signature of the 7 base units are:
</p>
<ul><li> LENGTH: [1,0,0,0,0,0,0]</li>
<li> MASS: [0,1,0,0,0,0,0]</li>
<li> TIME: [0,0,1,0,0,0,0]</li>
<li> ELECTRIC CURRENT: [0,0,0,1,0,0,0]</li>
<li> THERMODYNAMIC TEMPERATURE: [0,0,0,0,1,0,0]</li>
<li> AMOUNT OF SUBSTANCE: [0,0,0,0,0,1,0]</li>
<li> LUMINOUS INTENSITY: [0,0,0,0,0,0,1]</li></ul>
<p>From these 7 units, we are then able to express all derived units defined in <a rel="nofollow" class="external text" href="http://physics.nist.gov/cuu/pdf/sp811.pdf">Guide for the Use of the International System of Units (SI)</a> and create new ones as needed such as for instance:
</p>
<ul><li> MASS DENSITY: [-3,1,0,0,0,0,0]</li>
<li> AREA: [0,2,0,0,0,0,0]</li></ul>
<p><i>Signature</i> is the attribute thanks to which unit scaling can be achieved in a generic way.
</p>
<h5><span class="mw-headline" id="Symbols">Symbols</span></h5>
<p>Array of [real, string] (meaning [<i>magnitude</i>, <i>symbol</i>]) that lists all <i>symbols</i> known by FreeCAD.
Thanks to this array, the unit scaling API becomes more ergonomic because <i>symbols</i> and related <i>magnitudes</i> are linked.
</p><p>This array can be extended as required.
</p><p>For instance, the list of <i>symbols</i> of the LENGTH unit, and their related <i>magnitudes</i> is:
</p>
<pre>[1e+12,"Tm"],[1e+09,"Gm"],[1e+06,"Mm"],
[1e+03,"km"],[1e+02,"hm"],[1e+01,"dam"],
[1e+00,"m"],[1e-01,"dm"],[1e-02,"cm"],
[1e-03,"mm"],[1e-06,"µm"],[1e-09,"nm"],
[1e-12,"pm"],[1e-15,"fm"]
</pre>
<p>Standard <i>symbols</i> can be found on <a rel="nofollow" class="external text" href="http://physics.nist.gov/cuu/Units/units.html">NIST website</a> and p23 to 26 and p32 (<i>metric ton</i> or <i>tonne</i>) of <a rel="nofollow" class="external text" href="http://physics.nist.gov/Pubs/SP330/sp330.pdf">The International System of Units (SI)</a>.
</p>
<h4><span class="mw-headline" id="Unit_dictionary">Unit dictionary</span></h4>
<p>All the units available in FreeCAD, and new ones created by the user, should be stored in <i>unit dictionary</i>, which is an XML file (FreeCAD configuration file), so as to be retrieved when needed, i.e. when achieving unit scaling.
</p>
<h5><span class="mw-headline" id="Units">Units</span></h5>
<p>Array of units, contained in the <i>unit dictionary</i>.
</p>
<h4><span class="mw-headline" id="Unit_system">Unit system</span></h4>
<p>A <i>unit system</i> is the object that allows the user defining the current unit <i>magnitude</i> of each base units with which she/he is working.
For instance, knowing that the user is working with millimeter, tonne, and second, thanks to the use of a unit system, FreeCAD can know that energy is expressed in terms of milliJoule, force in terms of Newton, and stress in terms of MegaPascal.
Hence a unit system is only defined by a <i>name</i> (for instance <i>Standard unit system</i>) and a <i>magnitude table</i> specifying for each of the 7 base units, what is its corresponding <i>magnitude</i>.
</p>
<h5><span class="mw-headline" id="Name">Name</span></h5>
<p>String allowing to the user identifying what is the unit system.
</p>
<h5><span class="mw-headline" id="Magnitudes">Magnitudes</span></h5>
<p>By specifying the magnitude of the 7 base units, a unit system is defined.
</p><p>For instance [1e-03, 1e+03, 1, 1, 1, 1, 1], meaning millimeter, tonne, second, ampere, Kelvin, mole, candela
</p>
<h4><span class="mw-headline" id="Unit_management_API">Unit management API</span></h4>
<p>Only the logic of some methods is presented, in order to highlight some features.
These methods could belong to an object called <i>Unit manager</i>.
</p>
<h5><span class="mw-headline" id="Checking_the_unit_dictionary">Checking the unit dictionary</span></h5>
<h6><span class="mw-headline" id="isValid">isValid</span></h6>
<p>The unit dictionary can be an XML file (FreeCAD configuration file). It contains a list of defined units.
Such a dictionary is required for the proposed unit management system to work.
</p><p>It must fulfills some conditions that should be checked before activating the unit management system.
These conditions are:
</p>
<ul><li> check that all base units are defined</li>
<li> check that a <i>dimension</i> is not defined twice through the units</li>
<li> check that a <i>symbol</i> is not defined twice in all the existing symbols</li>
<li> check that the <i>signatures</i> of all units have all the same size</li>
<li> chacke that a <i>standard symbol</i> (for which <i>magnitude</i> is 1) is defined for all units</li></ul>
<h6><span class="mw-headline" id="isCompatibleWithThisSignature">isCompatibleWithThisSignature</span></h6>
<p>A unit dictionary defines a set of units and their known magnitudes.
When managing a unit, it is relevant to check that its signature is compatible with the set of units registered in the unit dictionary, so as to process it.
This check includes:
</p>
<ul><li> check that the input <i>signature</i> length is of the same size than the unit dictionary unit <i>signatures</i></li></ul>
<h5><span class="mw-headline" id="Scaling_units">Scaling units</span></h5>
<h6><span class="mw-headline" id="scaleUnitFromSymbolToSymbol">scaleUnitFromSymbolToSymbol</span></h6>
<p>Knowing a value, an initial unit by its symbol, the target unit by its symbol, scale the value.
</p>
<h6><span class="mw-headline" id="scaleUnitFromSymbolToUnitSystem">scaleUnitFromSymbolToUnitSystem</span></h6>
<p>Knowing a value, an initial unit by its symbol, the target unit system, scale the value.
</p>
<h6><span class="mw-headline" id="scaleUnitFromUnitSystemToSymbol">scaleUnitFromUnitSystemToSymbol</span></h6>
<p>Knowing a value, an initial unit system, the target unit by its symbol, scale the value.
</p>
<h4><span class="mw-headline" id="Motivations_for_such_a_management:_example_of_application">Motivations for such a management: example of application</span></h4>
<p>Let's assume that we are going to setup a finite element model.
To build our model, we need the mesh, material properties, and to define numerical parameters.
Considering that they can be tens of material properties to manage, expressed with different units, sometimes not always very common, it is interesting for the user to only have to specify a global unit system, without caring much.
</p><p>FreeCAD would then just do the job.
</p><p>As FreeCAD developpers and FreeCAD users do not necessarily know all units that can be defined in the material property files, it is interesting to rely on a generic system.
</p><p>Let's assume that in such a file we have a fair number of exotic material properties expressed with exotic units, and that we want to work in a specific unit system.
</p><p>It is easy with the proposed extension to scale any of these properties by knowing their signatures, magnitudes, and the target unit system.
</p><p>For each of the properties, the scaling is obtained by multiplying the initial property value with the factor &lt;math&gt;\frac{initialMagnitude}{targetMagnitude}&lt;/math&gt;.
</p><p>The <i>targetMagnitude</i> is then simply obtained with the operation &lt;math&gt;\prod_{bu} targetMagnitude_{bu}^{signature_{bu}}&lt;/math&gt;, <i>bu</i> standing for <i>base unit</i>.
</p><p>It becomes thus very easy to manage any number of properties with any kind of units with very few lines of Python.
</p>
<h2><span class="mw-headline" id="Next_actions">Next actions</span></h2>
<ul><li> Implementing Quantity and Unit classes (mostly done)</li>
<li> Implementing InputField as User front end (in progress)</li>
<li> UnitsCalculator as test bed (in progress)</li>
<li> <a href="Quantity.html" title="Quantity">Quantity</a> documentation (in progress)</li>
<li> UnitsCalculator documentation </li>
<li> Update Material framework to work only with Quantities</li>
<li> Test Cases</li></ul>
<div style="clear:both"></div>
</div>
</div>
</div><div class="printfooter">
Online version: "<a dir="ltr" href="https://www.freecadweb.org/wiki/index.php?title=Units/es&amp;oldid=126763">http://www.freecadweb.org/wiki/index.php?title=Units/es&amp;oldid=126763</a>"</div>
<div id="catlinks" class="catlinks" data-mw="interface"></div><div class="visualClear"></div>
</div>
</div>
<div id="mw-navigation">
<h2>Navigation menu</h2>
</body></html>