4.4.    Verifiche personalizzate

E’ possibile personalizzare le verifiche svolte dal programma mediante un semplice linguaggio di scrittura delle formule da utilizzare.  Il file di testo contenente le verifiche può essere copiato nella cartella “verification” presente nella directory di installazione del programma e deve avere estensione “.nvv” (si veda ad esempio trusses.nvv).

Questi file possono essere editati con:

- Notepad++ con il settaggio per l’evidenziazione della sintassi che è presente nella cartella “verification” (file NextFEMVerifications.xml);

- Visual Studio Code con il plugin Custom Coloring  per l’evidenziazione della sintassi. I settaggi per questo plugin sono contenuti in NextFEMverification_vsCode.json sempre nella cartella “verification”.

Il motore di verifica supporta l’esecuzione a blocchi di istruzioni. Ogni blocco è delimitato dagli identificatori come nell’esempio seguente e deve essere chiamato con un numero con la virgola (es 0.6).

$$0.6

# questo è un commento

execif(SecType==1,1.0)

$!

Per richiamare i blocchi sono disponibili le seguenti parole chiave:

-    exec(0.6) : esegue il blocco di codice 0.6

-    execif(condizione, 0.6): esegue il blocco 0.6 se la condizione si verifica

-    execwhile(condizione, 0.6): esegue il blocco 0.6 fino a che condizione è vera. La variabile exitdo pari a 1 all’interno del blocco provoca l’uscita dal ciclo. Massimo 10000 cicli.

Le formule possono essere scritte con i seguenti operatori:

Addizione: +

Sottrazione: -

Moltiplicazione: *

Divisione: /

Modulo: %

Esponenziazione: ^

Minore: <

Minore o uguale: <= or

Maggiore: >

Maggiore o uguale: >= or

Uguale (nei confronti): ==

Diverso: != or

Seno: sin

Coseno: cos

Arcoseno: asin

Arcocoseno:acos

Tangente: tan

Cotangente: cot

Arcotangente: atan

Arcocotangente: acot

Logaritmo naturale: loge

Logaritmo in base 10: log10

Logaritmo in base n: logn

Radice quadrata: sqrt

Istruzione condizionale: if(var<var2,1,0)

Operatore booleano: and(cond1,cond2)

Operatore booleano: or(cond1,cond2)

Operatore booleano: not(cond)

Le seguenti keyword non possono essere utilizzate poiché riservate:

-   ID per numero nodo o elemento

-   Case_Time per indicare il caso di carico e il tempo.

 

Le variabili disponibili sono:

-    Gestione unità di misura

o    unitconv: converte le unità di misura. Uso: unitconv(oldUnits,newUnits,Value).
Esempio: Eps=sqrt(235/unitconv(model_S,MPa,fk))
converte fk dalle unità di misura della tensione nel modello  a MPa

o    rcsect: calcola i momenti resistenti di una sezione assegnata, memorizzandoli in Mry e Mrz. Uso: rcsect(N,Myy,Mzz)

o    skipItem: se =1, salta le verifiche successive.  Da utilizzarsi solo nelle verifiche eseguite per casi di carico con sviluppo temporale (es. dinamiche lineari)

o    model_L: segnaposto per le unità di lunghezza del modello

o    model_F: segnaposto per le unità di forza del modello

o    model_FL: segnaposto per le unità di forza per lunghezza del modello

o    model_T: segnaposto per le unità di temperatura del modello

o    model_M: segnaposto per le unità di massa del modello

o    model_S: segnaposto per le unità di tensione/pressione del modello

o    isVarDefined(var): controlla se una variabile è già definita (1) oppure no (0)

o    Halt: ferma l’esecuzione

o    addUtable: aggiunte una tabella utente e restituisce l’ID della tabella. Utilizzo:
addUtable(numColonne, intestazioniColonne, dati per riga incluse intestazioni righe)
Esempio: tid=addUtable(3,1,2,3,100,4,5,6,101,7,8,9,102,10,11,12,103,13,14,15)
aggiunge la seguente tabella:

 

1

2

3

100

4

5

6

101

7

8

9

102

10

11

12

103

13

14

15

o    UtableAt: restituisce il valore in i, j di una tabella. Gli indici i e j partono da 1. Torna 0 in caso di errore o di indici non interi. Utilizzo: UtableAt(ID tabella,i,j)

o    UtableInterpValues: fornisce l’interpolazione bilineare in tabella. Utilizzo: result=UtableInterpValues(ID tabella, valore su intestazione righe, valore su intestazione colonne)
Esempio: res1=UtableInterpValues(tid,101.3,2.5) fornisce il valore 9.4.

