数学記号divの意味とオイラーの連続式

流体力学において重要な式であるオイラーの連続式の導出についてのまとめ。

 

まず、オイラーの連続式を一言でいうと「質量保存の法則の式」であり、式で書くと次のように書ける。

div(ρv)=-∂ρ/∂t v=(v, u, w)

数学記号divの意味を知っていれば一発でわかる。数学記号divは、ある微小体積に入って出てきた流量(ベクトル)がどれだけ増えたかを示す、言い換えると、微小体積からの”湧き出し”量を示す。ここで、湧き出しているのは、質量であり、右辺はどれだけ微小体積から質量が流失したかを示している。一方、質量保存の法則により、湧き出した分(流失した分)だけ微小体積内の質量が減る必要がある。それを、右辺が示している。

 

上の式は、次のように書き換えられる(以下の書き換えは、導出と逆の事をしている)。

∂ρv/∂x+∂ρu/∂y+∂ρ/∂w=-∂ρ/∂t

両辺に微小体積dxdydzを掛ける。

∂ρv/∂x dxdydz+∂ρu/∂y dydxdz+∂ρ/∂w dzdydx=-∂m/∂t

ここで、∂ρv/∂x dxdydzについて見てみる。∂ρv/∂x dxは、ρvがx地点からx+dx地点に移動した時にどれだけ増えたかを示す(ρv(x+dx)-ρv(x))。また、dydzは、x軸方向から見た流入面積である。しかがって、∂ρv/∂x dxdydzは、x軸方向からの質量の流失量を示す。他の項は、他の軸の場合であり同様な議論が可能。したがって、左辺は、どれだけ微小体積から質量が流失したかを示している。一方、左辺は、微小体積内の質量の減少量を示している。

 

参考:物理数学の直感的方法 長沼伸一郎 p68

オイラーの連続の式 - EMANの流体力学

 

メモリテストを行う(MemTest86)。

パソコンのメモリが故障していないかチェックするためのメモリテストを行うためのメモ。

今回使うのは、memtest86

www.memtest86.com

このサイトでDOWNLOAD

をクリック。

 

ダウンロードしたファイルを展開して、

memtest86-usb.img

をあることを確認、このイメージファイルをUSBに書き込む。

 

手順(Macの場合)

1: dfコマンドでデバイス名を確認

2: diskutil unmount /Volumes/"USBの名前"でアンマウント

3: sudo dd if="memtest86-usb.imgのパス" of="デバイス名" bs=1048576 でUSBに書き込み。

 

イメージファイルを書き込んだUSBを検査したいパソコンに挿してブートすれば、始まる(そのまま放置で)。

 

テスト時間を短縮するには:デフォルトでは4回検査することになっているので、configを選択し、tをキーボードで押したのち、一番下のテスト回数の所を1に変更した後、sをキーボードで押せば、テスト時間を短くできる。それでも三時間ほどかかるが、、、。

3次元の回転行列を2次元の回転行列からスッと導く

2次元の回転行列は、以下の図より

f:id:tchem:20210520215639p:plain

2次元の回転

x軸、y軸それぞれに対応する単位ベクトルが上のように変換されることから、

 

f:id:tchem:20210520223540p:plain

となることがわかる。ここで、z軸を考えるとz座標は、回転に関係しないので、この2次元の話をそのまま適応すれば良い。よって、

 

f:id:tchem:20210520223557p:plain

となる。他の軸のことも同様のことが言えるのは確かだ。しかし、なんの考えもなしに、導くと次のようになりそうである。

 

f:id:tchem:20210520223610p:plain

しかし、ここでy軸の回転行列が間違っている。これは、zx平面の2次元の回転行列を考えればわかることだが、そんなの考えずにy軸の回転行列をすっと導きたい(5月だし、、、)。

その方法は次の通りだ。z軸の回転行列はわかっているものとする。それを左上にずらし、はみ出たものを反対側から入れこめば良い。そうすれば、すべて正しいものが得られる。

f:id:tchem:20210520223652p:plain



 

 

 

シェルスクリプト forの基礎と応用

bashに限らず使える基本の形式として以下のものがある。

for 変数 in リスト

do

実行文

done

 

これは、リストの中身の個数回繰り返す。また、各回でリスト内のものを参照することができる。

