Le unità di misura

From FreeCAD Documentation
Revision as of 19:59, 2 August 2012 by Renatorivo (talk | contribs) (Units/it)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
traduzione provvisoria (renatorivo).

Unità

Qui ci sono alcune letture sulle unità:

_

_

Esempi

# -- alcuni esempi del sistema di traduzione di unità di FreeCAD --
# creare un collegamento per gli esempi
tu = App.Units.translateUnit

# 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('1fo+(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)

Unità di misura supportate

Queste sono le unità finora definite in FreeCAD. E' facile aggiungere una nuova unità definita dall'utente. La definizione è qui 1.

Lunghezza metrica

"mm"    1.0;        // millimetro       (lunghezza standard interna)
"m"     1000.0;     // metro
"cm"    10.0;       // centimetro
"dm"    100.0;      // decimetro
"km"    1000000.0;  // kilometro

Lunghezza Imperiale

"in" "\""  25.4;       // inch
"fo" "'"   304.8;      // foot
"th"       0.0254;     // thou
"yr"       914.4;      // yard

Massa metrica

"kg"    1.0;        // kilogrammo       (massa standard interna)
"g"     0.001;      // grammo
"mg"    0.000001;   // milligrammo
"t"     1000.0;     // tonnellata 

Massa Imperiale

"lb"    0.45359237; // pound
"oz"    0.45359237; // ounce
"st"    6.35029318; // Stone
"cwt"   50.80234544;// hundredweights

Angolo

"deg"   1.0;        // gradi         (angolo standard interno)
"rad"   180/M_PI;   // radianti         
"gon"   360.0/400.0;// gon         

Tempo

"s"     1.0;        // secondo         (tempo standard interno)
"min"   60.0;       // minuto
"h"     3600.0;     // ora  

Altro del SI

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

Volume metrico

"yl"    1.0;        // microliter mm^3(derived  standard volume)
"ml"    1000.0;     // milliliter cm^3    
"l"     1000000.0;  // Liter      dm^3

Finalità e principi: proposta di una estensione del sistema di gestione delle unità

