粒子分散系直接数値計算シミュレータ

KAPSEL

Version 5.12
ユーザーズマニュアル

KAPSEL Development Teamkapsel.dev@gmail.com
2024年2月1日

1

目次
第1章

はじめに

5

1.1

KAPSELとは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

1.2

KAPSELの機能概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.2.1

Newton 流体に分散した粒子のシミュレーション . . . . . . . . . . . . . . . . . . . . . . .

6

1.2.2

せん断流下の粒子分散系のシミュレーション . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.2.3

電解質溶液に分散した荷電コロイド粒子のシミュレーション . . . . . . . . . . . . . . . .

6

1.2.4

二成分相分離流体に分散した粒子のシミュレーション . . . . . . . . . . . . . . . . . . . .

6

1.2.5

マイクロスイマーのシミュレーション. . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.2.6

クインケローラーのシミュレーション. . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

本書の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

KAPSELのインストールと実行

8

KAPSELのインストール手順および実行方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

2.1.1

KAPSELの動作環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

2.1.2

OCTAのインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

2.1.3

KAPSELのインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

2.1.4

Validating your KAPSEL license . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

2.1.5

KAPSELのテスト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

2.1.6

シミュレーションデータの可視化方法. . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

2.1.7

シミュレーションデータの解析方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

入力UDFと定義UDFについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.2.1

流体の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.2.2

オブジェクト(粒子)の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.2.3

共通のシミュレーション設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

2.2.4

選択できる機能の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

2.2.5

データ出力設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.2.6

リスタートの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

2.2.7

GOURMETでの表示設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

出力UDFと再開UDFについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

Newton流体に分散した粒子のシミュレーション

23

理論的背景と基礎方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

3.1.1

粒子分散系における基礎方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

3.1.2

SP法の導入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

3.1.3

Smoothed Profiled (SP)関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

3.1.4

粒子温度の決定手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

1.3
第2章

2.1

2.2

2.3
第3章

3.1

目次

3.2

3.3

第4章

4.1

4.2

4.3

第5章

2
入力UDF について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

3.2.1

流体の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

3.2.2

オブジェクト(粒子)の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

3.2.3

空間単位と時間単位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

計算事例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29

3.3.1

粒子の沈降 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29

3.3.2

粒子の拡散 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29

3.3.3

粒子の凝集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

3.3.4

粒子鎖の運動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31

3.3.5

任意形状剛体粒子の運動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

3.3.6

任意形状剛体粒子の沈降 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

せん断流下の粒子分散系のシミュレーション

35

理論的背景と基礎方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

4.1.1

定常せん断流の場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

4.1.2

振動せん断流の場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

入力UDF について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

4.2.1

流体の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

4.2.2

オブジェクト（粒子）の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

計算事例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

4.3.1

定常せん断流下の懸濁液のレオロジー. . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

4.3.2

振動せん断流下の懸濁液のレオロジー. . . . . . . . . . . . . . . . . . . . . . . . . . . .

40

電解質溶液に分散した荷電粒子のシミュレーション

43

5.1

荷電コロイド粒子の電気泳動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

5.2

基本方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

5.2.1

移流拡散方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

5.2.2

Navier–Stokes方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

5.2.3

運動方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

電気二重層の性質 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

5.3.1

Poisson–Boltzmann方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

5.3.2

Debye–Hückel近似とDebye遮蔽長 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

電気泳動の原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

5.4.1

Smoluchowskiの式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

5.4.2

Hückelの式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

5.4.3

5.3

5.4

5.5

5.6

Henryの式およびO’Brien–Whiteによる解析 . . . . . . . . . . . . . . . . . . . . . . . . .

47

入力UDF について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

5.5.1

流体の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

5.5.2

オブジェクト（粒子）の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

5.5.3

空間単位と時間単位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

計算事例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

5.6.1

1粒子の電気泳動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

5.6.2

多粒子の電気泳動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

5.6.3

正負電荷の粒子混合系の電気泳動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

目次

第6章

3
5.6.4

AVS/Expressによる可視化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

5.6.5

Gourmetによる可視化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

5.6.6

gnuplotによるグラフ化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

二成分相分離流体に分散した粒子のシミュレーション

55

6.1

粒子が添加された二成分相分離流体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

6.2

理論的背景と基礎方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

6.2.1

二成分相分離流体の基礎方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

6.2.2

懸濁液の粘度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

入力UDFについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

流体の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

初期流れ場なしのシミュレーション設定 . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

せん断流下のシミュレーション設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

6.3.2

オブジェクト（粒子）の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

62

6.3.3

空間単位と時間単位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

62

計算事例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

63

二成分相分離流体に分散する粒子の運動 . . . . . . . . . . . . . . . . . . . . . . . . . . .

63

シミュレーションの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

63

シミュレーションデータの可視化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

64

Pythonスクリプトによるシミュレーションデータの解析 . . . . . . . . . . . . . . . . . . .

66

6.4.2

せん断流下の二成分相分離流体に分散する粒子の運動 . . . . . . . . . . . . . . . . . . . .

66

6.4.3

Pickeringエマルション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

68

6.3

6.3.1

6.4

6.4.1

第7章

7.1

7.2

7.3

第8章

8.1

8.2

8.3

マイクロスイマーのシミュレーション

70

理論的背景と基礎方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

7.1.1

squirmersモデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

7.1.2

マイクロスイマーについての基礎方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . .

71

入力UDF について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

7.2.1

流体の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

7.2.2

オブジェクト（粒子）の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

7.2.3

オブジェクト(平面壁)の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

計算事例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

7.3.1

周期境界条件下のマイクロスイマーの運動 . . . . . . . . . . . . . . . . . . . . . . . . . .

74

7.3.2

2枚の平板間に拘束されたマイクロスイマーの運動 . . . . . . . . . . . . . . . . . . . . . .

74

クインケローラーのシミュレーション

76

理論的背景と基礎方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

76

8.1.1

クインケローラーとは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

76

8.1.2

クインケローラーの基礎方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

入力UDF について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

8.2.1

流体の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

8.2.2

オブジェクト（粒子）の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

計算事例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

79

8.3.1

単一のクインケローラーの運動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

79

8.3.2

多数のクインケローラーの運動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

79

目次
付録A

4
入力UDFの解説

81

A.1

流体の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

81

A.2

オブジェクトの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

A.3

共通のシミュレーション設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

91

A.4

選択できる機能の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

92

A.5

データ出力設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

95

A.6

UDF出力データクラスの定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

96

A.7

リスタートの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

97

A.8

GOURMETでの表示設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

98

付録B

粒子計算

100

付録C

スペクトル法による流体計算

101

付録D

有限差分法(FDM)による流体計算

103

D.1

D.2

Navier–Stokes方程式の解法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
D.1.1

MAC陽解法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

D.1.2

MAC陰解法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

D.1.3

Lees–Edwards境界条件でのせん断流下でのNavier–Stokes方程式 . . . . . . . . . . . . . . 104

Cahn–Hilliard方程式の解法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
D.2.1

陽解法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

D.2.2

陰解法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

D.2.3

Lees–Edwards境界条件でのせん断流下でのCahn–Hilliard方程式 . . . . . . . . . . . . . . 105

付録E

Lisライブラリとの連携

106

付録F

KAPSELのコンパイル

107

F.1

KAPSELの動作環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

F.2

OCTAのインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

F.3

libplatformのビルド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

F.4

FFTWのインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

F.5

HDF5のインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

F.6

LISのインストール (任意) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

F.7

KAPSEL実行ファイルのビルド. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

5

第1章

はじめに
KAPSELとは

1.1

KAPSEL*1 とは，粒子分散系 (流体中を粒子が自由に動き回る系) のシミュレーションに特化したソフトウェア
である．流体中に分散した粒子の運動をシミュレーションする場合，粒子間に働く間の直接的な相互作用のみ
ならず，流体の運動を介して分散粒子間に働く「流体力学相互作用」と呼ばれる間接的な相互作用が重要となる．したがって，流体に分散した固体粒子の複雑な動きを再現するためには，粒子間に存在する流体の運動を考慮する必要が生じる．これを実現するための代表的な手法が，粒子のサイズより小さいスケールの流体運動
をNavier–Stokes方程式に基づいて正確に捉えながら，各時刻において得られた流体の局所応力から分散粒子間に働く相互作用を求める「直接数値計算 (Direct Numerical Simulation: DNS)」と呼ばれる方法である． DNSは一般に計算負荷が大きいので，Navier–Stokes方程式の数値計算を回避する方法の開発も行われている．例えば，運動量保存則を満たす粒子系で流体をモデル化するDissipative Particle Dynamics (DPD) やMulti-Particle Collision

Dynamics (MPC) ，流体運動を陽に解かずに粒子間に働く流体力学相互作用を定式化するBrownian Dynamics(BD) やStokesian Dynamics (SD) などの方法が提案されている．これらの簡便な方法とは異なり，流体運動を基
礎方程式に基づいて正確に解くことがDNSのもっとも大きな特長であり，それによって単純なNewton流体だけではなく複雑流体への拡張も可能となる．

DNSでは，粒子を点ではなく有限体積をもつ物体として表現し，固液境界面を通して両者の間で正しい運動量交換を実現する．流体中を自由に動く任意形状の固体と，その周りの流体との連成問題を数値計算で取り扱うための最も標準的な方法は，有限要素法 (FEM) と呼ばれる固体形状に沿った境界適合格子 (不規則格子) を時々刻々再生成する方法である．しかし，多数の固体粒子を含む分散系の場合，FEMでは計算ステップ毎に膨大な数の格子点を再構成する必要が生じ，計算コストが莫大になる．この問題を回避しつつ多粒子分散系のDNSを実現する方法として，我々は分散粒子と流体の間のシャープな境界面を有限の厚みを持ったプロファイル関数で置き換え
るSmoothed Profile (SP) 法を独自に開発し，計算精度と計算効率の両立に成功した． KAPSEL (Kyoto Advanced

Particle Simulator for ELectrohydrodynamics)とは，SP法を実装して粒子分散系のDNSを行うために我々自身が開発したシミュレーターの呼称である．本マニュアルでは，KAPSELの基本原理やインストール方法に関する解説に加え，具体的なサンプル用いた計算事例を紹介する. SP法の詳細やその背景については総説[1]をご覧いただきたい．
*1 京都大学大学院工学研究科化学工学専攻のソフトマター工学研究室で開発されたソフトウェアの名称である． version4まではフリーウ

ェアとしてソースコードを公開し，License Agreementの下で自由な仕様を許可してきたが，version5以降は商用ソフトウェアとして有償で実行ファイルのみを提供する．ソースコードの閲覧・改変は別途秘密保持契約(NDA)を締結し行うものとする．現在までのすべてのversionについて，KAPSEL本体の開発責任者は山本量一教授，著作権保有者は京都大学と山本量一教授である．

第1章 はじめに

1.2

6

KAPSELの機能概要

KAPSELの各種機能は，後述する入力UDF (input.udf) ファイルを編集することによって制御できる．以下に機能の概要を説明する．

1.2.1

Newton 流体に分散した粒子のシミュレーション

constitutive eqとしてNavier Stokesを選んで，Newton 流体中に分散した粒子のシミュレーションを行う
ことができる．この機能により，重力沈降する任意形状粒子の運動の予測や，ブラウン運動による分散粒子の熱拡散や凝集挙動の評価が可能となる．詳しくは第3章で解説する. constitutive eqとしてNavier Stokes FDMを選んだ場合も同様であるが，この場合は流体ソルバーとして有限差分法(FDM)が使用される．

1.2.2 せん断流下の粒子分散系のシミュレーション
constitutive eqとしてShear Navier Stokes Lees Edwardsを選んで，せん断流下のニュートン流体中に分散した粒子のシミュレーションを行うことができる．この機能により，せん断流下における任意形状粒子の運動の予測や，粒子分散系のレオロジー特性の評価が可能となる．詳しくは第4章で解説する. constitutive eqとしてShear Navier Stokes Lees Edwards FDMを選んだ場合も同様であるが，この場合は流体ソルバーとして有限差分法(FDM)が使用される．

1.2.3 電解質溶液に分散した荷電コロイド粒子のシミュレーション
constitutive eqとしてElectrolyteを選んで，電解質溶液に分散した荷電コロイド粒子のシミュレーションを行うことができる．この機能により，荷電コロイド系の安定構造の予測や，定常(DC)電場/振動(AC)電場下における荷電コロイド粒子の電気泳動特性の評価が可能となる．詳しくは第5章で解説する.

1.2.4 二成分相分離流体に分散した粒子のシミュレーション
constitutive eqとしてNavier Stokes Cahn Hilliard FDMを選んで，二成分相分離流体中に分散した粒子のシミュレーションを行うことができる．この機能により，流体の各成分や界面と粒子との親和性を変化させた場
合の粒子分布や，流体の相分離構造の予測が可能となる．また，constitutive eqとしてShear NS LE CH FDMを選んで，せん断流下の二成分相分離流体中に分散した粒子のシミュレーションを行うことができる．この機能により，せん断流下における相分離構造の予測や，二成分相分離流体中に粒子が分散した系のレオロジー特性の評価が可能となる．詳しくは第6章で解説する.

1.2.5 マイクロスイマーのシミュレーション
constitutive eqとしてNavier Stokesを選んで，ニュートン流体中に分散したマイクロスイマー粒子のシ
ミュレーションを行うことができる．この機能により，多数のマイクロスイマー粒子が干渉して生じる集団運動の予測などが可能となる．詳しくは第7章で解説する. constitutive eqとしてNavier Stokes FDMを選んだ
場合も同様であるが，この場合は流体ソルバーとして有限差分法(FDM)が使用される． constitutive eqとしてNavier Stokes Cahn Hilliard FDMを選ぶと，二成分相分離流体中に分散したマイクロスイマー粒子のシミュ
レーションを行うことができる．

第1章 はじめに

7

1.2.6 クインケローラーのシミュレーション
constitutive eqとしてNavier Stokesを選んで， Newton流体中の平板上を転がって自己推進するクインケ
ローラーのシミュレーションを行うことができる．この機能により，多数のクインケローラーが干渉して生じる集団運動の予測などが可能となる．詳しくは第8章で解説する. constitutive eqとしてNavier Stokes FDMを選んだ場合も同様であるが，この場合は流体ソルバーとして有限差分法(FDM)が使用される．

1.3

本書の構成

KAPSELの実行に必要なソフトウェアやライブラリのインストール・ビルド方法を第2章で詳しく説明する．
第3章以降の各章では，その章で取扱う具体的な問題を計算するための「理論的背景と基礎方程式」について詳し
く述べた後，シミュレーションに必要なパラメータの設定を行う「入力UDF」について必要な情報に絞って説明し，最後に具体的な「計算事例」を紹介する．入力UDFファイルに関する網羅的な解説は付録Aで行う．

8

第2章

KAPSELのインストールと実行
2.1

KAPSELのインストール手順および実行方法

2.1.1

KAPSELの動作環境

KAPSELの動作環境について，Windows，Linux，Macにおける注意点を以下に示す．
Linuxの場合Linux上でKAPSELを利用する場合，2.1.2節へと移動．
Windowsの場合
KAPSEL をWindowsシステムで使用するには，Windows Subsystem for Linux（WSL）*1 をインストールする必要がある． PowerShell または Windows コマンドプロンプトを右クリックして管理者モードで開く．以下のコマ
ンドを実行した後にPCを再起動したら2.1.2節へと移動．

$ wsl --install
Macの場合MacOS上でKAPSELを利用する場合，Xcodeとcommand line tools のインストールが必須である．インストール
後に2.1.2節へと移動．

2.1.2

OCTAのインストール

KAPSELは, ソフトマテリアルに対する統合的なシミュレータとして開発されたOCTA内部にあるGourmetとよ
ばれるユーザインターフェースと連携し入力パラメータの管理や出力データの可視化をおこなっている. そこで,

KAPSELを使用するためにはOCTAがインストールされていることが前提となっている.
インストールの手順として，まずOCTAホームページ http://octa.jp/ にアクセスし，適当なインストー
ラをダウンロードする． その後，インストーラを実行し， OCTAをインストールする*2． 以降， OCTA8.# が/usr/local/OCTA8# (Linux/Mac) または C:\OCTA8.# (Windows) にインストールされているとして手順を説明す
る*3．

2.1.3

KAPSELのインストール

最新バージョンのKAPSELパッケージ kapsel#.#.zip*4 をダウンロードし，圧縮ファイルを解凍する．
*1 https://learn.microsoft.com/ja-jp/windows/wsl*2 OCTA/GOURMETに関する質問は，OCTA–BBSのメンバーになることで可能である．
*3 インストールしたOCTAのバージョンに応じて， ”#” に適当な数字を入力する．
*4 バージョンに応じて ”#” に適当な数字を入力する

第2章 KAPSELのインストールと実行

9$ unzip kapsel#.#.zip$ cd kapsel#.#
解凍後のディレクトリ構成は以下の通りである．

./bin/ 各種プラットフォーム用のKAPSELの実行ファイルがある．
./Documents/ ユーザーマニュアル（本書）がある．
./Examples/ KAPSELの各種機能を用いた例題がある．
./UDF/ KAPSEL最新版のすべての機能を使用するための define.udf/input.udf がある．

./bin/ ディレクトリにある各種実行ファイルのうち，実行環境に適切なものをKAPSELのインストールディレク
トリにシンボリックリンクする．

