0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RustBCAの.tomlファイルの設定方法メモ

Last updated at Posted at 2025-09-28

さいしょに

この記事は、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] はターゲット側の形状と組成を定義します(物理的特性はここでは定義しない)。pointstrianglesdensitiesが最も重要な設定かと思います。
それぞれのパラメーターの数(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,],]

まとめると、下の図のようにターゲット側を定義しています。

Figure_1.png

[material_parameters]

ターゲット材料の物理的特性を定義します。作成中。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?