Nelle sezioni seguenti, sviluppando il concetto di sistema di unità, si propone un sistema di gestione delle unità di misura attivato nel corso dell'esecuzione di una istanza di FreeCAD. L'interesse per definire tale nuovo concetto è quello di lavorare più facilmente con tanti tipi di unità fisiche, quante si vuole (anche con quelle create dall'utente), senza aumentare la complessità di gestione delle unità né per l'utente, né per gli sviluppatori di FreeCAD.

In breve, gli eventi di scalatura delle unità sono localizzati con precisione, e realizzati in modo globale.

Il raggiungimento di tale flessibilità è particolarmente necessario quando si passa a lavorare con le proprietà dei materiali che possono avere unità molto diverse e quindi difficili da gestire manualmente una ad una.

Il ragionamento proposto permette di gestire le unità come descritto nella Guida per l'uso del Sistema Internazionale delle unità di misura (SI) e nel Sistema internazionale delle unità di misura (SI), entrambi documenti del NIST.

In questa proposta, la prima analisi nella sezione Riflessioni riguarda i possibili contesti per i quali è utile la gestione delle unità.

Nella sezione Organizzazione è presentato il modello di dati prescelto per realizzare la gestione delle unità, sulla base di 3 oggetti, la unità, il dizionario delle unità, e il sistema delle unità. Infine, è anche presentata una breve API di un quarto oggetto chiamato gestore delle unità.

Risultati

Grazie a questa estensione, si mira ad agevolare la scalatura della unità che può verificarsi tra i differenti settori di lavoro di una azienda. Ad esempio, i disegni tecnici possono essere realizzati nel sistema di unità standard, mentre la modellazione per elementi finiti può essere gestita in un sistema di unità più adatto per questo scopo.

Con questa estensione lo scambio di dati tra questi due tipi di attività diventa più facile.

Riflessioni

In questa sezione sono evidenziati i contesti (casi) di uso del sistema di gestione delle unità. Partendo da questi contesti, siamo poi in grado di definire le sue specificazioni tecniche.

Essenzialmente sono dati 2 contesti come esempio.

Contesto 1: apertura di un file di dati

Questo caso è probabilmente il caso più frequente. Si riceve un file contenente ad esempio un modello geometrico, o descrivente un materiale con un bel po' di proprietà. Il modello geometrico è espresso in metri, oppure le proprietà del materiale sono espresse secondo il sistema internazionale di unità di misura.

Peccato ...

Sei un esperto di modellazione di elementi finiti (FE modelling), e di solito lavori con i millimetri per la lunghezza, MegaPascal per la pressione, tonnellate per la massa ...

In questo contesto, la gestione delle unità è necessaria per scalare i dati da un sistema di unità iniziale definito nel file di input a un diverso sistema di unità definito dall'utente.

Contesto 2: commutare il sistema di unità in fase di esecuzione

In questo caso, si può essere allo stesso tempo, la persona che realizza un disegno, e anche chi gestirà la modellazione per elementi finiti. Analogamente al caso precedente, i sistemi di unità di misura per questi due lavori non sono gli stessi, ed è necessario cambiare il sistema di unità iniziale in quello preferito durante l'esecuzione.

Organizzazione

Logica di scalatura delle unità

Nella sezione Riflessioni sono stati presentati due contesti in merito a quando si utilizza la scalatura delle unità. Alcuni aspetti di questi due contesti devono essere evidenziati.

Coerenza di unità in tutta l'istanza in esecuzione in FreeCAD

Il sistema proposto si basa su un assunto primario: l'utente sta lavorando in un sistema di unità coerenti. Ad esempio, questo significa che, se l'utente esprime la lunghezza in millimetri, necessariamente le aree saranno espresse in termini di millimetri quadrati, non in metri quadrati. Questa è la Ipotesi numero uno.

Sistema di unità

In conseguenza della Ipotesi numero uno, è possibile e pertinente definire un sistema di unità. Un sistema di unità si applica a:

  • una istanza in esecuzione in FreeCAD in cui si sta lavorando
  • oppure si può anche applicare globalmente al contenuto di un file di input

Secondo la Guida per l'uso del Sistema Internazionale di unità di misura (SI) del NIST, ci sono 7 unità fisiche di base. Abbiamo scelto di formulare un sistema di unità in termini di questi 7 unità di base.

Quando si lavora all'interno di un'istanza di FreeCAD, l'utente deve quindi definire prima il sistema di unità in base con cui sta lavorando prima di decidere di passare a un altro sistema di unità, o prima di importare dati da un file di input.

Questo sistema di unità si applica fino a che l'utente non decide di cambiarlo. Se lo fà, tutti i dati con dimensioni vengono scalati.

Considerando l'Ipotesi numero uno, si presume che tutti i dati che l'utente inserirà manualmente in FreeCAD saranno coerenti con il sistema di unità prescelto.

Il vantaggio di lavorare con un sistema di unità definito a livello di un'istanza in esecuzione in FreeCAD, o a livello di file di dati (al posto delle singole unità che sono definite a livello di dati) consiste nella notevole semplificazione della gestione delle unità.

Ecco alcuni esempi di sistemi di unità.

  • metro, kilogrammo, secondo, ampere, Kelvin, mole, candela
  • millimetro, tonnellata, millisecondo, ampere, Kelvin, mole, candela
  • millimetro, kilogrammo, millisecondo, ampere, Kelvin, mole, candela
  • ...

Unità di base e derivate

Le Unità derivate sono create mediante la combinazione delle unità di base. Ad esempio, un'accelerazione (m/s2) unisce contemporaneamente la lunghezza e il tempo. Un quadro interessante che presenta le relazioni tra le unità base e le unità derivate si può vedere in questo documento, anche esso del NIST.

Grazie alla definizione del sistema di unità, per l'utente è possibile lavorare con qualsiasi tipo di unità derivata, senza la necessità che gli sviluppatori di FreeCAD le prevedano in anticipo.

Simboli delle unità base e delle derivate

Secondo il Sistema Internazionale delle unità di misura (SI), i simboli per specificare una unità sono ufficialmente approvati. Da questo possono essere evidenziate due conseguenze.

  • per un programma del computer non è facile lavorare con i simboli delle unità perché, per esempio, alcuni sono lettere greche. Quindi per un programma possono essere un po' difficili da elaborare
  • anche se alcune unità (e i suoi simboli) possono essere ampiamente (normalmente) utilizzate, esse possono non essere approvate ufficialmente, come ad esempio l'unità di tonnellata (si veda p32 del Sistema Internazionale di unità di misura (SI))

Per superare queste limitazioni e rimanere flessibili, il sistema proposto privilegia l'impiego di unità di grandezze (magnitudini) invece dei simboli di unità, che rimangono comunque disponibili per motivi di ergonomia.

Modello dei dati

I tre oggetti principali del sistema di gestione di unità di misura sono presentati, vale a dire l'unità, il dizionario delle unità e il sistema di unità.

Unità (unità di misura)

Come premessa, è importante sottolineare che un oggetto unità di per sé indica solo una dimensione (grandezza fisica) come lunghezza, massa, tempo ... Esso non specifica una grandezza (unità di misura) come metro, millimetro, chilometri ... Questa ultima informazione è specificata attraverso il sistema di unità.

Dimensione (Grandezza fisica)

Stringa obbligatoria che indica la dimensione (grandezza fisica) dell'unità. La dimensione delle 7 unità di base (le 7 grandezze fisiche di base) sono indicate di seguito (dalla Guide for the Use of the International System of Units (SI)) (Guida per l'uso del Sistema Internazionale di unità di misura).

  • LENGTH - LUNGHEZZA
  • MASS - MASSA
  • TIME - TEMPO
  • ELECTRIC CURRENT - CORRENTE ELETTRICA
  • THERMODYNAMIC TEMPERATURE - TEMPERATURA TERMODINAMICA
  • AMOUNT OF SUBSTANCE - QUANTITA' DI SOSTANZA
  • LUMINOUS INTENSITY - INTENSITA' LUMINOSA

