-
Notifications
You must be signed in to change notification settings - Fork 2
/
AACOMPILE.txt
114 lines (96 loc) · 5 KB
/
AACOMPILE.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
Code compilation has been tested on Linux (32 and 64-bit) using the Intel
Fortran compiler (currently version 11.1.072), and also on Mac OSX
using gfortran (N.B. Guidance on locating gfortran and also f2c for MacOSX is
given below), which can be grabbed from somewhere such as fink or from
any website when you google gfortran.
The are three main things to look out for when compiling on different systems.
a) You need to know that depending on the system and the Fortran
compiler, the record length, ISYS,which is set in radtran/rtm_util/isys.f
needs to be set to either 1 or 4.
For gfortran on MacOSX and Linux you need ISYS=4.
For Intel Fortran compiler on Linux, you typically need ISYS=1, although
some versions of the ifc need ISYS=4.
If you don't know, pick either ISYS=1 or ISYS=4 and see if the code works.
If it doesn't, choose the other one!
b) The code will look in the directory defined by radtran/rtm_util/datarchive.f
for the a whole load of reference files during a run. Hence, you need to update
datarchive.f to point to the right place before compiling.
c) Edit your .cshrc file to include the following set of environment variables.
You need to decide where to put these yourself, but for typical MacOSX compile
you would set:
setenv BIN /Users/username/bin
setenv OBJ /Users/username/obj
setenv LIB /Users/username/lib
setenv RADSRC /Users/username/radtrancode/radtran
setenv RADREPO /Users/username/radtrancode
You also need to make sure that the stack size is unlimited by adding the
following line to your .cshrc file:
limit stacksize unlimited
For specific platforms you also need to set the following environment variables
as described below.
For Linux-64 - Intel Fortran 11.1.072 add the following:
setenv FCOMP "ifort"
setenv FCFLAGS1 "-mcmodel=large -i-dynamic -O2 -cm -w -zero"
setenv FCFLAGS1_FOVGREG "-mcmodel=large -i-dynamic -O -w90 -w95 -FR -cm -w"
setenv STATIC_FLAG ""
For Linux-32 - Intel Fortran 7.0 add the following:
setenv FCOMP "ifc"
setenv FCFLAGS1 "-O2 -w90 -w95 -cm -w -zero"
setenv FCFLAGS1_FOVGREG "-O -w90 -w95 -FR -cm -w"
setenv STATIC_FLAG ""
For Linux-32 and GFORTRAN add the following:
export FCOMP="gfortran"
export STATIC_FLAG="-fallow-argument-mismatch -fallow-invalid-boz"
export FCFLAGS1_FOVGREG="-ffree-form -fallow-argument-mismatch -fallow-invalid-boz"
# For improved error tracing, turn these on:
export FCFLAGS1="-g -fcheck=all -mcmodel=large"
For MacOSX with gfortran add the following:
setenv FCOMP "gfortran"
setenv FCFLAGS1 ""
setenv FCFLAGS1_FOVGREG "-ffree-form"
setenv STATIC_FLAG ""
For MacOSX with intel fortran compiler (in zsh format) add this to .zshrc
#ifort from: https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#fortran
# version 2023.2.0 Mac OX version (96Mb) installed on 18/10/23 and worked fine
# NB. if compiler complains about "ld warning no platform load command found in..."
# then add -ld_classic to flags
export FCOMP="ifort"
export STATIC_FLAG=""
export FCFLAGS1="-O -zero -mmacosx-version-min=12.7 -ld_classic"
export FCFLAGS1_FOVGREG="-O -free -zero -mmacosx-version-min=12.7 -ld_classic"
export CC="gcc"
export CCFLAGS=""
# if not set already then add these too
export RADSRC=<YOUR_DIR>/radtrancode/radtran
export BIN=<YOUR_DIR>/bin/OSX64
export OBJ=<YOUR_DIR>/obj/OSX64
export LIB=<YOUR_DIR>/lib/OSX64
export RADREPO=<YOUR_DIR>/radtrancode
To compile the whole code you need to follow the procedure (from the main
directory):
1) change directory to FOVgreg/ and type 'make lib'
2) change directory to frecipes/ and type 'make lib'
3) change directory to radtran/makefiles/ and type 'makeradtranlib'
4) change directory to nemesis/ and type 'make lib'
5) change directory to radtran/makefiles/ and type 'makeradtranbin'
6) change directory to nemesis/ and type 'make bin'
Note 1: if you're not doing MCS calculations you can skip step 1.
Note 2: if you've already compiled the Fortran recipes library, you can
skip step 2.
Note 3: on MacOSX, you'll need to install gfortran from somewhere such as fink
or from any website when you google gfortran. In the end I just grabbed
a version from a website.
N.B. For additional debugging on MacOSX with gfortran try:
setenv FCFLAGS1 "-O -finit-local-zero -m64 -fcheck=bounds -fcheck=mem -fbacktrace -Wconversion
-mcmodel=medium"
setenv FCFLAGS1_FOVGREG "-O -ffree-form -finit-local-zero -m64 -fcheck=bounds -fcheck=mem -fbacktrace
-Wconversion -mcmodel=medium"
Note: a new 'feature' has emerged when trying to compile on more recent versions of OSX. The cause is still
a bit mysterious, but it seems that something has changed in Xcode and so the libraries are not being properly linked.
A temporary workaround is to add the following string at the end of each executable compile statement in your makefiles:
-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib
Pat Irwin 11/5/12
Brigette Hesman 16/7/12
Pat Irwin 18/7/12
Pat Irwin 9/3/21
Pat Irwin 5/9/22