• Non ci sono risultati.

4.2 Descrizione delle card di dati

4.2.8 La card QRTol.s3d

Questa card contiene alcune opzioni che permettono di configurare, secon- do le proprie esigenze o secondo il particolare sistema meccanico, la riso- luzione delle equazioni del moto della simulazione. I parametri impostabili possono influenzare molto sia la velocit`a di esecuzione, sia l’accuratezza del- la simulazione o la stabilit`a per tempi lunghi, sia l’effettiva soluzione del problema.

NumDyn3D utilizza dei parametri di default, che possono essere una buo- na scelta per la maggior parte dei sistemi o comunque come impostazioni di primo tentativo. Nel caso in cui lo si desideri, si possono modificare i seguenti parametri:

Figura 4.15: Card Manager : Opzioni di risoluzione

Metodo di risoluzione

Consente di scegliere fra l’uso del codice Radau5 per la risoluzione di equa- zioni algebrico–differenziali con indice di formulazione 3 per sistemi a vincoli non sovrabbondanti, QTZ in forma di stato o QTZ con ortogonalizzazione dei vincoli.

Radau. Consiste nel risolvere, tramite il codice Radau5 [6], appunto, il siste- ma di equazioni algebrico differenziali come scritto nella (2.1). Rappre- senta una buona scelta sul fronte della stabilit`a della simulazione, ma `e vincolato dalla possibilit`a di risolvere solamente sistemi meccanici a vincoli non sovrabbondanti. Ad esempio, il manovellismo di spin-

ta utilizzato come esempio non `e risolvibile tramite questo metodo, in quanto nella sua rappresentazione spaziale presenta tre gradi di vincolo di troppo.

QTZ in forma di stato. Come descritto in linea teorica nel paragrafo 3.4, tramite una decomposizione QTZ completa della matrice jacobiana dei vincoli `e possibile formulare le equazioni del moto in forma di stato, o in termini di accelerazioni indipendenti o su di un set minimo di coordinate. La selezione tra i due metodi viene fatta automaticamente all’interno di NumDyn3D, a seconda delle caratteristiche del sistema meccanico. Entrambe le metodologie sono in grado di eseguire simula- zioni di sistemi a pi`u gradi di libert`a e a vincoli sovrabbondanti, con una velocit`a maggiore della formulazione algebrico–differenziale, soprattut- to all’aumentare del numero di corpi. Di contro presentano maggiori problemi di stabilit`a della soluzione per simulazioni lunghe e di viola- zione dei vincoli cinematici, che pu`o comunque essere limitata a valori fisicamente trascurabili tramite le altre opzioni di risoluzione.

QTZ con ortogonalizzazione. Consiste nel risolvere, tramite il codice Ra- dau5, il sistema algebrico differenziale (3.57), ottenuto dopo l’ortogo- nalizzazione dei vincoli cinematici per mezzo della matrice hQˆi, come descritto nel paragrafo 3.4.2. Questa metodologia, utilizzata di default, `e in grado di risolvere sistemi a vincoli sovrabbondanti con un qual- siasi numero di gradi di libert`a, con maggiore velocit`a dei precedenti per sistemi di piccole dimensioni, pagando qualcosa invece per sistemi pi`u complessi. Presenta inoltre un’elevata stabilit`a della soluzione e un rispetto dei vincoli limitato principalmente dalla precisione dell’unit`a di virgola mobile del processore, ben al di sotto, comunque, di qualsia-

si apprezzabilit`a fisica. Di contro pu`o presentare problemi ad iniziare la simulazione di sistemi con elevato numero di vincoli ridondanti, nel qual caso si consiglia l’uso della QTZ in forma di stato.

Integratore ODE

Le opzioni contenute in questa sezione hanno effetto solo nel caso in cui si utilizzi come metodo di risoluzione la decomposizione QTZ con equazioni in forma di stato. `E stato utilizzato l’integratore per sistemi di equazioni dif- ferenziali ordinarie (ODE) RKSuite per Fortran [22], basato su metodologie Runge–Kutta esplicite, che permette di scegliere fra diversi ordini di sviluppo e di fissare tolleranze diverse. In particolare si ha:

Metodo ODE. Permette di selezionare la coppia Runge–Kutta che si vuole utilizzare, (2,3), (4,5) o (6,7). Pi`u `e alto l’ordine della coppia, maggiore `e la precisione del risultato e maggiore `e il tempo di calcolo. Per gli usi normali all’interno di una simulazione con NumDyn3D, la coppia di ordine minore (2,3) restituisce risultati paragonabili a quella di ordine massimo, con un risparmio di tempo di calcolo dell’ordine del 60%. Tra le tre diverse scelte varia l’accuratezza, che `e dell’ordine di 10−3, 10−5

e 10−8, rispettivamente.

Tolleranza. Permette di impostare un valore dell’accuratezza richiesta, ed `e legato al metodo ODE utilizzato. I metodi consigliati sono:

10−2 : 10−4 coppia (2,3)

10−3 : 10−6 coppia (4,5)

10−5 coppia (6,7)

Soglia. Da scegliere in maniera tale che il valore di una coordinata `e trascu- rabile se sta al di sotto del valore di soglia.

