├── .gitignore
├── .idea
├── inspectionProfiles
│ └── profiles_settings.xml
├── misc.xml
├── modules.xml
├── parablade.iml
└── workspace.xml
├── LICENSE
├── README.md
├── RunMe.sh
├── bin
├── MakeBlade.py
├── MatchBlade.py
├── OptimizeBlade.py
└── PlotBlade.py
├── change_log.md
├── docs
├── Axial.md
├── Match.md
├── Mixed.md
├── OptimizationCfg.md
├── Radial.md
├── SU2.md
├── ShapeOptimization.md
└── figures
│ ├── ParaBladeLogo.png
│ ├── annular_channel_3d.png
│ ├── annular_channel_3d.svg
│ ├── axial_turbine_stage.png
│ ├── blade_matching.gif
│ ├── blade_matching_diagram.svg
│ ├── blade_morphing.gif
│ ├── blade_stacking.svg
│ ├── html_readme.txt
│ ├── matching_problem.svg
│ ├── meridional_channel_Bspline.svg
│ ├── meridional_channel_axis.svg
│ ├── parametrization_G1.svg
│ ├── parametrization_G2.svg
│ ├── radial_inflow.png
│ ├── radial_outflow.png
│ ├── sensitivity_cs.svg
│ └── surface_sensitivity_example.png
├── examples
├── arc_length_integration_demo.py
├── basis_polynomials_demo.py
├── bicubic_interpolation_demo.py
├── bilinear_interpolation_demo.py
├── blade_2D_camber_thickness_demo.py
├── blade_2D_connecting_arcs_demo.py
├── bspline_curve_demo.py
├── bspline_surface_demo.py
├── meridional_channel_demo.py
├── nurbs_curve_demo.py
├── nurbs_surface_demo.py
└── transfinite_interpolation_demo.py
├── gitAdd.sh
├── parablade
├── CAD_functions.py
├── __init__.py
├── blade_2D_camber_thickness.py
├── blade_2D_connecting_arcs.py
├── blade_3D.py
├── blade_match.py
├── blade_output.py
├── blade_plot.py
├── common
│ ├── Combine_Meshes.py
│ ├── PlotValidation.py
│ ├── __init__.py
│ ├── common.py
│ └── config.py
├── interpolation_functions.py
└── src_matlab_plot
│ ├── export_fig
│ ├── .gitignore
│ ├── ImageSelection.class
│ ├── ImageSelection.java
│ ├── LICENSE
│ ├── README.md
│ ├── append_pdfs.m
│ ├── copyfig.m
│ ├── crop_borders.m
│ ├── eps2pdf.m
│ ├── export_fig.m
│ ├── fix_lines.m
│ ├── ghostscript.m
│ ├── im2gif.m
│ ├── isolate_axes.m
│ ├── pdf2eps.m
│ ├── pdftops.m
│ ├── print2array.m
│ ├── print2eps.m
│ ├── read_write_entire_textfile.m
│ ├── user_string.m
│ └── using_hg2.m
│ ├── plot_arrow.m
│ ├── plot_blade_coordinates.m
│ ├── plot_blade_normals.m
│ ├── plot_blade_sensitivity.m
│ ├── plot_blade_surface.m
│ ├── plot_hub_surface.m
│ ├── plot_settings.m
│ ├── plot_shroud_surface.m
│ └── src_matlab_plot.m
├── requirements.txt
├── setup.py
└── testcases
├── BladeProfiles
├── 2D_examples
│ ├── compressor_2D
│ │ └── compressor_2D.cfg
│ └── turbine_2D
│ │ └── turbine_2D.cfg
└── 3D_examples
│ ├── axial_turbine_rotor
│ └── axial_turbine_3D.cfg
│ ├── linear_cascade
│ └── linear_cascade.cfg
│ └── radial_turbine_rotor
│ └── radial_turbine_rotor.cfg
├── GradientValidationTestCase
├── Camber_Thickness
│ ├── Axial_stage2D.cfg
│ ├── Optimization.cfg
│ ├── matched_coordinates.csv
│ └── matched_parametrization.cfg
├── Connecting_Arcs
│ ├── Axial_stage2D.cfg
│ ├── Optimization.cfg
│ ├── matched_coordinates.csv
│ └── matched_parametrization.cfg
├── meshout_ffd.su2
└── readme.txt
├── MatchBlades
├── APU_rotor
│ ├── APU_rotor.cfg
│ ├── MoveSurface.txt
│ ├── matched_APU_rotor_camber_thickness
│ │ ├── figures
│ │ │ ├── error_distribution.pdf
│ │ │ ├── view_3D.pdf
│ │ │ ├── view_xR.pdf
│ │ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
│ └── matched_APU_rotor_connecting_arcs
│ │ ├── figures
│ │ ├── error_distribution.pdf
│ │ ├── view_3D.pdf
│ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
├── Aachen_2D
│ ├── Aachen_2D.cfg
│ ├── MoveSurface.txt
│ ├── matched_Aachen_2D_camber_thickness
│ │ ├── figures
│ │ │ ├── error_distribution.pdf
│ │ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
│ ├── matched_Aachen_2D_connecting_arcs
│ │ ├── figures
│ │ │ ├── error_distribution.pdf
│ │ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
│ └── output_matching
│ │ └── matched_parametrization.cfg
├── Aachen_3D
│ ├── Aachen_3D.cfg
│ ├── MoveSurface.txt
│ ├── matched_Aachen_3D_camber_thickness
│ │ ├── figures
│ │ │ ├── error_distribution.pdf
│ │ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ └── matched_parametrization.cfg
│ └── matched_Aachen_3D_connecting_arcs
│ │ ├── figures
│ │ ├── error_distribution.pdf
│ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
├── ImpulseTurbineORC_2D
│ ├── ImpulseTurbine_ORC_2D.cfg
│ ├── MoveSurface.txt
│ ├── matched_ImpulseTurbine_ORC_2D_camber_thickness
│ │ ├── figures
│ │ │ ├── error_distribution.pdf
│ │ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
│ └── matched_ImpulseTurbine_ORC_2D_connecting_arcs
│ │ ├── figures
│ │ ├── error_distribution.pdf
│ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
├── Impulse_2D
│ ├── Impulse_2D.cfg
│ ├── MoveSurface.txt
│ ├── matched_impulse_2D_camber_thickness
│ │ ├── figures
│ │ │ ├── error_distribution.pdf
│ │ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
│ └── matched_impulse_2D_connecting_arcs
│ │ ├── figures
│ │ ├── error_distribution.pdf
│ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
├── LS89_2D
│ ├── .~lock.point_cloud_LS89.txt#
│ ├── LS89_2D.cfg
│ ├── MoveSurface_LS89.txt
│ ├── documentation
│ │ ├── .~lock.LS89_surface_coordinates.ods#
│ │ ├── LS89TestCase.pdf
│ │ ├── LS89_surface_coordinates.ods
│ │ ├── Tech_Note_0174.pdf
│ │ ├── arts1992.pdf
│ │ ├── ijtpp-03-00020.pdf
│ │ └── point_cloud_LS89.txt
│ ├── matched_LS89_2D_camber_thickness
│ │ ├── figures
│ │ │ ├── error_distribution.pdf
│ │ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
│ └── matched_LS89_2D_connecting_arcs
│ │ ├── figures
│ │ ├── error_distribution.pdf
│ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
├── NASA_R67
│ ├── MoveSurface_NASA_R67.txt
│ ├── NASA_R67.cfg
│ ├── matched_NASA_R67_camber_thickness
│ │ ├── figures
│ │ │ ├── error_distribution.pdf
│ │ │ ├── view_3D.pdf
│ │ │ ├── view_xR.pdf
│ │ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
│ └── matched_NASA_R67_connecting_arcs
│ │ ├── figures
│ │ ├── error_distribution.pdf
│ │ ├── view_3D.pdf
│ │ ├── view_xR.pdf
│ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
├── STD10_2D
│ ├── MoveSurface_STD10_2D.txt
│ ├── STD10_2D.cfg
│ ├── matched_STD10_2D_camber_thickness
│ │ ├── figures
│ │ │ ├── error_distribution.pdf
│ │ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
│ └── matched_STD10_2D_connecting_arcs
│ │ ├── figures
│ │ ├── error_distribution.pdf
│ │ └── view_xy.pdf
│ │ ├── matched_coordinates.csv
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
├── prismatic_radial
│ ├── MoveSurface.txt
│ ├── output_matching
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
│ └── prismatic_radial.cfg
├── propeller_blade
│ ├── MoveSurface.txt
│ ├── matched_propeller_3D_coarse_connecting_arcs
│ │ ├── matched_parametrization.cfg
│ │ └── optimization_progress.txt
│ └── propeller_blade.cfg
└── t106eiz_2D
│ ├── MoveSurface.txt
│ ├── matched_t106eiz_2D_camber_thickness
│ ├── figures
│ │ ├── error_distribution.pdf
│ │ └── view_xy.pdf
│ ├── matched_coordinates.csv
│ ├── matched_parametrization.cfg
│ └── optimization_progress.txt
│ ├── matched_t106eiz_2D_connecting_arcs
│ ├── figures
│ │ ├── error_distribution.pdf
│ │ └── view_xy.pdf
│ ├── matched_coordinates.csv
│ ├── matched_parametrization.cfg
│ └── optimization_progress.txt
│ └── t106eiz_2D.cfg
├── MatlabPlots
├── APU_rotor
│ ├── APU_rotor_camber_thickness.cfg
│ └── plot_APU_rotor.m
├── Aachen_3D
│ ├── Aachen_3D_camber_thickness.cfg
│ └── plot_Aachen_3D.m
└── NASA_R67
│ ├── NASA_R67_camber_thickness.cfg
│ └── plot_NASA_R67.m
└── RegressionTests
├── check_gradient_angle_units
├── blade_1.cfg
├── blade_2.cfg
└── check_gradient_angle_units.py
├── influence_design_variables_2D
├── LS89_2D_camber_thickness.cfg
├── LS89_2D_connecting_arcs.cfg
├── demo_2D_design_variables.py
└── output
│ └── coordinates
│ ├── hub_coordinates.csv
│ ├── shroud_coordinates.csv
│ └── surface_coordinates.csv
├── readme.txt
├── regression_continuity
├── regression_blade.cfg
└── regression_continuity.py
├── regression_mesh_generation
├── mesh_generation_regression.py
└── regression_blade.cfg
├── regression_normals
├── normals_convergence_plot.py
├── normals_regression.py
└── regression_blade.cfg
└── regression_sensitivity
├── output
└── coordinates
│ ├── hub_coordinates.csv
│ ├── shroud_coordinates.csv
│ └── surface_coordinates.csv
├── regression_blade.cfg
├── sensitivity_convergence_plot.py
└── sensitivity_regression.py
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # Celery stuff
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # mypy
124 | .mypy_cache/
125 | .dmypy.json
126 | dmypy.json
127 |
128 | # Pyre type checker
129 | .pyre/
130 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/parablade.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/RunMe.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | HOME=$(pwd)
4 |
5 | BLADE=$HOME'/bin/'
6 |
7 | echo "****************************************\n"
8 | echo "********* 3D BLADE PARAMETRIZER ********\n"
9 | echo "****************************************\n\n"
10 | echo "Add Following in your .bashrc\n"
11 | echo "\texport BLADE_HOME="$HOME
12 | echo "\texport BIN="$BLADE
13 | echo "\tPATH=\$PATH:\$BIN\n\n"
14 | echo "*************************************\n\n"
15 |
16 | PYTHON3=$(which python3)
17 |
18 | if [ "$PYTHON3" != "/usr/bin/python3" ]; then
19 | echo "IMPORTANT !!! \n Python3 directory is different than that used in the bin file. \nPlease change the header in bin/MakeBlade.py file to:\n"
20 | echo $PYTHON3
21 | echo "\n"
22 | fi
23 |
--------------------------------------------------------------------------------
/docs/Axial.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/docs/Axial.md
--------------------------------------------------------------------------------
/docs/Match.md:
--------------------------------------------------------------------------------
1 | # ParaBlade
2 |
3 | ## Blade Matching
--------------------------------------------------------------------------------
/docs/Mixed.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/docs/Mixed.md
--------------------------------------------------------------------------------
/docs/OptimizationCfg.md:
--------------------------------------------------------------------------------
1 | ## Optimization Configuration File
2 |
3 | The optimization configuration file (._cfg_) is required to run the Shape Optimization tool, as it serves as an input when
4 | calling the program.
5 |
6 | ### File structure
7 |
8 | The structure of this file is as it follows:
9 |
10 | - `DV_DICTIONARY`: defines the design variables to be used during the optimization. These will be latter cross-checked with
11 | the default DVs defined in the tool, and will differ between 2D and 3D cases.
12 |
13 | For 2D cases, the following DVs can be employed:
14 | `stagger, theta_in, theta_out, wedge_in, wedge_out, radius_in, radius_out, dist_1, dist_2, dist_3, dist_4`
15 |
16 | Similarly, for 3D cases these are the default DVs:
17 | `stagger, theta_in, theta_out, wedge_in, wedge_out, radius_in, radius_out, dist_1, dist_2, dist_3, dist_4, x_leading,
18 | y_leading, z_leading, x_trailing, z_trailing, x_hub, z_hub, x_shroud, z_shroud`
19 |
20 | - `CASCADE_TYPE`: TBD
21 |
22 | - `SU2_CONFIG_FILE`: name of the SU2 configuration (._cfg_) file, which contains all the settings for the CFD calculations.
23 |
24 | - `BLADE_PAR_FILE`: name of the ParaBlade configuration (._cfg_) file, which contains the blade parameterisation information.
25 |
26 | - `BLADE_MATCH_FILE`: name of the blade matching file
27 |
28 | - `N_PROCESSORS`: number of processors to be used for the CFD, adjoint and mesh deformation computations.
29 |
30 | - `N_DIM`: number of dimensions of the problem (either `2` or `3`)
31 |
32 | - `RESTART`: shape optimization restart option. Can be set to `True` or `False`.
33 |
34 | If `True` is activated, the results from a previous run are needed, i.e.
35 | the corresponding `./DESIGN/DSN_**` folders with the automatically-generated by a previous optimization run `.pickle` files.
36 | The tool will automatically read the results from previous steps (stored in the `.pickle` files) and continue with the optimization.
37 |
38 | If `False` is activated, the previous (if existent) `DESIGN` folder will be erased and the optimization will start from scratch.
39 |
40 | - `OPERATION_TYPE`: defines the type of operation to be performed. The supported operations are: `FINITE_DIFFERENCE`,
41 | `SHAPE_OPTIMIZATION`, `DISCRETE_ADJOINT` or `PLOT_VALIDATION`
42 |
43 | - `OBJECTIVE_FUNCTION`: defines the objective function for the shape optimization problem. This is later cross-checked against
44 | the SU2 configuration file to check for consistency. Supported objective functions: `ENTROPY_GENERATION`,
45 | `KINETIC_ENERGY_LOSS` or `TOTAL_PRESSURE_LOSS`
46 |
47 | - `OPT_RELAX_FAC`: relaxation factor to be used during the shape optimization problem (e.g. `0.01`)
48 |
49 | - `OPT_CONSTRAIN`: sets the constraint for the shape optimization problem. Only supports inequality constraints, which
50 | can be defined in the following way: `FLOW_ANGLE_OUT < 70` or `FLOW_ANGLE_OUT > 70`. For unconstrained problems, it must
51 | be set to `NONE`.
52 |
53 | - `FIND_DIFF_STEP`: step to be used in the Finite Differences operation. Defined as a percentage (e.g `1`)
54 |
55 | - `FIND_DIFF_ORDER`: order of the finite differences to be used. It can be either `1` (1st order) or `2` (2nd order)
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/docs/Radial.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/docs/Radial.md
--------------------------------------------------------------------------------
/docs/SU2.md:
--------------------------------------------------------------------------------
1 | # ParaBlade
2 |
3 | ## SU2 Installation
4 |
5 | If you want to know what is SU2. Please go to the link below:
6 |
7 | [](https://su2code.github.io/)
8 | [](https://su2code.github.io/)
9 |
10 | ## Download SU2
11 |
12 | To install SU2 write the following in your terminal
13 | ```
14 | git clone https://github.com/su2code/SU2.git
15 | ```
16 |
17 | The blade parametrization is coupled with the feature_turbomachinery branch of SU2. To change the brach use:
18 | ```
19 | git checkout feature_turbomachinery
20 | ```
21 |
22 | ## Install SU2
23 |
24 | To install SU2 make a file named ```my_preconfig_AD``` in the SU2 folder and add the following in it:
25 | ```
26 | ./preconfigure.py --prefix=
--enable-mpi --with-cc= --with-cxx= --enable-autodiff
27 | ```
28 |
29 | In order to make it executable, open a Terminal where the file that you just created is located and type the following command:
30 | ```
31 | chmod +x my_precofig_AD
32 | ```
33 |
34 | Then run ```./my_preconfig_AD``` in the Terminal and follow the instruction on the screen. Please note that the script
35 | `preconfigure.py` is written in Python 2.7, therefore when executing it you should be pointing to it on the header of the file.
36 |
37 | After, run ```make -j install``` and wait for installation to complete.
38 |
39 | **IMPORTANT!**
40 |
41 | In order to be able to run SU2 using Terminal, you have to update the PATH variable. In order to do so, open your ``.bashrc``
42 | (Linux) or ```.bash_profile``` (macOS) file and add the following lines:
43 |
44 | ```
45 | export SU2_RUN="/path/to/SU2/executables"
46 | export SU2_HOME="/path/to/SU2"
47 | export PATH=$PATH:$SU2_RUN
48 | export PYTHONPATH=$PYTHONPATH:$SU2_RUN
49 | ```
50 |
51 |
52 | ## Check if the installation was successful
53 | Open a new terminal and type ```which SU2_CFD``` and if it is where you installed then the installation was successful.
54 |
55 | ## This is too difficult for me... Can I just do something more easy
56 |
57 | Just downlaod this file and run it in your terminal.
58 |
59 | [RunMeToGetSU2](url)
60 |
61 | **Enjoy Optimizing Turbomachines !!!**
62 |
63 |
64 |
65 |
66 |
67 |
68 | *Author: Nitish Anand, Pablo Garrido de la Serna*
--------------------------------------------------------------------------------
/docs/figures/ParaBladeLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/docs/figures/ParaBladeLogo.png
--------------------------------------------------------------------------------
/docs/figures/annular_channel_3d.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/docs/figures/annular_channel_3d.png
--------------------------------------------------------------------------------
/docs/figures/axial_turbine_stage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/docs/figures/axial_turbine_stage.png
--------------------------------------------------------------------------------
/docs/figures/blade_matching.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/docs/figures/blade_matching.gif
--------------------------------------------------------------------------------
/docs/figures/blade_morphing.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/docs/figures/blade_morphing.gif
--------------------------------------------------------------------------------
/docs/figures/radial_inflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/docs/figures/radial_inflow.png
--------------------------------------------------------------------------------
/docs/figures/radial_outflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/docs/figures/radial_outflow.png
--------------------------------------------------------------------------------
/docs/figures/surface_sensitivity_example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/docs/figures/surface_sensitivity_example.png
--------------------------------------------------------------------------------
/examples/basis_polynomials_demo.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | """ B-Spline basis polynomials demonstration script """
4 |
5 | # -------------------------------------------------------------------------------------------------------------------- #
6 | # Importing general packages
7 | # -------------------------------------------------------------------------------------------------------------------- #
8 | import sys
9 | import os
10 | import numpy as np
11 | import matplotlib.pyplot as plt
12 |
13 |
14 | # -------------------------------------------------------------------------------------------------------------------- #
15 | # Importing user-defined packages
16 | # -------------------------------------------------------------------------------------------------------------------- #
17 | sys.path.append(os.getcwd() + '/../parablade')
18 | from parablade.CAD_functions import BSplineCurve
19 |
20 |
21 | # -------------------------------------------------------------------------------------------------------------------- #
22 | # Compute the basis polynomials
23 | # -------------------------------------------------------------------------------------------------------------------- #
24 | # u-parametrization
25 | Nu = 1000
26 | u = np.linspace(0.00, 1, Nu)
27 |
28 | # Array of control points (inmaterial for the computations)
29 | P = np.zeros((1,5))
30 |
31 | # Maximum index of the control points (counting from zero)
32 | nn = np.shape(P)[1]
33 | n = nn-1
34 |
35 | # Define the order of the basis polynomials
36 | # Linear (p = 1), Quadratic (p = 2), Cubic (p = 3), etc.
37 | # Set p = n (number of control points minus one) to obtain a Bezier
38 | p = 3 # Set at most p = 3 (cubic B-Spline)
39 |
40 | # Definition of the knot vectors (clamped spline)
41 | # p+1 zeros, n minus p equispaced points between 0 and 1, and p+1 ones. In total r+1 points where r=n+p+1
42 | U = np.concatenate((np.zeros(p), np.linspace(0, 1, n - p + 2), np.ones(p)))
43 |
44 |
45 | # Get the basis polynomials
46 | my_BSpline = BSplineCurve(P, p, U)
47 | C = my_BSpline.get_BSplineCurve_value(u)
48 | N = np.real(my_BSpline.get_basis_polynomials(n, p, U, u))
49 |
50 | # -------------------------------------------------------------------------------------------------------------------- #
51 | # Plot the basis polynomials
52 | # -------------------------------------------------------------------------------------------------------------------- #
53 | # Create the figure
54 | fig = plt.figure(figsize=(6, 5))
55 | ax = fig.add_subplot(111)
56 | fontsize = 12
57 | ax.set_xlabel('$u$ parameter', fontsize=fontsize, color='k', labelpad=12)
58 | ax.set_ylabel('Basis polynomial value', fontsize=fontsize, color='k', labelpad=12)
59 | # ax.xaxis.set_major_formatter(mpl.ticker.FormatStrFormatter('%.1f'))
60 | # ax.yaxis.set_major_formatter(mpl.ticker.FormatStrFormatter('%.1f'))
61 | for t in ax.xaxis.get_major_ticks(): t.label.set_fontsize(fontsize)
62 | for t in ax.yaxis.get_major_ticks(): t.label.set_fontsize(fontsize)
63 | # ax.set_xticks([])
64 | # ax.set_yticks([])
65 | # ax.axis('off')
66 |
67 | for i in range(n+1):
68 | line, = ax.plot(u, N[i,:])
69 | line.set_linewidth(1.25)
70 | line.set_linestyle("-")
71 | # line.set_color("k")
72 | line.set_marker(" ")
73 | line.set_markersize(3.5)
74 | line.set_markeredgewidth(1)
75 | line.set_markeredgecolor("k")
76 | line.set_markerfacecolor("w")
77 | line.set_label('index ' + str(i))
78 |
79 | # Set the aspect ratio of the data
80 | # ax.set_aspect(1.0)
81 | ax.set_xlim(0, 1)
82 | ax.set_ylim(0, 1)
83 |
84 | # Create legend
85 | ax.legend(ncol=1, loc='best', fontsize=10, edgecolor='k', framealpha=1.0)
86 |
87 | # Adjust pad
88 | plt.tight_layout(pad=5.0, w_pad=None, h_pad=None)
89 |
90 | # Show the figure
91 | plt.show()
92 |
93 |
94 |
--------------------------------------------------------------------------------
/examples/blade_2D_camber_thickness_demo.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | """ Demonstration of the 2D blade parametrization based on camberline and thickness """
4 |
5 | #----------------------------------------------------------------------------------------------------------------------#
6 | # Importing general packages
7 | #----------------------------------------------------------------------------------------------------------------------#
8 | import sys
9 | import os
10 | import numpy as np
11 | import matplotlib.pyplot as plt
12 |
13 |
14 | #----------------------------------------------------------------------------------------------------------------------#
15 | # Importing user-defined packages
16 | #----------------------------------------------------------------------------------------------------------------------#
17 | sys.path.append(os.getcwd() + '/../parablade')
18 | from parablade.blade_2D_camber_thickness import Blade2DCamberThickness
19 |
20 |
21 | #----------------------------------------------------------------------------------------------------------------------#
22 | # Define the section design variables
23 | #----------------------------------------------------------------------------------------------------------------------#
24 | design_variables = {}
25 | design_variables['stagger'] = -45 * np.pi / 180
26 | design_variables['theta_in'] = +30 * np.pi / 180
27 | design_variables['theta_out'] = -70 * np.pi / 180
28 | design_variables['radius_in'] = 0.05
29 | design_variables['radius_out'] = 0.01
30 | design_variables['dist_in'] = 0.60
31 | design_variables['dist_out'] = 0.5
32 | design_variables['thickness_upper_1'] = 0.15
33 | design_variables['thickness_upper_2'] = 0.20
34 | design_variables['thickness_upper_3'] = 0.13
35 | design_variables['thickness_upper_4'] = 0.07
36 | design_variables['thickness_upper_5'] = 0.03
37 | design_variables['thickness_upper_6'] = 0.02
38 | design_variables['thickness_lower_1'] = 0.15
39 | design_variables['thickness_lower_2'] = 0.20
40 | design_variables['thickness_lower_3'] = 0.13
41 | design_variables['thickness_lower_4'] = 0.07
42 | design_variables['thickness_lower_5'] = 0.03
43 | design_variables['thickness_lower_6'] = 0.02
44 |
45 | # Convert standard-python scalars into singleton numpy arrays
46 | for i in design_variables:
47 | design_variables[i] = np.asarray(design_variables[i])
48 |
49 |
50 | #----------------------------------------------------------------------------------------------------------------------#
51 | # Create the 2D section
52 | #----------------------------------------------------------------------------------------------------------------------#
53 | u = np.linspace(0.00, 1.00, 1000)
54 | my_blade = Blade2DCamberThickness(design_variables)
55 | my_blade.get_section_coordinates(u)
56 | my_blade.check_analytic_curvature()
57 |
58 |
59 | #----------------------------------------------------------------------------------------------------------------------#
60 | # Plot the 2D section
61 | #----------------------------------------------------------------------------------------------------------------------#
62 | # Plot a single blade
63 | my_blade.plot_blade_section(upper_side='yes', upper_side_control_points='yes',
64 | lower_side='yes', lower_side_control_points='yes',
65 | camberline='yes', camberline_control_points='no', camberline_sample_points='no',
66 | leading_edge_radius='no', trailing_edge_radius='no')
67 |
68 | # Plot a cascade of blades
69 | my_blade.plot_blade_cascade()
70 |
71 | # Plot the thickness distribution
72 | my_blade.plot_thickness_distribution()
73 |
74 | # Plot the curvature distribution
75 | my_blade.plot_curvature_distribution()
76 |
77 |
78 | # Show the figure
79 | plt.show()
80 |
81 |
82 |
--------------------------------------------------------------------------------
/examples/blade_2D_connecting_arcs_demo.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | """ Demonstration of the 2D blade parametrization based on connecting arcs """
4 |
5 | #----------------------------------------------------------------------------------------------------------------------#
6 | # Importing general packages
7 | #----------------------------------------------------------------------------------------------------------------------#
8 | import sys
9 | import os
10 | import numpy as np
11 | import matplotlib.pyplot as plt
12 |
13 |
14 | #----------------------------------------------------------------------------------------------------------------------#
15 | # Importing user-defined packages
16 | #----------------------------------------------------------------------------------------------------------------------#
17 | sys.path.append(os.getcwd() + '/../parablade')
18 | from parablade.blade_2D_connecting_arcs import Blade2DConnectingArcs
19 |
20 |
21 | #----------------------------------------------------------------------------------------------------------------------#
22 | # Define the section design variables
23 | #----------------------------------------------------------------------------------------------------------------------#
24 | section_variables = {}
25 | section_variables['stagger'] = -45 * np.pi / 180
26 | section_variables['theta_in'] = +20 * np.pi / 180
27 | section_variables['theta_out'] = -70 * np.pi / 180
28 | section_variables['wedge_in'] = 25 * np.pi / 180
29 | section_variables['wedge_out'] = 6 * np.pi / 180
30 | section_variables['radius_in'] = 0.100
31 | section_variables['radius_out'] = 0.020
32 | section_variables['dist_1'] = 0.35
33 | section_variables['dist_2'] = 0.30
34 | section_variables['dist_3'] = 0.40
35 | section_variables['dist_4'] = 0.70
36 |
37 | # Convert standard-python scalars into singleton numpy arrays
38 | for i in section_variables:
39 | section_variables[i] = np.asarray(section_variables[i])
40 |
41 |
42 | #----------------------------------------------------------------------------------------------------------------------#
43 | # Create the 2D section
44 | #----------------------------------------------------------------------------------------------------------------------#
45 | u = np.linspace(0.00, 1.00, 1000)
46 | my_blade = Blade2DConnectingArcs(section_variables)
47 | my_blade.get_section_coordinates(u)
48 |
49 |
50 | #----------------------------------------------------------------------------------------------------------------------#
51 | # Plot the 2D section
52 | #----------------------------------------------------------------------------------------------------------------------#
53 | # Plot a single blade
54 | my_blade.plot_blade(blade_section='yes', control_points='yes',
55 | leading_edge_radius='no', trailing_edge_radius='no')
56 |
57 | # Plot a cascade of blades
58 | my_blade.plot_blade_cascade()
59 |
60 | # Plot the curvature distribution
61 | my_blade.plot_curvature_distribution()
62 |
63 | # Show the figure
64 | plt.show()
65 |
66 |
67 |
--------------------------------------------------------------------------------
/examples/bspline_curve_demo.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | """ B-Spline curve demonstration script """
4 |
5 | # -------------------------------------------------------------------------------------------------------------------- #
6 | # Importing general packages
7 | # -------------------------------------------------------------------------------------------------------------------- #
8 | import sys
9 | import os
10 | import numpy as np
11 | import matplotlib.pyplot as plt
12 |
13 |
14 | # -------------------------------------------------------------------------------------------------------------------- #
15 | # Importing user-defined packages
16 | # -------------------------------------------------------------------------------------------------------------------- #
17 | sys.path.append(os.getcwd() + '/../parablade')
18 | from parablade.CAD_functions import BSplineCurve
19 |
20 |
21 | # -------------------------------------------------------------------------------------------------------------------- #
22 | # Create B-Spline curve object
23 | # -------------------------------------------------------------------------------------------------------------------- #
24 | # u-parametrization
25 | u = np.linspace(0, 1, 1000)
26 |
27 | # # Array of control points for a 2D case
28 | # P = np.zeros((2,5), dtype=complex)
29 | # P[:, 0] = [0.20, 0.50]
30 | # P[:, 1] = [0.40, 0.70]
31 | # P[:, 2] = [0.80, 0.60]
32 | # P[:, 3] = [0.60, 0.20]
33 | # P[:, 4] = [0.40, 0.20]
34 |
35 | # Array of control points for a 3D case
36 | P = np.zeros((3,5), dtype=complex)
37 | P[:, 0] = [0.20, 0.50, 0.00]
38 | P[:, 1] = [0.40, 0.70, 0.25]
39 | P[:, 2] = [0.80, 0.60, 0.50]
40 | P[:, 3] = [0.80, 0.40, 0.75]
41 | P[:, 4] = [0.40, 0.20, 1.00]
42 |
43 | # Maximum index of the control points (counting from zero)
44 | nn = np.shape(P)[1]
45 | n = nn-1
46 |
47 | # Define the order of the basis polynomials
48 | # Linear (p = 1), Quadratic (p = 2), Cubic (p = 3), etc.
49 | # Set p = n (number of control points minus one) to obtain a Bezier
50 | p = 2
51 |
52 | # Definition of the knot vectors (clamped spline)
53 | # p+1 zeros, n minus p equispaced points between 0 and 1, and p+1 ones. In total r+1 points where r=n+p+1
54 | U = np.concatenate((np.zeros(p), np.linspace(0, 1, n - p + 2), np.ones(p)))
55 |
56 | # Create, evaluate, and plot the spline curve
57 | my_BSpline = BSplineCurve(P, p, U)
58 | C = my_BSpline.get_BSplineCurve_value(u)
59 | options = {'line': 'yes', 'control_points': 'yes', 'order':0}
60 | my_BSpline.plot_BSplineCurve(options)
61 |
62 |
63 | plt.show()
64 |
65 |
--------------------------------------------------------------------------------
/examples/bspline_surface_demo.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | """ B-Spline surface demonstration script """
4 |
5 | # -------------------------------------------------------------------------------------------------------------------- #
6 | # Importing general packages
7 | # -------------------------------------------------------------------------------------------------------------------- #
8 | import sys
9 | import os
10 | import time
11 | import numpy as np
12 | import matplotlib.pyplot as plt
13 |
14 |
15 | # -------------------------------------------------------------------------------------------------------------------- #
16 | # Importing user-defined packages
17 | # -------------------------------------------------------------------------------------------------------------------- #
18 | sys.path.append(os.getcwd() + '/../parablade')
19 | from parablade.CAD_functions import BSplineSurface
20 |
21 |
22 | # -------------------------------------------------------------------------------------------------------------------- #
23 | # Define the B-Spline surface input parameters
24 | # -------------------------------------------------------------------------------------------------------------------- #
25 | # Array of control points
26 | n_dim, n, m = 3, 5, 4
27 | P = np.zeros((n_dim, n, m))
28 |
29 | # First row
30 | P[:, 0, 0] = [0.00, 1.00, 0.00]
31 | P[:, 1, 0] = [1.00, 2.00, 0.00]
32 | P[:, 2, 0] = [2.00, 2.50, 0.00]
33 | P[:, 3, 0] = [3.00, 2.00, 0.00]
34 | P[:, 4, 0] = [4.00, 1.00, 0.00]
35 |
36 | # Second row
37 | P[:, 0, 1] = [0.00, 1.00, 1.00]
38 | P[:, 1, 1] = [1.00, 2.00, 1.00]
39 | P[:, 2, 1] = [2.00, 2.50, 1.00]
40 | P[:, 3, 1] = [3.00, 2.00, 1.00]
41 | P[:, 4, 1] = [4.00, 1.00, 1.00]
42 |
43 | # Third row
44 | P[:, 0, 2] = [0.00, 1.00, 2.00]
45 | P[:, 1, 2] = [1.00, 2.00, 2.00]
46 | P[:, 2, 2] = [2.00, 2.50, 2.00]
47 | P[:, 3, 2] = [3.00, 2.00, 2.00]
48 | P[:, 4, 2] = [4.00, 1.00, 2.00]
49 |
50 | # Fourth row
51 | P[:, 0, 3] = [0.50, 1.00, 3.00]
52 | P[:, 1, 3] = [1.00, 1.50, 3.00]
53 | P[:, 2, 3] = [2.00, 2.00, 3.00]
54 | P[:, 3, 3] = [3.00, 1.50, 3.00]
55 | P[:, 4, 3] = [3.50, 1.00, 3.00]
56 |
57 | # Maximum index of the control points (counting from zero)
58 | n = np.shape(P)[1] - 1
59 | m = np.shape(P)[2] - 1
60 |
61 | # Define the order of the basis polynomials
62 | # Linear (p = 1), Quadratic (p = 2), Cubic (p = 3), etc.
63 | # Set p = n (number of control points minus one) to obtain a Bezier
64 | p = n
65 | q = m
66 |
67 | # Definition of the knot vectors (clamped spline)
68 | # p+1 zeros, n minus p equispaced points between 0 and 1, and p+1 ones. In total r+1 points where r=n+p+1
69 | # q+1 zeros, m minus q equispaced points between 0 and 1, and q+1 ones. In total s+1 points where s=m+q+1
70 | U = np.concatenate((np.zeros(p), np.linspace(0, 1, n - p + 2), np.ones(p)))
71 | V = np.concatenate((np.zeros(q), np.linspace(0, 1, m - q + 2), np.ones(q)))
72 |
73 | # (u,v) parametrization. 1D arrays of (u,v) query points
74 | Nu, Nv = 500, 500
75 | u = np.linspace(0.00, 1.00, Nu)
76 | v = np.linspace(0.00, 1.00, Nv)
77 | [u,v] = np.meshgrid(u, v, indexing='xy')
78 | u = u.flatten()
79 | v = v.flatten()
80 |
81 |
82 | # -------------------------------------------------------------------------------------------------------------------- #
83 | # Create the B-Spline surface
84 | # -------------------------------------------------------------------------------------------------------------------- #
85 | t = time.time()
86 | my_BSpline_surface = BSplineSurface(P, p, q, U, V)
87 | S = my_BSpline_surface.get_BSplineSurface_value(u, v)
88 | print('The elapsed time is %(my_time).3f seconds' % {'my_time': time.time() - t})
89 |
90 |
91 | # -------------------------------------------------------------------------------------------------------------------- #
92 | # Plot the B-Spline surface
93 | # -------------------------------------------------------------------------------------------------------------------- #
94 | options = {'point_cloud': 'no',
95 | 'control_points': 'yes',
96 | 'surface': 'yes',
97 | 'surface_Nu': Nu,
98 | 'surface_Nv': Nv}
99 |
100 | my_BSpline_surface.plot_BSplineSurface(options)
101 |
102 | plt.show()
103 |
104 |
--------------------------------------------------------------------------------
/examples/nurbs_curve_demo.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | """ NURBS curve demonstration script """
4 |
5 | # -------------------------------------------------------------------------------------------------------------------- #
6 | # Importing general packages
7 | # -------------------------------------------------------------------------------------------------------------------- #
8 | import sys
9 | import os
10 | import numpy as np
11 | import matplotlib.pyplot as plt
12 |
13 |
14 | # -------------------------------------------------------------------------------------------------------------------- #
15 | # Importing user-defined packages
16 | # -------------------------------------------------------------------------------------------------------------------- #
17 | sys.path.append(os.getcwd() + '/../parablade')
18 | from parablade.CAD_functions import NurbsCurve
19 |
20 |
21 | # -------------------------------------------------------------------------------------------------------------------- #
22 | # Create B-Spline curve object
23 | # -------------------------------------------------------------------------------------------------------------------- #
24 | # u-parametrization
25 | u = np.linspace(0, 1, 900)
26 |
27 | # Array of control points for a 2D case
28 | P = np.zeros((2,5), dtype=complex)
29 | P[:, 0] = [0.20, 0.50]
30 | P[:, 1] = [0.40, 0.70]
31 | P[:, 2] = [0.80, 0.60]
32 | P[:, 3] = [0.60, 0.20]
33 | P[:, 4] = [0.40, 0.20]
34 |
35 | # # Array of control points for a 3D case
36 | # P = np.zeros((3,5), dtype=complex)
37 | # P[:, 0] = [0.20, 0.50, 0.00]
38 | # P[:, 1] = [0.40, 0.70, 0.25]
39 | # P[:, 2] = [0.80, 0.60, 0.50]
40 | # P[:, 3] = [0.80, 0.40, 0.75]
41 | # P[:, 4] = [0.40, 0.20, 1.00]
42 |
43 | # Maximum index of the control points (counting from zero)
44 | nn = np.shape(P)[1]
45 | n = nn-1
46 |
47 | # Weight of the control points
48 | # W = np.ones((n + 1), dtype=complex)
49 | W = np.asarray([1, 1, 2, 1, 1])
50 |
51 | # Define the order of the basis polynomials
52 | # Linear (p = 1), Quadratic (p = 2), Cubic (p = 3), etc.
53 | # Set p = n (number of control points minus one) to obtain a Bezier
54 | p = 3
55 |
56 | # Definition of the knot vectors (clamped spline)
57 | # p+1 zeros, n minus p equispaced points between 0 and 1, and p+1 ones. In total r+1 points where r=n+p+1
58 | U = np.concatenate((np.zeros(p), np.linspace(0, 1, n - p + 2), np.ones(p)))
59 |
60 | # Create, evaluate, and plot the spline curve
61 | my_NURBS = NurbsCurve(P, W, p, U)
62 | C = my_NURBS.get_NurbsCurve_value(u)
63 | options = {'line': 'yes', 'control_points': 'yes'}
64 | my_NURBS.plot_NurbsCurve(options)
65 |
66 |
67 | plt.show()
68 |
69 |
--------------------------------------------------------------------------------
/gitAdd.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # Only add *.py -- python files
4 | # *.cfg -- test case configuration files
5 | # *.txt -- text files for blade matching
6 | # *.md -- README file
7 | # *.sh -- shell command files
8 |
9 | # Excluded *.pyc -- python binary files
10 | # *.csv -- output files from the code
11 | # *.crv -- turbogrid mesh generation files
12 | # *.plt -- plotting files from tecplot
13 | # *.eps -- image files
14 | # *.png -- image files
15 | # *.pdf -- image files
16 |
17 | git add *.py *.cfg *.md *.txt *.sh *.m
18 |
--------------------------------------------------------------------------------
/parablade/__init__.py:
--------------------------------------------------------------------------------
1 | from .blade_3D import *
2 | from .blade_plot import *
3 | from .blade_output import *
4 | from .blade_match import *
5 | from .blade_2D_connecting_arcs import *
6 | from .blade_2D_camber_thickness import *
7 | from .CAD_functions import *
8 | from .interpolation_functions import *
9 |
--------------------------------------------------------------------------------
/parablade/common/Combine_Meshes.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import numpy as np
4 | import re
5 | import pdb
6 |
7 | def InsertFileData(char,out):
8 | infile=open(char,'r')
9 | for line in infile:
10 | out.write(line)
11 | infile.close()
12 |
13 | def WriteCombinedMesh(DIR,case='turb'):
14 | outfile=open(DIR+'/meshout_stage.su2','w')
15 | outfile.write('NZONE= 2\n')
16 | if case=='turb':
17 | outfile.write('IZONE= 1\n')
18 | InsertFileData(DIR+'/STATOR/meshout_deformed.su2',outfile)
19 | outfile.write('IZONE= 2\n')
20 | InsertFileData(DIR+'/ROTOR/meshout_deformed.su2',outfile)
21 | elif case=='comp':
22 | outfile.write('IZONE= 1\n')
23 | InsertFileData(DIR+'/ROTOR/meshout_deformed.su2',outfile)
24 | outfile.write('IZONE= 2\n')
25 | InsertFileData(DIR+'/STATOR/meshout_deformed.su2',outfile)
26 | outfile.close()
27 |
--------------------------------------------------------------------------------
/parablade/common/__init__.py:
--------------------------------------------------------------------------------
1 | from .common import *
2 | from .Combine_Meshes import *
3 | from .config import *
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/export_fig/.gitignore:
--------------------------------------------------------------------------------
1 | /.ignore
2 | *.txt
3 | *.asv
4 | *~
5 | *.mex*
6 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/export_fig/ImageSelection.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/parablade/src_matlab_plot/export_fig/ImageSelection.class
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/export_fig/ImageSelection.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/parablade/src_matlab_plot/export_fig/ImageSelection.java
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/export_fig/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2014, Oliver J. Woodford, Yair M. Altman
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 |
7 | * Redistributions of source code must retain the above copyright notice, this
8 | list of conditions and the following disclaimer.
9 |
10 | * Redistributions in binary form must reproduce the above copyright notice,
11 | this list of conditions and the following disclaimer in the documentation
12 | and/or other materials provided with the distribution.
13 |
14 | * Neither the name of the {organization} nor the names of its
15 | contributors may be used to endorse or promote products derived from
16 | this software without specific prior written permission.
17 |
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/export_fig/append_pdfs.m:
--------------------------------------------------------------------------------
1 | %APPEND_PDFS Appends/concatenates multiple PDF files
2 | %
3 | % Example:
4 | % append_pdfs(output, input1, input2, ...)
5 | % append_pdfs(output, input_list{:})
6 | % append_pdfs test.pdf temp1.pdf temp2.pdf
7 | %
8 | % This function appends multiple PDF files to an existing PDF file, or
9 | % concatenates them into a PDF file if the output file doesn't yet exist.
10 | %
11 | % This function requires that you have ghostscript installed on your
12 | % system. Ghostscript can be downloaded from: http://www.ghostscript.com
13 | %
14 | % IN:
15 | % output - string of output file name (including the extension, .pdf).
16 | % If it exists it is appended to; if not, it is created.
17 | % input1 - string of an input file name (including the extension, .pdf).
18 | % All input files are appended in order.
19 | % input_list - cell array list of input file name strings. All input
20 | % files are appended in order.
21 |
22 | % Copyright: Oliver Woodford, 2011
23 |
24 | % Thanks to Reinhard Knoll for pointing out that appending multiple pdfs in
25 | % one go is much faster than appending them one at a time.
26 |
27 | % Thanks to Michael Teo for reporting the issue of a too long command line.
28 | % Issue resolved on 5/5/2011, by passing gs a command file.
29 |
30 | % Thanks to Martin Wittmann for pointing out the quality issue when
31 | % appending multiple bitmaps.
32 | % Issue resolved (to best of my ability) 1/6/2011, using the prepress
33 | % setting
34 |
35 | % 26/02/15: If temp dir is not writable, use the output folder for temp
36 | % files when appending (Javier Paredes); sanity check of inputs
37 |
38 | function append_pdfs(varargin)
39 |
40 | if nargin < 2, return; end % sanity check
41 |
42 | % Are we appending or creating a new file
43 | append = exist(varargin{1}, 'file') == 2;
44 | output = [tempname '.pdf'];
45 | try
46 | % Ensure that the temp dir is writable (Javier Paredes 26/2/15)
47 | fid = fopen(output,'w');
48 | fwrite(fid,1);
49 | fclose(fid);
50 | delete(output);
51 | isTempDirOk = true;
52 | catch
53 | % Temp dir is not writable, so use the output folder
54 | [dummy,fname,fext] = fileparts(output); %#ok
55 | fpath = fileparts(varargin{1});
56 | output = fullfile(fpath,[fname fext]);
57 | isTempDirOk = false;
58 | end
59 | if ~append
60 | output = varargin{1};
61 | varargin = varargin(2:end);
62 | end
63 | % Create the command file
64 | if isTempDirOk
65 | cmdfile = [tempname '.txt'];
66 | else
67 | cmdfile = fullfile(fpath,[fname '.txt']);
68 | end
69 | fh = fopen(cmdfile, 'w');
70 | fprintf(fh, '-q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile="%s" -f', output);
71 | fprintf(fh, ' "%s"', varargin{:});
72 | fclose(fh);
73 | % Call ghostscript
74 | ghostscript(['@"' cmdfile '"']);
75 | % Delete the command file
76 | delete(cmdfile);
77 | % Rename the file if needed
78 | if append
79 | movefile(output, varargin{1});
80 | end
81 | end
82 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/export_fig/copyfig.m:
--------------------------------------------------------------------------------
1 | function fh = copyfig(fh)
2 | %COPYFIG Create a copy of a figure, without changing the figure
3 | %
4 | % Examples:
5 | % fh_new = copyfig(fh_old)
6 | %
7 | % This function will create a copy of a figure, but not change the figure,
8 | % as copyobj sometimes does, e.g. by changing legends.
9 | %
10 | % IN:
11 | % fh_old - The handle of the figure to be copied. Default: gcf.
12 | %
13 | % OUT:
14 | % fh_new - The handle of the created figure.
15 |
16 | % Copyright (C) Oliver Woodford 2012
17 |
18 | % 26/02/15: If temp dir is not writable, use the dest folder for temp
19 | % destination files (Javier Paredes)
20 | % 15/04/15: Suppress warnings during copyobj (Dun Kirk comment on FEX page 2013-10-02)
21 |
22 | % Set the default
23 | if nargin == 0
24 | fh = gcf;
25 | end
26 | % Is there a legend?
27 | if isempty(findall(fh, 'Type', 'axes', 'Tag', 'legend'))
28 | % Safe to copy using copyobj
29 | oldWarn = warning('off'); %#ok %Suppress warnings during copyobj (Dun Kirk comment on FEX page 2013-10-02)
30 | fh = copyobj(fh, 0);
31 | warning(oldWarn);
32 | else
33 | % copyobj will change the figure, so save and then load it instead
34 | tmp_nam = [tempname '.fig'];
35 | try
36 | % Ensure that the temp dir is writable (Javier Paredes 26/2/15)
37 | fid = fopen(tmp_nam,'w');
38 | fwrite(fid,1);
39 | fclose(fid);
40 | delete(tmp_nam); % cleanup
41 | catch
42 | % Temp dir is not writable, so use the current folder
43 | [dummy,fname,fext] = fileparts(tmp_nam); %#ok
44 | fpath = pwd;
45 | tmp_nam = fullfile(fpath,[fname fext]);
46 | end
47 | hgsave(fh, tmp_nam);
48 | fh = hgload(tmp_nam);
49 | delete(tmp_nam);
50 | end
51 | end
52 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/export_fig/export_fig.m:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/parablade/src_matlab_plot/export_fig/export_fig.m
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/export_fig/pdf2eps.m:
--------------------------------------------------------------------------------
1 | %PDF2EPS Convert a pdf file to eps format using pdftops
2 | %
3 | % Examples:
4 | % pdf2eps source dest
5 | %
6 | % This function converts a pdf file to eps format.
7 | %
8 | % This function requires that you have pdftops, from the Xpdf suite of
9 | % functions, installed on your system. This can be downloaded from:
10 | % http://www.foolabs.com/xpdf
11 | %
12 | %IN:
13 | % source - filename of the source pdf file to convert. The filename is
14 | % assumed to already have the extension ".pdf".
15 | % dest - filename of the destination eps file. The filename is assumed to
16 | % already have the extension ".eps".
17 |
18 | % Copyright (C) Oliver Woodford 2009-2010
19 |
20 | % Thanks to Aldebaro Klautau for reporting a bug when saving to
21 | % non-existant directories.
22 |
23 | function pdf2eps(source, dest)
24 | % Construct the options string for pdftops
25 | options = ['-q -paper match -eps -level2 "' source '" "' dest '"'];
26 | % Convert to eps using pdftops
27 | [status, message] = pdftops(options);
28 | % Check for error
29 | if status
30 | % Report error
31 | if isempty(message)
32 | error('Unable to generate eps. Check destination directory is writable.');
33 | else
34 | error(message);
35 | end
36 | end
37 | % Fix the DSC error created by pdftops
38 | fid = fopen(dest, 'r+');
39 | if fid == -1
40 | % Cannot open the file
41 | return
42 | end
43 | fgetl(fid); % Get the first line
44 | str = fgetl(fid); % Get the second line
45 | if strcmp(str(1:min(13, end)), '% Produced by')
46 | fseek(fid, -numel(str)-1, 'cof');
47 | fwrite(fid, '%'); % Turn ' ' into '%'
48 | end
49 | fclose(fid);
50 | end
51 |
52 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/export_fig/print2eps.m:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/parablade/src_matlab_plot/export_fig/print2eps.m
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/export_fig/read_write_entire_textfile.m:
--------------------------------------------------------------------------------
1 | %READ_WRITE_ENTIRE_TEXTFILE Read or write a whole text file to/from memory
2 | %
3 | % Read or write an entire text file to/from memory, without leaving the
4 | % file open if an error occurs.
5 | %
6 | % Reading:
7 | % fstrm = read_write_entire_textfile(fname)
8 | % Writing:
9 | % read_write_entire_textfile(fname, fstrm)
10 | %
11 | %IN:
12 | % fname - Pathname of text file to be read in.
13 | % fstrm - String to be written to the file, including carriage returns.
14 | %
15 | %OUT:
16 | % fstrm - String read from the file. If an fstrm input is given the
17 | % output is the same as that input.
18 |
19 | function fstrm = read_write_entire_textfile(fname, fstrm)
20 | modes = {'rt', 'wt'};
21 | writing = nargin > 1;
22 | fh = fopen(fname, modes{1+writing});
23 | if fh == -1
24 | error('Unable to open file %s.', fname);
25 | end
26 | try
27 | if writing
28 | fwrite(fh, fstrm, 'char*1');
29 | else
30 | fstrm = fread(fh, '*char')';
31 | end
32 | catch ex
33 | fclose(fh);
34 | rethrow(ex);
35 | end
36 | fclose(fh);
37 | end
38 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/export_fig/user_string.m:
--------------------------------------------------------------------------------
1 | function string = user_string(string_name, string)
2 | %USER_STRING Get/set a user specific string
3 | %
4 | % Examples:
5 | % string = user_string(string_name)
6 | % isSaved = user_string(string_name, new_string)
7 | %
8 | % Function to get and set a string in a system or user specific file. This
9 | % enables, for example, system specific paths to binaries to be saved.
10 | %
11 | % The specified string will be saved in a file named .txt,
12 | % either in a subfolder named .ignore under this file's folder, or in the
13 | % user's prefdir folder (in case this file's folder is non-writable).
14 | %
15 | % IN:
16 | % string_name - String containing the name of the string required, which
17 | % sets the filename storing the string: .txt
18 | % new_string - The new string to be saved in the .txt file
19 | %
20 | % OUT:
21 | % string - The currently saved string. Default: ''
22 | % isSaved - Boolean indicating whether the save was succesful
23 |
24 | % Copyright (C) Oliver Woodford 2011-2014, Yair Altman 2015-
25 |
26 | % This method of saving paths avoids changing .m files which might be in a
27 | % version control system. Instead it saves the user dependent paths in
28 | % separate files with a .txt extension, which need not be checked in to
29 | % the version control system. Thank you to Jonas Dorn for suggesting this
30 | % approach.
31 |
32 | % 10/01/2013 - Access files in text, not binary mode, as latter can cause
33 | % errors. Thanks to Christian for pointing this out.
34 | % 29/05/2015 - Save file in prefdir if current folder is non-writable (issue #74)
35 |
36 | if ~ischar(string_name)
37 | error('string_name must be a string.');
38 | end
39 | % Create the full filename
40 | fname = [string_name '.txt'];
41 | dname = fullfile(fileparts(mfilename('fullpath')), '.ignore');
42 | file_name = fullfile(dname, fname);
43 | if nargin > 1
44 | % Set string
45 | if ~ischar(string)
46 | error('new_string must be a string.');
47 | end
48 | % Make sure the save directory exists
49 | %dname = fileparts(file_name);
50 | if ~exist(dname, 'dir')
51 | % Create the directory
52 | try
53 | if ~mkdir(dname)
54 | string = false;
55 | return
56 | end
57 | catch
58 | string = false;
59 | return
60 | end
61 | % Make it hidden
62 | try
63 | fileattrib(dname, '+h');
64 | catch
65 | end
66 | end
67 | % Write the file
68 | fid = fopen(file_name, 'wt');
69 | if fid == -1
70 | % file cannot be created/updated - use prefdir if file does not already exist
71 | % (if file exists but is simply not writable, don't create a duplicate in prefdir)
72 | if ~exist(file_name,'file')
73 | file_name = fullfile(prefdir, fname);
74 | fid = fopen(file_name, 'wt');
75 | end
76 | if fid == -1
77 | string = false;
78 | return;
79 | end
80 | end
81 | try
82 | fprintf(fid, '%s', string);
83 | catch
84 | fclose(fid);
85 | string = false;
86 | return
87 | end
88 | fclose(fid);
89 | string = true;
90 | else
91 | % Get string
92 | fid = fopen(file_name, 'rt');
93 | if fid == -1
94 | % file cannot be read, try to read the file in prefdir
95 | file_name = fullfile(prefdir, fname);
96 | fid = fopen(file_name, 'rt');
97 | if fid == -1
98 | string = '';
99 | return
100 | end
101 | end
102 | string = fgetl(fid);
103 | fclose(fid);
104 | end
105 | end
106 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/export_fig/using_hg2.m:
--------------------------------------------------------------------------------
1 | %USING_HG2 Determine if the HG2 graphics engine is used
2 | %
3 | % tf = using_hg2(fig)
4 | %
5 | %IN:
6 | % fig - handle to the figure in question.
7 | %
8 | %OUT:
9 | % tf - boolean indicating whether the HG2 graphics engine is being used
10 | % (true) or not (false).
11 |
12 | % 19/06/2015 - Suppress warning in R2015b; cache result for improved performance
13 | % 06/06/2016 - Fixed issue #156 (bad return value in R2016b)
14 |
15 | function tf = using_hg2(fig)
16 | persistent tf_cached
17 | if isempty(tf_cached)
18 | try
19 | if nargin < 1, fig = figure('visible','off'); end
20 | oldWarn = warning('off','MATLAB:graphicsversion:GraphicsVersionRemoval');
21 | try
22 | % This generates a [supressed] warning in R2015b:
23 | tf = ~graphicsversion(fig, 'handlegraphics');
24 | catch
25 | tf = ~verLessThan('matlab','8.4'); % =R2014b
26 | end
27 | warning(oldWarn);
28 | catch
29 | tf = false;
30 | end
31 | if nargin < 1, delete(fig); end
32 | tf_cached = tf;
33 | else
34 | tf = tf_cached;
35 | end
36 | end
37 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/plot_blade_coordinates.m:
--------------------------------------------------------------------------------
1 | function [] = plot_blade_coordinates()
2 |
3 | % Plots the coordinates of the blade surface as points
4 | file_name = 'output/coordinates/surface_coordinates.csv';
5 | S = dlmread(file_name, ',', 1, 0);
6 |
7 | % Plot the blade coordinates as an scattered plot
8 | plot3(S(:,2),S(:,3),S(:,4), ...
9 | 'Marker', 'o', ...
10 | 'Color', 'k', ...
11 | 'LineStyle', 'none', ...
12 | 'MarkerSize', 1.00, ...
13 | 'MarkerFaceColor', 'k');
14 |
15 |
16 | end
17 |
18 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/plot_blade_normals.m:
--------------------------------------------------------------------------------
1 | function [] = plot_blade_normals(scale)
2 |
3 | % Plot the unitary vectors normal to the blade surface as straigth
4 | % lines whose size is controlled by the input 'scale'
5 |
6 | % Load the surface coordinates
7 | file_name = 'output/sensitivities/grad_stagger_0.csv';
8 | S_blade = dlmread(file_name, ',', 1, 0);
9 | C = S_blade(:,2:4);
10 | N = S_blade(:,8:10);
11 |
12 | % Arrange the order for SU2 convention
13 | C(:,[1,3]) = C(:,[3,1]);
14 | N(:,[1,3]) = N(:,[3,1]);
15 | N = N*scale;
16 |
17 | % Plot the normal vectors
18 | for i = 1:length(S_blade(:,1))
19 |
20 | X = [C(i,1) C(i,1) + N(i,1)];
21 | Y = [C(i,2) C(i,2) + N(i,2)];
22 | Z = [C(i,3) C(i,3) + N(i,3)];
23 |
24 | plot3(X,Y,Z, ...
25 | 'Marker', 'none', ...
26 | 'Color', 'k', ...
27 | 'LineStyle', '-', ...
28 | 'MarkerSize', 1.00, ...
29 | 'MarkerFaceColor', 'b', ...
30 | 'LineWidth', 0.50);
31 |
32 |
33 |
34 | end
35 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/plot_blade_surface.m:
--------------------------------------------------------------------------------
1 | function [] = plot_blade_surface(plot_options)
2 |
3 | % Read the blade surface coordinates
4 | file_name = 'output/coordinates/surface_coordinates.csv';
5 | S_blade = dlmread(file_name, ',', 1, 0);
6 | S_blade(:,[4,2]) = S_blade(:,[2,4]);
7 |
8 | % Load the plotting settings
9 | Nu = plot_options.Nu;
10 | Nv = plot_options.Nv;
11 | N_plot = plot_options.N_plot;
12 | N_total = plot_options.N_total;
13 | my_color = plot_options.color;
14 |
15 | % Blade surface coordinates
16 | [x_blade,y_blade,z_blade] = reshape_data(S_blade,Nu,Nv);
17 |
18 | % Blade hub section coordinates
19 | x_hub = S_blade(1:Nu,2);
20 | y_hub = S_blade(1:Nu,3);
21 | z_hub = S_blade(1:Nu,4);
22 |
23 | % Blade shroud section coordinates
24 | x_shroud = S_blade(end-Nu+1:end,2);
25 | y_shroud = S_blade(end-Nu+1:end,3);
26 | z_shroud = S_blade(end-Nu+1:end,4);
27 |
28 |
29 | % Plot for axisymmetric cascades
30 | if strcmp(plot_options.cascade_type,'axisymmetric') == 1
31 |
32 | % Compute the angle "alpha" spanned by the N blades
33 | theta = atan2(z_blade,-y_blade);
34 | theta_min = min(min(theta));
35 | theta_max = max(max(theta));
36 | theta_corr = (theta_min+theta_max)/2 - pi/2;
37 | theta_arc = 2*pi*N_plot/N_total;
38 | delta_theta = theta_max-theta_min;
39 | if N_plot == 1
40 | alpha = theta_corr;
41 | else
42 | alpha = linspace(theta_corr-theta_arc/2,theta_corr+theta_arc/2,N_plot);
43 | end
44 |
45 | % Draw a portion of the cascade by rotating the blades
46 | for i = 1:N_plot
47 |
48 | % Plot blade surface(s)
49 | X = x_blade;
50 | Y = cos(alpha(i))*y_blade - sin(alpha(i))*z_blade;
51 | Z = sin(alpha(i))*y_blade + cos(alpha(i))*z_blade;
52 | h = surf(X,Y,Z,'FaceColor',my_color,'EdgeColor','none');
53 | h.SpecularStrength = 0.9;
54 | h.SpecularExponent = 25;
55 |
56 | % Plot hub section(s)
57 | X_hub = x_hub;
58 | Y_hub = cos(alpha(i))*y_hub - sin(alpha(i))*z_hub;
59 | Z_hub = sin(alpha(i))*y_hub + cos(alpha(i))*z_hub;
60 | patch('XData',X_hub,'YData',Y_hub,'ZData',Z_hub,'FaceColor',my_color,'EdgeColor','none');
61 |
62 | % Plot shroud section(s)
63 | X_shroud = x_shroud;
64 | Y_shroud = cos(alpha(i))*y_shroud - sin(alpha(i))*z_shroud;
65 | Z_shroud = sin(alpha(i))*y_shroud + cos(alpha(i))*z_shroud;
66 | patch('XData',X_shroud,'YData',Y_shroud,'ZData',Z_shroud,'FaceColor',my_color,'EdgeColor','none');
67 |
68 | end
69 |
70 | end
71 |
72 |
73 | % Plot for linear cascades
74 | if strcmp(plot_options.cascade_type,'linear') == 1
75 |
76 | % Compute the angle "alpha" spanned by the N blades
77 | y_min = min(min(y_blade));
78 | dy = max(max(y_blade))-min(min(y_blade));
79 | spacing = 1.00*dy;
80 |
81 | % Draw a portion of the cascade by rotating the blade
82 | for i = 1:N_plot
83 |
84 | % Plot blade surface(s)
85 | X = x_blade;
86 | Y = y_blade + (i-1)*spacing;
87 | Z = z_blade;
88 | surf(X,Y,Z,'FaceColor',my_color,'EdgeColor','none');
89 |
90 | % Plot hub section(s)
91 | X_hub = x_hub;
92 | Y_hub = y_hub + (i-1)*spacing;
93 | Z_hub = z_hub;
94 | patch('XData',X_hub,'YData',Y_hub,'ZData',Z_hub,'FaceColor',my_color,'EdgeColor','none');
95 |
96 | % Plot shroud section(s)
97 | X_shroud = x_shroud;
98 | Y_shroud = y_shroud + (i-1)*spacing;
99 | Z_shroud = z_shroud;
100 | patch('XData',X_shroud,'YData',Y_shroud,'ZData',Z_shroud,'FaceColor',my_color,'EdgeColor','none');
101 |
102 | end
103 |
104 | end
105 |
106 |
107 | end
108 |
109 |
110 | function [X,Y,Z] = reshape_data(S,Nu,Nv)
111 |
112 | % Preallocate space
113 | X = zeros(Nv,Nu);
114 | Y = zeros(Nv,Nu);
115 | Z = zeros(Nv,Nu);
116 |
117 | % Rename variables
118 | x = S(:,2);
119 | y = S(:,3);
120 | z = S(:,4);
121 |
122 | % Reshape the coordinates into an array
123 | for i = 1:Nv
124 | X(i,:) = x(1+(i-1)*Nu:i*Nu);
125 | Y(i,:) = y(1+(i-1)*Nu:i*Nu);
126 | Z(i,:) = z(1+(i-1)*Nu:i*Nu);
127 | end
128 |
129 | end
130 |
131 |
132 |
133 |
134 |
135 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/plot_hub_surface.m:
--------------------------------------------------------------------------------
1 | function [] = plot_hub_surface(plot_options)
2 |
3 | % Read the hub surface coordinates
4 | file_name = 'output/coordinates/hub_coordinates.csv';
5 | S_hub = dlmread(file_name, ',', 1, 0);
6 | S_hub(:,[4,2]) = S_hub(:,[2,4]);
7 | [N_hub,~] = size(S_hub);
8 |
9 | % Load the plotting settings
10 | N_plot = plot_options.N_plot;
11 | N_total = plot_options.N_total;
12 | my_color = plot_options.color;
13 |
14 | % Hub section coordinates
15 | x_hub = S_hub(1:N_hub,2);
16 | y_hub = S_hub(1:N_hub,3);
17 | z_hub = S_hub(1:N_hub,4);
18 |
19 | % Plot for axisymmetric cascades
20 | if strcmp(plot_options.cascade_type,'axisymmetric') == 1
21 |
22 | % Plot the hub surface
23 | N_theta = 250;
24 | theta = get_theta_angle(N_plot, N_total, N_theta);
25 | X_hub = zeros(N_theta,N_hub);
26 | Y_hub = zeros(N_theta,N_hub);
27 | Z_hub = zeros(N_theta,N_hub);
28 |
29 | for i = 1:N_theta
30 | X_hub(i,:) = x_hub;
31 | Y_hub(i,:) = cos(theta(i))*y_hub - sin(theta(i))*z_hub;
32 | Z_hub(i,:) = sin(theta(i))*y_hub + cos(theta(i))*z_hub;
33 | end
34 |
35 | surf(X_hub,Y_hub,Z_hub,'FaceColor',my_color,'EdgeColor','none');
36 |
37 | end
38 |
39 |
40 | % Plot for linear cascades
41 | if strcmp(plot_options.cascade_type,'linear') == 1
42 |
43 | % Plot the hub surface
44 | Ny = 2;
45 | y_hub = get_y_length(N_plot, Ny);
46 |
47 | X_hub = zeros(Ny,N_hub);
48 | Y_hub = zeros(Ny,N_hub);
49 | Z_hub = zeros(Ny,N_hub);
50 |
51 | for i = 1:Ny
52 | X_hub(i,:) = x_hub;
53 | Y_hub(i,:) = y_hub(i);
54 | Z_hub(i,:) = z_hub;
55 | end
56 |
57 | surf(X_hub,Y_hub,Z_hub,'FaceColor',my_color,'EdgeColor','none');
58 |
59 | end
60 |
61 | end
62 |
63 |
64 | function theta = get_theta_angle(N_plot, N_total, N_theta)
65 |
66 | % Read the blade surface coordinates
67 | file_name = 'output/coordinates/surface_coordinates.csv';
68 | S_blade = dlmread(file_name, ',', 1, 0);
69 | z_blade = S_blade(:,2);
70 | y_blade = S_blade(:,3);
71 |
72 | % Compute the angle "theta" to draw the hub/shroud surfaces
73 | theta = atan2(z_blade,-y_blade);
74 | theta_min = min(min(theta));
75 | theta_max = max(max(theta));
76 | theta_arc = 2*pi*N_plot/N_total;
77 | delta_theta = theta_max-theta_min;
78 | a = 0.75*delta_theta;
79 | theta = linspace(-theta_arc/2-a,theta_arc/2+a,N_theta);
80 |
81 | end
82 |
83 |
84 | function y = get_y_length(N_plot, Ny)
85 |
86 | % Read the blade surface coordinates
87 | file_name = 'output/coordinates/surface_coordinates.csv';
88 | S_blade = dlmread(file_name, ',', 1, 0);
89 | y_blade = S_blade(:,3);
90 |
91 | % Compute the length "y" to draw the hub/shroud surfaces
92 | y_min = min(min(y_blade));
93 | dy = max(max(y_blade))-min(min(y_blade));
94 | spacing = 1.00*dy;
95 | y = linspace(y_min-dy/2, y_min+(N_plot-1)*spacing+5/4*dy,Ny);
96 |
97 | end
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/plot_settings.m:
--------------------------------------------------------------------------------
1 | function plot_settings
2 | %% Printing options
3 | FontName = 'monospace';
4 | FontSize = 9;
5 | AxLineWidth = 0.75;
6 | LineWidth = 1.00;
7 | MarkerSize = 5;
8 |
9 | % Setting LaTeX as text interpreter
10 | set(groot,'DefaultTextInterpreter','latex', ...
11 | 'DefaultAxesTickLabelInterpreter','latex', ...
12 | 'DefaultLegendInterpreter','latex');
13 |
14 | % Setting several default options for the graphics
15 | set(groot, 'DefaultFigureColor','White' , ...
16 | 'DefaultFigurePaperType', 'a4letter', ...
17 | 'DefaultAxesColor', 'white', ...
18 | 'DefaultAxesFontUnits', 'points',...
19 | 'DefaultAxesFontSize', FontSize, ...
20 | 'DefaultAxesFontAngle', 'normal', ...
21 | 'DefaultAxesGridLineStyle', '-', ...
22 | 'DefaultAxesGridAlpha', 0.25, ...
23 | 'DefaultAxesGridColor', [0, 0, 0], ...
24 | 'DefaultAxesInterruptible', 'on', ...
25 | 'DefaultAxesLayer', 'Bottom', ...
26 | 'DefaultAxesNextPlot', 'replace', ...
27 | 'DefaultAxesUnits', 'normalized', ...
28 | 'DefaultAxesXcolor', [0, 0, 0], ...
29 | 'DefaultAxesYcolor', [0, 0, 0], ...
30 | 'DefaultAxesZcolor', [0, 0, 0], ...
31 | 'DefaultAxesVisible', 'on', ...
32 | 'DefaultAxesLineWidth', AxLineWidth, ...
33 | 'DefaultLineLineWidth', LineWidth, ...
34 | 'DefaultLineMarkerSize', MarkerSize, ...
35 | 'DefaultTextColor', [0, 0, 0], ...
36 | 'DefaultTextFontUnits', 'Points', ...
37 | 'DefaultTextFontName', FontName, ... % Not applied when LaTeX is used
38 | 'DefaultAxesFontName', FontName, ... % Not applied when LaTeX is used
39 | 'DefaultTextFontSize', FontSize, ...
40 | 'DefaultTextVerticalAlignment', 'middle', ...
41 | 'DefaultTextHorizontalAlignment', 'left')
42 |
43 | % Setting a position for the figure
44 | set(groot,'DefaultFigurePosition', [360 198 560 420]);
45 |
46 | end
47 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/plot_shroud_surface.m:
--------------------------------------------------------------------------------
1 | function [] = plot_shroud_surface(plot_options)
2 |
3 | % Read the shroud surface coordinates
4 | file_name = 'output/coordinates/shroud_coordinates.csv';
5 | S_shroud = dlmread(file_name, ',', 1, 0);
6 | S_shroud(:,[4,2]) = S_shroud(:,[2,4]);
7 | [N_shroud,~] = size(S_shroud);
8 |
9 | % Load the plotting settings
10 | N_plot = plot_options.N_plot;
11 | N_total = plot_options.N_total;
12 | my_color = plot_options.color;
13 |
14 | % shroud section coordinates
15 | x_shroud = S_shroud(1:N_shroud,2);
16 | y_shroud = S_shroud(1:N_shroud,3);
17 | z_shroud = S_shroud(1:N_shroud,4);
18 |
19 | % Plot for axisymmetric cascades
20 | if strcmp(plot_options.cascade_type,'axisymmetric') == 1
21 |
22 | % Plot the shroud surface
23 | N_theta = 250;
24 | theta = get_theta_angle(N_plot, N_total, N_theta);
25 | X_shroud = zeros(N_theta,N_shroud);
26 | Y_shroud = zeros(N_theta,N_shroud);
27 | Z_shroud = zeros(N_theta,N_shroud);
28 |
29 | for i = 1:N_theta
30 | X_shroud(i,:) = x_shroud;
31 | Y_shroud(i,:) = cos(theta(i))*y_shroud - sin(theta(i))*z_shroud;
32 | Z_shroud(i,:) = sin(theta(i))*y_shroud + cos(theta(i))*z_shroud;
33 | end
34 |
35 | surf(X_shroud,Y_shroud,Z_shroud,'FaceColor',my_color,'EdgeColor','none');
36 |
37 | end
38 |
39 |
40 | % Plot for linear cascades
41 | if strcmp(plot_options.cascade_type,'linear') == 1
42 |
43 | % Plot the shroud surface
44 | Ny = 2;
45 | y_shroud = get_y_length(N_plot, Ny);
46 |
47 | X_shroud = zeros(Ny,N_shroud);
48 | Y_shroud = zeros(Ny,N_shroud);
49 | Z_shroud = zeros(Ny,N_shroud);
50 |
51 | for i = 1:Ny
52 | X_shroud(i,:) = x_shroud;
53 | Y_shroud(i,:) = y_shroud(i);
54 | Z_shroud(i,:) = z_shroud;
55 | end
56 |
57 | surf(X_shroud,Y_shroud,Z_shroud,'FaceColor',my_color,'EdgeColor','none');
58 |
59 | end
60 |
61 | end
62 |
63 |
64 | function theta = get_theta_angle(N_plot, N_total, N_theta)
65 |
66 | % Read the blade surface coordinates
67 | file_name = 'output/coordinates/surface_coordinates.csv';
68 | S_blade = dlmread(file_name, ',', 1, 0);
69 | z_blade = S_blade(:,2);
70 | y_blade = S_blade(:,3);
71 |
72 | % Compute the angle "theta" to draw the shroud/shroud surfaces
73 | theta = atan2(z_blade,-y_blade);
74 | theta_min = min(min(theta));
75 | theta_max = max(max(theta));
76 | theta_arc = 2*pi*N_plot/N_total;
77 | delta_theta = theta_max-theta_min;
78 | a = 0.75*delta_theta;
79 | theta = linspace(-theta_arc/2-a,theta_arc/2+a,N_theta);
80 |
81 | end
82 |
83 |
84 | function y = get_y_length(N_plot, Ny)
85 |
86 | % Read the blade surface coordinates
87 | file_name = 'output/coordinates/surface_coordinates.csv';
88 | S_blade = dlmread(file_name, ',', 1, 0);
89 | y_blade = S_blade(:,3);
90 |
91 | % Compute the length "y" to draw the hub/shroud surfaces
92 | y_min = min(min(y_blade));
93 | dy = max(max(y_blade))-min(min(y_blade));
94 | spacing = 1.00*dy;
95 | y = linspace(y_min-dy/2, y_min+(N_plot-1)*spacing+5/4*dy,Ny);
96 |
97 | end
98 |
99 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/parablade/src_matlab_plot/src_matlab_plot.m:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/parablade/src_matlab_plot/src_matlab_plot.m
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | numpy
2 | matplotlib
3 | scipy
4 | slackclient
5 | pytecplot
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | from setuptools import setup
2 |
3 | setup(
4 | name='parablade',
5 | version='1.0',
6 | description='Open-source Python library for the parametrization of turbomachinery blades design using gradient-based optimization algorithms',
7 | author='',
8 | author_email='',
9 | packages=['parablade','parablade.common'],
10 | install_requires=['numpy','matplotlib','scipy','slackclient','pytecplot'],
11 | )
12 |
--------------------------------------------------------------------------------
/testcases/BladeProfiles/2D_examples/compressor_2D/compressor_2D.cfg:
--------------------------------------------------------------------------------
1 | # ---------------------------------------------------------------------------- #
2 | # ---------------------- ParaBlade configuration file ------------------------ #
3 | # ---------------------------------------------------------------------------- #
4 |
5 | # Number of Dimensions :: 2 :: 3
6 | # Set NDIM = 2 for two-dimensional problems
7 | # Set NDIM = 3 for three-dimensional problems
8 | NDIM = 2
9 |
10 | # ---------------------------------------------------------------------------- #
11 | # ---------------------------------------------------------------------------- #
12 |
13 | # Number of Blades OPTIONS :: integer
14 | N_BLADES = 50
15 |
16 | # ---------------------------------------------------------------------------- #
17 | # ---------------------------------------------------------------------------- #
18 |
19 | # Number of blade sections used to create the blade OPTIONS :: integer
20 | # The value must be at least 2 (even for 2D cases)
21 | # Increase this value depending on the span-variation complexity of the blade
22 | N_SECTIONS = 2
23 |
24 | # ---------------------------------------------------------------------------- #
25 | # ---------------------------------------------------------------------------- #
26 |
27 | # Type of cascade OPTIONS :: LINEAR :: ANNULAR
28 | # Set CASCADE_TYPE = ANNULAR for an a annular cascade of blades (axisymmetric)
29 | # Set CASCADE_TYPE = LINEAR for a linear cascade of blades
30 | CASCADE_TYPE = LINEAR
31 |
32 | # ---------------------------------------------------------------------------- #
33 | # ---------------------------------------------------------------------------- #
34 |
35 | # Design variables for the meridional channel
36 | # Set a straight horizontal line for axial flow cascades
37 | # Set a straight vertical line for radial flow cascades
38 | # Set an arbitrary variation for mixed flow cascade
39 | x_leading = 0.00
40 | y_leading = 0.00
41 | z_leading = 1.00, 2.00
42 | x_trailing = 1.00
43 | z_trailing = 1.00, 2.00
44 | x_hub =
45 | z_hub =
46 | x_shroud =
47 | z_shroud =
48 |
49 | # ---------------------------------------------------------------------------- #
50 | # ---------------------------------------------------------------------------- #
51 |
52 | # Design variables for a 2D section parametrization based on connecting arcs.
53 | PARAMETRIZATION_TYPE = CONNECTING_ARCS
54 | stagger = 45
55 | theta_in = 50
56 | theta_out = 30
57 | wedge_in = 15
58 | wedge_out = 3
59 | radius_in = 0.015
60 | radius_out = 0.005
61 | dist_1 = 0.3
62 | dist_2 = 0.10
63 | dist_3 = 0.30
64 | dist_4 = 0.30
65 |
66 | # # Design variables for a 2D section parametrization based camberline/thickness
67 | # PARAMETRIZATION_TYPE = CAMBER_THICKNESS
68 | # stagger =
69 | # theta_in =
70 | # theta_out =
71 | # radius_in =
72 | # radius_out =
73 | # dist_in =
74 | # dist_out =
75 | # thickness_upper_1 =
76 | # thickness_upper_2 =
77 | # thickness_upper_3 =
78 | # thickness_upper_4 =
79 | # thickness_upper_5 =
80 | # thickness_upper_6 =
81 | # thickness_lower_1 =
82 | # thickness_lower_2 =
83 | # thickness_lower_3 =
84 | # thickness_lower_4 =
85 | # thickness_lower_5 =
86 | # thickness_lower_6 =
87 |
88 |
89 | # ---------------------------------------------------------------------------- #
90 | # ---------------------------------------------------------------------------- #
91 |
92 | # Plot format OPTION :: TECPLOT :: MATPLOTLIB :: INTERACTIVE
93 | PLOT_FORMAT = MATPLOTLIB
94 |
95 | # ---------------------------------------------------------------------------- #
96 | # ---------------------------------------------------------------------------- #
97 |
98 | # Operation type OPTION :: GEOMETRY :: SENSITIVITY
99 | OPERATION_TYPE = SENSITIVITY
100 |
101 | # ---------------------------------------------------------------------------- #
102 | # ---------------------------------------------------------------------------- #
103 |
104 | # File with the coordinates of the blade surface
105 | PRESCRIBED_BLADE_FILENAME =
106 |
107 | # ---------------------------------------------------------------------------- #
108 | # ---------------------------------------------------------------------------- #
109 |
--------------------------------------------------------------------------------
/testcases/BladeProfiles/2D_examples/turbine_2D/turbine_2D.cfg:
--------------------------------------------------------------------------------
1 | # ---------------------------------------------------------------------------- #
2 | # ---------------------- ParaBlade configuration file ------------------------ #
3 | # ---------------------------------------------------------------------------- #
4 |
5 | # Number of Dimensions :: 2 :: 3
6 | # Set NDIM = 2 for two-dimensional problems
7 | # Set NDIM = 3 for three-dimensional problems
8 | NDIM = 2
9 |
10 | # ---------------------------------------------------------------------------- #
11 | # ---------------------------------------------------------------------------- #
12 |
13 | # Number of Blades OPTIONS :: integer
14 | N_BLADES = 50
15 |
16 | # ---------------------------------------------------------------------------- #
17 | # ---------------------------------------------------------------------------- #
18 |
19 | # Number of blade sections used to create the blade OPTIONS :: integer
20 | # The value must be at least 2 (even for 2D cases)
21 | # Increase this value depending on the span-variation complexity of the blade
22 | N_SECTIONS = 2
23 |
24 | # ---------------------------------------------------------------------------- #
25 | # ---------------------------------------------------------------------------- #
26 |
27 | # Type of cascade OPTIONS :: LINEAR :: ANNULAR
28 | # Set CASCADE_TYPE = ANNULAR for an a annular cascade of blades (axisymmetric)
29 | # Set CASCADE_TYPE = LINEAR for a linear cascade of blades
30 | CASCADE_TYPE = LINEAR
31 |
32 | # ---------------------------------------------------------------------------- #
33 | # ---------------------------------------------------------------------------- #
34 |
35 | # Design variables for the meridional channel
36 | # Set a straight horizontal line for axial flow cascades
37 | # Set a straight vertical line for radial flow cascades
38 | # Set an arbitrary variation for mixed flow cascade
39 | x_leading = 0.00
40 | y_leading = 0.00
41 | z_leading = 1.00, 2.00
42 | x_trailing = 1.00
43 | z_trailing = 1.00, 2.00
44 | x_hub =
45 | z_hub =
46 | x_shroud =
47 | z_shroud =
48 |
49 | # ---------------------------------------------------------------------------- #
50 | # ---------------------------------------------------------------------------- #
51 |
52 | # Design variables for a 2D section parametrization based on connecting arcs.
53 | PARAMETRIZATION_TYPE = CONNECTING_ARCS
54 | stagger = -40
55 | theta_in = 00
56 | theta_out = -70
57 | wedge_in = 25
58 | wedge_out = 5
59 | radius_in = 0.15
60 | radius_out = 0.02
61 | dist_1 = 0.35
62 | dist_2 = 0.40
63 | dist_3 = 0.40
64 | dist_4 = 0.40
65 |
66 |
67 | # # Design variables for a 2D section parametrization based camberline/thickness
68 | # PARAMETRIZATION_TYPE = CAMBER_THICKNESS
69 | # stagger =
70 | # theta_in =
71 | # theta_out =
72 | # radius_in =
73 | # radius_out =
74 | # dist_in =
75 | # dist_out =
76 | # thickness_upper_1 =
77 | # thickness_upper_2 =
78 | # thickness_upper_3 =
79 | # thickness_upper_4 =
80 | # thickness_upper_5 =
81 | # thickness_upper_6 =
82 | # thickness_lower_1 =
83 | # thickness_lower_2 =
84 | # thickness_lower_3 =
85 | # thickness_lower_4 =
86 | # thickness_lower_5 =
87 | # thickness_lower_6 =
88 |
89 |
90 | # ---------------------------------------------------------------------------- #
91 | # ---------------------------------------------------------------------------- #
92 |
93 | # Plot format OPTION :: TECPLOT :: MATPLOTLIB :: INTERACTIVE
94 | PLOT_FORMAT = INTERACTIVE
95 |
96 | # ---------------------------------------------------------------------------- #
97 | # ---------------------------------------------------------------------------- #
98 |
99 | # Operation type OPTION :: GEOMETRY :: SENSITIVITY
100 | OPERATION_TYPE = GEOMETRY
101 |
102 | # ---------------------------------------------------------------------------- #
103 | # ---------------------------------------------------------------------------- #
104 |
105 | # File with the coordinates of the blade surface
106 | PRESCRIBED_BLADE_FILENAME =
107 |
108 | # ---------------------------------------------------------------------------- #
109 | # ---------------------------------------------------------------------------- #
110 |
--------------------------------------------------------------------------------
/testcases/BladeProfiles/3D_examples/radial_turbine_rotor/radial_turbine_rotor.cfg:
--------------------------------------------------------------------------------
1 | # ---------------------------------------------------------------------------- #
2 | # ---------------------- ParaBlade configuration file ------------------------ #
3 | # ---------------------------------------------------------------------------- #
4 |
5 | # Number of Dimensions :: 2 :: 3
6 | # Set NDIM = 2 for two-dimensional problems
7 | # Set NDIM = 3 for three-dimensional problems
8 | NDIM = 3
9 |
10 | # ---------------------------------------------------------------------------- #
11 | # ---------------------------------------------------------------------------- #
12 |
13 | # Number of Blades OPTIONS :: integer
14 | N_BLADES = 50
15 |
16 | # ---------------------------------------------------------------------------- #
17 | # ---------------------------------------------------------------------------- #
18 |
19 | # Number of blade sections used to create the blade OPTIONS :: integer
20 | # The value must be at least 2 (even for 2D cases)
21 | # Increase this value depending on the span-variation complexity of the blade
22 | N_SECTIONS = 10
23 |
24 | # ---------------------------------------------------------------------------- #
25 | # ---------------------------------------------------------------------------- #
26 |
27 | # Type of cascade OPTIONS :: LINEAR :: ANNULAR
28 | # Set CASCADE_TYPE = ANNULAR for an a annular cascade of blades (axisymmetric)
29 | # Set CASCADE_TYPE = LINEAR for a linear cascade of blades
30 | CASCADE_TYPE = ANNULAR
31 |
32 | # ---------------------------------------------------------------------------- #
33 | # ---------------------------------------------------------------------------- #
34 |
35 | # Design variables for the meridional channel
36 | # Set a straight horizontal line for axial flow cascades
37 | # Set a straight vertical line for radial flow cascades
38 | # Set an arbitrary variation for mixed flow cascade
39 | x_leading = 0.00, 0.08
40 | y_leading = 0.00,
41 | z_leading = 2.00, 2.00
42 | x_trailing = 0.60, 0.60
43 | z_trailing = 1.20, 1.60
44 | x_hub = 0.00
45 | z_hub = 1.20
46 | x_shroud = 0.08
47 | z_shroud = 1.50
48 |
49 | # ---------------------------------------------------------------------------- #
50 | # ---------------------------------------------------------------------------- #
51 |
52 | # Design variables for a 2D section parametrization based on connecting arcs.
53 | PARAMETRIZATION_TYPE = CONNECTING_ARCS
54 | stagger = 25, 34
55 | theta_in = 0
56 | theta_out = 60
57 | wedge_in = 5
58 | wedge_out = 5
59 | radius_in = 0.02, 0.02
60 | radius_out = 0.02
61 | dist_1 = 0.35, 0.40
62 | dist_2 = 0.30, 0.40
63 | dist_3 = 0.30, 0.40
64 | dist_4 = 0.30, 0.40
65 |
66 |
67 | # # Design variables for a 2D section parametrization based camberline/thickness
68 | # PARAMETRIZATION_TYPE = CAMBER_THICKNESS
69 | # stagger =
70 | # theta_in =
71 | # theta_out =
72 | # radius_in =
73 | # radius_out =
74 | # dist_in =
75 | # dist_out =
76 | # thickness_upper_1 =
77 | # thickness_upper_2 =
78 | # thickness_upper_3 =
79 | # thickness_upper_4 =
80 | # thickness_upper_5 =
81 | # thickness_upper_6 =
82 | # thickness_lower_1 =
83 | # thickness_lower_2 =
84 | # thickness_lower_3 =
85 | # thickness_lower_4 =
86 | # thickness_lower_5 =
87 | # thickness_lower_6 =
88 |
89 |
90 | # ---------------------------------------------------------------------------- #
91 | # ---------------------------------------------------------------------------- #
92 |
93 | # Plot format OPTION :: TECPLOT :: MATPLOTLIB :: INTERACTIVE
94 | PLOT_FORMAT = MATPLOTLIB
95 |
96 | # ---------------------------------------------------------------------------- #
97 | # ---------------------------------------------------------------------------- #
98 |
99 | # Operation type OPTION :: GEOMETRY :: SENSITIVITY
100 | OPERATION_TYPE = GEOMETRY
101 |
102 | # ---------------------------------------------------------------------------- #
103 | # ---------------------------------------------------------------------------- #
104 |
105 | # File with the coordinates of the blade surface
106 | PRESCRIBED_BLADE_FILENAME =
107 |
108 | # ---------------------------------------------------------------------------- #
109 | # ---------------------------------------------------------------------------- #
110 |
--------------------------------------------------------------------------------
/testcases/GradientValidationTestCase/Camber_Thickness/Optimization.cfg:
--------------------------------------------------------------------------------
1 | #COMMON INPUTS
2 | DV_DICTIONARY = thickness_upper_1, thickness_upper_2, thickness_upper_3, thickness_upper_4
3 | CASCADE_TYPE = STATOR
4 | SU2_CONFIG_FILE = Axial_stage2D.cfg
5 | BLADE_PAR_FILE = matched_parametrization.cfg
6 | BLADE_MATCH_FILE = matched_coordinates.csv
7 | NZONE = 1
8 | NDIM = 2
9 | RESTART = NO
10 |
11 | # FINITE_DIFFERENCE || SHAPE_OPTIMIZATION || DISCRETE_ADJOINT || VALIDATION
12 | OPERATION_TYPE = PLOT_VALIDATION
13 | SKIP_ADJOINT = NO
14 | SKIP_REF_CFD = YES
15 |
16 | # DEFINE OBJECTIVE FUNCTION: ENTROPY_GENERATION || KINETIC_ENERGY_LOSS || TOTAL_PRESSURE_LOSS
17 | OBJECTIVE_FUNCTION = ENTROPY_GENERATION
18 |
19 | #REQUIRED BY OPTI
20 | OPT_RELAX_FAC = 1
21 | CONS_RELAX_FAC = -5
22 | OPT_CONSTRAIN = FLOW_ANGLE_OUT > 70
23 |
24 | #REQUIRED BY FINITE-DIFFERENCE (STEP in PERCENTAGE)
25 | FIND_DIFF_STEP = 0.1
26 | FIND_DIFF_ORDER = 1
27 |
28 | N_PROCESSORS = 3
29 |
--------------------------------------------------------------------------------
/testcases/GradientValidationTestCase/Camber_Thickness/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=ANNULAR
5 | x_leading=0.1429341100967399
6 | y_leading=-0.006281592770307365
7 | z_leading=0.9826561440128349, 1.0174159962749416
8 | x_trailing=0.1868193389090209
9 | z_trailing=0.9881078658791095, 1.0115413220071179
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=-45.04509871841186
16 | theta_in=0.0002791946592906482
17 | theta_out=-66.99976039043507
18 | radius_in=0.026354417820843037
19 | radius_out=0.004852464257967323
20 | dist_in=0.556932497999163
21 | dist_out=0.7007873267766946
22 | thickness_upper_1=0.14911569616676534
23 | thickness_upper_2=0.2435525665628745
24 | thickness_upper_3=0.17292210507145195
25 | thickness_upper_4=0.101900777901453
26 | thickness_upper_5=0.06568031500458475
27 | thickness_upper_6=0.036608742189409384
28 | thickness_lower_1=0.10984417907713369
29 | thickness_lower_2=0.1216371048884584
30 | thickness_lower_3=0.11377975717177922
31 | thickness_lower_4=0.05604338755053701
32 | thickness_lower_5=0.02013356747263819
33 | thickness_lower_6=1.4902161193847657e-08
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=SENSITIVITY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
37 | Config_Path=/home/robertoa/my_GIT/3d-blade-parametrizer/projects/MatchBlades/Aachen_2D/Aachen2D.cfg
38 |
--------------------------------------------------------------------------------
/testcases/GradientValidationTestCase/Connecting_Arcs/Optimization.cfg:
--------------------------------------------------------------------------------
1 | #COMMON INPUTS
2 | DV_DICTIONARY = THICKNESS
3 | CASCADE_TYPE = STATOR
4 | SU2_CONFIG_FILE = Axial_stage2D.cfg
5 | BLADE_PAR_FILE = matched_parametrization.cfg
6 | BLADE_MATCH_FILE = matched_coordinates.csv
7 | NZONE = 1
8 | NDIM = 2
9 | RESTART = NO
10 |
11 | # FINITE_DIFFERENCE || SHAPE_OPTIMIZATION || DISCRETE_ADJOINT || VALIDATION
12 | OPERATION_TYPE = FINITE_DIFFERENCE
13 | SKIP_ADJOINT = YES
14 | SKIP_REF_CFD = YES
15 |
16 | # DEFINE OBJECTIVE FUNCTION: ENTROPY_GENERATION || KINETIC_ENERGY_LOSS || TOTAL_PRESSURE_LOSS
17 | OBJECTIVE_FUNCTION = ENTROPY_GENERATION
18 |
19 | #REQUIRED BY OPTI
20 | OPT_RELAX_FAC = 1
21 | CONS_RELAX_FAC = -5
22 | OPT_CONSTRAIN = FLOW_ANGLE_OUT > 70
23 |
24 | #REQUIRED BY FINITE-DIFFERENCE (STEP in PERCENTAGE)
25 | FIND_DIFF_STEP = 0.01
26 | FIND_DIFF_ORDER = 1
27 |
28 | N_PROCESSORS = 3
29 |
--------------------------------------------------------------------------------
/testcases/GradientValidationTestCase/Connecting_Arcs/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=0.14296518136738243
6 | y_leading=-0.006496490678306802
7 | z_leading=0.9882403264903207, 1.0117613455560794
8 | x_trailing=0.18708944012460593
9 | z_trailing=0.9922913392128826, 1.0077072032601633
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=-44.461162143461024
16 | theta_in=6.583904389981261
17 | theta_out=-69.29454840876998
18 | wedge_in=29.866173765736054
19 | wedge_out=2.719705542042908
20 | radius_in=0.055091716923316617
21 | radius_out=0.014127887356073869
22 | dist_1=0.556234892107863
23 | dist_2=0.4145582766609678
24 | dist_3=0.4854755241839731
25 | dist_4=0.2082928684265004
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=SENSITIVITY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
29 | Config_Path=/home/robertoa/my_GIT/3d-blade-parametrizer/projects/MatchBlades/Aachen3D_new/matched_parametrization.cfg
30 |
--------------------------------------------------------------------------------
/testcases/GradientValidationTestCase/readme.txt:
--------------------------------------------------------------------------------
1 | Validation performed with branch feature_turbomachinery.
2 | ParaBlade commit: 3c2b354c7bfcb5db3fdf6a1fa695f2608c0dd421
3 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/APU_rotor/matched_APU_rotor_camber_thickness/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/APU_rotor/matched_APU_rotor_camber_thickness/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/APU_rotor/matched_APU_rotor_camber_thickness/figures/view_3D.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/APU_rotor/matched_APU_rotor_camber_thickness/figures/view_3D.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/APU_rotor/matched_APU_rotor_camber_thickness/figures/view_xR.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/APU_rotor/matched_APU_rotor_camber_thickness/figures/view_xR.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/APU_rotor/matched_APU_rotor_camber_thickness/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/APU_rotor/matched_APU_rotor_camber_thickness/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/APU_rotor/matched_APU_rotor_camber_thickness/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=3.0
2 | N_BLADES=50.0
3 | N_SECTIONS=10.0
4 | CASCADE_TYPE=ANNULAR
5 | x_leading=-9.869237893086056e-05, 0.0027979014225067204, 0.0016571655034625377, 0.006588430431796622
6 | y_leading=3.79388358731857e-05, -3.6537149310264824e-06, 8.270396173219338e-05, -5.345304360205687e-05
7 | z_leading=0.05887216040966112, 0.05924129827196898, 0.059120556277160646, 0.05863862671204075
8 | x_trailing=0.03917434762034967, 0.03770505707808405, 0.036600200530817646, 0.035166466469213876
9 | z_trailing=0.014449380388735032, 0.02193307354273521, 0.028668000045415486, 0.036789186476100785
10 | x_hub=-0.0014757708366869996, 0.009247720472171844, 0.018714426001948278, 0.02877833310148302
11 | z_hub=0.038624467999708464, 0.023358237606242914, 0.01746433095665681, 0.015527667236652536
12 | x_shroud=0.0069559715801913065, 0.008729158715301652, 0.01998307823090828, 0.028631392492032063
13 | z_shroud=0.053237192576617604, 0.0434518267010072, 0.037714806804425384, 0.03764436183571095
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=-11.674014280505471, -16.73860632925192, -21.345317111281453, -32.768565529206036
16 | theta_in=0.6666998297957673, -1.4706787931848424, -1.5081249198589344, -2.5792943634015284, 0.6738664402220125
17 | theta_out=-46.54560571525838, -49.31634795398918, -59.67210448483033, -70.36048367470246
18 | radius_in=0.0007625127438209964, 0.0001, 0.0016968254570471479, 0.0020754793243135746
19 | radius_out=0.0062271044870403506, 0.0015090393481846042, 0.0014136746833572332, 0.0007913596547600062
20 | dist_in=0.5355343976072282, 0.3746131652982886, 0.3452329768672494, 0.39498409607160784
21 | dist_out=0.21347553262853933, 0.43481458419993696, 0.5099131317101948, 0.611365120695502
22 | thickness_upper_1=0.0504928307026806, 0.007969793444509746, 0.0096956564541654
23 | thickness_upper_2=0.027618994728538772, 0.042006734088418325, 0.005459450493737988
24 | thickness_upper_3=0.026504899729620644, 0.0001, 0.016663283645800497
25 | thickness_upper_4=0.022275505880323447, 0.0001, 0.021641361639818883
26 | thickness_upper_5=0.02254052118257426, 0.005949559273180814, 0.0001
27 | thickness_upper_6=0.010880839375269763, 0.036607933883031324, 0.005125204053782321
28 | thickness_lower_1=0.04665436912700047, 0.0001, 0.006033863237941165
29 | thickness_lower_2=0.05234562925979758, 0.045705498917363925, 0.018783799868350187
30 | thickness_lower_3=0.032780187641132254, 0.07267865627322304, 0.009749506587249811
31 | thickness_lower_4=0.020415950769033145, 0.0709770862574494, 0.0002730362579951525
32 | thickness_lower_5=0.01342568036720722, 0.01816961414543789, 0.023078950263320817
33 | thickness_lower_6=0.0043528907034891635, 0.0001, 0.0001
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/APU_rotor/CT.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/APU_rotor/matched_APU_rotor_camber_thickness/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000032 0.000240 0.057572 0.429186
3 | 2 0.000032 0.000241 0.057646 0.430451
4 | 3 0.000032 0.000241 0.057718 0.430798
5 | 4 0.000032 0.000241 0.057731 0.430928
6 | 5 0.000032 0.000241 0.057791 0.430347
7 | 6 0.000032 0.000241 0.057870 0.429639
8 | 7 0.000032 0.000240 0.057851 0.429539
9 | 8 0.000032 0.000240 0.057841 0.429549
10 | 9 0.000032 0.000241 0.057857 0.429644
11 | 10 0.000032 0.000241 0.057858 0.429707
12 | 11 0.000032 0.000240 0.057612 0.429136
13 | 12 0.000032 0.000240 0.057614 0.429366
14 | 13 0.000032 0.000240 0.057615 0.429164
15 | 14 0.000032 0.000240 0.057614 0.429167
16 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/APU_rotor/matched_APU_rotor_connecting_arcs/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/APU_rotor/matched_APU_rotor_connecting_arcs/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/APU_rotor/matched_APU_rotor_connecting_arcs/figures/view_3D.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/APU_rotor/matched_APU_rotor_connecting_arcs/figures/view_3D.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/APU_rotor/matched_APU_rotor_connecting_arcs/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/APU_rotor/matched_APU_rotor_connecting_arcs/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/APU_rotor/matched_APU_rotor_connecting_arcs/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=3.0
2 | N_BLADES=50.0
3 | N_SECTIONS=10.0
4 | CASCADE_TYPE=ANNULAR
5 | x_leading=-0.00010159389622542627, 0.003311327195419783, 0.0017133627272172757, 0.0068384172635088695
6 | y_leading=4.939027812712699e-06, -2.7142914747660017e-05, 0.00012249652589761472, -9.320490143403786e-05
7 | z_leading=0.058194379478783545, 0.05832071862883674, 0.05795650660579405, 0.05864614684681003
8 | x_trailing=0.03922164474850847, 0.037620313634644596, 0.03656373917380254, 0.035414080234237
9 | z_trailing=0.01422281841653347, 0.02217105731946714, 0.029028118775620535, 0.03675834492248375
10 | x_hub=-0.0014614433869178918, 0.007107574488312483, 0.018714454779126106, 0.029632767269646088
11 | z_hub=0.042659610187030954, 0.024888802354321584, 0.016893480252863698, 0.015239056176460743
12 | x_shroud=0.0065236243035071305, 0.00859396631279459, 0.01959489646200039, 0.028276927453762632
13 | z_shroud=0.053172081618992416, 0.044192677551851946, 0.03830079668413579, 0.0374553790376261
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=-11.456789350115091, -16.53993049235876, -22.001089983599243, -32.775187409426216
16 | theta_in=-0.006398266709518323, -0.8661450139954752, -2.394366991201309, -2.021245409900805, -0.48462771487170125
17 | theta_out=-44.95572780413222, -50.59949667022582, -61.02146202311854, -67.74121664583797
18 | wedge_in=12.277268361600363, 10.853946760085426, 6.325955879673136, 2.307362365837465
19 | wedge_out=7.649925993140902, 4.2358925807334415, 2.483454236219785, 1.2741042769299362
20 | radius_in=0.006168586968793938, 0.0001003464492781664, 0.009687657869733154, 0.005432768780782693
21 | radius_out=0.007419609199525029, 0.008795166892485115, 0.004234429708331641, 0.0031720211496014286
22 | dist_1=0.30359018943139326, 0.3203769319778006, 0.4943685092481813, 0.5310641365367774
23 | dist_2=0.45343784921808833, 0.48015035666919703, 0.3596069397613653, 0.4686170809471991
24 | dist_3=0.3530279597627061, 0.3466613805611188, 0.426998060087119, 0.4911527942906641
25 | dist_4=0.2378408165472567, 0.3068587679301015, 0.35724382540014044, 0.3890429361235885
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=GEOMETRY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
29 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/APU_rotor/CA.cfg
30 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_2D/matched_Aachen_2D_camber_thickness/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/Aachen_2D/matched_Aachen_2D_camber_thickness/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_2D/matched_Aachen_2D_camber_thickness/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/Aachen_2D/matched_Aachen_2D_camber_thickness/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_2D/matched_Aachen_2D_camber_thickness/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=0.142901186730296
6 | y_leading=-0.0063348374333360245
7 | z_leading=1.0000179636179993, 1.0100179044720874
8 | x_trailing=0.18682554895578918
9 | z_trailing=1.0000179636179993, 1.0100179044720874
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=-45.1920714566389
16 | theta_in=0.012416925910573088
17 | theta_out=-67.02941231228144
18 | radius_in=0.025950748586066243
19 | radius_out=0.005003764154934432
20 | dist_in=0.560522474155629
21 | dist_out=0.7060111248370926
22 | thickness_upper_1=0.15440088932902918
23 | thickness_upper_2=0.24510205592247364
24 | thickness_upper_3=0.172941283577497
25 | thickness_upper_4=0.10122346402642018
26 | thickness_upper_5=0.06659120039267397
27 | thickness_upper_6=0.03579689742964857
28 | thickness_lower_1=0.10783989393183512
29 | thickness_lower_2=0.1227933527604489
30 | thickness_lower_3=0.1140665161615662
31 | thickness_lower_4=0.05680074963362272
32 | thickness_lower_5=0.01985639832596541
33 | thickness_lower_6=0.00010001490116119555
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/Aachen_2D/Aachen_2D.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_2D/matched_Aachen_2D_camber_thickness/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000187 0.000436 0.424681 0.990865
3 | 2 0.000192 0.000462 0.436775 1.050248
4 | 3 0.000191 0.000438 0.433369 0.996003
5 | 4 0.000188 0.000423 0.427999 0.961981
6 | 5 0.000150 0.000484 0.341786 1.100803
7 | 6 0.000110 0.000365 0.250169 0.828964
8 | 7 0.000102 0.000342 0.231718 0.778145
9 | 8 0.000083 0.000358 0.188479 0.813298
10 | 9 0.000077 0.000251 0.174851 0.571045
11 | 10 0.000069 0.000278 0.156952 0.631461
12 | 11 0.000056 0.000293 0.126910 0.665691
13 | 12 0.000056 0.000273 0.128177 0.619634
14 | 13 0.000053 0.000277 0.120649 0.629594
15 | 14 0.000052 0.000284 0.117495 0.645592
16 | 15 0.000051 0.000286 0.115076 0.649802
17 | 16 0.000051 0.000277 0.115164 0.630056
18 | 17 0.000051 0.000271 0.115725 0.616254
19 | 18 0.000051 0.000260 0.115840 0.591719
20 | 19 0.000052 0.000258 0.119177 0.586452
21 | 20 0.000052 0.000268 0.117692 0.608458
22 | 21 0.000048 0.000265 0.110184 0.601251
23 | 22 0.000049 0.000262 0.111726 0.594776
24 | 23 0.000048 0.000277 0.108097 0.628960
25 | 24 0.000047 0.000256 0.107190 0.582276
26 | 25 0.000046 0.000247 0.104530 0.561432
27 | 26 0.000046 0.000243 0.105512 0.553403
28 | 27 0.000046 0.000240 0.105323 0.545775
29 | 28 0.000046 0.000244 0.105018 0.554443
30 | 29 0.000046 0.000242 0.105073 0.549429
31 | 30 0.000046 0.000240 0.105605 0.545059
32 | 31 0.000041 0.000239 0.093080 0.543919
33 | 32 0.000041 0.000239 0.092832 0.543434
34 | 33 0.000041 0.000240 0.092564 0.544968
35 | 34 0.000041 0.000240 0.092374 0.544388
36 | 35 0.000040 0.000236 0.091899 0.536533
37 | 36 0.000040 0.000228 0.091655 0.517438
38 | 37 0.000041 0.000223 0.092119 0.506314
39 | 38 0.000040 0.000226 0.091917 0.513184
40 | 39 0.000040 0.000226 0.091838 0.513759
41 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_2D/matched_Aachen_2D_connecting_arcs/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/Aachen_2D/matched_Aachen_2D_connecting_arcs/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_2D/matched_Aachen_2D_connecting_arcs/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/Aachen_2D/matched_Aachen_2D_connecting_arcs/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_2D/matched_Aachen_2D_connecting_arcs/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=0.14292961969803608
6 | y_leading=-0.00649065649235508
7 | z_leading=0.9999688106130787, 1.0099687936000992
8 | x_trailing=0.1870845540976954
9 | z_trailing=0.9999688106130787, 1.0099687936000992
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=-44.54573974006466
16 | theta_in=6.591152394973649
17 | theta_out=-69.38270884321805
18 | wedge_in=30.104755118210683
19 | wedge_out=2.6107691715502717
20 | radius_in=0.05411663264459526
21 | radius_out=0.014444953099084985
22 | dist_1=0.5580761102492163
23 | dist_2=0.41644088175138727
24 | dist_3=0.4846951250258652
25 | dist_4=0.20633545659987543
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=GEOMETRY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
29 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/Aachen_2D/Aachen_2D.cfg
30 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_2D/matched_Aachen_2D_connecting_arcs/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000087 0.000350 0.198826 0.796364
3 | 2 0.000088 0.000342 0.200438 0.776248
4 | 3 0.000087 0.000350 0.196674 0.795627
5 | 4 0.000086 0.000336 0.196135 0.764623
6 | 5 0.000086 0.000332 0.195047 0.753878
7 | 6 0.000087 0.000319 0.197273 0.725905
8 | 7 0.000087 0.000320 0.196688 0.727769
9 | 8 0.000087 0.000318 0.197873 0.722669
10 | 9 0.000087 0.000315 0.197502 0.716162
11 | 10 0.000087 0.000316 0.196926 0.719046
12 | 11 0.000084 0.000318 0.191332 0.723431
13 | 12 0.000082 0.000318 0.187150 0.723123
14 | 13 0.000082 0.000330 0.186618 0.749905
15 | 14 0.000082 0.000331 0.186142 0.752595
16 | 15 0.000081 0.000339 0.185074 0.769405
17 | 16 0.000081 0.000339 0.185125 0.771024
18 | 17 0.000081 0.000340 0.185204 0.772916
19 | 18 0.000082 0.000341 0.185307 0.776106
20 | 19 0.000082 0.000344 0.185429 0.782211
21 | 20 0.000082 0.000349 0.185492 0.793598
22 | 21 0.000080 0.000357 0.181707 0.811782
23 | 22 0.000081 0.000387 0.183332 0.878810
24 | 23 0.000080 0.000375 0.182248 0.851393
25 | 24 0.000080 0.000369 0.182409 0.839468
26 | 25 0.000080 0.000370 0.182877 0.842034
27 | 26 0.000081 0.000373 0.183092 0.846811
28 | 27 0.000081 0.000376 0.183179 0.854601
29 | 28 0.000081 0.000379 0.182999 0.861489
30 | 29 0.000080 0.000380 0.182676 0.863083
31 | 30 0.000080 0.000379 0.182484 0.861641
32 | 31 0.000079 0.000379 0.179303 0.860436
33 | 32 0.000079 0.000378 0.179190 0.858128
34 | 33 0.000079 0.000376 0.178750 0.854988
35 | 34 0.000079 0.000380 0.178834 0.863232
36 | 35 0.000079 0.000385 0.179203 0.874744
37 | 36 0.000079 0.000387 0.179299 0.880305
38 | 37 0.000079 0.000388 0.179292 0.881694
39 | 38 0.000079 0.000389 0.179258 0.884562
40 | 39 0.000079 0.000391 0.179180 0.888859
41 | 40 0.000079 0.000394 0.178978 0.896442
42 | 41 0.000078 0.000399 0.177321 0.906443
43 | 42 0.000078 0.000411 0.176978 0.933567
44 | 43 0.000078 0.000408 0.176333 0.928226
45 | 44 0.000077 0.000402 0.175472 0.914136
46 | 45 0.000077 0.000402 0.175500 0.914460
47 | 46 0.000077 0.000403 0.175706 0.916708
48 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_2D/output_matching/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=0.143
6 | y_leading=-0.006477547107303718
7 | z_leading=1.0, 1.01
8 | x_trailing=0.187
9 | z_trailing=1.0, 1.01
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=-55.0
16 | theta_in=0.0
17 | theta_out=-67.0
18 | radius_in=0.03
19 | radius_out=0.01
20 | dist_in=0.55
21 | dist_out=0.7
22 | thickness_upper_1=0.25
23 | thickness_upper_2=0.25
24 | thickness_upper_3=0.16
25 | thickness_upper_4=0.12
26 | thickness_upper_5=0.07
27 | thickness_upper_6=0.04
28 | thickness_lower_1=0.1
29 | thickness_lower_2=0.12
30 | thickness_lower_3=0.11
31 | thickness_lower_4=0.05
32 | thickness_lower_5=0.03
33 | thickness_lower_6=0.01
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/Aachen_2D/Aachen_2D.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_3D/matched_Aachen_3D_camber_thickness/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/Aachen_3D/matched_Aachen_3D_camber_thickness/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_3D/matched_Aachen_3D_camber_thickness/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/Aachen_3D/matched_Aachen_3D_camber_thickness/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_3D/matched_Aachen_3D_camber_thickness/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=3.0
2 | N_BLADES=50.0
3 | N_SECTIONS=5.0
4 | CASCADE_TYPE=ANNULAR
5 | x_leading=-0.00035908117570858584
6 | y_leading=-0.0062360484365408374
7 | z_leading=0.4898634698408523, 0.6005223700108764
8 | x_trailing=0.044060595992423936
9 | z_trailing=0.4895792574268169, 0.6014643858137806
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=-45.74938319383223
16 | theta_in=0.7307163415823574
17 | theta_out=-67.80925934168687
18 | radius_in=0.012706630004489617
19 | radius_out=0.001634329855380229
20 | dist_in=0.5223858919409166
21 | dist_out=0.6874565701673371
22 | thickness_upper_1=0.1417940809316617
23 | thickness_upper_2=0.24862863459393272
24 | thickness_upper_3=0.18672394689511032
25 | thickness_upper_4=0.1092850465593911
26 | thickness_upper_5=0.06274777188100596
27 | thickness_upper_6=0.03939142829211519
28 | thickness_lower_1=0.11486341728401821
29 | thickness_lower_2=0.11354154692403257
30 | thickness_lower_3=0.1005049672759074
31 | thickness_lower_4=0.03939986174922843
32 | thickness_lower_5=0.01528618488521304
33 | thickness_lower_6=0.0008622920387592618
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/Aachen_3D/output_matching/matched_parametrization.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_3D/matched_Aachen_3D_connecting_arcs/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/Aachen_3D/matched_Aachen_3D_connecting_arcs/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_3D/matched_Aachen_3D_connecting_arcs/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/Aachen_3D/matched_Aachen_3D_connecting_arcs/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/Aachen_3D/matched_Aachen_3D_connecting_arcs/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=3.0
2 | N_BLADES=50.0
3 | N_SECTIONS=5.0
4 | CASCADE_TYPE=ANNULAR
5 | x_leading=-0.00026015294673109276
6 | y_leading=-0.006576428701613933
7 | z_leading=0.48972416997448887, 0.6005246636070596
8 | x_trailing=0.044046366614453596
9 | z_trailing=0.4896779199637039, 0.6014730500902873
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=-44.474611917094215
16 | theta_in=7.881987690479129
17 | theta_out=-70.07404796640702
18 | wedge_in=30.71166412677091
19 | wedge_out=2.2070058938026325
20 | radius_in=0.044305545860700714
21 | radius_out=0.014461836382502133
22 | dist_1=0.5816559680573646
23 | dist_2=0.4371080546682559
24 | dist_3=0.4281619388540133
25 | dist_4=0.16312603766708803
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=GEOMETRY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
29 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/Aachen_3D/Aachen_3D.cfg
30 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/ImpulseTurbineORC_2D/matched_ImpulseTurbine_ORC_2D_camber_thickness/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/ImpulseTurbineORC_2D/matched_ImpulseTurbine_ORC_2D_camber_thickness/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/ImpulseTurbineORC_2D/matched_ImpulseTurbine_ORC_2D_camber_thickness/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/ImpulseTurbineORC_2D/matched_ImpulseTurbine_ORC_2D_camber_thickness/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/ImpulseTurbineORC_2D/matched_ImpulseTurbine_ORC_2D_camber_thickness/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=-0.09425855722003132
6 | y_leading=0.026201578662333858
7 | z_leading=0.9999976438517546, 1.0099975229593843
8 | x_trailing=0.0941451356245058
9 | z_trailing=0.9999976438517546, 1.0099975229593843
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=0.048502862686205454
16 | theta_in=57.93272734925437
17 | theta_out=-57.96266228639391
18 | radius_in=0.00010000000007013841
19 | radius_out=0.00010000000007459897
20 | dist_in=0.6507942785077789
21 | dist_out=0.6514697749854949
22 | thickness_upper_1=0.00010000000002322212
23 | thickness_upper_2=0.023251104714611708
24 | thickness_upper_3=0.09097359318785911
25 | thickness_upper_4=0.09080223549308214
26 | thickness_upper_5=0.023515300720392377
27 | thickness_upper_6=0.00010000000002205547
28 | thickness_lower_1=0.00010000000002015
29 | thickness_lower_2=0.0001
30 | thickness_lower_3=0.0781377197304038
31 | thickness_lower_4=0.07895927660894468
32 | thickness_lower_5=0.0001
33 | thickness_lower_6=0.00010001490118216361
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/ImpulseTurbineORC_2D/ImpulseTurbine_ORC_2D.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/ImpulseTurbineORC_2D/matched_ImpulseTurbine_ORC_2D_camber_thickness/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000730 0.001319 0.386233 0.697984
3 | 2 0.000661 0.001290 0.349716 0.682363
4 | 3 0.000662 0.001245 0.350328 0.658648
5 | 4 0.000658 0.001244 0.348347 0.658207
6 | 5 0.000656 0.001139 0.347138 0.602420
7 | 6 0.000623 0.001135 0.329609 0.600500
8 | 7 0.000588 0.001021 0.311248 0.540230
9 | 8 0.000565 0.001071 0.298810 0.566812
10 | 9 0.000417 0.001152 0.220691 0.609504
11 | 10 0.000420 0.001073 0.222468 0.567854
12 | 11 0.000399 0.001098 0.211270 0.580731
13 | 12 0.000397 0.000944 0.210184 0.499415
14 | 13 0.000365 0.000960 0.192948 0.508049
15 | 14 0.000354 0.000907 0.187316 0.479919
16 | 15 0.000337 0.000852 0.178211 0.450828
17 | 16 0.000333 0.000879 0.176244 0.465303
18 | 17 0.000335 0.000858 0.177178 0.453794
19 | 18 0.000334 0.000858 0.176965 0.453847
20 | 19 0.000334 0.000854 0.176968 0.452110
21 | 20 0.000334 0.000853 0.176598 0.451187
22 | 21 0.000324 0.000833 0.171356 0.440529
23 | 22 0.000324 0.000836 0.171471 0.442553
24 | 23 0.000324 0.000834 0.171467 0.441436
25 | 24 0.000324 0.000834 0.171425 0.441078
26 | 25 0.000324 0.000833 0.171555 0.440492
27 | 26 0.000324 0.000832 0.171642 0.440158
28 | 27 0.000325 0.000828 0.171808 0.437947
29 | 28 0.000325 0.000826 0.171974 0.437115
30 | 29 0.000325 0.000818 0.171969 0.432728
31 | 30 0.000324 0.000812 0.171342 0.429885
32 | 31 0.000319 0.000805 0.168945 0.425728
33 | 32 0.000319 0.000806 0.168708 0.426321
34 | 33 0.000318 0.000809 0.168507 0.427893
35 | 34 0.000318 0.000810 0.168445 0.428590
36 | 35 0.000319 0.000806 0.168550 0.426538
37 | 36 0.000319 0.000807 0.168529 0.426960
38 | 37 0.000318 0.000807 0.168507 0.426977
39 | 38 0.000318 0.000807 0.168477 0.426961
40 | 39 0.000318 0.000807 0.168413 0.426976
41 | 40 0.000318 0.000807 0.168314 0.426737
42 | 41 0.000317 0.000806 0.167599 0.426554
43 | 42 0.000317 0.000806 0.167508 0.426380
44 | 43 0.000317 0.000805 0.167510 0.425707
45 | 44 0.000317 0.000805 0.167715 0.425784
46 | 45 0.000317 0.000804 0.167740 0.425309
47 | 46 0.000317 0.000804 0.167802 0.425202
48 | 47 0.000317 0.000803 0.167869 0.425115
49 | 48 0.000317 0.000803 0.167952 0.425064
50 | 49 0.000318 0.000804 0.167992 0.425247
51 | 50 0.000317 0.000804 0.167952 0.425394
52 | 51 0.000316 0.000804 0.167179 0.425254
53 | 52 0.000316 0.000804 0.167158 0.425236
54 | 53 0.000316 0.000804 0.167107 0.425172
55 | 54 0.000316 0.000803 0.167283 0.424873
56 | 55 0.000316 0.000803 0.167357 0.424901
57 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/ImpulseTurbineORC_2D/matched_ImpulseTurbine_ORC_2D_connecting_arcs/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/ImpulseTurbineORC_2D/matched_ImpulseTurbine_ORC_2D_connecting_arcs/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/ImpulseTurbineORC_2D/matched_ImpulseTurbine_ORC_2D_connecting_arcs/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/ImpulseTurbineORC_2D/matched_ImpulseTurbine_ORC_2D_connecting_arcs/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/ImpulseTurbineORC_2D/matched_ImpulseTurbine_ORC_2D_connecting_arcs/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=-0.09332389864228843
6 | y_leading=0.026399418826983732
7 | z_leading=1.0000112060780233, 1.010014066379366
8 | x_trailing=0.09328704069796963
9 | z_trailing=1.0000112060780233, 1.010014066379366
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=0.019657235599628845
16 | theta_in=60.507921269243745
17 | theta_out=-60.5031139816333
18 | wedge_in=0.8890805729600905
19 | wedge_out=0.8890072741285208
20 | radius_in=0.00010000000000000316
21 | radius_out=0.0001
22 | dist_1=0.75485222777098
23 | dist_2=0.5336112996973958
24 | dist_3=0.5321445336699586
25 | dist_4=0.7540826635771408
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=GEOMETRY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
29 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/ImpulseTurbineORC_2D/ImpulseTurbine_ORC_2D.cfg
30 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/ImpulseTurbineORC_2D/matched_ImpulseTurbine_ORC_2D_connecting_arcs/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000829 0.001938 0.438696 1.025315
3 | 2 0.000809 0.001543 0.428288 0.816173
4 | 3 0.000805 0.001522 0.426082 0.805341
5 | 4 0.000801 0.001577 0.423865 0.834379
6 | 5 0.000801 0.001570 0.423835 0.830843
7 | 6 0.000721 0.001708 0.381500 0.903451
8 | 7 0.000720 0.001706 0.381088 0.902747
9 | 8 0.000713 0.001744 0.377243 0.922585
10 | 9 0.000713 0.001745 0.377023 0.923157
11 | 10 0.000713 0.001744 0.377010 0.922934
12 | 11 0.000678 0.001710 0.358880 0.904762
13 | 12 0.000684 0.001655 0.362036 0.875851
14 | 13 0.000679 0.001662 0.359483 0.879507
15 | 14 0.000674 0.001630 0.356397 0.862305
16 | 15 0.000674 0.001556 0.356495 0.823335
17 | 16 0.000676 0.001504 0.357439 0.795900
18 | 17 0.000676 0.001488 0.357599 0.787399
19 | 18 0.000676 0.001479 0.357467 0.782683
20 | 19 0.000674 0.001466 0.356750 0.775572
21 | 20 0.000670 0.001450 0.354606 0.767262
22 | 21 0.000645 0.001427 0.341192 0.755163
23 | 22 0.000628 0.001478 0.332051 0.782081
24 | 23 0.000621 0.001447 0.328477 0.765691
25 | 24 0.000615 0.001520 0.325582 0.804394
26 | 25 0.000615 0.001506 0.325437 0.796913
27 | 26 0.000615 0.001502 0.325527 0.794468
28 | 27 0.000616 0.001489 0.326026 0.787799
29 | 28 0.000617 0.001486 0.326205 0.785986
30 | 29 0.000617 0.001483 0.326494 0.784663
31 | 30 0.000617 0.001484 0.326591 0.785175
32 | 31 0.000551 0.001487 0.291627 0.786707
33 | 32 0.000552 0.001491 0.292058 0.789060
34 | 33 0.000551 0.001491 0.291651 0.788968
35 | 34 0.000549 0.001490 0.290490 0.788351
36 | 35 0.000547 0.001487 0.289656 0.786551
37 | 36 0.000545 0.001470 0.288177 0.777874
38 | 37 0.000543 0.001458 0.287232 0.771325
39 | 38 0.000547 0.001426 0.289252 0.754698
40 | 39 0.000553 0.001393 0.292796 0.736854
41 | 40 0.000555 0.001378 0.293817 0.729305
42 | 41 0.000539 0.001369 0.285342 0.724415
43 | 42 0.000541 0.001367 0.286039 0.723045
44 | 43 0.000540 0.001369 0.285756 0.724137
45 | 44 0.000543 0.001376 0.287177 0.727940
46 | 45 0.000543 0.001375 0.287039 0.727458
47 | 46 0.000542 0.001371 0.286570 0.725451
48 | 47 0.000540 0.001369 0.285735 0.724203
49 | 48 0.000537 0.001367 0.284125 0.723052
50 | 49 0.000535 0.001371 0.282849 0.725140
51 | 50 0.000533 0.001384 0.282223 0.732462
52 | 51 0.000506 0.001390 0.267785 0.735538
53 | 52 0.000507 0.001398 0.268204 0.739766
54 | 53 0.000506 0.001397 0.267778 0.739125
55 | 54 0.000503 0.001393 0.266154 0.737257
56 | 55 0.000507 0.001390 0.268388 0.735601
57 | 56 0.000507 0.001387 0.268157 0.733632
58 | 57 0.000507 0.001387 0.268100 0.734082
59 | 58 0.000507 0.001388 0.268033 0.734419
60 | 59 0.000506 0.001387 0.267940 0.733944
61 | 60 0.000506 0.001383 0.267899 0.731580
62 | 61 0.000488 0.001376 0.257956 0.727817
63 | 62 0.000488 0.001406 0.257983 0.743851
64 | 63 0.000488 0.001405 0.258028 0.743378
65 | 64 0.000488 0.001409 0.257958 0.745256
66 | 65 0.000488 0.001406 0.258066 0.744018
67 | 66 0.000489 0.001400 0.258479 0.740896
68 | 67 0.000490 0.001386 0.259398 0.733088
69 | 68 0.000492 0.001372 0.260206 0.725689
70 | 69 0.000492 0.001366 0.260174 0.722732
71 | 70 0.000491 0.001367 0.259904 0.723160
72 | 71 0.000478 0.001367 0.252670 0.723169
73 | 72 0.000477 0.001367 0.252631 0.723179
74 | 73 0.000477 0.001367 0.252463 0.723074
75 | 74 0.000477 0.001365 0.252197 0.722375
76 | 75 0.000481 0.001362 0.254386 0.720898
77 | 76 0.000481 0.001362 0.254383 0.720646
78 | 77 0.000481 0.001362 0.254358 0.720751
79 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/Impulse_2D/Impulse_2D.cfg:
--------------------------------------------------------------------------------
1 | # ---------------------------------------------------------------------------- #
2 | # ---------------------- ParaBlade configuration file ------------------------ #
3 | # ---------------------------------------------------------------------------- #
4 |
5 | # Number of Dimensions :: 2 :: 3
6 | # Set NDIM = 2 for two-dimensional problems
7 | # Set NDIM = 3 for three-dimensional problems
8 | NDIM = 2
9 |
10 | # ---------------------------------------------------------------------------- #
11 | # ---------------------------------------------------------------------------- #
12 |
13 | # Number of Blades OPTIONS :: integer
14 | N_BLADES = 50
15 |
16 | # ---------------------------------------------------------------------------- #
17 | # ---------------------------------------------------------------------------- #
18 |
19 | # Number of blade sections used to create the blade OPTIONS :: integer
20 | # The value must be at least 2 (even for 2D cases)
21 | # Increase this value depending on the span-variation complexity of the blade
22 | N_SECTIONS = 2
23 |
24 | # ---------------------------------------------------------------------------- #
25 | # ---------------------------------------------------------------------------- #
26 |
27 | # Type of cascade OPTIONS :: LINEAR :: ANNULAR
28 | # Set CASCADE_TYPE = ANNULAR for an a annular cascade of blades (axisymmetric)
29 | # Set CASCADE_TYPE = LINEAR for a linear cascade of blades
30 | CASCADE_TYPE = LINEAR
31 |
32 | # ---------------------------------------------------------------------------- #
33 | # ---------------------------------------------------------------------------- #
34 |
35 | # Design variables for the meridional channel
36 | # Set a straight horizontal line for axial flow cascades
37 | # Set a straight vertical line for radial flow cascades
38 | # Set an arbitrary variation for mixed flow cascade
39 | x_leading = -0.085
40 | y_leading = 0.0223
41 | z_leading = 0.99, 1.01
42 | x_trailing = 0.0845
43 | z_trailing = 0.99, 1.01
44 | x_hub =
45 | z_hub =
46 | x_shroud =
47 | z_shroud =
48 |
49 | # ---------------------------------------------------------------------------- #
50 | # ---------------------------------------------------------------------------- #
51 |
52 | # # Design variables for a 2D section parametrization based on connecting arcs.
53 | # PARAMETRIZATION_TYPE = CONNECTING_ARCS
54 | # stagger = 0
55 | # theta_in = 42
56 | # theta_out = -42
57 | # wedge_in = 2.00
58 | # wedge_out = 2.00
59 | # radius_in = 0.0035
60 | # radius_out = 0.0035
61 | # dist_1 = 0.65
62 | # dist_2 = 0.5
63 | # dist_3 = 0.5
64 | # dist_4 = 0.65
65 |
66 | # Design variables for a 2D section parametrization based camberline/thickness
67 | PARAMETRIZATION_TYPE = CAMBER_THICKNESS
68 | stagger = 0.10
69 | theta_in = 40
70 | theta_out = -40
71 | radius_in = 0.0005
72 | radius_out = 0.0005
73 | dist_in = 0.6
74 | dist_out = 0.6
75 | thickness_upper_1 = 0.001
76 | thickness_upper_2 = 0.025
77 | thickness_upper_3 = 0.055
78 | thickness_upper_4 = 0.055
79 | thickness_upper_5 = 0.025
80 | thickness_upper_6 = 0.001
81 | thickness_lower_1 = 0.001
82 | thickness_lower_2 = 0.007
83 | thickness_lower_3 = 0.050
84 | thickness_lower_4 = 0.050
85 | thickness_lower_5 = 0.007
86 | thickness_lower_6 = 0.001
87 |
88 | # ---------------------------------------------------------------------------- #
89 | # ---------------------------------------------------------------------------- #
90 |
91 | # Plot format OPTION :: TECPLOT :: MATPLOTLIB :: INTERACTIVE
92 | PLOT_FORMAT = INTERACTIVE
93 |
94 | # ---------------------------------------------------------------------------- #
95 | # ---------------------------------------------------------------------------- #
96 |
97 | # Operation type OPTION :: GEOMETRY :: SENSITIVITY
98 | OPERATION_TYPE = GEOMETRY
99 |
100 | # ---------------------------------------------------------------------------- #
101 | # ---------------------------------------------------------------------------- #
102 |
103 | # File with the coordinates of the blade surface
104 | PRESCRIBED_BLADE_FILENAME = MoveSurface.txt
105 |
106 | # ---------------------------------------------------------------------------- #
107 | # ---------------------------------------------------------------------------- #
108 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/Impulse_2D/matched_impulse_2D_camber_thickness/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/Impulse_2D/matched_impulse_2D_camber_thickness/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/Impulse_2D/matched_impulse_2D_camber_thickness/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/Impulse_2D/matched_impulse_2D_camber_thickness/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/Impulse_2D/matched_impulse_2D_camber_thickness/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=-0.08481742890473598
6 | y_leading=0.022259905880723324
7 | z_leading=0.9900261016842585, 1.0100228331246281
8 | x_trailing=0.08443390088157868
9 | z_trailing=0.9900261016842585, 1.0100228331246281
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=0.11171978222644732
16 | theta_in=43.24299622620006
17 | theta_out=-43.20514818706794
18 | radius_in=0.00010000000000009436
19 | radius_out=0.00010000000000004976
20 | dist_in=0.5925608258406045
21 | dist_out=0.5934902999826375
22 | thickness_upper_1=0.0001
23 | thickness_upper_2=0.013281503888445066
24 | thickness_upper_3=0.04396291656494813
25 | thickness_upper_4=0.044270478211622256
26 | thickness_upper_5=0.014472273401017907
27 | thickness_upper_6=0.0001
28 | thickness_lower_1=0.0001
29 | thickness_lower_2=0.030938973135151097
30 | thickness_lower_3=0.05954623238014936
31 | thickness_lower_4=0.05946140899053461
32 | thickness_lower_5=0.03122542186728682
33 | thickness_lower_6=0.0001
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/Impulse_2D/Impulse_2D.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/Impulse_2D/matched_impulse_2D_camber_thickness/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000353 0.001011 0.208160 0.596226
3 | 2 0.000330 0.000761 0.194402 0.448769
4 | 3 0.000322 0.000751 0.189830 0.443011
5 | 4 0.000308 0.000691 0.181479 0.407955
6 | 5 0.000276 0.000575 0.163079 0.339401
7 | 6 0.000253 0.000591 0.149016 0.348707
8 | 7 0.000235 0.000640 0.138679 0.377512
9 | 8 0.000226 0.000636 0.133412 0.375232
10 | 9 0.000221 0.000616 0.130167 0.363142
11 | 10 0.000211 0.000648 0.124352 0.382186
12 | 11 0.000189 0.000675 0.111756 0.398505
13 | 12 0.000178 0.000650 0.105222 0.383578
14 | 13 0.000174 0.000572 0.102884 0.337321
15 | 14 0.000179 0.000517 0.105512 0.304744
16 | 15 0.000162 0.000488 0.095748 0.287984
17 | 16 0.000153 0.000491 0.090513 0.289950
18 | 17 0.000154 0.000469 0.090678 0.276581
19 | 18 0.000153 0.000459 0.090078 0.270971
20 | 19 0.000153 0.000456 0.090362 0.269108
21 | 20 0.000151 0.000459 0.089305 0.271003
22 | 21 0.000150 0.000453 0.088344 0.267084
23 | 22 0.000149 0.000452 0.087956 0.266692
24 | 23 0.000148 0.000458 0.087447 0.270484
25 | 24 0.000148 0.000455 0.087392 0.268672
26 | 25 0.000148 0.000455 0.087428 0.268560
27 | 26 0.000148 0.000455 0.087402 0.268202
28 | 27 0.000148 0.000453 0.087202 0.267527
29 | 28 0.000148 0.000452 0.087105 0.266771
30 | 29 0.000148 0.000452 0.087030 0.266676
31 | 30 0.000147 0.000451 0.086938 0.266237
32 | 31 0.000147 0.000453 0.086597 0.267294
33 | 32 0.000146 0.000459 0.086410 0.270723
34 | 33 0.000146 0.000457 0.086382 0.269869
35 | 34 0.000146 0.000452 0.085977 0.266907
36 | 35 0.000143 0.000429 0.084093 0.253342
37 | 36 0.000144 0.000368 0.084940 0.217333
38 | 37 0.000142 0.000364 0.083871 0.214880
39 | 38 0.000142 0.000352 0.083818 0.207474
40 | 39 0.000141 0.000350 0.083407 0.206647
41 | 40 0.000141 0.000351 0.083324 0.206813
42 | 41 0.000126 0.000351 0.074579 0.206900
43 | 42 0.000126 0.000351 0.074561 0.207022
44 | 43 0.000126 0.000351 0.074537 0.207120
45 | 44 0.000126 0.000351 0.074553 0.206925
46 | 45 0.000126 0.000349 0.074506 0.206105
47 | 46 0.000126 0.000343 0.074348 0.202640
48 | 47 0.000128 0.000364 0.075346 0.214996
49 | 48 0.000127 0.000358 0.075112 0.211343
50 | 49 0.000127 0.000357 0.075193 0.210394
51 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/Impulse_2D/matched_impulse_2D_connecting_arcs/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/Impulse_2D/matched_impulse_2D_connecting_arcs/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/Impulse_2D/matched_impulse_2D_connecting_arcs/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/Impulse_2D/matched_impulse_2D_connecting_arcs/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/Impulse_2D/matched_impulse_2D_connecting_arcs/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=-0.08473239280413442
6 | y_leading=0.022403335499445055
7 | z_leading=0.9899990158655203, 1.0099991265405566
8 | x_trailing=0.08454298831537332
9 | z_trailing=0.9899990158655203, 1.0099991265405566
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=0.059940520641195816
16 | theta_in=42.037024087144346
17 | theta_out=-42.06504662185789
18 | wedge_in=2.307140982224331
19 | wedge_out=2.3316931412337003
20 | radius_in=0.0013641830104343191
21 | radius_out=0.0014251123899721022
22 | dist_1=0.6490291571375406
23 | dist_2=0.5037628558755579
24 | dist_3=0.5067765964436024
25 | dist_4=0.651994356460542
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=GEOMETRY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
29 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/Impulse_2D/Impulse_2D.cfg
30 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/Impulse_2D/matched_impulse_2D_connecting_arcs/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000412 0.001028 0.243256 0.606749
3 | 2 0.000362 0.001169 0.213339 0.689699
4 | 3 0.000363 0.001185 0.214191 0.699048
5 | 4 0.000364 0.001175 0.214937 0.693015
6 | 5 0.000358 0.001146 0.211355 0.676365
7 | 6 0.000262 0.001009 0.154701 0.595519
8 | 7 0.000257 0.000973 0.151734 0.573860
9 | 8 0.000252 0.000920 0.148528 0.542732
10 | 9 0.000251 0.000949 0.147899 0.559637
11 | 10 0.000250 0.000957 0.147370 0.564415
12 | 11 0.000206 0.000949 0.121392 0.559903
13 | 12 0.000207 0.000926 0.122264 0.546204
14 | 13 0.000208 0.000920 0.122810 0.543064
15 | 14 0.000204 0.000919 0.120295 0.542051
16 | 15 0.000194 0.000891 0.114605 0.525551
17 | 16 0.000204 0.000838 0.120533 0.494144
18 | 17 0.000200 0.000813 0.118241 0.479449
19 | 18 0.000199 0.000795 0.117210 0.468834
20 | 19 0.000192 0.000746 0.113534 0.439890
21 | 20 0.000185 0.000695 0.109307 0.410014
22 | 21 0.000185 0.000672 0.109087 0.396225
23 | 22 0.000182 0.000682 0.107468 0.402212
24 | 23 0.000181 0.000685 0.106581 0.404299
25 | 24 0.000180 0.000683 0.106427 0.403230
26 | 25 0.000180 0.000680 0.106340 0.401038
27 | 26 0.000180 0.000674 0.106362 0.397829
28 | 27 0.000181 0.000663 0.106556 0.390985
29 | 28 0.000181 0.000646 0.107066 0.381136
30 | 29 0.000183 0.000637 0.107949 0.375944
31 | 30 0.000184 0.000639 0.108715 0.376961
32 | 31 0.000181 0.000642 0.107061 0.378803
33 | 32 0.000182 0.000654 0.107577 0.385855
34 | 33 0.000182 0.000652 0.107483 0.384579
35 | 34 0.000183 0.000646 0.107839 0.381275
36 | 35 0.000183 0.000643 0.108236 0.379585
37 | 36 0.000184 0.000643 0.108346 0.379547
38 | 37 0.000184 0.000643 0.108353 0.379578
39 | 38 0.000184 0.000644 0.108359 0.379647
40 | 39 0.000184 0.000644 0.108368 0.379732
41 | 40 0.000184 0.000644 0.108378 0.379785
42 | 41 0.000181 0.000642 0.106817 0.379004
43 | 42 0.000181 0.000642 0.106813 0.378874
44 | 43 0.000181 0.000641 0.106751 0.378419
45 | 44 0.000181 0.000640 0.106711 0.377646
46 | 45 0.000181 0.000640 0.106697 0.377489
47 | 46 0.000181 0.000639 0.106654 0.377058
48 | 47 0.000181 0.000638 0.106600 0.376569
49 | 48 0.000181 0.000639 0.106822 0.376875
50 | 49 0.000182 0.000637 0.107340 0.375547
51 | 50 0.000183 0.000637 0.107920 0.376022
52 | 51 0.000181 0.000639 0.106674 0.376865
53 | 52 0.000181 0.000642 0.106923 0.378607
54 | 53 0.000181 0.000642 0.106915 0.378580
55 | 54 0.000181 0.000641 0.106922 0.378411
56 | 55 0.000181 0.000640 0.107010 0.377819
57 | 56 0.000183 0.000637 0.107869 0.375957
58 | 57 0.000183 0.000638 0.107827 0.376175
59 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/.~lock.point_cloud_LS89.txt#:
--------------------------------------------------------------------------------
1 | ,robertoa,ntnu.mynet,12.10.2019 14:26,file:///home/robertoa/.config/libreoffice/4;
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/LS89_2D.cfg:
--------------------------------------------------------------------------------
1 | # ---------------------------------------------------------------------------- #
2 | # ---------------------- ParaBlade configuration file ------------------------ #
3 | # ---------------------------------------------------------------------------- #
4 |
5 | # Number of Dimensions :: 2 :: 3
6 | # Set NDIM = 2 for two-dimensional problems
7 | # Set NDIM = 3 for three-dimensional problems
8 | NDIM = 2
9 |
10 | # ---------------------------------------------------------------------------- #
11 | # ---------------------------------------------------------------------------- #
12 |
13 | # Number of Blades OPTIONS :: integer
14 | N_BLADES = 50
15 |
16 | # ---------------------------------------------------------------------------- #
17 | # ---------------------------------------------------------------------------- #
18 |
19 | # Number of blade sections used to create the blade OPTIONS :: integer
20 | # The value must be at least 2 (even for 2D cases)
21 | # Increase this value depending on the span-variation complexity of the blade
22 | N_SECTIONS = 2
23 |
24 | # ---------------------------------------------------------------------------- #
25 | # ---------------------------------------------------------------------------- #
26 |
27 | # Type of cascade OPTIONS :: LINEAR :: ANNULAR
28 | # Set CASCADE_TYPE = ANNULAR for an a annular cascade of blades (axisymmetric)
29 | # Set CASCADE_TYPE = LINEAR for a linear cascade of blades
30 | CASCADE_TYPE = LINEAR
31 |
32 | # ---------------------------------------------------------------------------- #
33 | # ---------------------------------------------------------------------------- #
34 |
35 | # Design variables for the meridional channel
36 | # Set a straight horizontal line for axial flow cascades
37 | # Set a straight vertical line for radial flow cascades
38 | # Set an arbitrary variation for mixed flow cascade
39 | x_leading = 0
40 | y_leading = 0.001
41 | z_leading = 0.99, 1.01
42 | x_trailing = 0.037
43 | z_trailing = 0.99, 1.01
44 | x_hub =
45 | z_hub =
46 | x_shroud =
47 | z_shroud =
48 |
49 | # ---------------------------------------------------------------------------- #
50 | # ---------------------------------------------------------------------------- #
51 |
52 | # # Design variables for a 2D section parametrization based on connecting arcs.
53 | # PARAMETRIZATION_TYPE = CONNECTING_ARCS
54 | # stagger = -55.0
55 | # theta_in = 6.00
56 | # theta_out = -75.00
57 | # wedge_in = 45.00
58 | # wedge_out = 6.00
59 | # radius_in = 0.100
60 | # radius_out = 0.018
61 | # dist_1 = 0.55
62 | # dist_2 = 0.60
63 | # dist_3 = 0.30
64 | # dist_4 = 0.30
65 |
66 | # Design variables for a 2D section parametrization based camberline/thickness
67 | PARAMETRIZATION_TYPE = CAMBER_THICKNESS
68 | stagger = -55.0
69 | theta_in = 6.00
70 | theta_out = -75.00
71 | radius_in = 0.100
72 | radius_out = 0.018
73 | dist_in = 0.50
74 | dist_out = 0.50
75 | thickness_upper_1 = 0.35
76 | thickness_upper_2 = 0.4
77 | thickness_upper_3 = 0.2
78 | thickness_upper_4 = 0.12
79 | thickness_upper_5 = 0.03
80 | thickness_upper_6 = 0.02
81 | thickness_lower_1 = 0.11
82 | thickness_lower_2 = 0.15
83 | thickness_lower_3 = 0.12
84 | thickness_lower_4 = 0.06
85 | thickness_lower_5 = 0.05
86 | thickness_lower_6 = 0.01
87 |
88 | # ---------------------------------------------------------------------------- #
89 | # ---------------------------------------------------------------------------- #
90 |
91 | # Plot format OPTION :: TECPLOT :: MATPLOTLIB :: INTERACTIVE
92 | PLOT_FORMAT = MATPLOTLIB
93 |
94 | # ---------------------------------------------------------------------------- #
95 | # ---------------------------------------------------------------------------- #
96 |
97 | # Operation type OPTION :: GEOMETRY :: SENSITIVITY
98 | OPERATION_TYPE = GEOMETRY
99 |
100 | # ---------------------------------------------------------------------------- #
101 | # ---------------------------------------------------------------------------- #
102 |
103 | # File with the coordinates of the blade surface
104 | PRESCRIBED_BLADE_FILENAME = MoveSurface_LS89.txt
105 |
106 | # ---------------------------------------------------------------------------- #
107 | # ---------------------------------------------------------------------------- #
108 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/documentation/.~lock.LS89_surface_coordinates.ods#:
--------------------------------------------------------------------------------
1 | ,robertoa,ntnu.mynet,12.10.2019 14:27,file:///home/robertoa/.config/libreoffice/4;
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/documentation/LS89TestCase.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/LS89_2D/documentation/LS89TestCase.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/documentation/LS89_surface_coordinates.ods:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/LS89_2D/documentation/LS89_surface_coordinates.ods
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/documentation/Tech_Note_0174.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/LS89_2D/documentation/Tech_Note_0174.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/documentation/arts1992.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/LS89_2D/documentation/arts1992.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/documentation/ijtpp-03-00020.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/LS89_2D/documentation/ijtpp-03-00020.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/matched_LS89_2D_camber_thickness/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/LS89_2D/matched_LS89_2D_camber_thickness/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/matched_LS89_2D_camber_thickness/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/LS89_2D/matched_LS89_2D_camber_thickness/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/matched_LS89_2D_camber_thickness/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=8.361134632329069e-05
6 | y_leading=0.0001994782223533869
7 | z_leading=0.9886475979717037, 1.008224498651439
8 | x_trailing=0.03686891245618088
9 | z_trailing=0.9856928046670047, 1.0130426468989449
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=-54.867910061919645
16 | theta_in=6.0453826231005205
17 | theta_out=-75.02636411603407
18 | radius_in=0.17042003563959363
19 | radius_out=0.011421843008191273
20 | dist_in=0.45015473712983184
21 | dist_out=0.5363453927710813
22 | thickness_upper_1=0.44352915978583546
23 | thickness_upper_2=0.3453794516579791
24 | thickness_upper_3=0.22385782049853545
25 | thickness_upper_4=0.10876019214194037
26 | thickness_upper_5=0.04386106888722407
27 | thickness_upper_6=0.011910329276044719
28 | thickness_lower_1=0.08377677839285101
29 | thickness_lower_2=0.17031408002175197
30 | thickness_lower_3=0.1156410004544893
31 | thickness_lower_4=0.040777476747564816
32 | thickness_lower_5=0.03519886838615371
33 | thickness_lower_6=0.026317693654129587
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface_LS89.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/LS89_2D/camber_thickness.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/matched_LS89_2D_camber_thickness/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000040 0.000252 0.109223 0.684662
3 | 2 0.000040 0.000252 0.109466 0.684107
4 | 3 0.000040 0.000252 0.109743 0.683722
5 | 4 0.000040 0.000252 0.109706 0.685096
6 | 5 0.000040 0.000250 0.109895 0.679827
7 | 6 0.000041 0.000247 0.110325 0.671787
8 | 7 0.000041 0.000248 0.111475 0.672516
9 | 8 0.000041 0.000249 0.111640 0.676680
10 | 9 0.000041 0.000251 0.110875 0.681420
11 | 10 0.000041 0.000252 0.110532 0.683406
12 | 11 0.000040 0.000251 0.109221 0.680418
13 | 12 0.000040 0.000250 0.109480 0.678272
14 | 13 0.000040 0.000249 0.109602 0.675886
15 | 14 0.000040 0.000248 0.109654 0.673533
16 | 15 0.000041 0.000248 0.110032 0.672371
17 | 16 0.000041 0.000249 0.110329 0.677528
18 | 17 0.000041 0.000250 0.110856 0.677743
19 | 18 0.000041 0.000251 0.110032 0.680778
20 | 19 0.000040 0.000249 0.109959 0.676614
21 | 20 0.000040 0.000249 0.109979 0.676107
22 | 21 0.000040 0.000249 0.108695 0.675365
23 | 22 0.000040 0.000248 0.108537 0.673336
24 | 23 0.000040 0.000248 0.108439 0.674282
25 | 24 0.000040 0.000248 0.108726 0.673980
26 | 25 0.000040 0.000248 0.109534 0.672560
27 | 26 0.000041 0.000246 0.110324 0.668939
28 | 27 0.000041 0.000246 0.110873 0.667213
29 | 28 0.000041 0.000246 0.110157 0.667244
30 | 29 0.000041 0.000246 0.110155 0.667137
31 | 30 0.000041 0.000246 0.110240 0.667122
32 | 31 0.000040 0.000245 0.108187 0.666784
33 | 32 0.000040 0.000245 0.109376 0.666310
34 | 33 0.000040 0.000245 0.109432 0.665612
35 | 34 0.000041 0.000244 0.110100 0.661366
36 | 35 0.000041 0.000242 0.110884 0.658476
37 | 36 0.000041 0.000241 0.110972 0.654112
38 | 37 0.000041 0.000242 0.110527 0.656805
39 | 38 0.000040 0.000243 0.109966 0.659215
40 | 39 0.000040 0.000243 0.109766 0.659935
41 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/matched_LS89_2D_connecting_arcs/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/LS89_2D/matched_LS89_2D_connecting_arcs/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/matched_LS89_2D_connecting_arcs/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/LS89_2D/matched_LS89_2D_connecting_arcs/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/matched_LS89_2D_connecting_arcs/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=-0.00024518044518671974
6 | y_leading=0.0009083143941403838
7 | z_leading=1.0131822154562276, 0.9762073931989529
8 | x_trailing=0.036943605954537426
9 | z_trailing=1.021548703917865, 0.9692313380925993
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=-54.161254582307244
16 | theta_in=6.838806099282796
17 | theta_out=-70.00248893350117
18 | wedge_in=43.8992904054484
19 | wedge_out=5.174935488115172
20 | radius_in=0.12626072233171695
21 | radius_out=0.01635369673908431
22 | dist_1=0.517027489262191
23 | dist_2=0.5546457514656288
24 | dist_3=0.2736671210710953
25 | dist_4=0.28586059356500954
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=GEOMETRY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface_LS89.txt
29 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/LS89_2D/connecting_arcs.cfg
30 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/LS89_2D/matched_LS89_2D_connecting_arcs/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000068 0.000381 0.181721 1.023704
3 | 2 0.000068 0.000380 0.181671 1.021004
4 | 3 0.000068 0.000379 0.181578 1.019109
5 | 4 0.000068 0.000379 0.181534 1.020330
6 | 5 0.000068 0.000377 0.181795 1.013331
7 | 6 0.000068 0.000375 0.181857 1.008277
8 | 7 0.000068 0.000374 0.181519 1.005568
9 | 8 0.000068 0.000372 0.182454 0.999877
10 | 9 0.000068 0.000372 0.182392 1.000718
11 | 10 0.000068 0.000373 0.182549 1.001624
12 | 11 0.000065 0.000373 0.175071 1.001811
13 | 12 0.000065 0.000373 0.174915 1.003655
14 | 13 0.000065 0.000373 0.173663 1.003032
15 | 14 0.000065 0.000369 0.175211 0.992718
16 | 15 0.000065 0.000364 0.175834 0.979003
17 | 16 0.000065 0.000367 0.174586 0.986842
18 | 17 0.000065 0.000367 0.174693 0.986680
19 | 18 0.000065 0.000367 0.174776 0.986610
20 | 19 0.000065 0.000367 0.174904 0.987455
21 | 20 0.000065 0.000368 0.174861 0.990560
22 | 21 0.000059 0.000371 0.157415 0.998832
23 | 22 0.000058 0.000384 0.156105 1.031859
24 | 23 0.000058 0.000382 0.155673 1.027887
25 | 24 0.000058 0.000384 0.155562 1.031528
26 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/NASA_R67/matched_NASA_R67_camber_thickness/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/NASA_R67/matched_NASA_R67_camber_thickness/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/NASA_R67/matched_NASA_R67_camber_thickness/figures/view_3D.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/NASA_R67/matched_NASA_R67_camber_thickness/figures/view_3D.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/NASA_R67/matched_NASA_R67_camber_thickness/figures/view_xR.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/NASA_R67/matched_NASA_R67_camber_thickness/figures/view_xR.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/NASA_R67/matched_NASA_R67_camber_thickness/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/NASA_R67/matched_NASA_R67_camber_thickness/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/NASA_R67/matched_NASA_R67_camber_thickness/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=3.0
2 | N_BLADES=22.0
3 | N_SECTIONS=11.0
4 | CASCADE_TYPE=ANNULAR
5 | x_leading=-0.0012155279123935352, 0.006176324662465179, 0.01708538732729608, 0.023756659562699234
6 | y_leading=-0.0001033103766385179, 0.0008143458501048216, -0.007637195222788278, 0.0003115686159604824, 0.0006503356577209094
7 | z_leading=0.09571594660277238, 0.1519595273899528, 0.20441028580880352, 0.2552490016794651
8 | x_trailing=0.0896973230037492, 0.08953833624816333, 0.0777341660765873, 0.06895074710692276, 0.06516138348163966
9 | z_trailing=0.1179393379309016, 0.16173484946791944, 0.20107889424771921, 0.24823231682985508
10 | x_hub=0.02277682149858063, 0.06539877366490639
11 | z_hub=0.1004741709762602, 0.11660641095343552
12 | x_shroud=0.030257587606168528, 0.05088914200910274
13 | z_shroud=0.2558188066311746, 0.2504312362085787
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=12.802998329110414, 23.806203890937148, 48.93936961643144, 57.484491233709434, 63.13210286638399
16 | theta_in=37.8894148690435, 40.08625936174829, 40.373263273554265, 30.04016960894731
17 | theta_out=-19.314215800043222, 15.071074389644751, 40.09413120209163, 44.82535993236976
18 | radius_in=0.0006693359494975922, 0.0018928674557306228, 0.0019449153991979709, 0.0008739350479142291
19 | radius_out=0.0014997139991203107, 0.00010000000000000219, 0.00010000000000000166, 0.0004386091425299807
20 | dist_in=0.3371973356939866, 0.2646650076925527, 0.332498891792417, 0.3613013989627863
21 | dist_out=0.36112611080317664, 0.32325392331261366, 0.5112249157259443, 0.4836145113992993
22 | thickness_upper_1=0.002546465411929295, 0.019075829292213346, 0.00010000000000000018, 0.02313819261938296
23 | thickness_upper_2=0.01779346609002048, 0.022536871245423685, 0.01975140550550291, 0.03503950879069074
24 | thickness_upper_3=0.042546699459077235, 0.02012814072142602, 0.01320391021275751, 0.02447215343886261
25 | thickness_upper_4=0.05353048483160095, 0.015679121952556684, 0.028827646857360504, 0.010367378479338652
26 | thickness_upper_5=0.03787517131212501, 0.00869029932624595, 0.00010000000000000308, 0.024266582511949936
27 | thickness_upper_6=0.019506134409369012, 0.020452763331955483, 0.00010000000000000216, 0.005654341050033827
28 | thickness_lower_1=0.014055042472713537, 0.022552625184504422, 0.00010000000000000018, 0.00010000000000000021
29 | thickness_lower_2=0.0326815541481784, 0.04563970917975673, 0.0001, 0.00010000000000000071
30 | thickness_lower_3=0.040333843876396595, 0.08326935094861851, 0.005368580072629134, 0.032458763702131306
31 | thickness_lower_4=0.03619840036020486, 0.07497402804237907, 0.03879799161959874, 0.04185795862113147
32 | thickness_lower_5=0.03047033837772709, 0.04944264572312122, 0.046517691308877396, 0.03759410318533932
33 | thickness_lower_6=0.0004262488176859667, 0.023030461111436553, 0.013217793581095231, 0.023686849524389257
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface_NASA_R67.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/NASA_R67/ct.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/NASA_R67/matched_NASA_R67_connecting_arcs/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/NASA_R67/matched_NASA_R67_connecting_arcs/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/NASA_R67/matched_NASA_R67_connecting_arcs/figures/view_3D.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/NASA_R67/matched_NASA_R67_connecting_arcs/figures/view_3D.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/NASA_R67/matched_NASA_R67_connecting_arcs/figures/view_xR.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/NASA_R67/matched_NASA_R67_connecting_arcs/figures/view_xR.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/NASA_R67/matched_NASA_R67_connecting_arcs/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/NASA_R67/matched_NASA_R67_connecting_arcs/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/NASA_R67/matched_NASA_R67_connecting_arcs/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=3.0
2 | N_BLADES=22.0
3 | N_SECTIONS=11.0
4 | CASCADE_TYPE=ANNULAR
5 | x_leading=-0.001091975971544587, 0.005915576472428764, 0.017251504179262092, 0.023658800893557458
6 | y_leading=5.922332733668811e-05, 0.0012299738751488261, -0.007342663007348979, 0.000495545348705113, 0.0009425639566908417
7 | z_leading=0.09583017877121913, 0.15146095335492338, 0.20495457559472188, 0.25513612544600833
8 | x_trailing=0.0900573280886447, 0.08953741532701939, 0.07724101933769663, 0.06894316172910198, 0.06528595444343062
9 | z_trailing=0.11774903510728019, 0.16240398198644823, 0.2003944687926655, 0.24849332829365994
10 | x_hub=0.02288311695882059, 0.054976805023964015
11 | z_hub=0.09980851906650999, 0.11452347847691088
12 | x_shroud=0.030120753461393625, 0.04343681439203948
13 | z_shroud=0.2561743965452953, 0.2517602114135987
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=12.442272332777126, 23.718970189681407, 48.45036080878982, 57.446148233011264, 62.9315920398581
16 | theta_in=34.04632588701527, 34.148974204131264, 48.126082280409236, 47.824922141442016
17 | theta_out=-30.404466142708664, 38.8805070675493, 57.57638229877245, 63.90342978527131
18 | wedge_in=6.754372294986805, 10.227223721094058, 0.7316170858822252, 0.7941459691879553
19 | wedge_out=5.949474865334741, 14.141758907498378, 2.7935746687255785, 4.880860165053148
20 | radius_in=0.0030884852275925353, 0.00842536285026836, 0.0008813161299020374, 0.010518133252155702
21 | radius_out=0.0054040161194850445, 0.006811573317477172, 0.0001, 0.0024571589317396157
22 | dist_1=0.311858825377879, 0.33550468657001786, 0.31710651289030245, 0.34218851063362626
23 | dist_2=0.37864065409172637, 0.35763620653233286, 0.2401348677832207, 0.3153549879148357
24 | dist_3=0.19681796862935427, 0.03937241740803259, 0.4440116675828621, 0.4847663825939098
25 | dist_4=0.35019566572791816, 0.117418464503734, 0.3250118801204164, 0.2754355975712123
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=GEOMETRY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface_NASA_R67.txt
29 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/NASA_R67/ca.cfg
30 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/STD10_2D/STD10_2D.cfg:
--------------------------------------------------------------------------------
1 | # ---------------------------------------------------------------------------- #
2 | # ---------------------- ParaBlade configuration file ------------------------ #
3 | # ---------------------------------------------------------------------------- #
4 |
5 | # Number of Dimensions :: 2 :: 3
6 | # Set NDIM = 2 for two-dimensional problems
7 | # Set NDIM = 3 for three-dimensional problems
8 | NDIM = 2
9 |
10 | # ---------------------------------------------------------------------------- #
11 | # ---------------------------------------------------------------------------- #
12 |
13 | # Number of Blades OPTIONS :: integer
14 | N_BLADES = 50
15 |
16 | # ---------------------------------------------------------------------------- #
17 | # ---------------------------------------------------------------------------- #
18 |
19 | # Number of blade sections used to create the blade OPTIONS :: integer
20 | # The value must be at least 2 (even for 2D cases)
21 | # Increase this value depending on the span-variation complexity of the blade
22 | N_SECTIONS = 2
23 |
24 | # ---------------------------------------------------------------------------- #
25 | # ---------------------------------------------------------------------------- #
26 |
27 | # Type of cascade OPTIONS :: LINEAR :: ANNULAR
28 | # Set CASCADE_TYPE = ANNULAR for an a annular cascade of blades (axisymmetric)
29 | # Set CASCADE_TYPE = LINEAR for a linear cascade of blades
30 | CASCADE_TYPE = LINEAR
31 |
32 | # ---------------------------------------------------------------------------- #
33 | # ---------------------------------------------------------------------------- #
34 |
35 | # Design variables for the meridional channel
36 | # Set a straight horizontal line for axial flow cascades
37 | # Set a straight vertical line for radial flow cascades
38 | # Set an arbitrary variation for mixed flow cascade
39 | x_leading = -0.0005
40 | y_leading = 0.00040
41 | z_leading = 0.99, 1.01
42 | x_trailing = 0.0702
43 | z_trailing = 0.99, 1.01
44 | x_hub =
45 | z_hub =
46 | x_shroud =
47 | z_shroud =
48 |
49 | # ---------------------------------------------------------------------------- #
50 | # ---------------------------------------------------------------------------- #
51 |
52 | # # Design variables for a 2D section parametrization based on connecting arcs.
53 | # PARAMETRIZATION_TYPE = CONNECTING_ARCS
54 | # stagger = 44.70
55 | # theta_in = 49.00
56 | # theta_out = 34.40
57 | # wedge_in = 23.00
58 | # wedge_out = 6.00
59 | # radius_in = 0.010
60 | # radius_out = 0.001
61 | # dist_1 = 0.30
62 | # dist_2 = 0.05
63 | # dist_3 = 0.25
64 | # dist_4 = 0.30
65 |
66 | # Design variables for a 2D section parametrization based camberline/thickness
67 | PARAMETRIZATION_TYPE = CAMBER_THICKNESS
68 | stagger = 44.70
69 | theta_in = 55.00
70 | theta_out = 34.40
71 | radius_in = 0.010
72 | radius_out = 0.0005
73 | dist_in = 0.50
74 | dist_out = 0.50
75 | thickness_upper_1 = 0.05
76 | thickness_upper_2 = 0.05
77 | thickness_upper_3 = 0.05
78 | thickness_upper_4 = 0.04
79 | thickness_upper_5 = 0.02
80 | thickness_upper_6 = 0.005
81 | thickness_lower_1 = 0.05
82 | thickness_lower_2 = 0.05
83 | thickness_lower_3 = 0.04
84 | thickness_lower_4 = 0.04
85 | thickness_lower_5 = 0.01
86 | thickness_lower_6 = 0.005
87 |
88 |
89 | # ---------------------------------------------------------------------------- #
90 | # ---------------------------------------------------------------------------- #
91 |
92 | # Plot format OPTION :: TECPLOT :: MATPLOTLIB :: INTERACTIVE
93 | PLOT_FORMAT = MATPLOTLIB
94 |
95 | # ---------------------------------------------------------------------------- #
96 | # ---------------------------------------------------------------------------- #
97 |
98 | # Operation type OPTION :: GEOMETRY :: SENSITIVITY
99 | OPERATION_TYPE = GEOMETRY
100 |
101 | # ---------------------------------------------------------------------------- #
102 | # ---------------------------------------------------------------------------- #
103 |
104 | # File with the coordinates of the blade surface
105 | PRESCRIBED_BLADE_FILENAME = MoveSurface_STD10_2D.txt
106 |
107 | # ---------------------------------------------------------------------------- #
108 | # ---------------------------------------------------------------------------- #
109 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/STD10_2D/matched_STD10_2D_camber_thickness/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/STD10_2D/matched_STD10_2D_camber_thickness/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/STD10_2D/matched_STD10_2D_camber_thickness/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/STD10_2D/matched_STD10_2D_camber_thickness/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/STD10_2D/matched_STD10_2D_camber_thickness/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=-0.0002881386699377153
6 | y_leading=-1.8992364860958443e-06
7 | z_leading=0.9913990461919631, 1.0103865036192632
8 | x_trailing=0.07012313477782785
9 | z_trailing=0.988581897503226, 1.00940294816519
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=44.956874209825585
16 | theta_in=54.99962844197571
17 | theta_out=34.400505698071356
18 | radius_in=0.005968573409683555
19 | radius_out=0.0001
20 | dist_in=0.5062760432270904
21 | dist_out=0.5054211642606894
22 | thickness_upper_1=0.043950329242058425
23 | thickness_upper_2=0.04655620890404631
24 | thickness_upper_3=0.0473015778573258
25 | thickness_upper_4=0.03565894492066363
26 | thickness_upper_5=0.02341170416527996
27 | thickness_upper_6=0.01072957077071181
28 | thickness_lower_1=0.035280970620974066
29 | thickness_lower_2=0.03884521376699636
30 | thickness_lower_3=0.04061901107727149
31 | thickness_lower_4=0.029819202706964525
32 | thickness_lower_5=0.019431506480943547
33 | thickness_lower_6=0.0016127097291790862
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface_STD10_2D.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/STD10_2D/ct.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/STD10_2D/matched_STD10_2D_camber_thickness/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000014 0.000177 0.020087 0.251328
3 | 2 0.000014 0.000174 0.019956 0.246513
4 | 3 0.000014 0.000172 0.020389 0.244124
5 | 4 0.000015 0.000171 0.020611 0.242321
6 | 5 0.000015 0.000157 0.020614 0.223305
7 | 6 0.000015 0.000150 0.021052 0.213034
8 | 7 0.000015 0.000140 0.021449 0.198673
9 | 8 0.000015 0.000139 0.021255 0.197521
10 | 9 0.000015 0.000135 0.021252 0.191839
11 | 10 0.000015 0.000135 0.021155 0.191232
12 | 11 0.000014 0.000133 0.019567 0.189261
13 | 12 0.000014 0.000133 0.020165 0.187940
14 | 13 0.000015 0.000132 0.020737 0.186779
15 | 14 0.000015 0.000134 0.020955 0.189506
16 | 15 0.000014 0.000130 0.020190 0.183893
17 | 16 0.000014 0.000128 0.020413 0.181104
18 | 17 0.000014 0.000128 0.020276 0.181945
19 | 18 0.000014 0.000124 0.020092 0.176178
20 | 19 0.000014 0.000114 0.020015 0.161504
21 | 20 0.000013 0.000107 0.018247 0.151817
22 | 21 0.000011 0.000098 0.016064 0.139668
23 | 22 0.000012 0.000080 0.016636 0.113749
24 | 23 0.000012 0.000077 0.016532 0.109519
25 | 24 0.000012 0.000076 0.016321 0.108473
26 | 25 0.000011 0.000076 0.016270 0.107780
27 | 26 0.000012 0.000074 0.016719 0.104866
28 | 27 0.000012 0.000074 0.016545 0.104240
29 | 28 0.000012 0.000073 0.016429 0.103970
30 | 29 0.000012 0.000072 0.016450 0.102616
31 | 30 0.000012 0.000070 0.016560 0.099934
32 | 31 0.000011 0.000066 0.015777 0.093567
33 | 32 0.000011 0.000065 0.015894 0.091945
34 | 33 0.000011 0.000063 0.016036 0.089349
35 | 34 0.000011 0.000062 0.016096 0.088610
36 | 35 0.000011 0.000061 0.015896 0.086319
37 | 36 0.000011 0.000060 0.015921 0.084440
38 | 37 0.000011 0.000059 0.015948 0.083853
39 | 38 0.000011 0.000059 0.015944 0.083512
40 | 39 0.000011 0.000058 0.016014 0.082280
41 | 40 0.000011 0.000058 0.016063 0.082117
42 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/STD10_2D/matched_STD10_2D_connecting_arcs/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/STD10_2D/matched_STD10_2D_connecting_arcs/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/STD10_2D/matched_STD10_2D_connecting_arcs/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/STD10_2D/matched_STD10_2D_connecting_arcs/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/STD10_2D/matched_STD10_2D_connecting_arcs/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=-0.00040816299951692376
6 | y_leading=0.0012597489449267388
7 | z_leading=0.9876778391764418, 0.947755694880661
8 | x_trailing=0.07018366944642124
9 | z_trailing=0.9892540740037896, 0.9389944115582711
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=44.1658136469853
16 | theta_in=54.903454459684845
17 | theta_out=33.122562220247545
18 | wedge_in=9.515664358667742
19 | wedge_out=2.1596878684326115
20 | radius_in=0.01704638860083577
21 | radius_out=0.00293112520837936
22 | dist_1=0.2811041363026273
23 | dist_2=0.1821844859431523
24 | dist_3=0.39593946066771235
25 | dist_4=0.38293779070161565
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=GEOMETRY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface_STD10_2D.txt
29 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/STD10_2D/ca.cfg
30 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/prismatic_radial/output_matching/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=3.0
2 | N_BLADES=50.0
3 | N_SECTIONS=3.0
4 | CASCADE_TYPE=ANNULAR
5 | x_leading=-2.675771321056722e-05, 0.008099826436585253
6 | y_leading=-0.00036561247108105917
7 | x_trailing=-2.9366705942904522e-05, 0.00810022551024079
8 | z_leading=-0.11155886531800262
9 | z_trailing=-0.0899297075625686
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=-15.494741861046602
16 | theta_in=55.00784363162827
17 | theta_out=-60.2902835101404
18 | radius_in=0.0074787775131628445
19 | radius_out=0.005350165937876756
20 | wedge_in=16.617437575384375
21 | wedge_out=10.555405738152352
22 | dist_1=1.2530850316395783
23 | dist_2=0.5796130999977448
24 | dist_3=0.411269864484681
25 | dist_4=0.22113743765802796
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=GEOMETRY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
29 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/prismatic_radial/prismatic_radial.cfg
30 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/prismatic_radial/output_matching/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000192 0.000517 0.879595 2.372391
3 | 2 0.000165 0.000471 0.757274 2.161508
4 | 3 0.000166 0.000507 0.759861 2.325568
5 | 4 0.000165 0.000507 0.757956 2.325375
6 | 5 0.000170 0.000508 0.780646 2.331439
7 | 6 0.000169 0.000526 0.773829 2.413412
8 | 7 0.000166 0.000517 0.761902 2.371512
9 | 8 0.000166 0.000517 0.759884 2.372008
10 | 9 0.000165 0.000516 0.756017 2.368319
11 | 10 0.000147 0.000549 0.676004 2.518228
12 | 11 0.000159 0.000344 0.728387 1.578490
13 | 12 0.000121 0.000378 0.556429 1.734090
14 | 13 0.000119 0.000382 0.548121 1.750077
15 | 14 0.000119 0.000384 0.545416 1.760649
16 | 15 0.000119 0.000379 0.545889 1.740464
17 | 16 0.000119 0.000380 0.545559 1.744585
18 | 17 0.000119 0.000381 0.545423 1.746605
19 | 18 0.000119 0.000382 0.544961 1.750417
20 | 19 0.000118 0.000382 0.543063 1.754450
21 | 20 0.000118 0.000379 0.539754 1.739248
22 | 21 0.000109 0.000368 0.501962 1.686549
23 | 22 0.000110 0.000356 0.505756 1.633780
24 | 23 0.000110 0.000349 0.505965 1.602828
25 | 24 0.000110 0.000353 0.503946 1.618327
26 | 25 0.000109 0.000355 0.502163 1.628347
27 | 26 0.000108 0.000363 0.497585 1.663223
28 | 27 0.000108 0.000363 0.497390 1.667222
29 | 28 0.000108 0.000364 0.497189 1.667983
30 | 29 0.000108 0.000364 0.497239 1.667659
31 | 30 0.000108 0.000363 0.497212 1.665042
32 | 31 0.000106 0.000360 0.486692 1.651370
33 | 32 0.000107 0.000354 0.489435 1.624180
34 | 33 0.000106 0.000351 0.487839 1.609735
35 | 34 0.000105 0.000336 0.482962 1.539197
36 | 35 0.000104 0.000282 0.474821 1.294716
37 | 36 0.000105 0.000262 0.480363 1.201811
38 | 37 0.000105 0.000263 0.479387 1.204983
39 | 38 0.000103 0.000262 0.470563 1.199583
40 | 39 0.000101 0.000244 0.463753 1.118853
41 | 40 0.000101 0.000240 0.463334 1.101053
42 | 41 0.000090 0.000240 0.412436 1.102814
43 | 42 0.000090 0.000241 0.414340 1.104403
44 | 43 0.000090 0.000241 0.413281 1.104695
45 | 44 0.000089 0.000239 0.409890 1.097241
46 | 45 0.000089 0.000238 0.409285 1.089830
47 | 46 0.000090 0.000231 0.410959 1.058069
48 | 47 0.000090 0.000228 0.413295 1.044771
49 | 48 0.000090 0.000222 0.412731 1.020222
50 | 49 0.000090 0.000225 0.411627 1.033280
51 | 50 0.000090 0.000225 0.411159 1.031746
52 | 51 0.000085 0.000225 0.389345 1.029996
53 | 52 0.000085 0.000222 0.389771 1.020121
54 | 53 0.000085 0.000222 0.388777 1.016222
55 | 54 0.000084 0.000220 0.385622 1.007971
56 | 55 0.000085 0.000216 0.387619 0.991428
57 | 56 0.000084 0.000217 0.387529 0.996409
58 | 57 0.000084 0.000217 0.387299 0.995831
59 | 58 0.000084 0.000217 0.385889 0.993695
60 | 59 0.000083 0.000216 0.382883 0.992005
61 | 60 0.000083 0.000217 0.382276 0.993513
62 | 61 0.000081 0.000217 0.370452 0.997580
63 | 62 0.000081 0.000222 0.372198 1.019651
64 | 63 0.000081 0.000219 0.369746 1.006412
65 | 64 0.000081 0.000219 0.369712 1.004445
66 | 65 0.000081 0.000218 0.369984 1.001539
67 | 66 0.000081 0.000218 0.369984 1.001727
68 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/prismatic_radial/prismatic_radial.cfg:
--------------------------------------------------------------------------------
1 | # ---------------------------------------------------------------------------- #
2 | # ---------------------- ParaBlade configuration file ------------------------ #
3 | # ---------------------------------------------------------------------------- #
4 |
5 | # Number of Dimensions :: 2 :: 3
6 | # Set NDIM = 2 for two-dimensional problems
7 | # Set NDIM = 3 for three-dimensional problems
8 | NDIM = 3
9 |
10 | # ---------------------------------------------------------------------------- #
11 | # ---------------------------------------------------------------------------- #
12 |
13 | # Number of Blades OPTIONS :: integer
14 | N_BLADES=50.0
15 |
16 | # ---------------------------------------------------------------------------- #
17 | # ---------------------------------------------------------------------------- #
18 |
19 |
20 | # Number of blade sections used to create the blade OPTIONS :: integer
21 | # The value must be at least 2 in the current version of ParaBlade
22 | # Increase this value depending on the span-variation complexity of the blade
23 | N_SECTIONS = 3
24 |
25 | # ---------------------------------------------------------------------------- #
26 | # ---------------------------------------------------------------------------- #
27 |
28 | # Type of cascade OPTIONS :: LINEAR :: ANNULAR
29 | # Set CASCADE_TYPE = ANNULAR for an a annular cascade of blades (axisymmetric)
30 | # Set CASCADE_TYPE = LINEAR for a linear cascade of blades
31 | CASCADE_TYPE = ANNULAR
32 |
33 | # ---------------------------------------------------------------------------- #
34 | # ---------------------------------------------------------------------------- #
35 |
36 | # Design variables for the meridional channel
37 | # Set a straight horizontal line for axial flow cascades
38 | # Set a straight vertical line for radial flow cascades
39 | # Set an arbitrary variation for mixed flow cascade
40 | x_leading = 0.000, 0.008
41 | y_leading = -0.0004
42 | x_trailing = 0.000, 0.008
43 | z_leading = -0.1118
44 | z_trailing = -0.090
45 | x_hub =
46 | z_hub =
47 | x_shroud =
48 | z_shroud =
49 |
50 | # ---------------------------------------------------------------------------- #
51 | # ---------------------------------------------------------------------------- #
52 |
53 | # Design variables for a 2D section parametrization based on connecting arcs.
54 | PARAMETRIZATION_TYPE = CONNECTING_ARCS
55 | stagger = -15.50
56 | theta_in = 52.00
57 | theta_out = -62.00
58 | radius_in= 0.010
59 | radius_out = 0.009
60 | wedge_in=20.00
61 | wedge_out= 8
62 | dist_1= 1.25
63 | dist_2 = 0.61
64 | dist_3=0.45
65 | dist_4=0.2
66 |
67 |
68 | # ---------------------------------------------------------------------------- #
69 | # ---------------------------------------------------------------------------- #
70 |
71 | # Plot format OPTION :: TECPLOT :: MATPLOTLIB :: INTERACTIVE
72 | PLOT_FORMAT = MATPLOTLIB
73 |
74 | # ---------------------------------------------------------------------------- #
75 | # ---------------------------------------------------------------------------- #
76 |
77 | # Operation type OPTION :: GEOMETRY :: SENSITIVITY
78 | OPERATION_TYPE = GEOMETRY
79 |
80 | # ---------------------------------------------------------------------------- #
81 | # ---------------------------------------------------------------------------- #
82 |
83 | # File with the coordinates of the blade surface
84 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
85 | Config_Path=/media/nitish/Data/Active_F3D/Triogen_New/matched_parametrization.cfg
86 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/propeller_blade/matched_propeller_3D_coarse_connecting_arcs/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=3.0
2 | N_BLADES=50.0
3 | N_SECTIONS=10.0
4 | CASCADE_TYPE=ANNULAR
5 | x_leading=-0.011429190025924156, -0.006731453562320866, -0.008108877180455047, -0.002181508329012119
6 | y_leading=-0.00529097367493336, -0.006394207402812184, -0.008023578633639738, -0.01292657424462299, -0.011208788833512971, -0.005635423311486824
7 | z_leading=0.03730850982008724, 0.20328324284140323
8 | x_trailing=0.01643999826082527, 0.008262396592174178, 0.014386605470678616, 0.003641296558158832
9 | z_trailing=0.04389692179306069, 0.20349867554703213
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=30.350182588793714, 34.93698523301318, 44.833049749257235, 60.15863947957854, 64.93580800088961, 66.40444578002098
16 | theta_in=31.931209462562762, 47.48402739820537, 79.09908041359046, 80.5882070272479
17 | theta_out=34.91479430852877, 39.06730689735701, 45.92027810329075, 58.93773953884383
18 | radius_in=0.1301150478890531, 0.00010000000000000296, 0.053654206289561
19 | radius_out=0.015181830922863031, 0.008767288122481188, 0.010438533268233529
20 | wedge_in=12.491383346495082, 5.643418458856376, 1.800004463517083
21 | wedge_out=3.6438302347847324, 0.6823261384637395, 2.4094644925256463
22 | dist_1=0.33327425155354645, 0.47949108566543686, 0.31619401920372653
23 | dist_2=0.30054983337511276, 0.0001, 0.2623477003279483
24 | dist_3=0.2942092516692463, 0.13003136004004198, 0.3483720122226439
25 | dist_4=0.3362421785401458, 0.22221128089481917, 0.2624233644129202
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=GEOMETRY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
29 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/propeller_blade/propeller_blade.cfg
30 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/propeller_blade/propeller_blade.cfg:
--------------------------------------------------------------------------------
1 | # ---------------------------------------------------------------------------- #
2 | # ---------------------- ParaBlade configuration file ------------------------ #
3 | # ---------------------------------------------------------------------------- #
4 |
5 | # Number of Dimensions :: 2 :: 3
6 | # Set NDIM = 2 for two-dimensional problems
7 | # Set NDIM = 3 for three-dimensional problems
8 | NDIM = 3
9 |
10 | # ---------------------------------------------------------------------------- #
11 | # ---------------------------------------------------------------------------- #
12 |
13 | # Number of Blades OPTIONS :: integer
14 | N_BLADES=50.0
15 |
16 | # ---------------------------------------------------------------------------- #
17 | # ---------------------------------------------------------------------------- #
18 |
19 |
20 | # Number of blade sections used to create the blade OPTIONS :: integer
21 | # The value must be at least 2 in the current version of ParaBlade
22 | # Increase this value depending on the span-variation complexity of the blade
23 | N_SECTIONS = 10
24 |
25 | # ---------------------------------------------------------------------------- #
26 | # ---------------------------------------------------------------------------- #
27 |
28 | # Type of cascade OPTIONS :: LINEAR :: ANNULAR
29 | # Set CASCADE_TYPE = ANNULAR for an a annular cascade of blades (axisymmetric)
30 | # Set CASCADE_TYPE = LINEAR for a linear cascade of blades
31 | CASCADE_TYPE = ANNULAR
32 |
33 | # ---------------------------------------------------------------------------- #
34 | # ---------------------------------------------------------------------------- #
35 |
36 | # Design variables for the meridional channel
37 | # Set a straight horizontal line for axial flow cascades
38 | # Set a straight vertical line for radial flow cascades
39 | # Set an arbitrary variation for mixed flow cascade
40 | x_leading = -0.0115, -0.0065, -0.0072, -0.0021
41 | y_leading = -0.005, -0.005, -0.007, -0.0130, -0.0115, -0.0055
42 | z_leading = 0.0373, 0.2033
43 | x_trailing = 0.01593, 0.0095, 0.013, 0.0033
44 | z_trailing = 0.0438, 0.2033
45 | x_hub =
46 | z_hub =
47 | x_shroud =
48 | z_shroud =
49 |
50 | # ---------------------------------------------------------------------------- #
51 | # ---------------------------------------------------------------------------- #
52 |
53 | # Design variables for a 2D section parametrization based on connecting arcs.
54 | PARAMETRIZATION_TYPE = CONNECTING_ARCS
55 | stagger = 30.0, 32, 43, 62, 66, 67.2
56 | theta_in = 30.0, 40, 70, 75.00
57 | theta_out = 32.0, 40, 50, 63
58 | radius_in= 0.15, 0.10, 0.040
59 | radius_out = 0.01, 0.01, 0.009
60 | wedge_in = 15, 13, 11
61 | wedge_out = 5, 4, 3
62 | dist_1 = 0.3, 0.35, 0.4
63 | dist_2 = 0.3, 0.25, 0.2
64 | dist_3 = 0.3, 0.25, 0.2
65 | dist_4 = 0.3, 0.25, 0.2
66 |
67 |
68 | # ---------------------------------------------------------------------------- #
69 | # ---------------------------------------------------------------------------- #
70 |
71 | # Plot format OPTION :: TECPLOT :: MATPLOTLIB :: INTERACTIVE
72 | PLOT_FORMAT = MATPLOTLIB
73 |
74 | # ---------------------------------------------------------------------------- #
75 | # ---------------------------------------------------------------------------- #
76 |
77 | # Operation type OPTION :: GEOMETRY :: SENSITIVITY
78 | OPERATION_TYPE = GEOMETRY
79 |
80 | # ---------------------------------------------------------------------------- #
81 | # ---------------------------------------------------------------------------- #
82 |
83 | # File with the coordinates of the blade surface
84 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
85 | Config_Path=/media/nitish/Data/Active_F3D/Triogen_New/matched_parametrization.cfg
86 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/t106eiz_2D/matched_t106eiz_2D_camber_thickness/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/t106eiz_2D/matched_t106eiz_2D_camber_thickness/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/t106eiz_2D/matched_t106eiz_2D_camber_thickness/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/t106eiz_2D/matched_t106eiz_2D_camber_thickness/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/t106eiz_2D/matched_t106eiz_2D_camber_thickness/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=1.4143992166846162e-06
6 | y_leading=-2.822808112197165e-06
7 | z_leading=0.9995486142891161, 1.009580005841399
8 | x_trailing=0.000861832209431111
9 | z_trailing=0.9995471290185497, 1.0095791653650803
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=-30.988719069578284
16 | theta_in=44.99995895501087
17 | theta_out=-69.99991266738635
18 | radius_in=0.00887135381800698
19 | radius_out=0.0025293980054348223
20 | dist_in=0.5483982870742118
21 | dist_out=0.7143432795462116
22 | thickness_upper_1=0.054138154911826726
23 | thickness_upper_2=0.05722529781678453
24 | thickness_upper_3=0.08015673416650947
25 | thickness_upper_4=0.05332622738538627
26 | thickness_upper_5=0.013764195265833785
27 | thickness_upper_6=0.012985796682302651
28 | thickness_lower_1=0.003402463444689762
29 | thickness_lower_2=0.09273835557906901
30 | thickness_lower_3=0.09256119966009692
31 | thickness_lower_4=0.05530107994744329
32 | thickness_lower_5=0.01835668497097093
33 | thickness_lower_6=0.01657207512461201
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/t106eiz_2D/t106eiz_2D.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/t106eiz_2D/matched_t106eiz_2D_camber_thickness/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000005 0.000015 0.635126 1.743940
3 | 2 0.000006 0.000013 0.652398 1.493683
4 | 3 0.000005 0.000012 0.630723 1.429056
5 | 4 0.000005 0.000012 0.634178 1.381380
6 | 5 0.000003 0.000008 0.348718 0.965918
7 | 6 0.000003 0.000008 0.333965 0.912343
8 | 7 0.000003 0.000007 0.337432 0.841073
9 | 8 0.000003 0.000007 0.329815 0.823221
10 | 9 0.000003 0.000007 0.319837 0.787429
11 | 10 0.000002 0.000007 0.279546 0.867692
12 | 11 0.000002 0.000007 0.269888 0.786656
13 | 12 0.000002 0.000006 0.206482 0.734473
14 | 13 0.000002 0.000006 0.183489 0.731369
15 | 14 0.000002 0.000006 0.177130 0.732886
16 | 15 0.000001 0.000006 0.166418 0.731577
17 | 16 0.000001 0.000006 0.148957 0.749825
18 | 17 0.000001 0.000007 0.151352 0.771109
19 | 18 0.000001 0.000007 0.138142 0.794764
20 | 19 0.000001 0.000007 0.133899 0.764581
21 | 20 0.000001 0.000007 0.129408 0.759049
22 | 21 0.000001 0.000006 0.105408 0.680571
23 | 22 0.000001 0.000006 0.107768 0.641995
24 | 23 0.000001 0.000005 0.104135 0.636391
25 | 24 0.000001 0.000006 0.101971 0.640158
26 | 25 0.000001 0.000006 0.100830 0.641174
27 | 26 0.000001 0.000006 0.098562 0.640548
28 | 27 0.000001 0.000005 0.097097 0.638728
29 | 28 0.000001 0.000006 0.095071 0.646518
30 | 29 0.000001 0.000006 0.093051 0.641841
31 | 30 0.000001 0.000005 0.090871 0.634007
32 | 31 0.000001 0.000005 0.081540 0.625402
33 | 32 0.000001 0.000005 0.083317 0.615847
34 | 33 0.000001 0.000005 0.083472 0.613691
35 | 34 0.000001 0.000005 0.084444 0.608161
36 | 35 0.000001 0.000005 0.085202 0.602354
37 | 36 0.000001 0.000005 0.085538 0.592749
38 | 37 0.000001 0.000005 0.085678 0.582146
39 | 38 0.000001 0.000005 0.085722 0.574160
40 | 39 0.000001 0.000005 0.085524 0.569477
41 | 40 0.000001 0.000005 0.085129 0.568904
42 | 41 0.000001 0.000005 0.076789 0.568059
43 | 42 0.000001 0.000005 0.077236 0.564918
44 | 43 0.000001 0.000005 0.077064 0.563776
45 | 44 0.000001 0.000005 0.078363 0.556355
46 | 45 0.000001 0.000005 0.078269 0.554733
47 | 46 0.000001 0.000005 0.078608 0.550114
48 | 47 0.000001 0.000005 0.079134 0.554745
49 | 48 0.000001 0.000005 0.079545 0.558506
50 | 49 0.000001 0.000005 0.079837 0.561224
51 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/t106eiz_2D/matched_t106eiz_2D_connecting_arcs/figures/error_distribution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/t106eiz_2D/matched_t106eiz_2D_connecting_arcs/figures/error_distribution.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/t106eiz_2D/matched_t106eiz_2D_connecting_arcs/figures/view_xy.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAnand-TUD/parablade/aa1e03a2b1304f419d522d6517ab72c8c4901e7e/testcases/MatchBlades/t106eiz_2D/matched_t106eiz_2D_connecting_arcs/figures/view_xy.pdf
--------------------------------------------------------------------------------
/testcases/MatchBlades/t106eiz_2D/matched_t106eiz_2D_connecting_arcs/matched_parametrization.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=-4.197607606560916e-06
6 | y_leading=4.938763419169128e-06
7 | z_leading=0.9999410042994988, 1.0095771776441937
8 | x_trailing=0.000856736795753732
9 | z_trailing=0.9999684791888704, 1.0097883347785614
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=-30.000732159481952
16 | theta_in=40.00002560503356
17 | theta_out=-70.0000663268666
18 | wedge_in=9.999997895060906
19 | wedge_out=2.999700476319847
20 | radius_in=0.017357199992128328
21 | radius_out=0.00870875438101518
22 | dist_1=0.5855736961359824
23 | dist_2=0.41626651490699296
24 | dist_3=0.4988344953164068
25 | dist_4=0.4945542937586109
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=GEOMETRY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
29 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/t106eiz_2D/t106eiz_2D.cfg
30 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/t106eiz_2D/matched_t106eiz_2D_connecting_arcs/optimization_progress.txt:
--------------------------------------------------------------------------------
1 | Iteration Mean deviation (m) Maximum deviation (m) Mean deviation (%) Maximum deviation (%)
2 | 1 0.000008 0.000014 0.890312 1.615474
3 | 2 0.000005 0.000012 0.632133 1.443730
4 | 3 0.000005 0.000012 0.615785 1.446191
5 | 4 0.000005 0.000013 0.610169 1.475957
6 | 5 0.000005 0.000012 0.536128 1.354157
7 | 6 0.000005 0.000011 0.545893 1.242996
8 | 7 0.000005 0.000010 0.531637 1.113959
9 | 8 0.000005 0.000009 0.533458 1.016622
10 | 9 0.000004 0.000009 0.508544 1.015085
11 | 10 0.000004 0.000009 0.462637 1.067086
12 | 11 0.000004 0.000008 0.446412 0.965785
13 | 12 0.000003 0.000009 0.356004 0.995510
14 | 13 0.000003 0.000008 0.320121 0.930647
15 | 14 0.000003 0.000008 0.321490 0.887379
16 | 15 0.000003 0.000008 0.322352 0.894226
17 | 16 0.000003 0.000008 0.320509 0.941614
18 | 17 0.000003 0.000008 0.319423 0.960448
19 | 18 0.000003 0.000008 0.320250 0.944910
20 |
--------------------------------------------------------------------------------
/testcases/MatchBlades/t106eiz_2D/t106eiz_2D.cfg:
--------------------------------------------------------------------------------
1 | # ---------------------------------------------------------------------------- #
2 | # ---------------------- ParaBlade configuration file ------------------------ #
3 | # ---------------------------------------------------------------------------- #
4 |
5 | # Number of Dimensions :: 2 :: 3
6 | # Set N_DIMENSIONS = 2 for two-dimensional problems
7 | # Set N_DIMENSIONS = 3 for three-dimensional problems
8 | NDIM = 2
9 |
10 | # ---------------------------------------------------------------------------- #
11 | # ---------------------------------------------------------------------------- #
12 |
13 | # Number of Blades OPTIONS :: integer
14 | N_BLADES = 50
15 |
16 | # ---------------------------------------------------------------------------- #
17 | # ---------------------------------------------------------------------------- #
18 |
19 | # Number of blade sections used to create the blade OPTIONS :: integer
20 | # The value must be at least 2 in the current version of ParaBlade
21 | # Increase this value depending on the span-variation complexity of the blade
22 | N_SECTIONS = 2
23 |
24 | # ---------------------------------------------------------------------------- #
25 | # ---------------------------------------------------------------------------- #
26 |
27 | # Type of cascade OPTIONS :: LINEAR :: ANNULAR
28 | # Set CASCADE_TYPE = ANNULAR for an a annular cascade of blades (axisymmetric)
29 | # Set CASCADE_TYPE = LINEAR for a linear cascade of blades
30 | CASCADE_TYPE = LINEAR
31 |
32 | # ---------------------------------------------------------------------------- #
33 | # ---------------------------------------------------------------------------- #
34 |
35 | # Design variables for the meridional channel
36 | # Set a straight horizontal line for axial flow cascades
37 | # Set a straight vertical line for radial flow cascades
38 | # Set an arbitrary variation for mixed flow cascade
39 | x_leading = 0.0
40 | y_leading = 0.000
41 | z_leading = 1.00, 1.01
42 | x_trailing = 0.00086
43 | z_trailing = 1.00, 1.01
44 | x_hub=
45 | z_hub=
46 | x_shroud=
47 | z_shroud=
48 |
49 | # ---------------------------------------------------------------------------- #
50 | # ---------------------------------------------------------------------------- #
51 |
52 | # Design variables for a 2D section parametrization based on connecting arcs.
53 | PARAMETRIZATION_TYPE = CONNECTING_ARCS
54 | stagger = -30.0
55 | theta_in = 40
56 | theta_out = -70
57 | wedge_in = 10
58 | wedge_out = 3
59 | radius_in = 0.02
60 | radius_out = 0.015
61 | dist_1 = 0.57
62 | dist_2 = 0.4
63 | dist_3 = 0.5
64 | dist_4 = 0.5
65 |
66 | # # Design variables for a 2D section parametrization based camberline/thickness
67 | # PARAMETRIZATION_TYPE = CAMBER_THICKNESS
68 | # stagger = -31
69 | # theta_in = 45
70 | # theta_out = -70
71 | # radius_in = 0.01
72 | # radius_out = 0.005
73 | # dist_in = 0.550
74 | # dist_out = 0.70
75 | # thickness_upper_1 = 0.05
76 | # thickness_upper_2 = 0.09
77 | # thickness_upper_3 = 0.08
78 | # thickness_upper_4 = 0.05
79 | # thickness_upper_5 = 0.03
80 | # thickness_upper_6 = 0.02
81 | # thickness_lower_1 = 0.03
82 | # thickness_lower_2 = 0.08
83 | # thickness_lower_3 = 0.08
84 | # thickness_lower_4 = 0.07
85 | # thickness_lower_5 = 0.03
86 | # thickness_lower_6 = 0.01
87 |
88 | # ---------------------------------------------------------------------------- #
89 | # ---------------------------------------------------------------------------- #
90 |
91 | # Plot format OPTION :: TECPLOT :: MATPLOTLIB
92 | PLOT_FORMAT = MATPLOTLIB
93 |
94 | # ---------------------------------------------------------------------------- #
95 | # ---------------------------------------------------------------------------- #
96 |
97 | # Operation type OPTION :: GEOMETRY :: SENSITIVITY
98 | OPERATION_TYPE = GEOMETRY
99 |
100 | # ---------------------------------------------------------------------------- #
101 | # ---------------------------------------------------------------------------- #
102 |
103 | # File with the coordinates of the blade surface
104 | PRESCRIBED_BLADE_FILENAME = MoveSurface.txt
105 |
106 | # ---------------------------------------------------------------------------- #
107 | # ---------------------------------------------------------------------------- #
108 |
--------------------------------------------------------------------------------
/testcases/MatlabPlots/APU_rotor/APU_rotor_camber_thickness.cfg:
--------------------------------------------------------------------------------
1 | NDIM=3.0
2 | N_BLADES=50.0
3 | N_SECTIONS=10.0
4 | CASCADE_TYPE=ANNULAR
5 | x_leading=-9.869237893086056e-05, 0.0027979014225067204, 0.0016571655034625377, 0.006588430431796622
6 | y_leading=3.79388358731857e-05, -3.6537149310264824e-06, 8.270396173219338e-05, -5.345304360205687e-05
7 | z_leading=0.05887216040966112, 0.05924129827196898, 0.059120556277160646, 0.05863862671204075
8 | x_trailing=0.03917434762034967, 0.03770505707808405, 0.036600200530817646, 0.035166466469213876
9 | z_trailing=0.014449380388735032, 0.02193307354273521, 0.028668000045415486, 0.036789186476100785
10 | x_hub=-0.0014757708366869996, 0.009247720472171844, 0.018714426001948278, 0.02877833310148302
11 | z_hub=0.038624467999708464, 0.023358237606242914, 0.01746433095665681, 0.015527667236652536
12 | x_shroud=0.0069559715801913065, 0.008729158715301652, 0.01998307823090828, 0.028631392492032063
13 | z_shroud=0.053237192576617604, 0.0434518267010072, 0.037714806804425384, 0.03764436183571095
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=-11.674014280505471, -16.73860632925192, -21.345317111281453, -32.768565529206036
16 | theta_in=0.6666998297957673, -1.4706787931848424, -1.5081249198589344, -2.5792943634015284, 0.6738664402220125
17 | theta_out=-46.54560571525838, -49.31634795398918, -59.67210448483033, -70.36048367470246
18 | radius_in=0.0007625127438209964, 0.0001, 0.0016968254570471479, 0.0020754793243135746
19 | radius_out=0.0062271044870403506, 0.0015090393481846042, 0.0014136746833572332, 0.0007913596547600062
20 | dist_in=0.5355343976072282, 0.3746131652982886, 0.3452329768672494, 0.39498409607160784
21 | dist_out=0.21347553262853933, 0.43481458419993696, 0.5099131317101948, 0.611365120695502
22 | thickness_upper_1=0.0504928307026806, 0.007969793444509746, 0.0096956564541654
23 | thickness_upper_2=0.027618994728538772, 0.042006734088418325, 0.005459450493737988
24 | thickness_upper_3=0.026504899729620644, 0.0001, 0.016663283645800497
25 | thickness_upper_4=0.022275505880323447, 0.0001, 0.021641361639818883
26 | thickness_upper_5=0.02254052118257426, 0.005949559273180814, 0.0001
27 | thickness_upper_6=0.010880839375269763, 0.036607933883031324, 0.005125204053782321
28 | thickness_lower_1=0.04665436912700047, 0.0001, 0.006033863237941165
29 | thickness_lower_2=0.05234562925979758, 0.045705498917363925, 0.018783799868350187
30 | thickness_lower_3=0.032780187641132254, 0.07267865627322304, 0.009749506587249811
31 | thickness_lower_4=0.020415950769033145, 0.0709770862574494, 0.0002730362579951525
32 | thickness_lower_5=0.01342568036720722, 0.01816961414543789, 0.023078950263320817
33 | thickness_lower_6=0.0043528907034891635, 0.0001, 0.0001
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/APU_rotor/CT.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatlabPlots/APU_rotor/plot_APU_rotor.m:
--------------------------------------------------------------------------------
1 | %% ParaBlade/Matlab plots
2 |
3 | % Clean workspace
4 | clear all
5 | close all
6 | clc
7 |
8 | % Add plotting functions
9 | addpath(genpath('../../../../src/src_matlab_plot'))
10 | plot_settings
11 |
12 | % Prepare directory to save figures
13 | if ~exist('MATLAB_figures', 'dir')
14 | mkdir MATLAB_figures
15 | end
16 |
17 | N_blades = 13;
18 | Nu = 500; % hardcoded, see Blade3D initialize_uv_values()
19 | Nv = 25; % hardcoded, see Blade3D initialize_uv_values()
20 | cascade_type = 'axisymmetric';
21 |
22 | %% Plot the surface of the blade
23 | % Prepare the figure
24 | figure1 = figure(); ax_fig1 = gca;
25 | hold on; axis image; box on;
26 | view(50, 00); camlight('headlight'); lighting flat; view(60,10)
27 | % view(80, 40); camlight('headlight'); lighting flat; view(70,0)
28 |
29 | xlabel('$x$ axis');
30 | ylabel('$y$ axis');
31 | zlabel('$z$ axis');
32 | ax_fig1.XAxis.TickLabelFormat = '%.2f';
33 | ax_fig1.YAxis.TickLabelFormat = '%.2f';
34 | ax_fig1.ZAxis.TickLabelFormat = '%.2f';
35 | axis off
36 |
37 | % Prepare plotting options
38 | plot_options.cascade_type = cascade_type;
39 | plot_options.Nu = Nu;
40 | plot_options.Nv = Nv;
41 | plot_options.N_total = N_blades;
42 | plot_options.N_plot = N_blades;
43 | plot_options.color = 0.6*[1 1 1];
44 |
45 | % Make the plot
46 | plot_blade_surface(plot_options)
47 | plot_hub_surface(plot_options)
48 | % plot_shroud_surface(plot_options)
49 |
50 | % Save the figure
51 | % export_fig(figure1,'./MATLAB_figures/APU_rotor_a','-png','-r1000')
52 |
53 |
54 |
55 | %% Plot the surface sensitivity
56 | % % Prepare the figure
57 | % figure2 = figure(); ax_fig2 = gca;
58 | % hold on; axis image; box on; view(290,30);
59 | % % camlight('headlight'); lighting flat;
60 | % xlabel('$x$ axis');
61 | % ylabel('$y$ axis');
62 | % zlabel('$z$ axis');
63 | % ax_fig2.XAxis.TickLabelFormat = '%.2f';
64 | % ax_fig2.YAxis.TickLabelFormat = '%.2f';
65 | % ax_fig2.ZAxis.TickLabelFormat = '%.2f';
66 | % my_cmap = parula(100);
67 | % colormap(my_cmap)
68 | % shading interp
69 | % % shading flat
70 | % axis off
71 | %
72 | % % Prepare plotting options
73 | % variable_name = 'stagger_1';
74 | % plot_options.N_sections = N_sections;
75 | % plot_options.N_total = N_blades;
76 | % plot_options.N_plot = 1;
77 | % plot_options.color = my_cmap(floor(end/2),:);
78 | % plot_options.colorbar = 'no';
79 | %
80 | % % Make the plot
81 | % plot_blade_sensitivity(variable_name, plot_options)
82 | % % plot_hub_surface(plot_options)
83 | % % plot_shroud_surface(plot_options)
84 | %
85 | % % Save the figure
86 | % % export_fig(figure2,'./matlab_figures/NASA_R67_sensitivity','-png','-r1000')
87 |
88 |
89 |
--------------------------------------------------------------------------------
/testcases/MatlabPlots/Aachen_3D/Aachen_3D_camber_thickness.cfg:
--------------------------------------------------------------------------------
1 | NDIM=3.0
2 | N_BLADES=50.0
3 | N_SECTIONS=5.0
4 | CASCADE_TYPE=ANNULAR
5 | x_leading=-0.00035908117570858584
6 | y_leading=-0.0062360484365408374
7 | z_leading=0.4898634698408523, 0.6005223700108764
8 | x_trailing=0.044060595992423936
9 | z_trailing=0.4895792574268169, 0.6014643858137806
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=-45.74938319383223
16 | theta_in=0.7307163415823574
17 | theta_out=-67.80925934168687
18 | radius_in=0.012706630004489617
19 | radius_out=0.001634329855380229
20 | dist_in=0.5223858919409166
21 | dist_out=0.6874565701673371
22 | thickness_upper_1=0.1417940809316617
23 | thickness_upper_2=0.24862863459393272
24 | thickness_upper_3=0.18672394689511032
25 | thickness_upper_4=0.1092850465593911
26 | thickness_upper_5=0.06274777188100596
27 | thickness_upper_6=0.03939142829211519
28 | thickness_lower_1=0.11486341728401821
29 | thickness_lower_2=0.11354154692403257
30 | thickness_lower_3=0.1005049672759074
31 | thickness_lower_4=0.03939986174922843
32 | thickness_lower_5=0.01528618488521304
33 | thickness_lower_6=0.0008622920387592618
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/Aachen_3D/output_matching/matched_parametrization.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatlabPlots/Aachen_3D/plot_Aachen_3D.m:
--------------------------------------------------------------------------------
1 | %% ParaBlade/Matlab plots
2 |
3 | % Clean workspace
4 | clear all
5 | close all
6 | clc
7 |
8 | % Add plotting functions
9 | addpath(genpath('../../../src/src_matlab_plot'))
10 | plot_settings
11 |
12 | % Prepare directory to save figures
13 | if ~exist('MATLAB_figures', 'dir')
14 | mkdir MATLAB_figures
15 | end
16 |
17 | N_blades = 50;
18 | Nu = 500; % hardcoded, see Blade3D initialize_uv_values()
19 | Nv = 25; % hardcoded, see Blade3D initialize_uv_values()
20 | cascade_type = 'axisymmetric';
21 |
22 |
23 | %% Plot the surface of the blade
24 | % Prepare the figure
25 | figure1 = figure(); ax_fig1 = gca;
26 | hold on; axis image; box on;
27 | % view(300, 25); camlight('headlight'); lighting flat; view(-85,40)
28 | view(-20, -10); camlight('headlight'); lighting flat; view(-75,30)
29 | xlabel('$x$ axis');
30 | ylabel('$y$ axis');
31 | zlabel('$z$ axis');
32 | ax_fig1.XAxis.TickLabelFormat = '%.2f';
33 | ax_fig1.YAxis.TickLabelFormat = '%.2f';
34 | ax_fig1.ZAxis.TickLabelFormat = '%.2f';
35 | axis off
36 |
37 | % Prepare plotting options
38 | plot_options.cascade_type = cascade_type;
39 | plot_options.Nu = Nu;
40 | plot_options.Nv = Nv;
41 | plot_options.N_total = N_blades;
42 | plot_options.N_plot = 5;
43 | plot_options.color = 0.6*[1 1 1];
44 |
45 | % Make the plot
46 | plot_blade_surface(plot_options)
47 | plot_hub_surface(plot_options)
48 | % plot_shroud_surface(plot_options)
49 |
50 | % % Save the figure
51 | % export_fig(figure1,'./MATLAB_figures/Aachen_3D_b','-png','-r1000')
52 |
53 |
54 |
55 | %% Plot the surface sensitivity
56 | % % Prepare the figure
57 | % figure2 = figure(); ax_fig2 = gca;
58 | % hold on; axis image; box on; view(290,30);
59 | % % camlight('headlight'); lighting flat;
60 | % xlabel('$x$ axis');
61 | % ylabel('$y$ axis');
62 | % zlabel('$z$ axis');
63 | % ax_fig2.XAxis.TickLabelFormat = '%.2f';
64 | % ax_fig2.YAxis.TickLabelFormat = '%.2f';
65 | % ax_fig2.ZAxis.TickLabelFormat = '%.2f';
66 | % my_cmap = parula(100);
67 | % colormap(my_cmap)
68 | % shading interp
69 | % % shading flat
70 | % axis off
71 | %
72 | % % Prepare plotting options
73 | % variable_name = 'dist_in_0';
74 | % plot_options.N_sections = N_sections;
75 | % plot_options.N_total = N_blades;
76 | % plot_options.N_plot = 1;
77 | % plot_options.color = my_cmap(floor(end/2),:);
78 | % plot_options.colorbar = 'no';
79 | %
80 | % % Make the plot
81 | % plot_blade_sensitivity(variable_name, plot_options)
82 | % % plot_hub_surface(plot_options)
83 | % % plot_shroud_surface(plot_options)
84 | %
85 | % % Save the figure
86 | % % export_fig(figure2,'./matlab_figures/NASA_R67_sensitivity','-png','-r1000')
87 |
88 |
89 |
--------------------------------------------------------------------------------
/testcases/MatlabPlots/NASA_R67/NASA_R67_camber_thickness.cfg:
--------------------------------------------------------------------------------
1 | NDIM=3.0
2 | N_BLADES=22.0
3 | N_SECTIONS=11.0
4 | CASCADE_TYPE=ANNULAR
5 | x_leading=-0.0012155279123935352, 0.006176324662465179, 0.01708538732729608, 0.023756659562699234
6 | y_leading=-0.0001033103766385179, 0.0008143458501048216, -0.007637195222788278, 0.0003115686159604824, 0.0006503356577209094
7 | z_leading=0.09571594660277238, 0.1519595273899528, 0.20441028580880352, 0.2552490016794651
8 | x_trailing=0.0896973230037492, 0.08953833624816333, 0.0777341660765873, 0.06895074710692276, 0.06516138348163966
9 | z_trailing=0.1179393379309016, 0.16173484946791944, 0.20107889424771921, 0.24823231682985508
10 | x_hub=0.02277682149858063, 0.06539877366490639
11 | z_hub=0.1004741709762602, 0.11660641095343552
12 | x_shroud=0.030257587606168528, 0.05088914200910274
13 | z_shroud=0.2558188066311746, 0.2504312362085787
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=12.802998329110414, 23.806203890937148, 48.93936961643144, 57.484491233709434, 63.13210286638399
16 | theta_in=37.8894148690435, 40.08625936174829, 40.373263273554265, 30.04016960894731
17 | theta_out=-19.314215800043222, 15.071074389644751, 40.09413120209163, 44.82535993236976
18 | radius_in=0.0006693359494975922, 0.0018928674557306228, 0.0019449153991979709, 0.0008739350479142291
19 | radius_out=0.0014997139991203107, 0.00010000000000000219, 0.00010000000000000166, 0.0004386091425299807
20 | dist_in=0.3371973356939866, 0.2646650076925527, 0.332498891792417, 0.3613013989627863
21 | dist_out=0.36112611080317664, 0.32325392331261366, 0.5112249157259443, 0.4836145113992993
22 | thickness_upper_1=0.002546465411929295, 0.019075829292213346, 0.00010000000000000018, 0.02313819261938296
23 | thickness_upper_2=0.01779346609002048, 0.022536871245423685, 0.01975140550550291, 0.03503950879069074
24 | thickness_upper_3=0.042546699459077235, 0.02012814072142602, 0.01320391021275751, 0.02447215343886261
25 | thickness_upper_4=0.05353048483160095, 0.015679121952556684, 0.028827646857360504, 0.010367378479338652
26 | thickness_upper_5=0.03787517131212501, 0.00869029932624595, 0.00010000000000000308, 0.024266582511949936
27 | thickness_upper_6=0.019506134409369012, 0.020452763331955483, 0.00010000000000000216, 0.005654341050033827
28 | thickness_lower_1=0.014055042472713537, 0.022552625184504422, 0.00010000000000000018, 0.00010000000000000021
29 | thickness_lower_2=0.0326815541481784, 0.04563970917975673, 0.0001, 0.00010000000000000071
30 | thickness_lower_3=0.040333843876396595, 0.08326935094861851, 0.005368580072629134, 0.032458763702131306
31 | thickness_lower_4=0.03619840036020486, 0.07497402804237907, 0.03879799161959874, 0.04185795862113147
32 | thickness_lower_5=0.03047033837772709, 0.04944264572312122, 0.046517691308877396, 0.03759410318533932
33 | thickness_lower_6=0.0004262488176859667, 0.023030461111436553, 0.013217793581095231, 0.023686849524389257
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface_NASA_R67.txt
37 | Config_Path=/home/robertoa/my_GIT/parablade/testcases/MatchBlades/NASA_R67/ct.cfg
38 |
--------------------------------------------------------------------------------
/testcases/MatlabPlots/NASA_R67/plot_NASA_R67.m:
--------------------------------------------------------------------------------
1 | %% ParaBlade/Matlab plots
2 |
3 | % Clean workspace
4 | clear all
5 | close all
6 | clc
7 |
8 | % Add plotting functions
9 | ParaBlade_path = getenv('BLADE_HOME');
10 | addpath(genpath([ParaBlade_path, '/src/src_matlab_plot']))
11 | plot_settings
12 |
13 | % Prepare directory to save figures
14 | if ~exist('MATLAB_figures', 'dir')
15 | mkdir MATLAB_figures
16 | end
17 |
18 | N_blades = 22;
19 | Nu = 500;
20 | Nv = 25;
21 | cascade_type = 'axisymmetric';
22 |
23 | %% Plot the surface of the blade
24 | % Prepare the figure
25 | figure1 = figure(); ax_fig1 = gca;
26 | hold on; axis image; box on;
27 | % view(200, +10); camlight('headlight'); lighting flat; view(-100,20)
28 | view(270, 10); camlight('headlight'); lighting flat; view(-120, 20)
29 | % view(260, -20); camlight('headlight'); lighting flat; view(-120,5)
30 |
31 | xlabel('$x$ axis');
32 | ylabel('$y$ axis');
33 | zlabel('$z$ axis');
34 | ax_fig1.XAxis.TickLabelFormat = '%.2f';
35 | ax_fig1.YAxis.TickLabelFormat = '%.2f';
36 | ax_fig1.ZAxis.TickLabelFormat = '%.2f';
37 | axis off
38 |
39 | % Prepare plotting options
40 | plot_options.cascade_type = cascade_type;
41 | plot_options.Nu = Nu;
42 | plot_options.Nv = Nv;
43 | plot_options.N_total = N_blades;
44 | plot_options.N_plot = 1;
45 | plot_options.color = 0.6*[1 1 1];
46 |
47 | % Make the plot
48 | plot_blade_surface(plot_options)
49 | plot_hub_surface(plot_options)
50 | % plot_shroud_surface(plot_options)
51 |
52 | % % Save the figure
53 | % export_fig(figure1,'./MATLAB_figures/NASA_R67_b','-png','-r1000')
54 |
55 |
56 | %
57 | % % Plot the surface sensitivity
58 | % % Prepare the figure
59 | % figure2 = figure(); ax_fig2 = gca;
60 | % hold on; axis image; box on; view(290,30);
61 | % % camlight('headlight'); lighting flat;
62 | % xlabel('$x$ axis');
63 | % ylabel('$y$ axis');
64 | % zlabel('$z$ axis');
65 | % ax_fig2.XAxis.TickLabelFormat = '%.2f';
66 | % ax_fig2.YAxis.TickLabelFormat = '%.2f';
67 | % ax_fig2.ZAxis.TickLabelFormat = '%.2f';
68 | % my_cmap = parula(100);
69 | % colormap(my_cmap)
70 | % shading interp
71 | % % shading flat
72 | % axis off
73 | %
74 | % % Prepare plotting options
75 | % variable_name = 'z_hub_1';
76 | % plot_options.Nu = Nu;
77 | % plot_options.Nv = Nv;
78 | % plot_options.N_total = N_blades;
79 | % plot_options.N_plot = 1;
80 | % plot_options.color = my_cmap(floor(end/2),:);
81 | % plot_options.colorbar = 'no';
82 | %
83 | % % Make the plot
84 | % plot_blade_sensitivity(variable_name, plot_options)
85 | % % plot_hub_surface(plot_options)
86 | % % plot_shroud_surface(plot_options)
87 | %
88 | % % Save the figure
89 | % % export_fig(figure2,'./matlab_figures/NASA_R67_sensitivity','-png','-r1000')
90 |
91 |
92 |
--------------------------------------------------------------------------------
/testcases/RegressionTests/check_gradient_angle_units/blade_1.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=4.880379885609559e-05
6 | y_leading=0.00023787280388334772
7 | z_leading=0.9898818203263284, 1.010116664382672
8 | x_trailing=0.036866638686136106
9 | z_trailing=0.9865250489863973, 1.0135176567963
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=-55
16 | theta_in=6.03311140868969
17 | theta_out=-75.02474458099303
18 | radius_in=0.16354678638571726
19 | radius_out=0.01166496968030014
20 | dist_in=0.4538040314509468
21 | dist_out=0.5352780878556757
22 | thickness_upper_1=0.4450103852275693
23 | thickness_upper_2=0.34339423253030144
24 | thickness_upper_3=0.22262165825570077
25 | thickness_upper_4=0.10753691323837294
26 | thickness_upper_5=0.04409154587893458
27 | thickness_upper_6=0.011514635881112898
28 | thickness_lower_1=0.08720027435351618
29 | thickness_lower_2=0.17059356309100693
30 | thickness_lower_3=0.11737418565797324
31 | thickness_lower_4=0.04118402778504599
32 | thickness_lower_5=0.035746824264630314
33 | thickness_lower_6=0.025721143744163323
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface_LS89.txt
37 |
--------------------------------------------------------------------------------
/testcases/RegressionTests/check_gradient_angle_units/blade_2.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=4.880379885609559e-05
6 | y_leading=0.00023787280388334772
7 | z_leading=0.9898818203263284, 1.010116664382672
8 | x_trailing=0.036866638686136106
9 | z_trailing=0.9865250489863973, 1.0135176567963
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=-54.99
16 | theta_in=6.03311140868969
17 | theta_out=-75.02474458099303
18 | radius_in=0.16354678638571726
19 | radius_out=0.01166496968030014
20 | dist_in=0.4538040314509468
21 | dist_out=0.5352780878556757
22 | thickness_upper_1=0.4450103852275693
23 | thickness_upper_2=0.34339423253030144
24 | thickness_upper_3=0.22262165825570077
25 | thickness_upper_4=0.10753691323837294
26 | thickness_upper_5=0.04409154587893458
27 | thickness_upper_6=0.011514635881112898
28 | thickness_lower_1=0.08720027435351618
29 | thickness_lower_2=0.17059356309100693
30 | thickness_lower_3=0.11737418565797324
31 | thickness_lower_4=0.04118402778504599
32 | thickness_lower_5=0.035746824264630314
33 | thickness_lower_6=0.025721143744163323
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface_LS89.txt
37 |
--------------------------------------------------------------------------------
/testcases/RegressionTests/check_gradient_angle_units/check_gradient_angle_units.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | # Importing general packages
4 | import numpy as np
5 | import matplotlib.pyplot as plt
6 | import pdb
7 | import sys
8 | import os
9 |
10 | # Setting Environment
11 | BLADE_HOME = os.environ["BLADE_HOME"]
12 | sys.path.append(BLADE_HOME+'/src/')
13 | sys.path.append(BLADE_HOME+'/common/')
14 |
15 | # Importing ParaBlade classes and functions
16 | from common import *
17 | from config import *
18 | from blade_3D import Blade3D
19 | from blade_plot import BladePlot
20 | from blade_output import BladeOutput
21 |
22 | # Define (u,v) parametrization
23 | u = np.linspace(0.00, 1.00, 10)
24 | v = 0.50 + 0.00 * u
25 |
26 | # Compute the coodinates and sensitivity of the base blade
27 | IN = ReadUserInput('blade_1.cfg')
28 | blade_object = Blade3D(IN)
29 | blade_object.make_blade()
30 | C1 = blade_object.get_surface_coordinates(u, v)
31 | S1 = blade_object.get_surface_sensitivity(u, v)["stagger_0"]
32 |
33 | # Compute the coordinates of the perturbed blade
34 | IN = ReadUserInput('blade_2.cfg')
35 | blade_object = Blade3D(IN)
36 | blade_object.make_blade()
37 | C2 = blade_object.get_surface_coordinates(u, v)
38 |
39 | # Compute the sensitivity by finite differences on the base and perturbed blades
40 | S2 = (C2 - C1) / 0.01
41 |
42 | # Print the results
43 | for (x1, y1, z1), (x2, y2, z2) in zip(np.real(S1.transpose()), np.real(S2.transpose())):
44 | print('%+.6e %+.6e %+.6e \t %+.6e %+.6e %+.6e \t %+.6e %+.6e %+.6e' % (x1, x2, x2-x1, y1, y2, y2-y1, z1, z2, z2-z1))
--------------------------------------------------------------------------------
/testcases/RegressionTests/influence_design_variables_2D/LS89_2D_camber_thickness.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=4.880379885609559e-05
6 | y_leading=0.00023787280388334772
7 | z_leading=0.9898818203263284, 1.010116664382672
8 | x_trailing=0.036866638686136106
9 | z_trailing=0.9865250489863973, 1.0135176567963
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CAMBER_THICKNESS
15 | stagger=-54.89676917936337
16 | theta_in=6.03311140868969
17 | theta_out=-75.02474458099303
18 | radius_in=0.16354678638571726
19 | radius_out=0.01166496968030014
20 | dist_in=0.4538040314509468
21 | dist_out=0.5352780878556757
22 | thickness_upper_1=0.4450103852275693
23 | thickness_upper_2=0.34339423253030144
24 | thickness_upper_3=0.22262165825570077
25 | thickness_upper_4=0.10753691323837294
26 | thickness_upper_5=0.04409154587893458
27 | thickness_upper_6=0.011514635881112898
28 | thickness_lower_1=0.08720027435351618
29 | thickness_lower_2=0.17059356309100693
30 | thickness_lower_3=0.11737418565797324
31 | thickness_lower_4=0.04118402778504599
32 | thickness_lower_5=0.035746824264630314
33 | thickness_lower_6=0.025721143744163323
34 | PLOT_FORMAT=MATPLOTLIB
35 | OPERATION_TYPE=GEOMETRY
36 | PRESCRIBED_BLADE_FILENAME=MoveSurface_LS89.txt
37 |
--------------------------------------------------------------------------------
/testcases/RegressionTests/influence_design_variables_2D/LS89_2D_connecting_arcs.cfg:
--------------------------------------------------------------------------------
1 | NDIM=2.0
2 | N_BLADES=50.0
3 | N_SECTIONS=2.0
4 | CASCADE_TYPE=LINEAR
5 | x_leading=-0.00024247012912464075
6 | y_leading=0.0009080859418504893
7 | z_leading=1.018672987009788, 0.9813092222660429
8 | x_trailing=0.03694855310985001
9 | z_trailing=1.0268094549613742, 0.9732170690044998
10 | x_hub=
11 | z_hub=
12 | x_shroud=
13 | z_shroud=
14 | PARAMETRIZATION_TYPE=CONNECTING_ARCS
15 | stagger=-54.09657804488703
16 | theta_in=6.820465757160875
17 | theta_out=-70.00795529584929
18 | wedge_in=43.95797785498608
19 | wedge_out=5.164674902423926
20 | radius_in=0.12502348622458948
21 | radius_out=0.01657072583448739
22 | dist_1=0.5177922208331578
23 | dist_2=0.5576455934396666
24 | dist_3=0.2757816576802527
25 | dist_4=0.28509578799498464
26 | PLOT_FORMAT=MATPLOTLIB
27 | OPERATION_TYPE=GEOMETRY
28 | PRESCRIBED_BLADE_FILENAME=MoveSurface_LS89.txt
29 |
--------------------------------------------------------------------------------
/testcases/RegressionTests/readme.txt:
--------------------------------------------------------------------------------
1 | This directory contains regression tests to assess:
2 |
3 | 1) The accuracy of the normal vector computation
4 | - Forward finite differences
5 | - Central finite differences
6 | - Complex step
7 |
8 | 2) The accuracy of the sensitivity computation
9 | - Forward finite differences
10 | - Central finite differences
11 | - Complex step
12 |
13 | 3) The continuity of the blade parametrization at the edges
14 | - Surface coordinates continuity (G0)
15 | - Normal vector continuity (G1)
16 | - Surface sensitivity continuity
17 |
18 |
19 | In addition, the directory "influence_design_variables_2D" contains an script to visualize the influence of the design variables that define the 2D parametrization of the blade sections
20 |
21 |
22 | 29/05/2019
23 | - Roberto Agromayor
24 |
25 |
26 | The regression test directory scripts were updated to deal both with
27 |
28 | 1) CAMBERLINE_THICKNESS parametrizations
29 | 2) CONNECTING_ARC parametrizations
30 |
31 | 13/10/2019
32 | - Roberto Agromayor
33 |
--------------------------------------------------------------------------------
/testcases/RegressionTests/regression_mesh_generation/mesh_generation_regression.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | """ Regression rest to check if the mesh generation files are generated correctly """
4 |
5 |
6 | #---------------------------------------------------------------------------------------------#
7 | # Importing general packages
8 | #---------------------------------------------------------------------------------------------#
9 | import numpy as np
10 | import matplotlib as mpl
11 | import matplotlib.pyplot as plt
12 | import pdb
13 | import sys
14 | import os
15 | import time
16 |
17 |
18 | #---------------------------------------------------------------------------------------------#
19 | # Generate the blade profile
20 | #---------------------------------------------------------------------------------------------#
21 | # To generate the mesh files run MakeBlade.py from terminal
22 | # >> MakeBlade.py regression_blade.cfg
23 |
24 |
25 | #---------------------------------------------------------------------------------------------#
26 | # Read the mesh generation files
27 | #---------------------------------------------------------------------------------------------#
28 | # Hub surface
29 | filename = os.getcwd() + '/output/mesh_files/' + 'hub.crv'
30 | hub = np.loadtxt(filename, delimiter='\t').transpose()
31 |
32 | # Shroud surface
33 | filename = os.getcwd() + '/output/mesh_files/' + 'shroud.crv'
34 | shroud = np.loadtxt(filename, delimiter='\t').transpose()
35 |
36 | # Blade sections
37 | filename = os.getcwd() + '/output/mesh_files/' + 'blade.crv'
38 | blade_sections = np.loadtxt(filename, delimiter='\t', comments='#').transpose()
39 |
40 |
41 | #---------------------------------------------------------------------------------------------#
42 | # Print the mesh generation files
43 | #---------------------------------------------------------------------------------------------#
44 | # Create the figure
45 | fig = plt.figure(figsize=(8, 5))
46 | ax = fig.add_subplot(111)
47 | ax.set_xlabel('Axial direction', fontsize=11, color='k', labelpad=12)
48 | ax.set_ylabel('Radial direction', fontsize=11, color='k', labelpad=12)
49 |
50 | # Draw the hub surface
51 | line, = ax.plot(hub[2, :], hub[0, :])
52 | line.set_linewidth(1.25)
53 | line.set_linestyle("-")
54 | line.set_color("b")
55 | line.set_marker(" ")
56 | line.set_markersize(3.5)
57 | line.set_markeredgewidth(1)
58 | line.set_markeredgecolor("k")
59 | line.set_markerfacecolor("w")
60 | line.set_label(r'Hub surface')
61 |
62 | # Draw the shroud surface
63 | line, = ax.plot(shroud[2, :], shroud[0, :])
64 | line.set_linewidth(1.25)
65 | line.set_linestyle("-")
66 | line.set_color("r")
67 | line.set_marker(" ")
68 | line.set_markersize(3.5)
69 | line.set_markeredgewidth(1)
70 | line.set_markeredgecolor("k")
71 | line.set_markerfacecolor("w")
72 | line.set_label(r'Shroud surface')
73 |
74 | # Draw the blade sections
75 | radial_coordinates = (blade_sections[0, :] ** 2 + blade_sections[1, :] ** 2) ** (1 / 2)
76 | axial_coordinates = blade_sections[2, :]
77 | line, = ax.plot(axial_coordinates, radial_coordinates)
78 | line.set_linewidth(1.25)
79 | line.set_linestyle(" ")
80 | line.set_color("r")
81 | line.set_marker("+")
82 | line.set_markersize(3.5)
83 | line.set_markeredgewidth(1)
84 | line.set_markeredgecolor("k")
85 | line.set_markerfacecolor("w")
86 | line.set_label(r'Blade sections')
87 |
88 | # Create legend
89 | ax.legend(ncol=1, loc='center left', bbox_to_anchor=(1.05, 0.5), fontsize=10, edgecolor='k', framealpha=1.0)
90 |
91 | # Set the aspect ratio of the data
92 | ax.set_aspect(1.0)
93 |
94 | # Adjust PAD
95 | plt.tight_layout(pad=5.0, w_pad=None, h_pad=None)
96 |
97 | # Show the figure
98 | plt.show()
99 |
100 |
101 |
--------------------------------------------------------------------------------
/testcases/RegressionTests/regression_normals/normals_regression.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | """ Regression rest for the surface normal vector computation
4 |
5 | Compute the surface normals using different differentiation methods:
6 |
7 | 1) Forward finite differences
8 | 2) Central finite differences
9 | 3) Complex step
10 |
11 | Author: Roberto Agromayor
12 | Date: 28/06/2019
13 | Updated: 12/10/2019
14 |
15 | """
16 |
17 |
18 | # -------------------------------------------------------------------------------------------------------------------- #
19 | # Import general packages
20 | # -------------------------------------------------------------------------------------------------------------------- #
21 | import os
22 | import sys
23 | import pdb
24 | import time
25 | import copy
26 | import numpy as np
27 | import matplotlib as mpl
28 | import matplotlib.pyplot as plt
29 | from mpl_toolkits.mplot3d import Axes3D
30 |
31 | # Create output directory if it does not exist
32 | if os.path.exists(os.getcwd() + '/figures/') is False:
33 | os.mkdir(os.getcwd() + '/figures/')
34 |
35 |
36 | #----------------------------------------------------------------------------------------------------------------------#
37 | # Import user-defined packages
38 | #----------------------------------------------------------------------------------------------------------------------#
39 | BLADE_HOME = os.environ["BLADE_HOME"]
40 | sys.path.append(BLADE_HOME+'/src/')
41 | sys.path.append(BLADE_HOME+'/common/')
42 | from blade_3D import Blade3D
43 | from config import ReadUserInput
44 |
45 |
46 | # -------------------------------------------------------------------------------------------------------------------- #
47 | # Preliminary definitions
48 | # -------------------------------------------------------------------------------------------------------------------- #
49 | # Load the blade configuration file
50 | IN_file = os.getcwd() + '/' + 'regression_blade.cfg'
51 | IN = ReadUserInput(IN_file)
52 |
53 | # (u,v) parametrization of the blade
54 | h = 1e-3
55 | Nu, Nv = 500, 50
56 | u = np.linspace(0.00+h, 1.00-h, Nu)
57 | v = np.linspace(0.00+h, 1.00-h, Nv)
58 | [u, v] = np.meshgrid(u,v)
59 | u = u.flatten()
60 | v = v.flatten()
61 | UV = np.concatenate((u[:, np.newaxis], v[:, np.newaxis]), axis=1)
62 |
63 | # Create the blade
64 | my_blade = Blade3D(IN, UV)
65 | my_blade.make_blade()
66 |
67 | # Get machine epsilon for double-precision floating-point arithmetics
68 | eps = np.finfo(np.float64).eps
69 |
70 |
71 | # -------------------------------------------------------------------------------------------------------------------- #
72 | # Main computations
73 | # -------------------------------------------------------------------------------------------------------------------- #
74 | # Normal vector computation
75 | normals_CS = my_blade.get_surface_normals(u, v, method='complex_step', step=1e-12)
76 | normals_FFD = my_blade.get_surface_normals(u, v, method='forward_finite_differences', step=eps**(1/2))
77 | normals_CFD = my_blade.get_surface_normals(u, v, method='central_finite_differences', step=eps**(1/3)/10)
78 |
79 | # Assume that the normal vectors computed using a machine epsilon complex step are exact
80 | normals_exact = my_blade.get_surface_normals(u, v, method='complex_step', step=eps)
81 |
82 | # Two-norm of error
83 | error_CS = np.real(np.sqrt(np.sum((normals_CS - normals_exact) ** 2))/Nu*Nv)
84 | error_FFD = np.real(np.sqrt(np.sum((normals_FFD - normals_exact) ** 2))/Nu*Nv)
85 | error_CFD = np.real(np.sqrt(np.sum((normals_CFD - normals_exact) ** 2))/Nu*Nv)
86 |
87 | # Print the results
88 | print('CS error:', error_CS, '\t FFD error:', error_FFD, '\t CFD error:', error_CFD)
89 |
--------------------------------------------------------------------------------