mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-13 14:40:21 -05:00
gnu: Add xfoil.
* gnu/packages/engineering.scm (xfoil): New variable. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
8da63c2c23
commit
59362e928e
1 changed files with 102 additions and 0 deletions
|
@ -26,6 +26,7 @@
|
|||
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
|
||||
;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
|
||||
;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -2898,6 +2899,107 @@ (define-public syscall-intercept
|
|||
a process.")
|
||||
(license license:bsd-2))))
|
||||
|
||||
(define-public xfoil
|
||||
(package
|
||||
(name "xfoil")
|
||||
(version "6.99")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://web.mit.edu/drela/Public/web/xfoil/xfoil"
|
||||
version ".tgz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0h5y5v0qlyvi4qc943x394npz4779i8f52iksxshxkjj7xj500jw"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(add-after 'unpack 'edit-files
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; The instructions in orrs/README say that orrs/bin/osmap.f
|
||||
;; should be edited, but that file is never used by XFOIL.
|
||||
;; Instead, it is osrc/osmap.f that is used.
|
||||
(substitute* "osrc/osmap.f"
|
||||
(("^[ ]{6}DATA OSFILE / '/var/local/codes/orrs/osmap.dat' /")
|
||||
(let ((replacement (string-append (make-string 6 #\space)
|
||||
"DATA OSFILE / '"
|
||||
(assoc-ref outputs "out")
|
||||
"/share/xfoil/osmap.dat' /")))
|
||||
;; In fixed form Fortran, lines cannot exceed 72 columns.
|
||||
;; The Guix store path exceeds this limit.
|
||||
(string-append
|
||||
(substring replacement 0 72) "\n"
|
||||
(make-string 5 #\space) "&" (substring replacement 72)))))
|
||||
(substitute* "orrs/bin/Makefile_DP"
|
||||
(("^FC = ifort")
|
||||
"FC = gfortran")
|
||||
(("^FLG = -O -r8")
|
||||
"FLG = -O2 -fdefault-real-8"))
|
||||
(substitute* "plotlib/Makefile"
|
||||
(("^include ./config.make")
|
||||
"include ./config.make.gfortranDP"))
|
||||
(substitute* "bin/Makefile_gfortran"
|
||||
(("^BINDIR = /home/codes/bin/")
|
||||
(string-append "BINDIR = " (assoc-ref outputs "out") "/bin"))
|
||||
(("^CC = cc")
|
||||
"CC = gcc")
|
||||
(("^CFLAGS = -O -DUNDERSCORE")
|
||||
"CFLAGS = -O2 -DUNDERSCORE")
|
||||
(("^FFLAGS = -O \\$\\(CHK\\) \\$\\(DBL\\)")
|
||||
"FFLAGS = -O2 $(CHK) $(DBL)")
|
||||
(("^FFLOPT = -O \\$\\(CHK\\) \\$\\(DBL\\)")
|
||||
"FFLOPT = -O2 $(CHK) $(DBL)")
|
||||
;; Separate the build stage from the install stage.
|
||||
(("\\$\\(INSTALLCMD\\) xfoil \\$\\(BINDIR\\)") "")
|
||||
(("\\$\\(INSTALLCMD\\) pxplot \\$\\(BINDIR\\)") "")
|
||||
(("\\$\\(INSTALLCMD\\) pplot \\$\\(BINDIR\\)") ""))))
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(invoke "make" "-C" "orrs/bin" "-f" "Makefile_DP" "osgen")
|
||||
(with-directory-excursion "orrs"
|
||||
(invoke "bin/osgen" "osmaps_ns.lst"))
|
||||
(invoke "make" "-C" "plotlib")
|
||||
(substitute* "bin/Makefile_gfortran"
|
||||
(("^FFLAGS =(.*)$" _ suffix)
|
||||
(string-append "FFLAGS = -fallow-argument-mismatch "
|
||||
suffix "\n")))
|
||||
(invoke "make" "-C" "bin" "-f" "Makefile_gfortran")))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin-dir (string-append out "/bin"))
|
||||
(data-dir (string-append out "/share/xfoil"))
|
||||
(doc-dir (string-append out "/share/doc/xfoil")))
|
||||
(mkdir-p bin-dir)
|
||||
(invoke "make" "-C" "bin" "-f" "Makefile_gfortran" "install")
|
||||
(mkdir-p data-dir)
|
||||
(install-file "orrs/osmap.dat" data-dir)
|
||||
(mkdir-p doc-dir)
|
||||
(install-file "xfoil_doc.txt" doc-dir)))))
|
||||
#:tests? #f))
|
||||
(inputs
|
||||
(list libx11))
|
||||
(native-inputs
|
||||
(list gfortran))
|
||||
(home-page "https://web.mit.edu/drela/Public/web/xfoil/")
|
||||
(synopsis "Program for the design and analysis of subsonic airfoils")
|
||||
(description
|
||||
"XFOIL is an interactive program for the design and analysis of subsonic
|
||||
isolated airfoils. It consists of a collection of menu-driven routines which
|
||||
perform various useful functions such as:
|
||||
@itemize
|
||||
@item Viscous (or inviscid) analysis of an existing airfoil
|
||||
@item Airfoil design and redesign by interactive modification of surface speed
|
||||
distributions
|
||||
@item Airfoil redesign by interactive modification of geometric parameters
|
||||
@item Blending of airfoils
|
||||
@item Writing and reading of airfoil coordinates and polar save files
|
||||
@item Plotting of geometry, pressure distributions, and multiple polars
|
||||
@end itemize")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public libigl
|
||||
(package
|
||||
(name "libigl")
|
||||
|
|
Loading…
Reference in a new issue