3 次元空間のいくつかの物体で吸収と反射を伴う伝播波をシミュレートしたいと考えています。Pythonでやりたい。numpy を使用する必要がありますか? 使用すべき特別なライブラリはありますか?
波をシミュレートするにはどうすればよいですか?波動方程式は使えますか?しかし、私が反射を持っている場合はどうなりますか?より良い方法はありますか?ベクトルでやるべきですか?しかし、光線が発散すると、強度は低くなります。難しい。
前もって感謝します。
3 次元空間のいくつかの物体で吸収と反射を伴う伝播波をシミュレートしたいと考えています。Pythonでやりたい。numpy を使用する必要がありますか? 使用すべき特別なライブラリはありますか?
波をシミュレートするにはどうすればよいですか?波動方程式は使えますか?しかし、私が反射を持っている場合はどうなりますか?より良い方法はありますか?ベクトルでやるべきですか?しかし、光線が発散すると、強度は低くなります。難しい。
前もって感謝します。
Pythonで計算量の多い数値シミュレーションを行う場合は、必ずNumPyを使用する必要があります。
任意の形状の材料で電磁波をシミュレートするための最も一般的なアルゴリズムは、有限差分時間領域法(FDTD)です。これは、3D格子上で、一度に1つのタイムステップで波動方程式を解きます。ただし、自分でプログラムするのは非常に複雑であり、 Meepなどの専用パッケージを使用する方がよいでしょう。
独自のFDTDシミュレーションを作成する方法についての本があります。これは、 1 -D FDTDのコードと複数の次元の説明を含むドキュメントです。グーグルで「FDTDを作成する」と、同じことがわかります。
また、すべての波が平面波であると仮定して問題に取り組むこともできます。次に、ベクトルとフレネルの式を使用できます。または、平面または曲面から透過および反射されるガウスビームをモデル化する場合は、ABCD行列形式(光線伝達行列とも呼ばれます)を使用できます。これは、ビームの発散を考慮に入れています。
シミュレーションを構築するフレームワークとして、私のプロジェクトGarlicSimを使用することをお勧めします。おそらく Numpy でアルゴリズムを自分で記述する必要がありますが、GarlicSim を使用すると定型文の束を節約でき、バージョン管理システムと同様に柔軟な方法でシミュレーション結果を調べることができます。
Python を使用しないでください。計算コストの高いものに使用しようとしましたが、そのためには作られていませんでした。
Python プログラムで波をシミュレートする必要がある場合は、必要なコードを C/C++ で記述し、Python にエクスポートします。
C API へのリンクは次のとおりです: http://docs.python.org/c-api/
世界で最も簡単な API ではないことに注意してください :)