This test case was part of the Workshop for Integrated Propeller Prediction (WIPP) and results are documented in the paper entitled: "Comparison of Propeller-Wing Interaction Simulation using Dierent Levels of Fidelity", Z. Yang, A. Kirby and D. Mavriplis, AIAA paper 2022-1678, DOI: 10.2514/6.2022-1678, available at: https://scientific-sims.com/cfdlab/Dimitri_Mavriplis/HOME/assets/papers/6.2022-1678.pdf
The test case is described in detail in the paper. The figure below illustrates the general configuration. This figure was constructed using the NSU3D post_proc facility to generate the surface geometry of the wing/nacelle, and the actuator disk actdisk_loads.ncycles.dat file to render the actuator disk location and momentum source grid. The last figure illustrates the fact that the actuator disk momentum sources are overset in the CFD mesh and do not align with any specific mesh surfaces.
The flow conditions are Mach=0.08, Re=567,801/ft. Here we focus on the Incidence = 0 deg case, although a full range of flow incidences was run in the paper to generate a drag polar.
Three test cases are shown to illustrate the application of the different actuator disk loading types. * Assumed load distribution (loadtype=1,2): For a given thrust coefficient C_T and power coefficient C_Q, the loading can be obtained by assuming a prescribed disk load distribution, such as a linear distribution in the radial direction.
This case uses a linear loading profile by specifying the parameter loadtype=2 in the actdisk_system namelist of the input.actdisk file. Listing the relevant parameters in the input file under each namelist we have:
actdisk_info :
For this case, with a single rotor, there is one system (nsystem=1) and a total of one rotor (nrotor=1).
actdisk_system :
For this case, since there is only one system and one rotor, the list of rotors in the system (rotor_list) does not need to be specified.
actdisk_rotor :
This namelist only appears once in this input file, since there is a single rotor for this case, as sepcified by nrotor=1 in actdisk_info
actdisk_blade :
This namelist only appears once in this input file, since there is a single blade type for this case, as sepcified by nblade=1 in actdisk_info
actdisk_blade :
Since nairfoil=0 in actdisk_info, no parameters under this namelist need to be specified and this section can be omitted.
1 ! WIPP Prescribed Linear Loading Test Case 2 3 ! Initialization namelist for sea level standard atmosphere 4 &actdisk_info 5 nsystem = 1, 6 nrotor = 1, 7 nblade = 1, 8 nairfoil = 0, 9 ref_length = 1.0, !L_physical / L_grid 10 ref_length_unit = "in" !Default is in. ft or in triggers lb below. Otherwise is SI. 11 show_system = .false., 12 show_rotor = .true., 13 force_output_unit = "lb", !These should be the defaults because ref_length_unit is inches 14 moment_output_unit = "lb*ft" !But specify for completeness 15 / 16 17 &actdisk_system 18 system_name = "WIPP System" 19 center_of_gravity(1:3) = -1.14663, 67.45, 0.0, 20 cg_unit = "in", 21 init_collective = 0., !Can modify to match Cq (default=0) 22 target_value(1) = 40, 23 target_unit(1) = "lb", 24 loadtype = 2 !Loadtype for linear load profile (set=1 for constant profile) 25 / 26 27 &actdisk_rotor 28 rotor_name = "WIPP Rotor" 29 rotation_rate = 5905.0, ! Counter-clockwise (Only used for thrust/mom coefficients) 30 rotation_unit = "rpm", 31 hub_coord(1:3) =-1.14663, 67.45, 0.0, 32 hub_unit = "in", 33 shaft_axis(1:3) =-1.0, 0.0, 0.0, 34 zero_azimuth_axis(1:3) = 0.0, 1.0, 0.0, 35 blade_count = 1, ! Set= 1 for prescribed loading 36 nradial = 400, 37 nnormal = 720, 38 / 39 40 &actdisk_blade 41 station_unit = "in", !NOTE: Force is perpendicular to blade orientation (including collective) 42 chord_sta(1:2) = 3.24, 8.1, 43 twist_sta(1:9) = 3.0780, 3.9998, 4.6000, 5.2002, 5.7996, 6.3998, 7.0000, 7.4002, 8.0004, !Optional: Defaults are = 0.0 producing Cq=0 44 twist(1:9) = 33.298, 30.420, 29.481, 29.710, 28.087, 26.637, 21.219, 18.688, 17.499, !Optional: Defaults are = 0.0 producing Cq=0 45 twist_unit = "deg", 46 /
This case uses a prescribed load profile by specifying the parameter loadtype=4 in the actdisk_system namelist of the input.actdisk file. The load profile was obtained experimentally in the WIPP workshop and is reproduced in Figure 3 of the AIAA paper cited above. These loads were supplied as normal and tangential load values with respect to the actuator disk plane along the radial direction. These values were used to construct a load vector distribution along the radial direction. A blade twist was then constructed in order to match the load vector direction at each radial station with the blade chord normal direction, and the total loads were applied at each station in the direction normal to the blade chord. Many of the input parameters are similar between this case and the previous case and thus only the main differences are highlighted here.
actdisk_info:
These parameters are identical to those in the previous case.
actdisk_system:
Other parameters, such as target_value should not be used, since the resulting thrust level is a byproduct of the specified loads. Also, init_collective=0.0 is the default and should be assumed. If the collective is changed, the load vector will rotate with the blade pitch and no longer correspond to the original prescribed values.
actdisk_rotor:
All the parameters in the previous case have the same values in this case. In addition, the rotor loading must be specified here. This is done using the following parameters:
actdisk_blade:
A single blade type is used and all parameters are identical to those used in the previous case.
actdisk_airfoil:
Since nairfoil=0 in actdisk_info, no parameters under this namelist need to be specified and this section can be omitted.
1 ! WIPP Prescribed Loading Test Case 2 3 ! Initialization namelist for sea level standard atmosphere 4 &actdisk_info 5 nsystem = 1, 6 nrotor = 1, 7 nblade = 1, 8 nairfoil = 0, 9 ref_length = 1.0, ! L_physical / L_grid 10 ref_length_unit = "in" 11 show_system = .false. 12 show_rotor = .true., 13 force_output_unit = "lb", !These should be the defaults because ref_length_unit is inches 14 moment_output_unit = "lb*ft" !But specify for completeness 15 / 16 17 &actdisk_system 18 system_name = "WIPP SYSTEM", 19 center_of_gravity(1:3) = -1.14663, 67.45, 0.0, 20 cg_unit = "in", 21 loadtype = 4 ! loading type for Prescribed Loads 22 / 23 24 &actdisk_rotor 25 rotor_name = "WIPP ROTOR", 26 rotation_rate = 5905.0, ! Counter-clockwise (Only used for thrust/mom coefficients) 27 rotation_unit = "rpm", 28 hub_coord(1:3) = -1.14663, 67.45, 0.0, 29 hub_unit = "in", 30 shaft_axis(1:3) = -1.0, 0.0, 0.0, 31 zero_azimuth_axis(1:3) = 0.0, 1.0, 0.0, 32 blade_count = 1, !Set=1 for prescribed load 33 nradial = 400, 34 nnormal = 720, 35 station_unit = "in" 36 loading_unit = "psf" 37 loading_sta = 3.0780, 3.9998, 4.6000, 5.2002, 5.7996, 6.3998, 7.0000, 7.4002, 8.0004, 38 loading = 9.408, 15.085, 18.791, 20.289, 20.427, 20.486, 19.634, 19.058, 19.066, 39 / 40 41 &actdisk_blade 42 station_unit = "in", !NOTE: Force is perpendicular to blade orientation (including collective) 43 chord_sta(1:2) = 3.24, 8.1, 44 twist_sta(1:9) = 3.0780, 3.9998, 4.6000, 5.2002, 5.7996, 6.3998, 7.0000, 7.4002, 8.0004, 45 twist(1:9) = 33.298, 30.420, 29.481, 29.710, 28.087, 26.637, 21.219, 18.688, 17.499, 46 twist_unit = "deg", 47 /
Setting loadtype=3 in the actdisk_system namelist specifies the blade element method, where the local loading is deterimed from the local flow conditions and a set of airfoil lookup tables. Note that this method produces actuator disk loading that is dependent on the local flow conditions, whereas the other methods produce constant loading distributions that are independent of changes in the flow field. This setting requires prescribing the blade properties under the actdisk_blade namelist, along with specifying the airfoil table files under the actdisk_airfoil namelist.
For this case, with a single rotor, there is one system (nsystem=1) and a total of one rotor (nrotor=1).
actdisk_system:
For this case, since there is only one system and one rotor, the list of rotors in the system (rotor_list) does not need to be specified.
actdisk_rotor:
actdisk_blade:
Here, a full definition of the blade geometry is required for the blade-element method.
Note the blade definition can include other geometry effects such as offsett* and **sweep, although these are not used in this test case.
actdisk_airfoil:
1 !WIPP BLADE-ELEMENT CASE 2 ! Initialization namelist for sea level standard atmosphere 3 &actdisk_info 4 nsystem = 1, 5 nrotor = 1, 6 nblade = 1, 7 nairfoil = 7, 8 ref_length = 1.0, ! L_physical / L_grid 9 ref_length_unit = "in" 10 show_rotor = .true., 11 force_output_unit = "lb", 12 moment_output_unit = "lb*ft" 13 / 14 15 &actdisk_system 16 system_name = "WIPP SYSTEM", 17 center_of_gravity(1:3) =-1.14663, 67.45, 0.0, 18 cg_unit = "in", 19 init_collective = 28.432, 20 loadtype = 3 ! loading type for blade-element 21 / 22 23 &actdisk_rotor 24 rotor_name = "WIPP ROTOR", 25 rotation_rate = 5905.0, ! Counter-clockwise 26 rotation_unit = "rpm", 27 hub_coord(1:3) =-1.14663, 67.45, 0.0, 28 hub_unit = "in", 29 shaft_axis(1:3) =-1.0, 0.0, 0.0, 30 zero_azimuth_axis(1:3)= 0.0, 1.0, 0.0, 31 blade_count(1) = 4, ! Four blade rotor 32 nradial = 400, 33 nnormal = 720, 35 / 36 37 &actdisk_blade 38 station_unit = "in", 39 chord_sta(1:8) = 2.550, 3.000, 4.000, 5.000, 6.000, 7.000, 8.000, 8.1, 40 chord(1:8) = 1.340, 1.495, 1.683, 1.809, 1.890, 1.859, 1.665, 1.665, 41 chord_unit = "in", 42 twist_sta(1:8) = 2.550, 3.000, 4.000, 5.000, 6.000, 7.000, 8.000, 8.1, 43 twist(1:8) = 21.144, 18.142, 11.557, 5.354, 0.436, -3.553, -7.306,-7.306, 44 twist_unit = "deg", 45 airfoil_sta(1:7) = 2.550, 3.000, 4.000, 5.000, 6.000, 7.000, 8.000, 46 airfoil(1:7) = 1, 2, 3, 4, 5, 6, 7, 47 / 48 49 &actdisk_airfoil 50 airfoil_file(1) = "../airfoil_tables/s1/s1.c81" 51 airfoil_file(2) = "../airfoil_tables/s2/s2.c81" 52 airfoil_file(3) = "../airfoil_tables/s3/s3.c81" 53 airfoil_file(4) = "../airfoil_tables/s4/s4.c81" 54 airfoil_file(5) = "../airfoil_tables/s5/s5.c81" 55 airfoil_file(6) = "../airfoil_tables/s6/s6.c81" 56 airfoil_file(7) = "../airfoil_tables/s7/s7.c81" 57 /
The example below illustrates a dual rotor test case. In this case, a second counter-rotating rotor is added behind the original rotor.
In the actdisk_info namelist, nrotor=2. Both rotors belong to the single actdisk_system as evidenced by the rotor_list parameter under the actdisk_system namelist. Under the actdisk_info namelist, the show_system keyword is set to .true. in order to produce output for the combined counter-rotating rotors.
There are now two actdisk_rotor namelists, with different hub coordinates and rotation directions. Furthermore, since the aft rotor is smaller than for foreward rotor, a different blade type is used for each rotor. Thus there are 2 blade types that are defined under the actdisk_blade namelist. Both rotors have blade_count(1) = 4, which means they both consist of a 4-bladed rotor with only one blade type used for all four blades. For the forward rotor, the parameter blade_list(1) = 1 assigns the first blade to this rotor, while the aft rotor uses the second (shorter) blade type with the setting blade_list(1) = 2.
The figure below illustrates the resulting actuator disks from this dual rotor setup.
1 !WIPP COUNTER-ROTATING ROTOR BLADE-ELEMENT CASE 2 ! Initialization namelist for sea level standard atmosphere 3 &actdisk_info 4 nsystem = 1, 5 nrotor = 2, 6 nblade = 2, 7 nairfoil = 7, 8 ref_length = 1.0, ! L_physical / L_grid 9 ref_length_unit = "in" 10 show_system = .true., 11 show_rotor = .true., 12 force_output_unit = "lb", 13 moment_output_unit = "lb*ft" 14 / 15 16 &actdisk_system 17 system_name = "WIPP SYSTEM", 18 center_of_gravity(1:3) =-1.14663, 67.45, 0.0, 19 cg_unit = "in", 20 init_collective = 28.432, 21 ! rotor_list(1:2) = 1,2, 22 loadtype = 3 ! loading type for blade-element 23 / 24 25 &actdisk_rotor 26 rotor_name = "FRONT_ROTOR", 27 rotation_rate = 5905.0, ! Counter-clockwise 28 rotation_unit = "rpm", 29 hub_coord(1:3) =-1.14663, 67.45, 0.0, 30 hub_unit = "in", 31 shaft_axis(1:3) =-1.0, 0.0, 0.0, 32 zero_azimuth_axis(1:3)= 0.0, 1.0, 0.0, 33 blade_count(1) = 4, ! Four blade rotor 34 blade_list(1) = 1, ! Use first blade type 35 nradial = 40, 36 nnormal = 72, 37 / 38 39 &actdisk_rotor 40 rotor_name = "REAR_ROTOR", 41 rotation_rate = -5905.0, !clockwise 42 rotation_unit = "rpm", 43 hub_coord(1:3) = 0.0, 67.45, 0.0, 44 hub_unit = "in", 45 shaft_axis(1:3) =-1.0, 0.0, 0.0, 46 zero_azimuth_axis(1:3) = 0.0, 1.0, 0.0, 47 blade_count(1) = 4, ! Four blade rotor 48 blade_list(1) = 2, ! Use second (smaller) blade type 49 nradial = 40, 50 nnormal = 72, 51 / 52 53 &actdisk_blade 54 station_unit = "in", 55 chord_sta(1:8) = 2.550, 3.000, 4.000, 5.000, 6.000, 7.000, 8.000, 8.1, 56 chord(1:8) = 1.340, 1.495, 1.683, 1.809, 1.890, 1.859, 1.665, 1.665, 57 chord_unit = "in", 58 twist_sta(1:8) = 2.550, 3.000, 4.000, 5.000, 6.000, 7.000, 8.000, 8.1, 59 twist(1:8) = 21.144, 18.142, 11.557, 5.354, 0.436, -3.553, -7.306,-7.306, 60 twist_unit = "deg", 61 airfoil_sta(1:7) = 2.550, 3.000, 4.000, 5.000, 6.000, 7.000, 8.000, 62 airfoil(1:7) = 1, 2, 3, 4, 5, 6, 7, 63 / 64 65 &actdisk_blade 66 station_unit = "in", 67 chord_sta(1:5) = 2.550, 3.000, 4.000, 5.000, 6.000, 68 chord(1:5) = 1.340, 1.495, 1.683, 1.809, 1.890, 69 chord_unit = "in", 70 twist_sta(1:5) = 2.550, 3.000, 4.000, 5.000, 6.000, 71 twist(1:5) = 21.144, 18.142, 11.557, 5.354, 0.436, 72 twist_unit = "deg", 73 airfoil_sta(1:5) = 2.550, 3.000, 4.000, 5.000, 6.000, 74 airfoil(1:5) = 1, 2, 3, 4, 5, 75 / 76 77 &actdisk_airfoil 78 airfoil_file(1) = "../airfoil_tables/s1/s1.c81" 79 airfoil_file(2) = "../airfoil_tables/s2/s2.c81" 80 airfoil_file(3) = "../airfoil_tables/s3/s3.c81" 81 airfoil_file(4) = "../airfoil_tables/s4/s4.c81" 82 airfoil_file(5) = "../airfoil_tables/s5/s5.c81" 83 airfoil_file(6) = "../airfoil_tables/s6/s6.c81" 84 airfoil_file(7) = "../airfoil_tables/s7/s7.c81" 85 / 86