Tecnicamente's Weblog

Just another WordPress.com weblog

Archivi Mensili: marzo 2010

software FEM su piattaforma LINUX

e’ innegabile che la gran parte di utilizzatori di piattaforme windows o apple possano trovare su qualsiasi distribuzione linux tutto il software di cui necessitano per l’uso quotidiano di un computer.
Ma una categoria particolare di utilizzatori è quella dei progettisti strutturali.
Infatti oltre agli stumenti classici come wordprocessor e fogli di calcolo, che sono ampiamente disponibili e di ottima qualità, vedi OpenOffice, occorrono strumenti più idonei al calcolo stutturale.
Tralascio di parlare del calcolo per telai semplici e dei cad bidimensionali.
Per questi casi si trovano modeste soluzioni come Qcad e FELT.
L’aspetto piu’ interessante da indagare è la modelazione solodi e la simulazione FEM dei modelli ottenuti.

In questo tipo di lavoro credo ci sia ancora poco, in particolare per i modellatori solidi non si hanno software opensource validi e competivi, qualcuno cita BLENDER, ma di fatto non è un CAD parametrico come un tipico CAD meccanico.

La situazione invece è piuttosto migliore e certamente molto più gratificante sul lato solutori FEM, preprocessori e postprocessori.
Da questo punto di vista i software non mancano certo, ne ho provati alcuni, più o meno criptici ma ora credo che siamo ad una buona svolta grazie a SALOME e CODE ASTER.
Il primo ci permette di creare e definire la mesh dell’oggetto che si intende studiare, offrendo una buona interfaccia grafica e tanti bei menù come piace a noi vili non programmatori 🙂
CODE ASTER è il solutore vero e proprio che permette di effettuare i vari calcoli che poi possono essere visualizzati in forma grafica sempre da SALOME.
A questo punto credo non resti che armarsi di un po’ di pazienza e tempo e cominciare a provare, suggerimento valido anche per i colleghi che usano windows nel proprio studio.
Infatti chiunque ha la possibilità di scaricare i due pacchetti separatamente ed usarli sulla propria distribuzione.
Installare la distribuzione CAELinux (http://caelinux.com) ed installare il tutto da CD o usare la LiveCD, senza quindi apportare nessuna modifica al proprio sistema ma penalizzando le prestazioni.

Che dire… provate 🙂

Numeri casuali in Fortran 90, 95 e 2003

Tempo fa, quando su linux, freeBSD ed altri sistemi simili non esisteva un valido compilatore fortran 90 ho usato il compilatore fornito dall intel trovandomi benissimo, ed abituandomi inevitabilmente alla sua implementazione dello standard del linguaggio.

Dopo anni  ho rimesso mano al linguaggio, e non nego con qualche ruggine mentale :), niente di piu’ bello che installare gfortran, scrivere due righe di codice e constatare i primi problemi 🙂 infatti, dopo aver compilato il seguente codice:

program prova
implicit none
integer :: i
real     :: r
call random_seed()
do i=1,10
    call random_number(r)
    write(*,*) r
enddo
end program prova

Mi trovo che ad ogni esecuzione i numeri “pseudo-casuali” generati sono sempre gli stessi.

Installo anche g95 ricompilo e qui le cose cambiano, i numeri generati sono differenti ad ogni esecuzione del codie!

Ma allora che succede?

Penso ad un bug a qualcosa di anomalo, e mi informo… risultato?

Lo stardard è ambiguo circa la generazione di numeri casuali, per cui il comportamento di gfortran è corretto quanto quello di g95, ifort ed altri.

Bene, occorre rimediare, comincio a leggere un po’ di documentazione ed ecco questa piccola subroutine, che consiglio di usare come liberia all’interno di un “module”.

Usandola si otterrà del codice che genera differenti numeri casuali in ogni esecuzione del programma, che quello che ci sia aspetta 🙂

Eccovi il codice e buon lavoro, attenzione non funziona con compilatori fortran77 come il g77 :

SUBROUTINE init_random_seed()
 INTEGER :: i, n, clock
 INTEGER, DIMENSION(:), ALLOCATABLE :: seed

 CALL RANDOM_SEED(size = n)
 ALLOCATE(seed(n))

 CALL SYSTEM_CLOCK(COUNT=clock)

 seed = clock + 37 * (/ (i - 1, i = 1, n) /)
 CALL RANDOM_SEED(PUT = seed)

 DEALLOCATE(seed)
END SUBROUTINE