Radau5 `

E possibile impostare l’errore massimo relativo ammesso da Radau5 durante l’integrazione. Questo parametro incide sulla possibilit`a di eseguire o meno una simulazione, in particolare per sistemi a vincoli sovrabbondanti. Nel caso in cui, durante l’esecuzione del codice, si ricevesse un messaggio di errore da Radau sulle dimensioni troppo piccole del passo di integrazione interna che dovrebbe adottare, si pu`o tentare di aumentare il valore di questa tolleranza e lanciare nuovamente la simulazione.

Violazione dei vincoli

Il codice NumDyn3D, nel caso in cui si utilizzi come metodo di risoluzione la decomposizione QTZ con equazioni in forma di stato, pu`o avere bisogno, di quando in quando, di correggere le posizioni trovate nel corso della simu- lazione per far scendere al di sotto di un valore fissato l’eventuale violazione dei vincoli cinematici imposti. Questa eventualit`a non `e cos`ı remota, soprat- tutto per simulazioni lunghe, in quanto la riscrittura in forma di stato del sistema di equazioni algebrico differenziale che viene risolto ha validit`a solo locale. Pi`u ci si allontana dalla configurazione nella quale `e stata svolta la decomposizione e sono state corrette le posizioni, pi`u cresce la possibilit`a che vengano violati alcuni vincoli cinematici al di sopra di valori fisicamente tollerabili. Per questo motivo `e prevista la possibilit`a di effettuare, in fase di simulazione, la correzione delle posizioni quando la violazione delle equazio- ni dei vincoli cinematici superi un valore assegnato. Nel caso in cui l’utente voglia effettuare la correzione, viene richiesto:

lori assoluti delle violazioni dei vincoli cinematici prima che venga effettuata la correzione.

Violazione massima dopo la correzione. Valore sotto il quale deve ve- nir riportata la somma dei valori assoluti delle violazioni dei vincoli dopo la correzione.

Questa operazione richiede la soluzione di un sistema sovrabbondante di equazioni algebriche non lineari. Di conseguenza impostare un valore troppo basso della violazione dopo la correzione pu`o significare aumentare molto il numero di iterazioni necessarie per portare la soluzione al di sotto di tale soglia.

Il valore di soglia prima di effettuare la correzione se scelto molto piccolo pu`o portare a correggere le coordinate posizionali praticamente ad ogni step temporale, mentre se viene scelto troppo alto pu`o portare problemi di con- gruenza tra velocit`a (non corrette) e posizioni (corrette) all’inizio del passo temporale successivo all’esecuzione della routine.

`

E evidente che il valore della violazione massima dopo la correzione deve essere inferiore al valore ammesso prima di effettuarla.

Aggiornamento della decomposizione

Questo parametro `e esattamente α, come definito nel paragrafo 3.3.2. Un valore tanto pi`u vicino all’unit`a, quindi, implica una sempre pi`u frequente decomposizione QTZ della matrice Jacobiana del sistema.

Per sistemi meccanici a pi`u di un grado di libert`a, questo valore non dovrebbe essere posto esattamente pari ad 1, perch´e questo potrebbe intro- durre instabilit`a dovute a problemi di risoluzione dell’unit`a a virgola mobile del processore che non consentono il calcolo di nuovi sottospazi ortogona-

li sufficientemente vicini ai precedenti3. Questi problemi non si presentano,

invece, per sistemi ad un grado di libert`a. Valutazione del rango

`

E il valore di soglia al di sotto del quale viene considerato nullo un elemen- to sulla diagonale della matrice [T ] della decomposizione QTZ. Il numero di gradi di libert`a del sistema meccanico in esame coincide col numero di elementi nulli sulla diagonale di tale matrice. Il valore di questo parametro pu`o essere incrementato nel caso in cui si incontrino problemi nel simulare un sistema meccanico con vincoli ridondanti di cui non siano state assegnate con sufficiente accuratezza le caratteristiche geometriche.

Output

Il valore dell’output a schermo rappresenta la percentuale dei passi da calco- lare per ogni incremento dell’indicatore di processo. Il valore del parametro che regola l’output su file indica invece il numero di passi intermedi che si richiedono tra due linee consecutive sul file di output, che corrispondono ad uno step temporale definito nella card General.

Esempio di card

Viene qui di seguito riportato un esempio della card descritta in questa sezione, come generata da Card Manager.

QRTol.s3d NumDyn3D ver. 7.0a

!Integration method

3Vedere la figura (3.1) per un’interpretazione geometrica dei sottospazi ortogonali citati

ResMethod = 2

!Tolerances required by ODE integrator ODEmethod = 2

tolODE = 1.E-7 threshold = 1.E-18

!Tolerances required by Radau tolRadau = 1.E-8

!Tolerances for constraints violation tolConst = 1.E-9 tolCorr = 1.E-12 !QTZ Updating tolQRUpdate = 1 !Rank evaluation tolRank = 1.E-10

!Console progress indicator DeltaPerc = 5

!Number of time steps between two consecutive lines in output file DeltaWrite = 10

!Perform constraints correction Correzione = 1

Documenti correlati