• Non ci sono risultati.

Definizione casi di carico-1 del Modello Geometrico su Straus7(API)

CAPITOLO 4 EXCEL MACRO

4.9 Definizione casi di carico-1 del Modello Geometrico su Straus7(API)

A seguito verrà definito il caso di carico 1. Nella concezione del modello, sono state create due celle che indicano il numero del nodo sopra la frattura e di quello sotto la frattura.

Le Celle I26 e I27, rispettivamente UPCRACK e DOWNCRACK, sono i nodi antecedenti alla CRACK-TIP, cioè alla l’apice della frattura.

Seguendo la teoria della VCCT Modificata (Revised), dobbiamo applicare a questi nodi delle forze unitarie opposte sia in direzione x che y per poi trovare gli spostamenti relativi tra essi dopo aver lanciato l’analisi. Questi spostamenti sono necessari per calcolare i coefficienti della matrice di flessibilità, ma questo argomento verrà trattato approfonditamente nel capitolo 5.

Prima istruzione

Si applicano due forze in direzione x, il valore di queste forze è compreso tra la cella AW3 alla cella AW5 per l’upcrack e dalla cella AW7 alla cella AW9 per il downcrack.

CASO 1 - St7SetNodeForce3

FX = 1 N FY = 0 N FZ= 0 N DOWNCRACK FX = -1 N FY = 0 N FZ= 0 N

Tabella 4.41 – Definizione del caso di carico 1

Seconda istruzione Si lancia l’analisi.

In Tabella 4.42 sono stati riportati i valori corrispondenti al tipo di analisi e usati nelle applicazioni e successivamente i vari risolutori disponibili e i modi di risoluzione.

Solvers = 1, si riferisce ad un Risolutore Statico Lineare

Sovers Modes = 3, si riferisce a smBackgroundRun, cioè non viene creata una finestra di dialogo del solutore , il processo termina al completamento. Wait = 1, si definisce la modalità di esecuzione del solutore, “1” sta per btTrue. Quindi possiamo fermare la risoluzione in qualsiasi momento.

RunSolver

Solvers = 1 Solvers Modes = 3

Wait = 1

Capitolo 4 116

Rem Solvers

Public Const stLinearStaticSolver = 1 Public Const stLinearBucklingSolver = 2 Public Const stNonlinearStaticSolver = 3 Public Const stNaturalFrequencySolver = 4 Public Const stHarmonicResponseSolver = 5

Public Const stSpectralResponseSolver = 6 Public Const stLinearTransientDynamicSolver = 7 Public Const stNonlinearTransientDynamicSolver = 8

Public Const stSteadyHeatSolver = 9 Public Const stTransientHeatSolver = 10 Public Const stLoadInfluenceSolver = 11 Public Const stQuasiStaticSolver = 12

Rem Solver Modes

Public Const smNormalRun = 1 , Viene mostrato la finestra di dialogo del solutore, il processo aspetta per una terminazione manuale

Public Const smProgressRun = 2, Viene mostrato una barra di progresso del solutore, il processo termina al completamento

Public Const smBackgroundRun = 3, Non viene creata una finestra di dialogo del solutore , il processo termina al completamento

Public Const smNormalCloseRun = 4, Viene mostrato la finestra di dialogo del solutore, il processo termina al completamento

Wait

Definisce la modalità di esecuzione del solutore. Utilizzando “btTrue” in l’esecuzione del chiamante potrà essere fermata fino a quando la risoluzione non è completa.

Mettendo invece “btFalse” , l’esecuzione del chiamante potrà continuare e la risoluzione funzionerà indipendentemente.

Rem Boolean Types Public Const btFalse = 0

Public Const btTrue = 1

Terza istruzione

Dopo aver lanciato l’analisi, è necessario aprire i risultati. Nel foglio di calcolo preso in esame non risultano casi secondari disponibili, ne esiste solo uno definito con “1”.

Le combinazioni sono definite btFalse, in quanto non ci sono risultati di combinazioni secondari.

St7OpenResultFile(1, nome_analisi, "", 0, 1, 0)

"" definiscono una stringa nulla, che verrà combinata con il file spettrale di default definito dall’utente nel modello di Straus7. Nel modello in esempio

