mattiaferdeghini.com

EN · Read in English
Torna ai progetti
Frame Solver con una trave appoggiata risolta, caricata da una forza concentrata di 12 kN, con il diagramma del momento flettente sotto l'asse e il verdetto verde "Structure is safe"Progetto Personale · Strumento Didattico

Frame Design: un risolutore di strutture pensato per gli studenti

Uno strumento web per controllare le travi, i telai e le reticolari su cui si esercitano gli studenti. Costruisci la struttura sulla griglia, premi Solve e leggi reazioni, diagrammi delle azioni interne e un verdetto di sicurezza in parole semplici. Una versione di prova funziona nel browser.

In breve

Problema
Controllare a mano gli esercizi di scienza delle costruzioni è lento e si sbaglia facilmente, e i software professionali sono pensati per ingegneri dell'industria, con una curva di apprendimento ripida.
Approccio
Uno strumento web volutamente ristretto. Costruisci la struttura sulla griglia e premi Solve; i calcoli li fa un solutore con il metodo della rigidezza diretta, mentre il lavoro di design va su chiarezza e convenzioni di disegno corrette.
Risultato
Reazioni, quattro diagrammi (sforzo normale, taglio, momento flettente, deformata), un verdetto di sicurezza in una riga con percentuale di sfruttamento e rapporto di freccia, e uno svolgimento passo per passo stampabile.
Strumenti
React · SVG
Frame Solver in funzione sul mio computer (16 s, senza audio). Premo Solve, passo dai diagrammi di taglio a quelli di momento flettente e deformata, poi sposto il carico di 12 kN lungo la trave e i risultati lo seguono.

Puoi provarlo qui. È una versione di prova: non serve un account, e le strutture che salvi restano nel tuo browser. L'interfaccia dell'app è in inglese.

Perché l'ho creatoLink a questa sezione

Molti studenti trovano difficile la scienza delle costruzioni. Reazioni vincolari, taglio, momento flettente, deformata: la teoria è elegante, ma per farla tua devi risolvere un esercizio dopo l'altro e controllare se il risultato torna. Controllare a mano è lento, ed è facile sbagliare.

I software professionali sono potenti, ma sono pensati per ingegneri che lavorano nell'industria e hanno una curva di apprendimento tutta loro. Continuavo a pensare allo studente che fatica già con la teoria e a cui si chiede, in più, di imparare un software complicato.

Così ho costruito Frame Design, uno strumento che controlla gli esercizi su cui si esercitano gli studenti. Nell'app si chiama Frame Solver. La maggior parte di quegli esercizi sono travi e telai isostatici di un primo corso, anche se il solutore risolve pure quelli iperstatici. Ho tenuto il campo ristretto apposta, così la parte difficile resta la materia.

Meno, ma più chiaroLink a questa sezione

Ho tagliato le funzioni il più possibile e ho speso la complessità risparmiata in chiarezza. C'è pochissimo da configurare e nessun manuale da leggere. Lo apri, costruisci la trave del tuo esercizio, premi un pulsante e vedi se regge, e perché.

Quindi gran parte del mio tempo è andata nell'esperienza attorno alla matematica: rendere l'analisi strutturale abbastanza accessibile perché anche chi ne è intimorito ottenga un risultato al primo tentativo e, spero, inizi ad apprezzarla.

Area di costruzione di Frame Solver con una trave appoggiata, i nodi A e B e un carico concentrato di 12 kN, prima della soluzione
L'area di costruzione. A sinistra la palette degli strumenti, al centro la griglia; il pannello dei risultati a destra resta vuoto finché non premi Solve.

Come funzionaLink a questa sezione

Si lavora direttamente su una griglia. Scegli uno strumento, clicchi per posizionare i nodi e li colleghi in travi, poi inserisci i vincoli che l'esercizio richiede: cerniera, carrello o incastro, con qualsiasi inclinazione. Anche i vincoli interni si mettono sui nodi: cerniera, pendolo, doppio pendolo o doppio doppio pendolo. I carichi possono essere forze concentrate, carichi distribuiti normali alla trave, carichi lineari in una direzione globale, momenti applicati o variazioni di temperatura. Un selettore nella barra in alto sceglie il modello di calcolo: Frame (telaio), dove le travi lavorano a flessione, o Truss (reticolare), dove ogni asta è una biella incernierata.