例えば、

for i in a b c

do

echo $i

done

とすると結果は、

a

b

c

となる。

 

また、リストに`コマンド`を入れればそのコマンドの結果を利用できる。

例えば、

for i in  `seq3`

do

echo $i

done

とすると、結果は、

1

2

3

となり、他には、

for i in `ls -d */ | sed -e "s/\///g"`

do

echo $i

done

とすると、結果は実行した場所でのディレクトリが順々に表示される

 

追記1:例えば`seq 2 5`と入力すると、2〜5の番号が出力される

LinuxでCPU温度を知りたい!

UbuntuでCPU使用率は、デフォルトの機能で見れるが、CPU温度は見れないのでそれを見るためのソフトを紹介する。

 

[lm-sensors]

インストール(Ubuntu)→  sudo apt install lm-sensors

初期設定 → sudo sensors-detect

 

CPU温度を知りたい時、ターミナルで、「sensors」と入力すれば、CPU温度の表が表示される。

ubuntu20.04のメモリ不足(キャッシュ圧迫)と起動時の遅延を解消する!

最近、ubuntu20.04を使い始めて、数ヶ月たつのだが、起動時からbuff/catheがメモリの大半を占めてしてしまう(その大きさなんと最大14Gb!!!)上に、動作が鈍くなってしまう。あと、関係があるかはわからないがzoomを使用していたら、PCがフリーズすることもたたある(この時、話し手の声は聞こえるのに、操作が全くできなくなる)。ちなみに、最新のi7とメモリは16Gbなので、PCの性能が足りないというわけではないはず、、。

そこで、いろいろ調べた結果、起動直後にtopコマンドを使用してみてみると、traker+というのが、上位に来ていた。trakerは、ファイル検索をスムーズに行うためのプロセスみたい。trakerは、19.04からデフォルトで入っているみたいだけど、リソース(cpuとメモリ)を消費するという問題があるみたい、、、。つまりこいつが犯人だ!!!!!!!!!!!!!!!!!!!!!!!

このトラッカーを無効化する方法が、以下のサイトに記載されている。

www.linuxuprising.com

方法

方法は、こいつ(マスクする)を入力して

systemctl --user mask tracker-store.service tracker-miner-fs.service tracker-miner-rss.service tracker-extract.service tracker-miner-apps.service tracker-writeback.service

こいつ(トラッカーをリセット)を入力して、

tracker reset --hard

再起動すれば完了!!

実際に再起動してみると、PCはサクサク動き、buff/catheも1Gbあたりで安定するようになった。めでたしめでたし。なにをやっているいるのかを知りたい人は、上記のサイトに詳しく書いてある。

注意点

ただ、このtrakerの機能は、ファイル検索を便利にするためのプロセスなので、人によっては不便になってしまうことがあるかもしれないので注意。上記の設定は、以下の手順で元に戻すことができる。

こいつ(アンマスクする)を入力して再起動

systemctl --user unmask tracker-store.service tracker-miner-fs.service tracker-miner-rss.service tracker-extract.service tracker-miner-apps.service tracker-writeback.service

 

 

f2pyで上手くコンパイルできない。

 fatal error: Python.h: そのようなファイルやディレクトリはありません

 #include "Python.h"

          ^~~~~~~~~~

このようなエラーが出た場合は、

aptやzypperやyumコマンドで

 zypper install python3-devel

sudo yum install python3-devel

sudo apt install libpython3.6-dev

pythonの開発バージョンをインストールする必要がある。

 

1、(単純ミス)anaconda環境でないPCでf2pyをコンパイルしてpython3で実行しようとすると、ImportError: dynamic module does not define module export function (PyInit_output)みたいのが出てインポートできなかったのでその対処をメモ

原因は、python2のf2pyでコンパイルしていたからだった。。。

python3のf2pyでコンパイルしたい時は、f2py3というコマンドを使用するみたい。

そういえば、pipとかもpip3だもんね、、、python2と3が互換性がないのまじでややこしい。

 

2.(PCの仕様)f2py3コマンドが使えない場合がある。モジュールとして実行する必要があり、以下で実行する必要がある。

python -m numpy.f2py -m test -c test.f90

参考

https://runebook.dev/ja/docs/numpy/f2py/usage