10.12.2012 Views

Κεφάλαιο 1 - Nemertes

Κεφάλαιο 1 - Nemertes

Κεφάλαιο 1 - Nemertes

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ΚΕΦΑΛΑΙΟ 6 ο<br />

{<br />

for (int y = 0; y < yCount - 1; y++)<br />

{<br />

Particle p = new Particle((Integer) theParticles.getNextUserDataForParticle(),<br />

((x - xCoef)) * xSpacing + xSpacing / 2, ((y - yCoef)) * ySpacing + ySpacing / 2, zIndex);<br />

p.setMass(m);<br />

theParticles.addParticle(p);<br />

}<br />

}<br />

}<br />

}<br />

Εδώ τοποθετούνται τα σωµατίδια στις θέσεις τους στον BCC κρύσταλλο. Αντίστοιχη<br />

συνάρτηση υπάρχει και για FCC κρύσταλλο, στην περίπτωση που απαιτείται από το είδος και<br />

τον στόχο της προσοµοίωσης.<br />

Επιπλέον, µετά την αρχικοποίηση του κρυστάλλου, υπολογίζονται τα όρια για τις συνοριακές<br />

συνθήκες:<br />

private void calculateBoundaries()<br />

{<br />

xBoundaryStart = -(xSpacing * numberOfxEdgeParticles) / 2;<br />

xBoundaryEnd = +(xSpacing * numberOfxEdgeParticles) / 2;<br />

xBoundarySize = xSpacing * numberOfxEdgeParticles;<br />

}<br />

yBoundaryStart = -(ySpacing * numberOfyEdgeParticles) / 2;<br />

yBoundaryEnd = (ySpacing * numberOfyEdgeParticles) / 2;<br />

yBoundarySize = ySpacing * numberOfyEdgeParticles;<br />

zBoundaryStart = 0;<br />

zBoundaryEnd = zSpacing * numberOfzEdgeParticles;<br />

zBoundarySize = zSpacing * numberOfzEdgeParticles;<br />

Παρακάτω φαίνονται οι συναρτήσεις που υλοποιούν τα boundary conditions για κάθε άξονα<br />

και επιστρέφουν την καινούρια συντεταγµένη στην οποία πρέπει να τοποθετηθεί το<br />

σωµατίδιο.<br />

public double xBoundary(double x)<br />

{<br />

double result = x;<br />

if (x < xBoundaryStart)<br />

{<br />

result = xBoundaryEnd - ((Math.abs(xBoundaryStart - x)) % xBoundarySize);<br />

241

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!