球面上の運動の数値計算

こないだの3-sphere上の銀河が面白そうだったんで自分でコード組んでみようとしてるんだけど、なかなかトリッキーですな。まずは三次元球面上に束縛された質点の運動をやってみてるけど、4次のルンゲクッタでエネルギーが保存されない。速度が接平面におさまるようにそのつど補正してるけど、これで運動エネルギーが変わっちゃう。根本から考えてうまい差分スキームを使わねば。
ところで3-sphere 上の重力とかクーロン力とか、自然なのはどんなかんじでしょうか。電気力線を考えると、ある電荷からでた線は球の反対側で全部出会って、ここに反対の電荷があるようになっちゃう。重力の場合も同様に、ある質点の反対側に、反発する重力を及ぼすような質点ができてしまう。SFとしては面白いかも。