L'attributo dimensione permette di identificare l'unità. Due unità non possono condividere la stessa dimensione.

Firma (Identificazione della grandezza fisica)

E' un gruppo di 7 cifre intere obbligatorie (numero delle unità di misura di base) che definisce di quale unità si tratta. La firma delle 7 unità di base sono:

  • LENGTH - LUNGHEZZA: [1,0,0,0,0,0,0]
  • MASS - MASSA: [0,1,0,0,0,0,0]
  • TIME - TEMPO: [0,0,1,0,0,0,0]
  • ELECTRIC CURRENT - CORRENTE ELETTRICA: [0,0,0,1,0,0,0]
  • THERMODYNAMIC TEMPERATURE - TEMPERATURA TERMODINAMICA: [0,0,0,0,1,0,0]
  • AMOUNT OF SUBSTANCE - QUANTITA' DI SOSTANZA: [0,0,0,0,0,1,0]
  • LUMINOUS INTENSITY - INTENSITA' LUMINOSA: [0,0,0,0,0,0,1]

Con queste 7 unità siamo poi in grado di esprimere tutte le unità di misura derivate definite nella Guida per l'uso del Sistema Internazionale di unità di misura (SI) e anche di crearne di nuove secondo le esigenze personali, quali ad esempio:

  • MASS DENSITY - DENSITA' : [-3,1,0,0,0,0,0]
  • AREA - AREA: [0,2,0,0,0,0,0]

La firma è l'attributo grazie al quale la scalatura delle unità può essere realizzata in modo generale.

Simboli

Insieme di [numero reale, stringa] (rappresentante [grandezza, simbolo]) che elenca tutti i simboli noti a FreeCAD. Grazie a questo insieme, l'API di scalatura delle unità diventa più ergonomica perché i simboli sono collegati alle grandezze correlate .

Questo insieme (array) può essere esteso quanto necessario.

Ad esempio, la lista dei simboli della unità di misura di lunghezza, e le loro relative grandezze è:

[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,"ym"],[1e-09,"nm"],
[1e-12,"pm"],[1e-15,"fm"]

I simboli standard possono essere trovati sul sito web del NIST e da pag. 26 a pag. 23 e a pag. 32 (tonnellata metrica o tonnellata) di The International System of Units (SI).