non è stato definito niente, dunque è come se il programma non lo considerasse.

Se invece un utente volesse combinare il file del risultato spettrale, all’interno delle virgolette deve inserire il percorso completo e il nome del file.

Quarta istruzione

Successivamente all’apertura dei risultati, è necessario indicare i nodi dai quali prendere i risultati, che sono l’upcrack e il downcrack.

Il tipo di risultato che viene considerato, dipende dal valore definito nella cella BD2.

Il risultati che possiamo estrapolare sono definiti qui sotto:

Rem Node Result Types Public Const rtNodeDisp = 1

Public Const rtNodeVel = 2 Public Const rtNodeAcc = 3 Public Const rtNodePhase = 4 Public Const rtNodeReact = 5 Public Const rtNodeTemp = 6 Public Const rtNodeFlux = 7 Public Const rtNodeInfluence = 1

Ai fini dell’esempio, è stato scelto il numero 1, in quanto è necessario conoscere gli spostamenti dei nodi.

GetNodeResults

Result Type = 1

Tabella 4.43 – Definizione del tipo di risultato estrapolare dai nodi

Displacement

[0..2] - Traslazione nelle direzioni degli assi 123 per lo specifico UCS. [3..5] - Rotazioni nelle direzioni degli assi 123 per lo specifico UCS.

La subroutine si chiama CASO_1 e si collega alle altre subroutine attraverso il comando di chiamata “Call”. Il flusso logico con cui si avviano le subroutine è:

CASO_1 (Inizio) - Call St7Init - Apertura di un modello già creato

Capitolo 4 118 Call SetNodeForce3_DOWN- Definizione carico forza DOWNCRACK

Call RunSolver- Lancio del risolutore Call OpenResult- Apertura risultati analisi Call GetNodeResult_UP- Lettura risultati Nodo UPCRACK Call GetNodeResult_DOWN- Lettura risultati Nodo DOWNCRACK

CASO_1 (Fine) – Salva e Chiudi il File

SetNodeForce3_UP

Sub SetNodeForce3_UP()

Dim errore As Integer Dim Force(2) As Double For I = 0 To 2

Force(I) = AW(I + 3)

Next I

errore = St7SetNodeForce3(1, N°Nodo UPCRACK, 1, Force(0)) AE12 = errore

SetNodeForce3_DOWN

Sub SetNodeForce3_DOWN()

Dim errore As Integer Dim Force(2) As Double For I = 0 To 2

Force(I) = AW(I + 7)

Next I

errore = St7SetNodeForce3(1, N°Nodo DOWNCRACK, 1, Force(0)) AE13 = errore

RunSolver

Sub RunSolver()

Dim errore As Integer

Solvers = BA2 SolversModes = BA3 Wait = BA4

errore = St7RunSolver(1, Solvers, SolversModes, Wait) AE14 = errore

OpenResult

Sub OpenResult()

Dim errore As Integer

Dim percorso As String, modello As String, nome_analisi As String

percorso = C31 modello = C33

nome_analisi = percorso & modello & ".lsa"

errore = St7OpenResultFile(1, nome_analisi, "", 0, 1, 0) AE15 = errore

GetNodeResult_UP

Sub GetNodeResult_UP()

Dim errore As Integer, ResultType As Long Dim NodeRes(6) As Double

ResultType = BD2

errore = St7GetNodeResult(1, ResultType, N°Nodo UPCRACK, 1, NodeRes(0))

C40 = NodeRes(0) C41= NodeRes(1) C42 = NodeRes(2) C43 = NodeRes(3) C44 = NodeRes(4) C45 = NodeRes(5) GetNodeResult_DOWN Sub GetNodeResult_DOWN()

Dim errore As Integer Dim NodeRes(6) As Double

ResultType = BD2

errore = St7GetNodeResult(1, ResultType, N°Nodo DOWNCRACK, 1, NodeRes(0)) AE17 = errore C47 = NodeRes(0) C48 = NodeRes(1) C49 = NodeRes(2) C50 = NodeRes(3) C51 = NodeRes(4) C52 = NodeRes(5) End Sub

4.10 Definizione casi di carico-2 del Modello Geometrico su