PART 1: Instal·lació de Software
1) Instal·lar Fortran i Gnuplot
Ves al Campus Virutal de l’assignatura, a Pràctica 0, a Material del curso, baixa a baix de tot i descarrega’t el fitxer “software_windows.zip”.
Altrament, descarrega-te’l directament des d’aquí.
O encara més directament, aquí tens el fitxer:
Molt bé, ara segueix els següents passos.
- Guarda’t la carpeta descomprimida a on vulguis (Documents per exemple) però no és important, després l’eliminarem.
- Entra a software/gfortran i veuràs dos arxius .zip, si tens un sistema operatiu de 64 bits fixa’t en el que es diu “mingw-w64-bin_x86_64-mingw_20101003_sezero.zip”, si en canvi tens un de 32 bits, fixa’t amb l’altre.
- Descomprimeix-lo, i selecciona com a carpeta a on extreure (descomprimir) un directori per sobre de Documents, Escriptori… per exemple en el meu cas seria a “C:\Usuarios\Marti”.
- Quan s’hagi descomprimit se’t hauria d’haver generat allà una carpeta anomenada “gfortran”, si hi entres veuràs que conté diverses carpetes i fitxers que són de caràcter tècnic i permeten al fortran compilar correctament, posarem especial interés en el següent apartat a la carpeta anomenada “bin”.
- Fem el mateix amb el gnuplot, entrem a software/gnuplot i descomprimim l’arixu de 64 o 32 bits corresponent (”gp503-win64-mingw.zip”), el descomprimim a la mateixa carpeta que abans (“C:\Usuarios\Marti”).
2) Afegir-los al Path
- Entrem a la carpeta gfortran/bin
- Copiem la ruta. Hauria de ser al estil “C:\Users\MARTI\gfortran\bin”
- Per Windows 8 o 10 cliquem allà dues vegades però un xic més a la dreta de ‘bin’ per tal de no entrar en cap directori, ens mostrarà la ruta com a text i la copiem.
- Per Windows 11 simplement botó dret i cliquem ‘Copia l’adreça’.
Per a fer-ho ens fixem en la part central de dalt de l’explorador d’arxius (on posa la ruta de la carpeta al estil “Este equipo > C: > Usuarios > Marti > gfortran > bin”)
- Busquem al buscador de Windows “variables de entorno” i cliquem al programa “editar las variables de entorno del sistema”.
- Cliquem “Variables de entorno” a baix a la dreta, se’ns obrirà una finestreta.
- La finestreta està dividida en dues parts, la de dalt són “instruccions” que només afectaran al nostre usuari i la de dalt afectarà a tots els usuaris de l’ordinador (en general tindreu el vostre portàtil o PC amb 1 sol usuari així que és irrellevant) ens fixem en si alguna de les dues té una variable de entorno anomenada ‘Path’. Si és així la cliquem dues vegades. Si no és així (situació bastant rara) vol dir que la deveu haver eliminat sense voler, proveu de seguir el que diuen aquí.
- Se’ns obra una altra finestreta, que conté tots els ‘Paths’ que hem afegit de moment al nostre usuari (si haguéssim treballat amb Python prèviament en tindríem ja 1 o 2 afegits).
Explicació: afegir al Path un programa (indicar la ruta de la carpeta que conté els executables) ens permet des de la terminal, en qualsevol directori (sempre i quan sigui inferior a ‘Marti’, ja que són variables d’usuari) poder executar comandaments propis d’aquest (com per exemple “gfortran -o”) que altrament només podríem executar des de la carpeta “gfortran/bin”. És a dir que sinó afegim al Path i provéssim de compilar des de la terminal (en un directori com ara Documents) escrivint “gfortran programa.f90 -o a.exe” ens donaria error.
- Li donem a “Nuevo” i enganxem la ruta copiada prèviament, després Enter, Aceptar, Aceptar…
- Repetim el mateix per gnuplot (podem anar a la carpeta gnuplot/bin i obtenir-ne la ruta o simplement canviar la paraula ‘gfortran’ per ‘gnuplot’ a la ruta que ja tenim copiada), de nou des de variables de entorno, Path, li donem a “Nuevo” i enganxem la ruta, Aceptar, Aceptar, Aceptar.
3) Provar de compilar des d’un bloc de notes
Anem a comprovar en aquest apartat que hem instal·lat correctament el fortran. Per a fer-ho compilarem un programa de prova.
Ves a els teus Documents o a l’Escriptori o a on vulguis i crea una carpeta que s’anomeni “Fortran” o “Compu” o “Programes” o “Practiques Compu” o per l’estil, aquest contindrà tots els teus programes.
- Assegura’t que pots veure les extensions dels fitxers (En l’explorador d’arxius cliques “Visualització”, “Mostra”, “Extensions del nom del fitxer”)
- Crea-hi un arxiu anomenat “prova.f90”, per a fer-ho fas:
{botó dret} → Nuevo → Documento de texto (arxiu .txt) → li poses de nom “prova.f90"
→ al haver canviat l’extensió de .txt a f.90 et dirà Seguro? li dius Sí
→ entres al arxiu (Abrir con → Más aplicaciones → Libreta o Bloc de notas (de moment))
→ copies i enganxes el codi que tens aquí sota → Guardes l’arxiu
program helloWorld implicit none print *, 'Hello World!' end program
- Obres la Terminal o cmd o Símbolo de Sistema o PowerShell buscant a baix a l’esquerra (buscador de Windows).
- Et mous mitjançant els comandaments “cd [carpeta]”, “cd..” i “dir” fins a la carpeta on tens el teu programa.
- Compiles des de la terminal fent:
gfortran prova.f90 -o prova.exe
- S’hauria d’haver creat un fitxer “prova.exe”, executa’l fent:
.\prova.exe
Alternativament ves a la carpeta i executa’l manualment (clicant-lo dos cops).
- Si llegeixes un Hello World! a la terminal felicitats, has instal·lat bé el fortran i ja saps compilar i executar des de la terminal.
4) Provar de generar un gràfic (plot) amb gnuplot
- Crea un fitxer i anomena’l “dades.dat” i enganxa-hi les següents dades:
1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81
- Crea un fitxer anomena’t “fig1.gnu” i enganxa-hi el següent codi:
file = 'dades.dat' set term png set out 'fig1.png' plot file
- Des de la terminal, genera el gràfic fent:
gnuplot fig1.gnu
- A la carpeta se’t hauria d’haver generat un fitxer “fig1.png”, obre la imatge i mira si és similar a aquesta:
- Si se’t ha generat la imatge i és com aquesta, ja està, felicitats! tot et funciona correctament, ja pots procedir a tancar la terminal, els fitxer oberts i descansar una estoneta.
Si no se’t ha generat, comprova que no et surti un missatge de Seguretat de Windows (o del teu antivirus) bloquejant l’accés, si és així hauràs d’afegir una excepció:
Seguretat de Windows —> Historial de Protecció —> Clicar una notificació de “l’accés a les carpetes protegides s’ha bloquejat” —> Segur? Sí —> Configuració d’accés a carpetes controlat —> Permet una aplicació amb l’accés controlat a les carpetes —> Segur? Sí —> Afegeix una aplicació permesa —> Aplicacions bloquejades recentment —> Seleccionar “gnuplot.exe” —> ja pots tancar-ho tot i tornar a provar.
PART 2: Fer-ho més fancy i còmode
Aquesta part és opcional.
Així molt fàcil un pot programar còmodament com un pro (sense saber-ne massa) amb uns poquets passos.
La idea general és per una banda tenir highlighting tant per fortran com per gnuplot i que apretant F5 (o una altra tecla) compili i executi directament (si ens trobem en un arxiu de fortran), o generi el plot (si ens trobem en un arxiu gnuplot).
1) Instal·lar Visual Studio Code
El descarreguem de la pàgina oficial aquí.
Seguim tots els passos de la instal·lació fins al final.
2) Instal·lar extensions Modern Fortran, gnuplpot, Material Icon Theme, vscode-pdf i Task Explorer
- De la part esquerra de l’editor clicar el símbol d’Extensions (o sinó el trobeu fer Ctrl+Shift+x), buscar “Modern Fortran” i instal·lar-la.
Podeu comprovar que funciona el highlighting (colorets) creant un arxiu .f90 i escrivint el codi bàsic que hem vist abans (prova.f90).
- Buscar l’extensió “gnuplot” feta per “mammothb” i instal·lar-la, comprovar en un arxiu .gnu (per exemple fig1.gnu) que et fa el highlighting.
- Afegir ara l’extensió “Material Icon Theme” feta per “Philipp Kief” i comprovar que els arixus fortran i d’altres adquireixen un icona particular.
- Afegir l’extensió “vscode-pdf” by tomoki1207 per tal de previsualitzar pdfs des del propi VScode (útil per tenir allà mateix els els guions de les prepras i pràctiques d’anys anteriors).
- Afegir l’extensió “Task Explorer” by Scott Meesseman. (Ens servirà per l’apartat 4).
Nota: Potser has de tancar i tornar a obrir el vscode (fins i tot potser reiniciar l’ordinador per la última) per tal que algunes extensions funcionin bé.
3) Primer exemple
Prova de crear (dins de la teva carpeta de programes) una carpeta anomenada ‘P1’, no es correspondrà a la pràctica 1, però estem fent un simulacre per veure que és efectiu.
Crea ara dins d’aquesta carpeta un arxiu “programa.f90”, un arxiu “grafic.gnu” i 3 carpetes més, anomenades “out”, “exes” i “data”. La idea és que els executables es generin dins la carpeta ‘exes’, els arxius de dades es generin dins la carpeta ‘data’, i els gràfics dins la carpeta ‘out’.
Afegeix-hi un arxiu .dat a la carpeta “data”. (Normalment el programa .f90 ens generarà l’arxiu .dat però ara el creem manualment)
Per simplicitat agafa el mateix codi bàsic de gnu, fortran així com el fitxer de dades, que ja hem vist a la ‘Part 1’.
Prova aviam si te’n surts tu sol/a de compilar, executar i generar el plot des de la terminal (modificant lleugerament els comandaments que utilitzàvem abans).
Solució
Per compilar el fitxer fortran ara hem de tenir en compte que l’executable s’ha de generar en la carpeta ‘exes’.
gfortran programa.f90 -o exes/programa.exe
Nota: la
-o
ve de “output”. Li estem dient al compilador a on ens ha de generar l’executable i quin nom ha de tenir.I l’executarem fent
.\exes\prova.exe
Per generar el gràfic, trauríem les dades de la carpeta ‘dades’ i el generaríem a la carpeta ‘out’.
file = 'data/dades.dat' set term png set out 'out/grafic.png' plot file
Això era un simple exercici per comprovar que entenem com funcionen les rutes al compilar i al indicar-les en el fitxer de gnuplot.
Genial, ara que ho tenim organitza’t per carpetes, anem a fer una cosa molt senzilla que ens estalviarà molt de temps, anem a automatitzar-ho tot.
4) Automatització
- Aconseguir trobar/generar el fitxer tasks.json
- Clicar al buscador a dalt al centre (o Ctrl+Shift+P) i escriure
>Tasks
. - Clicar del desplegable l’opció “Tasks: Configure Default Build Task”.
- Seleccionar “Create tasks.json file from template”.
- Seleccionar “MSBuild” —> Se’t hauria d’obrir un fitxer tasks.json.
- A l’esquerra de l’editor, hi ha d’haver una carpeta “.vscode” i a dins el fitxer “tasks.json”. Borra tot el que contingui.
Alternativament simplement crea tu manualment una carpeta anomenada “.vscode” i a dins un fitxer anomenat “tasks.json”.
- Enganxa-hi el següent codi:
{ "version": "2.0.0", "tasks": [ { "label": "Create Folders", "type": "shell", "command": "if(!(Test-Path ${fileDirname}/exes)) {md 'exes', 'data', 'out'}", "options": { "cwd": "${fileDirname}" }, "problemMatcher": [], "group": "build" },{ "label": "Build & Run Fortran", "type": "shell", "command": "${fileDirname}/exes/${fileBasenameNoExtension}.exe", "options": { "cwd": "${fileDirname}" }, "dependsOn": [ "Build Fortran" ] },{ "label": "Build Fortran", "type": "shell", "command": "gfortran", "options": { "cwd": "${fileDirname}" }, "args": [ "${fileDirname}/${fileBasename}", "-o", "${fileDirname}/exes/${fileBasenameNoExtension}.exe" ] },{ "label": "Create Plot", "type": "shell", "command": "gnuplot", "options": { "cwd": "${fileDirname}" }, "args": [ "${fileDirname}/${fileBasename}" ] }, ] }
Això serien 4 tasques, una et compila i prou, l’altre et compila i executa, l’altre et genera un gràfic i l’altre et genera les 3 carpetes “exes”, “data” i “out”.
A baix a l’esquerra a TASK EXPLORER un ja podria (si té l’extensió instal·lada) donar-li al play a cada tasca mentre està programant i compilar i executar el codi ràpidament, però per fer-ho encara millor, al següent apartat veurem com executar aquestes tasques amb dreceres de teclat.
5) Shortcut F5 i Ctrl+F5
- Instal·lar l’extensió “CMake Tools”. (Crec que no cal)
- File>Preferences>Keyboard Shortcuts.
- Clicar el següent a dalt a la dreta:
- S’hauria de mostrar un fitxer JSON (keybindings.json), borrar el que hi hagi i enganxar-li el següent:
// Si vols també pots modificar aquestes dreceres canviant la 'key'. [ { "key": "F5", "command": "workbench.action.tasks.runTask", "when": "resourceExtname == .f90 || resourceExtname == .f || resourceExtname == .f95", "args": "Build & Run Fortran" }, { "key": "F5", "command": "workbench.action.tasks.runTask", "when": "resourceExtname == .gnu", "args": "Create Plot" }, { "key": "Ctrl+F5", "command": "workbench.action.tasks.runTask", "when": "resourceExtname == .f90 || resourceExtname == .f || resourceExtname == .f95 || resourceExtname == .gnu", "args": "Create Folders" }, ]
Això el que fa és sobreescriure les dreceres de teclat, permetent executar o generar plot amb F5 i crear carpetes amb Ctrl + F5 (si voleu podeu canviar-ho a altres dreceres de teclat editant l’argument “key”). La part bona és que només s’executarà si es troba en un fitxer fortran o .gnu, i que si les carpetes ja les has creat no les intentarà crear de nou.
Nota: en alguns teclats serà Fn+F5 i Ctrl+Fn+F5 en d’altres simplement F5 i Ctrl+F5. De nou, podeu canviar-ho a les dreceres que vulgueu canviant l’argument “key” del “keybindings.json”.
- Per tant un cop fet ja tot això ja estaríem.
6) Ja podem programar eficientment
Suposem que ara has de fer la prepràctica 2, doncs a la teva carpeta “Practiques Compu” crearies una nova carpeta anomenada “P2” i a dins d’aquesta un fitxer fortran.
- Ctrl+F5 i immediatament ja tens les 3 carpetes creades.
- Estàs escrivint el codi fortran o gnuplot i vols provar si funciona, prems F5 i immediatament s’executa el codi o set genera la figura.
T’hauria de quedar alguna cosa així a la part esquerra de l’editor:
Per acabar, dir que ja que en general els fitxers de dades els generarem des del programa en fortran, és important recordar que la ruta del fitxer en el que escriurem és “data/dades.dat” sense deixar-te el ‘data/’. Per exemple:
open(unit=10, file="data/dades.dat") do x = -360, 360 x_radians = (x*2*3.14159)/360 write(10,*) x, sin(x_radians) end do close(unit=10)
Ja estaria!
PD: si teniu algun dubte o no us funciona alguna part, deixeu un comentari a la part on us heu encallat i si puc us intento ajudar (Martí).