Idraulica
Questa libreria viene utilizzata per simulare il comportamento di un fuido all'interno di un circuito idraulico. Simulando i suoi componenti è possibile avere una risposta dinamica dei valori di pressione e portata volumetrica in ogni singola sezione d'interesse.
La pressione visualizzata è derfinita relativa con valore nullo equivalente alla pressione assoluta atmosferica di p_atm = 101300 Pa, quindi la pressione può assumere valori negativi da -101300 Pa (totale vuoto) in su.
Il fluido è composto da una miscela liquido-gas; il gas, a sua volta, è una composizione di aria e di vapore (componente volatile in equilibrio col liquido).
Il comportamento del fluido dipende dalla pressione p locale. Si distinguono i seguenti casi:
| Range | Descrizione |
|---|---|
p > p_sat |
nel fluido è presente solo liquido: tutta la componente gassosa è completamente disciolta |
p_sat > p > p_hvap |
nel fluido ci sono due fasi: aria e liquido; il vapore è assente. La soglia p_sat indica la pressione sotto al quale è possibile avere bolle d'aria presenti nel fluido |
p_hvap > p > p_lvap |
nel fluido ci sono tutte e 3 le fasi: liquido, aria e vapore. La soglia p_hvap indica l'inizio di cavitazione |
p_lvap > p |
nel fluido ci sono solo aria e vapore, si ha comportamento gassoso. La soglia p_lvap indica il raggiungimento di totale cavitazione |
Questi valori di pressione di soglia, come tutte le altre proprietà del fluido sono modificabili in FluidProp.
Classificazione dei componenti
I modelli sono suddivisi in:
- Elementi capacitivi (volumi)
- Elementi resistivi (perdite di pressione)
- Alcuni componenti speciali non classificabili
La regola generale da seguire è: collegare sempre una porta ROSSA con una BLU, alternando capacitivo/resistivo. Da ogni porta idraulica può partire massimo 1 linea: per più connessioni usare i nodi idraulici.
- ROSSO = elemento capacitivo
- BLU = elemento resistivo
Non collegare tra loro due elementi dello stesso tipo (es. due volumi)
Regola del pin BLU - pin ROSSO
Collegare sempre una porta ROSSA con una BLU.
Alcuni elementi non hanno porte dello stesso tipo, per esempio il nodo idraulico ha sempre 1 porta ROSSA e ≥1 BLU. Si tratta di elementi che non sono né resistivi né capacitivi, ma semplici elementi di passaggio, di misurazione, di trasformazione o di collegamento.

Perché è importante la distinzione delle due tipologie di componente?
Gli elementi capacitivi sono costruiti in modo tale da elaborare il bilancio di portata volumetrica entrante/uscente ed elaborare la pressione attraverso l'equazione del modulo di comprimibilità.
Gli elementi resistivi, invece, ricevono la pressione dai pin di interfaccia ed elaborano la portata volumetrica attraversante al netto del salto di pressione.
Tutte le portate sono corrette dal fattore ρ₀/ρ (densità di riferimento vs. densità attuale) - Approfondimento
FluidProp
Il modello FluidProp definisce le proprietà del fluido utilizzato nella simulazione. Al suo interno è possibile caratterizzare fino a 3 fluidi distinti. Ogni elemento di simulazione che si intarfaccia con un fluido (per esempio una valvola) possiede il parametro fluid_index, il cui valore indica quale dei dei tre fluidi interagisce con l'oggetto. In questa maniera è possibile creare dei circuiti di simulazione con componenti che utilizzano fluidi diversi.
FluidPorp
Quando si istanzia questo modello non è possibile assegnargli un nome personale, ma deve mantenere il suo nome originale fluidProp e non deve mai essere rinominato. (1)
- di conseguenza non può esistere più di un Oggetto dello stesso tipo nello stesso ambiente. Non possono essere caratterizzati più di 3 fluidi!
Stesso fluido per ogni collegamento
Normalmente tutti i componenti idraulici con le porte collegate tra loro dovrebbero avere lo stesso indice di fluido.
Un'eccezione a questa regola potrebbe essere il caso in cui si utilizzano due fluidi diversi per simulare olio a temperature diverse. In questo caso, cambiando l'indice di fluido, un componente può ricevere olio freddo e quello successivo olio caldo. Sta al simulatore decidere con quale criterio utilizzare queste proprietà.
Struttura
Tra le tipologie di fluido è possibile scegliere tra una alcuni preset di fluido già impostati:
- Fluid_A: Olio industriale ISO-VG 46 con 0.1% in volume di aria
- Fluid_B: Olio industriale ISO-VG 32 con 0.1% in volume di aria
- Fluid_C: Olio industriale ISO-VG 46 con 0.5% in volume di aria
- Water: acqua con 0.5% in volume di aria
in alternativa è possibile selezionare Custom per inserire le proprietà personali.

