Analysis Steps#
This block specifies the analysis details that will be carried out during each iteration.
If treated as a black box, the whole analysis process takes two sets of data as the input, one is the set of general design parameters and the other one is the set of specific values of design variables generated during each iteraion.
The outputs are the quantities specified in the responses
block.
The overall layout is shown in Listing 7.
analysis:
settings:
...
steps:
- step: "step 1"
...
- step: "step 2"
type: "script"
...
- ...
The whole analysis process is composed of a list of steps, which will be executed sequentially. For each step, there are common inputs and special inputs depending on the analysis type.
One common input is the step name:
step: "The first step"
The name can be arbitrary. It will mainly be used in logging messages.
Another one the analysis type:
type: "..."
Supported types are built-in
(default) and script
.
Built-in analysis type (type: "built-in"
)#
This type is mainly for structural analyses such as cross-sectional analysis.
Since different structures could have different treatment in an analysis, this type of analysis step is further classified into subgroups.
iVABS supports two classes of structures: blade (blade
) and cross-section (cs
).
Specifications for the analysis step are provided for each or all structures defined in the design
block or generated during previous steps.
A template is given in Listing 8.
- step: "structural analysis"
structure_class: "blade" # or "cs"
all: # or a specific structure name
settings:
...
inputs:
...
preprocess:
- function: "prep1"
...
postprocess:
- function: "postp1"
...
outputs:
...
settings
specifies configurations for the current analysis step.
inputs
specifies any extra data needed by this step besides those already given at other places in the input file.
preprocess
specifies functions that will process data before running the actual analysis.
postprocess
specifies functions that will process data after running the analysis.
outputs
specifies quantities that will be the output of the analysis and may be inputs to the next step.
Blade class (structure_class: "blade"
)#
This class mainly serves the purpose of generating designs of cross-sections from the blade design.
This is specified by set analysis
to 1
.
The input required is a list of locations along the blade span indicating the cross-sections that will be generated and analyzed.
- step: "generate cs design"
structure_class: "blade"
blade_name:
settings:
analysis: 1
inputs:
stations: [0.1, 0.5, 0.9]
Note
Pay attention to keep the units used here and the those used in the design block consistent.
Cross-section class (structure_class: "cs"
)#
This class is mainly responsible for the cross-sectional analysis such as calculating beam properties and failure analysis.
Analysis of beam properties#
Set analysis
to "h"
to calculate the beam properties.
- step: "calc beam properties"
structure_class: "cs"
cs_name: # or "all"
settings:
analysis: "h"
timeout: 30
...
timeout
under settings
can be used to set a limit to the running time of this step.
The purpose is to kill the process of PreVABS if the code is stuck because of infeasible designs.
Custom functions can be added under preprocess
to process the input before sending to PreVABS.
Analysis of initial failure#
Set analysis
to "fi"
to carry out the failure analysis.
- step: "failure analysis"
structure_class: "cs"
cs_name: # or "all"
settings:
analysis: "fi"
inputs:
load_cases:
...
For this analysis, sectional loads should be provided as the extra inputs (load_cases
).
Currently the accepted form of providing loads is through a load file (data_form: "file"
) and the supported format is CSV (data_format: "csv"
).
Name of the load file is provided at file_name
.
load_cases:
data_form: "file"
data_format: "csv"
file_name: "load.csv"
flight_condition: 1
azimuth: 90
Currently iVABS mainly considers the use cases for helicopter rotors.
Hence, loads can be provided for different flight conditions and azimuth angles.
Desired flight condition and azimuth angles for which the failure analysis will be carried out can be specified at flight_condition
and azimuth
, respectively.
Multiple loading conditions can be given here:
flight_condition: [1, 2, 3]
azimuth: [0, 90, 180, 270]
A sample file storing the sectional loads is shown in Listing 9.
The first row is the column names.
Each set of loads (six components) should have corresponding condition number, azimuth angle (phi
), and spanwise location (r
).
condition,phi,r,Fx,Fy,Fz,Mx,My,Mz
1,0,0.1,1,2,3,4,5,6
1,0,0.5,7,8,9,10,11,12
1,0,0.9,13,14,15,16,17,18
1,90,0.1,19,20,21,22,23,24
1,90,0.5,25,26,27,28,29,30
1,90,0.9,31,32,33,34,35,36
...
Custom analysis type (type: "script"
)#
This type is for executing any custom Python scripts. A common case of using this type is the calculation of objectives and constraints in optimizations, since such calculations are usually problem dependent.
- step: ""
type: "script"
function: "my_function"
args:
- arg1
- arg2
...
kwargs:
kw1: kwarg1
kw2: kwarg2
...
Keyword function
specifies the name of the Python function that will be executed.
All inputs under args
and kwargs
will be passed to *args
and **kwargs
of the function, respectively.
Note
The guide to writing custom Python scripts that can be linked to iVABS can be found in Section Custom script analysis step.