├── .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 | 6 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | [![SU2_Website](https://img.shields.io/badge/Website-SU2-blue.svg)](https://su2code.github.io/) 8 | [![SU2_Website](https://img.shields.io/badge/Foundation-SU2-blue.svg)](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 | --------------------------------------------------------------------------------