Ogni elemento si può modificare. Lo selezioni e da un pannello laterale ne regoli intensità, posizione e direzione. Il materiale lo scegli da una piccola libreria (Acciaio S235 / S275 / S355, Alluminio 6061-T6, Legno C24) oppure inserisci tu tensione di snervamento e modulo elastico, come potrebbe darli un esercizio del libro. La sezione funziona allo stesso modo: un profilo IPE, HEA o HEB dall'elenco, oppure un rettangolo, un cerchio o un tubo personalizzati.

Menu dei materiali di Frame Solver aperto, con tre acciai, alluminio 6061-T6, legno C24 e un materiale personalizzato
Il menu dei materiali. Ogni voce mostra tensione di snervamento e modulo elastico, quindi la verifica usa valori reali; Custom material accetta i valori che dà l'esercizio.

Premi Solve e ottieni le reazioni vincolari, quattro diagrammi (sforzo normale, taglio, momento flettente e deformata) e una risposta in parole semplici alla domanda la struttura è sicura? Lo strumento confronta la tensione di picco con lo snervamento del materiale, riporta una percentuale di sfruttamento e un rapporto di freccia, e mette il verdetto in una riga in cima ai risultati: verde, ambra sopra l'80% di sfruttamento, rossa quando la sezione è oltre lo snervamento.

Una trave appoggiata risolta, con il diagramma del momento flettente sotto l'asse e il verdetto di sicurezza verde
La trave dell'area di costruzione, risolta. Le reazioni sono sui vincoli, il diagramma del momento è disegnato dal lato teso e il verdetto in alto dice: Structure is safe · Utilization 35% · σ 83/235 MPa · δ L/521.
Kff df = Ff

cosa calcola Solve per questa trave: gli spostamenti liberi, dalla rigidezza di tutta la struttura

Poi ogni elemento ritrova le sue forze di estremità, e reazioni, diagrammi e verdetto vengono tutti da quei numeri. I passaggi sono spiegati più sotto, in “Come risolve una struttura”.

Lo stesso pulsante risolve una struttura iperstatica. Se trasformi il carrello in B in un incastro, la trave diventa una mensola appoggiata: l'incastro ora assorbe un momento e le reazioni cambiano di conseguenza.

La stessa trave con un incastro in B, risolta: il diagramma del momento cambia segno e arriva a −13,4 kN·m all'incastro
Stesso carico, incastro in B. Le reazioni diventano 1,84 kN in A e 10,16 kN con −13,4 kN·m in B; lo sfruttamento scende al 29%.

Come risolve una strutturaLink a questa sezione

Sotto il pulsante Solve c'è un solo metodo: il metodo degli spostamenti in forma matriciale, quello che di solito si chiama metodo della rigidezza diretta. Strutture isostatiche e iperstatiche passano esattamente per lo stesso codice. Il solutore non deve mai scegliere quale iperstatica togliere o quale equazione di congruenza scrivere, quindi una struttura iperstatica non gli costa più lavoro di una isostatica.

L'idea: incognite di spostamento invece che di forzaLink a questa sezione

Un telaio è un insieme di elementi rettilinei uniti nei nodi. Nel piano ogni nodo può traslare in due direzioni e ruotare, quindi ha tre gradi di libertà: u, v e θ. Se so come si spostano i due estremi di un elemento, conosco le forze ai suoi estremi: questo legame è la rigidezza dell'elemento. Le incognite diventano allora gli spostamenti dei nodi, e le equazioni sono l'equilibrio di ciascun nodo. Una struttura con j nodi dà 3j equazioni in 3j incognite.

La congruenza viene gratis, perché due elementi che condividono un nodo ne condividono gli spostamenti. È il contrario del metodo delle forze del corso di scienza delle costruzioni, dove le iperstatiche si scelgono a mano e poi si scrive un'equazione di congruenza per ciascuna.

1 · L'elemento nei suoi assiLink a questa sezione

Ogni elemento è una trave di Eulero-Bernoulli con sforzo normale e sei gradi di libertà, tre per estremo, misurati negli assi propri dell'elemento (x lungo l'asta). La sua matrice di rigidezza 6×6 è quella dei libri. Sono gli stessi cinque termini che costruisce il codice, con gli stessi nomi:

k =
a00−a00
0bd0−bd
0de0−df
−a00a00
0−b−d0b−d
0df0−de

