Consideriamo un cristallo di Ag (fcc; a=4.09Å), descritto da un qualche potenziale semiempirico (negli esempi sarà EAM, ma non importa). Vogliamo studiarne delle quantità di bulk: quanto grande dobbiamo prendere la cella di simulazione?
4 atomi (c.conv.) 32 atomi 108 atomi 256 atomi 864 atomi 2048 atomi 4000 atomi
Atomi L(Å)
Atomi A(Å 2 )
Atomi V(Å 3 )
Å
Spostamenti da posizioni di bulk dopo minimizzazione energia (4 atomi; non è nemmeno un fcc..)
Spostamenti da posizioni di bulk dopo minimizzazione energia (4 atomi)
Spostamenti da posizioni di bulk dopo minimizzazione energia (32 atomi)
Spostamenti da posizioni di bulk dopo minimizzazione energia (4000 atomi)
Chiaramente, ho sempre degli effetti di superficie: posso sperare di individuare una “zona di bulk” all’interno? Atomi A/V
32 atoms r(Å) bonds % atoms in perfect positions: 0
108 atoms r(Å) bonds % atoms in perfect positions: 0
256 atoms r(Å) bonds % atoms in perfect positions: 3
864 atoms r(Å) bonds % atoms in perfect positions: 7
2048 atoms r(Å) bonds % atoms in perfect positions: 11
4000 atoms r(Å) bonds % atoms in perfect positions: 15
Esiste un metodo alternativo a costruire sistemi sempre più grandi per cercare di eliminare gli effetti di superficie (a parte “trucchi” come la saturazione dei legami nei semiconduttori)?
YES! LET’s GO PBC
Periodic boundary conditions ? ?
Ri-seleziono la vera cella di partenza …
a d=a d=2a L=7a d=3a d=4a; dimm=3a d=5a; dimm=2a d=6a; dimm=a
Ci siamo concentrati sui primi vicini. In realtà se uso un potenziale “privo di cutoff” come Lennard-Jones, se ripeto la cella ogni atomo sarà influenzato dalle proprie immagini. Se non studio situazioni in cui tutti gli atomi si comportano in maniera identica (proprietà statiche di un cristallo perfetto) NON VA BENE!
a d=a d=2a L=7a d=3a d=2a d=a Minimum image convention: definisco distanza d tra l’atomo i e l’atomo j della cella originale la distanza tra i e l’immagine di j che minimizza d. Nei conti, considero solo l’interazione tra i e tale immagine. Di fatto questo modo di procedere un po’ arbitrario diventa più chiaro se forzo un cutoff preciso per il potenziale. Per esempio, se il cutoff è pari alla distanza tra nn, risulta chiaro con chi può interagire l’atomo giallo Implementazione in fortran: è banale!!!!!!!
L=5a x(2)-x(1)=a x(3)-x(1)=2a x(4)-x(1)=3a x(5)-x(1)=4a Voglio calcolare la separazione (con segno) tra un atomo e l’atomo 1 (giallo). In assenza di PBC è banale. Con le PBC ….
L=5a L=5a 1’ 2’ 3’ 4’ 5’ PBC + minimum image convention x(2)-x(1)=a x(2’)-x(1)=-4a -> x(2,MI)-x(1)=a x(3)-x(1)=2a x(3’)-x(1)=-3a -> x(3,MI)-x(1)=2a x(4)-x(1)=3a x(4’)-x(1)=-2a -> x(4,MI)-x(1)=-2a x(5)-x(1)=4a x(5’)-x(1)=-a -> x(5,MI)-x(1)=-a Occhio che cambia tutto. Con un cutoff a primi vicini, e senza PBC, l’atomo 1 interagisce solo con 2. Con le PBC interagisce anche con 5 (tramite la sua immagine). Se non avessi cutoff nel potenziale, l’utilizzo della minimum image convention di fatto ne introduce uno, pari alla metà della cella. Ma è abrupto. Molto meglio usare una cella grande e imporre un vero cutoff (vedi dopo).
L=5a L=5a 1’ 2’ 3’ 4’ 5’ PBC + minimum image convention x(2)-x(1)=a x(2’)-x(1)=-4a -> x(2,MI)-x(1)=a x(3)-x(1)=2a x(3’)-x(1)=-3a -> x(3,MI)-x(1)=2a x(4)-x(1)=3a x(4’)-x(1)=-2a -> x(4,MI)-x(1)=-2a x(5)-x(1)=4a x(5’)-x(1)=-a -> x(5,MI)-x(1)=-a Considero la funzione anint, che approssima con l’intero più vicino. Suppongo di calcolare un certo dx, poi calcolo anint (dx/L). anint(dx/cella)=0 se |dx|<L/2, =1 altrimenti. Bene, se allora prima calcolo dx e poi lo sostituisco con dx=dx-L*anint(dx/L) sono a posto!!!!! Es. dx=3a; anint 3/5=1; dx=3a-5a=-2a Es. dx=2a; anint 2/5=0; dx=2a
L=5a L=5a 1’ 2’ 3’ 4’ 5’ Considero la funzione anint, che approssima con l’intero più vicino. Suppongo di calcolare un certo dx, poi calcolo anint (dx/L). anint(dx/cella)=0 se |dx|<L/2, =1 altrimenti. Bene, se allora prima calcolo dx e poi lo sostituisco con dx=dx-L*anint(dx/L) sono a posto!!!!! Es. dx=3a; anint 3/5=1; dx=3a-5a=-2a Es. dx=2a; anint 2/5=0; dx=2a
Implementazione in fortran Dove s x,sy,sz =dimensioni della cella di simulazione (solo per celle in cui x,y, e z sono direzioni perpendicolari, se no è più complicato). Notare: può essere cambiato il segno (ed è giusto che sia così, pensare alle forze) di dx,dy,dz. sx= =sy sz=
Dimensioni della cella e cutoff rcrc
Gli atomi interagiscono con le proprie immagini. Posso usare la minimum image convention per ovviare a questo fatto, ma non è formalmente un gran chè (di fatto introduco un nuovo cutoff). Invece, se L>2r c la minimum image convention viene soddisfatta in modo naturale. Nel caso in figura, la cella di simulazione scelta era troppo piccola. La condizione L>2r c va considerata come condizione minimale per effettuare una simulazione decente.
Attenzione! Anche se L>2r c l’utilizzo delle PBC non equivale in tutto e per tutto a simulare un sistema infinito. In un vero sistema infinito ….
Nel sistema “replicato” invece …..
Tipici problemi connessi ….. Esempio: consideriamo un difetto che provoca un campo di deformazione a lungo raggio. Se la cella con PBC è troppo piccola..
E’ chiaro che non posso descrivere una situazione simile con le PBC che forzano uguale distorsione in ogni cella immagine. Con le PBC non sto simulando l’effetto di un difetto isolato ma di un certo coverage di difetti disposti ordinatamente nel sistema
Se lo simulo con le PBC e la cella piccola: a)il campo di deformazione sarà diverso da quello vero b)un difetto risentirà del campo di deformazione creato dalla sua immagine (“interazione” laterale spuria). In generale: “impossibilià di simulare un difetto (o un adsorbato) isolato”
Coppia di difetti che si annichilano se si incontrano (interstiziale vacanza)
Se il difetto si muove e se muovendosi crea un “antidifetto” (potrebbe essere una coppia vacanza/interstiziale)
la probabilità di annichilazione è molto maggiore di quella reale
Notare infine che la densità atomica volumetrica è fissata da N/V della cella principale: non posso simulare fenomeni come l’espansione termica. Se gli atomi al centro della cella aumentano la loro distanza, necessariamente la distanza tra atomi dovrebbe diminuire. Il sistema preferisce allora mantenere distanze uguali
Nei codici, ovviamente, non vengono allocate le posizioni di tutte le immagini: la pittura delle celle ripetute non deve ingannare. Se ho processi diffusivi si può verificare la seguente situazione quando visualizzo la posizione degli atomi:
Nei codici, ovviamente, non vengono allocate le posizioni di tutte le immagini: la pittura delle celle ripetute non deve ingannare. Se ho processi diffusivi si può verificare la seguente situazione quando visualizzo la posizione degli atomi:
Nei codici, ovviamente, non vengono allocate le posizioni di tutte le immagini: la pittura delle celle ripetute non deve ingannare. Se ho processi diffusivi si può verificare la seguente situazione quando visualizzo la posizione degli atomi:
Nei codici, ovviamente, non vengono allocate le posizioni di tutte le immagini: la pittura delle celle ripetute non deve ingannare. Se ho processi diffusivi si può verificare la seguente situazione quando visualizzo la posizione degli atomi:
Nei codici, ovviamente, non vengono allocate le posizioni di tutte le immagini: la pittura delle celle ripetute non deve ingannare. Se ho processi diffusivi si può verificare la seguente situazione quando visualizzo la posizione degli atomi:
Nei codici, ovviamente, non vengono allocate le posizioni di tutte le immagini: la pittura delle celle ripetute non deve ingannare. Se ho processi diffusivi si può verificare la seguente situazione quando visualizzo la posizione degli atomi:
Nei codici, ovviamente, non vengono allocate le posizioni di tutte le immagini: la pittura delle celle ripetute non deve ingannare. Se ho processi diffusivi si può verificare la seguente situazione quando visualizzo la posizione degli atomi: Se voglio calcolare il coefficiente di diffusione del’oggetto che si muove (proporzionale allo scarto quadratico medio dalla posizione iniziale), devo considerare la traiettoria vera. Contemporaneamente però, è comodo visualizzare anche quella riferita alla cella principale
E’ comodo tenere in memoria sia le coordinate reali sia quelle riferite alla sola cella principale di simulazione.