Design of concrete shell structures¶
Motivation¶
About this use case
This use case demonstrates how Caliber can be used to create workflows where different programs need to be run in series and parallel to accumulate results.
Interfaces to other software
Since Caliber is software agnostic, the interfaces towards other software are implemented elsewhere, e.g. in separate Python packages.
Concrete shell structures are recognized by the way they carry the applied loads. Since the loads are carried as a combination of plate bending and transverse shear, and in-plane membrane forces, shell structures have a slightly lower reinforcement demand than other plate structures.
This beneficial combined action makes a shell structure a popular choice for marine structures, e.g. foundations for offshore wind turbines or concrete platforms.
Although the load carrying is beneficial, the design of concrete shell structures is not trivial due to the following main reasons:
The path that the loads follow through the structure is not straight-forward to foresee. Therefore, a concrete shell structure is usually simulated by using sophisticated finite element analyses.
The number of load cases can be significant. And in the case of combined environmental loading from wind and waves, different load cases usually have a significant number of variants. This in turn leads to a significant number of design load combinations, usually in the order of thousands.
Having established the distribution of internal forces for each load combination, the capacity of selected design sections must be checked. Design for either plate bending or membrane forces is straightforward, however design for the combination can be challenging.
The solution consists of the following operations:
Run finite element analyses of separate load cases.
Collect the results from the simulations of the load cases in a database for further processing.
Establish load combinations using a specialized post-processor and design program.
Run design checks using a specialized post-processor and design program.
At least three computer programs need to be run i) the finite element program, ii) the post-processor and design program, and iii) a program that converts results to be read by the post-processor. The computer programs are usually run in batch mode based on predefined input files. The main challenge related to this workflow is:
This is usually accomplished by using traditional
.bat-files. However, due to lack of transparence and flexibility in the.bat-language, this is not an optimal solution.
Solution¶
Instead of adopting a workflow based on .bat-files, an alternative workflow powered by Caliber and Python can be defined. This workflow relies on the use of a branchprocess for running the steps related to each load case. The kwargs of the tasks in the branchprocess are efficiently set up using Python list comprehensions.
The following actions are taken:
Create Python interfaces for running the computer programs in batch mode.
Collect functions in a Caliber Workflow.
The main workflow is shown below. Note that most of the load cases, and some utility tasks, e.g. for cleaning the workspace, are omitted for brevity.
Benefits¶
Some of the benefits from adopting a workflow powered by Python and Caliber are:
Standardized workflow definitions with Caliber and Python interfaces in packages promote collaboration and writing reusable code.
Easy to omit tasks or branches to run only parts of the workflow, e.g. for updating only a subset of the load cases.
Easy to extend with additional Python functionality, e.g. visualizations or optimizations.