植村堪介 Kansuke UEMURA

PhD Student at Ide lab.
current interest: rupture dynamics, EQ statistics, evolution of fault systems

. memorandom 備忘

コメントアウト

markdown: [](.*) .or. <!-- .* -->
css: /* */
json: //
fortran: !
enscript --pretty-print=fortran_pp --color --line-numbers -H1 --columns=2 --landscape hoge.f90 -o hoge.ps ps2pdf hoge.ps  
enscript --help-pretty-print | grep Name  

A4サイズにする方法は不明

Fortran debug

gfortran -fbounds-check -Wall -fbacktrace 
ifort -CB -warn all -traceback -check all

Fortran 組込手続き

vim でソート

sort f /\v([^ ]+ +){5}/ 6番目の要素について実数として整列。逆順は!を付ける。
!sort -k 6,6でbash(csh?)のsortを用いることが出来る。このほうが楽。 重複内容を消す場合は-uをつける。逆順は-r。 テキストが綺麗に整形されていない場合:

0.010   10.10
 0.020    10.00

-b をつけるとよい。

coarray fortran

現状ではifortでifort -coarray ***.f90とコンパイルすると、mpiexec.hydraが実行プログラム(?)として指定され、それが使えない環境(e.g., EIC@ERI)では利用ができない。 WSLでは実行が途中でkillされてしまう。
並列数の指定は、ifort -coarray-num-images=4とやるか、 実行時に環境変数export FOR_COARRAY_NUM_IMAGES=4とするらしい。 本当にMPIになっているのか若干不安

numpy/matplotlibでの多次元配列の読み込み

numpy.loadtxt はおそらく2次元配列までしか読み込めない。 多次元配列(時間+x軸+y軸+複数物理量)を読み込みたい場合は、一度2次元で読み込んでからnumpyで配列の形状を変更する必要があると思われるが、 scipy.io.FortranFileを用いれば、fortranの’unformatted’なバイナリ出力をそのまま読み込むことができる。

open(60, file="hoge", format="unformatted", action="write", status="replace", iostat=ios)
write(60) A(1:n,1:n2)
write(60) B(1:n,1:n2)
close(60)

と出力したのを、配列ごとに読み込むことが出来る。 ただし、fortranの’unformatted’出力はコンパイラに依存することもあるようなので注意とのこと(scipyドキュメントより)
たとえば

write(60) A, B  

write(60) A
write(60) B

が同一かどうかという問題と、バイトオーダーの問題などがあるらしい。参照

numpy.fromfileはあまりよくなさそう

ここにfortranから.npyファイルを出力するライブラリがあるらしいが、内容は未確認。

fortran binary

fortranのバイナリ出力にはbinaryとunformattedがあるが、前者はfortran独自規格。

OracleのSun Studio Fortran 95のドキュメントには 「FORM=‘BINARY’ と指定すると、レコード長がファイルに組み込まれない」と書かれている。

pandoc

pandoc -f markdown -t html -s index.md
pandoc index.md -s --toc --toc-depth=3 -o index.html

-sを付けないと<head>その他が付かない。cssはマークダウンのヘッダーに css: ./style.cssを追加。
table-of-contentの場所はmarkdown内では明示することが出来ず、 デフォルトでは<nav>要素になるので、cssでいじるしかない。あるいはテンプレートをいじるか。

tocを使う際、見出し要素に{.unlisted}をつけると目次から除外される。{.unnumbered}はダメ。

Xcript

jupyterlab

編集内容が消えたとき: メニューの“File”→“Revert notebook from checkpoint”“Reload notebook from disk”を試すとよさそう。 勝手にバックアップを取るのが悪さをしているのか。 ログアウト前に全てのタブを閉じたほうがよい?

出力

HTML出力をしたい場合はFile -> Exportできる。

コード部分を非表示にしたい場合の一つの方法は、出力されたファイルのcssの編集。 divのクラスinputdisplay: noneにすればコード部分が消える。
あるいは、jupyter nbconvert --to HTML --no-input FILENAME.ipynbとやる。

画像表示

コード中の場合はmatplotlib

from IPython.display import Image
Image('./hoge/hoge.png')

Markdown中は

![ホバーで表示される文言]("./hoge/hoge.png" タイトル?)

と書けばよい。

x11 on WSL2

2020/4/23において、WSL2上でgnuplotなどを使おうとすると、 VcXsrvなどのxserverとの通信がWindows Defenderのファイアウォールに 遮断される

の2つの方法がある。当然、後者のほうがよい。

neovim-remote

:echo g:servernameでneovimが/tmp/nvimsocketを利用しているか確認。
nvr -lで別タブで開く。