#環境
・MacBook Pro 2017
・Mojave 10.14.5
#RADEXの環境構築
下記のページ通りに環境を構築する手順を踏む.
ソースコードをダウンロードし,解凍.
$ tar xf radex_public.tar
作成されたRadex
ディレクトリ内のsrc
に移動.
$ cd Radex/src
Makefile
を編集し,make
する際のコンパイラを指定.最初は編集せずにデフォルトのgfortranを使用する.
Radex.inc
を編集し,分子データの置き場所と光子の脱出確率の計算方法を指定.
parameter(radat = '/.../Radex/data/')
parameter (method = 1) ! uniform sphere
src
ディレクトリで
$ make
を叩く.
すると長々とエラーーーーーー.
$ make
gfortran -O2 -c main.f -o main.o
gfortran -O2 -c io.f -o io.o
io.f:47:62:
47 | $ molfile = radat(1:length(radat))//molfile(1:length(molfile))
| 1
Warning: Character length of actual argument shorter than of dummy argument 'st' (120/200) at (1) [-Wargument-mismatch]
io.f:47:36:
47 | $ molfile = radat(1:length(radat))//molfile(1:length(molfile))
| 1
Warning: Character length of actual argument shorter than of dummy argument 'st' (120/200) at (1) [-Wargument-mismatch]
io.f:47:36:
47 | $ molfile = radat(1:length(radat))//molfile(1:length(molfile))
| 1
Warning: Character length of actual argument shorter than of dummy argument 'st' (120/200) at (1) [-Wargument-mismatch]
io.f:48:36:
48 | write(13,20) molfile(1:length(molfile))
| 1
Warning: Character length of actual argument shorter than of dummy argument 'st' (120/200) at (1) [-Wargument-mismatch]
io.f:52:36:
52 | write(13,20) outfile(1:length(outfile))
| 1
Warning: Character length of actual argument shorter than of dummy argument 'st' (120/200) at (1) [-Wargument-mismatch]
io.f:234:31:
234 | $ //version(1:length(version))
| 1
Warning: Character length of actual argument shorter than of dummy argument 'st' (20/200) at (1) [-Wargument-mismatch]
io.f:234:31:
234 | $ //version(1:length(version))
| 1
Warning: Character length of actual argument shorter than of dummy argument 'st' (20/200) at (1) [-Wargument-mismatch]
io.f:234:31:
234 | $ //version(1:length(version))
| 1
Warning: Character length of actual argument shorter than of dummy argument 'st' (20/200) at (1) [-Wargument-mismatch]
gfortran -O2 -c readdata.f -o readdata.o
gfortran -O2 -c matrix.f -o matrix.o
gfortran -O2 -c background.f -o background.o
background.f:405:72:
405 | if (h.eq.0.d0) pause 'Warning: bad xin input in splintrp '
|
Warning: Deleted feature: PAUSE statement at (1)
gfortran -O2 -c slatec.f -o slatec.o
slatec.f:824:72:
824 | IF (INCX .EQ. INCY) IF (INCX-1) 5,20,60
|
Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
slatec.f:1204:72:
1204 | IF (INCX .EQ. INCY) IF (INCX-1) 5,20,60
|
Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
slatec.f:1512:72:
1512 | IF (INCX .EQ. INCY) IF (INCX-1) 5,20,60
|
Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
gfortran -O2 main.o io.o readdata.o matrix.o background.o slatec.o -o radex
strip radex
install -m 755 -p -s radex ../bin/
rm *.o
rm radex
引数の文字数が合ってないらしいので,編集.
io.f
内のFUNCTION length(str)
を編集.radex.inc
内のcharacterに一致させた.
CHARACTER*200 str → CHARACTER*120 str
すると,length(radat)
に関するエラーは消えた.length(version)
のエラーも消しにかかる.
radex.inc
内のversion
のcharacter
を変更.radat
に揃える.
character*20 version → character*120 version
length(version)
のエラーも消えた.
しかし,
gfortran -O2 -c background.f -o background.o
background.f:405:72:
405 | if (h.eq.0.d0) pause 'Warning: bad xin input in splintrp '
|
Warning: Deleted feature: PAUSE statement at (1)
gfortran -O2 -c slatec.f -o slatec.o
slatec.f:824:72:
824 | IF (INCX .EQ. INCY) IF (INCX-1) 5,20,60
|
Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
この2種類のエラーが消えない.
Homebrewで古いgccをダウンロードしてみる.現時点でもっとも新しいのは9.1.0なので一個前をインストール.
$ brew install gcc@8
その後,Makefile
のコンパイラを
FC = gfortran-8
に変更.
するとFortran 2018 deleted feature
のエラーは消え,PAUSE statement
のみに.
直接background.f
を編集.
if (h.eq.0.d0) pause 'Warning: bad xin input in splintrp '
→
if (h.eq.0.d0) then
write(*,*) 'Warning: bad xin input in splintrp '
read(*,*)
endif
エラーなくなった!