fishpack.asd 8.34 KB
Newer Older
rtoy's avatar
rtoy committed
1
2
3
4
5
6
;;; -*- Mode: lisp -*-
;;;
;;; This defsystem converts the FISHPACK Fortran routines
;;; to Lisp and compiling the result.
;;;

7
;; Need f2cl to be loaded before we can even read this file.
8
(load-system "f2cl")
9

10
(in-package :f2cl-asdf)
rtoy's avatar
rtoy committed
11

12
(defsystem "fishpack"
Raymond Toy's avatar
Raymond Toy committed
13
  :description "F2CL conversion of FISHPACK: Solution of separable elliptic PDEs"
14
  :class f2cl-system
15
  :default-component-class :fortran-file
16
  :f2cl-options (:package "FISHPACK" :array-slicing t :array-type :array :common-as-array t :keep-lisp-file t)
rtoy's avatar
rtoy committed
17
  :components
18
  ((:module "package"
19
20
	    :pathname "fishpack"
	    :components
21
22
	    ((:cl-source-file "package")))
   (:module "fishpack"
23
24
25
26
27
28
29
30
31
32
33
34
35
	    :components
	    ((:file "pimach")
	     (:file "merge")
	     (:file "cosgen"
		    :depends-on ("pimach"))
	     (:file "genbun"
		    :depends-on ("pimach" "poisd2" "poisp2" "poisn2"))
	     (:file "tri3")
	     (:file "trix")
	     (:file "hwscrt"
		    :depends-on ("trix" "tri3" "pimach"))
	     (:file "hwscyl")
	     (:file "hwsplr")
rtoy's avatar
rtoy committed
36
	     (:file "hwsssp" :depends-on ("hwsss1"))
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
	     (:file "hwsss1")
	     (:file "hwscsp" :depends-on ("hwscs1"))
	     (:file "hwscs1" :depends-on ("epmach" "blktri" "store"))
	     (:file "hstcrt" :depends-on ("poistg"))
	     (:file "poistg" :depends-on ("postg2"))
	     (:file "postg2")
	     (:file "hstplr")
	     (:file "hstcyl")
	     (:file "hstssp")
	     (:file "hstcsp" :depends-on ("hstcs1"))
	     (:file "hstcs1")
	     (:file "sepx4" :depends-on ("chkpr4" "speli4"))
	     (:file "chkpr4")
	     (:file "speli4"
		    :depends-on ("chksn4" "tris4" "ortho4" "minso4" "defe4"))
	     (:file "chksn4")
	     (:file "tris4")
	     (:file "ortho4")
	     (:file "minso4")
rtoy's avatar
rtoy committed
56
	     (:file "defe4" :depends-on ("dx4" "dy4"))
57
	     (:file "dx4" :f2cl-options (:declare-common t))
rtoy's avatar
rtoy committed
58
59
60
	     (:file "dy4"
		    ;; Want common block defined before compiling dy4.
		    :depends-on ("dx4"))
61
	     (:file "epmach"
rtoy's avatar
rtoy committed
62
		    :depends-on ("store"))
63
	     (:file "blktri"
rtoy's avatar
rtoy committed
64
		    :depends-on ("compb" "blktr1" "prodp" "cprodp"))
65
66
67
68
69
70
	     ;; WARNING: compb passes an array of single-floats to
	     ;; PPADD, but PPADD is expecting an array of COMPLEX
	     ;; numbers.  None of the test programs trigger this, so
	     ;; it might not be a problem, but it is something to
	     ;; watch out for.  F2cl does not handle this case.
	     (:file "compb"
rtoy's avatar
rtoy committed
71
		    :depends-on ("indxb" "tevls" "ppadd" "epmach"))
72
73
	     (:file "blktr1"
		    :depends-on ("indxa" "indxb" "indxc"))
74
75
	     (:file "store" :f2cl-options (:declare-common t))
	     (:file "indxa" :f2cl-options (:declare-common t))
rtoy's avatar
rtoy committed
76
77
78
79
80
81
	     (:file "indxb"
		    ;; Want the common block defined before compiling indxb.
		    :depends-on ("indxa"))
	     (:file "indxc"
		    ;; Want the common block defined before compiling indxb.
		    :depends-on ("indxa"))
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
	     (:file "tevls")
	     (:file "ppadd"
		    :depends-on ("psgf" "bsrh" "ppsgf"))
	     (:file "psgf")
	     (:file "bsrh")
	     (:file "ppsgf")
	     (:file "poisd2"
		    :depends-on ("cosgen" "trix" "merge"))
	     (:file "poisn2"
		    :depends-on ("cosgen" "trix" "tri3" "merge"))
	     (:file "poisp2"
		    :depends-on ("cosgen" "trix" "tri3" "merge"
					  "poisd2"))
	     (:file "prod")
	     (:file "cprod")
	     (:file "cprodp")
	     (:file "ppspf")
99
100
101
	     (:file "prodp"))))
  :in-order-to ((test-op
                 (test-op
102
103
104
105
106
107
108
109
110
111
112
113
                  "fishpack/test-hwscrt"
                  "fishpack/test-hwscrt"
		  "fishpack/test-hwscyl"
		  "fishpack/test-hwsplr"
		  "fishpack/test-hwsssp"
		  "fishpack/test-hwscsp"
		  "fishpack/test-hstcrt"
		  "fishpack/test-hstplr"
		  "fishpack/test-hstcyl"
		  "fishpack/test-hstssp"
		  "fishpack/test-hstcsp"
		  "fishpack/test-sepx4"
114
		  ))))
