Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ELABORATO DI LAUREA On-line Simulations: Progetto e realizzazione di un Sistema Web per applicazioni di Calcolo Scientifico
13/12/2005
INDICE
Cap. 1. Introduzione 1.1 1.2 Cap. 2. Obiettivo Definizione abbreviazioni
pag. 4 pag. 5 pag. 6 pag. 7
Tecnologie di progetto 2.1 Modello di riferimento: International Organization for Standardization, Open Systems Interconnection (ISO/OSI) 2.2 Scelta tipo di connettivit, linee dati 2.2.1 2.2.2 Caratteristiche linee ADSL Configurazione IOS delle interfacce ATM e Dialer sul router CISCO 1700 2.3 Infrastruttura della rete locale (LAN) 2.3.1 2.3.2 Rete Ethernet a stella estesa con estensione Wireless Protocolli di rete, di trasporto e relative configurazioni IOS sul router CISCO 2.4 2.5 Specifiche Hardware e Sistemi Operativi dei Server Applicativi Specifiche Software di Networking a livello Applicativo 2.5.1 2.5.2 2.5.3 2.6 Requisiti Software lato utente (Browser) Requisiti Software lato Server (Web Server) Virtual Network Computing (VNC)
pag. 7 pag. 8 pag. 8 pag. 10 pag. 12 pag. 12 pag. 12 pag. 13 pag. 14 pag. 14 pag. 15 pag. 16 pag. 18 pag. 18 pag. 18 pag. 18 pag. 21 pag. 21 pag. 22
Ambiente di Calcolo: Matlab Web Server (MWS) e Octave 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.6.6 Requisiti MWS Caratteristiche dei programmi applicativi per MWS Componenti e configurazioni MWS Funzionamento del MWS File Locations Octave
2.7
Policy di Accesso e sicurezza del Sistema: autenticazione Http e Firewall realizzato con ACL sul router CISCO
pag. 23
2.8
Accenno alle normative inerenti alla validit dei calcoli eseguiti a computer
pag. 24
Pag. 2 di 43
13/12/2005
Cap. 3.
Le Equazioni di NavierLam per Problemi di Meccanica dei Continui: Modello Differenziale e Approssimazione Numerica ad Elementi Finiti 3.1 3.2 Il problema elastico modello Modelli bidimensionali 3.2.1 3.2.2 3.2.3 Plane stress (stato di sforzo piano) Plane strain (stato di deformazione piana) Approssimazione ad elementi finiti
pag. 25 pag. 25 pag. 27 pag. 27 pag. 28 pag. 29 pag. 31 pag. 31 pag. 32 pag. 33 pag. 34 pag. 39 pag. 40 pag. 42 pag. 43
Cap. 4.
Implementazione dellapplicazione EFelinc2D su Matlab Web Server 4.1 4.2 4.3 4.4 4.5 Pagina HTML dei parametri in Input Comunicazione tra il Web Server Apache ed il motore di Calcolo Matlab Ricezione sul Browser dellutente del file di risposta in Output Listato del codice Matlab EFelinc2D.m modificato per il Web Usability
Cap. 5. Cap. 6.
Pag. 3 di 43
13/12/2005
Cap. 1 Introduzione
Negli ultimi anni si assistito ad una diffusione mondiale delle reti di calcolatori, in particolare del fenomeno Internet. Contemporaneamente, la modellistica matematica e la simulazione numerica stanno diventando strumenti sempre pi essenziali nella risoluzione di problemi complessi in Ingegneria e nelle Scienze Applicate. Obiettivo principale di questo progetto la realizzazione di un Sistema atto a fornire servizi remoti di Calcolo Scientifico. Oltre gli sviluppatori e gli utenti delle applicazioni, anche lassistenza tecnica ed i venditori possono utilizzare questo Sistema. Particolare attenzione stata rivolta alla progettazione dellarchitettura di rete ed alla scelta del requisito di utilizzo della sola interfaccia Web per laccesso ai servizi forniti dai Server di calcolo. Il Sistema stato strutturato in modo tale da renderlo del tutto indipendente dalle piattaforme Hardware e Software che verranno utilizzate dallutente finale. Come motori di calcolo applicativi sui Server sono stati installati e configurati i pacchetti Software Matlab ed Octave. In questo progetto verr approfondito dettagliatamente la configurazione del Matlab Web Server (MWS), utilizzando come applicazione di riferimento il programma EFelinc2D, scritto in Matlab dal Dr. Ing. Marco Restelli a supporto della didattica per il corso di Metodi Numerici per l'Ingegneria Civile tenuto dal Prof. Riccardo Sacco nellambito della Laurea Specialistica in Ing. Civile (indirizzo Strutture). Il codice Matlab di cui sopra risolve con il metodo degli Elementi Finiti problemi di Meccanica dei Continui in regime incomprimibile, ed stato scaricato dal seguente indirizzo: http://www1.mate.polimi.it/CN/MNIC/EFelinc2D.zip La messa in opera del progetto ha incluso la fornitura, l'installazione e la configurazione di tutti i componenti Hardware e Software necessari, cos come la fornitura e la configurazione delle linee dati e degli apparati per la connettivit. Nel seguito si fornisce una breve introduzione ai contenuti dellelaborato ed un elenco delle abbreviazioni usate.
Pag. 4 di 43
13/12/2005
1.1 Obiettivo
Scopo principale di questo progetto realizzare uninfrastruttura di rete ed un Sistema Web che rendano possibile: lesecuzione da remoto di applicazioni di simulazione utilizzando come interfaccia utente un Browser , quali Internet Explorer, Netscape, Opera, Safari, senza alcuna necessit di ulteriori software installati sul computer dellutente;
la possibilit di sviluppo e di manutenzione di codice di Calcolo Scientifico da remoto attraverso Command Shell mediante un collegamento di tipo VNC (Virtual Network
Fig. 2: Accesso in VNC attraverso Internet Explorer alla Command Window di Matlab
Pag. 5 di 43
13/12/2005
Abbreviazione ACL ADSL CGI DSLAM GUI HTML HTTP IOS ISO ISP LAN MCR MWS NAT OSI PCR RFC TCP/IP UTP VNC VPN UMTS WWW
Definizione Access Control List Asymmetric Digital Subscriber Line Common Gateway Interface Digital Subscriber Line Access Multiplexer Graphic User Interface Hypertext Markup Language Hypertext Transfer Protocol Internetwork Operating System International Organization for Standardization Internet Service Provider Local Area Network Minimum Cell Rate Matlab Web Server Network Address Translation Open Systems Interconnection Peak Cell Rate Request For Comment Transmission Control Protocol/Internet Protocol Unshielded Twisted Pair Virtual Network Computing Virtual Privat Network Universal Mobile Telephone System World Wide Web
Pag. 6 di 43
13/12/2005
Fig. 3:
2.1
Modello di riferimento: International Organization for Standardization / Open Systems Interconnection (ISO/OSI)
In questo progetto ci riferiremo al modello ISO/OSI quale modello standard di riferimento per l'interconnessione di sistemi aperti. Alla fine degli anni 70, l'ISO (International Standards Organization), principale ente internazionale di standardizzazione, ha introdotto un modello a strati, denominato OSI (Open Systems Interconnection), per descrivere gli strati definiti in un sistema operativo della rete; l'obiettivo dell'ISO era definire uno schema modulare ed aperto per la realizzazione di meccanismi di comunicazione automatici tra calcolatori evitando il proliferare di protocolli proprietari e soprattutto per garantire l'interoperabilita' tra sistemi anche diversi. In OSI il problema della comunicazione viene suddiviso in sette blocchi funzionali detti layers; ciascun blocco fornisce funzioni chiaramente definite e con un'interfaccia (Input/Output) definita e standard verso gli strati adiacenti. I layers definiti sono in totale 7 e vanno dal livello fisico (quello del mezzo fisico, ossia del cavo o delle onde radio) fino al livello delle applicazioni, attraverso cui si realizza la comunicazione di alto livello. Lo stack costituito dai seguenti layers (in ordine decrescente):
7 - layer/protocollo/livello applicativo 6 - layer/protocollo/livello di presentazione 5 - layer/protocollo/livello di sessione 4 - layer/protocollo/livello di trasporto 3 - layer/protocollo/livello di rete
Pag. 7 di 43
13/12/2005
2 - layer/protocollo/livello di collegamento dati (data-link layer) 1 - layer/protocollo/livello fisico (segnali elettrici, ottici, radio, etc)
2.2
13/12/2005
Parametri Sistema :
lato
gw-robertore#show dsl interface atm 0 Alcatel 20150 chipset information ATU-R (DS) Modem Status: Showtime (DMTDSL_SHOWTIME) DSL Mode: ANSI T1.413 ANSI Issue/rev: 2/1 Vendor ID: 0x0022 Capacity Used: 17% Noise Margin: 39.0 dB Output Power: 18.0 dBm Attenuation: 9.5 dB Defect Status: None Last Fail Code: None Selftest Result: 0x00 Subfunction: 0x15 Interrupts: 1332 (0 spurious) PHY Access Err: 0 Activations: 1 Init FW: embedded Operation FW: embedded SW Version: 3.8131 FW Version: 0x1A04
Speed (kbps): Reed-Solomon EC: CRC Errors: Header Errors: Bit Errors: BER Valid sec: BER Invalid sec: Interleave 0 0 0 0 0 0 0 Fast 1504 0 0 0 0 1995543 0
ATU-C (US)
Interleave 0 0 0 0
Fast 608 0 0 0
gw-robertore#show dsl interface atm 1 Alcatel 20150 chipset information ATU-R (DS) Modem Status: Showtime (DMTDSL_SHOWTIME) DSL Mode: ITU G.992.1 (G.DMT) ITU STD NUM: 0x01 Vendor ID: 'ALCB' Vendor Specific: 0x0000 Vendor Country: 0x00 Capacity Used: 17% Noise Margin: 40.0 dB Output Power: 18.0 dBm Attenuation: 9.0 dB Defect Status: None Last Fail Code: None Selftest Result: 0x00 Subfunction: 0x15 Interrupts: 1336 (0 spurious) PHY Access Err: 0 Activations: 1
ATU-C (US)
0x1 'ALCB' 0x0000 0x0F 68% 17.0 dB 12.0 dBm 7.0 dB None
Pag. 9 di 43
13/12/2005
Si noti che i parametri relativi alla velocit sopra riportati sono da intendersi come valori al lordo del payload dellincapsulamento ATM dellordine del 20%.
2.2.2 Configurazione IOS delle interfacce ATM e Dialer sul router CISCO 1700
Come Gateway della LAN stato utilizzato un router CISCO 1700 con le seguenti caratteristiche: gw-robertore#show ver Cisco Internetwork Operating System Software IOS (tm) C1700 Software (C1700-Y7-M), Version 12.3(16), RELEASE SOFTWARE (fc4) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2005 by cisco Systems, Inc. Compiled Wed 24-Aug-05 00:28 by ssearch Image text-base: 0x8000816C, data-base: 0x80B8CB80 ROM: System Bootstrap, Version 12.0(3)T, RELEASE SOFTWARE (fc1) ROM: C1700 Software (C1700-Y7-M), Version 12.3(16), RELEASE SOFTWARE (fc4) gw-robertore uptime is 3 weeks, 1 day, 18 hours, 24 minutes System returned to ROM by reload at 18:05:18 GMT+1 Mon Nov 7 2005 System restarted at 18:06:53 GMT+1 Mon Nov 7 2005 System image file is "flash:c1700-y7-mz.123-16.bin" cisco 1720 (MPC860T) processor (revision 0x601) with 44237K/4915K bytes of memory. Processor board ID JAD0449087F (1476905583), with hardware revision 0000 MPC860T processor: part number 0, mask 32 Bridging software. X.25 software, Version 3.0.0. 1 FastEthernet/IEEE 802.3 interface(s) 2 ATM network interface(s) 32K bytes of non-volatile configuration memory. 8192K bytes of processor board System flash (Read/Write) Configuration register is 0x2102
Qui di seguito riportata la configurazione a livello fisico, nel linguaggio IOS, delle due interfacce ATM:
Pag. 10 di 43
13/12/2005
gw-robertore# [..] interface Loopback1 ip address 212.45.137.130 255.255.255.252 ! interface ATM0 no ip address no atm ilmi-keepalive dsl operating-mode auto ! interface ATM0.1 point-to-point pvc 8/35 oam-pvc manage encapsulation aal5mux ppp dialer dialer pool-member 2 ! ! interface ATM1 no ip address no atm ilmi-keepalive dsl operating-mode auto ! interface ATM1.1 point-to-point pvc 8/35 oam-pvc manage encapsulation aal5mux ppp dialer dialer pool-member 2 ! Configurazione dellinterfaccia a livello data-link ! interface Dialer2 ip unnumbered Loopback1 ip access-group 100 in ip nat outside encapsulation ppp load-interval 30 dialer pool 2 dialer-group 1 ppp chap hostname gw-robertore@bianco.metrolink.it ppp chap password 7 0100122165EE0A0B0A3 ppp multilink ! Nel presente Sistema il CISCO 1700 svolge anche la funzione di Firewall della LAN tramite alcune ACL (Access Control List) opportunamente configurate (vedi paragrafo 2.7).
Pag. 11 di 43
13/12/2005
2.3 Infrastruttura di rete locale (LAN) 2.3.1 Rete Ethernet a stella estesa con estensione Wireless
La topologia della LAN (Ethernet standard IEEE 802.3 100baseT) di tipo a stella estesa, caratterizzata da un punto centrale centrostella - costituito dal router CISCO 1700 ed uno switch. Gli host e lAccess Point Wireless Linksys (standard IEEE 802.11b/g) connessi ad esso tramite cablaggio UTP (Unshielded Twisted Pair) in categoria 5. sono
2.3.2
Il Sistema si basa su protocolli TCP/IP per la trasmissione dei dati fra i Browser degli utenti ed i Server Applicativi. Internet Protocol (IPv4), definito nella RFC 791, il protocollo di rete qui utilizzato. IP responsabile dello spostamento dei pacchetti di dati da nodo verso nodo della rete. Gli indirizzi IP sono univoci a livello mondiale e vengono assegnati in modo centralizzato da una gerarchia di enti preposti. Gli indirizzi IP sono inoltre considerati una risorsa preziosa, da gestire con cura. Per rafforzare questo concetto, si parla di indirizzi IP pubblici. Inizialmente l'autorit preposta era la IANA (Internet Assigned Number Authority). Dopo il 1998 venne creato ICANN (Internet Corporation for Assigned Names and Numbers), tuttora operativo e responsabile della gestione degli indirizzi IP, in base alle direttive dell'RFC2050. Con indirizzi IP privati si intendono alcune classi di indirizzi, definite nella RFC 1918, riservate alle reti locali non connesse ad Internet allo scopo di ridurre le richieste di indirizzi pubblici. Chiunque pu utilizzare questi indirizzi per la propria rete locale, perch i pacchetti relativi a tali reti non vengono instradati dai router Internet, e quindi essi non entreranno in conflitto con analoghi indirizzi posti su altre reti locali. Per connettere ad Internet una rete locale che utilizza queste classi indirizzi si deve ricorrere al NATting (Network Address
Translation).
Pag. 12 di 43
13/12/2005
Nel presente progetto viene utilizzato un piano di indirizzamento su rete privata in classe C 10.10.62.0/24, con il NAT su un unico indirizzo pubblico configurato sul router CISCO. I Server VNC (Virtual Network Computing) interni vengono raggiunti dallesterno grazie al NAT statico sempre configurato sul router CISCO 1700. A seguire riportata la configurazione del router, nel linguaggio IOS, del livello di rete: interface FastEthernet0 ip address 10.10.62.254 255.255.255.0 ip nat inside load-interval 30 speed auto hold-queue 100 out ip access-group 101 out [..]
ip nat inside source list 10 interface Loopback1 overload ip nat inside source static tcp 10.10.62.254 80 interface Dialer2 80 ip nat inside source static tcp 10.10.62.254 143 interface Dialer2 143 ip nat inside source static tcp 10.10.62.88 5801 interface Dialer2 5801 ip nat inside source static tcp 10.10.62.88 5901 interface Dialer2 5901 ip nat inside source static tcp 10.10.62.188 5800 interface Dialer2 5800 ip nat inside source static tcp 10.10.62.188 5900 interface Dialer2 5900 [..] ip route 0.0.0.0 0.0.0.0 Dialer2 access-list 10 permit 10.10.62.0 0.0.0.255
Transmission Control Protocol (TCP) il protocollo di trasporto, definito nel RFC 793, su cui si appoggiano gran parte delle applicazioni Internet. TCP si occupa di verificare la corretta distribuzione dei dati dal client al Server, dal momento che i dati potrebbero andar persi nella rete. TCP aggiunge il supporto per la rilevazioni di errori o di dati persi, cos come i meccanismi per attivare la ri-trasmissione fino alla ricezione corretta e completa dei dati.
13/12/2005
Back-End Server WWW-2: S.O. Linux,Kernel 2.6.12 (Distribuzione Mandriva 6) CPU vendor_id: GenuineIntel model name: Intel(R) Celeron(R) CPU 2.80GHz cpu MHz: 2794.088 cache size: 256 KB bogomips: 5521.40 RAM: 1 GB Memorie di massa: 1 dsk 80GB 7200rpm Interf. di rete: 1 scheda Ethernet 10/100Mbit Servizi attivi: HTTP Server, Matlab Server, Octave, VNC Server Back-End Server WWW-3: S.O. Windows XP Professional vendor_id: GenuineIntel model name: Pentium III (Coppermine) cpu MHz: 997.872 cache size: 256 KB bogomips: 1957.88 RAM: 512 MB Memorie di massa: 1 dsk 80GB 7200rpm Interf. di rete: 1 scheda Ethernet 10/100Mbit Servizi attivi: HTTP Server, VNC Server
2.5.1
Per interfacciarsi al Sistema deve essere utilizzato un Web Browser adatto per la piattaforma utilizzata dallutente. In questo progetto sono stati testati con successo Netscape Communicator, Microsoft Internet Explorer, Opera ,Firefox e Safari Mac OS X.
Pag. 14 di 43
13/12/2005
2.5.2
Per il funzionamento del Sistema necessario che un Software HTTP Web Server venga configurato sul Sistema su cui Matlab ed Octave stanno funzionando. Il software Web Server deve essere inoltre configurato per eseguire programmi CGI (Common Gateway
Interface).
Web Server un programma (e - per estensione - il computer) che si occupa di fornire, su richiesta del Browser, una pagina Web (spesso scritta in HTML). Le informazioni inviate da Web Server viaggiano in rete trasportate dal protocollo HTTP. L'insieme dei Web Server presenti su Internet forma il WWW, ovvero il World Wide Web, uno dei servizi pi sfruttati della Grande Rete. Per questo progetto come Web Server stato installato Apache release 2.55 su tutti e tre i Server Applicativi. Il Web Server Apache viene utilizzato per la gestione della comunicazione fra il motore Matlab ed i Browser utente. La richiesta di accesso al codice Matlab viene fatta dai Browser al Web Server di Front-End WWW1 che re-dirige le richieste ai Back-End Server sulla rete interna attraverso un Proxy. Un Proxy un programma che si interpone tra un client ed un Server, inoltrando le richieste e le risposte dall'uno all'altro. Il client si collega al Proxy invece che al Server, e gli invia delle richieste. Il Proxy a sua volta si collega al Server e inoltra la richiesta del client, riceve la risposta e la inoltra al client. La scelta dellutilizzo di un Proxy correlata allutilizzo di indirizzi IP privati. A seguire riportiamo uno stralcio della configurazione del Web Server Apache installato sul Front-End WWW1 ove configurato il Proxy. httpd.conf LoadModule LoadModule ProxyPass ProxyPass ProxyPassReverse ProxyPassReverse proxy_module modules/mod_proxy.so proxy_http_module modules/mod_proxy_http.so /matlin/ http://10.10.62.188/ /appswin/ http://10.10.62.88/ /matlin/ http://10.10.62.188/ /appswin/ http://10.10.62.88/
Il Web Server deve essere inoltre configurato per supportare il Common Gateway Inteface. CGI uno standard per il collegamento delle applicazioni esterne con i Web Server. Un programma CGI eseguito in tempo reale, onde poter produrre informazioni dinamiche. Il programma CGI pu essere scritto in vari linguaggi (C/C++, Perl, TCL), che possano essere eseguiti sul Sistema.
Pag. 15 di 43
13/12/2005
2.5.3
Per le attivit di sviluppo e manutenzione di Software applicativo di Calcolo Scientifico utilizzabile una modalit di accesso di tipo VNC ai tools dellambiente di lavoro della Command Window di Matlab. VNC definisce il Virtual Network Computing. Questultimo un software di controllo remoto che consente di accedere ed interagire con un computer (Server), utilizzando un semplice programma (Viewer) su un altro computer in Internet. I due computer non devono necessariamente essere dello stesso tipo, ovvero pu essere utilizzato, ad esempio, da casa un PC Windows per accedere ad un Server Linux in ufficio. VNC liberamente e pubblicamente disponibile ed molto diffuso presso lindustria, le universit e presso privati.
include molte nuove caratteristiche, migliorie, ottimizzazioni e correzioni di bug rispetto alla versione originale. Si noti che TightVNC assolutamente free software, cross-platform e compatibile con il VNC originale. Da considerazioni di letteratura specializzata, giudizio unanime che TightVNC sia il pi avanzato free software per l'accesso remoto. Segue una breve lista delle caratteristiche di TightVNC assenti nel VNC originale.
Pag. 16 di 43
13/12/2005
Controllo del cursore locale. I movimenti del cursore non generano pi aggiornamenti dello schermo, i movimenti remoti del cursore sono processati localmente dal visualizzatore, cos da non poter vedere il movimento pi lento del cursore rispetto a quello locale. Algoritmi di compressioni efficienti. L'encoding di TightVNC ottimizzato per le connessioni lente/medie e questo genera meno traffico rispetto al VNC originale. Allo stesso tempo, TightVNC supporta tutti gli encoding del VNC standard, cos da poter operare efficacemente anche su reti veloci. Quindi, con TightVNC possibile lavorare in remoto, in tempo reale e in qualsiasi ambiente di rete. Livelli di compressione configurabili. possibile scegliere, allinterno di un insieme predefinito di valori, l'appropriato livello di compressione e la velocit di encoding. Tali scelte sono naturalmente dipendenti dalla velocit della rete e dalla capacit del processore. Compressione JPEG opzionale. Se non richiesta una elevatissima qualit di immagine, possibile abilitare la compressione JPEG in maniera efficace. Accesso tramite Web Browser. TightVNC include un visualizzatore Java Viewer con supporto completo dell'encoding, del cursore locale, 24-bit color mode, e altro. L'applet Java pu essere accessibile tramite un HTTP Server incorporato come il VNC standard. Operativit con Unix e Windows. Tutte le caratteristiche descritte sopra sono disponibili sia in Unix che nelle versioni Win32 di TightVNC. Tunneling Automatico SSH in Unix. La versione Unix del visualizzatore TightVNC pu usufruire di connessioni in tunneling SSH usando l'SSH locale o installazioni OpenSSH.
Pag. 17 di 43
13/12/2005
2.6 Ambiente di Calcolo: Matlab Web Server (MWS) e Octave 2.6.1 Requisiti MWS
Lesecuzione da Web dellapplicazione EFelinc2D utilizzata in questo progetto richiede Matlab 7.0 - o successive release - e che il software di Networking sia installato sui Server.
2.6.2
Le applicazioni per MWS sono una combinazione di M-files, HTML e di grafici, ove necessari. Il processo di sviluppo delle applicazioni richiede il seguente numero di passi: 1) Creazione di template visualizzazione dellOutput. 2) Elenco dei nomi delle applicazioni e dei dati nel file di configurazione /cgi-bin/ matweb.conf. 3) Scrittura di un Matlab M-file (deve essere una function) che: Riceva i dati immessi nellInput form HTML; Analizzi i dati e generi tutti i grafici richiesti; Posizioni i dati di Output in una struttura Matlab; Chiami htmlrep per il posizionamento dei dati in un Output document template HTML. HTML per la raccolta Input data degli utenti e per la
2.6.3
Il Sistema MWS consiste in un insieme di programmi che permettono agli utenti di eseguire applicazioni Matlab accedendovi da Web (vedi Fig. 5): MWS: gestisce la comunicazione fra l'applicazione Web e Matlab. Un multithreaded
TCP/IP Server (service su Windows NT) esegue Matlab continuamente ed invoca matweb.m, che a sua volta esegue gli M-file specificati nella pagina HTML dell'Input. Matweb: un programma client TCP/IP di MWS. Questo programma traduce i dati CGI dal formato HTML in codice oggetto di Matlab, li trasferisce ad MWS, riceve i risultati HTML da MWS e li ri-trasmette al Web Browser dell'utilizzatore finale. matweb.m: il punto di entrata principale per MWS. Chiama lM-file che stato trasferito allapplicazione CGI matweb ed attiva l'applicazione su Matlab.
Pag. 18 di 43
13/12/2005
Input HTML form data functions: utility Matlab che riceve i dati dallInput HTML ed assicura che i dati siano in una forma compatibile con i programmi Matlab. Output HTML document functions: funzione di Matlab per l'inserimento dei dati di Matlab in un template di Output HTML , per la trasmissione del risultato al Web Browser dell'utilizzatore finale.
Tre files di configurazione vengono usati insieme ai programmi di MWS: matweb.conf: un file di configurazione che matweb necessita per il collegamento a MWS. Le applicazioni devono essere elencate in matweb.conf, come indicato nel seguito
Pag. 19 di 43
13/12/2005
[root@ing cgi-bin]# less matweb.conf [WebEFelinc2D] mlServer=ing mldir=/usr/local/Matlab700/toolbox/WebServer/wsdemos/WebEFelinc2D [tmfile_template] mlServer=ing mldir=/usr/local/Matlab700/toolbox/WebServer/wsdemos/WebEFelinc2D matlabserver.conf: MWS pu essere configurato per il listen TCP/IP su tutte le porte consentite, la configurazione delle porte si effettua modificando il file matlabserver.conf sul Server. In questo file si specificano inoltre il numero di istanze Matlab simultanee. hosts.conf: un file facoltativo che fornisce sicurezza supplementare. In presenza di
hosts.conf solo le macchine elencate nello stesso possono essere collegate al MWS e sono elencate per nome in una singola colonna. Le macchine devono essere elencate per nome e non dallIP number. Il Sistema operativo risolve il nome in un IP address valido. In questo progetto non stata utilizzata questa opzione. Funzioni importanti MWS: htmlrep (instruct, infile.html ) sostituisce tutte le variabili di Input Matlab in infile.html, con i valori corrispondenti delle variabili dello stesso nome in instruct. Le variabili possono essere serie di caratteri, tabelle, o array che contengono le stringhe e gli scalari. La stringa e le variabili scalari sono sostituite da straight substitution. La variabile di output restituita nellOutstring. Outstring = htmlrep (instruct, infile.html) Instruct: una struttura di Matlab che contiene i nomi variabili (nomi di campo) ed i valori corrispondenti. Infile.html: un HTML file con i nomi variabili di Matlab racchiusi tra segni del dollaro (es. $variable_name$). matweb: un M-file che a sua volta chiama un M-file di applicazione di Matlab memorizzato nel campo mlmfile della struttura di Matlab instruct. Matweb trasferisce inoltre instruct all'applicazione. La funzione di matweb.m invocata da MWS. Instruct contiene i seguenti campi: Tutti i dati del HTML Input document ; mlmfile, che memorizza i nomi dei M-file da chiamare ; mldir, la working directory specificata in matweb.conf .
Pag. 20 di 43
13/12/2005
2.6.4
MWS funziona continuamente come servizio di Windows o come processo su sistemi Linux. Esso richiede che sia configurata la cshell come shell dellutente con cui viene avviato il processo. matlabserver.conf: il file di configurazione che MWS legge allo start-up per caricare i relativi dati di inizializzazione. La procedura di installazione genera questo file in <path di Matlab>/WebServer mentre installa MWS. Le impostazioni di configurazione devono apparire nella prima linea del matlabserver.conf file. Le opzioni di base impostate nel matlabserver.conf sono: Port number, Threads (massimo numero di Matlab simultanee). Limpostazione di default del matlabserver.conf semplicemente -m 1 con porta 8888. [root@ing ~]# less /usr/local/Matlab700/WebServer/matlabserver.conf -m 1 -l /var/tmp/MatlabServer_error.log -v 2 SERVER= SERVER_HOST=ing.robertore.it START_USERNAME=Webmat RELEASE=R14 ARCH=glnx86 MATLAB=/usr/local/Matlab700 DISPLAY=:2 LM_LICENSE_FILE=/usr/local/Matlab700/etc/license.lic LIBRARY_PATH=$MATLAB/sys/os/$ARCH:$MATLAB/bin/$ARCH WEBSERVER_MARKER=_TMW$RELEASE SLOG_FILE=/var/tmp/WebServer$WEBSERVER_MARKER.slog$SERVER ELOG_FILE=/var/tmp/WebServer$WEBSERVER_MARKER.elog$SERVER PID_FILE=/var/tmp/WebServer$WEBSERVER_MARKER.pid$SERVER CHECK_XHOST_TIMEOUT=5
2.6.5
File Locations
Tutti gli M-file usati dall'applicazione Web, compreso matweb.m devono essere elencati nel Matlab-path. In questo progetto tutti i Files sono memorizzati e condivisi sul File Server WWW1 in modo che gli stessi siano condivisibili da tutti i Server attraverso Samba. Samba un progetto open source che fornisce servizi di condivisione di file e stampanti a client che utilizzano il protocollo SMB/CIFS. Samba liberamente disponibile, al contrario di altre implementazioni SMB/CIFS, e permette di ottenere interoperabilit tra Linux,Unix,Mac OS X e Windows.
Pag. 21 di 43
13/12/2005
I files matweb.conf e matweb devono comparire sotto un alias /cgi-bin. Tutti i grafici generati devono essere individuati dove il Web Server possa trovarli ed i programmi possano scriverli.
2.6.6
Octave
Oltre a Matlab, sul Sistema disponibile anche un istanza di Octave. Questultimo un Software che utilizzza un linguaggio compatibile con caratteristiche fondamentali : completamente gratuito e copiabile dal sito Web http://www.octave.org; software libero (sviluppato dalla fondazione GNU): il suo codice sorgente disponibile a tutti e tutti possono modificarlo secondo le proprie esigenze. Si veda il sito della Free software Foundation per chiarimenti sul software libero. In questo Sistema Octave utilizzabile da remoto attraverso un collegamento VNC usando come interfaccia un Browser (vedi Fig. 6) Matlab e che ha le seguenti
Pag. 22 di 43
13/12/2005
2.7 Policy di Accesso e sicurezza del Sistema: autenticazione HTTP e realizzato con ACL sul router CISCO
Firewall
In questo progetto sono previsti due livelli di sicurezza per laccesso alle applicazioni di Calcolo Scientifico : accesso per lesecuzione di codice opportunamente parametrizzabile : in questo caso i servizi pubblicati su Web sono su Server accessibili da Internet previa autenticazione HTTP degli utenti autorizzati (Fig. 7)
accesso per attivit di sviluppo, manutenzione e assistenza sul codice: in questo caso laccesso in VNC per queste attivit consentito solo da reti autorizzate sempre con successiva autenticazione HTTP a livello utente. Laccesso ai VNC Server solo da reti autorizzate garantita a livello del protocollo di rete IP tramite ACL (Access Control List) configurate sul router CISCO 1700.
access-list access-list access-list access-list access-list access-list access-list access-list log access-list log access-list access-list log access-list log access-list access-list access-list access-list access-list 101 101 101 101 101 101 101 101 permit permit permit permit permit permit permit permit ip X1.Y1.Z1.0 0.0.0.255 any ip X2.Y2.Z2.0 0.0.0.255 any ip Xn.Yn.Zn.0 0.0.0.255 any ip 10.10.0.0 0.0.0.255 10.10.0.0 0.0.0.255 tcp any host 10.10.62.254 eq www log tcp any host 10.10.62.254 eq ssh log tcp any host 10.10.62.254 eq 143 log tcp X1.Y1.Z1.0 0.0.0.255 host 10.10.62.188 eq 5801
101 permit tcp X1.Y1.Z1.0 0.0.0.255 host 10.10.62.188 eq 5901 101 permit tcp any host 10.10.62.188 eq www log 101 permit tcp X1.Y1.Z1.0 0.0.0.255 host 10.10.62.88 eq 5800 101 permit tcp X1.Y1.Z1.0 0.0.0.255 host 10.10.62.88 eq 5900 101 101 101 101 101 permit permit deny deny deny tcp any host 10.10.62.88 eq tcp any any established log ip any any log udp any any log tcp any any log www log
Pag. 23 di 43
13/12/2005
la precedente ACL applicata in out sulla interfaccia FastEthernet del CISCO. int FastEthernet0 ip access-group 101 out Qualora fossero ritenute necessarie ulteriori garanzie di sicurezza, sarebbero facilmente e velocemente integrabili nel Sistema le seguenti tre opzioni: Firewall CISCO PIX da posizionarsi tra il router CISCO ed il Front-End WWW1; configurazione di un VPN (Virtual Privat Network) Server sul CISCO 1700 ; configurazioni delle IP-Tables sulla seconda interfaccia di rete del Front-End WWW1. Queste ulteriori opzioni hanno ovviamente costi diversi, e, coerentemente, forniscono
2.8 Accenno alle normative inerenti la validit dei calcoli eseguiti a computer
In ambito Industriale sono previste normative di Settore riguardanti la validazione delle varie fasi di utilizzo del calcolo Automatico quali il grado di affidabilit dei codici, le modalit di presentazione dei dati in ingresso e dei risultati, la valutazione dellelaborazione dal punto di vista del corretto comportamento del modello (vedi indicazioni CNR 10024/86). Il progettista deve effettuare una valutazione complessiva dellattendibilit dei risultati della simulazione automatica e per saggiare la sensibilit della procedura di calcolo automatico adottata pu eseguire pi elaborazioni adottando ipotesi semplificative diverse o schemi lievemente modificati; in particolare, in un calcolo agli elementi finiti, opportuno variare le dimensioni e il tipo degli elementi. Possono essere utili, ove esistano, lindividuazione e lo studio di situazioni limite pi semplici tra le quali si colloca il caso in esame. Quando non siano possibili controlli con metodi semplificati pu essere opportuno il confronto tra i risultati di elaborazioni eseguite con programmi diversi ed in quest'ottica su questo Sistema sono stati resi disponibili due ambienti di Calcolo distinti, Matlab ed Octave, compatibili come linguaggio ma indipendenti come motori di calcolo.
Pag. 24 di 43
13/12/2005
Cap. 3 Le Equazioni di NavierLam per Problemi di Meccanica dei Continui: Modello Differenziale e Approssimazione Numerica ad Elementi Finiti 3.1 Il problema elastico modello
Consideriamo un corpo elastico lineare isotropo che occupa il dominio R n , n = 2, 3 , vincolato sul bordo D (con vincolo omogeneo), sottoposto al carico g N sulla parte di bordo N ( = D N , D ) e soggetto alla forza di volume f . Indicando con
in in in su D su N .
(1)
Il modello (1) noto come sistema delle equazioni di NavierLam. La relazione (1) 1 lequazione indefinita di equilibrio; la relazione (1) 2 rappresenta la legge costitutiva che esprime il tensore degli sforzi in funzione del tensore di deformazione infinitesima , definito dalla relazione (1) 3 , avendo indicato con il tensore identit. Le costanti e sono parametri caratteristici del materiale elastico in esame e sono definite come
= E /((1 + )(1 2 ))
dove E > 0 e 0 < 1/ 2 sono rispettivamente il modulo di Young e il modulo di Poisson del materiale. Dalle definizioni (2), al variare di segue che
E / 2 < 3E / 2
mentre
0 < +.
Pag. 25 di 43
13/12/2005
Il caso particolare in cui = 1/ 2 corrisponde alla situazione fisica in cui il materiale elastico, sottoposto a stato di sforzo, si deforma senza cambiare il proprio volume. In tale caso, si dice che il materiale incomprimibile, e il sistema (1) deve essere riformulato mediante lintroduzione della incognita addizionale p , che rappresenta la pressione idrostatica. Il corrispondente modello matematico che descrive il campo di spostamento infinitesimo di ogni punto del corpo rispetto alla configurazione indeformata e in regime incomprimibile dato dal seguente problema differenziale alle derivate parziali: Cercare il campo di spostamento u = u ( x) e la pressione p = p ( x) tali che
in in in in su D su N .
(3)
Confrontando (3) con (1), si osserva che la presenza dellequazione costitutiva per la pressione (3) 4 consente di trattare con continuit, al variare di , tutti i regimi di deformazione elastica, dal regime comprimibile, fino al limite incomprimibile. Naturalmente, lintroduzione dellincognita p aumenta il carico computazionale del problema di Navier Lam modificato, poich tale variabile non strettamente necessaria qualora sia strettamente < 1/ 2 . per facile verificare che anche nei casi pratici in cui assume valori prossimi a 1/ 2 (ad esempio, = 0.499 come accade nella gomma e in materiali similari), la formulazione (3) denuncia forti limiti di instabilit, come discusso nel seguito quando si affronta lapprossimazione numerica ad elementi finiti del problema. In tali circostanze, di grande interesse nelle applicazioni industriali, pertanto indispensabile adottare il modello differenziale (3). Si osserva, infine, come questultimo, nel caso in cui = 1/ 2 (ovvero,
Pag. 26 di 43
13/12/2005
3.2.1. Ipotesi:
il corpo ha una dimensione (spessore) trascurabile rispetto alle altre due (es.:
piastra);
Assumendo che il piano xy coincida con il piano di simmetria dello spessore e che lasse z sia orientato perpendicolarmente ad esso, si ha che
zz = 0,
e
zx = zy = 0
xx 0 xx 1 , 2 yy = E /(1 ) 1 0 yy 0 0 (1 ) / 2 xy xy
dove xy = 2 xy . Si osserva che la componente di deformazione zz in generale non nulla e pu essere post-calcolata come
zz = /(1 )( xx + yy ).
Pag. 27 di 43
13/12/2005
3.2.2 Ipotesi:
si suppone che il corpo abbia una dimensione molto maggiore rispetto alle altre due (es.: trave snella, cilindri, alberi,...); non ci sono spostamenti lungo lasse della trave, ma solo in direzione perpendicolare allasse stesso; tutti i carichi applicati sono indipendenti da z e hanno componente nulla rispetto allasse
z.
zz = 0,
zx = zy = 0.
In questo caso la legge costitutiva per la definizione del tensore degli sforzi rimane quella valida nel caso generale (3) 2 , previa opportuna eliminazione delle righe e delle colonne le cui componenti sono nulle. Si osserva che la componente di sforzo zz in generale non nulla e pu essere post-calcolata come
zz = ( xx + yy ).
Pag. 28 di 43
13/12/2005
3.2.3
Consideriamo ora lapprossimazione numerica del sistema di NavierLam modificato (3) nel caso bidimensionale. A tal fine, introduciamo una partizione Th di in triangoli (la cosiddetta triangolazione del dominio computazionale). Il pedice h > 0 indica il parametro di discretizzazione del problema, ed definito come il lato di lunghezza maggiore della griglia di calcolo. Quindi, definiamo su Th due spazi di funzioni a dimensione finita, indicati nel seguito come U h e Ph , allinterno dei quali vengono cercate le approssimanti uh e ph delle incognite di (3). La scelta operativa per U h e Ph caratterizza il particolare metodo di calcolo impiegato per la risoluzione numerica. Nel seguito, consideriamo il caso in cui U h e Ph siano opportuni spazi di elementi finiti associati alla griglia Th , da cui segue che la relativa formulazione approssimata del problema (3) il cosiddetto metodo Galerkin-Elementi Finiti (GEF). Tale formulazione si scrive come: cercare il campo di spostamento approssimato
(4)
Il problema (4) pu essere scritto nella seguente forma equivalente di sistema lineare algebrico
A BT U F = B C P 0
(5)
dove A , B e C sono matrici di dimensioni opportune, U e P sono i vettori contenenti i gradi di libert dellapprossimazione GEF, mentre F il vettore dei termini noti. La stabilit e laccuratezza della formulazione (4) dipendono in modo essenziale dalla appropriata scelta di U h e Ph . Si pu dimostrare che se tali spazi di elementi finiti soddisfano la condizione di compatibilit di LadynzeskayaBabuskaBrezzi (LBB), allora il sistema lineare algebrico (5) univocamente risolubile e le approssimanti uh e ph convergono alle corrispondenti soluzioni u e p in modo ottimale in funzione di h . Per k 2 intero fissato, spazi di elementi finiti stabili e convergenti sono la coppia
13/12/2005
forti oscillazione di ph . Una variante stabile di tale coppia costituita dallelemento MINI, dove Ph = P (Th ) , mentre U h lo spazio ( P (Th )) 2 arricchito per ogni triangolo di griglia da 1 1 funzioni bolla cubiche. Tali funzioni bolla sono introdotte allo scopo di stabilizzare la formulazione e il grado di libert ad esse corrispondente pu essere facilmente eliminato mediante condensazione statica. Ci rende luso dellelemento MINI di grande interesse nelle applicazioni, a causa della sua buona accuratezza e ridotto costo computazionale. Gli esempi numerici del Capitolo 5 illustreranno le considerazioni sopra brevemente esposte.
Pag. 30 di 43
13/12/2005
Pag. 31 di 43
13/12/2005
<!STEP1 --> <form action="/matlin/cgi-bin/matweb" method="POST" target="outputwindow"> La precedente linea chiama matweb, lentry point al MWS. matweb il nome del
programma CGI che utilizzato dal MWS per estrarre i dati dalle form HTML. <!-- STEP 2 Si crea un hidden field che chiama la funzione principale dellapplicazione WebEFelinc2D ( un Input field di tipo hidden comunemente usato per passare variabili al Web Server . Non visualizzato dal Browser) --> <input type="hidden" name="mlmfile" value="WebEFelinc2D"> Questa linea fornisce il nome del MATLAB M-file (mlmfile) che viene eseguito (WebEFelinc2D.m) <!-- STEP 3 Si aggiungono tutti gli altri form tag --> <input type="text" size="5" name="AZ" maxlength="5" value="-37.5"> Horizontal Rotation<br> <input type="text" size="5" maxlength="5" name="EL" value="30"> Vertical Elevation <br> <!-- STEP 4 Si crea un submit input tag per lultente per mandare linput al programma --> <input type="submit" value="Esegui il codice di calcolo "> A questo punto stata avviata lapplicazione transazionale e il codice in esecuzione sul server.
13/12/2005
<input type="hidden" name="mlmfile" value="WebEFelinc2D"> Questa linea setta largomento mlmfile al valore WebEFelinc2D. Largomento mlmfile contiene il nome dell M-file Matlab che deve essere eseguito.
Pag. 33 di 43
13/12/2005
% STEP 4 % Perform your MATLAB computations, graphics file creations, % etc. here: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Programma per la risoluzione del problema elastico lineare piano (di sforzo o % di deformazione) % % Si impiega il metodo Galerkin-elementi finiti con introduzione del % PARAMETRO DI PRESSIONE, che coincide con la pressione nel caso % incomprimibile mentre nel caso generale legato dalla relazione: % % p_par = p_f + 1/3*E/(1+ni) * div(u), % % avendo indicato con p_par il parametro di pressione e con p_f la pressione % p_f = -1/3 * tr(sigma) % % Condizioni al contorno di tipo Dirichlet-Neumann (queste % ultime nella forma di derivata conormale assegnata) % % Release: 16/6/2004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Get unique identifier (to form file name) mlid = getfield(instruct, 'mlid'); % Set directory path for storage of graphic files. cd(instruct.mldir); % Get perspective. azimuth = str2double(instruct.AZ);
Pag. 34 di 43
13/12/2005
elevation = str2double(instruct.EL); % Get the shading value if (isfield(instruct, 'shading')) shdng = getfield(instruct, 'shading'); if strcmp(shdng, 'Interpolated'); shdng = 'interp'; end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Risultati dal programma % % Le seguenti variabili sono utili al fine di gestire i % risultati del programma: % % p,e,t: strutture dati per la descrizione della griglia di calcolo % griglia_conn: connettivit della griglia % griglia_geom: grandezze geometriche % griglia_connAv, griglia_connAp: strutture aggiuntive per la % gestione dei nodi interni a lati ed % elementi. Le due strutture si riferiscono % rispettivamnente ai gradi di libert % di velocit e di pressione, che hanno % rappresentazioni polinomiali diverse. % N.B. la griglia di calcolo unica, dunque sono uniche le % strutture griglia_conn e griglia_geom. Le strutture griglia_connAv % e griglia_connAp differiscono invece per la numerazione e la % posizione dei nodi interni a lati ed elementi, a causa del % fatto che le variabili velocit e pressione hanno rappresentazione % polinomiale diversa. % nodi_Dirichlet: nodi sui quali imposta per la velocit una condizione % di tipo Dirichlet % lati_Neumann: lati sui quali imposta per la velocit una condizione di tipo % Neumann % % Le seguenti variabili rappresentano effettivamente i risultati % del calcolo % U: soluzione. Si tratta di un vettore in cui sono memorizzati % i valori nodali della soluzione: prima le velocit quindi le pressioni. % Velocit e pressioni sono disposte secondo l'ordine di numerazione % dei nodi (per la numerazione dei nodi nel caso r>1 si faccia % riferimento alle strutture griglia_connA). % Uv: parte di U con i valori di velocit. Essendo l'incognita vettoriale, % per ciascun nodo vengono memorizzati nell'ordine velocit orizzontale % e verticale: volendo separare le due usare: % Uvx = Uv(1:2:end-1) % Uvy = Uv(2:2:end) % Up: parte di U con i valori del parametro di pressione. % R: reazioni vincolari sulla struttura associate ai nodi sui quali % imposta una condizione di tipo Dirichlet (si faccia riferimento a % nodi_Dirichlet per determinare gli indici di tali nodi, si veda anche % la funzione "estrai_reazioni") % organizzato come Uv, in particolare: % Rx = R(1:2:end-1) % Ry = R(2:2:end) % Norma_Err_L2, Norma_Err_H1: norme dell'errore per la variabile velocit, % nel caso sia nota la soluzione analitica %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
close all clear all clear functions addpath ./CASI addpath ./PRINCIPALE addpath ./PRINCIPALE/Connettivita addpath ./PRINCIPALE/BASI addpath ./GRIGLIE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Scelta del caso test % % Deve essere memorizzato come stringa il nome del file contenente % i dati del problema. % Questo file deve costituire una 'function' senza parametri di % ingresso che restituisce le strutture seguenti:
Pag. 35 di 43
13/12/2005
% griglia: % file_griglia: stringa con il nome del file .mat contenente % le strutture p, e, t della griglia di calcolo % rv: grado degli elementi finiti (possibili 1, 1.5, 2 e 3) per la % variabile spostamento % Il grado 1.5 una convenzione per indicare elementi P1+bolla % rp: grado degli elementi finiti (possibili 1, 2 e 3) per la % variabile pressione % dati_problema: % coeff: stringa con il nome della funzione per il calcolo % dei coefficienti E ni ed f (modulo di Young, di Poisson % e forza di volume). % La funzione riceve in ingreso due vettori riga % x e y e restituisce nell'ordine: E ni ed f valutati % in (x y). % tipo: 1 per stato di deformazione piana, 2 per stato di sforzo % piano % tipo_bc: matrice con due righe e tante colonne quanti % sono i lati del dominio considerato (i lati possono essere % visualizzati in PDEtool nel modo Boundary Mode, i % loro indici si trovano poi sulla quinta riga % della struttura e). La prima riga in realt non % viene considerata nel programma e deve contenere % semplicemente la numerazione dei lati di % bordo [1 2 3 4 ...] per agevolare la lettura, % mentre la seconda riga contiene per ogni % lato l'indice della condizione al contorno: -1 per % condizioni di Dirichlet e -2 per condizioni % di Neumann. % Esempio: [ 1 2 3 4; % -1 -2 -1 -1] dominio con 4 lati con condizioni % di Neumann sul secondo lato e di Dirichlet su tutti % gli altri. % g: stringa con il nome della funzione per la valutazione delle % condizioni al contorno di Dirichlet. Tale funzione deve % avere la struttura: % u_bordo = calcola_u_bordo(x,y) % dove x,y sono vettori riga contenenti le coordinate cartesiane % in cui valutare il dato al bordo. % u_bordo deve essere una matrice di due righe e numero di colonne % uguale a quello di x e y contenete il valore degli spostamenti % assegnati. % h: stringa con il nome della funzione per la valutazione % delle condizioni al contorno di Neumann. La struttura la stessa % della funzione per la valutazione del dato di Dirichlet. % soluzione: % u_esatta: stringa con il nome della funzione per la % valutazione della soluzione esatta (la sola velocit) % e del suo gradiente. Tale funzione deve accettare % in ingresso due vettori riga x e y con i punti % in cui valutare u e grad(u). Lasciare il campo % vuoto se la soluzione non nota. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% input_caso = instruct.caso; caso_test = input_caso; % caricamento dei dati del problema [griglia,dati_problema,soluzione] = feval(caso_test); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Variabili principali utilizzate dal codice: % % caso_test: stringa che caratterizza il caso test studiato % rv, rp: grado della base di elementi finiti % N_rv, N_rp: dimensione dello spazio di elementi finiti = 1/2(r+1)(r+2), r>=1 % p,e,t: strutture dati per la descrizione della griglia di calcolo % griglia_conn: connettivit della griglia % griglia_geom: grandezze geometriche % griglia_connAv, griglia_connAp: struttura aggiuntiva per la gestione % dei nodi interni a lati ed elementi % nel caso r>1 % XY O X1D O1D: nodi e pesi per la quadratura mono e bidimensionale % bc_marker: vettore con l'indice del tipo della condizione al contorno % per i lati di bordo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Pag. 36 di 43
13/12/2005
[rv, rp, ... griglia_conn, griglia_geom, ... XY, O, X1D, O1D, ... PHI, gradPHI, N_rv, ... PSI, N_rp, ... griglia_connAv, griglia_connAp, ... nodi_Dirichlet, lati_Neumann, ... bc_marker] = prepara_dati(griglia,dati_problema);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Allocazione della matrice globale dei coefficienti % A e del termine noto f %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % la dimensione 2*gdl_v + gdl_p dim = 2*size(griglia_connAv.nodi,2)+size(griglia_connAp.nodi,2); Sp = 2*size(griglia_connAv.nodi,2); % shift per i gradi di libert di pressione A = sparse(dim,dim); f = zeros(dim,1); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ciclo sugli elementi per assemblare A e f %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% p = griglia_conn.p; e = griglia_conn.e; t = griglia_conn.t; lelv = griglia_connAv.el2nodi; lelp = griglia_connAp.el2nodi;
for ie = 1:griglia_conn.ne [Ak,Bk,Ck,fk] = calcola_Ak_fk(p(1,t(1:3,ie)),p(2,t(1:3,ie)), ... griglia_geom.aree(ie),dati_problema,XY,O, ... PHI,gradPHI,N_rv,PSI,N_rp); for i=1:N_rv n_iv = lelv(ie,i); for j=1:N_rv n_jv = lelv(ie,j); A(2*n_iv-1:2*n_iv,2*n_jv-1:2*n_jv) = A(2*n_iv-1:2*n_iv,2*n_jv-1:2*n_jv) + Ak(2*i1:2*i,2*j-1:2*j); end for j=1:N_rp n_jp = lelp(ie,j); A(2*n_iv-1:2*n_iv,Sp+n_jp) = A(2*n_iv-1:2*n_iv,Sp+n_jp) + Bk(j,2*i-1:2*i)'; A(Sp+n_jp,2*n_iv-1:2*n_iv) = A(Sp+n_jp,2*n_iv-1:2*n_iv) + Bk(j,2*i-1:2*i); end f(2*n_iv-1:2*n_iv) = f(2*n_iv-1:2*n_iv) + fk(2*i-1:2*i); end for i=1:N_rp n_ip = lelp(ie,i); for j=1:N_rp n_jp = lelp(ie,j); A(Sp+n_ip,Sp+n_jp) = A(Sp+n_ip,Sp+n_jp) + Ck(i,j); end end end %fprintf('\n *********un ciao a Riccardo da Matlab ----> %s *********\n\n',caso_test); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Imposizione delle condizioni al contorno di Neumann %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for i=1:size(lati_Neumann,2); % ciclo sui lati di Neumann lato_N = lati_Neumann(i); % lato su cui assegnata la condizione marker = griglia_conn.e(5,lato_N-griglia_conn.ni); ie = griglia_conn.lati2el(lato_N,1); % elemento cui il lato appartiene x_e = p(1,griglia_conn.lati2no(lato_N,:))'; y_e = p(2,griglia_conn.lati2no(lato_N,:))'; fk = calcola_N(x_e, y_e, p(1,t(1:3,ie)), p(2,t(1:3,ie)), ... X1D, O1D, ... griglia_geom.aree(ie),griglia_geom.lunghLati(lato_N), ... dati_problema, ... rv, N_rv, marker); for i=1:N_rv n_i = lelv(ie,i); f(2*n_i-1:2*n_i) = f(2*n_i-1:2*n_i) + fk(2*i-1:2*i);
Pag. 37 di 43
13/12/2005
end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Imposizione delle condizioni al contorno di Dirichlet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [UDir iUDir] = calcola_D(griglia_connAv.nodi,nodi_Dirichlet,dati_problema); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Partizione della matrice e del termine noto %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% gdl = setdiff([1:dim],iUDir); % gradi di libert effettivi A11 = A(gdl,gdl); A12 = A(gdl,iUDir); A21 = A(iUDir,gdl); A22 = A(iUDir,iUDir); f1 = f(gdl); U2 = UDir; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Risoluzione Sistema lineare e calcolo reazioni vincolari %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% U1 = A11\(f1-A12*U2); f2 = A21*U1 + A22*U2; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Costruzione del vettore soluzione completo, comprendente % i valori nei nodi di Dirichlet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% U = zeros(dim,1); U(gdl) = U1; U(iUDir) = U2; if ~isempty(f2) R = -(f(iUDir)-f2); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Plot 3d della soluzione calcolata %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Uv = U(1:Sp); Up = U(Sp+1:end); Web_griglia_deformata; Web_grafica_3d %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Calcolo norme L2 e H1 dell'errore (qualora sia disponibile % la soluzione esatta) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if(~isempty(soluzione.u_esatta)) [Norma_Err_L2, Norma_Err_H1] = calcola_norme_err(... griglia_conn.ne,p,t,griglia_connAv.el2nodi, ... griglia_geom.aree,soluzione,U(1:Sp), ... rv, N_rv); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Stampa su schermo norme dell'errore %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf(1,'\n\nNorme dell''errore sulla variabile velocit':\n') fprintf(1,'%s %0.5e\n','norma H1 --> ', Norma_Err_H1) fprintf(1,'%s %0.5e\n\n','norma L2 --> ', Norma_Err_L2) end % STEP 5 % Put variables that you want to put into your HTML output document % in an output structure. You create an HTML output document from % OUTPUT_TEMPLATE.HTML. See the sample M-files in the wsdemos % directory for examples. %outstruct.my_output_variable_1 = More MATLAB computations creating ... % scalars, matrices, cell arrays, graphics files;
Pag. 38 di 43
13/12/2005
outstruct.my_output_variable_1 = input_caso; % STEP 6 % Call the function HTMLREP with the output structure you just % created and the file name you created from OUTPUT_TEMPLATE.HTML. % Replace <OUTPUT_TEMPLATE.HTML> with the name of the HTML output % file you created using OUTPUT_TEMPLATE.HTML. % This call fills the string RETSTR to return and optionally % writes the output as a file if a valid filename is given as the % second argument to the present function. templatefile = which('EFelinc2D_output.html'); if (nargin == 1) retstr = htmlrep(outstruct, templatefile); elseif (nargin == 2) retstr = htmlrep(outstruct, templatefile, outfile); end % Vengono cancellate alcune varibili di servizio clear Ak Bk Ck fk i j n_i n_iv n_ip n_jv n_jp ie lelv lelp x_e y_e lato_N marker return
4.5 Usability
La facilit di utilizzo (user-friendliness) una componente di grande rilevanza in tutte le applicazioni che hanno un'interfaccia utente. Il Sistema sviluppato nel presente progetto consente facilmente laccesso da remoto a qualsiasi utente autorizzato che disponga di una connessione ad Internet. E naturalmente possibile sviluppare unimplementazione pi sofisticata della GUI. Questa fase del lavoro sar oggetto di successiva elaborazione .
Pag. 39 di 43
13/12/2005
Pag. 40 di 43
13/12/2005
Per superare i problemi di instabilit causati dallutilizzo di elementi finiti di uguale ordine per spostamento e pressione, si pu impiegare unapprossimazione quadratica per il campo di spostamento, oppure lelemento MINI. Il risultato ottenuto illustrato in Fig.13 e nelle Figure 1 e 2, dove si nota che la distribuzione di pressione non presenta alcun fenomeno di oscillazione spuria. Il campo di spostamento del tutto analogo a quello illustrato in Fig. 11.
13/12/2005
Cap.6 Conclusioni
Nel presente elaborato di Laurea stato progettato e messo in opera un Sistema Web per Calcolo Scientifico con relativa infrastruttura di Networking. Quale motore di calcolo si considerato lambiente Matlab, mentre lapplicazione lo studio numerico a Elementi Finiti di problemi complessi di Meccanica dei Continui in regime incomprimibile. Nella fase di validazione sono stati eseguiti numerosi test di funzionamento da piattaforme utente differenti con vari tipi di connettivit. In un orizzonte sempre pi ricco di tecnologie Wireless su client mobili stata testata anche la possibilit di collegamento al Sistema da un portatile Apple Macintosh PowerBook G4 (vedi Fig.13) collegato in Bluetooth ad un cellulare UMTS (Universal Mobile Telephone System). La realizzazione dellinfrastruttura del Sistema utilizzata nel progetto stata condotta su una configurazione di base: connettivit ADSL, router CISCO, tre Server in architettura Intel collegati in LAN Ethernet 100 Mbps. Particolare attenzione stata rivolta a conferire al Sistema unelevata modularit e scalabilit, in previsione di upgrade successivi di grande interesse in potenziali applicazioni di Calcolo Scientifico in ambito Accademico e Industriale.
Pag. 42 di 43
13/12/2005
Pag. 43 di 43