🧪

合成に使う材料の重さを計算する

2023/07/09に公開

モチベーション

合成の為に秤量をするのだが,その計算を行うソフトウェアがWindowsにしか対応しておらず不便でならない.
WEBで実装することでOSに依らず使えるようにしようという算段だ.

制作物

https://gist-4d0c6.web.app/hyoryo.html

ソースコード

https://gist.github.com/slnq/65ec66de4d338ec9e1ae35a1fbd7d314

ほとんどをChatGPTに書いてもらった.
とはいえ関数ごとに書いてもらったので,同じ処理を別の関数に分けている部分などは設計も碌にせずに書き始めた私のせいだ.

機能

target: 合成したい試料の化学式
reagents: 合成に用いる試薬の化学式
targets mass: 合成したい試料の重さ [g]
x: xを定義する
y: yを定義する
decimals: 表示する小数点以下の桁数

target

合成したい試料の化学式を書く.
複数の化学式を書きたい場合はLaOBiSSe, LaOBiS1.4Se0.6のように,カンマ区切りで書く.
置換したい要素が1つある場合はLaOBiS2-xSexのように,変数xを用いて書く.
置換したい要素が2つある場合はLaO1-xFxBiS2-ySeyのように,変数x, yを用いて書く.

reagents

合成に使いたい試薬の化学式を書く.
まず2つ以上になるだろうからBi. S, La2S3, La2O3, LaF3, Bi2Se3 のようにカンマ区切りで書く.

x

targetで変数xを使う場合のxの定義を書く.

  • x_min, x_max, x_step
  • x1, x2, x3, ...

1つ目のようにfor文のような書き方と2つ目のように列記する書き方のどちらも出来る.
例として0から1まで0.2ずつ変化させたい場合は

  • 0, 1, 0.2
  • 0, 0.2, 0.4, 0.6, 0.8, 1.0

と書く.

y

targetで変数を2つ使う場合は,yの定義をxのときと同様に書く.

decimals

小数点以下を何桁表示するか選べる.
空白だったり0を入力した場合はJavaScriptのnumber型の仕様で17桁が表示され邪魔になるだろうから,使う秤に合わせた数値を入力するといい.

URLパラメーター

以上のフォームの入力によってURLを動的に変更し,そのURLでフォームに自動入力できるようにした.
また,URLを開いた時に自動的にフォームを送信し,結果を表示できるようにした.
すべてをChatGPTが書いてくれた.

表示

変数なしの場合

行ヘッダーにtargetが,列ヘッダーにregentsが表示され,表の中が計算した重さになる.
変数なしの表を表示する例

1変数xのみの使用の場合

行ヘッダーにxを代入したtargetが,列ヘッダーにregentsが表示され,表の中が計算した重さになる.
1変数の表を表示する例

2変数x, yの使用の場合

行ヘッダーにxが,列ヘッダーにyが表示される.その表の中にx, yを代入したtargetをヘッダーにもち,regentsを列ヘッダーにもつ表が表示される.
2変数の表を表示する例

所感

だいたいをChatGPTに書いてもらったので達成感などは無い.
それが故に値があっているのか心配で,元からあるソフトの結果と見比べながら使っている.
AIは出力を保証してくれない.

Discussion