matrice di rigidezza locale di un elemento trave · gdl u₁ v₁ θ₁ u₂ v₂ θ₂

a = EA/L, b = 12EI/L³, d = 6EI/L², e = 4EI/L, f = 2EI/L. In modalità reticolare ogni asta è una biella incernierata e restano solo i quattro termini in a.

2 · Dagli assi dell'elemento agli assi globaliLink a questa sezione

Un elemento inclinato vede il mondo ruotato del suo angolo α. La matrice di rotazione T trasforma gli spostamenti globali in locali, e la rigidezza dell'elemento negli assi globali è TTkT. La rotazione θ è la stessa nei due sistemi, ed è per questo che gli 1 sulla diagonale restano al loro posto.

Un elemento inclinato con i gradi di libertà locali u, v, θ ai due estremi e gli assi globali X, Y
I sei gradi di libertà locali di un elemento, con l'angolo α tra l'elemento e l'asse globale X.
T =
cs0000
−sc0000
001000
000cs0
000−sc0
000001
    kg = TT k T

matrice di rotazione e rigidezza dell'elemento in assi globali

c = cos α, s = sin α.

3 · Le matrici di posizione: ogni elemento al suo postoLink a questa sezione

Ogni nodo ha un numero, e i suoi tre gradi di libertà occupano tre posti fissi nel vettore globale degli spostamenti. L'elemento I, dal nodo A al nodo B, "vive" quindi nelle posizioni da 1 a 6 del vettore globale, e l'elemento II, da B a C, nelle posizioni da 4 a 9.

Sulla carta questo si scrive con una matrice di posizione (sui libri anche matrice di localizzazione o di connettività): una matrice di zeri e uni, Ae, che estrae dal vettore globale i sei spostamenti dell'elemento. La matrice di rigidezza globale è la somma dei contributi di tutti gli elementi, ciascuno portato al suo posto dalla propria Ae:

AI =
I00
0I0
   AII =
0I0
00I
    K = Σe AeT kg,e Ae   F = Σe AeT TTfe

matrici di posizione e assemblaggio · tre nodi A, B, C, blocchi 3×3

I è la matrice identità 3×3 e 0 un blocco 3×3 di zeri. dₑ = Aₑ d estrae i sei spostamenti dell'elemento dai nove globali.

Moltiplicare tutti quegli zeri sarebbe uno spreco, quindi il codice tiene solo ciò che la matrice contiene: l'elenco delle sei posizioni di ogni elemento, [3n₁, 3n₁+1, 3n₁+2, 3n₂, 3n₂+1, 3n₂+2], dove n₁ e n₂ sono i numeri dei suoi due nodi contati da zero, e somma ogni termine di kg direttamente nella sua riga e colonna di K. Dove due elementi si incontrano i loro termini si sommano, e quella somma è l'equilibrio del nodo condiviso scritto in forma matriciale.

Due matrici di elemento 6×6 sommate nella matrice di rigidezza globale 9×9, con evidenziato il blocco condiviso del nodo B
L'assemblaggio tramite i vettori di posizione. Il blocco 3×3 del nodo B riceve un contributo da entrambi gli elementi; i blocchi d'angolo restano nulli perché nessun elemento collega A e C.

4 · I carichi lungo un'asta diventano carichi nei nodiLink a questa sezione

Il metodo della rigidezza accetta solo forze applicate nei nodi. Un carico che agisce lungo un elemento viene sostituito dai suoi carichi nodali equivalenti, le forze equivalenti in termini di lavoro calcolate con le stesse funzioni di forma cubiche che descrivono la deformata dell'elemento. Per un carico uniforme q su un elemento di lunghezza L:

f = [ 0,  −qL2,  −qL212,  0,  −qL2,  +qL212 ]T

carichi nodali equivalenti di un carico uniforme, assi locali

Sono le classiche forze di incastro perfetto con il segno cambiato. Le forze concentrate usano le funzioni di forma nel punto di applicazione; i carichi distribuiti e trapezoidali sono integrati numericamente in 80 strisce; coppie e carichi termici (N = EAαΔT, M = EIα(T_inf − T_sup)/h) hanno termini propri.

5 · Vincoli, poi la soluzioneLink a questa sezione

Un vincolo blocca alcuni gradi di libertà del nodo: la cerniera blocca u e v, il carrello una traslazione, l'incastro tutti e tre. Dividendo i gradi di libertà in liberi (f) e vincolati (c), il sistema diventa:

