La modellazione computazionale automatizzata (ACM, automated computational modelling) è una tecnica piuttosto recente che sfrutta un approccio ibrido unendo il calcolo simbolico al calcolo numerico. Queste potenzialità possono essere sfruttate nelle formulazioni agli elementi finiti così possibile automatizzare alcune procedure, tra cui quelle di derivazione, andando a svolgere in modo più efficiente e più preciso, i calcoli che fino a poco tempo fa venivano svolti manualmente. Questo apre nuove frontiere nell’automazione e nel grado di precisione e complessità delle simulazioni FEM.

Finite Element Method

L’analisi agli elementi finiti (FEM) è uno degli strumenti più potenti per la simulazione numerica di problemi industriali complessi. Esistono software commerciali per usi specifici o più generali e tantissimi software di ricerca dove devono essere sviluppate ancora nuove formulazioni e schemi di discretizzazione. Ci sono continue evoluzioni in modo tale da tener conto delle esigenze delle applicazioni avanzate in ingegneria. Le simulazioni agli elementi finiti sono un metodo generale per la soluzione numerica di equazioni differenziali alle derivate parziali. Permettono quindi di descrivere nuovi materiali, strutture, impianti e processi biologici e sono un elemento chiave per la scienza predittiva in molti processi complessi in ingegneria, medicina o fisica.

Il FEM nasce negli Anni ‘60, ma successivamente allo sviluppo degli strumenti informatici, ha una evoluzione ed uno sviluppo esponenziale. Si afferma come uno dei migliori strumenti per l’indagine quei sistemi complessi. La generalità del metodo, inizialmente sviluppato dagli ingegneri e successivamente dimostrata anche dai matematici, ha permesso moltissimi studi ed applicazioni. Questo ha aperto la strada a nuovi filoni di ricerca che attualmente affrontano problematiche di notevole interesse di natura teorica e pratica.

Funzioni di forma

L’idea alla base del FEM è quella di vedere il dominio di interesse come l’unione di tanti sotto domini di forma elementare. Quindi su ciascun sotto dominio elementare vengono considerate le singole equazioni differenziali alle derivate parziali (PDE). In un problema al continuo, qualsivoglia sia la variabile di interesse, temperatura, velocità, densità, spostamento, ecc il problema presenta un numero infinito di incognite. Questo è dovuto al fatto che il campo di interesse è variabile punto per punto. La discretizzazione introdotta con il FEM lo riduce ad un problema finito di incognite. Andando ad esprime il campo incognito in termini di funzioni approssimanti che individuano la variabile di interesse in alcuni punti del dominio detti nodi.

Sixteen triangular basis functions used to reconstruct J0
Summation of basis functions

L’idea base dell’approssimazione usata nel FEM è quella di approssimare il vero andamento della funzione incognita con quello di alcune funzioni particolari ad andamento noto, tipicamente funzioni polinomiali. Si ha quindi la riduzione del numero di gradi di libertà che nel mezzo continuo sono infiniti, mentre, considerando solo alcuni punti (nodi) della struttura, sono in numero, per l’appunto, finito.
Si parla allora di discretizzazione della struttura come quell’operazione che permette di passare dalla struttura reale e quella discretizzata (o approssimata) per la quale è possibile applicare il metodo degli elementi finiti al fine di ottenere una soluzione ingegneristica del problema.

Formulazione debole

Sapendo inoltre che la soluzione mediante l’utilizzo di metodi numerici avviene per mezzo di calcolatori elettronici, l’idea della discretizzazione è legata al limite fisico che tali macchine possiedono a livello di immagazzinamento di dati. Si passa da un problema differenziale, che il computer non sa risolvere, ad un problema algebrico risolvibile invertendo la matrice del sistema. Per arrivare a questo sistema algebrico, dopo aver considerato l’approssimazione della funzione incognita come somma delle funzioni di forma per i valori delle incognite nei nodi.

Mesh
FEM Solution

Si accetta che la funzione approssimata abbia un certo residuo (ovvero non sia esatta) e si va minimizzare questo residuo nel senso di ridurne la media pesata (lo integro e chiedo sia nullo). Si introduco delle funzioni test sulle quali si passa il problema di derivata. Ovvero, con quest’ultima affermazione, si passa dal problema in forma forte al problema in forma debole, in quanto vengono meno una serie di requisiti matematici per la funzione incognita. Quindi si introducono le funzione di forme trasformando la funzione continua ad una somma di valori nodali e di pesi. Questo permette di portare i termini fuori dall’integrale e avere una serie di coefficienti del singolo elemento che moltiplicano le incognite nodali. Scegliendo allora le funzioni test in numero congruente alle incognite si ottiene un sistema algebrico più facilmente risolvibile.

\bold K\bold u=\bold f\Longrightarrow \bold u=\bold f\bold K^{-1}

Calcolo simbolico

