Table of Contents

Key concepts

ABSTRACT

In this article you'll learn:

  • the high level principles of using SCIA Open API
  • what you can achieve with Open API and what with ADM
  • why you need both

API Architecture

Open API

The SCIA Open API is an external API of SCIA Engineer: it allows your standalone application to access the resources and functionalities of SCIA Engineer, such as opening a project, sending or retrieving a structural model to/from SCIA Engineer, running the calculation, etc... In other words: your application uses SCIA Engineer as a service via Open API.

ADM

Analysis Data Model (ADM), on the other hand, solely stores data. AnalysisModel is the class representing it and it contains both structural analysis model elements, such as materials, loads, beams, etc. as well as the results of the FEM analysis. The first in the StructuralAnalysisModel, the latter in ResultsAnalysisModel.

classDiagram
  direction RL
    class AnalysisModel {
        +ProjectInformation
        +ModelInformation
        +StructuralAnalysisModel
        +ResultsAnalysisModel
        +ValidationResults
        +Warnings
        +Errors
        +Infos
        +Count
        +GetEnumerator()
        +GetValidationMessages()
        +IsModelValid()
        +EnforceModelValidity()
    }

    class StructuralAnalysisModel {
        +SubSoils
        +Count
        +GetEnumerator()
    }

    class ResultsAnalysisModel {
        +Count
        +GetEnumerator()
    }

    %% Interfaces
    class IAnalysisModel {
        <<interface>>
    }
    class IReadOnlyCollection {
        <<interface>>
    }
    class IEnumerable {
        <<interface>>
    }


    %% Relationships
    AnalysisModel "1" o-- "1" StructuralAnalysisModel : contains
    AnalysisModel "1" o-- "1" ResultsAnalysisModel : contains

    StructuralAnalysisModel ..|> IAnalysisModel
    StructuralAnalysisModel ..|> IReadOnlyCollection
    StructuralAnalysisModel ..|> IEnumerable

    ResultsAnalysisModel ..|> IAnalysisModel
    ResultsAnalysisModel ..|> IReadOnlyCollection
    ResultsAnalysisModel ..|> IEnumerable
Note

You must create your structural analysis model with ADM in order to send it to SCIA Engineer.
The results retrieved from SCIA Engineer can be stored in the ADM.

Open API vs. ADM

In a typical case, your application uses both Open API and ADM independently: creates structural analysis model with the first and sends it to SCIA Engineer or read the results from SCIA with the latter.

flowchart TD
    ADM@{ shape: database, label: "ADM"}
    APP@{ label: "Your app"}
    API@{ label: "Open API"}
    M:::internalResource@{ shape: database, label: "Model"}
    R:::internalResource@{ shape: database, label: "Results"}
    S:::internalResource@{ label: "Solver"}
    APP --creates--> ADM
    ADM --queries--> APP
    APP <--> API
    subgraph SCIA Engineer
        API <--query
               create--> M
        API --runs--> S
        API <--reads--> R
    end
    classDef internalResource stroke-dasharray: 9 4
Note

ADM was initiated by SCIA as a model for storing structural analysis data. It is meant to be software-independent and used across many products of ALLPLAN. It is not yet publicly available on the official nuget.org feed, but this may change in the future. For now, the DLLs are shipped with SCIA Engineer.

Warning

ADM is under constant development. Some of the data structures are missing completely (like results in 2D members), some are just missing parameters. Expect the model to be enriched with new entities in the future.

  • ✅ What is ADM

    • Structural analysis model
      • 1D-members (with varying cross sections)
      • 2D-members (surfaces)
      • Curved geometries (arcs, parabolas, splines)
      • Static loads
    • Results of the analysis
      • Internal forces along 1D members
      • Internal forces along edges of 2D members
      • Reactions
    • Model Services
      • Modification
      • Validation
      • Comparison
    • Connectors for data exchange:
      • Bimplus
      • SAF (Excel)
      • JSON
  • ❌ What ADM isn't

    • Ready to use Design Model
    • A cloud platform
    • Current shortcomings
      • No time dependencies
      • No design material properties
      • No openings in girders
      • No results inside plates
    • Nothing related to design/unit checks
      • No reinforcement
      • No tendons, anchors
      • No connections

Why to use ADM

SCIA Open API, compared to ADM, does not offer many data structures to represent structural model elements. In fact, the list is very short and all the classes can be found in the StructureModelDefinition namespace. However, Open API is able to read the model elements of ADM's StructuralAnalysisModel and add them to the Structure - SCIA's representation of structural analysis model.

Example use case

The most common use case is the iterative parametric design approach, where a complex structure is broken down into a couple of parameters which are adjusted in iterations based on results from previous calculation and the calculation is repeated. Here's a typical flow:

flowchart LR
    A@{ shape: circle, label: "Start" }
    B@{ shape: rect, label: "(Re)create\n model" }
    C@{ shape: rect, label: "Run FEM\ncalculation" }
    D@{ shape: rect, label: "Retrieve\nresults" }
    E@{ shape: rect, label: "Perform\nunity checks" }
    F@{ shape: diamond, label: "OK?" }
    Z@{ shape: circle, label: "End" }

    A --> B
    subgraph ADM
      B
    end
    B --> C
    subgraph SCIA Open API
        C --> D
    end
    D --> E
    E --> F
    F --"yes"--> Z
    F --"no"--> B

From the above flow, Open API and ADM can be used to:

  • Create the analytical model -> ADM
  • Run the FEM calculation -> SCIA Open API
  • Retrieve the results -> SCIA Open API
  • Optionally Save the results in ADM