KffKfc
KcfKcc
df
0
=
Ff
Fc + R
   ⇒   Kff df = Ff

partizione: si risolvono solo le righe libere

Gli spostamenti dei vincoli sono nulli, quindi gli spostamenti liberi si ricavano dalla sola prima riga di blocchi.

Nel codice le righe e colonne vincolate vengono azzerate con un 1 sulla diagonale, che dà la stessa soluzione senza dover riordinare la matrice. Lo svolgimento generato dall'app (il passo 4 più sotto) descrive questo passaggio come l'eliminazione di quelle righe e colonne; le due cose si equivalgono. Un carrello inclinato di un angolo qualsiasi non si può esprimere come un u o un v bloccato, quindi riceve una molla rigidissima nella direzione impedita (una penalità pari a 10⁸ volte il maggiore tra EA ed EI). Il sistema si risolve con l'eliminazione di Gauss-Jordan con pivot parziale, e un pivot si considera nullo sotto una tolleranza proporzionata alla rigidezza della struttura, non sotto un numero piccolo fisso.

Un ultimo controllo intercetta le strutture labili. Se la struttura è labile la matrice è singolare, e l'eliminazione può comunque restituire spostamenti privi di significato. Per questo, dopo la soluzione, il codice rimette gli spostamenti nelle equazioni originali su ogni grado di libertà libero. Se il residuo supera lo 0,1% del carico nodale più grande, scarta il risultato e segnala che la struttura è labile.

6 · Ritorno agli elementiLink a questa sezione

Noti gli spostamenti dei nodi, ogni elemento recupera le sue forze di estremità passando per lo stesso vettore di posizione e la stessa rotazione:

fend = k T Ae d − f

forze di estremità di ogni elemento, assi locali

Tutto il resto viene da quei sei numeri per elemento. Le reazioni vincolari sono le forze di estremità sommate in ogni nodo vincolato e riportate negli assi globali. N, T e M lungo l'elemento si ricavano dalle forze di estremità più i carichi compresi tra l'estremo e la sezione di taglio, campionati in 101 punti per elemento. La deformata è la curvatura M/EI integrata due volte lungo l'elemento, partendo dallo spostamento e dalla rotazione del primo nodo, con una correzione lineare perché arrivi esattamente sullo spostamento del secondo.

Cerniere interne e altri vincoli interniLink a questa sezione

Una cerniera interna non aggiunge né nodi né gradi di libertà. Il nodo mantiene la sua unica rotazione. Degli estremi di elemento che arrivano sulla cerniera, uno resta rigido e porta quella rotazione, gli altri vengono "svincolati": il loro momento di estremità è imposto nullo con la condensazione statica della matrice dell'elemento prima dell'assemblaggio. Se nel nodo passa una trave continua, si svincolano solo le aste che vi si appoggiano. Lo stesso procedimento vale per gli altri vincoli interni, che svincolano componenti diverse: il pendolo (T e M), il doppio pendolo (T) e il doppio doppio pendolo (N e T).

k* = krr − krc kcc−1 kcr    f* = fr − krc kcc−1 fc

condensazione statica dei gradi di libertà svincolati c (r = mantenuti)

La matrice e il vettore dei carichi condensati sostituiscono k e f, quindi l'estremo svincolato non trasmette forza in quella componente.

Una trave disegnata dritta attraverso un vincolo o attraverso l'estremo di un'altra trave viene spezzata lì automaticamente, così le due sono davvero collegate.

Isostatica o iperstatica?Link a questa sezione

Il solutore tratta i due casi allo stesso modo. Per uno studente la distinzione conta, quindi lo svolgimento passo passo comincia contando:

i = 3m + r − 3j − s

grado di iperstaticità

m aste, r componenti di reazione, j nodi, s condizioni interne svincolate. Per una travatura reticolare: i = m + r − 2j. i = 0 è isostatica, i > 0 iperstatica, i < 0 labile.

Quando l'equilibrio della struttura intera basta a fissare le reazioni (una struttura isostatica senza cerniere interne), lo svolgimento le trova come si farebbe a mano, un'equazione di equilibrio alla volta prendendo i momenti rispetto a ciascun vincolo, e poi le confronta con la soluzione agli spostamenti. Altrimenti, come in una trave iperstatica o in un portale a tre cerniere, prende le reazioni dalla soluzione agli spostamenti e usa le equazioni di equilibrio come verifica.

