resource Jacobi() import barriere const int n = 16 const int f = 5 int numiter real a [0:n+1,0:n+1], b [0:n+1,0:n+1] # Initialisiere Felder a und b for [i=0 to (n+1)] { for [j=0 to (n+1)] { a[i,j] = 100.0; b[i,j]= a[i,j] } } # Randpunkte von a belegen for [i=0 to n+1] { a[i,0] = 0 } # Anzahl notwendiger Iterationen bestimmen numiter = f * n * n / 2; writes("Anzahl notwendiger Iterationen: ", numiter) write() # Erzeuge je einen Prozess für Zeilenneuberechnungen process row [i=1 to n] { # Iteration zur Bestimmung der Werte im stabilen Zustand for [k=1 to numiter] { # 1. Phase : Neuberechnung der Werte for [j=1 to n] { b[i,j] = (a[i-1,j] + a[i+1,j]+ a[i,j-1]+a[i,j+1]) /4 } call barriere.barrier(n) # SYNCHRONISATION # 2. Phase : Update for [j=1 to n] { a[i,j]= b[i,j]} call barriere.barrier(n) # SYNCHRONISATION } } final { # Ausgabe des Ergebnisses write("Ausgabe der Ergebnismatrix"); write() for [i=1 to n] { for [j=1 to n] { writes(a[i,j]," ") }; write() } } end