You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
ΚΕΦΑΛΑΙΟ 6 ο<br />
distance επιστρέφει την απόσταση µεταξύ δύο σωµατιδίων χρησιµοποιώντας τα<br />
απότελέσµατα των δυο πρώτων, ενώ η sqrt_distance απλά επιστρέφει την ευκλείδεια<br />
απόσταση µεταξύ δύο σηµείων.<br />
Ένα άλλο σηµείο που πρέπει να παρουσιαστεί είναι ο τρόπος υπολογισµού των γειτονικών<br />
σωµατιδίων. Για την απλοποίηση των υπολογισµών, κάθε σωµατίδιο απόθηκεύει µια λίστα<br />
µε τα σωµατίδια τα οποία είναι εντός της ακτίνας αλληλεπίδρασής του όπως αυτή ορίσθηκε<br />
νωρίτερα. Έτσι, όταν υπολογίζεται το δυναµικό, λαµβάνονται υπ’ όψη µόνο αυτά και όχι το<br />
σύνολο του µοντέλου. Περιοδικά η λίστα αυτή ανανεώνεται για να συνυπολογίσει τις<br />
µετακινήσεις των σωµατιδίων. Η περιοδικότητα της ανανέωσης απότελεί επιλογή του<br />
χρήστη.<br />
private static void calculateMorsePotentialNeighbors(Particle p)<br />
{<br />
Map neighbors = p.getNeighbors();<br />
Iterator neighbors_iter = neighbors.keySet().iterator();<br />
calculateMorsePotentialIter(p, neighbors_iter, false);<br />
}<br />
Στην παραπάνω συνάρτηση χρησιµοποιείται η έτοιµη λίστα των γειτονικών σωµατιδίων για<br />
τον υπολογισµό του δυναµικού.<br />
static void calculateNeighbors(Iterator iterator, ParticlesProxy particlesProxy)<br />
{<br />
noOfNeighborCalculations++;<br />
if (noOfNeighborCalculations >= MDParameters.NEIGHBOR_STEP)<br />
{<br />
System.out.println("Calculating neighbors...");<br />
for (Iterator iter = iterator; iter.hasNext();)<br />
{<br />
//calculate the potential<br />
Particle p = (Particle) iter.next();<br />
int before = p.getNeighbors().size();<br />
//<br />
p.clearNeighbors();<br />
doCalculateNeighbors(p, particlesProxy.getParticlesIterator());<br />
int after = p.getNeighbors().size();<br />
if (before != after)<br />
{<br />
System.out.println("########## DIFFERENCE ");<br />
System.out.println("AFTER Particle " + p.getId() + " has " + after + "<br />
neighbors");<br />
System.out.println("BEFORE Particle " + p.getId() + " has " + before + "<br />
neighbors");<br />
235