Un esempio svolto: trave continua su tre appoggiLink a questa sezione

Per verificare il motore gli ho fatto risolvere la classica trave iperstatica: due campate da 5 m, una cerniera in A, carrelli in B e C, un carico uniforme di 10 kN/m su tutta la lunghezza, un IPE 200 in S235. Risulta EI = 210 000 MPa × 1943 cm⁴ = 4080,3 kN·m², e il conteggio dà i = 3·2 + 4 − 3·3 − 0 = 1: una volta iperstatica.

Lo svolgimento passo passo che conta aste, nodi e componenti di reazione e conclude che la trave è iperstatica di grado 1
Il passo 2 dello svolgimento generato dall'app: la classificazione statica dell'esempio, i = 1.

La matrice globale è 9×9. I vincoli bloccano quattro gradi di libertà (uA, vA, vB, vC). Dei cinque liberi, i due spostamenti assiali non sono caricati e risultano nulli, quindi il problema si riduce alle tre rotazioni. Il nodo B compare in entrambi gli elementi, quindi le matrici di posizione sommano i due contributi sulla diagonale: 4EI/L + 4EI/L = 8EI/L.

EIL
420
282
024
θA
θB
θC
=
−20,835
0
+20,835
   ⇒   θA = −θC = −6,3828·10−3,  θB = 0

sistema ridotto, solo rotazioni · numeri del motore (kN·m, rad)

Il termine noto è ∓qL²/12. Il motore ottiene 20,835 invece di 20,833 perché integra numericamente il carico distribuito; questo 0,008% spiega le piccole differenze nelle reazioni e nel momento su B.

Il passo dello svolgimento sul metodo della rigidezza, con la matrice K 9×9 assemblata, il vettore dei carichi F e gli spostamenti dei nodi
Il passo 4 dello svolgimento: K ed F assemblati esattamente come li ha usati il solutore, e gli spostamenti dei nodi. La rotazione in A e in C vale ±6,383 mrad.

Dalle rotazioni, le forze di estremità dell'elemento I danno il momento sull'appoggio centrale: MB = 2EI/L · θA − qL²/12 = 1632,1 · (−6,3828·10⁻³) − 20,835 = −31,25 kN·m. Ecco il motore accanto alle formule dei libri:

GrandezzaMotoreForma chiusaValore
Reazioni in A e C18,750 kN3qL/818,750 kN
Reazione in B62,501 kN5qL/462,500 kN
Momento su B−31,252 kN·m−qL²/8−31,250 kN·m
Massimo momento positivo in campata17,574 kN·m (diagramma campionato ogni 5 cm)9qL²/128 a 3L/817,578 kN·m a 1,875 m
Rotazione in A−6,3828·10⁻³ rad−qL³/(48EI)−6,3823·10⁻³ rad
Freccia massima8,292 mm a 2,10 m0,005416 qL⁴/EI a 0,4215 L8,296 mm a 2,11 m

Le differenze stanno tutte sotto lo 0,06% e hanno tre origini: l'integrazione numerica del carico distribuito, il campionamento dei diagrammi ogni 5 cm e, per la freccia, l'integrazione per passi della curvatura. L'equazione per tratti calcolata dallo svolgimento stesso mette il massimo momento in campata a 17,58 kN·m in x = 1,875 m.

L'esempio svolto: la trave, il diagramma del momento flettente e la deformata calcolati dal motore, con i valori in forma chiusa come punti
L'esempio risolto dal motore (linee) confrontato con la soluzione in forma chiusa (punti). Il momento è disegnato dalla parte delle fibre tese, come nell'app.

Cosa vede lo studente: "Show the working"Link a questa sezione

