VERIFICHE LIBERE
1. Introduzione 4. La struttura delle verifiche 5. Le informazioni disponibili dopo le verifiche
A partire dalla versione 15.50, rilasciata nel dicembre 2022, sono possibili le verifiche libere. Si intende, con ciò, la possibilità di far eseguire al programma delle verifiche del tutto particolari, definite e descritte in modo libero dall'utente. Ciò apre molte possibilità, in quanto con questo sistema è possibile eseguire:
•verifiche non coperte dai verificatori automatici •verifiche con normative diverse (in teoria è possibile scriversi le verifiche per qualsiasi normativa) •speciali verifiche problem-dependent
Non servono capacità di programmazione, il programma interpreta formule scritte con le ordinarie regole. I comandi relativi a questa nuova funzionalità si trovano nel menu Post-Verifiche Libere, o per la interfaccia con Ribbon, il Post-1. Le verifiche libere sono abilitate per quegli utenti che hanno la abilitazione ad almeno un modulo di verifica. Non sono abiolitate per gli utenti del solo Sargon Static.
Una variabile ha un nome e una espressione che la definisce che può essere anche solo numerica. Come separatore decimale si usa il punto ".". Una variabile deve anche avere una dimensione, ovvero occorre specificare la sua dimensione fisica (lunghezza, superficie, volume, forza, coppia, ecc).
In Sargon le variabili possono avere qualsiasi nome, ma si consiglia abbiano un nome di questo tipo: GRUPPO.NOME. Dove: •GRUPPO è un delimitatore che aiuta a capire il senso della variabile. •NOME è il vero e proprio nome della variabile.
Il gruppo può essere convenientemente espresso come sottogruppi delimitati dal cambio tra maiuscola e minuscola, e lo stesso il nome. Ad esempio: "El.MlimP". Non possono esistere variabili con nome identico.
Un caso speciale di variabili sono le "variabili con if". Le variabili con if non sono direttamente definite da un nome eguale a una espressione, ma sono definite da una serie di condizioni del tipo:
IF(condizione1) variabile = ESPRESSIONE1 ELSEIF(condizione 2) variabile = ESPRESSIONE2 ELSEIF(condizione 3) variabile = ESPRESSIONE3 ELSEIF(condizione 4) variabile = ESPRESSIONE4 ELSEIF(condizione 5) variabile = ESPRESSIONE5 ELSEIF(condizione 6) variabile = ESPRESSIONE6 ELSEIF(condizione 7) variabile = ESPRESSIONE7 ELSEIF(condizione 8) variabile = ESPRESSIONE8 ELSEIF(condizione 9) variabile = ESPRESSIONE9 ELSE variabile = ESPRESSIONE10
Il numero degli ELSEIF può variare da zero a un massimo di otto. Le condizioni sono particolari espressioni, di solito disequazioni, che possono essere vere o false.
Le espressioni sono relazioni tra variabili che usano:
•Le parentesi tonde •Gli operatori +-*/^ con gli ordinari significati di somma, sottrazione, moltiplicazione, divisione, elevazione a potenza. •Gli operatori ?, ! che hanno il seguente significato: o?: a?b ritorna 1 se a è eguale ab 0 in caso contrario. o!: a!b ritorna 1 se a è diverso da b, 0 in caso contrario
•Funzioni di libreria che qui vengono enumerate:
ornd (a) arrotonda a all'intero opow(a, b) a elevato alla b ohyp(a, b) radice quadrata di a2+b2. omax(a, b) massimo tra a e b omax(a, b, c, d) massimo tra a, b, c, d (numero arbitrario di elementi) omin(a, b) minimo tra a e b omin(a, b, c, d) minimo tra a, b, c, d (numero arbitrario di elementi) orad(a) radianti corrispondenti all'angolo a in gradi odeg(a) gradi corrispondenti all'angolo a in radianti oflo(a) arrotonda verso il basso ocei(a) arrotonda verso l'alto oabs(a) valore assoluto di a otan(a) tangente di a (a in radianti) ocos(a) coseno di a, a in radianti osin(a) seno di a, a in radianti odtan(a) tangente di a, a in gradi odcos(a) coseno di a, a in gradi odsin(a) seno di a, a in gradi ochia(l) valore di c secondo ec3, curva di stabilità a, per snellezza adimensionale l ochib(l) valore di c secondo ec3, curva di stabilità b, per snellezza adimensionale l ochic(l) valore di c secondo ec3, curva di stabilità c, per snellezza adimensionale l ochid(l) valore di c secondo ec3, curva di stabilità d, per snellezza adimensionale l ovmis(s, t) sforzo di Von Mises di sigma s, e tau t (sqrt(s2+3t2)) oflor(a, b) arrotondamento di a al multiplo di b inferiore oceil(a, b) arrotondamento di a al multiplo di b superiore ocube(a) cubo di a osqre(a) quadrato di a otanh(a) tangente iperbolica di a ocosh(a) coseno iperbolico di a osinh(a) seno iperbolico di a orad4(a) radice quartica di a orad3(a) radice cubica di a orad2(a) radice quadrata di a osqrt(a) radice quadrata di a oradq(a) radice quadrata di a ologe(a) logaritmo in base e di a oatan(a) arco tangente di a (restituisce radianti) oacos(a) arco coseno di a (restituisce radianti) oasin(a) arco seno di a (restituisce radianti)
E' quindi possibile ad esempio scrivere:
Nd.x = sqre(Pk.r * cos(Pk.a))
Per favorire la definizione di nuove variabili, ogni modello Sargon ha al suo interno, definite automaticamente, un certo numero di variabili predefinite, che non possono essere cancellate o modificate.
gl. Un primo insieme di variabili predefinite sono dette "globali" e hanno nome che comincia per "gl.". Si tratta di variabili utili come pi-greco, il seno e il coseno di angoli notevoli, le unità di misura o i fattori di sicurezza. Queste variabili hanno un ben preciso valore numerico che non cambia.
Nd. Un secondo insieme è dato da variabili nodali. Esse sono solo 12i e precisamente: Nd.x coordinata x Nd.y coordinata y Nd.z coordinata z Nd.u traslazione in direzione x Nd.v traslazione in direzione y Nd.w traslazione in direzione z Nd.Rx reazione vincolare (o residuo) forza in direzione x Nd.Ry reazione vincolare (o residuo) forza in direzione y Nd.Rz reazione vincolare (o residuo) forza in direzione z Nd.Mx reazione vincolare (o residuo) momento asse x Nd.My reazione vincolare (o residuo) momento asse y Nd.Mz reazione vincolare (o residuo) momento asse z
Si potrebbe credere utile distinguere le variabili da nodo a nodo, definendo ad esempio variabili Nd1., Nd2., Nd3., sino al numero totale di nodi. In realtà questo approccio: •Comporta la aggiunta di un enorme numero di variabili che potrebbero non essere necessarie, appesantendo inutilmente il modello. •Comporta la difficoltà di riferirsi con le verifiche a molti nodi, e non a un solo nodo per volta. In teoria bisognerebbe scrivere tante verifiche quanti i nodi di interesse.
Nota bene: Queste considerazioni sono molto importanti e si applicano anche alle variabili associate agli elementi, ai materiali ed alle sezioni trasversali.
Anziché definire tantissime variabili, nodo per nodo Sargon:
•Aggiunge poche variabili con prefisso Nd. ad indicare che sono variabili nodali, che assumono valori diversi da nodo a nodo e, per le reazioni e gli spostamenti, anche da combinazione a combinazione. •Nel corso delle verifiche, considerando ogni nodo di interesse, prima di eseguire le verifiche su quel nodo, le variabili Nd. saranno attualizzate con il valore pertinente di quel nodo.
Ciò implica che il valore numerico di queste variabili sia valido nodo per nodo solo nel corso delle verifiche. Al di fuori di esse ci si riferisce genericamente a "un nodo". Al termine delle verifiche i valori impostati restano quelli dell'ultimo nodo considerato. I valori delle verifiche, però, saranno correttamente valutati considerando il valore delle variabili pertinente a ciascun nodo.
Se ad esempio una verifica di spostamento è scritta
sqrt(Nd.u^2+Nd.v^2) < Nd.z / 1000 e va applicata ai nodi 987 e 1234: •Prima di valutare la verifica per il nodo 987, in una certa combinazione, i valori delle variabili Nd.x, Nd.y, Nd.z, Nd.u, Nd.v, Nd.w, Nd.Rx, Nd.Ry, Nd.Rz, Nd.Mx, Nd.My, Nd.Mz saranno cambiati da Sargon in modo automatico, ponendoli eguali ai pertinenti valori del nodo 987 nella combinazione indicata. •Poi sarà eseguita la verifica vera e propria, avendo quindi per la variabili Nd i valori pertinenti.
Questo meccanismo si applica a tutte le variabili che dipendono dalla entità/combinazione/sezione alla quale si riferiscono. Mt. Sono le variabili associate al materiale. Esse sono le seguenti: Tutte queste variabili hanno valori diversi da materiale a materiale.
Cs. Sono le variabili associate alle sezioni trasversali, esse sono: Tutte queste variabili hanno valori diversi da sezione a sezione. Il significato di molte variabili è chiaro, per alcune di esse sono necessarie delle spiegazioni: •Cs.Type: è il tipo della sezione trasversale, di seguito i tipi più frequenti: o1 sezione laminata a I o H o2 Ipn o3 UPN o4 Angolari laminati o5 T laminate (lati trastremati) o6 Rettangolari o7 Circolari e circolari cave o9 I o H saldate o10 L a spigoli vivi (saldate) o11 U a spigoli vivi (saldate) o12 T a spigoli vivi (saldate) o13 Cassone o15 [] UPN o16 ][ UPN o22 _||_ angolari o23 2 angolari a croce o24 4 angolari a croce o25 totalmente generiche o26 RHS o27 Composte generiche o28 Formate a freddo generiche o29 Formate a freddo a Omega o30 Formate a freddo a U o31 Formate a freddo a Z o32 Formate a freddo a L o33 ][ formate a freddo o34 Formate da poligoni o35 T laminate tagliate da I o H o36 Asb (I o H laminate a flange diseguali) o37 PFC (U laminate con flange parallele) •Cs.Id : è un identificatore univoco e numerico delle sezioni trasversali. 1xxx IPE, 2xxx HEA, 3xxx HEB, 4xxx HEM. •Da Cs.h a Cs.r1: si tratta delle quote delle sezioni trasversali. Per certi tipi certe variabili non hanno senso ad esempio per il tipo 1 (sezioni a I o H), Cs.D.
El.
Sono variabili che si riferiscono: 1.A elementi biella (Tr); 2.A elementi trave (Be); 3.A superelementi (Su);
Tutte queste variabili hanno valori diversi da elemento a elemento. Le variabili sono:
Valgono le seguenti osservazioni:
•Risulta per ogni elemento El.CsType = Cs.Type •Le variabili "el" e "pl" dipendono dall'elemento ma non dalla combinazione. •Le variabili Ns, T2s, T3s, M1s, M2s, M3s cambiano con il cambiare dell'elemento, della combinazione e della sezione lungo l'elemento. Il numero di sezioni da considerare è quello del comando Numero Sezioni. •Nten e Ncom sono numeri positivi e indicano la trazione o la compressione in un certo elemento in una certa combinazione. •Le variabili Nabs, T2abs, T3abs, M1abs, M2abs, M3abs, sono numeri positivi e indicano il massimo valore assoluto della sollecitazione lungo l'elemento. •IsM2Lin e IsM3Lin valgono 1 se l'andamento del momento M2 o M3, rispettivamente, è lineare, 0 se è non lineare, da un estremo all'altro dell'elemento. •La variabili "max" indicano il massimo in senso algebrico lungo l'elemento, in una certa combinazione •Le variabili "min" indicano il minimo in senso algebrico lungo l'elemento, in una certa combinazione •Le variabili M2i, M3i indicano il corrispondente momento all'inizio dell'elemento. •Le variabili M2j, M3j indicano il corrispondente momento alla fine dell'elemento. •Le variabili M2m, M3m indicano il corrispondente momento in mezzeria dell'elemento.
L'utente può definire variabili aggiuntive rispetto a quelle create automaticamente dal programma (ovvero pre-definite). Per fare questo sono disponibili i due comandi Aggiungi Variabile e Aggiungi Variabile con If. Le variabili aggiunte possono in seguito essere modificate (Modifica Variabile o Condizione) o eliminate (Elimina). Le variabili aggiuntive sono definite da un nome, che dovrebbe avere un formato tipo GRUPPO.NOME. GRUPPO dovrebbe essere una breve sigla alfanumerica, che spiega il senso o lo scopo della variabile. Si sconsiglia l'uso di nomi del tipo GRUPPO1.GRUPPO2.NOME. Le variabili non devono avere lo stesso nome di altre variabili esistenti. La definizione di una variabile può fare uso, nella espressione pertinente:
•di tutte le variabili pre-definite; •di tutte le variabili aggiuntive aggiunte prima di quella corrente.
Si consiglia di usare espressioni non troppo lunghe per non creare problemi di spazio nelle tabelle dei report. Eventualmente usare più variabili.
Una variabile può fare uso nella sua definizione di variabili predefinite o aggiuntive il cui valore cambi da nodo a nodo, e/o da elemento a elemento e/o da combinazione a combinazione e/o da sezione trasversale o materiale a sezione trasversale o materiale. In questo caso, il valore attuale di quella variabile sarà aggiornato "a cascata" a valle della ridefinizione dei valori delle variabili delle quali fa uso.
Nella decodifica dei nomi, e nella resa nei report, si tenga presente che la variabile GRUPPO.NOME viene restituita nei report come NOMEGRUPPO.
Di seguito si dà un esempio: la definizione di variabili aggiuntive per la classificazione di profili di vari tipi a compressione secondo EC3. Si usa il formato con cui si possono esportare file di testo con la definizione delle variabili (comando Esporta).
ADDVARIABLE ; addition of a variable DIM=NONE Epsilon ; dimension of the variable, description Mt.Eps = sqrt(235. * gl.MPa / Mt.fy) ; namevariable = expression ADDIFVARIABLE ; addition of a variable Cs.btw ; namevariable DIM=NONE Rapporto larghezza-spessore per anima ; dimension of the variable, description if( El.CsType = 1 ) then Cs.btw = (Cs.h1 / Cs.tw) ; elseif( El.CsType = 9 ) then Cs.btw = (Cs.h1 / Cs.tw) ; elseif( El.CsType = 11 ) then Cs.btw = (Cs.h - 2*Cs.tf)/Cs.tw ; elseif( El.CsType = 12 ) then Cs.btw = (Cs.h - Cs.tf)/Cs.tw ; elseif( El.CsType = 13) then Cs.btw = max((Cs.h - 2*Cs.tf)/Cs.tw, (Cs.b - 2*Cs.tw)/Cs.tf) ; elseif( El.CsType = 26) then Cs.btw = (max(Cs.h, Cs.b) - 2*Cs.t-2*Cs.r)/Cs.t ; elseif( El.CsType = 35) then Cs.btw = (Cs.h - Cs.tf -Cs.r)/Cs.tw ; else Cs.btw = 999. ; ADDIFVARIABLE ; addition of a variable Cs.ClNw ; namevariable DIM=NONE Classificazione a compressione: anima ; dimension of the variable, description if( Cs.btw < 33. * Mt.Eps ) then Cs.ClNw = 1 ; elseif( Cs.btw < 38. * Mt.Eps ) then Cs.ClNw = 2 ; elseif( Cs.btw < 42. * Mt.Eps ) then Cs.ClNw = 3 ; else Cs.ClNw = 4 ; ADDIFVARIABLE ; addition of a variable Cs.btf ; namevariable DIM=NONE Rapporto larghezza-spessore per ala ; dimension of the variable, description if( El.CsType = 1 ) then Cs.btf = 0.5 * (Cs.b-2.*Cs.r-Cs.tw) / Cs.tf ; elseif( El.CsType = 9 ) then Cs.btf = max(0.5 * (Cs.btop-Cs.tw)/Cs.tftop, 0.5 * (Cs.bbot-Cs.tw)/Cs.tfbot) ; elseif( El.CsType = 11 ) then Cs.btf = (Cs.b - Cs.tw)/Cs.tf ; elseif( El.CsType = 12 ) then Cs.btf = 0.5*(Cs.b - Cs.tw)/Cs.tf ; elseif( El.CsType = 13) then Cs.btf = 1. ; elseif( El.CsType = 26) then Cs.btf = 1 ; elseif( El.CsType = 35) then Cs.btf = 0.5 * (Cs.b -2.*Cs.r - Cs.tw)/Cs.tf ; else Cs.btf = 999. ; ADDIFVARIABLE ; addition of a variable Cs.ClNf ; namevariable DIM=NONE Classificazione a compressione: ala ; dimension of the variable, description if( Cs.btf < 9. * Mt.Eps ) then Cs.ClNf = 1 ; elseif( Cs.btf < 10. * Mt.Eps ) then Cs.ClNf = 2 ; elseif( Cs.btf < 14. * Mt.Eps ) then Cs.ClNf = 3 ; else Cs.ClNf = 4 ; ADDVARIABLE ; addition of a variable DIM=NONE Classificazione in compressione ; dimension of the variable, description Cs.ClN = max(Cs.ClNw, Cs.ClNf) ; namevariable = expression
Le verifiche libere consistono nel controllo di opportune condizioni, che normalmente sono delle disequazioni. Ogni condizione è definita dalle seguenti cose:
1.Una espressione di variabili esistenti L posta a sinistra, il cui valore numerico sia vL. 2.Un operatore che può essere: "<", ">", "<=", ">=", "=", "!=", dove gli ultimi due operatori sono "eguale" o "diverso". 3.Una espressione di variabili esistenti R posta a destra, il cui valore numerico sia vR. 4.Una spiegazione di L ed una di R. 5.Una spiegazione della condizione. 6.Una stringa di testo che dice a quali entità la condizione (verifica) deve essere applicata. 7.Un "tipo" che nell'ambito di Sargon può essere al momento solo "Verifica".
L'esito della verifica è positivo, la verifica è soddisfatta, se la condizione è vera (1); l'esito della verifica è negativo, la verifica non è soddisfatta, se la condizione è falsa (0). E' possibile defnire un coefficiente di sfruttamento. Se la condizione è del tipo vL < vR vL <= vR lo sfruttamento è definito da e= vL/vR Mentre se la condizione è del tipo vL > vR vL >= vR lo sfruttamento è definito da e= vR/vL
se il denominatore è nullo, lo sfruttamento è convenzionalmente posto eguale a 99. Se le condizioni sono "=" o "!=" lo sfruttamento è 0 se la condizione è soddisfatta, 1.00001 se la condizione non è soddisfatta.
Per decidere a quali entità assegnare la verifica, ovvero a quale insieme di entità I, si usa una stringa di testo costituita da più sottostringhe separate da una virgola ",". Le sottostringhe possono essere quelle della seguente tabella:
(*) Una verifica di solito o si applica a un nodo (tipicamente per verifiche di spostamento) o si applica a un elemento. Un gruppo da verificare conterrà quindi solo nodi o solo elementi.
Ad esempio, se si vogliono verificare con una certa condizione tutti gli elementi con sezione trasversale numero 2 e 7, la stringa completa sarà "Cs2,Cs7".
Le condizioni sono verificate per tutte le entità indicate dalla stringa e per tutte le combinazioni di carico. Se e solo se nelle espressioni L o R compaiono variabili con nome:
•El.Ns •El.T2s •El.T3s •El.M1s •El.M2s •El.M3s
allora la verifica sarà eseguita anche (sugli eventuali elementi beam o superelementi presenti nell'insieme I), per tutte le combinazioni e per tutte le sezioni lungo lo sviluppo dell'elemento comprese tra 1 ed NSEZ, dove NSEZ è deciso dal comando Numero Sezioni. In pratica le verifiche sono normalmente riferite all'elemento nel suo complesso. Verifiche sezionali (a livello di singola sezione) devono usare le azioni interne "di sezione" e non quelle globali dell'elemento.
6. LA STRUTTURA DELLE VERIFICHE
Per comprendere come funzionino le verifiche libere è bene avere idea dell'algoritmo che viene eseguito dal programma.
Il primo passo consiste nell'esaminare le condizioni presenti nel modello e capire a quali entità si riferiscono. Per ogni nodo, elemento biella, elemento trave, e superelemento, è così possibile sapere: 1.Se ci siano o no delle verifiche libere da eseguire. 2.Quali esattamente siano le verifiche da eseguire per ciascuna entità.
Stabilito questo il programma parte con le verifiche.
Esegue un ciclo sulle combinazioni e per ogni combinazione: Esegue un ciclo sui nodi. Prima di considerare le verifiche eventualmente esistenti su un nodo, fissa le variabili predefinite Nd. per il nodo e la combinazione Fa un ciclo sulle verifiche associate a quel nodo (se ci sono) e salva i risultati. Esegue la verifica sul nodo. Fine del ciclo sulle verifiche. Fine del ciclo sui nodi Esegue un ciclo sulle bielle. Prima di considerare le verifiche eventualmente esistenti su una biella, fissa le variabili predefinite Mt. Cs. ed El. per la biella la combinazione Fa un ciclo sulle verifiche associate a quella biella (se ci sono)e salva i risultati. Esegue la verifica sull'elemento. Fine del ciclo sulle verifiche Fine del ciclo sulle bielle Esegue un ciclo sulle travi. Prima di considerare le verifiche eventualmente esistenti su una trave, fissa le variabili predefinite Mt. Cs. ed El. per la trave la combinazione Fa un ciclo sulle verifiche associate a quella trave (se ci sono) e salva i risultati Se la verifica è sezionale Esegue un ciclo sulle sezioni Per ogni sezione fissa le variabili El.Ns, El.T2s, El.T3s, El.M1s, El.M2s, El.M3s Esegue la verifica per quella sezione Fine del ciclo sulle sezioni Se la verifica è elementare Esegue la verifica sull'elemento Fine del ciclo sulle verifiche Fine del ciclo sulle travi Esegue un ciclo sui superelementi. Prima di considerare le verifiche eventualmente esistenti su un superelemento, fissa le variabili predefinite Mt. Cs. ed El. per il superelemento e la combinazione Fa un ciclo sulle verifiche associate a quel superelemento (se ci sono) e salva i risultati Se la verifica è sezionale Esegue un ciclo sulle sezioni del superelemento Per ogni sezione fissa le variabili El.Ns, El.T2s, El.T3s, El.M1s, El.M2s, El.M3s Esegue la verifica per quella sezione Fine del ciclo sulle sezioni Se la verifica è elementare Esegue la verifica sull'elemento Fine del ciclo sulle verifiche Fine del ciclo sui superelementi Fine del ciclo sulle combinazioni
Questo schema algoritmico è capace di coprire ogni esigenza di verifica che si possa porre. Al termine della esecuzione, viene salvato un file binario .FCK che contiene i risultati delle verifiche.
Al momento attuale: •Le verifiche vengono eseguite per il combi set attivo. •Le verifiche vengono eseguite per tutte le combinazioni non solo per quelle selezionate. •Per ogni condizione, viene salvato il valore vL ed il valore vR associato alla entità/combinazione/sezione.
7. LE INFORMAZIONI DISPONIBILI DOPO LE VERIFICHE
Dopo aver eseguito le verifiche sono disponibili i seguenti comandi per la restituzione grafica dei risultati, a condizione che sia attiva la norma "FREE" (vedi comando Norma):
•Inviluppo: mappa a colori con gli sfruttamenti di inviluppo tenendo in conto solo le verifiche libere. •Massimo: mappa a colori con i coefficienti di sfruttamento in una certa combinazione, tenendo in conto solo le verifiche libere, •Interroga: interrogazione sui valori esatti dei coefficienti di sfruttamento e su altre informazioni come il numero di condizione di verifica che dà luogo allo sfruttamento, e vL e vR.
Se un elemento non è stato sottoposto ad alcuna condizione di verifica libera, esso è colorato in grigio.
Non esiste alcun tabulato relativo alle verifiche libere. Invece, i report creati con il comando Report, considerano anche i risultati delle verifiche libere se al momento della creazione del report è attiva la norma FREE (comando Seleziona-Norma).
|