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 102 103
	     (:file "prodp"))))
  :in-order-to ((test-op
                 (test-op
                  "fishpack-test-hwscrt"
                  "fishpack-test-hwscrt"
rtoy's avatar
rtoy committed
104 105 106 107 108 109 110 111 112 113
		  "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 123
(defsystem "fishpack-test-hwscrt"
  :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 136
(defsystem "fishpack-test-hwscyl"
  :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 149
(defsystem "fishpack-test-hwsplr"
  :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 162
(defsystem "fishpack-test-hwsssp"
  :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 175
(defsystem "fishpack-test-hwscsp"
  :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 188
(defsystem "fishpack-test-hstcrt"
  :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 201
(defsystem "fishpack-test-hstplr"
  :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 214
(defsystem "fishpack-test-hstcyl"
  :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 227
(defsystem "fishpack-test-hstssp"
  :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 237 238 239 240
	    :pathname "fishpack/ex/"
	    :components
	    ((:file "tsthstssp")))))

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

;; Works
241 242
(defsystem "fishpack-test-hstcsp"
  :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 255
(defsystem "fishpack-test-sepx4"
  :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