45 Big Sur でGLSC

(工事中)

GLSC を Big Sur で使うくらい、 「GLSC で gfortran」 の通りで楽勝だろうと思っていたら、コンパイラーの仕様が変わっていて、 結構大変だった (暗黙の宣言を単に警告するのでなく禁止している)。 迷ったけれど、こちらの作業時間が短いことを優先して、 あちこちに #include 入れたり、 g_out のコードにプロトタイプ宣言を加えたり、 結構書き換えた。ただし内容的な(仕様というべきか)変更はしていないつもり。 (過去に個人的な都合で書き足した関数が含まれていて、 そういうのは別のパッチに分けた方が良いかもしれないけれど、 分ける作業が面倒なのでそれはサボった。 単に使わなければ良いのであまり問題はないでしょう。 それから、 何かと問題を引き起こす g_dump() を入れるべきかもしれないけれど、 それもサボった。)


とりあえず
ターミナルでこうすれば make できる (保証はしないけれど)
mkdir sagyou
cd sagyou
curl -O  http://www602.math.ryukoku.ac.jp/~nakano/software/math/glsc-3.5.a.tar.Z
curl -O  http://nalab.mind.meiji.ac.jp/~mk/daishin/glsc-3.5+a.patch
curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/graphics/glsc-3.5+mk.patch20201229

tar xzf glsc-3.5.a.tar.Z
cd glsc-3.5.a
patch -p1 < ../glsc-3.5+a.patch
patch -p1 < ../glsc-3.5+mk.patch20201229
make>&make.log
sudo mkdir -p /usr/local/bin /usr/local/include /usr/local/lib
sudo make install
(個人的な趣味で gcc をインストールしていて、 (ついでに?インストールされる) gfortran が使える状態であると仮定している。 これで test の下にある ctests, ctestd, ftests, ftestd どれも動いている。)


(以下蛇足。個人的なメモ。) 色々引っかかった。

Xcode をインストールせずに、コマンドライン・ツールだけで済ませようとして、 ライセンスの同意手順に問題が生じたか、 gfortran がストライキ起こしたりした (-lSystem がどうとか)。
sudo xcodebuild -license
としたら通った。

それから、これは gcc の話で、GLSC の make そのものには直接関係ないけれど (上は macOS の cc を使って make している、 一方普段使っている動作確認コードは gcc でコンパイルするようにしている)、 /usr/include が空のせいで、コンパイルが出来ない。 環境変数 SDKROOT を設定するものだそうです。

bash や zsh
export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"
tcsh
setenv SDKROOT `xcrun --sdk macosx --show-sdk-path`

以下は未整理

export LIBRARY_PATH="$LIBRARY_PATH:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib"
(これはしなくて済んだ。)

http://blueeyes.sakura.ne.jp/2018/09/28/1601/

https://qiita.com/yoya/items/c0b26cba3c040c581643(あ、こうのさんだ。)

https://community.intel.com/t5/Intel-Fortran-Compiler/New-macOS-Big-Sur-return-quot-ld-library-not-found-for-lSystem/m-p/1228382/highlight/true?profile.language=ja

(おまけ)

  1. 現象数理学科の学生には、cglsc というコマンドを使っている人が多いと思うけれど、 それはいわゆるシェル・スクリプトで、元々の glsc に含まれてはいない。
    cglsc のインストール
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/labo/cglsc
    chmod +x cglsc
    sudo mv cglsc /usr/local/bin
    
    あるいは最後のは mv cglsc ~/bin でも良いかも。 時々 /usr/X11 が存在せず、 上の cglsc は動かないようになっている Mac もある。 その場合は、 cglsc の中の /usr/X11/opt/X11 などに書き換えると良い。 (cglsc++ というのもあるけれど、動作保証はしない。)
    チェック (1次元熱方程式)
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/fdm/heat1d-e-glsc.c
    cglsc heat1d-e-glsc.c
    ./heat1d-e-glsc
    

    例えば $ N$ として $ 100$, $ \lambda$ (lambda=) として $ 0.5$, $ T_{\max}$ (Tmax=) として $ 0.5$ を入力する。

    チェック(2次元熱方程式)
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/fdm/heat2d-i.c
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/fdm/symbandlu.h
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/fdm/symbandlu.c
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/fdm/smallmatrix.h
    cglsc heat2d-i.c symbandlu.c
    ./heat2d-i
    
    プログラム heat2d-i への入力は
    Nx, Ny: 100 100
    θ (0≦θ≦1): 0.5
    τ(≦5e-05≡最大値ノルムに関する安定性条件を満たすτの上限): 1e-4
    注意: λ=2>1/2(1-θ) となっています。
    備考: 1+2θλ= 3.0, -θλx= -0.5, -θλy= -0.5
    Tmax: 1
    Δt: 0.001
    

(2021/2/21追記) おっと、 heat2d-i.c のコンパイル時に matrix.h がないとエラーになる。
curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/matrix/matrix-lib3.41.tar.gz
tar xzf matrix-lib3.41.tar.gz
cd matrix-lib3.41
make
sudo make install
sudo cp ccmg /usr/local/bin



桂田 祐史