CodeCal

La soluzione del problema elastico è affidata al CodeCal. Una volta indicato il file del progetto da processare, si avvia effettivamente il calcolo sulla base dei settaggi correnti.

Per avviare il CodeCal ci sono due modalità distinte:

  1. Chiudere la sessione di lavoro con il Pre-Processore, salvando il progetto in un file, ed aprire il programma CodeCal.
  2. Salvare il progetto in un file e senza uscire dal Pre-Processore lanciare il CodeCal con il comando Pre-Processore - Calcolo-Calcola Struttura-Calcola.

La prima modalità consente di impegnare meno la memoria del computer in quanto non prevede l'apertura in simultanea del Pre-Processore e CodeCal per cui è da preferire nel caso si debba risolvere un modello impegnativo.

Fig. 1 Finestra principale dell'applicativo CodeCal.

È un applicativo di tipo batch nel quale si impostano i dati che definiscono il progetto da processare ed eventualmente alcuni dettagli sulla modalità di calcolo e se ne richiede l'esecuzione. L'Area di Lavoro è impiegata per mostrare il rapporto, aggiornato dinamicamente, sull'andamento del calcolo.

Selezionando il comando Apri del menu File viene aperto il dialogo con il quale si rintraccia il nome del progetto da passare al programma di calcolo per l'esecuzione dell'analisi strutturale. Il nome del progetto corrente viene mostrato all'interno del campo Progetto disponibile al di sopra dell'Area di Lavoro. Quando il CodeCal viene mandato in esecuzione dal Pre-Processore non occorre fornire indicazioni sul nome del progetto da elaborare perché il progetto corrente nel Pre-Processore diventa quello corrente anche per il CodeCal.

Selezionando il comando CodeCal - Calcolo-Calcola prende il via l'elaborazione e può essere interrotta in qualsiasi momento selezionando il pulsante [Stop].

Fig. 2 Finestra principale del CodeCal al termine dell'esecuzione dell'analisi.

Il calcolo viene condotto mostrando la finestra del programma CodeCal in primo piano ed al suo interno vengono riportate le varie fasi dell'elaborazione in esecuzione.

Prima di chiudere la sessione di lavoro con il CodeCal per passare alle fasi successive, è consigliabile controllare il buon esito dell'elaborazione. A tale scopo è sufficiente verificare che nel rapporto finale, mostrato all'interno dell'Area di Lavoro del CodeCal, non siano presenti messaggi di errore, nel qual caso occorre identificare il tipo di problema e risolverlo prima di poter procedere con le ulteriori fasi dell'elaborazione.

Dettagli sul solutore

La risoluzione del sistema di equazioni viene condotta operando una fattorizzazione in forma LDLT della matrice di rigidezza assemblata del modello agli elementi finiti della struttura ed impiegando poi la tecnica del Back Subsolution sui vari vettori di carico presenti.

Le operazioni di calcolo delle matrici di rigidezza dei singoli elementi, assemblaggio della matrice di rigidezza complessiva, risoluzione del sistema, calcolo degli autovalori ed autovettori, ecc. sono tutte condotte in doppia precisione per cui, su computers a 32 bit, è da attendersi una precisione di macchina che raggiunge la 12-esima-13-esima cifra dopo la virgola.

Qualora la matrice di rigidezza assemblata K raggiunga una dimensione tale da non poter essere più contenuta integralmente nella memoria RAM del computer, l'algoritmo di risoluzione adotta la tecnica Out of Core per cui la matrice viene fattorizzata a blocchi e memorizzata sul disco fisso dal quale vengono richiamate poi le varie sottomatrici da processare separatamente. La dimensione massima di un blocco dipende dalla memoria RAM disponibile sul calcolatore ed influenza in modo determinante il tempo di calcolo della soluzione.

Lo spazio necessario per la registrazione della matrice K è valutabile, per difetto, con la seguente relazione

Spazio in Byte = {
n. pilastri · [(12 · 13 / 2) + 12 · nCond] +
n. travi · [(12 · 13 / 2) + 12 · nCond] +
n. travi fondazione · [( 6 · 7 / 2) + 6 · nCond] +
n. plinti · ( 3 · 4 / 2) +
n. setti · [(24 · 25 / 2) + 24 · nCond] +
n. triangolari · [(18 · 19 / 2) + 18 · nCond] +
n. elementi 4 nodi · [(24 · 25 / 2) + 24 · nCond] +
n. isoparametrici · [(48 · 49 / 2) + 48 · nCond] +
n. pali · ( 6 · 7 / 2) +
n. condizioni · nEquazioni +
n. blocchi · nDimMaxBloc +
n. pilastri · 12 · (nCond + nSisma) +
n. travi · 12 · (nCond + nSisma) +
n. travi fondazione · 6 · (nCond + nSisma) +
n. plinti · 3 · (nCond + nSisma) +
n. setti · 24 · (nCond + nSisma) +
n. triangolari · 18 · (nCond + nSisma) +
elementi 4 nodi · 24 · (nCond + nSisma) +
isoparametrici · 48 · (nCond + nSisma) +
pali · 6 · (nCond + nSisma) } · 8

dove:

nCond numero di condizioni di carico
nSisma numero di condizioni sismiche
nEquazioni numero totale di equazioni
nDimMaxBloc dimensione massima blocco

Un procedimento alternativo, in grado di indicare all'utente la dimensione in bytes della matrice di rigidezza assemblata, è quello di lanciare una prima volta l'esecuzione del calcolo e di interromperlo, dopo che la scritta "Assemblaggio Blocco 1 dall'Eq. 1 all'Eq. nn Dimensione XXXXX" sia apparsa all'interno della finestra del CodeCal, per andare a leggere le informazioni di cui si ha bisogno. Si tratta semplicemente di risalire al numero di blocchi individuato e alla dimensione del primo blocco. A questo punto non resta che moltiplicare il n. di blocchi per la dimensione e si ottiene l'ingombro in memoria della matrice di rigidezza assemblata; occorre poi trasformare i bytes in Kb dividendo per 1024 la dimensione totale ed approssimare all'intero superiore. Tale valore corrisponde, con buona precisione, alla memoria da allocare con il comando Setup del menu Calcolo se è fisicamente disponibile sul computer.