mercoledì 17 ottobre 2007

Compilare e Installare Xfoil su ArchLinux

Eccovi una guida un po' "spartana" (ma incredibilmente funzionante!) per compilare e installare Xfoil: il famoso programa opensource per il calcolo di profili.

Preparazione

  • Download da questa pagina http://web.mit.edu/drela/Public/web/xfoil/ il sorgente in tar.gz; io ho scaricato proprio questo file: http://web.mit.edu/drela/Public/web/xfoil/xfoil6.96.tar.gz
  • Scomppattate il tar nella cartella che preferite

    ~/your_dir/$ tar -xzvf xfoil6.96.tar.gz

  • Spostate la cartella scompattata nella posizione in cui volete che il programma venga in stallato. Io l'ho messo in /opt

    ~/your_dir/$ mv -R ./Xfoil /opt/Xfoil

    se userete anche voi la cartella /opt o un'altra cartella esterna alla vosta home tutti i comandi da qui in poi, dovrete eseguirli preceduti dal comando sudo
Compilazione

Aprite il file README in un editor di testo per visualizzare le istruzioni di compilazione fornite con il codice sorgente

Compilare il Database Orr-Sommerfeld

  • Compilare il Database Orr-Sommerfeld nella cartella ./orrs

    $ cd orrs

    e seguire le istruzioni in orrs/README il che significa praticamente "arrangiati!"
  • allora arrangiamoci, cerchiamo "dove siamo"

    $ pwd

  • entriamo nella cartella dei sorgenti

    $ cd src

  • editiamo il file Fortran osmap.f

    $ nano osmap.f

  • modifichiamo la riga qui sotto inserendo il percorso corretto a osmap.dat (nel mio caso)

    DATA OSFILE / '/opt/Xfoil/orrs/osmap.dat' /

    dato che non ho voluto abilitare la doppia-precisione non ho dovuto seguire l'indicazione di modificare anche la linea contenente REAL*4
  • ritornate alla cartella orrs/ ed entrate in bin

    $ cd ../bin

  • modificate il Makefile per settare le flag di compilazione coerentemente con il vostro sistema

    $ nano Makefile

  • cambiate il path alla libPlt.a

    PLTOBJ = /opt/Xfoil/plotlib/libPlt.a

  • cambiate la stringa del compilatore da usare: gfortran invece di f77

    FC = gfortran

  • commentate tutte le linee che si riferiscono al compilatore Fortran della Intel, inserendo "#" all'inizio di ogni riga da commentare

  • ora potete compilare osgen

    $ make osgen

  • e anche osmap

    $ make osmap.o

  • ... fatto! torniamo nella cartella precedente

    $ cd ..

  • e facciamo girare osgen con il file osmaps_ns.list come argomento

    $ bin/osgen osmaps_ns.lst

Preparare xfoil, plotlib, e pxplot per la compilazione

  • andate nella cartella di Xfoil
  • entrate nella cartella della plot library

    $ cd plotlib

  • modificate il Makefile in accordo con il vostro compilatore e la vostra configurazione di sistema

    $ nano Makefile

  • scommentate il nome corretto della libreria e commentate quello in doppia precisione

    PLTLIB = libPlt.a
    #PLTLIB = libPlt.a

  • impostate gfortran come compilatore invece di f77 come avete fatto nell'altro Makefile
  • commentate tutte le linee che si riferiscono alla doppia precisione, in particolare

    DP = -r8

  • modificate il file config.make le cui opzioni sovrascrivono quelle nel Makefile facendo gli stessi cambiamenti di prima: nome della libreria e compilatore
  • commentate tutte le linee che si riferiscono a compilatori diversi da gfortran
  • commentate tutte le linee che si riferiscono alla doppia-precisione... quindi sotto il blocco di commento riferito a g77 avrete:

    FC = gfortran
    CC = gcc

    e di seguito le righe per la doppia-precisione completamente commentate
  • compilate la libPlt.a con

    make libPlt.a

Compilare xfoil, plotlib e pxplot

  • andate nella cartella di Xfoil
  • entrate nella cartella bin

    $ cd bin

  • modificate il Makefile come prima

    $ nano Makefile

  • controllate che libPlt.a sia chiamata correttamente nella prima parte del Makefile
  • commentate "FC = f77" come compilatore di default ma lasciate scommentate le flag generiche lì vicino

    # FC = f77

  • cambiate il riferimento a g77 con gfortran come prima ottenendo

    FC = gfortran

    invece di "FC = g77"
  • commentate tutti i riferimenti ad altri compilatori e a doppia-precisione
  • e finalmente compilate i programmi

    $make xfoil
    $make pplot
    $make pxplot

Se tutto è andato per il meglio potete eseguire xfoil "al-volo" direttamente dalla cartella Xfoil/bin...
Per riprovare a compilare in caso di errori, dovrete pulire le cartelle con il comando

$make clean

eseguito in ognuna delle cartelle contenenti i Makefile
Se volete chiamare xfoil come un comando qualunque dovunque vi troviate nel sistema, vi basterà creare un link simbolico in una della cartelle bin del vostro sistema.
Io l'ho creato in /opt/bin così:

$cd /opt/bin
$ln -s /opt/Xfoil/bin/xfoil xfoil

Perchè il comando sia disponibile "system-wide" la cartella in cui è contenuto il link simbolico deve essere inclusa nel path definito in /etc/profile.

$ sudo nano /etc/profile

Cambiate la linea export path da:

export PATH= “/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin”

a

export PATH= “/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/opt/bin”

Perfetto, ora avete Xfoil compilato e installato sulla vostra Arch-bestiola!
Digitate xfoil e divertitevi!

see ya!
bYe,
Andy

3 commenti:

  1. Ciao,
    stavo creando l'ebuild di xfoil-6.97 e avl-3.27 così per risolvere dei problemini di compilazione sono capitato qui.
    Complimenti per il blog,
    Pier

    http://pier.unirc.eu

    RispondiElimina
  2. ciao,
    se puo' interessare, anche io ho messo su una guida spartana su come compilare xfoil, in doppia precisione, su Ubuntu.
    Ovviamente le istruzioni sono al 90% le stesse. Ho anche generato un pacchetto debian.
    Ecco dove trovare le une e l'altro:
    http://ubuntuforums.org/showthread.php?t=994912

    http://giuschet.altervista.org/Ubuntu/

    RispondiElimina
  3. Ciao Icaro,
    certo che può interessare, non a me in quando Arch-user ma sicuramente alla gente che passa di qua!

    Ottimo lavoro.

    Per il resto io sto sempre cercando un momento in cui fare praticamente la stessa cosa per Arch scrivendo un bel PKGBUILD per la pacchettizzazione in locale automatica da parte di qualsiasi utente.

    ;-)

    FOSS Rulez!

    bYe,
    Andy

    RispondiElimina