Alla base di ogni processo di automazione del calcolo c’è la necessità di scrivere le equazioni base che descrivono il problema in una forma di input che permetta di manipolare le variabili in modo simbolico. Sebbene l’algebra informatica possa essere considerata un sottocampo del calcolo scientifico, sono generalmente considerati campi distinti perché il calcolo scientifico è solitamente basato su calcoli numerici con numeri approssimativi in ​​virgola mobile, mentre il calcolo simbolico enfatizza il calcolo esatto con espressioni contenenti variabili che non hanno un valore dato e vengono manipolati come simboli.


Le applicazioni software che eseguono calcoli simbolici sono chiamate sistemi di computer algebrici, con il termine sistema che allude alla complessità delle principali applicazioni che includono almeno:

  • un metodo per rappresentare dati matematici in un computer
  • un linguaggio di programmazione utente (solitamente diverso dal linguaggio utilizzato per l’implementazione)
  • un gestore di memoria dedicato
  • un’interfaccia utente per l’input/output di espressioni matematiche
  • un ampio insieme di routine per eseguire operazioni usuali, come semplificazione delle espressioni, differenziazione mediante regola della catena, fattorizzazione polinomiale, integrazione indefinita, ecc. .

È ampiamente utilizzato per la ricerca e per progettare le formule utilizzate nei programmi numerici. Viene anche utilizzato per calcoli scientifici completi, quando i metodi puramente numerici falliscono, come nella crittografia a chiave pubblica, o per alcuni problemi non lineari.

Finora le formulazioni sono state scritte manualmente sulla base di formulazioni derivate da scienziati e software engineers ma questo lo rendeva un processo molto lento da implementare. È necessario considerare la teoria di derivazione di campi tensoriali complessi per per ottenere matrici tangenti e residui necessarie per implementare le formulazioni. La rivoluzione è arrivata con l’introduzione del calcolo simbolico e con i passaggi automatizzati.

Automated Computational Modelling

Esistono infiniti modi per impostare una risoluzione FEM ma dal punto di vista dell’automazione possiamo riassumerla in alcuni passaggi elementari:

  1. Formulazione della forma forte e del problema al contorno
  2. Passaggio alla formulazione debole
  3. Definizione delle discretizzazione del dominio e approssimazione delle variabili e introduzione delle funzioni test
  4. Derivazione e soluzioni delle equazioni a livello di elemento
  5. Derivazione di equazioni algebriche che descrivono il contributo per la matrice di rigidezza e la matrice tangente
  6. Codifica delle derivate nel linguaggio opportuno per il solutore FEM
  7. Generazione di una mesh
  8. Soluzione del problema globale
  9. Visualizzazione e analisi dei risultati

Chiaramente c’è un’evidente separazione tra una parte del problema relativa ai singoli elementi e indipendente dal problema fisico e una parte legata alle leggi che governano il fenomeno fisico di interesse.

L’implementazione del calcolo automatizzato porta con se diversi vantaggi:

  1. La formulazione simbolica è più facilmente comprensibile e meno soggetta ad errore
  2. Le operazioni algebriche, tra cui la differenziazione, vengono svolte automaticamente
  3. I codici sono generati automaticamente, altamente efficienti e facilmente trasportabili
  4. Capacità multi linguaggio e multi ambiente
  5. Elementi e input simbolici preparati per un’ampia gamma di problemi e facilmente adattabili al problema specifico
  6. Facile implementazione di problemi multi-campo e multi-fisica.

Si basa sulle formulazioni variazionali del problema, ma utilizzando formulazioni deboli potrebbe essere adattato ad equazioni differenziali alle derivate parziali arbitrarie. Il vantaggio principale dell’utilizzo dello sviluppo di codice simbolico è che il tempo di sviluppo, specialmente per materiali o elementi complessi, si riduce di ordini di grandezza.

AceFem

Quindi è possibile una prima divisione tra software commerciali e software aziendali. Nel software aziendale si cerca di avere un’interfaccia che permette di avere un’elevata riproducibilità dei test in casi diversi. Inoltre si cerca di avere un debugging facilitato. Nei software di ricerca si ha un’elevata personalizzazione e un controllo fine dei metodi risolutivi. Questo porta spesso a dover reimpostare parte della formulazione al variare dei casi e delle condizioni al contorno.

I sistemi SAC (Symbolic and Algebraic Computational systems) ampiamente utilizzati come Mathematica o Maple sono diventati un ambiente di elaborazione integrato che copre tutti gli aspetti di un processo computazionale, compresa l’analisi numerica e la presentazione grafica dei risultati. Il metodo FEM viene implementato nei sistemi SAC generali solitamente come pacchetto aggiuntivo o toolbox come AceGen Korelc (2011) per Mathematica. Il maggior limite dei sistemi simbolici, quando applicati a problemi ingegneristici complessi è una crescita incontrollabile di espressioni e di conseguenza operazioni ridondanti e codici inefficienti.

Approccio ibrido (simbolico-numerico) all’automazione del metodo FEM

AceFEM è un sistema generale agli elementi finiti per Mathematica che combina efficacemente approcci simbolici e numerici. Include un ambiente generale agli elementi finiti progettato per risolvere problemi multifisici e multicampo, il potente pacchetto di generazione automatica del codice AceGen per la generazione simbolica di nuovi elementi finiti e l’accesso al sistema di condivisione di file agli elementi finiti AceShare.

