さいしょに
この記事は、RustBCAのtomlファイルについての公開メモ帳みたいなものです。こんな感じかなあ、というノリで書いているので、内容についてはあまり信用しないでほしいのですが、全く適当という訳ではないです。
RustBCAについては下の記事を読んでください。
input file option
RustBCAは、tomlファイルでシミュレーション条件を設定します。wikiのinputで説明されてるので、Gemini等で翻訳すればある程度は理解できるのですが、それでも適当に触ればハマります。
この記事ではそのハマり点などを随時メモっておく、みたいな形になっています。layered_geometry.tomlをベースに説明するような形式をとります。
設定項目は、[options]
[particle_parameters]
[geometry_input]
[material_parameters]
の4つの大項目に分かれています。それぞれ見ていきましょう。
[options]
作成中
[particle_parameters]
飛翔物のほうの設定です。作成中
[geometry_input]
[geometry_input] はターゲット側の形状と組成を定義します(物理的特性はここでは定義しない)。points
、triangles
、densities
が最も重要な設定かと思います。
それぞれのパラメーターの数(listサイズ)が合っていないと、シミュレーションが開始せずエラーを返します。
-
length_unit
は長さ(距離)の単位を設定します。layered_geometry.tomlでは"MICRON"が設定されています。ANGSTROM, NM, MICRON, CM, MM, M,もしくは"1e-6"(メートル)という形での設定が可能です。ここをミスると全てが破綻します。 -
point
は メッシュを構成する頂点を設定します。layered_geometry.tomlでの設定をわかりやすく書くと下のようになります。
points = [
[0.0, -0.5], # 頂点0
[0.01, -0.5], # 頂点1
[0.04, -0.5], # 頂点2
[0.5, -0.5], # 頂点3
[0.5, 0.5], # 頂点4
[0.04, 0.5], # 頂点5
[0.01, 0.5], # 頂点6
[0.0, 0.5] # 頂点7
]
つまり、x=0, y=-0.5の頂点を0番目の頂点、x=0.01, y=-0.5の頂点を1番目としているわけです。ここで、xは0, 0.01, 0.04, 0.5で区切っているのに対し、yは-0.5と0.5しかないことに気付くかと思います。これは、xが深さを示し、二酸化チタン(TiO₂)/ アルミニウム(Al)/ シリコン(Si)の3層を設定するために3分割(0と0.5は外部との境界)しており、yは一様なので区切ってないわけです。(この場合、TiO2が10nm, Alが30nm、Siが残り500nmまで、多分Si基板上に製膜したサンプルを想定しているのでしょう)
-
triangles
は各三角形を構成する点を指定するリストです。layered_geometry.tomlでの設定をわかりやすく書くと下のようになります。
triangles = [
[0, 1, 6], #三角形0 頂点0と1と6を繋ぐ三角形
[0, 6, 7], #三角形1 頂点0と6と7を繋ぐ三角形
[1, 2, 5], #三角形2 頂点1と2と5を繋ぐ三角形
[1, 5, 6], #三角形3 頂点1と5と6を繋ぐ三角形
[2, 3, 4], #三角形4 頂点2と3と4を繋ぐ三角形
[2, 4, 5] #三角形5 頂点2と4と5を繋ぐ三角形
]
つまり、三角形0の頂点は[0.0, -0.5],[0.01, -0.5],[0.01, 0.5]をつないだものになります。x=0近傍の超細長い三角形で、サンプルの表面近傍の領域を三角形で示します。
-
densities
は各三角形領域に含まれる原子の密度を設定しています。layered_geometry.tomlでの設定をわかりやすく書くと下のようになります。
densities = [
[ 3.0e+10, 6.0e+10, 0.0, 0.0,], #三角形0の密度 マテリアル0の密度が3.0e+10 atoms/µm3, マテリアル1の密度が6.0e+10 atoms/µm3
[ 3.0e+10, 6.0e+10, 0.0, 0.0,], #三角形1の密度 たいへんなので略
[ 0.0, 0.0, 6.026e+10, 0.0,],
[ 0.0, 0.0, 6.026e+10, 0.0,],
[ 0.0, 0.0, 0.0, 4.996e+10,],
[ 0.0, 0.0, 0.0, 4.996e+10,],
]
ここでは4つのマテリアルの密度を設定します。物理特性は、後で設定するmaterial_parameters
にて定義します。
三角形0と1は同じ密度が設定されており、ここでは1:2だなあという事しかわからないかもしれませんが、material_parameters
のほうを見ると、Ti(マテリアル0)とO(マテリアル1)の物質特性が入力されている事がわかります。ちなみにマテリアル2はAl, マテリアル3はSiです。つまり、表面から見て1層目はTiO2, 2層目がAl, 3層目(残り、基板)がSiの密度に対応しています。
最初にlength_unit = "MICRON"としているので、ここの単位はatoms/µm3です。ここをミスってもシミュレーション自体はエラーを吐かないのですが、変な結果を返すことになります。
(注入したのがどっか行っちゃったな~とか何回かやった)
-
boundary
はターゲットの外との境界を定義します。points
を見れば、この点が一番外側の四隅に対応している事がわかります。
boundary = [0, 3, 4, 7] #頂点0と3と4と7が境界
-
simulation_boundary_points
はシミュレーションの境界を定義します。この枠から出たらシミュレーションを打ち切ることになります。pointsの少し外側とし、最初の点と最後の点が同じになるように閉じた領域を設定する必要があります。
simulation_boundary_points = [ [ 0.6, -0.6,], [ -0.1, -0.6,], [ -0.1, 0.6,], [ 0.6, 0.6,], [ 0.6, -0.6,],]
まとめると、下の図のようにターゲット側を定義しています。
[material_parameters]
ターゲット材料の物理的特性を定義します。作成中。