《目次》
ブラウザのブックマーク機能はURL管理の必需品です。最大限使いこなしましょう。
以下に私個人のブックマークの一部とメモ書きを掲載しておきます。どうぞご利用ください。
Introduction to Computational Chemistry(Frank Jensen先生による計算化学の網羅的な解説書;第2版のPDF版がネット上でダウンロード可能)
Modeling materials using density functional theory(DFT(密度汎関数理論)を用いた材料研究スキル習得のためのテキスト)
Gaussian日本語マニュアル ― 基底関数系(コンフレックス株式会社)
Basis Set Exchange(基底関数のデータベース)
SCRF(Gaussianプログラムの溶媒効果のオプションなど;HPCシステムズ)
SIESTA(電子状態計算ソフトウェア「SIESTA」の公式ページ)
(古い)GGA Pseudopotential Database(SIESTAで利用可能な擬ポテンシャルデータベース)
pseudo-dojo(擬ポテンシャル(pseudopotential)のデータベース)
SIESTAの特長 - CAEソリューション(JSOL株式会社による日本語のマニュアル)
SIESTAの紹介ページ(株式会社アフィニティサイエンス)
Quantum ESPRESSO PSLIBRARY(電子状態計算ソフトウェア「Quantum ESPRESSO」の擬ポテンシャルライブラリ)
Standard solid-state pseudopotentials (SSSP)(折れ線グラフの様子からエネルギーカットオフを見積もる)
はじめてのVASP 原理から使用法,適用例まで(西谷滋人先生による第一原理計算ソフトVASPのビギナー向け手引き;直リンクにつき注意)
xTB User Guide(xTBプログラムの資料;xTBは電子状態計算ソフトウェア「Orca」で利用可能)
※ 周期境界条件も課すことができるがGRRMとの連携は挙動が不安定;計算速度が速いのでポリマーやクラスターモデルなどの大規模な反応経路探索に利用することが多い
DFTB+ マニュアル(2023年1月現在の最新バージョンは Version 22.2;DFTB+のインプットレシピ集も参考に;"About DFTB")
※「密度汎関数理論に基づくタイトバインディング(DFTB)法」を実装した電子状態計算ソフトウェアが「DFTB+」である
※ 周期境界条件も課すことができる;計算速度が速いのでポリマーや大きめの有機分子などの大規模な反応経路探索に利用することが多い
※ DFTB-SCCの参考文献:M. Elstner, D. Porezag, G. Jungnickel, J. Elsner, M. Haugk, Th. Frauenheim, S. Suhai, and G. Seifert, "Self-consistent-charge density-functional tight-binding method for simulations of complex materials properties" Phys. Rev. B, 1998, 58, 7260–7268.
ATOM User manual(電子状態計算ソフトウェア「ATOM」のマニュアル)
List of quantum chemistry and solid-state physics software(各種量子化学計算プログラムのスペックの比較・一覧;wikipediaの記事)
Atomic Charges in Molecules: A Classical Concept in Modern Computational Chemistry(分子の原子電荷についてまとめられた記事)
Effective Core Potential (ECP) Basis Sets(有効内殻ポテンシャル(ECP)を取り入れた基底関数に関するYale大学Batista研の資料)
分子軌道法計算プログラム Gaussian 03 ―その 6 ―(熱力学諸量の計算方法について詳説されているテキスト;丸善出版の「実験化学講座」の計算化学の巻も参考に)
分⼦動⼒学計算によるタンパク質の機能解析(中津井雅彦先生によるタンパク質の機能解析を題材とした分⼦動⼒学計算(MD)の解説)
「第一原理計算の諸条件:サンプル k 点, カットオフ・エネルギー,擬ポテンシャル」
通常,サンプルk点は等間隔のメッシュ上に空間的になるべく均等になるように採られる。ある方向に実空間でN倍にした系の計算精度が,元の系と同等であるためには,同じ方向に対するサンプルk点を1/Nにすれば良い。
ある電子状態(原子)で作成された擬ポテンシャルが,別の環境,例えば,電子配置の異なる原子や,結晶中等,に移行(transfer)した場合に,新しい環境での全電子計算の結果をどのぐらい再現できるかという性質を "transferability" と呼ぶ。
擬ポテンシャルが,少ないカットオフエネルギーで十分記述できるときにはソフトな擬ポテンシャルといわれ,逆に高いカットオフエネルギーが必要とされるときにはハードな擬ポテンシャルといわれる。
"Electronic Structure of TiO2 Surfaces and Effect of Molecular Adsorbates Using Different DFT Implementations"
表面吸着物の電子状態計算に関して、次の3種類の計算手法を比較した論文
(i) all-electron calculations with localized Gaussian basis sets (using CRYSTAL06)
(ii) pseudopotential calculations with localized basis sets (using SIESTA)
(iii) pseudopotential calculations with plane-wave basis sets (using PWSCF distributed within the Quantum ESPRESSO suite of codes)
Hubburd U パラメータによるクーロン相互作用の補正(バンドギャップを過小評価するDFT特有の問題に対する補正):https://www.jim.or.jp/journal/m/pdf3/56/09/554.pdf
DFT+U法(LDA/GGA+U 法の総称)に関してよく引かれる論文:Vladimir I. Anisimov, Jan Zaanen, and Ole K. Andersen, Band theory and Mott insulators: Hubbard U instead of Stoner I, Phys. Rev. B 44, 943 – Published 15 July 1991
Quantum ESPRESSOのマニュアル:https://www.quantum-espresso.org/Doc/user_guide_PDF/Hubbard_input.pdf
U (eV単位) の値は、Uを色々変えて計算したバンドギャップや格子定数の値をもとに、実験値をよく再現する値をその都度計算者が決定する必要がある。多くの場合、概ね数eV程度となる。
酸化物などの系で用いられる手法。吸着エネルギーには大きく影響しない場合があり、色々な吸着種間で吸着エネルギーの相対値を比較する際には必ずしも用いられないことがある。(ただし、最近ではほとんどの研究でDFT+U法が用いられており、使っていないとむしろ不自然に思われる可能性がある)
Methane oxidation over palladium oxide: From electronic structure to catalytic conversion
※ Chapter 4 "Reactions on surfaces" : 表面と吸着物の電子的な相互作用について
「量子化学計算による酸化還元電位の算出法」(測定法小委員会によるPDF資料)
T. Matsui, Y. Kitagawa, M. Okumura, Y. Shigeta, S. Sakaki, "Consistent Scheme for Computing Standard Hydrogen Electrode and Redox Potentials", J. Comput. Chem. 2013, 34, 21–26. (DFT計算に基づいて還元電位を計算する手続きに関する研究)
Programming Tutorial in Chemistry by Python(計算化学のPython版チュートリアル;バージニア工科大学Crawford研がGitHub上で公開しているC++ベースの "C++ Programming Tutorial in Chemistry" が元ネタ)
Quantum Native Dojo(株式会社QunaSysが2019年から提供している量子力学・量子化学のチュートリアルサイト)
Quantum Computation and Quantum Information(10th Anniversary Edition;Michael A. Nielsen & Isaac L. Chuang;量子コンピューティングの著名なテキスト;→書籍版)
Qiskit を使った量子計算の学習(Qiskit Communityチームが提供する量子計算のチュートリアルを有志が邦訳したもの)
「Born−Oppenheimer近似と断熱近似」(山崎勝義先生による物理化学Monographシリーズの一つ;「量子論におけるブラ・ケット表記」も非常に分かりやすいのでオススメです)
RUNNING GAUSSIAN 09 JOBS MORE EFFICIENTLY (メモリやプロセッサ数を過剰に割り当てても計算性能が線形に向上する訳ではない、というお話)
A comment on spin contamination by ChatGPT-4 (provided at 2023/11/21):
量子化学計算における「spin contamination」は、主に電子のスピンを取り扱う計算において発生する問題です。これは、理論的には特定のスピン状態(例えばシングレット、ダブレット、トリプレットなど)であるべき分子や原子の計算が、他のスピン状態の特性を誤って含む場合に起こります。
Spin Contaminationの具体的な状況
不正確な波動関数の使用: Spin contaminationは、特にハートリー・フォック(HF)や密度汎関数理論(DFT)のような一電子近似手法で見られます。これらの方法は、多電子系の波動関数を一電子軌道の積として近似するため、スピン対称性が正確に保たれないことがあります。
励起状態の計算: 励起状態、特にトリプレット状態などの高次のスピン状態を計算する際にもspin contaminationが発生しやすいです。これは、基底状態に対する近似が励起状態のスピン特性を正確に表現できないためです。
不安定な分子構造: 特定の不安定な分子や遷移状態では、スピンの混入が発生しやすくなります。これは、分子の対称性や電子構造が複雑であるため、一般的な近似手法では適切にスピン状態を記述できない場合があるためです。
Spin Contaminationの検出と対策
スピン汚染の検出: 計算された波動関数のスピン期待値を計算することで、spin contaminationの存在を検出できます。理想的なスピン純度の状態では、スピン期待値は特定の整数または半整数の値になります。
対策: Spin contaminationを減らすためには、より高度な多体波動関数手法(例えば結合クラスター理論や多配置自己無撞着場(MCSCF)理論)を使用することが有効です。これらの方法は、多電子相互作用をより正確に取り扱うことができます。
Spin contaminationは、量子化学計算の正確さと信頼性に影響を与えるため、特に精密な計算を必要とする研究では注意深く扱われるべき問題です。
スピン多重度とスピン二乗値の対応関係は次の表の通り。スピン二乗値(S**2)はGRRMのアウトプットファイルに記載されている。
(参考:http://junzhu.chem8.org/sites/default/files/Open%20shell%20systems.pdf )
※spin quantum number (スピン量子数)Sに対して S(S+1) がスピン二乗値に相当する。spin contamination
「化学反応経路の自動探索」大野先生と前田先生による総説(2011年時点での内容)
【※補足】当時はAFIR法(人工力誘起反応法;じんこうりょくゆうきはんのうほう)が存在しなかったため、反応経路探索はADDF法によるものに限られていました。一時期、ADDF法は「GRRM法」と呼称されており、その名残のせいか、現在でもGRRMプログラムによる反応経路探索手法を総称して「GRRM法」と呼ぶ人がいらっしゃいます。しかし現在ではAFIR法が確立されてきたことに伴い、「GRRM法」という名称は一般に用いられなくなっていることに注意してください。
A. Nakao, Y. Harabuchi, S. Maeda, K. Tsuda, "Leveraging algorithmic search in quantum chemical reaction path finding," Phys. Chem. Chem. Phys. 2022, 24, 10305–10310. (反応経路探索の方向・空間の決定にrapidly-exploring random tree (RRT)法を適用してEQのクラスタリングを工夫した研究;従来のBoltzmann/SC-AFIR(1万経路を上限に探索)とkinetics/SC-AFIR(速度論ナビゲーションを適用して探索)と比較して効率的に目的物に到達できている;構造間のグラフ同型チェックにはNetworkX pythonライブラリ(https://networkx.org/)を使用)
GRRM Tipsのページも参照のこと
Optimizetion on Potential Energy Surface(自作の練習用プログラムをNotebook形式でまとめたものです)
P. Ruelle, U. W. Kesselring, H. Nam-Tran, Abinitio Quantum-Chemical Study of the Unimolecular Pyrolysis Mechanisms of Formic-Acid. J. Am. Chem. Soc. 1986, 108, 371–375, DOI: 10.1021/ja00263a004(気相中におけるギ酸の熱分解に関する論文)
Y. Harabuchi, S. Maeda, T. Taketsugu, K. Ohno. Direct Pathway for Water–Gas Shift Reaction in Gas Phase. Chem. Let. 2014, 43 (2) , 193–195. DOI:10.1246/cl.130940(WGS反応のGRRMによる全探索)
RCMC法に関するHighlight Review: Y. Sumiya and S. Maeda, "Rate Constant Matrix Contraction Method for Systematic Analysis of Reaction Path Networks" Chem. Lett. 2020, 49, 553–564. DOI:10.1246/cl.200092
Claisen転位について
→ "Über Umlagerung von Phenol-allyläthern in C-Allyl-phenole" Chem. Ber. 1912, 45, 3157–3166.(Claisenによる転位反応の報告;Claisen転位の初出論文)
→ "The Kinetics of the Rearrangement of Vinyl Allyl Ether1" J. Am. Chem. Soc. 1950, 72, 7, 3155–3159.(実験的に得られているアリルビニルエーテルのクライゼン転位反応の速度定数は 469.1 Kにおいて k = 2.875 × 10-3 と測定されており、ここから 469.1 Kにおける活性化障壁は ΔG‡ = 139.5 kJ/mol と見積もられる)
→ "Mechanism of the Claisen Rearrangement of Allyl Vinyl Ethers" J. Am. Chem. Soc. 1989, 111, 2, 511–519.
(多くのClaisen転位反応は200~300℃の反応温度で数分~数十分程度で完結する)
Cope転位について
→ "The Introduction of Substituted Vinyl Groups. V. A Rearrangement Involving the Migration of an Allyl Group in a Three-Carbon System" J. Am. Chem. Soc. 1940, 62, 2, 441–444.(Copeによる転位反応の報告;Cope転位の初出論文)
Oxy-Cope転位:A. Berson, M. Jonesによる最初の報告(2-exo-vinyl-2-endo-hydroxybicyclo[2.2.2]octene の反応;反応には300℃以上の高温条件が必要)
→ "A Synthesis of Ketones by the Thermal Isomerization of 3-Hydroxy-1,5-hexadienes. The Oxy-Cope Rearrangement", J. Am. Chem. Soc. 1964, 86, 5019–5020.
→ "Stepwise Mechanisms in the Oxy-Cope Rearrangement", J. Am. Chem. Soc. 1964, 86, 5017–5018.
→ "[3,3]Sigmatropic rearrangements of 1,5-diene alkoxides. Powerful accelerating effects of the alkoxide substituent", J. Am. Chem. Soc. 1975, 97, 4765–4766.(D. A. EvansとA. M. Golobによって、カリウムアルコキシドなどの存在下では低温でも極めて迅速に反応が進行することが見出された)
→ "Recent applications of anionic oxy-cope rearrangements" 1997年時点での総説(反応条件によって生成物選択性が生じる)
博士論文紹介「化学反応素過程の複雑ネットワークに対する速度解析」(住谷陽輔先生の博士論文紹介;開発者本人によるRCMC法の日本語の解説記事)
E.Wigner, "On the Quantum Correction For Thermodynamic Equilibrium" Phys. Rev., 1932, 40, 749–759.(Wignerのトンネリングファクターの補正)
P. Bell, "The tunnel effect correction for parabolic potential barriers" Trans. Faraday Soc., 1959, 55, 1–4.(より一般の調和ポテンシャル面上での摂動展開によるトンネリングファクターの補正)
The Wigner formula represents the first correction term in a perturbative expansion for a parabolic barrier, and is therefore only accurate in the limit of a small tunneling correction. There are many cases for which the tunneling correction is very large; for these cases the Wigner model is inappropriate.
I. Shavitt, "A Calculation of the Rates of the Ortho‐Para Conversions and Isotope Exchanges in Hydrogen" J. Chem. Phys., 1959, 31, 1359–1367.(Shavitt補正と呼ばれるWigner補正の拡張も知られている)
(変分的遷移状態理論に関するレヴュー)Variational transition state theory: theoretical framework and recent developments(Review Article;Bao JL, Truhlar DG (2017) Chem Soc Rev 46:7548)
M. Bickelhaupt, N. Houk, "Analyzing Reaction Rates with the Distortion/Interaction-Activation Strain Model", Angew. Chem. Int. Ed. 2017, 56, 10070–10086. (レヴュー;Activation Strain Model - 歪み/相互作用による反応速度の解析)
燃焼の反応機構と反応素過程 — (2) 反応速度定数(広島大の三好明先生による解説)
真空と表面(東京大の福谷克之先生による表面吸着に関する解説;熱脱離確率と平均滞在時間に関する記載がある)
反応障壁から反応速度定数を求めるプログラム(反応温度 K、反応障壁 kJ/mol、虚振動数 cm-1 の入力からWigner補正を適用した反応速度定数を計算する)
反応速度定数から反応障壁を求めるプログラム(上記の逆の計算を行うプログラム)
半減期が約1時間に相当する活性化障壁と温度の関係(遷移状態理論に基づく;虚振動数による補正はせず、透過係数を 1 と仮定)
1000 K 326 kJ/mol
900 K 293 kJ/mol
800 K 260 kJ/mol
700 K 226 kJ/mol
600 K 193 kJ/mol
500 K 160 kJ/mol
400 K 128 kJ/mol
300 K 94.8 kJ/mol
200 K 62.6 kJ/mol
100 K 30.7 kJ/mol
速度論ナビゲーションのパラメータセットの参考にしてください。
H. Edelsbrunner, D. Kirkpatrick and R. Seidel, "On the shape of a set of points in the plane," in IEEE Transactions on Information Theory, vol. 29, no. 4, pp. 551-559, July 1983, doi: 10.1109/TIT.1983.1056714. ; アルファシェイプを初めて定義した論文
Aktas, M.E., Akbas, E. & Fatmaoui, A.E. Persistence homology of networks: methods and applications. Appl Netw Sci 4, 61 (2019). https://doi.org/10.1007/s41109-019-0179-3 ; Persistence homology(パーシステントホモロジー)の応用に関する論文
Graph Neural Networks - GNNBook@2022(グラフニューラルネットワーク(GNN)に関する教科書;PDFが無料で公開されている)
領域プロジェクト「理論による化学のシミュレーション」 (常田貴夫 先生)
量子化学計算から燃焼反応機構への道標─理論化学的手法の現状と将来─(小口達夫 先生)
(構造最適化について)H. B. Schlegel, "Geometry optimization" Wiley Interdiscip. Rev.: Comput. Mol. Sci., 2011, 1, 790–809.
(溶媒効果に関するレヴュー)R. E. Skyner, J. L. McDonagh, C. R. Groom, T. van Mourik and J. B. O. Mitchell, "A review of methods for the calculation of solution free energies and the modelling of systems in solution" Phys. Chem. Chem. Phys., 2015, 17, 6174–6191.
(有機分子の歪みエネルギーに関するレヴュー)The Concept of Strain in Organic Chemistry - Prof. Kenneth B. Wiberg (B. Wiberg, Angew. Chem. Int. Ed. Engl., 1986, 25, 312–322.)
ADDF法, AFIR法以外の反応経路探索に関する論文(10.1021/acs.jpca.6b12195 の分類に基づき適当に列挙)
(gradient extremal following (GEF) method) "On finding transition states" Cite as: J. Chem. Phys., 1981, 75, 2800; https://doi.org/10.1063/1.442352
(reduced gradient following (RGF) method) "Determination of energy minima and saddle points using multireference configuration interaction methods in combination with reduced gradient following: The S0 surface of H2CO and the T1 and T2 surfaces of acetylene" Cite as: J. Comput. Chem., 2002, 23, 576–583; https://doi.org/10.1002/jcc.10054
(coordinate driving methods) "New Software for Exploring Interconversions on Potential Energy Surfaces" Cite as: J. Chem. Inf. Comput. Sci., 1999, 39, 705-712; https://pubs.acs.org/doi/pdf/10.1021/ci9804138
(Growing String Method; GSM) "Reliable Transition State Searches Integrated with the Growing String Method" Cite as: P. Zimmerman, J. Chem. Theory Comput., 2013, 9, 7, 3043–3050; https://doi.org/10.1021/ct400319w
→これを表面反応探索に応用した研究; "Reliable and Efficient Reaction Path and Transition State Finding for Surface Reactions with the Growing String Method" M. Jafari and P. M. Zimmerman; https://doi.org/10.1002/jcc.24720
(stochastic surface walking based reaction sampling (SSW-RS) method) "Stochastic Surface Walking Method for Structure Prediction and Pathway Searching" Cite as: J. Chem. Theory Comput., 2013, 9, 3, 1838–1845; https://doi.org/10.1021/ct301010b
(combined molecular dynamics and coordinate driving (MD/CD) method) "Automatic Reaction Pathway Search via Combined Molecular Dynamics and Coordinate Driving Method" Cite as: J. Phys. Chem. A, 2017, 121, 1351−1361; https://doi.org/10.1021/acs.jpca.6b12195
(反応経路分岐 "Bifurcation" に関するmini-review)D. H. Ess, S. E. Wheeler, R. G. Iafe, L. Xu, N. Celebi-Olcum, K. N. Houk, "Bifurcations on Potential Energy Surfaces of Organic Reactions" Angew. Chem., Int. Ed., 2008, 47, 7592–7601.
(「Müller・Brownポテンシャル」のオリジナル)K. Müller, L. D. Brown, "Location of Saddle Points and Minimum Energy Paths by a Constrained Simplex Optimization Procedure" Theor. Chem. Acc., 1979, 53, 75–93.
(汎関数のパフォーマンスのベンチマーク)G.-X. Zhang, A. M Reilly, A. Tkatchenko, M. Scheffler, "Performance of various density-functional approximations for cohesive properties of 64 bulk solids" New J. Phys., 2018, 20, 063020/1–19.(固相系ではPBE汎関数(必要に応じてvdW効果を考慮)がコスト的にも第1選択になり得る)
「第一原理計算による band gap の評価」
(Brillouin zone(ブリュアンゾーン)のk点の分類と図示)W. Setyawan and S. Curtarol, High-throughput electronic band structure calculations: Challenges and tools, Comput. Mater. Sci. 2010, 49, 299–312.(Appendixに格子ごとのk点の分類と図示が掲載されている)
Journal of Chemical Education(化学教育を志向するACS系の雑誌;研究分野のバックグラウンドを勉強するのにちょうどよい)
IntechOpenの「化学」のライブラリ(IntechOpenはOA図書出版社(掲載内容は査読有り);IntechOpen Book Seriesについて)
For metal complexes, the stability and reactivity are described in thermodynamic and kinetic terms, respectively. In particular, the terms stable and unstable are related to thermodynamic aspects, whereas labile and inert terms are related to kinetic aspects.(Stability of Metal Complexes)
"Statistical methods in atomistic computer simulations"(Michele Ceriotti先生;スイス連邦工科大学ローザンヌ校 教授)
TOF(触媒回転頻度):一つの触媒サイトにおいて単位時間あたりに生成物に変換できる分子数の最大値である。触媒の最高効率を表す。
TON(触媒回転数):触媒が不活性化する前に、触媒1モルあたり(または触媒サイト1モルあたり)変換できる物質のモル数(または分子数)である。触媒の安定性(寿命)を表す。
Isodesmic Reaction(アイソデスミック反応):反応物で切断される化学結合の種類と、反応生成物で形成される結合の種類が同じであるような化学反応のこと。このタイプの反応では、結合の総数と種類が保たれているため、反応前後のエネルギー的な誤差が相殺され、計算レベルの高低によらず熱化学のエネルギー差(反応エネルギー)を良い精度で見積もることができるとされている。
※参考:What are Isodesmic Reactions?
Aldrich(Merck社の提供する化合物検索システム;大量検索には向かない)
H. Shudo, M. Kuwayama, Y. Segawa, K. Itami, "Synthesis of cycloiptycenes from carbon nanobelts" Chem. Sci. 2020, 11, 6775–6779. (SIのzipにカーボンナノベルト類のxyz座標)
カーボンナノベルトは芳香環の接合様式によって「アームチェア型」と「ジグザグ型」に分類される。(参考→東工大の研究)
N. Hayase, J. Nogami, Y. Shibata, K. Tanaka, "Synthesis of a Strained Spherical Carbon Nanocage by Regioselective Alkyne Cyclotrimerization" Angew. Chem. Int. Ed. 2019, 58, 9439–9442.(SIのpdfにカーボンナノケージのxyz座標)
cf. カーボンナノチューブ、カーボンナノファイバー、カーボンナノフレークなど
Making Moleculesというウェブサイトが公開している学部レベルの有機化学のハンドアウト一覧 → https://www.makingmolecules.com/handouts
The Cambridge Energy Landscape Database(クラスターなどの研究チーム;エネルギー地形)
Jonathan Doye's Research Group(クラスターなどの研究チーム)
High-Throughput Molecular Dynamics Simulations and Validation of Thermophysical Properties of Polymers for Various Applications(ガラス転移温度を予測するMDシミュレーションに関する研究;SIにガラス転移温度と密度のデータあり)
Creating a surface slab model using VESTA(VESTAを利用したスラブモデルの作り方)
Molecular Weight Calculator(組成から分子量を計算する)
GoodVibes(エネルギーの補正計算など)
SHS4py(Pythonによる超球面探索手法の実装)
PythonでRDKitを始めよう(RDKitの日本語マニュアル)
結晶格子の並進ベクトルの座標計算(Calculate xyz coordinates of translation vectors from cif format)
matplotlibチートシート(matplotlib公式)
ML-For-Beginners(microsoftのリポジトリ)
PyMOL Tutorial(PyMOLはオープンソースの分子グラフィックスツール)
GitHubアカウントを持っている人は、GitHubの資料はブックマーク機能で整理しておくと便利です。
プログラミング自体はオンラインアプリを使えば環境構築(=プログラミング言語を使えるようにする作業)をせずに誰でもすぐに始めることができます。例えば以下のようなものがあります。
Pythonメインなら Google Colaboratory なども便利(Notebook形式なので少し慣れが必要かも?)
これらのオンラインアプリでコードを動かすことができます。プログラムを使って何をしたいかによって、実装の難度が変わってきます。化学科の化学実験II(旧「計算機実習」)の課題はプログラミングスキルとしてはいずれも初級レベルの内容です。研究にプログラムを利用する場合はより高度な実装が求められますが、インターネットを通じてうまく情報収集すれば大抵のことは実現できます。以下に、今後役立つかもしれないプログラミング用の教材を挙げておきます。
【プログラミング全般】
ドットインストール(様々なプログラミング言語やソフトウェアについて動画付きで項目別に解説しているサイト;初心者向け)
free-programming-books-ja(GitHubにまとめられている充実の資料;Free Ebook Foundationには様々なリポジトリがあります;リンク集として活用するのがオススメ)
CS-Notes(アルゴリズム集;中国語(簡体))
【(主に)Python】
Python チュートリアル(Pythonディベロッパーが提供する本家本元のチュートリアル)
Python早見帳(東工大の岡崎直観先生によるPython初学者向けテキスト;ノートブック形式)
機械学習帳(東工大の岡崎直観先生による機械学習初学者向けテキスト;ノートブック形式)
pandasライブラリ(東大の数理・情報教育研究センターが公開しているテキスト;ノートブック形式)
Automate the Boring Stuff with Python 第2版(邦訳は『退屈なことはpythonにやらせよう』)
Deep Learning(Goodfellow先生のテキスト;htmlとして閲覧可能)
Deep Learning with PyTorch(PDF資料)
Python Data Science Handbook(html資料)
100+ Free Machine Learning Books - Download Best Machine Learning Books PDF
100+ Free Data Science Books - Data Science PDF for Beginners and Experts
An Introduction to Statistical Learning 第2版(邦訳は『Rによる統計的学習入門』)
ML関連のテキストを紹介するredditのスレッド
プログラミング入門 - Rubyを使って -(化学実験Ⅱで例年利用しているプログラミング実習のテキスト;有志による和訳版)
Project Euler(研究室配属後のプログラミングの練習用素材;有志による和訳版はこちら)
Python for Bioinformatics(バイオインフォマティクスと書いてあるが一般的なPythonの初歩から解説されている;ビデオ解説有り)
【JavaScript】
JavaScript Primer - 迷わないための入門書(JavaScriptのテキスト)
【Julia言語】
Julia memorandums(Julia言語のテキスト;日本語マニュアル)
Juliaでファイル操作、File Handling in Julia(こちらも参考に)
Juliaでの整数・浮動小数点数・文字列・文字間の型変換 - Qiita
【その他】
自動微分について:
自動微分を実装して理解する(前編): https://qiita.com/lotz/items/39c52f08cc9b5d8439ca
自動微分を実装して理解する(後編): https://qiita.com/lotz/items/f1d4ab1d83dc13a5d81a
The Elements of Differentiable Programming (arXiv): https://arxiv.org/pdf/2403.14606.pdf(微分可能プログラミングのテキスト)
行列積順序問題について: https://en.wikipedia.org/wiki/Matrix_chain_multiplication#More_efficient_algorithms
(1. は辞書のように充実しているのでサクッと調べたいときは 2. を参照のこと)
Markdown記法 チートシート - Qiita
Markdown記法 サンプル集 - Qiita
LaTeX形式で卒論修論博論を書きたい方向けの情報をまとめておきます。「LaTeX 卒論 テンプレート」などで検索すれば大量の情報がヒットします。レポート課題なんかも数式を多用するのであればLaTeX形式で作成するのがオススメです。TeXの数式レンダリングは非常に美しいためです。(最初は慣れが必要ですが…)
個人的にはOverleafというオンラインアプリでの作成を推奨しています。こちらも検索すれば大量の情報がヒットします。中でも東大工学部が公開しているテンプレートは実用的であり貴重です。以下にツールセットを紹介します。
Gallery — University of Tokyo - Overleaf(LaTeX形式の卒論修論博論テンプレート)
mathpix(数式の画像をキャプチャしてLaTeXコマンドを生成する「数式起こし」アプリ;手打ちだと大変な数式でもラクに&高精度で起こせるので非常に重宝する)
TeXer - AoPS(数式のLaTeXコマンドをリアルタイムレンダリングしてくれるオンラインアプリ;"RENDER MATHJAX" のボタンを押すとMathjax(Javascriptのライブラリ)によるリアルタイムレンダリングが実行されます;因みにAoPSは競技数学専門の掲示板です)
【Python】png,jpeg,gif画像をeps形式に変換する - Qiita(LaTeX文書への画像挿入はeps形式に変換して行うとサイズ指定などがラクです;pdf形式の画像でもOK)
スパコン関連の資料
一週間でなれる!スパコンプログラマ - kaityo256氏 (github)
scpコマンドでスパコンA(aserver.ac.jp)からスパコンB(bserver.ac.jp)へファイルを移動するには、移動させる先のサーバーで以下のコマンドを叩く。送信元であるaserverの秘密鍵のパスフレーズが要求されるので入力すると、データのコピーが開始する。
[hoge@bserver ~]$ scp -i /home/hoge/.ssh/(aserverの秘密鍵) -r hoge@aserver.ac.jp:(移動したいファイルのパス) (移動先のパス)
Enter passphrase for key '/home/nabata/.ssh/(aserverの秘密鍵)':
※上手くいかない場合は秘密鍵の規格が悪い可能性があるので、鍵を別のフォーマットで再作成してみる(MobaXtermの場合は既存の鍵を用いて再作成可能)。
※MobaXtermのバージョンが古いという原因も考えられるので、最新のバージョンにアップグレードして再試行してみること。
初心者のためのよく使うLinuxコマンド一覧 - Rriver
【メモ】Linux圧縮/解凍コマンド - Qiita
gzファイルの解凍コマンド:tar -xzvf xxx.tar.gz
ファイル検索コマンド:find -name xxx:xxxという名前のファイルのパスを探してくれる
Linuxでハードウェア情報を表示するコマンドまとめ - マイナビTECH+
以下のコマンドで IP address やLinuxのバージョン、CPUやメモリの情報を取得可能。
How to find your IP address in Linux (an example of National Institutes of Natural Sciences (NINS) Okazaki Research Facilities):
[user@ccfep7 ~]$ hostname -I
10.20.32.7 10.10.32.7 133.48.230.17
[user@ccfep7 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
(中略)
7: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:ea:9f:08 brd ff:ff:ff:ff:ff:ff
inet 133.48.230.17/24 brd 133.48.230.255 scope global noprefixroute bond1
valid_lft forever preferred_lft forever
inet6 fe80::8689:732e:69a:2ca0/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[user@ccfep7 ~]$ ifconfig
bond1: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 133.48.230.17 netmask 255.255.255.0 broadcast 133.48.230.255
inet6 fe80::8689:732e:69a:2ca0 prefixlen 64 scopeid 0x20<link>
(以下略)
【参考】インターネット初期に日本に割り振られたIPアドレス一覧 - ぺんたん.info
You can find the version of Linux by cat /proc/version. You see the CentOS works.
[user@gr24 ~]$ cat /proc/version
Linux version 3.10.0-693.21.1.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Wed Mar 7 19:03:37 UTC 2018
You can find info about CPU by cat /proc/cpuinfo and memory by cat /proc/meminfo.
[user@gr24 ~]$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz
stepping : 4
microcode : 0x2000050
cpu MHz : 2401.000
cache size : 28160 KB
physical id : 0
siblings : 20
core id : 0
cpu cores : 20
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb cat_l3 cdp_l3 invpcid_single intel_pt spec_ctrl ibpb_support tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm mpx rdt_a avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts
bogomips : 4800.00
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
(以下、省略)
[user@ae01 ~]$ cat /proc/meminfo
MemTotal: 196482788 kB
MemFree: 32517940 kB
MemAvailable: 115701312 kB
Buffers: 140 kB
Cached: 82267400 kB
SwapCached: 24 kB
Active: 96958068 kB
Inactive: 62862400 kB
Active(anon): 77498200 kB
Inactive(anon): 153464 kB
Active(file): 19459868 kB
Inactive(file): 62708936 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 8388604 kB
SwapFree: 8383692 kB
Dirty: 16 kB
Writeback: 0 kB
AnonPages: 77553372 kB
Mapped: 53460 kB
Shmem: 98732 kB
Slab: 2029896 kB
SReclaimable: 1765568 kB
SUnreclaim: 264328 kB
KernelStack: 15376 kB
PageTables: 159356 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 106629996 kB
Committed_AS: 85141900 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 845700 kB
VmallocChunk: 34258257916 kB
HardwareCorrupted: 0 kB
AnonHugePages: 567296 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 304140 kB
DirectMap2M: 7735296 kB
DirectMap1G: 193986560 kB
lscpu command also works.
[user@ae01 ~]$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 40
On-line CPU(s) list: 0-39
Thread(s) per core: 1
Core(s) per socket: 20
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz
Stepping: 4
CPU MHz: 2401.000
CPU max MHz: 2401.0000
CPU min MHz: 1000.0000
BogoMIPS: 4800.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 28160K
NUMA node0 CPU(s): 0-19
NUMA node1 CPU(s): 20-39
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb cat_l3 cdp_l3 invpcid_single intel_pt spec_ctrl ibpb_support tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm mpx rdt_a avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts
【Windows】Ctrl+Z で元に戻す、Ctrl+Y で前に進む (「元に戻す」を撤回する;Shift + Ctrl+Z が前に進むショートカットの場合もある)
【Windows】Ctrl+C でコピー、Ctrl+V で貼り付け(ペースト)、Ctrl+Shift + V で書式をコピーせず貼り付け(ペースト)(←MS Wordなどではコピペの書式保持設定を変更可能なので調整する)
【MS Word】Shift+Alt+= で数式モード
【Windows】Win+Alt+R でアクティブなディスプレイをレコーディング開始/終了(Win+Gでゲームバー表示)
【MS PowerPoint】Ctrl+G で複数選択した画像、テキストなどのオブジェクトをグループ化
最速級の文字起こし方法(PDFにテキストデータが埋め込まれていない場合)
① PC版LINEの画像キャプチャなどで文字起こし
② 全選択したテキストをブラウザのURLバーに突っ込んで改行を全削除
③ 必要に応じて和訳する
これで論文を読むスピードが数段上がります。学会前など急いでるときに重宝します。
(レポート課題などもこの方法を使えばかなり作業量を減らすことができるが、英語の速読力を鍛える機会を悉く逸するので注意)
作成者によって印刷操作が禁止されたpdfを印刷する方法
・Firefoxにpdfを突っ込むと各ページが画像化されるので、これを印刷orダウンロード(または [印刷] > [PDFに保存])すればよい。
・ただし埋め込まれていたテキスト情報は失われる。
Slack(メールやLINEなどより効率的に情報共有可能;API経由でBotの運用も可能;データ容量に制限がある点がややネック;2022年9月以降有料化&サービス制限が掛かったため、3か月以上の長期間にわたる共用データベースとしてはオワコン化した)
Scrapbox(クラウド型メモ管理サービス;相互リンク機能が便利;個人なら無料だがアカデミック利用なら人数制限なしで無料)
Zoom(ゼミ発表や学会、オンライン懇親会などで利用)
Notion(Todoリストを高い自由度で投げられる。個人のタスク管理にオススメ;最近日本語にも対応した)
NotionはUIがシンプルで使い勝手が良いアプリだが、強いて言えばタスクの階層管理がもう少し簡単にできると嬉しい...。
Twitter(即時性の高い情報収集ツールとして有用;例えば、Twitterのリスト機能を使って専門分野に関するアカウントを集約しておくと簡易的な速報Botとして使える;作成したリストは公開すれば複数の第三者のアカウントがフォロー可能で、むしろ既存のリストをフォローさせてもらうという手もある)
Discord(ゲーマーの間で重宝されていたアプリだったが、現在では情報共有やコミュニティ形成を目的として多くのユーザーに利用されている;ゲーマー向けアプリというだけあってLIVE配信機能はなかなか高性能;API経由でBotの運用も可能;データ容量に制限が無く、過去の全チャット履歴にアクセス可能(2023年現在))
ガクシー(日本にあるほぼ全ての奨学金を網羅した国内最大の奨学金サイト)
科学カレンダー(理工系)学会と展示会のカレンダー((株)科学技術社の提供;理工系学会がほとんど網羅されている素晴らしいサイトなのでブックマークしておこう)
日本の研究.com(プレスリリースを基に日本の学術機関の成果を紹介するサイト)
connected papers(論文間のリンク関係をグラフ化するオンラインアプリ;下図は可視化した例;ノード数に制限あり)
研究とは端的に言うと「新しい事実の発見」なので、研究を始めるにあたって先行研究を調べ、何が既知で何が未知かを精査しておく必要がある。新規テーマを決めるには十分なサーベイ(survey)が必要となるが、これはそれほど容易なことではない。研究室の方針によっては指導教員が学生にどんどんテーマを渡すこともあるが、サーベイ作業を学生に任せる方針の研究室もある(ボスが多忙 or 研究室内に全く知見が無い、というだけのケースも無きにしも非ずだが...)。
"how to find the research gap" などと検索すると色々出てくるので見てみても良いかもしれない。日本語よりも英語のクエリで検索する方がヒット件数が多く効率的。
参考文献を検索する具体的な手順を以下に示す。
① 題材のキーワードでGoogle検索を掛けて論文を探す。google scholorなどを利用するのも良い。
"base metal photochemical reduction of CO2"などで検索する。英語のクエリの方が論文はヒットしやすい。
・レヴュー(review;総説)は当該分野の内容を網羅的に扱っているので、新規テーマの常識を手早く仕入れる際にはオススメ。
② 学術出版物向けの検索エンジンを利用して引用(Reference)と被引用(citation)の論文を辿る。
Semantic Scholar(引用・被引用文献が網羅的にリスト化されている)
Google Scholar(Googleの学術論文検索エンジン)
PubMed(生命科学や生物医学の論文検索が得意だが、その他の分野でも使える)
Reaxys(有機合成に特化した学術論文検索エンジン;個人的にはほとんど使っていない)
Scifinder(CASのアカウントがあれば;個人的にはほとんど使っていない)
STN(CASのアカウントがあれば;個人的には全く使っていない)
③ 和文の総説を検索する。
当該分野・化学反応の概観を体系的に紹介しているものが良い。
④ 図書館で文献を探す。
古い書籍などは運が良ければ図書館で見つかることがある。
以下の資料はスライド作成スキルを上げる上で非常に参考になる。
「伝わるデザイン」(千葉大の高橋佑磨先生によるウェブサイト;高校生向けの「高校生のための研究発表の手引き」も参考に)
ICReDDスキルアップ講演会「きれいに見えるプレゼンファイルの作り方」(北海道大の伊藤肇先生のプレゼン指南書;研究室内での共有を推奨)
Windowsユーザーの場合、基本的には MS PowerPoint でスライド資料を作成する。口頭発表では PowerPoint の「スライドショー」を利用するのが一般的。
作成したスライド資料は Ctrl+S で逐一保存しながら作成すべきである。また、Windowsの更新は自動的に行われないように設定しておくとストレスが減る。
文章の文字の大きさは最低でも14pt以上(グラフのラベルなどは12pt以上)が望ましい。(ポスター資料の場合はさらに大きくする)
スライドの各ページにはページ番号を記載する。
引用文献の書式は必ず統一する。化学系の資料の場合は、RSC(英国王立化学会)系、もしくはACS(アメリカ化学会)系のフォーマットで表記するのが一般的。Nature、Cell、Science(いわゆる "NCS")のフォーマットは上記2つと異なるので各誌のポリシーに従うこと。また、各誌の引用文献のスタイルは更新されることがあるので、投稿の際に確認する。
Ex.) RSC style
[1] S. Maeda and K. Morokuma, J. Chem. Theory Comput., 2011, 7, 2335–2345.
[2] S. Maeda, Y. Harabuchi, M. Takagi, T. Taketsugu and K. Morokuma, Chem. Rec., 2016, 16, 2232–2248.
Ex.) ACS style
[1] Maeda, S.; Harabuchi, Y.; Taketsugu, T.; Morokuma, K. Systematic exploration of minimum energy conical intersection structures near the Franck−Condon region. J. Phys. Chem. A 2014, 118, 12050−12058. DOI: 10.1021/jp507698m
[2] Maeda, S.; Morokuma, K. Toward Predicting Full Catalytic Cycle Using Automatic Reaction Path Search Method: A Case Study on HCo(CO)3-Catalyzed Hydroformylation. J. Chem. Theory Comput. 2012, 8, 380–385. DOI: 10.1021/ct200829p
太字・斜体にすべき部分や著者名の様式の違いに注意。volumeは巻番号、issue(No.)は号番号である。各号が1ページから始まるジャーナルの場合は号番号(No.)も記載する。頁番号は末尾に記載してピリオドで閉じる。なお、スライド資料ではDOIまで記載する必要は無い(論文投稿の際にはDOIの記載が推奨されている)。
【参考資料;RSC系のガイド】
How to reference using the Royal Society of Chemistry style - Royal Society of Chemistry
Royal Society of Chemistry Style - University of Bath
【参考資料;ACS系のガイド】
ACS Style Quick Guide - American Chemical Society
ACS citation style - Concordia University
【参考資料】
科学における引用と参考文献の書き方 - ネットdeカガク
"e.g."、"i.e."、"et al." といったラテン語の省略形はすべて小文字で表記し、ピリオドの使い方は慣例に従う。基本的にはイタリック体ではなくローマン体とする。"e.g." は "exempli gratia" = for example(例えば)、"i.e." は "id est" = that is ...(すなわち)、"et al." は "et alii" = and others(他)の省略形。
(参考:引用著者名の表記法と“et al.”の使い方、科学論文での略語のミスを避けるためには)
2名以上表記して他の複数名を略す場合には et al. の前にカンマを入れる(例 S. Maeda, Y. Harabuchi, et al., Chem. Rec., 2016, 16, 2232–2248.)。
著者1名のみ表記して他の複数名を略す場合、カンマは不要(例 S. Maeda et al., J. Chem. Theory Comput., 2011, 7, 2335–2345.)。ただし、et al. は and others の意味なので正確を期すのであれば「その他」が2人以上、つまり著者数が合計3人以上の場合にしか本来は使わない、ということは頭に置いておいて良いだろう。
"etc." は "et cetera"(~など)の省略形であり、"A, B, C, etc." のように事物を列挙する場合はカンマを付ける。"etc." の前に "and" は不要。
"ibid." はラテン語 ibidem の省略形であり、既出の文献を再び参照する際に用いられる。論文中でこの表現が出てきたときは直前に示された雑誌を指している。
1ページにつき1メッセージを基本に作成する。(各ページのメッセージを寄せ集めるとそのままSummaryになるのが理想)
例えば、各ページの下部に、何が重要か、何が得られたのか、などについて1行で良いので、視聴者の解釈の助けになるような説明を表示しておくと分かりやすくなる。
色を多用しすぎると、どの部分が重要なのか、意味が分からなくなるので乱用に気を付ける。
基本的に文章は2色で良い。(通常の文に黒色1色、強調用に明度低めの1色、など)
色合いを調整するときはRGBよりHSLで調節するのが良い。
マイナス記号には必ず「マイナス『−』」を用いる。負号として半角ハイフン「-」は避けること。
※enダッシュ「–」とemダッシュ「—」は別の文字(負号ではない)なので注意。
※「挿入」→「記号と特殊文字」→ unicode: 2212 を選択
MS PowerPoint の場合は「配置」の機能を重宝する。これを使いこなすことで手作業による微調整の手間を一気に省くことができる。
PowerPoint のショートカットキーは積極的に利用しよう。マウスを触るタイミングを減らすと時間の節約になる。
図表には何のデータなのかを示すキャプションを必ず付けること。グラフの軸や単位の説明は口頭で良いので、基本的には加えておくべき。
図表データの軸に "au"、"a.u." とある場合、これは "arbitrary units" の略である。「任意単位」は測定した強度などの数値の比を表す相対的な値。
スライド資料には基本的に意味のあるデータしか掲載しないものなので、普通、視聴者はデータに意味を見出しながら説明を聞こうと努める。説明の論理的な流れ(「ストーリー」とも呼ばれる)が連続的でないと無用な混乱を招く恐れがある。内部用の資料ならともかく、外部向けの資料ではそのデータを掲載した論理的な理由が明確でなければならない。
逆に、敢えて視聴者からの質問を誘うような構成にしておき、想定質問について十分なデータを用意して対策する、というやり方もあるが…。
セリフ(発表原稿)は説明的な文体とし、口語的表現は避ける。例えば「(ので/)から」→「ため」、「~てあって/~ていて」→「~てあり/~ており」、「~とか」→「~ですとか」...など。「~っていうか」や「なんか」などはフォーマルな発表の場ではほとんどの場合NG(せめて「~と言いますか」などとする)。
指示語の乱用は避けるべきである。項目が多数ある場合は、視聴者がフォローしやすいように適切な(自分が読みやすく相手にも意味の分かる)ラベルを付けておく。
なぜその手法を採用したのか、その手法以外に有望なものは試してみたのか、などの根拠は用意しておく。Appendixのページ(一応試してみたけどダメだった、などの結果のデータ)を用意しておけば質問対策になる。検討してはいる(いた)が時間が無く今後行う予定であるという場合は、そのように受け答えすればOK。
実験系・理論系の別によらず、意味のある実験・計算データは PowerPoint に数値などとともに要点をまとめておくことが望ましい。Appendixとしてそのまま流用できれば文句無し。Excelでも良いので、とにかく尋ねられた時などにすぐ参照できるような形で保存しておこう。
私自身は、自宅でも研究室でも作業できるように、スライド資料はDropBoxなどのクラウド上に保存している。これにより、個々のPCに保存する場合に比べて、データが取り出せなくなったり、異なるバージョンがやたらと共存することはほぼ無くなるが、セキュリティには十分配慮する必要がある。
レイアウトや配色などに関しては下記【学会発表・論文執筆の際に役立つかもしれないリンク】のセクションも参照のこと。
謝辞の書き方の例:
The calculations in this study were performed by the Computational Science Research Center, Okazaki Common Research Facilities.
This research was supported by the Institute of Quantum Chemistry and Chemical Exploration (IQCE) Scholarship "IQCE Fellowship" and the Ambitious Doctoral Fellowship (Information and AI) of Hokkaido University.
よりよい英語論文の書き方(英文校正.netが提供するドキュメント)
(再掲)「伝わるデザイン」(千葉大の高橋佑磨先生によるウェブサイト;高校生向けの「高校生のための研究発表の手引き」も参考に)
(再掲)ICReDDスキルアップ講演会「きれいに見えるプレゼンファイルの作り方」(北海道大の伊藤肇先生のプレゼン指南書;研究室内での共有を推奨)
connected papers(論文間のリンク関係をグラフ化するオンラインアプリ)
論文の引用・被引用のリンクを辿る際に非常に重宝する。検索はDOIを入れるだけで可能。ただし引用・被引用の件数には限りがある(リンクのある全論文を含むネットワーク化はされない模様)。
論文執筆にあたっては参考文献として多くの論文を蓄積することになるが、その管理・把握は一苦労である。そこで便利なのがmendeley(メンデレー)というオンラインアプリである。論文をPDF形式でアップロード・登録し、文献情報を整理することができる。ユーザーが独自にタグ付けしたりメモを残したりする機能もあり、電子データとして論文を管理する際には第1選択となるアプリと言える。詳細な使用方法については公式ドキュメントや関連ウェブサイト等を当たって頂きたい。
Booking.com(滞在先予約サイト)
ホテル等の宿泊施設の予約はこのサイトを通じて行うのが簡単。勿論、他のサイトを経由して予約しても良い。国や自治体のキャンペーンや株主優待、社員の家族割引などで安くなる場合もあるので、適宜利用する(当然だが研究機関から補填されるのは実費のみ)。
学会発表することが決定した際は最低限、ホテル・航空機(行き/帰り)を予約しておけばOK。海外で発表する場合は前もって(遅くとも1か月以上前には)パスポートの発行を済ませておくこと。
海外出張の場合、現地通貨との両替は空港だとレートが悪いことが多い。着いた矢先に空港で全額換金してしまうのではなく、交通費などの必要分以外は市中の両替所で適宜両替すると良い。最近はクレジットカード決済が多くの店舗で利用できるため、用心のために多めに換金したとしても余らせてしまうことが多い。
(国内学会でも共通)紙ポスターは筒状にしてポスターホルダーに入れて現地まで運ぶ。荷物のサイズ(長さ)が大きくなるため、空港での受取場所が手荷物と異なり受け渡しに時間が掛かることがある。乗り継ぎの所要時間は多めに確保しておくのが吉(特にアメリカ経由の場合)。
布ポスターは折り畳んで運べるので便利(折り目は付いてしまうが)。紙ポスターでも折り畳めないことはないが、布ポスターよりも傷みが目立つので気になる人は布でするのが良いだろう。あるいは見た目は簡素だが、A4×16枚でスライド風の形式で発表する人もいる(ただし学会の属性や審査員の趣味によっては悪印象を与えるかもしれない)。
個人的にはポスターは布で持っていくのがラクで良いと思う。
航空券やホテル予約完了画面など、支出の確認できる書類や領収書は、PDFあるいは印刷体で保管しておくこと。基本的に交通費は既定の額(バス・JR乗車券代などを合算した上での考えられる限り最低の金額)しか支払われないが、公共交通機関の領収書なども一応保管しておくと良い。研究室が旅費を支給してくれる場合や、自分の予算を持っている場合に経費として支出できる根拠になる。
基本的に航空券とホテルの予約は早めに済ませるのが良いが、学会の日程が確定する前に予約する場合は少し注意。例えば「余裕を持たせて後泊を含めて予約したが、後日公開された学会日程を確認すると学会終了後でも帰りの便の飛行機に間に合うことが分かった」などというケースが発生することがある。このような場合はあらかじめ、航空券をスーパーバリューで手配する(あるいは格安航空会社でチケットを取る)、ホテル代を(朝食を抜くなどして)5000~6000円程度と比較的安く抑える、といった工夫をしておき、出張費を安く収めるための合理的な理由を用意しておく。秘書さんとのコミュニケーションも重要。
※北海道大学の場合、東京圏の宿泊費(日当)の目安は9000~10000円、それ以外の都市では8000円程度の上限が設定されているようです。
口頭発表の場合は念のため、自分のPCに合ったディスプレイ出力用のケーブルor変換器を用意しておくと良い。多くの場合VGAかHDMIかDVIのいずれかが接続できれば問題は無いので、特殊なノートPCでもない限り本番で特に困ることは無いだろう。
(自分はMini DisplayPortをHDMI(メス)に変換するケーブルを持参してsurface pro4で口頭発表したことがある)
宿泊施設でのデスクワークが必要になりそうなら、備え付けのモニタでデュアルディスプレイにできるようHDMIケーブルを持参すると良い(PCを持参する場合)。
学会プログラムに "TBA" とあるのは "To be announced"(後日発表;決定次第追って通知する)の略。
大学院への進学について - 信州大学 農学部/大学院農学専攻 創薬標的科学研究室(信州大の喜井勲先生のメッセージです)
進学希望の場合はM2の5月にDC1の申請書を提出します(DC1は一般に学振と呼ばれている科研費の一つ)。これに採択されれば月20万円の給与と年間100万円程度の研究費が支給されます。DC1やDC2は研究者のステータスとも言える研究費で、全国の博士課程進学(予定)者が応募しているものです。しかし、採択率は20%程度と決して門戸が広いとは言えません。目を瞠るような輝ける業績を持っている人でもない限り、採択の成否には運の要素も多分に含まれます。学振の申請書の書き方などは研究室内で受け継がれているものを参考にしつつ、時間に余裕を持って作成を進めるのが良いでしょう(半年以上前から書き始める人もいます)。
その他、博士課程教育リーディングプログラム(北大のものは物質科学フロンティアを開拓するAmbitiousリーダー育成プログラム)などのカリキュラム(経済支援付き)がありました(文科省からの予算は2020年で終了)。最近の北大では新たな博士課程進学者向けの経済支援パッケージ(アンビシャス博士人材フェローシップ、DX博士人材フェローシップなど)が豊富なので、かつてに比べると博士進学のハードルは下がっているように思います。
もちろん、日本学生支援機構の奨学金などもあるので、支援の必要な方はチェックしておきましょう。第1種奨学金の場合は無利子で借りることができるので、特に事情が無いのであれば第1種の方をお勧めします。
(2023/03/08追記)財務省の方針により、博士課程の生活支援の重複受給が禁止されることになるようです。科学研究費は税金が元手の限られたリソースなので妥当と言えるでしょうが、民間の奨学金とは併給可能なのか、金額によるのか、・・・など未定の部分も多く、今後の発表が注目されています。
アカデミアノートというウェブサイトは博士課程やその後の進路を考える上でとても有用です。博士課程で受けられる助成や研究費の支援についてはこちら→ https://www.academianote.site/scholarship/ のページが詳しいです。既に博士課程へ進学された方にも参考になると思います。
予算でパーツを購入してデスクトップPCを組む際のメモ。
必要となるPC部品
CPU
マザーボード
グラフィックボード
メモリ
ストレージ(最近は専らSSD)
電源ユニット(それなりにハイパワーなものを用意したい)
ケース
取り敢えず以上のものを購入しておけばよい。実際に使用する際はモニターや電源ケーブル、HDMIケーブルなどは当然必要。また、組み立て時に ±ドライバーが必要になるので、先端が磁石になっているものを用意する(こういうところでケチらないで良いものを買うこと)。
※各パーツに関する詳しい説明はGoogleに聞いて下さい。
以下、個人的な雑感。
CPU
PCの頭脳。どのスペック(スレッド数やクロック数)が必要かはマシンの用途による。用途の割に高性能なものを用意しても無駄に発熱するだけの機械になる。自作PCの場合は、Intel社のCore iシリーズか、AMD社のRyzenシリーズのいずれかを選択することになる。
マザーボード
PCのパーツ一式を乗せる板。CPUに対応するチップセットをもつマザーボードでないとCPUが機能しないので規格に注意。あとは各パーツのスロットの数や配置、WiFiやBluetoothの受信機能、光り方(?)で選ぶ(光らないものはあまり無い)。マザーボードの交換は非常に面倒なので、上に載せるものがハイエンドであるほど、良いものを用意しておきたい(マザーボード側のコネクタの規格が古いとパーツの本来の性能を引き出せなくなる可能性があるので、取り敢えず最新のものを買っておくというのはアリ)。
グラフィックボード
GPUが乗った板。CPUやマザーボードによってはGPUが内蔵されているものもあるが、マルチディスプレイにするならグラフィックボードは必須。これもやたらと性能にこだわっても仕方がない。ゲーム専用機とかであれば高いものを用意したら良いだろうが少々値が張る。RTX3000番台などの立派なグラフィックボードだとPCIe端子からの給電では不足で、6ピン(最大75W)もしくは8ピン(最大150W)もしくはその両方で、さらに電力を供給する必要がある。
メモリ
データを一時的に記憶させるためのパーツ。基本的にはクロック数が大きいものほど高性能。規格(DDR4とかDDR5など)によってはマザーボードが対応していなかったりするので確認しておく。16 GB * 2枚 で十分動くが、本格的に3DCGなどをいじる場合は少なくとも倍は欲しい。必要分だけ用意すればよく、マザーボードのすべてのメモリスロットを埋める必要は無い。メモリを増設する場合、必ずしもすべて同じメーカーの同じ型のメモリにする必要は無いが、マザーボードのメモリスロットによって仕様が異なることがあるので注意。一般的には、同じメーカーのメモリ2枚を2組用意して使うというのが多い(自分が組んだPCでは4スロットすべてに同じ製品を刺している)。
ストレージ
データの収納スペース。それなりの容量(~ 1 TB)のSSDを買っておけば基本的には困らない。足りなければ後からドライブを付け足すこともできる。なお、マザーボードがSSDの規格に対応していないと本来の読み書き性能が発揮できないので注意。SSDとマザーボードのスロットの規格はよく確認しておこう。
電源ユニット
PCの命。パフォーマンスを安定させる要なのでケチらないこと(ショボい電源を使っていると部品の寿命にも影響しかねない)。800 W~くらいのもの("80 PLUS GOLD" 以上の認証を受けた製品)を用意しておけば将来的な拡張にも十分対応できる。付属ケーブルは後々必要になる場合があるのでしっかり保管しておく。
要求される電源容量を簡易的に見積もる式(単位:w) → (CPUのTDP + GPUのTDP) * 1.5 + 100 または (CPUのTDP + GPUのTDP + 100) * 1.5
例えば AMD Ryzen™ 5 5600X と GeForce GTX 1650 の組み合わせの場合は、大体 360 W 程度の電源容量が要求される。AMD Ryzen™ 7 5800X3D と GeForce RTX 3060Ti の組み合わせの場合は、大体 560 W 程度となる。私個人はCorsairのRMシリーズの850W PC電源ユニットを使用している。
ケース
各部品を入れる箱。メンテナンス作業のことを考えると、できるだけシンプルなものが良いだろう。ミニタワー/ミドルタワー/フルタワーの順に大きくなるが、ミドルタワー型で十分なサイズ感。大抵のマザーボードは取り付け可能なので、趣味に応じて色や形で決めればよい。PCの置き場所によっては冷却ファンの位置や室内のエアフローも気にした方が良いかもしれない。
組み立て作業は説明書を読みながら進める。ネジを紛失しないようにケース(空き箱の蓋などで良い)に逐一入れるなどして作業する。広い机の上や、埃の無い綺麗な床の上などで行うのがよい。冬場は特に静電気に注意(心配であれば静電気対策用の手袋を用意する(個人的にはあまり要らない気がする))。部品の温度はCPUID HWMonitorなどのソフトウェアで取得すればよい。
マザーボードがLANケーブル(有線接続)に対応しているのであれば、大抵の場合はマザーボードのドライバがインストールされていないことが原因。
各マザーボードのドライバダウンロードページ(例えばこんなページ)から、LANに関するものをインストールすればよい。
遠隔からデスクトップPCを起動できるようにするにはWake-on-LAN(WOL)を設定するのが最も低コストである。ただし、以下の点に注意:
ルーターがWOLに対応している必要があるので事前に確認しておくのが望ましい。
WAN側IPアドレスが「10.x.yy.zz」のようにプライベートIPアドレス帯(10.0.0.0/8)になっている場合は、プロバイダ(ISP)のルーターやONUの下にぶら下がっている状態(二重ルーター / CGNAT)を意味する。この場合、ルーター設定でポートフォワードしても外部から直接アクセスできず、DDNSを設定しても直接WOLが届かない可能性が高い。
このような場合はWOLを実行したいPCのあるネットワーク内に常時稼働しているVPNサーバーなどを設置して対処できる。この際、余っている古いノートPCなどをLAN内でのWOLリレー機として利用できるため、眠っているPCがある場合は導入コストは不要である。ただし、ノートPCは常時給電していると排熱などの問題が生じるため、Raspberry Piなど省電力なマシンで中継用のサーバーを立てるのが理想的ではある。
※他にも例えばSwitchBot(スマートプラグ)などでPCの電源を遠隔でON/OFFできるが、導入費用が1万円近くするため、費用を抑えたいのであればあまりおすすめできない。Amazonなどで安いものであれば2000円以下で購入できるため、以下の手順が面倒だったりVPNサーバーを設定する必要がある場合には、タイムパフォーマンス的に良いかもしれない。
例えばWindows11、MSIのマザーボード(MSI CLICK BIOS)の場合、以下のようにする。トラブル原因の切り分けやすさの観点から、上から順に実施するのが好ましい。
【BIOS(UEFI)の設定】
PC起動時、deleteキー(連打)でbiosを開く
Settings → Advanced → Wake Up Event Setup
Resume By PCI-E Device:Enabled
(LANコントローラはPCI-Eデバイス扱いのため、この設定でWOLが有効になる)
ErP Ready の確認
場所:Settings → Advanced → Power Management Setup
ErP Ready を Disabled にする
(有効のままだと電源OFF時にLANポートへの給電が止まり、WOLが効かなくなる)
必要に応じて電源復帰設定もしておく
Restore after AC Power Loss:Power On または Last State
[F10] Save & Exit を選び、再起動する。
最後に一度シャットダウンし、電源OFFにしてもLANポートLEDが点灯していることを確認する(この状態になっていればNICに給電されている)。
LANケーブルの差込口が点灯・点滅していないようなら、そのシステムはS5(シャットダウン状態)からの復帰に対応していない。S3(スリープ状態)、S4(休止状態)からの復帰が可能かを追加でチェックする。
【Windowsの設定】
コントロールパネルなどからLANケーブルの差さっているネットワークを開く
「イーサネット」をクリックして「イーサネットの状態」を表示して「プロパティ」> 「構成」を選択
「電源の管理」タブで、
「このデバイスで・・・スタンバイ状態を解除できるようにする」に✔
「Magic Packetでのみ解除できるようにする」に✔
※S3(スリープ)、S4(休止)からの復帰にしか対応していない場合は「電力の節約のためにコンピューターとこのデバイスの電源をオフにできるようにする」のチェックを外すこと。
このときついでに「イーサネットの状態」で「詳細」を選び、物理アドレス(MACアドレス)などを保存しておくとよい。
【ルーターの設定】
ここではBuffaloのルーター(WSR-300HP)の場合の WOL設定について記す。
管理画面へのログイン(参考:https://www.buffalo.jp/support/faq/detail/15257.html)
PCをルーターに有線接続(またはWi-Fiでも可)。
ブラウザで http://192.168.11.1 を入力
ログイン画面が出たら ユーザー名:admin パスワード:password を入力(初期値のままの場合)
DHCPリース(固定IP割り当て)
メニューの 「LAN」→「DHCPリース」 を開く。
WakeしたいPCの MACアドレスを登録し、固定のIP(例:192.168.11.50 など)を割り当てる。既に登録されているPCであれば、エントリを編集して上書きすればよい。末尾の数字が小さすぎると、ネットワークに接続された別の機器に同じIPが配られて衝突してしまうことがある。50程度の小さすぎない値で固定IPを割り当てるのが良いだろう。
ポート転送の設定(ポートフォワーディング)
「セキュリティ」→「ポート変換」 を開き、以下のように設定して「新規追加」を選択:
プロトコル:任意のUDPポート
ポート番号:9(または任意の大きな番号、例 40000 など)
宛先IP:先ほど固定したPCのIP(例:192.168.11.50)
宛先ポート:「ポート番号」と同じ番号
ルーターの「Internet DDNS」機能を利用する
メニューから「DDNS」を設定して、例えば myrouter.ddo.jp のようなアドレスを取得
【WOLアプリの設定】
スマホやノートPCのWOLアプリに以下を設定し、外部のネットワークから起動テストを行う。
宛先アドレス:myrouter.ddo.jp
ポート:9(設定した番号)
MACアドレス:対象PCの物理アドレス(例:AA-BB-CC-DD-EE-FF)ここではBuffaloのルーター(WSR-300HP)の場合の WOL設定について記す。
Windowsインストール済みのデスクトップPCに、Linux mint をインストールしたSSDを追加してデュアルブートできるようにした際のメモ(Ubuntu環境の場合も同様)。SATAケーブルはマザーボードの箱に余分に入っているものを使い、電源ケーブルは電源ユニットの付属品を使う(無ければ新たに調達する)。
SSDをPC本体に追加した後、以下の手順を実行する。
F2キーでbiosを開く
アドバンスド(Advanced)のタブへ移動 → SATAコントローラを「AHCI」にする
起動(Boot)のタブへ移動 → 起動優先順位について、ブートドライブ #1 を Linux mint にする(#2 は自動的にWindowsになる)
Linux mint 環境を立ち上げ、ターミナルを起動して sudo update-grub というコマンドを実行して grub(Linuxのブートローダー)を更新する
(これでgrubが既存のWindows環境を認識する)
Linux mint 環境をシャットダウンしてからPCを起動してブート画面が表示されれば成功
ブート画面では十字キーで起動するOSを選択できる。未設定のシステムを選択してしまった場合、エラーと警告が表示されるが Ctrl + Alt + Del で抜けられる。
GPU(NVIDIA製)をGTX1650からRTX3060Tiに換装してバージョンを上げた際にGUIでログインできなくなった時のメモ。
Linux OSの場合、ディスプレイのデバイスドライバのバージョンの関係でデュアルモニターにできなくなる場合がある(Windowsでは換装直後でも問題なくマルチディスプレイ出力できた)。具体的な不具合としては、不用意にnvidia-driverをアップデートするとログインループにハマる可能性がある、というものである。
ログインループに陥っている画面において Ctrl + Alt + F1 でGUIからCUIへ切り替えることができる。以下、やること。
GPUの型番を調べて、その型番のGPUに推奨されるnvidia-driverの番号を特定する。dpkg -l | grep nvidia などで調べられる。あるいは、以下。
sudo update-pciids
update-pciids
dpkg -l | grep nvidia
xserverを停止する。ディスプレイマネージャとしてLightDMが入っている場合は、sudo service lightdm stop としてGUIを停止(nvidiaのドライバをGUI制御から切り離す)。
nvidiaとcudaの現在のバージョンを削除する。
sudo apt-get -- remove nvidia-*
sudo apt-get -- remove cuda-*
nvidia-driverをインストールする。下記コマンドの xxx の部分には 手順1. で調べたnvidia-driverの番号が入る。
sudo apt-get update && sudo apt-get install nvidia-driver-xxx
E: Unable to locate package update とエラーが出る場合もある。このときは apt-get の代わりに apt を使ってみると通過する...?かもしれない(apt-get より apt の方が新しいパッケージマネージャであるため)。
sudo service lightdm start として、停止していたxserverを起動。
PCを再起動するとログインループから解放されている(はず)。
上記手順は、自身の Linux mint 20.3 MATE 環境でワークした。ただし導入したドライバが古いとゲームエンジンなどでのレンダリングができなくなる場合があるので注意。
Softetherというソフトウェアを使って仮想VPNサーバーを建て、トンネルを掘ることができる。これにより自宅から仮想VPNサーバーを経由して大学のネットワークに接続することが(理論上)可能。
例えば、大学のネットワークからでしかインストールできないソフトウェアを自宅PCに入れたいという場合、大学PCを経由して自宅PCから学内ネットワークに繋ぐ必要がある。大まかな作業手順は以下の通り。
※SoftEtherのソフトウェア(「SoftEther VPN サーバー管理」と「SoftEtherVPN クライアント接続」)はインストール済みであるものとする。
【大学PCでの作業】
「SoftEther VPN サーバー管理」を起動し「新しい接続設定」を作成。このときホスト名、ポート番号、仮想HUB名を控えておくこと(後で必要になる)。
「接続」→「仮想HUBの作成」で適当な仮想HUBを設置(ユーザー名やパスワード、接続を許可するIPアドレスを設定したりする)。大学や企業のネットワークに穴を開ける場合はセキュリティレベルに気を付けること(必要に応じてネットワーク管理者に連絡する)。このときユーザー名やパスワードを控えておくこと(後で必要になる)。
仮想HUBのウィンドウにある「ローカルブリッジ設定」にてローカルブリッジを設定する。以下のような警告が出る場合はVPNサーバーとして利用するのは難しいので、別のPCを使う(VPNサーバーはノートPCでも建てられる)。
ローカルブリッジを作成することができる物理的なLANカードがVPNサーパーのコンピュータに1枚も見つかりませんでした。
ローカルブリッジを作成するには、物理的なLANカードを1枚以上コンピュータにインストールする必要があります。
...
仮想HUBには先ほど作成した仮想HUBを指定。物理LANは基本的にデフォルトのものが自動で設定されている(はず)。
以上で大学PCでの作業は終了。大学PC(VPNサーバー)がスリーブになると接続が切れるので、スリープまでの時間を作業可能な時間まで伸ばしておくのを忘れずに。自宅PCでの作業が終わるまで大学PC(VPNサーバー)は起動しっぱなしにする。
【自宅PCでの作業】
「SoftEtherVPN クライアント接続」を起動して「新しい接続設定の作成」から接続したいVPNサーバーを指定する。ホスト名、ポート番号、仮想HUB名は手順1.で控えておいたものを入力する。ユーザー認証の部分には手順2.で控えておいたユーザー名とパスワードを入力する。以上で接続設定が可能。
作成した接続設定からVPNサーバーに接続。PCのネットワークがVPN接続になったことを確認する。切り替わっていない場合は「設定」の「ネットワークの状態」から手動で切り替える。
大学のネットワークに接続できたのでソフトウェアをダウンロードする。
セキュリティ上の懸念が大いにあるので、接続設定には注意する(不特定多数のクライアントからのアクセスを不可能にするなど最低限の対策を施す)。使用後は速やかに接続を切り、VPNサーバーを停止すること。不明点がある場合はVPNを使用しないのがよい。
※慎重に導入したいという場合はmakeの後に make test を挟む(通例)。ただし、理論研の古いサーバーに導入する場合、比較的新しいバージョンのPythonではライブラリの関係でtestに失敗することがある。そのため以下では省略している。
【2系の場合】
基本的な導入手順①(2.7系の例)
Python-2.7.18.tgzなどをダウンロードし、$HOME/usr/local などの場所に置く。( $HOME/usr/local に相当するディレクトリを事前に作成しておく。)
cd $HOME/usr/local
tar -xf Python-2.7.18.tgz
cd Python-2.7.18/
./configure --prefix=$HOME/usr/local/Python2(パスは適当に改変すること)
make -j4(並列数は任意)
make install
Python2.xではpipのサポートが終了しており手作業で導入するしかない。pipは get-pip.py を使ってインストールするのがよい。古いバージョンなので https://bootstrap.pypa.io/pip/2.7/get-pip.py からダウンロードする。手順としては以下。
https://bootstrap.pypa.io/pip/2.7/ に get-pip.py が置いてあるので、これをpy形式のファイルとしてダウンロードする。
ダウンロードした get-pip.py を $HOME/usr/local/Python2/bin に置く。
$HOME/usr/local/Python2/bin に移動し、 ./python2.7 get-pip2.py を実行。pip2.7 などがカレントディレクトリに生成する。
※このとき、 get-pip2.py がその起動に使用した “python2.7” の環境を自動で認識して、パッケージを適切なパスのディレクトリ(私の場合は $HOME/usr/local/Python2/lib/python2.7/site-packages )にインストールするように設定される。
get-pip.pyが TLS/SSL が存在していないことにより動作しない場合、whlファイルでソースコードをダウンロードしてインストールする。$HOME/usr/local/Python2/bin に2系pipのwhlファイルをアップロード、ここに移動して下記を実行。
curl -O https://files.pythonhosted.org/packages/27/79/8a850fe3496446ff0d584327ae44e7500daf6764ca1a382d2d02789accf7/pip-20.3.4-py2.py3-none-any.whl
./python2.7 pip-20.3.4-py2.py3-none-any.whl/pip install --no-index pip-20.3.4-py2.py3-none-any.whl
カレントディレクトリにpip2.7が生成している。
一通りの作業を終えたら以下の行を .cshrc に追記してsourceする。
set path = ( $HOME/usr/local/Python2/bin $path )
alias py2 $HOME/usr/local/Python2/bin/python2.7
alias pip2 $HOME/usr/local/Python2/bin/pip2.7
alias python $HOME/usr/local/Python2/bin/python2.7
※既存のpython2系との衝突を避けるため、最後の行(太字)も足しておくと良い。
※これで py2 というコマンドでPython2系が呼び出せる。Python2系でpyスクリプトを実行したいときは以下のようにすればよい。
py2 hogehoge.py
【3系の場合】
基本的な導入手順(以下は3.10系を導入する場合の例;理論研内部の古いサーバーではOpenSSLのバージョン(CentOSのバージョン)が古いため、 Python-3.6.8 など少し前のバージョンを導入すること)
Python-3.10.10.tgzなどをダウンロードし、$HOME/usr/local などの場所に置く。( $HOME/usr/local に相当するディレクトリを事前に作成しておく。)
※LINUX版をダウンロードすること。Active Python Releasesのソースは https://www.python.org/downloads/source/ からダウンロードできる。
cd $HOME/usr/local
tar -xf Python-3.10.10.tgz
cd Python-3.10.10/
./configure --prefix=$HOME/usr/local/Python3(パスは適当に改変すること;$HOME/usr/local/ の中に Python3 というディレクトリを予め作っておくこと)
※ ここで 「./configure --enable-optimizations を実行するとビルドが最適化される」というような説明が表示されるが、無視すること。
make -j4(並列数は任意;cpuinfoコマンドなどで確認できる)
make install
一通りの作業を終えたら以下の行を .cshrc に追記し、source ~/.cshrc でsourceする。
set path = ( $HOME/usr/local/Python3/bin $path )
alias py $HOME/usr/local/Python3/bin/python3.10
alias pip $HOME/usr/local/Python3/bin/pip3.10
※ .bashrcの場合は下記のようにする。
export PATH="$HOME/usr/local/Python3/bin:$PATH"
alias py="$HOME/usr/local/Python3/bin/python3.10"
alias pip="$HOME/usr/local/Python3/bin/pip3.10"
※これで py というコマンドでPython3系が呼び出せる。Python3系でpyスクリプトを実行したいときは以下のようにすればよい。
py hogehoge.py
※また、この環境にパッケージをインストールしたいときは以下のようにすればよい(以下は numpy を入れる場合)。Python3.6.8 の場合、 pip3 は $HOME/usr/local/Python3/bin/pip3 にある。
pip3 install numpy
【3系のPython環境をAnacondaで導入する場合】
ソースコードからビルドして各種ライブラリを揃えるのが手間、という場合はAnacondaの利用も考慮したい。https://www.anaconda.com/download#downloads からLinux向けのAnacondaセットアップ用シェルスクリプトをダウンロードし、実行権限を付与して実行すると $HOME に anaconda3 という名前のディレクトリが生成する。あとは $HOME/anaconda3/bin にパスを通せば3系のPyhotn環境が一通り揃う。
$ bash ./Anaconda3-2023.03-1-Linux-x86_64.sh
以下の行を .cshrc に追記してsourceする。
# my Python3 (conda)
set path = ( $HOME/anaconda3/bin $path )
alias py $HOME/anaconda3/bin/python3.10
alias pip $HOME/anaconda3/bin/pip3
Anaconda公式がサポートしているパッケージは conda install [package] で基本的にはインストール可能だが、公式にサポートされていないものについては conda-forge (コミュニティ主導のインストール可能なパッケージの conda チャネル)を利用してインストールする。例えば、三角グラフを生成する際に重宝する python-ternary パッケージをconda環境に導入するには以下のようにすればよい。
$ conda config --add channels conda-forge
$ conda install python-ternary
pipによるライブラリとcondaによるライブラリが混在することになるため、バージョン管理が煩雑になる&再現性が損なわれることを嫌気するユーザーも多い。実用上の問題点もあるので、AnacondaでPythonを導入する場合は個人利用に留めるのが良いかもしれない。
【所望のパッケージのwhlファイルがプラットフォームのC標準ライブラリのバージョンに対応していない場合の応急処置(※実行は自己責任※)】
古いマシンによってはGNU C Library (glibc)のバージョンがあまりにも古く、そのままではPythonのパッケージがインストールできないことがある。例えば、https://pypi.org/project/numpy/#files では numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl というwhl(ホイールファイル)が配布されているが、GLIBC 2.12の古いマシンでは対応していないため、そのままではpip installが不可能である。
そのような場合、whlファイルを一度展開してラベルをリネームして再度圧縮したものをインストールに使う、という荒業が使える。コマンドは以下の通り(whlファイルの存在するディレクトリで実行する)。
$ unzip numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -d numpy_tmp_whl
$ cd numpy_tmp_whl
$ zip -r ../numpy-2.2.6-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl .
$ cd ..
これにより、元のディレクトリに「GLIBC 2.12対応」のラベルに変更されたwhlファイルが生成する。これを
$ pip install --no-index --find-links=. numpy-2.2.6-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
などとしてインストールする。
GNU C Library (glibc)のバージョンは ldd --version で確認できる。GLIBC 2.12のマシンでは以下のように表示される。
$ ldd --version
ldd (GNU libc) 2.12
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
因みに、アーキテクチャ(x86_64など)は uname -m で確認できる。
基本的な導入手順(2023年8月現在の安定版はv1.9.2なので、以下ではこれをインストールしている)
公式サイトから julia-1.9.2-linux-x86_64.tar.gz などをダウンロードし、$HOME/usr/ などの場所に置く。( $HOME/usr/ に相当するディレクトリを事前に作成しておく。)
cd $HOME/usr
tar -xf julia-1.9.2-linux-x86_64.tar.gz
.cshrc などに $HOME/usr/julia-1.9.2/bin のパスを追加
※ csh系の場合は .cshrc に以下のような行を追加して source する。
set path = ( $HOME/usr/julia-1.9.2/bin $path )
基本的にはこれだけの手順で済む。 julia のコマンドで呼べば動作する。スクリプトを実行する場合は julia xxx.jl を叩けばよい。
「Google Colaboratory」はGoogle社が提供するノートブック形式のREPL(対話型実行環境)である。ネット上のノートブック形式のコードはPythonのものも多く見かける。Jupyter Notebookを使っても同じことが可能だがGoogle Colaboratoryは環境構築の手間が省けるので手っ取り早く計算を始められる。
◎ Google Colaboratoryでは、ライブラリやモジュールは !pip install ase のようにして先頭に書いておけばpip経由でインストール可能。
Google Colaboratoryを使って無料で第一原理計算(Quantum ESPRESSOをビルドして結晶の電子状態計算にトライする記事)
Modeling materials using density functional theory(DFT(密度汎関数理論)を用いた材料研究スキル習得のためのテキスト)
GitHubは、ソフトウェア開発プロジェクトのバージョン管理とコラボレーションを支援するウェブベースのプラットフォームである。Gitという分散バージョン管理システムが使用されている。
SSH接続により所望のリポジトリを一括ダウンロードする
LinuxサーバーからGitHubにSSH接続する手順を示す。まず、以下のようにssh-keygenコマンドを用いて秘密鍵と公開鍵のペアを作成する。暗号方式は rsa 4096 でよい。
[nabata@karura ~/.ssh]$ ssh-keygen -t rsa -b 4096 -C "nabata.tcl@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nabata/.ssh/id_rsa): /home/nabata/.ssh/githubkey23719
Enter passphrase (empty for no passphrase): (パスフレーズを記入)
Enter same passphrase again: (パスフレーズを再度記入)
Your identification has been saved in /home/nabata/.ssh/githubkey23719.
Your public key has been saved in /home/nabata/.ssh/githubkey23719.pub.
The key fingerprint is:
a5:89:08:2a:ba:3f:fc:99:43:2d:80:0d:1f:ea:91:e7 nabata.tcl@gmail.com
The key's randomart image is:
+--[ RSA 4096]----+
| |
|. . |
| *o. . |
|o++o . . + |
|+ +.... S |
|o. Eo . |
|.. . . |
| .o .o |
|...o+. |
+-----------------+
ここでは秘密鍵の名前を githubkey23719、公開鍵を githubkey23719.pub としている。このとき公開鍵 githubkey23719.pub の中身(ssh-rsa から始まる文字列)を丸ごと https://github.com/settings/ssh の [New SSH key] をクリックしてテキストボックス経由でGitHubにアップロードする。終えたら以下の行をLinuxサーバーの /home/${USER}/.ssh/config に追記する。User のIDは適宜書き換えること。
Host github github.com
HostName github.com
IdentityFile ~/.ssh/githubkey23719
User h-nabata
ここまでで鍵の設定は終了。以下のコマンドで接続テストができる。このとき秘密鍵のパーミッションを 600 (-rw------- の状態)にするのを忘れないこと。
ssh -T h-nabata@github.com
※ 接続が上手くいかない場合は ~/.ssh/known_hosts に以下を追加する。
github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
SSH接続ができるようになったので、リポジトリのダウンロードが可能となる。例えば、以下のようにしてリポジトリをダウンロードする。Privateのリポジトリでも自分のアカウントにパーミッションがあればダウンロードできる。
[nabata@hoge ~/.ssh]$ git clone git@github.com:h-nabata/PES.git
Cloning into 'PES'...
Enter passphrase for key '/home/nabata/.ssh/githubkey23719': (パスフレーズを記入)
remote: Enumerating objects: 148, done.
remote: Counting objects: 100% (148/148), done.
remote: Compressing objects: 100% (109/109), done.
remote: Total 148 (delta 46), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (148/148), 75.69 KiB | 280.00 KiB/s, done.
Resolving deltas: 100% (46/46), done.
※ SSH用のリンクはリポジトリのページで、下の図のようにして取得できる。
Using the Materials Project Website - The Materials Project Workshop(Materials Projectの使い方の解説;pymatgenの解説ページも参考に)
このサイトはGoogleの提供する Google Site というアプリケーションで作成しているが、カスタマイズ性はよろしくない。本格的なウェブサイトを作成する場合は専用のレンタルサーバー(おすすめはXserver;私も実際に契約して趣味でウェブサイトを運営している)を契約するのがよい。
シンプルなブログ記事程度で良ければ、はてなブログやFC2ブログ、Amebaブログなどで適当に作成可能。あるいは、執筆の敷居はNoteの方が低いかもしれない(ただしNoteはサブスクリプションに特化していて検索流入が伸びにくい印象がある;読者層のtargetingやリピーターを増やすためのmarketingが重要)。
WordPressを用いたウェブサイト作成方法を指南するブログ記事や書籍は世の中に溢れているので、適宜参考にすべし。
ChatGPTはOpenAI社が提供する大規模言語モデル(LLM:Large Language Model)をチャット形式で利用者に提供するサービス。月額20ドルからGPT-4モデルが利用できる。ただし3時間あたり25クエリという制約がある。
有料版はGPT-3.5のレスポンス速度も速くなる。
xyz2cif.py - xyz座標をcif形式に変換する自作プログラム(複数ファイルをまとめて変換可能)
結晶構造から特定の指数面を切り出す - Qiita
In computational chemistry, slab models are commonly used to study surface reactions and interactions with molecules and other species. The slab model notation describes the dimensions and orientation of the slab with respect to the crystal lattice, and typically takes the form of "p(nx × ny)", where "n" is the number of primitive cells in each direction. The "p" in the notation stands for "primitive", indicating that the slab is constructed from repeating units of the primitive cell of the crystal lattice. The primitive cell is the smallest unit of the crystal that can be repeated to form the full lattice. The "nx" and "ny" values indicate the number of primitive cells that are stacked in the x and y directions, respectively, to form the slab. For example, "p(2x4)" indicates that two primitive cells are stacked in the x direction and four in the y direction, resulting in a rectangular slab with dimensions that are twice as long in the x direction as they are in the y direction. The slab model notation is important in computational chemistry because it determines the size and shape of the simulation cell used to study surface reactions and interactions. This in turn affects the accuracy and relevance of the results obtained from the simulation, as well as the computational resources required to perform the simulation.
VESTA;結晶構造の可視化プログラムで、表面モデル構造を作成する際に重宝する(無償のソフトウェア);K. Momma and F. Izumi, "VESTA 3 for three-dimensional visualization of crystal, volumetric and morphology data," J. Appl. Crystallogr. 2011, 44, 1272–1276.
GPUの性能が低いと構造の描画に要する時間が膨大となるので、大きな結晶構造を読み込んだりスーパーセルを表示したりする場合は注意。
VESTAには回転行列によって座標変換を施す機能が実装されている。ある結晶相の(111)面がab平面となるセルに変換する行列は、例えば [[2, 0, 1], [-1, 1, 1], [-1, -1, 1]] である(立方晶の場合は立方晶に変換される;ただしこの行列は最小単位格子を与えるとは限らないので注意)。これらの要素の値は新たな並進ベクトルの係数に整数だけでなく小数も指定することができる。
【座標変換の手順】
Edit > Unit cell > Transform... > 回転行列 P を指定 > "Normalize the range of fractional coordinates" のチェックを外して [OK]("セルの体積が変化する..." という警告は無視して「はい」) > "How to convert..." の選択肢は "Add new equivalent positions to ..." を選択して [OK] > Apply > 新しく生成したセルからはみ出している原子があれば消去する
座標変換後はウィンドウ下部のSummaryのタブを開きセルの軸情報をメモ帳などに保存し、構造はxyz形式でエクスポートする("hidden atoms ..." は [no] を選択)。保存したセルの軸情報を基にプログラム等を用いて並進ベクトルをカーテシアン座標系に変換する。
参考記事:
簡単なスラブモデルの作り方
例として、Materials Projectから入手できるCu2O結晶(赤銅鉱 - キュプライト;cifはprimitive cellを選択)について、上記の手順に則って(111)面がab平面に平行となるように座標変換することで得られるカーテシアン座標を以下に示す。(12単位のスーパーセルに拡大している)
Cu 9.627708000000 4.547912000000 3.094462000000
Cu 4.376231000000 1.515971000000 3.094462000000
Cu 2.625739000000 4.547912000000 5.570033000000
Cu 0.875246000000 1.515971000000 0.618892000000
Cu 7.877216000000 1.515971000000 5.570033000000
Cu 6.126723000000 4.547912000000 0.618892000000
Cu 1.750492000000 0.000000000000 3.094462000000
Cu 7.001970000000 3.031942000000 3.094462000000
Cu 5.251477000000 0.000000000000 5.570033000000
Cu 3.500985000000 3.031942000000 0.618892000000
Cu 0.000000000000 3.031942000000 5.570033000000
Cu 8.752462000000 0.000000000000 0.618892000000
Cu 9.627708000000 1.515971000000 3.094462000000
Cu 4.376231000000 4.547912000000 3.094462000000
Cu 2.625739000000 1.515971000000 5.570033000000
Cu 0.875246000000 4.547912000000 0.618892000000
Cu 7.877216000000 4.547912000000 5.570033000000
Cu 6.126723000000 1.515971000000 0.618892000000
Cu 0.000000000000 0.000000000000 5.570033000000
Cu 5.251477000000 3.031942000000 5.570033000000
Cu 3.500985000000 0.000000000000 0.618893000000
Cu 1.750492000000 3.031942000000 3.094463000000
Cu 8.752462000000 3.031942000000 0.618893000000
Cu 7.001970000000 0.000000000000 3.094463000000
O 0.000000000000 0.000000000000 3.713355000000
O 5.251477000000 3.031942000000 3.713355000000
O 3.500985000000 0.000000000000 6.188925000000
O 1.750492000000 3.031942000000 1.237785000000
O 8.752462000000 3.031942000000 6.188925000000
O 7.001970000000 0.000000000000 1.237785000000
O 0.000000000000 0.000000000000 0.000000000000
O 5.251477000000 3.031942000000 0.000000000000
O 3.500985000000 0.000000000000 2.475570000000
O 1.750492000000 3.031942000000 4.951140000000
O 8.752462000000 3.031942000000 2.475570000000
O 7.001970000000 0.000000000000 4.951140000000
TV 10.502950000000 0.000000000000 0.000000000000
TV 0.000000000000 6.063880000000 0.000000000000
TV 0.000000000000 0.000000000000 7.426710000000
オリジナルのcifの座標系におけるCu2O結晶のカーテシアン座標は次の通り。
Cu 1.071953000000 1.071953000000 3.215860000000
Cu 3.215860000000 1.071953000000 1.071953000000
Cu 1.071953000000 3.215860000000 1.071953000000
Cu 3.215860000000 3.215860000000 3.215860000000
O 2.143907000000 2.143907000000 2.143907000000
O 0.000000000000 0.000000000000 0.000000000000
TV 4.287810000000 0.000000000000 0.000000000000
TV 0.000000000000 4.287810000000 0.000000000000
TV 0.000000000000 0.000000000000 4.287810000000
同様に、CuO結晶(黒銅鉱 - テノライト)について、(111)面がab平面に平行となるように座標変換することで得られるカーテシアン座標を以下に示す。(24単位のスーパーセルに拡大している)
O 3.137503000000 2.373369000000 6.788310000000
O 9.132084000000 2.373369000000 6.788310000000
O 3.115548000000 5.484317000000 6.788310000000
O 9.110129000000 5.484317000000 6.788310000000
Cu 4.233028000000 0.822183000000 6.137341000000
Cu 10.227609000000 0.822183000000 6.137341000000
Cu 4.211073000000 3.933130000000 6.137341000000
Cu 10.205654000000 3.933130000000 6.137341000000
Cu 1.226521000000 2.380998000000 6.132182000000
Cu 7.221101000000 2.380998000000 6.132182000000
Cu 1.204565000000 5.491946000000 6.132182000000
Cu 7.199146000000 5.491946000000 6.132182000000
O -0.684380000000 2.375577000000 5.491948000000
O 5.310201000000 2.375577000000 5.491948000000
O -0.706335000000 5.486524000000 5.491948000000
O 5.288246000000 5.486524000000 5.491948000000
O 1.644398000000 2.150584000000 4.168984000000
O 7.638978000000 2.150584000000 4.168984000000
O 1.622443000000 5.261532000000 4.168984000000
O 7.617023000000 5.261532000000 4.168984000000
Cu -0.266336000000 2.142870000000 3.530172000000
Cu 5.728245000000 2.142870000000 3.530172000000
Cu -0.288291000000 5.253817000000 3.530172000000
Cu 5.706290000000 5.253817000000 3.530172000000
Cu 2.744767000000 0.593027000000 3.526147000000
Cu 8.739348000000 0.593027000000 3.526147000000
Cu 2.722812000000 3.703975000000 3.526147000000
Cu 8.717393000000 3.703975000000 3.526147000000
O 3.817943000000 2.152300000000 2.875642000000
O 9.812523000000 2.152300000000 2.875642000000
O 3.795988000000 5.263248000000 2.875642000000
O 9.790568000000 5.263248000000 2.875642000000
O 0.134414000000 1.903131000000 1.565887000000
O 6.128995000000 1.903131000000 1.565887000000
O 0.112459000000 5.014079000000 1.565887000000
O 6.107040000000 5.014079000000 1.565887000000
Cu 1.231886000000 0.348663000000 0.912715000000
Cu 7.226466000000 0.348663000000 0.912715000000
Cu 1.209930000000 3.459611000000 0.912715000000
Cu 7.204511000000 3.459611000000 0.912715000000
Cu 4.217383000000 1.902843000000 0.912227000000
Cu 10.211963000000 1.902843000000 0.912227000000
Cu 4.195428000000 5.013791000000 0.912227000000
Cu 10.190008000000 5.013791000000 0.912227000000
O 2.305887000000 1.904815000000 0.257639000000
O 8.300468000000 1.904815000000 0.257639000000
O 2.283932000000 5.015763000000 0.257639000000
O 8.278513000000 5.015763000000 0.257639000000
TV 11.989161000000 0.000000000000 0.000000000000
TV -0.043910000000 6.221896000000 0.000000000000
TV -1.482259000000 0.718084000000 7.838641000000
オリジナルのcifの座標系におけるCu2O結晶のカーテシアン座標は次の通り。cifファイルによって結晶構造が異なる場合があるので注意(先行研究のモデル構造の形と比較して確認する)。
Cu 1.170925000000 0.855650000000 0.000000000000
Cu 3.512775000000 2.566950000000 0.000000000000
Cu 3.087761000000 0.855650000000 2.528935000000
Cu 0.745911000000 2.566950000000 2.528935000000
O -0.212507000000 1.432016000000 1.264467000000
O -0.637521000000 1.990584000000 3.793402000000
O 2.129343000000 3.143316000000 1.264467000000
O 1.704329000000 0.279284000000 3.793402000000
TV 4.683700000000 0.000000000000 0.000000000000
TV 0.000000000000 3.422600000000 0.000000000000
TV -0.850027426800 0.000000000000 5.126864753000
Gaussianプログラムのinputファイルを用意する
ここではホルムアルデヒドの1点計算を実行してみる。以下の中身のinputファイルを test.gjf という名前で保存する。最後に複数の空行を入れておくこと。
%chk=test.chk
%nprocshared=1
%mem=200mw
#p RB3LYP/6-31G
test
0 1
H -1.203810959148 -0.933475808504 0.000045988732
O 0.614591450598 -0.000000145647 0.000002761289
C -0.616991246338 -0.000001892618 -0.000011405189
H -1.203792290384 0.933500655100 0.000045987240
submit用のシェルスクリプトを用意する
次に、JOBをsubmitするためのシェルスクリプトを用意する。以下の中身のinputファイルを g16.csh という名前で保存する。ここではcsh形式で書いている。こちらも最後に複数の空行を入れるのを忘れずに。パスは適宜変更すること。
#!/bin/csh -f
setenv g16root /usr/local/gaussian16c01
#setenv GAUSS_SCRDIR /scr
setenv GAUSS_SCRDIR /scr/$LOGNAME/gtmp.$$
if ( ! -d $GAUSS_SCRDIR ) mkdir -p $GAUSS_SCRDIR
source $g16root/g16/bsd/g16.login
set input = $1
g16 $1
if ( -d $GAUSS_SCRDIR ) \rm -rf $GAUSS_SCRDIR
exit 0
chmod u+x g16.csh などとしてシェルスクリプトのパーミッション(実行権限)を付与する。
bsubコマンドで計算機にJOBを投入する
以下のようにbsubコマンドでJOBを投入する。ホスト名は適宜変更すること。
bsub -n 4 -q "normal" -m "host1 host2 host3 host4 host5 host6 host7 host8 host9 host10" -R "span[hosts=1]" "./g16.csh test.gjf"
このようにしてGaussianプログラムの計算を実行できる。上記の例では test.log に計算のログが出力される。
opt などのキーワードを指定すれば同様の手順で構造最適化なども実行できる。
最新版のマニュアル → https://siesta-project.org/SIESTA_MATERIAL/Docs/Manuals/siesta-4.1.5.pdf
SIESTA-4.1.5 の DOI: www.doi.org/10.1088/0953-8984/14/11/302 (https://iopscience.iop.org/article/10.1088/0953-8984/14/11/302)
SIESTAは局在基底+擬ポテンシャルを用いる電子状態計算ソフトウェアである(VASPやQUANTUM ESPRESSOなどは平面波基底+(主に)擬ポテンシャルを用いる)。
また、デフォルト設定ではSCF計算と同時にスピン状態が最適化されるため、計算者がスピン多重度を指定する必要は無い(スピン多重度の固定は可能)。
siesta-4.1.5 自体は以下のようにしてローカルにビルドできる(ただしこれはSERIAL版)。Packagesは https://gitlab.com/siesta-project/siesta/-/releases/v4.1.5 からダウンロード可能。まず $HOME 直下に以下のようなディレクトリを作成する(ディレクトリ名は任意)。
mkdir usr/local -p
$HOME/usr/local に siesta-4.1.5.tar.gz をアップロードする。READMEを参照しながら以下のような手順でインストールする。
cd $HOME/usr/local
tar -xvf siesta-4.1.5.tar.gz
cd siesta-4.1.5/Obj/
sh ../Src/obj_setup.sh
cp intel.make arch.make
make -j4
.bashrc に PATH=$PATH:$HOME/usr/local/siesta-4.1.5/Obj などと追記してsourceしておく(.cshrc であれば set path = ( $HOME/SIESTA_materials/siesta-4.1.5/Obj $path ) などとする)。
付属のユーティリティもbuildしておくとよい。$HOME/usr/local/siesta-4.1.5/Util に行って以下のコマンドを実行。
./build_all.sh
【理論研内部向け】ここでは siesta-v4.1-b4 のPARALLEL version(並列計算可能なバージョン)をコンパイルする。手順は以下。
① SIESTA-v4.1-b4 をダウンロードする(Packagesは https://gitlab.com/siesta-project/siesta/-/releases/v4.1-b4 からダウンロード可能)
② tar -xzf siesta-v4.1-b4.tgz
③ cd siesta-v4.1-b4/Obj
④ sh ../Src/obj_setup.sh --enable-mpi --enable-fast
⑤ vi arch.make(以下を作成)
#
# Copyright (C) 1996-2018 The SIESTA group
# This file is distributed under the terms of the
# GNU General Public License: see COPYING in the top directory
# or http://www.gnu.org/copyleft/gpl.txt.
# See Docs/Contributors.txt for a list of contributors.
#
.SUFFIXES:
.SUFFIXES: .f .F .o .a .f90 .F90
SIESTA_ARCH = unknown
FC = mpif90
FC_SERIAL = gfortran
FPP = ${FC} -E -P
FFLAGS =
RANLIB = ranlib
SYS = nag
LDFLAGS =
FCFLAGS_fixed_f =
FCFLAGS_free_f90 =
FPPFLAGS_fixed_F =
FPPFLAGS_free_F90 =
BLAS_LIBS =
LAPACK_LIBS =
BLACS_LIBS = -L$(MKLROOT)/lib/intel64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl
SCALAPACK_LIBS = -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl
MPI_LIBS =
COMP_LIBS =
NETCDF_ROOT =
NETCDF_INCFLAGS =
NETCDF_LIBS =
MPI_INTERFACE = libmpi_f90.a
MPI_INCLUDE = .
FPPFLAGS = -DMPI -DFC_HAVE_ABORT -DFC_HAVE_FLUSH
LIBS = $(NETCDF_LIBS) $(SCALAPACK_LIBS) $(BLACS_LIBS) $(LAPACK_LIBS) $(MPI_LIBS) $(COMP_LIBS)
FFLAGS_DEBUG = -g
#atom.o: atom.f
# $(FC) -c $(FFLAGS_DEBUG) $<
##electrostatic.o: electrostatic.f
# $(FC) -c $(FFLAGS_DEBUG) $<
#
.F.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F) $<
.F90.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_free_F90) $<
.f.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_fixed_f) $<
.f90.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_free_f90) $<
⑥ make
⑦ vi ~/.cshrc(siestaバイナリのパスを追記して source ~/.cshrc ;例えば以下のような内容となる)
## for siesta
set path = ( 【SIESTAのパス】/siesta-v4.1-b4/Obj $path )
⑧ cd ../Util/
⑨ ./build_all.sh(SIESTAの付属ユーティリティをコンパイルする)
以上により並列版SIESTAプログラムが導入できる。
※ERATO用のマシンで計算する場合は /scr/ に ${USER} と同じの名前のディレクトリが必要になるため、以下のようなシェルスクリプトで作成しておく。
#!/bin/csh
set HOSTshortname=`echo $HOSTNAME | cut -c -2`
set totalNODEnum=`bhosts | grep ${HOSTshortname}[0-9][0-9] -c`
set i=1
while ( $i <= $totalNODEnum )
set tmp_NODEnum=`printf "%02d" ${i}`
if( "`bhosts | grep ${tmp_NODEnum} | grep unavail`" == "" ) then
rsh -l $user ${HOSTshortname}${tmp_NODEnum} "rm -rf /scr/${USER}/*"
# rsh -l $user ${HOSTshortname}${tmp_NODEnum} "cd /scr/ ; mkdir ${USER}/"
endif
echo ${HOSTshortname}${tmp_NODEnum}
@ i = $i + 1
end
@ i = 1
echo "done."
SIESTA ver.4.1以降では擬ポテンシャルとして.psf形式のファイルの他に、新たに.psml形式のファイルが利用可能となった(電子状態計算ソフトウェア「ATOM」で擬ポテンシャル(.psfファイル)を作成する必要がある)。.psml形式の擬ポテンシャルは "PseudoDojo project" のページからダウンロードできる。SIESTAの計算ディレクトリ内に.psfと.psmlのファイルが共存している場合は.psf形式のファイルが優先的に読み込まれるので、inputデータをまとめてWorkノードにコピーしているなどの場合は注意が必要(マニュアル p28)。
GRRMとリンクさせた場合、JOB名が長すぎるとJOBが落ちる(GRRMがsegmentation faultになる)場合がある。現在では修正されていると思われるが念のため注意。
GRRMで計算する場合はコア数を多く割り当てるよりも並列数を稼いだ方が計算効率が良い。(2core*20並列よりも1core*40並列でSCやRePATHをした方が早く終わることが多い)
SIESTAではGrimmeの2体間分散力補正が利用できる。例えば以下のように指定する。
%block MM.Potentials
1 1 Grimme 7.2549 2.684 # O-O
2 1 Grimme 3.2445 2.343 # H-O
2 2 Grimme 1.451 2.002 # H-H
3 1 Grimme 11.471 2.794 # C-O
3 2 Grimme 5.13 2.453 # C-H
3 3 Grimme 18.137 2.904 # C-C
%endblock MM.Potentials
MM.Grimme.D 20.0
MM.Grimme.S6 0.75
元素記号のリストからGrimmeの分散力補正(https://onlinelibrary.wiley.com/doi/full/10.1002/jcc.20495)のパラメータセットを計算して表示する自作プログラムをGitHubで公開しています(高周期元素の一部はパラメータが整備されていない) → https://github.com/h-nabata/utility/blob/main/Python/SIESTA_grimme_parameters.py
【Pseudopotential(擬ポテンシャル)の作成】(SIESTA)
SIESTAで用いる擬ポテンシャルは、「ATOM」という電子状態計算ソフトウェアに対応する擬ポテンシャルを用いる。詳細はATOMユーザーマニュアルを参照のこと。ATOMプログラムのユーティリティである pg.sh(恐らく "pseudopotential generator" の略)というスクリプトを利用し、Abinit用のinputから擬ポテンシャルを生成する。
擬ポテンシャル作成用のinputは "GGA Pseudopotential Database" で公開されているものを利用する。周期表の元素記号をクリックして遷移したページに "Input file for the ATOM program" の項目があるので、ここから X.inp といったinputファイルをダウンロードする。(ATOM programが未インストールの場合は適宜コンパイルする)
例えば、Cu.inp の中身は以下のように修正する。
pe -- file generated from Cu ps file
tm2
Cu pbr
0.000 0.000 0.000 0.000 0.000 0.000
5 4
4 0 1.000 0.000 #4s
4 1 0.000 0.000 #4p
3 2 10.000 0.000 #3d
4 3 0.000 0.000 #4f
2.77000 2.39000 2.16000 2.16000 0.01000 -1.00000 small core charge
#23456789012345678901234567890123456789012345678901234567890 Ruler
Core Correction(部分内殻補正)を擬ポテンシャルに適用するには赤字部分を "pe" とする。適用しない場合(第2周期以下の元素など)は "pg" とする。
2行目は対数導関数の計算に関するパラメータ(特に変更しなくて良い)。
3行目の青字部分で汎関数の種類(+相対論補正の有無)を指定する。指定可能な汎関数の一部を以下に示す。詳細についてはマニュアルを参照のこと。
【指定可能なGGA汎関数の例】
pb: PBE (Perdew, Burke, and Ernzerhof, PRL 77, 3865 (1996)) (recommended GGA)
wp: PW91 (Perdew and Wang, JCP, 100, 1290 (1994))
rp: RPBE (Hammer, Hansen, and Norskov, PRB 59, 7413 (1999))
rv: revPBE (Zhang and Yang, PRL 80, 890 (1998))
ps: PBEsol (Perdew et al, PRL 100, 136406 (2008))
末尾の "r" は "relativistic effect" の略で、これを付けると相対論効果が加味される(第4周期以上の重い元素には適用する)。
inputが準備できたら pg.sh Cu.inp などとして擬ポテンシャル(.psfファイル)を作成する。内殻補正や相対論の有無、汎関数の種類が分かる形式で名前を付けて利用すること。
前田研では以下のようなルールでpsfファイルを作成している。(目安)
第2周期まで: 非相対論・内殻補正(NLCC)なし
第3周期: 非相対論・NLCCあり
第4周期以降: 相対論・NLCCあり
【計算パラメータについて】(SIESTA)
k点メッシュ
系にも依るが、スラブモデルの計算においてk点メッシュを1×1×1から2×2×1に増やして計算すると計算時間は3倍以上になる。cutoff半径が小さすぎなければk点メッシュの細かさによって構造が大きく変わることは少ない。まず粗いLUP計算やRePATH計算などを1×1×1のレベルで実施して様子を見るのが良い。
MeshCutoff
探索の際は 75. Ry 程度で良く、精密なRePATH計算などの場合は 200. Ry などと計算資源的に無理のない範囲で大きくする。
DM.MixingWeight(SCF計算の初期MOを既存のMOから作成する際にどれだけ混ぜ込むかを調節するパラメータ)
スピン二乗値が乱雑に変化していなければ、0.1程度にして計算すると良い。0.01程度(=ほとんどミキシングしない場合)だと0.1のときに比べて計算時間が1.5倍程度になる。SCFの収束性に問題が無ければ0.1程度にして様子を見るのが良い。
【basis setについて】(SIESTA)
※psfファイルによっては基底を増やしても精度が出ない場合もありそう?
PAO基底(擬原子軌道;Pseudo Atomic Orbital)の種類は PAO.BasisType のフラグと引数で指定可能。(デフォルトではsplit)
PAO基底のサイズは PAO.BasisSize のフラグと引数で指定可能。(デフォルトではDZP) ※ PAO ・・・ pseudo-atomic orbital
以下のように %block PAO.BasisSizes のブロックでspecies別に細かく指定することもできる。ここで "H" とか "O" はインプット内のspeciesのラベルである。
%block PAO.BasisSizes
H DZP
O SZP
Si DZ
%endblock PAO.BasisSizes
すべてのspeciesについてDZ基底を指定する場合は以下のように書く。
%block PAO.BasisSizes
H-pgpb DZ
C-pgpb DZ
O-pgpb DZ
Pd-pepbr DZ
%endblock PAO.BasisSizes
あるいは、一括指定の場合は以下のように書いても良い。
PAO.BasisSizes DZ
擬ポテンシャルのspeciesを分けておけば、酸化物表面の酸素原子と基質の酸素原子で割り当てる基底の大きさを変える、といった計算も可能になる。(参考→Basis sets)
(例)O、H、C の元素からなる系で計算する場合を考える。このとき
PAO.BasisSize TZ
とした場合の計算は、SIESTAのインプットにPAO.Basisブロックを追加して
%block PAO.Basis # Define Basis set
O-pgpb 2 # Species label, number of l-shells
n=2 0 3 # n, l, Nzeta
3.937 2.542 2.917
1.000 1.000 1.000
n=2 1 3 # n, l, Nzeta
4.931 2.672 3.223
1.000 1.000 1.000
H-pgpb 1 # Species label, number of l-shells
n=1 0 3 # n, l, Nzeta
6.047 4.053 4.768
1.000 1.000 1.000
C-pgpb 2 # Species label, number of l-shells
n=2 0 3 # n, l, Nzeta
4.994 3.475 3.938
1.000 1.000 1.000
n=2 1 3 # n, l, Nzeta
6.254 3.746 4.407
1.000 1.000 1.000
%endblock PAO.Basis
と書くのと同じことになる。
また、PAO.BasisSizeをTZPとした場合は、Hでは1s軌道に、OとCには2p軌道にそれぞれ分極関数1つが追加される。これは以下のように書いた場合と同様。
%block PAO.Basis # Define Basis set
O-pgpb 2 # Species label, number of l-shells
n=2 0 3 # n, l, Nzeta
3.937 2.542 2.917
1.000 1.000 1.000
n=2 1 3 P 1 # n, l, Nzeta, Polarization, NzetaPol
4.931 2.672 3.223
1.000 1.000 1.000
H-pgpb 1 # Species label, number of l-shells
n=1 0 3 P 1 # n, l, Nzeta, Polarization, NzetaPol
6.047 4.053 4.768
1.000 1.000 1.000
C-pgpb 2 # Species label, number of l-shells
n=2 0 3 # n, l, Nzeta
4.994 3.475 3.938
1.000 1.000 1.000
n=2 1 3 P 1 # n, l, Nzeta, Polarization, NzetaPol
6.254 3.746 4.407
1.000 1.000 1.000
%endblock PAO.Basis
バージョン4.1.5ではTZやTZPも指定可能だが、QZ以上には対応していない 。Siesta-4.1.5の時点で利用可能なbasis-sizeは次の通り。
size_name: Incorrect basis-size option specified, active options are:
SZ or MINIMAL
SZP, SZSP, SZ1P, SZP1
DZ
DZP, DZSP, DZP1, DZ1P or STANDARD
DZDP, DZP2, DZ2P
TZ
TZP, TZSP, TZP1, TZ1P
TZDP, TZP2, TZ2P
TZTP, TZP3, TZ3P
※ triple-ζはdouble-ζに比べて(系が大きな場合は特に)計算が重たくなるので、特に重要な経路や構造に限って高精度で計算することが推奨される。感触としては、もしDZPの計算をグレードアップするとすれば、DZP→TZではなくDZP→TZPの方が(構造の変化が比較的小さくて)良さそうに思われる。
※ 参考: PAO Basis Sets in SIESTA
スピン偏極を考慮した計算(SIESTA)
3.2 では NonCollinearSpin ( https://siesta-project.org/SIESTA_MATERIAL/Docs/Manuals/siesta-3.2-manual.pdf )
4.1.5 では Spin non-colinear ( https://siesta-project.org/SIESTA_MATERIAL/Docs/Manuals/siesta-4.1.5.pdf )
により、角度(up-down and angles)も変数に含めて計算可能。【参考文献: https://iopscience.iop.org/article/10.1088/2515-7639/aae7db 】
※ defaultは 「Spin non-polarized」の設定。
Bader電荷解析の手順(SIESTA)
(Bader chargeについて → 参考PDF)
「Bader analysis with SIESTA : How to Use」のPDFも参考に。
※SIESTAで直方体でないセルでBader電荷解析する手順については不明。直方体でないセルの場合、grid2cubeを用いると ERROR: this progam can only handle orthogonal cells と出て怒られる。➡スラブモデルの場合、電荷分布を見てみたいだけ(エネルギーは議論しない)なら無理やり並進ベクトル(TV)を直角になるように取り直すことも可能(著しい構造変化が無いことの確認&MIN計算によるoptは必要?)。
以下ではorthogonal cellであることを前提とする。gridからcubeファイルに変換するにはSIESTAプログラムのユーティリティである grid2cube を利用する。分子研の場合、パスは /apl/siesta/4.1.5-mpi/Util/Grid/grid2cube 。xxx.inpの中に以下の行を追加する。
DM.UseSaveDM .true.
SaveBaderCharge .true.
SaveRho .true.
例えば testMIN_bader_SiestaJOB という名前のJOBの結果を読み込んでBader電荷解析を行う場合は、bader_calc.input のような分かりやすい名前を付けて以下のような中身のファイルを作成する。1行目は読み込む先のファイル名、2行目はbader電荷解析であることの指定、3行目はセルの原点の座標のシフト(Bohr単位)。4行目は「出力のグリッドポイントの密度を指定する整数」らしい。このとき、
testMIN_bader_SiestaJOB
bader
0.0 0.0 0.0
1
unformatted
/apl/siesta/4.1.5-mpi/Util/Grid/grid2cube < bader_calc.input を実行すると、以下のように出力される。 Cell vectorsはBohr単位(Angstrom単位ではない)で出力され、Grid meshとスピン多重度も一緒に出力される。
Reading grid data from file testMIN_bader_SiestaJOB.BADER
Cell vectors
19.8680026767660 0.000000000000000E+000 0.000000000000000E+000
0.000000000000000E+000 14.4646567887455 0.000000000000000E+000
0.000000000000000E+000 0.000000000000000E+000 47.2431719443589
Grid mesh: 90 x 72 x 216
nspin = 1
Writing CUBE file testMIN_bader_SiestaJOB.BADER.cube
以上によりCube形式のファイル(この例では testMIN_bader_SiestaJOB.BADER.cube というファイル)が生成される。
続いて、このページからBader Charge Analysisのプログラムをダウンロードする(分子研で使う場合はLinux版)。ダウンロードしたtar.gzファイルを解凍すると "bader" という名前の実行ファイルが展開されるので、bader testMIN_bader_SiestaJOB.BADER.cube を実行して解析を行う(適宜パスを通しておくと良い)。
出力は以下のようになる。
GRID BASED BADER ANALYSIS (Version 1.04 02/08/20)
OPEN ... testMIN_bader_
GAUSSIAN-STYLE INPUT FILE
DENSITY-GRID: 90 x 72 x 216
CLOSE ... testMIN_bader_
RUN TIME: 0.21 SECONDS
CALCULATING BADER CHARGE DISTRIBUTION
0 10 25 50 75 100
PERCENT DONE: **********************
REFINING AUTOMATICALLY
ITERATION: 1
EDGE POINTS: 313950
REASSIGNED POINTS: 15547
RUN TIME: 7.14 SECONDS
CALCULATING MINIMUM DISTANCES TO ATOMS
0 10 25 50 75 100
PERCENT DONE: **********************
RUN TIME: 0.44 SECONDS
WRITING BADER ATOMIC CHARGES TO ACF.dat
WRITING BADER VOLUME CHARGES TO BCF.dat
NUMBER OF BADER MAXIMA FOUND: 432455
SIGNIFICANT MAXIMA FOUND: 77
VACUUM CHARGE: 0.0000
NUMBER OF ELECTRONS: 938.00018
WRITING ATOMIC VOLUMES
0 10 25 50 75 100
PERCENT DONE: **********************
RUN TIME: 140.77 SECONDS
ACF.datに原子ごとのBader電荷が書き出される。以上の手順でBader電荷の解析を行う。なお、DENSITY-GRID が粗いと NUMBER OF ELECTRONS が整数値にならないことがあるので、SIESTAの電子状態計算の際にGrid meshを上げておくことが望ましい。
Bader電荷は Bader net atomic charge = ZVAL - Bader population charge printed in ACF.dat の計算式から求める。
SIESTAによるDOS・PDOSの計算(SIESTA)
DOSまたはPDOSを計算する手順を示す。まず、以下のような内容で TiO2_PDOS1_Submit.sh を作成する。
#!/bin/csh -f
set JOBNAME=TiO2_PDOS1
set DATA=/home/nabata/surfaces/TiO2
set WORK=/scr/nabata.${JOBNAME}.$$
setenv submpi mpirun
setenv subsiesta siesta
if ( -d ${WORK} ) rm -rf ${WORK}
mkdir ${WORK}
cd ${WORK}
cp -f ${DATA}/${JOBNAME}.fdf ${WORK}
cp -f ${DATA}/*.psf ${WORK}
cp -f ${DATA}/${JOBNAME}_Machine.txt ${WORK}
${submpi} -np 20 -machinefile ${JOBNAME}_Machine.txt ${subsiesta} < ${JOBNAME}.fdf > ${JOBNAME}.out
cd -
cp -r ${WORK} ${DATA}
rm -rf ${JOBNAME}
SIESTAのインプットを TiO2_PDOS1.fdf という名前で以下のように作成する。以下はギ酸が解離吸着したアナターゼ型TiO2(101)面のインプットの例。
SystemName TiO2_PDOS1 # Descriptive name of the system
SystemLabel TiO2_PDOS1 # Short name for naming files
NumberOfAtoms 77 # Number of atoms
NumberOfSpecies 4 # Number of species
%block Chemical_Species_Label
1 8 O-pgpb
2 22 Ti-pepbr
3 1 H-pgpb
4 6 C-pgpb
%endblock Chemical_Species_Label
# Lattice, coordinates, k-sampling
AtomicCoordinatesFormat Ang
%block AtomicCoordinatesAndAtomicSpecies ## x y z p
3.482909724171 3.220884098750 7.289264251738 3
3.154118176413 3.050665813748 8.307436264966 1
1.258765803145 2.457805738391 7.164922331276 1
1.921831337483 2.632956347313 8.222744021386 4
1.433859572721 2.418475140364 9.208248769471 3
3.551266220693 3.325503385711 5.904490887941 1
-0.818507540014 -0.309269316355 5.875961605951 1
-2.120508074661 3.306577803578 5.884756487592 1
4.774604135038 -0.316576384103 5.896237838075 1
1.899109403680 2.720729171615 5.110914353920 2
0.661270057437 6.362436914249 4.980832267918 2
7.583709365630 2.737592338352 4.994942482741 2
6.284631995101 6.371568022394 4.993743268176 2
2.111693462455 0.725109374811 5.159961278747 1
0.795496961600 4.386612613345 5.174964792282 1
7.707909058157 0.743398790667 5.226490133466 1
6.415868949808 4.369299962482 5.206476418245 1
0.071480256187 2.059291661770 4.439604232446 1
-1.249644311338 5.671561315255 4.462575528687 1
5.677890745811 2.053495612879 4.472628149510 1
4.374606883681 5.681403979860 4.474463554309 1
0.331633853999 0.100834511160 4.417236787180 2
-0.979228772228 3.731185019275 4.429251736014 2
5.930155108828 0.103137000760 4.456187360728 2
4.658657270512 3.735815458989 4.404772380948 2
-1.441020783850 -0.549514682508 3.467460431818 1
-2.734657977016 3.059075492370 3.472212757994 1
4.186386528736 -0.552416486432 3.474733927066 1
2.867191333976 3.064155014619 3.533606331413 1
0.665458828795 0.211137910435 2.359128860985 1
-0.643613767639 3.855906070564 2.362993847504 1
6.279964630137 0.223569653956 2.372209331239 1
4.980110653022 3.850057031924 2.384111497894 1
3.272616362012 3.194882716136 1.588561606983 2
1.996583145681 6.826275095299 1.525167182171 2
8.888013307456 3.217118255787 1.513054691784 2
7.596428681092 6.823088103927 1.511394721905 2
3.518814922895 1.244922052616 1.436137119314 1
2.217556216600 4.866037983133 1.438378252034 1
9.125201660625 1.248059464943 1.413831265076 1
7.827203718114 4.870659004056 1.414413747185 1
1.465171124459 2.552408901302 0.892006062760 1
0.173336490522 6.178751513807 0.873323089992 1
7.065022756691 2.556503473803 0.879781764953 1
5.771089438894 6.172548583167 0.876324514763 1
1.748999954901 0.605714848310 0.772184680208 2
0.446655992785 4.227985065873 0.777029420424 2
7.354446821580 0.606068434549 0.780308582716 2
6.031047375145 4.220645250727 0.752964989518 2
-0.006934924901 -0.054465522600 -0.026221704089 1
-1.304693839292 3.561849104526 -0.024441733812 1
5.604190764005 -0.059133366530 -0.021794775249 1
4.294903072377 3.566779679499 -0.003800589450 1
1.992994786000 0.721182924000 -1.247726185000 1
0.693751386000 4.343801431000 -1.247653946000 1
7.604264387000 0.722309339000 -1.247350844000 1
6.306319260000 4.340974875000 -1.247787149000 1
4.538089973000 3.667287511000 -1.980067442000 2
3.239798478000 7.290560261000 -1.980154937000 2
10.150100380000 3.668245343000 -1.980556269000 2
8.851185836000 7.291363706000 -1.981123510000 2
4.803907985000 1.719582707000 -2.135871695000 1
3.504518150000 5.342468899000 -2.135808601000 1
10.416131220000 1.719590968000 -2.138317415000 1
9.116387964000 5.341739774000 -2.135300080000 1
2.766572053000 3.034208815000 -2.723867626000 1
1.467821058000 6.657480406000 -2.722989489000 1
8.378530724000 3.034344936000 -2.724128131000 1
7.079410316000 6.657063688000 -2.722745165000 1
3.034668277000 1.081974779000 -2.886140455000 2
1.735905508000 4.705211564000 -2.886403392000 2
8.646012124000 1.082145461000 -2.886650657000 2
7.347128145000 4.704784066000 -2.886257435000 2
1.264034217000 0.411301482000 -3.612338140000 1
-0.035599967000 4.036286295000 -3.612145506000 1
6.875079748000 0.412885408000 -3.612063130000 1
5.574711482000 4.038125148000 -3.612306468000 1
%endblock AtomicCoordinatesAndAtomicSpecies
LatticeConstant 1.0 Ang
%block LatticeVectors
11.223509610621 -0.000000000000 0.000000000000
-2.597831888300 7.245641842826 -0.000000000000
-7.793495664900 -2.832442032600 21.503015339751
%endblock LatticeVectors
%block kgrid_Monkhorst_Pack
2 0 0 0.
0 2 0 0.
0 0 1 0.
%endblock kgrid_Monkhorst_Pack
PAO.EnergyShift 50 meV
%block MM.Potentials
1 1 Grimme 7.25 2.684
1 2 Grimme 28.50 2.904
1 3 Grimme 3.24 2.343
1 4 Grimme 11.47 2.794
2 2 Grimme 111.93 3.124
2 3 Grimme 12.74 2.563
2 4 Grimme 45.06 3.014
3 3 Grimme 1.45 2.002
3 4 Grimme 5.130 2.453
4 4 Grimme 18.14 2.904
%endblock MM.Potentials
MM.Grimme.D 20.0
MM.Grimme.S6 0.75
%block ProjectedDensityOfStates # PDOS 計算用のセッティング例
-40.00 20.00 0.100 4000 eV
%endblock ProjectedDensityOfStates
PDOS.kgrid_cutoff 15. Ang
# Spin
SpinPolarized .true.
FixSpin .true.
TotalSpin 0.0
NetCharge 0.0
# DFT, Grid, SCF
XC.functional GGA # Exchange-correlation functional type
XC.authors PBE # Particular parametrization of xc func
MeshCutoff 500. Ry # Equivalent planewave cutoff for the grid
MaxSCFIterations 128 # Maximum number of SCF iterations per step
DM.MixingWeight 0.1 # New DM amount for next SCF cycle
DM.Tolerance 1.d-4 # Tolerance in maximum difference between input and output DM
DM.NumberPulay 10 # Number of SCF steps between pulay mixing
SolutionMethod Diagon # OrderN or Diagon
OccupationFunction FD # The occupation function proposed by Methfessel and Paxton
ElectronicTemperature 300 K # Temp. for Fermi smearing
# Molecular dynamics and relaxations
MD.TypeOfRun CG
MD.NumCGsteps 0
MD.MaxForceTol 0.02 eV/Ang # Tolerance in maximum force (default is 0.04 ev/Ang)
# Output options
WriteCoorInitial
WriteCoorStep
WriteForces .false.
WriteKpoints .false.
WriteEigenvalues .true. # DOS計算の場合は true にする
WriteKbands .true.
WriteBands .true.
WriteMullikenPop 1 # Write Mulliken Population Analysis
WriteCoorXmol .true.
# Options for saving/reading information
DM.UseSaveDM .false. # Use DM Continuation files
MD.UseSaveXV .false. # Use stored positions and velocities
MD.UseSaveCG .false. # Use stored positions and velocities
SaveRho .false. # Write valence pseudocharge at the mesh
SaveDeltaRho .false. # Write RHOscf-RHOatm at the mesh
SaveElectrostaticPotential .false. # Write the total elect. pot. at the mesh
SaveTotalPotential .false. # Write the total pot. at the mesh
WriteSiestaDim .false. # Write minimum dim to siesta.h and stop
WriteDenchar .false. # Write information for DENCHAR
SIESTAを並列で起動したい場合は以下のようなマシンファイルを作成する。ここでは TiO2_PDOS1_Machine.txt という名前で作成している(名前は何でもよいが、これに合わせて Submit.sh の実行コマンドも適宜変更すること)。
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
以下のコマンドでSIESTAのJOBを投入する。
bsub -n 20 -q "normal" -m "ka06" -R "span[hosts=1]" "/home/nabata/surfaces/TiO2/TiO2_PDOS1_Submit.sh"
計算が終わるとDATAディレクトリに nabata.TiO2_PDOS1.20116 などといったディレクトリがコピーされている。その中に TiO2_PDOS1.DOS というファイルが生成しており、この中にDOSが出力されている。これを適当なExcelファイルなどに貼り付け、グラフを描画すればよい。
TiO2_PDOS1.EIG にはk点ごとの軌道のエネルギーが出力されている。各k点でのα軌道のエネルギーが各行10個ずつ書き出されている。各k点でのβ軌道のエネルギーも続けて書かれている。
0.0000
1033 2 11
1 -28.37915 -26.32784 -25.61418 -25.14968 -24.96183 -24.90974 -24.83858 -24.82466 -24.74538 -24.65304
-24.62772 -24.57744 -24.51649 -24.40739 -24.32549 -24.30842 -24.20667 -24.20093 -24.16058 -24.07162
-24.04087 -24.02083 -24.00265 -23.99625 -23.98733 -23.97287 -23.95439 -23.94926 -23.93995 -23.93604
-23.92278 -23.90896 -23.90090 -23.87684 -23.86592 -23.85090 -23.84517 -23.82400 -23.81790 -23.81028
-23.78990 -23.76116 -23.71364 -23.58568 -23.55530 -23.46706 -22.71900 -22.67874 -22.66781 -22.65425
-16.37944 -13.82965 -13.57265 -13.31022 -12.37268 -12.19958 -12.12931 -12.11014 -12.10517 -12.08619
-12.02256 -12.01768 -11.99200 -11.98355 -11.97366 -11.96410 -11.93327 -11.92206 -11.88447 -11.86293
-11.82716 -11.79307 -11.77922 -11.72770 -11.69187 -11.63379 -11.61595 -11.58290 -11.56150 -11.55607
-11.51642 -11.48465 -11.46764 -11.43994 -11.42970 -11.39932 -11.39478 -11.37758 -11.35640 -11.33635
-11.32364 -11.30057 -11.29669 -11.25675 -11.22876 -11.16896 -11.10707 -11.08162 -11.05926 -11.01737
-10.94435 -10.88998 -10.86844 -10.84414 -10.81375 -10.74076 -10.70031 -10.66853 -10.60252 -10.57638
-10.52920 -10.49725 -10.48619 -10.41433 -10.32443 -10.30007 -10.27976 -10.24273 -10.18861 -10.16770
-10.12668 -10.09293 -10.08170 -10.04464 -10.03251 -9.97521 -9.96383 -9.94663 -9.90555 -9.86563
-9.84880 -9.82259 -9.79772 -9.77133 -9.76954 -9.74716 -9.73578 -9.68227 -9.66828 -9.55504
-9.54281 -9.47700 -9.45927 -9.43423 -9.40343 -9.37639 -9.34734 -9.32852 -9.29282 -9.27790
-9.19885 -9.17010 -9.11606 -9.09770 -9.08355 -9.04317 -9.02739 -9.00032 -8.98223 -8.93585
-8.89559 -8.87726 -8.86320 -8.80032 -8.76789 -8.76160 -8.75438 -8.72585 -8.70702 -8.67250
-8.65401 -8.62981 -8.60315 -8.59286 -8.50261 -8.48998 -8.47999 -8.45798 -8.44169 -8.43274
-8.40461 -8.38406 -8.32007 -8.30702 -8.24058 -8.21508 -8.17493 -8.14412 -8.11858 -8.08206
-8.02048 -7.95753 -7.92225 -7.89308 -7.86755 -7.85604 -7.81551 -7.79628 -7.78690 -7.57424
-7.55839 -5.68486 -5.59310 -5.23478 -5.18292 -5.06146 -5.03721 -5.02902 -5.00005 -4.95051
-4.91843 -4.90623 -4.87912 -4.86866 -4.83636 -4.77477 -4.75422 -4.73901 -4.70901 -4.68805
-4.64971 -4.61136 -4.58923 -4.57723 -4.56068 -4.54023 -4.52700 -4.50099 -4.48512 -4.47542
-4.45841 -4.44418 -4.42651 -4.40999 -4.39655 -4.37040 -4.36150 -4.32686 -4.30526 -4.29898
-4.27303 -4.25268 -4.23287 -4.18886 -4.15449 -4.13420 -4.12973 -4.06169 -4.03850 -4.01727
-4.00545 -3.99805 -3.96477 -3.93201 -3.91073 -3.83571 -3.81902 -3.78111 -3.75640 -3.74092
-3.71251 -3.67437 -3.65281 -3.63050 -3.60869 -3.57542 -3.55491 -3.51603 -3.49320 -3.44636
-3.41023 -3.38970 -3.27319 -3.22967 -3.18104 -3.15118 -3.12399 -3.09246 -3.07067 -3.04885
-3.02052 -2.96576 -2.90970 -2.87632 -2.83590 -2.74116 -2.67675 -2.59383 -2.54724 -2.53367
-2.48898 -2.32788 -2.28142 -2.23466 -2.18333 -2.14892 -2.12818 -2.07586 -2.03825 -1.96952
-1.94037 -1.81445 -1.79371 -1.74778 -1.67629 -1.64548 -1.63719 -1.60997 -1.59216 -1.57349
-1.46856 -1.43630 -1.40847 -1.33199 -1.30664 -1.28157 -1.10946 -1.08155 -0.98326 -0.94742
-0.89433 -0.83917 -0.76314 -0.50860 -0.11644 0.35735 0.61446 1.07473 1.25966 1.27713
1.29699 1.69888 1.93909 2.12882 2.21013 2.69396 2.77137 2.79713 2.83302 2.90890
(以下略)
いま、この系の価電子数は402個(➡ 価電子は O:6、Ti:4、H:1、C:4 であり、系中にはそれぞれ 50、24、2、1 個の原子が存在するので価電子の総和は α が201、β が201の計402個と求められる)であるから、HOMO(201番目のエネルギー準位)とLUMO(202番目のエネルギー準位)のエネルギーが割り出せるので、フェルミ準位は (-7.55839 + (-5.68486)) / 2.0 = -6.621625 として求められる。
SIESTAプログラムのユーティリティの一つである Eig2DOS を利用する。以下のようなコマンドで起動する。
/usr/local/siesta-3.2-pl-4/bin/Eig2DOS TiO2_PDOS1.EIG > TiO2_PDOS1_DOS.dat
このとき TiO2_PDOS1_DOS.dat にはフェルミ準位(# E_F の欄)などのプロパティとともに DOS が書き出される。なお、ここで記載されているフェルミ準位には化学的な意味が無いことに注意。フェルミ準位は上記のようにHOMO-LUMOのエネルギー準位から求める必要がある。
あるいはSIESTAプログラムのユーティリティの一つである fmpdos を利用する。以下のようなコマンドで起動する。
/usr/local/siesta-3.2-pl-4/Util/Contrib/APostnikov/fmpdos
対話形式で入出力ファイル名、DOSを取り出す原子(0 なら全原子)、DOSを描画する軌道(0 なら全軌道)をインプットする。
Input file name (PDOS):
TiO2_PDOS1.PDOS
Output file name :
TiO2_PDOS1_PDOS.dat
Extract data for atom index (enter atom NUMBER, or 0 to select all),
or for all atoms of given species (enter its chemical LABEL):
0
Extract data for n= ... (0 for all n ):
0
上記のインプットの場合は TiO2_PDOS1_test.dat に結果が全原子&全軌道のDOSが出力される。特定の原子・特定の軌道を指定することでPDOSが取得できる。
【以下おまけ】各原子ごとにPDOSを取得する作業を対話形式で行うのは面倒なので、以下のようなシェルスクリプトでまとめて実行すると良い(この場合は TiO2_PDOS1_atom1.dat といったファイルが生成される)。以下のスクリプトをそのまま使用する場合はfmpdosにはパスを通しておくこと。
#!/bin/bash
for i in {0..8}
do
echo -e "TiO2_PDOS1.PDOS\TiO2_PDOS1_atom${i}.dat\n${i}\n0" | fmpdos
done
PDOSのデータは以下のようなPythonスクリプトでExcelブックにまとめることができる。適当にアレンジして使って頂きたい。
import pandas as pd
import os
# 出力先のExcelファイル名
output_filename = 'output.xlsx'
# データが含まれるファイルの名前のリスト
filenames = [f'TiO2_PDOS1_atom{i}.dat' for i in range(1, 9)]
# Excelライターの作成
with pd.ExcelWriter(output_filename, engine='openpyxl') as writer:
for filename in filenames:
# ファイルが存在することを確認
if not os.path.isfile(filename):
print(f'File {filename} does not exist.')
continue
# ファイルを読み込み、コメント行を無視
data = pd.read_csv(filename, comment='#', delim_whitespace=True, header=None, names=['Energy', 'Up Spin PDOS', 'Down Spin PDOS'])
# データを新しいシートに書き込む(シート名をファイル名に対応させる)
data.to_excel(writer, sheet_name=os.path.splitext(filename)[0], index=False)
print(f'Data written to {output_filename}')
PDOSの計算結果を用いて電荷を推定する方法(SIESTA)
PDOSは原子ごとの電子状態を調べる有用な量であるが、化学種の電荷の簡易的な推定にも利用することができる。フェルミ準位以下の(=価電子帯の)PDOSの積分値はそのまま価電子の電子数に対応することが知られている。各原子の価電子に対する有効核電荷は既知(アウトプットファイルに書き出されている)なので、ある原子の価電子数が分かれば有効核電荷との差分から電荷を割り出すことができる。例えば、手頃で自明な系として、以下のようなインプットにより H3O + HCOO の計算をしてみる。この構造はオキソニウムカチオンとギ酸アニオンに分かれてそれぞれ+1と-1の電荷をもつことが予想される。(各原子ごとのPDOSは上記のように取得可能である)
SystemName H3O_HCOO_testPDOS
SystemLabel H3O_HCOO_testPDOS
NumberOfAtoms 8
NumberOfSpecies 3
%block Chemical_Species_Label ##<95>ς<A6><82><E9>
1 8 O-pgpb
2 1 H-pgpb
3 6 C-pgpb
%endblock Chemical_Species_Label
# Lattice, coordinates, k-sampling
AtomicCoordinatesFormat Ang
%block AtomicCoordinatesAndAtomicSpecies
6.784724206509 2.942290081526 5.109454951857 1
7.683518989692 2.994971432759 4.776299413176 2
6.799480853583 2.438538492883 5.951849543917 2
6.418763298834 3.851026036350 5.265562335981 2
2.783786193295 0.794685829688 7.709169829571 1
1.336768167763 2.407430763988 6.980325335122 1
1.735495431820 1.444167097760 7.807405714702 3
0.999486707684 1.282004465255 8.646687796801 2
%endblock AtomicCoordinatesAndAtomicSpecies
LatticeConstant 1.0 Ang
%block LatticeVectors
20.000000000000 0.000000000000 0.000000000000
0.000000000000 20.000000000000 0.000000000000
0.000000000000 0.000000000000 20.000000000000
%endblock LatticeVectors
%block kgrid_Monkhorst_Pack
4 0 0 0.
0 4 0 0.
0 0 4 0.
%endblock kgrid_Monkhorst_Pack
PAO.EnergyShift 50 meV
#%block PAO.Basis
# H_GGA 2 0.0000
# 0 2 P 1 E 6.0000055 0.2924866
# 6.0027460 2.0506972
# 1.00000000000000 1.00000000000000
# 1 1 P 1 E 39.9677761 0.5000000
# 2.0285088
# 1.00000000000000
#%endblock PAO.Basis
%block MM.Potentials
1 1 Grimme 7.2549 2.684 # O-O
2 1 Grimme 3.2445 2.343 # H-O
2 2 Grimme 1.451 2.002 # H-H
3 1 Grimme 11.471 2.794 # C-O
3 2 Grimme 5.13 2.453 # C-H
3 3 Grimme 18.137 2.904 # C-C
%endblock MM.Potentials
MM.Grimme.D 20.0
MM.Grimme.S6 0.75
%block ProjectedDensityOfStates
-30.00 10.00 0.050 2000 eV
%endblock ProjectedDensityOfStates
PDOS.kgrid_cutoff 10. Ang
# Spin
SpinPolarized .true.
FixSpin .true.
TotalSpin 0.0
NetCharge 0.0
# DFT, Grid, SCF
XC.functional GGA
XC.authors PBE
MeshCutoff 500. Ry
MaxSCFIterations 128
DM.MixingWeight 0.1
DM.Tolerance 1.d-4
DM.NumberPulay 10
DM.Normalization.Tolerance 1.d-4
SolutionMethod Diagon
# OccupationFunction MP
ElectronicTemperature 300 K
# Molecular dynamics and relaxations
MD.TypeOfRun CG
MD.NumCGsteps 0
MD.MaxForceTol 0.02 eV/Ang
MD.VariableCell .true.
# Output options
WriteCoorInitial
WriteCoorStep
WriteForces .false.
WriteKpoints .false.
WriteEigenvalues .true.
WriteKbands .true.
WriteBands .true.
WriteMullikenPop 1
WriteCoorXmol .true.
# Options for saving/reading information
DM.UseSaveDM .true.
MD.UseSaveXV .false.
MD.UseSaveCG .false.
SaveBaderCharge .true.
SaveRho .true.
SaveDeltaRho .true.
SaveElectrostaticPotential .false.
SaveTotalPotential .false.
WriteSiestaDim .false.
WriteDenchar .true.
計算したPDOSのデータをH3OとHCOOでそれぞれ統合して価電子帯にわたって積分すると、H3Oでは8.5、HCOOでは17.5という結果を得る。いま、計算で考慮している価電子は H:1、C:4、O:6 であり、有効核電荷も同じ値である。したがって原子核の電荷の和はH3Oで+9、HCOOで+17ということになる。ここから先ほどの積分値を差し引くと、およそ +0.5、-0.5 となり、それぞれの化学種に対応する部分電荷が求められる。DOSの積分値から電子数を求める方法は分子系だけでなく表面系でも適用可能である。
※ 適切な値にならない場合、大抵の原因はDOSの計算範囲が狭すぎる(計算の範囲外(特に下限よりも低い領域)にエネルギー準位が存在する)ことが考えられる。特に初めてDOSを計算する場合は ProjectedDensityOfStates の範囲は広めに取ることが推奨される。例えば上記の例では -30.00 ~ 10.00 eV の範囲でPDOSを求めているが、下限を -20.00 にすると積分値が電子数にならず、適切に解釈できなくなってしまう。SIESTAのインプットで WriteEigenvalues のフラグを .true. にした場合、MOのエネルギー準位(Eigenvalues)が .out ファイルに書き出されるので、これを参照してPDOSの計算範囲を決めるという手段も有効。
もう一つの原因は、積分の方法が悪い場合である。データの性質上、数値的に積分するしかないが、特に上記の例のように系内でスピン分極が発生している場合は非積分関数(PDOS)が適切でないと誤った積分値を得ることがある(e.g. Up spin と Down spin のPDOSの和を積分してしまう ...etc. ➡ PDOSは Up spin と Down spin を分けてそれぞれ積分しなければならない)。他には、PDOSのsmearingのブロードニング係数(ガウス関数の幅)やメッシュの細かさもなども効いてくる可能性がある。数値積分の際はグリッド数(上の例では 2000 の値がこれに相当)を増やすなどして精度を上げた方が良い。
あるいは、根本的にHOMO-LUMOギャップが狭く、DOS積分値が電子数に一致するエネルギー準位が不明瞭になっているケースも考えられる。上の例はSpin分極が発生しておりHOMO-LUMOギャップがかなり狭いので、PDOSのメッシュ数に対して敏感であることに注意。
※フェルミ準位が不明瞭な場合は、系全体のDOSの積分値がちょうど系の全価電子数に一致する領域を調べればよい。例えば上の H3O + HCOO の場合だとDOSの積分値が 26 に近い値に達するエネルギー準位が価電子帯の上限に相当する。
SIESTAプログラムの計算結果を用いた電子密度の可視化の手順(SIESTA)
xxx_Siestaという "SystemLabel" の計算結果(特にSIESTAのDM)が既に存在すると仮定する。RHOファイルが最低限必要なので、もし無い場合は、xxx_Siestaという名前の計算結果があればxxx_Siesta.inpの中に以下の行を追加して1点計算を行ってxxx_Siesta.RHOを用意する(同じSystemLabelで流し直すと既存のDMが読み込まれるので計算時間が短くて済む)。
DM.UseSaveDM .true.
SaveRho .true.
使うユーティリティは分子研の場合、パスは /apl/siesta/4.1.5-mpi/Util/Contrib/APostnikov/rho2xsf となる。
※(注意) JOB名(SystemLabel)が長すぎるとXVファイルを読み込む際にErrorが発生するため、該当する場合は適当な短い名前に書き換えること。
.RHOの存在するディレクトリで /apl/siesta/4.1.5-mpi/Util/Contrib/APostnikov/rho2xsf を起動
以下のように対話型でインプットする。
Specify SystemLabel (or 'siesta' if none): xxx_Siesta
Now define the grid cell for your XCrysDen plot.
Note that it can be arbitrarily chosen with respect to the Siesta simulation cell, and it needs not to be orthogonal. We'll define it by the origin point and three spanning vectors. They can be given in Bohr or Ang.
Would you use Bohr (B) or Ang (A) ? A
Enter origin point in Ang : 0 0 0
Enter 1st spanning vector in Ang : 12.783396000000 0.000000000000 0.000000000000
Enter 2nd spanning vector in Ang : -6.234050000000 10.756717200000 0.000000000000
Enter 3rd spanning vector in Ang : 0.000000000000 0.000000000000 22.550057600000
The box contains 73 atoms.
Now define the grid. If you want it two-dimensional,
give 1 as number of grid points along one spanning vector.
Enter number of grid points along three vectors: 50 50 50
Add grid property (LDOS, RHO, ...; or BYE if none): RHO
Found and opened: xxx_Siesta.RHO
mesh0 = ( 72 72 144 ), nspin= 2
For is=1: max. grid value = 3.76463E-03 at iix,iiy,iiz= 1 2 1
For is=1: min. grid value = 3.76463E-03 at iix,iiy,iiz= 1 1 1
For is=2: max. grid value = 3.76463E-03 at iix,iiy,iiz= 1 2 1
For is=2: min. grid value = 3.76463E-03 at iix,iiy,iiz= 1 1 1
Add grid property (LDOS, RHO, ...; or BYE if none): BYE
A wild guess! There is no file Cu2Om_addH_24up1_forMO1_Siesta.BYE
; close XSF and quit.
xxx_Siesta.XSF が生成しているので、これを xcrysden または VESTA で読み込む。
SIESTAの電子状態計算の並列効率について
詳しくはテストしていないが、系によってはそれなりに並列効率の高い計算が可能。例えばPt(111)面上にプロトンが1個吸着した系のMIN計算では以下のようになった。コア数nに対して √n 程度で効率化できているように見える。
#!/bin/tcsh -f
###### setting section (begin)
#PBS -l select=1:ncpus=16:mpiprocs=16:ompthreads=1
#PBS -l walltime=144:0:0
set input=initMIN
set DATA=/lustre/home/users/${USER}/testMIN
set pnum=1
set JOBTIME=140 # (/hour)
set infiles=( ) ## < set the names of all infiles
###### setting section (end)
set GRRM=/lustre/home/users/${USER}/GRRM
set WORK=/gwork/users/${USER}/${input}.$$
# # # # # Gaussian16 at IMS from 2023/02/01 # # # # #
set g16=16c01
setenv g16root /apl/gaussian/${g16}
source ${g16root}/g16/bsd/g16.login
setenv GAUSS_SCRDIR ${WORK}
setenv subgau g16
setenv subchk formchk
# # # # # SIESTA VER.4.1.5 at IMS from 2023/02/01 # # # # #
setenv siestascr ${WORK}
setenv subsiesta /apl/siesta/4.1.5-mpi/bin/siesta
setenv submpi mpirun
# export I_MPI_HYDRA_BOOTSTRAP=pdsh
# setenv I_MPI_HYDRA_BOOTSTRAP ssh # added by nabata (2023/02/01)
source /etc/profile.d/modules.csh
module -s purge
module -s load siesta/4.1.5-mpi
module -s load openmpi/4.1.5-hpcx/intel2023.0.0
module -s load mkl/2023.2.0
setenv LANG C
setenv subgrr ./GRRM.out
setenv TMPDIR ${WORK}
setenv TMPDIR2 ${WORK}
if ( -d ${WORK} ) rm -rf ${WORK}
mkdir ${WORK}
cp ${DATA}/${input}.* ${WORK}
mv ${DATA}/${input}_* ${WORK}
cp ${DATA}/*.psf ${WORK}
@ i=1
while( $i <= $#infiles )
cp -r ${DATA}/$infiles[$i] ${WORK}
@ i++
end
cp ${GRRM}/GRRMp ${WORK}
cp ${GRRM}/GRRM.out ${WORK}
cd ${WORK}
./GRRMp ${input} -p${pnum} -h${JOBTIME}
cp -f ${WORK}/${input}.* ${DATA}
cp -f ${WORK}/${input}_* ${DATA}
cd ${DATA}
rm -rf ${WORK}
上記は16coreを要求するMIN計算(GRRM側の並列数は1)のJOBを投入するシェルスクリプトの例。
siesta/4.1.5-mpi をloadする必要がある。他のmoduleは必要に応じて読み込むこと。
.psf(擬ポテンシャル)ファイルをDATAディレクトリに置くのを忘れずに。
general documentation → https://www.quantum-espresso.org/documentation/
(@分子研)pwSCFで電子状態計算を行う場合のメモ(自分用)
分子研の計算機でpwSCFを利用する場合は intel_parallelstudio のバージョンに注意する。デフォルトでは intel_parallelstudio/2018update4 がロードされるが、バグの関係でpwSCFが落ちてしまう。そこで以下のようにして 2020update2 を読み込む必要がある。
①「module purge」でモジュールの読み込みを全解除
②「module load intel_parallelstudio/2020update2」で intel_parallelstudio/2020update2 を読み込む
その後は通常通り。なお、「module list」で読み込み済みのモジュール一覧を取得、「module avail」で読み込み可能なモジュール一覧を取得することができる。
[JOB名].com、[JOB名].in、[JOB名].sh の他に、[JOB名].com0、[JOB名].in_COPY、[JOB名]mod.rrm([JOB名].1dr は有れば)も用意する。
ESM-RISMを使って電場を課す場合は [JOBNAME].in の &system セクションにて
lfcpopt = .TRUE.
fcp_mu = -0.36325
assume_isolaed='esm'
esm_bc='bc2'
などと指定し、 fcp_mu の値を与える必要がある。これはフェルミ準位(単位はRy.)に電位差に相当する値をRy.単位で加えた値を指定する(つまり、1度電位差ゼロの条件で電極のみで1点計算しておく必要がある)。例えば、ある金属表面のフェルミ準位が -0.40000 Ry. のとき、+0.5 V(vs 参照電極)を印加する場合は 0.5/13.60569 = 0.036749 (Ry.) を加えて fcp_mu = -0.36325 と指定する。
また、このとき、[JOBNAME].in の中に &ions のセクションを形式的に追加する必要があるので注意。内容としては
&ions
/
などと書いておけばよい。これが無いとなぜかpwSCF内部で予期せぬエラーが発生する。
Official documentation (version 7.6) → https://www.turbomole.org/downloads/doc/Turbomole_Manual_76.pdf
【内部向け】TURBOMOLE 導入手順
① turbolinux76-TMG.tar.gz を自homeにコピー・展開する
② .cshrc 内で以下のようにパスを追加
setenv TURBODIR /home/nabata/TURBOMOLE
set path = ( $TURBODIR/scripts $path)
#set path = ($TURBODIR/bin/em64t-unknown-linux-gnu $path)
set path = ($TURBODIR/bin/em64t-unknown-linux-gnu_smp $path)
#set path = ($TURBODIR/bin/em64t-unknown-linux-gnu_mpi $path)
#set PARA_ARCH = SMP
set path = (${TURBODIR}/bin/`sysname` $path)
set history=5
set savehist=5
※em64t-unknown-linux-gnu_smp により OpenMP を使った TURBOMOLE の並列計算が可能になる。historyとsavehistを5に制限しているのは、TURBOMOLE のログにコマンドのhistryが延々と書き出されてしまうのを防ぐため。
③ [JOB名].com は以下のようにする。TmoleProcで要求コア数を指定する。
%link=Turbomole
# MIN
0 1
O 3.361715718702 1.357675412384 2.676463210617
H 3.628603197458 2.173758112466 3.117643488676
H 3.719245611587 0.663021823717 3.243462950372
O 0.533990254815 0.892549936042 2.230009641096
H 1.492923910570 0.995066205963 2.272395909618
H 0.269797986346 1.496453281274 1.524769871664
Options
DownDC=15
TmoleProc=1
[JOB名].com と同じ階層に [JOB名] (.com と同じ名前)というサブディレクトリを作成し、その中で coord というファイルを用意する。coord の中身はTURBOMOLEの書式に従う。
$coord
6.35272155984543 2.56563451083625 5.05778208657898 O
6.85706576447606 4.10780719801109 5.89149192367519 H
7.02835509012427 1.25292957127256 6.12925623031094 H
1.00909526217126 1.68667481024322 4.21410717356123 O
2.82121711277517 1.88040246976540 4.29420560674636 H
0.50984426646493 2.82788665631751 2.88139725308566 H
$end
この [JOB名] ディレクトリ内で define (TURBOMOLE のユーティリティ)を実行してその他の必要なインプットファイルを生成する。具体的な手順については下記の説明、もしくは内部向けマニュアル(Turbomole_manual_6427.pdf または AFIR-T.8830.pdf)を参照のこと。
TURBOMOLE の define を利用したインプットの作成手順
“coord”というファイルを用意し、計算対象のxyz座標を書いておく。水2量体であれば以下のようにする。TURBOMOLE の形式に合わせて長さの単位はBohrとする。
$coord
6.35272155984543 2.56563451083625 5.05778208657898 O
6.85706576447606 4.10780719801109 5.89149192367519 H
7.02835509012427 1.25292957127256 6.12925623031094 H
1.00909526217126 1.68667481024322 4.21410717356123 O
2.82121711277517 1.88040246976540 4.29420560674636 H
0.50984426646493 2.82788665631751 2.88139725308566 H
$end
define を起動する。以下、赤字はキーボード操作を表す。
***********************************************************
* *
* D E F I N E *
* *
* TURBOMOLE'S INTERACTIVE INPUT PROGRAM *
* *
* Quantum Chemistry Group University of Karlsruhe *
* *
***********************************************************
DATA WILL BE WRITTEN TO THE NEW FILE control
IF YOU WANT TO READ DEFAULT-DATA FROM ANOTHER control-TYPE FILE,
THEN ENTER ITS LOCATION/NAME OR OTHERWISE HIT >return<.
return(Enterキー押下)
INPUT TITLE OR
ENTER & TO REPEAT DEFINITION OF DEFAULT INPUT FILE
return(Enterキー押下)
symmetry group of the molecule : c1
...
(中略)
...
IF YOU APPEND A QUESTION MARK TO ANY COMMAND AN EXPLANATION
OF THAT COMMAND MAY BE GIVEN
a coord("coord"を読み込ませる)
CARTESIAN COORDINATES FOR 6 ATOMS HAVE SUCCESSFULLY
BEEN ADDED.
DEFINITIONS OF INTERNAL COORDINATES HAVE N O T BEEN READ.
SPECIFICATION OF BOND TOPOLOGY HAS BEEN READ.
...
(中略)
...
IF YOU APPEND A QUESTION MARK TO ANY COMMAND AN EXPLANATION
OF THAT COMMAND MAY BE GIVEN
*
YOU DID NOT YET DEFINE ANY INTERNAL COORDINATES !
ONLY AN INCOMPLETE SET OF -1 INTERNALS SPECIFIED
RECOMMENDATION: USE CARTESIAN COORDINATES (ENTER no BELOW)
FOR ANY OTHER ANSWER YOU RETURN TO THE PREVIOUS MENU AGAIN
IF YOU DO NOT WANT TO USE INTERNAL COORDINATES ENTER no
no(内部座標は用いないので no とする)
GEOMETRY DATA WILL BE WRITTEN TO FILE coord
filename not specified !
SUPPLYING BASIS SETS TO 6 ATOMS
#
# BASIS SET LIBRARY FOR CARBON
# ECPs, HONDO-BASIS SETS FROM basen AND
# FULLY OPTIMIZED BASIS SETS FROM newbas MERGED 02/6/93
...
(中略)
...
b : ASSIGN ATOMIC BASIS SETS
bb : b RESTRICTED TO BASIS SET LIBRARY
bl : LIST ATOMIC BASIS SETS ASSIGNED
bm : MODIFY DEFINITION OF ATOMIC BASIS SET
bp : SWITCH BETWEEN 5d/7f AND 6d/10f
lib : SELECT BASIS SET LIBRARY
ecp : ASSIGN EFFECTIVE CORE POTENTIALS
ecpb : ecp RESTRICTED TO BASIS SET LIBRARY
ecpi : GENERAL INFORMATION ABOUT EFFECTIVE CORE POTENTIALS
ecpl : LIST EFFECTIVE CORE POTENTIALS ASSIGNED
ecprm: REMOVE EFFECTIVE CORE POTENTIAL(S)
c : ASSIGN NUCLEAR CHARGES (IF DIFFERENT FROM DEFAULTS)
cem : ASSIGN NUCLEAR CHARGES FOR EMBEDDING
m : ASSIGN ATOMIC MASSES (IF DIFFERENT FROM DEFAULTS)
iso : ASSIGN ISOTOPE FOR NUCLEAR COUPLING CALCULATION
dis : DISPLAY MOLECULAR GEOMETRY
dat : DISPLAY ATOMIC ATTRIBUTES YET ESTABLISHED
h : EXPLANATION OF ATTRIBUTE DEFINITION SYNTAX
* : TERMINATE THIS SECTION AND WRITE DATA OR DATA REFERENCES TO control
GOBACK=& (TO GEOMETRY MENU !)
b(基底関数を割り当てる)
ENTER A SET OF ATOMS TO WHICH YOU WANT TO ASSIGN BASIS SETS
( ATOMIC SET : all none <index list> <identifier> )
TO OUTPUT ATOMIC SET SYNTAX ENTER A QUESTION MARK ?
E.G. all dz (DZ BASIS FOR ALL ATOMS)
all sto-3g hondo (SCALED STO-3G)
1,2,4-6 dzp (DZP BASIS FOR ATOMS 1,2,4,5,6)
"c" tz (TZ BASIS FOR ALL CARBON ATOMS)
frag1,4-6 dzp (DZP BASIS FOR ATOMS IN FRAGMENT 1,4,5,6)
ANY DISPLAY COMMAND dis MAY BE ENTERED OR YOU MAY
HIT >return< TO QUIT (GOING BACK TO MAIN MENU)
all def2-SV(P)(全原子にdef2-SV(P)を割り当てる)
SUPPLYING BASIS SETS TO 6 ATOMS
#
# BASIS SET LIBRARY FOR CARBON
# ECPs, HONDO-BASIS SETS FROM basen AND
# FULLY OPTIMIZED BASIS SETS FROM newbas MERGED 02/6/93
...
(中略)
...
*
BASIS SETS WILL BE WRITTEN TO FILE basis BY DEFAULT
+--------------------------------------------------+
| basis set information |
+--------------------------------------------------+
...
(中略)
...
CHOOSE COMMAND
infsao : OUTPUT SAO INFORMATION
atb : Switch for writing MOs in ASCII or binary format
eht : PROVIDE MOS && OCCUPATION NUMBERS FROM EXTENDED HUECKEL GUESS
use <file> : SUPPLY MO INFORMATION USING DATA FROM <file>
man : MANUAL SPECIFICATION OF OCCUPATION NUMBERS
hcore : HAMILTON CORE GUESS FOR MOS
flip : FLIP SPIN OF A SELECTED ATOM
& : MOVE BACK TO THE ATOMIC ATTRIBUTES MENU
THE COMMANDS use OR eht OR * OR q(uit) TERMINATE THIS MENU !!!
FOR EXPLANATIONS APPEND A QUESTION MARK (?) TO ANY COMMAND
eht(初期軌道を計算する)
PROVIDING EHT AOS FOR THE FOLLOWING SET OF ATOMS :
1 o 4 o
for the 8 electrons of the actual atom you have
to provide at least basis functions for the AO's : 2s 1p 0d 0f
PROVIDING EHT AOS FOR THE FOLLOWING SET OF ATOMS :
2 h 3 h 5 h 6 h
for the 1 electrons of the actual atom you have
to provide at least basis functions for the AO's : 1s 0p 0d 0f
DO YOU WANT THE DEFAULT PARAMETERS FOR THE EXTENDED HUECKEL CALCULATION ?
DEFAULT=y HELP=?
y(拡張ヒュッケル法のパラメータを用いる(デフォルト設定))
ENTER THE MOLECULAR CHARGE (DEFAULT=0)
0(電荷の指定)
NUMBER OF ELECTRONS IN YOUR MOLECULE IS 20
AUTOMATIC OCCUPATION NUMBER ASSIGNMENT ESTABLISHED !
FOUND CLOSED SHELL SYSTEM !
HOMO/LUMO-SEPARATION : 0.871264
ORBITAL SYMMETRY ENERGY DEFAULT
(SHELL) TYPE OCCUPATION
7 7a -0.64594 2
8 8a -0.63162 2
9 9a -0.62305 2
10 10a -0.61522 2
11 11a 0.25605 0
12 12a 0.30474 0
13 13a 0.53761 0
DO YOU ACCEPT THIS OCCUPATION ? DEFAULT=y
y
PROVIDING 'derivative' DEFAULT PARAMETERS ...
PROVIDING FORCE RELAXATION DEFAULT PARAMETERS ...
mo occupation :
irrep mo's occupied
a 36 10
number of basis functions : 36
number of occupied orbitals : 10
GENERAL MENU : SELECT YOUR TOPIC
scf : SELECT NON-DEFAULT SCF PARAMETER
mp2 : OPTIONS AND DATA GROUPS FOR rimp2 and mpgrad
...
(中略)
...
dis : DISPLAY MOLECULAR GEOMETRY
list : LIST OF CONTROL FILE
& : GO BACK TO OCCUPATION/ORBITAL ASSIGNMENT MENU
* or q : END OF DEFINE SESSION
dft
STATUS OF DFT_OPTIONS:
DFT is NOT used
functional b-p
gridsize m3
ENTER DFT-OPTION TO BE MODIFIED
func : TO CHANGE TYPE OF FUNCTIONAL
grid : TO CHANGE GRIDSIZE
rads : TO CHANGE RADSIZE
on: TO SWITCH ON DFT
Just <ENTER>, q or '*' terminate this menu.
on(DFT計算を利用する)
STATUS OF DFT_OPTIONS:
DFT is used
functional b-p
gridsize m3
ENTER DFT-OPTION TO BE MODIFIED
func : TO CHANGE TYPE OF FUNCTIONAL
grid : TO CHANGE GRIDSIZE
rads : TO CHANGE RADSIZE
off: TO SWITCH OFF DFT
Just <ENTER>, q or '*' terminate this menu.
func(汎関数を指定する)
REFERENCES:
...
(中略)
...
SURVEY OF AVAILABLE EXCHANGE-CORRELATION ENERGY FUNCTIONALS
FUNCTIONAL | TYPE | EXCHANGE | CORRELATION | REFERENCES
---------------------------------------------------------------------
s-vwn | LDA | S | VWN(V) | 1-3
s-vwn_Gaussian | LDA | S | VWN(III) | 1-3
...
(中略)
...
lhj14 | LHYB | | |
r2scan | MGGA | | |
scan-libxc | MGGA | from LibXC | |
pbe(PBE汎関数を指定)
STATUS OF DFT_OPTIONS:
DFT is used
functional pbe
gridsize m3
ENTER DFT-OPTION TO BE MODIFIED
func : TO CHANGE TYPE OF FUNCTIONAL
grid : TO CHANGE GRIDSIZE
rads : TO CHANGE RADSIZE
off: TO SWITCH OFF DFT
Just <ENTER>, q or '*' terminate this menu.
grid(グリッドサイズを変更する)
Enter the gridsize. Values range from 1 to 7
for full grids and from m3 to m5 for modified
grids (small grids used during dft iterations)
append a after size for more radial points in
all-electron relativistic calculations
3(デフォルトではm3だが、m3では粗いグリッドで収束させたSCFの結果を用いるため、ポテンシャル面が安定しないという問題点がある)
STATUS OF DFT_OPTIONS:
DFT is used
functional pbe
gridsize 3
ENTER DFT-OPTION TO BE MODIFIED
func : TO CHANGE TYPE OF FUNCTIONAL
grid : TO CHANGE GRIDSIZE
rads : TO CHANGE RADSIZE
off: TO SWITCH OFF DFT
Just <ENTER>, q or '*' terminate this menu.
return(Enterキー押下)
GENERAL MENU : SELECT YOUR TOPIC
scf : SELECT NON-DEFAULT SCF PARAMETER
mp2 : OPTIONS AND DATA GROUPS FOR rimp2 and mpgrad
...
(中略)
...
dis : DISPLAY MOLECULAR GEOMETRY
list : LIST OF CONTROL FILE
& : GO BACK TO OCCUPATION/ORBITAL ASSIGNMENT MENU
* or q : END OF DEFINE SESSION
ri
STATUS OF RI-OPTIONS:
RI IS NOT USED
Memory for RI: 500 Mb
Filename for auxbasis: auxbasis
ENTER RI-OPTION TO BE MODIFIED
m: CHANGE MEMORY FOR RI
f: CHANGE FILENAME
jbas: ASSIGN AUXILIARY RI-J BASIS SETS
on: TO SWITCH ON RI
Use <ENTER>, q, end, or '*' to leave this menu
on(RI近似を利用する;Pure Functionalを用いたDFT計算を特に加速する)
NO DEFINITION OF BASIS SETS ($jbas) IN control
TRY TO OBTAIN BASIS SETS FROM LIBRARY !
...
(中略)
...
STATUS OF RI-OPTIONS:
RI IS USED
Memory for RI: 500 Mb
Filename for auxbasis: auxbasis
ENTER RI-OPTION TO BE MODIFIED
m: CHANGE MEMORY FOR RI
f: CHANGE FILENAME
jbas: ASSIGN AUXILIARY RI-J BASIS SETS
off: TO SWITCH OFF RI
Use <ENTER>, q, end, or '*' to leave this menu
return(Enterキー押下)
GENERAL MENU : SELECT YOUR TOPIC
scf : SELECT NON-DEFAULT SCF PARAMETER
mp2 : OPTIONS AND DATA GROUPS FOR rimp2 and mpgrad
...
(中略)
...
dis : DISPLAY MOLECULAR GEOMETRY
list : LIST OF CONTROL FILE
& : GO BACK TO OCCUPATION/ORBITAL ASSIGNMENT MENU
* or q : END OF DEFINE SESSION
scf(SCF計算の設定を変更する)
ENTER SCF-OPTION TO BE MODIFIED
conv : ACCURACY OF SCF-ENERGY $scfconv
thi : INTEGRAL STORAGE CRITERIA $thize $thime
...
(中略)
...
snso : SCREENED NUCLEAR SPIN ORBIT $snso
pcc : X2C pcicture-change correction $pcc
iter
CURRENT VALUE FOR MAXIMUM NUMBER OF SCF-ITERATIONS : 30
ENTER NEW VALUE FOR MAXIMUM NUMBER OF SCF-ITERATIONS
DEFAULT= 30
300(SCF計算のIteration上限を300回に変更)
ENTER SCF-OPTION TO BE MODIFIED
conv : ACCURACY OF SCF-ENERGY $scfconv
thi : INTEGRAL STORAGE CRITERIA $thize $thime
...
(中略)
...
snso : SCREENED NUCLEAR SPIN ORBIT $snso
pcc : X2C pcicture-change correction $pcc
damp
CURRENT VALUES FOR DAMPING PARAMETERS :
$scfdamp start= 0.300 step= 0.050 min= 0.100
ENTER START VALUE FOR DAMPING (DEFAULT= 0.300)
20(金属クラスターの場合は100などの大きな値にする)
ENTER INCREMENT FOR REDUCTION OF DAMPING (DEFAULT=0.050)
0.1
ENTER MINIMAL DAMPING , (DEFAULT= 0.100)
5
ENTER SCF-OPTION TO BE MODIFIED
conv : ACCURACY OF SCF-ENERGY $scfconv
thi : INTEGRAL STORAGE CRITERIA $thize $thime
...
(中略)
...
snso : SCREENED NUCLEAR SPIN ORBIT $snso
pcc : X2C pcicture-change correction $pcc
return(Enterキー押下)
GENERAL MENU : SELECT YOUR TOPIC
scf : SELECT NON-DEFAULT SCF PARAMETER
mp2 : OPTIONS AND DATA GROUPS FOR rimp2 and mpgrad
...
(中略)
...
dis : DISPLAY MOLECULAR GEOMETRY
list : LIST OF CONTROL FILE
& : GO BACK TO OCCUPATION/ORBITAL ASSIGNMENT MENU
* or q : END OF DEFINE SESSION
*
***********************************************************
* *
* e n d o f *
* D E F I N E *
* *
***********************************************************
...
(以下略)
...
以上の手順で control(TURBOMOLE用のインプット)を作成する。中身を確認して問題が無いか確かめておく。この他にauxbasis、basis、mosが生成されている。
開殻系の計算の場合はSCF計算のモードをfermiとし、tmstrt=300.00、tmend=300.00(スピン状態の収束性が悪ければ変更する)にして計算する。このときnatural orbitalは使用しない設定が推奨される(らしい)。また、このときGRRMの.comのスピン多重度は "0 3" に指定しなければならないことに注意(GRRMはSinglet指定だとMOファイルを1つしか認識しないため)。
TURBOMOLE を利用した周期系の計算
TmolInpBセクションに riper と書けば TURBOMOLE の riper モジュールが起動するので周期系の計算とGRRMを接続可能。通常は ridft と rdgrad が走る設定になっている。TURBOMOLE には専用の組み込みインターフェースが存在するのでGeneral interfaceを利用しなくても良い。詳しいcomの描き方は次の項を参考に。
TURBOMOLE で周期系を扱う場合のインプットについて
coordやcontrolの作り方は孤立系と同様。セルのパラメータ等はcontrolに記載する。TURBOMOLE で周期系の計算を行うには riper モジュールを使用する必要がある。これをGRRMに起動させるには .com 中のTmoleInpBセクションに以下の通り記載する。JOBNAMEの部分は適宜書き換えること。
【[JOBNAME].com】
%link=Turbomole
# MIN
0 1
O 3.361715718702 1.357675412384 2.676463210617
H 3.628603197458 2.173758112466 3.117643488676
H 3.719245611587 0.663021823717 3.243462950372
O 0.533990254815 0.892549936042 2.230009641096
H 1.492923910570 0.995066205963 2.272395909618
H 0.269797986346 1.496453281274 1.524769871664
TV 4.000000000000 0.000000000000 0.000000000000
TV 0.000000000000 4.000000000000 0.000000000000
TV 0.000000000000 0.000000000000 4.000000000000
Options
NoFC
DownDC=15
TmoleProc=1
DetailedOutput=ON
TV-Dimension = 3
TmoleInpB
:; if ( ! -f mos ) cp -f ../mos ./mos; if ( -f ../JOBNAME_mos ) cp -f ../JOBNAME_mos ./mos; ls -l
sed -i 's/$scfmo none file=mos/$scfmo file=mos/' control
riper
END
まず、TmoleInpBセクションに記入されたコマンドはすべて [JOBNAME]_Submit.rrm(GRRMが電子状態計算ソフトウェアを呼び出すためのcshスクリプト)に以下のように書き出されることに注意する。Submit.rrmは中間ファイルなのでGRRMがERRORまたはLinkERRORにならない限り出力としては残らない。
【[JOBNAME]_Submit.rrm】
#!/bin/csh
if ( -d JOBNAME ) rm -rf JOBNAME
mkdir JOBNAME
cp -f basis JOBNAME/basis
cp -f auxbasis JOBNAME/auxbasis
cp -f JOBNAME_coord JOBNAME/coord
if ( -f JOBNAME_coordlatt ) cp -f JOBNAME_coordlatt JOBNAME/coordlatt
cp -f JOBNAME_control JOBNAME/control
setenv TURBOTMPDIR /scr/nabata.JOBNAME.25961/JOBNAME
cd JOBNAME
nohup :; if ( ! -f mos ) cp -f ../mos ./mos; if ( -f ../JOBNAME_mos ) cp -f ../JOBNAME_mos ./mos; ls -l >JOBNAME_TurbomoleJOB.out
nohup sed -i 's/$scfmo none file=mos/$scfmo file=mos/' control >>JOBNAME_TurbomoleJOB.out
nohup riper >>JOBNAME_TurbomoleJOB.out
cd -
rm -f JOBNAME_TurbomoleJOB.out
cp -f JOBNAME/JOBNAME_TurbomoleJOB.out JOBNAME_TurbomoleJOB.out
rm -f JOBNAME_TurbomoleGrad.out
cp -f JOBNAME/gradient JOBNAME_TurbomoleGrad.out
if ( -f JOBNAME/gradlatt ) cp -f JOBNAME/gradlatt JOBNAME_TurbomoleGradLatt.out
cp -f JOBNAME/mos JOBNAME_mos
rm -rf JOBNAME
TmoleInpBセクションの内容は次の通り。1行目はそれぞれ、:(コロン)は「何もしない」という意味のコマンド、if節の部分はmos(mosが有れば)もしくはJOBNAME_mosをサブディレクトリにmosという名前でコピーするコマンドであり、末尾のls -lはファイルの有無を確認するためのコマンド(無くても良い)である。2行目はGRRMが書き換えた control の "$scfmo none file=mos" の none の部分を削除するコマンド。3行目がTURBOMOLEの riper モジュールを起動するコマンド。
※GRRMはmosをサブディレクトリにコピーしないため、そのままriperを起動すると初期MOが読み込めずエラーになる。また、TURBOMOLEに作成させたmosはJOBNAME_mosとして.comのある上位のディレクトリにコピーされるので、2回目以降のSCF計算ではJOBNAME_mosをmosとしてサブディレクトリにコピーしなければならないことに注意(1行目のif文はこの条件分岐のために付けている)。
.comの中身をいちいち書き換えたくない場合(使い回しやすくしたい場合)はややテクニカルだが、
TmoleInpB
:; set JN=`echo -n ${0} | sed "s/_Submit.rrm//"`; if ( ! -f mos ) cp -f ../mos ./mos; if ( ! -f ../${JN}_mos ) cp -f ../${JN}_mos ./mos; ls -l
sed -i 's/$scfmo none file=mos/$scfmo file=mos/' control
riper
END
としてワンラインにすることも可能。行われていることは上記と同じ。
control の中身も周期系用にカスタマイズしておくこと(重要な部分を赤字で強調した;パラメータの値はこの限りでない)。
【control(周期系用)】
$title
$symmetry c1
$user-defined bonds file=coord
$coord file=coord
$atoms
o 1,4 \
basis =o def2-SV(P) \
jbas =o def2-SV(P)
h 2-3,5-6 \
basis =h def2-SV(P) \
jbas =h def2-SV(P)
$basis file=basis
$scfmo file=mos
$closed shells
a 1-10 ( 2 )
$scfiterlimit 300
$thize 0.10000000E-04
$thime 5
$scfdamp start=10.000 step=0.050 min=0.100
$scfdump
$scfintunit
unit=30 size=0 file=twoint
$scfdiis
$maxcor 500 MiB per_core
$scforbitalshift automatic=.1
$drvopt
cartesian on
basis off
global off
hessian on
dipole on
nuclear polarizability
$interconversion off
qconv=1.d-7
maxiter=25
$coordinateupdate
dqmax=0.3
interpolate on
statistics 5
$forceupdate
ahlrichs numgeo=0 mingeo=3 maxgeo=4 modus=<g|dq> dynamic fail=0.3
threig=0.005 reseig=0.005 thrbig=3.0 scale=1.00 damping=0.0
$forceinit on
diag=default
$energy file=energy
$grad file=gradient
$forceapprox file=forceapprox
$dft
functional pbe
gridsize 3
$periodic 3
$lattice ang
4.000000000000 0.000000000000 0.000000000000
0.000000000000 4.000000000000 0.000000000000
0.000000000000 0.000000000000 4.000000000000
$kpoints
nkpoints 1 1 1
$optcell
$gradlatt file=gradlatt
$riper
lenonly off
$disp3
$scfconv 7
$ricore 500
$rij
$jbas file=auxbasis
$rundimensions
natoms=6
nbf(CAO)=38
nbf(AO)=36
$last step define
$end
JOB投入前のサブディレクトリ [JOBNAME] には auxbasis、basis、control、coord、mos が入っている状態にしておく。これは孤立系の場合と同様。
Intel(R) Xeon(R) E5-2690 v3 で 16 core 並列でH2O二分子が入ったユニットセルの構造最適化(PBE汎関数(gridsize 3)、D3分散力補正あり、k点1x1x1、RI近似あり)をすると、1点あたりの計算時間は平均18秒程度であった。
GRRMで計算する場合は.comの他に.inpファイル(Orca用のインプット)が必要。
.comには %link=Orca と書き、コア数とメモリ数を指定する。なお、Optionsには NOFC が必要であることに注意。NOFCが無いと.inpに"Freq"という誤ったフラグが建てられてしまうが、これはORCA-6.xでは用いられていない。(余談:ORCAの振動数解析のオプションとしては"NumFreq"が正しい)
%link=Orca
# MIN
0 1
O 0.438335628 0.000000000 -0.411277417
H 0.438335628 0.759337000 0.184765583
H 0.438335628 -0.759337000 0.184765583
Options
OrcaProc=1
OrcaMem=100
DownDC=12
NOFC
【内部向け】GRRMsで生成されるシェルスクリプトには環境変数 "suborca" が指定されていない。そのため、GRRMsの-testで作成したシェルスクリプトにsetenv suborca [Orcaのパス]を書き足してから流す必要がある。
Orcaをシングルコアで計算する場合はパスを通すだけで良いが、マルチコア(並列)で流すにはローカルにOpenMPをインストールしておく必要がある。
構造最適化など1点計算の場合は.inpに以下のように書けばよい。これはOrca内蔵のGFN-xTBプログラムを利用した例。
! XTB2 NoUseSym @job
* xyz 0 1
@geometry
*
xTBを利用する際は.comでNOFCを付けること。また、DFT計算の場合などは汎関数と基底関数を指定する必要がある。
溶媒効果を含める場合は.inpにCPCM(WATER)のように書く。あるいは!CPCMセクションを作って記述することもできる。パラメータの存在しない溶媒もあるので注意。
! XTB2 NoUseSym CPCM(WATER) @job
* xyz 0 1
@geometry
*
def2系の基底関数でdiffuse関数が入ったma-def2基底を使う場合。
!RKS B3lyp ma-def2-SVP def2/J autoaux RIJCOSX TightSCF SoSCF @TasK
%PAL Nprocs 10
End
* xyz -4 1
@@@
*
RKS:制限付きコーン・シャム
B3lyp:汎関数
ma-def2-SVP:def2-SVP基底に加え、水素以外の原子に対してs軌道とp軌道の分散関数を加えた基底
def2/J:補助基底
GRRMで計算する場合は.comの他に.hsdファイル(DFTB+用のインプット)が必要。
DftD3 dispersion constants について
例えば Dispersion = DftD3 { } とするとDFTB3の "old default" のパラメータが適用される。
※ 3OB: The Third-Order Parametrization for Organic and Biological Systems
※ DFTB3: Third Order Density Functional Tight Binding
※ 公式マニュアル→こちら
Slater-Koster files について
dispersion のパラメータが元素のペアごとに用意されているデータセット
※ 参考:Download of Slater-Koster files (こちらも参考に)
DFTB+を使う場合、割り当てるコア数を増やすよりも、コア数を1にして並列数を稼いで探索する方が速い。
VdW radii, C6 parameters
H 1.001 0.14
He 1.012 0.08
Li 0.825 1.61
Be 1.408 1.61
B 1.485 3.13
C 1.452 1.75
N 1.397 1.23
O 1.342 0.70
F 1.287 0.75
Ne 1.243 0.63
Na 1.144 5.71
Mg 1.364 5.71
Al 1.639 10.79
Si 1.716 9.23
P 1.705 7.84
S 1.683 5.57
Cl 1.639 5.07
Ar 1.595 4.61
K 1.485 10.80
Ca 1.474 10.80
Sc 1.562 10.80
Ti 1.562 10.80
V 1.562 10.80
Cr 1.562 10.80
Mn 1.562 10.80
Fe 1.562 10.80
Co 1.562 10.80
Ni 1.562 10.80
Cu 1.562 10.80
Zn 1.562 10.80
Ga 1.650 16.99
Ge 1.727 17.10
As 1.760 16.37
Se 1.771 12.64
Br 1.749 12.47
Kr 1.727 12.01
Rb 1.628 24.67
Sr 1.606 24.67
Y 1.639 24.67
Zr 1.639 24.67
Nb 1.639 24.67
Mo 1.639 24.67
Tc 1.639 24.67
Ru 1.639 24.67
Rh 1.639 24.67
Pd 1.639 24.67
Ag 1.639 24.67
Cd 1.639 24.67
In 1.672 37.32
Sn 1.804 38.71
Sb 1.881 38.44
Te 1.892 31.74
I 1.892 31.50
Xe 1.881 29.99
Cs 1.802 315.27
Ba 1.762 226.99
La 1.720 176.25
Ce 1.753 140.68
Pr 1.753 140.68
Nd 1.753 140.68
Pm 1.753 140.68
Sm 1.753 140.68
Eu 1.753 140.68
Gd 1.753 140.68
Tb 1.753 140.68
Dy 1.753 140.68
Ho 1.753 140.68
Er 1.753 140.68
Tm 1.753 140.68
Yb 1.753 140.68
Lu 1.753 140.68
Hf 1.788 105.11
Ta 1.772 81.24
W 1.772 81.24
Re 1.772 81.24
Os 1.772 81.24
Ir 1.772 81.24
Pt 1.772 81.24
Au 1.772 81.24
Hg 1.758 57.36
Tl 1.989 57.25
Pb 1.944 63.16
Bi 1.898 63.54
Po 2.005 55.28
At 1.991 57.17
Rn 1.924 56.64
納税は日本国民の義務であり、無申告者は懲罰的課税(無申告加算税、延滞税)の対象となる。意図的な脱税など特に悪質な場合は罰金や懲役刑が科されることもある。
フェローシップ(FS)制度の助成金は80%近くが雑所得扱いなので確定申告が必要となる。また、FSに採用された時点で扶養家族から外れることが確定するため、扶養者の勤務先への連絡・世帯分離の手続き・国民健康保険への加入手続き...などは早めに済ませておくこと(遅れると税務署から扶養者に追徴課税の請求書が来る)。
因みに、学振の給料は(一応)給与所得区分なので基本的には年末調整のみで完結するが、生命保険料控除や医療費控除(年間10万円以上の医療費を要した場合)、配偶者控除(配偶者がいる場合)、扶養控除(子供などの扶養家族がいる場合)などの適用要件に該当する者は、節税の観点から各自が確定申告すべきである。その際は証明書の添付が必要になるので適宜用意する。(2023年時点での情報)
「所得」の計算期間:1月1日~12月31日の1年間の収入と費用を計算する。
確定申告書の提出・納税期間:(通例)2月16日~3月15日の1カ月以内(この期間内であれば何度でも申告書の提出が可能)
給与所得と雑所得のみ発生している場合は「確定申告書A」の様式で提出する。事業を営んでいる場合は「確定申告書B」の様式で提出する。
※ 令和5年1月以降は様式が確定申告書Bのタイプに統一されることになっている(2023年現在)。
納税額の計算は基本的には以下の4つのステップで考える。
① 収入金額の計算(総ての収入の算出)
② 必要経費の計算(総ての所得の算出)
③ 所得控除の計算(課税所得の算出)
④ 税率の計算(納税額の算出)
税金は最終的に計算された課税所得に課されるものである。
大学からの源泉徴収票は年明けに送付されるので保管しておくこと。自分で確定申告する場合は源泉徴収額の入力が必要となるため。
e-TAXで確定申告する場合はマイナンバーカードを作成しておくとラクに済む。できれば早いうちに作っておく。確定申告しない場合でもマイナンバーカードを作成しておくと何かと便利な場合がある(マイナポータルのUI・UXには改善の余地がかなりあるが我慢する)。
※マイナンバーカードの交付申請、個人情報の提出から、手元に届くまでには1ヶ月程度掛かるので、1月中には交付申請していないとその年の確定申告に間に合わない。
【参考】確定申告に関する手引き等 - 国税庁
【経費について】
【重要】DX博士人材FSなどの「科学技術イノベーション創出に向けた大学フェローシップ創設事業」(以下、FSと表記)や「JST次世代研究者挑戦的研究プログラム」を財源とするプロジェクトから研究支援費を受け取っている者は授業料や入学金、研究費用を雑所得から必要経費として差し引くことができる(税理事務所の問い合わせに対するJSTの公式回答とされる)。
※例えば2022年現在、国立大学の授業料は一般の理系学生の場合535,800円/年なので、これを必要経費として所得から差し引くことができる。ただし、開始年と終了年は学費納入期間に応じて按分する必要があり、助成金の受給期間に対応する期間の学費のみを費用計上するのが税制上適切である(例えば、DX博士人材FSは2021年10月から開始されているため、必要経費として計上できるのは2021年10月以降の学費のみと考えるのが妥当であろう)。
※授業料を経費として計上する場合、証拠として支払い時の領収書を用意しておくこと。または、振込額が分かる資料(通帳の支払い記録など)を保管しておく。
例えば「アンビシャス博士人材FS」では、年間で144万円(80%)が雑所得区分の収入、36万円(20%)が給与所得区分の収入となっている。雑所得がFS以外に無い場合は授業料を差し引いて 1,440,000 - 535,800 = 904,200 が雑所得の合計金額となる(その他の研究費用があればさらに差し引く)。なお、アンビシャス博士人材FS採用初年は4月~12月の学費9ヵ月分(月割り)に相当する401,850円を、採用最終年は1月~3月の学費3ヵ月分(月割り)に相当する133,950円を、それぞれ必要経費として差し引くのが妥当であろう。
※(2022/03/17追記)「北海道大学アンビシャス博士人材フェローシップ」の受給者は2022年度前期から授業料が全額免除となることが通知された。(2023/04/13追記)DX対象者についても2023年度前期から授業料が全額免除となることが通知された。
研究に関連する書籍代や学会などの参加費・旅費(食費は除く)は当然、研究遂行上の必要経費として計上可能である。
例えば、研究用にノートPCを購入した場合、そのPCを全く私生活で使用していなければ基本的には全額を必要経費に計上できる。一方で、ノートPCを私生活でも使っている場合(趣味にも使用する場合など)は合理的な根拠に基づいて適宜按分しなければならない。家賃や電気代なども同様で、使用面積や消費電力などの客観的な基準に基づいて按分しなければならない。
FSから支給される研究費(「研究専念費」(=生活費)とは別)は年度内使い切りの予算であるが、制度上これは収入扱いになっていると考えられる。(使い切れない場合は(繰越せないにもかかわらず)課税対象となるという話も耳にする。年度内使い切りなのはそのため?)
FSから支給される研究費で10万円以上の物品(耐用年数1年以上)を購入した場合、その物品は大学の「少額備品」や「固定資産」として扱われ、資産登録の必要が生じる。例えばPCであれば耐用年数が4年なので、導入後4年間は外部への持ち出しが不可能となる(損壊するなどの例外を除いて処分も不可能となる)。なお、減価償却の手続きや計算は基本的に大学側で行うので、受給者が特別に何かする必要は無い。
10万円未満(※「以下」ではないことに注意)の物品は「消耗品」に分類される。パソコンやタブレット端末は区分上「高換金性消耗品」として取り扱われるが、事務手続きはその他の消耗品と基本的には変わらない。
※(2023/04/13追記)1円以上のパソコンやタブレット端末などを購入する場合は大学への届け出が義務付けられているらしい(北海道大学の場合)
FSからの助成金を事業所得とした上で、何らかの形で無理やり経費計上して作った赤字と相殺すれば給与所得などとも損益通算可能となる…が、やりすぎる(?)と税務調査の対象となる可能性がある(小規模の事業主がよくやるグレーな節税の手口だそうだが、最近は税務署も厳しくチェックしているらしい)。何でもかんでも経費計上すれば良いというものではない。
※受給者が開業して個人事業主となりFSからの研究専念費(ただし給与所得分を除く)を事業所得として扱うこと自体には何ら違法性は無い。
学会開催に伴う宴席(意見交換会)などに参加した場合、その参加費用が研究を遂行する上で必要な経費であると客観的に認められるのであれば問題無く経費計上できる(意見交換によって研究遂行に寄与する重要な示唆を得る、新しいポスト・共同研究などの誘いを受ける、など)。しかし実態が、週に何度も研究室のメンバーで飲み歩いていただけ、といった場合は不正な経費計上と見なされて当然であり、追徴課税は免れない。
【参考動画】北海道大学DX博士人材フェローシップ生向け確定申告セミナー - 北海道大学DX博士人材フェローシップ(2022/02/21閲覧)
【参考資料】研究活動に関するハンドブック/Research Handbook - 北海道大学
【開業について】
弁護士顧問料事件最高裁昭和56年4月24日判決によると、「事業所得とは、自己の計算と危険において独立して営まれ、営利性、有償性を有し、かつ反復継続して遂行する意思と社会的地位とが客観的に認められる業務から生ずる所得」とされている。「事業」といえる程度の規模・態様においてなされている活動か否かは以下の観点に基づいて判断される。
営利性(利益目的である)
有償性(対価を得ている)
反復継続性(継続している)
平成26年9月1日の裁決事例によると、これらの要件を満たすか否かは以下の点を「総合的に勘案して」判断すべきだとされている。
自己の計算と危険においてする企画遂行性の有無
本人の精神的肉体的労務の投入の有無
人的・物的設備の有無
本人の職業・経験及び社会的地位等
これらの観点を考慮すると、FS等からの所得を事業所得と見なすことの妥当性は否定し去れないだろう。
※ 参考:フェローシップや次世代研究者挑戦的研究プログラムに採択された博士課程の学生は開業届を出して個人事業主になろう - たぐれおん氏(2022/02/21閲覧)
FSからの雑所得を事業所得として申告するためには、納税地を管轄する税務署(事業所の所在地ではない)に開業届を提出しておく必要がある。開業届を出さなくても事業所得として申告可能だが、事前に個人事業主として登録しておかないと税務署から「この所得は雑所得に該当するのではないか」と問い合わせが来る恐れがある。
例えば「研究員」などとして開業(個人事業主になるということ)して賃貸物件を事業所とすれば、家賃を必要経費と主張することも可能である。ただし家事関連費には明確な按分基準が求められるので、生活空間と仕事場の境界や時間的区分はよく考えること。特に、遠方の実家を離れて大学付近の賃貸物件に一人暮らししている場合は事業所兼住居としての性格が強まるため、家賃全額を経費と見なすのは社会通念上難しいと考えられる。
税制面で優遇される青色申告を行う場合は「青色申告承認申請書」を「青色申告の対象年の3月15日まで」に納税地を管轄する税務署に提出しなければならない。例えば、2022年の3月15日までに青色申告承認申請書を提出した場合は、2023年に青色申告で(2022年の分を)確定申告できる。
青色申告では最大65万円の青色申告特別控除が受けられるほか、30万円未満の減価償却資産を「少額減価償却資産」として経費に一括計上できる(少額減価償却資産の特例)。例えば、白色申告者は10万円未満のPCを消耗品として経費で購入できるが、青色申告者は30万円未満のPCを消耗品と同じように購入して一事業年度内の必要経費に計上できる。ただし、この特例の適用を受けられる減価償却資産の総額は一事業年度あたり300万円が上限。
ただし青色申告の場合は確定申告時に提出すべき書類が一気に増えるので、それらを準備する時間や労力など費用対効果を考慮した方がよい。ただ、既に複数の事業を副業的に営んでいるのであれば十分検討に値する。青色申告に関連する経理は信頼できる税理士に依頼するのが最も安全で確実だが、提出書類一式は市販の会計ソフトで揃えることも可能。とにかく、申告期間内に納税することが何よりも重要である。
FSの助成期間が終了するなどして研究員としての事業を継続できなくなったら廃業届を提出すればよい。なお、別の事業で生計を立てられていればその限りではない。
因みに、税務調査の遡及期間は原則5年なので、事業を畳んでから少なくとも5年間は領収書などの支払証明書類を保存しておくことが望ましい(脱税が疑われるような悪質な場合は最長7年まで遡及して調査される)。
【その他】
単発バイトやブログ収入(各種アフィリエイト含む)、電子データや物品の(通信)販売、競取り・転売、フードデリバリー、YouTuberなどの配信業、その他の接待業等で(事業とは言えない規模で)収入を得ている場合は、それらすべての所得を合算して雑所得とする。(助成金受給者が研究員として開業していて自身の研究に関わるウェブサイトやYouTubeチャンネルを運営して一定額の広告収入を得ている場合、それらの運営をアウトリーチ活動の一環と見なして広告収入を事業所得に含めることは可能...かもしれない;税務署に要確認)
雑所得区分の赤字は雑所得区分の黒字のみと損益通算可能である。雑所得の赤字は事業所得や給与所得と損益通算できないことに注意。
不動産所得や事業所得、総合課税の譲渡所得、山林所得の赤字は経常所得(=事業所得 + 不動産所得 + 利子所得 + 配当所得 + 給与所得 + 雑所得)との損益通算が可能。所得区分が多岐に亘る大学生や大学院生はそう多くはないと思われるが、これらの所得が発生していて、なおかつ赤字が発生する見込みがあれば「損益通算の順序」も確認して損益通算する。あるいは税理士に一任する。
※ 参考:損益通算を行う場合の申告書の記載要領 - 国税庁(2022/02/21閲覧)
上場株式等の売買益(キャピタルゲイン)や配当益(インカムゲイン)には現物/先物のいずれにも20.315%の税率が一律で課される。これらは分離課税の対象となるため損益通算は上場株式等の運用損益の間でのみ可能(ただし配当金は源泉分離課税)。FXも分離課税の対象なので同様。特定口座を開設して取引している場合、自動的に源泉徴収されるという点では確定申告が不要だが、給与と上場株式等の譲渡益以外の収入がある場合は確定申告が必要となる場合がある。
NISA預り/積み立てNISA預りの株式や各種ETF類の売買益は非課税というメリットがある一方、NISA/積み立てNISA枠内の実現損・実現益はともに翌年には繰り越せないので注意。未実現損益(特に損失の場合)はロールオーバーしなければ繰り越し可能と思われそうだが、課税口座へ移管後は買い付け時の価格ではなく、非課税期間最終年の年末時点(非課税期間満了時)の時価を基準として課税対象の差額が計算される。そのため、年末時点の時価によっては当初買付時からは値下がりしていたとしても、その後の利益確定時に利益が出ていれば課税されてしまうことに注意。(最近、NISAなどに関する法改正の議論が行われており上記の内容が変更される可能性があるので、予期しておきたい)なお、NISA預りの場合は損益通算できないため、損失を他の所得と相殺することはできないという点に注意(一般論として、例えばレバレッジ型ETFなどの手数料が高く減価しやすい商品は長期的には損失が発生しやすく積み立てには向かない。これは投資助言などではなく、単なる自明な事実である)。
iDeCo(個人型確定拠出年金)は掛金を全額所得控除に回せるので有力な節税の選択肢としてよく知られているが、これは年金という性格上、積み立てた金額は早くとも60歳(2023年現在)を超えなければ受け取ることができない(掛金が数十年単位で拘束される)ことに留意すべきであり、インフレ等による日本円そのものの価値毀損などのリスクも考慮した上で投資すべき商品と言える(投資額程度であれば十分にpayできるだろう(ただしインフレ率を加味しない))。NISAには無いiDeCoのメリットとしては、積み立てた金額の全額が所得控除の対象となるため、所得税や住民税が軽減できる点が挙げられる。最低5000円/月から積み立てでき、会社員の場合は月額2~3万円程度の上限がある。大学(院)卒業後に検討するとよい。
仮想通貨(暗号資産;crypto currency)の売買損益は雑所得内でのみ損益通算可能である。たとえ雑所得区分の収入が赤字でも給与所得などとは通算できないので注意。2023年現在、日本において仮想通貨は分離課税の対象でないので、実現した損失の翌年繰り越しが不可能であり、いわゆる損出し(タックスロス・セリング;節税のために実現利益を含み損で相殺すること)は年内に行わなければならない。個人口座ではなく法人口座で運用している場合は期末時の市場価格で評価しなければならないが、この辺りは税理士に頼るのが良いだろう(2024年現在、税制改正により法人の暗号資産保有が税制面で優遇される(他社発行の暗号資産保有時の期末時価評価課税が撤廃される)ことが決定している)。また、日本の税制において利益確定ないし所得発生と見なされるタイミングや、トークン類の運用上の様々なリスクについては当然ながら個々人が事前によく勉強しておくべきであり、特に金融庁の告示(加えて、SEC(米国証券取引委員会)の告示も)はよくウォッチしておくべきである。投資は自己の責任の下で行われるべきものであるが、意図せぬ脱税行為を犯してしまわないように細心の注意を払うこと。税金の支払いは自己破産手続きをしても免除されない(「租税等の請求権」は非免責債権である)ため、極めて悲惨な状況となる例もある。間接的に暗号資産に投資する方法としては、①暗号資産を保有or採掘している企業の株式を保有する、②暗号資産の現物ETFを購入する、などが挙げられる。
寄付型クラウドファンディングによって(法人ではなく)研究者個人が資金調達を行う場合、提供された資金は収入として扱われるため課税対象となる。個人からの資金調達は贈与とみなされ「贈与税」が課される。贈与税には年間110万円の基礎控除があり、調達額が110万円超の場合にのみ贈与税の申告と納税が必要となる。一方、法人からの資金調達は一時所得とみなされ「所得税」が課される。一時所得には50万円の特別控除があり、出資額が50万円を超える場合にのみ確定申告と納税が必要となる。
※ 研究者個人が個人の資金提供者から資金調達を行う場合、年間110万円以内の金額であれば実質無税で資産の譲渡が可能である(ただしこの場合は資金提供者が寄付控除を受けられるケースに該当しない)。
※ 但し、大学における学術研究の実施・教育研究の奨励などを支援する目的で寄附される現金や有価証券は原則として大学への寄附金として取り扱われる。この取り決め(財団等からの研究助成金に係る個人経理の禁止)が存在するため、上述のケースは個人もしくは自身が設立するなどした法人として研究を実施している場合に限られる点に注意。
※ 参考:クラウドファンディングにかかる税金は?確定申告が必要?種類ごとに解説! - Money Forward(2022/02/21閲覧)
税務署への個別相談は確定申告期間である2月16日~3月15日以外の期間に行うことが望ましい。これは確定申告期間は税務署員が忙殺されていて対応が遅くなるためである。
資産形成の基本は「①入る量を増やす」と「②出る量を減らす」の2つである。②は節約・節税して生活していればよい。一方、①には様々な方法がある。最もポピュラーな蓄財方法は貯金であるが、金利の極めて低い現代ではインフレ率に全く太刀打ちできない。そうなると自ずと証券(株式や債券)への投資による蓄財が視野に入ってくる。
元手となる資金額の限られる若年層にとって唯一の武器は「時間」である。例えば、利回りが2%(一定とする)の商品を保有している場合、30年で1.8倍になる。一般論として投資を始めるタイミングが早いほど有利であるという根拠は、複利の効果に基づく。急いで金持ちになろうとすると、多くの場合で過剰なリスクを負うことになる。あくまでも時間を味方に付けるべし。
口座を開設するなら手数料の安いネット銀行・ネット証券が良い。それ以外の選択肢は基本的に無い。
投資は自己の責任の下で行われるべき(相場に王道なし)であるが、いくつかの幾つかの留意事項を共有しておく。
余剰資金のみを元手にすること(命金には手を出すな)
急いで金持ちになろうとしないこと(休むも相場なり)
自分の判断を過信したり他人の言うことを鵜呑みにしたりしないこと(相場は相場に聞け)
ただし、日本や海外(主に米国)の金融政策や金利の動向はよくウォッチしておくべきである(ここでいう金利とは、長期国債・短期国債の金利のことである)。アメリカには「FEDには逆らうな」という相場の金言があるが、これは「連邦準備制度(Federal Reserve System)の方針に逆らった投資は慎め」という意味で、日本で言うと「日銀の金融政策には逆らうな」といった意味になる。通貨発行権を有する国家の中央銀行はその通貨の流通量をコントロールできるため、金融市場に与える影響が極めて大きい。具体的に中央銀行が何をすると市場がどういう反応を見せるのか、という点は各自がよく勉強する必要がある。
欲をかかず、予め決めたMyルールを遵守し、衆人の動向に惑わされず淡々と投資を続けること(人の行く裏に道あり花の山)
「北海道地区国立大学大滝セミナーハウス」や、「国立日高青少年自然の家」は研究室名義・教育目的なら(大学生・大学院生なら?)格安で借りられるので、低予算旅行を企画しているのであればオススメです。本物の低予算旅行の場合はオール車中泊(or ゼロ泊弾丸)となります。
札幌近郊であれば例えば、以下のような場所があります。
ボールパークに野球観戦行く(日帰り)
増毛の国稀酒造に行く(日帰り)
余市のニッカウヰスキー蒸留所に行く(日帰り)
旭川方面の観光(動物園とか;日帰り)
旭川周りの美瑛富良野方面(日帰り)
積丹半島方面(積丹ブルーは夏がおすすめ)
苫小牧周りの登別方面(温泉アリ・日帰り)
支笏湖・洞爺湖方面(温泉アリ・日帰り)
羊蹄山周辺の観光(京極留寿都とか)
札幌ダム豊平峡ダム(紅葉シーズンおすすめだけど激激混み)
泊りがけなら...
函館観光
トマムで雲海見る(早朝限定)
帯広で豚丼を食べたり池田のワイン城に行くなどする
屈斜路湖畔でゆっくりする(1泊2日ではゆっくりできないかも?)
摩周湖で霧に包まれる
北見のキツネ牧場&山の水族館
網走で金カム聖地巡礼
知床観光(1泊2日でも遠い)
釧路湿原観光(1泊2日でも遠い)
取り敢えず根室に行く
取り敢えず稚内に行く
大雪の山奥の秘湯に行く(上級者向け)
さ:再現性🔁(再現可能で普遍的な信頼できる成果)
し:新規性👀(surveyに基づく新規性や独創性の主張)
す:数量性📊(定性的な議論に終始せず数値で有効性を示す)
せ:整合性📐(論理的な破綻のない首尾一貫した議論)
そ:速報性🚀(さっさと書いて出す)
出典:https://twitter.com/naemura/status/895084214101716992 - 苗村健 先生
(オマケ)学会の「さしすせそ」🥶
さ:😇先ほどの質問に関連して.../🤨再現性は確認されているのでしょうか?
し:😏素人質問で恐縮ですが.../😅初歩的な質問かもしれませんが...
す:😓すみません、よくフォローできなかったのですが.../🧐素晴らしい発表でした。しかし...
せ:🤔先行研究との違いを訊きたいのですが.../🤓専門的な内容に踏み込んでしまうのですが...
そ:🥱その研究(手法)って意味あるんですか?/😊その理論を考えたのは私なのですが...
(諸説あり)