Ich habe einen Code geschrieben, um die Dynamik eines großen Satzes gekoppelter Hauptgleichungen mit Hilfe der Runge-Kutta-Methode zu berechnen. Der Code enthält eine Menge for-Schleifen, wobei jeder Schritt unabhängig ist. Ich beabsichtige, Grand Central Dispatch zu verwenden, um das Programm zu beschleunigen. Ich habe meinen Versuch auf ein Beispiel gestützt, das ich unter http://www.macresearch.org/cocoa-scientists-xxxi-all-aboard-grand-central . Weder mein Code noch das Beispiel auf macresearch kompilieren auf meinem Rechner (MacOSX 10.6.8 Xcode 4.0.2). Also hier ist mein Code:
...
double values[SpaceSize], k1[SpaceSize];
for ( int t=1 ; t<Time ; t++ ) {
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//k1
for (int k=0 ; k<SpaceSize ; k++ ) values[k]=Concentration[k][t-1];
dispatch_apply(SpaceSize, queue,
^(size_t k) {
k1[k]=h * derives(values, SpaceSize, k); //<--error
}
);
...
Es bricht mit dem Fehler:
Semantisches Problem: Kann sich nicht auf eine Deklaration mit einem variabel modifizierten Typ innerhalb eines Blocks
Ich habe versucht, die Arrays (Werte, k1) durch Vektoren zu ersetzen, aber dann erhalte ich stattdessen eine andere Fehlermeldung:
Semantisches Problem: Nur-Lese-Variable ist nicht zuweisbar
Das ist der Punkt, an dem ich nicht weiterkomme, da ich nicht wirklich weiß, was mir diese Fehlermeldungen sagen wollen. Ich habe schon einige Zeit mit der Suche verbracht und mich umgehört, ob mir jemand helfen kann. Ich wäre sehr dankbar für Tipps oder bessere Lösungsansätze.