Listato Maxima

Ci si propone ora di implementare le nozioni teoriche precedenti in un codice Maxima.
Stabiliamo innanzitutto le condizioni di caricamento a remoto (far field). Imponiamo una trazione uniforme, lungo x facendo riferimento al sistema di coordinate cartesiane iniziale (vedi teoria).

dove sxx_ff,syy_ff e sxy_ff sono le tensioni normali e tangenziali a remoto in coordinate cartesiane. É possibile estendere la trattazione anche ad altri caricamenti a remoto, come ad esempio:

Avendo imposto le condizioni di far field in coordinate cartesiane, operiamo un cambio di coordinate al fine di esprimere le tensioni in coordinate polari, coerentemente con la teoria.

Le relazioni fra le tensioni nei due sistemi di riferimento sono date dalle relazioni seguenti(pag. 8-9 Barber).

Dove srr_ff, stt_ff e srt_ff sono rispettivamente le tensioni radiale, circonferenziale e tangenziale a remoto nel nuovo sistema di riferimento. Nel caso specifico valgono:

Prima di comporre la Airy Stress Function si nota che in tabella di pag. 119 del Barber non compaiono le componenti tensionali in forma $ cos^2(θ) $ e $ sen^2(θ) $ mentre compaiono termini del tipo $ cos(nθ) $ e $ sen(nθ) $. Pensiamo quindi di eseguire uno sviluppo in serie di Fourier (che risulta in forma esatta essendo applicato a funzioni armoniche) in modo da ottenere funzioni trigonometriche in $ nθ $, da cui risalirò al rispettivo termine di Mitchell. Questa operazione viene eseguita mediante la funzione trigreduce():

Creiamo ora una lista contenente le appropriate soluzioni di Mitchell (vedi teoria) della Airy Stress Function ed una lista con i coefficienti incogniti della combinazione lineare:

Definisco la Airy Stress Function (ASF) come combinazione lineare delle soluzioni di Mitchell:

Ora che abbiamo l'espressione della ASF siamo in grado, mediante le relazioni apposite (pag.110 Barber), di ricavare le componenti di tensione:

Imponendo le cinque condizioni al contorno discusse nella parte teorica otteniamo cinque equazioni che inseriamo poi nella lista eqns[]. Risolvendo tale sistema si ricaveranno i coefficienti incogniti della combinazione lineare.

Dobbiamo ora imporre che tali equazioni siano valide per ogni $ θ $: presa una singola equazione, si nota che ciò accade se si ottiene un'identità, ovvero se le singole somme algebriche che in ogni equazione moltiplicano i termini $ cos(2θ) $ e $ sen(2θ) $ siano nulle e allo stesso sia nulla la somma algebrica dei termini costanti.
Penso quindi, mediante un “trucco”, di estrarre dalle equazioni tali somme algebriche tra i coefficienti $ Ai $ mediante l'uso della funzione augcoefmatrix() (link) specificando come incognite proprio $ cos(2θ) $ e $ sen(2θ) $, in modo da ottenere una matrice i cui termini siano composti da relazioni algebriche tra i coefficienti incogniti della ASF. Imponendo che ogni termine della matrice ottenuta debba essere nullo, otteniamo la validità per ogni $ θ $. Inseriamo in una nuova lista neweqns[] le equazioni ottenute costruendo un ciclo un ciclo iterativo e sfruttando la funzione append (link):

Risolvendo questo sistema di equazioni si ricavano i singoli coefficienti, per far ciò utilizziamo il comando linsolve().
Si noti come Maxima elimina automaticamente equazioni linearmente dipendenti da altre.

A questo punto è possibile portare sul grafico i risultati ottenuti, definendo le relazione da “plottare”. Il comando usato in Maxima per la realizzazione del grafico è wxplot2d (). Le relazioni d'interesse sono 4:

All'interno del comando di disegno del grafico è opportuno definire il campo di estensione dell'asse delle ascisse, in particolare di teta (t), il quale come si vede è l'intervallo $ [-π ; π] $ che definisce l'intero angolo giro.
Un altro accorgimento può essere l'introduzione di una legenda con l'istruzione legend. Infine viene definito il campo delle ordinate y tra i due valori (+-5…..).

Il grafico che si ottiene è quello riportato di seguito:

Considerazioni Finali

Come si può notare dal grafico si è ottenuto uno stato tensionale simmetrico (coerente, data la simmetria della struttura e del caricamento) che presenta due zone circonferenzialmente trattive e due compressive a bordo foro. Nelle zone trattive il valore tensionale massimo è all'intersezione tra asse y e bordo foro e vale circa 3 MPa in linea con quanto ci si aspettava: il valore del fattore di forma, ovvero il rapporto fra tensione nominale e teorica, in prossimità del bordo libero per un foro infinitesimo (si ricorda che stiamo studiando la struttura equivalente in cui il foro è sì di dimensioni finite, ma in una lastra infinita) è di 3 (vedi A. Strozzi - Costruzione di Macchine, pag. 315).

NOTA CONCLUSIVA: Nella definizione delle funzioni si è usato il comando define () e non := in quanto la valutazione della funzione doveva essere fatta immediatamente all'atto della definizione e non all'atto dell'introduzione degli argomenti specifici, come si può notare dalla figura sottostante.

Per ulteriori chiarimenti riguardo le differenze tra i due metodi di definizione delle funzioni, si allega il link che fa riferimento alla questione: https://cdm.ing.unimo.it/dokuwiki/wikipaom2017/020.090.000