|
| 1 | +--- |
| 2 | +title: Actuator Disk With Variable Load |
| 3 | +permalink: /tutorials/ActuatorDisk_VariableLoad/ |
| 4 | +written_by: Ettore Saetta |
| 5 | +for_version: 7.0.8 |
| 6 | +revised_by: |
| 7 | +revision_date: |
| 8 | +revised_version: |
| 9 | +solver: RANS |
| 10 | +requires: SU2_CFD |
| 11 | +complexity: |
| 12 | +follows: |
| 13 | +--- |
| 14 | + |
| 15 | +**Insert Image**  |
| 16 | + |
| 17 | +## Goals |
| 18 | + |
| 19 | +Upon completing this tutorial, the user will be able to simulate the presence of a propeller using an actuator disk boundary condition, including also the swirl effects. The specific geometry chosen for the tutorial is composed by an actuator disk and a semi-infinite spinner (grid file and propeller data courtesy of Mauro Minervino, Centro Italiano Ricerche Aerospaziali (CIRA)). |
| 20 | + |
| 21 | +This tutorial is referred only to the actuator disk model "*VARIABLE_LOAD*" implemented in the V7.0.7. |
| 22 | + |
| 23 | +## Resources |
| 24 | + |
| 25 | +The resources for this tutorial can be found in the [TestCases/rans/actuatordisk_variable_load](https://github.com/su2code/SU2/tree/master/TestCases/rans/actuatordisk_variable_load) directory in the [SU2 repository](https://github.com/su2code/SU2). You will need the configuration file ([propeller_variable_load.cfg](https://github.com/su2code/SU2/tree/master/TestCases/rans/actuatordisk_variable_load/propeller_variable_load.cfg)), the mesh file ([propeller_variable_load.su2](https://github.com/su2code/TestCases/tree/master/rans/actuatordisk_variable_load/propeller_variable_load.su2)) and the propeller input data file ([ActuatorDisk.dat](https://github.com/su2code/SU2/tree/master/TestCases/rans/actuatordisk_variable_load/ActuatorDisk.dat)). *It is important to note that the grid used in this tutorial is very coarse to keep computational effort low, finer meshes should be used.* |
| 26 | +You will also need the [OptimalPropeller.py](https://github.com/su2code/SU2/tree/master/SU2_PY/OptimalPropeller.py) script which is an useful tool to generate the propeller input data file. |
| 27 | + |
| 28 | +## Tutorial |
| 29 | + |
| 30 | +The following tutorial will walk you through the steps required when solving for the flow in presence of a propeller using SU2. The tutorial will also shows ho to generate the propeller input data file witht the help of the [OptimalPropeller.py](https://github.com/su2code/SU2/tree/master/SU2_PY/OptimalPropeller.py) script. To this end, it is assumed you have already obtained and compiled SU2_CFD. If you have yet to complete these requirements, please see the [Download](/docs_v7/Download/) and [Installation](/docs_v7/Installation/) pages. |
| 31 | + |
| 32 | +### Background |
| 33 | + |
| 34 | +This test case is for an actuator disk with a semi-infinite spinner. The actuator disk is a boundary condition used to simulate the effects of rotary wings in a simple way. |
| 35 | +In aeronautics it is a crucial topic for the airframe integration. Nowadays, with the research on the Distributed Electric Propulsion (DEP), a good actuator disk model is getting importance in order to simulate the effects of the propellers on the airframe by fast CFD analysis. |
| 36 | +However, the disadvantage of using an actuator disk model is that the unsteady effects are neglected. |
| 37 | + |
| 38 | +### Problem Setup |
| 39 | + |
| 40 | +This problem will solve the flow with these conditions: |
| 41 | +- Freestream Mach number = 0.55996 |
| 42 | +- Angle of attack (AOA) = 0.0 deg |
| 43 | +- Reynolds number = 3.65E7 |
| 44 | +- Reynolds length = 5.0292 m |
| 45 | + |
| 46 | +The global propeller data are: |
| 47 | +- Thrust coefficient = 0.15 |
| 48 | +- Advance Ratio = 2.81487 |
| 49 | +- Radius = 2.5146 m |
| 50 | + |
| 51 | +The thrust coefficient is defined using the "Renard" definition: the reference force is <img src="https://render.githubusercontent.com/render/math?math=\rho n^2D^4">, where *n* are the propeller rounds per second and *D* is the propeller diameter |
| 52 | +The advance ratio is defined as <img src="https://render.githubusercontent.com/render/math?math=J=\frac{V_\infty}{nD}">. |
| 53 | + |
| 54 | +### Mesh Description |
| 55 | + |
| 56 | +The computational domain contains the actuator disk mounted on a semi-infinite spinner. The mesh consists of 48,736 elements and 51,847 nodes. Again, we note that this is a very coarse mesh, and should one wish to obtain more accurate solutions for comparison with results in the literature, finer grids should be used. |
| 57 | + |
| 58 | +Three boundary conditions are employed: |
| 59 | +- Actuator Disk on the two surfaces (upstream and downstream) of the actuator disk. |
| 60 | +- Navier-Stokes adiabatic wall on the spinner. |
| 61 | +- Far-field condition on the outer domain surface. |
| 62 | + |
| 63 | +**Insert Image - Domain and Mesh** |
| 64 | + |
| 65 | +### Configuration File Options |
| 66 | + |
| 67 | +Only the actuator disk boundary condition options are highlighted here: |
| 68 | + |
| 69 | +``` |
| 70 | +% -------------------- BOUNDARY CONDITION DEFINITION --------------------------% |
| 71 | +% |
| 72 | +ACTDISK_DOUBLE_SURFACE = YES |
| 73 | +% |
| 74 | +% Actuator disk boundary type (VARIABLE_LOAD, VARIABLES_JUMP, BC_THRUST, |
| 75 | +% DRAG_MINUS_THRUST) |
| 76 | +ACTDISK_TYPE= VARIABLE_LOAD |
| 77 | +% |
| 78 | +% Actuator disk data input file name |
| 79 | +ACTDISK_FILENAME= ActuatorDisk.dat |
| 80 | +% |
| 81 | +% Actuator disk boundary marker(s) with the following formats (NONE = no marker) |
| 82 | +% Variable Load: (inlet face marker, outlet face marker, |
| 83 | +% 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) Markers only effectively used. |
| 84 | +MARKER_ACTDISK = ( DISK, DISK_BACK, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ) |
| 85 | +``` |
| 86 | + |
| 87 | +The `ACTDISK_DOUBLE_SURFACE` option, in this case, is setted to `true` because the actuator disk surface has been splitted in two parts: upstream and sownstream surfaces. |
| 88 | +The `ACTDISK_TYPE` option, is used to chose the actuator disk boundary type. In this tutorial, we want to use a model that allows to consider a variable load distribution along the disk, and that also take the *swirl* term into consideration. The actuator disk type that meets these conditions is the `VARIABLE_LOAD`. |
| 89 | +The `ACTDISK_FILENAME` option is used to specify the name of the actuator disk data input file. Further we will see how to generate this file. |
| 90 | +The `MARKER_ACTDISK` option, requires the following arguments: |
| 91 | +- Marker of the upstream surface of the actuator disk. |
| 92 | +- Marker of the downstream surface of the actuator disk. |
| 93 | +- 6 zero arguments. These arguments have a different meaning using different `ACTDISK_TYPE`. In this case, they are all setted to `0.0` because they are not needed. |
| 94 | + |
| 95 | +*If there are more actuator disks, it is possible to append them in the `MARKER_ACTDISK` option.* |
| 96 | + |
| 97 | +### Input Data File |
| 98 | + |
| 99 | +The input data file is needed for the `VARIABLE_LOAD` actuator disk type. |
| 100 | +An example of this file (used in this tutoral) is here reported: |
| 101 | + |
| 102 | +``` |
| 103 | +MARKER_ACTDISK= DISK DISK_BACK |
| 104 | +CENTER= 0.0 0.0 0.0 |
| 105 | +AXIS= 1.0 0.0 0.0 |
| 106 | +RADIUS= 2.5146 |
| 107 | +ADV_RATIO= 2.81487 |
| 108 | +NROW= 37 |
| 109 | +# rs=r/R dCT/drs dCP/drs dCR/drs |
| 110 | + 0.2031 0.020066 0.0890674 0.0 |
| 111 | + 0.2235 0.019963 0.0932674 0.0 |
| 112 | + 0.2439 0.021707 0.0982980 0.0 |
| 113 | + 0.2644 0.024667 0.1064153 0.0 |
| 114 | + 0.2848 0.029147 0.1189045 0.0 |
| 115 | + 0.3257 0.043674 0.1588513 0.0 |
| 116 | + 0.3461 0.053380 0.1849900 0.0 |
| 117 | + 0.3665 0.064327 0.2145367 0.0 |
| 118 | + 0.3870 0.076521 0.2471873 0.0 |
| 119 | + 0.4278 0.103679 0.3203392 0.0 |
| 120 | + 0.4483 0.118918 0.3609085 0.0 |
| 121 | + 0.4687 0.135619 0.4051864 0.0 |
| 122 | + 0.4891 0.152986 0.4518863 0.0 |
| 123 | + 0.5096 0.171453 0.5011266 0.0 |
| 124 | + 0.5300 0.190755 0.5528521 0.0 |
| 125 | + 0.5504 0.211062 0.6072281 0.0 |
| 126 | + 0.5709 0.231313 0.6620508 0.0 |
| 127 | + 0.5913 0.251252 0.7161404 0.0 |
| 128 | + 0.6117 0.271376 0.7700722 0.0 |
| 129 | + 0.6322 0.290980 0.8219708 0.0 |
| 130 | + 0.6526 0.309848 0.8715231 0.0 |
| 131 | + 0.6730 0.328502 0.9202496 0.0 |
| 132 | + 0.6935 0.346774 0.9681596 0.0 |
| 133 | + 0.7139 0.364895 1.0156277 0.0 |
| 134 | + 0.7343 0.381991 1.0603740 0.0 |
| 135 | + 0.7548 0.398417 1.1036331 0.0 |
| 136 | + 0.7752 0.413550 1.1442054 0.0 |
| 137 | + 0.7956 0.427447 1.1820164 0.0 |
| 138 | + 0.8161 0.440093 1.2163819 0.0 |
| 139 | + 0.8365 0.451007 1.2453084 0.0 |
| 140 | + 0.8569 0.460535 1.2682212 0.0 |
| 141 | + 0.8774 0.467765 1.2823500 0.0 |
| 142 | + 0.8978 0.471296 1.2839416 0.0 |
| 143 | + 0.9182 0.470303 1.2701343 0.0 |
| 144 | + 0.9387 0.460921 1.2317719 0.0 |
| 145 | + 0.9591 0.434937 1.1470356 0.0 |
| 146 | + 0.9795 0.377288 0.9746048 0.0 |
| 147 | +``` |
| 148 | + |
| 149 | +The `MARKER_ACTDISK` option, as the same for the configuration file, is used to specify the markers of the actuator disk surfaces. All the next propeller data will be referred to these surfaces. |
| 150 | +The `CENTER` option contains the coordinates of the actuator disk center, expressed in the grid reference system. |
| 151 | +The `AXIS` option contains the components of the unit vector normal to the actuator disk surface. |
| 152 | +The `RADIUS` option is used to specify the actuator disk radius. |
| 153 | +The `ADV_RATIO` option contains the advance ratio of the propeller defined as <img src="https://render.githubusercontent.com/render/math?math=J=\frac{V_\infty}{nD}">, where *n* are the propeller rounds per second and *D* is the propeller diameter. |
| 154 | +The `NROW` option isused to indicate the number of radial stations of the actuator disk in which we assign the load distribution. |
| 155 | +The next row is a dummy row, so it is skipped. |
| 156 | +Then there are 4 columns containing respectively: |
| 157 | +- The non dimensional radial station <img src="https://render.githubusercontent.com/render/math?math=J=\overline{r}=\frac{r}{R}"> |
| 158 | +- The thrust coefficient distribution <img src="https://render.githubusercontent.com/render/math?math=J=\frac{\mathrm{d}C_T}{\mathrm{d}\overline{r}}"> |
| 159 | +- The power coefficient distribution <img src="https://render.githubusercontent.com/render/math?math=J=\frac{\mathrm{d}C_P}{\mathrm{d}\overline{r}}"> |
| 160 | +- The radial force coefficient distribution <img src="https://render.githubusercontent.com/render/math?math=J=\frac{\mathrm{d}C_R}{\mathrm{d}\overline{r}}"> |
| 161 | + |
| 162 | +These coefficients are defined using the "Renard" definition: the reference force is <img src="https://render.githubusercontent.com/render/math?math=\rho n^2D^4">, while the reference power is reference force is <img src="https://render.githubusercontent.com/render/math?math=\rho n^3D^5"> |
| 163 | +*It is possible to append other propellers data at the end of the input file. Note that the order and the format of the options should not be changed.* |
| 164 | + |
| 165 | +### Optimal Propeller Script |
| 166 | + |
| 167 | +As already anticipated, the [OptimalPropeller.py](https://github.com/su2code/SU2/tree/master/SU2_PY/OptimalPropeller.py) script can be used to automatically generate the propeller input data file. |
| 168 | +This script allows the user to use the `VARIABLE_LOAD` actuator disk type also in case the propeller details are not available (in particular when the overall parameters ar known, but not the exact load distribution). |
| 169 | +The input is interactive, and requires the following data: |
| 170 | +1. Number of radial stations. |
| 171 | +2. CT: the total thrust coefficient defined using the "Renard" definition. |
| 172 | +3. R: The propeller radius expressed in meters. |
| 173 | +4. r_hub: the hub radius expressed in meters. |
| 174 | +5. J: the advance ratio. |
| 175 | +6. Vinf: the free-stream velocity expressed in m/s. |
| 176 | +7. Here, the script asks if you want to use the tip loss Prandtl correction (yes is the default chose). |
| 177 | +8. N: if you chose yes in the previous stage, it requires also the number of propeller blades. |
| 178 | + |
| 179 | +Once the input is given, the script provides 3 plots showing the tip loss Prandtl correction function, the axial and rotational interference factors and the thrust and power coefficients distributions along the non dimentional radius. |
| 180 | +The script also provides 2 files: |
| 181 | +- ActuatorDisk.cfg: containing the actuator disk boundary condition options needed in the configuration file. |
| 182 | +- ActuatorDisk.dat: containing the propeller input data file. |
| 183 | + |
| 184 | +*Note that the two generated files have some empty spaces that need to be filled.* |
| 185 | + |
| 186 | +The load distribution obtined using the [OptimalPropeller.py](https://github.com/su2code/SU2/tree/master/SU2_PY/OptimalPropeller.py) script is the optimal load distribution using the inviscid theory of the optimal propeller. |
| 187 | + |
| 188 | +*For reference: Glauert H., Airplane Propellers, in Aerodynamic Theory, Ed. Durand W. F., Vol. IV, pp. 169 - 360, Springer, 1935.* |
| 189 | + |
| 190 | +### Results |
| 191 | + |
| 192 | +Results of this simulation are here roprted... |
| 193 | + |
| 194 | +**Insert Image - Results** |
0 commit comments