Dizionario delle unità

Tutte le unità di misura disponibili in FreeCAD e quelle nuove create dall'utente, devono essere conservate nel dizionario delle unità, che è un file XML (file di configurazione di FreeCAD), in modo da poter essere recuperate quando è necessario, ad esempio quando si realizza la scalatura delle unità.

Unità

Insieme delle unità, contenute nel dizionario delle unità.

Unit system

Un sistema di unità è l'oggetto che permette all'utente di definire la grandezza dell'unità corrente di ciascuna delle unità di base con cui si sta lavorando. Ad esempio, sapendo che l'utente sta lavorando con i millimetri, le tonnellate e i secondi, grazie all'utilizzo di un sistema di unità, FreeCAD può sapere che l'energia è espressa in termini di milliJoule, la forza in termini di Newton, e la pressione in termini di MegaPascal. Quindi un sistema di unità è definito solo da un nome (ad esempio Sistema di unità standard) e da una tabella di grandezza specifica per ciascuna delle unità di base 7, che è la sua grandezza corrispondente.

Nome

Stringa che permette all'utente di identificare il sistema di unità.

Grandezze

Specificando la grandezza delle 7 unità di base si definisce un sistema di unità.

Ad esempio [1e-03, 1e+03, 1, 1, 1, 1, 1], significa millimetri, tonnellata, secondo, ampere, Kelvin, mole, candela

API di gestione di unità

E' presentata solo la logica di alcuni metodi, per evidenziare alcune caratteristiche. Questi metodi potrebbero appartenere a un oggetto chiamato Gestore di unità.

Verifica del dizionario delle unità
isValid - Validità

Il dizionario delle unità può essere un file XML (file di configurazione di FreeCAD). Esso contiene la lista delle unità definite. Tale dizionario è necessario affinchè il sistema di gestione dell'unità proposto funzioni.

Deve soddisfare alcune condizioni che devono essere controllate prima di attivare il sistema di gestione dell'unità. Queste condizioni sono:

  • verificare che tutte le unità di base siano definite
  • verificare che una dimensione non sia definita due volte tramite le unità
  • verificare in tutti i simboli esistenti che un simbolo non sia definito due volte
  • verificare che le firme di tutte le unità abbiano tutte la stessa dimensione
  • verificare che per tutte le unità sia definito un simbolo standard (per cui la grandezza è 1)
isCompatibleWithThisSignature - Compatibilità

Un dizionario di unità definisce un insieme di unità e le loro grandezze note. Quando si gestisce una unità, è opportuno controllare che la sua firma sia compatibile con l'insieme di unità registrate nel dizionario di unità, in modo da elaborarla. Questo controllo comprende:

  • verificare che la lunghezza della firma da inserire sia della stessa dimensione delle firme del dizionario di unità
Scalare le unità
scaleUnitFromSymbolToSymbol

Conoscendo un valore, l'unità iniziale tramite il suo simbolo e l'unità di destinazione tramite il suo simbolo, scalare il valore.

scaleUnitFromSymbolToUnitSystem

Conoscendo un valore, l'unità iniziale tramite il suo simbolo e il sistema di unità di destinazione, scalare il valore.

scaleUnitFromUnitSystemToSymbol

Conoscendo un valore, un sistema di unità iniziale, l'unità di destinazione tramite il suo simbolo, scalare il valore.

Le motivazioni per una tale gestione: esempio di applicazione

Supponiamo di accingerci a creare un modello di elementi finiti. Per costruire il nostro modello, abbiamo bisogno della griglia (forma mesh), delle proprietà del materiale ed è necessario definire i parametri numerici. Considerando che possono esserci decine di proprietà dei materiali da gestire, espresse con diverse unità e a volte non sempre molto comuni, per l'utente è importante dover solo indicare un sistema globale di unità, senza altre preoccupazioni.

Poi FreeCAD farebbe lui il lavoro.

Per gli sviluppatori e gli utenti di FreeCAD non è necessario conoscere tutte le unità che possono essere definite nei file delle proprietà del materiale, è utile fare affidamento su un sistema generico.