Mathematica

Usando Mathematica, il programma fornisce sia ampie capacità simboliche che l’efficienza numerica di un ambiente commerciale agli elementi finiti. Consente di risolvere problemi industriali su larga scala con diversi milioni di elementi e utilizzare funzionalità avanzate di Mathematica.

Il sistema AceFEM è dotato di un’ampia libreria di elementi finiti (solidi, termici, a contatto, 2D, 3D, ecc.). Elementi finiti aggiuntivi possono essere derivati ​​simbolicamente e codificati utilizzando il pacchetto di generazione automatica del codice AceGen specializzato per la generazione di codici ad elementi finiti altamente efficienti dal punto di vista numerico. AceFEM consente inoltre di creare facilmente applicazioni indipendenti, personalizzate e basate su elementi finiti per Mathematica.

Il problema dell’equilibrio elastico

Un requisito generale per un uso efficiente del sistema di automazione è che le equazioni di base che definiscono il problema siano scritte in una forma di input tale da permettere la manipolazione simbolica. Il vantaggio dell’automazione nella meccanica computazionale diventa evidente solo quando la descrizione del problema, cioè il modo in cui sono scritte le equazioni di base, è appropriata per la descrizione simbolica.

È noto come il problema dell’equilibrio elastico consiste nella determinazione del campo tensionale, delle deformazioni e degli spostamenti di un continuo costituito di materiale dal comportamento elastico lineare, con vincoli e carichi. È noto anche che la soluzione dell’equilibrio può essere vista come la minimizzazione di un’energia potenziale totale. Quindi, scrivendone il funzionale, sappiamo che la sua soluzione è quella che lo minimizza. Inoltre possiamo vedere l’integrale direttamente sul dominio parente in ξ,η applicando la mappa e portando in conto della trasformazione di aree (determinante dello Jacobiano).

\Pi_{e}(\mathbf{u})=\int_{\Omega_{e}} \frac{1}{2} \varepsilon(\mathbf{u}) \cdot \mathbb{C} \varepsilon(\mathbf{u}) d v=\int_{\Omega_{\square}} \frac{1}{2} \varepsilon(\mathbf{u}) \cdot \mathbb{C} \varepsilon(\mathbf{u}) \operatorname{det}\left(\mathbf{J}_{e}\right) d V

Quindi se lo spostamento soluzione è il minimo dell’energia potenziale la risoluzione passa per imporne la stazionarietà. Questo, avendo una soluzione non esatta, ci darà un residuo. Ci siamo ricondotti quindi alla forma debole dell’equilibrio. Derivando ancora otterremo la matrice tangente, nonchè la rigidezza della formulazione.

\mathbf{r}_{e}=\frac{d \mathbf{\Pi }_{e}}{d \mathbf{u}}\\ \:\\
\mathbf{K}_{e}=\frac{d \mathbf{r}_{e}}{d \mathbf{u}}

Quindi queste quantità, per ogni elemento, verranno passate al solutore FEM che le assembla in una matrice globale e risolvendo il sistema associato ci darà la soluzione, ovvero gli spostamenti che soddisfano l’equilibrio. In particolare, avendo usato la formulazione FEM ed essendo passati per le funzioni di forma abbiamo una soluzione discretizzata dove l’integrale si è ridotto ad una somma pesata delle funzioni nei nodi e quindi in matrici che rappresentano un problema lineare.

\left[\mathbf{r}_{e}\right]_{i}=\frac{d \Pi_{e}}{d\left[\mathbf{u}_{e}\right]_{i}}=\sum_{a} w_{g} J_{e}\left(\xi_{g}, \eta_{g}\right)\left(\frac{d}{d\left[\mathbf{u}_{e}\right]_{i}} \Psi_{e}\left(\xi_{g}, \eta_{g}, \mathbf{u}_{e}\right)\right)\\
\:\\
\left[\mathbf{K}_{e}\right]_{i j}=\frac{d\left[\mathbf{r}_{e}\right]_{i}}{d\left[\mathbf{u}_{e}\right]_{j}}

E quindi andremo ad usare un algoritmo iterativo per trovare la soluzione in termini di spostamenti:

\mathbf{u}_{\text {tot }}=\mathbf{K}_{\text {tot }}^{-1} \mathbf{f}_{\text {tot }}:\mathbf{R}\left(\mathbf{u}_{t o t}\right)=\mathbf{K}_{t o t} \mathbf{u}_{t o t}-\mathbf{f}_{t o t}=0\\\:\\\Longrightarrow \begin{aligned}
&\mathbf{u}_{t o t}^{(1)}=-\left.\mathbf{K}_{t o t}^{-1} \mathbf{R}\right|_{0} \\
&\mathbf{u}_{t o t}^{(2)}=\mathbf{u}_{t o t}^{(1)}-\left.\mathbf{K}_{t o t}^{-1} \mathbf{R}\right|_{\mathbf{u}_{t o t}^{(1)}}
\end{aligned}

Fonti