Tutto questo resterebbe nascosto dietro il pulsante Solve, quindi ho aggiunto un secondo pulsante. "Show the working" apre una pagina separata e stampabile che ripercorre la soluzione della struttura presente sulla griglia, in sette passi numerati:

  1. The model: nodi, aste, vincoli, carichi, materiale e sezione.
  2. Static classification: il conteggio qui sopra e cosa comporta per il metodo.
  3. Support reactions: carichi ridotti a risultanti ed equilibrio globale, risolto un'incognita alla volta quando basta l'equilibrio globale.
  4. The stiffness solution: le matrici di elemento k, T e kg, i carichi nodali equivalenti di ogni elemento caricato, K e F assemblati, i gradi di libertà bloccati, gli spostamenti dei nodi e le forze di estremità.
  5. Internal forces, element by element: N(x), V(x) e M(x) come equazioni per ogni tratto, con il punto di taglio nullo e l'estremo locale di M. Per una travatura reticolare diventa il metodo dei nodi.
  6. Diagrams: N, T, M e la deformata, disegnati come sulla griglia.
  7. Verification: la verifica di tensione e di freccia.

Due regole l'hanno guidato. La prima: ogni numero della pagina viene dallo stesso solutore che disegna i diagrammi, rilanciato una volta conservando tutte le grandezze intermedie, e niente viene ricalcolato con una seconda implementazione che potrebbe non essere d'accordo. La seconda: dove mostro un procedimento a mano (l'equilibrio globale, le equazioni di N, T e M di un'asta), lo ricavo in modo indipendente e lo confronto con il solutore, e la pagina stampa l'esito del confronto. Passando con il cursore su un carico o un vincolo si evidenziano le righe di calcolo che lo usano.

Curare i dettagliLink a questa sezione

Uno studente non può accorgersi che un solutore sbaglia di poco, quindi ho dedicato molto tempo alle convenzioni.

I diagrammi seguono la convenzione del disegno strutturale: il momento flettente si traccia dal lato teso, quindi una trave caricata dal peso e inflessa verso il basso mostra il momento sotto l'asse, mentre il taglio resta sopra.

Poi c'era la questione della scala. All'inizio ogni freccia di carico e ogni diagramma venivano disegnati a dimensione fissa, e così l'intensità non si vedeva. Ora frecce e carichi distribuiti crescono con il carico, in scala rispetto al carico più grande della struttura, quindi una forza maggiore sembra sempre più grande. I diagrammi con la stessa unità condividono un'unica scala, così le loro dimensioni si confrontano direttamente sullo schermo, come sulla carta.

Ci sono state anche sistemazioni più piccole: maniglie di rotazione che girano nel verso che la mano si aspetta e un pannello impostazioni per tema, scala della griglia e unità (metri, centimetri o piedi).

Pannello impostazioni di Frame Solver con le sezioni tema, stile colore, griglia, unità e archiviazione
Impostazioni: tema chiaro o scuro, stili Paper, Soft e Mono, scala della griglia e unità di misura. Nella versione di prova la sezione Storage dice che le strutture restano salvate solo in questo browser.

LimitiLink a questa sezione

  • L'analisi è piana, lineare e limitata ai piccoli spostamenti. K si costruisce una volta sola sulla geometria indeformata, quindi niente non linearità geometrica e niente instabilità. Gli elementi sono di Eulero-Bernoulli, quindi la deformabilità a taglio è trascurata.
  • C'è un solo materiale e una sola sezione per tutta la struttura: ogni elemento usa gli stessi E, A e I.
  • Non ci sono molle elastiche né cedimenti imposti. I vincoli sono rigidi; solo i carrelli inclinati usano internamente una molla di penalità.
  • L'opzione che trascura la deformabilità assiale è un'approssimazione: moltiplica EA per 10⁴ invece di imporre vincoli esatti.
  • La verifica di resistenza è semplice. Confronta Mmax/Wel (o N/A in una reticolare) con la tensione di snervamento: niente coefficienti parziali di sicurezza, niente interazione N+M, niente instabilità. Lo svolgimento lo scrive in chiaro.
  • Il solutore lavora su una matrice piena 3j × 3j, che va benissimo per le strutture da esercitazione e non è pensata per modelli grandi.
  • Due cose sono ancora nella mia lista: il rapporto di freccia divide per la lunghezza totale di tutte le aste, il che favorisce le travi a più campate (l'esempio mostra L/1206 invece di L/603 per campata), e lo svolgimento stampa "x^1" dove dovrebbe stampare "x".

Dettagli

Tipo
Progetto personale · Web App
Ruolo
Design e Sviluppo
Ambito
Scienza delle Costruzioni
Anno
2026
Stack
React · SVG
Metodo
Metodo della rigidezza diretta
  • Web App
  • React
  • Scienza delle Costruzioni
  • Metodo della rigidezza
  • UX

Altri progetti