Possiamo ora partire a definire quello che è il flow chart delle operazioni eseguite dal metodo sviluppato con la finalità di calcolare la viscosità del sistema DPD simulato. Come già detto in Sez. 3.2, la viscosità del sistema è calcolata con il metodo di Green-Kubo a partire dalla SACF calcolata per mezzo di LAMMPS e salvata nel file time_corr.txt. Abbiamo visto che la viscosità di un sistema non solo dipende dai parametri DPD, ma anche dai parametri di post-processing che vengono definiti nella simulazione. Inoltre abbiamo verificato quale sia l’influenza di questi parametri sull’andamento della SACF e, di conseguenza, sulla viscosità. A partire da queste osservazioni si è sviluppato quindi un algoritmo che prevede una serie di operazioni e controlli iterativi con la finalità di verificare la presenza del plateau, e quindi garantire che il valore calcolato della viscosità sia stato raggiunto.
In Fig. 5.1 viene raffigurato il flow chart del metodo successivamente implementato nel codice.
In input allo script daremo i parametri della simulazione e verrà generato un file LAMMPS di input con le caratteristiche volute. Per i parametri di post-processing il discorso è più ampio, in quanto non è banale scegliere dei parametri iniziali. Inizialmente si era proposto di procedere con i valori, di input e di incremento per iterazione, riassunti in Tab. 5.1.
Parametro Input Incr./Decr.
Nrep 100 100
Nfreq 100 100
N 70 70
0.05 33%
Tab. 5.1 - Primi Parametri ipotizzati come input delle simulazioni
Questi valori erano stati pensati con l’obiettivo di dare un possibile primo valore minimo di Nrep ed N in cui si verifica la presenza di plateau nella SACF/viscosità. Pur non essendo teoricamente errato, i valori iniziali sono stati valutati considerando solo i set per cui il plateau veniva raggiunto più velocemente, di conseguenza nella maggior parte delle simulazioni si è visto che servivano molte più simulazioni di quante fossero quelle effettivamente attese.
Infatti, avendo questo gap iniziale si dovevano eseguire molte iterazioni in più per raggiungere una convergenza del valore. A seguito di questa verifica, si è deciso quindi di non utilizzare i valori precedentemente illustrati, ma di aggiornarli, mantenendo un margine cautelativo per cui siamo sicuri che probabilmente sarà presente un plateau per la maggior parte dei sistemi simulati. I nuovi valori sono riassunti in Tab.5.2 e, come si può vedere, sono nettamente più alti rispetto ai precedenti nel caso di Nrep, Nfreq ed N, mentre il valore di è stato abbassato.
Tutte le modifiche sono state fatte in modo da favorire la convergenza che si verifica con meno iterazioni rispetto ai valori iniziali, con conseguente risparmio computazionale.
Parametro Input Incr./Decr.
Nrep 500 500
Nfreq 500 500
N 500 100
0.04 33%
Tab. 5.2 - Nuovi valori proposti per inizio iterazioni
Una volta impostati i parametri iniziali ed i valori degli incrementi per iterazione, passiamo ad analizzare gli step fondamentali dello script.
Come si può vedere in Fig. 5.1, l’intero processo si basa su tre controlli iterativi principali, check di Nrep, check di N, e check di dt.
Fig. 5.1 - Flowchart completo del metodo
5.1.1 - Check di Nrep
Questo è il primo check ed è eseguito per la singola simulazione eseguita, cioè non serve confrontare tra loro due diverse simulazioni ma è sufficiente eseguire un controllo sull’andamento della funzione della viscosità per poter verificare la convergenza del valore di viscosità.
Fig. 5.2 - Flowchart Check di Nrep
5.1.2 - Check di N
Al contrario del check precedente, in questo caso è necessario confrontare due simulazioni consecutive per valutare che la riduzione della fluttuazione in coda alla viscosità sia sufficientemente bassa, il parametro di riferimento è il Coefficient of Variation, esso è definito dalla formula , dove e sono rispettivamente la deviazione standard e la media della viscosità calcolata.
La prima simulazione che viene eseguita all’interno di questo check avrà come riferimento l’ultima uscita dal check prima. Nel caso la verifica non sia soddisfatta allora si inizierà una serie di simulazioni che verranno confrontate in serie. Vale sempre la regola che il della simulazione n-esima verrà confrontato con il della simulazione n-1.
Fig. 5.3 - Flowchart Check di N
5.1.3 - Check di
Esattamente come per N, in questo caso si deve valutare la convergenza facendo un confronto tra due simulazioni. La differenza sostanziale però è che in questo caso non viene fatto il confronto con la simulazione precedente, ma viene fatto con il valore finale della viscosità calcolata per il precedente. Fino a questo ultimo check noi abbiamo calcolato il valore di convergenza della viscosità per un dato , ma non in generale per il sistema. Questo significa che il controllo va fatto tra i valori di viscosità finali di due consecutivi. Ovviamente alla prima iterazione non noi avremo un valore di viscosità finale precedente con cui confrontare la nostra prima iterazione, quindi verrà imposto un valore fittizio estremamente alto per fare in modo che il primo controllo fallisca sempre, indipendentemente dal valore di viscosità calcolato per , a questo punto il valore di timestep verrà decrementato del valore indicato in Tab. 5.2 e verrà reinizializzato tutto il processo di simulazione e controllo ripartendo dai valori di input di Nrep, Nfreq ed N, ma con il valore di decrementato. In questo modo sarà possibile raggiungere nuovamente una convergenza del valore di viscosità per il nuovo e sarà possibile confrontare a questo punto effettivamente i valori finali, per valutare se si è verificata una convergenza effettiva. Nel caso non sia stato possibile rispettare una tolleranza, impostata dallo user, tra i due valori finali calcolati, allora verrà eseguita una nuova iterazione come appena descritto. Se invece si è verificata la condizione di uscita dal check, allora si può considerare il risultato finale come accurato e definitivo.
Fig.5.4 - Flowchart Check di dt