Documentazione WeStatiX IT

  1. Home
  2. Docs
  3. Documentazione WeStatiX IT
  4. Esempi & Tutorial
  5. Ponte ad arco in calcestruzzo armato

Ponte ad arco in calcestruzzo armato

Il tuo modello prevede una geometria complessa? Vogliamo mostrati per esempio come abbiamo realizzato il modello di un ponte ad arco in calcestruzzo armato, ispirandoci al ponte Bisantis.

Nota che lanciare la simulazione di questo modello richiede alcune funzionalità di WeStatiX avanzate, che potrebbero non essere incluse nel piano “Free“. Puoi comunque seguire le indicazioni qui sotto per creare un modello più semplice, oppure passare ad un altro piano.

bisantis bridge reinforced concrete

Invece che utilizzare l’interfaccia grafica di WeStatiX potrebbe esserti utile scrivere un file JSON e importarlo.

Di seguito ti spieghiamo brevemente come è strutturato un file di input JSON e come definire la geometria, le proprietà, i vincoli e i carichi del tuo modello ad elementi finiti.


Struttura del file JSON

Non dovrai fare altro che scrivere delle stringhe simili a quelle che trovi qui sotto.

Ogni file si apre con:

   {
  "apiVersion": "0.0.1",

Poi, definisci i nodi. Le informazioni che devi specificare sono naturalmente le stesse che devi fornire quando li crei da interfaccia grafica. Attribuisci quindi un nome e le coordinate x,y e z. Guarda qui sotto per un esempio

  "nodes": [
    {
      "name": "AR1",
      "x": -7,
      "y": -120,
      "z": 0
    },
    {
      .....
    },
    {
      "name": "AR5_O",
      "x": 4,
      "y": 132,
      "z": 0
    }
  ],

Nota che i nodi e gli elementi vengono numerati a partire da 0, e non da 1 come nell’interfaccia grafica!

Quindi se i è il numero che identifica il nodo qui e j è il numero che identifica lo stesso nodo nell’interfaccia grafica, i due sono legati dalla relazione i = j – 1 .

Puoi definire i members specificando i nodi di inizio e fine.

"members": [
    {
      "name": "P1",
      "startNode": 23,
      "endNode": 135
    },
    {
      ....
    },
    {
      "name": "AR5_O",
      "startNode": 211,
      "endNode": 194
    }
  ],

Per creare gli elementi shell, scrivi con ordine i nodi che vanno a definirli.

"shells": [
    {
      "name": "AR_11",
      "nodes": [
        0,
        1,
        22,
        21
      ]
    },
    {
      ...
    },
    {
      "name": "D_5",
      "nodes": [
        199,
        198,
        202,
        203
      ]
    }
  ],

Se importi il file JSON a questo punto, se non hai fatto errori la geometria comparirà nel Viewport 3D.

Ovviamente puoi anche definire i materiali e sezioni! Per rispettare le codifiche interne di WeStatiX però potrebbe essere più conveniente per te definirli da interfaccia grafica.

"materials": [
    {
      "name": "C35_45",
      "materialType": "Standard",
      "materialId": 300048
    }
  ],
  "sections": [
    {
      "name": "AR",
      "sectionType": "Rectangle",
      "material": 0,
      "width": 6,
      "height": 3,
      "holeWidth": 3,
      "holeHeight": 1,
      "fillet": 0
    },
    {
      "name": "P",
      "sectionType": "Rectangle",
      "material": 0,
      "width": 1,
      "height": 2,
      "holeWidth": 0,
      "holeHeight": 0,
      "fillet": 0
    }
  ],

Vincoli ai nodi.

Ricorda che se i è il numero che identifica il nodo qui e j è il numero che identifica lo stesso nodo nell’interfaccia grafica, i due sono legati dalla relazione i = j – 1 .

  "nodeSupports": [
    {
      "name": "FFF0",
      "node": 0,
      "dx": "F",
      "dy": "F",
      "dz": "F",
      "rx": "F",
      "ry": "F",
      "rz": "F"
    },
    {
      ....
    },
    {
      "name": "FFF211",
      "node": 211,
      "dx": "F",
      "dy": "F",
      "dz": "F",
      "rx": "F",
      "ry": "F",
      "rz": "F"
    }
  ],

Definizione proprietà member. Tra le parentesi quadre che succedono “members” puoi elencare gli elementi a cui vuoi attribuire la proprietà.

Ricordati che, se i è il numero che identifica l’elemento qui e j è il numero che identifica lo stesso elemento nell’interfaccia grafica, i due sono legati dalla relazione i = j – 1 .

"memberProperties": [
    {
      "name": "AR",
      "members": [
        0,
        1,
        .,
        .,
        .,
        25
      ],
      "section": 1,
      "rotation": 0,
      "startJointDx": "F",
      "startJointDy": "F",
      "startJointDz": "F",
      "startJointDrx": "F",
      "startJointDry": "F",
      "startJointDrz": "F",
      "endJointDx": "F",
      "endJointDy": "F",
      "endJointDz": "F",
      "endJointDrx": "F",
      "endJointDry": "F",
      "endJointDrz": "F"
    }
  ],

Definizione proprietà Shell

  "shellProperties": [
    {
      "name": "DECK",
      "shells": [
        80,
        .,
        .,
        .,
        139
      ],
      "material": 0,
      "thickness": 2
    },
    {
      "name": "AR",
      "shells": [
        0,
        1,
        .,
        .,
        .,
        79
      ],
      "material": 0,
      "thickness": 3
    }
  ],

Anche per i carichi non devi fare altro che specificare l’elemento a cui si applicano e le varie componenti.

"gravity": {
    "name": "",
    "group": "default",
    "gx": 0,
    "gy": 0,
    "gz": -9.80665
  },
  "shellPressures": [
    {
      "name": "traffic 9",
      "group": "q_traffic",
      "shell": 80,
      "reference": "Global",
      "px": 0,
      "py": 0,
      "pz": -9,
      "mx": 0,
      "my": 0,
      "mz": 0
    },

   ....
    {
      "name": "traffic 9",
      "group": "q_traffic",
      "shell": 103,
      "reference": "Global",
      "px": 0,
      "py": 0,
      "pz": -9,
      "mx": 0,
      "my": 0,
      "mz": 0
    },
    {
      "name": "traffic 2.5",
      "group": "q_traffic",
      "shell": 104,
      "reference": "Global",
      "px": 0,
      "py": 0,
      "pz": -2.5,
      "mx": 0,
      "my": 0,
      "mz": 0
    },
    ....
    {
      "name": "traffic 2.5",
      "group": "q_traffic",
      "shell": 139,
      "reference": "Global",
      "px": 0,
      "py": 0,
      "pz": -2.5,
      "mx": 0,
      "my": 0,
      "mz": 0
    }
  ]
}
}

Hai finito? Importa il file JSON (Import) e lancia l’analisi!