Linuxの場合$ ln -s ./bin/linux/* .
Windowsの場合 Ubuntuのコンソールウインド（Windowsのコマンドラインではない！）にて以下のコマンドを実行する．

$ ln -s ./bin/linux/* .
Macの場合(Intel or Arm CPU)$ ln -s ./bin/macOS/* .

2.1.4

Validating your KAPSEL license

商用のKAPSELバイナリを実行するには有効なライセンスが必要である．ライセンスには、ノードロックライ
センスとクラスターライセンスの2種類があり，どちらも offline / online環境をサポートしている．ノードロック
ライセンスはマシンごとに発行され，アクティベートするためにはマシン固有のMachine Fingerprintが必要である．クラスタライセンスでは，実行を許可するUser Groupsのリストとともに，クラスター固有のEnviron

Fingerprintが必要である．これらの識別子は，ライセンスが未設定の状態でkeyコマンドを実行すると以下のように表示される．

,→,→$ ./key[INFO] System name : ...
[INFO] Machine: ...
[INFO] Node name: ...
[INFO] Release: ...
[INFO] Version: ...
[INFO] Network interface (en0) : ...
[INFO] Network interface (en1) : ...
...
[INFO] Host domain : ...
[INFO] Machine UUID: ...
# [Machine Fingerprint]
8bzm9b3xae00898539e754a3adba83bb11cdcea441d06401f5f3df350fcc7705# [Environ Fingerprint]
22cca0e1fc66357d0aa8d238e7gg675a6d7ebcf323fdbbcef7e09c46c6259f17# [User Groups] user_group_1 user_group_2 ...
[ERROR] Environment variable KAPSEL_PUBLIC_KEY is missing

ノードロックライセンスの場合，KAPSELを実行するすべてのマシンについてMACHINE FINGERPRINTをライセン
ス供与者に提出し，ライセンスキー（文字列）とマシン固有のライセンスファイルを取得する必要がある．クラ第2章 KAPSELのインストールと実行

10

スターライセンスの場合(Linixのみ)， ENVIRON FINGERPRINTとクラスターでの実行を許可するユーザーグルー
プ (e.g., user group 1, user group 2)のリストをライセンス供与者に提出し，ライセンスキー（文字列）とクラス
ター固有のライセンスファイルを取得する必要がある．必要なENVIRON FINGERPRINTを知るためには，ログイン
ノード上ではなく，必ず計算ノード上でkeyコマンドを実行すること（KAPSELの実行と同じように，計算ノードにジョブを投入してkeyコマンドを実行しなければいけない）．どちらの場合でも，KAPSEL は起動後最初に有効
なonlineライセンスを探し，見つからなければライセンスファイルの中で有効なofflineライセンスを探す．必ずライセンスキー（環境変数に設定する文字列）とライセンスファイルの両方が必要であることに注意する．ライセン
スキーは，KAPSEL を実行する際に使用する個人のパスワードのようなもであり，他人と共有すべきではない．

KAPSEL 起動時にライセンス認証を行うには，環境変数を適切に設定する必要がある．この設定は，./binディレクトリにある setvars.shファイルを環境に合わせて編集した後にソースすることで行う．

$ source ./bin/setvars.sh
上記操作で KAPSEL ACCOUNT ID， KAPSEL PUBLIC KEY， KAPSEL LICENSE KEY， KAPSEL LICENSE PATHが設定される． 実行前に setvars.shファイルを編集し，特定のマシンIDに対して発行されたライセンスキーを

KAPSEL LICENSE KEYに設定し，ライセンスファイルのパスをKAPSEL LICENSE PATHで指定する必要がある．ライセンスキーのフォーマットは key/your kapsel license keyとなっている．ライセンスファイルは，以下のような暗号化された文字列を含むテキストファイルとして提供される．

-----BEGIN MACHINE FILE----eyJlbmMiOiJsSTc4N0QwcGZua1RvRDVOSjFpRXlaU093Q09QQ0NOdktKZHpC...
TlJWWGp6Ym5DRkF6V3lOU3NUeG9xZm9MV2FlWlhITEZnR21Ub2VBdz09Iiwi
YWxnIjoiYWVzLTI1Ni1nY20rZWQyNTUxOSJ9-----END MACHINE FILE----KAPSEL ACCOUNT IDと KAPSEL PUBLIC KEY，およびライセンスファイルは勝手に変更するとライセンス認証ができなくなるので絶対に変更しないこと．
スクリプトで設定する代わりに，以下のようにコマンドラインで直接設定することもできる．

,→$ export KAPSEL_ACCOUNT_ID="85e8531e-915a-4795-a287-2bec0d90ae5e"$ export
KAPSEL_PUBLIC_KEY="5fae6bb532c12ef70e1ce5f69b33ecd4fea8a522658b1204a6203ee5f101f608"$ export KAPSEL_LICENSE_KEY="key/your_kapsel_licence_key"$ export KAPSEL_LICENSE_PATH="./license.lic"

環境変数が適切に設定され，有効なライセンスが存在すれば，KAPSEL を起動できる．ライセンスとマシンの認証に成功すると，以下のメッセージが表示される．

$ ./key# [KAPSEL LICENSE VERIFICATION]# [Machine UUID] 02687FF3-FD77-51E9-9757-47A4E2AB0521# [Machine Fingerprint],→
8f85c6968218b225df7794d95c515f00f4c4eaa49d5b2ae5c6b98da850fa1505...
# [OK] Signature is valid!
# [OK] License key is valid! (code = "VALID")# [License ID] f8cc491f-a19f-424b-99a6-a0c9f093d69f#
OK!
# [KAPSEL LICENSE VERIFICATION]

第2章 KAPSELのインストールと実行

2.1.5

11

KAPSELのテスト

KAPSELを実行し，以下に示すような出力がコマンドライン上に表示された場合，KAPSELは正しくインスト
ールされている．

$ cd UDF$ ../kapsel -Iinput.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf## OMP RUNTIME :# Number of processors: 0# Number of threads: 8# Max OMP threads: 8# Dynamic thread enabled?
: 0# Nested parallelism enabled? : 1##using input.udf as input#using output.udf as output#using define.udf as definition#using restart.udf as restart# [KAPSEL LICENSE VERIFICATION]# [Machine Fingerprint]
8f85c6968218b225df7794d95c515f00f4c4eaa49d5b2ae5c6b98da850fa1505# [OK] Signature is valid!
# [OK] License key is valid! (code = "VALID")# [License ID] f8cc491f-a19f-424b-99a6-a0c9f093d69f
#
...

,→

#output.udf end.
#restart.udf end.
#Simulation has ended!
#Total Running Time (s):
#
(m):
#
(h):
#Average Step Time (s):
#
(m):
#
(h):

24.77
0.41
0.01
0.02
0.00
0.00

上記のサンプルで利用したinput.udf は， 5個の重い粒子と5個の軽い粒子がNewton流体中を沈降する現象を，

32 × 64 × 32 のCFD*5 計算格子上で解くための入力ファイルである． 1分以内に完了するシミュレーションであり，
正しく実行されていればoutput.udfが作成されているはずである．
マルチコア実行ファイルを使用する場合，KAPSELの実行前に以下の環境変数を設定することでコア数（下の例では8）を指定することができる．

$ export OMP_NUM_THREADS=8

2.1.6 シミュレーションデータの可視化方法
GOURMETでPythonスクリプトを用いることで，さまざまなシミュレーションデータを可視化することができる．以下に，簡単な例を示す．
•

GROUMETを起動する– Windowsの場合: (OCTA install dir)\GOURMET\gourmet– Linuxの場合 : /usr/local/OCTA8#/GOURMET/gourmet*5 Computational Fluid Dynamics

第2章 KAPSELのインストールと実行

12– Macの場合 : /usr/local/OCTA8#/GOURMET/gourmet•

output.udfを開く
File -> Open -> output.udf を開く [1]
各時間ステップにおける全粒子の位置および速度は，変数Particle[]内に格納されている． GROUMETビューアウィンドウの1番下にあるスライドバーを操作することで，異なる時刻における変数を読み取ること
ができる．

•

GROUMET上でアニメーションを作成する

1. GROUMETビューアウィンドウ下部のPythonパネル内のLoadボタンをクリックする． [2]2. particleshow.pyファイルを開き，Runボタンをクリックする． [3]
3. 新しいウィンドウが開かれ．そのウィンドウ上の再生ボタンをクリックする． [4]•

GROUMET上でデータをプロットする (gnuplot)

1. GROUMETビューアウィンドウ下部のPythonパネル内のLoadボタンをクリックする． [2]2. plot.pyファイルを開き，Runボタンをクリックする． [3]
3. ウィンドウ上部のViewボックスからTableをクリックする． [4]4. ウィンドウ左部のGraph Sheet[]を選択する． [5]
5. ウィンドウ下部のPlotパネルを選択し，以下のコマンドをコマンドボックスに入力する． [6,7]

第2章 KAPSELのインストールと実行

13

6. Plotボタンをクリックすると，粒子 (粒子番号1) のVxについて時間発展を図示できる． [8]plot 'plot.dat' using 2:7 with lines

2.1.7 シミュレーションデータの解析方法
シミュレーションを実行したときの計算データ (各時刻における粒子座標および速度) は output.udf に保存される． output.udf 内のデータには，以下に示すいずれかの方法でアクセスすることができる．

第2章 KAPSELのインストールと実行•

14

Pythonコードで解析する場合

Pythonコードを用いる場合，UDFファイルのデータにアクセスするためのUDFManager.py*6 をインポートできる．添付されている sk.py は， output.udf 内に保存されている粒子位置の時系列情報から，静的構
造因子 S (k) を計算するPythonスクリプトである
本スクリプトを利用するには numpy パッケージの用意する必要がある．目的に応じて，本スクリプトの内容を編集しシミュレーションデータを解析することが可能である．
本スクリプト sk.py を利用するには，まずGROUMETを起動し，– Windowsの場合: Start Menu > All Programs > OCTA > StartGourmetTerm– Linux/Macの場合: /usr/local/OCTA8#/GOURMET/gourmetterm を実行
以下のコマンドを実行する．

python sk.py
gnuplot>> plot 'sk.dat' w line•

Jupyter Notebook で解析する場合
以下のように，Jupyter Notebook*7 を利用して，上記と同様の解析を行うことができる．

$ . $PF_FILES/bin/gourmet_profile.sh$ . $PF_FILES/bin/platform_env.sh$ jupyter notebook sk.ipynb•

FortranまたはCで解析する場合

FortranまたはCを用いる場合，UDFファイルのデータにアクセスするための libplatform*8 ライブラリを利用できる．

KAPSELでは，いくつかの重要なデータ (各時刻における圧力等) が stderr に返される．通常の場合，それら
データはコマンドライン上で表示されるが，以下のようにして stderr をファイルにリダイレクトすることが可能である．
*6 詳細については「OCTA ソフトマテリアルのための統合化シミュレータ

GOURMET PYTHON スクリプトリファレンスマニュアル」

を参照．
*7 Anaconda等で配布されている*8 詳細については「OCTA ソフトマテリアルのための統合化シミュレータ プラットフォームインターフェースライブラリ libplatform リ

ファレンスマニュアル」を参照．

第2章 KAPSELのインストールと実行•

cshまたはtcshの場合$ ../kapsel•-Iinput.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf >& out

sh，bash，Windowsコマンドプロンプトの場合$ ../kapsel

2.2

15

-Iinput.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf 2> out

入力UDFと定義UDFについて

入力UDF （input.udf）を用いて目的のシミュレーションを行うための設定を行う． input.udfの構造は定義UDF（define.udf）によって定義されており，異なるバージョンのinput.udfとdefine.udfを混在させることはできない． input.udfは次節以降の各設定項目で構成されている．より詳細な説明は付録Aを参照頂きたい.

2.2.1 流体の設定
constitutive eqの設定ごとに内容が異なるので，それぞれ3章以降の「入力UDFについて」の節で説明する．

2.2.2 オブジェクト(粒子)の設定
object type.typeでは，spherical particle(球状粒子)，chain(フレキシブル鎖)，rigid(剛体)を選択できる．
粒子間の相互作用としてレナードジョーンズポテンシャルを導入できる．このポテンシャルは， h 2n  n i+ϵ
4ϵ σr − σr
U LJ (r) = 0(r < rcut ),(r ≥ rcut )(2.1)

であり，σ = d = 2a, ϵ, rは，それぞれ粒子直径，相互作用の強度，i番目と j番目の粒子間の距離をあらわしている．

n = 6, 12, 18のいずれかを選択することができ，nが大きいほうが鋭いポテンシャルになる．排除体積による斥力
相互作用のみの導入は， swithch.LJ truncate をONにすることで可能であり，その場合はポテンシャルの打ち切り
距離がrcut = 21/n σに設定される．もし粒子間に引力相互作用を導入したい場合は，swithch.LJ truncate をOFFにすることでポテンシャルの打ち切り距離がrcut = 2.5σとなり，通常のレナードジョーンズポテンシャルの計算が可能となる．

LJポテンシャルのべき指数の設定においてDLVOを選択すると，原子スケールに比べて大きくそれぞれ価数zi とz j を持つi番目と j番目の球状粒子間に働く相互作用ポテンシャルとして，以下のDLVOポテンシャルを選択できる[2]．


VCoul (r) + VvdW (r)VDLVO (r) = VCoul (r) + Vexcv (r)(r ≥ r∗ )(r < r∗ )(2.2)

1
exp(−κr)
r

(2.3)

"
!#
A
d2
d2
r2 − d2
VvdW (r) = −++ 2 ln
12 r2 − d2 r2
r2

(2.4)

ここで

e2
exp(κa)
VCoul (r) =zi z j4πεr ε0κa + 1!2は荷電粒子間に働く遮蔽クーロンポテンシャルである．

は原子スケールに比べて大きい球状粒子間に働くvan der Waalsポテンシャル，

Vexcv (r) =K(r − d)2 − Vm
2

(2.5)

第2章 KAPSELのインストールと実行

16は粒子の重なりを避けるための排除体積ポテンシャルであるが， r = r∗ (> d ≡ 2a)において両者を切り替えて使用する．その際に両者の接続をなめらかに行う必要があるため，3つの係数A， K ，Vm のうちAを決めると，残りの2つは以下の2式で自動的に与えられる．

!
1
A r∗ d21r∗2 − d2++
6 r∗ − d (r∗2 − d2 )2 r∗4
r∗6
"
!#
K
d2
A
d2
r∗2 − d2
Vm = (r∗ − d)2 +
+
+
2
ln
2
12 r∗2 − d2 r∗2
r∗2
K=

(2.6)
(2.7)

2

各ポテンシャルの概形を図2.1に示す． zi ，r∗ ，κa，C ≡ 4πεe r ε0 ， Aの値については， input.udf内に定義された以下の変数を通じて与える．
•

object type.spherical particle.Particle spec[i].Surface charge = zi•

DLVO.n = r∗ /d•DLVO.kappa a = κa•

DLVO.vdw coeff = A•

DLVO.coulomb coeff = C

図2.1: DLVOポテンシャルを構成する各ポテンシャル項の概形． 緑線は遮蔽クーロンポテンシャルVCoul (r)，赤線はvan der

Waals(Hamarker)ポテンシャルVvdW (r)，青線は排除体積ポテンシャルVexcv (r)を表す．この図ではd = 1， r∗ = 1.02d，2
2= 50000， A = 1を用いた．
κa = 5， 4πεe r ε0 zi z j exp(κa)κa+1

LJポテンシャルのべき指数の設定においてelectro osmotic flowを選択すると，平板近傍の荷電粒子で重要となる電気浸透流による相互作用ポテンシャルを考慮できる．これは第 8章のクインケローラーでのみ使用する．
フレキシブル鎖と剛体は，複数の球状1次粒子の集合体として実現されている．したがってそれぞれの初期配置
は，switch.INIT distribution=user specifyを選択し，input.udf内で与える必要がある．フレキシブル鎖を選択した場合は，鎖内の隣接ビーズ間はFENE (finitely extensible non-linear elastic)ポテンシャル

1
U F (r) = − kc R20 ln{1 − (r/R0 )2 },
2

(2.8)

で結合される．ここでkc = 30ϵ/σ2 , R0 = 1.5σ, r は隣接ビーズ間の距離をあらわしている．剛体を選択した場合は，拘束力により初期の粒子構造が保持される．

⃝ object type.spherical particle.Particle spec[]以下には球状粒子のタイプの情報を入れる．
•

object type.spherical particle.Particle spec[].Particle number. . . 粒子数．

第2章 KAPSELのインストールと実行

17•

object type.spherical particle.Particle spec[].MASS RATIO. . . 粒子の流体に対する密度比．

•

object type.spherical particle.Particle spec[].Surface charge. . . 総表面電荷:z (二成分相分離流体シミュレーシ
ョンでは非対応)．

•

object type.spherical particle.Particle spec[].janus axis. . . 粒子に固定された座標系におけるJanus軸の方向の指定．

•

object type.spherical particle.Particle spec[].janus propulsion. . . Janus粒 子 の 推 進 運 動 の 指 定． OFF(無 効)，
TUMBLER(一定の外力で推進軸方向に推進する粒子)， SQUIRMER(Slip境界条件により推進軸方向に推進するスクワマー粒子)，OBSTACLE(固定された障害物粒子)から選択する．

•

object type.spherical particle.Particle spec[].janus force.x. . . 推進力の x成分の指定．

•

object type.spherical particle.Particle spec[].janus force.y. . . 推進力のy成分の指定．

•

object type.spherical particle.Particle spec[].janus force.z. . . 推進力のz成分の指定．

•

object type.spherical particle.Particle spec[].janus torque.x. . . 推進トルクの x成分の指定．

•

object type.spherical particle.Particle spec[].janus torque.y. . . 推進トルクのy成分の指定．

•

object type.spherical particle.Particle spec[].janus torque.z. . . 推進トルクのz成分の指定．

•

object type.spherical particle.Particle spec[].janus slip vel. . . 自己推進粒子の表面滑り速度を決めるパラメー
タ B1．

•

object type.spherical particle.Particle spec[].janus slip mode. . . スクワマー粒子の泳動形態（Pusher/Neutral/Puller）
を決定するパラメータ B2 /B1 *9．

•

object type.spherical particle.Particle spec[].janus rotlet C1. . . 推進軸周りの回転（単極子）を表すパラメー
タC1．

•

object type.spherical particle.Particle spec[].janus rotlet dipole C2. . . 推進軸周りの回転（双極子）パラメー
タC2．

⃝ object type.chain.Chain spec[]ではフレキシブル鎖の情報を入れる．
•

object type.chain.Chain spec[].Beads number. . . 一本の鎖に属するビーズの数．

•

object type.chain.Chain spec[].Chain number. . . 鎖の本数．

•

object type.chain.Chain spec[].MASS RATIO. . . ビーズの流体に対する密度比．

•

object type.chain.Chain spec[].Surface charge. . . 表面電荷(二成分相分離流体シミュレーションでは非対応)．

•

object type.chain.Chain spec[].janus axis. . . ビーズに固定された座標系におけるJanus軸の方向の指定．

⃝ object type.rigid.Rigid spec[]では剛体の情報を入れる．
•

object type.rigid.Rigid spec[].Beads number. . . 剛体を構成するビーズ数．

•

object type.rigid.Rigid spec[].Rigid number. . . 剛体数．

•

object type.rigid.Rigid spec[].MASS RATIO. . . ビーズの流体に対する密度比．複数のビーズが重なった部•

object type.rigid.Rigid spec[].Surface charge. . . 表面電荷(二成分相分離流体シミュレーションでは非対応)．

•

object type.rigid.Rigid spec[].Rigid motion. . . 剛 体 の 運 動 の 種 類 を， free(自 由 運 動)とfix(並 進分の密度は二重にカウントしない．

・ 回 転 速 度 が 固 定 さ れ た 運 動） の ど ち ら か で 選 択 す る． fixで は、 速 度 は 以 下 で 定 義 さ れるRigid velocityとRigid omega変 数 に よ っ て 指 定 さ れ る 通 り と な る． デ フ ォ ル ト で は こ れ は6つの自由度がすべて指定された値(ラボフレーム)に固定されることに注意すること．並進・回転の自由度を個々に拘束するためには，後述のswitch.free rigidオプションを使用する．
*9 このパラメータが0より小さいときPusher型，0より大きいときPuller型のマイクロスイマーとなる[3, 4]．

第2章 KAPSELのインストールと実行•

object type.rigid.Rigid spec[].Rigid velocity.x. . . 剛体の速度の x成分の指定(ラボフレーム)．

•

object type.rigid.Rigid spec[].Rigid velocity.y. . . 剛体の速度のy成分の指定(ラボフレーム)．

•

object type.rigid.Rigid spec[].Rigid velocity.z. . . 剛体の速度のz成分の指定(ラボフレーム)．

•

object type.rigid.Rigid spec[].Rigid omega.x. . . 剛体の角速度の x成分の指定(ラボフレーム)．

•

object type.rigid.Rigid spec[].Rigid omega.y. . . 剛体の角速度のy成分の指定(ラボフレーム)．

•

object type.rigid.Rigid spec[].Rigid omega.z. . . 剛体の角速度のz成分の指定(ラボフレーム)．

18

2.2.3 共通のシミュレーション設定
粒子半径，界面厚さは以下に情報を入れる．
•

A XI. . . 界面の厚さξ *10．

•

A. . . 粒子半径．

gravity以下で重力に関する情報を入れる．
•

gravity.G. . . 重力加速度．

•

gravity.G direction. . . 重力を加える方向を選ぶ．

粒子間力のタイプを決める．
•

EPSILON. . . Lennard-Jonesポテンシャルのエネルギーの単位を決める．

•

LJ powers. . . 粒子間ポテンシャルを，12:6/24:12/36:18 (Lennard-Jonesポテンシャル)，DLVO (DLVOポテンシャル)，あるいは，electro osmotic flow (クインケローラーのみ使用)から選ぶ．

mesh以下でシミュレーションサイズを決める．
•

mesh.NPX. . . x方向のサイズはL x = 2NPX．

•

mesh.NPY. . . y方向のサイズはLy = 2NPY．

•

mesh.NPZ. . . z方向のサイズはLz = 2NPZ．

time increment以下で時間刻みを決める．
•

2
time increment. . . autoを選べば時間刻みの上限であるT step = ρ/ηkmax
を時間刻みとする．ここでkmax は格子幅∆で決まる最大波数である． manualを選べば手動で値を設定できる．
•

time increment.auto.factor. . . 入力する値factorを使って時間刻みは∆t = T step × factorと決まる．

•

time increment.manual.delta t. . . 手動で∆tの値を設定する．

2.2.4 選択できる機能の設定
switch以下でシミュレーションの各種条件を決める．
•

switch.ROTATION. . . 粒子の回転運動の運動方程式を解く場合はONを選ぶ．

•

swithch.LJ truncate. . . 粒子間に働くLennard-Jonesポテンシャルによる力について，引力項を含む通常の形OFF，引力項を含まない斥力のみON，まったく力を加えないNONEから選ぶ．

•

switch.INIT distribution. . . 粒子の初期配置を， uniform random(ランダム)， random walk(正方格子上か*10 電解質溶液や二成分相分離流体のシミュレーションの場合， GL自由エネルギー F でϕの勾配を計算する必要があるため，少なくともξ ≥ 2を選ぶことが望ましい．

第2章 KAPSELのインストールと実行

19

らランダムにずれている)， FCC(FCC格子上)，BCC(BCC格子上)，user specify(座標と速度はユーザによって指定される)から選ぶ *11．
•

switch.INIT distribution.random walk.iteration. . . 粒子の初期配置をrandom walkに設定したときの試行回数を設定する．

•switch.INIT orientation. . . 粒子の初期配向を， user specify(座標と速度はユーザによって指定される)，
random(ランダム)，space align(1方向に配向)から選ぶ *12．

•

switch.SLIP tol. . . 自己推進粒子界面における接戦方向のslip速度を導入する際の，流体流れ場の反復計算の収束判定基準．

•switch.SLIP iter. . . 自己推進粒子界面における接戦方向のslip速度を導入する際の，流体流れ場の反復計算の最大反復回数．

•

switch.FIX CELL.x. . . x方向の全速度の直流成分を0とする場合ONにする．

•

switch.FIX CELL.y. . . y方向の全速度の直流成分を0とする場合ONにする．

•

switch.FIX CELL.z. . . z方向の全速度の直流成分を0とする場合ONにする．

•

switch.pin.type. . . 粒子を固定する場合YESにする．

•

switch.pin.YES.pin[]. . . 並進運動させない粒子番号の指定．

•

switch.pin.YES.pin rot[]. . . 回転運動させない粒子番号の指定．

•

switch.free rigid.type. . . 剛体の並進・回転の自由度を個別に設定する．このオプションは，6つの自由度のすべてを指定された並進/回転速度に固定する object type.rigid.Rigid spec[].Rigid motion オプシ
ョンと同時に使用することを意図している． 6つの自由度を剛体粒子ごとに独立に設定するには，このオプションを YES に設定し，後述の vel.x|y|z と omega.x|y|z を使用して該当する自由度を選択的に解放(YES )，または固定 ( NO )する．各速度成分の固定値は，object type.rigid.Rigid spec[] オプションのRigid velocityとRigid omega 変数で指定された値である．例えば，vel.y と omega.z を固定した剛体
粒子を指定する場合は，以下のように free rigid オプションを指定すればよい．つまりここではどの自由度を自由に設定するかを示せばよい．

vel.x=YES, vel.y=NO, vel.z=YES, omega.x=YES, omega.y=YES, omega.z=NO•

switch.free rigid.YES.DOF[].spec id. . . 設定する剛体番号の指定．

•

switch.free rigid.YES.DOF[].vel.x. . . 剛体のx方向の並進運動の自由度の設定． YESなら自由度を持つが，NOなら固定される．

•

switch.free rigid.YES.DOF[].vel.y. . . 剛体のy方向の並進運動の自由度の設定． YESなら自由度を持つが，NOなら固定される．

•

switch.free rigid.YES.DOF[].vel.z. . . 剛体のz方向の並進運動の自由度の設定． YESなら自由度を持つが，NOなら固定される．

•

switch.free rigid.YES.DOF[].omega.x. . . 剛体のx方向の回転運動の自由度の設定． YESなら自由度を持つが，NOなら固定される．

•

switch.free rigid.YES.DOF[].omega.y. . . 剛体のy方向の回転運動の自由度の設定． YESなら自由度を持つが，•switch.free rigid.YES.DOF[].omega.z. . . 剛体のz方向の回転運動の自由度の設定． YESなら自由度を持つが，NOなら固定される．
NOなら固定される．
•

ns solver.OBL INT. . . せん断流下のシミュレーションにおける座標系変換時の近似関数をlinear(線形近似)とspline(スプライン近似)から選ぶ．

*11 user specifyを選んだ場合，初期の粒子位置と速度をそれぞれuser specify.Particles[].Rとuser specify.Particles[].vに設定する．入力するリストの数がParticle numberで指定した数より小さければ， GOURMET上でEdit->Add an array Elementとしてuser specify.Particles[]を増やすか直接UDFファイルを編集する．
*12 user specifyを選んだ場合，粒子の初期配向をuser specify.Particles[].qに設定する．

第2章 KAPSELのインストールと実行

20•

switch.wall.type. . . FLATを選ぶと，平面壁を設定できる．

•

switch.wall.FLAT.axis. . . 平面壁の法線方向をX，Y，Zで指定する．

•

switch.wall.FLAT.DH. . . 平面壁の厚みを格子点の数で指定する．

•

switch.wall.FLAT.LJ Params. . . 平面壁に働くポテンシャルの設定． AUTOを選ぶと粒子間ポテンシャルと同じポテンシャルが設定される． MANUALを選ぶと，switch.wall.FLAT.MANUALで個別に設定できる．

•

switch.wall.FLAT.MANUAL.truncate. . . 平面壁での引力の有無を設定する．ONにすると斥力のみが働くポテ
ンシャルとなり，OFFにすると引力も働くポテンシャルとなる．

•

switch.wall.FLAT.MANUAL.powers. . . Lennard-Jonesポテンシャルのべき指数を12:6/24:12/36:18から選
ぶ．

•

switch.wall.FLAT.MANUAL.EPSILON. . . 平面壁のLennard-Jonesポテンシャルの強さを決める．

•

switch.quincke.type. . . クインケローラーのシミュレーションをする場合，ONに設定する．

•

switch.quincke.ON.e dir. . . 外部電場を印加する方向をX，Y，Zで指定する．

•

switch.quincke.ON.w dir. . . クインケ効果による回転の角速度ベクトルの方向をX，Y，Zで指定する．

•

switch.quincke.ON.torque amp. . . 回転トルクの大きさ．

•

switch.multipole.type. . . Ewald法によるシミュレーションをする場合，ONに設定する．

•

switch.multipole.ON.Dipole. . . クインケ粒子の双極子を扱う場合，ONに設定する．

•

switch.multipole.ON.Dipole.ON.magnitude. . . 双極子モーメントの大きさ．

•

switch.multipole.ON.Dipole.ON.type. . . 双極子の種類を，FIXED(固定)とQUINCKE(クインケ回転)から選ぶ．

•

switch.multipole.ON.Dipole.ON.FIXED.dir. . . 双極子を固定する場合，その方向をX，Y，Zで指定する．

•

switch.multipole.ON.EwaldParams.alpha. . . Ewald法における遮蔽パラメータ．

•

switch.multipole.ON.EwaldParams.delta. . . Ewald法におけるkmax を決定するための収束判定基準．

•

switch.multipole.ON.EwaldParams.converge. . . Ewald法における収束パラメータ．

•

switch.multipole.ON.EwaldParams.epsilon. . . Ewald法における境界での誘電率．

2.2.5 データ出力設定
output以下にデータ出力の情報を設定する.
•

output.GTS. . . データ出力のインターバルのステップ数．

•

output.Num snap. . . データ出力の回数，つまり全ステップ数はGTS × Num snapで決まる．

•

output.AVS. . . AVS形式のデータを出力する場合はONを選ぶ．https://ja.overleaf.com/project/5fe7389e29fad9c51e06569e•

output.AVS.ON.Out dir. . . AVS形式のデータを出力するディレクトリを指定する *13．

•

output.AVS.ON.Out name. . . AVS形式の出力データのファイル名の接頭語を指定する．

•

output.AVS.ON.FileType. . . AVSデータファイルのフォーマットをBinary，ASCII，EXTENDEDから選ぶ．

•

output.ON.EXTENDED.Driver.Format. . . AVS拡張データフォーマットを選ぶ． 現行のプログラムでは，
HDF5のみ選択できる．

•

output.ON.EXTENDED.Print field.Crop. . . YESを選ぶと，フィールドデータを間引いて出力する．

•

output.ON.EXTENDED.Print field.YES.Slab x.start. . . x方向において，出力する最初の格子点番号を指定す
る．

•

output.ON.EXTENDED.Print field.YES.Slab x.count. . . x方向において，出力する格子点数を指定する．

•

output.ON.EXTENDED.Print field.YES.Slab x.stride. . . x方向において，出力する格子点間隔を指定する．

*13 たとえばdataと指定するなら，事前に./dataおよび./data/avs/のディレクトリを作成しておく必要がある． AVSのfieldファイル

は./data/にdata.fldというファイル名で出力される．データファイルは./data/avs/にdata *.datというファイル名で出力される． *にはステップ数が入る．

第2章 KAPSELのインストールと実行•

21

output.ON.EXTENDED.Print field.YES.Slab y.start. . . y方向において，出力する最初の格子点番号を指定す
る．

•

output.ON.EXTENDED.Print field.YES.Slab y.count. . . y方向において，出力する格子点数を指定する．

•

output.ON.EXTENDED.Print field.YES.Slab y.stride. . . y方向において，出力する格子点間隔を指定する．

•

output.ON.EXTENDED.Print field.YES.Slab z.start. . . z方向において，出力する最初の格子点番号を指定す
る．

•

output.ON.EXTENDED.Print field.YES.Slab z.count. . . z方向において，出力する格子点数を指定する．

•

output.ON.EXTENDED.Print field.YES.Slab z.stride. . . z方向において，出力する格子点間隔を指定する．

•

output.ON.EXTENDED.Print field.Vel. . . YESを選ぶと，速度場を出力する．

•

output.ON.EXTENDED.Print field.Phi. . . YESを選ぶと，SP関数ϕを出力する．

•

output.ON.EXTENDED.Print field.Charge. . . YESを選ぶと，電荷密度分布を出力する(二成分相分離流体のシミュレーションでは非対応)．

•

output.ON.EXTENDED.Print field.Pressure. . . YESを選ぶと，圧力場を出力する(未実装)．

•

output.ON.EXTENDED.Print field.Tau. . . YESを選ぶと，応力テンソルを出力する．

•

output.UDF. . . UDFを出力する場合はONを選ぶ *14．

2.2.6 リスタートの設定
resume以下で中断した計算を再計算するリスタートUDFについて指定する．
•

resume.caclucation. . . NEWを選ぶと新規の計算ができる． CONTINUE/CONTINUE FDM/CONTINUE FDM PHAS
E SEPARATIONはいずれも前回計算終了したときの情報を読み込んで計算を再開するための設定であり，constitutive eqの設定によって使い分ける必要がある． CONTINUEは，スペクトル法を用いるシミュレーション *15 を再開する設定である． CONTINUE FDMは，差分法による一成分流体のシミュレーション *16を再開する設定である． CONTINUE FDM PHASE SEPARATIONは，差分法による二成分流体のシミュレーション *17 を再開する設定である *18．

2.2.7

GOURMETでの表示設定

Unit Parameter以下は，GOURMETでの表示に関する設定である．シミュレーション結果への影響はない．
•

Unit Parameter.Name. . . UDFファイルの名前を設定できる．

•

Unit Parameter.Comment. . . UDFファイルのコメントを設定できる．

•

Unit Parameter.Temperature. . . GOURMETでシミュレーションパラメータを実次元表示するための基準となる単位温度を指定する．

•

Unit Parameter.Length. . . GOURMETでシミュレーションパラメータを実次元表示するための基準となる単位長さを指定する．

•

Unit Parameter.rho. . . GOURMETでシミュレーションパラメータを実次元表示するための基準となる単位
密度を指定する．

*14 出力UDFのParticles[]以下には各粒子の座標と速度がoutput.Num snapで指定した数のレコードデータに保存される．
*15 constitutive eqにおいて，Navier Stokes/Shear Navier Stokes/Shear Navier Stokes Lees Edwards/Electrolyteを選択している場合である．
*16 Navier Stokes FDM/Shear Navier Stokes Lees Edwards FDMを選択している場合である．
*17 Navier Stokes Cahn Hilliard FDM/Shear NS LE CH FDMを選択している場合である．
*18 リスタートUDFファイルのresume.CONTINUE.Saved Data以下に結果が保存される．そのため，前回終了時にできるリスタートUDFを

入力UDFとして計算を再開することができる．

第2章 KAPSELのインストールと実行

22

出力UDFと再開UDFについて

2.3

出力UDF（output.udf）にはシミュレーション途中のデータが保存される．シミュレーションのステップ数とデータの保存頻度は，input.udfで以下の変数を用いて設定する．
•

output.GTS. . . データ出力のインターバルのステップ数.

•

output.Num snap. . . データ出力の回数. つまり全ステップ数=GTS×Num snap

再開UDF（restart.udf）にはシミュレーション終了時の全データが保存される． restart.udfを使って計算を再開させたい場合は以下の手順でおこなえばよい.

1. restart.udfをinput2.udfにリネームする.
2. Gourmetでinput2.udf を開き, resume.CalculationでCONTINUE/CONTINUE FDM/CONTINUE FDM PHAS
E SEPARATIONを適切に選ぶ.
3. さらにoutput.Num stepを増やしトータルで計算させたいステップ数（=前回計算したステップ数+今回計
算したいステップ数）を指定して保存する．

4. 各種パラメータの値や粒子数なども変更してリスタートすることもできる． 粒子を追加/変更する場合
は， object typeブロックを適切に設定し， resumeブロックのParticlesに追加/変更を適用すること．

switchブロックのINIT distribution/INIT orientationはリスタートでは無視される．
5. 再び% kapsel -Iinput2.udf -Ooutput.udf -Ddefine.udf -Rrestart.udfとすればinput2.udfからデータを読み込み計算を再開する.

6. AVSデータ, output.udfともに前回計算したデータをそのままに, 再開した計算の出力データを追加することができる.

7. restart.udfには再び計算終了時におけるデータが格納されるので, この手順を繰り返せばさらに計算を続行することが可能である.

23

第3章

Newton流体に分散した粒子のシミュレーシ
ョン
微粒子が液体(溶媒)中に分散した系は微粒子懸濁液と呼ばれ，食品・塗料・顔料・化粧品・スラリーなど我々の日常生活に数多く存在している．このような微粒子懸濁液を理解する上で，微粒子および溶媒の両者の運動を同時に把握することは非常に重要である．

3.1

理論的背景と基礎方程式

KAPSELでは，さまざまな粒子分散系のシミュレーションを行うために，Smoothed Profiled (SP) 法と呼ばれる直接数値計算法を採用している[5, 6]． SP法とは，流体と固体粒子の両方を考慮した運動方程式を同時に解くという手法であり． Newton流体だけでなく，任意のReynolds数における複雑流体を溶媒とした系に対しても適用が可能である．

3.1.1 粒子分散系における基礎方程式
SP法を用いると，連続体中に分散した固体粒子の運動を解くことが可能となる[6]． SP法は原理上，任意の形状の固体粒子に適用可能である．また，単純液体だけでなく，多相複雑流体のような複雑な系に対しても，それに応じた構成方程式を自由に用いることで，直接計算することができる．
粒子と流れの運動がSP法とどのように結びつくかを示すために，本節では，Newton流体中を自由に動く円盤状の形をした剛体（固体）の運動を考える[7]．固体は図3.1に示すように球状ビーズの集合体として表現される．以後，このような固体を単に粒子と呼ぶ． 非圧縮性のNewton流体は，連続の式とNavier–Stokes方程式で支配される．

∇ · u f = 0,∂t + u f · ∇ u f = ρ−1
f ∇ · σ,t 
σ = −pI + η ∇u f + ∇u f

(3.1)
(3.2)
(3.3)

ここで，u f , ρ f , η, σ はそれぞれ流体の速度，密度，粘度，および応力（テンソル）場を表し， p は圧力，I は単位テンソル，(· · · )t は転置を表す．特に明記しない限り，以後，粒子と流体の密度は等しい( ρ f = ρ p = ρ )と仮定す
る．また，固体–流体界面では滑りなしの境界条件を適用する(すなわち，固体表面では u f = u p が成立する)． u pは固体表面での粒子速度である． I 番目の粒子( I = 1, · · · , N )の質量を MI ，慣性モーメントを II としたとき， N個の剛体球から成る固体粒子の運動は，Newton–Euler方程式

ṘI = VI ,Q̇I = skew(ΩI ) · QI ,MI V̇I = FIH + FIC + FIE + GVI ,

(3.4)
(3.5)

3.2

度の

己

先ほどの

度の

己

己

を

ことで円 のよりもはっきりとめた。その、以下の図に度を めた。またそのいがわかるようになると
すような円

えて

度の

に固定された座をの式を以下に

す。

度の 己

える

第3章 Newton流体に分散した粒子のシミュレーション

24

図 7 円 に固定された座

図3.1: 3次元空間を運動する円盤状の形をした固体の概略．運動は3つの並進自由度と3つの回転自由度により特徴づけられる．

‫ כ ܥ‬ሺ߬ ‫ כ‬ሻ ൌ ൬

݀ ଶ ஶ
൰ න
ʹ ܷ
଴

ሺ‫ݐ‬ሻ

ሺ‫ ݐ‬൅ ሻ ൅
ʹ

ሺ‫ݐ‬ሻ

ሺ‫ ݐ‬൅ ሻ(3.2.1)‫ݐ‬J˙I = NIH + NIC + NIE + GΩ
I ,

(3.6)

ܷ
(3.2.2)
ൌ݀
で記述される[8]．ここで，RI , VI はそれぞれ重心座標と速度，QI , ΩI は対応する方向行列と角速度，JI = II · ΩI
ここで Ȧy'、Ȧz'は図 中で されている y'(実験座標系、z' 周りの円は角運動量である．方向行列により，固定直交座標系) {e } (iの= 1, 2,度である。さらに円3) は，粒子とともに回転する‫כ‬i

P y'とωz'は 価であると え、それぞれの 己
は x' を中心にであるので、ω
時間依存した座標系{ẽi } (i = 1, 2, 3)と， ẽi = 3j=1
e j Q ji のように関係づけられる．回転行列の時間発展は(歪k対称)角速度行列により決定され，角速度行列は角速度ベクトル− ௗ3k=1
から導かれる( ϵi jk
ij = をを平均したものを度の 己とした。また[skew(Ω)]
己でϵi jk Ω化するこPはLevi–Civita記号)．
とでそれぞれをଶ ௎

しやすい形にした。以下に
4


 0

skew(Ω) =  Ωz
 y
−Ω

−Ωz
0
Ωx

での 

Ωy 
−Ω x  .

0

を す。

(3.7)

粒子には，周りからの力 F およびトルク N が作用する．ここで力(トルク)は，溶媒からの寄与，直接的な粒子
間相互作用からの寄与 F C ，重力など外場からの寄与 F E の3つに分けられる．溶媒からの寄与は，流体力学的相互作用による寄与 F H と熱揺らぎによる寄与 F V から構成される．注意点として，力・トルクの各寄与についての正確な表式は対象となる系に依存し，それぞれ個別に議論される．また，GV , GΩ は，熱揺らぎにより粒子に働くランダム力およびトルクであり，白色雑音として導入されている．すなわち，⟨GVI ⟩ = ⟨GΩ
I ⟩ = 0 かつ

⟨GVI (t) · GVJ (0)⟩ = 3kB T αV δ(t)δI J ,

(3.8)

Ω
Ω
⟨GΩ
I (t) · G J (0)⟩ = 3k B T α δ(t)δI J ,

(3.9)

10
である．ここで ⟨⟩ は統計平均を表しており，αV および αΩ は，粒子温度 T を正確に設定値に一致させるための調
整パラメータである．粒子温度 T は，溶媒中で揺らいでいる１粒子のシミュレーションを予め行い，並進拡散係
数 DV および回転拡散係数 DΩ が理論値と一致するように試行錯誤で決定する．
ここからは，上記の方程式で表される系をSP法を用いて解く方法について説明する． SP法では，溶媒部分と粒子内部の固体部分の両方を含む全空間領域(x)で速度場u(x, t) = (1 − ϕ) u f (x, t) + ϕu p (x, t),(3.10)

を定義する．ここで

ϕu p (x, t) =NX

ϕI [VI + ΩI × rI ] ,(3.11)

I=1

は固体粒子の剛体運動を速度場で表現したものであり， rI = x − RI は粒子 I の重心からの距離を， ϕI =ϕI (x; RI , QI ) ∈ [0, 1] は粒子内部の固体部分 (ϕ ≃ 1) と外部の流体部分 (≃ 0) を区別するPhase field関数である．

第3章 Newton流体に分散した粒子のシミュレーション

25

SP法では，本来のシャープな固液界面を有限の厚みを持ったぼやけた界面領域に置き換えるために，界面厚み ξを ϕ （Phase Field）関数に導入している．これを本稿ではSmoothed Profile (SP)関数と呼ぶ．このような界面に有限の幅を持たせる方法は，数値計算をする上で2つの大きな利点がある． 1つ目は限られた数の格子点でも界面の位置を追跡できるということ，2つ目は疎水性や親水性など固体–流体間の相互作用を目的に応じて正しく設定できるということである．

3.1.2

SP法の導入流体部分と固体（粒子）部分からなる全系の速度場u(r)は，連続の式とNavier–Stokes方程式により，∇ · u = 0,

(3.12)(∂t + u · ∇) u = ρ ∇ · σ + ϕf p ,−1(3.13)と表される．ここで，ϕf p は粒子領域に剛体性の制約を課すための拘束力として作用する．また局所応力テンソ
ルは，流体部分の速度 u f を用いた式(3.3)で定義されるが，SP法では固体粒子内部も含めた全系の速度 u を用いて定義される． ϕf p , FIH , NIH の各項については，以下の式で示すように t に関する離散化(n → n + 1)を経て定義する． un を n 番目の時間ステップ tn = nh ( h は時間刻み幅)での速度場として表す．
まず始めに，式(3.13)と(3.4)を項 ϕf p がないものとして積分( tn → tn + h )を行うと，粒子の位置と方向は以下のように変化する．

Z tn +hu∗ = un +hids∇ · ρ−1 σ − uu ,(3.14)

dsVI ,(3.15)

ds skew(Ω) · QI .

(3.16)tn

Rn+1= RnI +I
Qn+1
= QnI +
I

Z tn +htn
Z tn +htn

この時点で，たとえ粒子速度が変化していなくても，粒子の速度場の更新を行う必要がある． ϕf p がない場合
での速度 u∗ に対して運動量保存を仮定すると，粒子に加わる流体力学的な力およびトルクは，流体が粒子から受け取る運動量とバランスして"Z tn +htn
"Z tn +h# Z
dsFIH =
dxρϕn+1u∗ − unp ,
I
#
dsNIH

=

tn

Z

h

i
dx rIn+1 × ρϕn+1u∗ − unp .
I(3.17)(3.18)と表される．その結果，粒子速度は VIn+1 と Ωn+1
へと更新される．この更新により，式(3.11)から最終的な粒子In+1
速度場 ϕn+1 un+1が得られる．
p ，すなわち ϕI

最後に，粒子の剛体性を保持するために導入したϕf p を考慮することにより，n + 1ステップの全系の速度が求ま
る．

u

n+1

=u +
∗

"Z tn +h#dsϕf p ,(3.19)

tn"Z tn +h
tn

#

 h
∗
dsϕf p = ϕn+1 un+1
p − u − ∇p p ,ρ(3.20)

ここで，剛体性による圧力は連続の式 ∇ · un+1 = 0 から得られる．全領域にわたって粘性応力が適用されるため，関連のある粒子表面での滑りなし条件は有限界面幅ξ の範囲内で満たされる．

第3章 Newton流体に分散した粒子のシミュレーション

3.1.3

26

Smoothed Profiled (SP)関数

本節では，任意の形状を持つ粒子に対して，どのようにSP関数が作成されるかを説明する． SP関数は，有限の界面幅 ξ の領域内で，粒子内部領域 ϕ = 1 と流体領域 ϕ = 0 が滑らかに分離されるような関数である．例えば球状粒子の場合，いくつかのSP関数の解析的表式が提案されている[5]．その一例として，"!
#
1a − |rI |
ϕI =
tanh
+1 ,
2
ξ

(3.21)があり[9, 10]，ここで a は球径を表す．界面幅 ξ は自由に指定できるパラメータであるが，数値計算の安定性のため，一般的に格子間隔の1倍または2倍に設定することが望ましい．界面幅 ξ を用いて粒子領域と流体領域がどのように分離されるかを例示するために，図3.2に粒子断面の概略を示す．

∆

ξa

図3.2: 球 状SP関 数 の 断 面 図 の 概 略． ∆ は 格 子 間 隔， a は 粒 子 径， xi は 界 面 幅． こ こ で， 粒 子 表 面 の 有 限 体 積 ∼ πa2 ξ．

Reproduced from Phys. Rev. E 71, 036707[5], Copyright 2005, with permission from the American Physical Society．

非球状粒子については，その複雑な形状を球状ビーズの集合体により表現する．構成要素となるビーズ同士が重なり合うことは可能であるため，任意の粒子を球状ビーズの集合によって表現できる． I 番目の粒子が nI 個の球状ビーズで構成されるとおくと，そのようなビーズの集合体に対するSP関数は，

ΦI (x, t) =nI
X

ϕI,i (x, t),(3.22)

ΦI,
max (ΦI , 1)

(3.23)i=1

ϕI (x, t) =と表される．ここで ϕI,i は I 番目粒子に属する i 番目の球状ビーズのSP関数である．
複雑な形状の粒子においても，SP関数が定義されると，粒子に対する流体力学的な力積およびそれに対応した流体に対する運動量の力積は式(3.17), (3.18), (3.20)で表される．
流体の慣性は上述のSPのアルゴリズムで解かれるため，付加的な質量効果は式(3.17)中の流体力学的な力積で説明される．その慣性効果を明らかにするため，式(3.17)に示した流体力学的な力積の被積分関数は







∗
n+1
n
ρϕn+1
u∗ − unp = −ρϕn+1
un+1
un+1
p − u + ρϕI
p − upI
I

第3章 Newton流体に分散した粒子のシミュレーション

= −ρ

27

Z tn +hdsϕI f p − h∇p phi+ ρϕn+1
Vi n+1 − Vi n + Ωn+1
− ΩnI × rIn+1 ,IItnのように分解できる．

R(3.24)

dxϕI r = 0 を用いてこの式を空間積分すると，
FIH = −Z

Z
dxρϕI f p −dxϕI ∇p p + MI

ρ
V̇I ,
ρ p,I

(3.25)

ここで，ρ p,I は I 番目粒子の質量密度である．この式より，式(3.17)中の流体力学的な力は，剛体制約の反作用と付加的な質量効果から構成されることがわかる．

SP法の計算精度は，時間の刻み幅 h と界面幅 ξ の両方に依存する． Luoら[11]の報告によれば，h を小さくする
ことで単調に計算精度が向上するわけでなく， h と ξ 2 ρ/η（運動量が粘性拡散により距離 ξ 移動するのに必要な時間）が同じオーダーであるときに最適値となる．この関係は，剛体制約の力積(式(3.20))から生じる粘性ストーク
ス層を考慮するためには，それに見合った界面幅が必要であるということを反映している．

3.1.4 粒子温度の決定手順
1. ある値にαV とαΩ をそれぞれ固定して１粒子系の熱平衡計算を行う．
2. シミュレーションから１粒子の並進拡散係数 DVsim や回転拡散係数DΩsim を平均二乗変位等を通してそれぞれ求める.

3. 得られた拡散係数DVsim , DΩsim を無限希釈系の１粒子系の拡散係数の解析解(並進運動に対しては， DV0 =Ω
3kB T V /6πηaおよび，回転運動に対しては， DΩ
0 = k B T /8πηa )と比較することにより，それぞれの並進および回転運動に対する温度T V , T Ω を決定することができる．

4. T Ω , T V の場合，T Ω = T V (= T )を満足するようにαV またはαΩ を調整する.
このアプローチによる温度決定方法の詳細については文献[12–14]を参照されたい．

第3章 Newton流体に分散した粒子のシミュレーション

28

入力UDF について

3.2

3.2.1 流体の設定
constitutive eqとしてNavier Stokesを選ぶと Newton 流体中のコロイド粒子の運動のシミュレーションが行える．以下, 入力U¡DFファイルで指定する変数について解説する.

constitutive eq.Navier Stokes以下で溶媒の情報を指定する.
•

constitutive eq.Shear Navier Stokes.DX. . . 長さの単位量である格子幅∆.

•

constitutive eq.Shear Navier Stokes.RHO. . . 溶媒の密度.

•

constitutive eq.Shear Navier Stokes.ETA. . . 溶媒の粘度.

•

constitutive eq.Shear Navier Stokes.kBT. . . 粒子温度.

•

constitutive eq.Shear Navier Stokes.alpha v. . . 粒子の並進温度に対する補正項*1 .

•constitutive eq.Shear Navier Stokes.alpha o. . . 粒子の回転温度に対する補正項.

3.2.2 オブジェクト(粒子)の設定
object type.typeでは，spherical particle(球状粒子)，chain(フレキシブル鎖)，rigid(剛体)を選択でき
る．

3.2.3 空間単位と時間単位
長さの単位としてを格子幅∆を採用している. 時間の単位τ0 ついて流体の密度ρと粘性率ηと格子幅で決まるτ0 = ρ∆2 /ηを採用している．
•

Navier–Stokes方程式でρ = η = ∆ = 1となるような単位系を採用している.

•

仮に入力udfファイルでRHO= A, ETA= B, DX= C と入力した場合, 最大波数kmax はC を用いて与えられ, 時
2間刻みの上限は運動量の拡散時間よりT step = (A/B)/kmaxと与えられる. 時間刻み∆tはT step × factorで調整する.
•

現実との対応を考察する．考察したい空間スケールとして，グリッドサイズを1 µmの長さを考える．また
溶媒として水(η = 1 × 10−3 Pa s，ρ = 1 × 103 kg m−3 )を対象とした場合，時間の単位はτ0 = 1 × 10−6 sとなる．

*1 微粒子の熱拡散を導入する場合は，温度を入力する．熱平衡での粒子の拡散運動から温度は見積もられるが，界面の厚さ等の数値的な理由のために正しい温度を返さない可能性がある．この場合，もし測定された温度が設定値の1/n倍であると見積もられた場合，このファクターをnと設定することで既定の温度を実現することができる．回転に対しても同様である．半径5または4，かつξ = 2に対しては，alpha v=alpha o=1でほぼ設定温度を再現できているようである．

第3章 Newton流体に分散した粒子のシミュレーション

3.3

29

計算事例

3.3.1 粒子の沈降
入 力UDFと し て， Examples/02/フ ォ ル ダ の gravity.udf お よ びgravity100000.udf を 用 い れ ば よ い.

gravity.udfおよびgravity100000.udfでは，それぞれ3204粒子，100000粒子の沈降を計算することができる．
具体的には./avs g1/と./avs g1/avs/ が作成されていることを確認した上で以下を実行する*2 .

$ ../../kapsel -Igravity.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf$ ../../kapsel -Igravity100000.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例(Fig. 3.3)ではメッシュサイズ256 × 256 × 512で計算している. gravity.udfでは，粒子数N p = 3204，粒
子直径D = 10，界面厚さξ = 2であり，このときの粒子体積分率はφ = 0.05である．図3.3には，重力下で沈降している3204粒子の懸濁液のスナップショットを示している．

図3.3: 重力下での3204粒子の懸濁液の沈降．重力は，z方向下向きに働いている．流体の色は， z方向の流体場の速度を示している．

一方，gravity100000.udfでは，粒子数N p = 100000，粒子直径D = 4，界面厚さξ = 2であり，このときの粒子体積分率はφ = 0.10である．図3.4には，重力下で沈降している100000粒子の懸濁液のスナップショットを示している．

3.3.2 粒子の拡散
入力UDFとして，Examples/03/フォルダの repulsive.udf を用いればよい． repulsive.udfでは，粒子間に反発力のみの相互作用をもつBrown粒子系の拡散現象を計算することができる．

$ ../../kapsel -Irepulsive.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf*2 AVSデータが必要でない場合は， AVSのスイッチをOFFに切り替え，./avs g1/と./avs g1/avs/を作成する必要はない．これはその他のサンプルファイルに対しても同様である．

第3章 Newton流体に分散した粒子のシミュレーション30

図3.4: 重力下での100000粒子の懸濁液の沈降．重力は，z方向下向きに働いている．粒子は全て等価であり，可視化のために赤と黄色に着色されている．

この例(Fig. 3.5)ではメッシュサイズ128 × 128 × 128で計算している．このとき粒子体積分率はφ = 0.064であり，粒子数N p = 500, 粒子直径 D = 8, 界面厚さ ξ = 2，温度kB T = 5である．溶媒は，密度ρ = 1，粘性係数η = 1である．図3.5には，反発相互作用を持った懸濁液の拡散のスナップショットを示している．

図3.5: 反発相互作用のみの粒子間相互作用をもつ懸濁液のスナップショットを示している．

3.3.3 粒子の凝集
入力UDFとして，Examples/05/フォルダの aggregate.udf，aggregate LE.udfおよびaggregate LE 2.udf
を用いればよい. aggregate.udf では，粒子間に引力相互作用が働いた系の凝集・拡散現象を計算することがで

第3章 Newton流体に分散した粒子のシミュレーション

31

きる．

$ ../../kapsel -Iaggregate.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例(Fig. 3.6)ではメッシュサイズ128 × 128 × 128で計算している.

このとき粒子体積分率はφ = 0.064であり，粒子数N p = 500, 粒子直径 D = 8, 界面厚さ ξ = 2，温度kB T = 5である．溶媒は，密度ρ = 1，粘性係数η = 1 である．図3.6には，粒子間に引力相互作用をもった懸濁液の凝集・拡散の様子を示している．

図3.6: 粒子間相互作用に引力相互作用をもつ懸濁液の凝集・拡散の様子のスナップショットを示している．

aggregate LE.udfおよびaggregate LE 2.udfでは，せん断流下での粒子間に引力相互作用が働いた系の凝集・拡散現象を計算することができる．

$ ../../kapsel -Iaggregate_LE.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf$ ../../kapsel -Iaggregate_LE_2.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例(Fig. 3.7)ではメッシュサイズ128 × 128 × 128で計算している.

このとき粒子体積分率はφ = 0.064であり，粒子数N p = 500, 粒子直径 D = 8, 界面厚さ ξ = 2，温度kB T = 5である．溶媒は，密度ρ = 1，粘性係数η = 1
である． aggregate LE.udfでは，せん断速度γ̇ = 0.005， aggregate LE 2.udfでは，せん断速度γ̇ = 0.05である． 図3.7には，せん斷流下での粒子間に引力相互作用をもった懸濁液の凝集・拡散の様子を示している．
図3.7(左)には，弱いせん断流下(γ̇ = 0.005)でのスナップショットを示している．また，図3.7(右)には，強いせん
断流下(γ̇ = 0.05)でのスナップショットを示している．

3.3.4 粒子鎖の運動
入力UDFとして，Examples/06/フォルダの s000 t010 free.udf，s001 t010 free.udfおよびs001 t000 free.udf
を 用 い れ ば よ い． s000 t010 free.udfで は， 静 止 流 体 中 の1本 の 粒 子 鎖 を 計 算 す る こ と が で き る． 一 方，

s001 t010 free.udfおよびs001 t000 free.udf では，ジグザグせん断流下の1本の粒子鎖を計算することができる．

第3章 Newton流体に分散した粒子のシミュレーション

32

図3.7: せん斷流下での粒子間相互作用に引力相互作用をもつ懸濁液の凝集・拡散の様子のスナップショットを示している．左
図は弱いせん斷流下でのスナップショットを示している．右図は強いせん断流下でのスナップショットを示している．

$ ../../kapsel -Is000_t010_free.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf$ ../../kapsel -Is010_t010_free.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf$ ../../kapsel -Is010_t000_free.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例(Fig. 3.8)ではメッシュサイズ32 × 64 × 16で計算している．このとき粒子体積分率はφ = 0.005であり，1本の鎖の粒子数N p = 5，粒子直径D = 4，界面厚さξ = 2である． s000 t010 free.udfおよびs001 t010 free.udf
で は， 温 度kB T= 1.0， s001 t000 free.udfで は， 温 度kB T= 0.0で あ る． s001 t010 free.udfお よびs001 t000 free.udfでのせん断速度 s = 0.01である．図3.8には，1本の柔軟な粒子鎖のスナップショットを示している．図3.8(左)には，温度kB T = 1.0での静止流体中での粒子鎖のスナップショットを示している．図3.8(中央)には，温度 kB T = 1.0でのジグザグせん断流下の粒子鎖のスナップショットを示している．図3.8(右)には，温度kB T = 0.0でのジグザグせん断流下の粒子鎖のスナップショットを示している．

3.3.5 任意形状剛体粒子の運動
入 力UDFと し て， Examples/08/フ ォ ル ダ の N30k3.0p52.0 vy.udf， N30k3.0p52.0 omegay.udf ，N30k3.0p52.0 gravity.udf ， helixes gravity.udf ， helixes shear0005.udfを 用 い れ ば よ い．
N30k3.0p52.0 vy.udfでは，一定速度で並進運動する螺旋粒子鎖の計算をすることができる．
$ ../../kapsel -IN30k3.0p52.0_vy.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例ではメッシュサイズ256 × 256 × 256で計算している．このとき粒子体積分率はφ = 0.00048であり，1本の鎖の粒子数N p = 30，粒子直径D = 4，界面厚さξ = 1，速度V = −0.005である．

N30k3.0p52.0 omegay.udfでは，一定の角速度で回転した螺旋粒子鎖の計算をすることができる．
$ ../../kapsel -IN30k3.0p52.0_omegay.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例ではメッシュサイズ256 × 256 × 256で計算している．このとき粒子体積分率はφ = 0.00048であり，1本の鎖の粒子数N p = 30，粒子直径D = 4，界面厚さξ = 1，角速度Ω = 0.00041である．

第3章 Newton流体に分散した粒子のシミュレーション

33

図3.8: 左図は温度kB T = 1.0での静止流体中の1本の柔軟な粒子鎖のスナップショットを示している．中央図は温度kB T = 1.0でのジグザグせん断流下のスナップショットを示している．右図は温度kB T = 0.0でのジグザグせん断流下でのスナップシ
ョットを示している．

N30k3.0p52.0 gravity.udfでは，一定の外力（重力）の下で沈降する螺旋粒子鎖の計算をすることができる．

$ ../../kapsel -IN30k3.0p52.0_gravity.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例ではメッシュサイズ256 × 256 × 256で計算している．このとき粒子体積分率はφ = 0.00048であり，1本の鎖の粒子数N p = 30，粒子直径D = 4，界面厚さξ = 1，重力g = −0.01である．

helixes gravity.udfでは，重力下での3本の螺旋粒子鎖の沈降の計算をすることができる．
$ ../../kapsel -Ihelixes_gravity.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例(Fig. 3.9)ではメッシュサイズ256 × 256 × 256で計算している．このとき粒子体積分率はφ = 0.0016であり，1本の鎖の粒子数N p = 100，粒子直径D = 4，界面厚さξ = 1，重力g = −0.01である．図3.9には，重力下での3本の螺旋粒子鎖の沈降のスナップショットを示している．

helixes shear0005.udfでは，せん断流下の3本の螺旋粒子鎖の計算をすることができる．
$ ../../kapsel -Ihelixes_shear0005.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例ではメッシュサイズ256 × 256 × 256で計算している．このとき粒子体積分率はφ = 0.0016であり，1本の鎖の粒子数N p = 100，粒子直径D = 4，界面厚さξ = 1，せん断速度γ̇ = 0.005である．

3.3.6 任意形状剛体粒子の沈降
入力UDFとして，Examples/10/フォルダの input rigid free1.udfを用いればよい． input rigid free1.udfでは，Re = 800で落下する物体の計算をすることができる．

第3章 Newton流体に分散した粒子のシミュレーション

34

図3.9: 重力下での3本の螺旋粒子鎖の沈降のスナップショット$ ../../kapsel -Iinput_rigid_free1.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例(Fig. 3.10)ではメッシュサイズ64 × 128 × 64で計算している．落下する物体の密度は流体の密度の1.5倍であり，重力g = −50である．図3.10には，Re ≃ 800で落下する物体のスナップショットを示す．

図3.10: Re = 800で落下する物体のスナップショット．流体中の水色のレンダリングは流速の大きさを表す．

35

第4章

せん断流下の粒子分散系のシミュレーション
4.1

理論的背景と基礎方程式

微粒子が液体（溶媒）中に分散している微粒子懸濁液は，化学工学や機械工学，物理学など工学・理学分野の広範囲にわたって重要であり，活発に研究が行われている．このような系は，食品・塗料・顔料・化粧品・スラリーなどに見出すことができ，その用途および産業的な製造・加工プロセスにおいてその流動挙動の把握が重要である．しかしながら，微粒子懸濁液の動的挙動は微粒子間相互作用や熱揺らぎなどに影響され大変複雑な様相を示し，その流動挙動の把握は容易ではない．微粒子懸濁液は，異なる状況のもとで多種多様な挙動を示す．例
えば，微粒子懸濁液の輸送現象においては粘度のような微粒子懸濁液の流動特性が，分散した粒子の濃度や流動の強さ，粒子界面の性質などに強く依存する．このような巨視的な流動特性と微視的なメカニズムの関係を明らかにすることは，微粒子懸濁液の基礎研究における主要なテーマの一つとなっている．
上述のように懸濁液のレオロジーは応用上重要であるが，それについて理論的に一般論を構築するにはあまりに複雑である (例えばテキスト [15]や比較的最近のレビュー(日本語) [16, 17]を参照.)．溶媒の粘度をηとすると，粒子濃度（体積分率φ）が希薄な領域においては懸濁液の粘度ηapp はηapp5= 1 + φ,
η
2

(4.1)

のようにφに対して線形に変化するという理論的な結果が得られている(例えば [15]を参照)．これは有名な Einsteinの粘度式である．しかし Einstein の粘度式が成立するのは体積分率でφ ≪ 10%程度である．粒子濃度が高くなると，粒子間相互作用の影響とそれによる粒子構造変化、さらにガラス化・結晶化などが起こる．そのため懸濁液のレオロジーを基本法則から理論的に予測することは途端に難しくなる．以上のような難しさはあるものの，その重要性から実験的な研究は数多くなされ，それを整理する形で懸濁液の粘度についての経験式・半経験式がいくつか提案されている (Doughherty–Krieger 式[18],文献 [17, 19] およびその引用文献参照)．
粒子濃度が高くなっていくと，コロイド体積分率以外の多様な効果が現象に関与するため，統一的な理論を作るよりも現象個別に対する解析が必要になってくる． SP法は溶媒によるコロイド粒子間多体相互作用を直接計算できるシミュレーション法であり，これを用いて多様な種類の懸濁液のレオロジーを解析することが可能である．
レオロジー解析を可能とする本直接数値計算手法の主な特徴は，「粒子間の流体力学的相互作用」，「粒子の熱揺らぎ」，そして「せん断流」が考慮されている点である． KAPSELでは，Newton流体中の単分散系についての単純および振動せん断流下のシミュレーションおよびレオロジー測定(定常流および動的粘弾性測定)が行える．

KAPSELでは，均一なせん断流を実現するためにLees–Edwards周期境界条件を採用している． Lees–Edwards周期境界条件の利点として，壁などの特殊な境界を用いることなくせん断速度を正確に与えることが可能で，かつジグザク流れのように系内に速度勾配の符号が変わる特異点がないことが挙げられる．本周期境界条件では，せん断流れによって時間の経過に伴い格子点が移流する斜交座標上で構成方程式を解く． Lees–Edwards周期境界条件を採用した場合，せん断流れの実現に伴う座標変換がどのように行われるかの概要を図4.1に示す．時刻 t = t0
においてせん断流れがない場合，溶媒中に分散した固体粒子は矩形格子上で離散化される(図4.1 (a))．せん断流

第4章 せん断流下の粒子分散系のシミュレーション

36

れが生じる( t > t0 )と，格子点と粒子の両方が流れにより移流するが，計算格子はせん断により変形する一方で，粒子の形は変化しない．すなわち計算格子は，固定座標系(図4.1 (b))とせん断流れに伴って歪む斜交座標系(図4.1(c))の2通りで表され，後者の斜交座標系では粒子が歪んだ形となる．この論述は，非平衡系MDシミュレーション
において発散なしの均一な流れをモデル化するために用いられるSLLODアルゴリズムと同等であるが，格子ベースの系においてこのアルゴリズムを実装する際は注意が必要である[20–22]．時間の経過とともにせん断流れによって変形する斜交座標系上での速度を ξ = u − U とすると，速度 ξ に対するNavier–Stokes方程式の適切な反変形(contravariant form)は，基底ベクトル(Ê1 = e x + γ(t)ey , Ê2 = e2 , Ê3 = e3 )を用いて

ρ ∂tˆ + ξ̂ j ∇ˆ j ξ̂i = ∇ˆ j σ̂ ji + ϕ̂ fˆi − 2γ̇(tˆ)ξ̂2 δi,1
∇ˆ i û = ∇ˆ i ξ̂ = 0
i

i

(4.2)
(4.3)

で与えらる．ここで，( ˆ· )は斜交座標系上でのテンソル成分を表す．上記の流れに関する方程式を解いた後，固定座標系(実験室系)において粒子–流体間の相互作用を計算し粒子ダイナミクスを解く．

Eq.7 in [49]図4.1: せん断流れを実現するためのLees–Edwards周期境界条件における座標変換の概要． (a)時刻 t = t0 において固体粒子は矩形格子上で離散化される．せん断流れが生じる( t > t0 )ことで粒子と溶媒(格子点)の両方が移流するが，計算格子は変形する一方で粒子の形状は変わらない．つまり，固定実験系(b)では計算格子が変形する一方で，斜交座標系(c)では粒子がせん断流れに応じて歪む． (b)と(c)間の座標の変換については文献[22]式(7)を参照されたい． Reproduced from J.

Chem. Phys 134, 064110[22], Copyright 2011, with the permission of AIP Publishing.

せん断流下において，分散系全体の瞬間的な応力を空間平均したものは，粒子の拘束力 ρϕf p を用いて

Σ=

1
V

Z

h
i
dx σ − xρϕf p + xu · ∇(ρu) ,(4.4)

として定義される． また，ホスト流体による応力への寄与の平均を引くことにで，応力に対する粒子の寄与s = Σ − ⟨σ⟩ が得られる．

4.1.1 定常せん断流の場合
懸濁液の粘度 ηapp ，および特性粘度 [η] は，それぞれ

ηapp =⟨Σ xy ⟩ ⟨σ xy ⟩ ⟨s xy ⟩⟨s xy ⟩
=
+
=η+
γ̇
γ̇
γ̇
γ̇

(4.5)

第4章 せん断流下の粒子分散系のシミュレーション

[η] =

37

ηapp − η ⟨s xy ⟩
=
ηφ
ηφγ̇

(4.6)

で求めることができる．

4.1.2 振動せん断流の場合
振動せん断流場を系に導入することによって，懸濁液の動的粘弾性を測定することが可能である． KAPSELでは，系に時間的に変化するせん断流を形成するために，制御パラメータとして，ずり速度γ̇を次のように与えている．

γ̇(t) = γ̇0 cos(ωt).

(4.7)

ここで，γ̇0 はずり速度の振幅である．また、ひずみの最大振幅γ0 は，

γ0 =Z π/2ω
0γ̇(s)ds =

γ̇0
ω

(4.8)

によって評価される．ひずみが小さい場合は線形粘弾性の領域に相当し，一方大きい場合は非線形粘弾性領域に相当する．
振動せん断流れγ̇(t)に対する懸濁液の応力の時間変化Σ xy (t))は，線形応答の範囲内でΣ xy (t) = σ0 cos(ωt − δ)

(4.9)

と書ける．ここで，σ0 は応力の振幅であり，δはずり速度γ̇とずり応力Σ xy との間の位相差をあわらしている．この時，動的粘弾性関数である貯蔵弾性率G′ および，損失弾性率G′′ は，G′ (ω) =ωσ0 cos δωσ0 sin δ, G′′ (ω) =
.
γ̇0
γ̇0

(4.10)と書ける． G′ は懸濁液の弾性的な挙動を特徴づけ， G′′ は粘性的な挙動を特徴づける． KAPSELにおいては，
式(4.7))のずり速度γ̇(t)が入力であり，式(4.9)の懸濁液のずり応力Σ xy (t)がその応答（出力）となっている． ωを変えてシミュレーションを行い，それぞれの条件下で変数の時間変化を上式にフィッティングすることによりG′ (ω), G′′ (ω)を求めることが可能である．これらの関係式の導出については，レオロジーに関する教科書を参照して頂きたい．

第4章 せん断流下の粒子分散系のシミュレーション

38

入力UDF について

4.2

4.2.1 流体の設定
constitutive eqとしてShear Navier Stokes Lees Edwardsを選ぶとシア流下における Newton 流体中のコロイド粒子の運動のシミュレーションが行える．以下, 入力UDFファイルで指定する変数について解説する.

constitutive eq.Shear Navier Stokes以下で溶媒の情報を指定する.
•

constitutive eq.Shear Navier Stokes.DX. . . 長さの単位量である格子幅∆.

•

constitutive eq.Shear Navier Stokes.RHO. . . 溶媒の密度.

•

constitutive eq.Shear Navier Stokes.ETA. . . 溶媒の粘度.

•

constitutive eq.Shear Navier Stokes.kBT. . . 粒子温度.

•

constitutive eq.Shear Navier Stokes.alpha v. . . 粒子の並進温度に対する補正項 *1 .

•constitutive eq.Shear Navier Stokes.alpha o. . . 粒子の回転温度に対する補正項.

•

constitutive eq.Shear Navier Stokes.External field.type. . . DC (定常シア流れ）または AC (振動シア流れ)を
選択する．

•

constitutive eq.Shear Navier Stokes.External field.DC.Shear rate. . . ずり速度 γ̇.

•constitutive eq.Shear Navier Stokes.External field.AC.Shear rate. . . 振動ずり速度の振幅 γ̇0•constitutive eq.Shear Navier Stokes.External field.AC.Frequency. . . ずり速度の周波数 ω4.2.2 オブジェクト（粒子）の設定
object type.typeでは，spherical particle(球状粒子)，chain(フレキシブル鎖)，rigid(剛体)を選択できる．

*1 熱平衡での粒子の拡散運動から温度は見積もられるが，界面の厚さ等の数値的な理由のために正しい温度を返さない可能性がある．この場合，もし測定された温度が1.2倍と低い温度が見積もられた場合，このファクターを1.2と設定することで既定の温度を実現することができる．回転に対しても同様である．半径5または4，かつξ = 2に対しては，alpha v=alpha o=1で既定の温度を計算できる．

第4章 せん断流下の粒子分散系のシミュレーション

39

計算事例

4.3

4.3.1 定常せん断流下の懸濁液のレオロジー
入力UDFとして， Examples/07/フォルダの colloid LE v31 t01.udf およびcolloid LE v55 t50.udf を用いればよい.

$ ../../kapsel -Icolloid_LE_v31_t01.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf$ ../../kapsel -Icolloid_LE_v55_t50.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例(Fig. 4.2)ではメッシュサイズ64 × 64 × 64でせん断速度γ̇ = 0.001, 粒子半径a = 4,
算している.

界面厚さξ = 2 で計

colloid LE v31 t01.udf では，温度kB T = 0.1，粒子数N p = 300であり，このとき粒子体積分率はφ = 0.307%である．一方，colloid LE v55 t50.udfでは，温度kB T = 5.0，粒子数N p = 540であり，このとき
粒子体積分率はφ = 0.552%である.

図4.2: Lees-Edwards周期境界条件を用いた定常せん断流下の懸濁液の流動．左図は温度kB T = 0.1，粒子数N p = 300のスナッ
プショット，右図は温度kB T = 5.0，粒子数N p = 540のスナップショットを示している．

constitutive eqとしてShear Navier Stokes Lees Edwardsを選び， Externa fieldとしてDCを選択すると，コマンドライン（標準エラー出力）に#1:time 2:shear_rate 3:degree_oblique 4:shear_strain_temporal 5:lj_dev_stress_temporal 6:
0.0748173 -0.00588609 -0.000440381 ...
..
.
のようなデータが出力される．この時系列出力の意味は以下のとおり。
•

1:time. . . 経過時間•

2:shear rate. . . せん断速度

第4章 せん断流下の粒子分散系のシミュレーション•

3:degree oblique. . . 斜交座標系の歪み *2•

4:shear strain temporal. . . 印加された歪み(γ̇t)•

5:lj dev stress temporal. . . 粒子間ポテンシャル由来のせん断応力•

6:shear stress temporal old. . . 粒子–流体間相互作用由来のせん断応力•

7:shear stress temporal new. . . 粒子–流体間相互作用由来のせん断応力 *3•

8:reynolds stress. . . レイノルズせん断応力•

9:fluid stress. . . バルク流体由来のせん断応力•

10:interfacial stress. . . 流体–流体界面由来のせん断応力•

11:apparent stress. . . 懸濁液のせん断応力 *4•

12:viscosity. . . 懸濁液の粘度 *540Fig. 4.3は，懸濁液の応力の時間発展を示している．また，Fig. 4.4は，粘度とひずみの関係を示している．

図4.3: 定常せん断流下の懸濁液の応力の時間発展. 1列目と11列目のプロットを表示している．

4.3.2 振動せん断流下の懸濁液のレオロジー
入力UDFとして，Examples/07/フォルダの colloid LE v31 t01 AC.udfおよびcolloid LE v55 t50 AC.udf
を用いればよい.

$ ../../kapsel -Icolloid_LE_v31_t01_AC.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf$ ../../kapsel -Icolloid_LE_v55_t50_AC.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例(Fig. 4.5)ではメッシュサイズ64 × 64 × 64でせん断速度γ̇ = 0.001, 粒子半径a = 4,
している.

界面厚さξ = 2 で計算

colloid LE v31 t01 AC.udfでは，温度kB T = 0.1，粒子数N p = 300であり，このとき粒子体積分率*2 KAPSELでは，一様なせん断流動を実現するため，時間と共にせん断方向に歪む斜交座標系上で計算を行っている．その際，計算安定性の観点から，斜交座標系の歪みがある一定値に到達したとき歪みをリセットし，もとの直交座標系へ値をリマップする操作を行っている． 3:degree obliqueで表示される値は，このリマップを考慮した斜交座標系の歪みであり，系に印加された歪み(γ̇t)とは異なることに注意する．詳細は文献[23]に記されている.
*3 粒子–流体間相互作用由来のせん断応力は，oldとnewの2種類の計算方法が実装されている．通常はnewを用いればよい．
*4 5:lj dev stress temporal，7:shear stress temporal new，8:reynolds stress，9:fluid stress，10:interfacial
stressの総和である．
*5 11:apparent stressを2:shear rateで割った値である．

第4章 せん断流下の粒子分散系のシミュレーション

41

図4.4: 定常せん断流下の懸濁液のひずみと粘度の関係. 4列目と12列目のプロットを表示している．

はφ = 0.307%である．一方，colloid LE v55 t50 AC.udfでは，温度kB T = 5.0，粒子数N p = 540であり，このとき粒子体積分率はφ = 0.552%である.

constitutive eqとしてShear Navier Stokes Lees Edwardsを選び， Externa fieldとしてACを選択すると標準エラー出力に#1:time 2:shear_rate 3:degree_oblique 4:shear_strain_temporal 5:lj_dev_stress_temporal 6:
0.0748173 -0.00588609 -0.000440381 ...
..
.
のようなデータが出力される．この時系列出力の意味は以下のとおり。
•

1:time. . . 経過時間•

2:shear rate. . . せん断速度•

3:degree oblique. . . 斜交座標系の歪み *6•

4:shear strain temporal. . . 印加された歪み(γ̇t)•

5:lj dev stress temporal. . . 粒子間ポテンシャル由来のせん断応力•

6:shear stress temporal old. . . 粒子–流体間相互作用由来のせん断応力•

7:shear stress temporal new. . . 粒子–流体間相互作用由来のせん断応力 *7•

8:reynolds stress. . . レイノルズせん断応力•

9:fluid stress. . . バルク流体由来のせん断応力•

10:interfacial stress. . . 流体–流体界面由来のせん断応力•

11:apparent stress. . . 懸濁液のせん断応力 *8•

12:viscosity. . . 懸濁液の粘度 *9*6 KAPSELでは，一様なせん断流動を実現するため，時間と共にせん断方向に歪む斜交座標系上で計算を行っている．その際，計算安定性の観点から，斜交座標系の歪みがある一定値に到達したとき歪みをリセットし，もとの直交座標系へ値をリマップする操作を行っている． 3:degree obliqueで表示される値は，このリマップを考慮した斜交座標系の歪みであり，系に印加された歪み(γ̇t)とは異なることに注意する．詳細は文献[23]に記されている.
*7 粒子–流体間相互作用由来のせん断応力は，oldとnewの2種類の計算方法が実装されている．通常はnewを用いればよい．
*8 5:lj dev stress temporal，7:shear stress temporal new，8:reynolds stress，9:fluid stress，10:interfacial
stressの総和である．
*9 11:apparent stressを2:shear rateで割った値である．

第4章 せん断流下の粒子分散系のシミュレーション

42

Fig. 4.5は，懸濁液の応力の時間発展を示している．

図4.5: 振動せん断流下の懸濁液のせん断応力の時間発展. 1列目と11列目のプロットを表示している． 上図は粒子体積分率φ = 0.307，温度kB T = 0.1での懸濁液の応力の時間発展を示している． 下図は粒子体積分率φ = 0.552，温度kB T = 5.0での懸濁液の応力の時間発展を示している．

43

第5章

電解質溶液に分散した荷電粒子のシミュレー
ション
5.1

荷電コロイド粒子の電気泳動

水のような誘電率が非常に大きい溶媒にコロイド粒子が分散しているとき, コロイド表面にある解離基からイオンが放出されて粒子表面は電荷を帯びる. 放出されたイオンは粒子表面に静電的に引き寄せられるが, 同時に熱ゆらぎによって拡散され, コロイド粒子周りに電気二重層とよばれる雲のようなイオン雰囲気を形成する. 平衡状態のコロイド分散系の性質はPoisson–Boltzmann方程式によって記述され, これを線型化したDebye–Hückel近似を用いて見通しの良い理解を得ることができる. これに対して電気泳動をはじめとした界面動電現象とよばれる現象では, 粒子とイオン分布の挙動は流体力学相互作用と静電相互作用の競合によって決定される. 両者の競合の結果としてイオン分布は粒子の運動に追随できず, 電気二重層は球対称から歪み平衡状態とは異なる状況が起こる. このような複雑な状況を解析するには, 理論的には簡単な近似を導入する他なく, さらに計算機シミュレーションによっても正しく再現されたことはこれまでほとんどなかった．

SP法ではコロイドは粒子描像のまま扱う. その一方で, 溶媒およびイオンについては連続体として粗視化された密度場として与える．この計算の実現のために，滑らかな界面を与えるSP関数を用いてコロイド粒子(運動方程式)・イオン分布(移流拡散方程式)・溶媒速度場(Navier–Stokes 方程式)の3つの自由度とそれらのカップリングを
コンシステントに解くためのフォーマリズムを構成した [5, 6, 24, 25]. これにより, 定量的な電気泳動シミュレー
ションにも世界で初めて成功した [25]. 以下, KAPSEL内部で考慮されている基本方程式を説明し, 同時に背景にある理論について簡単に触れる.

5.2

基本方程式

文献 [6, 25]にしたがいシミュレーションに必要な電気流体力学の基本方程式を概観する. 電解質溶媒中に分散している半径aの球状コロイド粒子N 個を考える. また溶媒の誘電率ϵ は, コロイド粒子内部も含めて空間的に一様であるとする. SP法では粒子と溶媒の界面を有限な厚さξ をもつ滑らかな関数ϕ(r) ∈ [0, 1]によってあらわす. 固定直交格子上で粒子領域を ϕ = 1, 溶媒領域をϕ = 0, 界面領域を0 < ϕ < 1で表現している. この様な直交格子状でϕ(r)を用いた方法としては, 他に Tanaka–Araki [26]やKajishimaら [27]の方法がある. 界面関数を導入することによって, 非構造格子を用いた有限要素法などと比べた場合に圧倒的な計算効率の向上を実現できる. コロイド粒子の表面は一様に帯電していると仮定し, 1粒子あたりの帯電量はZeであるとする. 通常の連続体描像では, 粒子表面電荷分布はデルタ関数を用いて表される. そのため有限要素法などでは, 適切な境界適合格子が用いられ計算効率向上の大きな障害となっている. それに対して, SP法ではこの粒子表面電荷分布eq(r) についてもSP関数ϕの 1階微分を用いて

eq(r) =Ze|∇ϕ(r)|
,
4πa2

(5.1)

第5章 電解質溶液に分散した荷電粒子のシミュレーション

44のように滑らかに表現する. SP関数ϕ(r)がξ → 0でステップ関数に帰着するように構成されているのと同様に,q(r)もξ → 0とすればデルタ関数に帰着するように構成されている.

5.2.1 移流拡散方程式
価数zα をもつα種イオンの密度分布Cα を

Cα (r, t) = (1 − ϕ(r, t))Cα∗ (r, t)(5.2)のように計算領域全体で定義する. イオンが存在する領域は(1 − ϕ)によって表現されている. Cα∗ (r, t) は計算のための補助変数であり, 計算領域全体で滑らかに定義されている. コロイドの領域(ϕ = 1)におけるCα∗ に物理的な意味はない. 粒子表面電荷分布を含めた全電荷分布は

ρe (r) = eXzαCα (r) + eq(r)

(5.3)

α

である. このとき初期分布は電気的中性条件

Rρe dr = 0 を満たすようにとられる.

補助イオン密度Cα∗ の時間発展は移流拡散方程式:∂t Cα∗ = −∇ · Cα∗ v + Γα ∇ · (Cα∗ ∇µα ),(5.4)にしたがうとする. これは溶媒速度場vによる移流と, 化学ポテンシャルµα の勾配による拡散の2つの項からなる.

RCα∗ は移流拡散方程式にしたがうので、 drCα∗ は保存する。
イオンがコロイド粒子内部に浸透しないことは, イオン拡散流速の界面法線方向成分が0となる条件として考慮される。すなわち, n · ∇µα = 0 である [6, 25]. ここで nは粒子表面における(外向き)法線方向ベクトルを表す. SP関数を用いると n = −∇ϕ/|∇ϕ|と表すことができる. また Γα はα種イオンのOnsager輸送係数であり, イオンの摩擦係数
および拡散係数とは fα = 1/Γα , Dα = kB T Γα のような関係にある. イオンの化学ポテンシャルはµα = kB T ln Cα∗ + zα e(Ψ − E · r)

(5.5)

とする [28]. Eは外部電場をあらわし, 静電ポテンシャルΨ(r)は Poisson方程式:

ϵ∇2 Ψ = −ρe(5.6)

を解いて得られる. この化学ポテンシャルにしたがうイオンは，平衡状態において Poisson–Boltzmann分布となる.

5.2.2

Navier–Stokes方程式

溶媒流動は非圧縮性の流れ(∇ · u = 0) である. 溶媒の速度場uは Navier–Stokes方程式:

ρ(∂t + u · ∇)u = −∇p + η∇2 u − ρe (∇Ψ − E) + ϕ f p(5.7)にしたがう. ρ, η, pはそれぞれ溶媒の密度, 粘性係数, 圧力をあらわす. ここで流体には静電気力−ρe (∇Ψ − E)が働いていることに注意されたい. 外力項ϕ f p は, これは粒子の剛体性を保証するための強制力をあらわしている. すなわ
ちϕ f p によって粒子表面の粘着境界条件が考慮される. 詳しくは文献 [5, 6]を参照のこと.

5.2.3 運動方程式
質量 M p をもつi番目コロイド粒子の位置および速度{Ri , V i } は運動方程式:

Ṙi = V i ,M p V̇ i = FiH + Fother
i

(5.8)
(5.9)

によって時間発展する. ここで FiH は流体から受ける力をあらわし, 固液間での運動量収支を表している [6]. まは Lennard–Jonesポテンシャルなど粒子間のポテンシャルによる力である. ここでは省略したが粒子の回転
た Fotheri運動も同様に考慮されている [6]. 以上がシミュレーションに用いられる基礎方程式である.

第5章 電解質溶液に分散した荷電粒子のシミュレーション

5.3

45

電気二重層の性質

電気二重層の構造を定量的に扱うための基礎は Poisson–Boltzmann方程式である.

5.3.1

Poisson–Boltzmann方程式

外部電場がない(E = 0)とき, 式(5.5)のもとでイオンの平衡分布を求める. 化学ポテンシャルが一様, µα = cst., になったとき, 平衡イオン分布として

Cα∗ (r) = C̄α exp

zα eΨ(r)−kB T!
(5.10)を 得 る. こ れ は 静 電 ポ テ ン シ ャ ルΨの も と で の Boltzmann分 布 で あ る. こ れ は 式(5.6)と あ わ せ てPoisson–

Boltzmann方程式とよばれる.

5.3.2

Debye–Hückel近似とDebye遮蔽長

z : z対称電解質溶媒中にある1個の球状コロイド粒子を考える. Poisson–Boltzmann方程式は!
2zeC̄
zeΨ(r)2∇ Ψ(r) =
sinh
,
ϵ
kB T

(5.11)となる [15, 29]. 無限遠方での境界条件はΨ| r=∞ = 0 およびC ∗ | r=∞ = C̄ である. 粒子表面における境界条件は∇Ψ|surface = −σe,ϵ(5.12)

であり, ここで表面電荷密度σe = Ze/4πa2 である. すなわち表面電荷一定の境界条件を考えている. zeΨ/kB T ≪ 1を仮定し式(5.11)を線形化する近似は Debye–Hückel近似と呼ばれる.

∇2 Ψ(r) =となる. このとき、長さの次元をもつ定数2z2 e2C̄Ψ = κ2 Ψ,
kB T ϵ1,
κ−1 = p8πλB z2C̄

(5.13)(5.14)

はDebye 遮蔽長とよばれる. ここでλB = e2 /4πkB T ϵ はビヨルン(Bjerrum)長である. 一般の電解質の場合は,1
κ−1 = q,P
4πλB α z2αC̄α(5.15)

である. 今, 系は球対称なので動径方向r = |r|についてのみ考えればよく,

d2 Ψ 2 dΨ+= κ2 Ψ
r dr
dr2(5.16)という式に帰着する. この一般解はYukawa型ポテンシャルaΨ(r) = Ψ0 exp[−κ(r − a)],r

(5.17)

である. コロイド電荷による静電力はκ−1 の程度で遮蔽される. κ−1 は, 表面電荷に異符号イオンが引き寄せられるクーロン力の効果と, イオンの局在をかき消そうとする熱拡散のつり合う距離と考えることができる. したがってDebye遮蔽長κ−1 は電気二重層の厚さとみなすことが出来る. 温度が高く熱エネルギーkB T が大きい場合κは大きくなる. またイオン強度(P

2
α zα C̄ α /2)が大きいほど, イオンによる遮蔽効果が大きくなり κは小さくなる. た第5章 電解質溶液に分散した荷電粒子のシミュレーション

46

とえばz : z対称電解質溶媒中をとして, バルク塩濃度C̄ を考えるとする. 媒質を25 ◦ Cの水とするとビヨルン長はλB = 0.72nmとなり, 実際の数値を入れると式(5.14)は0.3
κ−1 = √ (nm)z C̄(5.18)となる. z = 1, C̄ = 0.1Mではκ−1 = 1nm, z = 1, C̄ = 0.001Mではκ−1 = 10nm となっている.
表面電位Ψ(r = a) = Ψ0 は境界条件dΨ/dr(r = a) = −σe/ϵ から定まる. Ψと表面電荷密度σeの関係は,

σe = ϵκΨ0 (1 + (κa)−1 ),(5.19)となる. すなわち表面電荷の増加に対して、 表面電位が線型に増加する関係を与える. 表面電位が大きいところ
では Debye–Hückel近似は適用できない. 実際は表面電荷の増加に対して表面電位はしだいに増加しにくくなる.
このときの関係式は Poisson–Boltzmann方程式を解くことによって得られるが, 1:1電解質溶媒に対する近似式がLoeb–Overbeek–Wiersema [15]あるいは Ohshima–Healy–White [29, 30] によって提案されている.

5.4

電気泳動の原理

外部から電場E をかけると, Zeに帯電したコロイド粒子は静電気力ZeE を受けて動き出す. 粒子は静電気力によって加速するが流体から粘性抵抗力を受け, 両者がつり合ったところで定常速度V に達し等速運動をする. 粘性抵抗力を半径aの球状粒子に対する6πηaV のStokes抵抗と仮定すると, 力のつりあいは,と書け, 電気泳動易動度は

ZeE = 6πηaV(5.20)ZeV=
E 6πηa(5.21)となる. しかしこれは適当ではなく, 実際の電気泳動易動度はこの値よりも小さくなる. これはコロイド周囲のイオン雰囲気にも静電力が働くことで発生するイオン雰囲気の運動および静電力が考慮されていないことによる. コロ
イドの泳動はイオン雰囲気の運動も伴うので、泳動速度はその分遅くなる. さらに電気二重層が球対称から歪めばそれによる力も考慮しなくてはならなく, 理論的な解析は極めて複雑なものとなる. そこで簡単なモデルについて
電気泳動度に対する解析がいくつかなされている [15, 29].

5.4.1

Smoluchowskiの式

粒子半径aが電気二重層の厚さκ−1 よりも非常に大きいκa ≫ 1のときSmoluchowskiの式を適用することができる.
この場合, 電気二重層厚さが無限に薄い極限となるので, 粒子表面の曲率を無視して, 粒子表面を平板とみなすことができる. 平板に平行な(x方向とする)外部電場E x が加わっているとする. 粒子に固定した座標系を考えて, 粒子の上の乗って液体の動きを見ると, 粒子から無限に離れたところの流体は−V の速度をもつことになる. 粘性抵抗力と静電気力のつりあいを考えると,

η∂2 v x X+
eCα E x = 0∂y2
α(5.22)となる. Poisson方程式によってイオン分布は静電ポテンシャルの2階微分と関係しているので,η∂2 v x
∂2 Ψ
=
ϵ
Ex
∂y2
∂y2

(5.23)となる. 無限遠方で速度勾配, ポテンシャル勾配, ポテンシャルそれぞれ0という境界条件のもと積分して

η[v x (y) + V] − ϵEΨ(y) = 0(5.24)

第5章 電解質溶液に分散した荷電粒子のシミュレーション

47となる. すると粒子表面(y = 0)で速度0であるので,

V
ϵζ
=
E
η

(5.25)というSmoluchowskiの式を得ることができる. ここでゼータ電位ζ は本来はすべり面での電位として定義されるのだが粒子表面における電位Ψ(0)と置き換えられている.

5.4.2

Hückelの式

Smoluchowski の状況とは逆に, 粒子が電気二重層の厚さに対して非常に小さい κa ≪ 1の極限を考える. つま
りZeが点電荷の極限の場合は Hückelの式を適用することができる. 式(5.21)において, 粒子表面のポテンシャルを
クーロンポテンシャル

Ze
4πϵa

(5.26)

V
2 ϵζ
=
E 3 η

(5.27)

ζ=で与えるとというHückelの式が得られる.

5.4.3

Henryの式およびO’Brien–Whiteによる解析

式(5.25)と式(5.27)を結び付けるものとして一般のκaに対してHenryの式ϵζV= f (κa)Eη(5.28)

が知られている. f (κa)はHenry係数といわれ

f (κa) = 1 − 5 exp(κa)E7 (κa) + 2 exp(κa)E5 (κa)"#
2 (κa)2 5(κa)3 (κa)4 (κa)5(κa)4 (κa)6
= +
−
−
+
+
−
exp(κa)E1 (κa)
3
24
72
144
144
12
144

(5.29)(5.30)

で定義される. ここでEn (κa)はn次積分指数関数である. Smoluchowskiの式は f = 1(κa → ∞), Hückelの式は

f = 2/3(κa → 0)に対応する(Fig. 5.1).
1’henry.dat’

0.95

0.9

f(κa)

0.85

0.8

0.75

0.7

0.1

1

10
κa

100

1000

図5.1: Henry係数 f (κa).

Henryの式(5.28)はゼータ電位に対して線形な関係式であり, ゼータ電位が低い場合にのみ適用できる. ゼータ電位が高くなると電気二重層の変形の効果(緩和効果とよばれる)を考慮しなければならない. O’Brien–Whiteは一般

第5章 電解質溶液に分散した荷電粒子のシミュレーション

48のκa, ζ に対して電気泳動度とゼータ電位の関係を数値解析によって提案している [31]. その後, Ohshima–Healy–

Whiteによるκa ≥ 10に対する解析式が提案されている [32].

第5章 電解質溶液に分散した荷電粒子のシミュレーション

49

入力UDF について

5.5

5.5.1 流体の設定
constitutive eqとしてElectrolyteを選ぶと荷電コロイドの運動や, 外部電場の下での電気泳動現象をシミュレートすることができる *1 . 以下, 入力UDFファイルで指定する変数について解説する.

constitutive eq.Electrolyte以下には溶媒とイオン分布の情報を入れる.
•

constitutive eq.Electrolyte.DX. . . 長さの単位量である格子幅∆.

•

constitutive eq.Electrolyte.RHO. . . 溶媒の密度.

•

constitutive eq.Electrolyte.ETA. . . 溶媒の粘度.

•

constitutive eq.Electrolyte.kBT. . . 粒子温度．

•

constitutive eq.Electrolyte.alpha v. . . 粒子の熱ゆらぎ（並進運動）に対する補正項．

•

constitutive eq.Electrolyte.alpha o. . . 粒子の熱ゆらぎ（回転運動）に対する補正項．

•

constitutive eq.Electrolyte.Dielectric cst. . . 溶媒の誘電率.

•

constitutive eq.Electrolyte.Init profile. . . イオン分布の初期設定についてUniform かPoisson Boltzmannを選ぶ. *2•constitutive eq.Electrolyte.Add salt.type. . . saltfree (粒子表面とは反対符号のイオン1種類のイオンを考慮する場合) または salt (正負2種類のイオンを考慮する) を選択する．

– constitutive eq.Electrolyte.Add salt.saltfree.Valency counterion. . . 対イオンの価数.
– constitutive eq.Electrolyte.Add salt.saltfree.Onsager coeff counterion. . . 対イオンのOnsager輸送係数.
– constitutive eq.Electrolyte.Add salt.salt.Valency positive ion. . . 正イオンの価数.
– constitutive eq.Electrolyte.Add salt.salt.Valency negative ion. . . 負イオンの価数.
– constitutive eq.Electrolyte.Add salt.salt.Onsager coeff positive ion. . . 正イオンのOnsager輸送係数.
– constitutive eq.Electrolyte.Add salt.salt.Onsager coeff negative ion. . . 負イオンのOnsager輸送係数.
– constitutive eq.Electrolyte.Add salt.salt.Debye length. . . Debye遮蔽長を指定すると対応する塩濃度が設定される.
•

constitutive eq.Electrolyte.Electric field.type. . . 外部電場のON, OFFを選択する.
– constitutive eq.Electrolyte.Electric field.ON.type. . . DC(直流電場)かAC(交流電場)を選択する.
* constitutive eq.Electrolyte.Electric field.ON.DC.Ex. . . x方向電場の強さ. 交流電場の場合も同じ.
* constitutive eq.Electrolyte.Electric field.ON.DC.Ey. . . y方向電場の強さ. 交流電場の場合も同じ.
* constitutive eq.Electrolyte.Electric field.ON.DC.Ez. . . z方向電場の強さ. 交流電場の場合も同じ.
* constitutive eq.Electrolyte.Electric field.ON.AC.Frequency. . . 交流電場の周波数

5.5.2 オブジェクト（粒子）の設定
object type.typeでは，spherical particle(球状粒子)，chain(フレキシブル鎖)，rigid(剛体)を選択できる．
*1 constitutive eqの他のswitchとして, Newton流体中のコロイド粒子の運動はNavier Stokesを, シア流下におけるNewton流体中のコロイド粒子の運動はShear Navier Stokesを選べばシミュレートすることができる. 荷電粒子の熱揺らぎは考慮されていない*2 Poisson Boltzmannを選ぶと, 特に多粒子のときに時間がかかることがあるので注意する.

第5章 電解質溶液に分散した荷電粒子のシミュレーション

50

5.5.3 空間単位と時間単位
長さの単位としてを格子幅∆を採用している. 時間の単位τ0 ついて流体の密度ρと粘性率ηと格子幅で決まるτ0 = ρ∆2 /ηを採用している．
•

Navier–Stokes方程式でρ = η = ∆ = 1となるような単位系を採用している.

•

仮に入力udfファイルでRHO= A, ETA= B, DX= C と入力した場合, 最大波数kmax はC を用いて与えられ, 時
2間刻みの上限は運動量の拡散時間よりT dump = (A/B)/kmaxと与えられる. 時間刻み∆tはT dump × factorで調整する.
•

現実との対応を考察する．考察したい空間スケールとして，グリッドサイズを1 µmの長さを考える．また
溶媒として水(η = 1 × 10−3 Pa s，ρ = 1 × 103 kg m−3 )を対象とした場合，時間の単位はτ0 = 1 × 10−6 sとな
る．

•

2
2
と(1/kB T Γα )/kmaxの小さな方をT dump とする. 実際のシ
constitutive eq=Electrolyteの場合、(A/B)/kmax

ミュレーションでどちらが用いられたかは，KAPSEL実行時のコマンドライン（標準エラー）出力で確認できる．

第5章 電解質溶液に分散した荷電粒子のシミュレーション

5.6

計算事例

5.6.1

1粒子の電気泳動

51

1粒子の電気泳動シミュレーションの計算例は, 入力UDFとして，Examples/01/フォルダの colloid 1.udfを用いればよい. 具体的には./avs ch/と./avs ch/avs/ が作成されていることを確認した上で以下を実行する.

$ ../../kapsel -Icolloid_1.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例ではメッシュサイズ64 × 64 × 64で 1:1電解質溶媒(粘性係数η = 1, 密度ρ = 1)を考え, 半径a = 5, 界面厚さξ = 2, 帯電量Z = −100, 電場E x = 0.1, Debye遮蔽長κ−1 = 10で計算している. Fig. 5.2には1粒子電気泳動のスナ
ップショットを示している． Fig. 5.3には泳動速度の時間発展を示した. 静電気力と流体抵抗力がつりあうところ
で定常速度を実現していることがわかる. Fig. 5.3のプロットには，plot.py を用いている.
0.011

0.007

0.004

Y

Z

0.000
X

図5.2: +x方向に印加された外部電場E によって電気泳動するコロイド粒子(赤色)の様子. 濃淡は電荷密度分布を, 矢印は溶媒速度場をあらわす.

0"plot.dat" u 2:6

-0.01

-0.02

Vx

-0.03

-0.04

-0.05

-0.06

-0.07
0

1000

2000

3000

4000

time step

図5.3: １個のコロイド粒子の泳動速度の時間発展.

5000

第5章 電解質溶液に分散した荷電粒子のシミュレーション

52

5.6.2 多粒子の電気泳動
粒子数を32個とした電気泳動シミュレーションは， Examples/01/フォルダのcolloid 32.udf で計算できる.
初期配置は，ランダムであり，その他のパラメータは1粒子と同じである. 具体的には./avs ch/と./avs ch/avs/が作成されていることを確認した上で以下を実行する.

$ ../../kapsel -Icolloid_32.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
Fig. 5.4には多粒子系での電気泳動のスナップショットを示している． Fig. 5.5には，平均泳動速度の時間発展を示している．この図では，粒子数 NP = 16, 32, 64の場合のデータがプロットされている．粒子数が増加するにつれて粒子の平均泳動速度が減少することがわかる．
0.04

0.03

0.01

Y

Z
X

0.00

図5.4: +x方向に印加された外部電場E によって電気泳動するコロイド粒子(緑色)の様子. 濃淡は電荷密度分布を, 矢印は溶媒速度場をあらわす.

0
Np=16
Np=32
Np=64

-0.005-0.01-0.015Vx-0.02-0.025-0.03-0.035-0.04-0.045
-0.05
0

5000

10000

15000
time

20000

25000

30000

図5.5: 多粒子系での平均泳動速度の時間発展. 上から粒子数 N p = 64, 32, 16のデータである.

第5章 電解質溶液に分散した荷電粒子のシミュレーション

53

5.6.3 正負電荷の粒子混合系の電気泳動
正に帯電したコロイド粒子を32個, 負に帯電したコロイド粒子を32個の混合系の電気泳動は，Examples/01/フ
ォ ル ダ の colloid p32m32.udf で 計 算 で き る. そ の 他 の パ ラ メ ー タ は1粒 子 と 同 じ で あ る. 具 体 的 には./avs ch/と./avs ch/avs/ が作成されていることを確認した上で以下を実行する.

$ ../../kapsel -Icolloid_p32m32.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
Fig. 5.6には，正に帯電したコロイド粒子を32個, 負に帯電したコロイド粒子を32個の混合系の電気泳動のスナ
ップショットを表している．
0.01

0.00

-0.00

Z
Y
X

-0.01

図5.6: +x方向に印加された外部電場E によって電気泳動する正に帯電したコロイド粒子(赤色)と負に帯電したコロイド粒子(青色)の様子. 正符号コロイドは+x方向に, 負符号コロイドは−x方向に泳動している.

一方，colloid p5km5k.udfでは，正に帯電したコロイド粒子を5000個，負に帯電したコロイド粒子を5000個の混合系の電気泳動を計算できる．その他のパラメータは1粒子と同じである．

$ ../../kapsel -Icolloid_p5km5k.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
Fig. 5.7には，正に帯電したコロイド粒子を5000個，負に帯電したコロイド粒子を5000個の混合系の電気泳動のスナップショットを表している．

5.6.4

AVS/Expressによる可視化

output.AVSをONとしてAVS形式のファイルを出力する. AVS/Express*3 でavs charge.vファイルを読み込み
Read fieldモジュールにフィールドファイルdata.fldを指定すると粒子, 溶媒速度場, 電荷分布をそれぞれ可視化することができる. Fig. 5.2, Fig. 5.4, Fig. 5.6は avs charge.vを用いて可視化している.

5.6.5

Gourmetによる可視化

Gourmetを 起 動 し てoutput.udf を 読 み 込 み, GourmetのPythonパ ネ ル で KAPSELに 付 属 のPythonス ク リ プ
トshow field.pyをLoad してからRun するとグラフィックウインドウが開き, 粒子, 溶媒速度場, 電荷密度分*3 http://www.avs.com/

第5章 電解質溶液に分散した荷電粒子のシミュレーション

54

図5.7: +x方向に印加された外部電場E によって電気泳動する正に帯電したコロイド粒子(赤色)と負に帯電したコロイド粒子(緑色)の様子. 正符号コロイドは+x方向に, 負符号コロイドは−x方向に泳動している.

布の可視化が行われる*4 . そして, グラフィックウインドウの最下段にある再生ボタンをクリックすればアニメー
ションがスタートする. 粒子は出力UDFにレコードデータとして出力される粒子座標データをもとに可視化しているので, output.UDFをONとする必要がある. さらに溶媒速度場と電荷密度分布はAVS形式で出力されるBinaryファイルを読み込んでいるので, output.AVSをONとしてさらに output.AVS.ON.FileTypeをBinaryにする必要がある.
粒子の運動のみを表示したい場合は，particleshow.pyを用い，output.UDFをONとする必要がある．

5.6.6

gnuplotによるグラフ化

UDFに出力されたレコードデータから粒子の位置, 速度の時系列変化を gnuplot*5 を用いてグラフ化することができる [33]. Gourmetを起動してoutput.udf を読み込み, GourmetのPythonパネルで KAPSELに付属のPythonス
クリプトplot.pyをLoad してからRunすると, 粒子の位置, 速度を格納しているレコードデータからグラフ描画
用シートを作成することができる. データをプロットするためには“View”ボックスでTreeについているチェック
をTableに変更し, 変数の一覧にGraphSheetがあるので選択してGraphSheetのデータをブラウズする. そして,GourmetのPlotパネルでMakeしてからPlotすると Fig. 5.3のようなグラフを描くことができる. 線種が多すぎて見づらいときはPlotパネルのエディター中に作成されたplotコマンドから不要な部分を削除すればよい. Gourmetからgnuplotを呼び出す方法は文献 [33]の第3章に詳しく記述されている.

*4 Gourmet 2003以前のバージョンには不具合があり, このスクリプトが正常に動作しないことが確認されている. その場合は代りに付属のPythonスクリプトparticleshow.pyを用いて可視化する. 溶媒速度場や電荷密度分布は表示されず, 粒子のみが表示される.
*5 http://www.gnuplot.info/

55

第6章

二成分相分離流体に分散した粒子のシミュレ
ーション
6.1

粒子が添加された二成分相分離流体

非相溶な二成分流体が示す多様な相分離構造の制御は，工業的応用の観点において極めて重要である．例えば，一方の成分がµm以下のオーダーの大きさのドロップレットとして，もう一方の流体内に分散しているエマルショ
ンは，親和性の低い二つの流体が共存する性質を生かして，食品や化粧品，石油回収等，幅広い分野で利用されている．しかし，エマルションは元来熱力学的に不安定であることから，その安定化や構造制御が応用上課題となっていた． 1900年代初頭，Ramsden[34]とPickering[35]は，不溶な微粒子を添加することでエマルションを安定化できることを報告した．これは，微粒子が二つの流体間の界面に吸着することで界面活性剤のような働きを示すことによる． RamsdenとPickeringの報告以来，シリカやカーボンブラック，金属錯体といった様々な微粒子をエマルションに添加する研究が盛んに行われてきた[36, 37]．また近年では，共連続構造を示す二成分相分離流
体界面を微粒子で安定化することで得られるBijelと呼ばれる新しい複合材料も注目を集めている[38, 39]．このような微粒子添加による相分離構造制御では，流体–流体間の相互作用に加えて，流体–粒子間の相互作用や流体界面–粒子間の親和性が重要な因子となる． KAPSELではそれらの相互作用を考慮した二成分相分離流体に添加された粒子をシミュレーションする機能が実装されており，上記したような粒子添加による相分離構造やレオロジー
的性質への影響を調べることができる．

KAPSELで用いられるSmoothed Profile(SP)法で一成分流体中の粒子を扱う場合は，粒子–流体間の界面のみを考慮すればよかったが，二成分流体では新たに流体–流体間界面を表現する必要がある．そこで，二成分相分離流体に分散した粒子のシミュレーションでは，新たに二成分相分離流体を区別する界面関数ψを導入し，その時間発展を記述する(図6.1)． KAPSELでは，二成分相分離流体のダイナミクスを記述するモデルとして良く知られているmodel H[40]をSP法と組み合わせることで，固体粒子を含む二成分相分離流体を扱う．

6.2節に，二成分相分離流体を扱うために拡張されたSP法について概説する． 6.3節では，KAPSELで使用するシミュレーションパラメータについて説明する． 6.4節では，本機能を用いた解析事例として，二成分相分離流体に分散する固体粒子とPickeringエマルションのシミュレーションを紹介する．

6.2

理論的背景と基礎方程式

6.2.1 二成分相分離流体の基礎方程式
model H[40]では，二成分相分離流体の運動方程式は，化学ポテンシャル勾配項を導入したNavier–Stokes(NS)方程式で記述される:

∂u
1
1
ψ
ϕ
+ (u · ∇)u = − ∇p + ∇ · η(∇u + ∇ut ) − ∇µψ − ∇µϕ + ϕ f p .
∂t
ρ
ρ
ρ
ρ

(6.1)

第6章 二成分相分離流体に分散した粒子のシミュレーション

56

図6.1: 二成分相分離流体に分散した粒子を記述する界面関数．流体と粒子を識別するSP関数ϕに加えて，二成分流体を区別する界面関数ψが導入される．粒子–流体間界面の界面厚みはξ，流体–流体間界面の界面厚みはξψ で与えられる．図では，各流体のバルクのψの値が1及び−1として記されているが，実際は二重井戸型ポテンシャル f (ψ)の設定に依存する．

ここで，ηは粘度であり，二成分流体では場所に依存する物理量として扱う．また，上付き添字のtは，転置行列を表す． µψ とµϕ は，それぞれψとϕに対する局所的な化学ポテンシャルであり，Ginzburg–Landau(GL)自由エネルギ
ーF の汎関数微分により与えられる: µψ = δF/δψ，µϕ = δF/δϕ． KAPSELで用いるF の詳細は後述する．
また，流体界面関数ψの時間発展は，Cahn–Hilliard(CH)方程式によって記述される:∂ψ= −∇ · J.
∂t

(6.2)

ここで， J は物質流束であり，ここでは移流項を含む形式

J = ψu − κ∇µψ

(6.3)

で表される．また，κは二成分流体の易動度である．同じ記号を用いるが，第5章で用いたデバイ長κ−1 とは無関係である．

図6.2: パラメータzによる粒子分散の変化．

第6章 二成分相分離流体に分散した粒子のシミュレーション

57

次に，GL自由エネルギーF について説明する． KAPSELでは，粒子と相互作用する二成分流体の相分離を扱う
ため， F は次のように与えられる:

F=

Z



α
dr f (ψ) + (∇ψ)2 + wξψ|∇ϕ|2 + d(ψ − ψ̄)2 ϕ + zξψ ϕ(∇ψ)2 .
2

(6.4)

関数 f (ψ)は，流体界面関数ψのローカルなダイナミクスを支配する二重井戸型ポテンシャルである． KAPSELでは，Landau型ポテンシャル

f (ψ) =

a 4 b 2
ψ − ψ
4
2

(6.5)

や，Flory–Huggins(FH)型ポテンシャル"
f (ψ) = kB T 0ψ
(1 − ψ)ln ψ +ln(1 − ψ) + χψ(1 − ψ)
NA
NB

#
(6.6)

が利用できる．ここで，式(6.5)中のaとbは，各項の大小を表すパラメータである．また，式(6.6)のkB T 0 は基準となる熱エネルギー単位， NA とNB は二成分流体の各成分の重合度であり，χはFloryの相互作用パラメータである．
式(6.4)の第2項は，二成分流体間の界面エネルギー項を表す．また，第3項は粒子–流体間相互作用を表し，第4項
aψ30 −(b−2d)ψ0
を通して粒子内部のψを任意の値ψ0 に固定するための項である*1．第5項は粒子と二成分流体間2dの界面との相互作用を表す項であり，zは係数，ξψ は二成分流体間の界面厚さを表す *2．図6.2にパラメータzによはψ̄ =る粒子分散の変化の模式図を示す． z < 0の場合， F は粒子が流体–流体間界面上に存在するときに最も低くなるため，粒子は流体–流体間界面上へと移動する．一方，z > 0の場合，粒子は流体間界面から遠ざかるようになる．また，ξψ は関数 f (ψ)に依存する量であるが，Landauの二重井戸型ポテンシャルの場合，

r
ξψ =

α
2b

(6.7)

で表される[41]．
粒子を含む二成分相分離流体のシミュレーションでは，流体と粒子の運動方程式( 式(6.1)， (3.4)–(3.6) )とともに，さらに二成分流体を区別する流体界面関数ψの時間発展方程式である式(6.2)を逐次的に解くこととなる．

KAPSELでは，これらの方程式を，semi-staggered Arakawa B 格子[42]上で，Marker And Cell (MAC) 法[43, 44]を用いて解いている．また，第4章に示す手法と組み合わせることで，二成分相分離流体に分散した粒子のシミュレ
ーションをせん断流下でも行うことができる．解法の詳細は付録Dに示す．

6.2.2 懸濁液の粘度
単成分流体に粒子が添加された懸濁液のせん断応力と粘度は，式(4.5)，(4.6)で得られる．一方，二成分相分離
流体に粒子が添加された系では，流体–流体界面における表面張力項の寄与を考慮する必要がある．この流体界面による応力テンソルの xy成分は，

1
xy
σint
=
V

Z

∂ψ ∂ψ
dr −α
∂x ∂y

!
(6.8)

で表される[45]．従って，この系のみかけの粘度は，式(4.6)に式(6.8)の寄与を加えることで得られる． 6.4.2節で，定常せん断流下での粘度の計算例を示す．
*1 d=0としてはいけない．この項を無視したければd=0.0001などとする．
*2 KAPSELでは関数 f (ψ)においてFlory–Huggins型ポテンシャルを設定するとき，この項は無効化される．

第6章 二成分相分離流体に分散した粒子のシミュレーション

58

入力UDFについて

6.3

6.3.1 流体の設定
KAPSELでは，二成分相分離流体に分散した粒子のシミュレーションを，初期流れ場なし，あるいはせん断流下で行うことができる．それぞれ，constitutive eqにおいて，Navier Stokes Cahn Hilliard FDMとShear NS

LE CH FDMを選ぶとシミュレーションできる．
初期流れ場なしのシミュレーション設定

constitutive eq.Navier Stokes Cahn Hilliard FDM以下で二成分相分離流体の情報を入れる．
•

constitutive eq.Navier Stokes Cahn Hilliard FDM.NS solver.type. . . NS方 程 式 の 解 法 をexplicit scheme(陽解法)あるいはimplicit scheme (陰解法)から選択する*3．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.NS solver.implicit scheme.tolerance. . . NS方程式の陰解法の収束判定基準．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.NS solver.implicit scheme.maximum iteration. . . NS方 程式の陰解法の最大反復回数．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.NS solver.implicit scheme.viscosity change. . . ONを 選 ぶと粘度の異なる二成分相分離流体(A/B)のシミュレーションができる．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.NS solver.implicit scheme.ON.ETA A. . . A成 分 流 体 の 粘度．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.NS solver.implicit scheme.ON.ETA B. . . B成 分 流 体 の 粘度．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.CH solver.type. . . CH方程式の解法をexplicit scheme(陽解法)あるいはimplicit scheme(陰解法)から選択する*4．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.CH solver.implicit scheme.tolerance. . . CH方 程 式 の 陰 解法の収束判定基準．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.CH solver.implicit scheme.maximum iteration. . . CH方 程式の陰解法の最大反復回数．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.DX. . . 長さの単位量である格子幅∆．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.RHO. . . 流体の密度ρ．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.ETA. . . 流体の粘度η*5．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.kBT. . . 粒子温度．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.alpha v. . . 粒子の並進温度に対する補正項．

*3 KAPSELには， NS方程式の陰解法としてMAC陰解法[46]が実装されている．陰解法を用いると，計算時間は増えるものの粘度が異なる二成分相分離流体のシミュレーションを行うことができる．解法の詳細は付録D.1に示す． implicit schemeを選ぶと，デフォル
トで線形連立方程式の反復解法としてBiCGSTAB法[47]が選択されるとともに，表中に示す新たな設定項目が現れる．陰解法の反復解法では，残差のオーダーがtoleranceで設定した値より小さくなると，解が収束したと判定される．また， maximum iterationよりも反復回数が多くなると解が得られなかったと判定され，シミュレーションは終了される． Lisライブラリ[48]と連携することで，BiCGSTAB法以外の反復解法を使って計算することもできる．詳細は付録Eに示す．
*4 CH方程式の解法として，陽解法の他に，時間微分において後退差分，非線形のポテンシャル項についてはAdams–Bashforth法による外挿値を用いた半陰解法を実装している[49]．解法の詳細は付録Dに示す．また，CH方程式の半陰解法において，Lisライブラリ[48]と連携することでBiCGSTAB法以外の反復解法を使って計算することができる．詳細は付録Eに示す．
*5 シミュレーションの時間刻みはここで設定した粘度をもとに設定される． viscosity changeをONにしたときの二成分流体の粘度は時間刻みに影響を与えない．そのため，ここで設定したETAより極端に大きなETA AやETA Bを設定すると，シミュレーション精度が悪化
したり計算不安定となる可能性があることに注意する．詳細は6.3.3節に示す．

第6章 二成分相分離流体に分散した粒子のシミュレーション

59•

constitutive eq.Navier Stokes Cahn Hilliard FDM.alpha o. . . 粒子の回転温度に対する補正項．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.type. . . 二成分相分離流体の二重井戸型ポテンシ
ャルをLandau(Landau型)とFlory Huggins(FH型)から選択する．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Landau.composition ratio. . . Landau型 ポ テ ン シ
ャル使用時の流体の組成比．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Landau.initial fluctuation. . . Landau型 ポ テ ン シ
ャル使用時の初期濃度揺らぎ．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Landau.a. . . Landau型ポテンシャル使用時の4次の項のパラメータa．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Landau.b. . . Landau型ポテンシャル使用時の2次の項のパラメータb．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Landau.d. . . Landau型ポテンシャル使用時の粒子内部の流体領域の組成を任意の値ψ0 に保つためのパラメータd．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Landau.w. . . Landau型ポテンシャル使用時の粒子–流体間相互作用のパラメータw．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Landau.z. . . Landau型ポテンシャル使用時の粒子と流体–流体界面間相互作用のパラメータz*6．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Landau.psi 0. . . 粒子内部のψを任意の値ψ0 にするためのパラメータ．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Landau.alpha. . . Landau型ポテンシャル使用時の流体–流体界面エネルギーのパラメータα．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Landau.kappa. . . Landau型ポテンシャル使用時の易動度κ．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Flory Huggins.composition ratio. . . FH型ポテン
シャル使用時の流体の組成比．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Flory Huggins.initial fluctuation. . . FH型 ポ テ ン
シャル使用時の初期濃度揺らぎ．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Flory Huggins.na. . . A成分の重合度NA．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Flory Huggins.nb. . . B成分の重合度NB．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Flory Huggins.chi. . . Floryの相互作用パラメー
タχ．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Flory Huggins.d. . . FH型ポテンシャル使用時の粒子内部の流体領域の組成を任意の値ψ0 に保つためのパラメータd．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Flory Huggins.w. . . FH型ポテンシャル使用時の粒子–流体間相互作用のパラメータw．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Flory Huggins.z. . . FH型ポテンシャル使用時の粒子と流体–流体界面間相互作用のパラメータz*7．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Flory Huggins.psi 0. . . FH型 ポ テ ン シ ャ ル 使 用
時に粒子内部のψを任意の値ψ0 にするためのパラメータ．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Flory Huggins.alpha. . . FH型ポテンシャル使用
時の流体–流体界面エネルギーのパラメータα．

*6 粒子と流体–流体界面間相互作用は，Landau型ポテンシャルを用いた場合だけ有効である．
*7 粒子と流体–流体界面間相互作用は，Landau型ポテンシャルを用いた場合だけ有効である．

第6章 二成分相分離流体に分散した粒子のシミュレーション•

60

constitutive eq.Navier Stokes Cahn Hilliard FDM.Potential.Flory Huggins.kappa. . . FH型ポテンシャル使用時の易動度κ．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Wall Potential.type. . . ONを選ぶと平面壁が導入されたシミュレーションができる．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Wall Potential.ON.w. . . 平面壁の流体の親和性を決めるパ
ラメータ．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Wall Potential.ON.psi 0.magnitude. . . 平 面 壁 と 流 体 の 親
和性の大きさを決めるパラメータ．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Wall Potential.ON.psi 0.profile. . . uniformを 選 ぶ と 平 面
壁面上で均一な流体の親和性が設定され，user specifyを選ぶと手動設定できる．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Wall Potential.ON.psi 0.user specify.PSI0[][]. . . 平 面 壁 面
上の流体の親和性の値を手動設定する．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Wall Potential.ON.DRYING.type. . . ONを選ぶと乾燥のシミュレーションができる．

•

constitutive eq.Navier Stokes Cahn Hilliard FDM.Wall Potential.ON.DRYING.ON.psi dry. . . 乾燥速度を決めるパラメータ．

せん断流下のシミュレーション設定

Shear NS LE CH FDM以下で二成分相分離流体の情報を入れる．
•

constitutive eq.Shear NS LE CH FDM.NS solver.type. . . NS方程式の解法をexplicit scheme(陽解法)ある
いはimplicit scheme(陰解法)から選択する*8．

•

constitutive eq.Shear NS LE CH FDM.NS solver.implicit scheme.tolerance. . . NS方程式の陰解法の収束判
定基準．

•

constitutive eq.Shear NS LE CH FDM.NS solver.implicit scheme.maximum iteration. . . NS方程式の陰解法の最大反復回数．

•

constitutive eq.Shear NS LE CH FDM.NS solver.implicit scheme.viscosity change. . . ONを選ぶと粘度の異なる二成分相分離流体(A/B)のシミュレーションができる．

•

constitutive eq.Shear NS LE CH FDM.NS solver.implicit scheme.ON.ETA A. . . A成分流体の粘度．

•

constitutive eq.Shear NS LE CH FDM.NS solver.implicit scheme.ON.ETA B. . . B成分流体の粘度．

•

constitutive eq.Shear NS LE CH FDM.CH solver.type. . . CH方程式の解法をexplicit scheme(陽解法)あるいはimplicit scheme(陰解法)から選択する*9．

•

constitutive eq.Shear NS LE CH FDM.CH solver.implicit scheme.tolerance. . . CH方程式の陰解法の収束判
定基準．

•

constitutive eq.Shear NS LE CH FDM.CH solver.implicit scheme.maximum iteration. . . CH方程式の陰解法•

constitutive eq.Shear NS LE CH FDM.DX. . . 長さの単位量である格子幅∆．

•

constitutive eq.Shear NS LE CH FDM.RHO. . . 流体の密度．

•

constitutive eq.Shear NS LE CH FDM.ETA. . . 流体の粘度*10．

の最大反復回数．

*8 初期流れ場なしのシミュレーションと同様，NS方程式の陰解法としてMAC陰解法[46]が実装されている．
*9 初期流れ場なしのシミュレーションと同様，CH方程式の解法として陽解法の他に半陰解法が実装されている[49]．
*10 シミュレーションの時間刻みはここで設定した粘度をもとに設定される． viscosity changeをONにしたときの二成分流体の粘度は時間刻みに影響を与えない．そのため，ここで設定したETAより極端に大きなETA AやETA Bを設定すると，シミュレーション精度が悪化
したり計算不安定となる可能性があることに注意する．詳細は6.3.3節に示す．

第6章 二成分相分離流体に分散した粒子のシミュレーション

61•

constitutive eq.Shear NS LE CH FDM.kBT. . . 粒子温度．

•

constitutive eq.Shear NS LE CH FDM.alpha v. . . 粒子の並進温度に対する補正項．

•

constitutive eq.Shear NS LE CH FDM.alpha o. . . 粒子の回転温度に対する補正項．

•

constitutive eq.Shear NS LE CH FDM.Potential.type. . . 二 成 分 相 分 離 流 体 の 二 重 井 戸 型 ポ テ ン シ ャ ル
をLandau(Landau型)とFlory Huggins(FH型)から選択する．

•

constitutive eq.Shear NS LE CH FDM.Potential.Landau.composition ratio. . . Landau型ポテンシャル使用時の流体の組成比．

•

constitutive eq.Shear NS LE CH FDM.Potential.Landau.initial fluctuation. . . Landau型ポテンシャル使用時の初期濃度揺らぎ．

•

constitutive eq.Shear NS LE CH FDM.Potential.Landau.a. . . Landau型ポテンシャル使用時の4次の項のパラ
メータa．

•

constitutive eq.Shear NS LE CH FDM.Potential.Landau.b. . . Landau型ポテンシャル使用時の2次の項のパラ
メータb．

•

constitutive eq.Shear NS LE CH FDM.Potential.Landau.d. . . Landau型ポテンシャル使用時の粒子内部の流体領域の組成を任意の値ψ0 に保つためのパラメータd．

•

constitutive eq.Shear NS LE CH FDM.Potential.Landau.w. . . Landau型ポテンシャル使用時の粒子–流体間相互作用のパラメータw．

•

constitutive eq.Shear NS LE CH FDM.Potential.Landau.z. . . Landau型ポテンシャル使用時の粒子と流体–流体界面間相互作用のパラメータz*11•

constitutive eq.Shear NS LE CH FDM.Potential.Landau.psi 0. . . 粒子内部のψの値を決めるパラメータ．

•

constitutive eq.Shear NS LE CH FDM.Potential.Landau.alpha. . . Landau型ポテンシャル使用時の流体–流体
界面エネルギーのパラメータα．

•

constitutive eq.Shear NS LE CH FDM.Potential.Landau.kappa. . . Landau型ポテンシャル使用時の易動度κ．

•

constitutive eq.Shear NS LE CH FDM.Potential.Flory Huggins.composition ratio. . . FH型ポテンシャル使用
時の流体の組成比．

•

constitutive eq.Shear NS LE CH FDM.Potential.Flory Huggins.initial fluctuation. . . FH型ポテンシャル使用
時の初期濃度揺らぎ．

•

constitutive eq.Shear NS LE CH FDM.Potential.Flory Huggins.na. . . A成分の重合度NA．

•

constitutive eq.Shear NS LE CH FDM.Potential.Flory Huggins.nb. . . B成分の重合度NB．

•

constitutive eq.Shear NS LE CH FDM.Potential.Flory Huggins.chi. . . Floryの相互作用パラメータχ．

•

constitutive eq.Shear NS LE CH FDM.Potential.Flory Huggins.d. . . FH型ポテンシャル使用時の粒子内部の流体領域の組成を任意の値ψ0 に保つためのパラメータd．

•

constitutive eq.Shear NS LE CH FDM.Potential.Flory Huggins.w. . . FH型ポテンシャル使用時の粒子–流体
間相互作用のパラメータw．

•

constitutive eq.Shear NS LE CH FDM.Potential.Flory Huggins.z. . . FH型ポテンシャル使用時の粒子と流体–流体界面間相互作用のパラメータz*12．

•

constitutive eq.Shear NS LE CH FDM.Potential.Flory Huggins.psi 0. . . FH型ポテンシャル使用時に粒子内部のψの値を決めるパラメータ.

•

constitutive eq.Shear NS LE CH FDM.Potential.Flory Huggins.alpha. . . FH型ポテンシャル使用時の流体–流体界面エネルギーのパラメータα．

•

constitutive eq.Shear NS LE CH FDM.Potential.Flory Huggins.kappa. . . FH型 ポ テ ン シ ャ ル使用 時 の 易 動*11 粒子と流体–流体界面間相互作用は，Landau型ポテンシャルを用いた場合だけ有効である．
*12 粒子と流体–流体界面間相互作用は，Landau型ポテンシャルを用いた場合だけ有効である．

第6章 二成分相分離流体に分散した粒子のシミュレーション

62

度κ．
•

constitutive eq.Shear NS LE CH FDM.External field.type. . . DC(定常せん断流れ)または AC(振動せん断流
れ)を選択する．

•

constitutive eq.Shear NS LE CH FDM.External field.DC.Shear rate. . . せん断速度γ̇．

•constitutive eq.Shear NS LE CH FDM.External field.AC.Shear rate. . . 振動せん断速度の振幅γ̇0．

•constitutive eq.Shear NS LE CH FDM.External field.AC.Frequency. . . せん断速度の周波数ω．

6.3.2 オブジェクト（粒子）の設定
object type.typeでは，spherical particle(球状粒子)，chain(フレキシブル鎖)，rigid(剛体)を選択でき
る．

6.3.3 空間単位と時間単位
長 さ の 単 位 と し て 格 子 幅∆を 採 用 し て い る． 時 間 の 単 位τ0 は， 流 体 の 密 度ρと 粘 度ηと 格 子 幅 で 決 まるτ0 = ρ∆2 /ηを採用している．ここで，粘度が異なる二成分相分離流体のシミュレーションの場合，時間の単位を計算する際に用いる粘度ηは， constitutive eq.*.ETAで設定されたものであり，各成分の流体の粘度，constitutive eq.*.NS solver.implicit scheme.ON.ETA Aやconstitutive eq.*.NS solver.implicit
scheme.ON.ETA Bでないことに注意する (ここで，*は，Navier Stokes Cahn Hilliard FDMとShear NS LE CH
FDMである)．
•

仮に入力udfファイルでRHO= A，ETA= B，DX= C と入力した場合，最大波数kmax はC を用いて与えられ，
2
時間刻みの上限は運動量の拡散時間よりT dump = (A/B)/kmaxと与えられる．時間刻み∆tはT dump × factorで

調整する．
•

現実との対応を考察する．考察したい空間スケールとして，グリッドサイズを1 µmの長さを考える．また
溶媒として水(η = 1 × 10−3 Pa s，ρ = 1 × 103 kg m−3 )を対象とした場合，時間の単位はτ0 = 1 × 10−6 sとなる．

第6章 二成分相分離流体に分散した粒子のシミュレーション

63

計算事例

6.4

本節では，二成分相分離流体に分散した粒子のシミュレーション事例を示す． 6.4.1節では，短時間のシミュレ
ーションを通して，KAPSELを使ったシミュレーションの手続き全体を概観する．ここでは，初期流れ場なしの二成分相分離流体中の粒子を扱う． 6.4.2節では，せん断流下の粒子が添加された二成分相分離流体のシミュレー
ションを行い，レオロジー特性を調べる． 6.4.3節では，Pickeringエマルション[35]のシミュレーション事例を紹介する．

6.4.1 二成分相分離流体に分散する粒子の運動
シミュレーションの実行
本節で実行するシミュレーションのUDFファイル一式は， Examples/11a/フォルダにある．下記のコマンドでExamples/11a/フォルダに移動し，シミュレーションを実行できる．

$ cd Examples/11a$ ../../kapsel -Iinput.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
このシミュレーションでは，式(6.5)のLandau二重井戸型ポテンシャルにより相分離する二成分流体を扱う．各パ
ラメータは，シミュレーション実行時に標準出力される:################################## Landau potential is selected.
# Parameters# Composition ratio: 0# Initial fluctuation : 0.05
# a
: 1
# b
: 1
# d
: 1
# w
: -1
# z
: 0
# psi0_p : 0# alpha : 1# kappa : 1##################################
本シミュレーションでは，Composition ratioが0に設定されており，二成分流体がどちらも等しい量存在する系となっている．また，wが−1に設定されていることから，粒子は片方の成分(A成分)と親和性が高い系となっている． psi0 pは，粒子内部のψの値を表すパラメータである．
シミュレーションが正しく終了すると，以下のようにシミュレーションにかかった時間が表示される．

#Simulation has ended!
#Total Running Time (s):
#
(m):
#
(h):
#Average Step Time (s):
#
(m):
#
(h):

11.89
0.20
0.00
0.01
0.00
0.00

計算時間は実行環境によって異なるが，本シミュレーションの場合数十秒程度で終了するはずである．シミュレーションが終了すると，Examples/11a/フォルダに下記のファイルが出力される:•

output.udf•

restart.udf•

fluid phase.xmf

第6章 二成分相分離流体に分散した粒子のシミュレーション•

flux field.xmf•

particle coordinate.xmf•

particle phase.xmf•

velocity field.xmf•

flux *.h5•

orderparam *.h5•

particle *.h5•

particle data *.h5•

velocity *.h5

64

ここで，*は連番を表す． output.udfはシミュレーション結果を含む出力UDFファイルであり，GOURMETで読み込むことができる． GOURMETでのデータの確認方法は後述する．また，restart.udfはシミュレーションを
途中から再開するためのリスタート用UDFファイルである．拡張子h5の連番のファイル群には各出力ステップにおけるシミュレーションデータがHDF5バイナリ形式で格納されている．このファイル群は，時系列のシミュレー
ションデータを管理するeXtensible Data Model and Format(XDMF)ファイルにより，まとめて扱うことができる．

XDMFファイルは拡張子xmf のファイルであり，KAPSELでは以下のように拡張子h5のファイル群と関連付けられる:•

fluid phase.xmf. . . 二成分流体の識別関数ψのデータ(orderparam *.h5)•

flux field.xmf. . . 物質流束 J(式6.3)のデータ(flux *.h5)•

particle coordinate.xmf. . . 粒子の座標データ(particle data *.h5)•

particle phase.xmf. . . 粒子識別関数ϕのデータ(particle *.h5)•

velocity field.xmf. . . 流体の速度場uのデータ(velocity *.h5)

XDMFファイルはParaView *13 やMayavi *14 等の可視化ソフトを使って表示することができる．次節でParaViewによる可視化の例を示す．また，拡張子h5のファイルに格納されたデータは，h5dumpコマンドで直接確認できる．
以下は，orderparam 0.h5のデータを確認するコマンドである．

$ h5dump orderparam_0.h5

シミュレーションデータの可視化
本節では，GOURMETとParaViewを用いてシミュレーション結果を確認する．

GOURMETを用いたシミュレーションデータの可視化
GOURMETで出力UDFファイル(output.udf)を読み込むと，シミュレーションで用いたパラメータの一覧や，各出力ステップのシミュレーション結果を確認することができる(図6.3(a))．また，Examples/11a/フォルダ内にあるgourmet particle field show.pyをGOURMETに読み込むと，二成分流体の識別関数ψを可視化することができる．具体的には，GOURMETの下部のPythonパネルでこのスクリプトを読み込んで実行すると，新たな描
画ウィンドウが開き，シミュレーション結果をアニメーションで確認できる(図6.3(b))．図中では，粒子が白の球，
流体界面が青い等値面として表示されている．これらの表示はスクリプトを編集することで変更できる．

ParaViewを用いたシミュレーションデータの可視化
ParaViewでXDMFファイルを読み込むと，結果の可視化や解析を行うことができる． Examples/11a/フォル
ダにあるpv sample.pvsm は， ParaView用のStateファイルである． ParaViewを起動し，左上のFilesからLoad*13 https://www.paraview.org/*14 http://docs.enthought.com/mayavi/mayavi/

第6章 二成分相分離流体に分散した粒子のシミュレーション(a) 出力UDFファイルに格納されたパラメータの表示．

65(b) Pythonスクリプトによる二成分流体の識別関数ψの可視化．

図6.3: GOURMETによるシミュレーション結果の可視化．

図6.4: Paraviewによるシミュレーション結果の可視化．

State Filesを選択し，pv sample.pvsmを読み込むと *15 ，二成分流体の識別関数ψを可視化できる(図6.4)．図中では，粒子が白の球として表示されており，二成分流体の一方の成分は赤色，もう一方の成分は透過して表示されている． ParaViewは，データを可視化できるだけでなく，強力な解析機能を多く有している．詳細は公式ドキュメント[50]を参照頂きたい．

第6章 二成分相分離流体に分散した粒子のシミュレーション

66

S(q) vs q 5steps
101
100

S(q)

10 1
10 2
10 3
10 4
10 5
100

q

図6.5: Pythonスクリプトによる解析例: 静的構造因子S (q)を波数qに対してプロットしている(5ステップ目の結果を示す)．

Pythonスクリプトによるシミュレーションデータの解析
KAPSELで出力されたシミュレーションデータは，Pythonスクリプトで読み込み，別途解析することもできる．

Examples/11a/フォルダには，相分離構造の静的構造因子S (q)[51]を計算するPythonスクリプトが同梱されている． Pythonパッケージのh5py，scipy，matplotlibが導入された環境で以下のコマンドを実行することで，各時間ステップにおけるS (q)のグラフが逐次得られる(図6.5)．

$ python sq_analysis.py

6.4.2 せん断流下の二成分相分離流体に分散する粒子の運動
本節ではExamples/11/フォルダの計算事例について紹介する．ここでは，定常せん断流下の粒子が添加された二成分相分離流体のシミュレーションを行う．シミュレーションは，以下のコマンドで実行できる:$ cd Examples/11$ ../../kapsel -Iinput.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例では，粒子半径a = 4，界面厚みξ = 2の粒子が128個添加された二成分相分離流体にせん断速度γ̇ = 0.01の定常せん断流が印加されている．また，粒子温度はkB T = 1に設定されている．計算メッシュサイズは64×64×64である．二成分流体は式(6.5)のLandau二重井戸型ポテンシャルにより相分離する．各パラメータは，シミュレーシ
ョン実行時に標準出力される:################################## Landau potential is selected.
# Parameters# Composition ratio: 0# Initial fluctuation : 0.5
# a
: 1
# b
: 1
# d
: 1
# w
: 0
*15 ”Load State Data File Options”で“Search files under specified directory”を選択し，”Data Directory”に適切なパスを指定する．

第6章 二成分相分離流体に分散した粒子のシミュレーション

67

# z
: 0
# psi0_p : 0# alpha : 1# kappa : 1##################################
せん断流下でのシミュレーションでは，各ステップごとに以下のデータが1行ずつ標準エラー出力される:•

1:time. . . 経過時間•

2:shear rate. . . せん断速度•

3:degree oblique. . . 斜交座標系の歪み *16•

4:shear strain temporal. . . 印加された歪み(γ̇t)•

5:lj dev stress temporal. . . 粒子間ポテンシャル由来のせん断応力•

6:shear stress temporal old. . . 粒子–流体間相互作用由来のせん断応力•

7:shear stress temporal new. . . 粒子–流体間相互作用由来のせん断応力 *17•

8:reynolds stress. . . レイノルズせん断応力•

9:fluid stress. . . バルク流体由来のせん断応力•

10:interfacial stress. . . 流体–流体界面由来のせん断応力•

11:apparent stress. . . 懸濁液のせん断応力 *18•

12:viscosity. . . 懸濁液の粘度 *19

y

z

x

図6.6: 計算事例11(せん断流下の粒子が添加された二成分流体)の最終ステップで得られる流体界面関数ψのスナップショット．

図6.6は，本シミュレーションの最終ステップ(20, 000ステップ)で得られる流体界面関数ψのスナップショットを表す． KAPSELでは，せん断流動方向を x軸，せん断勾配方向をy軸，中立方向(渦度方向)をz軸としてせん断流動が印加される． 2成分流体に対する粒子の親和性を決めるパラメータwを0に設定していることから，粒子が片方の相に偏在せず系全体に分散した結果が得られる．
*16 KAPSELでは，一様なせん断流動を実現するため，時間と共にせん断方向に歪む斜交座標系上で計算を行っている．その際，計算安定性の観点から，斜交座標系の歪みがある一定値に到達したとき歪みをリセットし，もとの直交座標系へ値をリマップする操作を行っている． 3:degree obliqueで表示される値は，このリマップを考慮した斜交座標系の歪みであり，系に印加された歪み(γ̇t)とは異なることに注意する．詳細は文献[23]に記されている.
*17 粒子–流体間相互作用由来のせん断応力はoldとnewの2種類の計算方法が実装されている．通常はnewを用いればよい．
*18 5:lj dev stress temporal，7:shear stress temporal new，8:reynolds stress，9:fluid stress，10:interfacial
stressの総和である．
*19 11:apparent stressを2:shear rateで割った値である．

第6章 二成分相分離流体に分散した粒子のシミュレーション

68

0.05
total stressinterfacial stressinterfacial stress

0.04

0.03

0.02

0.01

0.00

0

500

time

1000

1500

図6.7: 計算事例11(せん断流下の粒子が添加された二成分流体)で得られるせん断応力(xy成分)の時間変化．赤線は，懸濁液のせん断応力(11:apparent stress)，青線は流体–流体界面由来のせん断応力(10:interfacial stress)を示す．

図6.7は， せ ん 断 応 力(xy)成 分 の 時 間 変 化 を 示 す． 図 中 の 赤 線 は， 懸 濁 液 の せ ん 断 応 力(標 準 エ ラ ー 出 力の11:apparent stress)，青線は流体–流体界面由来のせん断応力(10:interfacial stress)を示す． 本シミ
ュレーションでは，流体–流体界面由来のせん断応力が懸濁液のせん断応力に大きく寄与していることが分かる．
また，懸濁液のせん断応力は粒子の熱運動に起因する細かい変動がみられるものの，流体–流体界面由来のせん断応力ではその変動はみられない．これは，KAPSELでは粒子の熱揺らぎを流体のNavier–Stokes方程式にではなく粒子のLangevin方程式を通して導入しているためである． KAPSELでの粒子温度の導入の詳細は3.1.1節を参照頂
きたい．

6.4.3

Pickeringエマルション

本節ではExamples/13/フォルダの計算事例について紹介する．ここでは，Pickering[35]により報告された微粒
子添加によって安定化されるエマルション(Pickeringエマルション)のシミュレーションを行う． Pickeringエマル
ションは，流体–流体界面に微粒子が吸着されることによって安定化される． KAPSELでは，式(6.4)の第5項のパラメータzを通して粒子と二成分流体の界面との親和性を変えることができる．ここでは，二成分流体に対して中立な親和性(w = 0)を持つ粒子(粒子半径a = 4，界面厚みξ = 2)が200個添加された系において，粒子が二成分相分
離流体の界面に親和性がある場合(z = −0.6)について計算を行った．二成分流体は式(6.5)のLandau二重井戸型ポテ
ンシャルにより相分離を起こし，パラメータは a = b = d = κ = 1，α = 3に設定されている．
シミュレーションは，以下のコマンドで実行できる:$ cd Examples/13$ ../../kapsel -Iinput.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
Examples/13フォルダのinput.udfは，粒子–二成分流体界面の親和性がある系(z = −0.6)のシミュレーションとなっている．
図6.8は，本シミュレーションの最終ステップ(200, 000ステップ)で得られる流体界面関数ψの粒子–二成分流体
界面の親和性がある場合(z = −0.6)のスナップショットを表す．図6.8 粒子–二成分流体界面の親和性がある場
合(図6.8)，粒子は二成分流体界面に引き寄せられており，界面活性剤の役割を果たしていることがわかる．

第6章 二成分相分離流体に分散した粒子のシミュレーション

図6.8: 計算事例13(Pickeringエマルション)の最終ステップで得られる流体界面関数ψのスナップショット．

69

70

第7章

マイクロスイマーのシミュレーション
7.1

理論的背景と基礎方程式

粘性流体中を自発的に泳動するマイクロスイマーの例は，精子・バクテリア・藻類など生物学やライフサイエ
ンスにおいて至るところに存在する．また，自発的に運動するソフトマターであるアクティブマターの主な代表例の一つでもある．アクティブマターの研究は，非平衡系理論の開発・検証に貢献することが期待され，理論的な観点で非常にメリットが大きい．また応用的な側面においても，合成マイクロスイマーを導入することで，スマートドラッグデリバリーような最新医学の発展への貢献も期待できる．しかし，流体力学的相互作用が系の物
性を決める上でどのような役割を果たすかは複雑であり，そのメカニズムについて理解することは依然として大きな課題である[52]．

7.1.1

squirmersモデル

KAPSELでは，squirmersモデルと呼ばれる一般的なマイクロスイマーのモデルを採用している． squirmersモデ
ルはLighthillとBlakeら[53, 54]によって開発されたモデルであり，球形マイクロスイマーの流体力学的相互作用を調べる際に一般的に用いられている．

KAPSELでは，半径 a の球状スイマーを考える． squirmersモデルでは，粒子表面での繊毛の動きを詳細にモデル化する代わりに，剛体粒子表面に特定の境界条件を課すことによって同様の推進効果を再現する．ここで，基準系を決定する正規直交基底ベクトルを {ẽi } とし，粒子の泳動方向軸を ẽ3 = ẽ で固定する．粒子表面の点は，極角 θ と方位角 λ に対応する単位接ベクトル θ，λ と，動径方向の単位ベクトル ϱ ( θ = arccos ϱ · ẽ ) を用いて表される．動径速度を 0 とした場合，squirmerに印加されるslip境界条件は[55]u sq =∞X∞X
2
Cn P′n (cos θ) sin θλBn P′n (cos θ) sin θθ +
n(n
+
1)
n=1
n=1

(7.1)

である．ここで， P′n は n 次のLegendre多項式の導関数であり， Bn と Cn はそれぞれ n 次の極モードおよび方位角モードである．方位角モードを無視し( Cn = 0 )，また2次より大きい次数での極モードも無視できる( Bn = 0

where n > 2 ) とすると，pusher(後方で推進力が生じるスイマー)およびpuller(前方で推進力が生じるスイマー)の両方を表現できるシンプルかつ重要なモデルを構築できる．この場合，表面速度は α = B2 /B1 としてαu sq (θ) = B1 sin θ + sin 2θ θ
2

(7.2)

となる． B1 は流体中を泳動する単一粒子の定常状態における速さ( U = 2/3B1 )を決めるパラメータであり， B2
はstresslet強度である．これらモードの比 α はスイマーの種類を決定し， α > 0 ではpuller， α < 0 ではpusher，

α = 0 ではいわゆるneutral swimmerとなる． pusher/pullerスイマーとその推進に伴う流体の流れの概略を図7.1に示す．泳動の性質は，その推進から生じる流れに対して流体力学的に大きく影響を与え，粒子の集団行動を考える上でも重要である．

第7章 マイクロスイマーのシミュレーション

71

図7.1: (a)pusherス イ マ ー お よ び(b)pullerス イ マ ー の 推 進 メ カ ニ ズ ム と 流 れ の 様 子 の 概 略 図． こ れ ら ス イ マ ーをBlakeのsquirmingモデルで表現する，すなわち，詳細な推進メカニズムを粒子表面におけるslip境界条件で置き換
えると，それぞれ(c)および(d)のように表される． Reproduced from Soft Matter 9, 4923-4936[4], Copyright 2013, withpermission from the Royal Society of Chemistry.

7.1.2 マイクロスイマーについての基礎方程式
SP法を用いてマイクロスイマーの分散した系における流体力学を解くために，連続体方程式(3.13)に拘束力
ϕf sq を新たに加え，粒子表面でのslip境界条件を実現する[4, 56]．
ρ(∂t + u · ∇)u = ∇ · σ + ρϕf p + ρϕf sq(7.3)

上式を解くために，通常のSP法の1ステップに追加の手続きを組み入れる．移流項および粘性項を更新してu⋆ を計算した後に，ϕf p より剛性の拘束条件を実現するが，その間に新たに，squirmerの境界条件を満たす速度場u∗∗ を更新するため表面拘束力ϕf sq の計算を行う．これを実装するため，新しくSP関数ϕ sq を導入する． ϕ sq は粒子界面領
域内でのみ0以外の値をとり，

ϕIsq = (1 − ϕI )|∇ϕI |max (|∇ϕI |)(7.4)と表される．新しい速度場は次のような形で得られる．

u =u +∗∗∗"Z tn +h#dsϕf sq(7.5)

tn"Z tn +h#dsϕf sq =

tn

N
X



ϕIsq VI† + Ω†I × rI + uIsq − u∗

(7.6)

I

+

N
X
I

h
ϕI (δVI + δΩi × rI ) − ∇p sqρ

ここで，第1項はslip境界条件を実際に固定するための項であり，第2項は局所的な運動量保存を保障するための項(つまりsquirmerが境界で流体を押すと反作用が働く)，第3項は最終的な流体速度場が非圧縮性となることを保障する項である．この段階では更新された粒子速度がまだわからないため，ここでは反復解を採用し，slip境界条
件をVI† (Ω†I )に対して実現する．流体力学的な力およびトルクは前述と同様に計算し(u∗ の代わりにu∗∗ に用いる)，
その計算結果を粒子速度を更新するために用いる．この計算手続きは，slip境界条件を実現するための速度VI† と第7章 マイクロスイマーのシミュレーション

72

次の時間ステップにおける粒子速度VIn=1 が一致するまで繰り返される．この計算手法は単一スイマーの運動に対して検証済みであり，粒子速度および流体速度の両方が理論的に予測された値とよく一致することが確かめられている[4]．

第7章 マイクロスイマーのシミュレーション

入力UDF について

7.2

7.2.1 流体の設定
constitutive eqでは，以下を選択することができる．
•

Navier Stokes: Newton流体•

Shear Navier Stokes: ジグザクせん断流のNewton流体•

Navier Stokes FDM: Newton流体•

Navier Stokes Cahn Hilliard FDM: 二成分相分離流体

7.2.2 オブジェクト（粒子）の設定
object type.typeでは，spherical particle(球状粒子)のみ選択できる．

7.2.3 オブジェクト(平面壁)の設定
switch.wall.typeでは，NONEもしくはFLATを選択することができる．

73

第7章 マイクロスイマーのシミュレーション

74

計算事例

7.3

7.3.1 周期境界条件下のマイクロスイマーの運動
入力UDFとして， Examples/09/フォルダの squirm single a+2.udf およびsquirm phi0.1 a+2.udf を用いればよい． squirm single a+2.udfでは1粒子系での計算することができる．

$ ../../kapsel -Isquirm_single_a+2.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例ではメッシュサイズ64 × 64 × 64で計算している．このとき粒子体積分率はφ = 0.002であり，粒子数N p = 1，
粒子直径D = 10，界面厚さξ = 2である．マイクロスイマーは泳動速度V = 2/3B1 = 0.01，泳動形態 B2 = 2である．
一方，squirm phi0.1 a+2.udfでは多粒子系での計算をすることができる．

$ ../../kapsel -Isquirm_phi0.1_a+2.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例(Fig. 7.2)では粒子体積分率はφ = 0.1であり，粒子数N p = 50，粒子直径D = 10，界面厚さξ = 2である．その他のパラメータは1粒子系と同じである． Fig. 7.2には，50個のマイクロスイマーが泳動しているスナップショットを表している．

図7.2: 50個のマイクロスイマーが泳動しているスナップショット

7.3.2

2枚の平板間に拘束されたマイクロスイマーの運動

入力UDFとして，Examples/09/フォルダの squirm wall.udfを用いればよい． squirm wall.udfでは2枚の平板間に拘束されたマイクロスイマーを計算することができる．

$ ../../kapsel -Isquirm_wall.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例(Fig. 7.3)ではメッシュサイズ64×256×64で計算している．y軸に垂直な平面壁の厚みは4である．このとき粒子体積分率はφ = 0.138であり，粒子数N p = 4266，粒子直径D = 4，界面厚さξ = 2である．マイクロスイマーは泳第7章 マイクロスイマーのシミュレーション

75

動速度V = 2/3B1 = 0.25，泳動形態 B2 = 0.5である．Gourmetでの可視化については，particle show wall.pyを用いて行った．

図7.3: 2枚の平板間に拘束されたマイクロスイマーの運動

76

第8章

クインケローラーのシミュレーション
8.1

理論的背景と基礎方程式

アクティブマターはバクテリアなどの生物の運動だけでなく，無生物もその対象である．自走コロイド粒子系
はその代表例の一つであり，その研究は駆動機構や，集団ダイナミクスの理解といった基礎から，さらには，外場などによる制御といった応用まで幅広い利用が期待される．中でも，自走するコロイド粒子系における流体力
学的相互作用がどのような影響をもたらすのかは複雑であり，その理解は重要な問題である．

8.1.1 クインケローラーとはクインケローラーは，粘性流体中に分散された球状コロイド粒子が電極板上を転がることで，自走する系である(図8.1)[57]．自走の機構は，クインケ効果によりコロイドの自転を引き起こし，自転したコロイドが電極板の表面における滑りなしの境界条件により流体を介して力を受けることで生じる平板上の転がり運動によるものである．ここで，クインケ効果とは，電気伝導性を有する溶液中に誘電体コロイド粒子を分散させ，閾値以上の直流電場を印加すると，粒子が自発的に回転をし始める現象である[58]．このとき，自転の軸方向は常に直流電場に垂直な面上に固定され，自転の速さは電場の大きさに比例して決定される．クインケローラーの多体系では，流体力学はもちろん，静電相互作用，排除体積効果などは集団ダイナミクスに影響を与えることが期待され，その挙動は複雑である[57, 59]．

図8.1: クインケローラーの概略図．球状コロイド粒子に対して，一様な直流電場を印加すると，誘起された電気双極子の不安定性により，トルクが発生する．印加された電場E0 が閾値E Q を超えるとコロイド球は自転する．自転するコロイド球は極板上の滑りなしの境界条件により，推進速度v0 は自転の角速度ωに比例する．

第8章 クインケローラーのシミュレーション

77

8.1.2 クインケローラーの基礎方程式
SP法を用いて，クインケローラーの運動を解析するため，運動方程式(3.5),(3.6)に対して，以下の2体間ポテン
シャルを導入する；!
(Pi · r)(P j · r)
1 Pi · P j
−
3
,
4πϵ
r3
r5
" 36  18 #σ
σ
UiLJj (r) = 4ϵ LJ
−
+ ϵ,
r
r

UiDD
j (r) =EF
UiEF
exp (−r/3σ)/r2 .
j (r) = −ϵ

(8.1)
(8.2)
(8.3)

ここで，i, jは粒子ラベル，ϵ は誘電率，U DD , U LJ , U EF はそれぞれ電気双極子モーメント，排除体積効果，電気浸透流による相互作用ポテンシャルを表し，ϵ LJ , ϵ EF は排除体積効果および電気浸透流による相互作用ポテンシャルの大きさをそれぞれ表す．双極子モーメントは電場方向をz軸に取り，z成分Pz と， xy成分P xy に分けられる．ここでは，簡単のため，クインケ効果による影響は定常的なものに限定する．コロイドの自転は電場方向に垂直な面にその軸方向をランダムに固定し，自転の速さは一定の値ωを入力する．自転の速さωの値は，回転のレイノルズ数Rer ≡ ρ f ωσ2 /ηが指標となる．双極子モーメントの xy成分の向きは，電場と自転の角速度の向きの外積から決定される．コロイドの自転軸は平面上からずれないよう，平面からのずれを補正するトルクを調和振動子ポテンシ
ャルの形で定義している．さらに，相互作用ポテンシャルの大きさはϵ LJ = ϵ EF として設定している．

第8章 クインケローラーのシミュレーション

入力UDF について

8.2

8.2.1 流体の設定
constitutive eqでは，以下を選択することができる．
•

Navier Stokes: Newton流体•

Navier Stokes FDM: Newton流体

8.2.2 オブジェクト（粒子）の設定
object type.typeでは，rigid(剛体)のみ選択できる．

78

第8章 クインケローラーのシミュレーション

8.3

79

計算事例

8.3.1 単一のクインケローラーの運動
入力UDFとして，Examples/12/フォルダの a2 N1 Rer025.udfを用いればよい．

$ cd Examples/12$ ../../kapsel -Ia2_N1_Rer025.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例ではメッシュサイズ64 × 64 × 32で計算している．このとき，粒子直径σ = 4，界面厚さξ = 2であり，回転のレイノルズ数Rer = 0.25，重力加速度g = 1である．流体場およびスナップショットの描画には，Examples/12/フ
ォルダのstreamplot.pyを用いればよい．このとき，h5 フォーマットのデータを読み込んで描画を行う．

Fig. 8.2は，単一のクインケローラーの推進速度に関する潤滑理論との比較[60, 61]および，ローラー周りの流体場の様子を表している．

図8.2: 単一のクインケローラーの運動． (a) 粒子表面と壁面との距離δの関数としての粒子の推進速度v0 の関係．潤滑理論による解析と比較している．粒子半径aを大きく設定するほど，潤滑理論との良い一致を示す． (b) ローラー周りの流体場の様子．カラーは流速の大きさを表す．

8.3.2 多数のクインケローラーの運動
入力UDFとして，Examples/12/フォルダの a2 N200.udfを用いればよい．

$ cd Examples/12$ ../../kapsel -Ia2_N200.udf -Ooutput.udf -Ddefine.udf -Rrestart.udf
この例(Fig. 8.3)ではメッシュサイズ128 × 128 × 32で計算している．このとき粒子体積分率はφ = 0.00568（面積分率は0.15）であり，粒子数N p = 200である．また，相互作用ポテンシャルの大きさはϵ LJ = ϵ EF = 1.0であり，双極子の大きさはP2xy /4π = 6.0, |Pz |/|P xy | = 3.0としている．その他のパラメータは単一系と同じである．粒子の初期配置はExamples/12/フォルダのinit loc q.pyを用いることで生成できる．また，スナップショットの描画にはsnapshot.pyを用いればよい．

Fig. 8.3には，壁面上を駆動する多数のクインケローラーのスナップショットを表している．

第8章 クインケローラーのシミュレーション

図8.3: 多数のクインケローラーのスナップショット．粒子のカラーおよび矢印は自転軸の方向を表している．

80

81

付録A

入力UDFの解説
本付録では， KAPSELでのシミュレーション条件を設定するための入力UDFを説明する． 入力UDFの構造はdefine.udfによって定義されており，
•

流体の設定

•

オブジェクトの設定•

共通のシミュレーション設定•選択できる機能の設定•

データ出力設定•

UDF出力データクラスの定義•

リスタートの設定•

GOURMETでの表示設定から構成されている．本節では各設定項目を順に概説する．詳細は対応する各章を参照頂きたい．

A.1

流体の設定

シミュレーションする流体の設定をconstitutive eq構造体で行う．流体の種類は次のtypeセレクタで設定できる:

type: select {'Navier_Stokes','Shear_Navier_Stokes','Shear_Navier_Stokes_Lees_Edwards','Electrolyte','Navier_Stokes_FDM','Navier_Stokes_Cahn_Hilliard_FDM','Shear_Navier_Stokes_Lees_Edwards_FDM','Shear_NS_LE_CH_FDM'}
以降，本章では各設定を個別に説明する．

Navier Stokes
Navier Stokesを選ぶと， Newton流体中に分散した粒子のシミュレーションを行うことができる(第3章)．
Navier Stokes構造体では，流体に関する以下のパラメータを設定する:
DX:
RHO:
ETA:
kBT:
alpha_v:
alpha_o:double [L] "lattice spacing (=1), fixed for all directions"double [rho] "mass density of solvent"double [eta] "shear viscosity of solvent"double [epsilon] "temperature"
double "correction coefficient of V"
double "correction coefficient of Omega"

付録A

入力UDFの解説

82

DXは格子幅， RHOは流体の密度， ETAは流体の粘度， kBTは粒子温度， alpha vは粒子速度の調整パラメータ，
alpha oは粒子角速度の調整パラメータである．
Shear Navier Stokes
Shear Navier Stokesを選ぶと，ジグザグせん断流下でNewton流体中に分散した粒子のシミュレーションを行うことができる(本稿では触れない)． Shear Navier Stokes構造体では，流体に関する以下のパラメータを設定
する:

DX:
RHO:
ETA:
kBT:
alpha_v:
alpha_o:double [L] "lattice spacing (=1), fixed for all directions"double [rho] "mass density of solvent"double [eta] "shear viscosity of solvent"double [epsilon] "temperature"
double "correction coefficient of V"
double "correction coefficient of Omega"

DXは格子幅， RHOは流体の密度， ETAは流体の粘度， kBTは粒子温度， alpha vは粒子速度の調整パラメータ，
alpha oは粒子角速度の調整パラメータである．
また，External field構造体では，ジグザグせん断流のパラメータを設定する:

External_field: {type: select {"DC","AC"}DC: {Shear_rate:
double [1/tau] "shear rate"}
AC: {Shear_rate:
double [1/tau] "shear rate"
Frequency:
double [1/tau] "alternating frequency"}}
typeセレクタでDCを選ぶと定常せん断流となり，Shear rateで定常せん断速度を設定できる．一方，ACを選ぶと振動せん断流となり，Shear rateで最大振動せん断速度，Frequencyで周波数を設定できる．

Shear Navier Stokes Lees Edwards
Shear Navier Stokes Lees Edwardsを選ぶと， Lees–Edwards境界条件でのせん断流下でNewton流体中に分散した粒子のシミュレーションを行うことができる(第4章)． Shear Navier Stokes Lees Edwards構造体では，流体に関する以下のパラメータを設定する:

DX:
RHO:
ETA:
kBT:
alpha_v:
alpha_o:double [L] "lattice spacing (=1), fixed for all directions"double [rho] "mass density of solvent"double [eta] "shear viscosity of solvent"double [epsilon] "temperature"
double "correction coefficient of V"
double "correction coefficient of Omega"

DXは格子幅， RHOは流体の密度， ETAは流体の粘度， kBTは粒子温度， alpha vは粒子速度の調整パラメータ，
alpha oは粒子角速度の調整パラメータである．
External field構造体では，Lees–Edwards境界条件でのせん断流のパラメータを設定する:
External_field: {type: select {"DC","AC"}DC: {Shear_rate:
double [1/tau] "shear rate"}
AC: {Shear_rate:
double [1/tau] "shear rate"
Frequency:
double [1/tau] "alternating frequency"

付録A

入力UDFの解説

83}}
typeセレクタでDCを選ぶと定常せん断流となり，Shear rateで定常せん断速度を設定できる． ACを選ぶと振動
せん断流となり，Shear rateで最大振動せん断速度，Frequencyで周波数を設定できる．

Electrolyte
Electrolyteを選ぶと， 電解質溶液に分散した荷電コロイド粒子のシミュレーションを行うことができる(第5章)． Electrolyte構造体では，流体に関する以下のパラメータを設定する:

DX:
double [L] "lattice spacing (=1), fixed for all directions"
RHO:
double [rho] "mass density of solvent"
ETA:
double [eta] "shear viscosity of solvent"kBT:double [epsilon] "temperature"alpha_v:
double "correction coefficient of V"
alpha_o:double "correction coefficient of Omega"
Dielectric_cst:
double "dielectric constant"
INIT_profile: select {"Uniform","Poisson_Boltzmann"} "Initial condition for density profile of ions"
DXは格子幅， RHOは流体の密度， ETAは流体の粘度， kBTは粒子温度， alpha vは粒子速度の調整パラメータ，
alpha oは粒子角速度の調整パラメータ，Dielectric cstは溶媒の誘電率である． INIT profileセレクタでは
イオン分布の初期設定をUniformとPoisson Boltzmannから選択する．

Add salt構造体では塩イオンに関する設定ができる:
Add_salt: {type:select {"saltfree","salt"}
saltfree: {Valency_counterion:
double "valency of counterion"
Onsager_coeff_counterion: double "Onsager coefficient of counterion"}
salt: {
Valency_positive_ion:
double "valency of positive ion"
Valency_negative_ion:
double "valency of negative ion"
Onsager_coeff_positive_ion: double "Onsager coefficient of positive ion"
Onsager_coeff_negative_ion: double "Onsager coefficient of negative ion"
Debye_length:
double "Debye screening length in the unit of DX"}}
typeセ レ ク タ でsaltfreeを 選 ぶ と 対 イ オ ン の み の シ ミ ュ レ ー シ ョ ン と な り， saltを 選 ぶ と 対 イ オ ン に
加 え て 正 負2種 類 の 塩 イ オ ン を 設 定 で き る． saltfreeを 選 ぶ と き， Valency counterionで 対 イ オ ン の価 数， Onsager coeff counterionで 対 イ オ ン のOnsager輸 送 係 数 を 設 定 す る． 一 方， saltを 選 ぶ と き，Valency positive ionで正イオンの価数，Valency negative ionで負イオンの価数，Onsager coeff
positive ionで 正 イ オ ン のOnsager係 数， Onsager coeff negative ionで 負 イ オ ン のOnsager係 数，
Debye lengthでDebye遮蔽長を設定する．
Electric field構造体では外部電場の設定ができる:
Electric_field: {type: select {"ON","OFF"}ON: {type: select {"DC","AC"}
DC: {Ex: double
Ey: double
Ez: double}

付録A

入力UDFの解説

AC: {Ex: double
Ey: double
Ez: double
Frequency:}

84

double}}typeセレクタでONを選ぶと外部電場が印加され，OFFでは外部電場を印加しないシミュレーションとなる．外部
電場の種類としてDCを選択すると，Ex，Ey，Ezで x，y，z方向の電場の強さをそれぞれ設定できる．一方，ACを選択すると，Ex，Ey，Ezで x，y，z方向の電場の強さをそれぞれ設定できるのに加えて，Frequencyで交流電場の周波数が設定できる．

Navier Stokes FDM
Navier Stokes FDMを選ぶと，差分法によるNewton流体中に分散した粒子のシミュレーションを行うことができる(付録D)． Navier Stokes FDM構造体では，まずNS solver構造体でNavier–Stokes方程式の解法に関する設
定を行う:

NS_solver: {type: select {'explicit_scheme','implicit_scheme'} "explicit_scheme: explicit MAC scheme, ON: implicit MAC scheme"
implicit_scheme: {tolerance:
double "stopping criteria"
maximum_iteration: int "number of maximum iteration"}}
typeセレクタでexplicit schemeを選ぶと陽解法が， implicit schemeを選ぶと陰解法が用いられる．陰解法の場合，toleranceで収束判定基準，maximum iterationで最大反復回数を設定する．
また，Navier Stokes FDM構造体では，流体に関する以下のパラメータを設定する:

DX:
RHO:
ETA:
kBT:
alpha_v:
alpha_o:double [L] "lattice spacing (=1), fixed for all directions"double [rho] "mass density of solvent"double [eta] "shear viscosity of solvent"double [epsilon] "temperature"
double "correction coefficient of V"
double "correction coefficient of Omega"

DXは格子幅， RHOは流体の密度， ETAは流体の粘度， kBTは粒子温度， alpha vは粒子速度の調整パラメータ，
alpha oは粒子角速度の調整パラメータである．
Navier Stokes Cahn Hilliard FDM
Navier Stokes Cahn Hilliard FDMを選ぶと，二成分相分離流体中に分散した粒子のシミュレーションを行うことができる(第6章)． Navier Stokes Cahn Hilliard FDM構造体では，まずNS solver構造体でNavier–Stokes方程式の解法に関する設定を行う:
NS_solver: {type: select {'explicit_scheme','implicit_scheme'} "explicit_scheme: explicit MAC scheme, ON: implicit MAC scheme"
implicit_scheme: {tolerance:
double "stopping criteria"
maximum_iteration: int "number of maximum iteration"
viscosity_change: select {'ON','OFF'}ON: {ETA_A:
double [eta] "shear viscosity of solvent A"

付録A

入力UDFの解説

ETA_B:

85
double [eta] "shear viscosity of solvent B"}}}
typeセ レ ク タ でexplicit schemeを 選 ぶ と 陽 解 法 が， implicit schemeを 選 ぶ と 陰 解 法 が 用 い ら れ る．
陰 解 法 で は， toleranceで 収 束 判 定 基 準， maximum iterationで 最 大 反 復 回 数 を 設 定 す る． さ ら に，viscosity changeセ レ ク タ で は， 二 成 分 相 分 離 流 体 に お い て 異 な る 粘 度 を 導 入 で き る． ONに す る と，
ETA AとETA BでA成分とB成分の流体の粘度を個別に設定できる． OFFの場合，後述するETAの値が両方の流体の粘度として設定される．
また，CH solver構造体では，Cahn–Hilliard方程式の解法に関する設定を行う:

CH_solver: {type: select {'explicit_scheme','implicit_scheme'} "explicit_scheme: explicit Euler scheme, ON: implicit BDFAB scheme"
implicit_scheme: {tolerance:
double "stopping criteria"
maximum_iteration: int "number of maximum iteration"}}
typeセレクタでexplicit schemeを選ぶと陽解法が， implicit schemeを選ぶと陰解法が用いられる．陰解法
では，toleranceで収束判定基準，maximum iterationで最大反復回数を設定する．
また，Navier Stokes Cahn Hilliard FDM構造体では，流体に関する以下のパラメータを設定する:

DX:
RHO:
ETA:
kBT:
alpha_v:
alpha_o:double [L] "lattice spacing (=1), fixed for all directions"double [rho] "mass density of solvent"double [eta] "shear viscosity of solvent"double [epsilon] "temperature"
double "correction coefficient of V"
double "correction coefficient of Omega"

DXは格子幅， RHOは流体の密度， ETAは流体の粘度， kBTは粒子温度， alpha vは粒子速度の調整パラメータ，
alpha oは粒子角速度の調整パラメータである．
Potential構 造 体 は 相 分 離 ポ テ ン シ ャ ル の 設 定 で あ る． ポ テ ン シ ャ ル は， typeセ レ ク タ に お いてLandauとFlory Hugginsから選べる:

type: select {'Landau','Flory_Huggins'}
Landauを選ぶと，Landau型二重井戸型ポテンシャルとなり，さらに以下のパラメータを設定する:
composition_ratio:
initial_fluctuation:
a:
b:
d:
w:
z:
psi_0:
alpha:
kappa:

double "composition ratio of A and B fluids"
double "initial fluctuation of concentration"
double "GL parameter (third order term)"
double "GL parameter (first order term)"
double "penalty factor in fictitious particle domain"
double "penalty factor on particle surface domain"
double "penalty factor on fluid interface"double "psi_0 for particle"
double "surface parameter on fluid-fluid surface"double "mobility parameter"

composition ratioは二成分相分離流体の組成比， initial fluctuationは初期濃度揺らぎの大きさ， aは3次の項の係数，bは1次の項の係数，dは粒子部分の流体領域の組成をpsi 0に近づけるための項の大きさのパラメー

付録A

入力UDFの解説

86

タ，wは粒子界面の親和性を決めるパラメータ，zは粒子界面と流体界面の親和性を決めるパラメータ，psi 0は粒子内部のψの値を指定するパラメータ，alphaは流体界面パラメータ，kappaは易動度である．
一方，Flory Hugginsを選ぶと，Flory–Huggins型二重井戸型ポテンシャルとなり，さらに以下のパラメータを設定する:

composition_ratio:
double "composition ratio of A and B fluids"
initial_fluctuation:
double "initial fluctuation of concentration"na:double "(reduced) number of polymerization of A component"nb:double "(reduced) number of polymerization of B component"chi:double "Flory's interaction parameter (chi parameter)"d:double "penalty factor in fictitious particle domain"w:
double "penalty factor on particle surface domain"z:
double "penalty factor on fluid interface"
psi_0:
double "psi_0 for particle"alpha:
double "surface parameter on fluid-fluid surface"kappa:
double "mobility parameter"
composition ratioは二成分相分離流体の組成比，initial fluctuationは初期濃度揺らぎの大きさ，naはA成分の分子重合度， nbはB成分の分子重合度， chiはFloryの相互作用パラメータ， dは粒子部分の流体領域の組成をpsi 0に近づけるための項の大きさのパラメータ，wは粒子界面の流体の親和性を決めるパラメータ，zは粒子界
面と流体界面の親和性を決めるパラメータ，psi 0は粒子内部のψの値を指定するパラメータ，alphaは流体界面パラメータ，kappaは易動度である．

Wall Potential構造体は平面壁の設定である:
type: select {'ON', 'OFF'}ON:{w :double "penalty factor on wall surface domain"
psi_0: {magnitude:
double "psi_0 magnitude"
profile : select {'uniform', 'user_specify'}
user_specify:{
PSI0[][]:{
value : double}}}
DRYING:{
type: select {'ON', 'OFF'}ON:{
psi_dry : double "psi_dry"}}}
typeセレクタでONを選ぶと平面壁が設定できる． このとき， wは平面壁の流体の親和性を決めるパラメータ，
psi 0は平面壁内部のψの値を指定するパラメータである． psi 0では， magnitudeで平面壁と流体の親和性の大きさ， profileでuniform(平面壁面上で均一)， user specify(平面壁面上の流体の親和性はユーザによって指定される)が設定できる． profileでuser specifyを設定した場合， PSI0[][]にて値を手動設定できる．

DRYINGのtypeセレクタでONを選ぶと乾燥のシミュレーションができる．このとき，psi dryは乾燥速度を決める
パラメータである．

Shear Navier Stokes Lees Edwards FDM
Shear Navier Stokes Lees Edwards FDMを選ぶと， 差分法によるLees–Edwards境界条件でのせん断流下でNewton流体中に分散した粒子のシミュレーションを行うことができる(付録D)． Shear Navier Stokes Lees

Edwards FDM構造体では，まずNS solver構造体でNavier–Stokes方程式の解法に関する設定を行う:

付録A

入力UDFの解説

87

NS_solver: {type: select {'explicit_scheme','implicit_scheme'} "explicit_scheme: explicit MAC scheme, ON: implicit MAC scheme"
implicit_scheme: {tolerance:
double "stopping criteria"
maximum_iteration: int "number of maximum iteration"}}
typeセレクタでexplicit schemeを選ぶと陽解法が， implicit schemeを選ぶと陰解法が用いられる．陰解法
では，toleranceで収束判定基準，maximum iterationで最大反復回数を設定する．
また，Shear Navier Stokes Lees Edwards FDM構造体では，流体に関する以下のパラメータを設定する:

DX:
RHO:
ETA:
kBT:
alpha_v:
alpha_o:double [L] "lattice spacing (=1), fixed for all directions"double [rho] "mass density of solvent"double [eta] "shear viscosity of solvent"double [epsilon] "temperature"
double "correction coefficient of V"
double "correction coefficient of Omega"

DXは格子幅， RHOは流体の密度， ETAは流体の粘度， kBTは粒子温度， alpha vは粒子速度の調整パラメータ，
alpha oは粒子角速度の調整パラメータである．
External field構造体では，Lees–Edwards境界条件でのせん断流のパラメータを設定する．
External_field: {type: select {"DC","AC"}DC: {Shear_rate:
double [1/tau] "shear rate"}
AC: {Shear_rate:
double [1/tau] "shear rate"
Frequency:
double [1/tau] "alternating frequency"}}
typeセレクタでDCを選ぶと定常せん断流となり，Shear rateで定常せん断速度を設定できる． ACを選ぶと振動
せん断流となり，Shear rateで最大振動せん断速度，Frequencyで周波数を設定できる．

Shear NS LE CH FDM
Shear NS LE CH FDMを選ぶと， Lees–Edwards境界条件でのせん断流下で二成分相分離流体中に分散した粒子のシミュレーションを行うことができる(第6章)． Shear NS LE CH FDM構造体では，まずNS solver構造体
でNavier–Stokes方程式の解法に関する設定を行う:

NS_solver: {type: select {'explicit_scheme','implicit_scheme'} "explicit_scheme: explicit MAC scheme, ON: implicit MAC scheme"
implicit_scheme: {tolerance:
double "stopping criteria"
maximum_iteration: int "number of maximum iteration"
viscosity_change: select {'ON','OFF'}ON: {ETA_A:
double [eta] "shear viscosity of solvent A"
ETA_B:
double [eta] "shear viscosity of solvent B"}}}
typeセ レ ク タ でexplicit schemeを 選 ぶ と 陽 解 法 が， implicit schemeを 選 ぶ と 陰 解 法 が 用 い ら れ る．

付録A

入力UDFの解説

88

陰 解 法 で は， toleranceで 収 束 判 定 基 準， maximum iterationで 最 大 反 復 回 数 を 設 定 す る． さ ら に，viscosity changeセ レ ク タ で は 二 成 分 相 分 離 流 体 に お い て 異 な る 粘 度 を 導 入 で き る． ONに す る と，
ETA AとETA BでA成分とB成分の流体の粘度を個別に設定できる． OFFの場合，後述するETAの値が両方の流体の粘度として設定される．
また，CH solver構造体では，Cahn–Hilliard方程式の解法に関する設定を行う:

CH_solver: {type: select {'explicit_scheme','implicit_scheme'} "explicit_scheme: explicit Euler scheme, ON: implicit BDFAB scheme"
implicit_scheme: {tolerance:
double "stopping criteria"
maximum_iteration: int "number of maximum iteration"}}
typeセレクタでexplicit schemeを選ぶと陽解法が， implicit schemeを選ぶと陰解法が用いられる．陰解法
では，toleranceで収束判定基準，maximum iterationで最大反復回数を設定する．
また，Shear NS LE CH FDM構造体では，流体に関する以下のパラメータを設定する:

DX:
RHO:
ETA:
kBT:
alpha_v:
alpha_o:double [L] "lattice spacing (=1), fixed for all directions"double [rho] "mass density of solvent"double [eta] "shear viscosity of solvent"double [epsilon] "temperature"
double "correction coefficient of V"
double "correction coefficient of Omega"

DXは格子幅， RHOは流体の密度， ETAは流体の粘度， kBTは粒子温度， alpha vは粒子速度の調整パラメータ，
alpha oは粒子角速度の調整パラメータである．
Potential構 造 体 は 相 分 離 ポ テ ン シ ャ ル の 設 定 で あ る． ポ テ ン シ ャ ル は， typeセ レ ク タ に お いてLandauとFlory Hugginsから選べる:

type: select {'Landau','Flory_Huggins'}
Landauを選ぶと，Landau型二重井戸型ポテンシャルとなり，さらに以下のパラメータを設定する:
composition_ratio:
double "composition ratio of A and B fluids"
initial_fluctuation:
double "initial fluctuation of concentration"a:double "GL parameter (third order term)"b:double "GL parameter (first order term)"d:double "penalty factor in fictitious particle domain"w:
double "penalty factor on particle surface domain"z:
double "penalty factor on fluid interface"
psi_0: double "psi_0 for particle"alpha: double "surface parameter on fluid-fluid surface"kappa: double "mobility parameter"
composition ratioは二成分相分離流体の組成比， initial fluctuationは初期濃度揺らぎの大きさ， aは3次の項の係数，bは1次の項の係数，dは粒子部分の流体領域の組成をpsi 0に近づけるための項の大きさのパラメー
タ，wは粒子界面の親和性を決めるパラメータ，zは粒子界面と流体界面の親和性を決めるパラメータ，psi 0は粒子内部のψの値を決めるパラメータ，alphaは流体界面パラメータ，kappaは易動度である．
一方，Flory Hugginsを選ぶと，Flory–Huggins型二重井戸型ポテンシャルとなり，さらに以下のパラメータを
設定する:

付録A

入力UDFの解説

89

composition_ratio:
double "composition ratio of A and B fluids"
initial_fluctuation:
double "initial fluctuation of concentration"na:double "(reduced) number of polymerization of A component"nb:double "(reduced) number of polymerization of B component"chi:double "Flory's interaction parameter (chi parameter)"d:double "penalty factor in fictitious particle domain"w:
double "penalty factor on particle surface domain"z:
double "penalty factor on fluid interface"
psi_0: double "psi_0 for particle"alpha: double "surface parameter on fluid-fluid surface"kappa: double "mobility parameter"
composition ratioは二成分相分離流体の組成比，initial fluctuationは初期濃度揺らぎの大きさ，naはA成分の分子重合度， nbはB成分の分子重合度， chiはFloryの相互作用パラメータ， dは粒子部分の流体領域の組成をpsi 0に近づけるための項の大きさのパラメータ，wは粒子界面の流体の親和性を決めるパラメータ，zは粒子界
面と流体界面の親和性を決めるパラメータ，psi 0は粒子内部のψの値を決めるパラメータ，alphaは流体界面パ
ラメータ，kappaは易動度である．

External field構造体では，Lees–Edwards境界条件でのせん断流のパラメータを設定する:
External_field: {type: select {"DC","AC"}DC: {Shear_rate:
double [1/tau] "shear rate"}
AC: {Shear_rate:
double [1/tau] "shear rate"
Frequency:
double [1/tau] "alternating frequency"}}
typeセレクタでDCを選ぶと定常せん断流となり，Shear rateで定常せん断速度を設定できる． ACを選ぶと振動
せん断流となり，Shear rateで最大振動せん断速度，Frequencyで周波数を設定できる．

A.2 オブジェクトの設定
流体に分散させるオブジェクトは，object type構造体で設定される． typeセレクタでオブジェクトの種類を選ぶ:

type: select {'spherical_particle','chain','rigid'}
spherical particle
spherical particleを選ぶと，球状粒子が分散したシミュレーションを行うことができる．この場合，さらに以下のパラメータを設定する:

Particle_spec[]:{Particle_number: int "number of colloidal particles"
MASS_RATIO: double "mass density ratio colloid/solvent"Surface_charge: double "surface charge of colloid"janus_axis: select {'NONE', 'X', 'Y', 'Z'} "janus axis in body_fixed frame"janus_propulsion: select{'OFF', 'TUMBLER', 'SQUIRMER', 'OBSTACLE'}
janus_force: Vector3d "self-propulsion force"
janus_torque: Vector3d "self-propulsion torque"janus_slip_vel: float "Slip velocity coeff B1"
janus_slip_mode: float "Blake squirmer mode B2/B1"
janus_rotlet_C1: float "rotlet coefficient C1"
janus_rotlet_dipole_C2: float "rotlet dipole C2"}

付録A

入力UDFの解説

90

Particle numberでは粒子数，MASS RATIOでは粒子の流体に対する密度比を設定する． Surface chargeは粒子
表面電荷の設定であり，constitutive eq構造体のtypeセレクタで，Electrolyteを選んだときに有効なパラメータである．

janus *はJanus粒 子 に 関 す る 設 定 で あ る． janus axisセ レ ク タ で は 粒 子 に 固 定 さ れ た 座 標 系 に お
け るJanus軸 の 方 向 をNONE， X， Y， Zか ら 選 ぶ． janus propulsionセ レ ク タ で はJanus粒 子 の 推 進 運 動の 指 定 が で き， OFF(無 効)， TUMBLER(一 定 の 外 力 で 推 進 軸 方 向 に 推 進 す る 粒 子)， SQUIRMER(Slip境 界 条
件 に よ り 推 進 軸 方 向 に 推 進 す る ス ク ワ マ ー 粒 子)， OBSTACLE(固 定 さ れ た 障 害 物 粒 子)か ら 選 択 す る．

janus force.x， janus force.y， janus force.zはそれぞれJanus粒子の推進力の x， y， z成分の設定である．
また， janus torque.x， janus torque.y， janus torque.zはそれぞれJanus粒子の推進トルクの x， y， z成分の設定である． janus slip velはJanus粒子の表面滑り速度を決めるパラメータ B1 ，janus slip modeはJanus粒
子の泳動形態を決定するパラメータ B2 /B1 ，janus rotlet C1は双極子型の力を流体に及ぼすJanus粒子のパラメ
ータC1 ，janus rotlet dipole C2はrotlet双極子型の力を流体に及ぼすJanus粒子のパラメータC2 である．

chain
chainを選ぶと，フレキシブルな粒子鎖が分散したシミュレーションを行うことができる．フレキシブルな粒子
鎖では，さらに以下のパラメータを設定する:

chain:{
Chain_spec[]:{Beads_number: int "number of beads in a chain"
Chain_number: int "number of chains"
MASS_RATIO: double "mass density ratio chain/solvent"Surface_charge: double "surface charge of colloid"janus_axis: select {'NONE', 'X', 'Y', 'Z'} "janus axis in body_fixed frame"}}
Beads numberは1本の鎖に属するビーズの数，Chain numberは鎖の本数，MASS RATIOはビーズの流体に対する密度比である．また，Surface chargeは粒子表面電荷の設定であり，constitutive eq構造体のtypeセレクタ
で， Electrolyteを選んだときに有効なパラメータである． janus axisセレクタでは，ビーズに固定された座標系におけるJanus軸の方向をNONE，X，Y，Zから選ぶ．

rigid
rigidを選ぶと，球形のビーズで構成された剛体が分散したシミュレーションを行うことができる．剛体では以下のパラメータを設定する必要がある．

rigid:{
Rigid_spec[]:{Beads_number: int "number of beads in a rigid"
Rigid_number: int "number of rigid bodies"
MASS_RATIO: double "mass density ratio rigid body/solvent"Surface_charge: double "surface charge of particle"
Rigid_motion: select {'fix','free'}Rigid_velocity: Vector3d "speed of translation ### fix only ###"
Rigid_omega: Vector3d "angular velocity ### fix only ###"}}
Beads numberは1つの剛体に属するビーズの数，Rigid numberは剛体の数，MASS RATIOはビーズの流体に対する密度比である． また， Surface chargeは粒子表面電荷の設定であり， constitutive eq構造体のtypeセ
レ ク タ で， Electrolyteを 選 ん だ と き に 有 効 な パ ラ メ ー タ で あ る． Rigid motionで は， 剛 体 の 運 動 に 関
す る6つ の 自 由 度 の 全 て をfree (自 由 運 動)と す る かfix (指 定 し た 速 度 と 角 速 度 に 固 定)と す る か を 選 ぶ．

Rigid velocity.x， Rigid velocity.y， Rigid velocity.z，はそれぞれ剛体の速度の x， y， z成分（ラボフレーム）の設定である．また，Rigid omega.x，Rigid omega.y，Rigid omega.z，はそれぞれ剛体の角速度

付録A

入力UDFの解説

91の x，y，z成分（ラボフレーム）の設定である． 6つの自由度を個別に解放/固定するには，「選択できる機能の設定」の項で説明する switch.free rigid オプションを同時に使用します。

A.3 共通のシミュレーション設定
A.1章とA.2章で，それぞれ流体とオブジェクトに関する設定を行った．本章では，それらに共通のシミュレー
ション条件の設定について説明する．

KAPSELで扱うオブジェクトは粒子から構成される．その一次粒子の共通パラメータとして，以下を設定する:

A_XI: double "interface thickness in the unit of DX"
A: double "colloid radius in the unit of DX"A XIとAは，それぞれ粒子界面の厚さと粒子半径を格子幅DXを単位として設定する．
系に印加される重力はgravity構造体で設定される:

gravity: {G: double [L*tauˆ-2] "gravitational acceleration constant"
G_direction: select {'-X','-Y','-Z'} "direction of gravitational acceleration"}
Gは重力加速度である．また，G directionセレクタは，重力が印加される方向を-X，-Y，-Zから選ぶ．
次に，粒子間に働くポテンシャルを設定する．設定項目は以下の通りである:

EPSILON: double [epsilon] "Lennard-Jones depth"
LJ_powers: select {'12:6','24:12','36:18','DLVO','electro_osmotic_flow'} "set of power,→
exponents of LJ potential"
EPSILONで は， Lennard-Jonesポ テ ン シ ャ ル の エ ネ ル ギ ー の 単 位 を 指 定 す る． LJ powersで は， 粒 子 間 ポ
テ ン シ ャ ル を， 12:6， 24:12， 36:18 (Lennard-Jonesポ テ ン シ ャ ル)， DLVO (DLVOポ テ ン シ ャ ル)あ る い は，electro osmotic flow (クインケローラ以外では使用しない)から選ぶ．
mesh構造体では，流体計算の計算点を定義するメッシュサイズの指定を行う:
mesh: {
NPX: int "number of mesh in x-direction = 2ˆNPX"
NPY: int "number of mesh in y-direction = 2ˆNPY"
NPZ: int "number of mesh in z-direction = 2ˆNPZ"}
NPX，NPY，NPZはそれぞれ x，y，z方向におけるメッシュ数を決めるパラメータであり，これにより各方向のメッシュ数はL x = 2NPX ， Ly = 2NPY ， Lz = 2NPZ と設定される．
時間刻みの設定

time increment構造体では，シミュレーションの時間刻みを設定する:
time_increment: {type: select {"auto","manual"}
auto: {
factor: double "delta_t = factor * h(determined by system parameters)"}
manual: {delta_t: double [tau]}}2typeセレクタでautoを選べば時間刻みの上限であるT dump = ρ/ηkmax
が時間刻みとして自動設定される． ここ付録A

入力UDFの解説

92

でkmax は格子幅∆で決まる最大波数である． またこのとき， factorで時間刻みの係数を設定でき，時間刻み
は∆t = T dump × factorとなる．一方，manualを選べば，delta tで設定した値が時間刻みとして設定される．

A.4 選択できる機能の設定
本章では，switch構造体で定義される選択できる機能の設定について，順に説明する．

ROTATIONセレクタでは，粒子の回転を考慮するかどうかをONかOFFで選ぶ:
ROTATION: select {'ON','OFF'} "OFF: not solve rotation, ON: solve rotation"
LJ truncateセレクタでは，粒子間に働くLennard-Jonesポテンシャルによる力について，引力項を含む通常の形OFF，引力項を含まない斥力のみON，まったく力を加えないNONEから選ぶ:

LJ_truncate: select {'ON','OFF','NONE'} "OFF:normal LJ, ON:WCA, NONE: no-interaction,→
at all"INIT distribution構造体では粒子の初期配置を設定できる．
INIT_distribution: {type: select {'uniform_random','random_walk','FCC','BCC','user_specify'}"uniform_random:distributed uniformly in box, random_walk:distributed uniformly in,→box, FCC:distributed on FCC lattice, BCC:distributed on BCC lattice,,→user_specify:configuration and velocity specified by user"
random_walk: {iteration: int}
user_specify: {Particles[]: Particle}}
typeセレクタで初期粒子配置をuniform random (ランダム)，random walk (正方格子上からランダムにずれている)， FCC (FCC格子上)，BCC (BCC格子上)，user specify (座標と速度はユーザによって指定される)から選ぶ．

random walkを選択した場合，iterationでランダムウォークの試行回数を設定する．また，user specifyを選択した場合，Particles[]で粒子位置と速度を設定する．

INIT orientationセレクタでは，粒子の初期配向を， user specify(座標と速度はユーザによって指定される)，random(ランダム)，space align(1方向に配向)から選ぶ:

INIT_orientation: select {'user_specify', 'random', 'space_align'}
user specifyを選んだ場合，粒子の初期配向をParticles[]に設定する．
SLIP tolは，Janus粒子界面における接戦方向の滑り速度を導入する際の，流体流れ場の反復計算の収束判定基
準の設定である:

SLIP_tol: float "Tolerance for iterative slip convergence"
また，SLIP iterは，Janus粒子界面における接戦方向の滑り速度を導入する際の，流体流れ場の反復計算の最大反復回数の設定である:

付録A

入力UDFの解説

93

SLIP_iter: int "Maximum number of iterations for iterative slip convergence"
FIX CELL構造体はシミュレーションセルに関する設定である:
FIX_CELL: {x: select{'ON','OFF'}"OFF:w/o DC current, ON:with DC current"
y: select{'ON','OFF'}"OFF:w/o DC current, ON:with DC current"
z: select{'ON','OFF'}"OFF:w/o DC current, ON:with DC current"}
x，y，zセレクタでは，それぞれ x，y，z方向の全速度の直流成分を0とするかどうか，ONとOFFから選ぶ．
pin構造体では，粒子運動の自由度の設定ができる:
pin: {
type: select{"NO","YES"}
YES:{
pin[]: int
pin_rot[]: int}}
typeセレクタでYESを選ぶと粒子を固定できる．このとき，並進運動させない粒子番号と回転運動させない粒子
番号をそれぞれpin[]とpin rot[]で設定する．

free rigid構造体では，剛体の並進/回転運動の6つの自由度を個別に自由運動としたり，指定値に固定することができる．このオプションは，並進/回転運動の6つの自由度のすべてをまとめて自由にするか指定値に固定する

object type.rigid.Rigid spec オプションと同時に使用する必要がある．
free_rigid:{
type: select{'NO', 'YES'} "Free rigid degrees of freedom"
YES:{
DOF[]:{
spec_id: int"Rigid body species id"vel:{
x:select{'NO', 'YES'},y:select{'NO', 'YES'},z:select{'NO', 'YES'}} "Free velocity components"
omega:{
x:select{'NO', 'YES'},y:select{'NO', 'YES'},z:select{'NO', 'YES'}} "Free omega components"}}}
typeセレクタでYESを選ぶと，DOF[]で各剛体の運動の自由度を個別に設定できる． spec idでは設定する剛体番号を指定する． vel構造体のx，y，zセレクタでは，それぞれ x，y，z方向の並進運動の自由度をYES (自由運動)，

NO (指定値に固定)から選択できる．また，omegaでは構造体の，x，y，zセレクタで，それぞれ x，y，z方向の回転運動の自由度をYES (自由運動)，NO (指定値に固定)から選択できる．

ns solver構造体は，Navier–Stokes方程式の解法に関する設定である:
ns_solver:{OBL_INT: select {'linear', 'spline'} "interpolation scheme for Oblique/Rectangular,→transform"}
OBL INTセレクタでは，せん断流下のシミュレーションにおける座標系変換時の近似関数をlinear(線形近似)とspline(スプライン近似)から選ぶ．

付録A

入力UDFの解説

94

wall構造体は，平面壁の設定である:
wall:{
type: select{'NONE', 'FLAT'}
FLAT: {
axis: select{'X', 'Y', 'Z'}"perpendicular axis to flat parallel walls"
DH: int "wall thickness in number of grid points"
LJ_Params: select{"AUTO", "MANUAL"}MANUAL:{
truncate: select{'ON', 'OFF', 'NONE'} "Truncate OFF: attractive force, ON: no,→
attractive force"
powers: select{'12:6','24:12','36:18'} "type of LJ potential"
EPSILON: double "LJ parameter, default（Basically, a large value.）"}}}typeセレクタでFLATを選ぶと，平面壁を設定できる．このとき，axisセレクタで平面壁の法線方向をX，Y，Zで指定する．また，DHで平面壁の厚みを格子点の数で指定する． LJ Paramsセレクタは平面壁に働くポテンシャルの設定である． AUTOを選ぶと粒子間ポテンシャルと同じポテンシャルが設定される． MANUALを選ぶと，粒子間ポテンシャルとは異なるポテンシャルを設定できる． truncateセレクタでは，平面壁での引力の有無を設定す
る． ONにすると斥力のみが働くポテンシャルとなり， OFFにすると引力が働くポテンシャルとなる． powersセレクタでは，平面壁でのLennard-Jonesポテンシャルのべき指数を12:6，24:12，36:18から選べる． EPSILONでは，平面壁でのLennard-Jonesポテンシャルのエネルギーの単位を設定する．

quincke構造体はクインケローラーの設定である:
quincke:{type: select{'ON','OFF'}
ON: {e_dir: select{'X', 'Y', 'Z'}"constraint axis(the direction of external electric,→field E)"w_dir: select{'X', 'Y', 'Z'}"the direction of constant angular velocity vector(body,→frame)"
torque_amp: double "the amplitude of constraint torque"}}
typeセレクタでONを指定すると，クインケローラーのシミュレーションができる．このとき，e dirセレクタでは外部電場を印加する方向をX，Y，Zで指定する． w dirセレクタではクインケ効果による回転の角速度ベクトルの方向をX，Y，Zで指定する． torque ampではトルクの大きさを設定する．

multipole構造体は，Ewald法によるシミュレーションの設定である:
multipole:{
type: select{'ON', 'OFF'}ON:{
Dipole:{type : select{'ON', 'OFF'}ON:{
magnitude: double "the dipole strength"
type: select{'FIXED', 'QUINCKE'} "type of dipole"
FIXED:{
dir: select{'X', 'Y', 'Z'} "direction of dipolar axis"}
QUINCKE:{
type : select{'with_mirror_image','no_mirror_image'} "Mirror image component,→of electrode surface"
Pz_factor : double "Pz strength += Pz_factor*magnitude"}}}
EwaldParams:{

付録A

入力UDFの解説

95

alpha: double "Ewald screening parameter"delta: double "Tolerance parameter, used to determine k_max"
converge: double "Convergence parameter (fraction of k vectors to consider)"epsilon : double "Permittivity at boundary ( if negative, set to tinfoil)"}}}
typeセレクタでONを指定すると， Ewald法によるシミュレーションができる． Dipole構造体は双極子に関する設定である．双極子を扱う場合，typeセレクタをONに設定する． magnitudeでは双極子モーメントの大きさを設定する．双極子の種類を，typeセレクタでFIXED (固定)とQUINCKE (クインケ回転)から選ぶ． FIXEDを選ぶ場合，dirにおいて双極子を固定する方向をX，Y，Zで指定する．一方，QUINCKEを選ぶ場合，電極表面の鏡像成分の有無をwith mirror image (有り)，no mirror image (無し)から選ぶ．また，Pz factorは双極子モーメントのZ成分の大きさを与えるパラメータである． EwaldParams構造体ではEwald法のパラメータを設定する． alphaは遮蔽パラメータ，deltaはkmax を決定するための収束判定基準，convergeは収束パラメータ，epsilonは，境界での誘電率である．

A.5 データ出力設定
本章では，KAPSELのデータ出力設定について説明する．これはoutput構造体で設定される:

output: {GTS: int "interval between snapshots"
Num_snap: int "number of snapshots"
AVS: select {"ON","OFF"}ON:{
Out_dir: string "directory name"Out_name: string "prefix name for data file"
FileType: select {"BINARY","ASCII","EXTENDED"} "output data type"
EXTENDED:{
Driver:{Format: select {"HDF5"}}
Print_field:{
Crop:select{"YES", "NO"}"Crop Field Data to Hyperslab"
YES:{
Slab_x: SlabSelection
Slab_y: SlabSelection
Slab_z: SlabSelection}
Vel: select{"YES", "NO"}"Print velocity field"
Phi: select{"YES", "NO"}"Print phi field"
Charge: select{"YES", "NO"}"Print charge fields (surface & solute charge &,→potential)"
Pressure: select{"YES", "NO"} "Print pressure field"
Tau: select{"YES", "NO"}"Print stress tensor"}}}
UDF: select {"ON","OFF"}}
GTSでは，データ出力のインターバルのステップ数を設定する． Num snapでは，データ出力の回数を設定する．つまり全ステップ数はGTS × Num snapで決まる． AVSセレクタでONを選ぶと，AVS形式のデータを出力でき
る． ONのとき， Out dirでAVS形式のデータを出力するディレクトリを指定する．また， Out nameでAVS形式の出力データのファイル名の接頭語を指定する． FileTypeセレクタでは， AVSデータファイルのフォーマット
をBinary (バイナリ)，ASCII (アスキ)，EXTENDED (拡張データ形式)から選ぶ． EXTENDEDを選ぶと，KAPSELでは拡張データ形式としてHDF5が選択される． Print field構造体はフィールドデータを出力する際の設定である． CropセレクタでYESを選ぶと，フィールドデータを間引いて出力する． Slab x，Slab y，Slab z構造体は，

付録A

入力UDFの解説

96

それぞれ x，y，z方向における間引きの設定である． start，stride，countで，出力する最初の格子点番号，出力する格子点間隔，出力する格子点数をそれぞれ設定する． Velセレクタでは， YESを選ぶと，速度場を出力す
る． Phiセレクタでは，YESを選ぶと，SP関数ϕを出力する． Chargeセレクタでは，YESを選ぶと，電荷密度分布を出力する(constitutive eqのtypeセレクタでElectrolyteを選択したときのみ有効)． Pressureセレクタでは，YESを選ぶと，圧力場を出力する(未実装)． Tauセレクタでは，YESを選ぶと，応力テンソルを出力する．また，UDFを出力する場合はUDFセレクタでONを選ぶ．

A.6

UDF出力データクラスの定義

define.udfでは，次に示すUDFデータ出力用のデータクラスが定義されている．これらは設定項目ではないので，詳細は割愛する．

\begin{def}class outParticle:{
R:Vector3d [L],R_raw:Vector3d [L],v:Vector3d [L/tau],
q:Quaternion,omega:Vector3d,f_hydro:Vector3d [mass*L*tauˆ-2],
torque_hydro:Vector3d,
f_r:Vector3d [mass*L*tauˆ-2],
torque_r:Vector3d,
f_slip:Vector3d [mass*L*tauˆ-2],
torque_slip:Vector3d}
E: float [epsilon] "total kinetic energy of the system"
t: float "total time"
Particles[]: outParticle
RigidParticles[]: outParticle
PSI[][][]: {psi: float}\end{def}\begin{def}class sParticle:{
R:Vector3d [L],R_raw:Vector3d [L],v:Vector3d [L/tau],v_old:Vector3d [L/tau],f_hydro:Vector3d [mass*L*tauˆ-2],
f_hydro_previous:Vector3d [mass*L*tauˆ-2],
f_hydro1:Vector3d [mass*L*tauˆ-2],
f_slip:Vector3d [mass*L*tauˆ-2],
f_slip_previous:Vector3d [mass*L*tauˆ-2],
fr:Vector3d [mass*L*tauˆ-2],
fr_previous:Vector3d [mass*L*tauˆ-2],
omega:Vector3d,
omega_old:Vector3d,
torque_hydro:Vector3d,
torque_hydro_previous:Vector3d,
torque_hydro1:Vector3d,
torque_slip:Vector3d,
torque_slip_previous:Vector3d,
torque_r:Vector3d,
torque_r_previous:Vector3d,
q:Quaternion,q_old:Quaternion}
class Matrix3d:{
xx: float,
xy: float,
xz: float,yx: float,

付録A

入力UDFの解説

97

yy: float,
yz: float,zx: float,zy: float,zz: float}
class CTime:{
ts:inttime:float [tau]}\end{def}

A.7 リスタートの設定
resume構造体は，中断した計算を再計算するためのリスタート用の設定である．以下に示すCalculationセレクタで計算条件を選択する．

Calculation: select {'NEW','CONTINUE','CONTINUE_FDM','CONTINUE_FDM_PHASE_SEPARATION'} "flg in order to specify resumed simulation or not"
NEWを選ぶと新規の計算ができる． CONTINUE， CONTINUE FDM， CONTINUE FDM PHASE SEPARATIONはいずれも前回計算終了したときの情報を読み込んで計算を再開するための設定であり， constitutive eqの設定によって使い分ける必要がある． CONTINUEは，スペクトル法を用いるシミュレーション(constitutive eqにおい て， Navier Stokes， Shear Navier Stokes， Shear Navier Stokes Lees Edwards， Electrolyteを
選 択 し て い る 場 合)を 再 開 す る 設 定 で あ る． CONTINUE FDMは， 差 分 法 に よ る 一 成 分 流 体 の シ ミ ュ レー シ ョ ン(Navier Stokes FDM， Shear Navier Stokes Lees Edwards FDMを 選 択 し て い る 場 合)を 再 開
す る 設 定 で あ る． CONTINUE FDM PHASE SEPARATIONは， 差 分 法 に よ る 二 成 分 流 体 の シ ミ ュ レ ー シ ョン(Navier Stokes Cahn Hilliard FDM， Shear NS LE CH FDMを選択している場合)を再開する設定である．各
設定ごとにSaved Data以下に再計算に必要な結果が保存される:

CONTINUE:{
Saved_Data:{
jikan: CTime
Particles[] : sParticle
GR_body[]: Vector3d
GR_masses[] : float
GR_moments_body[]: Matrix3d
Zeta[][][]:{
zeta0: float
zeta1: float}
uk_dc: Vector3d
Concentration[][][][]: {ck:float}
oblique: {degree_oblique: float}}}
CONTINUE_FDM: {Saved_Data: {jikan: CTime
Particles[]: sParticle
GR_body[]: Vector3d
GR_masses[]: float
GR_moments_body[]: Matrix3d
U[][][]: {付録A

入力UDFの解説

98

u0: float
u1: float
u2: float}
U_OLD[][][]: {u_old_0: floatu_old_1: floatu_old_2: float}
oblique: {degree_oblique: float}}}
CONTINUE_FDM_PHASE_SEPARATION: {Saved_Data: {jikan: CTime
Particles[]: sParticle
GR_body[]: Vector3d
GR_masses[]: float
GR_moments_body[]: Matrix3d
U[][][]: {u0: float
u1: float
u2: float}
U_OLD[][][]: {u_old_0: floatu_old_1: floatu_old_2: float}
PSI[][][]: {psi: float}
PSI_OLD[][][]: {psi_old: float}
STRESS_OLD[][][]: {stress_old_0: float
stress_old_1: float
stress_old_2: float}
oblique: {degree_oblique: float}}}
これらの項目は，手動で設定する項目ではないので詳細は割愛する．

A.8

GOURMETでの表示設定

Unit Parameter構造体では， GOURMETでの表示に関する設定である．シミュレーション結果への影響はな
い．

Unit_Parameter:{Name: string"Name"
Comment:string"Comment"
Temperature:double [K] "Temperature"
Length:double [nm]"Grid spacing"
rho:double [g/cmˆ3]"Fluid density"} "Parameters for unit conversion"
Nameで はUDFフ ァ イ ル の 名 前 を 設 定 で き る． Commentで はUDFフ ァ イ ル の コ メ ン ト を 設 定 で き る．
TemperatureではGOURMETでシミュレーションパラメータを実次元表示するための基準となる単位温度を指定

付録A

入力UDFの解説

する．同様にLengthでは基準となる単位長さを，rhoでは，基準となる単位密度を指定する．

99

100

付録B

粒子計算
粒子のコンフィグレーション(位置，配向，速度，角速度)は2ステップAdams-Bashforth法を用いて更新される．
ただし，初期ステップではEuler法を用いる．注目の動的変数をYI とし，YIn = YI (tn )とすると，

Y n+1 = Y n +h n
3Ẏ − Ẏ n−1
2

(B.1)

Euler方程式は，立体(主軸)基準座標系(ここでは慣性モーメントIeが対角成分となる)において，
 1 

˙ 
ω
e2 ω
e3 (e
τ1 + ω
I 22 − e
I 33 )
e2  e

ω
e3 ω
e1 (e
τ2 + ω
I 33 − e
I 11 )e˙  = e 3   3
e
e1 ω
e2 (e
τ +ω
I 11 − e
I 22 )e˙ω

(B.2)

を用いて解かれる[8]．さらに数値計算の精度を上げるために，配向は，回転行列Rの代わりに(毎ステップごとに標準化した)回転四元数qを用いて更新される．それにより配向に対する動的方程式は，

q̇ =

1
1
e
wI ◦ q = q ◦ w
2
2

(B.3)

e = (0, ωe ) と ω = (0, ω)はそれぞれ実験系での角速度ω およで与えられる[62]．ここで，◦は四元数の乗算を表し，we = Rt · ω に相当する四元数を表す．
び立体基準座標系ω

101

付録C

スペクトル法による流体計算
シミュレーション方法のセクションで示した通り，KAPSELでは Fractional Step 法を採用している．この方法ではまず最初に，u∗ を決定するために，ϕf p 項のない，移流項および粘性応力項だけを考慮した変形Navier-Stokes方程式を時間発展させる． KAPSELでは，計算を単純化するために，直接uについて解かずに，ω = ∇ × uについて解く．固定されたデカルト座標系を考慮すると，周期境界条件下において，非圧縮性条件(∇ · u = 0)を満たす
渦度の方程式は，∂t ω = −∇ × ∇ · (uu) + ρ−1 ∇ × ∇ · σ,b = k × [k · Fk (uu)] − ρ−1 k × k · σ
b
∂t ω

(C.1)

で与えられる．ここで，Fk ( f ) = b
f (k)はFourier変換を表し，kは波数ベクトルである．流体の速度場は，渦度の定義と非圧縮性条件から，

b=i
u

b
k×ω
2
|k|

(C.2)

と得られる．渦度ω についての方程式を解くことの利点は，非圧縮性を満たすための圧力Poisson方程式を解く必
要がないことにある。非圧縮性は，Fourier空間において"#kkb −→ I − 2 · u
b
u
|k|

(C.3)

のような射影を行うことにより満たされる．
さらにKAPSELでは，プログラムコードのメモリ必要量を減らすために，回転の3成分が線型独立ではなくそのbを任意のベクトル場Aで内の2成分のみ考慮すればよいという利点を活用する．ここで，ba = Fk (∇ × A) = ik × Aの回転に対するFourier変換とし，全ての波数ベクトル(ただしk , 0)について



(b
a2 ,b
a3 )












 a3 ,b
a1 )
†
† (b
b
a = (ba1 ,ba2 ,ba3 ) : 









(b
a1 ,b
a2 )






k1 , 0ba1 = −(k3ba3 + k2ba2 )/k1
k1 = 0, k2 , 0ba2 = −k3b
a3 /k2
k1 = k2 = 0, k3 , 0ba3 = 0(C.4)のような可逆的な写像(† : C 3 → C 2 )を定義する．ただし，全ベクトル場の体積積分に対応するba(k = 0)は，b
a† か

b= ω
b† についての式が得ら求めることができず，独立に計算される．本写像を式(C.1)の2式に適用することで， ζられ，速度場を更新するために必要な計算量を1/3削減することができる．
積分される式の形式は，用いられる応力テンソルσ に依存する． ∇ · σ = η∇2 uとなるNewton流体の場合，渦度ω の方程式は

b = −νk2 ω
b + k × [k · Fk (uu)]
∂t ω

(C.5)

付録C

スペクトル法による流体計算

102となる．これは，∂t a = La − N(t, a(t))(C.6)の形で表されている．ここで，Lは時間に依存しない線形演算子，N は非線形演算子である．本式は一般解がa(tn + h) = eLh a(tn ) − eLhZ hdτe−Lτ N(tn + τ, a(tn + τ))

(C.7)

0

で与えられる．ここで線形部分は厳密に解くことが可能である．非線形部分の積分は様々な方法で近似することが可能である[63, 64]．特に，一次近似N(tn + τ, a(tn + τ)) = N(tn , a(tn ))を用いると

h
ia(tn + h) = eLh a(tn ) − L−1 1 − e−hL N(tn , a(tn ))= a(tn ) + e−hL − 1 a(tn ) + L−1 N(tn , a(tn ))が得られ，|L| → 0の極限でEuler法となる．

(C.8)
(C.9)

103

付録D

有限差分法(FDM)による流体計算
第6章に示す二成分相分離流体に分散した粒子のシミュレーションでは，流体計算に差分法が適用される．本付
録では，KAPSELで実装されている差分法による流体計算手法について説明する．

D.1

Navier–Stokes方程式の解法

KAPSELでは，式(6.1)に示されるNavier–Stokes (NS)方程式を，陽的及び陰的MAC(Marker And Cell)法[43,46]で解く． 計算格子における変数配置は，速度変数と圧力変数がそれぞれが格子点と格子中心に配置されるsemi-staggered Arakawa B 格子となっている[42]． MAC陽解法と陰解法の詳細を以下に示す．

D.1.1

MAC陽解法

まず，式(6.1)から，粒子が流体に及ぼす体積力項を除いた式において，圧力項を陰的に，それ以外の項を陽的に離散化する:1
ψnϕnũn+1 − un
+ (un · ∇)un + ∇pn+1 − ν∇2 un + ∇µnψ + ∇µnϕ = 0.
∆t
ρ
ρ
ρ

(D.1)

ここで，上付きの添字n+1 のついた物理量は未知の量であり，添字n のついた物理量はnステップにおける既知の量である．また，未知流速についたチルダは，ここで求めた速度場が予測速度であり，後で修正が必要であることを明示するために記している．未知流速に関して，連続の式が満たされると仮定すると，以下の圧力に関す
るPoisson方程式が得られる:"#∆t 2 n+1
ψn n ϕn nnnn2 n∇ p = ∇ · u − ∆t∇ · (u · ∇)u − ν∇ u + ∇µψ + ∇µϕ .
ρ
ρ
ρ

(D.2)

右辺第1項は本来0となることが期待されるが，サイクル誤差自己調整のため残している．このPoisson方程式を解くことで未知の圧力 pn+1 が得られ，これを式(D.1)に代入して未知流速ũn+1 を求める．ここで得られたũn+1 は，計算格子が流体・粒子領域のいずれの場所にあるかを区別せずに求められたものであり，これをそのまま次ステッ
プの値とすることはできない．そこで，粒子領域の速度場を粒子運動と対応させるため，粒子領域に拘束力を印加することで速度場を修正する:

un+1 = ũn+1 + ϕ f p ∆t.

(D.3)

ここで印加する拘束力は，ダイバージェンス・フリーな力であり，得られた速度場も連続の式を満たす． このun+1 を次ステップの速度場とする．

D.1.2

MAC陰解法

以下のように速度と圧力を分離したまま陰解法で解くことで，陽解法より安定に計算できる[46]．

付録D

有限差分法(FDM)による流体計算

104

まず，NS方程式を次のように離散化する:
11ũn+1 − un1η∗  n+ 1
ψ∗
ϕn+1 ∗+ u∗ · ∇un+ 2 + ∇pn+1 − ∇ ·∇u 2 + ∇uTn+ 2 + ∇µ∗ψ +∇µϕ = 0.
∆t
ρ
ρ
ρ
ρ

(D.4)

ここで，上付きの添字n+1/2 のついた物理量は，Crank–Nicolson法によるn + 1/2ステップでの未知の量であり，添字∗ のついた物理量はAdams–Bashforth (AB)法により外挿で求めた既知の量である．例えば，流速については，それぞれ

1 n(u + ũn+1 ),21u∗ = (3un − un−1 )2
1

un+ 2 =

(D.5)
(D.6)

と求めることができる．また，ここでは粘度ηが場所に依存して変化する変数としている．式(D.4)において，未知
流速un+1 について連続の式が成り立つとすると，次の圧力に関するPoisson方程式が得られる:

"
#
 ψ∗
∆t 2 n+1η∗  ∗
ϕn+1 ∗n∗∗T∗∗∇ p = ∇ · u − ∆t∇ · u · ∇u − ∇ ·∇u + ∇u + ∇µψ +
∇µϕ .
ρ
ρ
ρ
ρ

(D.7)

ただし，ここでは右辺の未知項を全てAB法による既知項で置き換えており，このPoisson方程式は独立に解くことができる．これを解くことで得られた圧力を式(D.4)に代入し，得られる線形連立方程式を解くことで未知流速を求めることができる． KAPSELでは，この線形連立方程式の解法として前処理なしBiCGSTAB法[47]を採用している．付録Eに記すように，並列反復解法ライブラリのLisを導入することで，他の前処理や反復解法も利用でき
る．

D.1.3

Lees–Edwards境界条件でのせん断流下でのNavier–Stokes方程式

これらのMAC陽解法及び陰解法は，次に示すテンソル解析による座標変換によって印加されるLees–Edwards境
界条件でのせん断流れの計算[23]にも適用できる． 本手法の詳細は第4章に記されている． ここでは，直交座標系の基底ベクトルe x 方向に印加されるせん断速度γ̇(t)の流れを考える． このときせん断勾配方向ey 方向の座
標yにおけるせん断速度は， U = γ̇(t)ye x と表せる．上記条件のせん断流れについて，時間発展に伴い変化する
斜交座標(共変基底)への座標変換を考える．斜交座標系の基底ベクトルは，式(4.2)の上の文中に示されている．

KAPSELのLees–Edwards境界条件でのせん断流下のシミュレーションでは，斜交座標系において，流速からせん
断流れの寄与を差し引いた速度場ξ̂ = u − Uの反変成分ξ̂ i に関するNS方程式

ˆ j ∂ˆ j ξ̂i = −ρ−1Gi j ∂ˆ j p̂ + νG jk ∂ˆ j ∂ˆ k ξ̂i − 2γ̇ξ̂2 δi1 ,∂t ξ̂i + ξ1
∂ˆ j ξ̂ j = 0

(D.8)
(D.9)

を解く．ここで， p̂は斜方座標系で定義される圧力，式(D.8)(D.9)は， Einstein縮約記法で記述している．また，∂t は時間微分，∂ˆ i は斜交座標系(共変基底)での空間微分を表し，∂ˆ i = ∂/∂ x̂i である． Gi j は反変成分表記の計量テンソルであり，せん断流れにおいては，1 + (γ̇t)2ij
G =  −γ̇t

0

−γ̇t
1
0


0

0

1

(D.10)

である[23]．詳細は省略するが，KAPSELでは，式(D.8)(D.9)について直交座標系における計算と同様の手順で時間方向の離散化を行い，斜交座標系における陽的及び陰的MAC法を実装している．

D.2

Cahn–Hilliard方程式の解法

次に，式(6.2)に表されるCahn–Hilliard (CH)方程式の解法について説明する． KAPSELでは，CH方程式についても陽解法及び半陰解法を実装している．

付録D

有限差分法(FDM)による流体計算

105

D.2.1 陽解法
CH方程式の陽解法はEuler法が実装されている:hi
ψn+1 − ψn+ ∇ · (ψn un ) = κ∇2 f ′ (ψn ) − α∇2 ψn + wξ|∇ϕn+1 |2 + 2dϕn+1 (ψn − ψ̄) − 2zξψ ∇ϕn+1 · ∇ψn .
∆t(D.11)

ここで，ψの保存性を良くするために，CH方程式の対流項は保存形で記述している．ここで，ϕn+1 は，粒子識別関数の次ステップの値であるが，弱連成解法によりψに先立って時間発展させているため，既知である．

D.2.2 陰解法
CH方程式の数値計算では最大で4階の微分演算が必要になるので，一般に計算不安定となりやすい．そこで，
KAPSELでは，以下の半陰解法も実装している[49]:h3ψn+1 − 4ψn + ψn−1
+ ∇ · (ψn+1 un+1 ) = κ∇2 2 f ′ (ψn ) − f ′ (ψn−1 ) − α∇2 ψn+1 + wξ|∇ϕn+1 |2 + 2dϕn+1 (ψn+1 − ψ̄)2∆ti−2zξψ ∇ϕn+1 · ∇ψn+1 .
(D.12)
この定式化では，時間微分項については後退差分を適用し，また，右辺の非線形のポテンシャル項について
はAB法による外挿値を用いて式を線形化することで陰的に解いている． この線形連立方程式の解法においても，KAPSELでは前処理なしBiCGSTAB法を採用している．また，付録Eに記すように，並列反復解法ライブラリのLisを導入することで，他の前処理や反復解法も利用できる．

D.2.3

Lees–Edwards境界条件でのせん断流下でのCahn–Hilliard方程式

斜交座標系でのCH方程式の表式はno∂t ψ̂ + ∂ˆ i (ûi ψ̂) = κGi j ∂ˆ i ∂ˆ j f ′ (ψ̂) − αGkl ∂ˆ k ∂ˆ l ψ̂ + wξGkl ∂ˆ k ϕ̂∂ˆ l ϕ̂ + 2dϕ̂(ψ̂ − ψ̄) − 2zξψGkl [∂ˆ k ϕ̂∂ˆ l ψ̂ + ϕ̂∂ˆ k ∂ˆ l ψ̂](D.13)

である．ここで，ϕ̂，ψ̂は，それぞれ斜交座標系で定義される粒子識別関数，流体界面識別関数である．斜交座標系においても前節と同様に陽解法及び半陰解法のソルバーが実装されている．

106

付録E

Lisライブラリとの連携
KAPSEL内の有限差分法（FDM）計算における線形連立方程式の解法として，BiCGSTAB法[47]がデフォルトで用いられている． BiCGSTAB法は安定かつ高速な解法として幅広く流体計算に利用されており， KAPSELを用いた計算でもほとんどのケースで最良の選択肢となりえるが，ごく稀に計算が破綻してしまう可能性も完全には否定できない．そのような場合により堅牢な手法(例えばGMRES法[65]など)を選択できるよう，KAPSELには汎用反復解法ライブラリLis[48]との連携機能も実装されている． KAPSELの実行ファイルをビルドする際に，MakefileでLISオプションをONにすると，自動的にNavier–Stokes(NS)方程式とCahn–Hilliard(CH)方程式の陰解法
ソルバーでLisが利用され，様々な前処理と反復解法を組み合わせた計算が可能である（つまりLisを使用するためにはKAPSELの再コンパイルが必須である）．
使 用 す る 前 処 理 と 反 復 解 法 は プ ロ グ ラ ム 内 で 設 定 す る． fdm matrix solver.cxxのInit lis関 数 に，

lis solver set optionの設定箇所が2箇所存在する．それらはNS方程式とCH方程式の陰解法ソルバーの設定である． Lisの設定については，該当箇所のコメントに例を示しているが，詳細は公式ユーザーガイド[66]を参照いただきたい．

107

付録F

KAPSELのコンパイル
KAPSELversion5はバイナリの実行ファイルで配布されるので，ユーザーがソースコードからコンパイルする必要はない．ここでは開発者向けの情報として，KAPSELのコンパイル手順について解説する．以下の説明ではルートユーザとしての作業を仮定している．管理者権限を持つユーザーアカウントで作業する場合は，適宜sudoコ
マンドを用いること．最新の情報はKAPSEL5-HP*1 を参照していただきたい．

KAPSELの動作環境

F.1

KAPSELの動作環境について，Windows (+ Cygwin)，Linux，Macにおける注意点を以下に示す．
Linuxの場合Linux上でKAPSELをコンパイルする場合，F.2節へと移動．
Windowsの場合

Windows上でKAPSELをコンパイルする場合， Cygwin*2 の基本パッケージに加え， Select Package section で“Category” viewにセットし，以下のパッケージをインストールに含めることが必要である．
•

all Packages in the Devel category•

all Packages related to fftw3 in the Libs category•

all Packages related to hdf5 in the Libs category•

python3 Package in the Python category

その後，F.2節へと移動．

Macの場合MacOS上でKAPSELをコンパイルする場合，Xcodeとcommand line toolsの環境ではgccコマンドがclangコマン
ドを呼び出す仕様になっている．計算機の性能をより引き出すためには，Homebrew等を用いて別途gcc-12をインストールすることが望ましい．

F.2

OCTAのインストール

KAPSELは, ソフトマテリアルに対する統合的なシミュレータとして開発されたOCTA内部にあるGourmetとよ
ばれるユーザインターフェースと連携し入力パラメータの管理や出力データの可視化をおこなっている. そこで,

KAPSELを使用するためにはOCTAがインストールされていることが前提となっている.
*1 https://kapsel-dns.com/v5*2 http://cygwin.com/

付録F

KAPSELのコンパイル

108

インストールの手順として，まずOCTAホームページ http://octa.jp/ にアクセスし，適当なインストー
ラをダウンロードする． その後，インストーラを実行し， OCTAをインストールする*3． 以降， OCTA8.# が/usr/local/OCTA8# (Linux/Mac) または C:\OCTA8.# (Windows) にインストールされているとして手順を説明す
る*4．

libplatformのビルド

F.3

libplatformは，OCTAで用いられる，UDFファイルに保存されたデータにアクセスするための I/Oライブラリである． libplatformをビルドする際，環境に応じてOpenJDK*5 やPython3*6 などのソフトウェアを追加でインストー
ルする必要がある．

Windowsの場合
管理者権限でWindowsにログオンし，Cygwinのターミナルウィンドウを開く．ターミナル上で以下を実行．

$ ln -s /cygdrive/c/OCTA8.# /usr/local/OCTA8#$ cd /usr/local/OCTA8#/GOURMET/src$ make distclean$ ./configure --with-python$ make$ make installLinuxの場合•

gccを用いる場合$ cd /usr/local/OCTA8#/GOURMET/src$ make distclean$ ./configure --with-python$ make$ make install$ mv ../lib/linux64/libplatform.a ../lib/linux64/libplatform_gcc.a•

icc*7 を用いる場合$ cd /usr/local/OCTA8#/GOURMET/src$ make distclean$ ./configure CC=icc CXX=icpc --with-python$ make$ make install$ mv ../lib/linux64/libplatform.a ../lib/linux64/libplatform_icc.a

Macの場合•clang*8 を用いる場合$ cd /usr/local/OCTA8#/GOURMET/src$ make distclean$ ./configure --with-python$ make*3 OCTA/GOURMETに関する質問は，OCTA–BBSのメンバーになることで可能である．
*4 インストールしたOCTAのバージョンに応じて， ”#” に適当な数字を入力する．
*5 AdoptOpenJDK: https://adoptopenjdk.net / For arm64 (Apple silicon): https://www.azul.com/downloads/*6 Anaconda: https://www.anaconda.com/*7 Intel oneAPI Toolkits*8 macOSのデフォルトCコンパイラ

付録F

KAPSELのコンパイル

109$ make install$ mv ../lib/macosx/libplatform.a ../lib/macosx/libplatform_clang.a•gcc*9 を用いる場合$ cd /usr/local/OCTA8#/GOURMET/src$ make distclean$ ./configure CC=gcc-12 CXX=g++-12 --with-python$ make$ make install$ mv ../lib/macosx/libplatform.a ../lib/macosx/libplatform_gcc.a

libplatformのビルド後，何らかの理由でGROUMETが正しく起動しない可能性がある．その場合は，以下のどち
らかのコマンドを実行する．

$ cd /usr/local/OCTA8#/GOURMET$ ./Make-All.sh$ cd /usr/local/OCTA8#/GOURMET/src$ ./build-gourmet
libplatformに関するより詳しい情報は，OCTAのマニュアルを参照していただきたい．

FFTWのインストール

F.4

Windowsの場合
ソースコードをダウンロードし，手動でインストールする必要がある．

$ ./configure --prefix=/opt/fftw/latest.gcc CFLAGS="-O3" FFLAGS="-O3"--enable-openmp --enable-threads --enable-shared --disable-fortran$ make$ make install,→Linuxの場合
ソースコードをダウンロードし，手動でインストールする必要がある．
•

gccを用いる場合,→•$ ./configure --prefix=/opt/fftw/latest.gcc CFLAGS="-O3" FFLAGS="-O3"--enable-openmp --enable-threads --enable-shared --disable-fortran$ make$ make install

iccを用いる場合,→,→$ ./configure --prefix=/opt/fftw/latest.gcc CC=icc CXX=icpc CFLAGS="-O3"FFLAGS="-O3" --enable-openmp --enable-threads --enable-shared--disable-fortran$ make$ make install

Macの場合*9 brew install gcc-12 等でインストール可能

付録F•

KAPSELのコンパイル

110

clangを用いる場合
brew install fftw•

gccを用いる場合,→,→$ ./configure --prefix=/opt/fftw/latest.gcc CC=gcc-12 CXX=g++-12 CFLAGS="-O3"FFLAGS="-O3" --enable-openmp --enable-threads --enable-shared--disable-fortran$ make$ make install

HDF5のインストール

F.5

Windowsの場合
ソースコードをダウンロードし，手動でインストールする必要がある．

$ ./configure --prefix=/opt/hdf5/latest.gcc CFLAGS="-O3" FFLAGS="-O3"--enable-fortran --enable-cxx$ make$ make install,→Linuxの場合
ソースコードをダウンロードし，手動でインストールする必要がある．
•

gccを用いる場合,→•$ ./configure --prefix=/opt/hdf5/latest.gcc CFLAGS="-O3" FFLAGS="-O3"--enable-fortran --enable-cxx$ make$ make install

iccを用いる場合,→$ ./configure --prefix=/opt/hdf5/latest.icc CC=icc CXX=icpc CFLAGS="-O3"FFLAGS="-O3" --enable-fortran --enable-cxx$ make$ make install

Macの場合•clangを用いる場合$ brew install hdf5•

gccを用いる場合,→$ ./configure --prefix=/opt/hdf5/latest.gcc CC=gcc-12 CXX=g++-12--enable-fortran --enable-cxx$ make$ make install

付録F

KAPSELのコンパイル

F.6

LISのインストール (任意)111

Windowsの場合
ソースコードをダウンロードし，手動でインストールする必要がある．

$ $./configure --prefix=/opt/lis/latest.gcc$ make$ make installLinuxの場合
ソースコードをダウンロードし，手動でインストールする必要がある．
•

gccを用いる場合$ $./configure --prefix=/opt/lis/latest.gcc$ make$ make install•

iccを用いる場合$ ./configure --prefix=/opt/lis/latest.icc CC=icc CXX=icpc$ make$ make install

Macの場合ソースコードをダウンロードし，手動でインストールする必要がある．
•

clangを用いる場合$ ./configure --prefix=/opt/lis/latest.clang CC=clang CXX=clang++$ make$ make install•

gccを用いる場合$ ./configure --prefix=/opt/lis/latest.gcc CC=gcc-12 CXX=g++-12$ make$ make install

F.7

KAPSEL実行ファイルのビルド

最新バージョンのKAPSELソースコード kapsel#.#.zip*10 をダウンロードし，圧縮ファイルを解凍する．

$ unzip kapsel#.#.zip$ cd kapsel#.#/src
F.3節でビルドしたライブラリ libplatform.a と正しくリンクされるために，添付されている Makefile 中のGOURMET HOME PATH を修正する必要がある．また環境に応じて，-I (インクルードファイルのパス) および -L (ライブラリファイルのパス) も変更する必要がある．正しくパスが設定されたら，まず作業ファイルを削除する．
*10 バージョンに応じて ”#” に適当な数字を入力する

付録F

KAPSELのコンパイル112$ make clean
その後，以下に示す make コマンドの中から1つを実行し，利用する計算環境に適切なKAPSELバイナリ実行ファ
イルをビルドする．

Windowsの場合

Cygwinを用いる．
$ make ENV=CYGWIN$ make ENV=CYGWIN FFT=FFTW$ make ENV=CYGWIN_OMP FFT=FFTW
Linuxの場合•

gccを用いる場合$ make ENV=GCC$ make ENV=GCC FFT=FFTW$ make ENV=GCC_OMP FFT=FFTW•

iccを用いる場合$ make ENV=ICC$ make ENV=ICC FFT=IMKL$ make ENV=ICC_OMP FFT=IMKL

Macの場合•clangを用いる場合$ make ENV=CLANG$ make ENV=CLANG FFT=FFTW$ make ENV=CLANG_OMP FFT=FFTW•

gccを用いる場合$ make ENV=GCC_MAC$ make ENV=GCC_MAC FFT=FFTW$ make ENV=GCC_MAC_OMP FFT=FFTW

全ての場合
作成した実行ファイルkapselをbinにコピーしてKAPSELのインストールディレクトリにシンボリックリンク
する.

$ cd ..
$ cp ./src/kapsel ./bin/kapsel_self_made$ ln -s ./bin/kapsel_self_made ./kapsel
環境変数を適切に設定してKAPSELを実行する．

,→$ export DYLD_LIBRARY_PATH = "/opt/fftw/latest.gcc/lib: /opt/hdf5/latest.gcc/lib:/opt/lis/latest.gcc/lib: DYLD_LIBRARY_PATH"$ ./kapsel
Usage:> ./kapsel -I[input UDF] -O[output UDF] -D[define UDF] -R[restart UDF]

113

謝辞
この成果は，国立研究開発法人科学技術振興機構(JST)さきがけ研究，JST-CREST研究，科学研究費助成事業，
国立研究開発法人新エネルギー・産業技術総合開発機構(NEDO)からの援助，及び産業技術総合研究所(AIST)，京都大学，九州大学の協力により得られたものです．

114

参考文献
[1]

R. Yamamoto, J. J. Molina, and Y. Nakayama, “Smoothed profile method for direct numerical simulations ofhydrodynamically interacting particles”, Soft Matter 17, 4226 (2021).

[2]

J. N. Israelachvili, 分子間力と表面力第2版 (朝倉出版, 1996).

[3]

J. R. Blake, “A spherical envelope approach to ciliary propulsion”, Journal of Fluid Mechanics 46, 199 (1971).

[4]

J. J. Molina, Y. Nakayama, and R. Yamamoto, “Hydrodynamic interactions of self-propelled swimmers”, Soft
Matter 9, 4923 (2013).

[5]

Y. Nakayama and R. Yamamoto, “Simulation method to resolve hydrodynamic interactions in colloidal dispersions”, Physical Review E 71, 036707 (2005).

[6]

Y. Nakayama, K. Kim, and R. Yamamoto, “Simulating (electro)hydrodynamic effects in colloidal dispersions:
Smoothed profile method”, The European Physical Journal E 26, 361 (2008).

[7]

J. J. Molina and R. Yamamoto, “Direct numerical simulations of rigid body dispersions. I. Mobility/friction
tensors of assemblies of spheres”, The Journal of Chemical Physics 139, 234105 (2013).

[8]

J. V. José and E. J. Saletan, Classical Dynamics: A Contemporary Approach (Cambridge University Press, Aug.
1998).

[9]

H. Tanaka and T. Araki, “Simulation Method of Colloidal Suspensions with Hydrodynamic Interactions: Fluid
Particle Dynamics”, Physical Review Letters 85, 1338 (2000).

[10]

R. Yamamoto, “Simulating Particle Dispersions in Nematic Liquid-Crystal Solvents”, Physical Review Letters
87, 075502 (2001).

[11]

X. Luo, M. R. Maxey, and G. E. Karniadakis, “Smoothed profile method for particulate flows: Error analysis
and simulations”, Journal of Computational Physics 228, 1750 (2009).

[12]

T. Iwashita, Y. Nakayama, and R. Yamamoto, “A numerical model for brownian particles fluctuating in incompressible fluids”, Journal of the Physical Society of Japan 77, 10.1143/JPSJ.77.074007 (2008).

[13]

T. Iwashita, Y. Nakayama, and R. Yamamoto, “Velocity autocorrelation function of fluctuating particles in incompressible fluids: toward direct numerical simulation of particle dispersions”, Progress of Theoretical Physics
Supplement 178, 10.1143/PTPS.178.86 (2008).

[14]

T. Iwashita and R. Yamamoto, “Short-time motion of brownian particles in a shear flow”, Physical review. E,
Statistical, nonlinear, and soft matter physics 79, 031401 (2009).

[15]

D. A. S. W. B. Russel and W. R. Schowalter, Colloidal dispersions (Cambridge University Press, Cambridge,
England, 1989).

[16]

Y. Otsubo, “The present status and prospect of suspension rheology”, Nihon Reoroji Gakkaishi 31, 15 (2003).

[17]

T. Matsumoto, “Rheology of colloidal disperse systems”, Nihon Reoroji Gakkaishi 32, 3 (2004).

[18]

I. M. Krieger, “Rheology of monodisperse latices”, Advances in Colloid and Interface Science 3, 111 (1972).

[19]

C.-H. Hsueh and P. Becher, “Effective viscosity of suspensions of spheres”, Journal of the American CeramicSociety 88, 1046 (2005).

[20]

A. Onuki, “Phase transitions of fluids in shear flow”, Journal of Physics: Condensed Matter 9, 6119 (1997).

参考文献

[21]

115

S. Toh, K. Ohkitani, and M. Yamada, “Enstrophy and momentum fluxes in two-dimensional shear flow turbulence”, Physica D: Nonlinear Phenomena 51, 569 (1991).

[22]

H. Kobayashi and R. Yamamoto, “Implementation of Lees–Edwards periodic boundary conditions for direct
numerical simulations of particle dispersions under shear flow”, The Journal of Chemical Physics 134, 064110(2011).

[23]

H. Kobayashi and R. Yamamoto, “Implementation of lees–edwards periodic boundary conditions for direct
numerical simulations of particle dispersions under shear flow”, The Journal of Chemical Physics 134, 064110(2011).

[24]

K. Kim and R. Yamamoto, “Efficient simulations of charged colloidal dispersions: a density functional approach”, Macromolecular Theory and Simulations 14, 278 (2005).

[25]

K. Kim, Y. Nakayama, and R. Yamamoto, “Direct numerical simulations of electrophoresis of charged colloids”,
Phys. Rev. Lett. 96, 208302 (2006).

[26]

H. Tanaka and T. Araki, “Simulation method of colloidal suspensions with hydrodynamic interactions: fluid
particle dynamics”, Phys. Rev. Lett. 85, 1338 (2000).

[27]

T. Kajishima, S. Takiguchi, H. Hamasaki, and Y. Miyake, “Turbulence structure of particle-laden flow in a vertical plane channel due to vortex shedding”, JSME International Journal Series B Fluids and Thermal Engineering
44, 526 (2001).

[28]

J.-L. Barrat and J.-P. Hansen, Basic concepts for simple and complex liquids (Mar. 2003).

[29] 北原文雄・古澤邦夫・尾崎正孝・大島広行, ゼータ電位微粒子界面の物理化学 (サイエンティスト社, 1995).
[30]

H. Ohshima, T. W. Healy, and L. R. White, “Accurate analytic expressions for the surface charge density/surface
potential relationship and double-layer potential distribution for a spherical colloidal particle”, Journal of Colloid and Interface Science 90, 17 (1982).

[31]

R. O’Brien and L. White, “Electrophoretic mobility of a spherical colloidal particle”, Journal of The Chemical
Society, Faraday Transactions 2 74, 1607 (1978).

[32]

H. Ohshima, T. W. Healy, and L. R. White, “Approximate analytic expressions for the electrophoretic mobilityof spherical colloidal particles and the conductivity of their dilute suspensions”, J. Chem. Soc., Faraday Trans.
2 79, 1613 (1983).

[33] 土井正男・滝本淳一, 物理仮想実験室 (名古屋大学出版会, 2004).
[34]

W. Ramsden, “Separation of solids in the surface-layers of solutions and ‘suspensions’ (observations on
surface-membranes, bubbles, emulsions, and mechanical coagulation).—preliminary account”, Proceedings ofthe royal Society of London 72, 156 (1904).

[35]

S. U. Pickering, “CXCVI.-Emulsions”, Journal of the Chemical Society, Transactions 91, 2001 (1907).

[36]

F. Fenouillot, P. Cassagnau, and J.-C. Majesté, “Uneven distribution of nanoparticles in immiscible fluids: morphology development in polymer blends”, Polymer 50, 1333 (2009).

[37]

Y. Yang, Z. Fang, X. Chen, W. Zhang, Y. Xie, Y. Chen, Z. Liu, and W. Yuan, “An overview of pickering
emulsions: solid-particle materials, classification, morphology, and applications”, Frontiers in pharmacology 8,287 (2017).

[38]

M. E. Cates and P. S. Clegg, “Bijels: a new class of soft materials”, Soft Matter 4, 2132 (2008).

[39]

M. N. Lee and A. Mohraz, “Bicontinuous macroporous materials from bijel templates”, Advanced Materials
22, 4836 (2010).

[40]

P. C. Hohenberg and B. I. Halperin, “Theory of dynamic critical phenomena”, Reviews of Modern Physics 49,
435 (1977).

[41] 土井正男・小貫明, 高分子物理・相転移ダイナミクス (岩波書店, 1992).

参考文献

[42]

116

A. Arakawa and V. R. Lamb, “Computational design of the basic dynamical processes of the ucla generalcirculation model”, General circulation models of the atmosphere 17, 173 (1977).

[43]

F. H. Harlow and J. E. Welch, “Numerical calculation of time-dependent viscous incompressible flow of fluidwith free surface”, The physics of fluids 8, 2182 (1965).

[44]

J. H. Ferziger and M. Peric, Computational methods for fluid dynamics (Springer Science & Business Media,
2012).

[45]

D. Jacqmin, “Calculation of two-phase navier–stokes flows using phase-field modeling”, Journal of Computational Physics 155, 96 (1999).

[46]

A. Maruoka, J. Matsumoto, and M. Kawahara, “A fractional step finite element method for incompressiblenavier–stokes equations using quadrilateral scaled bubble function”, Journal of Structural Engineering A 44,
383 (1998).

[47]

H. A. Van der Vorst, “Bi-cgstab: a fast and smoothly converging variant of bi-cg for the solution of nonsymmetric linear systems”, SIAM Journal on scientific and Statistical Computing 13, 631 (1992).

[48] Lis: Library of Iterative Solvers for Linear Systems, https : / / www . ssisc . org / lis / index . ja . html,
Accessed: 2019-01-28.
[49]

Y. He, Y. Liu, and T. Tang, “On large time-stepping methods for the Cahn–Hilliard equation”, Applied Numerical Mathematics 57, 616 (2007).

[50] ParaView Documentation, https://docs.paraview.org/en/latest/, Accessed: 2021-09-30.
[51]

C. Domb, Phase transitions and critical phenomena (Elsevier, 2000).

[52]

M. C. Marchetti, J. F. Joanny, S. Ramaswamy, T. B. Liverpool, J. Prost, M. Rao, and R. A. Simha, “Hydrodynamics of soft active matter”, Reviews of Modern Physics 85, 1143 (2013).

[53]

M. J. Lighthill, “Hydromechanics of Aquatic Animal Propulsion”, Annual Review of Fluid Mechanics 1, 413(1969).

[54]

J. R. Blake, “A spherical envelope approach to ciliary propulsion”, Journal of Fluid Mechanics 46, 199 (1971).

[55]

O. S. Pak and E. Lauga, “Generalized squirming motion of a sphere”, Journal of Engineering Mathematics 88,
1 (2014).

[56]

N. Oyama, J. J. Molina, and R. Yamamoto, “Simulations of Model Microswimmers with Fully Resolved Hydrodynamics”, Journal of the Physical Society of Japan 86, 101008 (2017).

[57]

A. Bricard, J.-B. Caussin, N. Desreumaux, O. Dauchot, and D. Bartolo, “Emergence of macroscopic directedmotion in populations of motile colloids”, Nature 503, 95 (2013).

[58]

G. Quincke, “Ueber rotationen im constanten electrischen felde”, Annalen der Physik 295, 417 (1896).

[59]

A. Mauleon-Amieva, M. Mosayebi, J. E. Hallett, F. Turci, T. B. Liverpool, J. S. Van Duijneveldt, and C. P.
Royall, “Competing active and passive interactions drive amoebalike crystallites and ordered bands in active
colloids”, Physical Review E 102, 032609 (2020).

[60]

A. J. Goldman, R. G. Cox, and H. Brenner, “Slow viscous motion of a sphere parallel to a plane wall—i motion
through a quiescent fluid”, Chemical engineering science 22, 637 (1967).

[61]

B. Cichocki and R. Jones, “Image representation of a spherical particle near a hard wall”, Physica A: Statistical
Mechanics and its Applications 258, 273 (1998).

[62]

M. P. Allen and D. J. Tildesley, Computer Simulation of Liquids (Oxford Science Publications, 1987).

[63]

S. M. Cox and P. C. Matthews, “Exponential time differencing for stiff systems”, Journal of Computational
Physics 176, 430 (2002).

[64]

M. Hochbruck and A. Ostermann, “Exponential integrators”, Acta Numerica 19, 209 (2010).

参考文献

[65]

117

Y. Saad and M. H. Schultz, “Gmres: a generalized minimal residual algorithm for solving nonsymmetric linear
systems”, SIAM Journal on scientific and statistical computing 7, 856 (1986).

[66] Lis ユーザガイド, https://www.ssisc.org/lis/lis-ug-ja.pdf, Accessed: 2019-01-28.