115
116
117
118
119
120
121

;; Some tests of Fishpack.
;;
;; The results won't match the results printed for the NCAR Control
;; Data 7600, but they should be close.

;; Works
122
(defsystem "fishpack/test-hwscrt"
123
  :class f2cl-system
124
  :default-component-class :fortran-file
125
  :f2cl-options (:package "FISHPACK" :array-slicing t :array-type :array :common-as-array t :keep-lisp-file t)
126
127
  :depends-on ("fishpack")
  :components
128
  ((:module "hwscrt"
129
130
	    :pathname "fishpack/ex/"
	    :components
131
132
	    ((:file "tsthwscrt"))))
  :perform (test-op (o c) (symbol-call :fishpack :thwscrt)))
133
134

;; Works
135
(defsystem "fishpack/test-hwscyl"
136
  :class f2cl-system
137
  :default-component-class :fortran-file
138
  :f2cl-options (:package "FISHPACK" :array-slicing t :array-type :array :common-as-array t :keep-lisp-file t)
139
140
  :depends-on ("fishpack")
  :components
141
  ((:module "hwscyl"
142
143
	    :pathname "fishpack/ex/"
	    :components
144
145
	    ((:file "tsthwscyl"))))
  :perform (test-op (o c) (symbol-call :fishpack :thwscyl)))
146
147

;; Works
148
(defsystem "fishpack/test-hwsplr"
149
  :class f2cl-system
150
  :default-component-class :fortran-file
151
  :f2cl-options (:package "FISHPACK" :array-slicing t :array-type :array :common-as-array t :keep-lisp-file t)
152
153
  :depends-on ("fishpack")
  :components
154
  ((:module "hwsplr"
155
156
	    :pathname "fishpack/ex/"
	    :components
157
158
	    ((:file "tsthwsplr"))))
  :perform (test-op (o c) (symbol-call :fishpack :thwsplr)))
159
160

;; Works
161
(defsystem "fishpack/test-hwsssp"
162
  :class f2cl-system
163
  :default-component-class :fortran-file
164
  :f2cl-options (:package "FISHPACK" :array-slicing t :array-type :array :common-as-array t :keep-lisp-file t)
165
166
  :depends-on ("fishpack")
  :components
167
  ((:module "hwsssp"
168
169
	    :pathname "fishpack/ex/"
	    :components
170
171
	    ((:file "tsthwsssp"))))
  :perform (test-op (o c) (symbol-call :fishpack :thwsssp)))
172
173