o    addRebar: aggiunge barre longitudinali all’elemento corrente.
La funzione torna 0 in caso di errore o se il materiale di progetto indicato non è stato trovato.
Utilizzo: addRebar(zCoord, yCoord, areaBarra, ID materiale di design, iniziaA [0,1), finisceA (0,1].
Esempio: addRebarL(40,40,201.0,2,0,1)
aggiunge una barra di area 201.0 alla posizione 40, 40 dall’angolo in basso a sinistra della sezione, per l’intero elemento.

o    addStirrups: aggiunge le staffe all’elemento corrente.
La funzione torna 0 in caso di errore o se il materiale di progetto indicato non è stato trovato.
Utilizzo: addStirrups(braccia in Y, braccia in Z, area singola barra, interasse, ID materiale di design, iniziaA [0,1), finisceA (0,1] ).
Esempio: addStirrups(2, 2, 50.0, 200, 2, 0,1)
aggiunge staffe a 2 braccia nelle 2 direzioni, ognuna di area 50.0 e interasse 200, per l’intero elemento.

o    cleanRebar: pulisce tutte le barre, incluse staffe, nell’elemento corrente. Tutti i conci di definizione dell’armatura sono eliminati.

o    getBarDiam: fornisce il diametro minimo di una barra longitudinale richiesto per soddisfare una data area. L’output è in mm. Esempio: getBarDiam(2.01) # per un modello in cm, torna 16.

o    getStirrupDiam: fornisce il diametro minimo richiesto per una staffa per soddisfare una data area. L’output è in mm. Esempio: getStirrupDiam(0.5) # per un modello in cm, torna 8.

o    TranslateMomentZZ: fornisce i valori minimi e massimi del momento flettente attorno all’asse locale z per la posizione data, traslati di una quantità delta. Sintassi: TranslateMomentZZ(position, delta). L’argomento position è fornito automaticamente nel set di dati per elementi nella variabile pos. La funzione crea o sovrascrive le variabili Mzzmax e Mzzmin.

o    TranslateMomentYY: fornisce i valori minimi e massimi del momento flettente attorno all’asse locale y per la posizione data, traslati di una quantità delta. Sintassi: TranslateMomentYY(position, delta). L’argomento position è fornito automaticamente nel set di dati per elementi nella variabile pos. La funzione crea o sovrascrive le variabili Myymax e Myymin.

o    FireSectionStrength: carica la mappa termica di una sezione e la usa per calcolare la sua resistenza. È disponibile all’interno del modulo FireSafe. Il nome del file contenente i risultati dell’analisi termica della sezione deve essere memorizzato nelle proprietà dell’elemento alla voce “fireSect”. Sintassi:  FireSectionStrength(station,N,Myy,Mzz). L’argomento station è la stazione di verifica, tipicamente da 1 a 5.

o    round: arrotonda un numero in virgola mobile ad un intero. Es. round(12.6) torna 13.0.

o    ceil: arrotonda per eccesso un numero in virgola mobile. Es. ceil(12.3) torna 13.0.

o    floor: arrotonda per difetto un numero in virgola mobile. Es. floor(12.6) torna 12.0.

 

-    Set di dati generali

o    ServType: indica se la combinazione di servizio corrente è caratteristica (rara) (1), frequente (2) o quasi permanente (3). Il valore è pari a 0 se la combinazione non è di servizio.

o    Seismic: indica se la combinazione corrente è sismica (1) oppure no (0). Il valore di 1 è sempre associato a ServType = 0.

o    time: istante di tempo corrente

-    Set di dati per elementi

o    A: Area

o    Jz: inerzia rispetto all’asse z della sezione

o    Jy: inerzia rispetto all’asse y della sezione

o    Jt: inerzia torsionale

o    D: diametro esterno sezione

o    b: base della sezione per tutte le sezioni generiche

o    h: altezza della sezione per tutte le sezioni generiche

o    tw: spessore dell’anima

o    tf1: spessore della flangia inferiore

o    tf2: spessore della flangia superiore

o    t: spessore delle sezioni per elementi piani

o    N: forza assiale di una trave nella sezione di verifica

o    Vy: Taglio lungo y di una trave nella sezione di verifica

o    Vz: Taglio lungo z di una trave nella sezione di verifica

o    Mt: Momento torcente di una trave nella sezione di verifica

o    Myy: Momento attorno all’asse y di una trave nella sezione di verifica

o    Mzz: Momento attorno all’asse z di una trave nella sezione di verifica

o    rMyIJ: rapporto fra momento Myy all’estremo I e all’estremo J della trave

o    rMzIJ: rapporto fra momento Mzz all’estremo I e all’estremo J della trave

o    MmaxY: momento massimo attorno all’asse y locale per tutto l’elemento o membratura

o    MmaxZ: momento massimo attorno all’asse z locale per tutto l’elemento o membratura

o    MminY: momento minimo attorno all’asse y locale per tutto l’elemento o membratura

o    MminZ: momento minimo attorno all’asse z locale per tutto l’elemento o membratura

o    Em: modulo di Young del materiale

o    Gm: modulo di taglio del materiale

o    NIm: coefficiente di Poisson del materiale

o    fk: resistenza caratteristica del materiale

o    WelZ: modulo resistente in direzione z

o    WelY: modulo resistente in direzione y

o    WplZ: modulo resistente plastico in direzione z

o    WplY: modulo resistente plastico in direzione y

o    iz: raggio d’inerzia per l’asse z

o    iy: raggio d’inerzia per l’asse y

o    imin: raggio d’inerzia minimo

o    SecType: 1=trave/asta, 2=piana, 0=sconosciuta

o    SecBeamType: 0=per punti, 1=rettangolare, 2=circolare, 3=a C, 4=a T, 5=doppio T, 6=a L, 7=rettangolare cava, 8=circolare cava

o    MatType: tipo di materiale. Acciaio 1, Alluminio 2, Calcestruzzo 3, Legno 4, Muratura 5, Fragile in trazione 6, sconosciuto 0.

o    dx: spostamento relativo lungo l’asse della trave

o    dy: deflessione trasversale nella direzione locale y

o    dz: deflessione trasversale nella direzione locale z

o    L0yy: luce libera d’inflessione per flessione attorno all’asse y locale

o    L0zz: luce libera d’inflessione per flessione attorno all’asse z locale

o    L0: massima luce libera di inflessione fra L0yy e L0zz

o    pos: posizione della sezione di verifica dall’origine delle trave, in unità di misura del modello

o    LvyI: luce di taglio misurata da estremo I, rapporto Myy/Vz in stazione 1

o    LvyJ: luce di taglio misurata da estremo J, rapporto Myy/Vz in stazione 5

o    LvzI: luce di taglio misurata da estremo I, rapporto Mzz/Vy in stazione 1

o    LvzJ: luce di taglio misurata da estremo J, rapporto Mzz/Vy in stazione 5

o    fxx: forza in direzione locale x (centroide elemento)

o    fyy: forza in direzione locale y (centroide elemento)

o    fxy: forza in direzione xy (centroide elemento)

o    fzz: forza in direzione locale z (centroide elemento)

o    fxz: forza in direzione xz (centroide elemento)

o    fyz: forza in direzione yz (centroide elemento)

o    mmxx: momento attorno a x locale (centroide elemento)

o    mmyy: momento attorno a y locale (centroide elemento)

o    mmxy: momento attorno a xy  (centroide elemento)

o    mmzz: momento attorno a z locale (centroide elemento)

o    mmxz: momento attorno a xz locale

o    mmyz: momento attorno a yz locale

o    time: tempo al passo corrente

o    temp: temperatura media dell’elemento al passo corrente

o    isWall: se un gruppo wall è definito per l’elemento piano corrente torna 1, altrimenti 0.

o    Column: se l’elemento trave corrente è verticale torna 1, altrimenti 0. Non è definito per altri tipi di elementi.

-    Set di dati per risultati nodali

o    dx: spostamento nodale in direzione X

o    dy: spostamento nodale in direzione Y

o    dz: spostamento nodale in direzione Z

o    rx: rotazione nodale attorno a X

o    ry: rotazione nodale attorno a Y

o    rz: rotazione nodale attorno a Z

o    vx: velocità nodale in direzione X

o    vy: velocità nodale in direzione Y

o    vz: velocità nodale in direzione Z

o    vrx: velocità nodale attorno a X

o    vry: velocità nodale attorno a Y

o    vrz: velocità nodale attorno a Z

o    ax: accelerazione nodale in direzione X

o    ay: accelerazione nodale in direzione Y

o    az: accelerazione nodale in direzione Z

o    arx: accelerazione nodale attorno a X

o    ary: accelerazione nodale attorno a Y

o    arz: accelerazione nodale attorno a Z

o    Rex: reazione nodale in direzione X

o    Rey: reazione nodale in direzione Y

o    Rez: reazione nodale in direzione Z

o    Rerx: reazione nodale attorno a X

o    Rery: reazione nodale attorno a Y

o    Rerz: reazione nodale attorno a Z

o    sxx: stress nodale in direzione X

o    syy: stress nodale in direzione Y

o    sxy: stress di taglio in direzione XY

o    szz: stress nodale in direzione Z

o    sxz: stress di taglio in direzione XZ

o    syx: stress di taglio in direzione YZ

o    fxx: forza nodale in direzione X

o    fyy: forza nodale in direzione Y

o    fxy: forza nodale in direzione XY

o    fzz: forza nodale in direzione Z

o    fxz: forza nodale in direzione XZ

o    fyz: forza nodale in direzione YZ

o    mxx: momento nodale attorno a X

o    myy: momento nodale attorno a Y

o    mxy: momento nodale attorno a XY

o    mzz: momento nodale attorno a Z

o    mxz: momento nodale attorno a XZ

o    myz: momento nodale attorno a YZ

o    time: tempo al passo corrente

o    temp: temperatura nodale al passo corrente.