エラー記録と対処 †"No module named clawutil"というエラー †make data の実行でこの python 上のエラーが発生. その1 †echo $PYTHONPATH を実行した際に,$CLAW と同じパスが含まれているのを確認した上で,python 上で In [1]: import clawpack In [2]: from clawpack import clawutil ができるか確認.2行目でエラーが出るはず. ls -l $CLAW/clawpack/ で見ると,"/raid/xxx/" と環境依存のリンク元となっており,リンクとして機能していなかったことが原因.リンク元をlnで貼り直した. 初期設定では絶対パスのリンクになっており,$CLAW のパスが変わると毎回リンクを修正することになるので,相対パスにしておいたほうが良い. cd $CLAW/clawpack ln -fs ../amrclaw/src/python/amrclaw amrclaw ln -fs ../classic/src/python/classic classic ln -fs ../clawutil/src/python/clawutil clawutil ln -fs ../pyclaw/src/forestclaw forestclaw ln -fs ../geoclaw/src/python/geoclaw geoclaw ln -fs ../pyclaw/src/petclaw petclaw ln -fs ../pyclaw/src/pyclaw pyclaw ln -fs ../riemann/src riemann ln -fs ../visclaw/src/python/visclaw visclaw その2 †上の設定ができていても 'No module named clawpack.clawutil.data' のようなエラーが出た. PYTHON ?= python3 CLAW_PYTHON ?= $(PYTHON) 安易に /usr/bin/python のリンクを張り替えたり,rc ファイルで alias をつけると,他のパッケージとの依存関係でおかしくなる可能性があるのでやるなら慎重に. 同一のtopography(地形データ)ファイルを読めない †ある実行ファイル xgeoclaw が地形ファイルを読んでいる途中に別の実行ファイルが同じ地形ファイルを読もうとするとエラーになる. open(xx,...,status='unknown',action='read') にすれば解決する.
NetCDF, curl, OpenSSL の依存関係によるコンパイルエラー †NetCDF を有効にして geoclaw をコンパイルすると,下記のようなエラーが出てきて,実行ファイル xgeoclaw が生成できなかった. /usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_easy_cleanup@CURL_OPENSSL_3' /usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_easy_perform@CURL_OPENSSL_3' /usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_easy_setopt@CURL_OPENSSL_3' /usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_easy_strerror@CURL_OPENSSL_3' /usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_easy_init@CURL_OPENSSL_3' /usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_easy_getinfo@CURL_OPENSSL_3' /usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_version_info@CURL_OPENSSL_3' /usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_global_init@CURL_OPENSSL_3' /home/miyashita/AMR/clawpack/clawutil/src/Makefile.common:139: recipe for target 'xgeoclaw' failed 以前に curl を再インストールした記憶があり,その時の curl, openssl の環境が NetCDF をインストールした時と違うから…??? ./configure --prefix=${NCDIR} --enable-netcdf-4 --enable-shared --enable-dap オプションの最後, --enable-dap は --enable-dap Enable DAP support. The configure script will attempt to locate the curl and xml2 libraries, but if it fails, then it is necessary to specify their location using –with-xml2=/some/path and –with-curl=/some/path. It is assumed that the directories /some/path/include and /some/path/lib exist. と書いてあるので重要だと思う. Type mismatch †Clawpack v5.7.1 の examples をコンパイルするときに,gfortran が新しいバージョンであると,判定が厳しくなっていて型の不一致でエラーが出る. Error: Type mismatch between actual argument at (1) and actual argument at (2) (INTEGER(4)/REAL(8)). issue #191で言われているように,type mismatch を見過ごすように設定することでエラーにはならない. # Environment variable FC should be set to fortran compiler, e.g. gfortran FFLAGS += -fallow-argument-mismatch
セグフォ †お馴染みのセグフォが出た. SIGSEGV: Segmentation fault - invalid memory reference. セグフォの原因は多々考えられるので,以下はセグフォになる一例. fg = fgmax_tools.FGmaxGrid() fg.point_style = 2 # uniform rectangular x-y grid fg.dx = 1.0/60.0/4.0 # desired resolution of fgmax grid fg.x1 = 133.5 fg.x2 = 134.5 fg.y1 = 32.5 fg.y2 = 33.5 fg.min_level_check = 3 # which levels to monitor max on fg.arrival_tol = 1.0e-2 fg.tstart_max = clawdata.t0 # just before wave arrives fg.tend_max = clawdata.tfinal # when to stop monitoring max values fg.dt_check = 10.0 # how often to update max values fg.interp_method = 0 # 0 ==> pw const in cells, recommended rundata.fgmax_data.fgmax_grids.append(fg) # written to fgmax_grids.data fg.minlevel_check が 3 だと,おそらく波到達時にレベル3に達していないなどの理由でエラーになる. |