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
- Structural analysis model
❌ 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