;; Works
174
(defsystem "fishpack/test-hwscsp"
175
  :class f2cl-system
176
  :default-component-class :fortran-file
177
  :f2cl-options (:package "FISHPACK" :array-slicing t :array-type :array :common-as-array t :keep-lisp-file t)
178
179
  :depends-on ("fishpack")
  :components
180
  ((:module "hwscsp"
181
182
	    :pathname "fishpack/ex/"
	    :components
183
184
	    ((:file "tsthwscsp"))))
  :perform (test-op (o c) (symbol-call :fishpack :thwscsp)))
185
186

;; Works
187
(defsystem "fishpack/test-hstcrt"
188
  :class f2cl-system
189
  :default-component-class :fortran-file
190
  :f2cl-options (:package "FISHPACK" :array-slicing t :array-type :array :common-as-array t :keep-lisp-file t)
191
192
  :depends-on ("fishpack")
  :components
193
  ((:module "hstcrt"
194
195
	    :pathname "fishpack/ex/"
	    :components
196
197
	    ((:file "tsthstcrt"))))
  :perform (test-op (o c) (symbol-call :fishpack :thstcrt)))
198
199

;; Works
200
(defsystem "fishpack/test-hstplr"
201
  :class f2cl-system
202
  :default-component-class :fortran-file
203
  :f2cl-options (:package "FISHPACK" :array-slicing t :array-type :array :common-as-array t :keep-lisp-file t)
204
205
  :depends-on ("fishpack")
  :components
206
  ((:module "hstplr"
207
208
	    :pathname "fishpack/ex/"
	    :components
209
210
	    ((:file "tsthstplr"))))
  :perform (test-op (o c) (symbol-call :fishpack :thstplr)))
211
212

;; Works
213
(defsystem "fishpack/test-hstcyl"
214
  :class f2cl-system
215
  :default-component-class :fortran-file
216
  :f2cl-options (:package "FISHPACK" :array-slicing t :array-type :array :common-as-array t :keep-lisp-file t)
217
218
  :depends-on ("fishpack")
  :components
219
  ((:module "hstcyl"
220
221
	    :pathname "fishpack/ex/"
	    :components
222
223
	    ((:file "tsthstcyl"))))
  :perform (test-op (o c) (symbol-call :fishpack :thstcyl)))
224
225

;; Works
226
(defsystem "fishpack/test-hstssp"
227
  :class f2cl-system
228
  :default-component-class :fortran-file
229
  :f2cl-options (:package "FISHPACK" :array-slicing t :array-type :array :common-as-array t :keep-lisp-file t)
230
231
  :depends-on ("fishpack")
  :components
232
  ((:module "hstssp"
233
234
235
236
	    :pathname "fishpack/ex/"
	    :components
	    ((:file "tsthstssp")))))

237
(defmethod perform ((op test-op) (c (eql (find-system "fishpack/test-hstssp"))))
238
239
240
  (funcall (find-symbol "THSTSSP" (find-package '#:fishpack))))

;; Works
241
(defsystem "fishpack/test-hstcsp"
242
  :class f2cl-system
243
  :default-component-class :fortran-file
244
  :f2cl-options (:package "FISHPACK" :array-slicing t :array-type :array :common-as-array t :keep-lisp-file t)
245
246
  :depends-on ("fishpack")
  :components
247
  ((:module "hstcsp"
248
249
	    :pathname "fishpack/ex/"
	    :components
250
251
	    ((:file "tsthstcsp"))))
  :perform (test-op (o c) (symbol-call :fishpack :thstcsp)))
252
253

;; Works
254
(defsystem "fishpack/test-sepx4"
255
  :class f2cl-system
256
  :default-component-class :fortran-file
257
  :f2cl-options (:package "FISHPACK" :array-slicing t :array-type :array :common-as-array t :keep-lisp-file t)
258
259
  :depends-on ("fishpack")
  :components
260
  ((:module "sepx4"
261
262
263
	    :pathname "fishpack/ex/"
	    :components
	    ((:file "tstsepx4" :depends-on ("cofx4"))
264
265
	     (:file "cofx4"))))
  :perform (test-op (o c) (symbol-call :fishpack :tsepx4)))
266