(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-10
(45)【発行日】2024-01-18
(54)【発明の名称】ユーザ入力を動的に受け入れる高速で効率的なリアルタイム電磁システムシミュレータ
(51)【国際特許分類】
G09B 23/18 20060101AFI20240111BHJP
【FI】
G09B23/18 Z
(21)【出願番号】P 2021545255
(86)(22)【出願日】2019-10-10
(86)【国際出願番号】 US2019055719
(87)【国際公開番号】W WO2020077147
(87)【国際公開日】2020-04-16
【審査請求日】2022-07-21
(32)【優先日】2018-10-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521156929
【氏名又は名称】エロヴェオ インコーポレイテッド
(74)【代理人】
【識別番号】100094569
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109335
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【氏名又は名称】那須 威夫
(72)【発明者】
【氏名】コレラン デヴィッド エム
(72)【発明者】
【氏名】フェルナンデス カルロス マヌエル ゴディーノ
【審査官】池田 剛志
(56)【参考文献】
【文献】特開2015-179407(JP,A)
【文献】国際公開第2017/060644(WO,A1)
【文献】銭 蘇華 ほか,電界・磁界中の電荷運動のJavaシミュレーション,平成26年 電気学会全国大会講演論文集 [CD-ROM],2014年03月05日,第1分冊,p.12
【文献】小高 知宏,Pythonによる数値計算とシミュレーション,第1版 ,株式会社オーム社(村上 和夫),2018年01月25日,p.35-50
【文献】POPAT S. TAMBADE,Trajectory of Charged Particle in Combined Electric and Magnetic Fields Using Interactive Spreadsheets,European Journal of Physics Education,Vol. 2, No. 2,2011年04月02日,p.49-59,URL:<http://eu-journal.org/index.php/EJPE/article/view/136/134>,[2023年7月28日検索]
(58)【調査した分野】(Int.Cl.,DB名)
G09B 23/18
(57)【特許請求の範囲】
【請求項1】
コンピュータシステムの1又は2以上のプロセッサによって処理された時に方法を実行させるプログラムコードを含む機械可読記憶媒体であって、前記方法は、
i)自由空間内の1又は2以上の電荷及び/又は1又は2以上の電流ループのそれぞれの位置及び動きと、
ii)前記自由空間内の電気回路内のノード上の電荷と、
iii)前記電気回路内の電荷移動と、
に応答して、前記自由空間内の電場及び/又は磁場を計算するステップと、
前記電場及び/又は磁場によって前記1又は2以上の電荷及び/又は前記1又は2以上の電流ループに加わるそれぞれの力に応答して、前記自由空間内の前記1又は2以上の電荷及び/又は前記1又は2以上の電流ループの新たなそれぞれの位置及び動きを計算するステップと、
前記自由空間内の前記1又は2以上の電荷及び/又は前記1又は2以上の電流ループの前記新たな位置及び動きと、前記電気回路内の前記ノード上の前記電荷と、前記電気回路内の前記電荷移動とに応答して、前記電気回路内のノード上の新たな電荷と前記電気回路内の新たな電荷移動とを計算するステップと、
前記自由空間内の前記1又は2以上の電荷及び/又は1又は2以上の電流ループの前記新たなそれぞれの位置及び動きと、前記電気回路内の前記新たな電荷移動とに従って、前記1又は2以上の電荷及び/又は前記1又は2以上の電流ループのそれぞれの画像を前記コンピュータシステムのディスプレイ上に同時にレンダリングするステップと、
前記自由空間内の電場及び/又は磁場を計算するステップと、前記自由空間内の前記1又は2以上の電荷及び/又は前記1又は2以上の電流ループの新たなそれぞれの位置及び動きを計算するステップと、前記電気回路内のノード上の新たな電荷と前記電気回路内の新たな電荷移動とを計算するステップと、前記ディスプレイ上に同時にレンダリングするステップを繰り返して、前記自由空間内の前記1又は2以上の電荷及び/又は前記1又は2以上の電流ループ、並びに前記電気回路内の電荷移動のそれぞれの相互作用的挙動を前記ディスプレイ上に流動的にレンダリングするステップと、
を含む、ことを特徴とする機械可読記憶媒体。
【請求項2】
前記方法は、前記それぞれの相互作用的挙動が前記ディスプレイ上に流動的にレンダリングされている間に、さらなる1又は2以上の電荷及び/又はさらなる1又は2以上の電流ループを前記ディスプレイ上に流動的に導入する入力をユーザから受け入れるステップをさらに含む、
請求項1に記載の機械可読記憶媒体。
【請求項3】
前記方法は、前記電場及び/又は磁場のそれぞれの画像を前記ディスプレイ上にレンダリングするステップをさらに含む、
請求項1に記載の機械可読記憶媒体。
【請求項4】
前記コンピュータシステムのGPUが、前記レンダリングのための表示データを生成し、自由空間内の前記電場及び/又は磁場の前記計算を実行する、
請求項3に記載の機械可読記憶媒体。
【請求項5】
前記コンピュータシステムのCPUが、前記電気回路内の前記新たな電荷及び前記電気回路内の新たな電荷移動の前記計算を実行する、
請求項4に記載の機械可読記憶媒体。
【請求項6】
前記電気回路は、
インダクタンス、
静電容量、
バッテリ、
抵抗器、
のうちのいずれかを含む、請求項1に記載の機械可読記憶媒体。
【請求項7】
コンピュータシステムの1又は2以上のプロセッサによって処理された時に方法を実行させるプログラムコードを含む機械可読記憶媒体であって、前記方法は、
自由空間内の1又は2以上の電荷及び/又は1又は2以上の電流ループのそれぞれの位置及び動きに応答して、前記電場及び/又は磁場の数値近似を実施するように構成された、前記1又は2以上のプロセッサの命令を実行することを含めて、前記自由空間内の電場及び/又は磁場を計算するステップと、
いずれも前記自由空間内の導電性構造に固有のものである電場表現及び電荷分布表現から、前記導電性構造上の電荷分布を決定し、前記導電性構造から又は前記導電性構造への電場を計算するステップと、
前記電場及び/又は磁場及び又は前記導電性構造からの又は前記導電性構造への電場によって前記1又は2以上の電荷及び/又は前記1又は2以上の電流ループに加わるそれぞれの力に応答して、前記自由空間内の前記1又は2以上の電荷及び/又は前記1又は2以上の電流ループの新たなそれぞれの位置及び動きを計算するステップと、
前記新たなそれぞれの位置及び動きに従って、前記1又は2以上の電荷及び/又は前記1又は2以上の電流ループのそれぞれの画像を前記コンピュータシステムのディスプレイ上に同時にレンダリングするステップと、
前記自由空間内の電場及び/又は磁場を計算するステップと、前記導電性構造上の電荷分布を決定し、前記導電性構造から又は前記導電性構造への電場を計算するステップと、前記1又は2以上の電荷及び/又は前記1又は2以上の電流ループの新たなそれぞれの位置及び動きを計算するステップと、前記ディスプレイ上に同時にレンダリングするステップを繰り返して、前記自由空間内の前記1又は2以上の電荷及び/又は前記1又は2以上の電流ループのそれぞれの相互作用的挙動を前記ディスプレイ上に流動的にレンダリングするステップと、
を含む、ことを特徴とする機械可読記憶媒体。
【請求項8】
前記方法は、前記1又は2以上の電荷及び/又は前記1又は2以上の電流ループの前記相互作用的挙動が前記自由空間内で流動的にレンダリングされている間に、さらなる1又は2以上の電荷及び/又はさらなる1又は2以上の電流ループを前記ディスプレイ上に流動的に導入する入力をユーザから受け入れるステップをさらに含む、
請求項7に記載の機械可読記憶媒体。
【請求項9】
前記方法は、前記電場及び/又は磁場のそれぞれの画像を、自由空間内の前記1又は2以上の電荷及び/又は1又は2以上の磁気ループと共に前記ディスプレイ上にレンダリングするステップをさらに含む、
請求項7に記載の機械可読記憶媒体。
【請求項10】
前記導電性構造は、円板又は球体である、
請求項7に記載の機械可読記憶媒体。
【請求項11】
前記1又は2以上の電荷の数は100を上回ることができ、前記100を上回る1又は2以上の電荷の前記流動的な相互作用的挙動は、前記ディスプレイ上に60fpsで流動的にレンダリング可能である、
請求項7に記載の機械可読記憶媒体。
【請求項12】
前記コンピュータシステムの中央処理装置(CPU)が、前記電場及び/又は磁場の前記計算と、前記新たなそれぞれの位置及び動きの前記計算とを実行し、前記コンピュータシステムのグラフィックプロセッシングユニット(GPU)が、前記レンダリングを実行し、前記CPU及びGPUは、パイプライン方式で動作する、
請求項7に記載の機械可読記憶媒体。
【請求項13】
前記コンピュータシステムの前記GPUは、前記レンダリングのための表示データを生成し、前記電場及び/又は磁場の前記計算を実行する、
請求項7に記載の機械可読記憶媒体。
【請求項14】
請求項1から13のいずれかに記載の機械可読記憶媒体を備える、
ことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に計算科学に関し、具体的には、ユーザ入力を動的に受け入れる高速で効率的なリアルタイム電磁システムシミュレータに関する。
この発明は、米国科学財団(National Science Foundation)によって授与された、助成/契約番号(grant/contract number)1927081に基づく米国政府の支援によってなされた。したがって、米国政府はこの発明における権利を有する。
【背景技術】
【0002】
電磁システムは極めて複雑である。電磁システムの挙動の把握は、電磁気学を学んでいる学生又は電磁システムを設計している技術者の両方にとって特に困難である。また、このようなシステムの複雑さに起因して現代のシミュレータは扱いにくく、単純な電磁システム/環境であっても完全にシミュレートするには異常なほど長い時間を必要とする。
【発明の概要】
【課題を解決するための手段】
【0003】
以下の詳細な説明を以下の図面と併用することによって本発明をより良く理解することができる。
【図面の簡単な説明】
【0004】
【
図1a】基本電磁場及びその発生源を示す図である。
【
図1b】基本電磁場及びその発生源を示す図である。
【
図1c】基本電磁場及びその発生源を示す図である。
【
図1d】基本電磁場及びその発生源を示す図である。
【
図1e】基本電磁場及びその発生源を示す図である。
【
図1f】基本電磁場及びその発生源を示す図である。
【
図1g】基本電磁場及びその発生源を示す図である。
【
図1h】基本電磁場及びその発生源を示す図である。
【
図1i】基本電磁場及びその発生源を示す図である。
【
図1j】基本電磁場及びその発生源を示す図である。
【
図1k】基本電磁場及びその発生源を示す図である。
【
図2a】例示的な自由空間シミュレーションを示す図である。
【
図2b】例示的な自由空間シミュレーションを示す図である。
【
図2c】例示的な自由空間シミュレーションを示す図である。
【
図2d】例示的な自由空間シミュレーションを示す図である。
【
図2e】例示的な自由空間シミュレーションを示す図である。
【
図2f】例示的な自由空間シミュレーションを示す図である。
【
図2g】例示的な自由空間シミュレーションを示す図である。
【
図2h】例示的な自由空間シミュレーションを示す図である。
【
図2i】例示的な自由空間シミュレーションを示す図である。
【
図2j】例示的な自由空間シミュレーションを示す図である。
【
図2k】例示的な自由空間シミュレーションを示す図である。
【
図2l】例示的な自由空間シミュレーションを示す図である。
【
図2m】例示的な自由空間シミュレーションを示す図である。
【
図3】第1のシミュレーション方法を示す図である。
【
図4】第2のシミュレーション方法を示す図である。
【
図5】第3のシミュレーション方法を示す図である。
【
図6】第4のシミュレーション方法を示す図である。
【
図7a】例示的な回路と自由空間との組み合わせシミュレーションを示す図である。
【
図7b】例示的な回路と自由空間との組み合わせシミュレーションを示す図である。
【
図7c】例示的な回路と自由空間との組み合わせシミュレーションを示す図である。
【
図7d】例示的な回路と自由空間との組み合わせシミュレーションを示す図である。
【
図7e】例示的な回路と自由空間との組み合わせシミュレーションを示す図である。
【
図7f】例示的な回路と自由空間との組み合わせシミュレーションを示す図である。
【発明を実施するための形態】
【0005】
電磁システムを規定するユーザ入力を動的に受け入れてシステムの挙動をリアルタイムで視覚的にレンダリングできるシミュレータは、例えば電磁システム内で発生する物理過程を学生が容易に把握し、学習し、場合によってはそのための直感的感覚を発達させるのに役立つことができる。
【0006】
1.0 電気及び磁気の基本単位
図1a~
図1kに、電気の基本単位、磁気の基本単位、これらがもたらす力、及びこれらの力に対するその反応を示す。基本的に、
図1a~
図1kの説明は基礎的な周知の物理学の概観であるが、以下でさらに完全に説明する上述したシミュレータによって実行される基礎計算の概論としての役割も果たす。シミュレートできる物理的構成は、例えば自由空間又はその他の2次元又は3次元空間、及び/又は、1又は2以上の導体(例えば、ワイヤ、ワイヤセグメント、導体板など)、コンデンサ、インダクタ、抵抗器及び/又はバッテリを含む1又は2以上の電気部品を有する電子回路構造を含む。
【0007】
一般に、シミュレータによってシミュレートされるシステムは、静止物体(例えば、ワイヤ、磁石、導体板、抵抗器、バッテリなど)と移動可能な物体とを含むことができる。
図1a及び
図1bを参照すると、移動可能な基本的物体は、正電荷又は負電荷を割り当てることができる電子点電荷(electronic point charge)(又は「自由電荷」)である。ここでは基礎物理学から周知のように、
図1aを参照すると正の点電荷がそれ自体から外向き電場を球状に放射し、
図1bを参照すると負の点電荷がそれ自体に内向き電場を球状に沈降/終端させる。また、電場の存在下では、
図1cに示すように、正電荷は正電荷を電場の方向に移動させる力を受けるのに対し、負電荷は負電荷を電場と逆の方向に移動させる力を受ける。
【0008】
点電荷によって形成される電場の古典的表現は以下の通りであり、
方程式1
ここでkは、電荷を取り囲む空間の誘電率に関与する定数であり、qは点電荷の帯電の大きさであり、rは点電荷からの半径方向距離であり、
は半径方向の単位ベクトルである。この表現は、正電荷が外向きの(正の)放射場を形成し、負電荷が内向きの/沈降する(負の)放射場を形成するという点でベクトル式である。
【0009】
図1d~
図1gに示すように、移動する点電荷は磁場を形成する。すなわち、電場は点電荷から形成できるが、これとは対照的に厳密な理論では磁場のための点電荷は存在しない。
図1d及び
図1eに示すように、例えば直線ワイヤを通じて電流が流れると、電流フローの周囲を循環する半径方向磁場が形成される。磁場の方向は、電流フローの方向に依存する。
【0010】
図1f及び
図1gに示すように、電流がループ状に(すなわち、それ自体に閉じる連続経路で)移動すると磁気「双極子」が形成される。磁気双極子の古典的イメージは、狭い(半径の小さな)円形の電流フローがその断面を通じてそこから外向きに放射して電流フローの周囲を循環する磁場を形成するものである。電流ループの断面から外向きに広がる磁場は双極子の「北」端として認識され、電流ループの断面に内向きに沈降する戻り磁場は双極子の「南」端として認識される。双極子のどちらの端部が北端であり双極子のどちらの端部が南端であるかは、電流フローの方向に依存する。
【0011】
長いワイヤ内の電流フローによって形成される磁場の古典的表現は以下の通りであり、
方程式2a
ここでBは磁場強度であり、Iは電流フローの大きさであり、μは磁場が存在する空間の誘電率であり、rは電流が流れる軸からの半径方向距離であり、
はrに対して垂直な方向の単位ベクトルである。一般に、高い誘電率μを有する空間(本質的に高磁性の空間)ほど大きな磁場を形成する。電流ループ(磁気双極子)の場合、方程式2aは以下のようになり、
方程式2b
ここでrはループの中心からの距離であり、aは軸方向(y)距離であり、Rはループの半径であり、q=r
2+R
2+a
2+2rRであり、
である。E(√m)及びK(√m)は、(それぞれ)第1種及び第2種の楕円積分を表す。いずれかの地点における磁場は、ループの軸から外向きの半径方向成分
、及びループの軸に平行な軸方向成分
の両方を有するようになる。
【0012】
図1hに示すように、磁石(例えば、磁性体のスラブ)は、例えば3次元配列様構造に密に充填された複数の磁気双極子としてモデル化することができる。ここでは、充填構造内の各双極子によって発生する磁場が、磁石によって発生する磁場に全体として寄与する。磁石は、単位体積当たりの双極子の数が多いほど、及び/又は双極子当たりのループ電流が大きいほど磁気が強くなる(磁石から強い磁場が発散する)。
【0013】
磁気双極子又は磁石のN端とS端は、磁気「モーメント」としてモデル化することができる。磁場の存在下では、
図1iに示すように、磁石又は磁気双極子のN端が磁場の方向に移動しようとし、S端が磁場とは逆の方向に移動しようとする。磁気双極子は、両端が逆方向に「引き合う」ことによって、N端が磁場の発生源のN端から遠ざかってS端が磁場の発生源のN端に近づくように回転し、又は別様に磁場と整列する。
【0014】
図1jに示すように、点電荷が磁場の配向と垂直な方向に移動すると、有効電場が形成されて点電荷にトルクが加わる。さらに、このトルクが点電荷の移動方向を回転させる。この回転方向は、電荷が正又は負のいずれであるかと磁場の方向との組み合わせに依存する。基本的に、
図1jの挙動は、
図1f及び
図1gに関して上述した磁気双極子に関する上述した挙動の必然的帰結とみなすことができる。
【0015】
移動する点電荷に加わる有効電場の単純表現は以下の通りである。
方程式3
ここでvは、移動する点電荷の速度であり、「X」は外積演算(cross product operation)であり、Bは磁場の磁束密度である。
【0016】
最後に、
図1k及び
図1lに示すように、磁場が変化すると、具体的には同じ断面積を横切る磁束線が変化すると、変化する磁束線の周囲を循環する電場が形成される。電場の循環方向/配向は、この断面積を通る磁束が変化する方向に依存する。
【0017】
円形断面を通る変化する磁場によって形成される電場の表現は以下の通りであり、
E=(A/2πr)(δB/δt)
方程式4
ここでAは円形断面の面積であり、rは円形断面の半径であり、(δB/δt)は円形断面を通る単位面積当たりの磁束強度の変化率である。
【0018】
2.0 「自由空間」電気及び/又は磁気システムのためのシミュレータ
上記の説明から要約すると、特定の点電荷には、i)他の点電荷、ii)変化する磁場、及び/又はiii)磁場を通じた点電荷の移動によって形成される電場が加わる。点電荷におけるこれらの電場の純合計が、点電荷に加わる正味電場をもたらすことができる。さらに、この正味電場が、点電荷に加わって点電荷を動かす正味の力(F)をもたらす。具体的に言えば、点電荷は以下の方程式に従って加速し、
方程式5
ここでaは加速度であり、
は様々な応用場からの正味の力(この力は
として表現し直され、ここでqは点電荷の電荷であり、
は点電荷が受ける正味電場である)であり、mは点電荷の質量である。加速度は、特定の方向を有するベクトルとして表すことができる。最終的に、この方向は、加わった電場の(単複の)方向、これらのそれぞれの強さ、及び点電荷の極性(正又は負)によって生じる。
【0019】
また、特定の磁気双極子には、i)他の磁気双極子及び/又は磁石、及びii)電流(移動する自由電荷)によって形成される磁場が加わる。磁気双極子におけるこれらの磁場の純合計が、磁気双極子に加わる正味磁場(net magnetic field)をもたらすことができる。さらに、この正味磁場が、磁気双極子に加わって双極子を回転させ、又は別様にその位置を動かす正味の力をもたらす。この動きは、特定の方向を有するベクトルとして表すことができる。最終的に、この方向は、加わった磁場の(単複の)方向、磁場のそれぞれの強さ、並びに双極子のN端及びS端の配向によって生じる。
【0020】
以上より、電荷及び磁気双極子のシステムは複雑な相互作用を伴うことが明らかなはずである。ここでは、例えば電荷が互いに作用する(場を形成して印加力をもたらす)ことによって電荷を動かし、これによって印加電場/力が直ちに影響され/変化するだけでなく、電荷の正味移動に寄与するさらなる力を加える磁場も形成される。磁気双極子及び/又は磁石の存在下では、これらの相互作用とこれらに由来する場及び力とがさらに複雑になる場合もある。
【0021】
上述したシミュレータは、「自由空間」電磁システムのこれらの複雑な相互作用を解決するだけでなく、ユーザインタラクションを使用して「リアルタイム」でこれを行い、高性能プロセッサハードウェアに依拠する必要がない。従って、このシミュレータは、教育ツールとしての著しい有用性があると考えられる。例えば、このシミュレータをタブレットコンピュータにインストールすることができる。学生/ユーザは、画面をタップして、シミュレートすべきシステムの物体(1又は2以上の電荷、双極子、磁石、回路構造など)を追加することができる。すると、シミュレータは、タブレットのディスプレイ上でシステムをリアルタイムで図形的にシミュレートし、すなわち電荷及び/又は双極子の相互作用及び他のいずれかの外部的に加わった電位(例えば、バッテリ)に応答した動きがディスプレイ上に提示される。
【0022】
ユーザは、いつでも自由にシミュレーションを中断してその状態を変化させることができる。例えば、ユーザは、特定の位置にさらに電荷を追加し、特定の位置から既存の電荷を除去し、回路構成を変更し、磁石を追加することなどができる。その後、このシミュレータは、ユーザが強要した変更の後にもほとんど/全く流動性を失うことなく、新たなシステムの応答を直ちにシミュレートしてレンダリングすることができる。
【0023】
図2a~
図2mに、単純化した例示的なシミュレーション、及び対応するユーザインタラクションを示す。回路構造を含むシミュレーション環境などのより高度なシミュレーション環境については、以下でさらに詳細に示す。
【0024】
図2aでは、ユーザが画面の第1の位置201をタップする。このタップに応答してメニュー(図示せず)が現れ、ユーザはここから単一の正電荷の追加を選択する。
図2bには、ユーザによってシステムに電荷が導入された後の画面表示を示す。ここでは、システムが、いずれの印加電場にも曝されていない(システム内に他の物体が存在しない)単一の正電荷から成る。従って、正電荷はいずれの印加力も受けず適所に留まる。
【0025】
次に、
図2cでは、ユーザが別の画面位置をタップして単一の負電荷を追加する。ここでは、正電荷の発散場(emanating fields)(図示せず)が負電荷を引き込み(引き付け)、同様に負電荷の沈降場(sinking fields)(やはり図示せず)が正電荷を引き込む。従って、
図2dに示すように2つの電荷は互いに接近し始める。方程式1の静電気力方程式から、電荷は互いに近づくにつれてその引力が互いに増加し、互いの方に向かう加速度が増え続けるようになる。ここでは、
図2d~
図2fの時間単位が等しいと仮定すると、電荷は非線形的加速度で互いの方に向かって加速するので、電荷間の距離の減少が次第に大きくなる。
【0026】
最終的に、これらの電荷対は
図2gに示すように衝突する。両電荷がいくらかの質量を有するものとしてモデル化された場合、これらは(ビリヤード台上のビリヤード球のように)機械的衝突を示す。これらは、最初は弾性衝突によって互いに跳ね返るが、これらの間の静電引力によって
図2hに示すように再び互いに加速度が戻る。これらは再び衝突するが、この衝突速度は最初の衝突よりもはるかに小さく(粒子が互いの方に向かって加速する距離が最初の衝突よりもはるかに短く)、従ってほとんど跳ね返らない。最終的に全ての衝突が停止して、粒子は静電的に「くっつき合う」(そして静電双極子202を形成する)。しかしながら、
図2iに示すように、球状電荷の移動方向の軸外で衝突が発生した(電荷がその移動方向に対して「正面から」衝突しなかった)ことにより、機械的衝突動作のエネルギーは大部分が回転エネルギーに変換される(静電双極子が回転する)。
【0027】
その後、ユーザは、
図2jに示すように再び画面をタップして正及び負電荷を追加する。静電双極子は、(力線が磁力線ではなく電場線(electric field lines)であることを除き)
図1fの磁気双極子と同様の関連する電場線を発散する。静電双極子からの電場線は追加された電荷と相互作用し、新たに追加された各電荷からの電場は静電双極子及び他の各電荷と相互作用する。要するに、複雑な場の配置、場からの力、及び結果として生じる各物体(静電双極子及び新たに追加された電荷)の動きが形成される。
【0028】
シミュレータはこれらを全て計算し、結果として生じる静電双極子及び新たに追加された電荷の動きをリアルタイムでレンダリングする(ユーザが新たな電荷を追加した直後にこれらの相互作用が観察される)。移動物体がその動きから独自の磁場を形成し、このような磁場がそれぞれの電荷の動きによって変化し、及び/又は他の電荷がこのような磁場内を移動する限り、電荷の動きにさらに影響するさらなる電場が形成されたりする可能性がある。また、シミュレータは、全てのこのような場、結果としてこのような場から物体に加わる力、及びそれぞれの合力に応答した結果としての各個々の物体の動きも計算する。この動きは画面上にレンダリングされ、この過程は
図2k及び
図2lに示すように継続的に繰り返される。
【0029】
図2k及び
図2lに示すように、異極性の最近隣電荷同士が最も強く引き付けられて、最初に複数の回転する静電双極子を形成する。その後、結果として生じた双極子が互いに相互作用して、
図2mに示すような最終的な最も低いエネルギー状態の静電気構造となり、この静電気構造は、電荷間の、及びその後の双極子間の衝突を引き起こした複雑な性質に由来する何らかの半径方向速度で回転する。
【0030】
単純化のために、
図2a~
図2mの模擬システムでは磁気双極子又は磁石を省略している。しかしながら、仮に(例えば、ユーザが画面をタップしてその位置にこれらを追加することによって)このシステムに磁気双極子又は磁石が導入されていた場合には、(単複の)磁気物体によって発生したそれぞれの磁場を通過するいずれかの静電物体の動きによって、移動する静電物体の動きに屈曲が生じた可能性がある。同様に、移動する静電物体によって結果的に形成された磁場により、例えば磁気双極子又は磁石の磁気双極子モーメントの回転が生じた可能性もある。この場合も、シミュレータは、結果として生じる磁場/力を計算する。
【0031】
図3に、このシミュレータを実装するコンピュータシステム(例えば、タブレットコンピュータ)の処理リソース(例えば、(単複の)中央処理装置(CPU)及び/又は(単複の)グラフィックプロセッシングユニット(GPU))によって実行されるプロセスフローを示す。
図3に示すように、最初にシステム内の各物体のアイデンティティ(例えば、正電荷、負電荷など)と、このような各物体のそれぞれの位置(例えば、2Dシミュレーションではその(x,y))と、(存在する場合には)このような各物体のそれぞれの動きとを入力情報として取り込む。
【0032】
新たな環境をシミュレートする場合、入力情報は、最初にシステムに追加される第1の1又は複数の物体に対応する。例えば、一例として
図2a~
図2jのシミュレーションを使用すると、
図2cの最初の電荷対がシミュレータへの入力に対応することができる。ここでは、正電荷が識別されてその位置が提供されるとともに、負電荷も識別されてその位置が提供される。次に、各物体の結果として生じる場の表現を生成する(301)。
【0033】
ここでも、一例として
図2a~
図2jのシミュレーションの例を使用すると、
図2cの両電荷によって生じる場のそれぞれの表現が生成される。再び式1を参照すると、正電荷によって生じる場の表現は正のq項を有し、負電荷によって生じる場の表現は負のq項を有する。様々な実施形態では、各電荷が独自の特定の電荷の大きさ(例えば、+5q、+4qなど)を有するが、様々な実施形態では、正電荷及び負電荷の両方にデフォルトの同じ電荷(例えば、+/-1q)が使用される。
【0034】
各電荷によって生じる電場は、方程式1を使用してCPU又はGPU内で効率的に計算することができる。方程式2bの電流リングからの空間内のいずれかの地点における磁場は、閉形式解(closed-form solution)を有していない楕円積分を含み、従ってCPU又はGPU内で計算することができない。ある実施形態では、電流リングによって生じる(単複の)磁場の表現が、特定の磁場のための古典的方程式の級数展開近似(例えば、テイラー又はマクローリン級数展開)として実装される(例えば、テイラー又はマクローリン級数展開を使用して方程式2bを電流リングのために近似させる)。また、さらなる近似として、この表現には展開のうちの最重要項のほんの一部しか含まれない(高次項は含まれない)。従って、例えば、
図1fの電流リングから発生する磁場のコードに書き込まれる表現は以下のような形をとることができる。
展開のうちの3項のみを使用する場合、
B=(a
0+a
1(x-x
ob)+a
2(x-x
ob)
2)
x+(b
0+b
1(y-y
ob)+b
2(y-y
ob)
2)
y
方程式6a
或いは、展開のうちの4項のみを使用する場合、
B=(a
0+a
1(x-x
ob)+a
2(x-x
ob)
2+a
3(x-x
ob)
3)
x+(b
0+b
1(y-y
ob)+b
2(y-y
ob)
2+b
2(x-x
ob)
2)
y
方程式6b
【0035】
上記の方程式では、係数ai及びbiが、適用できる古典的表現(例えば、方程式2b)のスカラー/係数項から、利用される特定のタイプの級数展開についてai及びbi項が導出される形で直接導出される。結果として得られる場(B)は、x成分及びy成分の両方を有するベクトルとして表され、従って2Dシミュレーションに適用することができる。第3のベクトル成分(
z
)を導入して、3次元にわたるシミュレーションをサポートすることもできる。
【0036】
上述したように、この表現は、磁場を発生させる物体の位置(x
ob,y
ob)を考慮するようにオフセットを含む。すなわち、磁場
Bは、位置(x
ob,y
ob)に存在する電流リングによって生じる磁場である。同様に、電場
Eは、位置(x
ob,y
ob)に存在する電荷によって生じる電場である。従って、再び
図2cの例示的なシミュレーションを参照すると、シミュレータのプログラムコードは、正電荷のx,y位置をオフセットとして含む、正電荷によって形成される電場のための第1の表現、及び負電荷のx,y位置をオフセットとして含む、負電荷によって形成される電場のための第2の表現という2つの電場表現を生成する。
【0037】
方程式2bと同様の方法で、リング状の電荷、円板状の電荷又はその他の電荷構成からの空間内のいずれかの地点における電場を展開して、方程式6a及び方程式6bと同様の方法で近似させることもできる。任意の電流構成からの磁場も同様に取り扱うことができる。高次項を含まない級数展開の数学的結果は、より完全な理論的解析によってもたらされるものに対して若干の誤差を有するが、この誤差は、アニメーションによるレンダリングという目的からすれば無視できるものである(レンダリングされた物体の動きが、実際のシステム内の物体の動き方とほんのわずかに異なる)。
【0038】
重要なのは、各場表現を例えば各次元についてほんのわずかな項の多項式に簡素化してシミュレーションの演算密度(computational intensity)を大幅に低減することである。ここでは、例えばスマートフォン又はタブレットコンピュータなどのモバイル装置の典型的なCPU及び/又はGPUが、各場表現をほんのわずかな乗累算命令(multiply-accumulate instructions)などにおいてオブジェクトコードレベルで実行することができる。一例として、標準的なタブレットCPUでは、10,000を超える電場計算を16ミリ秒未満で処理することができ、このことは100個を超える電荷を毎秒60フレームのフレームリフレッシュレートで画面上で効率的に処理することに相当する。同様に、同じCPUにおいて、3,600を超える磁場計算を毎秒流体60フレームのリフレッシュレートで処理することもできる。これらの計算をGPUに移行させれば、さらなる改善を図ることができる。
【0039】
従って、プロセス301の実行は、様々な物体の新たな位置、速度などのデータに応答して、適用可能な各場の新たな表現を決定することを伴う。コンピュータシステムの機構という観点では、このことが、シミュレーションに登場する各場の級数展開のための新たな係数値を計算して、これらをシステム内に(例えば、CPUのレジスタ空間及び/又はシステムメモリに)保存することを伴う。
【0040】
シミュレータは、各場の表現を計算した後に、システム内に存在する様々な場によって各物体に加わる力を計算し、結果として生じる各物体の動きを決定する(302)。ここで再び
図2a~
図2jの例示的なシミュレーションを参照すると、最初の反復中に、正電荷に加わる電場は、負電荷によって発生する電場の表現のx,y項に正電荷のx,y位置を挿入することによって求められる。ここでは、
F=m
a、又は
a=q
E/m
方程式7
であり、
Eは正電荷に加わる電場であり、mは(正電荷物体の入力記述において定義することもできる)正電荷の質量であり、
aは正電荷の加速度である。ここでは、
Eがx及びy成分を有するベクトルであることを考えると、
aもx及びy成分を有するベクトルである。
【0041】
従って、正電荷に誘起される動きは以下のように決定することができ、
v=aΔt+v
0
=(axΔt+v0x)x+(ayΔt+v0y)y=((Fx/m)Δt+v0x)x+((Fy/m)Δt+v0y)y
方程式8
ここでvは正電荷の速度であり、ax及びayは正電荷の加速度のx及びy成分であり、v0x及びv0yは正電荷のx及びy方向の初期速度項(システムの初期の「静止」した開始状態中は両項ともゼロ)であり、Δtはシミュレーションのレンダリング画像間に生じる時間である。上記の速度方程式は、(加速度を一定と仮定して)以下の変位方程式に組み込まれ、
xnew=xob+1/2Fx/m)Δt^2+v0xΔt
方程式9a
ynew=yob+1/2(Fy/m)Δt^2+v0yΔt
方程式9b
ここでxnewは正電荷の新たなx座標位置であり、ynewは正電荷の新たなy座標位置である。従って、物体のリアルタイムな動きをレンダリング画像当たりΔtの時間単位でレンダリングするシミュレーションでは、次のレンダリング画像が正電荷を位置(xob,yobではなく)xnew,ynewに描き、ユーザの肉眼には、位置xob,yobから位置xnew,ynewへの正電荷の動きとして見えるようになる。負電荷についても同一の計算が行われるが、この場合、負電荷に加わる電場は、x,y項を有する正電荷を負電荷の位置に設定することによって生成される電場の表現から決定される。物体の速度は物体の位置と共に保持され、従って次の反復の初期速度(v0)として使用することができる。
【0042】
従って、力/動きの計算302の終了時には、両物体(正電荷及び負電荷の両方)の新たな位置が提供される。次に、プロセスは、前の画像のレンダリング以降にユーザが(
図2cの初期設定後には存在しなかった)いずれかの入力タップ/タッチを行ったかどうかを問い合わせる(303)。その後、プロセスは、物体を新たな位置に再描画する(304)。ここでは、例えば
図2cの初期位置に対する動きを示す
図2dに見られる位置に物体を再描画することができる。レンダリングプロセス304は、ソフトウェアにおいて新たな像(又はフレーム)を「描画する」(例えば、GPUに対してローカルなメモリに新たな画像を書き込む)だけでなく、ディスプレイ上に物理的に新たな画像を描画する(例えば、GPUの局所のメモリから新たなデータを読み出してこれをディスプレイドライバ回路に送信し、ディスプレイドライバ回路がディスプレイ上に物理的に新たなフレーム画像を描画する)ことも含む。
【0043】
その後、プロセスは、終わったばかりの反復から決定された(そして直前にディスプレイ上にレンダリングされた)「新たな」物体位置及び速度を、次のレンダリング画像の物体位置を決定する直後の反復のために実行される次の一連の計算の入力位置及び速度として使用して継続的に「ループ」(反復)する。
【0044】
例えば
図2e~
図2gの画像のレンダリングを生じる複数回のループ後には、最終的に正電荷と負電荷との衝突が発生する。ここでは、力及び物体移動の計算302が、例えば
図2hの表示の直前のループにおいて電荷の速度を決定するだけでなく電荷同士の衝突も検出し、その後に例えば(級数展開近似として表すこともできる)運動量保存式を実行して衝突後の電荷の動き及び結果としての位置を計算し、これらが
図2hに示すようにレンダリングされる。
【0045】
その後、プロセスは継続的に反復する。複数回のループ後、電気力及び機械力(衝突)の計算302は落ち着き、電荷対は静電双極子として静電的に安定した状態に至る(電荷対の静電力の計算はこれらの間の最大引力を示す)。機械力の計算は、双極子の回転を明確に表す結果をもたらし、その後にこれらが
図2iに示すようにレンダリングされる。
【0046】
後続のループ中には、ユーザがさらなる電荷を追加することによってプロセス303がトリガされる。ここでは、プロセス303が、シミュレートされているシステムの全体的記述に各電荷の記述(その(x,y)位置、質量、その電荷の極性)を追加する。この結果、
図2jに示すように新たな電荷がレンダリングされる。次の反復が開始すると、プロセス301は、静電双極子の位置及び動きについての記述だけでなく、新たに追加された電荷についての記述も入力情報として受け入れる。
【0047】
従って、電場計算301は、双極子によって生じる電場の表現だけでなく、新たに追加された各電荷によって生じる電場のそれぞれの表現も含むように拡張される。その後の電気力及び機械的計算302は、新たに追加された各電荷のそれぞれの電場によって双極子に加わる力を決定するとともに、双極子によって形成される電場及び他の新たに追加された全ての電荷によって形成されるそれぞれの電場によって新たに追加された各電荷に加わる力を決定する。しかしながら、この場合も、この計算の拡張により、各計算をどれほど素早く行うことができるか(例えば、各計算のための命令が少ないこと)を原因として数値計算が過度に集約的になることはない。最終的に、電気的及び機械的衝突計算302は、双極子及び新たに追加された各電荷の動き及び位置をその静電相互作用から決定する。その後、各物体の新たに計算された位置がディスプレイ上にレンダリングされる。
【0048】
その後、プログラムフローは反復を継続し、各新たな反復において、各物体の直前に計算された位置及び速度を入力情報として受け入れた後に、この入力情報から物体によって生じる場を計算し(301)、物体に加わる電気力及び機械力と、これに応答する結果的な動き及び位置とを計算し(302)、新たに計算された位置に物体をレンダリングする(304)(
図2jの電荷が追加された後にユーザ入力は発生しない)。これらの反復の結果を、
図2k~
図2lにそれぞれ示す。
【0049】
図3のプロセスの反復を考慮した
図2a~
図2lのレンダリング表示についての上記説明では、単純化のために磁力及び磁気物体を無視している。電荷の移動によって形成される磁場については取り扱わず、磁気双極子又は磁石はユーザによってシステムに追加されていない。様々な実施形態によれば、たとえシステムに意図的に磁気物体が追加されない場合でも、電荷の移動によって磁場が存在することがある(例えば、
図1d~
図1gに関連する説明を参照)。
【0050】
さらに、前節で説明したように、このような磁場が変化し、及び/又はこのような磁場を電荷が通過する限り、電荷の動きに影響を与える電場が形成される可能性がある。さらに、ユーザによって磁石などの磁気物体がシステムに追加された場合、この物体はシステム内の他の物体と相互作用する。例えば、その構成要素である磁気双極子が、電荷の動きによって形成される正味磁場と整列しようとしたり、磁石によって形成された磁場が電荷の動きに影響を与えたりすることがある。
【0051】
これらのシナリオの一部/全部では、プロセス301において決定された一連の場にその場の項を削減した級数近似展開を単に追加することによってシミュレーションに別の場が組み込まれる(例えば、移動電荷によって誘起されるあらゆる磁場を考慮するために、各電荷によって形成される磁場の別の表現が場の方程式の組に追加される)。
【0052】
図4に、シミュレートされるシステム内の磁場及び/又は磁気物体の存在を考慮した、
図3のシミュレーション手法のさらに詳細な実施形態を示す。
図4に示すように、場計算プロセス401は、最初に全ての磁場411を計算した後に(
図3に関して上述したように)システム内の全ての電場を計算する(412)。
図4のシミュレーション手法の力及び応答プロセス402は、システム内の磁気物体に加わる全ての磁力と、このような力に対するあらゆる応答運動(例えば、磁気双極子の回転)とを決定(413)した後に、システム内の全ての電気物体に加わる全ての電気力と、このような力に対するあらゆる応答運動(例えば、あらゆる電荷の加速及び/又は方向変化)とを決定する(414)。
【0053】
ここでは、上述したように、システム内の磁気双極子の存在(例えば、1又は2以上の磁石)及び/又は電荷の動きから磁場が生じることができる。従って、ある実施形態では、磁場計算プロセス401が、最初にシステム内に存在する様々な磁場発生源からそれぞれ形成されるシステム内の各磁場411を計算する(例えば、システム内の各移動電荷、並びにシステム内の各磁気双極子及び/又は磁石について磁場を計算する)。
【0054】
ある実施形態では、移動電荷によって生じる磁場を計算するために、直前の反復によって決定された電荷の速度を使用して電荷の電流を計算する(具体的には、電荷の電流は、電荷の電荷量にその速度を乗算したものである)。次に、この電流を使用して、例えば古典的方程式である方程式2aに従って、移動電荷によって形成される磁場を電荷からの距離の関数として決定する。(システム内のいずれかの磁石の双極子を含む)システム内のいずれかの磁気双極子によって形成される磁場は、例えば古典的方程式である方程式2bに従って決定される。
【0055】
様々な実施形態では、両古典的方程式が、上述した磁場計算と同様に高次項を無視して各場の高速計算を行う級数展開近似として表される。これらの表現は、(例えば、2Dシミュレーションではx及びy成分を有し、或いは3Dシミュレーションではx、y及びz成分を有する)多次元とすることができる。
【0056】
プロセス411の終了時にシステム内の各磁気物体に加わる正味磁場が決定されると、磁場計算プロセス401は、例えば
図3に関して詳細に上述したように電場計算412を実行する。しかしながら、様々な実施形態では、電場計算412が、変化する磁束によって形成される電場と、磁場を通過する移動中の電気物体に加わる電場とを決定するようにさらに強化される。
【0057】
前者(例えば方程式4に表されるような変化する磁束によって形成される電場)の場合には、直前の計算で決定された各磁場発生源からの磁場の表現を保存し、新たに決定された各磁場発生源の表現とのそれぞれの差分をとって各磁場発生源からの磁場の変化の表現を決定する。次に、各磁場発生源からの磁場の変化の表現を使用して、磁束の変化の表現と、このような変化に由来するいずれかの電場とを(例えば、発生源からの距離の関数として)決定する。
【0058】
後者(方程式3に表されるような移動中の電気物体に加わる電場)の場合には、入力項として受け入れられた移動中の各電荷の位置を使用して、移動中の物体に存在する磁場を決定する。電荷の位置に存在する磁場と、入力情報として受け入れられた電荷の速度とを使用して、電荷が受ける電場を決定する。
【0059】
この場合も、様々な実施形態では、一方又は両方の表現が、高次項を無視して各場の高速計算を行う級数展開近似として実装される。これらの表現は、(例えば、2Dシミュレーションではx及びy成分を有し、或いは3Dシミュレーションではx、y及びz成分を有する)多次元とすることができる。
【0060】
全ての磁場が計算されて(411)全ての電場が計算された(412)後に、これらの場によってシステム内の物体に加わるそれぞれの力を決定する(402)。磁気物体(例えば、磁気双極子、磁石など)に関しては、磁気物体の位置を(その物体自体の式以外の)システム内の各磁場表現に挿入することによって各磁気物体における正味磁場を決定する(413)。各表現からの結果の総和が、磁気物体に加わる(ベクトルとして表される)正味磁場に相当する。磁気物体に加わる正味磁場が定まると、磁気物体の応答(例えば、磁気双極子モーメントの新たな配向への回転)が容易に計算される(413)。ある実施形態では、このプロセスがシステム内の各磁気物体について実行される。
【0061】
各電気物体の正味電場に対する応答(414)は、磁気発生源に由来するいずれかの電場のさらなる認識を使用して
図3に関して上述したように決定される。すなわち、各電気物体における正味電場は、電気物体の位置をシステム内の(その物体自体の式以外の)各電場表現に挿入することによって決定される(414)。一連の表現は、変化する磁場によって生じる電場と、磁場を通過する物体の動きとを含むように強化される。各表現からの結果の総和が、電気物体に加わる(ベクトルとして表される)正味電場に相当する。電気物体に加わる正味電場が定まると、電気物体の応答(例えば、特定の方向における電気物体の特定の速度での新たな位置へ加速)が容易に計算される(414)。このプロセスは、システム内の各磁気物体について実行される。
【0062】
また、物体間のいずれかの機械的衝突、及びこれらに対する応答も(例えば、物体の質量及び速度などの関数として)検出される(415)。最終的に、システム内の各磁気双極子について一連の新たな位置及び/又は配向(及び関連する速度)が決定される。同様に、システム内の各電荷についても一連の新たな位置及び速度が決定される。
【0063】
2.1 電荷分布、電流分布及びその構造の自由空間シミュレータハンドリング
上記の例では、電荷がそれぞれ点電荷であり、磁石が一連の電流ループ(磁気双極子)として取り扱われる。導電性構造(通常は金属円板又は金属球)は、電荷を蓄積できる構造である。一般に、電荷は、導電性構造内の電場がゼロになるまで導電性構造の表面付近に再分布する。導体内の電場がゼロである限り、導体の表面上ではあらゆる複雑な電荷分布が可能である。
【0064】
シミュレータが直面する課題は、内部に導電性構造を有する自由空間環境の効率的なシミュレート方法である。1つの手法によれば、導体内の個々の電荷単位を「追跡」し、このような電荷に/から発散する電場を導電性構造に閉じ込めたままの状態で個々の電荷毎に決定するのではなく、構造に固有の電荷分布方程式(charge distribution equation)がシミュレータによって呼び出され、構造に加わる電荷量及び構造の寸法にわたって実行される(一般に、電荷分布は、何らかの表面積にわたって分散する複数の電荷単位を含む)。
【0065】
すなわち、例えばユーザは、(例えば、プルダウンメニューから)特定のタイプの構造(例えば、金属円板又は金属球)を自由空間環境に導入し、(例えば、ユーザが画面上をタップし、自身の指先を使用して画面上でその寸法を物理的に内向き/外向きに広げることによって)構造に寸法を割り当て、構造に電荷量を割り当てることができる。これに応答して、シミュレータは、ユーザによって呼び出された特定の構造に固有の電荷分布方程式を呼び出す。一般に、この方程式は、この場合もユーザによる構造の入力定義から受け取られる構造の寸法及び構造上に存在する電荷の量を入力パラメータとして含む。
【0066】
この電荷分布方程式から、例えば(電荷毎に個々の電荷ではなく)電荷分布からの/への電場を表す第2の方程式を使用して、構造から発散する電場(正に帯電した導電性構造の場合)又は構造に沈降する電場(負に帯電した導電性構造の場合)が容易に計算される。従って、構造内の各個々の電荷にわたってシミュレーションを行うのではなく1対の方程式を単純に実行することにより、帯電構造への/からの電場をシミュレートしようと試みる複雑なタスクが非常に効率的に処理される。この単純化によって演算密度が大幅に減少し、反復毎に高速かつ効率的な場の決定及びレンダリングが可能になる。
【0067】
図2nを参照しながら、近隣の自由電荷を伴う円板導体について検討する。シミュレータは、各シミュレーション反復において、自由電荷に加わる力を決定するために、自由電荷の位置において円板から発散する又は円板に沈降する電場の大きさ及び方向を計算する。円板導体内の電荷を個別に単独でモデル化するのではなく、自由空間内の円板が不均一な電荷密度、すなわち以下のような単位面積当たりの電荷(σ
disk)を有しているものと仮定し、
方程式10a
ここでsは、円板の中心からの距離として測定された円板上の位置であり、R
diskは円板の半径であり、Q
diskは、円板上に存在する総電荷である。
図2nに示すように、円板の中心から距離sのところにある線形の又は「細い」リング状電荷からの電場を式2bにおける磁場計算と非常に似た方法で計算して近似させることができる。
【0068】
具体的に言えば、自由電荷の位置における電場
は、半径方向(一般的には
であるが、この場合は
)及び軸方向
の両方に成分を有するベクトルである。この電場の成分である
は以下の通りであり、
方程式10b
ここでrはリングの中心から自由電荷までの距離であり、aは自由電荷の軸方向(y方向)距離であり、sはリングの半径であり、q=r
2+s
2+a
2+2rsであり、
である。E(√m)及びK(√m)は、(それぞれ)第1種及び第2種の楕円積分を表す。
図2nを参照して方程式10aを使用すると、リングの面積を使用してQ
ringが以下のように計算される。
方程式10c
方程式10b及び10cを組み合わせ、方程式2bに関して上述した手法と同様のE(√m)及びK(√m)の数値的級数近似を使用すると、他の量は全て既知であるため、リング状電荷からの電場をほんのわずかな命令(例えば、式10cを実行してQ
ringを決定するためのSUB命令、SQRT命令、DIV命令及びMUL命令、式10bのE
aを決定するための1つの積和演算命令、式10bのE
rを決定するための2つの積和演算命令及びSUB命令、並びにこれらの式の定数/係数項を決定するためのいくつかの前駆MUL命令(pre-cursor MUL instructions)及びその他の演算命令)で計算することができる。
【0069】
これらのうちの複数のリング(方程式10a及び10cにおけるsの複数の値)の電場を数値積分(すなわち、合計)して、完全な円板の電場を近似させることができる。一例として、円板が8つのリングで構成されていると仮定すると、自由電荷の現在位置(r,a)における電場
の正確な近似値を求めるには、上述したようなほんのわずかな命令のコードフットプリントを8回実行してE
r成分及びE
a成分を合計する。
【0070】
従来の自由空間シミュレータ又は場ソルバでは、導体上の正確な電荷分布を求めるために多くの(典型的には約千回の)反復が必要になり、これは単純な構造についてもしばしば数分から数時間掛かるプロセスである。電荷分布及び結果として生じる電場を少しの単純な方程式で正確に近似できる構造を利用することは、(例えば、タブレットコンピュータ又はパーソナルコンピュータでは典型的な)かなり低価格なプロセッサプラットフォーム上などでリアルタイムシミュレータを実現するのに役立つ。実際に、1回のシミュレーション反復内で効率的に電場計算を実行できる限り、あらゆる電荷分布(すなわち、あらゆる電荷密度)を使用して電場を計算することができる。
【0071】
磁場についても同様の手法を採用することができる。方程式2bの説明では、空間内のいずれかの地点における磁場を一連の電流ループから高い計算効率で近似させることについて説明した。一連の電流ループは、基本的に電流分布に相当する。この手法では、導体構造上の電荷と同様に、トロイダルコイル又は電流シートなどの特定の電流分布を有する構造をユーザが呼び出し、シミュレータが構造内の電流密度の方程式を引き出す。シミュレータは、電流密度方程式から構造内の複数の位置における電流を計算した後に、構造からの磁場を異なる位置の各々からの電流密度からの磁場計算結果の総和として近似させることができる。
【0072】
3.0 CPUとGPUとの間の作業分担
ほとんど全てのコンピュータシステムは、中央処理リソース(例えば、中央処理装置(CPU)コアを有するプロセッサ)と、グラフィックス処理リソース(例えば、グラフィックスプロセッシングユニット(GPU))の両方を含む。一般に、GPUは、アニメーション又はその他のコンピュータ生成グラフィックスプログラムを実行して、これらのタスクの実行負荷をCPUから開放するように設計される(グラフィックス処理プログラムは、数値的に計算集約的な傾向にある)。再び
図3を参照すると、様々な実施形態では、CPUがプロセス301、302、303を実行し、GPUがプロセス304を実行する。
【0073】
例えば、全体的プログラムフローは、CPUがプロセス303を実行した後に、CPUがシステムメモリ(又は「メインメモリ」)に新たな物体の位置及び速度などを書き込むことを含む。次に、GPUが新たな位置、速度などをシステムメモリから読み出し、これらのデータを処理して、新たなデータを組み込んだ新たなフレーム画像がプロセス304中にディスプレイ上にレンダリングされるようにする。
【0074】
ここでは、GPUとCPUとの間で何らかのパイプライン処理が可能である。すなわち、例えばGPUによって一連の新たな物体の位置、速度などがレンダリングのためにシステムメモリから読み出された後に、CPUが同じデータをシステムメモリから読み出して次の反復のための場計算301を開始することができる。すなわち、何らかの瞬間又は連続時間ウィンドウにわたり、GPUが前の反復のためのプロセス304を実行していると同時に、CPUが直後の反復のためのプロセス301を(及び場合によってはプロセス302も)実行している。
【0075】
いくつかの実施形態では、シミュレータがユーザに電場及び/又は磁場を示すことができる。すなわち、例えば、ユーザが電場に応答した電荷の動き及び/又は磁場に応答した磁気双極子の動きを観察するだけでなく、シミュレータがユーザのために電場及び/又は磁場も描画する(例えば、ユーザは
図1a~
図1kのうちのいずれかの力線を観察する)。
【0076】
少なくとも力線も描画される実施形態では、GPUを、前の反復のプロセス304だけでなく直後の反復のプロセス301も実行するように構成することができる。ここでは、GPU及びCPUが異なるタイプのプロセッサであるにもかかわらず、通常これらは、基本演算命令及び/又はオブジェクトコードプロセスの実行などのいくつかの共通する数学的計算能力を共有する。
【0077】
従って、別のパイプライン型負荷分散手法によれば、GPUは、前の反復からのデータを処理してレンダリングさせる(プロセス304)だけでなく、直後の反復のための場の計算301も行う(プロセス301)。
【0078】
ここでは、GPUが、メインメモリから前の反復の新たな位置、速度を読み出してそのローカルメモリにロードする。GPUは、そのローカルメモリから前の反復のプロセス304及び直後の反復のプロセス301を実行する(プロセス301は、前の反復から生成された物体の位置、速度などを入力データとして受け入れる)。次に、GPUは、新たな場方程式の値をシステムメモリに書き込む(例えば、GPUは、(例えば、各場を近似させる級数展開又はその他の場表現のための)新たな係数値を書き込む)一方で、これらの係数のコピーをそのローカルメモリ内に保持する。GPUが直後の反復用の画像をレンダリングするために次にメインメモリから新たな物体の位置、速度などを読み出す際には、既にそのローカルメモリ内に適用可能な場の係数又はその他の値が存在しており、CPUは、直後の反復の最新の物体の位置、速度のレンダリングに見合ったレンダリング処理を行うことができる。その後、このプロセスが繰り返される。
【0079】
この手法によれば、例えばGPUが前の反復のためのプロセス304を実行している間、及び/又は前の反復からのデータがレンダリングされている間に、CPUは、プロセス302と、場合によってはプロセス303(又はその一部)とをさらに実行することができる。ここでは、より効率的にパイプラインを実装するために、最初にGPUが次の反復のための場を決定して、(例えば、メモリに書き込むことによって)これらをCPUが利用できるようにすることができる。次に、GPUは、前の反復のためのデータを処理するタスク304を開始して、このデータがレンダリングされるようにする。最初に次の反復のための場の値を決定することにより、GPUが操作すべきデータ(前の反復のグラフィック処理及びレンダリング304)を有するのとほぼ同時に、CPUも(次の反復の力/動きを決定する(302)ために)操作すべきデータを有するようになる。その後、これらの2つのプロセッサは、それぞれの入力データを同時に操作してパイプラインを達成する。
【0080】
4.0 電気回路のシミュレーション
前節で上述したシミュレータは、自由に移動する電荷及び/又は磁気双極子のシミュレーション(「自由空間」シミュレーション)に重点を置いたものであった。
図5に、電子回路構造503のシミュレーションをさらに含むように
図3及び
図4のシミュレーションプロセスを拡張した別のシミュレーション手法を示す。ここでは、以下でさらに詳細に説明するように、シミュレータが自由空間システムのみ又は電気回路システムのみをシミュレートできるだけでなく、自由空間及び電気回路要素の両方を含む単一のシステム、並びにこれらの間の相互作用もシミュレートすることができる。
【0081】
例えば、後者の場合には、自由空間内で電気回路のワイヤを流れる電流が、自由空間内でワイヤに近接して存在する磁石の位置に影響することができる磁場を発生させる。ここでは、電気回路が周囲の自由空間電荷及び/又は磁気双極子の挙動に影響を与えることができ、逆もまた同様である(自由空間内の電荷及び/又は双極子の動きが、近接して配置された電気回路の電流及び/又は電圧に影響を与えることができる)。シミュレータは、自由空間システム及び電気回路システム、並びにこれらの間の相互作用を含むシミュレーション環境を含め、両システムの一部/全部をシミュレートすることができる。
【0082】
図5には、自由空間電気システム及び/又は自由空間磁気システム、電気回路、並びに(単複の)自由空間システムと電気回路システムとの間の相互作用をシミュレートできる完全なシミュレータの実施形態のプロセスフローの実施形態を示す。
図5のシミュレータの実施形態は
図3のシミュレータに対応するが、自由空間シミュレーション(301/501、302/502)とユーザ入力の組み込み(303/504)との間に回路シミュレーションブロック503が挿入されている。ここでは、回路シミュレーション503が、自由電荷の自由空間シミュレーションと同様に、次の各反復でシミュレートされる回路内の電荷の新たな位置及び動きを提供する。
【0083】
これらは、自由空間シミュレーション計算(501、502)によって計算された自由システム内の物体(例えば、(単複の)自由電荷、(単複の)双極子)の新たな位置及び動きと組み合わされる。従って、いずれかのユーザ入力504を考慮した後に、自由空間物体の新たな位置及び動き、並びに回路内の電荷の新たな位置及び動きの記述がレンダリング装置(例えば、GPU)に提供される。その後、ディスプレイ上に自由空間物体及び回路電荷がレンダリングされ、従ってユーザは、シミュレートされているシステムに従うこれらの動きを観察することができる。なお、回路が存在しない環境ではプロセス503は実行されず、全体的シミュレーション動作は
図3に関して上述した通りである。これに対して、自由空間物体が存在せずに回路構造のみが存在する場合にはプロセス501及び502が実行されず、全体的プロセスは回路シミュレーション503の実行のみに縮小される。
【0084】
図6に、回路シミュレーション503、603自体の実施形態を示す。
図6に示すプロセスの詳細については、この直後に、自由空間磁石を回転させて自由空間電荷を移動させる電気回路のインダクタを通じて駆動される電流に関連する
図7a~
図7fに示す例に関してさらに完全に説明する。
【0085】
図7aに、自由空間磁石702及び自由空間電荷703に近接する回路構造701を示す。ここでは、
図7aの描写を、例えば構造が現れる各位置においてユーザが画面タップを行ってそれぞれの位置で観察される各特定の構造をメニューから選択した後のコンピュータディスプレイ上の表示とみなすことができる。この回路は、回路のノードを表す2つの荷電球A、Bを含む(すなわち、この回路は2つのノードA及びBのみを有する)。ユーザは、球体A上に5単位の正電荷(+5q)を配置し、球体B上に5単位の負電荷(-5q)を配置している。電荷球A、Bはそれぞれワイヤに接続され、このワイヤはさらにインダクタLの異なる端部に接続される。球体、ワイヤ、インダクタは、それぞれその位置に固定される(動くことができない)。
【0086】
インダクタLに近接する自由空間内には磁石702が存在する。磁石702は、その中点の位置に固定されているが、中点を中心に回転することができる。回路の導電球A、B間の自由空間内には、1単位の正電荷(+q)を有する自由電荷703も存在する。
【0087】
図5及び
図7aを参照すると、この自由空間計算は、シミュレータフローの最初の反復中に、
図7aの初期「静止」状態から、正の球体A及び自由電荷703から発散する電場、負の球体Bによって沈降する電場、並びに磁石の磁場のためのそれぞれの表現を最初に決定する(501)。自由空間計算は、これらの場表現から自由電荷703及び磁石702に加わる力を決定し(502)、この力から自由電荷703の新たな位置及びベクトル移動がさらに決定される(自由電荷703は、正の球体Aから跳ね返されて負の球体Bに引き付けられるので、負の球体Bに向かって「下向き」に移動する)。
図7aの「静止」システムには、磁石702からの磁場以外の磁場は存在しないので、磁石702の動きは存在しない。従って、最初の反復中のプロセス502の終了時には、自由電荷703の新たな位置及び動きが決定されていることになる。
【0088】
次に、プロセスは回路シミュレーション503に進む。回路シミュレーション503に関しては、次に
図6及び
図7bを参照すると、(現在の状況である)シミュレータの最初の反復中に、回路シミュレーションが、回路シミュレータの「初期プレランタイム(initial pre-runtime)」構成601を実行する。これには、回路内の各ノードの同じ基準(例えば、接地)に静電容量を導入することを含めて回路704のモデルを構築し(611)、その後に回路内の電流の異なるループ(又は「電流ループ」)を識別する(612)ことが伴う(一般に、回路内の全てのコンポーネントには少なくとも1つの電流ループが流れなければならない)。
【0089】
ここでは、
図7a~
図7fの例示的な回路を単純化しており、これらは(一方の球体から流出し、インダクタを通って他方の球体に流入する)1つの電流ループ705しか含まない。なお、このシミュレータは、より複雑な回路構造をシミュレートすることもできる。従って、より一般的には、
図6を参照して分かるように、シミュレータは、静電容量が追加されて(611)電流ループが識別される(612)と、識別された電流ループ(単複の)から、それぞれの電流をシミュレーション反復の時間増分内の電荷の変化として表す表現を作成する(613)。その後、識別された電流ループ毎に、シミュレーションの時間増分内のそれぞれの電荷の変化について(単複の)方程式を解く(614)。
【0090】
キルヒホッフの電圧則(KVL)、又はより一般的にはファラデーの法則に従う1つの手法によれば、各識別された電流ループについて、電流ループ沿いの各コンポーネントにわたる電圧降下をシミュレータの時間増分内のコンポーネント内を流れる電荷の変化の関数として表す表現が作成され、この場合、同じ電流ループに沿いの電圧降下の合計は、回路内のいずれかの変化する磁場から誘起されたEMFに等しくなければならない。複数の電流ループを有するさらに複雑な回路構造の場合には、同じコンポーネント内を複数の電流ループが流れる可能性があり、コンポーネントにわたる電圧降下の表現は、コンポーネントを流れる各電流ループのシミュレータの時間増分内の電荷の変化を含む。
【0091】
キルヒホッフの電流則(KCL)に従う別の手法によれば、回路の様々なノードに流入する様々な識別された電流ループの電流の表現が作成され、この場合、同じノードに流入する又は同じノードから流出する全てのループ電流の純合計はゼロに等しくなければならない。この場合も、各電流ループの電流は、シミュレータの時間増分内の電荷の変化として表される。1つの手法によれば、表現が作成されるノードの数は、識別された電流ループの数に等しい。単純化のために、以下の説明ではKVL手法のみを検討する。
【0092】
次に、再び
図7a~
図7fのより単純な例を参照して、
図7bの差し込み
図704に、追加された静電容量CA、CB及び識別された電流ループ705の両方を示す。様々な実施形態では、実際にユーザが差し込み
図704の回路モデルを観察することはない(その存在は、シミュレータフロー内で内部的に検討されるものにすぎない)。むしろ、ユーザは、自身がディスプレイ上で入力した回路構造及び自由空間物体しか観察しない。
【0093】
(以下でさらに示す)方程式13は、
図7a~
図7eの例の単一のループ電流705について作成された表現を提供する。方程式11及び12a~cは、方程式13の作成に対する理論的洞察をもたらす。単一の電流ループ705のKVL解析によれば、
方程式11
であり、ここでV
CAはノード/ポートAの電圧であり、V
CBはノード/ポートBの電圧であり、ε
LVはインダクタに誘起されるEMFである。これらの電圧項は、それぞれ電流ループを流れる電流の関数として表すことができる。より具体的には、VCAは以下のように表すことができ、
方程式12a
ここで、1)q
A,iは、現在の反復のコンデンサC
A上の電荷であり、2)C
AはコンデンサC
Aの静電容量であり、3)-Δq
AB,iは、現在の反復の(ノードAにおける負電荷の増加による)ノードAにおける正電荷の損失であり、4)q
A,i-1は、(最初の反復では+5qという初期条件である)前の反復からのノードAにおける電荷である。同様に、V
CBは以下のように表すことができ、
方程式12b
ここで、1)q
B,iは、現在の反復のコンデンサC
B上の電荷であり、2)C
BはコンデンサC
Bの静電容量であり、3)Δq
AB,iは、現在の反復の(ノードBにおける負電荷の損失による)ノードBにおける正電荷の増加であり、4)q
B,i-1は、(最初の反復では-5qという初期条件である)前の反復からのノードBにおける電荷である。
【0094】
なお、同じ単一の電流ループ705について検討しているので、ノードBからの負電荷の損失は、ノードAにおける負電荷の増加に等しくなければならない。従って、ΔqAB,iは方程式12a及び12bの両方において同じ値であり、各方程式は、初期電荷割り当てに基づいて電荷が流れる方向に関して項の適切な極性を含む(すなわち、ノードAに正電荷が存在してノードBに負電荷が存在するので、電流はノードAからノードBに流れる)。
【0095】
また、Δq
AB,i/Δtは、現在の反復のノードAからノードBへの電流フロー(I)とみなすことができ、ここでΔtは各反復の時間増分である。従って、前の反復から現在の反復への電流の変化は以下のように表すことができ、
方程式12c(i)
ここでΔtはシミュレーションの時間増分であり、Δq
AB,iは現在の反復中のノードBからノードAへの負電荷の流れをマイナスしたものであり、Δq
AB,i-1は、前の反復中のノードBからノードAへの負電荷の流れをマイナスしたものである。従って、インダクタにわたる誘起EMFであるε
Lは以下のように表すことができ、
方程式12c(ii)
ここでLはインダクタのインダクタンスである。
方程式12a、12b及び12c(ii)から、方程式11は以下のように表すことができる。
方程式13
ここで、上記の方程式13では、△q
AB,iを除く全ての項が既知である。従って、式13を△q
AB,iについて解くことができる。従って、
図7a~
図7eの例示的な回路では、
図6を参照すると、ある実施形態では、方程式13が、識別された電流ループからシミュレータによって作成(613)された表現に相当する。方程式13を△q
AB,iについて解くことは、現在の反復の電流ループ705内の電流をシミュレータ反復の時間増分中の電荷の変化として解くこと(614)に相当する。
【0096】
ΔqAB,iは、文字通り現在の反復中にどれだけ多くの負電荷がノードBを離れてノードAに向かうかを決定する。例えば、ΔqAB,i=-2qであり、回路内の各電荷が0.1単位の電荷を有すると仮定した場合、ノードBからノードAに20個の負電荷が流れることになる。
【0097】
従って、回路シミュレータの反復当たり「出力」は、自由電荷についての自由空間シミュレータの反復当たり出力と非常に類似する。すなわち、電荷の数が定められ、これらの電荷の極性が定められ、これらの電荷の移動方向が定められる。
【0098】
最後に、各ノードにおける電荷の変化を計算する(614)。従って、この場合も、最初の反復の△q
AB,i=-3qである場合、ノードAの電荷の変化は△q
A,i=-3qであり、ノードBの電荷の変化は△q
B,i=+3qである。ここで使用される△qの値例は、回路の定性的挙動を示すように選択される。なお、実際のシミュレーションでは、これらの値がこの例に示した値とは異なる場合もある。次に、再び
図5を参照すると、最初の反復の回路シミュレーションプロセス503の完了時には、自由物体(
図7a~
図7eの例では磁石702及び自由電荷703)の新たな位置及び対応する動きが定められるとともに、回路内の電荷の数、このような電荷の極性、及びこれらの電荷の回路内での動きが定められる。あらゆるユーザ入力504が考慮され(最初の反復では何も入力されないと仮定する)、ディスプレイ上に新たな状態がレンダリングされる(505)。ここでは、新たな状態が、負の球体Bに向かう自由電荷703の動き、及び回路内での電荷の動きに対応する。
【0099】
図7cに、最初の反復の結果のレンダリング表示の例示的な描写を示す(差し込み
図704の回路モデルは読者の参考のために示すものであり、様々な実施形態ではディスプレイ上にレンダリングされない)。ここでは、ユーザが、球体Bに移動する自由電荷703を観察するとともに、ワイヤを通じて球体Bから球体Aに流れる複数の負電荷を観察する。一例として、ノードAが3単位の正電荷を失い、ノードBが3単位の負電荷を失うと仮定すると、球体A上の残りの電荷は+2qになり、球体B上の残りの電荷は-2qになる。回路ノード上の電荷/電圧レベルの変化は、例えば色を変更することによって(例えば、ノードが正であればあるほど明るい赤になり、ノードが負であればあるほど明るい青になることによって、或いはノードに正又は負電荷を付加することによって)レンダリングすることができる。
図7cには、最初のシミュレーションの自由空間シミュレーションによって計算された球体A、B間の電場も示す。ある実施形態では、
図7cに示すような電場のイメージをレンダリングすることができ、従ってユーザはこれらを見ることができる。任意に(例えば、ユーザの好みに基づいて)、場はレンダリングされない。
【0100】
再び
図5を参照すると、プロセスは新たな(第2の)反復を開始する。ここでは、回路に関して、回路シミュレーションの最後に決定(614)された両ノードA、Bの電荷の変化を使用して各球体A、Bの新たな電荷が決定されている。すなわち、各新たな反復は、回路内の各ノードの新たな電荷の量から開始する。この例では、前の(第1の)反復から△q
A,i=-3q、△q
B,i=+3qであると仮定すると、次の(第2の)反復は、球体Aの電荷=+2q、球体Bの電荷=-2qという初期状態から開始する。この初期状態は、自由電荷703及び回路内の電荷の動きも含む。
【0101】
自由空間シミュレーション501、502は、この初期状態から、1)球体A、B間の電場、及び2)回路内の電荷の流れによる磁場を決定する(説明を容易にするために、磁石702から回路内の移動電荷に加わる力は、移動する自由電荷703が形成する磁場と同様に無視される)。前者に関しては、球体間での電荷差が小さいので球体間の電場はそれほど強くならず、球体Bに向かう自由電荷の移動の加速度は低下する。第2の反復の自由電荷703について計算される新たな位置及びベクトル移動は、この加速度の低下を反映する(例えば、その新たな位置は、加速度の低下に対応する反復間の移動距離を反映する)。
【0102】
回路内の電流フローによって生じる磁場に関しては、物理的構造が電流の複数ループで構成されているという理由で基本的にインダクタが磁場を形成する。ここでは、各ループが磁場を形成するので、インダクタによって形成される磁場の強さは、回路を通る(インダクタの各ループを流れる)電流及びインダクタ内の電流ループの数の関数である。自由空間シミュレーション501、502は、インダクタによって生じる磁場に応答する磁石702の回転運動も決定する。
【0103】
従って、第2の反復の自由空間シミュレーション502、502の終了時には、自由電荷703及び磁石702の両方のそれぞれの新たな位置及び動きが決定されていることになる。回路シミュレーション503が実行されると、方程式13がΔqAB,iについて解かれる。球体間の電位差が最初の反復よりも小さいため(電荷差は、最初の反復前には+10qであり、第2の反復では+4qである)、回路を流れる電流は小さくなる。一例として、第2の反復のΔqAB,iが球体Aでは-2qであり、球体Bでは+2qであると仮定する。
【0104】
図7dに、第2の反復からのレンダリング画像を示す(ここでも、差し込み
図704の回路モデルは読者の参考のために示すものであり、様々な実施形態ではディスプレイ上にレンダリングされない)。ここでは、最初の反復からの回路内の移動電荷によって生じた磁場と同様に、球体A、B間の弱くなった電場を示す(この場合も、様々な実施形態ではこれらの場のレンダリングが任意である)。この磁場に応答する磁石702の回転も示す。また、回路内の移動電荷も示す。
【0105】
再び
図5を参照すると、プロセスは第3の反復を開始する。ここでは、回路に関して、回路シミュレーションの最後に決定(614)された両ノードA、Bの電荷の変化を再び使用して各球体A、Bの新たな電荷を決定する。この例では、第2の反復から△q
A,i=-2q、△q
B,i=+2qであると仮定すると、第3の反復は、球体Aの電荷=0q、球体Bの電荷=0qという初期状態から開始する。この初期状態は、自由電荷703の動き、回路内の電荷の動き、及び磁石702の回転も含む。
【0106】
自由空間シミュレーション501、502は、この初期状態から、1)球体A、B間の電場、2)回路内の電荷の流れによる磁場、及び3)回路内の電流からインダクタに誘起される電場(又は起電力EMF)を決定する(ここでも、説明を容易にするために、磁石702から回路内の移動電荷に加わる力は、移動する自由電荷703が形成する磁場と同様に無視される)。
【0107】
球体間の電場に関しては、第3の反復の開始時には球体間に電荷差が存在しない。従って、球体間には電場が存在せず、もはや自由電荷が球体Bに向かって加速することはない。従って、第3の反復の自由空間計算501、502によって自由電荷703について計算される新たな位置及びベクトル移動は加速の停止を反映する(例えば、新たな位置は、前の反復からの球体Bに向かう一定速度を反映する)。
【0108】
回路内の電荷の流れによって形成される磁場に関しては、第2の反復中に磁石が最大量回転し、インダクタによって発生した磁場と実質的に整列している。さらに、第2の反復後の電流フローは第1の反復後の電流フローよりも小さく、第3の反復では、第2の反復と比べてやや弱い磁場が形成されるようになる。第3の反復では、自由空間磁石が既に実質的に磁場と整列して弱い磁場を受ける結果、ほとんど回転しない。従って、第3の反復の自由空間計算501、502は、前(第2)の反復の位置からほとんど変化しない新たな磁石の位置を生成する。
【0109】
回路を流れる電流によってインダクタに生じる誘起EMFに関しては、第3の反復はその誘起EMFの計算の基礎をインダクタ内の磁束変化の量に置く。ここでは、第2の反復においてインダクタによって最大磁場が発生している場合、第3の反復は、第2の反復と第1の反復との間に最大磁場変化が発生したと判定する(第2の反復から最大磁場が決定され、第1の反復からは磁場が存在しないと決定されている)。従って、第3の反復501、502の自由空間シミュレーションは、インダクタにわたって最大EMFが発生したと判定する。
【0110】
従って、第3の反復について回路をシミュレートする(503)際には、たとえ球体A、B間に正味の電荷差が存在しないことによって回路内の電流の発生が停止するはずの場合であっても、インダクタにわたって発生する大きなEMFが回路に電荷を流し続けるため、球体Aが負電荷を受け取り続け、球体Bが正電荷を受け取り続けるようになる。ここでは、シミュレータが、基本的に電流を維持するインダクタの傾向をシミュレートしている(換言すれば、元々インダクタに加わっていた電圧を打ち消す電圧がインダクタにわたって発生する)。一例として、第3の反復の回路シミュレーションが、誘起EMFの電流フローが△qA,i=-4q及び△qB,i=+4qに対応すると判定したものと仮定する。
【0111】
図7eに、第3の反復の結果がレンダリングされた後の表示を示す。ここでは、球体Aが-4qの正味電荷を有し、球体Bが+4qの正味電荷を有する。電荷は、インダクタについて計算された誘起EMFに従って回路内を移動している。磁石は無視できるほどの量だけ回転し、自由電荷は球体Bに向かう加速を止めている。
【0112】
第4の反復が開始すると、自由空間シミュレーション501、502は、球体A、B間に電場が存在するが、場の方向は最初に球体間に存在していた電場の方向とは逆であると判定する。すなわち、最初の電場は正の球体Aから負の球体Bに向かっていたのに対し、第4の反復の自由空間シミュレーション501、502は、電場が正の球体Bから負の球体Aに向かっていると判定する。従って、第4の反復の自由空間シミュレーション501、502は、やがて自由電荷703が方向を反転して球体Aに向かって加速し始めるであろうと判定する。
【0113】
また、第3の反復は、第2の反復で生じた電流フローの減少に起因してインダクタによってやや弱い磁場が生じたと判定したことも想起される。とは言うものの、第3の反復のやや弱い磁場と第2の反復の最大磁場との間の差分は、第1の反復と第2の反復(最大磁束と磁束なし)との差分と比べて磁束の変化が大幅に小さいことに対応する。従って、第4の反復は、インダクタにわたる著しく減少したEMFを計算する。
【0114】
一例として、第4の反復の回路シミュレーション503は、この回路シミュレーションでは誘起EMFがノードBに1単位の正電荷のみを追加してノードAに1単位の負電荷のみを追加することにより、球体Bが+5q単位の電荷を有し、球体Aが-5q単位の電荷を有するようになると判定する。ここでは依然として球体Bに正電荷が流入しており、ある実施形態では、回路シミュレーションが、球体上の電荷の差分によって駆動される回路電流の計算をEMF電流がゼロに減少するまで遅らせる(誘起EMF電流は、EMF電流が存在しなくなるまで球体A及びBを帯電させ、その後に球体A及びBは回路を通じて電流を駆動できるようになる)。
【0115】
図7fに、第4の反復後にレンダリングされる表示を示す。この時点で、システムの状態は(球体Aに+5q単位の電荷が存在し、球体Bに-5q単位の電荷が存在する)
図7aのシステムの初期状態とは「逆」である。
【0116】
その後の反復は、球体Aから球体Bへの電流フロー、並びに反復1~4に関して上述したものとは逆の磁場及び誘起EMFの発生を示す。最終的に、エネルギー損失がなければ再び
図7aの状態に到達し、従って模擬回路は発振器として動作することが観察される。しかしながら、自由な帯電導体を加速させて磁石を回転させるにはエネルギーが必要であり、従って
図7aのシミュレーションは、最終的にノード当たりの電荷がわずかに少ない状態に到達し、従って模擬回路は、発振周期毎に電流/電荷/磁場が減衰する発振器として動作するようになる。
【0117】
加速する自由電荷703と回転する磁石702との間の結合、及び回路の挙動をシミュレートすることもできる。ここでは、回転する磁石に起因するインダクタのループ内のいずれかの磁場の変化がインダクタにわたる誘起EMF(すなわち、電圧)をもたらす。従って、方程式11のEMFの表現は、この効果を含むように拡張することができる。
方程式14
【0118】
ここで、
は、反復iにおけるインダクタのループを通る全磁束である。この磁束は、各ループの面積にわたって磁場を数値積分することによって計算することができる。磁束の変化は誘起電圧を決定し、従ってこの例では、(インダクタからの磁場に起因して、或いはユーザが磁石を回転させることによって)磁石が回転する際には常にインダクタにわたって電圧が誘起されるようになる。従って、物理的空間内の回路と磁場との間の関係は双方向的である。
【0119】
方程式11(及び最終的には方程式13)は、方程式14の項を含むように容易に拡張することができる(従って、方程式14によって記述される物理的特性を考慮することができる)。すなわち、シミュレータの動作に関して言えば、方程式14のφiは、現在の反復の自由空間磁場計算501、502中に決定され、△qAB,iが現在の反復の次の回路挙動計算503によって解かれる唯一の未知数として残る(φi-1及び△qAB,i-1は前の反復から既知である)。
【0120】
同様に、自由電荷703は、上部導体A及び下部導体Bの両方に電気的に電圧を誘起する。このことは、
及び
に電圧項を含めることによってモデル化することができる。点電荷に起因する空間内のいずれかの地点の電圧は、点電荷に起因する自由空間の電場を表す方程式1と同様に
として定めることができ、ここでqは電荷であり、rは点電荷から空間内の地点までの距離である。従って、自由電荷703は、十分な近似まで上部導体に
の電圧を誘起し、ここでqFは自由電荷703上の電荷であり、r
FAは自由電荷と上部導体Aとの間の距離である。同様に、下部導体Bは
の誘起電圧を有するようになる。これらの電圧は、以下の方程式15に示すように導体電圧に含めることができる。
方程式15
q
F及びr
Fは既知であるため、△q
AB,iが唯一の未知数であり、これは現在の反復の次の回路動作計算503によって解くことができる。従って、方程式15は、方程式14と同様に容易に方程式13に組み込むことができる。
【0121】
シミュレータは、他の一般的な回路部品を取り扱うように拡張することもできる。2つの円板として平行板コンデンサを取り扱うこともできる。円板が互いに近い場合には、方程式10aによって記述される電荷密度を均一として近似させることができ、この場合も空間内のいずれかの地点の電場を効率的に計算することができる。これらのプレートは、
図7aの導電球と同様にシミュレータの自由空間及び回路部分の両方に含めることができる。
【0122】
2端子抵抗器を、部分的に導電性(半導電性)の材料を含む平行板コンデンサとしてモデル化することもできる。抵抗器の2つのプレート間の電場に応答して抵抗器内の自由電荷が移動するが、これらの動きは材料によって妨げられる(抵抗を受ける)。様々な実施形態では、電圧及び電流が独立変数であり、抵抗器モデルでは電圧/電流挙動を関連付ける関数が定められる。ある実施形態では、この関数が周知のV=IRであり、ここでRは抵抗である。
【0123】
シミュレータは、電荷ベースの手法を使用して、電荷が半導体材料内をどのように移動するかをモデル化する。電場は、自由電荷を障害物にぶつかるまで加速させる
。抵抗材料が金属又は半導体のように半結晶性である場合、この障害物は、結晶格子の縁部又は不純物とすることができる。電荷の運動エネルギーは熱又は光に変換され、電荷を減速させ散乱させる。従って、抵抗器の古典的なドルーデ近似がシミュレートされ可視化される。なお、この古典的モデルは、挙動を示すために使用される。場合によっては実際の抵抗器の量子力学的挙動を伴う、他のさらに正確な実例を使用することもできる。電荷は、2つの導体円板のいずれかに接触するとその導体に移動し、次のシミュレーションサイクル中にはこのノードの変化が考慮される(
図5のプロセス503)。このモデルは、抵抗器内の電荷の確率的性質と温度依存性とを共に含めて可視化できるので、いろいろな意味で定抵抗よりも正確である。トランジスタ、ダイオード及びその他の半導体部品についても同様の多端子モデルを構成することができる。
【0124】
バッテリは、内部の中性電荷のリザーバと、これらの中性電荷を電場に逆らって分離するためのエネルギーを供給するものとを有する平行板コンデンサとしてモデル化することができる。ほとんどのシミュレータでは、バッテリが定電圧源として定められる(Vは何らかの固定量に等しく、電流はいずれかの値を取ることができる)。様々な実施形態では、シミュレータが、電圧の代わりに電荷ベースの手法を使用する。このバッテリモデルは、2つの端子にわたって所望の電荷差△Qが見られるかどうかを更新サイクル毎にチェックする。ΔQ<ΔQdesiredである場合、リザーバからの中性電荷のうちの1つが初期速度で分離される(運動エネルギーを使用して、2つの導体間の電場に打ち勝つためにバッテリによって行われる化学的仕事(chemical work)を示すことができる)。なお、この運動エネルギーは、化学的仕事関数を示すために使用される代用物にすぎず、他の例示方法を使用することもできる。中性電荷のリザーバが無限でなければ、このリザーバが枯渇するとバッテリは「切れる」。△Q>△Qdesiredである場合には、電場がバッテリの固有の化学的仕事関数に打ち勝つ。あらゆる過剰電荷(△Q-△Qdesired)は再結合する。新たに結合した中性電荷が再びリザーバに加えられて、効果的にバッテリを再充電することができる。
【0125】
5.0 コンピュータ実装の再検討
3.0節では、(タブレットコンピュータなどの)コンピュータシステムのCPUとGPUとの間に存在できる作業分担について詳細に説明した。ここでは、3.0節で行った解説の実質的に全てが、回路シミュレーションを含むシステムに適用可能である。すなわち、3.0節の説明では
図3のプロセス301、302、304について深く言及したが、これらの同じ記述が
図5のプロセス501、502、505にも等しく当てはまることができる。基本的に、3.0節で行った主張は、CPUが回路シミュレーションも実行するシステムにも等しく適用可能である。一般に、回路シミュレーション計算はCPUが実行するが、様々な実施形態は、CPUからタスクの負荷を開放するためにGPUが一部又は全部の回路シミュレーション計算を行うことを含むことができる。
【0126】
6.0 シミュレータを用いた電磁システムの教育
以上、様々なシミュレータの構造及び動作について説明したが、的を射た指摘として、低価格なタブレットプロセッサなどで実現されるユーザインタラクションとリアルタイムシミュレーションとの組み合わせが、従来複雑な数学のみを通じて教示されていた複雑な物理的法則を把握又は学習するための有用なツールをもたらす。すなわち、従来の電磁気学の教育が複雑な数式の導出に重点を置いてきた結果、多くの人々にとって全体的主題の把握が極めて困難であり、及び/又は最終的に題材を上手く把握できている人々でも少なくとも最初は理解しにくく又は理解が困難であった。
【0127】
代わりに、本シミュレータは、電磁システムがどのように挙動するかについての「直観的感覚」をユーザに提供することができる。電磁システムの挙動の初期/最初の直観によって全体的主題の把握が容易になり、及び/又は最初の脅威が低下すると考えられる。すなわち、本シミュレータは、主題を学習する困難さを緩和する結果、従来の教育法に比べてより多くの学生がより素早く又は効率的に題材を学習し、最終的には題材を上手く把握する学生が全体的に増加する可能性があると考えられる。
【0128】
例えば、上述したインダクタと外部磁石とを含む回路の例を思い出せば、学生は、複数回の連続反復にわたって球体上の電荷をリアルタイムで継続的に増加させることによって、ますます強い電流がインダクタを流れ(学生は、ますます多くの電荷が回路を流れるのを見る)、ますます速く磁石が回転する(学生は、球体に多くの電荷を追加すればるほどますます速く磁石が回転するのを見る)ようになるのを即座に画面上で観察することができる。
【0129】
別の例として、学生は、抵抗器の幅を拡大するなど抵抗器の寸法を連続反復にわたって継続的に変化させ、(幅が拡大すると抵抗器の表面積が増加して抵抗が減少するため)電流がますます速く抵抗器を流れるのを直ちにリアルタイムで観察することができる。同様に、学生は、連続反復にわたってますます多くの電荷を継続的にノード又はバッテリに追加し、これに応答して回路内で電流が増加する(ますます多くの電荷が回路を流れる)のを直ちにリアルタイムで視覚的に観察することができる。上記で示唆したように、このような電流の増加は、学生が即座のリアルタイム応答で観察するように、例えばいずれかの近接する磁石のそれぞれの回転速度を高める。
【0130】
従って、このシミュレータは、学生がシミュレーション環境を瞬時に変更することを可能にし、システムの挙動を、新たに導入された変化に伴って挙動するようにリアルタイムで直ちに画面上にレンダリングする。従って、学生は、一連の極限、方向、極性、サイズ、大きさなどにわたって自由に「実験」を行うことができる。学生は、このような実験に応答するシステムの挙動を即座にリアルタイムで観察することを通じて把握することにより、電気及び磁気物体がどのように相互作用するかを直観的に把握することができ、従ってこのようなシステムに対する直観的感覚及び感触が学生にもたらされるようになる。
【0131】
工業的応用も考えられる。例えば、電気モータ及び/又は発電機の初期設計段階において特定の導電構造、磁石形状などで構成されたシミュレータを活用して、モータの物理的/機械的レイアウト構造に関して(極限を含む)様々な設計上の選択肢を素早く試験し、観察して評価することができる。この場合、例えば設計効率が高いほど同じ入力電流/回転に対して大きなトルク/EMFなどをもたらすが、例えば設計技師が特定のモータ部品の寸法/サイズ/配置を「微調整」する際にこれをディスプレイ上で即座に観察できるはずである。
【0132】
6.0 結びのコメント
図8に、コンピュータシステム800(例えば、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバコンピュータなど)の例示的な描写を示す。
図8に示すように、この基本的コンピュータシステム800は、マルチコアプロセッサ又はアプリケーションプロセッサ上に配置された(例えば複数の汎用処理コア815_1~815_Xを含むことができる)中央処理装置801及びメインメモリコントローラ817と、システムメモリ802と、ディスプレイ803(例えば、タッチ画面、フラットパネル)と、ローカル有線ポイントツーポイントリンク(例えば、USB)インターフェイス804と、(イーサネットインターフェイス及び/又はセルラモデムサブシステムなどの)様々なネットワークI/O機能805と、無線ローカルエリアネットワーク(例えば、WiFi)インターフェイス806と、無線ポイントツーポイントリンク(例えば、Bluetooth)インターフェイス807と、全地球測位システムインターフェイス808と、様々なセンサ809_1~809_Yと、1又は2以上のカメラ810と、バッテリ811と、電源管理制御ユニット812と、スピーカ及びマイク813と、オーディオコーダ/デコーダ814とを含むことができる。
【0133】
アプリケーションプロセッサ又はマルチコアプロセッサ850は、そのCPU801内の1又は2以上の汎用処理コア815と、1又は2以上のグラフィクスプロセッシングユニット(GPU)816と、メモリ管理機能817(例えば、メモリコントローラ)と、I/O制御機能818とを含むことができる。通常、汎用処理コア815は、コンピュータシステムのオペレーティングシステム及びアプリケーションソフトウェアを実行する。通常、グラフィックスプロセッシングユニット816は、グラフィックス集約機能を実行して、例えばディスプレイ803上に提示されるグラフィックス情報を生成する。メモリ制御機能817は、システムメモリ802と連動してシステムメモリ802からの/へのデータの書き込み/読み出しを行う。一般に、電源管理制御ユニット812は、システム800の消費電力を制御する。
【0134】
タッチ画面ディスプレイ803、通信インターフェイス804~807、GPSインターフェイス808、センサ809、(単複の)カメラ810及びスピーカ/マイクコーデック813、814の各々は、全て適切な場合には統合周辺装置(例えば、1又は2以上のカメラ810)も含む全体的なコンピュータシステムに対する様々な形態のI/O(入力及び/又は出力)とみなすことができる。実装によっては、これらのI/Oコンポーネントのうちの様々なコンポーネントをアプリケーションプロセッサ/マルチコアプロセッサ850上に統合することもでき、或いはアプリケーションプロセッサ/マルチコアプロセッサ850のダイから離して又はパッケージの外部に配置することもできる。コンピュータシステムは、システムの大容量記憶コンポーネントとすることができる不揮発性ストレージ820も含む。
【0135】
コンピュータシステム800は、前節で詳細に説明したような自由空間及び/又は回路シミュレーションを実行する(例えば、コンピュータシステムの不揮発性記憶ハードウェアに記憶された)アプリケーションソフトウェアを含むことができる。ここでは、例えばコンピュータシステムのディスプレイ803を、後でディスプレイ803上にレンダリングされるシミュレーション環境を定めるためにユーザがタップするタッチ画面とすることができる。ユーザ入力は、キーボード及び/又はマウス装置を通じて容易に受け入れることもできる。
【0136】
本発明の実施形態は、上述したような様々なプロセスを含むことができる。これらのプロセスは、機械実行可能命令に具体化することができる。これらの命令を使用して、汎用又は専用プロセッサに特定のプロセスを実行させることができる。或いは、これらのプロセスは、プロセスを実行するためのハードワイヤードロジック回路又はプログラマブルロジック回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックデバイス(PLD))を含む特定/特注のハードウェアコンポーネントによって、或いはプログラムされたコンピュータコンポーネントとカスタムハードウェアコンポーネントとのいずれかの組み合わせによって実行することもできる。
【0137】
本発明の要素は、機械実行可能命令を記憶する機械可読媒体として提供することもできる。機械可読媒体は、以下に限定するわけではないが、フロッピーディスク、光ディスク、CD-ROM、及び光磁気ディスク、FLASHメモリ、ROM、RAM、EPROM、EEPROM、磁気又は光カード、伝搬媒体、又は電子的命令を記憶するのに適した他のタイプの媒体/機械可読媒体を含むことができる。例えば、本発明は、搬送波又はその他の伝搬媒体に具現化されたデータ信号を通じて通信リンク(例えば、モデム又はネットワーク接続)を介して遠隔コンピュータ(例えば、サーバ)から要求元コンピュータ(例えば、クライアント)に転送できるコンピュータプログラムとしてダウンロードすることができる。
【0138】
上記の明細書では、特定の例示的な実施形態を参照しながら本発明を説明した。しかしながら、添付の特許請求の範囲に示す本発明の幅広い趣旨及び範囲から逸脱することなく、これらに様々な修正及び変更を行えることが明らかであろう。従って、明細書及び図面は、限定的な意味ではなく例示的な意味で捉えるべきである。
【符号の説明】
【0139】
301:適用可能な磁場及び電場を計算
302:適用可能な場からの力に対する物体のそれぞれの応答(動き)を計算
303:(もしあれば)ユーザ入力を組み込み
304:画像をレンダリング