Supponiamo che in un file abbiamo un buon numero di proprietà dei materiali esotiche espresse con unità esotiche, e che vogliamo lavorare in un sistema di unità specifico.

Con l'estensione proposta è facile scalare qualsiasi di queste proprietà conoscendo la loro firma, la grandezza e il sistema di unità di destinazione.

Per ciascuna delle proprietà, la scalatura si ottiene moltiplicando il valore iniziale della proprietà per il fattore .

La Grandezza finale viene ottenuta semplicemente con l'operazione , dove bu stà per unità di base.

Diventa così molto facile gestire un numero qualsiasi di unità con qualsiasi tipo di unità con poche linee di Python.

Prossime azioni

  • Riesamina da parte di altre persone
  • Verificare se l'attuale sistema di gestione della unità può essere esteso con questi nuovi concetti (grandezza, firma, tabella dei simboli, sistema di unità, dizionario delle unità ...)
  • Vedere con altre persone, se le limitazioni di questo sistema sono accettabili:
    • l'offseting dei valori non è supportato da questo sistema. L'unico caso dove vedo che può sorgere tale necessità è quando si passa da Kelvin a gradi Celsius. Penso che si deve permettere all'utente di farlo manualmente. Il fatto è che questa conversione può essere ingannevole: non è compatibile con il concetto di conversione globale, presentato qui (ambito 1 e ambito 2) perché quando si passa da Kelvin a gradi Celsius, i dati che esprimono una differenza di temperatura non dovrebbero essere convertiti (vedi sezione 8.5, pag. 24 della Guida per l'uso del Sistema Internazionale di unità di misura (SI) per ulteriori spiegazioni). Un'altra cosa è che io non so se una tale conversione è necessaria. Io non ne ho bisogno (NDT - Il testo citato prima non sconsiglia la conversione, ma dice semplicemente, come ovvio, che {Δt}ºC = {ΔT}K )
    • la valuta avrebbe potuto essere aggiunta come unità di base 8. Tuttavia, non vedo l'interesse a essere in grado di convertirla: non saremmo in grado di memorizzare le grandezze in un dizionario di unità: esse sono fluttuanti tutti i giorni! Inoltre, questa unità è inutile nella modellazione FE. Quindi propongo di aderire all'idea di gestire le unità fisiche. Attenzione, anche se questa unità non viene visualizzata nell'oggetto sistema di unità è comunque possibile convertirla. Essa può essere definita nel dizionario delle unità, con simboli e grandezze, e nella API, ci saranno metodi per lavorare con questa informazione. Semplicemente, quando si passa al livello globale del sistema di unità, i valori con una unità di valuta non saranno ridimensionati, e, se l'utente vuole farlo, dovrà scrivere una riga di Python da solo per scalare questi dati
    • è la stessa limitazione che si ha con i dati adimensionali, come gli angoli (che, quando misurati in radianti, combinano la lunghezza dell'arco con quella del raggio nel modo ) o gli angoli solidi, steradianti, (che combinano lunghezze nel modo ), vale a dire che non hanno nessuna unità. È possibile gestirli, ma quando si passa al sistema di unità, non saranno ridimensionati, semplicemente perché questo non è necessario: i loro valori non sono influenzati dal cambiamento del sistema di unità di base (NDT - su questo non sono della stessa opinione)
  • Se ok, implementare le unità o la descrizione del sistema di unità nei file di dati di FreeCAD (quelli contenenti i dati con le unità, come file per memorizzare geometrie e proprietà dei materiali)
  • Scrivere un dizionario di unità XML in FreeCAD
  • Implementare il concetto del sistema di unità che deve essere attivato quando si esegue un esempio di FreeCAD, prima di effettuare il ridimensionamento delle unità, oppure quando si importano dei dati da un file di geometria o da un file di proprietà di materiale
  • Implementare la scalatura di unità durante l'importazione di un file (di geometria o di proprietà dei materiali) (corrispondente al contesto 1)
  • Implementare "a richiesta" unità di scalatura quando l'utente sceglie di passare da un sistema di unità iniziale a un nuovo sistema (corrispondente al contesto 2)
Altre lingue: