一次元メッシュ上での 緩和ステップの可能な記述を考える.
図2.1: leftフィールドと rightフィールドでつながれたセルオブジェクト
class cell { // value in the current/next step double value, new_value; // pointers to neighbors cell * left, * right; public: double current_value () { return value; } void step (); }; void cell::step () { double lv = left->current_value (); double rv = right->current_value (); new_value = ((lv + rv) - (value * 2.0)) / 2.0; }
図2.1のように, cell オブジェクトの集合がleft とrightを 通じて二重リンクリストを形づくる. 緩和のステップでは, 全てのセルオブジェクトで step メソッドを 起動する. 各 step メソッドはまず current_value メソッドによって 現在の隣接するセルの値を問い合わせ, それらの値を使って 自分自身を更新する.