Utilizzando il pulsante modifica
si apre la pagina di parametrizzazione di ciascun fluido.

All'interno di questa finestra è possibile modificare le proprietà principali, oltre che scegliere i modelli di calcolo riguardanti la densità e la viscosità: il menu a tendina permette di selezionare il modello, mentre il pulsante modifica permette di aprire la pagina di parametrizzazione del modello scelto. Ogni finestra ha un collegamento ipertestuale che consente di aprire la pagina di documentazione collegata al relativo modello.
La scelta di questi sottomodelli influenza i calcoli della sola componente liquida (mentre la parte vapore e gas hanno una modellazione fissa). Per completezza, elenchiamo di seguito i modelli disponibili. Nella tabella qui di seguito viene mostrato un riassunto delle dipendenze di calcolo dalle variabili indipendenti, di seguito invece viene fornita una descrizione dettagliata dei singoli modelli.
| Proprietà | Modello | T | p | Quando utilizzarlo |
|---|---|---|---|---|
| Viscosità | Constant | Se si vuole utilizzare un preciso valore di viscosità | ||
| Viscosità | ISO3448 | Classe da ISO VG, per applicazioni con valori di pressione controllati | ||
| Viscosità | ISO3448Extended | Se si vuole utilizzare un olio standard per applicazioni ad alta pressione | ||
| Viscosità | LambdaExtended | Fluido completamente caratterizzato, se si conoscono i termini di sensibilità (oppure si hanno i risultati sperimentali relativi a 3 condizioni distinte) | ||
| Densità | Constant | * | Se si vuole utilizzare un preciso valore di viscosità | |
| Densità | GeneralExpansionCoeff | * | Con oli minerali con coefficiente di espansione noto | |
| Densità | VCF | * | Riprende gli standard più diffusi nel settore petrolifero, così da poter usare direttamente i dati riportati sulle schede tecniche dei fornitori. |
(*) La dipendenza della densità dalla pressione locale è sempre presente, indipendentemente dal modello selezionato. Tutti i modelli richiedono infatti il bulk modulus, utilizzato dalle equazioni della libreria per descrivere la comprimibilità del fluido. I modelli di densità intervengono esclusivamente sulla variazione con la temperatura.
Modelli di calcolo della viscosità
- Constant: conserva costante la viscistà cinematica per tutta la simulazione;
- ISO3448: permette di scegliere un olio in base alla normativa. La viscosità viene calcolata al variare della temperatura del fluido;
- ISO3448Extended: come il modello precedente, ma viene introdotto un coefficiente correttivo in funzione della pressione locale (variabile localmente per ogni elemento idraulico)
- LambdaExnteded: utilizza coefficienti correttivi per variare la viscosità in funzione di temperatura del fluido e pressione locale
Il modello Constant è suggerito se si vuole accorciare il tempo di simulazione, infatti i modelli di calcolo risulteranno più semplici. I modelli più avanzati, invece, sono suggeriti per avere risultati più precisi, soprattutto per soluzioni che arrivani ad alte pressioni, dove il contributo della pressione innalza i valori di viscosità in maniera non trascurabile.
Modelli di calcolo della densità
- Constant: la densità del loquido rimane costante al variare della temperatura del fluido
- GeneralExpansionCoeff: si utilizza un modello di espansione generico all'aumentare della temperatura
- VCF: viene proposto uun modello di calcolo corretto e largamente utilizzato nel settore industriale per quanto riguarda i liquidi petroliferi
A differenza dei modelli di calcolo della viscosità, il calcolo della densità dipende sempre dalla pressione locale (non sarebbe una semplificazione accettabile e porterebbe ad avere un modulo di comprimibilità costante).
Correzione della portata volumetrica
Ogni valore di portata volumetrica è corretto del fattore ρ₀/ρ (densità di riferimento su densità attuale). Significa che quando osserviamo un valore di portata attraversare un pin in realtà stiamo osservando un flusso di portata massica mascherata da portata volumetrica. Infatti dividento la portata volumetrica reale per la densità ρ otteniamo la portata massica che, attraverso l'equazione di conservazione di massa, garantisce la continuità di materia. Solo per avere dei risultati in una quantità volumetrica moltiplichiamo per ρ₀, densità a T = 15.6 °C e pressione atmosferica - standard ASTM.
Questo valore correttivo è ~1 per la maggior parte dei casi; assume un valore significativamente ≠ 1 nelle fasi di cavitazione. Se una pompa dovesse andare in cavitazione, grazie alla convenzione utilizzata vedremmo una bassissima portata asiprata, mentre in realtà una pompa volumetrica, per definizione, sposta sempre la stessa quantità di volume. La differenza sta nella densità del materiale aspirato: durante la cavitazione il fluido ha una densità molto inferiore al valore atteso, perché composto da una quota parte di gas.
File di esempio: cavitazione
model cavitazione
SFPLibDyn.Hydraulic.Sources.Pumps.FixedUniDirPump fixedUniDirPump(max_displ = 1.6e-4) annotation(
Placement(transformation(origin = {2, 22}, extent = {{-15, -15}, {15, 15}})));
SFPLibDyn.Mechanical.Rotational.Sources.Motor motor annotation(
Placement(transformation(origin = {-42, 22}, extent = {{-15, -15}, {15, 15}})));
SFPLibDyn.Signals.Source.Constant constant1(k = 1000) annotation(
Placement(transformation(origin = {-76, 22}, extent = {{-10, -10}, {10, 10}})));
SFPLibDyn.Hydraulic.Sources.Tank tank annotation(
Placement(transformation(origin = {42, 40}, extent = {{-6, -4.5}, {6, 4.5}})));
SFPLibDyn.Hydraulic.Volumes.Volume2p volume2p(vol_0 = 0.001, pressure(start = 0, fixed = true)) annotation(
Placement(transformation(origin = {2, -14}, extent = {{-10, -10}, {10, 10}})));
SFPLibDyn.Hydraulic.Orifices.OrificeVariable orificeVariable(min_signal = 0.01, diam = 0.036) annotation(
Placement(transformation(origin = {2, -45}, extent = {{-6, -12}, {6, 12}})));
SFPLibDyn.Hydraulic.Sources.Tank tank1 annotation(
Placement(transformation(origin = {2, -70}, extent = {{-6, -4.5}, {6, 4.5}})));
SFPLibDyn.Signals.Source.Ramp ramp(val_initial = 1, slope = -1, time_start = 0.2) annotation(
Placement(transformation(origin = {-26, -52}, extent = {{-10, -10}, {10, 10}})));
equation
connect(fixedUniDirPump.r1, motor.r1) annotation(
Line(points = {{-16, 22}, {-24, 22}}));
connect(motor.u1, constant1.y1) annotation(
Line(points = {{-56, 22}, {-66, 22}}));
connect(tank.h1, fixedUniDirPump.h2) annotation(
Line(points = {{42, 44}, {42, 60}, {2, 60}, {2, 38}}));
connect(fixedUniDirPump.h1, volume2p.h2) annotation(
Line(points = {{2, 8}, {2, -4}}));
connect(volume2p.h1, orificeVariable.h2) annotation(
Line(points = {{2, -24}, {2, -33}}));
connect(orificeVariable.h1, tank1.h1) annotation(
Line(points = {{2, -57}, {2, -66}}));
connect(orificeVariable.u1, ramp.y1) annotation(
Line(points = {{-2.5, -52}, {-16, -52}}));
annotation(
uses(SFPLibDyn(version = "3.2")),
Diagram(coordinateSystem(extent = {{-100, -100}, {100, 100}}, grid = {1, 1})),
version = "",
__OpenModelica_simulationFlags(lv = "LOG_STDOUT,LOG_ASSERT,LOG_STATS", s = "dassl", variableFilter = ".*"),
experiment(StartTime = 0, StopTime = 2, Tolerance = 1e-06, Interval = 0.0004));
end cavitazione;